├── app ├── bower_components │ ├── 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 │ │ │ │ │ ├── getStyles.js │ │ │ │ │ └── isHidden.js │ │ │ │ ├── hiddenVisibleSelectors.js │ │ │ │ ├── swap.js │ │ │ │ ├── addGetHookIf.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 │ │ │ │ └── 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 │ │ ├── bower.json │ │ ├── .bower.json │ │ └── MIT-LICENSE.txt │ ├── underscore │ │ ├── .gitignore │ │ ├── bower.json │ │ ├── .editorconfig │ │ ├── component.json │ │ ├── .bower.json │ │ ├── package.json │ │ ├── LICENSE │ │ └── README.md │ ├── font-awesome │ │ ├── less │ │ │ ├── extras.less │ │ │ ├── fixed-width.less │ │ │ ├── core.less │ │ │ ├── bordered-pulled.less │ │ │ ├── rotated-flipped.less │ │ │ ├── larger.less │ │ │ ├── list.less │ │ │ ├── font-awesome.less │ │ │ ├── stacked.less │ │ │ ├── path.less │ │ │ ├── mixins.less │ │ │ └── spinning.less │ │ ├── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.ttf │ │ │ └── fontawesome-webfont.woff │ │ ├── scss │ │ │ ├── _fixed-width.scss │ │ │ ├── _core.scss │ │ │ ├── _bordered-pulled.scss │ │ │ ├── _larger.scss │ │ │ ├── _rotated-flipped.scss │ │ │ ├── _list.scss │ │ │ ├── font-awesome.scss │ │ │ ├── _stacked.scss │ │ │ ├── _path.scss │ │ │ ├── _mixins.scss │ │ │ ├── _spinning.scss │ │ │ └── _extras.scss │ │ ├── .gitignore │ │ ├── .npmignore │ │ └── .bower.json │ ├── gumby │ │ ├── sass │ │ │ ├── _custom.scss │ │ │ ├── functions │ │ │ │ ├── _strip-units.scss │ │ │ │ ├── _height-calc.scss │ │ │ │ ├── _line-and-height.scss │ │ │ │ ├── _even.scss │ │ │ │ ├── _em.scss │ │ │ │ ├── _breakpoints.scss │ │ │ │ ├── _visibility.scss │ │ │ │ ├── _fade.scss │ │ │ │ ├── _clearfix.scss │ │ │ │ ├── _typography.scss │ │ │ │ ├── _fixed.scss │ │ │ │ ├── _forms.scss │ │ │ │ ├── _all.scss │ │ │ │ ├── _shapes.scss │ │ │ │ ├── _icons.scss │ │ │ │ ├── _fancytiles.scss │ │ │ │ ├── _button-size.scss │ │ │ │ ├── _responsivity.scss │ │ │ │ ├── _palette.scss │ │ │ │ ├── _tooltips.scss │ │ │ │ └── _grid-calc.scss │ │ │ ├── ui │ │ │ │ ├── _all.scss │ │ │ │ ├── _tooltips.scss │ │ │ │ ├── _icons.scss │ │ │ │ ├── _images.scss │ │ │ │ ├── _video.scss │ │ │ │ ├── _toggles.scss │ │ │ │ ├── _tables.scss │ │ │ │ └── _labels.scss │ │ │ ├── _shame.scss │ │ │ ├── var │ │ │ │ └── _lists.scss │ │ │ ├── gumby.scss │ │ │ ├── _fonts.scss │ │ │ ├── _base.scss │ │ │ └── extensions │ │ │ │ └── modular-scale │ │ │ │ └── lib │ │ │ │ └── modular-scale.rb │ │ ├── .jshintignore │ │ ├── favicon.png │ │ ├── facebook.jpg │ │ ├── bower.json │ │ ├── apple-touch-icon.png │ │ ├── fonts │ │ │ └── icons │ │ │ │ ├── entypo.eot │ │ │ │ ├── entypo.ttf │ │ │ │ └── entypo.woff │ │ ├── img │ │ │ ├── gumby_mainlogo.png │ │ │ ├── img_silence_demo.jpg │ │ │ └── gumby_mainlogo@2x.png │ │ ├── apple-touch-icon-precomposed.png │ │ ├── css │ │ │ └── style.css │ │ ├── .jshintrc │ │ ├── .bower.json │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── js │ │ │ ├── main.js │ │ │ ├── libs │ │ │ │ ├── gumby.init.js │ │ │ │ └── ui │ │ │ │ │ ├── gumby.tabs.js │ │ │ │ │ ├── gumby.retina.js │ │ │ │ │ ├── gumby.radiobtn.js │ │ │ │ │ ├── gumby.navbar.js │ │ │ │ │ └── gumby.checkbox.js │ │ │ └── plugins.js │ │ ├── composer.json │ │ ├── config.rb │ │ ├── README.md │ │ └── humans.txt │ ├── angular │ │ ├── angular.min.js.gzip │ │ ├── bower.json │ │ ├── angular-csp.css │ │ ├── .bower.json │ │ └── README.md │ ├── angular-route │ │ ├── bower.json │ │ ├── .bower.json │ │ └── README.md │ ├── angular-animate │ │ ├── bower.json │ │ ├── .bower.json │ │ └── README.md │ └── angularjs-geolocation │ │ ├── package.json │ │ ├── bower.json │ │ ├── dist │ │ └── angularjs-geolocation.min.js │ │ ├── .bower.json │ │ ├── LICENSE │ │ ├── Gruntfile.js │ │ ├── karma.conf.js │ │ ├── README.md │ │ └── src │ │ └── geolocation.js ├── owm-app-views.js ├── home │ ├── near-me.html │ ├── home.html │ ├── home.js │ └── near-me.js ├── owm-app.js ├── owm-history.js ├── cities │ ├── city.html │ └── city.js ├── owm-library.js ├── index.html ├── owm-cities.json └── owm-app.css ├── .bowerrc ├── .gitignore ├── output ├── normal │ ├── fonts │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.ttf │ │ └── fontawesome-webfont.woff │ ├── home │ │ ├── near-me.html │ │ └── home.html │ ├── cities │ │ └── city.html │ ├── index.html │ └── owm-cities.json └── critical │ ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.ttf │ └── fontawesome-webfont.woff │ ├── home │ ├── near-me.html │ └── home.html │ ├── cities │ └── city.html │ └── owm-cities.json ├── bower.json ├── package.json ├── README.md ├── gulpfile.js └── filter.js /app/bower_components/jquery/src/outro.js: -------------------------------------------------------------------------------- 1 | })); 2 | -------------------------------------------------------------------------------- /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "./app/bower_components" 3 | } 4 | -------------------------------------------------------------------------------- /app/bower_components/underscore/.gitignore: -------------------------------------------------------------------------------- 1 | raw 2 | node_modules 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | .DS_Store 3 | .tmp 4 | /tmp 5 | build/ 6 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/selector.js: -------------------------------------------------------------------------------- 1 | define([ "./selector-sizzle" ]); 2 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/var/arr.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return []; 3 | }); 4 | -------------------------------------------------------------------------------- /app/bower_components/font-awesome/less/extras.less: -------------------------------------------------------------------------------- 1 | // Extras 2 | // -------------------------- 3 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/_custom.scss: -------------------------------------------------------------------------------- 1 | // Your custom SCSS should be written here... 2 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/ajax/var/rquery.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/\?/); 3 | }); 4 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/var/rnotwhite.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/\S+/g); 3 | }); 4 | -------------------------------------------------------------------------------- /app/bower_components/gumby/.jshintignore: -------------------------------------------------------------------------------- 1 | js/libs/*.min.js 2 | js/*.min.js 3 | *.min.js 4 | js/plugins.js 5 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/css/var/rmargin.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/^margin/); 3 | }); 4 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/var/strundefined.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return typeof undefined; 3 | }); 4 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/var/concat.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./arr" 3 | ], function( arr ) { 4 | return arr.concat; 5 | }); 6 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/var/push.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./arr" 3 | ], function( arr ) { 4 | return arr.push; 5 | }); 6 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/var/slice.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./arr" 3 | ], function( arr ) { 4 | return arr.slice; 5 | }); 6 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/var/class2type.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | // [[Class]] -> type pairs 3 | return {}; 4 | }); 5 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/var/indexOf.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./arr" 3 | ], function( arr ) { 4 | return arr.indexOf; 5 | }); 6 | -------------------------------------------------------------------------------- /app/owm-app-views.js: -------------------------------------------------------------------------------- 1 | var viewsModule = angular.module('owmAppViews', ['ngRoute', 'owmLibrary', 'geolocation', 'owmHistory']); 2 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/css/var/cssExpand.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return [ "Top", "Right", "Bottom", "Left" ]; 3 | }); 4 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/manipulation/var/rcheckableType.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/^(?:checkbox|radio)$/i); 3 | }); 4 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/var/pnum.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; 3 | }); 4 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/ajax/var/nonce.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../../core" 3 | ], function( jQuery ) { 4 | return jQuery.now(); 5 | }); 6 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/data/var/data_priv.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../Data" 3 | ], function( Data ) { 4 | return new Data(); 5 | }); 6 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/data/var/data_user.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../Data" 3 | ], function( Data ) { 4 | return new Data(); 5 | }); 6 | -------------------------------------------------------------------------------- /output/normal/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/output/normal/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /app/bower_components/gumby/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/app/bower_components/gumby/favicon.png -------------------------------------------------------------------------------- /output/critical/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/output/critical/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /app/bower_components/gumby/facebook.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/app/bower_components/gumby/facebook.jpg -------------------------------------------------------------------------------- /app/bower_components/jquery/src/var/toString.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./class2type" 3 | ], function( class2type ) { 4 | return class2type.toString; 5 | }); 6 | -------------------------------------------------------------------------------- /app/bower_components/gumby/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gumby", 3 | "version": "2.6.3", 4 | "main": ["./js/libs/gumby.min.js", "./css/gumby.css"] 5 | } 6 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/var/hasOwn.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./class2type" 3 | ], function( class2type ) { 4 | return class2type.hasOwnProperty; 5 | }); 6 | -------------------------------------------------------------------------------- /app/home/near-me.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | Searching for city... 5 |
6 | 7 |
8 | -------------------------------------------------------------------------------- /output/normal/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/output/normal/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /output/normal/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/output/normal/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /app/bower_components/jquery/src/core/var/rsingleTag.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | // Match a standalone tag 3 | return (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); 4 | }); 5 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/var/support.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | // All support tests are defined in their respective modules. 3 | return {}; 4 | }); 5 | -------------------------------------------------------------------------------- /output/critical/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/output/critical/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /output/critical/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/output/critical/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /output/critical/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/output/critical/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /output/normal/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/output/normal/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /app/bower_components/angular/angular.min.js.gzip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/app/bower_components/angular/angular.min.js.gzip -------------------------------------------------------------------------------- /app/bower_components/gumby/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/app/bower_components/gumby/apple-touch-icon.png -------------------------------------------------------------------------------- /output/normal/home/near-me.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | Searching for city... 5 |
6 | 7 |
8 | -------------------------------------------------------------------------------- /app/bower_components/gumby/fonts/icons/entypo.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/app/bower_components/gumby/fonts/icons/entypo.eot -------------------------------------------------------------------------------- /app/bower_components/gumby/fonts/icons/entypo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/app/bower_components/gumby/fonts/icons/entypo.ttf -------------------------------------------------------------------------------- /app/bower_components/gumby/fonts/icons/entypo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/app/bower_components/gumby/fonts/icons/entypo.woff -------------------------------------------------------------------------------- /app/bower_components/gumby/img/gumby_mainlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/app/bower_components/gumby/img/gumby_mainlogo.png -------------------------------------------------------------------------------- /app/bower_components/gumby/img/img_silence_demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/app/bower_components/gumby/img/img_silence_demo.jpg -------------------------------------------------------------------------------- /output/critical/home/near-me.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | Searching for city... 5 |
6 | 7 |
8 | -------------------------------------------------------------------------------- /app/bower_components/gumby/img/gumby_mainlogo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/app/bower_components/gumby/img/gumby_mainlogo@2x.png -------------------------------------------------------------------------------- /app/bower_components/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/app/bower_components/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /app/bower_components/angular/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular", 3 | "version": "1.3.0-build.2771+sha.4eb9522", 4 | "main": "./angular.js", 5 | "dependencies": { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/bower_components/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 | -------------------------------------------------------------------------------- /app/bower_components/gumby/apple-touch-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/app/bower_components/gumby/apple-touch-icon-precomposed.png -------------------------------------------------------------------------------- /app/bower_components/font-awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/app/bower_components/font-awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /app/bower_components/font-awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/app/bower_components/font-awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /app/bower_components/font-awesome/less/fixed-width.less: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .@{fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /app/bower_components/gumby/css/style.css: -------------------------------------------------------------------------------- 1 | /* 2 | We highly recommend you use SASS and write your custom styles in sass/_custom.scss. 3 | However, this blank file is available if you prefer 4 | */ 5 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/functions/_strip-units.scss: -------------------------------------------------------------------------------- 1 | 2 | // Strip out units to do math functions. 3 | @function strip-units($number) { 4 | @return $number / ($number * 0 + 1); 5 | } 6 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/traversing/var/rneedsContext.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../../core", 3 | "../../selector" 4 | ], function( jQuery ) { 5 | return jQuery.expr.match.needsContext; 6 | }); 7 | -------------------------------------------------------------------------------- /app/bower_components/font-awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyosmani/critical-css-weather-app/HEAD/app/bower_components/font-awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /app/bower_components/font-awesome/scss/_fixed-width.scss: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .#{$fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/css/var/getStyles.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return function( elem ) { 3 | return elem.ownerDocument.defaultView.getComputedStyle( elem, null ); 4 | }; 5 | }); 6 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/functions/_height-calc.scss: -------------------------------------------------------------------------------- 1 | 2 | // Calculate the height of an object based on its scale 3 | 4 | @function height-calc($size) { 5 | @return ms($ratio, $size) + 1; 6 | } 7 | -------------------------------------------------------------------------------- /app/bower_components/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 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/functions/_line-and-height.scss: -------------------------------------------------------------------------------- 1 | 2 | // Make line-height equal to an element's height 3 | 4 | @mixin line-and-height($height) { 5 | height: $height; 6 | line-height: $height - 2; 7 | } 8 | -------------------------------------------------------------------------------- /app/bower_components/angular-route/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-route", 3 | "version": "1.3.0-build.2771+sha.4eb9522", 4 | "main": "./angular-route.js", 5 | "dependencies": { 6 | "angular": "1.3.0-build.2771+sha.4eb9522" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/bower_components/angular-animate/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-animate", 3 | "version": "1.3.0-build.2771+sha.4eb9522", 4 | "main": "./angular-animate.js", 5 | "dependencies": { 6 | "angular": "1.3.0-build.2771+sha.4eb9522" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/functions/_even.scss: -------------------------------------------------------------------------------- 1 | // test for even numbers, do something with the result 2 | 3 | @function even($number) { 4 | @if ($number % 2 == 0) { 5 | @return true; 6 | } 7 | @else { 8 | @return false; 9 | } 10 | } -------------------------------------------------------------------------------- /app/bower_components/gumby/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "evil": false, // Make sure to warn about eval 3 | "regexdash": true, 4 | "browser": true, 5 | "jquery": true, 6 | "trailing": false, 7 | "sub": true, 8 | "multistr": true, 9 | "expr": true 10 | } 11 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/ui/_all.scss: -------------------------------------------------------------------------------- 1 | @import "navbar"; 2 | @import "buttons"; 3 | @import "icons"; 4 | @import "forms"; 5 | @import "labels"; 6 | @import "tabs"; 7 | @import "images"; 8 | @import "video"; 9 | @import "toggles"; 10 | @import "tables"; 11 | @import "tooltips"; 12 | -------------------------------------------------------------------------------- /app/bower_components/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 | -------------------------------------------------------------------------------- /app/owm-app.js: -------------------------------------------------------------------------------- 1 | angular.module('owmApp', ['owmAppViews', 'ngRoute', 'ngAnimate']) 2 | .config(['$locationProvider', '$routeProvider', function($locationProvider, $routeProvider) { 3 | $locationProvider.hashPrefix('!'); 4 | $routeProvider.otherwise({ 5 | redirectTo : '/' 6 | }); 7 | }]) 8 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/ui/_tooltips.scss: -------------------------------------------------------------------------------- 1 | /* Tooltips */ 2 | 3 | .ttip { 4 | @include tooltip($tt-min-width, $tt-bgcolor, $tt-position, $tt-align); 5 | cursor: pointer; 6 | } 7 | 8 | .ttip:after, .ttip:before { 9 | @include respond(portrait-tablets) { 10 | display: none; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/bower_components/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 | -------------------------------------------------------------------------------- /app/bower_components/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 | -------------------------------------------------------------------------------- /app/bower_components/angular/angular-csp.css: -------------------------------------------------------------------------------- 1 | /* Include this file in your html if you are using the CSP mode. */ 2 | 3 | @charset "UTF-8"; 4 | 5 | [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], 6 | .ng-cloak, .x-ng-cloak, 7 | .ng-hide { 8 | display: none !important; 9 | } 10 | 11 | ng\:form { 12 | display: block; 13 | } 14 | -------------------------------------------------------------------------------- /app/bower_components/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 | -------------------------------------------------------------------------------- /app/bower_components/underscore/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "underscore", 3 | "version": "1.6.0", 4 | "main": "underscore.js", 5 | "keywords": ["util", "functional", "server", "client", "browser"], 6 | "ignore" : ["underscore-min.js", "docs", "test", "*.yml", "*.map", 7 | "CNAME", "index.html", "favicon.ico", "CONTRIBUTING.md"] 8 | } 9 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/functions/_em.scss: -------------------------------------------------------------------------------- 1 | // Convert pixels to ems 2 | 3 | @function em($size-in-px, $context: 16) { 4 | @if not unitless($size-in-px) { 5 | $size-in-px: strip-units($size-in-px); 6 | } 7 | @if not unitless($context) { 8 | $context: strip-units($context); 9 | } 10 | @return ($size-in-px / $context) * 1em; 11 | } 12 | -------------------------------------------------------------------------------- /app/bower_components/font-awesome/less/core.less: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix} { 5 | display: inline-block; 6 | font-family: FontAwesome; 7 | font-style: normal; 8 | font-weight: normal; 9 | line-height: 1; 10 | -webkit-font-smoothing: antialiased; 11 | -moz-osx-font-smoothing: grayscale; 12 | } 13 | -------------------------------------------------------------------------------- /app/bower_components/font-awesome/scss/_core.scss: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix} { 5 | display: inline-block; 6 | font-family: FontAwesome; 7 | font-style: normal; 8 | font-weight: normal; 9 | line-height: 1; 10 | -webkit-font-smoothing: antialiased; 11 | -moz-osx-font-smoothing: grayscale; 12 | } 13 | -------------------------------------------------------------------------------- /app/bower_components/underscore/.editorconfig: -------------------------------------------------------------------------------- 1 | # This file is for unifying the coding style for different editors and IDEs 2 | # editorconfig.org 3 | 4 | root = true 5 | 6 | [*] 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [**.{js,json,html}] 13 | indent_style = space 14 | indent_size = 2 15 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/functions/_breakpoints.scss: -------------------------------------------------------------------------------- 1 | @function breakpoint($breakpoint) { 2 | @if $breakpoint == $document-width { 3 | @return $document-width - 1; 4 | } 5 | @if $breakpoint == $tablet-device-width { 6 | @return $tablet-device-width - 1; 7 | } 8 | @if $breakpoint == $min-device-width { 9 | @return $min-device-width + 1; 10 | } 11 | } -------------------------------------------------------------------------------- /app/bower_components/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 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/functions/_visibility.scss: -------------------------------------------------------------------------------- 1 | // Visibility Mixins 2 | 3 | // Mixin for hidden 4 | 5 | @mixin hidden($media) { 6 | @include respond($media) { 7 | display: none !important; 8 | } 9 | } 10 | 11 | // Mixin for visible 12 | 13 | @mixin visible($media) { 14 | @include respond($media) { 15 | display: inherit !important; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ttc-app", 3 | "version": "0.0.1", 4 | "dependencies": { 5 | "angular": "~1.3.0-beta.10", 6 | "angular-animate": "~1.3.0-beta.10", 7 | "angular-route": "~1.3.0-beta.10", 8 | "jquery": "~2.1.1", 9 | "gumby": "~2.6.3", 10 | "underscore": "~1.6.0", 11 | "angularjs-geolocation": "~0.1.1", 12 | "font-awesome": "~4.1.0" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/bower_components/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 | -------------------------------------------------------------------------------- /app/home/home.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 |
7 |
8 |

