├── examples ├── 2048 │ ├── styles │ │ └── game │ │ │ ├── fonts │ │ │ ├── ClearSans-Bold-webfont.eot │ │ │ ├── ClearSans-Bold-webfont.woff │ │ │ ├── ClearSans-Light-webfont.eot │ │ │ ├── ClearSans-Light-webfont.woff │ │ │ ├── ClearSans-Regular-webfont.eot │ │ │ ├── ClearSans-Regular-webfont.woff │ │ │ └── clear-sans.css │ │ │ └── helpers.scss │ └── js │ │ └── game │ │ ├── bind_polyfill.js │ │ ├── tile.js │ │ ├── animframe_polyfill.js │ │ ├── local_storage_manager.js │ │ ├── classlist_polyfill.js │ │ ├── application.js │ │ └── grid.js ├── connected-devices │ ├── README.md │ ├── preview.png │ └── connected-devices.css ├── customer-facing │ ├── README.md │ ├── demo-user.jpg │ ├── preview.png │ └── customer-facing.css ├── sfmta-parking │ ├── README.md │ ├── preview.png │ └── keen.mapbox.css ├── README.md ├── starter-kit │ ├── README.md │ ├── preview.png │ └── LICENSE ├── service-monitoring │ ├── README.md │ ├── main.css │ ├── preview.png │ ├── LICENSE │ └── keen.dashboard.js ├── geo-explorer │ ├── preview.png │ └── geo-explorer.css ├── military-surplus-flow │ ├── preview.png │ └── military-surplus-flow.js └── index.html ├── .gitignore ├── assets ├── lib │ ├── jquery-knob │ │ ├── .gitignore │ │ ├── secretplan.jpg │ │ ├── bower.json │ │ ├── .bower.json │ │ ├── LICENSE │ │ └── knob.jquery.json │ ├── jquery │ │ ├── src │ │ │ ├── outro.js │ │ │ ├── selector.js │ │ │ ├── var │ │ │ │ ├── arr.js │ │ │ │ ├── rnotwhite.js │ │ │ │ ├── strundefined.js │ │ │ │ ├── concat.js │ │ │ │ ├── push.js │ │ │ │ ├── slice.js │ │ │ │ ├── class2type.js │ │ │ │ ├── indexOf.js │ │ │ │ ├── pnum.js │ │ │ │ ├── toString.js │ │ │ │ ├── hasOwn.js │ │ │ │ └── support.js │ │ │ ├── ajax │ │ │ │ ├── var │ │ │ │ │ ├── rquery.js │ │ │ │ │ └── nonce.js │ │ │ │ ├── parseJSON.js │ │ │ │ ├── parseXML.js │ │ │ │ ├── script.js │ │ │ │ ├── load.js │ │ │ │ └── jsonp.js │ │ │ ├── css │ │ │ │ ├── var │ │ │ │ │ ├── rmargin.js │ │ │ │ │ ├── cssExpand.js │ │ │ │ │ ├── rnumnonpx.js │ │ │ │ │ ├── isHidden.js │ │ │ │ │ └── getStyles.js │ │ │ │ ├── hiddenVisibleSelectors.js │ │ │ │ ├── addGetHookIf.js │ │ │ │ ├── swap.js │ │ │ │ ├── curCSS.js │ │ │ │ ├── defaultDisplay.js │ │ │ │ └── support.js │ │ │ ├── manipulation │ │ │ │ ├── var │ │ │ │ │ └── rcheckableType.js │ │ │ │ ├── _evalUrl.js │ │ │ │ └── support.js │ │ │ ├── data │ │ │ │ ├── var │ │ │ │ │ ├── data_priv.js │ │ │ │ │ └── data_user.js │ │ │ │ └── accepts.js │ │ │ ├── core │ │ │ │ ├── var │ │ │ │ │ └── rsingleTag.js │ │ │ │ ├── parseHTML.js │ │ │ │ ├── access.js │ │ │ │ └── ready.js │ │ │ ├── traversing │ │ │ │ ├── var │ │ │ │ │ └── rneedsContext.js │ │ │ │ └── findFilter.js │ │ │ ├── event │ │ │ │ ├── support.js │ │ │ │ ├── ajax.js │ │ │ │ └── alias.js │ │ │ ├── attributes.js │ │ │ ├── deprecated.js │ │ │ ├── effects │ │ │ │ ├── animatedSelector.js │ │ │ │ └── Tween.js │ │ │ ├── selector-sizzle.js │ │ │ ├── queue │ │ │ │ └── delay.js │ │ │ ├── jquery.js │ │ │ ├── exports │ │ │ │ ├── global.js │ │ │ │ └── amd.js │ │ │ ├── attributes │ │ │ │ ├── support.js │ │ │ │ └── prop.js │ │ │ ├── intro.js │ │ │ ├── wrap.js │ │ │ ├── dimensions.js │ │ │ ├── serialize.js │ │ │ └── queue.js │ │ ├── bower.json │ │ ├── .bower.json │ │ └── MIT-LICENSE.txt │ ├── holderjs │ │ ├── .gitignore │ │ ├── .gitattributes │ │ ├── bower.json │ │ ├── .jshintrc │ │ ├── .bower.json │ │ ├── composer.json │ │ ├── package.json │ │ └── Gruntfile.js │ ├── bootstrap │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ └── glyphicons-halflings-regular.woff │ │ ├── dist │ │ │ └── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ └── glyphicons-halflings-regular.woff │ │ ├── less │ │ │ ├── mixins │ │ │ │ ├── center-block.less │ │ │ │ ├── text-emphasis.less │ │ │ │ ├── size.less │ │ │ │ ├── background-variant.less │ │ │ │ ├── opacity.less │ │ │ │ ├── text-overflow.less │ │ │ │ ├── tab-focus.less │ │ │ │ ├── labels.less │ │ │ │ ├── resize.less │ │ │ │ ├── progress-bar.less │ │ │ │ ├── nav-divider.less │ │ │ │ ├── reset-filter.less │ │ │ │ ├── alerts.less │ │ │ │ ├── nav-vertical-align.less │ │ │ │ ├── responsive-visibility.less │ │ │ │ ├── pagination.less │ │ │ │ ├── border-radius.less │ │ │ │ ├── panels.less │ │ │ │ ├── list-group.less │ │ │ │ ├── hide-text.less │ │ │ │ ├── clearfix.less │ │ │ │ ├── table-row.less │ │ │ │ ├── image.less │ │ │ │ ├── buttons.less │ │ │ │ ├── forms.less │ │ │ │ ├── grid-framework.less │ │ │ │ └── grid.less │ │ │ ├── wells.less │ │ │ ├── breadcrumbs.less │ │ │ ├── responsive-embed.less │ │ │ ├── component-animations.less │ │ │ ├── close.less │ │ │ ├── thumbnails.less │ │ │ ├── utilities.less │ │ │ ├── media.less │ │ │ ├── pager.less │ │ │ ├── jumbotron.less │ │ │ ├── mixins.less │ │ │ ├── badges.less │ │ │ ├── bootstrap.less │ │ │ ├── labels.less │ │ │ ├── code.less │ │ │ ├── grid.less │ │ │ ├── alerts.less │ │ │ ├── print.less │ │ │ ├── pagination.less │ │ │ ├── progress-bars.less │ │ │ ├── tooltip.less │ │ │ ├── scaffolding.less │ │ │ └── list-group.less │ │ ├── bower.json │ │ ├── LICENSE │ │ ├── .bower.json │ │ ├── grunt │ │ │ ├── bs-glyphicons-data-generator.js │ │ │ ├── bs-raw-files-generator.js │ │ │ └── sauce_browsers.yml │ │ ├── js │ │ │ ├── transition.js │ │ │ ├── alert.js │ │ │ ├── button.js │ │ │ ├── tab.js │ │ │ └── popover.js │ │ └── package.json │ └── keen-js │ │ ├── LICENSE │ │ ├── bower.json │ │ └── .bower.json ├── img │ └── bg-bars.png ├── js │ └── meta.js └── css │ ├── keen-dashboards.css │ └── keen-static.css ├── .bowerrc ├── layouts ├── two-and-one │ ├── README.md │ ├── preview.png │ └── LICENSE ├── split-rows │ └── preview.png ├── hero-sidebar │ └── preview.png ├── hero-thirds │ └── preview.png ├── quarter-grid │ └── preview.png ├── split-columns │ └── preview.png ├── thirds-grid │ └── preview.png ├── split-centered │ └── preview.png └── README.md ├── bower.json └── LICENSE /examples/connected-devices/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/customer-facing/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | 3 | .sass-cache -------------------------------------------------------------------------------- /assets/lib/jquery-knob/.gitignore: -------------------------------------------------------------------------------- 1 | nbproject/ -------------------------------------------------------------------------------- /assets/lib/jquery/src/outro.js: -------------------------------------------------------------------------------- 1 | })); 2 | -------------------------------------------------------------------------------- /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "assets/lib" 3 | } 4 | -------------------------------------------------------------------------------- /examples/sfmta-parking/README.md: -------------------------------------------------------------------------------- 1 | Geo Mashup 2 | ========== 3 | -------------------------------------------------------------------------------- /examples/README.md: -------------------------------------------------------------------------------- 1 | Dashboard Examples 2 | ================== 3 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/selector.js: -------------------------------------------------------------------------------- 1 | define([ "./selector-sizzle" ]); 2 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/var/arr.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return []; 3 | }); 4 | -------------------------------------------------------------------------------- /examples/starter-kit/README.md: -------------------------------------------------------------------------------- 1 | Dashboard Starter Kit 2 | ===================== 3 | -------------------------------------------------------------------------------- /layouts/two-and-one/README.md: -------------------------------------------------------------------------------- 1 | Dashboard Starter Kit 2 | ===================== 3 | -------------------------------------------------------------------------------- /assets/lib/holderjs/.gitignore: -------------------------------------------------------------------------------- 1 | testing/ 2 | .idea/ 3 | node_modules/ 4 | holder.min.js 5 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/ajax/var/rquery.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/\?/); 3 | }); 4 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/var/rnotwhite.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/\S+/g); 3 | }); 4 | -------------------------------------------------------------------------------- /examples/service-monitoring/README.md: -------------------------------------------------------------------------------- 1 | Dashboard Starter Kit 2 | ===================== 3 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/css/var/rmargin.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/^margin/); 3 | }); 4 | -------------------------------------------------------------------------------- /examples/service-monitoring/main.css: -------------------------------------------------------------------------------- 1 | .chart-wrapper .chart-stage { 2 | min-height: 109px; 3 | } -------------------------------------------------------------------------------- /assets/img/bg-bars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/assets/img/bg-bars.png -------------------------------------------------------------------------------- /assets/lib/jquery/src/var/strundefined.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return typeof undefined; 3 | }); 4 | -------------------------------------------------------------------------------- /assets/lib/holderjs/.gitattributes: -------------------------------------------------------------------------------- 1 | # Automatically normalize line endings for all text-based files 2 | * text=auto 3 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/var/concat.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./arr" 3 | ], function( arr ) { 4 | return arr.concat; 5 | }); 6 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/var/push.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./arr" 3 | ], function( arr ) { 4 | return arr.push; 5 | }); 6 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/var/slice.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./arr" 3 | ], function( arr ) { 4 | return arr.slice; 5 | }); 6 | -------------------------------------------------------------------------------- /layouts/split-rows/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/layouts/split-rows/preview.png -------------------------------------------------------------------------------- /assets/lib/holderjs/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "holderjs", 3 | "version": "2.3.2", 4 | "main": "holder.js" 5 | } 6 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/var/class2type.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | // [[Class]] -> type pairs 3 | return {}; 4 | }); 5 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/var/indexOf.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./arr" 3 | ], function( arr ) { 4 | return arr.indexOf; 5 | }); 6 | -------------------------------------------------------------------------------- /examples/geo-explorer/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/examples/geo-explorer/preview.png -------------------------------------------------------------------------------- /examples/starter-kit/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/examples/starter-kit/preview.png -------------------------------------------------------------------------------- /layouts/hero-sidebar/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/layouts/hero-sidebar/preview.png -------------------------------------------------------------------------------- /layouts/hero-thirds/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/layouts/hero-thirds/preview.png -------------------------------------------------------------------------------- /layouts/quarter-grid/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/layouts/quarter-grid/preview.png -------------------------------------------------------------------------------- /layouts/split-columns/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/layouts/split-columns/preview.png -------------------------------------------------------------------------------- /layouts/thirds-grid/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/layouts/thirds-grid/preview.png -------------------------------------------------------------------------------- /layouts/two-and-one/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/layouts/two-and-one/preview.png -------------------------------------------------------------------------------- /assets/lib/jquery/src/css/var/cssExpand.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return [ "Top", "Right", "Bottom", "Left" ]; 3 | }); 4 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/manipulation/var/rcheckableType.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/^(?:checkbox|radio)$/i); 3 | }); 4 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/var/pnum.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; 3 | }); 4 | -------------------------------------------------------------------------------- /examples/sfmta-parking/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/examples/sfmta-parking/preview.png -------------------------------------------------------------------------------- /layouts/split-centered/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/layouts/split-centered/preview.png -------------------------------------------------------------------------------- /assets/lib/jquery-knob/secretplan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/assets/lib/jquery-knob/secretplan.jpg -------------------------------------------------------------------------------- /assets/lib/jquery/src/ajax/var/nonce.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../../core" 3 | ], function( jQuery ) { 4 | return jQuery.now(); 5 | }); 6 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/data/var/data_priv.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../Data" 3 | ], function( Data ) { 4 | return new Data(); 5 | }); 6 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/data/var/data_user.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../Data" 3 | ], function( Data ) { 4 | return new Data(); 5 | }); 6 | -------------------------------------------------------------------------------- /examples/connected-devices/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/examples/connected-devices/preview.png -------------------------------------------------------------------------------- /examples/customer-facing/demo-user.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/examples/customer-facing/demo-user.jpg -------------------------------------------------------------------------------- /examples/customer-facing/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/examples/customer-facing/preview.png -------------------------------------------------------------------------------- /examples/service-monitoring/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/examples/service-monitoring/preview.png -------------------------------------------------------------------------------- /assets/lib/jquery/src/var/toString.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./class2type" 3 | ], function( class2type ) { 4 | return class2type.toString; 5 | }); 6 | -------------------------------------------------------------------------------- /examples/military-surplus-flow/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/examples/military-surplus-flow/preview.png -------------------------------------------------------------------------------- /assets/lib/jquery/src/var/hasOwn.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./class2type" 3 | ], function( class2type ) { 4 | return class2type.hasOwnProperty; 5 | }); 6 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/core/var/rsingleTag.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | // Match a standalone tag 3 | return (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); 4 | }); 5 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/var/support.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | // All support tests are defined in their respective modules. 3 | return {}; 4 | }); 5 | -------------------------------------------------------------------------------- /examples/2048/styles/game/fonts/ClearSans-Bold-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/examples/2048/styles/game/fonts/ClearSans-Bold-webfont.eot -------------------------------------------------------------------------------- /assets/lib/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/assets/lib/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /assets/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/assets/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /assets/lib/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/assets/lib/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /assets/lib/jquery/src/css/var/rnumnonpx.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../../var/pnum" 3 | ], function( pnum ) { 4 | return new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); 5 | }); 6 | -------------------------------------------------------------------------------- /examples/2048/styles/game/fonts/ClearSans-Bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/examples/2048/styles/game/fonts/ClearSans-Bold-webfont.woff -------------------------------------------------------------------------------- /examples/2048/styles/game/fonts/ClearSans-Light-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/examples/2048/styles/game/fonts/ClearSans-Light-webfont.eot -------------------------------------------------------------------------------- /examples/2048/styles/game/fonts/ClearSans-Light-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/examples/2048/styles/game/fonts/ClearSans-Light-webfont.woff -------------------------------------------------------------------------------- /examples/2048/styles/game/fonts/ClearSans-Regular-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/examples/2048/styles/game/fonts/ClearSans-Regular-webfont.eot -------------------------------------------------------------------------------- /examples/2048/styles/game/fonts/ClearSans-Regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/examples/2048/styles/game/fonts/ClearSans-Regular-webfont.woff -------------------------------------------------------------------------------- /assets/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/assets/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /assets/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/assets/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /assets/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rg3915/dashboards/gh-pages/assets/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /assets/lib/jquery/src/traversing/var/rneedsContext.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../../core", 3 | "../../selector" 4 | ], function( jQuery ) { 5 | return jQuery.expr.match.needsContext; 6 | }); 7 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/center-block.less: -------------------------------------------------------------------------------- 1 | // Center-align a block level element 2 | 3 | .center-block() { 4 | display: block; 5 | margin-left: auto; 6 | margin-right: auto; 7 | } 8 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/text-emphasis.less: -------------------------------------------------------------------------------- 1 | // Typography 2 | 3 | .text-emphasis-variant(@color) { 4 | color: @color; 5 | a&:hover { 6 | color: darken(@color, 10%); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/event/support.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../var/support" 3 | ], function( support ) { 4 | 5 | support.focusinBubbles = "onfocusin" in window; 6 | 7 | return support; 8 | 9 | }); 10 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/size.less: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | .size(@width; @height) { 4 | width: @width; 5 | height: @height; 6 | } 7 | 8 | .square(@size) { 9 | .size(@size; @size); 10 | } 11 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/background-variant.less: -------------------------------------------------------------------------------- 1 | // Contextual backgrounds 2 | 3 | .bg-variant(@color) { 4 | background-color: @color; 5 | a&:hover { 6 | background-color: darken(@color, 10%); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/opacity.less: -------------------------------------------------------------------------------- 1 | // Opacity 2 | 3 | .opacity(@opacity) { 4 | opacity: @opacity; 5 | // IE8 filter 6 | @opacity-ie: (@opacity * 100); 7 | filter: ~"alpha(opacity=@{opacity-ie})"; 8 | } 9 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/text-overflow.less: -------------------------------------------------------------------------------- 1 | // Text overflow 2 | // Requires inline-block or block for proper styling 3 | 4 | .text-overflow() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/tab-focus.less: -------------------------------------------------------------------------------- 1 | // WebKit-style focus 2 | 3 | .tab-focus() { 4 | // Default 5 | outline: thin dotted; 6 | // WebKit 7 | outline: 5px auto -webkit-focus-ring-color; 8 | outline-offset: -2px; 9 | } 10 | -------------------------------------------------------------------------------- /assets/lib/holderjs/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "asi": true, 3 | "boss": true, 4 | "eqnull": true, 5 | "expr": true, 6 | "funcscope": true, 7 | "loopfunc": true, 8 | "shadow": true, 9 | "smarttabs": true, 10 | 11 | "node": true 12 | } 13 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/labels.less: -------------------------------------------------------------------------------- 1 | // Labels 2 | 3 | .label-variant(@color) { 4 | background-color: @color; 5 | 6 | &[href] { 7 | &:hover, 8 | &:focus { 9 | background-color: darken(@color, 10%); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/resize.less: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | .resizable(@direction) { 4 | resize: @direction; // Options: horizontal, vertical, both 5 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 6 | } 7 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/progress-bar.less: -------------------------------------------------------------------------------- 1 | // Progress bars 2 | 3 | .progress-bar-variant(@color) { 4 | background-color: @color; 5 | 6 | // Deprecated parent class requirement as of v3.2.0 7 | .progress-striped & { 8 | #gradient > .striped(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/attributes.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./core", 3 | "./attributes/attr", 4 | "./attributes/prop", 5 | "./attributes/classes", 6 | "./attributes/val" 7 | ], function( jQuery ) { 8 | 9 | // Return jQuery for attributes-only inclusion 10 | return jQuery; 11 | }); 12 | -------------------------------------------------------------------------------- /examples/2048/js/game/bind_polyfill.js: -------------------------------------------------------------------------------- 1 | Function.prototype.bind = Function.prototype.bind || function (target) { 2 | var self = this; 3 | return function (args) { 4 | if (!(args instanceof Array)) { 5 | args = [args]; 6 | } 7 | self.apply(target, args); 8 | }; 9 | }; 10 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/ajax/parseJSON.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // Support: Android 2.3 6 | // Workaround failure to string-cast null input 7 | jQuery.parseJSON = function( data ) { 8 | return JSON.parse( data + "" ); 9 | }; 10 | 11 | return jQuery.parseJSON; 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/deprecated.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./core", 3 | "./traversing" 4 | ], function( jQuery ) { 5 | 6 | // The number of elements contained in the matched element set 7 | jQuery.fn.size = function() { 8 | return this.length; 9 | }; 10 | 11 | jQuery.fn.andSelf = jQuery.fn.addBack; 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/nav-divider.less: -------------------------------------------------------------------------------- 1 | // Horizontal dividers 2 | // 3 | // Dividers (basically an hr) within dropdowns and nav lists 4 | 5 | .nav-divider(@color: #e5e5e5) { 6 | height: 1px; 7 | margin: ((@line-height-computed / 2) - 1) 0; 8 | overflow: hidden; 9 | background-color: @color; 10 | } 11 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/reset-filter.less: -------------------------------------------------------------------------------- 1 | // Reset filters for IE 2 | // 3 | // When you need to remove a gradient background, do not forget to use this to reset 4 | // the IE filter for IE9 and below. 5 | 6 | .reset-filter() { 7 | filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); 8 | } 9 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/effects/animatedSelector.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../selector", 4 | "../effects" 5 | ], function( jQuery ) { 6 | 7 | jQuery.expr.filters.animated = function( elem ) { 8 | return jQuery.grep(jQuery.timers, function( fn ) { 9 | return elem === fn.elem; 10 | }).length; 11 | }; 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /layouts/README.md: -------------------------------------------------------------------------------- 1 | Dashboard Layouts 2 | ================= 3 | 4 | Building something from scratch? These vanilla dashboard layouts will get you up and running in no time. 5 | 6 | **Note:** we've used [holder.js](https://github.com/imsky/holder) for labeled cell placeholders, which can be safely removed as you make these layouts your own. 7 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/alerts.less: -------------------------------------------------------------------------------- 1 | // Alerts 2 | 3 | .alert-variant(@background; @border; @text-color) { 4 | background-color: @background; 5 | border-color: @border; 6 | color: @text-color; 7 | 8 | hr { 9 | border-top-color: darken(@border, 5%); 10 | } 11 | .alert-link { 12 | color: darken(@text-color, 10%); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /assets/lib/jquery-knob/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "aterrien/jQuery-Knob", 3 | "version": "1.2.10", 4 | "main": "js/jquery.knob.js", 5 | "description": "Nice, downward compatible, touchable, jQuery dial.", 6 | "license": "MIT", 7 | "ignore": [], 8 | "dependencies": { 9 | "jquery": ">=1.7.0" 10 | }, 11 | "devDependencies": {} 12 | } 13 | 14 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/manipulation/_evalUrl.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../ajax" 3 | ], function( jQuery ) { 4 | 5 | jQuery._evalUrl = function( url ) { 6 | return jQuery.ajax({ 7 | url: url, 8 | type: "GET", 9 | dataType: "script", 10 | async: false, 11 | global: false, 12 | "throws": true 13 | }); 14 | }; 15 | 16 | return jQuery._evalUrl; 17 | 18 | }); 19 | -------------------------------------------------------------------------------- /examples/sfmta-parking/keen.mapbox.css: -------------------------------------------------------------------------------- 1 | #mapbox-panel { 2 | left: 50%; 3 | position: fixed; 4 | } 5 | #mapbox-panel .chart-title { 6 | border: medium none; 7 | } 8 | #mapbox-panel .chart-stage { 9 | height: 600px; 10 | } 11 | #map { 12 | bottom: 0; 13 | height: 100%; 14 | left: 0px; 15 | position: absolute; 16 | right: 0px; 17 | top: 0px; 18 | width: 100%; 19 | } 20 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/selector-sizzle.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./core", 3 | "sizzle" 4 | ], function( jQuery, Sizzle ) { 5 | 6 | jQuery.find = Sizzle; 7 | jQuery.expr = Sizzle.selectors; 8 | jQuery.expr[":"] = jQuery.expr.pseudos; 9 | jQuery.unique = Sizzle.uniqueSort; 10 | jQuery.text = Sizzle.getText; 11 | jQuery.isXMLDoc = Sizzle.isXML; 12 | jQuery.contains = Sizzle.contains; 13 | 14 | }); 15 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/event/ajax.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../event" 4 | ], function( jQuery ) { 5 | 6 | // Attach a bunch of functions for handling common AJAX events 7 | jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) { 8 | jQuery.fn[ type ] = function( fn ) { 9 | return this.on( type, fn ); 10 | }; 11 | }); 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/css/var/isHidden.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../../core", 3 | "../../selector" 4 | // css is assumed 5 | ], function( jQuery ) { 6 | 7 | return function( elem, el ) { 8 | // isHidden might be called from jQuery#filter function; 9 | // in that case, element will be second argument 10 | elem = el || elem; 11 | return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); 12 | }; 13 | }); 14 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/nav-vertical-align.less: -------------------------------------------------------------------------------- 1 | // Navbar vertical align 2 | // 3 | // Vertically center elements in the navbar. 4 | // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin. 5 | 6 | .navbar-vertical-align(@element-height) { 7 | margin-top: ((@navbar-height - @element-height) / 2); 8 | margin-bottom: ((@navbar-height - @element-height) / 2); 9 | } 10 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/responsive-visibility.less: -------------------------------------------------------------------------------- 1 | // Responsive utilities 2 | 3 | // 4 | // More easily include all the states for responsive-utilities.less. 5 | .responsive-visibility() { 6 | display: block !important; 7 | table& { display: table; } 8 | tr& { display: table-row !important; } 9 | th&, 10 | td& { display: table-cell !important; } 11 | } 12 | 13 | .responsive-invisibility() { 14 | display: none !important; 15 | } 16 | -------------------------------------------------------------------------------- /assets/lib/holderjs/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "holderjs", 3 | "version": "2.3.2", 4 | "main": "holder.js", 5 | "homepage": "https://github.com/imsky/holder", 6 | "_release": "2.3.2", 7 | "_resolution": { 8 | "type": "version", 9 | "tag": "v2.3.2", 10 | "commit": "f4fc0b4ac80f3bbb7502474ec1ea3f837b8b922d" 11 | }, 12 | "_source": "git://github.com/imsky/holder.git", 13 | "_target": "~2.3.2", 14 | "_originalSource": "holderjs", 15 | "_direct": true 16 | } -------------------------------------------------------------------------------- /assets/lib/jquery/src/css/hiddenVisibleSelectors.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../selector" 4 | ], function( jQuery ) { 5 | 6 | jQuery.expr.filters.hidden = function( elem ) { 7 | // Support: Opera <= 12.12 8 | // Opera reports offsetWidths and offsetHeights less than zero on some elements 9 | return elem.offsetWidth <= 0 && elem.offsetHeight <= 0; 10 | }; 11 | jQuery.expr.filters.visible = function( elem ) { 12 | return !jQuery.expr.filters.hidden( elem ); 13 | }; 14 | 15 | }); 16 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/css/var/getStyles.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return function( elem ) { 3 | // Support: IE<=11+, Firefox<=30+ (#15098, #14150) 4 | // IE throws on elements created in popups 5 | // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" 6 | if ( elem.ownerDocument.defaultView.opener ) { 7 | return elem.ownerDocument.defaultView.getComputedStyle( elem, null ); 8 | } 9 | 10 | return window.getComputedStyle( elem, null ); 11 | }; 12 | }); 13 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/data/accepts.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | /** 6 | * Determines whether an object can have data 7 | */ 8 | jQuery.acceptData = function( owner ) { 9 | // Accepts only: 10 | // - Node 11 | // - Node.ELEMENT_NODE 12 | // - Node.DOCUMENT_NODE 13 | // - Object 14 | // - Any 15 | /* jshint -W018 */ 16 | return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); 17 | }; 18 | 19 | return jQuery.acceptData; 20 | }); 21 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/pagination.less: -------------------------------------------------------------------------------- 1 | // Pagination 2 | 3 | .pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) { 4 | > li { 5 | > a, 6 | > span { 7 | padding: @padding-vertical @padding-horizontal; 8 | font-size: @font-size; 9 | } 10 | &:first-child { 11 | > a, 12 | > span { 13 | .border-left-radius(@border-radius); 14 | } 15 | } 16 | &:last-child { 17 | > a, 18 | > span { 19 | .border-right-radius(@border-radius); 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /assets/lib/jquery/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "2.1.3", 4 | "main": "dist/jquery.js", 5 | "license": "MIT", 6 | "ignore": [ 7 | "**/.*", 8 | "build", 9 | "speed", 10 | "test", 11 | "*.md", 12 | "AUTHORS.txt", 13 | "Gruntfile.js", 14 | "package.json" 15 | ], 16 | "devDependencies": { 17 | "sizzle": "2.1.1-jquery.2.1.2", 18 | "requirejs": "2.1.10", 19 | "qunit": "1.14.0", 20 | "sinon": "1.8.1" 21 | }, 22 | "keywords": [ 23 | "jquery", 24 | "javascript", 25 | "library" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/border-radius.less: -------------------------------------------------------------------------------- 1 | // Single side border-radius 2 | 3 | .border-top-radius(@radius) { 4 | border-top-right-radius: @radius; 5 | border-top-left-radius: @radius; 6 | } 7 | .border-right-radius(@radius) { 8 | border-bottom-right-radius: @radius; 9 | border-top-right-radius: @radius; 10 | } 11 | .border-bottom-radius(@radius) { 12 | border-bottom-right-radius: @radius; 13 | border-bottom-left-radius: @radius; 14 | } 15 | .border-left-radius(@radius) { 16 | border-bottom-left-radius: @radius; 17 | border-top-left-radius: @radius; 18 | } 19 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/css/addGetHookIf.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | 3 | function addGetHookIf( conditionFn, hookFn ) { 4 | // Define the hook, we'll check on the first run if it's really needed. 5 | return { 6 | get: function() { 7 | if ( conditionFn() ) { 8 | // Hook not needed (or it's not possible to use it due 9 | // to missing dependency), remove it. 10 | delete this.get; 11 | return; 12 | } 13 | 14 | // Hook needed; redefine it so that the support test is not executed again. 15 | return (this.get = hookFn).apply( this, arguments ); 16 | } 17 | }; 18 | } 19 | 20 | return addGetHookIf; 21 | 22 | }); 23 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/ajax/parseXML.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // Cross-browser xml parsing 6 | jQuery.parseXML = function( data ) { 7 | var xml, tmp; 8 | if ( !data || typeof data !== "string" ) { 9 | return null; 10 | } 11 | 12 | // Support: IE9 13 | try { 14 | tmp = new DOMParser(); 15 | xml = tmp.parseFromString( data, "text/xml" ); 16 | } catch ( e ) { 17 | xml = undefined; 18 | } 19 | 20 | if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { 21 | jQuery.error( "Invalid XML: " + data ); 22 | } 23 | return xml; 24 | }; 25 | 26 | return jQuery.parseXML; 27 | 28 | }); 29 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/panels.less: -------------------------------------------------------------------------------- 1 | // Panels 2 | 3 | .panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) { 4 | border-color: @border; 5 | 6 | & > .panel-heading { 7 | color: @heading-text-color; 8 | background-color: @heading-bg-color; 9 | border-color: @heading-border; 10 | 11 | + .panel-collapse > .panel-body { 12 | border-top-color: @border; 13 | } 14 | .badge { 15 | color: @heading-bg-color; 16 | background-color: @heading-text-color; 17 | } 18 | } 19 | & > .panel-footer { 20 | + .panel-collapse > .panel-body { 21 | border-bottom-color: @border; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/queue/delay.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../queue", 4 | "../effects" // Delay is optional because of this dependency 5 | ], function( jQuery ) { 6 | 7 | // Based off of the plugin by Clint Helfers, with permission. 8 | // http://blindsignals.com/index.php/2009/07/jquery-delay/ 9 | jQuery.fn.delay = function( time, type ) { 10 | time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; 11 | type = type || "fx"; 12 | 13 | return this.queue( type, function( next, hooks ) { 14 | var timeout = setTimeout( next, time ); 15 | hooks.stop = function() { 16 | clearTimeout( timeout ); 17 | }; 18 | }); 19 | }; 20 | 21 | return jQuery.fn.delay; 22 | }); 23 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/wells.less: -------------------------------------------------------------------------------- 1 | // 2 | // Wells 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .well { 8 | min-height: 20px; 9 | padding: 19px; 10 | margin-bottom: 20px; 11 | background-color: @well-bg; 12 | border: 1px solid @well-border; 13 | border-radius: @border-radius-base; 14 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); 15 | blockquote { 16 | border-color: #ddd; 17 | border-color: rgba(0,0,0,.15); 18 | } 19 | } 20 | 21 | // Sizes 22 | .well-lg { 23 | padding: 24px; 24 | border-radius: @border-radius-large; 25 | } 26 | .well-sm { 27 | padding: 9px; 28 | border-radius: @border-radius-small; 29 | } 30 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/list-group.less: -------------------------------------------------------------------------------- 1 | // List Groups 2 | 3 | .list-group-item-variant(@state; @background; @color) { 4 | .list-group-item-@{state} { 5 | color: @color; 6 | background-color: @background; 7 | 8 | a& { 9 | color: @color; 10 | 11 | .list-group-item-heading { 12 | color: inherit; 13 | } 14 | 15 | &:hover, 16 | &:focus { 17 | color: @color; 18 | background-color: darken(@background, 5%); 19 | } 20 | &.active, 21 | &.active:hover, 22 | &.active:focus { 23 | color: #fff; 24 | background-color: @color; 25 | border-color: @color; 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/hide-text.less: -------------------------------------------------------------------------------- 1 | // CSS image replacement 2 | // 3 | // Heads up! v3 launched with with only `.hide-text()`, but per our pattern for 4 | // mixins being reused as classes with the same name, this doesn't hold up. As 5 | // of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. 6 | // 7 | // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 8 | 9 | // Deprecated as of v3.0.1 (will be removed in v4) 10 | .hide-text() { 11 | font: ~"0/0" a; 12 | color: transparent; 13 | text-shadow: none; 14 | background-color: transparent; 15 | border: 0; 16 | } 17 | 18 | // New mixin to use as of v3.0.1 19 | .text-hide() { 20 | .hide-text(); 21 | } 22 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/css/swap.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // A method for quickly swapping in/out CSS properties to get correct calculations. 6 | jQuery.swap = function( elem, options, callback, args ) { 7 | var ret, name, 8 | old = {}; 9 | 10 | // Remember the old values, and insert the new ones 11 | for ( name in options ) { 12 | old[ name ] = elem.style[ name ]; 13 | elem.style[ name ] = options[ name ]; 14 | } 15 | 16 | ret = callback.apply( elem, args || [] ); 17 | 18 | // Revert the old values 19 | for ( name in options ) { 20 | elem.style[ name ] = old[ name ]; 21 | } 22 | 23 | return ret; 24 | }; 25 | 26 | return jQuery.swap; 27 | 28 | }); 29 | -------------------------------------------------------------------------------- /assets/lib/jquery-knob/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "aterrien/jQuery-Knob", 3 | "version": "1.2.11", 4 | "main": "js/jquery.knob.js", 5 | "description": "Nice, downward compatible, touchable, jQuery dial.", 6 | "license": "MIT", 7 | "ignore": [], 8 | "dependencies": { 9 | "jquery": ">=1.7.0" 10 | }, 11 | "devDependencies": {}, 12 | "homepage": "https://github.com/aterrien/jQuery-Knob", 13 | "_release": "1.2.11", 14 | "_resolution": { 15 | "type": "version", 16 | "tag": "1.2.11", 17 | "commit": "f0149509614763b3bc270c7cb70eae6602491711" 18 | }, 19 | "_source": "git://github.com/aterrien/jQuery-Knob.git", 20 | "_target": "~1.2.9", 21 | "_originalSource": "jquery-knob" 22 | } -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "keen-dashboards", 3 | "version": "0.0.0", 4 | "homepage": "https://keenlabs.github.io/dashboards/", 5 | "authors": [ 6 | "Sean Dokko ", 7 | "Ritchie Benevedes ", 8 | "Dustin Larimer " 9 | ], 10 | "keywords": [ 11 | "keen io", 12 | "dashboards", 13 | "dataviz", 14 | "visualization" 15 | ], 16 | "license": "MIT", 17 | "ignore": [ 18 | "**/.*", 19 | "node_modules", 20 | "bower_components", 21 | "test", 22 | "tests" 23 | ], 24 | "dependencies": { 25 | "keen-js": "~3.2.1", 26 | "jquery": "~2.1.1", 27 | "bootstrap": "~3.2.0", 28 | "holderjs": "~2.3.2" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/clearfix.less: -------------------------------------------------------------------------------- 1 | // Clearfix 2 | // 3 | // For modern browsers 4 | // 1. The space content is one way to avoid an Opera bug when the 5 | // contenteditable attribute is included anywhere else in the document. 6 | // Otherwise it causes space to appear at the top and bottom of elements 7 | // that are clearfixed. 8 | // 2. The use of `table` rather than `block` is only necessary if using 9 | // `:before` to contain the top-margins of child elements. 10 | // 11 | // Source: http://nicolasgallagher.com/micro-clearfix-hack/ 12 | 13 | .clearfix() { 14 | &:before, 15 | &:after { 16 | content: " "; // 1 17 | display: table; // 2 18 | } 19 | &:after { 20 | clear: both; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /examples/2048/js/game/tile.js: -------------------------------------------------------------------------------- 1 | function Tile(position, value) { 2 | this.x = position.x; 3 | this.y = position.y; 4 | this.value = value || 2; 5 | 6 | this.previousPosition = null; 7 | this.mergedFrom = null; // Tracks tiles that merged together 8 | } 9 | 10 | Tile.prototype.savePosition = function () { 11 | this.previousPosition = { x: this.x, y: this.y }; 12 | }; 13 | 14 | Tile.prototype.updatePosition = function (position) { 15 | this.x = position.x; 16 | this.y = position.y; 17 | }; 18 | 19 | Tile.prototype.serialize = function () { 20 | return { 21 | position: { 22 | x: this.x, 23 | y: this.y 24 | }, 25 | value: this.value 26 | }; 27 | }; 28 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/breadcrumbs.less: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | 5 | 6 | .breadcrumb { 7 | padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; 8 | margin-bottom: @line-height-computed; 9 | list-style: none; 10 | background-color: @breadcrumb-bg; 11 | border-radius: @border-radius-base; 12 | 13 | > li { 14 | display: inline-block; 15 | 16 | + li:before { 17 | content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space 18 | padding: 0 5px; 19 | color: @breadcrumb-color; 20 | } 21 | } 22 | 23 | > .active { 24 | color: @breadcrumb-active-color; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/responsive-embed.less: -------------------------------------------------------------------------------- 1 | // Embeds responsive 2 | // 3 | // Credit: Nicolas Gallagher and SUIT CSS. 4 | 5 | .embed-responsive { 6 | position: relative; 7 | display: block; 8 | height: 0; 9 | padding: 0; 10 | overflow: hidden; 11 | 12 | .embed-responsive-item, 13 | iframe, 14 | embed, 15 | object { 16 | position: absolute; 17 | top: 0; 18 | left: 0; 19 | bottom: 0; 20 | height: 100%; 21 | width: 100%; 22 | border: 0; 23 | } 24 | 25 | // Modifier class for 16:9 aspect ratio 26 | &.embed-responsive-16by9 { 27 | padding-bottom: 56.25%; 28 | } 29 | 30 | // Modifier class for 4:3 aspect ratio 31 | &.embed-responsive-4by3 { 32 | padding-bottom: 75%; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/component-animations.less: -------------------------------------------------------------------------------- 1 | // 2 | // Component animations 3 | // -------------------------------------------------- 4 | 5 | // Heads up! 6 | // 7 | // We don't use the `.opacity()` mixin here since it causes a bug with text 8 | // fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. 9 | 10 | .fade { 11 | opacity: 0; 12 | .transition(opacity .15s linear); 13 | &.in { 14 | opacity: 1; 15 | } 16 | } 17 | 18 | .collapse { 19 | display: none; 20 | 21 | &.in { display: block; } 22 | tr&.in { display: table-row; } 23 | tbody&.in { display: table-row-group; } 24 | } 25 | 26 | .collapsing { 27 | position: relative; 28 | height: 0; 29 | overflow: hidden; 30 | .transition(height .35s ease); 31 | } 32 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/jquery.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./core", 3 | "./selector", 4 | "./traversing", 5 | "./callbacks", 6 | "./deferred", 7 | "./core/ready", 8 | "./data", 9 | "./queue", 10 | "./queue/delay", 11 | "./attributes", 12 | "./event", 13 | "./event/alias", 14 | "./manipulation", 15 | "./manipulation/_evalUrl", 16 | "./wrap", 17 | "./css", 18 | "./css/hiddenVisibleSelectors", 19 | "./serialize", 20 | "./ajax", 21 | "./ajax/xhr", 22 | "./ajax/script", 23 | "./ajax/jsonp", 24 | "./ajax/load", 25 | "./event/ajax", 26 | "./effects", 27 | "./effects/animatedSelector", 28 | "./offset", 29 | "./dimensions", 30 | "./deprecated", 31 | "./exports/amd", 32 | "./exports/global" 33 | ], function( jQuery ) { 34 | 35 | return jQuery; 36 | 37 | }); 38 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/exports/global.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../var/strundefined" 4 | ], function( jQuery, strundefined ) { 5 | 6 | var 7 | // Map over jQuery in case of overwrite 8 | _jQuery = window.jQuery, 9 | 10 | // Map over the $ in case of overwrite 11 | _$ = window.$; 12 | 13 | jQuery.noConflict = function( deep ) { 14 | if ( window.$ === jQuery ) { 15 | window.$ = _$; 16 | } 17 | 18 | if ( deep && window.jQuery === jQuery ) { 19 | window.jQuery = _jQuery; 20 | } 21 | 22 | return jQuery; 23 | }; 24 | 25 | // Expose jQuery and $ identifiers, even in AMD 26 | // (#7102#comment:10, https://github.com/jquery/jquery/pull/557) 27 | // and CommonJS for browser emulators (#13566) 28 | if ( typeof noGlobal === strundefined ) { 29 | window.jQuery = window.$ = jQuery; 30 | } 31 | 32 | }); 33 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/close.less: -------------------------------------------------------------------------------- 1 | // 2 | // Close icons 3 | // -------------------------------------------------- 4 | 5 | 6 | .close { 7 | float: right; 8 | font-size: (@font-size-base * 1.5); 9 | font-weight: @close-font-weight; 10 | line-height: 1; 11 | color: @close-color; 12 | text-shadow: @close-text-shadow; 13 | .opacity(.2); 14 | 15 | &:hover, 16 | &:focus { 17 | color: @close-color; 18 | text-decoration: none; 19 | cursor: pointer; 20 | .opacity(.5); 21 | } 22 | 23 | // Additional properties for button version 24 | // iOS requires the button element instead of an anchor tag. 25 | // If you want the anchor version, it requires `href="#"`. 26 | button& { 27 | padding: 0; 28 | cursor: pointer; 29 | background: transparent; 30 | border: 0; 31 | -webkit-appearance: none; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/table-row.less: -------------------------------------------------------------------------------- 1 | // Tables 2 | 3 | .table-row-variant(@state; @background) { 4 | // Exact selectors below required to override `.table-striped` and prevent 5 | // inheritance to nested tables. 6 | .table > thead > tr, 7 | .table > tbody > tr, 8 | .table > tfoot > tr { 9 | > td.@{state}, 10 | > th.@{state}, 11 | &.@{state} > td, 12 | &.@{state} > th { 13 | background-color: @background; 14 | } 15 | } 16 | 17 | // Hover states for `.table-hover` 18 | // Note: this is not available for cells or rows within `thead` or `tfoot`. 19 | .table-hover > tbody > tr { 20 | > td.@{state}:hover, 21 | > th.@{state}:hover, 22 | &.@{state}:hover > td, 23 | &:hover > .@{state}, 24 | &.@{state}:hover > th { 25 | background-color: darken(@background, 5%); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /assets/lib/jquery/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "2.1.3", 4 | "main": "dist/jquery.js", 5 | "license": "MIT", 6 | "ignore": [ 7 | "**/.*", 8 | "build", 9 | "speed", 10 | "test", 11 | "*.md", 12 | "AUTHORS.txt", 13 | "Gruntfile.js", 14 | "package.json" 15 | ], 16 | "devDependencies": { 17 | "sizzle": "2.1.1-jquery.2.1.2", 18 | "requirejs": "2.1.10", 19 | "qunit": "1.14.0", 20 | "sinon": "1.8.1" 21 | }, 22 | "keywords": [ 23 | "jquery", 24 | "javascript", 25 | "library" 26 | ], 27 | "homepage": "https://github.com/jquery/jquery", 28 | "_release": "2.1.3", 29 | "_resolution": { 30 | "type": "version", 31 | "tag": "2.1.3", 32 | "commit": "8f2a9d9272d6ed7f32d3a484740ab342c02541e0" 33 | }, 34 | "_source": "git://github.com/jquery/jquery.git", 35 | "_target": "~2.1.1", 36 | "_originalSource": "jquery" 37 | } -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/thumbnails.less: -------------------------------------------------------------------------------- 1 | // 2 | // Thumbnails 3 | // -------------------------------------------------- 4 | 5 | 6 | // Mixin and adjust the regular image class 7 | .thumbnail { 8 | display: block; 9 | padding: @thumbnail-padding; 10 | margin-bottom: @line-height-computed; 11 | line-height: @line-height-base; 12 | background-color: @thumbnail-bg; 13 | border: 1px solid @thumbnail-border; 14 | border-radius: @thumbnail-border-radius; 15 | .transition(all .2s ease-in-out); 16 | 17 | > img, 18 | a > img { 19 | &:extend(.img-responsive); 20 | margin-left: auto; 21 | margin-right: auto; 22 | } 23 | 24 | // Add a hover state for linked versions only 25 | a&:hover, 26 | a&:focus, 27 | a&.active { 28 | border-color: @link-color; 29 | } 30 | 31 | // Image captions 32 | .caption { 33 | padding: @thumbnail-caption-padding; 34 | color: @thumbnail-caption-color; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /assets/lib/holderjs/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "imsky/holder", 3 | "description": "Holder uses the canvas element and the data URI scheme to render image placeholders entirely in browser.", 4 | "homepage": "https://github.com/imsky/holder", 5 | "keywords": [ 6 | "images", 7 | "placeholders", 8 | "client-side", 9 | "canvas", 10 | "generation", 11 | "development" 12 | ], 13 | "license": "MIT", 14 | "type": "component", 15 | "authors": [ 16 | { 17 | "name": "Ivan Malopinsky", 18 | "homepage": "http://imsky.co" 19 | } 20 | ], 21 | "require": { 22 | "robloach/component-installer": "*" 23 | }, 24 | "extra": { 25 | "component": { 26 | "scripts": [ 27 | "holder.js" 28 | ], 29 | "files": [ 30 | "holder.min.js" 31 | ] 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bootstrap", 3 | "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", 4 | "version": "3.2.0", 5 | "keywords": [ 6 | "css", 7 | "js", 8 | "less", 9 | "mobile-first", 10 | "responsive", 11 | "front-end", 12 | "framework", 13 | "web" 14 | ], 15 | "homepage": "http://getbootstrap.com", 16 | "main": [ 17 | "less/bootstrap.less", 18 | "dist/css/bootstrap.css", 19 | "dist/js/bootstrap.js", 20 | "dist/fonts/glyphicons-halflings-regular.eot", 21 | "dist/fonts/glyphicons-halflings-regular.svg", 22 | "dist/fonts/glyphicons-halflings-regular.ttf", 23 | "dist/fonts/glyphicons-halflings-regular.woff" 24 | ], 25 | "ignore": [ 26 | ".*", 27 | "_config.yml", 28 | "CNAME", 29 | "composer.json", 30 | "CONTRIBUTING.md", 31 | "docs", 32 | "js/tests", 33 | "test-infra" 34 | ], 35 | "dependencies": { 36 | "jquery": ">= 1.9.0" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /assets/lib/holderjs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Holder", 3 | "version": "2.3.2", 4 | "summary": "client side image placeholders", 5 | "description": "Holder uses the canvas element and the data URI scheme to render image placeholders entirely in browser.", 6 | "keywords": [ 7 | "images", 8 | "placeholders", 9 | "client-side", 10 | "canvas", 11 | "generation", 12 | "development" 13 | ], 14 | "main": "holder.js", 15 | "author": { 16 | "name": "Ivan Malopinsky", 17 | "url": "http://imsky.co" 18 | }, 19 | "homepage": "https://github.com/imsky/holder", 20 | "repository": { 21 | "type": "git", 22 | "url": "git://github.com/imsky/holder.git" 23 | }, 24 | "bugs": { 25 | "url": "https://github.com/imsky/holder/issues" 26 | }, 27 | "license": { 28 | "type": "MIT", 29 | "url": "http://opensource.org/licenses/MIT" 30 | }, 31 | "devDependencies": { 32 | "grunt": "~0.4.1", 33 | "grunt-contrib-uglify": "~0.2.2", 34 | "grunt-contrib-jshint": "~0.6.0" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /examples/2048/js/game/animframe_polyfill.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | var lastTime = 0; 3 | var vendors = ['webkit', 'moz']; 4 | for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { 5 | window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame']; 6 | window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || 7 | window[vendors[x] + 'CancelRequestAnimationFrame']; 8 | } 9 | 10 | if (!window.requestAnimationFrame) { 11 | window.requestAnimationFrame = function (callback) { 12 | var currTime = new Date().getTime(); 13 | var timeToCall = Math.max(0, 16 - (currTime - lastTime)); 14 | var id = window.setTimeout(function () { 15 | callback(currTime + timeToCall); 16 | }, 17 | timeToCall); 18 | lastTime = currTime + timeToCall; 19 | return id; 20 | }; 21 | } 22 | 23 | if (!window.cancelAnimationFrame) { 24 | window.cancelAnimationFrame = function (id) { 25 | clearTimeout(id); 26 | }; 27 | } 28 | }()); 29 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/attributes/support.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../var/support" 3 | ], function( support ) { 4 | 5 | (function() { 6 | var input = document.createElement( "input" ), 7 | select = document.createElement( "select" ), 8 | opt = select.appendChild( document.createElement( "option" ) ); 9 | 10 | input.type = "checkbox"; 11 | 12 | // Support: iOS<=5.1, Android<=4.2+ 13 | // Default value for a checkbox should be "on" 14 | support.checkOn = input.value !== ""; 15 | 16 | // Support: IE<=11+ 17 | // Must access selectedIndex to make default options select 18 | support.optSelected = opt.selected; 19 | 20 | // Support: Android<=2.3 21 | // Options inside disabled selects are incorrectly marked as disabled 22 | select.disabled = true; 23 | support.optDisabled = !opt.disabled; 24 | 25 | // Support: IE<=11+ 26 | // An input loses its value after becoming a radio 27 | input = document.createElement( "input" ); 28 | input.value = "t"; 29 | input.type = "radio"; 30 | support.radioValue = input.value === "t"; 31 | })(); 32 | 33 | return support; 34 | 35 | }); 36 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/utilities.less: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes 3 | // -------------------------------------------------- 4 | 5 | 6 | // Floats 7 | // ------------------------- 8 | 9 | .clearfix { 10 | .clearfix(); 11 | } 12 | .center-block { 13 | .center-block(); 14 | } 15 | .pull-right { 16 | float: right !important; 17 | } 18 | .pull-left { 19 | float: left !important; 20 | } 21 | 22 | 23 | // Toggling content 24 | // ------------------------- 25 | 26 | // Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1 27 | .hide { 28 | display: none !important; 29 | } 30 | .show { 31 | display: block !important; 32 | } 33 | .invisible { 34 | visibility: hidden; 35 | } 36 | .text-hide { 37 | .text-hide(); 38 | } 39 | 40 | 41 | // Hide from screenreaders and browsers 42 | // 43 | // Credit: HTML5 Boilerplate 44 | 45 | .hidden { 46 | display: none !important; 47 | visibility: hidden !important; 48 | } 49 | 50 | 51 | // For Affix plugin 52 | // ------------------------- 53 | 54 | .affix { 55 | position: fixed; 56 | .translate3d(0, 0, 0); 57 | } 58 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/exports/amd.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // Register as a named AMD module, since jQuery can be concatenated with other 6 | // files that may use define, but not via a proper concatenation script that 7 | // understands anonymous AMD modules. A named AMD is safest and most robust 8 | // way to register. Lowercase jquery is used because AMD module names are 9 | // derived from file names, and jQuery is normally delivered in a lowercase 10 | // file name. Do this after creating the global so that if an AMD module wants 11 | // to call noConflict to hide this version of jQuery, it will work. 12 | 13 | // Note that for maximum portability, libraries that are not jQuery should 14 | // declare themselves as anonymous modules, and avoid setting a global if an 15 | // AMD loader is present. jQuery is a special case. For more information, see 16 | // https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon 17 | 18 | if ( typeof define === "function" && define.amd ) { 19 | define( "jquery", [], function() { 20 | return jQuery; 21 | }); 22 | } 23 | 24 | }); 25 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/media.less: -------------------------------------------------------------------------------- 1 | // Media objects 2 | // Source: http://stubbornella.org/content/?p=497 3 | // -------------------------------------------------- 4 | 5 | 6 | // Common styles 7 | // ------------------------- 8 | 9 | // Clear the floats 10 | .media, 11 | .media-body { 12 | overflow: hidden; 13 | zoom: 1; 14 | } 15 | 16 | // Proper spacing between instances of .media 17 | .media, 18 | .media .media { 19 | margin-top: 15px; 20 | } 21 | .media:first-child { 22 | margin-top: 0; 23 | } 24 | 25 | // For images and videos, set to block 26 | .media-object { 27 | display: block; 28 | } 29 | 30 | // Reset margins on headings for tighter default spacing 31 | .media-heading { 32 | margin: 0 0 5px; 33 | } 34 | 35 | 36 | // Media image alignment 37 | // ------------------------- 38 | 39 | .media { 40 | > .pull-left { 41 | margin-right: 10px; 42 | } 43 | > .pull-right { 44 | margin-left: 10px; 45 | } 46 | } 47 | 48 | 49 | // Media list variation 50 | // ------------------------- 51 | 52 | // Undo default ul/ol styles 53 | .media-list { 54 | padding-left: 0; 55 | list-style: none; 56 | } 57 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/pager.less: -------------------------------------------------------------------------------- 1 | // 2 | // Pager pagination 3 | // -------------------------------------------------- 4 | 5 | 6 | .pager { 7 | padding-left: 0; 8 | margin: @line-height-computed 0; 9 | list-style: none; 10 | text-align: center; 11 | &:extend(.clearfix all); 12 | li { 13 | display: inline; 14 | > a, 15 | > span { 16 | display: inline-block; 17 | padding: 5px 14px; 18 | background-color: @pager-bg; 19 | border: 1px solid @pager-border; 20 | border-radius: @pager-border-radius; 21 | } 22 | 23 | > a:hover, 24 | > a:focus { 25 | text-decoration: none; 26 | background-color: @pager-hover-bg; 27 | } 28 | } 29 | 30 | .next { 31 | > a, 32 | > span { 33 | float: right; 34 | } 35 | } 36 | 37 | .previous { 38 | > a, 39 | > span { 40 | float: left; 41 | } 42 | } 43 | 44 | .disabled { 45 | > a, 46 | > a:hover, 47 | > a:focus, 48 | > span { 49 | color: @pager-disabled-color; 50 | background-color: @pager-bg; 51 | cursor: not-allowed; 52 | } 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/core/parseHTML.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "./var/rsingleTag", 4 | "../manipulation" // buildFragment 5 | ], function( jQuery, rsingleTag ) { 6 | 7 | // data: string of html 8 | // context (optional): If specified, the fragment will be created in this context, defaults to document 9 | // keepScripts (optional): If true, will include scripts passed in the html string 10 | jQuery.parseHTML = function( data, context, keepScripts ) { 11 | if ( !data || typeof data !== "string" ) { 12 | return null; 13 | } 14 | if ( typeof context === "boolean" ) { 15 | keepScripts = context; 16 | context = false; 17 | } 18 | context = context || document; 19 | 20 | var parsed = rsingleTag.exec( data ), 21 | scripts = !keepScripts && []; 22 | 23 | // Single tag 24 | if ( parsed ) { 25 | return [ context.createElement( parsed[1] ) ]; 26 | } 27 | 28 | parsed = jQuery.buildFragment( [ data ], context, scripts ); 29 | 30 | if ( scripts && scripts.length ) { 31 | jQuery( scripts ).remove(); 32 | } 33 | 34 | return jQuery.merge( [], parsed.childNodes ); 35 | }; 36 | 37 | return jQuery.parseHTML; 38 | 39 | }); 40 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/manipulation/support.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../var/support" 3 | ], function( support ) { 4 | 5 | (function() { 6 | var fragment = document.createDocumentFragment(), 7 | div = fragment.appendChild( document.createElement( "div" ) ), 8 | input = document.createElement( "input" ); 9 | 10 | // Support: Safari<=5.1 11 | // Check state lost if the name is set (#11217) 12 | // Support: Windows Web Apps (WWA) 13 | // `name` and `type` must use .setAttribute for WWA (#14901) 14 | input.setAttribute( "type", "radio" ); 15 | input.setAttribute( "checked", "checked" ); 16 | input.setAttribute( "name", "t" ); 17 | 18 | div.appendChild( input ); 19 | 20 | // Support: Safari<=5.1, Android<4.2 21 | // Older WebKit doesn't clone checked state correctly in fragments 22 | support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; 23 | 24 | // Support: IE<=11+ 25 | // Make sure textarea (and checkbox) defaultValue is properly cloned 26 | div.innerHTML = ""; 27 | support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; 28 | })(); 29 | 30 | return support; 31 | 32 | }); 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Keen IO 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /examples/starter-kit/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Keen IO 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /layouts/two-and-one/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Keen IO 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /assets/lib/jquery-knob/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013 Anthony Terrien 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /assets/lib/jquery-knob/knob.jquery.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "knob", 3 | "title": "jQuery Knob", 4 | "description": "Nice, downward compatible, touchable, jQuery dial.", 5 | "keywords": [ 6 | "dial", 7 | "button", 8 | "knob", 9 | "ui", 10 | "input" 11 | ], 12 | "version": "1.2.11", 13 | "author": { 14 | "name": "Anthony Terrien", 15 | "url": "https://github.com/aterrien" 16 | }, 17 | "maintainers": [ 18 | { 19 | "name": "Anthony Terrien", 20 | "email": "kontrol@anthonyterrien.com", 21 | "url": "http://anthonyterrien.com/knob" 22 | } 23 | ], 24 | "licenses": [ 25 | { 26 | "type": "MIT", 27 | "url": "http://opensource.org/licenses/mit-license.php" 28 | } 29 | ], 30 | "bugs": "https://github.com/aterrien/jQuery-Knob/issues", 31 | "homepage": "https://github.com/aterrien/jQuery-Knob", 32 | "docs": "https://github.com/aterrien/jQuery-Knob", 33 | "download": "https://github.com/aterrien/jQuery-Knob/tags", 34 | "dependencies": { 35 | "jquery": ">=1.7.0" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /assets/lib/keen-js/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 KEEN IO, Inc 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /examples/service-monitoring/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Keen IO 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /assets/lib/bootstrap/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2011-2014 Twitter, Inc 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /assets/lib/jquery/MIT-LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2014 jQuery Foundation and other contributors 2 | http://jquery.com/ 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining 5 | a copy of this software and associated documentation files (the 6 | "Software"), to deal in the Software without restriction, including 7 | without limitation the rights to use, copy, modify, merge, publish, 8 | distribute, sublicense, and/or sell copies of the Software, and to 9 | permit persons to whom the Software is furnished to do so, subject to 10 | the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 19 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 20 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 21 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/jumbotron.less: -------------------------------------------------------------------------------- 1 | // 2 | // Jumbotron 3 | // -------------------------------------------------- 4 | 5 | 6 | .jumbotron { 7 | padding: @jumbotron-padding; 8 | margin-bottom: @jumbotron-padding; 9 | color: @jumbotron-color; 10 | background-color: @jumbotron-bg; 11 | 12 | h1, 13 | .h1 { 14 | color: @jumbotron-heading-color; 15 | } 16 | p { 17 | margin-bottom: (@jumbotron-padding / 2); 18 | font-size: @jumbotron-font-size; 19 | font-weight: 200; 20 | } 21 | 22 | > hr { 23 | border-top-color: darken(@jumbotron-bg, 10%); 24 | } 25 | 26 | .container & { 27 | border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container 28 | } 29 | 30 | .container { 31 | max-width: 100%; 32 | } 33 | 34 | @media screen and (min-width: @screen-sm-min) { 35 | padding-top: (@jumbotron-padding * 1.6); 36 | padding-bottom: (@jumbotron-padding * 1.6); 37 | 38 | .container & { 39 | padding-left: (@jumbotron-padding * 2); 40 | padding-right: (@jumbotron-padding * 2); 41 | } 42 | 43 | h1, 44 | .h1 { 45 | font-size: (@font-size-base * 4.5); 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /examples/2048/styles/game/fonts/clear-sans.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: "Clear Sans"; 3 | src: url("ClearSans-Light-webfont.eot"); 4 | src: url("ClearSans-Light-webfont.eot?#iefix") format("embedded-opentype"), 5 | url("ClearSans-Light-webfont.svg#clear_sans_lightregular") format("svg"), 6 | url("ClearSans-Light-webfont.woff") format("woff"); 7 | font-weight: 200; 8 | font-style: normal; 9 | } 10 | 11 | @font-face { 12 | font-family: "Clear Sans"; 13 | src: url("ClearSans-Regular-webfont.eot"); 14 | src: url("ClearSans-Regular-webfont.eot?#iefix") format("embedded-opentype"), 15 | url("ClearSans-Regular-webfont.svg#clear_sansregular") format("svg"), 16 | url("ClearSans-Regular-webfont.woff") format("woff"); 17 | font-weight: normal; 18 | font-style: normal; 19 | } 20 | 21 | @font-face { 22 | font-family: "Clear Sans"; 23 | src: url("ClearSans-Bold-webfont.eot"); 24 | src: url("ClearSans-Bold-webfont.eot?#iefix") format("embedded-opentype"), 25 | url("ClearSans-Bold-webfont.svg#clear_sansbold") format("svg"), 26 | url("ClearSans-Bold-webfont.woff") format("woff"); 27 | font-weight: 700; 28 | font-style: normal; 29 | } 30 | 31 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/event/alias.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../event" 4 | ], function( jQuery ) { 5 | 6 | jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + 7 | "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + 8 | "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { 9 | 10 | // Handle event binding 11 | jQuery.fn[ name ] = function( data, fn ) { 12 | return arguments.length > 0 ? 13 | this.on( name, null, data, fn ) : 14 | this.trigger( name ); 15 | }; 16 | }); 17 | 18 | jQuery.fn.extend({ 19 | hover: function( fnOver, fnOut ) { 20 | return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); 21 | }, 22 | 23 | bind: function( types, data, fn ) { 24 | return this.on( types, null, data, fn ); 25 | }, 26 | unbind: function( types, fn ) { 27 | return this.off( types, null, fn ); 28 | }, 29 | 30 | delegate: function( selector, types, data, fn ) { 31 | return this.on( types, selector, data, fn ); 32 | }, 33 | undelegate: function( selector, types, fn ) { 34 | // ( namespace ) or ( selector, types [, fn] ) 35 | return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); 36 | } 37 | }); 38 | 39 | }); 40 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------------------------------- 3 | 4 | // Utilities 5 | @import "mixins/hide-text.less"; 6 | @import "mixins/opacity.less"; 7 | @import "mixins/image.less"; 8 | @import "mixins/labels.less"; 9 | @import "mixins/reset-filter.less"; 10 | @import "mixins/resize.less"; 11 | @import "mixins/responsive-visibility.less"; 12 | @import "mixins/size.less"; 13 | @import "mixins/tab-focus.less"; 14 | @import "mixins/text-emphasis.less"; 15 | @import "mixins/text-overflow.less"; 16 | @import "mixins/vendor-prefixes.less"; 17 | 18 | // Components 19 | @import "mixins/alerts.less"; 20 | @import "mixins/buttons.less"; 21 | @import "mixins/panels.less"; 22 | @import "mixins/pagination.less"; 23 | @import "mixins/list-group.less"; 24 | @import "mixins/nav-divider.less"; 25 | @import "mixins/forms.less"; 26 | @import "mixins/progress-bar.less"; 27 | @import "mixins/table-row.less"; 28 | 29 | // Skins 30 | @import "mixins/background-variant.less"; 31 | @import "mixins/border-radius.less"; 32 | @import "mixins/gradients.less"; 33 | 34 | // Layout 35 | @import "mixins/clearfix.less"; 36 | @import "mixins/center-block.less"; 37 | @import "mixins/nav-vertical-align.less"; 38 | @import "mixins/grid-framework.less"; 39 | @import "mixins/grid.less"; 40 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/image.less: -------------------------------------------------------------------------------- 1 | // Image Mixins 2 | // - Responsive image 3 | // - Retina image 4 | 5 | 6 | // Responsive image 7 | // 8 | // Keep images from scaling beyond the width of their parents. 9 | .img-responsive(@display: block) { 10 | display: @display; 11 | width: 100% \9; // Force IE10 and below to size SVG images correctly 12 | max-width: 100%; // Part 1: Set a maximum relative to the parent 13 | height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching 14 | } 15 | 16 | 17 | // Retina image 18 | // 19 | // Short retina mixin for setting background-image and -size. Note that the 20 | // spelling of `min--moz-device-pixel-ratio` is intentional. 21 | .img-retina(@file-1x; @file-2x; @width-1x; @height-1x) { 22 | background-image: url("@{file-1x}"); 23 | 24 | @media 25 | only screen and (-webkit-min-device-pixel-ratio: 2), 26 | only screen and ( min--moz-device-pixel-ratio: 2), 27 | only screen and ( -o-min-device-pixel-ratio: 2/1), 28 | only screen and ( min-device-pixel-ratio: 2), 29 | only screen and ( min-resolution: 192dpi), 30 | only screen and ( min-resolution: 2dppx) { 31 | background-image: url("@{file-2x}"); 32 | background-size: @width-1x @height-1x; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/buttons.less: -------------------------------------------------------------------------------- 1 | // Button variants 2 | // 3 | // Easily pump out default styles, as well as :hover, :focus, :active, 4 | // and disabled options for all buttons 5 | 6 | .button-variant(@color; @background; @border) { 7 | color: @color; 8 | background-color: @background; 9 | border-color: @border; 10 | 11 | &:hover, 12 | &:focus, 13 | &:active, 14 | &.active, 15 | .open > .dropdown-toggle& { 16 | color: @color; 17 | background-color: darken(@background, 10%); 18 | border-color: darken(@border, 12%); 19 | } 20 | &:active, 21 | &.active, 22 | .open > .dropdown-toggle& { 23 | background-image: none; 24 | } 25 | &.disabled, 26 | &[disabled], 27 | fieldset[disabled] & { 28 | &, 29 | &:hover, 30 | &:focus, 31 | &:active, 32 | &.active { 33 | background-color: @background; 34 | border-color: @border; 35 | } 36 | } 37 | 38 | .badge { 39 | color: @background; 40 | background-color: @color; 41 | } 42 | } 43 | 44 | // Button sizes 45 | .button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) { 46 | padding: @padding-vertical @padding-horizontal; 47 | font-size: @font-size; 48 | line-height: @line-height; 49 | border-radius: @border-radius; 50 | } 51 | -------------------------------------------------------------------------------- /assets/lib/holderjs/Gruntfile.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = function(grunt) { 4 | 5 | // Project configuration. 6 | grunt.initConfig({ 7 | // Metadata. 8 | pkg: grunt.file.readJSON('package.json'), 9 | banner: 10 | '/*\n\n' + 11 | '<%= pkg.name %> - <%= pkg.version %> - <%= pkg.summary %>\n' + 12 | '(c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %> / <%= pkg.author.url %>\n\n' + 13 | 'Provided under the <%= pkg.license.type %> License: <%= pkg.license.url %>\n' + 14 | 'Commercial use requires attribution.\n\n' + 15 | '*/\n', 16 | // Task configuration. 17 | jshint: { 18 | options: { 19 | jshintrc: '.jshintrc' 20 | }, 21 | gruntfile: { 22 | src: 'Gruntfile.js' 23 | }, 24 | src: { 25 | src: ['holder.js'] 26 | } 27 | }, 28 | uglify: { 29 | options: { 30 | banner: '<%= banner %>' 31 | }, 32 | dist: { 33 | src: 'holder.js', 34 | dest: 'holder.min.js' 35 | } 36 | } 37 | }); 38 | 39 | // These plugins provide necessary tasks. 40 | grunt.loadNpmTasks('grunt-contrib-uglify'); 41 | grunt.loadNpmTasks('grunt-contrib-jshint'); 42 | 43 | 44 | // Default task. 45 | grunt.registerTask('default', ['jshint', 'uglify']); 46 | }; 47 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/badges.less: -------------------------------------------------------------------------------- 1 | // 2 | // Badges 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .badge { 8 | display: inline-block; 9 | min-width: 10px; 10 | padding: 3px 7px; 11 | font-size: @font-size-small; 12 | font-weight: @badge-font-weight; 13 | color: @badge-color; 14 | line-height: @badge-line-height; 15 | vertical-align: baseline; 16 | white-space: nowrap; 17 | text-align: center; 18 | background-color: @badge-bg; 19 | border-radius: @badge-border-radius; 20 | 21 | // Empty badges collapse automatically (not available in IE8) 22 | &:empty { 23 | display: none; 24 | } 25 | 26 | // Quick fix for badges in buttons 27 | .btn & { 28 | position: relative; 29 | top: -1px; 30 | } 31 | .btn-xs & { 32 | top: 0; 33 | padding: 1px 5px; 34 | } 35 | 36 | // Hover state, but only for links 37 | a& { 38 | &:hover, 39 | &:focus { 40 | color: @badge-link-hover-color; 41 | text-decoration: none; 42 | cursor: pointer; 43 | } 44 | } 45 | 46 | // Account for badges in navs 47 | a.list-group-item.active > &, 48 | .nav-pills > .active > a > & { 49 | color: @badge-active-color; 50 | background-color: @badge-active-bg; 51 | } 52 | .nav-pills > li > a > & { 53 | margin-left: 3px; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bootstrap", 3 | "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", 4 | "version": "3.2.0", 5 | "keywords": [ 6 | "css", 7 | "js", 8 | "less", 9 | "mobile-first", 10 | "responsive", 11 | "front-end", 12 | "framework", 13 | "web" 14 | ], 15 | "homepage": "http://getbootstrap.com", 16 | "main": [ 17 | "less/bootstrap.less", 18 | "dist/css/bootstrap.css", 19 | "dist/js/bootstrap.js", 20 | "dist/fonts/glyphicons-halflings-regular.eot", 21 | "dist/fonts/glyphicons-halflings-regular.svg", 22 | "dist/fonts/glyphicons-halflings-regular.ttf", 23 | "dist/fonts/glyphicons-halflings-regular.woff" 24 | ], 25 | "ignore": [ 26 | ".*", 27 | "_config.yml", 28 | "CNAME", 29 | "composer.json", 30 | "CONTRIBUTING.md", 31 | "docs", 32 | "js/tests", 33 | "test-infra" 34 | ], 35 | "dependencies": { 36 | "jquery": ">= 1.9.0" 37 | }, 38 | "_release": "3.2.0", 39 | "_resolution": { 40 | "type": "version", 41 | "tag": "v3.2.0", 42 | "commit": "c068162161154a4b85110ea1e7dd3d7897ce2b72" 43 | }, 44 | "_source": "git://github.com/twbs/bootstrap.git", 45 | "_target": "~3.2.0", 46 | "_originalSource": "bootstrap", 47 | "_direct": true 48 | } -------------------------------------------------------------------------------- /assets/js/meta.js: -------------------------------------------------------------------------------- 1 | !function(){ 2 | var meta = new Keen({ 3 | projectId: "5368fa5436bf5a5623000000", 4 | writeKey: "725f3a571824d9c29f6e4d1c39af349a114d9034f8e493f95d39802529e2ccbb174033077bdcf10b541dbb50c20105922c59bbe1fe7741cb4b632dd0bc84fe98c0b591e17da3d429ef867cc674be0ad20ad768a5210662d2d18ff5492f37a1f91ce697a5489064bb3fa95c827b6cb394" 5 | }); 6 | meta.addEvent("visits", { 7 | page: { 8 | title: document.title, 9 | host: document.location.host, 10 | href: document.location.href, 11 | path: document.location.pathname, 12 | protocol: document.location.protocol.replace(/:/g, ""), 13 | query: document.location.search 14 | }, 15 | visitor: { 16 | referrer: document.referrer, 17 | ip_address: "${keen.ip}", 18 | // tech: {} //^ created by ip_to_geo add-on 19 | user_agent: "${keen.user_agent}" 20 | // visitor: {} //^ created by ua_parser add-on 21 | }, 22 | keen: { 23 | timestamp: new Date().toISOString(), 24 | addons: [ 25 | { name:"keen:ip_to_geo", input: { ip:"visitor.ip_address" }, output:"visitor.geo" }, 26 | { name:"keen:ua_parser", input: { ua_string:"visitor.user_agent" }, output:"visitor.tech" } 27 | ] 28 | } 29 | }); 30 | // More data modeling examples here: 31 | // https://github.com/keenlabs/data-modeling-guide/ 32 | }(); 33 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/bootstrap.less: -------------------------------------------------------------------------------- 1 | // Core variables and mixins 2 | @import "variables.less"; 3 | @import "mixins.less"; 4 | 5 | // Reset and dependencies 6 | @import "normalize.less"; 7 | @import "print.less"; 8 | @import "glyphicons.less"; 9 | 10 | // Core CSS 11 | @import "scaffolding.less"; 12 | @import "type.less"; 13 | @import "code.less"; 14 | @import "grid.less"; 15 | @import "tables.less"; 16 | @import "forms.less"; 17 | @import "buttons.less"; 18 | 19 | // Components 20 | @import "component-animations.less"; 21 | @import "dropdowns.less"; 22 | @import "button-groups.less"; 23 | @import "input-groups.less"; 24 | @import "navs.less"; 25 | @import "navbar.less"; 26 | @import "breadcrumbs.less"; 27 | @import "pagination.less"; 28 | @import "pager.less"; 29 | @import "labels.less"; 30 | @import "badges.less"; 31 | @import "jumbotron.less"; 32 | @import "thumbnails.less"; 33 | @import "alerts.less"; 34 | @import "progress-bars.less"; 35 | @import "media.less"; 36 | @import "list-group.less"; 37 | @import "panels.less"; 38 | @import "responsive-embed.less"; 39 | @import "wells.less"; 40 | @import "close.less"; 41 | 42 | // Components w/ JavaScript 43 | @import "modals.less"; 44 | @import "tooltip.less"; 45 | @import "popovers.less"; 46 | @import "carousel.less"; 47 | 48 | // Utility classes 49 | @import "utilities.less"; 50 | @import "responsive-utilities.less"; 51 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/labels.less: -------------------------------------------------------------------------------- 1 | // 2 | // Labels 3 | // -------------------------------------------------- 4 | 5 | .label { 6 | display: inline; 7 | padding: .2em .6em .3em; 8 | font-size: 75%; 9 | font-weight: bold; 10 | line-height: 1; 11 | color: @label-color; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | border-radius: .25em; 16 | 17 | // Add hover effects, but only for links 18 | a& { 19 | &:hover, 20 | &:focus { 21 | color: @label-link-hover-color; 22 | text-decoration: none; 23 | cursor: pointer; 24 | } 25 | } 26 | 27 | // Empty labels collapse automatically (not available in IE8) 28 | &:empty { 29 | display: none; 30 | } 31 | 32 | // Quick fix for labels in buttons 33 | .btn & { 34 | position: relative; 35 | top: -1px; 36 | } 37 | } 38 | 39 | // Colors 40 | // Contextual variations (linked labels get darker on :hover) 41 | 42 | .label-default { 43 | .label-variant(@label-default-bg); 44 | } 45 | 46 | .label-primary { 47 | .label-variant(@label-primary-bg); 48 | } 49 | 50 | .label-success { 51 | .label-variant(@label-success-bg); 52 | } 53 | 54 | .label-info { 55 | .label-variant(@label-info-bg); 56 | } 57 | 58 | .label-warning { 59 | .label-variant(@label-warning-bg); 60 | } 61 | 62 | .label-danger { 63 | .label-variant(@label-danger-bg); 64 | } 65 | -------------------------------------------------------------------------------- /assets/lib/keen-js/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "keen-js", 3 | "description": "Keen IO JavaScript SDK", 4 | "main": "./dist/keen.min.js", 5 | "license": "MIT", 6 | "authors": [ 7 | "Dustin Larimer ", 8 | "Sean Dokko ", 9 | "Jordan Klassen ", 10 | "Josh Dzielak ", 11 | "Ryan Spraetz ", 12 | "Dan Kador ", 13 | "Cory Watson ", 14 | "Joshua Coats ", 15 | "Micah Wolfe ", 16 | "Tim Schiller " 17 | ], 18 | "keywords": [ 19 | "analytics", 20 | "metrics", 21 | "tracking", 22 | "logging", 23 | "stats", 24 | "pageviews", 25 | "keen", 26 | "keen.io", 27 | "keen-io" 28 | ], 29 | "homepage": "https://github.com/keen/keen-js", 30 | "repository": { 31 | "type": "git", 32 | "url": "https://github.com/keen/keen-js.git" 33 | }, 34 | "ignore": [ 35 | "**/.*", 36 | "bower_components", 37 | "node_modules", 38 | "docs", 39 | "src", 40 | "test", 41 | "gulpfile.js", 42 | "karma.conf.js", 43 | ".npmignore", 44 | "*.json", 45 | "*.md", 46 | "*.yml" 47 | ], 48 | "devDependencies": { 49 | "mocha": "~1.18.2", 50 | "requirejs-bower": "2.1.14", 51 | "sinon-1.12.1": "http://sinonjs.org/releases/sinon-1.12.1.js" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /examples/geo-explorer/geo-explorer.css: -------------------------------------------------------------------------------- 1 | body.application { 2 | padding: 0; 3 | margin: 0; 4 | } 5 | 6 | .row { 7 | margin: 0; 8 | } 9 | 10 | #app-wrapper { 11 | height: 100%; 12 | position: aboslute; 13 | width: 100%; 14 | } 15 | 16 | #app-toolbar { 17 | background: rgba(0,0,0,.75); 18 | box-shadow: 0 1px 5px rgba(0,0,0,.1); 19 | color: #fff; 20 | position: fixed; 21 | top: 0px; 22 | width: 100%; 23 | z-index: 1; 24 | } 25 | 26 | #app-toolbar .btn-primary { 27 | background-color: #00afd7; 28 | border: medium none; 29 | } 30 | #app-toolbar .btn-primary:focus, 31 | #app-toolbar .btn-primary:hover { 32 | background-color: #0098BB; 33 | } 34 | 35 | #app-maparea { 36 | border-right: 1px solid #d7d7d7; 37 | position: fixed; 38 | top: 0px; 39 | width: 67%; 40 | z-index: 0; 41 | } 42 | 43 | #app-sidebar { 44 | padding: 10px; 45 | position: absolute; 46 | right: 0; 47 | top: 75px; 48 | width: 33%; 49 | } 50 | 51 | #app-sidebar .chart-wrapper { 52 | border: medium none; 53 | box-shadow: 0 1px 3px rgba(0,0,0,.1); 54 | } 55 | 56 | .tools { 57 | min-height: 75px; 58 | padding: 0 5px 0 0; 59 | } 60 | 61 | .tool input, .tool select { 62 | background: rgba(0,0,0,.5); 63 | border: medium none; 64 | box-shadow: none; 65 | color: #e7e7e7; 66 | float: left; 67 | margin: 0 1%; 68 | } 69 | .radius input, .radius select { 70 | width: 48%; 71 | } 72 | .tool input, 73 | .tool label, 74 | .tool h5 { 75 | text-shadow: 0 0 1px #000; 76 | } 77 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/core/access.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // Multifunctional method to get and set values of a collection 6 | // The value/s can optionally be executed if it's a function 7 | var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { 8 | var i = 0, 9 | len = elems.length, 10 | bulk = key == null; 11 | 12 | // Sets many values 13 | if ( jQuery.type( key ) === "object" ) { 14 | chainable = true; 15 | for ( i in key ) { 16 | jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); 17 | } 18 | 19 | // Sets one value 20 | } else if ( value !== undefined ) { 21 | chainable = true; 22 | 23 | if ( !jQuery.isFunction( value ) ) { 24 | raw = true; 25 | } 26 | 27 | if ( bulk ) { 28 | // Bulk operations run against the entire set 29 | if ( raw ) { 30 | fn.call( elems, value ); 31 | fn = null; 32 | 33 | // ...except when executing function values 34 | } else { 35 | bulk = fn; 36 | fn = function( elem, key, value ) { 37 | return bulk.call( jQuery( elem ), value ); 38 | }; 39 | } 40 | } 41 | 42 | if ( fn ) { 43 | for ( ; i < len; i++ ) { 44 | fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); 45 | } 46 | } 47 | } 48 | 49 | return chainable ? 50 | elems : 51 | 52 | // Gets 53 | bulk ? 54 | fn.call( elems ) : 55 | len ? fn( elems[0], key ) : emptyGet; 56 | }; 57 | 58 | return access; 59 | 60 | }); 61 | -------------------------------------------------------------------------------- /examples/customer-facing/customer-facing.css: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing: border-box; } 3 | 4 | img { 5 | max-width: 100%; } 6 | 7 | .banner { 8 | background: #2a99d1; 9 | color: #fff; 10 | padding: 20px 0 0; 11 | } 12 | .banner .container { 13 | height: 120px; 14 | } 15 | .banner h1 { 16 | margin: 35px 0 5px; 17 | } 18 | .banner p.lead { 19 | font-size: 16px; 20 | margin-bottom: 0px; 21 | } 22 | 23 | .content { 24 | clear: both; 25 | padding-top: 15px; 26 | } 27 | 28 | .content .nav-pills { 29 | margin-top: 5px; 30 | } 31 | 32 | .sidebar-container { 33 | border-radius: 30px; } 34 | .sidebar-container .sidebar-navs { 35 | margin-top: 20px; } 36 | .sidebar-container .img-thumbnail { 37 | width: 100%; 38 | height: 100%; 39 | margin-left: -10px; } 40 | 41 | .main-container .content-wrapper { 42 | padding: 1px 20px 18px 20px; 43 | border-bottom: 1px solid #d7d7d7; 44 | margin-top: 25px; } 45 | .main-container .content-wrapper .main-content { 46 | margin-top: 10px; } 47 | 48 | 49 | .knob-title { 50 | text-align: center; 51 | } 52 | 53 | 54 | 55 | .navbar-collapse { 56 | background: #2a99d1; 57 | padding-left: 40px; 58 | padding-right: 50px; } 59 | 60 | .navbar-nav > li > a, 61 | .navbar a.navbar-brand { 62 | color: #fbfbfb; } 63 | 64 | 65 | 66 | .tabs-left > .nav-pills > li > a {} 67 | 68 | .tabs-left > .nav-pills .active > a, 69 | .tabs-left > .nav-pills .active > a:hover, 70 | .tabs-left > .nav-pills .active > a:focus { 71 | background-color: #2a99d1; 72 | border-color: #2a99d1; } 73 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/ajax/script.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../ajax" 4 | ], function( jQuery ) { 5 | 6 | // Install script dataType 7 | jQuery.ajaxSetup({ 8 | accepts: { 9 | script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" 10 | }, 11 | contents: { 12 | script: /(?:java|ecma)script/ 13 | }, 14 | converters: { 15 | "text script": function( text ) { 16 | jQuery.globalEval( text ); 17 | return text; 18 | } 19 | } 20 | }); 21 | 22 | // Handle cache's special case and crossDomain 23 | jQuery.ajaxPrefilter( "script", function( s ) { 24 | if ( s.cache === undefined ) { 25 | s.cache = false; 26 | } 27 | if ( s.crossDomain ) { 28 | s.type = "GET"; 29 | } 30 | }); 31 | 32 | // Bind script tag hack transport 33 | jQuery.ajaxTransport( "script", function( s ) { 34 | // This transport only deals with cross domain requests 35 | if ( s.crossDomain ) { 36 | var script, callback; 37 | return { 38 | send: function( _, complete ) { 39 | script = jQuery(" 66 | 67 | 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /assets/css/keen-static.css: -------------------------------------------------------------------------------- 1 | a, a:focus, a:hover, a:active { 2 | color: #00afd7; 3 | } 4 | 5 | h1, h2, h3 { 6 | font-family: "Raleway", "Helvetica Neue", Helvetica, Arial, sans-serif; 7 | margin: 12px 0; 8 | } 9 | h1 { 10 | font-size: 32px; 11 | font-weight: 100; 12 | letter-spacing: .02em; 13 | line-height: 48px; 14 | margin: 12px 0; 15 | } 16 | h2 { 17 | color: #2a333c; 18 | font-weight: 200; 19 | font-size: 21px; 20 | } 21 | h3 { 22 | color: rgb(84, 102, 120); 23 | font-size: 21px; 24 | font-weight: 500; 25 | letter-spacing: -0.28px; 26 | line-height: 29.39px; 27 | } 28 | 29 | .btn { 30 | background: transparent; 31 | border: 1px solid white; 32 | } 33 | 34 | .keen-logo { 35 | height: 38px; 36 | margin: 0 15px 0 0; 37 | width: 150px; 38 | } 39 | 40 | .navbar-toggle { 41 | background-color: rgba(255,255,255,.25); 42 | } 43 | .navbar-toggle .icon-bar { 44 | background: #fff; 45 | } 46 | 47 | 48 | .navbar-nav { 49 | margin: 5px 0 0; 50 | } 51 | .navbar-nav > li > a { 52 | font-size: 15px; 53 | font-weight: 200; 54 | letter-spacing: 0.03em; 55 | padding-top: 19px; 56 | text-shadow: 0 0 2px rgba(0,0,0,.1); 57 | } 58 | .navbar-nav > li > a:focus, 59 | .navbar-nav > li > a:hover { 60 | background: transparent none; 61 | } 62 | 63 | .navbar-nav > li > a.navbar-btn { 64 | background-color: rgba(255,255,255,.25); 65 | border: medium none; 66 | padding: 10px 15px; 67 | } 68 | .navbar-nav > li > a.navbar-btn:focus, 69 | .navbar-nav > li > a.navbar-btn:hover { 70 | background-color: rgba(255,255,255,.35); 71 | } 72 | .navbar-collapse { 73 | box-shadow: none; 74 | } 75 | 76 | .masthead { 77 | background-color: #00afd7; 78 | background-image: url("../img/bg-bars.png"); 79 | background-position: 0 -290px; 80 | background-repeat: repeat-x; 81 | color: #fff; 82 | margin: 0 0 24px; 83 | padding: 20px 0; 84 | } 85 | .masthead h1 { 86 | margin: 0; 87 | } 88 | .masthead small, 89 | .masthead a, 90 | .masthead a:focus, 91 | .masthead a:hover, 92 | .masthead a:active { 93 | color: #fff; 94 | } 95 | .masthead p { 96 | color: #b3e7f3; 97 | font-weight: 100; 98 | letter-spacing: .05em; 99 | } 100 | 101 | 102 | 103 | .hero { 104 | background-position: 50% 100%; 105 | min-height: 450px; 106 | text-align: center; 107 | } 108 | .hero h1 { 109 | font-size: 48px; 110 | margin: 120px 0 0; 111 | } 112 | .hero .lead { 113 | margin-bottom: 32px; 114 | } 115 | .hero a.hero-btn { 116 | border: 2px solid #fff; 117 | display: block; 118 | font-family: "Raleway", "Helvetica Neue", Helvetica, Arial, sans-serif; 119 | font-size: 24px; 120 | font-weight: 200; 121 | margin: 0 auto 12px; 122 | padding: 12px 0 6px; 123 | width: 320px; 124 | } 125 | .hero a.hero-btn:focus, 126 | .hero a.hero-btn:hover { 127 | border-color: transparent; 128 | background-color: #fff; 129 | color: #00afd7; 130 | } 131 | 132 | 133 | .sample-item { 134 | margin-bottom: 24px; 135 | } 136 | 137 | .signup { 138 | float: left; 139 | display: inline-block; 140 | vertical-align: middle; 141 | margin-top: -6px; 142 | margin-right: 10px; 143 | } 144 | 145 | .love { 146 | border-top: 1px solid #d7d7d7; 147 | color: #546678; 148 | margin: 24px 0 0; 149 | padding: 15px 0; 150 | text-align: center; 151 | } 152 | 153 | .love p { 154 | margin-bottom: 0; 155 | } 156 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/scaffolding.less: -------------------------------------------------------------------------------- 1 | // 2 | // Scaffolding 3 | // -------------------------------------------------- 4 | 5 | 6 | // Reset the box-sizing 7 | // 8 | // Heads up! This reset may cause conflicts with some third-party widgets. 9 | // For recommendations on resolving such conflicts, see 10 | // http://getbootstrap.com/getting-started/#third-box-sizing 11 | * { 12 | .box-sizing(border-box); 13 | } 14 | *:before, 15 | *:after { 16 | .box-sizing(border-box); 17 | } 18 | 19 | 20 | // Body reset 21 | 22 | html { 23 | font-size: 10px; 24 | -webkit-tap-highlight-color: rgba(0,0,0,0); 25 | } 26 | 27 | body { 28 | font-family: @font-family-base; 29 | font-size: @font-size-base; 30 | line-height: @line-height-base; 31 | color: @text-color; 32 | background-color: @body-bg; 33 | } 34 | 35 | // Reset fonts for relevant elements 36 | input, 37 | button, 38 | select, 39 | textarea { 40 | font-family: inherit; 41 | font-size: inherit; 42 | line-height: inherit; 43 | } 44 | 45 | 46 | // Links 47 | 48 | a { 49 | color: @link-color; 50 | text-decoration: none; 51 | 52 | &:hover, 53 | &:focus { 54 | color: @link-hover-color; 55 | text-decoration: underline; 56 | } 57 | 58 | &:focus { 59 | .tab-focus(); 60 | } 61 | } 62 | 63 | 64 | // Figures 65 | // 66 | // We reset this here because previously Normalize had no `figure` margins. This 67 | // ensures we don't break anyone's use of the element. 68 | 69 | figure { 70 | margin: 0; 71 | } 72 | 73 | 74 | // Images 75 | 76 | img { 77 | vertical-align: middle; 78 | } 79 | 80 | // Responsive images (ensure images don't scale beyond their parents) 81 | .img-responsive { 82 | .img-responsive(); 83 | } 84 | 85 | // Rounded corners 86 | .img-rounded { 87 | border-radius: @border-radius-large; 88 | } 89 | 90 | // Image thumbnails 91 | // 92 | // Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`. 93 | .img-thumbnail { 94 | padding: @thumbnail-padding; 95 | line-height: @line-height-base; 96 | background-color: @thumbnail-bg; 97 | border: 1px solid @thumbnail-border; 98 | border-radius: @thumbnail-border-radius; 99 | .transition(all .2s ease-in-out); 100 | 101 | // Keep them at most 100% wide 102 | .img-responsive(inline-block); 103 | } 104 | 105 | // Perfect circle 106 | .img-circle { 107 | border-radius: 50%; // set radius in percents 108 | } 109 | 110 | 111 | // Horizontal rules 112 | 113 | hr { 114 | margin-top: @line-height-computed; 115 | margin-bottom: @line-height-computed; 116 | border: 0; 117 | border-top: 1px solid @hr-border; 118 | } 119 | 120 | 121 | // Only display content to screen readers 122 | // 123 | // See: http://a11yproject.com/posts/how-to-hide-content/ 124 | 125 | .sr-only { 126 | position: absolute; 127 | width: 1px; 128 | height: 1px; 129 | margin: -1px; 130 | padding: 0; 131 | overflow: hidden; 132 | clip: rect(0,0,0,0); 133 | border: 0; 134 | } 135 | 136 | // Use in conjunction with .sr-only to only display content when it's focused. 137 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 138 | // Credit: HTML5 Boilerplate 139 | 140 | .sr-only-focusable { 141 | &:active, 142 | &:focus { 143 | position: static; 144 | width: auto; 145 | height: auto; 146 | margin: 0; 147 | overflow: visible; 148 | clip: auto; 149 | } 150 | } 151 | -------------------------------------------------------------------------------- /examples/connected-devices/connected-devices.css: -------------------------------------------------------------------------------- 1 | 2 | #mapwrap .chart-title { border: medium none; } 3 | #mapwrap .chart-stage { height: 350px; } 4 | #map { 5 | bottom: 5px; 6 | left: 5px; 7 | position: absolute; 8 | top: 0px; 9 | right: 5px; 10 | } 11 | 12 | .chart-wrapper { min-height: 360px; } 13 | 14 | .chart-stage .knob-title { 15 | border-bottom: medium none; 16 | font-size: 18px; 17 | text-align: center; 18 | } 19 | 20 | 21 | /* custom inclusion of right, left and below tabs */ 22 | 23 | 24 | .nav-tabs { 25 | padding-top: 10px; 26 | padding-left: 10px; } 27 | .tab-content { 28 | margin-left: -45px; } 29 | 30 | .tabs-below > .nav-tabs, 31 | .tabs-right > .nav-tabs, 32 | .tabs-left > .nav-tabs { 33 | border-bottom: 0; 34 | } 35 | 36 | .tab-content > .tab-pane, 37 | .pill-content > .pill-pane { 38 | display: none; 39 | } 40 | 41 | .tab-content > .active, 42 | .pill-content > .active { 43 | display: block; 44 | } 45 | 46 | .tabs-below > .nav-tabs { 47 | border-top: 1px solid #ddd; 48 | } 49 | 50 | .tabs-below > .nav-tabs > li { 51 | margin-top: -1px; 52 | margin-bottom: 0; 53 | } 54 | 55 | .tabs-below > .nav-tabs > li > a { 56 | -webkit-border-radius: 0 0 4px 4px; 57 | -moz-border-radius: 0 0 4px 4px; 58 | border-radius: 0 0 4px 4px; 59 | } 60 | 61 | .tabs-below > .nav-tabs > li > a:hover, 62 | .tabs-below > .nav-tabs > li > a:focus { 63 | border-top-color: #ddd; 64 | border-bottom-color: transparent; 65 | } 66 | 67 | .tabs-below > .nav-tabs > .active > a, 68 | .tabs-below > .nav-tabs > .active > a:hover, 69 | .tabs-below > .nav-tabs > .active > a:focus { 70 | border-color: transparent #ddd #ddd #ddd; 71 | } 72 | 73 | .tabs-left > .nav-tabs > li, 74 | .tabs-right > .nav-tabs > li { 75 | float: none; 76 | } 77 | 78 | .tabs-left > .nav-tabs > li > a, 79 | .tabs-right > .nav-tabs > li > a { 80 | min-width: 74px; 81 | margin-right: 0; 82 | margin-bottom: 3px; 83 | } 84 | 85 | .tabs-left > .nav-tabs { 86 | float: left; 87 | margin-right: 19px; 88 | border-right: 1px solid #ddd; 89 | } 90 | 91 | .tabs-left > .nav-tabs > li > a { 92 | margin-right: -1px; 93 | -webkit-border-radius: 4px 0 0 4px; 94 | -moz-border-radius: 4px 0 0 4px; 95 | border-radius: 4px 0 0 4px; 96 | } 97 | 98 | .tabs-left > .nav-tabs > li > a:hover, 99 | .tabs-left > .nav-tabs > li > a:focus { 100 | border-color: #eeeeee #dddddd #eeeeee #eeeeee; 101 | } 102 | 103 | .tabs-left > .nav-tabs .active > a, 104 | .tabs-left > .nav-tabs .active > a:hover, 105 | .tabs-left > .nav-tabs .active > a:focus { 106 | border-color: #ddd transparent #ddd #ddd; 107 | *border-right-color: #ffffff; 108 | } 109 | 110 | .tabs-right > .nav-tabs { 111 | float: right; 112 | margin-left: 19px; 113 | border-left: 1px solid #ddd; 114 | } 115 | 116 | .tabs-right > .nav-tabs > li > a { 117 | margin-left: -1px; 118 | -webkit-border-radius: 0 4px 4px 0; 119 | -moz-border-radius: 0 4px 4px 0; 120 | border-radius: 0 4px 4px 0; 121 | } 122 | 123 | .tabs-right > .nav-tabs > li > a:hover, 124 | .tabs-right > .nav-tabs > li > a:focus { 125 | border-color: #eeeeee #eeeeee #eeeeee #dddddd; 126 | } 127 | 128 | .tabs-right > .nav-tabs .active > a, 129 | .tabs-right > .nav-tabs .active > a:hover, 130 | .tabs-right > .nav-tabs .active > a:focus { 131 | border-color: #ddd #ddd #ddd transparent; 132 | *border-left-color: #ffffff; 133 | } 134 | 135 | 136 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/js/button.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * Bootstrap: button.js v3.2.0 3 | * http://getbootstrap.com/javascript/#buttons 4 | * ======================================================================== 5 | * Copyright 2011-2014 Twitter, Inc. 6 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | * ======================================================================== */ 8 | 9 | 10 | +function ($) { 11 | 'use strict'; 12 | 13 | // BUTTON PUBLIC CLASS DEFINITION 14 | // ============================== 15 | 16 | var Button = function (element, options) { 17 | this.$element = $(element) 18 | this.options = $.extend({}, Button.DEFAULTS, options) 19 | this.isLoading = false 20 | } 21 | 22 | Button.VERSION = '3.2.0' 23 | 24 | Button.DEFAULTS = { 25 | loadingText: 'loading...' 26 | } 27 | 28 | Button.prototype.setState = function (state) { 29 | var d = 'disabled' 30 | var $el = this.$element 31 | var val = $el.is('input') ? 'val' : 'html' 32 | var data = $el.data() 33 | 34 | state = state + 'Text' 35 | 36 | if (data.resetText == null) $el.data('resetText', $el[val]()) 37 | 38 | $el[val](data[state] == null ? this.options[state] : data[state]) 39 | 40 | // push to event loop to allow forms to submit 41 | setTimeout($.proxy(function () { 42 | if (state == 'loadingText') { 43 | this.isLoading = true 44 | $el.addClass(d).attr(d, d) 45 | } else if (this.isLoading) { 46 | this.isLoading = false 47 | $el.removeClass(d).removeAttr(d) 48 | } 49 | }, this), 0) 50 | } 51 | 52 | Button.prototype.toggle = function () { 53 | var changed = true 54 | var $parent = this.$element.closest('[data-toggle="buttons"]') 55 | 56 | if ($parent.length) { 57 | var $input = this.$element.find('input') 58 | if ($input.prop('type') == 'radio') { 59 | if ($input.prop('checked') && this.$element.hasClass('active')) changed = false 60 | else $parent.find('.active').removeClass('active') 61 | } 62 | if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') 63 | } 64 | 65 | if (changed) this.$element.toggleClass('active') 66 | } 67 | 68 | 69 | // BUTTON PLUGIN DEFINITION 70 | // ======================== 71 | 72 | function Plugin(option) { 73 | return this.each(function () { 74 | var $this = $(this) 75 | var data = $this.data('bs.button') 76 | var options = typeof option == 'object' && option 77 | 78 | if (!data) $this.data('bs.button', (data = new Button(this, options))) 79 | 80 | if (option == 'toggle') data.toggle() 81 | else if (option) data.setState(option) 82 | }) 83 | } 84 | 85 | var old = $.fn.button 86 | 87 | $.fn.button = Plugin 88 | $.fn.button.Constructor = Button 89 | 90 | 91 | // BUTTON NO CONFLICT 92 | // ================== 93 | 94 | $.fn.button.noConflict = function () { 95 | $.fn.button = old 96 | return this 97 | } 98 | 99 | 100 | // BUTTON DATA-API 101 | // =============== 102 | 103 | $(document).on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { 104 | var $btn = $(e.target) 105 | if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') 106 | Plugin.call($btn, 'toggle') 107 | e.preventDefault() 108 | }) 109 | 110 | }(jQuery); 111 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/css/support.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../var/support" 4 | ], function( jQuery, support ) { 5 | 6 | (function() { 7 | var pixelPositionVal, boxSizingReliableVal, 8 | docElem = document.documentElement, 9 | container = document.createElement( "div" ), 10 | div = document.createElement( "div" ); 11 | 12 | if ( !div.style ) { 13 | return; 14 | } 15 | 16 | // Support: IE9-11+ 17 | // Style of cloned element affects source element cloned (#8908) 18 | div.style.backgroundClip = "content-box"; 19 | div.cloneNode( true ).style.backgroundClip = ""; 20 | support.clearCloneStyle = div.style.backgroundClip === "content-box"; 21 | 22 | container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" + 23 | "position:absolute"; 24 | container.appendChild( div ); 25 | 26 | // Executing both pixelPosition & boxSizingReliable tests require only one layout 27 | // so they're executed at the same time to save the second computation. 28 | function computePixelPositionAndBoxSizingReliable() { 29 | div.style.cssText = 30 | // Support: Firefox<29, Android 2.3 31 | // Vendor-prefix box-sizing 32 | "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" + 33 | "box-sizing:border-box;display:block;margin-top:1%;top:1%;" + 34 | "border:1px;padding:1px;width:4px;position:absolute"; 35 | div.innerHTML = ""; 36 | docElem.appendChild( container ); 37 | 38 | var divStyle = window.getComputedStyle( div, null ); 39 | pixelPositionVal = divStyle.top !== "1%"; 40 | boxSizingReliableVal = divStyle.width === "4px"; 41 | 42 | docElem.removeChild( container ); 43 | } 44 | 45 | // Support: node.js jsdom 46 | // Don't assume that getComputedStyle is a property of the global object 47 | if ( window.getComputedStyle ) { 48 | jQuery.extend( support, { 49 | pixelPosition: function() { 50 | 51 | // This test is executed only once but we still do memoizing 52 | // since we can use the boxSizingReliable pre-computing. 53 | // No need to check if the test was already performed, though. 54 | computePixelPositionAndBoxSizingReliable(); 55 | return pixelPositionVal; 56 | }, 57 | boxSizingReliable: function() { 58 | if ( boxSizingReliableVal == null ) { 59 | computePixelPositionAndBoxSizingReliable(); 60 | } 61 | return boxSizingReliableVal; 62 | }, 63 | reliableMarginRight: function() { 64 | 65 | // Support: Android 2.3 66 | // Check if div with explicit width and no margin-right incorrectly 67 | // gets computed margin-right based on width of container. (#3333) 68 | // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right 69 | // This support function is only executed once so no memoizing is needed. 70 | var ret, 71 | marginDiv = div.appendChild( document.createElement( "div" ) ); 72 | 73 | // Reset CSS: box-sizing; display; margin; border; padding 74 | marginDiv.style.cssText = div.style.cssText = 75 | // Support: Firefox<29, Android 2.3 76 | // Vendor-prefix box-sizing 77 | "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + 78 | "box-sizing:content-box;display:block;margin:0;border:0;padding:0"; 79 | marginDiv.style.marginRight = marginDiv.style.width = "0"; 80 | div.style.width = "1px"; 81 | docElem.appendChild( container ); 82 | 83 | ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight ); 84 | 85 | docElem.removeChild( container ); 86 | div.removeChild( marginDiv ); 87 | 88 | return ret; 89 | } 90 | }); 91 | } 92 | })(); 93 | 94 | return support; 95 | 96 | }); 97 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/effects/Tween.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../css" 4 | ], function( jQuery ) { 5 | 6 | function Tween( elem, options, prop, end, easing ) { 7 | return new Tween.prototype.init( elem, options, prop, end, easing ); 8 | } 9 | jQuery.Tween = Tween; 10 | 11 | Tween.prototype = { 12 | constructor: Tween, 13 | init: function( elem, options, prop, end, easing, unit ) { 14 | this.elem = elem; 15 | this.prop = prop; 16 | this.easing = easing || "swing"; 17 | this.options = options; 18 | this.start = this.now = this.cur(); 19 | this.end = end; 20 | this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); 21 | }, 22 | cur: function() { 23 | var hooks = Tween.propHooks[ this.prop ]; 24 | 25 | return hooks && hooks.get ? 26 | hooks.get( this ) : 27 | Tween.propHooks._default.get( this ); 28 | }, 29 | run: function( percent ) { 30 | var eased, 31 | hooks = Tween.propHooks[ this.prop ]; 32 | 33 | if ( this.options.duration ) { 34 | this.pos = eased = jQuery.easing[ this.easing ]( 35 | percent, this.options.duration * percent, 0, 1, this.options.duration 36 | ); 37 | } else { 38 | this.pos = eased = percent; 39 | } 40 | this.now = ( this.end - this.start ) * eased + this.start; 41 | 42 | if ( this.options.step ) { 43 | this.options.step.call( this.elem, this.now, this ); 44 | } 45 | 46 | if ( hooks && hooks.set ) { 47 | hooks.set( this ); 48 | } else { 49 | Tween.propHooks._default.set( this ); 50 | } 51 | return this; 52 | } 53 | }; 54 | 55 | Tween.prototype.init.prototype = Tween.prototype; 56 | 57 | Tween.propHooks = { 58 | _default: { 59 | get: function( tween ) { 60 | var result; 61 | 62 | if ( tween.elem[ tween.prop ] != null && 63 | (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) { 64 | return tween.elem[ tween.prop ]; 65 | } 66 | 67 | // Passing an empty string as a 3rd parameter to .css will automatically 68 | // attempt a parseFloat and fallback to a string if the parse fails. 69 | // Simple values such as "10px" are parsed to Float; 70 | // complex values such as "rotate(1rad)" are returned as-is. 71 | result = jQuery.css( tween.elem, tween.prop, "" ); 72 | // Empty strings, null, undefined and "auto" are converted to 0. 73 | return !result || result === "auto" ? 0 : result; 74 | }, 75 | set: function( tween ) { 76 | // Use step hook for back compat. 77 | // Use cssHook if its there. 78 | // Use .style if available and use plain properties where available. 79 | if ( jQuery.fx.step[ tween.prop ] ) { 80 | jQuery.fx.step[ tween.prop ]( tween ); 81 | } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) { 82 | jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); 83 | } else { 84 | tween.elem[ tween.prop ] = tween.now; 85 | } 86 | } 87 | } 88 | }; 89 | 90 | // Support: IE9 91 | // Panic based approach to setting things on disconnected nodes 92 | Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { 93 | set: function( tween ) { 94 | if ( tween.elem.nodeType && tween.elem.parentNode ) { 95 | tween.elem[ tween.prop ] = tween.now; 96 | } 97 | } 98 | }; 99 | 100 | jQuery.easing = { 101 | linear: function( p ) { 102 | return p; 103 | }, 104 | swing: function( p ) { 105 | return 0.5 - Math.cos( p * Math.PI ) / 2; 106 | } 107 | }; 108 | 109 | jQuery.fx = Tween.prototype.init; 110 | 111 | // Back Compat <1.8 extension point 112 | jQuery.fx.step = {}; 113 | 114 | }); 115 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/js/tab.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * Bootstrap: tab.js v3.2.0 3 | * http://getbootstrap.com/javascript/#tabs 4 | * ======================================================================== 5 | * Copyright 2011-2014 Twitter, Inc. 6 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | * ======================================================================== */ 8 | 9 | 10 | +function ($) { 11 | 'use strict'; 12 | 13 | // TAB CLASS DEFINITION 14 | // ==================== 15 | 16 | var Tab = function (element) { 17 | this.element = $(element) 18 | } 19 | 20 | Tab.VERSION = '3.2.0' 21 | 22 | Tab.prototype.show = function () { 23 | var $this = this.element 24 | var $ul = $this.closest('ul:not(.dropdown-menu)') 25 | var selector = $this.data('target') 26 | 27 | if (!selector) { 28 | selector = $this.attr('href') 29 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 30 | } 31 | 32 | if ($this.parent('li').hasClass('active')) return 33 | 34 | var previous = $ul.find('.active:last a')[0] 35 | var e = $.Event('show.bs.tab', { 36 | relatedTarget: previous 37 | }) 38 | 39 | $this.trigger(e) 40 | 41 | if (e.isDefaultPrevented()) return 42 | 43 | var $target = $(selector) 44 | 45 | this.activate($this.closest('li'), $ul) 46 | this.activate($target, $target.parent(), function () { 47 | $this.trigger({ 48 | type: 'shown.bs.tab', 49 | relatedTarget: previous 50 | }) 51 | }) 52 | } 53 | 54 | Tab.prototype.activate = function (element, container, callback) { 55 | var $active = container.find('> .active') 56 | var transition = callback 57 | && $.support.transition 58 | && $active.hasClass('fade') 59 | 60 | function next() { 61 | $active 62 | .removeClass('active') 63 | .find('> .dropdown-menu > .active') 64 | .removeClass('active') 65 | 66 | element.addClass('active') 67 | 68 | if (transition) { 69 | element[0].offsetWidth // reflow for transition 70 | element.addClass('in') 71 | } else { 72 | element.removeClass('fade') 73 | } 74 | 75 | if (element.parent('.dropdown-menu')) { 76 | element.closest('li.dropdown').addClass('active') 77 | } 78 | 79 | callback && callback() 80 | } 81 | 82 | transition ? 83 | $active 84 | .one('bsTransitionEnd', next) 85 | .emulateTransitionEnd(150) : 86 | next() 87 | 88 | $active.removeClass('in') 89 | } 90 | 91 | 92 | // TAB PLUGIN DEFINITION 93 | // ===================== 94 | 95 | function Plugin(option) { 96 | return this.each(function () { 97 | var $this = $(this) 98 | var data = $this.data('bs.tab') 99 | 100 | if (!data) $this.data('bs.tab', (data = new Tab(this))) 101 | if (typeof option == 'string') data[option]() 102 | }) 103 | } 104 | 105 | var old = $.fn.tab 106 | 107 | $.fn.tab = Plugin 108 | $.fn.tab.Constructor = Tab 109 | 110 | 111 | // TAB NO CONFLICT 112 | // =============== 113 | 114 | $.fn.tab.noConflict = function () { 115 | $.fn.tab = old 116 | return this 117 | } 118 | 119 | 120 | // TAB DATA-API 121 | // ============ 122 | 123 | $(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) { 124 | e.preventDefault() 125 | Plugin.call($(this), 'show') 126 | }) 127 | 128 | }(jQuery); 129 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/mixins/grid.less: -------------------------------------------------------------------------------- 1 | // Grid system 2 | // 3 | // Generate semantic grid columns with these mixins. 4 | 5 | // Centered container element 6 | .container-fixed(@gutter: @grid-gutter-width) { 7 | margin-right: auto; 8 | margin-left: auto; 9 | padding-left: (@gutter / 2); 10 | padding-right: (@gutter / 2); 11 | &:extend(.clearfix all); 12 | } 13 | 14 | // Creates a wrapper for a series of columns 15 | .make-row(@gutter: @grid-gutter-width) { 16 | margin-left: (@gutter / -2); 17 | margin-right: (@gutter / -2); 18 | &:extend(.clearfix all); 19 | } 20 | 21 | // Generate the extra small columns 22 | .make-xs-column(@columns; @gutter: @grid-gutter-width) { 23 | position: relative; 24 | float: left; 25 | width: percentage((@columns / @grid-columns)); 26 | min-height: 1px; 27 | padding-left: (@gutter / 2); 28 | padding-right: (@gutter / 2); 29 | } 30 | .make-xs-column-offset(@columns) { 31 | margin-left: percentage((@columns / @grid-columns)); 32 | } 33 | .make-xs-column-push(@columns) { 34 | left: percentage((@columns / @grid-columns)); 35 | } 36 | .make-xs-column-pull(@columns) { 37 | right: percentage((@columns / @grid-columns)); 38 | } 39 | 40 | // Generate the small columns 41 | .make-sm-column(@columns; @gutter: @grid-gutter-width) { 42 | position: relative; 43 | min-height: 1px; 44 | padding-left: (@gutter / 2); 45 | padding-right: (@gutter / 2); 46 | 47 | @media (min-width: @screen-sm-min) { 48 | float: left; 49 | width: percentage((@columns / @grid-columns)); 50 | } 51 | } 52 | .make-sm-column-offset(@columns) { 53 | @media (min-width: @screen-sm-min) { 54 | margin-left: percentage((@columns / @grid-columns)); 55 | } 56 | } 57 | .make-sm-column-push(@columns) { 58 | @media (min-width: @screen-sm-min) { 59 | left: percentage((@columns / @grid-columns)); 60 | } 61 | } 62 | .make-sm-column-pull(@columns) { 63 | @media (min-width: @screen-sm-min) { 64 | right: percentage((@columns / @grid-columns)); 65 | } 66 | } 67 | 68 | // Generate the medium columns 69 | .make-md-column(@columns; @gutter: @grid-gutter-width) { 70 | position: relative; 71 | min-height: 1px; 72 | padding-left: (@gutter / 2); 73 | padding-right: (@gutter / 2); 74 | 75 | @media (min-width: @screen-md-min) { 76 | float: left; 77 | width: percentage((@columns / @grid-columns)); 78 | } 79 | } 80 | .make-md-column-offset(@columns) { 81 | @media (min-width: @screen-md-min) { 82 | margin-left: percentage((@columns / @grid-columns)); 83 | } 84 | } 85 | .make-md-column-push(@columns) { 86 | @media (min-width: @screen-md-min) { 87 | left: percentage((@columns / @grid-columns)); 88 | } 89 | } 90 | .make-md-column-pull(@columns) { 91 | @media (min-width: @screen-md-min) { 92 | right: percentage((@columns / @grid-columns)); 93 | } 94 | } 95 | 96 | // Generate the large columns 97 | .make-lg-column(@columns; @gutter: @grid-gutter-width) { 98 | position: relative; 99 | min-height: 1px; 100 | padding-left: (@gutter / 2); 101 | padding-right: (@gutter / 2); 102 | 103 | @media (min-width: @screen-lg-min) { 104 | float: left; 105 | width: percentage((@columns / @grid-columns)); 106 | } 107 | } 108 | .make-lg-column-offset(@columns) { 109 | @media (min-width: @screen-lg-min) { 110 | margin-left: percentage((@columns / @grid-columns)); 111 | } 112 | } 113 | .make-lg-column-push(@columns) { 114 | @media (min-width: @screen-lg-min) { 115 | left: percentage((@columns / @grid-columns)); 116 | } 117 | } 118 | .make-lg-column-pull(@columns) { 119 | @media (min-width: @screen-lg-min) { 120 | right: percentage((@columns / @grid-columns)); 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/serialize.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./core", 3 | "./manipulation/var/rcheckableType", 4 | "./core/init", 5 | "./traversing", // filter 6 | "./attributes/prop" 7 | ], function( jQuery, rcheckableType ) { 8 | 9 | var r20 = /%20/g, 10 | rbracket = /\[\]$/, 11 | rCRLF = /\r?\n/g, 12 | rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, 13 | rsubmittable = /^(?:input|select|textarea|keygen)/i; 14 | 15 | function buildParams( prefix, obj, traditional, add ) { 16 | var name; 17 | 18 | if ( jQuery.isArray( obj ) ) { 19 | // Serialize array item. 20 | jQuery.each( obj, function( i, v ) { 21 | if ( traditional || rbracket.test( prefix ) ) { 22 | // Treat each array item as a scalar. 23 | add( prefix, v ); 24 | 25 | } else { 26 | // Item is non-scalar (array or object), encode its numeric index. 27 | buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add ); 28 | } 29 | }); 30 | 31 | } else if ( !traditional && jQuery.type( obj ) === "object" ) { 32 | // Serialize object item. 33 | for ( name in obj ) { 34 | buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); 35 | } 36 | 37 | } else { 38 | // Serialize scalar item. 39 | add( prefix, obj ); 40 | } 41 | } 42 | 43 | // Serialize an array of form elements or a set of 44 | // key/values into a query string 45 | jQuery.param = function( a, traditional ) { 46 | var prefix, 47 | s = [], 48 | add = function( key, value ) { 49 | // If value is a function, invoke it and return its value 50 | value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value ); 51 | s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value ); 52 | }; 53 | 54 | // Set traditional to true for jQuery <= 1.3.2 behavior. 55 | if ( traditional === undefined ) { 56 | traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; 57 | } 58 | 59 | // If an array was passed in, assume that it is an array of form elements. 60 | if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { 61 | // Serialize the form elements 62 | jQuery.each( a, function() { 63 | add( this.name, this.value ); 64 | }); 65 | 66 | } else { 67 | // If traditional, encode the "old" way (the way 1.3.2 or older 68 | // did it), otherwise encode params recursively. 69 | for ( prefix in a ) { 70 | buildParams( prefix, a[ prefix ], traditional, add ); 71 | } 72 | } 73 | 74 | // Return the resulting serialization 75 | return s.join( "&" ).replace( r20, "+" ); 76 | }; 77 | 78 | jQuery.fn.extend({ 79 | serialize: function() { 80 | return jQuery.param( this.serializeArray() ); 81 | }, 82 | serializeArray: function() { 83 | return this.map(function() { 84 | // Can add propHook for "elements" to filter or add form elements 85 | var elements = jQuery.prop( this, "elements" ); 86 | return elements ? jQuery.makeArray( elements ) : this; 87 | }) 88 | .filter(function() { 89 | var type = this.type; 90 | 91 | // Use .is( ":disabled" ) so that fieldset[disabled] works 92 | return this.name && !jQuery( this ).is( ":disabled" ) && 93 | rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && 94 | ( this.checked || !rcheckableType.test( type ) ); 95 | }) 96 | .map(function( i, elem ) { 97 | var val = jQuery( this ).val(); 98 | 99 | return val == null ? 100 | null : 101 | jQuery.isArray( val ) ? 102 | jQuery.map( val, function( val ) { 103 | return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; 104 | }) : 105 | { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; 106 | }).get(); 107 | } 108 | }); 109 | 110 | return jQuery; 111 | }); 112 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/less/list-group.less: -------------------------------------------------------------------------------- 1 | // 2 | // List groups 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | // 8 | // Easily usable on
    ,
      , or
      . 9 | 10 | .list-group { 11 | // No need to set list-style: none; since .list-group-item is block level 12 | margin-bottom: 20px; 13 | padding-left: 0; // reset padding because ul and ol 14 | } 15 | 16 | 17 | // Individual list items 18 | // 19 | // Use on `li`s or `div`s within the `.list-group` parent. 20 | 21 | .list-group-item { 22 | position: relative; 23 | display: block; 24 | padding: 10px 15px; 25 | // Place the border on the list items and negative margin up for better styling 26 | margin-bottom: -1px; 27 | background-color: @list-group-bg; 28 | border: 1px solid @list-group-border; 29 | 30 | // Round the first and last items 31 | &:first-child { 32 | .border-top-radius(@list-group-border-radius); 33 | } 34 | &:last-child { 35 | margin-bottom: 0; 36 | .border-bottom-radius(@list-group-border-radius); 37 | } 38 | 39 | // Align badges within list items 40 | > .badge { 41 | float: right; 42 | } 43 | > .badge + .badge { 44 | margin-right: 5px; 45 | } 46 | } 47 | 48 | 49 | // Linked list items 50 | // 51 | // Use anchor elements instead of `li`s or `div`s to create linked list items. 52 | // Includes an extra `.active` modifier class for showing selected items. 53 | 54 | a.list-group-item { 55 | color: @list-group-link-color; 56 | 57 | .list-group-item-heading { 58 | color: @list-group-link-heading-color; 59 | } 60 | 61 | // Hover state 62 | &:hover, 63 | &:focus { 64 | text-decoration: none; 65 | color: @list-group-link-hover-color; 66 | background-color: @list-group-hover-bg; 67 | } 68 | } 69 | 70 | .list-group-item { 71 | // Disabled state 72 | &.disabled, 73 | &.disabled:hover, 74 | &.disabled:focus { 75 | background-color: @list-group-disabled-bg; 76 | color: @list-group-disabled-color; 77 | 78 | // Force color to inherit for custom content 79 | .list-group-item-heading { 80 | color: inherit; 81 | } 82 | .list-group-item-text { 83 | color: @list-group-disabled-text-color; 84 | } 85 | } 86 | 87 | // Active class on item itself, not parent 88 | &.active, 89 | &.active:hover, 90 | &.active:focus { 91 | z-index: 2; // Place active items above their siblings for proper border styling 92 | color: @list-group-active-color; 93 | background-color: @list-group-active-bg; 94 | border-color: @list-group-active-border; 95 | 96 | // Force color to inherit for custom content 97 | .list-group-item-heading, 98 | .list-group-item-heading > small, 99 | .list-group-item-heading > .small { 100 | color: inherit; 101 | } 102 | .list-group-item-text { 103 | color: @list-group-active-text-color; 104 | } 105 | } 106 | } 107 | 108 | 109 | // Contextual variants 110 | // 111 | // Add modifier classes to change text and background color on individual items. 112 | // Organizationally, this must come after the `:hover` states. 113 | 114 | .list-group-item-variant(success; @state-success-bg; @state-success-text); 115 | .list-group-item-variant(info; @state-info-bg; @state-info-text); 116 | .list-group-item-variant(warning; @state-warning-bg; @state-warning-text); 117 | .list-group-item-variant(danger; @state-danger-bg; @state-danger-text); 118 | 119 | 120 | // Custom content options 121 | // 122 | // Extra classes for creating well-formatted content within `.list-group-item`s. 123 | 124 | .list-group-item-heading { 125 | margin-top: 0; 126 | margin-bottom: 5px; 127 | } 128 | .list-group-item-text { 129 | margin-bottom: 0; 130 | line-height: 1.3; 131 | } 132 | -------------------------------------------------------------------------------- /assets/lib/jquery/src/queue.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./core", 3 | "./data/var/data_priv", 4 | "./deferred", 5 | "./callbacks" 6 | ], function( jQuery, data_priv ) { 7 | 8 | jQuery.extend({ 9 | queue: function( elem, type, data ) { 10 | var queue; 11 | 12 | if ( elem ) { 13 | type = ( type || "fx" ) + "queue"; 14 | queue = data_priv.get( elem, type ); 15 | 16 | // Speed up dequeue by getting out quickly if this is just a lookup 17 | if ( data ) { 18 | if ( !queue || jQuery.isArray( data ) ) { 19 | queue = data_priv.access( elem, type, jQuery.makeArray(data) ); 20 | } else { 21 | queue.push( data ); 22 | } 23 | } 24 | return queue || []; 25 | } 26 | }, 27 | 28 | dequeue: function( elem, type ) { 29 | type = type || "fx"; 30 | 31 | var queue = jQuery.queue( elem, type ), 32 | startLength = queue.length, 33 | fn = queue.shift(), 34 | hooks = jQuery._queueHooks( elem, type ), 35 | next = function() { 36 | jQuery.dequeue( elem, type ); 37 | }; 38 | 39 | // If the fx queue is dequeued, always remove the progress sentinel 40 | if ( fn === "inprogress" ) { 41 | fn = queue.shift(); 42 | startLength--; 43 | } 44 | 45 | if ( fn ) { 46 | 47 | // Add a progress sentinel to prevent the fx queue from being 48 | // automatically dequeued 49 | if ( type === "fx" ) { 50 | queue.unshift( "inprogress" ); 51 | } 52 | 53 | // Clear up the last queue stop function 54 | delete hooks.stop; 55 | fn.call( elem, next, hooks ); 56 | } 57 | 58 | if ( !startLength && hooks ) { 59 | hooks.empty.fire(); 60 | } 61 | }, 62 | 63 | // Not public - generate a queueHooks object, or return the current one 64 | _queueHooks: function( elem, type ) { 65 | var key = type + "queueHooks"; 66 | return data_priv.get( elem, key ) || data_priv.access( elem, key, { 67 | empty: jQuery.Callbacks("once memory").add(function() { 68 | data_priv.remove( elem, [ type + "queue", key ] ); 69 | }) 70 | }); 71 | } 72 | }); 73 | 74 | jQuery.fn.extend({ 75 | queue: function( type, data ) { 76 | var setter = 2; 77 | 78 | if ( typeof type !== "string" ) { 79 | data = type; 80 | type = "fx"; 81 | setter--; 82 | } 83 | 84 | if ( arguments.length < setter ) { 85 | return jQuery.queue( this[0], type ); 86 | } 87 | 88 | return data === undefined ? 89 | this : 90 | this.each(function() { 91 | var queue = jQuery.queue( this, type, data ); 92 | 93 | // Ensure a hooks for this queue 94 | jQuery._queueHooks( this, type ); 95 | 96 | if ( type === "fx" && queue[0] !== "inprogress" ) { 97 | jQuery.dequeue( this, type ); 98 | } 99 | }); 100 | }, 101 | dequeue: function( type ) { 102 | return this.each(function() { 103 | jQuery.dequeue( this, type ); 104 | }); 105 | }, 106 | clearQueue: function( type ) { 107 | return this.queue( type || "fx", [] ); 108 | }, 109 | // Get a promise resolved when queues of a certain type 110 | // are emptied (fx is the type by default) 111 | promise: function( type, obj ) { 112 | var tmp, 113 | count = 1, 114 | defer = jQuery.Deferred(), 115 | elements = this, 116 | i = this.length, 117 | resolve = function() { 118 | if ( !( --count ) ) { 119 | defer.resolveWith( elements, [ elements ] ); 120 | } 121 | }; 122 | 123 | if ( typeof type !== "string" ) { 124 | obj = type; 125 | type = undefined; 126 | } 127 | type = type || "fx"; 128 | 129 | while ( i-- ) { 130 | tmp = data_priv.get( elements[ i ], type + "queueHooks" ); 131 | if ( tmp && tmp.empty ) { 132 | count++; 133 | tmp.empty.add( resolve ); 134 | } 135 | } 136 | resolve(); 137 | return defer.promise( obj ); 138 | } 139 | }); 140 | 141 | return jQuery; 142 | }); 143 | -------------------------------------------------------------------------------- /assets/lib/bootstrap/js/popover.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * Bootstrap: popover.js v3.2.0 3 | * http://getbootstrap.com/javascript/#popovers 4 | * ======================================================================== 5 | * Copyright 2011-2014 Twitter, Inc. 6 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | * ======================================================================== */ 8 | 9 | 10 | +function ($) { 11 | 'use strict'; 12 | 13 | // POPOVER PUBLIC CLASS DEFINITION 14 | // =============================== 15 | 16 | var Popover = function (element, options) { 17 | this.init('popover', element, options) 18 | } 19 | 20 | if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') 21 | 22 | Popover.VERSION = '3.2.0' 23 | 24 | Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { 25 | placement: 'right', 26 | trigger: 'click', 27 | content: '', 28 | template: '' 29 | }) 30 | 31 | 32 | // NOTE: POPOVER EXTENDS tooltip.js 33 | // ================================ 34 | 35 | Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) 36 | 37 | Popover.prototype.constructor = Popover 38 | 39 | Popover.prototype.getDefaults = function () { 40 | return Popover.DEFAULTS 41 | } 42 | 43 | Popover.prototype.setContent = function () { 44 | var $tip = this.tip() 45 | var title = this.getTitle() 46 | var content = this.getContent() 47 | 48 | $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) 49 | $tip.find('.popover-content').empty()[ // we use append for html objects to maintain js events 50 | this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' 51 | ](content) 52 | 53 | $tip.removeClass('fade top bottom left right in') 54 | 55 | // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do 56 | // this manually by checking the contents. 57 | if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() 58 | } 59 | 60 | Popover.prototype.hasContent = function () { 61 | return this.getTitle() || this.getContent() 62 | } 63 | 64 | Popover.prototype.getContent = function () { 65 | var $e = this.$element 66 | var o = this.options 67 | 68 | return $e.attr('data-content') 69 | || (typeof o.content == 'function' ? 70 | o.content.call($e[0]) : 71 | o.content) 72 | } 73 | 74 | Popover.prototype.arrow = function () { 75 | return (this.$arrow = this.$arrow || this.tip().find('.arrow')) 76 | } 77 | 78 | Popover.prototype.tip = function () { 79 | if (!this.$tip) this.$tip = $(this.options.template) 80 | return this.$tip 81 | } 82 | 83 | 84 | // POPOVER PLUGIN DEFINITION 85 | // ========================= 86 | 87 | function Plugin(option) { 88 | return this.each(function () { 89 | var $this = $(this) 90 | var data = $this.data('bs.popover') 91 | var options = typeof option == 'object' && option 92 | 93 | if (!data && option == 'destroy') return 94 | if (!data) $this.data('bs.popover', (data = new Popover(this, options))) 95 | if (typeof option == 'string') data[option]() 96 | }) 97 | } 98 | 99 | var old = $.fn.popover 100 | 101 | $.fn.popover = Plugin 102 | $.fn.popover.Constructor = Popover 103 | 104 | 105 | // POPOVER NO CONFLICT 106 | // =================== 107 | 108 | $.fn.popover.noConflict = function () { 109 | $.fn.popover = old 110 | return this 111 | } 112 | 113 | }(jQuery); 114 | --------------------------------------------------------------------------------