9 | {{ city }} 10 |

11 |
12 |
13 | 14 |
15 | -------------------------------------------------------------------------------- /output/normal/home/home.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 |
7 |
8 |

9 | {{ city }} 10 |

11 |
12 |
13 | 14 |
15 | -------------------------------------------------------------------------------- /app/bower_components/underscore/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "underscore", 3 | "description" : "JavaScript's functional programming helper library.", 4 | "keywords" : ["util", "functional", "server", "client", "browser"], 5 | "repo" : "jashkenas/underscore", 6 | "main" : "underscore.js", 7 | "scripts" : ["underscore.js"], 8 | "version" : "1.6.0", 9 | "license" : "MIT" 10 | } 11 | -------------------------------------------------------------------------------- /output/critical/home/home.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 |
7 |
8 |

9 | {{ city }} 10 |

11 |
12 |
13 | 14 |
15 | -------------------------------------------------------------------------------- /app/bower_components/angularjs-geolocation/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angularjs-geolocation", 3 | "devDependencies": { 4 | "karma": "~0.10", 5 | "karma-jasmine": "~0.1", 6 | "grunt": "~0.4.1", 7 | "grunt-contrib-jshint": "~0.6.4", 8 | "grunt-contrib-uglify": "~0.2.4", 9 | "grunt-karma": "~0.6.2" 10 | }, 11 | "scripts": { 12 | "test": "./node_modules/.bin/karma start --single-run --browsers Chrome" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/bower_components/font-awesome/less/bordered-pulled.less: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em @fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .pull-right { float: right; } 11 | .pull-left { float: left; } 12 | 13 | .@{fa-css-prefix} { 14 | &.pull-left { margin-right: .3em; } 15 | &.pull-right { margin-left: .3em; } 16 | } 17 | -------------------------------------------------------------------------------- /app/bower_components/font-awesome/less/rotated-flipped.less: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } 5 | .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } 6 | .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } 7 | 8 | .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } 9 | .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } 10 | -------------------------------------------------------------------------------- /app/bower_components/font-awesome/scss/_bordered-pulled.scss: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em $fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .pull-right { float: right; } 11 | .pull-left { float: left; } 12 | 13 | .#{$fa-css-prefix} { 14 | &.pull-left { margin-right: .3em; } 15 | &.pull-right { margin-left: .3em; } 16 | } 17 | -------------------------------------------------------------------------------- /app/bower_components/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 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/functions/_fade.scss: -------------------------------------------------------------------------------- 1 | // Fade Mixin 2 | 3 | $fade-duration: .6s; 4 | 5 | @mixin fade($direction: out, $duration: $fade-duration) { 6 | 7 | @if $direction != out { 8 | visibility: visible; 9 | @include opacity(1); 10 | } 11 | 12 | @else { 13 | visibility: hidden; 14 | @include opacity(0); 15 | } 16 | 17 | @include transition-property(opacity); 18 | @include transition-duration($fade-duration); 19 | 20 | } -------------------------------------------------------------------------------- /app/bower_components/font-awesome/less/larger.less: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .@{fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .@{fa-css-prefix}-2x { font-size: 2em; } 11 | .@{fa-css-prefix}-3x { font-size: 3em; } 12 | .@{fa-css-prefix}-4x { font-size: 4em; } 13 | .@{fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /app/bower_components/font-awesome/scss/_larger.scss: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .#{$fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .#{$fa-css-prefix}-2x { font-size: 2em; } 11 | .#{$fa-css-prefix}-3x { font-size: 3em; } 12 | .#{$fa-css-prefix}-4x { font-size: 4em; } 13 | .#{$fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /app/bower_components/font-awesome/.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.egg-info 3 | *.db 4 | *.db.old 5 | *.swp 6 | *.db-journal 7 | 8 | .coverage 9 | .DS_Store 10 | .installed.cfg 11 | _gh_pages/* 12 | 13 | .idea/* 14 | .svn/* 15 | src/website/static/* 16 | src/website/media/* 17 | 18 | bin 19 | cfcache 20 | develop-eggs 21 | dist 22 | downloads 23 | eggs 24 | parts 25 | tmp 26 | .sass-cache 27 | node_modules 28 | 29 | src/website/settingslocal.py 30 | stunnel.log 31 | 32 | .ruby-version 33 | -------------------------------------------------------------------------------- /app/bower_components/font-awesome/scss/_rotated-flipped.scss: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } 5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } 6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } 7 | 8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } 9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } 10 | -------------------------------------------------------------------------------- /app/bower_components/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 | -------------------------------------------------------------------------------- /app/bower_components/font-awesome/less/list.less: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: @fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .@{fa-css-prefix}-li { 11 | position: absolute; 12 | left: -@fa-li-width; 13 | width: @fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.@{fa-css-prefix}-lg { 17 | left: -@fa-li-width + (4em / 14); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/bower_components/font-awesome/scss/_list.scss: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: $fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .#{$fa-css-prefix}-li { 11 | position: absolute; 12 | left: -$fa-li-width; 13 | width: $fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.#{$fa-css-prefix}-lg { 17 | left: -$fa-li-width + (4em / 14); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/functions/_clearfix.scss: -------------------------------------------------------------------------------- 1 | @mixin clearfix() { 2 | *zoom:1; 3 | &:before, &:after { 4 | content: ""; 5 | display: table; 6 | } 7 | &:after { 8 | clear: both; 9 | } 10 | } 11 | 12 | @mixin mobilefix() { 13 | @include respond(all-phones) { 14 | &:before, &:after { 15 | content: " "; 16 | display: table; 17 | } 18 | &:after { 19 | clear: both; 20 | } 21 | &:last-child { 22 | float: none; 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/functions/_typography.scss: -------------------------------------------------------------------------------- 1 | // Typography mixins 2 | 3 | // Fonts in rems with px fallback 4 | 5 | @mixin font-size($size, $is-important: false) { 6 | $size: if(unitless($size), $size, $size / 1px); 7 | 8 | @if $is-important { 9 | font-size: $size + px !important; 10 | font-size: ($size / strip-units($base-font-size)) + rem !important; 11 | } @else { 12 | font-size: $size + px; 13 | font-size: ($size / strip-units($base-font-size)) + rem; 14 | } 15 | } -------------------------------------------------------------------------------- /app/bower_components/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 | -------------------------------------------------------------------------------- /app/home/home.js: -------------------------------------------------------------------------------- 1 | viewsModule.config(['$routeProvider', function($routeProvider) { 2 | $routeProvider.when("/", { 3 | templateUrl : "./home/home.html", 4 | controller : 'HomeCtrl' 5 | }); 6 | }]); 7 | 8 | viewsModule.controller('HomeCtrl', ['$scope', 'owmUSCities', 'owmHistory', 9 | function($scope, owmUSCities, owmHistory) { 10 | owmHistory.push({ name : "Home", isHome : true }); 11 | owmUSCities().then(function(cities) { 12 | $scope.cities = cities; 13 | }); 14 | }]); 15 | -------------------------------------------------------------------------------- /app/bower_components/font-awesome/scss/font-awesome.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables"; 7 | @import "mixins"; 8 | @import "path"; 9 | @import "core"; 10 | @import "larger"; 11 | @import "fixed-width"; 12 | @import "list"; 13 | @import "bordered-pulled"; 14 | @import "spinning"; 15 | @import "rotated-flipped"; 16 | @import "stacked"; 17 | @import "icons"; 18 | -------------------------------------------------------------------------------- /app/bower_components/gumby/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gumby", 3 | "version": "2.6.3", 4 | "main": [ 5 | "./js/libs/gumby.min.js", 6 | "./css/gumby.css" 7 | ], 8 | "homepage": "https://github.com/GumbyFramework/Gumby", 9 | "_release": "2.6.3", 10 | "_resolution": { 11 | "type": "version", 12 | "tag": "2.6.3", 13 | "commit": "1f33931f7ea2b58a45e6aadd19985c6a0174b341" 14 | }, 15 | "_source": "git://github.com/GumbyFramework/Gumby.git", 16 | "_target": "~2.6.3", 17 | "_originalSource": "gumby" 18 | } -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/ui/_icons.scss: -------------------------------------------------------------------------------- 1 | /* Icons */ 2 | 3 | [class^="icon-"] a:before, 4 | [class*=" icon-"] a:before, 5 | [class^="icon-"] a:after, 6 | [class*=" icon-"] a:after, 7 | i[class^="icon-"], 8 | i[class*=" icon-"] { 9 | font-family: "#{$icons}"; 10 | position:absolute; 11 | text-decoration:none; 12 | zoom: 1; 13 | } 14 | 15 | i[class^="icon-"], 16 | i[class*=" icon-"] { 17 | display: inline-block; 18 | position: static; 19 | min-width: 20px; 20 | margin: 0 5px; 21 | text-align: center; 22 | } 23 | 24 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/functions/_fixed.scss: -------------------------------------------------------------------------------- 1 | @mixin fixed($removal-breakpoint) { 2 | .fixed { 3 | position: fixed; 4 | &.pinned { 5 | position: absolute; 6 | } 7 | @if $removal-breakpoint != false { 8 | @include respond($removal-breakpoint) { 9 | position: relative !important; 10 | top: auto !important; 11 | left: auto !important; 12 | } 13 | } 14 | } 15 | 16 | .unfixed { 17 | position: relative !important; 18 | top: auto !important; 19 | left: auto !important; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/ui/_images.scss: -------------------------------------------------------------------------------- 1 | /* Images */ 2 | 3 | .image { 4 | line-height:0; 5 | margin-bottom: 20px; 6 | &.circle { 7 | @include border-radius(50% !important); 8 | overflow: hidden; 9 | width: auto; 10 | } 11 | &.rounded { 12 | overflow: hidden; 13 | @include border-radius($button-radius $button-radius); 14 | } 15 | &.photo { 16 | border: 5px solid #fff; 17 | @include box-shadow(0 0 1px $body-font-color); 18 | &.polaroid { 19 | padding-bottom: 50px; 20 | background: #fff; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/bower_components/jquery/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "2.1.1", 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": "1.10.19", 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 | -------------------------------------------------------------------------------- /app/owm-history.js: -------------------------------------------------------------------------------- 1 | angular.module('owmHistory', []) 2 | .controller("HistoryCtrl", function(owmHistory, $scope) { 3 | $scope.$watchCollection(function() { 4 | return owmHistory.list(); 5 | }, 6 | function(oldListings, newListings) { 7 | $scope.listings = newListings; 8 | }); 9 | }) 10 | .factory("owmHistory", function() { 11 | var historyQueue = []; 12 | return { 13 | push : function(entry) { 14 | historyQueue.push(entry); 15 | }, 16 | list : function() { 17 | return historyQueue; 18 | } 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /app/bower_components/angular/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular", 3 | "version": "1.3.0-build.2771+sha.4eb9522", 4 | "main": "./angular.js", 5 | "dependencies": {}, 6 | "homepage": "https://github.com/angular/bower-angular", 7 | "_release": "1.3.0-build.2771+sha.4eb9522", 8 | "_resolution": { 9 | "type": "version", 10 | "tag": "v1.3.0-build.2771+sha.4eb9522", 11 | "commit": "1bad58c6aedeb90dbda8f3f690368eb317878256" 12 | }, 13 | "_source": "git://github.com/angular/bower-angular.git", 14 | "_target": "~1.3.0-beta.10", 15 | "_originalSource": "angular" 16 | } -------------------------------------------------------------------------------- /app/bower_components/font-awesome/less/font-awesome.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables.less"; 7 | @import "mixins.less"; 8 | @import "path.less"; 9 | @import "core.less"; 10 | @import "larger.less"; 11 | @import "fixed-width.less"; 12 | @import "list.less"; 13 | @import "bordered-pulled.less"; 14 | @import "spinning.less"; 15 | @import "rotated-flipped.less"; 16 | @import "stacked.less"; 17 | @import "icons.less"; 18 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/functions/_forms.scss: -------------------------------------------------------------------------------- 1 | @mixin input-size($size) { 2 | @if $size == xxwide { $size: 100%; } 3 | @if $size == xwide { $size: 82.6666666667%; } 4 | @if $size == wide { $size: 65.3333333333%; } 5 | @if $size == normal { $size: 48%; } 6 | @if $size == narrow { $size: 30.6666666667%; } 7 | @if $size == xnarrow { $size: 13.3333333333%; } 8 | 9 | width: $size; 10 | } 11 | 12 | @mixin input-sizes-list() { 13 | $sizes: (); 14 | @each $item in $field-sizes { 15 | $sizes: join($sizes, unquote(".#{$item} "), comma); 16 | } 17 | #{$sizes} { @content } 18 | } 19 | -------------------------------------------------------------------------------- /app/bower_components/font-awesome/less/stacked.less: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; } 21 | -------------------------------------------------------------------------------- /app/bower_components/font-awesome/scss/_stacked.scss: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .#{$fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .#{$fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .#{$fa-css-prefix}-inverse { color: $fa-inverse; } 21 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/functions/_all.scss: -------------------------------------------------------------------------------- 1 | // Global Gumby Functions 2 | 3 | @import "breakpoints"; 4 | @import "strip-units"; 5 | @import "grid-calc"; 6 | @import "height-calc"; 7 | @import "em"; 8 | @import "even"; 9 | 10 | // Global Gumby Mixins 11 | 12 | @import "clearfix"; 13 | @import "typography"; 14 | @import "fixed"; 15 | @import "palette"; 16 | @import "shapes"; 17 | @import "palette"; 18 | @import "fade"; 19 | @import "responsivity"; 20 | @import "line-and-height"; 21 | @import "semantic-grid"; 22 | @import "tooltips"; 23 | @import "visibility"; 24 | @import "fancytiles"; 25 | @import "icons"; 26 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/_shame.scss: -------------------------------------------------------------------------------- 1 | /* SHAME */ 2 | 3 | .ie8 { 4 | //double input field fix 5 | .xxwide, 6 | .xwide, 7 | .wide, 8 | .normal, 9 | .narrow, 10 | .xnarrow { 11 | display: inline; 12 | &+input { 13 | display: inline; 14 | margin: 0 0 0 -.25em; 15 | } 16 | } 17 | 18 | // tooltip 'fade' fix 19 | .ttip { 20 | &:before, &:after { 21 | display: none; 22 | } 23 | &:hover { 24 | &:before, &:after { 25 | display: block; 26 | } 27 | } 28 | } 29 | } 30 | 31 | .ie9 { 32 | // IE9 checkbox fix 33 | .radio.checked i, .checkbox.checked i { 34 | top: 0; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/functions/_shapes.scss: -------------------------------------------------------------------------------- 1 | // Shapes 2 | 3 | @mixin shape($shape: square, $shape-radius: false) { 4 | @if $shape == oval { 5 | @include border-radius(1000px); 6 | } 7 | @else if $shape == circle { 8 | @include border-radius(1000px); 9 | } 10 | @else if $shape == pill-left { 11 | @include border-radius(500px 0 0 500px); 12 | } 13 | @else if $shape == pill-right { 14 | @include border-radius(0 500px 500px 0); 15 | } 16 | @else if $shape-radius != false { 17 | @include border-radius($shape-radius); 18 | } 19 | @else { 20 | @include border-radius(0); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/bower_components/gumby/.gitignore: -------------------------------------------------------------------------------- 1 | # Numerous always-ignore extensions 2 | *.bak 3 | *.diff 4 | *.err 5 | *.orig 6 | *.log 7 | *.rej 8 | *.swo 9 | *.swp 10 | *.vi 11 | .sass-cache 12 | 13 | # OS or Editor folders 14 | .DS_Store 15 | ._* 16 | Thumbs.db 17 | .cache 18 | .project 19 | .settings 20 | .tmproj 21 | nbproject 22 | *.sublime-project 23 | *.sublime-workspace 24 | 25 | # Dreamweaver added files 26 | _notes 27 | dwsync.xml 28 | 29 | # Komodo 30 | *.komodoproject 31 | .komodotools 32 | 33 | # Espresso 34 | *.esproj 35 | *.espressostorage 36 | 37 | # Rubinius 38 | *.rbc 39 | 40 | # Folders to ignore 41 | .hg 42 | .svn 43 | .CVS 44 | .idea 45 | -------------------------------------------------------------------------------- /app/cities/city.html: -------------------------------------------------------------------------------- 1 |

{{ city.name }}

2 |

3 | Country = {{ city.country }}, 4 | Latitude = {{ city.coord.lat }}, 5 | Longitude = {{ city.coord.lon }} 6 |

7 | 8 |
9 |
10 | 13 |
14 |
15 | {{ entry.main }} ({{ entry.description }}) 16 |
17 |
18 |
19 |
20 | -------------------------------------------------------------------------------- /app/bower_components/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 | -------------------------------------------------------------------------------- /app/bower_components/font-awesome/.npmignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.egg-info 3 | *.db 4 | *.db.old 5 | *.swp 6 | *.db-journal 7 | 8 | .coverage 9 | .DS_Store 10 | .installed.cfg 11 | _gh_pages/* 12 | 13 | .idea/* 14 | .svn/* 15 | src/website/static/* 16 | src/website/media/* 17 | 18 | bin 19 | cfcache 20 | develop-eggs 21 | dist 22 | downloads 23 | eggs 24 | parts 25 | tmp 26 | .sass-cache 27 | node_modules 28 | 29 | src/website/settingslocal.py 30 | stunnel.log 31 | 32 | .ruby-version 33 | 34 | # don't need these in the npm package. 35 | src/ 36 | _config.yml 37 | bower.json 38 | component.json 39 | composer.json 40 | CONTRIBUTING.md 41 | Gemfile 42 | Gemfile.lock 43 | -------------------------------------------------------------------------------- /output/normal/cities/city.html: -------------------------------------------------------------------------------- 1 |

{{ city.name }}

2 |

3 | Country = {{ city.country }}, 4 | Latitude = {{ city.coord.lat }}, 5 | Longitude = {{ city.coord.lon }} 6 |

7 | 8 |
9 |
10 | 13 |
14 |
15 | {{ entry.main }} ({{ entry.description }}) 16 |
17 |
18 |
19 |
20 | -------------------------------------------------------------------------------- /output/critical/cities/city.html: -------------------------------------------------------------------------------- 1 |

{{ city.name }}

2 |

3 | Country = {{ city.country }}, 4 | Latitude = {{ city.coord.lat }}, 5 | Longitude = {{ city.coord.lon }} 6 |

7 | 8 |
9 |
10 | 13 |
14 |
15 | {{ entry.main }} ({{ entry.description }}) 16 |
17 |
18 |
19 |
20 | -------------------------------------------------------------------------------- /app/bower_components/gumby/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - '0.10' 4 | before_install: 5 | - npm install -g jshint 6 | - gem install sass compass modular-scale 7 | script: 8 | - jshint . 9 | - compass compile 10 | notifications: 11 | email: 12 | recipients: 13 | - secure: NYyWrnOzCZC5VrrZiVaBt1BMb3LAvDb/v0gtXnZyXJz4D8kpV4D+FMDcpc44cId5hx2NMfvv26bIKtCj9N8PHBgM2rlztH8rhlI5uC2d2WK4tl2+Do1NCp/MbJKkhDiRDQGukEf+QBoKv/f/xsbuJIHTvPfwNbpiqw1iwGKxzoo= 14 | campfire: 15 | secure: KMTupKSaR1ThG0rW8RpsXcyVCTPfFKvNhU/TJh1QwVx9mPEfU8oeYh65gSiw5IUYy65yL0cB3jAmzJt6pCpujKj/vdy3l6fq4WAzvVLuPOoGK2QYnAPrB3y3CkDH/rG/tfaktyhJ6DntEHqnwJ+GvTU5M5StPHaL1YnweU87FUE= 16 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/ui/_video.scss: -------------------------------------------------------------------------------- 1 | /* Video */ 2 | 3 | body .video { 4 | width: 100%; 5 | position: relative; 6 | height: 0; 7 | padding-bottom: 56.25%; 8 | &.twitch, &.youtube.show_controls { 9 | padding-top: 30px; 10 | // Use .show_controls f you want the play/pause controls 11 | // to show before the video plays, like on older youtube. 12 | } 13 | &.youtube, &.vimeo { 14 | // Nothing goes here anymore. Both use overlay transports. 15 | } 16 | } 17 | 18 | .video > video, .video > iframe, .video > object, .video > embed { 19 | position: absolute; 20 | top: 0; 21 | left: 0; 22 | width: 100%; 23 | height: 100%; 24 | } 25 | -------------------------------------------------------------------------------- /app/bower_components/angular-route/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-route", 3 | "version": "1.3.0-build.2771+sha.4eb9522", 4 | "main": "./angular-route.js", 5 | "dependencies": { 6 | "angular": "1.3.0-build.2771+sha.4eb9522" 7 | }, 8 | "homepage": "https://github.com/angular/bower-angular-route", 9 | "_release": "1.3.0-build.2771+sha.4eb9522", 10 | "_resolution": { 11 | "type": "version", 12 | "tag": "v1.3.0-build.2771+sha.4eb9522", 13 | "commit": "ceda2e81923a2a9ec2dea638a9a2203e87dfda43" 14 | }, 15 | "_source": "git://github.com/angular/bower-angular-route.git", 16 | "_target": "~1.3.0-beta.10", 17 | "_originalSource": "angular-route" 18 | } -------------------------------------------------------------------------------- /app/bower_components/angular-animate/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-animate", 3 | "version": "1.3.0-build.2771+sha.4eb9522", 4 | "main": "./angular-animate.js", 5 | "dependencies": { 6 | "angular": "1.3.0-build.2771+sha.4eb9522" 7 | }, 8 | "homepage": "https://github.com/angular/bower-angular-animate", 9 | "_release": "1.3.0-build.2771+sha.4eb9522", 10 | "_resolution": { 11 | "type": "version", 12 | "tag": "v1.3.0-build.2771+sha.4eb9522", 13 | "commit": "d35ccfdc65bb5ff4113cc1034055e2a56a0d6851" 14 | }, 15 | "_source": "git://github.com/angular/bower-angular-animate.git", 16 | "_target": "~1.3.0-beta.10", 17 | "_originalSource": "angular-animate" 18 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "TTCApp", 3 | "repository": { 4 | "type": "git", 5 | "url": "https://github.com/addyosmani/critical-css-weather-app" 6 | }, 7 | "version": "0.0.2", 8 | "devDependencies": { 9 | "critical": "^0.1.6", 10 | "del": "^0.1.1", 11 | "gulp": "^3.6.2", 12 | "gulp-clean": "^0.3.1", 13 | "gulp-connect": "^2.0.5", 14 | "gulp-minify-css": "^0.3.4", 15 | "gulp-minify-html": "^0.1.3", 16 | "gulp-ng-annotate": "^0.2.0", 17 | "gulp-rename": "^1.2.0", 18 | "gulp-rev": "^1.0.0", 19 | "gulp-sass": "^0.7.1", 20 | "gulp-uglify": "^0.3.0", 21 | "gulp-usemin": "^0.3.3", 22 | "run-sequence": "^0.3.6" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/bower_components/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 | -------------------------------------------------------------------------------- /app/bower_components/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 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/var/_lists.scss: -------------------------------------------------------------------------------- 1 | // Lists 2 | 3 | // UI Coloring List 4 | $ui-coloring: 5 | primary $primary-color $primary-hover-color, 6 | secondary $secondary-color $secondary-hover-color, 7 | default $default-color $default-hover-color, 8 | info $info-color $info-hover-color, 9 | danger $danger-color $danger-hover-color, 10 | warning $warning-color $warning-hover-color, 11 | success $success-color $success-hover-color; 12 | 13 | // UI Styling List 14 | $styling: metro $metro-radius, pretty $button-radius; 15 | 16 | 17 | // Form field types 18 | $field-types: text, email, password, numeric, search, combined, prepend, append, double; 19 | 20 | $field-sizes: xnarrow, narrow, normal, wide, xwide, xxwide; -------------------------------------------------------------------------------- /app/bower_components/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 to missing dependency), 9 | // remove it. 10 | // Since there are no other hooks for marginRight, remove the whole object. 11 | delete this.get; 12 | return; 13 | } 14 | 15 | // Hook needed; redefine it so that the support test is not executed again. 16 | 17 | return (this.get = hookFn).apply( this, arguments ); 18 | } 19 | }; 20 | } 21 | 22 | return addGetHookIf; 23 | 24 | }); 25 | -------------------------------------------------------------------------------- /app/bower_components/gumby/js/main.js: -------------------------------------------------------------------------------- 1 | // Gumby is ready to go 2 | Gumby.ready(function() { 3 | Gumby.log('Gumby is ready to go...', Gumby.dump()); 4 | 5 | // placeholder polyfil 6 | if(Gumby.isOldie || Gumby.$dom.find('html').hasClass('ie9')) { 7 | $('input, textarea').placeholder(); 8 | } 9 | 10 | // skip link and toggle on one element 11 | // when the skip link completes, trigger the switch 12 | $('#skip-switch').on('gumby.onComplete', function() { 13 | $(this).trigger('gumby.trigger'); 14 | }); 15 | 16 | // Oldie document loaded 17 | }).oldie(function() { 18 | Gumby.warn("This is an oldie browser..."); 19 | 20 | // Touch devices loaded 21 | }).touch(function() { 22 | Gumby.log("This is a touch enabled device..."); 23 | }); 24 | -------------------------------------------------------------------------------- /app/bower_components/angularjs-geolocation/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angularjs-geolocation", 3 | "version": "0.1.1", 4 | "homepage": "https://github.com/arunisrael/angularjs-geolocation", 5 | "authors": [ 6 | "Arun Israel " 7 | ], 8 | "description": "An angular.js wrapper around window.navigator.geolocation", 9 | "main": "./src/geolocation.js", 10 | "keywords": [ 11 | "geolocation", 12 | "angular.js" 13 | ], 14 | "license": "MIT", 15 | "ignore": [ 16 | "**/.*", 17 | "node_modules", 18 | "bower_components", 19 | "test", 20 | "tests" 21 | ], 22 | "dependencies": { 23 | "angular": "~1.x" 24 | }, 25 | "devDependencies": { 26 | "angular-mocks": "~1.x" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/bower_components/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 | "./effects", 26 | "./effects/animatedSelector", 27 | "./offset", 28 | "./dimensions", 29 | "./deprecated", 30 | "./exports/amd", 31 | "./exports/global" 32 | ], function( jQuery ) { 33 | 34 | return jQuery; 35 | 36 | }); 37 | -------------------------------------------------------------------------------- /app/bower_components/gumby/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gumbyframework/gumby", 3 | "description": "A Flexible, Responsive CSS Framework - Powered by Sass", 4 | "keywords": ["gumby", "gumby2", "css", "sass"], 5 | "homepage": "http://gumbyframework.com/", 6 | "license": "MIT", 7 | "authors" : [ 8 | { 9 | "name": "Digital Surgeons", 10 | "email": "gumby@digitalsurgeons.com", 11 | "homepage": "http://www.digitalsurgeons.com" 12 | } 13 | ], 14 | "support": { 15 | "issues": "https://github.com/GumbyFramework/Gumby/issues", 16 | "source": "https://github.com/GumbyFramework/Gumby", 17 | "forum": "https://plus.google.com/u/0/communities/108760896951473344451" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/bower_components/font-awesome/less/path.less: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: ~"url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}')"; 7 | src: ~"url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype')", 8 | ~"url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff')", 9 | ~"url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype')", 10 | ~"url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg')"; 11 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 12 | font-weight: normal; 13 | font-style: normal; 14 | } 15 | -------------------------------------------------------------------------------- /app/bower_components/font-awesome/scss/_path.scss: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); 7 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), 8 | url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), 9 | url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), 10 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); 11 | //src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 12 | font-weight: normal; 13 | font-style: normal; 14 | } 15 | -------------------------------------------------------------------------------- /app/home/near-me.js: -------------------------------------------------------------------------------- 1 | viewsModule.config(['$routeProvider', function($routeProvider) { 2 | $routeProvider.when("/near-me", { 3 | templateUrl : "./home/near-me.html", 4 | controller : 'NearMeCtrl' 5 | }); 6 | }]); 7 | 8 | viewsModule.controller('NearMeCtrl', ['$scope', 'geolocation', 'owmNearby', '$location', 'owmHistory', 9 | function($scope, geolocation, owmNearby, $location, owmHistory) { 10 | $scope.loading = true; 11 | 12 | owmHistory.push({ name : "Near Me", isNearMe : true }); 13 | geolocation.getLocation().then(function(data) { 14 | owmNearby(data.coords.latitude, data.coords.longitude).then(function(result) { 15 | $location.path('/cities/' + result.city.id); 16 | $scope.loading = false; 17 | }); 18 | }); 19 | }]); 20 | -------------------------------------------------------------------------------- /app/bower_components/font-awesome/less/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | .fa-icon-rotate(@degrees, @rotation) { 5 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation); 6 | -webkit-transform: rotate(@degrees); 7 | -moz-transform: rotate(@degrees); 8 | -ms-transform: rotate(@degrees); 9 | -o-transform: rotate(@degrees); 10 | transform: rotate(@degrees); 11 | } 12 | 13 | .fa-icon-flip(@horiz, @vert, @rotation) { 14 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1); 15 | -webkit-transform: scale(@horiz, @vert); 16 | -moz-transform: scale(@horiz, @vert); 17 | -ms-transform: scale(@horiz, @vert); 18 | -o-transform: scale(@horiz, @vert); 19 | transform: scale(@horiz, @vert); 20 | } 21 | -------------------------------------------------------------------------------- /app/bower_components/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 26 | // AMD (#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 | -------------------------------------------------------------------------------- /app/bower_components/underscore/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "underscore", 3 | "version": "1.6.0", 4 | "main": "underscore.js", 5 | "keywords": [ 6 | "util", 7 | "functional", 8 | "server", 9 | "client", 10 | "browser" 11 | ], 12 | "ignore": [ 13 | "underscore-min.js", 14 | "docs", 15 | "test", 16 | "*.yml", 17 | "*.map", 18 | "CNAME", 19 | "index.html", 20 | "favicon.ico", 21 | "CONTRIBUTING.md" 22 | ], 23 | "homepage": "https://github.com/jashkenas/underscore", 24 | "_release": "1.6.0", 25 | "_resolution": { 26 | "type": "version", 27 | "tag": "1.6.0", 28 | "commit": "1f4bf626f23a99f7a676f5076dc1b1475554c8f7" 29 | }, 30 | "_source": "git://github.com/jashkenas/underscore.git", 31 | "_target": "~1.6.0", 32 | "_originalSource": "underscore" 33 | } -------------------------------------------------------------------------------- /app/bower_components/font-awesome/scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | @mixin fa-icon-rotate($degrees, $rotation) { 5 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); 6 | -webkit-transform: rotate($degrees); 7 | -moz-transform: rotate($degrees); 8 | -ms-transform: rotate($degrees); 9 | -o-transform: rotate($degrees); 10 | transform: rotate($degrees); 11 | } 12 | 13 | @mixin fa-icon-flip($horiz, $vert, $rotation) { 14 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); 15 | -webkit-transform: scale($horiz, $vert); 16 | -moz-transform: scale($horiz, $vert); 17 | -ms-transform: scale($horiz, $vert); 18 | -o-transform: scale($horiz, $vert); 19 | transform: scale($horiz, $vert); 20 | } 21 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/functions/_icons.scss: -------------------------------------------------------------------------------- 1 | @function match($list, $icon) { 2 | @each $item in $list { 3 | $index: index($item, $icon); 4 | @if $index { 5 | $return: if($index == 1, 2, $index); 6 | @return nth($item, $return); 7 | } 8 | } 9 | @return false; 10 | } 11 | 12 | @mixin i($icon) { 13 | .#{$icon}.icon-left a:before, 14 | .#{$icon}.icon-right a:after, 15 | i.#{$icon}:before { 16 | content: "#{match($entypo-icons, $icon)}"; 17 | height: inherit; 18 | } 19 | } 20 | 21 | @mixin icon($icon) { 22 | @if (type-of($icon) == list) { 23 | @each $i in $icon { 24 | @include i($i); 25 | } 26 | } 27 | @elseif ($icon == all) { 28 | @each $icon in $entypo-icons { 29 | @include i(nth($icon, 1)); 30 | } 31 | } 32 | @else { 33 | @include i($icon); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/bower_components/angularjs-geolocation/dist/angularjs-geolocation.min.js: -------------------------------------------------------------------------------- 1 | /*! angularjs-geolocation 11-09-2013 */ 2 | "use strict";angular.module("geolocation",[]).constant("geolocation_msgs",{"errors.location.unsupportedBrowser":"Browser does not support location services","errors.location.notFound":"Unable to determine your location"}),angular.module("geolocation").factory("geolocation",["$q","$rootScope","$window","geolocation_msgs",function(a,b,c,d){return{getLocation:function(){var e=a.defer();return c.navigator&&c.navigator.geolocation?c.navigator.geolocation.getCurrentPosition(function(a){b.$apply(function(){e.resolve(a)})},function(){b.$broadcast("error",d["errors.location.notFound"]),b.$apply(function(){e.reject(d["errors.location.notFound"])})}):(b.$broadcast("error",d["errors.location.unsupportedBrowser"]),b.$apply(function(){e.reject(d["errors.location.unsupportedBrowser"])})),e.promise}}}]); -------------------------------------------------------------------------------- /app/bower_components/font-awesome/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "font-awesome", 3 | "description": "Font Awesome", 4 | "version": "4.1.0", 5 | "keywords": [], 6 | "homepage": "http://fontawesome.io", 7 | "dependencies": {}, 8 | "devDependencies": {}, 9 | "license": [ 10 | "OFL-1.1", 11 | "MIT", 12 | "CC-BY-3.0" 13 | ], 14 | "main": [ 15 | "./css/font-awesome.css", 16 | "./fonts/*" 17 | ], 18 | "ignore": [ 19 | "*/.*", 20 | "*.json", 21 | "src", 22 | "*.yml", 23 | "Gemfile", 24 | "Gemfile.lock", 25 | "*.md" 26 | ], 27 | "_release": "4.1.0", 28 | "_resolution": { 29 | "type": "version", 30 | "tag": "v4.1.0", 31 | "commit": "2649d91d18629bab071449b3bc4cb02761037a57" 32 | }, 33 | "_source": "git://github.com/FortAwesome/Font-Awesome.git", 34 | "_target": "~4.1.0", 35 | "_originalSource": "font-awesome", 36 | "_direct": true 37 | } -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/functions/_fancytiles.scss: -------------------------------------------------------------------------------- 1 | @function divide-cols($colnum) { 2 | @return 100%/$colnum; 3 | } 4 | 5 | 6 | @mixin fancytiles($desktop-columns, $tablet-columns: $desktop-columns, $mobile-columns: 1, $small-break: 0px, $medium-break: $tablet-device-width, $large-break: $row-max-width) { 7 | 8 | // These styles apply to all shift-columns 9 | display: inline-block; 10 | float: left; 11 | padding-left: $gutter / 2; 12 | padding-right: $gutter / 2; 13 | 14 | // IE8 fallback 15 | width: divide-cols($mobile-columns); 16 | 17 | @include respond("min-width: #{$small-break}") { 18 | width: divide-cols($mobile-columns); 19 | } 20 | 21 | @include respond("min-width: #{$medium-break}") { 22 | width: divide-cols($tablet-columns); 23 | } 24 | 25 | @include respond("min-width: #{$large-break}") { 26 | width: divide-cols($desktop-columns); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /app/bower_components/jquery/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "2.1.1", 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": "1.10.19", 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.1", 29 | "_resolution": { 30 | "type": "version", 31 | "tag": "2.1.1", 32 | "commit": "4dec426aa2a6cbabb1b064319ba7c272d594a688" 33 | }, 34 | "_source": "git://github.com/jquery/jquery.git", 35 | "_target": "~2.1.1", 36 | "_originalSource": "jquery" 37 | } -------------------------------------------------------------------------------- /app/bower_components/font-awesome/less/spinning.less: -------------------------------------------------------------------------------- 1 | // Spinning Icons 2 | // -------------------------- 3 | 4 | .@{fa-css-prefix}-spin { 5 | -webkit-animation: spin 2s infinite linear; 6 | -moz-animation: spin 2s infinite linear; 7 | -o-animation: spin 2s infinite linear; 8 | animation: spin 2s infinite linear; 9 | } 10 | 11 | @-moz-keyframes spin { 12 | 0% { -moz-transform: rotate(0deg); } 13 | 100% { -moz-transform: rotate(359deg); } 14 | } 15 | @-webkit-keyframes spin { 16 | 0% { -webkit-transform: rotate(0deg); } 17 | 100% { -webkit-transform: rotate(359deg); } 18 | } 19 | @-o-keyframes spin { 20 | 0% { -o-transform: rotate(0deg); } 21 | 100% { -o-transform: rotate(359deg); } 22 | } 23 | @keyframes spin { 24 | 0% { 25 | -webkit-transform: rotate(0deg); 26 | transform: rotate(0deg); 27 | } 28 | 100% { 29 | -webkit-transform: rotate(359deg); 30 | transform: rotate(359deg); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/bower_components/font-awesome/scss/_spinning.scss: -------------------------------------------------------------------------------- 1 | // Spinning Icons 2 | // -------------------------- 3 | 4 | .#{$fa-css-prefix}-spin { 5 | -webkit-animation: spin 2s infinite linear; 6 | -moz-animation: spin 2s infinite linear; 7 | -o-animation: spin 2s infinite linear; 8 | animation: spin 2s infinite linear; 9 | } 10 | 11 | @-moz-keyframes spin { 12 | 0% { -moz-transform: rotate(0deg); } 13 | 100% { -moz-transform: rotate(359deg); } 14 | } 15 | @-webkit-keyframes spin { 16 | 0% { -webkit-transform: rotate(0deg); } 17 | 100% { -webkit-transform: rotate(359deg); } 18 | } 19 | @-o-keyframes spin { 20 | 0% { -o-transform: rotate(0deg); } 21 | 100% { -o-transform: rotate(359deg); } 22 | } 23 | @keyframes spin { 24 | 0% { 25 | -webkit-transform: rotate(0deg); 26 | transform: rotate(0deg); 27 | } 28 | 100% { 29 | -webkit-transform: rotate(359deg); 30 | transform: rotate(359deg); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/cities/city.js: -------------------------------------------------------------------------------- 1 | viewsModule.config(['$routeProvider', function($routeProvider) { 2 | $routeProvider.when("/cities/:city", { 3 | templateUrl : "./cities/city.html", 4 | controller : 'CityCtrl', 5 | resolve : { 6 | cityDetails : ['owmFindCity', '$route', function(owmFindCity, $route) { 7 | return owmFindCity($route.current.params.city); 8 | }] 9 | } 10 | }); 11 | }]); 12 | 13 | viewsModule.controller('CityCtrl', ['$scope', 'cityDetails', 'owmHistory', 14 | function($scope, cityDetails, owmHistory) { 15 | owmHistory.push(cityDetails.city); 16 | $scope.city = cityDetails.city; 17 | if($scope.city.country == 'CA') { 18 | $scope.city.country = 'Canada'; 19 | } 20 | $scope.forecast = _.map(cityDetails.list, function(item) { 21 | var a = item.dt_txt.split(/[^0-9]/); 22 | item.dt_txt = new Date (a[0],a[1]-1,a[2],a[3],a[4],a[5] ); 23 | return item; 24 | }); 25 | }]) 26 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/gumby.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Gumby Framework 3 | * --------------- 4 | * 5 | * Follow @gumbycss on twitter and spread the love. 6 | * We worked super hard on making this awesome and released it to the web. 7 | * All we ask is you leave this intact. #gumbyisawesome 8 | * 9 | * Gumby Framework 10 | * http://gumbyframework.com 11 | * 12 | * Built with love by your friends @digitalsurgeons 13 | * http://www.digitalsurgeons.com 14 | * 15 | * Free to use under the MIT license. 16 | * http://www.opensource.org/licenses/mit-license.php 17 | */ 18 | 19 | @charset "UTF-8"; 20 | 21 | @import "modular-scale"; 22 | 23 | @import "var/settings"; 24 | @import "var/lists"; 25 | @import "var/icons/entypo"; 26 | 27 | @import "compass"; 28 | @import "compass/reset"; 29 | 30 | @import "functions/all"; 31 | 32 | @import "base"; 33 | @import "fonts"; 34 | @import "typography"; 35 | @import "grid"; 36 | @import "ui/all"; 37 | @import "shame"; 38 | 39 | @import "custom"; 40 | -------------------------------------------------------------------------------- /app/bower_components/angularjs-geolocation/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angularjs-geolocation", 3 | "version": "0.1.1", 4 | "homepage": "https://github.com/arunisrael/angularjs-geolocation", 5 | "authors": [ 6 | "Arun Israel " 7 | ], 8 | "description": "An angular.js wrapper around window.navigator.geolocation", 9 | "main": "./src/geolocation.js", 10 | "keywords": [ 11 | "geolocation", 12 | "angular.js" 13 | ], 14 | "license": "MIT", 15 | "ignore": [ 16 | "**/.*", 17 | "node_modules", 18 | "bower_components", 19 | "test", 20 | "tests" 21 | ], 22 | "dependencies": { 23 | "angular": "~1.x" 24 | }, 25 | "devDependencies": { 26 | "angular-mocks": "~1.x" 27 | }, 28 | "_release": "0.1.1", 29 | "_resolution": { 30 | "type": "version", 31 | "tag": "0.1.1", 32 | "commit": "4174fca718da6dacc9de1fbc5deb9a9227783956" 33 | }, 34 | "_source": "git://github.com/arunisrael/angularjs-geolocation.git", 35 | "_target": "~0.1.1", 36 | "_originalSource": "angularjs-geolocation" 37 | } -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/functions/_button-size.scss: -------------------------------------------------------------------------------- 1 | @mixin button-size($size) { 2 | $n: 0; 3 | @if $size == xlarge { 4 | $n: $xlarge-button-font-size; 5 | } 6 | @if $size == large { 7 | $n: $large-button-font-size; 8 | } 9 | @if $size == medium { 10 | $n: $medium-button-font-size; 11 | } 12 | @if $size == small { 13 | $n: $small-button-font-size; 14 | } 15 | $button-font-size: $n; 16 | $button-height: ms($ratio, $button-font-size) + 1; 17 | $line-height: $button-height - 2; 18 | 19 | @include font-size($button-font-size); 20 | @include line-and-height($button-height); 21 | 22 | a { 23 | position:relative; 24 | padding: 0 ms(0, $button-font-size); 25 | } 26 | 27 | &.icon-left { 28 | a { 29 | padding-left: $button-height; 30 | &:before { 31 | left: $button-font-size / 1.5; 32 | } 33 | } 34 | } 35 | 36 | &.icon-right { 37 | a { 38 | padding-right: $button-height; 39 | &:after { 40 | right: $button-font-size / 1.5; 41 | } 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Weather App 2 | 3 | > A simple app built with angular, underscore and gulp to query weather information for the top 100 US cities. 4 | 5 | The application makes use of the Open Weather API. It's forked from this [original](https://github.com/Thinkful/angular-weather-app) 6 | implementation with additions to add critical-path CSS optimisation, ng-annotations and other minor fixes. 7 | 8 | Live demos of both a [normal](http://addyosmani.github.io/critical-css-weather-app/output/normal/) build and [critical-css optimized](http://addyosmani.github.io/critical-css-weather-app/output/critical) build are both available. 9 | 10 | Before: 11 | 12 | ![](http://i.imgur.com/WCX8ke2.png) 13 | 14 | After: 15 | 16 | ![](http://i.imgur.com/oWHFPhb.png) 17 | 18 | ## Installation 19 | 20 | * `cd` into the project directory and run `npm install` 21 | * Then run `gulp` 22 | * Open a browser at `localhost:8080`. 23 | 24 | ## Usage 25 | 26 | Normal build: 27 | 28 | ```sh 29 | $ gulp build 30 | ``` 31 | 32 | Build with critical-path CSS: 33 | 34 | ```sh 35 | $ gulp critical 36 | ``` 37 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/_fonts.scss: -------------------------------------------------------------------------------- 1 | /* Fonts */ 2 | 3 | // Import Google Web Fonts 4 | @import url(//fonts.googleapis.com/css?family=Open+Sans:400,300,600,700); 5 | 6 | 7 | // Set local icon font 8 | @font-face { 9 | font-family: '#{$icons}'; 10 | font-style: normal; 11 | font-weight: 400; 12 | src: url(../fonts/icons/#{$icons}.eot); 13 | src: url('../fonts/icons/#{$icons}.eot?#iefix') format('ie9-skip-eot'), 14 | url('../fonts/icons/#{$icons}.woff') format('woff'), 15 | url('../fonts/icons/#{$icons}.ttf') format('truetype'); 16 | } 17 | 18 | // To include your own, local copies of fonts, use the following template 19 | // 20 | //@font-face { 21 | // font-family: '#{$some-font-variable}'; 22 | // font-style: normal; 23 | // font-weight: 400; 24 | // src: url(../fonts/icons/#{$some-font-variable}.eot); 25 | // src: url('../fonts/icons/#{$some-font-variable}.eot?#iefix') format('ie9-skip-eot'), 26 | // url('../fonts/icons/#{$some-font-variable}.woff') format('woff'), 27 | // url('../fonts/icons/#{$some-font-variable}.ttf') format('truetype'); 28 | //} 29 | -------------------------------------------------------------------------------- /app/bower_components/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 | -------------------------------------------------------------------------------- /app/bower_components/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 | -------------------------------------------------------------------------------- /app/bower_components/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 | // #11217 - WebKit loses check when the name is after the checked attribute 11 | // Support: Windows Web Apps (WWA) 12 | // `name` and `type` need .setAttribute for WWA 13 | input.setAttribute( "type", "radio" ); 14 | input.setAttribute( "checked", "checked" ); 15 | input.setAttribute( "name", "t" ); 16 | 17 | div.appendChild( input ); 18 | 19 | // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 20 | // old WebKit doesn't clone checked state correctly in fragments 21 | support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; 22 | 23 | // Make sure textarea (and checkbox) defaultValue is properly cloned 24 | // Support: IE9-IE11+ 25 | div.innerHTML = ""; 26 | support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; 27 | })(); 28 | 29 | return support; 30 | 31 | }); 32 | -------------------------------------------------------------------------------- /app/bower_components/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.x, Android 2.3 13 | // Check the default checkbox/radio value ("" on old WebKit; "on" elsewhere) 14 | support.checkOn = input.value !== ""; 15 | 16 | // Must access the parent to make an option select properly 17 | // Support: IE9, IE10 18 | support.optSelected = opt.selected; 19 | 20 | // Make sure that the options inside disabled selects aren't marked as disabled 21 | // (WebKit marks them as disabled) 22 | select.disabled = true; 23 | support.optDisabled = !opt.disabled; 24 | 25 | // Check if an input maintains its value after becoming a radio 26 | // Support: IE9, IE10 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 | -------------------------------------------------------------------------------- /app/bower_components/underscore/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "underscore", 3 | "description" : "JavaScript's functional programming helper library.", 4 | "homepage" : "http://underscorejs.org", 5 | "keywords" : ["util", "functional", "server", "client", "browser"], 6 | "author" : "Jeremy Ashkenas ", 7 | "repository" : {"type": "git", "url": "git://github.com/jashkenas/underscore.git"}, 8 | "main" : "underscore.js", 9 | "version" : "1.6.0", 10 | "devDependencies": { 11 | "docco": "0.6.x", 12 | "phantomjs": "1.9.0-1", 13 | "uglify-js": "2.4.x" 14 | }, 15 | "scripts": { 16 | "test": "phantomjs test/vendor/runner.js test/index.html?noglobals=true", 17 | "build": "uglifyjs underscore.js -c \"evaluate=false\" --comments \"/ .*/\" -m --source-map underscore-min.map -o underscore-min.js", 18 | "doc": "docco underscore.js" 19 | }, 20 | "licenses": [ 21 | { 22 | "type": "MIT", 23 | "url": "https://raw.github.com/jashkenas/underscore/master/LICENSE" 24 | } 25 | ], 26 | "files" : ["underscore.js", "underscore-min.js", "LICENSE"] 27 | } 28 | -------------------------------------------------------------------------------- /app/bower_components/angularjs-geolocation/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013 Arun Israel 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 | -------------------------------------------------------------------------------- /output/normal/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Open Weather Map Application 8 | 9 | 10 | 11 | 17 | 18 | 31 | 32 |
33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /app/bower_components/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 | -------------------------------------------------------------------------------- /app/bower_components/underscore/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative 2 | Reporters & Editors 3 | 4 | Permission is hereby granted, free of charge, to any person 5 | obtaining a copy of this software and associated documentation 6 | files (the "Software"), to deal in the Software without 7 | restriction, including without limitation the rights to use, 8 | copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the 10 | Software is furnished to do so, subject to the following 11 | conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 | OTHER DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /app/bower_components/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 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/_base.scss: -------------------------------------------------------------------------------- 1 | /* Base Styles */ 2 | 3 | @import "compass/typography/vertical_rhythm"; 4 | @include establish-baseline; 5 | 6 | * { @include box-sizing(border-box); } 7 | 8 | body { 9 | background: $global-bg-color; 10 | font-family: $font-family; 11 | font-weight: $body-font-weight; 12 | color: $body-font-color; 13 | position: relative; 14 | -webkit-font-smoothing: $font-smoothing; 15 | -moz-osx-font-smoothing: grayscale; 16 | @include respond(all-phones) { 17 | -webkit-text-size-adjust: none; 18 | -ms-text-size-adjust: none; 19 | width: 100%; 20 | min-width: 0; 21 | } 22 | } 23 | 24 | html, body { 25 | height: 100%; 26 | } 27 | 28 | .hide { 29 | display: none; 30 | } 31 | 32 | .hide.active, .show { 33 | display: block; 34 | } 35 | 36 | // include all entypo icon classes 37 | @include icon(all); 38 | 39 | // .fixed elements will be static at supplied breakpoint 40 | // set arg to false for permanent .fixed elements 41 | @include fixed(portrait-tablets); 42 | 43 | .text-center { @extend %text-center; } 44 | .text-left { @extend %text-left; } 45 | .text-right { @extend %text-right; } 46 | // Partial to align Text Left or Right 47 | %text-center { text-align: center; } 48 | %text-left { text-align: left; } 49 | %text-right { text-align: right; } 50 | -------------------------------------------------------------------------------- /app/bower_components/underscore/README.md: -------------------------------------------------------------------------------- 1 | __ 2 | /\ \ __ 3 | __ __ ___ \_\ \ __ _ __ ____ ___ ___ _ __ __ /\_\ ____ 4 | /\ \/\ \ /' _ `\ /'_ \ /'__`\/\ __\/ ,__\ / ___\ / __`\/\ __\/'__`\ \/\ \ /',__\ 5 | \ \ \_\ \/\ \/\ \/\ \ \ \/\ __/\ \ \//\__, `\/\ \__//\ \ \ \ \ \//\ __/ __ \ \ \/\__, `\ 6 | \ \____/\ \_\ \_\ \___,_\ \____\\ \_\\/\____/\ \____\ \____/\ \_\\ \____\/\_\ _\ \ \/\____/ 7 | \/___/ \/_/\/_/\/__,_ /\/____/ \/_/ \/___/ \/____/\/___/ \/_/ \/____/\/_//\ \_\ \/___/ 8 | \ \____/ 9 | \/___/ 10 | 11 | Underscore.js is a utility-belt library for JavaScript that provides 12 | support for the usual functional suspects (each, map, reduce, filter...) 13 | without extending any core JavaScript objects. 14 | 15 | For Docs, License, Tests, and pre-packed downloads, see: 16 | http://underscorejs.org 17 | 18 | Underscore is an open-sourced component of DocumentCloud: 19 | https://github.com/documentcloud 20 | 21 | Many thanks to our contributors: 22 | https://github.com/jashkenas/underscore/contributors 23 | -------------------------------------------------------------------------------- /app/bower_components/angularjs-geolocation/Gruntfile.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = function(grunt) { 4 | grunt.initConfig({ 5 | pkg: grunt.file.readJSON('package.json'), 6 | jshint: { 7 | files: ['Gruntfile.js', 'src/**/*.js', 'test/**/*.js'], 8 | options: { 9 | // options here to override JSHint defaults 10 | globalstrict: true, 11 | globals: { 12 | jQuery: true, 13 | console: true, 14 | module: true, 15 | document: true, 16 | expect: true, 17 | it: true, 18 | spyOn: true, 19 | beforeEach: true, 20 | angular: true, 21 | inject: true, 22 | describe: true 23 | } 24 | } 25 | }, 26 | uglify: { 27 | options: { 28 | banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n' 29 | }, 30 | dist: { 31 | files: { 32 | 'dist/<%= pkg.name %>.min.js': 'src/geolocation.js' 33 | } 34 | } 35 | }, 36 | karma: { 37 | unit: { 38 | configFile: 'karma.conf.js' 39 | } 40 | } 41 | }); 42 | 43 | grunt.loadNpmTasks('grunt-contrib-jshint'); 44 | grunt.loadNpmTasks('grunt-contrib-uglify'); 45 | grunt.loadNpmTasks('grunt-karma'); 46 | grunt.registerTask('default', ['jshint', 'karma','uglify']); 47 | }; -------------------------------------------------------------------------------- /app/bower_components/gumby/config.rb: -------------------------------------------------------------------------------- 1 | # Require any additional compass plugins here. 2 | 3 | # Tell compass where to find local extensions 4 | # If you followed directions and ran 'gem install modular-scale' comment the next two lines out: 5 | extensions_dir = "sass/extensions" 6 | 7 | Compass::Frameworks.register('modular-scale', :path => File.expand_path("#{extensions_dir}/modular-scale")) 8 | 9 | # Uncomment these to use regular Ruby gems. 10 | # require 'modular-scale' 11 | # require 'sassy-math' 12 | 13 | # Set this to the root of your project when deployed: 14 | http_path = "/" 15 | css_dir = "css" 16 | sass_dir = "sass" 17 | images_dir = "img" 18 | 19 | # You can select your preferred output style here (can be overridden via the command line) :nested or :expanded or :compact or :compressed: 20 | output_style = :compact 21 | 22 | # To enable relative paths to assets via compass helper functions. Uncomment: 23 | # relative_assets = true 24 | 25 | # To disable debugging comments that display the original location of your selectors. Uncomment: 26 | line_comments = false 27 | 28 | 29 | # If you prefer the indented syntax, you might want to regenerate this 30 | # project again passing --syntax sass, or you can uncomment this: 31 | # preferred_syntax = :sass 32 | # and then run: 33 | # sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass 34 | -------------------------------------------------------------------------------- /app/bower_components/gumby/js/libs/gumby.init.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Gumby Init 3 | */ 4 | 5 | !function($) { 6 | 7 | 'use strict'; 8 | 9 | // not touch device or no touch events required so auto initialize here 10 | if((!Gumby.touchDevice || !Gumby.touchEvents) && Gumby.autoInit) { 11 | window.Gumby.init(); 12 | 13 | // load jQuery mobile touch events 14 | } else if(Gumby.touchEvents && Gumby.touchDevice) { 15 | Gumby.debug('Loading jQuery mobile touch events'); 16 | // set timeout to 2sec 17 | yepnope.errorTimeout = 2000; 18 | Modernizr.load({ 19 | test: Modernizr.touch, 20 | yep: Gumby.touchEvents+'/jquery.mobile.custom.min.js', 21 | complete: function() { 22 | // error loading jQuery mobile 23 | if(!$.mobile) { 24 | Gumby.error('Error loading jQuery mobile touch events'); 25 | } 26 | 27 | // if not auto initializing 28 | // this will allow helpers to fire when initialized 29 | Gumby.touchEventsLoaded = true; 30 | 31 | // auto initialize 32 | if(Gumby.autoInit) { 33 | window.Gumby.init(); 34 | 35 | // if already manually initialized then fire helpers 36 | } else if(Gumby.uiModulesReady) { 37 | Gumby.helpers(); 38 | } 39 | } 40 | }); 41 | } 42 | 43 | // if AMD return Gumby object to define 44 | if(typeof define == "function" && define.amd) { 45 | define(window.Gumby); 46 | } 47 | }(jQuery); 48 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/functions/_responsivity.scss: -------------------------------------------------------------------------------- 1 | // Responsive Mixins 2 | 3 | @mixin respond($media) { 4 | @if $media == portrait-phones { 5 | @media only screen and (max-width: $min-device-width) { @content; } 6 | } 7 | @else if $media == landscape-phones { 8 | @media only screen and (min-width: breakpoint($min-device-width)) and (max-width: breakpoint($tablet-device-width)) { @content; } 9 | } 10 | @else if $media == all-phones { 11 | @media only screen and (max-width: breakpoint($tablet-device-width)) { @content; } 12 | } 13 | @else if $media == portrait-tablets { 14 | @media only screen and (max-width: $tablet-device-width) { @content; } 15 | } 16 | @else if $media == tablets { 17 | @media only screen and (min-width: $tablet-device-width) and (max-width: $document-width - 1) { @content; } 18 | } 19 | @else if $media == desktop { 20 | @media only screen and (min-width: $tablet-device-width) { @content; } 21 | } 22 | @else if $media == document-width { 23 | @media only screen and (max-width: $document-width + 20) { @content; } 24 | } 25 | @else if $media == large-screens { 26 | @media only screen and (min-width: $max-device-width) { @content; } 27 | } 28 | @else if $media == print { 29 | @media print { @content; } 30 | } 31 | @else { 32 | @media only screen and ('#{$media}') { @content; } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/bower_components/font-awesome/scss/_extras.scss: -------------------------------------------------------------------------------- 1 | /* EXTRAS 2 | * -------------------------- */ 3 | 4 | /* Stacked and layered icon */ 5 | 6 | /* Animated rotating icon */ 7 | .#{$fa-css-prefix}-spin { 8 | -webkit-animation: spin 2s infinite linear; 9 | -moz-animation: spin 2s infinite linear; 10 | -o-animation: spin 2s infinite linear; 11 | animation: spin 2s infinite linear; 12 | } 13 | 14 | @-moz-keyframes spin { 15 | 0% { -moz-transform: rotate(0deg); } 16 | 100% { -moz-transform: rotate(359deg); } 17 | } 18 | @-webkit-keyframes spin { 19 | 0% { -webkit-transform: rotate(0deg); } 20 | 100% { -webkit-transform: rotate(359deg); } 21 | } 22 | @-o-keyframes spin { 23 | 0% { -o-transform: rotate(0deg); } 24 | 100% { -o-transform: rotate(359deg); } 25 | } 26 | @-ms-keyframes spin { 27 | 0% { -ms-transform: rotate(0deg); } 28 | 100% { -ms-transform: rotate(359deg); } 29 | } 30 | @keyframes spin { 31 | 0% { transform: rotate(0deg); } 32 | 100% { transform: rotate(359deg); } 33 | } 34 | 35 | 36 | // Icon rotations & flipping 37 | // ------------------------- 38 | 39 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } 40 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } 41 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } 42 | 43 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } 44 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } 45 | -------------------------------------------------------------------------------- /app/bower_components/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 | -------------------------------------------------------------------------------- /app/bower_components/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(" 19 | ``` 20 | 21 | ## Documentation 22 | 23 | Documentation is available on the 24 | [AngularJS docs site](http://docs.angularjs.org/). 25 | 26 | ## License 27 | 28 | The MIT License 29 | 30 | Copyright (c) 2010-2012 Google, Inc. http://angularjs.org 31 | 32 | Permission is hereby granted, free of charge, to any person obtaining a copy 33 | of this software and associated documentation files (the "Software"), to deal 34 | in the Software without restriction, including without limitation the rights 35 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 36 | copies of the Software, and to permit persons to whom the Software is 37 | furnished to do so, subject to the following conditions: 38 | 39 | The above copyright notice and this permission notice shall be included in 40 | all copies or substantial portions of the Software. 41 | 42 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 43 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 44 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 45 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 46 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 47 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 48 | THE SOFTWARE. 49 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/wrap.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./core", 3 | "./core/init", 4 | "./traversing" // parent, contents 5 | ], function( jQuery ) { 6 | 7 | jQuery.fn.extend({ 8 | wrapAll: function( html ) { 9 | var wrap; 10 | 11 | if ( jQuery.isFunction( html ) ) { 12 | return this.each(function( i ) { 13 | jQuery( this ).wrapAll( html.call(this, i) ); 14 | }); 15 | } 16 | 17 | if ( this[ 0 ] ) { 18 | 19 | // The elements to wrap the target around 20 | wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); 21 | 22 | if ( this[ 0 ].parentNode ) { 23 | wrap.insertBefore( this[ 0 ] ); 24 | } 25 | 26 | wrap.map(function() { 27 | var elem = this; 28 | 29 | while ( elem.firstElementChild ) { 30 | elem = elem.firstElementChild; 31 | } 32 | 33 | return elem; 34 | }).append( this ); 35 | } 36 | 37 | return this; 38 | }, 39 | 40 | wrapInner: function( html ) { 41 | if ( jQuery.isFunction( html ) ) { 42 | return this.each(function( i ) { 43 | jQuery( this ).wrapInner( html.call(this, i) ); 44 | }); 45 | } 46 | 47 | return this.each(function() { 48 | var self = jQuery( this ), 49 | contents = self.contents(); 50 | 51 | if ( contents.length ) { 52 | contents.wrapAll( html ); 53 | 54 | } else { 55 | self.append( html ); 56 | } 57 | }); 58 | }, 59 | 60 | wrap: function( html ) { 61 | var isFunction = jQuery.isFunction( html ); 62 | 63 | return this.each(function( i ) { 64 | jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); 65 | }); 66 | }, 67 | 68 | unwrap: function() { 69 | return this.parent().each(function() { 70 | if ( !jQuery.nodeName( this, "body" ) ) { 71 | jQuery( this ).replaceWith( this.childNodes ); 72 | } 73 | }).end(); 74 | } 75 | }); 76 | 77 | return jQuery; 78 | }); 79 | -------------------------------------------------------------------------------- /app/bower_components/angularjs-geolocation/README.md: -------------------------------------------------------------------------------- 1 | AngularJS-Geolocation 2 | ========= 3 | 4 | An angular.js wrapper around window.navigator.geolocation 5 | 6 | Bower 7 | -- 8 | This module is available as bower package, install it with this command: 9 | 10 | ```bash 11 | bower install angularjs-geolocation 12 | ``` 13 | or 14 | 15 | ```bash 16 | bower install git://github.com/arunisrael/angularjs-geolocation.git 17 | ``` 18 | 19 | Usage 20 | -- 21 | - Add the geolocation module as dependency 22 | - Inject the geolocation service (yes, it has the same name) 23 | - Invoke the getLocation method on the geolocation service to retrieve a promise 24 | - The promise will be resolved with the position returned by window.navigator.getCurrentPosition if the user allows the browser to access their location 25 | - The promise will be rejected if the user rejects location access or the browser does not support it 26 | 27 | Example 28 | -- 29 | ``` 30 | angular.module('barterApp',['geolocation']) 31 | .controller('geoCtrl', function ($scope,geolocation) { 32 | geolocation.getLocation().then(function(data){ 33 | $scope.coords = {lat:data.coords.latitude, long:data.coords.longitude}; 34 | }); 35 | }); 36 | ``` 37 | 38 | Demo 39 | -- 40 | See this [plunker](http://embed.plnkr.co/TM71LBh6ttYotOo6t7oX/preview) that displays your latitude/longitude 41 | 42 | Error Handling 43 | -- 44 | The geolocation module defines a geolocation-msgs constant holding error msgs that are broadcast if the user rejects location access: 45 | ``` 46 | $rootScope.$broadcast('error',CONSTANTS['errors.location.notFound']); 47 | ``` 48 | 49 | or if the browser does not support geolocation: 50 | ``` 51 | $rootScope.$broadcast('error',geolocation_msgs['errors.location.unsupportedBrowser']); 52 | ``` 53 | 54 | Testing 55 | -- 56 | ``` 57 | grunt test 58 | ``` 59 | 60 | License 61 | -- 62 | MIT 63 | -------------------------------------------------------------------------------- /app/bower_components/gumby/sass/ui/_toggles.scss: -------------------------------------------------------------------------------- 1 | /* Toggles */ 2 | 3 | .drawer { 4 | position: relative; 5 | width: 100%; 6 | max-height: 0; 7 | background: $drawer-background-color; 8 | @include box-shadow( 9 | inset $drawer-inner-shadow-x-offset #{-$drawer-inner-shadow-y-offset} $drawer-inner-shadow-blur $drawer-inner-shadow-color, 10 | inset $drawer-inner-shadow-x-offset $drawer-inner-shadow-y-offset $drawer-inner-shadow-blur $drawer-inner-shadow-color); 11 | ; 12 | overflow: hidden; 13 | @include transition-duration(.3s); 14 | &.active { 15 | height: auto; 16 | max-height: 800px; 17 | @include transition-duration(.5s); 18 | } 19 | } 20 | 21 | .modal { 22 | width: 100%; 23 | height: 100%; 24 | position: fixed; 25 | top: 0; 26 | left: 0; 27 | z-index: 999999; 28 | background: rgb(0, 0, 0); 29 | background: $modal-overlay-color; 30 | > .content { 31 | width: 50%; 32 | min-height: 50%; 33 | max-height: 65%; 34 | position: relative; 35 | top: 25%; 36 | margin: 0 auto; 37 | padding: $gutter-in-px; 38 | background: $modal-window-color; 39 | z-index: 2; 40 | overflow: auto; 41 | @include respond(portrait-tablets) { 42 | width: 80%; 43 | min-height: 80%; 44 | max-height: 80%; 45 | top: 10%; 46 | } 47 | @include respond(all-phones) { 48 | width: 92.5%; 49 | min-height: 92.5%; 50 | max-height: 92.5%; 51 | top: 3.75%; 52 | } 53 | > .close { 54 | position: absolute; 55 | top: 10px; 56 | right: 10px; 57 | cursor: pointer; 58 | z-index: 3; 59 | } 60 | } 61 | &, > .content { 62 | visibility: hidden; 63 | @include opacity(0); 64 | } 65 | &.active { 66 | @include transition-property(opacity); 67 | @include transition-duration(.3s); 68 | &, > .content { 69 | visibility: visible; 70 | @include opacity(1); 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /app/owm-library.js: -------------------------------------------------------------------------------- 1 | angular.module('owmLibrary', []) 2 | 3 | .constant('OWM_API_PREFIX', 'http://api.openweathermap.org/data/2.5/forecast') 4 | .constant('OWM_LAT_LNG_PATH', '/?lat={{ lat }}&lon={{ lng }}') 5 | .constant('OWM_CITY_PATH', '/?id={{ id }}') 6 | .constant('OWM_FIND_CITY_PATH', '/?q={{ q }}') 7 | .constant('OWM_CITIES_JSON_FILE', './owm-cities.json') 8 | 9 | .factory('owmUSCities', ['$http', '$q', 'OWM_CITIES_JSON_FILE', 10 | function($http, $q, OWM_CITIES_JSON_FILE) { 11 | return function() { 12 | return $http.get(OWM_CITIES_JSON_FILE, { cache : true }) 13 | .success(function(cities) { 14 | defer.resolve(cities); 15 | }); 16 | } 17 | }]) 18 | 19 | .factory('owmRequest', ['$http', '$q', 'OWM_API_PREFIX', 20 | function($http, $q, OWM_API_PREFIX) { 21 | return function(path) { 22 | return $http.get(OWM_API_PREFIX + path) 23 | .success(function(data) { 24 | defer.resolve(data); 25 | }); 26 | } 27 | }]) 28 | 29 | .factory('owmFindCity', ['owmRequest', '$interpolate', 'OWM_FIND_CITY_PATH', 'OWM_CITY_PATH', 30 | function(owmRequest, $interpolate, OWM_FIND_CITY_PATH, OWM_CITY_PATH) { 31 | return function(q) { 32 | var path; 33 | if(q.match(/^\d+$/)) { 34 | path = $interpolate(OWM_CITY_PATH)({ 35 | id : q 36 | }); 37 | } else { 38 | path = $interpolate(OWM_FIND_CITY_PATH)({ 39 | q : q 40 | }); 41 | } 42 | return owmRequest(path); 43 | } 44 | }]) 45 | 46 | .factory('owmNearby', ['owmRequest', '$interpolate', 'OWM_LAT_LNG_PATH', 47 | function(owmRequest, $interpolate, OWM_LAT_LNG_PATH) { 48 | return function(lat, lng) { 49 | var path = $interpolate(OWM_LAT_LNG_PATH)({ 50 | lat : lat, 51 | lng : lng 52 | }); 53 | return owmRequest(path); 54 | } 55 | }]) 56 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/dimensions.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./core", 3 | "./core/access", 4 | "./css" 5 | ], function( jQuery, access ) { 6 | 7 | // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods 8 | jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { 9 | jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) { 10 | // margin is only for outerHeight, outerWidth 11 | jQuery.fn[ funcName ] = function( margin, value ) { 12 | var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), 13 | extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); 14 | 15 | return access( this, function( elem, type, value ) { 16 | var doc; 17 | 18 | if ( jQuery.isWindow( elem ) ) { 19 | // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there 20 | // isn't a whole lot we can do. See pull request at this URL for discussion: 21 | // https://github.com/jquery/jquery/pull/764 22 | return elem.document.documentElement[ "client" + name ]; 23 | } 24 | 25 | // Get document width or height 26 | if ( elem.nodeType === 9 ) { 27 | doc = elem.documentElement; 28 | 29 | // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], 30 | // whichever is greatest 31 | return Math.max( 32 | elem.body[ "scroll" + name ], doc[ "scroll" + name ], 33 | elem.body[ "offset" + name ], doc[ "offset" + name ], 34 | doc[ "client" + name ] 35 | ); 36 | } 37 | 38 | return value === undefined ? 39 | // Get width or height on the element, requesting but not forcing parseFloat 40 | jQuery.css( elem, type, extra ) : 41 | 42 | // Set width or height on the element 43 | jQuery.style( elem, type, value, extra ); 44 | }, type, chainable ? margin : undefined, chainable, null ); 45 | }; 46 | }); 47 | }); 48 | 49 | return jQuery; 50 | }); 51 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/ajax/load.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../core/parseHTML", 4 | "../ajax", 5 | "../traversing", 6 | "../manipulation", 7 | "../selector", 8 | // Optional event/alias dependency 9 | "../event/alias" 10 | ], function( jQuery ) { 11 | 12 | // Keep a copy of the old load method 13 | var _load = jQuery.fn.load; 14 | 15 | /** 16 | * Load a url into a page 17 | */ 18 | jQuery.fn.load = function( url, params, callback ) { 19 | if ( typeof url !== "string" && _load ) { 20 | return _load.apply( this, arguments ); 21 | } 22 | 23 | var selector, type, response, 24 | self = this, 25 | off = url.indexOf(" "); 26 | 27 | if ( off >= 0 ) { 28 | selector = jQuery.trim( url.slice( off ) ); 29 | url = url.slice( 0, off ); 30 | } 31 | 32 | // If it's a function 33 | if ( jQuery.isFunction( params ) ) { 34 | 35 | // We assume that it's the callback 36 | callback = params; 37 | params = undefined; 38 | 39 | // Otherwise, build a param string 40 | } else if ( params && typeof params === "object" ) { 41 | type = "POST"; 42 | } 43 | 44 | // If we have elements to modify, make the request 45 | if ( self.length > 0 ) { 46 | jQuery.ajax({ 47 | url: url, 48 | 49 | // if "type" variable is undefined, then "GET" method will be used 50 | type: type, 51 | dataType: "html", 52 | data: params 53 | }).done(function( responseText ) { 54 | 55 | // Save response for use in complete callback 56 | response = arguments; 57 | 58 | self.html( selector ? 59 | 60 | // If a selector was specified, locate the right elements in a dummy div 61 | // Exclude scripts to avoid IE 'Permission Denied' errors 62 | jQuery("
").append( jQuery.parseHTML( responseText ) ).find( selector ) : 63 | 64 | // Otherwise use the full result 65 | responseText ); 66 | 67 | }).complete( callback && function( jqXHR, status ) { 68 | self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] ); 69 | }); 70 | } 71 | 72 | return this; 73 | }; 74 | 75 | }); 76 | -------------------------------------------------------------------------------- /app/bower_components/angular-route/README.md: -------------------------------------------------------------------------------- 1 | # bower-angular-route 2 | 3 | This repo is for distribution on `bower`. The source for this module is in the 4 | [main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngRoute). 5 | Please file issues and pull requests against that repo. 6 | 7 | ## Install 8 | 9 | Install with `bower`: 10 | 11 | ```shell 12 | bower install angular-route 13 | ``` 14 | 15 | Add a ` 19 | ``` 20 | 21 | And add `ngRoute` as a dependency for your app: 22 | 23 | ```javascript 24 | angular.module('myApp', ['ngRoute']); 25 | ``` 26 | 27 | ## Documentation 28 | 29 | Documentation is available on the 30 | [AngularJS docs site](http://docs.angularjs.org/api/ngRoute). 31 | 32 | ## License 33 | 34 | The MIT License 35 | 36 | Copyright (c) 2010-2012 Google, Inc. http://angularjs.org 37 | 38 | Permission is hereby granted, free of charge, to any person obtaining a copy 39 | of this software and associated documentation files (the "Software"), to deal 40 | in the Software without restriction, including without limitation the rights 41 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 42 | copies of the Software, and to permit persons to whom the Software is 43 | furnished to do so, subject to the following conditions: 44 | 45 | The above copyright notice and this permission notice shall be included in 46 | all copies or substantial portions of the Software. 47 | 48 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 49 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 50 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 51 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 52 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 53 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 54 | THE SOFTWARE. 55 | -------------------------------------------------------------------------------- /app/bower_components/angular-animate/README.md: -------------------------------------------------------------------------------- 1 | # bower-angular-animate 2 | 3 | This repo is for distribution on `bower`. The source for this module is in the 4 | [main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngAnimate). 5 | Please file issues and pull requests against that repo. 6 | 7 | ## Install 8 | 9 | Install with `bower`: 10 | 11 | ```shell 12 | bower install angular-animate 13 | ``` 14 | 15 | Add a ` 19 | ``` 20 | 21 | And add `ngAnimate` as a dependency for your app: 22 | 23 | ```javascript 24 | angular.module('myApp', ['ngAnimate']); 25 | ``` 26 | 27 | ## Documentation 28 | 29 | Documentation is available on the 30 | [AngularJS docs site](http://docs.angularjs.org/api/ngAnimate). 31 | 32 | ## License 33 | 34 | The MIT License 35 | 36 | Copyright (c) 2010-2012 Google, Inc. http://angularjs.org 37 | 38 | Permission is hereby granted, free of charge, to any person obtaining a copy 39 | of this software and associated documentation files (the "Software"), to deal 40 | in the Software without restriction, including without limitation the rights 41 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 42 | copies of the Software, and to permit persons to whom the Software is 43 | furnished to do so, subject to the following conditions: 44 | 45 | The above copyright notice and this permission notice shall be included in 46 | all copies or substantial portions of the Software. 47 | 48 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 49 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 50 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 51 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 52 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 53 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 54 | THE SOFTWARE. 55 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/css/defaultDisplay.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../manipulation" // appendTo 4 | ], function( jQuery ) { 5 | 6 | var iframe, 7 | elemdisplay = {}; 8 | 9 | /** 10 | * Retrieve the actual display of a element 11 | * @param {String} name nodeName of the element 12 | * @param {Object} doc Document object 13 | */ 14 | // Called only from within defaultDisplay 15 | function actualDisplay( name, doc ) { 16 | var style, 17 | elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), 18 | 19 | // getDefaultComputedStyle might be reliably used only on attached element 20 | display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? 21 | 22 | // Use of this method is a temporary fix (more like optmization) until something better comes along, 23 | // since it was removed from specification and supported only in FF 24 | style.display : jQuery.css( elem[ 0 ], "display" ); 25 | 26 | // We don't have any data stored on the element, 27 | // so use "detach" method as fast way to get rid of the element 28 | elem.detach(); 29 | 30 | return display; 31 | } 32 | 33 | /** 34 | * Try to determine the default display value of an element 35 | * @param {String} nodeName 36 | */ 37 | function defaultDisplay( nodeName ) { 38 | var doc = document, 39 | display = elemdisplay[ nodeName ]; 40 | 41 | if ( !display ) { 42 | display = actualDisplay( nodeName, doc ); 43 | 44 | // If the simple way fails, read from inside an iframe 45 | if ( display === "none" || !display ) { 46 | 47 | // Use the already-created iframe if possible 48 | iframe = (iframe || jQuery( "