├── .bowerrc ├── .editorconfig ├── .gitattributes ├── .gitignore ├── .jshintrc ├── .travis.yml ├── Gruntfile.js ├── LICENSE.txt ├── README.md ├── app ├── angular-feeds │ ├── angular-feeds.css │ ├── angular-feeds.js │ ├── angular-feeds.min.css │ └── angular-feeds.min.js ├── bower_components │ ├── Font-Awesome │ │ ├── .bower.json │ │ ├── .gitignore │ │ ├── css │ │ │ ├── font-awesome.css │ │ │ └── font-awesome.min.css │ │ ├── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ └── fontawesome-webfont.woff │ │ ├── less │ │ │ ├── bordered-pulled.less │ │ │ ├── core.less │ │ │ ├── fixed-width.less │ │ │ ├── font-awesome.less │ │ │ ├── icons.less │ │ │ ├── larger.less │ │ │ ├── list.less │ │ │ ├── mixins.less │ │ │ ├── path.less │ │ │ ├── rotated-flipped.less │ │ │ ├── stacked.less │ │ │ └── variables.less │ │ └── scss │ │ │ ├── _bordered-pulled.scss │ │ │ ├── _core.scss │ │ │ ├── _fixed-width.scss │ │ │ ├── _icons.scss │ │ │ ├── _larger.scss │ │ │ ├── _list.scss │ │ │ ├── _mixins.scss │ │ │ ├── _path.scss │ │ │ ├── _rotated-flipped.scss │ │ │ ├── _stacked.scss │ │ │ ├── _variables.scss │ │ │ └── font-awesome.scss │ ├── angular-mocks │ │ ├── .bower.json │ │ ├── README.md │ │ ├── angular-mocks.js │ │ └── bower.json │ ├── angular-route │ │ ├── .bower.json │ │ ├── README.md │ │ ├── angular-route.js │ │ ├── angular-route.min.js │ │ ├── angular-route.min.js.map │ │ └── bower.json │ ├── angular-sanitize │ │ ├── .bower.json │ │ ├── README.md │ │ ├── angular-sanitize.js │ │ ├── angular-sanitize.min.js │ │ ├── angular-sanitize.min.js.map │ │ └── bower.json │ ├── angular-scenario │ │ ├── .bower.json │ │ ├── README.md │ │ ├── angular-scenario.js │ │ ├── bower.json │ │ ├── jstd-scenario-adapter-config.js │ │ └── jstd-scenario-adapter.js │ ├── angular │ │ ├── .bower.json │ │ ├── README.md │ │ ├── angular-csp.css │ │ ├── angular.js │ │ ├── angular.min.js │ │ ├── angular.min.js.gzip │ │ ├── angular.min.js.map │ │ └── bower.json │ ├── bootstrap │ │ ├── .bower.json │ │ ├── Gruntfile.js │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bower.json │ │ ├── dist │ │ │ ├── css │ │ │ │ ├── bootstrap-theme.css │ │ │ │ ├── bootstrap-theme.css.map │ │ │ │ ├── bootstrap-theme.min.css │ │ │ │ ├── bootstrap.css │ │ │ │ ├── bootstrap.css.map │ │ │ │ └── bootstrap.min.css │ │ │ ├── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ └── glyphicons-halflings-regular.woff │ │ │ └── js │ │ │ │ ├── bootstrap.js │ │ │ │ └── bootstrap.min.js │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ └── glyphicons-halflings-regular.woff │ │ ├── grunt │ │ │ ├── bs-glyphicons-data-generator.js │ │ │ ├── bs-lessdoc-parser.js │ │ │ ├── bs-raw-files-generator.js │ │ │ └── shrinkwrap.js │ │ ├── js │ │ │ ├── affix.js │ │ │ ├── alert.js │ │ │ ├── button.js │ │ │ ├── carousel.js │ │ │ ├── collapse.js │ │ │ ├── dropdown.js │ │ │ ├── modal.js │ │ │ ├── popover.js │ │ │ ├── scrollspy.js │ │ │ ├── tab.js │ │ │ ├── tooltip.js │ │ │ └── transition.js │ │ ├── less │ │ │ ├── alerts.less │ │ │ ├── badges.less │ │ │ ├── bootstrap.less │ │ │ ├── breadcrumbs.less │ │ │ ├── button-groups.less │ │ │ ├── buttons.less │ │ │ ├── carousel.less │ │ │ ├── close.less │ │ │ ├── code.less │ │ │ ├── component-animations.less │ │ │ ├── dropdowns.less │ │ │ ├── forms.less │ │ │ ├── glyphicons.less │ │ │ ├── grid.less │ │ │ ├── input-groups.less │ │ │ ├── jumbotron.less │ │ │ ├── labels.less │ │ │ ├── list-group.less │ │ │ ├── media.less │ │ │ ├── mixins.less │ │ │ ├── modals.less │ │ │ ├── navbar.less │ │ │ ├── navs.less │ │ │ ├── normalize.less │ │ │ ├── pager.less │ │ │ ├── pagination.less │ │ │ ├── panels.less │ │ │ ├── popovers.less │ │ │ ├── print.less │ │ │ ├── progress-bars.less │ │ │ ├── responsive-utilities.less │ │ │ ├── scaffolding.less │ │ │ ├── tables.less │ │ │ ├── theme.less │ │ │ ├── thumbnails.less │ │ │ ├── tooltip.less │ │ │ ├── type.less │ │ │ ├── utilities.less │ │ │ ├── variables.less │ │ │ └── wells.less │ │ ├── package.json │ │ └── test-infra │ │ │ ├── README.md │ │ │ ├── npm-shrinkwrap.canonical.json │ │ │ ├── requirements.txt │ │ │ ├── s3_cache.py │ │ │ ├── sauce_browsers.yml │ │ │ └── uncached-npm-install.sh │ ├── es5-shim │ │ ├── .bower.json │ │ ├── .gitignore │ │ ├── CHANGES │ │ ├── CONTRIBUTORS.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── es5-sham.js │ │ ├── es5-sham.map │ │ ├── es5-sham.min.js │ │ ├── es5-shim.js │ │ ├── es5-shim.map │ │ ├── es5-shim.min.js │ │ ├── package.json │ │ └── tests │ │ │ ├── helpers │ │ │ ├── h-kill.js │ │ │ ├── h-matchers.js │ │ │ └── h.js │ │ │ ├── index.html │ │ │ ├── index.min.html │ │ │ ├── lib │ │ │ ├── jasmine-html.js │ │ │ ├── jasmine.css │ │ │ ├── jasmine.js │ │ │ ├── jasmine_favicon.png │ │ │ └── json2.js │ │ │ └── spec │ │ │ ├── s-array.js │ │ │ ├── s-date.js │ │ │ ├── s-function.js │ │ │ ├── s-number.js │ │ │ ├── s-object.js │ │ │ └── s-string.js │ ├── jquery │ │ ├── .bower.json │ │ ├── .editorconfig │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── .gitmodules │ │ ├── .jshintrc │ │ ├── .mailmap │ │ ├── AUTHORS.txt │ │ ├── CONTRIBUTING.md │ │ ├── Gruntfile.js │ │ ├── MIT-LICENSE.txt │ │ ├── README.md │ │ ├── bower.json │ │ ├── build │ │ │ ├── release-notes.js │ │ │ └── release.js │ │ ├── component.json │ │ ├── composer.json │ │ ├── jquery-migrate.js │ │ ├── jquery-migrate.min.js │ │ ├── jquery.js │ │ ├── jquery.min.js │ │ ├── jquery.min.map │ │ ├── package.json │ │ ├── speed │ │ │ ├── benchmark.js │ │ │ ├── benchmarker.css │ │ │ ├── benchmarker.js │ │ │ ├── closest.html │ │ │ ├── css.html │ │ │ ├── event.html │ │ │ ├── filter.html │ │ │ ├── find.html │ │ │ ├── index.html │ │ │ ├── jquery-basis.js │ │ │ └── slice.vs.concat.html │ │ ├── src │ │ │ ├── .jshintrc │ │ │ ├── ajax.js │ │ │ ├── ajax │ │ │ │ ├── jsonp.js │ │ │ │ ├── script.js │ │ │ │ └── xhr.js │ │ │ ├── attributes.js │ │ │ ├── callbacks.js │ │ │ ├── core.js │ │ │ ├── css.js │ │ │ ├── data.js │ │ │ ├── deferred.js │ │ │ ├── deprecated.js │ │ │ ├── dimensions.js │ │ │ ├── effects.js │ │ │ ├── event-alias.js │ │ │ ├── event.js │ │ │ ├── exports.js │ │ │ ├── intro.js │ │ │ ├── manipulation.js │ │ │ ├── offset.js │ │ │ ├── outro.js │ │ │ ├── queue.js │ │ │ ├── serialize.js │ │ │ ├── sizzle-jquery.js │ │ │ ├── support.js │ │ │ ├── traversing.js │ │ │ └── wrap.js │ │ └── test │ │ │ ├── .jshintignore │ │ │ ├── .jshintrc │ │ │ ├── data │ │ │ ├── 1x1.jpg │ │ │ ├── ajax │ │ │ │ └── unreleasedXHR.html │ │ │ ├── atom+xml.php │ │ │ ├── badcall.js │ │ │ ├── badjson.js │ │ │ ├── cleanScript.html │ │ │ ├── core │ │ │ │ └── cc_on.html │ │ │ ├── dashboard.xml │ │ │ ├── dimensions │ │ │ │ ├── documentLarge.html │ │ │ │ └── documentSmall.html │ │ │ ├── echoData.php │ │ │ ├── echoQuery.php │ │ │ ├── errorWithJSON.php │ │ │ ├── errorWithText.php │ │ │ ├── etag.php │ │ │ ├── evalScript.php │ │ │ ├── event │ │ │ │ ├── focusElem.html │ │ │ │ ├── longLoadScript.php │ │ │ │ ├── promiseReady.html │ │ │ │ └── syncReady.html │ │ │ ├── headers.php │ │ │ ├── if_modified_since.php │ │ │ ├── iframe.html │ │ │ ├── jquery-1.9.1.ajax_xhr.min.js │ │ │ ├── json.php │ │ │ ├── json_obj.js │ │ │ ├── jsonp.php │ │ │ ├── manipulation │ │ │ │ └── iframe-denied.html │ │ │ ├── name.html │ │ │ ├── name.php │ │ │ ├── nocontent.php │ │ │ ├── offset │ │ │ │ ├── absolute.html │ │ │ │ ├── body.html │ │ │ │ ├── fixed.html │ │ │ │ ├── relative.html │ │ │ │ ├── scroll.html │ │ │ │ ├── static.html │ │ │ │ └── table.html │ │ │ ├── params_html.php │ │ │ ├── readywaitasset.js │ │ │ ├── readywaitloader.js │ │ │ ├── script.php │ │ │ ├── selector │ │ │ │ ├── html5_selector.html │ │ │ │ └── sizzle_cache.html │ │ │ ├── statusText.php │ │ │ ├── support │ │ │ │ ├── bodyBackground.html │ │ │ │ ├── boxSizing.html │ │ │ │ ├── csp.js │ │ │ │ ├── csp.php │ │ │ │ ├── shrinkWrapBlocks.html │ │ │ │ └── testElementCrash.html │ │ │ ├── test.html │ │ │ ├── test.js │ │ │ ├── test.php │ │ │ ├── test2.html │ │ │ ├── test3.html │ │ │ ├── testinit.js │ │ │ ├── testrunner.js │ │ │ ├── testsuite.css │ │ │ ├── text.php │ │ │ ├── ua.txt │ │ │ ├── with_fries.xml │ │ │ └── with_fries_over_jsonp.php │ │ │ ├── delegatetest.html │ │ │ ├── hovertest.html │ │ │ ├── index.html │ │ │ ├── jquery.js │ │ │ ├── localfile.html │ │ │ ├── networkerror.html │ │ │ ├── readywait.html │ │ │ ├── unit │ │ │ ├── ajax.js │ │ │ ├── attributes.js │ │ │ ├── callbacks.js │ │ │ ├── core.js │ │ │ ├── css.js │ │ │ ├── data.js │ │ │ ├── deferred.js │ │ │ ├── deprecated.js │ │ │ ├── dimensions.js │ │ │ ├── effects.js │ │ │ ├── event.js │ │ │ ├── exports.js │ │ │ ├── manipulation.js │ │ │ ├── offset.js │ │ │ ├── queue.js │ │ │ ├── selector.js │ │ │ ├── serialize.js │ │ │ ├── support.js │ │ │ ├── traversing.js │ │ │ └── wrap.js │ │ │ └── xhtml.php │ └── json3 │ │ ├── .bower.json │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bower.json │ │ └── lib │ │ ├── json3.js │ │ └── json3.min.js ├── favicon.ico ├── feed-tester.html ├── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ └── glyphicons-halflings-regular.woff ├── images │ └── forkme.png ├── index.html ├── my-feeds.html ├── my-feeds.json ├── scripts │ ├── docs │ │ ├── application.js │ │ ├── docs.js │ │ └── prettify.js │ ├── feed-tester.js │ ├── feeds-demo.js │ └── my-feeds.js ├── styles │ ├── docs │ │ └── prettify.css │ ├── feed-tester.css │ ├── feeds-demo.css │ └── my-feeds.css └── templates │ ├── api.html │ ├── code.html │ ├── feed-code-toggle.html │ ├── feed-tester-iframe.html │ ├── feed-widget-control.html │ ├── feed-widget.html │ ├── main-page.html │ ├── my-feeds-iframe.html │ ├── navbar.html │ ├── reddit-feed-code.html │ ├── stackoverflow-feed-code.html │ ├── used-where.html │ ├── wikipedia-featured-article.html │ └── wikipedia-feed-code.html ├── bower.json ├── index.html ├── karma-e2e.conf.js ├── karma.conf.js ├── package.json ├── src ├── scripts │ ├── directives.js │ ├── feeds.js │ ├── services.js │ └── templates.js ├── styles │ └── spinner.css └── templates │ ├── feed-list.html │ └── feed-spinner.html └── test ├── .jshintrc ├── runner.html └── spec └── controllers └── main.js /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "app/bower_components" 3 | } 4 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | 5 | root = true 6 | 7 | 8 | [*] 9 | 10 | # Change these settings to your own preference 11 | indent_style = space 12 | indent_size = 2 13 | 14 | # We recommend you to keep these unchanged 15 | end_of_line = lf 16 | charset = utf-8 17 | trim_trailing_whitespace = true 18 | insert_final_newline = true 19 | 20 | [*.md] 21 | trim_trailing_whitespace = false 22 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | /dist/ 3 | .tmp 4 | .sass-cache 5 | .idea/ 6 | *.iml 7 | .DS_Store 8 | *.log 9 | /nbproject -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "node": true, 3 | "browser": true, 4 | "esnext": true, 5 | "bitwise": true, 6 | "camelcase": true, 7 | "curly": true, 8 | "eqeqeq": true, 9 | "immed": true, 10 | "indent": 2, 11 | "latedef": true, 12 | "newcap": true, 13 | "noarg": true, 14 | "quotmark": "single", 15 | "regexp": true, 16 | "undef": true, 17 | "unused": true, 18 | "strict": true, 19 | "trailing": true, 20 | "smarttabs": true, 21 | "globals": { 22 | "angular": false 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - '0.8' 4 | - '0.10' 5 | before_script: 6 | - 'npm install -g bower grunt-cli' 7 | - 'bower install' 8 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013 Siddique Hameed 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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | angular-feeds 2 | ============= 3 | ### Introduction 4 | Angular Feeds renders Atom, RSS and Media feeds using simple HTML markup (aka Directives). 5 | It internally uses Google Feeds for reading & parsing feeds and comes with default template for displaying feed content. 6 | You can also configure it to use a different template of your choice. 7 | 8 | ### Get Started 9 | With any of the following options 10 | * Clone the repo - `git@github.com:siddii/angular-feeds.git` 11 | * Install `angular-feeds` using [Bower](http://bower.io) - `bower install angular-feeds` 12 | 13 | ### Examples 14 | Please checkout the examples to understand the usage of this module - http://siddii.github.io/angular-feeds/ -------------------------------------------------------------------------------- /app/angular-feeds/angular-feeds.css: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-feeds - v0.0.4 - 2017-03-14 8:09 AM 3 | * https://github.com/siddii/angular-feeds 4 | * 5 | * Copyright (c) 2017 6 | * Licensed MIT 7 | */ 8 | 9 | .spinner div{ 10 | -webkit-animation: spinner-fade 1s linear infinite; 11 | -opacity: 0; 12 | } 13 | .spinner div.bar1 { 14 | -moz-transform:rotate(0deg) translate(0, -30px); 15 | -webkit-transform:rotate(0deg) translate(0, -30px); 16 | -webkit-animation-delay: 0s; 17 | } 18 | .spinner div.bar2 { 19 | -moz-transform:rotate(45deg) translate(0, -30px); 20 | -webkit-transform:rotate(45deg) translate(0, -30px); 21 | -webkit-animation-delay: -0.875s; 22 | } 23 | .spinner div.bar3 { 24 | -moz-transform:rotate(90deg) translate(0, -30px); 25 | -webkit-transform:rotate(90deg) translate(0, -30px); 26 | -webkit-animation-delay: -0.75s; 27 | } 28 | .spinner div.bar4 { 29 | -moz-transform:rotate(135deg) translate(0, -30px); 30 | -webkit-transform:rotate(135deg) translate(0, -30px); 31 | -webkit-animation-delay: -0.625s; 32 | } 33 | .spinner div.bar5 { 34 | -moz-transform:rotate(180deg) translate(0, -30px); 35 | -webkit-transform:rotate(180deg) translate(0, -30px); 36 | -webkit-animation-delay: -0.5s; 37 | } 38 | .spinner div.bar6 { 39 | -moz-transform:rotate(225deg) translate(0, -30px); 40 | -webkit-transform:rotate(225deg) translate(0, -30px); 41 | -webkit-animation-delay: -0.375s; 42 | } 43 | .spinner div.bar7 { 44 | -moz-transform:rotate(270deg) translate(0, -30px); 45 | -webkit-transform:rotate(270deg) translate(0, -30px); 46 | -webkit-animation-delay: -0.25s; 47 | } 48 | .spinner div.bar8 { 49 | -moz-transform:rotate(315deg) translate(0, -30px); 50 | -webkit-transform:rotate(315deg) translate(0, -30px); 51 | -webkit-animation-delay: -0.125s; 52 | } 53 | 54 | .spinner { 55 | position:relative; 56 | height:50px; 57 | -moz-border-radius:50px; 58 | -webkit-border-radius: 50px; 59 | border-radius: 50px; 60 | float:left; 61 | left: 48%; 62 | -moz-transform:scale(0.5); 63 | -webkit-transform:scale(0.5); 64 | } 65 | 66 | .spinner div { 67 | width:10px; 68 | height:25px; 69 | background:black; 70 | position:absolute; 71 | } 72 | 73 | @-webkit-keyframes spinner-fade { 74 | from {opacity: 1;} 75 | to {opacity: 0;} 76 | } -------------------------------------------------------------------------------- /app/angular-feeds/angular-feeds.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * angular-feeds - v0.0.4 - 2017-03-14 8:09 AM 3 | * https://github.com/siddii/angular-feeds 4 | * 5 | * Copyright (c) 2017 6 | * Licensed MIT 7 | */ 8 | 9 | .spinner div{-webkit-animation:spinner-fade 1s linear infinite;-opacity:0}.spinner div.bar1{-moz-transform:rotate(0deg) translate(0,-30px);-webkit-transform:rotate(0deg) translate(0,-30px);-webkit-animation-delay:0s}.spinner div.bar2{-moz-transform:rotate(45deg) translate(0,-30px);-webkit-transform:rotate(45deg) translate(0,-30px);-webkit-animation-delay:-.875s}.spinner div.bar3{-moz-transform:rotate(90deg) translate(0,-30px);-webkit-transform:rotate(90deg) translate(0,-30px);-webkit-animation-delay:-.75s}.spinner div.bar4{-moz-transform:rotate(135deg) translate(0,-30px);-webkit-transform:rotate(135deg) translate(0,-30px);-webkit-animation-delay:-.625s}.spinner div.bar5{-moz-transform:rotate(180deg) translate(0,-30px);-webkit-transform:rotate(180deg) translate(0,-30px);-webkit-animation-delay:-.5s}.spinner div.bar6{-moz-transform:rotate(225deg) translate(0,-30px);-webkit-transform:rotate(225deg) translate(0,-30px);-webkit-animation-delay:-.375s}.spinner div.bar7{-moz-transform:rotate(270deg) translate(0,-30px);-webkit-transform:rotate(270deg) translate(0,-30px);-webkit-animation-delay:-.25s}.spinner div.bar8{-moz-transform:rotate(315deg) translate(0,-30px);-webkit-transform:rotate(315deg) translate(0,-30px);-webkit-animation-delay:-.125s}.spinner{position:relative;height:50px;-moz-border-radius:50px;-webkit-border-radius:50px;border-radius:50px;float:left;left:48%;-moz-transform:scale(0.5);-webkit-transform:scale(0.5)}.spinner div{width:10px;height:25px;background:#000;position:absolute}@-webkit-keyframes spinner-fade{from{opacity:1}to{opacity:0}} -------------------------------------------------------------------------------- /app/bower_components/Font-Awesome/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "font-awesome", 3 | "description": "Font Awesome", 4 | "keywords": [], 5 | "homepage": "http://fontawesome.io", 6 | "dependencies": {}, 7 | "devDependencies": {}, 8 | "license": [ 9 | "OFL-1.1", 10 | "MIT", 11 | "CC-BY-3.0" 12 | ], 13 | "main": [ 14 | "less/font-awesome.less", 15 | "scss/font-awesome.scss" 16 | ], 17 | "ignore": [ 18 | "*/.*", 19 | "*.json", 20 | "src", 21 | "*.yml", 22 | "Gemfile", 23 | "Gemfile.lock", 24 | "*.md" 25 | ], 26 | "version": "4.7.0", 27 | "_release": "4.7.0", 28 | "_resolution": { 29 | "type": "version", 30 | "tag": "v4.7.0", 31 | "commit": "a3fe90fa5f6fac55d197f9cbd18e3f57dafb716c" 32 | }, 33 | "_source": "https://github.com/FortAwesome/Font-Awesome.git", 34 | "_target": "*", 35 | "_originalSource": "Font-Awesome" 36 | } -------------------------------------------------------------------------------- /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 | .bundle 34 | -------------------------------------------------------------------------------- /app/bower_components/Font-Awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siddii/angular-feeds/fa44b7b359b945f599bcdb1ec9f15f57984743e9/app/bower_components/Font-Awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /app/bower_components/Font-Awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siddii/angular-feeds/fa44b7b359b945f599bcdb1ec9f15f57984743e9/app/bower_components/Font-Awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /app/bower_components/Font-Awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siddii/angular-feeds/fa44b7b359b945f599bcdb1ec9f15f57984743e9/app/bower_components/Font-Awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /app/bower_components/Font-Awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siddii/angular-feeds/fa44b7b359b945f599bcdb1ec9f15f57984743e9/app/bower_components/Font-Awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /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 | .@{fa-css-prefix}-pull-left { float: left; } 11 | .@{fa-css-prefix}-pull-right { float: right; } 12 | 13 | .@{fa-css-prefix} { 14 | &.@{fa-css-prefix}-pull-left { margin-right: .3em; } 15 | &.@{fa-css-prefix}-pull-right { margin-left: .3em; } 16 | } 17 | 18 | /* Deprecated as of 4.4.0 */ 19 | .pull-right { float: right; } 20 | .pull-left { float: left; } 21 | 22 | .@{fa-css-prefix} { 23 | &.pull-left { margin-right: .3em; } 24 | &.pull-right { margin-left: .3em; } 25 | } 26 | -------------------------------------------------------------------------------- /app/bower_components/Font-Awesome/less/core.less: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /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/Font-Awesome/less/font-awesome.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.7.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 "animated.less"; 15 | @import "rotated-flipped.less"; 16 | @import "stacked.less"; 17 | @import "icons.less"; 18 | @import "screen-reader.less"; 19 | -------------------------------------------------------------------------------- /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/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/less/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | .fa-icon() { 5 | display: inline-block; 6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | 14 | .fa-icon-rotate(@degrees, @rotation) { 15 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})"; 16 | -webkit-transform: rotate(@degrees); 17 | -ms-transform: rotate(@degrees); 18 | transform: rotate(@degrees); 19 | } 20 | 21 | .fa-icon-flip(@horiz, @vert, @rotation) { 22 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)"; 23 | -webkit-transform: scale(@horiz, @vert); 24 | -ms-transform: scale(@horiz, @vert); 25 | transform: scale(@horiz, @vert); 26 | } 27 | 28 | 29 | // Only display content to screen readers. A la Bootstrap 4. 30 | // 31 | // See: http://a11yproject.com/posts/how-to-hide-content/ 32 | 33 | .sr-only() { 34 | position: absolute; 35 | width: 1px; 36 | height: 1px; 37 | padding: 0; 38 | margin: -1px; 39 | overflow: hidden; 40 | clip: rect(0,0,0,0); 41 | border: 0; 42 | } 43 | 44 | // Use in conjunction with .sr-only to only display content when it's focused. 45 | // 46 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 47 | // 48 | // Credit: HTML5 Boilerplate 49 | 50 | .sr-only-focusable() { 51 | &:active, 52 | &:focus { 53 | position: static; 54 | width: auto; 55 | height: auto; 56 | margin: 0; 57 | overflow: visible; 58 | clip: auto; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /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.woff2?v=@{fa-version}') format('woff2'), 9 | url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), 10 | url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), 11 | url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); 12 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | -------------------------------------------------------------------------------- /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 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .@{fa-css-prefix}-rotate-90, 15 | :root .@{fa-css-prefix}-rotate-180, 16 | :root .@{fa-css-prefix}-rotate-270, 17 | :root .@{fa-css-prefix}-flip-horizontal, 18 | :root .@{fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /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/_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 | .#{$fa-css-prefix}-pull-left { float: left; } 11 | .#{$fa-css-prefix}-pull-right { float: right; } 12 | 13 | .#{$fa-css-prefix} { 14 | &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } 15 | &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } 16 | } 17 | 18 | /* Deprecated as of 4.4.0 */ 19 | .pull-right { float: right; } 20 | .pull-left { float: left; } 21 | 22 | .#{$fa-css-prefix} { 23 | &.pull-left { margin-right: .3em; } 24 | &.pull-right { margin-left: .3em; } 25 | } 26 | -------------------------------------------------------------------------------- /app/bower_components/Font-Awesome/scss/_core.scss: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /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/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/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/Font-Awesome/scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | @mixin fa-icon() { 5 | display: inline-block; 6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | 14 | @mixin fa-icon-rotate($degrees, $rotation) { 15 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; 16 | -webkit-transform: rotate($degrees); 17 | -ms-transform: rotate($degrees); 18 | transform: rotate($degrees); 19 | } 20 | 21 | @mixin fa-icon-flip($horiz, $vert, $rotation) { 22 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; 23 | -webkit-transform: scale($horiz, $vert); 24 | -ms-transform: scale($horiz, $vert); 25 | transform: scale($horiz, $vert); 26 | } 27 | 28 | 29 | // Only display content to screen readers. A la Bootstrap 4. 30 | // 31 | // See: http://a11yproject.com/posts/how-to-hide-content/ 32 | 33 | @mixin sr-only { 34 | position: absolute; 35 | width: 1px; 36 | height: 1px; 37 | padding: 0; 38 | margin: -1px; 39 | overflow: hidden; 40 | clip: rect(0,0,0,0); 41 | border: 0; 42 | } 43 | 44 | // Use in conjunction with .sr-only to only display content when it's focused. 45 | // 46 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 47 | // 48 | // Credit: HTML5 Boilerplate 49 | 50 | @mixin sr-only-focusable { 51 | &:active, 52 | &:focus { 53 | position: static; 54 | width: auto; 55 | height: auto; 56 | margin: 0; 57 | overflow: visible; 58 | clip: auto; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /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.woff2?v=#{$fa-version}') format('woff2'), 9 | url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), 10 | url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), 11 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); 12 | // src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | -------------------------------------------------------------------------------- /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 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .#{$fa-css-prefix}-rotate-90, 15 | :root .#{$fa-css-prefix}-rotate-180, 16 | :root .#{$fa-css-prefix}-rotate-270, 17 | :root .#{$fa-css-prefix}-flip-horizontal, 18 | :root .#{$fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 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/Font-Awesome/scss/font-awesome.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.7.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 "animated"; 15 | @import "rotated-flipped"; 16 | @import "stacked"; 17 | @import "icons"; 18 | @import "screen-reader"; 19 | -------------------------------------------------------------------------------- /app/bower_components/angular-mocks/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-mocks", 3 | "version": "1.2.6", 4 | "main": "./angular-mocks.js", 5 | "dependencies": { 6 | "angular": "1.2.6" 7 | }, 8 | "homepage": "https://github.com/angular/bower-angular-mocks", 9 | "_release": "1.2.6", 10 | "_resolution": { 11 | "type": "version", 12 | "tag": "v1.2.6", 13 | "commit": "bbece5b4dfd81263ffa409a1c3b6c5353a26e4ea" 14 | }, 15 | "_source": "https://github.com/angular/bower-angular-mocks.git", 16 | "_target": "1.2.6", 17 | "_originalSource": "angular-mocks" 18 | } -------------------------------------------------------------------------------- /app/bower_components/angular-mocks/README.md: -------------------------------------------------------------------------------- 1 | # bower-angular-mocks 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/ngMock). 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-mocks 13 | ``` 14 | 15 | ## Documentation 16 | 17 | Documentation is available on the 18 | [AngularJS docs site](http://docs.angularjs.org/guide/dev_guide.unit-testing). 19 | 20 | ## License 21 | 22 | The MIT License 23 | 24 | Copyright (c) 2010-2012 Google, Inc. http://angularjs.org 25 | 26 | Permission is hereby granted, free of charge, to any person obtaining a copy 27 | of this software and associated documentation files (the "Software"), to deal 28 | in the Software without restriction, including without limitation the rights 29 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 30 | copies of the Software, and to permit persons to whom the Software is 31 | furnished to do so, subject to the following conditions: 32 | 33 | The above copyright notice and this permission notice shall be included in 34 | all copies or substantial portions of the Software. 35 | 36 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 37 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 38 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 39 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 40 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 41 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 42 | THE SOFTWARE. 43 | -------------------------------------------------------------------------------- /app/bower_components/angular-mocks/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-mocks", 3 | "version": "1.2.6", 4 | "main": "./angular-mocks.js", 5 | "dependencies": { 6 | "angular": "1.2.6" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/bower_components/angular-route/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-route", 3 | "version": "1.2.6", 4 | "main": "./angular-route.js", 5 | "dependencies": { 6 | "angular": "1.2.6" 7 | }, 8 | "homepage": "https://github.com/angular/bower-angular-route", 9 | "_release": "1.2.6", 10 | "_resolution": { 11 | "type": "version", 12 | "tag": "v1.2.6", 13 | "commit": "13c62ba4fc177693ff31d5c078901e202b2aed33" 14 | }, 15 | "_source": "https://github.com/angular/bower-angular-route.git", 16 | "_target": "1.2.6", 17 | "_originalSource": "angular-route" 18 | } -------------------------------------------------------------------------------- /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-route/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-route", 3 | "version": "1.2.6", 4 | "main": "./angular-route.js", 5 | "dependencies": { 6 | "angular": "1.2.6" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/bower_components/angular-sanitize/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-sanitize", 3 | "version": "1.2.6", 4 | "main": "./angular-sanitize.js", 5 | "dependencies": { 6 | "angular": "1.2.6" 7 | }, 8 | "homepage": "https://github.com/angular/bower-angular-sanitize", 9 | "_release": "1.2.6", 10 | "_resolution": { 11 | "type": "version", 12 | "tag": "v1.2.6", 13 | "commit": "d42ebcbaccab95512e0c075898fda2de99b82b24" 14 | }, 15 | "_source": "https://github.com/angular/bower-angular-sanitize.git", 16 | "_target": "1.2.6", 17 | "_originalSource": "angular-sanitize" 18 | } -------------------------------------------------------------------------------- /app/bower_components/angular-sanitize/README.md: -------------------------------------------------------------------------------- 1 | # bower-angular-sanitize 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/ngSanitize). 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-sanitize 13 | ``` 14 | 15 | Add a ` 19 | ``` 20 | 21 | And add `ngSanitize` as a dependency for your app: 22 | 23 | ```javascript 24 | angular.module('myApp', ['ngSanitize']); 25 | ``` 26 | 27 | ## Documentation 28 | 29 | Documentation is available on the 30 | [AngularJS docs site](http://docs.angularjs.org/api/ngSanitize). 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-sanitize/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-sanitize", 3 | "version": "1.2.6", 4 | "main": "./angular-sanitize.js", 5 | "dependencies": { 6 | "angular": "1.2.6" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/bower_components/angular-scenario/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-scenario", 3 | "version": "1.2.6", 4 | "main": "./angular-scenario.js", 5 | "dependencies": { 6 | "angular": "1.2.6" 7 | }, 8 | "homepage": "https://github.com/angular/bower-angular-scenario", 9 | "_release": "1.2.6", 10 | "_resolution": { 11 | "type": "version", 12 | "tag": "v1.2.6", 13 | "commit": "031da7f50f0032ad40bb48de47020059b3a0ab17" 14 | }, 15 | "_source": "https://github.com/angular/bower-angular-scenario.git", 16 | "_target": "1.2.6", 17 | "_originalSource": "angular-scenario" 18 | } -------------------------------------------------------------------------------- /app/bower_components/angular-scenario/README.md: -------------------------------------------------------------------------------- 1 | # bower-angular-scenario 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/ngScenario). 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-scenario 13 | ``` 14 | 15 | ## Documentation 16 | 17 | Documentation is available on the 18 | [AngularJS docs site](http://docs.angularjs.org/). 19 | 20 | ## License 21 | 22 | The MIT License 23 | 24 | Copyright (c) 2010-2012 Google, Inc. http://angularjs.org 25 | 26 | Permission is hereby granted, free of charge, to any person obtaining a copy 27 | of this software and associated documentation files (the "Software"), to deal 28 | in the Software without restriction, including without limitation the rights 29 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 30 | copies of the Software, and to permit persons to whom the Software is 31 | furnished to do so, subject to the following conditions: 32 | 33 | The above copyright notice and this permission notice shall be included in 34 | all copies or substantial portions of the Software. 35 | 36 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 37 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 38 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 39 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 40 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 41 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 42 | THE SOFTWARE. 43 | -------------------------------------------------------------------------------- /app/bower_components/angular-scenario/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-scenario", 3 | "version": "1.2.6", 4 | "main": "./angular-scenario.js", 5 | "dependencies": { 6 | "angular": "1.2.6" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/bower_components/angular-scenario/jstd-scenario-adapter-config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Configuration for jstd scenario adapter 3 | */ 4 | var jstdScenarioAdapter = { 5 | relativeUrlPrefix: '/build/docs/' 6 | }; 7 | -------------------------------------------------------------------------------- /app/bower_components/angular/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular", 3 | "version": "1.2.6", 4 | "main": "./angular.js", 5 | "dependencies": {}, 6 | "homepage": "https://github.com/angular/bower-angular", 7 | "_release": "1.2.6", 8 | "_resolution": { 9 | "type": "version", 10 | "tag": "v1.2.6", 11 | "commit": "74ab84326c3ddf32fa49f36c9050b92382d1b5cc" 12 | }, 13 | "_source": "https://github.com/angular/bower-angular.git", 14 | "_target": "1.2.6", 15 | "_originalSource": "angular" 16 | } -------------------------------------------------------------------------------- /app/bower_components/angular/README.md: -------------------------------------------------------------------------------- 1 | # bower-angular 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). 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 13 | ``` 14 | 15 | Add a ` 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/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/angular/angular.min.js.gzip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siddii/angular-feeds/fa44b7b359b945f599bcdb1ec9f15f57984743e9/app/bower_components/angular/angular.min.js.gzip -------------------------------------------------------------------------------- /app/bower_components/angular/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular", 3 | "version": "1.2.6", 4 | "main": "./angular.js", 5 | "dependencies": { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bootstrap", 3 | "version": "3.1.1", 4 | "main": [ 5 | "./dist/css/bootstrap.css", 6 | "./dist/js/bootstrap.js", 7 | "./dist/fonts/glyphicons-halflings-regular.eot", 8 | "./dist/fonts/glyphicons-halflings-regular.svg", 9 | "./dist/fonts/glyphicons-halflings-regular.ttf", 10 | "./dist/fonts/glyphicons-halflings-regular.woff" 11 | ], 12 | "ignore": [ 13 | "**/.*", 14 | "_config.yml", 15 | "CNAME", 16 | "composer.json", 17 | "CONTRIBUTING.md", 18 | "docs", 19 | "js/tests" 20 | ], 21 | "dependencies": { 22 | "jquery": ">= 1.9.0" 23 | }, 24 | "homepage": "https://github.com/twbs/bootstrap", 25 | "_release": "3.1.1", 26 | "_resolution": { 27 | "type": "version", 28 | "tag": "v3.1.1", 29 | "commit": "a365d8689c3f3cee7f1acf86b61270ecca8e106d" 30 | }, 31 | "_source": "https://github.com/twbs/bootstrap.git", 32 | "_target": "~3.1.0", 33 | "_originalSource": "bootstrap" 34 | } -------------------------------------------------------------------------------- /app/bower_components/bootstrap/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2011-2014 Twitter, Inc 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bootstrap", 3 | "version": "3.1.1", 4 | "main": [ 5 | "./dist/css/bootstrap.css", 6 | "./dist/js/bootstrap.js", 7 | "./dist/fonts/glyphicons-halflings-regular.eot", 8 | "./dist/fonts/glyphicons-halflings-regular.svg", 9 | "./dist/fonts/glyphicons-halflings-regular.ttf", 10 | "./dist/fonts/glyphicons-halflings-regular.woff" 11 | ], 12 | "ignore": [ 13 | "**/.*", 14 | "_config.yml", 15 | "CNAME", 16 | "composer.json", 17 | "CONTRIBUTING.md", 18 | "docs", 19 | "js/tests" 20 | ], 21 | "dependencies": { 22 | "jquery": ">= 1.9.0" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siddii/angular-feeds/fa44b7b359b945f599bcdb1ec9f15f57984743e9/app/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /app/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siddii/angular-feeds/fa44b7b359b945f599bcdb1ec9f15f57984743e9/app/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /app/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siddii/angular-feeds/fa44b7b359b945f599bcdb1ec9f15f57984743e9/app/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /app/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siddii/angular-feeds/fa44b7b359b945f599bcdb1ec9f15f57984743e9/app/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /app/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siddii/angular-feeds/fa44b7b359b945f599bcdb1ec9f15f57984743e9/app/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /app/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siddii/angular-feeds/fa44b7b359b945f599bcdb1ec9f15f57984743e9/app/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /app/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Grunt task for Glyphicons data generation 3 | * http://getbootstrap.com 4 | * Copyright 2014 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | */ 7 | 'use strict'; 8 | var fs = require('fs'); 9 | 10 | module.exports = function generateGlyphiconsData() { 11 | // Pass encoding, utf8, so `readFileSync` will return a string instead of a 12 | // buffer 13 | var glyphiconsFile = fs.readFileSync('less/glyphicons.less', 'utf8'); 14 | var glpyhiconsLines = glyphiconsFile.split('\n'); 15 | 16 | // Use any line that starts with ".glyphicon-" and capture the class name 17 | var iconClassName = /^\.(glyphicon-[^\s]+)/; 18 | var glyphiconsData = '# This file is generated via Grunt task. **Do not edit directly.**\n' + 19 | '# See the \'build-glyphicons-data\' task in Gruntfile.js.\n\n'; 20 | for (var i = 0, len = glpyhiconsLines.length; i < len; i++) { 21 | var match = glpyhiconsLines[i].match(iconClassName); 22 | 23 | if (match !== null) { 24 | glyphiconsData += '- ' + match[1] + '\n'; 25 | } 26 | } 27 | 28 | // Create the `_data` directory if it doesn't already exist 29 | if (!fs.existsSync('docs/_data')) { 30 | fs.mkdirSync('docs/_data'); 31 | } 32 | 33 | fs.writeFileSync('docs/_data/glyphicons.yml', glyphiconsData); 34 | }; 35 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/grunt/bs-raw-files-generator.js: -------------------------------------------------------------------------------- 1 | /* global btoa: true */ 2 | /*! 3 | * Bootstrap Grunt task for generating raw-files.min.js for the Customizer 4 | * http://getbootstrap.com 5 | * Copyright 2014 Twitter, Inc. 6 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | */ 8 | 'use strict'; 9 | var btoa = require('btoa'); 10 | var fs = require('fs'); 11 | 12 | function getFiles(type) { 13 | var files = {}; 14 | fs.readdirSync(type) 15 | .filter(function (path) { 16 | return type === 'fonts' ? true : new RegExp('\\.' + type + '$').test(path); 17 | }) 18 | .forEach(function (path) { 19 | var fullPath = type + '/' + path; 20 | files[path] = (type === 'fonts' ? btoa(fs.readFileSync(fullPath)) : fs.readFileSync(fullPath, 'utf8')); 21 | }); 22 | return 'var __' + type + ' = ' + JSON.stringify(files) + '\n'; 23 | } 24 | 25 | module.exports = function generateRawFilesJs(banner) { 26 | if (!banner) { 27 | banner = ''; 28 | } 29 | var files = banner + getFiles('js') + getFiles('less') + getFiles('fonts'); 30 | fs.writeFileSync('docs/assets/js/raw-files.min.js', files); 31 | }; 32 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/grunt/shrinkwrap.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Grunt task for generating npm-shrinkwrap.canonical.json 3 | * http://getbootstrap.com 4 | * Copyright 2014 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | */ 7 | /* 8 | This Grunt task updates the npm-shrinkwrap.canonical.json file that's used as the key for Bootstrap's npm packages cache. 9 | This task should be run and the updated file should be committed whenever Bootstrap's dependencies change. 10 | */ 11 | 'use strict'; 12 | var canonicallyJsonStringify = require('canonical-json'); 13 | var NON_CANONICAL_FILE = 'npm-shrinkwrap.json'; 14 | var DEST_FILE = 'test-infra/npm-shrinkwrap.canonical.json'; 15 | 16 | 17 | function updateShrinkwrap(grunt) { 18 | // Assumption: Non-canonical shrinkwrap already generated by prerequisite Grunt task 19 | var shrinkwrapData = grunt.file.readJSON(NON_CANONICAL_FILE); 20 | grunt.log.writeln('Deleting ' + NON_CANONICAL_FILE.cyan + '...'); 21 | grunt.file.delete(NON_CANONICAL_FILE); 22 | // Output as Canonical JSON in correct location 23 | grunt.file.write(DEST_FILE, canonicallyJsonStringify(shrinkwrapData)); 24 | grunt.log.writeln('File ' + DEST_FILE.cyan + ' updated.'); 25 | } 26 | 27 | 28 | module.exports = updateShrinkwrap; 29 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/js/alert.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * Bootstrap: alert.js v3.1.1 3 | * http://getbootstrap.com/javascript/#alerts 4 | * ======================================================================== 5 | * Copyright 2011-2014 Twitter, Inc. 6 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | * ======================================================================== */ 8 | 9 | 10 | +function ($) { 11 | 'use strict'; 12 | 13 | // ALERT CLASS DEFINITION 14 | // ====================== 15 | 16 | var dismiss = '[data-dismiss="alert"]' 17 | var Alert = function (el) { 18 | $(el).on('click', dismiss, this.close) 19 | } 20 | 21 | Alert.prototype.close = function (e) { 22 | var $this = $(this) 23 | var selector = $this.attr('data-target') 24 | 25 | if (!selector) { 26 | selector = $this.attr('href') 27 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 28 | } 29 | 30 | var $parent = $(selector) 31 | 32 | if (e) e.preventDefault() 33 | 34 | if (!$parent.length) { 35 | $parent = $this.hasClass('alert') ? $this : $this.parent() 36 | } 37 | 38 | $parent.trigger(e = $.Event('close.bs.alert')) 39 | 40 | if (e.isDefaultPrevented()) return 41 | 42 | $parent.removeClass('in') 43 | 44 | function removeElement() { 45 | $parent.trigger('closed.bs.alert').remove() 46 | } 47 | 48 | $.support.transition && $parent.hasClass('fade') ? 49 | $parent 50 | .one($.support.transition.end, removeElement) 51 | .emulateTransitionEnd(150) : 52 | removeElement() 53 | } 54 | 55 | 56 | // ALERT PLUGIN DEFINITION 57 | // ======================= 58 | 59 | var old = $.fn.alert 60 | 61 | $.fn.alert = function (option) { 62 | return this.each(function () { 63 | var $this = $(this) 64 | var data = $this.data('bs.alert') 65 | 66 | if (!data) $this.data('bs.alert', (data = new Alert(this))) 67 | if (typeof option == 'string') data[option].call($this) 68 | }) 69 | } 70 | 71 | $.fn.alert.Constructor = Alert 72 | 73 | 74 | // ALERT NO CONFLICT 75 | // ================= 76 | 77 | $.fn.alert.noConflict = function () { 78 | $.fn.alert = old 79 | return this 80 | } 81 | 82 | 83 | // ALERT DATA-API 84 | // ============== 85 | 86 | $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) 87 | 88 | }(jQuery); 89 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/js/transition.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * Bootstrap: transition.js v3.1.1 3 | * http://getbootstrap.com/javascript/#transitions 4 | * ======================================================================== 5 | * Copyright 2011-2014 Twitter, Inc. 6 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | * ======================================================================== */ 8 | 9 | 10 | +function ($) { 11 | 'use strict'; 12 | 13 | // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) 14 | // ============================================================ 15 | 16 | function transitionEnd() { 17 | var el = document.createElement('bootstrap') 18 | 19 | var transEndEventNames = { 20 | 'WebkitTransition' : 'webkitTransitionEnd', 21 | 'MozTransition' : 'transitionend', 22 | 'OTransition' : 'oTransitionEnd otransitionend', 23 | 'transition' : 'transitionend' 24 | } 25 | 26 | for (var name in transEndEventNames) { 27 | if (el.style[name] !== undefined) { 28 | return { end: transEndEventNames[name] } 29 | } 30 | } 31 | 32 | return false // explicit for ie8 ( ._.) 33 | } 34 | 35 | // http://blog.alexmaccaw.com/css-transitions 36 | $.fn.emulateTransitionEnd = function (duration) { 37 | var called = false, $el = this 38 | $(this).one($.support.transition.end, function () { called = true }) 39 | var callback = function () { if (!called) $($el).trigger($.support.transition.end) } 40 | setTimeout(callback, duration) 41 | return this 42 | } 43 | 44 | $(function () { 45 | $.support.transition = transitionEnd() 46 | }) 47 | 48 | }(jQuery); 49 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/less/alerts.less: -------------------------------------------------------------------------------- 1 | // 2 | // Alerts 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base styles 7 | // ------------------------- 8 | 9 | .alert { 10 | padding: @alert-padding; 11 | margin-bottom: @line-height-computed; 12 | border: 1px solid transparent; 13 | border-radius: @alert-border-radius; 14 | 15 | // Headings for larger alerts 16 | h4 { 17 | margin-top: 0; 18 | // Specified for the h4 to prevent conflicts of changing @headings-color 19 | color: inherit; 20 | } 21 | // Provide class for links that match alerts 22 | .alert-link { 23 | font-weight: @alert-link-font-weight; 24 | } 25 | 26 | // Improve alignment and spacing of inner content 27 | > p, 28 | > ul { 29 | margin-bottom: 0; 30 | } 31 | > p + p { 32 | margin-top: 5px; 33 | } 34 | } 35 | 36 | // Dismissable alerts 37 | // 38 | // Expand the right padding and account for the close button's positioning. 39 | 40 | .alert-dismissable { 41 | padding-right: (@alert-padding + 20); 42 | 43 | // Adjust close link position 44 | .close { 45 | position: relative; 46 | top: -2px; 47 | right: -21px; 48 | color: inherit; 49 | } 50 | } 51 | 52 | // Alternate styles 53 | // 54 | // Generate contextual modifier classes for colorizing the alert. 55 | 56 | .alert-success { 57 | .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text); 58 | } 59 | .alert-info { 60 | .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text); 61 | } 62 | .alert-warning { 63 | .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text); 64 | } 65 | .alert-danger { 66 | .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text); 67 | } 68 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/less/badges.less: -------------------------------------------------------------------------------- 1 | // 2 | // Badges 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base classes 7 | .badge { 8 | display: inline-block; 9 | min-width: 10px; 10 | padding: 3px 7px; 11 | font-size: @font-size-small; 12 | font-weight: @badge-font-weight; 13 | color: @badge-color; 14 | line-height: @badge-line-height; 15 | vertical-align: baseline; 16 | white-space: nowrap; 17 | text-align: center; 18 | background-color: @badge-bg; 19 | border-radius: @badge-border-radius; 20 | 21 | // Empty badges collapse automatically (not available in IE8) 22 | &:empty { 23 | display: none; 24 | } 25 | 26 | // Quick fix for badges in buttons 27 | .btn & { 28 | position: relative; 29 | top: -1px; 30 | } 31 | .btn-xs & { 32 | top: 0; 33 | padding: 1px 5px; 34 | } 35 | } 36 | 37 | // Hover state, but only for links 38 | a.badge { 39 | &:hover, 40 | &:focus { 41 | color: @badge-link-hover-color; 42 | text-decoration: none; 43 | cursor: pointer; 44 | } 45 | } 46 | 47 | // Account for counters in navs 48 | a.list-group-item.active > .badge, 49 | .nav-pills > .active > a > .badge { 50 | color: @badge-active-color; 51 | background-color: @badge-active-bg; 52 | } 53 | .nav-pills > li > a > .badge { 54 | margin-left: 3px; 55 | } 56 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/less/bootstrap.less: -------------------------------------------------------------------------------- 1 | // Core variables and mixins 2 | @import "variables.less"; 3 | @import "mixins.less"; 4 | 5 | // Reset 6 | @import "normalize.less"; 7 | @import "print.less"; 8 | 9 | // Core CSS 10 | @import "scaffolding.less"; 11 | @import "type.less"; 12 | @import "code.less"; 13 | @import "grid.less"; 14 | @import "tables.less"; 15 | @import "forms.less"; 16 | @import "buttons.less"; 17 | 18 | // Components 19 | @import "component-animations.less"; 20 | @import "glyphicons.less"; 21 | @import "dropdowns.less"; 22 | @import "button-groups.less"; 23 | @import "input-groups.less"; 24 | @import "navs.less"; 25 | @import "navbar.less"; 26 | @import "breadcrumbs.less"; 27 | @import "pagination.less"; 28 | @import "pager.less"; 29 | @import "labels.less"; 30 | @import "badges.less"; 31 | @import "jumbotron.less"; 32 | @import "thumbnails.less"; 33 | @import "alerts.less"; 34 | @import "progress-bars.less"; 35 | @import "media.less"; 36 | @import "list-group.less"; 37 | @import "panels.less"; 38 | @import "wells.less"; 39 | @import "close.less"; 40 | 41 | // Components w/ JavaScript 42 | @import "modals.less"; 43 | @import "tooltip.less"; 44 | @import "popovers.less"; 45 | @import "carousel.less"; 46 | 47 | // Utility classes 48 | @import "utilities.less"; 49 | @import "responsive-utilities.less"; 50 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/less/breadcrumbs.less: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | 5 | 6 | .breadcrumb { 7 | padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; 8 | margin-bottom: @line-height-computed; 9 | list-style: none; 10 | background-color: @breadcrumb-bg; 11 | border-radius: @border-radius-base; 12 | 13 | > li { 14 | display: inline-block; 15 | 16 | + li:before { 17 | content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space 18 | padding: 0 5px; 19 | color: @breadcrumb-color; 20 | } 21 | } 22 | 23 | > .active { 24 | color: @breadcrumb-active-color; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/less/close.less: -------------------------------------------------------------------------------- 1 | // 2 | // Close icons 3 | // -------------------------------------------------- 4 | 5 | 6 | .close { 7 | float: right; 8 | font-size: (@font-size-base * 1.5); 9 | font-weight: @close-font-weight; 10 | line-height: 1; 11 | color: @close-color; 12 | text-shadow: @close-text-shadow; 13 | .opacity(.2); 14 | 15 | &:hover, 16 | &:focus { 17 | color: @close-color; 18 | text-decoration: none; 19 | cursor: pointer; 20 | .opacity(.5); 21 | } 22 | 23 | // Additional properties for button version 24 | // iOS requires the button element instead of an anchor tag. 25 | // If you want the anchor version, it requires `href="#"`. 26 | button& { 27 | padding: 0; 28 | cursor: pointer; 29 | background: transparent; 30 | border: 0; 31 | -webkit-appearance: none; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/less/code.less: -------------------------------------------------------------------------------- 1 | // 2 | // Code (inline and block) 3 | // -------------------------------------------------- 4 | 5 | 6 | // Inline and block code styles 7 | code, 8 | kbd, 9 | pre, 10 | samp { 11 | font-family: @font-family-monospace; 12 | } 13 | 14 | // Inline code 15 | code { 16 | padding: 2px 4px; 17 | font-size: 90%; 18 | color: @code-color; 19 | background-color: @code-bg; 20 | white-space: nowrap; 21 | border-radius: @border-radius-base; 22 | } 23 | 24 | // User input typically entered via keyboard 25 | kbd { 26 | padding: 2px 4px; 27 | font-size: 90%; 28 | color: @kbd-color; 29 | background-color: @kbd-bg; 30 | border-radius: @border-radius-small; 31 | box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); 32 | } 33 | 34 | // Blocks of code 35 | pre { 36 | display: block; 37 | padding: ((@line-height-computed - 1) / 2); 38 | margin: 0 0 (@line-height-computed / 2); 39 | font-size: (@font-size-base - 1); // 14px to 13px 40 | line-height: @line-height-base; 41 | word-break: break-all; 42 | word-wrap: break-word; 43 | color: @pre-color; 44 | background-color: @pre-bg; 45 | border: 1px solid @pre-border-color; 46 | border-radius: @border-radius-base; 47 | 48 | // Account for some code outputs that place code tags in pre tags 49 | code { 50 | padding: 0; 51 | font-size: inherit; 52 | color: inherit; 53 | white-space: pre-wrap; 54 | background-color: transparent; 55 | border-radius: 0; 56 | } 57 | } 58 | 59 | // Enable scrollable blocks of code 60 | .pre-scrollable { 61 | max-height: @pre-scrollable-max-height; 62 | overflow-y: scroll; 63 | } 64 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/less/component-animations.less: -------------------------------------------------------------------------------- 1 | // 2 | // Component animations 3 | // -------------------------------------------------- 4 | 5 | // Heads up! 6 | // 7 | // We don't use the `.opacity()` mixin here since it causes a bug with text 8 | // fields in IE7-8. Source: https://github.com/twitter/bootstrap/pull/3552. 9 | 10 | .fade { 11 | opacity: 0; 12 | .transition(opacity .15s linear); 13 | &.in { 14 | opacity: 1; 15 | } 16 | } 17 | 18 | .collapse { 19 | display: none; 20 | &.in { 21 | display: block; 22 | } 23 | } 24 | .collapsing { 25 | position: relative; 26 | height: 0; 27 | overflow: hidden; 28 | .transition(height .35s ease); 29 | } 30 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/less/grid.less: -------------------------------------------------------------------------------- 1 | // 2 | // Grid system 3 | // -------------------------------------------------- 4 | 5 | 6 | // Container widths 7 | // 8 | // Set the container width, and override it for fixed navbars in media queries. 9 | 10 | .container { 11 | .container-fixed(); 12 | 13 | @media (min-width: @screen-sm-min) { 14 | width: @container-sm; 15 | } 16 | @media (min-width: @screen-md-min) { 17 | width: @container-md; 18 | } 19 | @media (min-width: @screen-lg-min) { 20 | width: @container-lg; 21 | } 22 | } 23 | 24 | 25 | // Fluid container 26 | // 27 | // Utilizes the mixin meant for fixed width containers, but without any defined 28 | // width for fluid, full width layouts. 29 | 30 | .container-fluid { 31 | .container-fixed(); 32 | } 33 | 34 | 35 | // Row 36 | // 37 | // Rows contain and clear the floats of your columns. 38 | 39 | .row { 40 | .make-row(); 41 | } 42 | 43 | 44 | // Columns 45 | // 46 | // Common styles for small and large grid columns 47 | 48 | .make-grid-columns(); 49 | 50 | 51 | // Extra small grid 52 | // 53 | // Columns, offsets, pushes, and pulls for extra small devices like 54 | // smartphones. 55 | 56 | .make-grid(xs); 57 | 58 | 59 | // Small grid 60 | // 61 | // Columns, offsets, pushes, and pulls for the small device range, from phones 62 | // to tablets. 63 | 64 | @media (min-width: @screen-sm-min) { 65 | .make-grid(sm); 66 | } 67 | 68 | 69 | // Medium grid 70 | // 71 | // Columns, offsets, pushes, and pulls for the desktop device range. 72 | 73 | @media (min-width: @screen-md-min) { 74 | .make-grid(md); 75 | } 76 | 77 | 78 | // Large grid 79 | // 80 | // Columns, offsets, pushes, and pulls for the large desktop device range. 81 | 82 | @media (min-width: @screen-lg-min) { 83 | .make-grid(lg); 84 | } 85 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/less/jumbotron.less: -------------------------------------------------------------------------------- 1 | // 2 | // Jumbotron 3 | // -------------------------------------------------- 4 | 5 | 6 | .jumbotron { 7 | padding: @jumbotron-padding; 8 | margin-bottom: @jumbotron-padding; 9 | color: @jumbotron-color; 10 | background-color: @jumbotron-bg; 11 | 12 | h1, 13 | .h1 { 14 | color: @jumbotron-heading-color; 15 | } 16 | p { 17 | margin-bottom: (@jumbotron-padding / 2); 18 | font-size: @jumbotron-font-size; 19 | font-weight: 200; 20 | } 21 | 22 | .container & { 23 | border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container 24 | } 25 | 26 | .container { 27 | max-width: 100%; 28 | } 29 | 30 | @media screen and (min-width: @screen-sm-min) { 31 | padding-top: (@jumbotron-padding * 1.6); 32 | padding-bottom: (@jumbotron-padding * 1.6); 33 | 34 | .container & { 35 | padding-left: (@jumbotron-padding * 2); 36 | padding-right: (@jumbotron-padding * 2); 37 | } 38 | 39 | h1, 40 | .h1 { 41 | font-size: (@font-size-base * 4.5); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/less/labels.less: -------------------------------------------------------------------------------- 1 | // 2 | // Labels 3 | // -------------------------------------------------- 4 | 5 | .label { 6 | display: inline; 7 | padding: .2em .6em .3em; 8 | font-size: 75%; 9 | font-weight: bold; 10 | line-height: 1; 11 | color: @label-color; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | border-radius: .25em; 16 | 17 | // Add hover effects, but only for links 18 | &[href] { 19 | &:hover, 20 | &:focus { 21 | color: @label-link-hover-color; 22 | text-decoration: none; 23 | cursor: pointer; 24 | } 25 | } 26 | 27 | // Empty labels collapse automatically (not available in IE8) 28 | &:empty { 29 | display: none; 30 | } 31 | 32 | // Quick fix for labels in buttons 33 | .btn & { 34 | position: relative; 35 | top: -1px; 36 | } 37 | } 38 | 39 | // Colors 40 | // Contextual variations (linked labels get darker on :hover) 41 | 42 | .label-default { 43 | .label-variant(@label-default-bg); 44 | } 45 | 46 | .label-primary { 47 | .label-variant(@label-primary-bg); 48 | } 49 | 50 | .label-success { 51 | .label-variant(@label-success-bg); 52 | } 53 | 54 | .label-info { 55 | .label-variant(@label-info-bg); 56 | } 57 | 58 | .label-warning { 59 | .label-variant(@label-warning-bg); 60 | } 61 | 62 | .label-danger { 63 | .label-variant(@label-danger-bg); 64 | } 65 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/less/media.less: -------------------------------------------------------------------------------- 1 | // Media objects 2 | // Source: http://stubbornella.org/content/?p=497 3 | // -------------------------------------------------- 4 | 5 | 6 | // Common styles 7 | // ------------------------- 8 | 9 | // Clear the floats 10 | .media, 11 | .media-body { 12 | overflow: hidden; 13 | zoom: 1; 14 | } 15 | 16 | // Proper spacing between instances of .media 17 | .media, 18 | .media .media { 19 | margin-top: 15px; 20 | } 21 | .media:first-child { 22 | margin-top: 0; 23 | } 24 | 25 | // For images and videos, set to block 26 | .media-object { 27 | display: block; 28 | } 29 | 30 | // Reset margins on headings for tighter default spacing 31 | .media-heading { 32 | margin: 0 0 5px; 33 | } 34 | 35 | 36 | // Media image alignment 37 | // ------------------------- 38 | 39 | .media { 40 | > .pull-left { 41 | margin-right: 10px; 42 | } 43 | > .pull-right { 44 | margin-left: 10px; 45 | } 46 | } 47 | 48 | 49 | // Media list variation 50 | // ------------------------- 51 | 52 | // Undo default ul/ol styles 53 | .media-list { 54 | padding-left: 0; 55 | list-style: none; 56 | } 57 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/less/pager.less: -------------------------------------------------------------------------------- 1 | // 2 | // Pager pagination 3 | // -------------------------------------------------- 4 | 5 | 6 | .pager { 7 | padding-left: 0; 8 | margin: @line-height-computed 0; 9 | list-style: none; 10 | text-align: center; 11 | &:extend(.clearfix all); 12 | li { 13 | display: inline; 14 | > a, 15 | > span { 16 | display: inline-block; 17 | padding: 5px 14px; 18 | background-color: @pager-bg; 19 | border: 1px solid @pager-border; 20 | border-radius: @pager-border-radius; 21 | } 22 | 23 | > a:hover, 24 | > a:focus { 25 | text-decoration: none; 26 | background-color: @pager-hover-bg; 27 | } 28 | } 29 | 30 | .next { 31 | > a, 32 | > span { 33 | float: right; 34 | } 35 | } 36 | 37 | .previous { 38 | > a, 39 | > span { 40 | float: left; 41 | } 42 | } 43 | 44 | .disabled { 45 | > a, 46 | > a:hover, 47 | > a:focus, 48 | > span { 49 | color: @pager-disabled-color; 50 | background-color: @pager-bg; 51 | cursor: not-allowed; 52 | } 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/less/pagination.less: -------------------------------------------------------------------------------- 1 | // 2 | // Pagination (multiple pages) 3 | // -------------------------------------------------- 4 | .pagination { 5 | display: inline-block; 6 | padding-left: 0; 7 | margin: @line-height-computed 0; 8 | border-radius: @border-radius-base; 9 | 10 | > li { 11 | display: inline; // Remove list-style and block-level defaults 12 | > a, 13 | > span { 14 | position: relative; 15 | float: left; // Collapse white-space 16 | padding: @padding-base-vertical @padding-base-horizontal; 17 | line-height: @line-height-base; 18 | text-decoration: none; 19 | color: @pagination-color; 20 | background-color: @pagination-bg; 21 | border: 1px solid @pagination-border; 22 | margin-left: -1px; 23 | } 24 | &:first-child { 25 | > a, 26 | > span { 27 | margin-left: 0; 28 | .border-left-radius(@border-radius-base); 29 | } 30 | } 31 | &:last-child { 32 | > a, 33 | > span { 34 | .border-right-radius(@border-radius-base); 35 | } 36 | } 37 | } 38 | 39 | > li > a, 40 | > li > span { 41 | &:hover, 42 | &:focus { 43 | color: @pagination-hover-color; 44 | background-color: @pagination-hover-bg; 45 | border-color: @pagination-hover-border; 46 | } 47 | } 48 | 49 | > .active > a, 50 | > .active > span { 51 | &, 52 | &:hover, 53 | &:focus { 54 | z-index: 2; 55 | color: @pagination-active-color; 56 | background-color: @pagination-active-bg; 57 | border-color: @pagination-active-border; 58 | cursor: default; 59 | } 60 | } 61 | 62 | > .disabled { 63 | > span, 64 | > span:hover, 65 | > span:focus, 66 | > a, 67 | > a:hover, 68 | > a:focus { 69 | color: @pagination-disabled-color; 70 | background-color: @pagination-disabled-bg; 71 | border-color: @pagination-disabled-border; 72 | cursor: not-allowed; 73 | } 74 | } 75 | } 76 | 77 | // Sizing 78 | // -------------------------------------------------- 79 | 80 | // Large 81 | .pagination-lg { 82 | .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @border-radius-large); 83 | } 84 | 85 | // Small 86 | .pagination-sm { 87 | .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @border-radius-small); 88 | } 89 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/less/print.less: -------------------------------------------------------------------------------- 1 | // 2 | // Basic print styles 3 | // -------------------------------------------------- 4 | // Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css 5 | 6 | @media print { 7 | 8 | * { 9 | text-shadow: none !important; 10 | color: #000 !important; // Black prints faster: h5bp.com/s 11 | background: transparent !important; 12 | box-shadow: none !important; 13 | } 14 | 15 | a, 16 | a:visited { 17 | text-decoration: underline; 18 | } 19 | 20 | a[href]:after { 21 | content: " (" attr(href) ")"; 22 | } 23 | 24 | abbr[title]:after { 25 | content: " (" attr(title) ")"; 26 | } 27 | 28 | // Don't show links for images, or javascript/internal links 29 | a[href^="javascript:"]:after, 30 | a[href^="#"]:after { 31 | content: ""; 32 | } 33 | 34 | pre, 35 | blockquote { 36 | border: 1px solid #999; 37 | page-break-inside: avoid; 38 | } 39 | 40 | thead { 41 | display: table-header-group; // h5bp.com/t 42 | } 43 | 44 | tr, 45 | img { 46 | page-break-inside: avoid; 47 | } 48 | 49 | img { 50 | max-width: 100% !important; 51 | } 52 | 53 | p, 54 | h2, 55 | h3 { 56 | orphans: 3; 57 | widows: 3; 58 | } 59 | 60 | h2, 61 | h3 { 62 | page-break-after: avoid; 63 | } 64 | 65 | // Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245 66 | // Once fixed, we can just straight up remove this. 67 | select { 68 | background: #fff !important; 69 | } 70 | 71 | // Bootstrap components 72 | .navbar { 73 | display: none; 74 | } 75 | .table { 76 | td, 77 | th { 78 | background-color: #fff !important; 79 | } 80 | } 81 | .btn, 82 | .dropup > .btn { 83 | > .caret { 84 | border-top-color: #000 !important; 85 | } 86 | } 87 | .label { 88 | border: 1px solid #000; 89 | } 90 | 91 | .table { 92 | border-collapse: collapse !important; 93 | } 94 | .table-bordered { 95 | th, 96 | td { 97 | border: 1px solid #ddd !important; 98 | } 99 | } 100 | 101 | } 102 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/less/progress-bars.less: -------------------------------------------------------------------------------- 1 | // 2 | // Progress bars 3 | // -------------------------------------------------- 4 | 5 | 6 | // Bar animations 7 | // ------------------------- 8 | 9 | // WebKit 10 | @-webkit-keyframes progress-bar-stripes { 11 | from { background-position: 40px 0; } 12 | to { background-position: 0 0; } 13 | } 14 | 15 | // Spec and IE10+ 16 | @keyframes progress-bar-stripes { 17 | from { background-position: 40px 0; } 18 | to { background-position: 0 0; } 19 | } 20 | 21 | 22 | 23 | // Bar itself 24 | // ------------------------- 25 | 26 | // Outer container 27 | .progress { 28 | overflow: hidden; 29 | height: @line-height-computed; 30 | margin-bottom: @line-height-computed; 31 | background-color: @progress-bg; 32 | border-radius: @border-radius-base; 33 | .box-shadow(inset 0 1px 2px rgba(0,0,0,.1)); 34 | } 35 | 36 | // Bar of progress 37 | .progress-bar { 38 | float: left; 39 | width: 0%; 40 | height: 100%; 41 | font-size: @font-size-small; 42 | line-height: @line-height-computed; 43 | color: @progress-bar-color; 44 | text-align: center; 45 | background-color: @progress-bar-bg; 46 | .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15)); 47 | .transition(width .6s ease); 48 | } 49 | 50 | // Striped bars 51 | .progress-striped .progress-bar { 52 | #gradient > .striped(); 53 | background-size: 40px 40px; 54 | } 55 | 56 | // Call animation for the active one 57 | .progress.active .progress-bar { 58 | .animation(progress-bar-stripes 2s linear infinite); 59 | } 60 | 61 | 62 | 63 | // Variations 64 | // ------------------------- 65 | 66 | .progress-bar-success { 67 | .progress-bar-variant(@progress-bar-success-bg); 68 | } 69 | 70 | .progress-bar-info { 71 | .progress-bar-variant(@progress-bar-info-bg); 72 | } 73 | 74 | .progress-bar-warning { 75 | .progress-bar-variant(@progress-bar-warning-bg); 76 | } 77 | 78 | .progress-bar-danger { 79 | .progress-bar-variant(@progress-bar-danger-bg); 80 | } 81 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/less/responsive-utilities.less: -------------------------------------------------------------------------------- 1 | // 2 | // Responsive: Utility classes 3 | // -------------------------------------------------- 4 | 5 | 6 | // IE10 in Windows (Phone) 8 7 | // 8 | // Support for responsive views via media queries is kind of borked in IE10, for 9 | // Surface/desktop in split view and for Windows Phone 8. This particular fix 10 | // must be accompanied by a snippet of JavaScript to sniff the user agent and 11 | // apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at 12 | // our Getting Started page for more information on this bug. 13 | // 14 | // For more information, see the following: 15 | // 16 | // Issue: https://github.com/twbs/bootstrap/issues/10497 17 | // Docs: http://getbootstrap.com/getting-started/#browsers 18 | // Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/ 19 | 20 | @-ms-viewport { 21 | width: device-width; 22 | } 23 | 24 | 25 | // Visibility utilities 26 | .visible-xs, 27 | .visible-sm, 28 | .visible-md, 29 | .visible-lg { 30 | .responsive-invisibility(); 31 | } 32 | 33 | .visible-xs { 34 | @media (max-width: @screen-xs-max) { 35 | .responsive-visibility(); 36 | } 37 | } 38 | .visible-sm { 39 | @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { 40 | .responsive-visibility(); 41 | } 42 | } 43 | .visible-md { 44 | @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { 45 | .responsive-visibility(); 46 | } 47 | } 48 | .visible-lg { 49 | @media (min-width: @screen-lg-min) { 50 | .responsive-visibility(); 51 | } 52 | } 53 | 54 | .hidden-xs { 55 | @media (max-width: @screen-xs-max) { 56 | .responsive-invisibility(); 57 | } 58 | } 59 | .hidden-sm { 60 | @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { 61 | .responsive-invisibility(); 62 | } 63 | } 64 | .hidden-md { 65 | @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { 66 | .responsive-invisibility(); 67 | } 68 | } 69 | .hidden-lg { 70 | @media (min-width: @screen-lg-min) { 71 | .responsive-invisibility(); 72 | } 73 | } 74 | 75 | 76 | // Print utilities 77 | // 78 | // Media queries are placed on the inside to be mixin-friendly. 79 | 80 | .visible-print { 81 | .responsive-invisibility(); 82 | 83 | @media print { 84 | .responsive-visibility(); 85 | } 86 | } 87 | 88 | .hidden-print { 89 | @media print { 90 | .responsive-invisibility(); 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/less/thumbnails.less: -------------------------------------------------------------------------------- 1 | // 2 | // Thumbnails 3 | // -------------------------------------------------- 4 | 5 | 6 | // Mixin and adjust the regular image class 7 | .thumbnail { 8 | display: block; 9 | padding: @thumbnail-padding; 10 | margin-bottom: @line-height-computed; 11 | line-height: @line-height-base; 12 | background-color: @thumbnail-bg; 13 | border: 1px solid @thumbnail-border; 14 | border-radius: @thumbnail-border-radius; 15 | .transition(all .2s ease-in-out); 16 | 17 | > img, 18 | a > img { 19 | &:extend(.img-responsive); 20 | margin-left: auto; 21 | margin-right: auto; 22 | } 23 | 24 | // Add a hover state for linked versions only 25 | a&:hover, 26 | a&:focus, 27 | a&.active { 28 | border-color: @link-color; 29 | } 30 | 31 | // Image captions 32 | .caption { 33 | padding: @thumbnail-caption-padding; 34 | color: @thumbnail-caption-color; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/less/utilities.less: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes 3 | // -------------------------------------------------- 4 | 5 | 6 | // Floats 7 | // ------------------------- 8 | 9 | .clearfix { 10 | .clearfix(); 11 | } 12 | .center-block { 13 | .center-block(); 14 | } 15 | .pull-right { 16 | float: right !important; 17 | } 18 | .pull-left { 19 | float: left !important; 20 | } 21 | 22 | 23 | // Toggling content 24 | // ------------------------- 25 | 26 | // Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1 27 | .hide { 28 | display: none !important; 29 | } 30 | .show { 31 | display: block !important; 32 | } 33 | .invisible { 34 | visibility: hidden; 35 | } 36 | .text-hide { 37 | .text-hide(); 38 | } 39 | 40 | 41 | // Hide from screenreaders and browsers 42 | // 43 | // Credit: HTML5 Boilerplate 44 | 45 | .hidden { 46 | display: none !important; 47 | visibility: hidden !important; 48 | } 49 | 50 | 51 | // For Affix plugin 52 | // ------------------------- 53 | 54 | .affix { 55 | position: fixed; 56 | } 57 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/less/wells.less: -------------------------------------------------------------------------------- 1 | // 2 | // Wells 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .well { 8 | min-height: 20px; 9 | padding: 19px; 10 | margin-bottom: 20px; 11 | background-color: @well-bg; 12 | border: 1px solid @well-border; 13 | border-radius: @border-radius-base; 14 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); 15 | blockquote { 16 | border-color: #ddd; 17 | border-color: rgba(0,0,0,.15); 18 | } 19 | } 20 | 21 | // Sizes 22 | .well-lg { 23 | padding: 24px; 24 | border-radius: @border-radius-large; 25 | } 26 | .well-sm { 27 | padding: 9px; 28 | border-radius: @border-radius-small; 29 | } 30 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bootstrap", 3 | "description": "Sleek, intuitive, and powerful front-end framework for faster and easier web development.", 4 | "version": "3.1.1", 5 | "keywords": [ 6 | "bootstrap", 7 | "css" 8 | ], 9 | "homepage": "http://getbootstrap.com", 10 | "author": "Twitter, Inc.", 11 | "scripts": { 12 | "test": "grunt test" 13 | }, 14 | "style": "./dist/css/bootstrap.css", 15 | "less": "./less/bootstrap.less", 16 | "repository": { 17 | "type": "git", 18 | "url": "https://github.com/twbs/bootstrap.git" 19 | }, 20 | "bugs": { 21 | "url": "https://github.com/twbs/bootstrap/issues" 22 | }, 23 | "license": { 24 | "type": "MIT", 25 | "url": "https://github.com/twbs/bootstrap/blob/master/LICENSE" 26 | }, 27 | "devDependencies": { 28 | "btoa": "~1.1.1", 29 | "canonical-json": "~0.0.3", 30 | "grunt": "~0.4.2", 31 | "grunt-banner": "~0.2.0", 32 | "grunt-contrib-clean": "~0.5.0", 33 | "grunt-contrib-concat": "~0.3.0", 34 | "grunt-contrib-connect": "~0.6.0", 35 | "grunt-contrib-copy": "~0.5.0", 36 | "grunt-contrib-csslint": "~0.2.0", 37 | "grunt-contrib-cssmin": "~0.7.0", 38 | "grunt-contrib-jade": "~0.9.1", 39 | "grunt-contrib-jshint": "~0.8.0", 40 | "grunt-contrib-less": "~0.9.0", 41 | "grunt-contrib-qunit": "~0.4.0", 42 | "grunt-contrib-uglify": "~0.3.0", 43 | "grunt-contrib-watch": "~0.5.3", 44 | "grunt-csscomb": "~2.0.1", 45 | "grunt-exec": "0.4.3", 46 | "grunt-html-validation": "~0.1.13", 47 | "grunt-jekyll": "~0.4.1", 48 | "grunt-jscs-checker": "~0.3.0", 49 | "grunt-saucelabs": "~5.0.0", 50 | "grunt-sed": "~0.1.1", 51 | "load-grunt-tasks": "~0.3.0", 52 | "markdown": "~0.5.0" 53 | }, 54 | "jspm": { 55 | "main": "js/bootstrap", 56 | "directories": { 57 | "example": "examples", 58 | "lib": "dist" 59 | }, 60 | "shim": { 61 | "js/bootstrap": { 62 | "imports": "jquery", 63 | "exports": "$" 64 | } 65 | }, 66 | "buildConfig": { 67 | "uglify": true 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/test-infra/requirements.txt: -------------------------------------------------------------------------------- 1 | boto==2.20.0 2 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/test-infra/sauce_browsers.yml: -------------------------------------------------------------------------------- 1 | [ 2 | # Docs: https://saucelabs.com/docs/platforms/webdriver 3 | 4 | { 5 | browserName: "safari", 6 | platform: "OS X 10.9" 7 | }, 8 | # { 9 | # browserName: "googlechrome", 10 | # platform: "OS X 10.9", 11 | # version: "31" 12 | # }, 13 | { 14 | browserName: "firefox", 15 | platform: "OS X 10.9" 16 | }, 17 | 18 | # Mac Opera not currently supported by Sauce Labs 19 | 20 | { 21 | browserName: "internet explorer", 22 | version: "11", 23 | platform: "Windows 8.1" 24 | }, 25 | { 26 | browserName: "internet explorer", 27 | version: "10", 28 | platform: "Windows 8" 29 | }, 30 | # { 31 | # browserName: "internet explorer", 32 | # version: "9", 33 | # platform: "Windows 7" 34 | # }, 35 | # { 36 | # browserName: "internet explorer", 37 | # version: "8", 38 | # platform: "Windows 7" 39 | # }, 40 | 41 | # { # Unofficial 42 | # browserName: "internet explorer", 43 | # version: "7", 44 | # platform: "Windows XP" 45 | # }, 46 | 47 | { 48 | browserName: "googlechrome", 49 | platform: "Windows 8.1" 50 | }, 51 | { 52 | browserName: "firefox", 53 | platform: "Windows 8.1" 54 | }, 55 | 56 | # Win Opera 15+ not currently supported by Sauce Labs 57 | 58 | { 59 | browserName: "iphone", 60 | platform: "OS X 10.9", 61 | version: "7" 62 | }, 63 | 64 | # iOS Chrome not currently supported by Sauce Labs 65 | 66 | # Linux (unofficial) 67 | { 68 | browserName: "googlechrome", 69 | platform: "Linux" 70 | }, 71 | { 72 | browserName: "firefox", 73 | platform: "Linux" 74 | } 75 | 76 | # Android Chrome not currently supported by Sauce Labs 77 | 78 | # { # Android Browser (super-unofficial) 79 | # browserName: "android", 80 | # version: "4.0", 81 | # platform: "Linux" 82 | # } 83 | ] 84 | -------------------------------------------------------------------------------- /app/bower_components/bootstrap/test-infra/uncached-npm-install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cp test-infra/npm-shrinkwrap.canonical.json npm-shrinkwrap.json 3 | npm install 4 | rm npm-shrinkwrap.json 5 | -------------------------------------------------------------------------------- /app/bower_components/es5-shim/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "es5-shim", 3 | "homepage": "https://github.com/es-shims/es5-shim", 4 | "version": "2.1.0", 5 | "_release": "2.1.0", 6 | "_resolution": { 7 | "type": "version", 8 | "tag": "v2.1.0", 9 | "commit": "07da727ff7db2a3a25d6bc25d13e374b3bbc99c2" 10 | }, 11 | "_source": "https://github.com/es-shims/es5-shim.git", 12 | "_target": "~2.1.0", 13 | "_originalSource": "es5-shim" 14 | } -------------------------------------------------------------------------------- /app/bower_components/es5-shim/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /app/bower_components/es5-shim/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | 2 | - kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License 3 | - tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal 4 | Project) 5 | - dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA 6 | - fschaefer Florian Schäfer Copyright (C) 2010 MIT License 7 | - Gozala Irakli Gozalishvili Copyright (C) 2010 MIT License 8 | - kitcambridge Kit Cambridge Copyright (C) 2011 MIT License 9 | - kossnocorp Sasha Koss XXX TODO License or CLA 10 | - bryanforbes Bryan Forbes XXX TODO License or CLA 11 | - killdream Quildreen Motta Copyright (C) 2011 MIT Licence 12 | - michaelficarra Michael Ficarra Copyright (C) 2011 3-clause BSD 13 | License 14 | - sharkbrainguy Gerard Paapu Copyright (C) 2011 MIT License 15 | - bbqsrc Brendan Molloy (C) 2011 Creative Commons Zero (public domain) 16 | - iwyg XXX TODO License or CLA 17 | - DomenicDenicola Domenic Denicola Copyright (C) 2011 MIT License 18 | - xavierm02 Montillet Xavier Copyright (C) 2011 MIT License 19 | - Raynos Jake Verbaten Copyright (C) 2011 MIT Licence 20 | - samsonjs Sami Samhuri Copyright (C) 2010 MIT License 21 | - rwldrn Rick Waldron Copyright (C) 2011 MIT License 22 | - lexer Alexey Zakharov XXX TODO License or CLA 23 | - 280 North Inc. (Now Motorola LLC, a subsidiary of Google Inc.) 24 | Copyright (C) 2009 MIT License 25 | - Steven Levithan Copyright (C) 2012 MIT License 26 | -------------------------------------------------------------------------------- /app/bower_components/es5-shim/LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Copyright 2009, 2010 Kristopher Michael Kowal. All rights reserved. 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to 5 | deal in the Software without restriction, including without limitation the 6 | rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | sell copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | IN THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /app/bower_components/es5-shim/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "es5-shim", 3 | "version": "2.1.0", 4 | "description": "ES5 as implementable on previous engines", 5 | "homepage": "http://github.com/kriskowal/es5-shim/", 6 | "contributors": [ 7 | "Kris Kowal (http://github.com/kriskowal/)", 8 | "Sami Samhuri (http://samhuri.net/)", 9 | "Florian Schäfer (http://github.com/fschaefer)", 10 | "Irakli Gozalishvili (http://jeditoolkit.com)", 11 | "Kit Cambridge (http://kitcambridge.github.com)" 12 | ], 13 | "bugs": { 14 | "mail": "kris@cixar.com", 15 | "url": "http://github.com/kriskowal/es5-shim/issues" 16 | }, 17 | "licenses": [ 18 | { 19 | "type": "MIT", 20 | "url": "http://github.com/kriskowal/es5-shim/raw/master/LICENSE" 21 | } 22 | ], 23 | "main": "es5-shim.js", 24 | "repository": { 25 | "type": "git", 26 | "url": "http://github.com/kriskowal/es5-shim.git" 27 | }, 28 | "scripts": { 29 | "minify": "uglifyjs es5-shim.js --source-map=es5-shim.map -b ascii_only=true,beautify=false > es5-shim.min.js; uglifyjs es5-sham.js --source-map=es5-sham.map -b ascii_only=true,beautify=false > es5-sham.min.js" 30 | }, 31 | "engines": { 32 | "node": ">=0.2.0" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/bower_components/es5-shim/tests/helpers/h-kill.js: -------------------------------------------------------------------------------- 1 | // This methods allows the killing of built-in functions, 2 | // so the shim can take over with that implementation 3 | var HLP = (function() { 4 | "use strict"; 5 | var kill; 6 | 7 | kill = function(_class, methods) { 8 | /*if(!Array.isArray(methods)) 9 | return;*/ 10 | if(!_class.originals) 11 | _class.originals = {}; 12 | 13 | for (var i = 0, len = methods.length; i < len; i++) { 14 | var obj = methods[i]; 15 | _class.originals[obj] = _class[obj]; 16 | delete _class[obj]; 17 | if (obj in _class) { 18 | // try something more aggressive since V8 at least 19 | // appears to ignore the delete. 20 | _class[obj] = null; 21 | if (_class[obj]) { 22 | console.log("Couln't overwrite", obj, "of", _class); 23 | } 24 | } 25 | } 26 | }; 27 | return { kill: kill }; 28 | }()); 29 | 30 | HLP.kill(Function.prototype, [ 31 | 'bind' 32 | ]); 33 | 34 | HLP.kill(Array, [ 35 | 'isArray' 36 | ]); 37 | 38 | HLP.kill(String.prototype, [ 39 | "trim" 40 | ]); 41 | 42 | HLP.kill(Object, [ 43 | 'keys' 44 | ]); 45 | 46 | HLP.kill(Number.prototype, [ 47 | 'toFixed' 48 | ]); 49 | 50 | HLP.kill(Date, [ 51 | 'now', 'parse' 52 | ]); 53 | 54 | HLP.kill(Date.prototype, [ 55 | "toJSON", "toISOString" 56 | ]); 57 | 58 | HLP.kill(Array.prototype, [ 59 | 'forEach', 'some', 'every', 60 | 'indexOf', 'lastIndexOf', 61 | 'map', 'filter', 62 | 'reduce', 'reduceRight' 63 | ]); 64 | 65 | -------------------------------------------------------------------------------- /app/bower_components/es5-shim/tests/helpers/h-matchers.js: -------------------------------------------------------------------------------- 1 | beforeEach(function() { 2 | this.addMatchers({ 3 | toExactlyMatch: function(expected) { 4 | var a1, a2, 5 | l, i, 6 | key, 7 | actual = this.actual; 8 | 9 | var getKeys = function(o) { 10 | var a = []; 11 | for(key in o) { 12 | if(o.hasOwnProperty(key)) { 13 | a.push(key); 14 | } 15 | } 16 | return a; 17 | } 18 | a1 = getKeys(actual); 19 | a2 = getKeys(expected); 20 | 21 | l = a1.length; 22 | if(l !== a2.length) { 23 | return false; 24 | } 25 | for(i = 0; i < l; i++) { 26 | key = a1[i]; 27 | expect(key).toEqual(a2[i]); 28 | expect(actual[key]).toEqual(expected[key]); 29 | } 30 | 31 | return true; 32 | } 33 | }) 34 | }); 35 | -------------------------------------------------------------------------------- /app/bower_components/es5-shim/tests/helpers/h.js: -------------------------------------------------------------------------------- 1 | function implement() { 2 | throw 'Not implemented'; 3 | } -------------------------------------------------------------------------------- /app/bower_components/es5-shim/tests/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Jasmine Spec Runner 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /app/bower_components/es5-shim/tests/index.min.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Jasmine Spec Runner 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /app/bower_components/es5-shim/tests/lib/jasmine_favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siddii/angular-feeds/fa44b7b359b945f599bcdb1ec9f15f57984743e9/app/bower_components/es5-shim/tests/lib/jasmine_favicon.png -------------------------------------------------------------------------------- /app/bower_components/es5-shim/tests/spec/s-number.js: -------------------------------------------------------------------------------- 1 | describe('Number', function () { 2 | 'use strict'; 3 | 4 | describe('toFixed', function () { 5 | it('should convert numbers correctly', function () { 6 | expect((0.00008).toFixed(3)).toBe('0.000'); 7 | expect((0.9).toFixed(0)).toBe('1'); 8 | expect((1.255).toFixed(2)).toBe('1.25'); 9 | expect((1843654265.0774949).toFixed(5)).toBe('1843654265.07749'); 10 | expect((1000000000000000128).toFixed(0)).toBe('1000000000000000128'); 11 | }); 12 | }); 13 | 14 | }); 15 | -------------------------------------------------------------------------------- /app/bower_components/jquery/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "1.10.2", 4 | "description": "jQuery component", 5 | "keywords": [ 6 | "jquery", 7 | "component" 8 | ], 9 | "main": "jquery.js", 10 | "license": "MIT", 11 | "homepage": "https://github.com/jquery/jquery-dist", 12 | "_release": "1.10.2", 13 | "_resolution": { 14 | "type": "version", 15 | "tag": "1.10.2", 16 | "commit": "16b079b164d62bd807c612806842a13bf9b04d17" 17 | }, 18 | "_source": "https://github.com/jquery/jquery-dist.git", 19 | "_target": "~1.10.2", 20 | "_originalSource": "jquery" 21 | } -------------------------------------------------------------------------------- /app/bower_components/jquery/.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 | [*] 8 | end_of_line = lf 9 | charset = utf-8 10 | trim_trailing_whitespace = true 11 | insert_final_newline = true 12 | 13 | # Tabs in JS unless otherwise specified 14 | [**.js] 15 | indent_style = tab 16 | 17 | [Makefile] 18 | indent_style = tab 19 | 20 | 21 | [speed/**.html] 22 | indent_style = tab 23 | 24 | [speed/**.css] 25 | indent_style = tab 26 | 27 | [speed/benchmarker.js] 28 | indent_style = space 29 | indent_size = 2 30 | 31 | 32 | [test/**.xml] 33 | indent_style = tab 34 | 35 | [test/**.php] 36 | indent_style = tab 37 | 38 | [test/**.html] 39 | indent_style = tab 40 | 41 | [test/**.css] 42 | indent_style = space 43 | indent_size = 8 44 | -------------------------------------------------------------------------------- /app/bower_components/jquery/.gitattributes: -------------------------------------------------------------------------------- 1 | * eol=lf 2 | *.jar binary 3 | -------------------------------------------------------------------------------- /app/bower_components/jquery/.gitignore: -------------------------------------------------------------------------------- 1 | src/selector-sizzle.js 2 | src/selector.js 3 | dist 4 | .project 5 | .settings 6 | *~ 7 | *.diff 8 | *.patch 9 | /*.html 10 | .DS_Store 11 | dist/.destination.json 12 | dist/.sizecache.json 13 | build/.sizecache.json 14 | node_modules 15 | -------------------------------------------------------------------------------- /app/bower_components/jquery/.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "src/sizzle"] 2 | path = src/sizzle 3 | url = git://github.com/jquery/sizzle.git 4 | [submodule "test/qunit"] 5 | path = test/qunit 6 | url = git://github.com/jquery/qunit.git 7 | -------------------------------------------------------------------------------- /app/bower_components/jquery/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "boss": true, 3 | "curly": true, 4 | "eqeqeq": true, 5 | "eqnull": true, 6 | "expr": true, 7 | "immed": true, 8 | "noarg": true, 9 | "onevar": true, 10 | "quotmark": "double", 11 | "smarttabs": true, 12 | "trailing": true, 13 | "undef": true, 14 | "unused": true, 15 | 16 | "node": true 17 | } -------------------------------------------------------------------------------- /app/bower_components/jquery/MIT-LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2013 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/jquery/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "1.10.2", 4 | "description": "jQuery component", 5 | "keywords": [ 6 | "jquery", 7 | "component" 8 | ], 9 | "main": "jquery.js", 10 | "license": "MIT" 11 | } 12 | -------------------------------------------------------------------------------- /app/bower_components/jquery/build/release-notes.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | /* 3 | * jQuery Release Note Generator 4 | */ 5 | 6 | var fs = require("fs"), 7 | http = require("http"), 8 | extract = /(.*?)<[^"]+"component">\s*(\S+)/g, 9 | categories = [], 10 | version = process.argv[2]; 11 | 12 | if ( !/^\d+\.\d+/.test( version ) ) { 13 | console.error( "Invalid version number: " + version ); 14 | process.exit( 1 ); 15 | } 16 | 17 | http.request({ 18 | host: "bugs.jquery.com", 19 | port: 80, 20 | method: "GET", 21 | path: "/query?status=closed&resolution=fixed&max=400&component=!web&order=component&milestone=" + version 22 | }, function (res) { 23 | var data = []; 24 | 25 | res.on( "data", function( chunk ) { 26 | data.push( chunk ); 27 | }); 28 | 29 | res.on( "end", function() { 30 | var match, 31 | file = data.join(""), 32 | cur; 33 | 34 | while ( (match = extract.exec( file )) ) { 35 | if ( "#" + match[1] !== match[2] ) { 36 | var cat = match[3]; 37 | 38 | if ( !cur || cur !== cat ) { 39 | if ( cur ) { 40 | console.log(""); 41 | } 42 | cur = cat; 43 | console.log( "

" + cat.charAt(0).toUpperCase() + cat.slice(1) + "

" ); 44 | console.log("
"); 55 | } 56 | 57 | }); 58 | }).end(); 59 | 60 | -------------------------------------------------------------------------------- /app/bower_components/jquery/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "repo": "components/jquery", 4 | "version": "1.10.2", 5 | "description": "jQuery component", 6 | "keywords": [ 7 | "jquery", 8 | "component" 9 | ], 10 | "main": "jquery.js", 11 | "scripts": [ 12 | "jquery.js" 13 | ], 14 | "license": "MIT" 15 | } 16 | -------------------------------------------------------------------------------- /app/bower_components/jquery/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "components/jquery", 3 | "description": "jQuery JavaScript Library", 4 | "type": "component", 5 | "homepage": "http://jquery.com", 6 | "license": "MIT", 7 | "support": { 8 | "irc": "irc://irc.freenode.org/jquery", 9 | "issues": "http://bugs.jquery.com", 10 | "forum": "http://forum.jquery.com", 11 | "wiki": "http://docs.jquery.com/", 12 | "source": "https://github.com/jquery/jquery" 13 | }, 14 | "authors": [ 15 | { 16 | "name": "John Resig", 17 | "email": "jeresig@gmail.com" 18 | } 19 | ], 20 | "require": { 21 | "robloach/component-installer": "*" 22 | }, 23 | "extra": { 24 | "component": { 25 | "scripts": [ 26 | "jquery.js" 27 | ], 28 | "files": [ 29 | "jquery.min.js", 30 | "jquery-migrate.js", 31 | "jquery-migrate.min.js" 32 | ] 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/bower_components/jquery/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "title": "jQuery", 4 | "description": "JavaScript library for DOM operations", 5 | "version": "1.10.2", 6 | "homepage": "http://jquery.com", 7 | "author": { 8 | "name": "jQuery Foundation and other contributors", 9 | "url": "https://github.com/jquery/jquery/blob/master/AUTHORS.txt" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "https://github.com/jquery/jquery.git" 14 | }, 15 | "bugs": { 16 | "url": "http://bugs.jquery.com" 17 | }, 18 | "licenses": [ 19 | { 20 | "type": "MIT", 21 | "url": "https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt" 22 | } 23 | ], 24 | "dependencies": {}, 25 | "devDependencies": { 26 | "grunt-compare-size": "~0.4.0", 27 | "grunt-git-authors": "1.2.0", 28 | "grunt-update-submodules": "0.2.0", 29 | "grunt-contrib-watch": "0.3.1", 30 | "grunt-contrib-jshint": "0.3.0", 31 | "grunt-contrib-uglify": "0.2.0", 32 | "grunt": "0.4.1", 33 | "gzip-js": "0.3.1", 34 | "testswarm": "~1.1.0", 35 | "archiver": "~0.4.2" 36 | }, 37 | "keywords": [] 38 | } 39 | -------------------------------------------------------------------------------- /app/bower_components/jquery/speed/benchmark.js: -------------------------------------------------------------------------------- 1 | // Runs a function many times without the function call overhead 2 | function benchmark(fn, times, name){ 3 | fn = fn.toString(); 4 | var s = fn.indexOf('{')+1, 5 | e = fn.lastIndexOf('}'); 6 | fn = fn.substring(s,e); 7 | 8 | return benchmarkString(fn, times, name); 9 | } 10 | 11 | function benchmarkString(fn, times, name) { 12 | var fn = new Function("i", "var t=new Date; while(i--) {" + fn + "}; return new Date - t")(times) 13 | fn.displayName = name || "benchmarked"; 14 | return fn; 15 | } 16 | -------------------------------------------------------------------------------- /app/bower_components/jquery/speed/benchmarker.css: -------------------------------------------------------------------------------- 1 | 2 | .dialog { 3 | margin-bottom: 1em; 4 | } 5 | a.expand { 6 | background: #e3e3e3; 7 | } 8 | 9 | div#time-test { 10 | font-family: Arial, Helvetica, sans-serif; 11 | font-size: 62.5%; 12 | } 13 | 14 | td.test button { 15 | float: right; 16 | } 17 | 18 | table { 19 | border: 1px solid #000; 20 | } 21 | 22 | table td, table th { 23 | border: 1px solid #000; 24 | padding: 10px; 25 | } 26 | 27 | td.winner { 28 | background-color: #cfc; 29 | } 30 | 31 | td.tie { 32 | background-color: #ffc; 33 | } 34 | 35 | td.fail { 36 | background-color: #f99; 37 | font-weight: bold; 38 | text-align: center; 39 | } 40 | 41 | tfoot td { 42 | text-align: center; 43 | } 44 | 45 | #time-test { 46 | margin: 1em 0; 47 | padding: .5em; 48 | background: #e3e3e3; 49 | } 50 | #time-taken { 51 | font-weight: bold; 52 | } 53 | 54 | span.wins { 55 | color: #330; 56 | } 57 | 58 | span.fails { 59 | color: #900; 60 | } 61 | 62 | div.buttons { 63 | margin-top: 10px; 64 | margin-bottom: 10px; 65 | } 66 | -------------------------------------------------------------------------------- /app/bower_components/jquery/speed/closest.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Test .closest() Performance 5 | 6 | 7 | 8 | 9 | 25 | 26 | 27 |
28 |

Hello

29 |
30 |
31 |

lorem ipsum

32 |

dolor sit amet

33 |
34 |
35 |
36 |
    37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /app/bower_components/jquery/speed/css.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Test Event Handling Performance 5 | 6 | 7 | 8 | 9 | 76 | 77 | 78 | 79 |

    Getting Values: Loading...

    80 |

    Setting Values: Loading...

    81 | 82 | 83 | -------------------------------------------------------------------------------- /app/bower_components/jquery/speed/event.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Test Event Handling Performance 5 | 6 | 7 | 8 | 9 | 53 | 54 | 55 |

    Move the mouse, please!

    56 |

    57 | 58 | 59 | -------------------------------------------------------------------------------- /app/bower_components/jquery/speed/slice.vs.concat.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "boss": true, 3 | "curly": true, 4 | "eqeqeq": true, 5 | "eqnull": true, 6 | "expr": true, 7 | "immed": true, 8 | "noarg": true, 9 | "onevar": true, 10 | "quotmark": "double", 11 | "smarttabs": true, 12 | "trailing": true, 13 | "undef": true, 14 | "unused": true, 15 | 16 | "evil": true, 17 | "sub": true, 18 | 19 | "browser": true, 20 | "wsh": true, 21 | 22 | "globals": { 23 | "define": true, 24 | "module": true, 25 | "jQuery": true 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/ajax/jsonp.js: -------------------------------------------------------------------------------- 1 | var oldCallbacks = [], 2 | rjsonp = /(=)\?(?=&|$)|\?\?/; 3 | 4 | // Default jsonp settings 5 | jQuery.ajaxSetup({ 6 | jsonp: "callback", 7 | jsonpCallback: function() { 8 | var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( ajax_nonce++ ) ); 9 | this[ callback ] = true; 10 | return callback; 11 | } 12 | }); 13 | 14 | // Detect, normalize options and install callbacks for jsonp requests 15 | jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { 16 | 17 | var callbackName, overwritten, responseContainer, 18 | jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? 19 | "url" : 20 | typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data" 21 | ); 22 | 23 | // Handle iff the expected data type is "jsonp" or we have a parameter to set 24 | if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { 25 | 26 | // Get callback name, remembering preexisting value associated with it 27 | callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? 28 | s.jsonpCallback() : 29 | s.jsonpCallback; 30 | 31 | // Insert callback into url or form data 32 | if ( jsonProp ) { 33 | s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); 34 | } else if ( s.jsonp !== false ) { 35 | s.url += ( ajax_rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; 36 | } 37 | 38 | // Use data converter to retrieve json after script execution 39 | s.converters["script json"] = function() { 40 | if ( !responseContainer ) { 41 | jQuery.error( callbackName + " was not called" ); 42 | } 43 | return responseContainer[ 0 ]; 44 | }; 45 | 46 | // force json dataType 47 | s.dataTypes[ 0 ] = "json"; 48 | 49 | // Install callback 50 | overwritten = window[ callbackName ]; 51 | window[ callbackName ] = function() { 52 | responseContainer = arguments; 53 | }; 54 | 55 | // Clean-up function (fires after converters) 56 | jqXHR.always(function() { 57 | // Restore preexisting value 58 | window[ callbackName ] = overwritten; 59 | 60 | // Save back as free 61 | if ( s[ callbackName ] ) { 62 | // make sure that re-using the options doesn't screw things around 63 | s.jsonpCallback = originalSettings.jsonpCallback; 64 | 65 | // save the callback name for future use 66 | oldCallbacks.push( callbackName ); 67 | } 68 | 69 | // Call if it was a function and we have a response 70 | if ( responseContainer && jQuery.isFunction( overwritten ) ) { 71 | overwritten( responseContainer[ 0 ] ); 72 | } 73 | 74 | responseContainer = overwritten = undefined; 75 | }); 76 | 77 | // Delegate to script 78 | return "script"; 79 | } 80 | }); 81 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/ajax/script.js: -------------------------------------------------------------------------------- 1 | // Install script dataType 2 | jQuery.ajaxSetup({ 3 | accepts: { 4 | script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" 5 | }, 6 | contents: { 7 | script: /(?:java|ecma)script/ 8 | }, 9 | converters: { 10 | "text script": function( text ) { 11 | jQuery.globalEval( text ); 12 | return text; 13 | } 14 | } 15 | }); 16 | 17 | // Handle cache's special case and global 18 | jQuery.ajaxPrefilter( "script", function( s ) { 19 | if ( s.cache === undefined ) { 20 | s.cache = false; 21 | } 22 | if ( s.crossDomain ) { 23 | s.type = "GET"; 24 | s.global = false; 25 | } 26 | }); 27 | 28 | // Bind script tag hack transport 29 | jQuery.ajaxTransport( "script", function(s) { 30 | 31 | // This transport only deals with cross domain requests 32 | if ( s.crossDomain ) { 33 | 34 | var script, 35 | head = document.head || jQuery("head")[0] || document.documentElement; 36 | 37 | return { 38 | 39 | send: function( _, callback ) { 40 | 41 | script = document.createElement("script"); 42 | 43 | script.async = true; 44 | 45 | if ( s.scriptCharset ) { 46 | script.charset = s.scriptCharset; 47 | } 48 | 49 | script.src = s.url; 50 | 51 | // Attach handlers for all browsers 52 | script.onload = script.onreadystatechange = function( _, isAbort ) { 53 | 54 | if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) { 55 | 56 | // Handle memory leak in IE 57 | script.onload = script.onreadystatechange = null; 58 | 59 | // Remove the script 60 | if ( script.parentNode ) { 61 | script.parentNode.removeChild( script ); 62 | } 63 | 64 | // Dereference the script 65 | script = null; 66 | 67 | // Callback if not abort 68 | if ( !isAbort ) { 69 | callback( 200, "success" ); 70 | } 71 | } 72 | }; 73 | 74 | // Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending 75 | // Use native DOM manipulation to avoid our domManip AJAX trickery 76 | head.insertBefore( script, head.firstChild ); 77 | }, 78 | 79 | abort: function() { 80 | if ( script ) { 81 | script.onload( undefined, true ); 82 | } 83 | } 84 | }; 85 | } 86 | }); 87 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/deprecated.js: -------------------------------------------------------------------------------- 1 | // Limit scope pollution from any deprecated API 2 | // (function() { 3 | 4 | // The number of elements contained in the matched element set 5 | jQuery.fn.size = function() { 6 | return this.length; 7 | }; 8 | 9 | jQuery.fn.andSelf = jQuery.fn.addBack; 10 | 11 | // })(); 12 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/dimensions.js: -------------------------------------------------------------------------------- 1 | // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods 2 | jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { 3 | jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) { 4 | // margin is only for outerHeight, outerWidth 5 | jQuery.fn[ funcName ] = function( margin, value ) { 6 | var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), 7 | extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); 8 | 9 | return jQuery.access( this, function( elem, type, value ) { 10 | var doc; 11 | 12 | if ( jQuery.isWindow( elem ) ) { 13 | // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there 14 | // isn't a whole lot we can do. See pull request at this URL for discussion: 15 | // https://github.com/jquery/jquery/pull/764 16 | return elem.document.documentElement[ "client" + name ]; 17 | } 18 | 19 | // Get document width or height 20 | if ( elem.nodeType === 9 ) { 21 | doc = elem.documentElement; 22 | 23 | // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest 24 | // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it. 25 | return Math.max( 26 | elem.body[ "scroll" + name ], doc[ "scroll" + name ], 27 | elem.body[ "offset" + name ], doc[ "offset" + name ], 28 | doc[ "client" + name ] 29 | ); 30 | } 31 | 32 | return value === undefined ? 33 | // Get width or height on the element, requesting but not forcing parseFloat 34 | jQuery.css( elem, type, extra ) : 35 | 36 | // Set width or height on the element 37 | jQuery.style( elem, type, value, extra ); 38 | }, type, chainable ? margin : undefined, chainable, null ); 39 | }; 40 | }); 41 | }); 42 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/event-alias.js: -------------------------------------------------------------------------------- 1 | jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + 2 | "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + 3 | "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { 4 | 5 | // Handle event binding 6 | jQuery.fn[ name ] = function( data, fn ) { 7 | return arguments.length > 0 ? 8 | this.on( name, null, data, fn ) : 9 | this.trigger( name ); 10 | }; 11 | }); 12 | 13 | jQuery.fn.extend({ 14 | hover: function( fnOver, fnOut ) { 15 | return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); 16 | }, 17 | 18 | bind: function( types, data, fn ) { 19 | return this.on( types, null, data, fn ); 20 | }, 21 | unbind: function( types, fn ) { 22 | return this.off( types, null, fn ); 23 | }, 24 | 25 | delegate: function( selector, types, data, fn ) { 26 | return this.on( types, selector, data, fn ); 27 | }, 28 | undelegate: function( selector, types, fn ) { 29 | // ( namespace ) or ( selector, types [, fn] ) 30 | return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); 31 | } 32 | }); 33 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/exports.js: -------------------------------------------------------------------------------- 1 | if ( typeof module === "object" && module && typeof module.exports === "object" ) { 2 | // Expose jQuery as module.exports in loaders that implement the Node 3 | // module pattern (including browserify). Do not create the global, since 4 | // the user will be storing it themselves locally, and globals are frowned 5 | // upon in the Node module world. 6 | module.exports = jQuery; 7 | } else { 8 | // Otherwise expose jQuery to the global object as usual 9 | window.jQuery = window.$ = jQuery; 10 | 11 | // Register as a named AMD module, since jQuery can be concatenated with other 12 | // files that may use define, but not via a proper concatenation script that 13 | // understands anonymous AMD modules. A named AMD is safest and most robust 14 | // way to register. Lowercase jquery is used because AMD module names are 15 | // derived from file names, and jQuery is normally delivered in a lowercase 16 | // file name. Do this after creating the global so that if an AMD module wants 17 | // to call noConflict to hide this version of jQuery, it will work. 18 | if ( typeof define === "function" && define.amd ) { 19 | define( "jquery", [], function () { return jQuery; } ); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/intro.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery JavaScript Library v@VERSION 3 | * http://jquery.com/ 4 | * 5 | * Includes Sizzle.js 6 | * http://sizzlejs.com/ 7 | * 8 | * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors 9 | * Released under the MIT license 10 | * http://jquery.org/license 11 | * 12 | * Date: @DATE 13 | */ 14 | (function( window, undefined ) { 15 | 16 | // Can't do this because several apps including ASP.NET trace 17 | // the stack via arguments.caller.callee and Firefox dies if 18 | // you try to trace through "use strict" call chains. (#13335) 19 | // Support: Firefox 18+ 20 | //"use strict"; 21 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/outro.js: -------------------------------------------------------------------------------- 1 | 2 | })( window ); 3 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/sizzle-jquery.js: -------------------------------------------------------------------------------- 1 | jQuery.find = Sizzle; 2 | jQuery.expr = Sizzle.selectors; 3 | jQuery.expr[":"] = jQuery.expr.pseudos; 4 | jQuery.unique = Sizzle.uniqueSort; 5 | jQuery.text = Sizzle.getText; 6 | jQuery.isXMLDoc = Sizzle.isXML; 7 | jQuery.contains = Sizzle.contains; 8 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/wrap.js: -------------------------------------------------------------------------------- 1 | jQuery.fn.extend({ 2 | wrapAll: function( html ) { 3 | if ( jQuery.isFunction( html ) ) { 4 | return this.each(function(i) { 5 | jQuery(this).wrapAll( html.call(this, i) ); 6 | }); 7 | } 8 | 9 | if ( this[0] ) { 10 | // The elements to wrap the target around 11 | var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); 12 | 13 | if ( this[0].parentNode ) { 14 | wrap.insertBefore( this[0] ); 15 | } 16 | 17 | wrap.map(function() { 18 | var elem = this; 19 | 20 | while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { 21 | elem = elem.firstChild; 22 | } 23 | 24 | return elem; 25 | }).append( this ); 26 | } 27 | 28 | return this; 29 | }, 30 | 31 | wrapInner: function( html ) { 32 | if ( jQuery.isFunction( html ) ) { 33 | return this.each(function(i) { 34 | jQuery(this).wrapInner( html.call(this, i) ); 35 | }); 36 | } 37 | 38 | return this.each(function() { 39 | var self = jQuery( this ), 40 | contents = self.contents(); 41 | 42 | if ( contents.length ) { 43 | contents.wrapAll( html ); 44 | 45 | } else { 46 | self.append( html ); 47 | } 48 | }); 49 | }, 50 | 51 | wrap: function( html ) { 52 | var isFunction = jQuery.isFunction( html ); 53 | 54 | return this.each(function(i) { 55 | jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); 56 | }); 57 | }, 58 | 59 | unwrap: function() { 60 | return this.parent().each(function() { 61 | if ( !jQuery.nodeName( this, "body" ) ) { 62 | jQuery( this ).replaceWith( this.childNodes ); 63 | } 64 | }).end(); 65 | } 66 | }); 67 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/.jshintignore: -------------------------------------------------------------------------------- 1 | qunit/ 2 | data/badjson.js 3 | data/jquery-1.9.1.ajax_xhr.min.js 4 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "boss": true, 3 | "curly": true, 4 | "eqeqeq": true, 5 | "eqnull": true, 6 | "expr": true, 7 | "immed": true, 8 | "noarg": true, 9 | "onevar": true, 10 | "quotmark": "double", 11 | "smarttabs": true, 12 | "trailing": true, 13 | "undef": true, 14 | "unused": true, 15 | 16 | "evil": true, 17 | "sub": true, 18 | 19 | "browser": true, 20 | "devel": true, 21 | "wsh": true, 22 | 23 | "predef": [ 24 | "DOMParser", 25 | "jQuery", 26 | "QUnit", 27 | "module", 28 | "ok", 29 | "equal", 30 | "test", 31 | "asyncTest", 32 | "notEqual", 33 | "deepEqual", 34 | "strictEqual", 35 | "notStrictEqual", 36 | "start", 37 | "stop", 38 | "expect", 39 | "raises", 40 | "ajaxTest", 41 | "testIframe", 42 | "testIframeWithCallback", 43 | "createDashboardXML", 44 | "createXMLFragment", 45 | "moduleTeardown", 46 | "testFoo", 47 | "url", 48 | "t", 49 | "q", 50 | "amdDefined", 51 | "fireNative", 52 | "Globals", 53 | "hasPHP", 54 | "isLocal", 55 | "originaljQuery", 56 | "$", 57 | "original$", 58 | "externalHost" 59 | ] 60 | } 61 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/1x1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siddii/angular-feeds/fa44b7b359b945f599bcdb1ec9f15f57984743e9/app/bower_components/jquery/test/data/1x1.jpg -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/ajax/unreleasedXHR.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Attempt to block tests because of dangling XHR requests (IE) 6 | 7 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/atom+xml.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/badcall.js: -------------------------------------------------------------------------------- 1 | undefined(); 2 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/badjson.js: -------------------------------------------------------------------------------- 1 | {bad: toTheBone} 2 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/cleanScript.html: -------------------------------------------------------------------------------- 1 | 6 | 11 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/core/cc_on.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 15 | 16 | 17 | 18 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/dashboard.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/dimensions/documentLarge.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 11 | 12 | 13 |
    14 | 15 |
    16 | 17 | 18 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/dimensions/documentSmall.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 15 | 16 | 17 |
    18 | 19 |
    20 | 21 | 22 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/echoData.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/echoQuery.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/errorWithJSON.php: -------------------------------------------------------------------------------- 1 | 22 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/evalScript.php: -------------------------------------------------------------------------------- 1 | ok( "" === "GET", "request method is " ); -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/event/focusElem.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | .focus() (activeElement access #13393) 6 | 7 | 8 | 9 | 10 | 11 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/event/longLoadScript.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/event/promiseReady.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Test case for jQuery ticket #11470 6 | 7 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/event/syncReady.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Test case for jQuery ticket #10067 6 | 7 | 8 | 9 | 10 | 15 | 16 | 20 | 21 |
    22 | 23 | 24 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/headers.php: -------------------------------------------------------------------------------- 1 | $value ) { 10 | 11 | $key = str_replace( "_" , "-" , substr( $key , 0 , 5 ) == "HTTP_" ? substr( $key , 5 ) : $key ); 12 | $headers[ $key ] = $value; 13 | 14 | } 15 | 16 | foreach( explode( "_" , $_GET[ "keys" ] ) as $key ) { 17 | echo "$key: " . @$headers[ strtoupper( $key ) ] . "\n"; 18 | } 19 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/if_modified_since.php: -------------------------------------------------------------------------------- 1 | 21 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/iframe.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | iframe 4 | 5 | 6 |
    span text
    7 | 8 | 9 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/json.php: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/json_obj.js: -------------------------------------------------------------------------------- 1 | { "data": {"lang": "en", "length": 25} } 2 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/jsonp.php: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/manipulation/iframe-denied.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | body 6 | 7 | 8 |
    9 | 10 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/name.html: -------------------------------------------------------------------------------- 1 | ERROR 2 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/name.php: -------------------------------------------------------------------------------- 1 | $xml$result"; 12 | die(); 13 | } 14 | $name = $_REQUEST['name']; 15 | if($name == 'foo') { 16 | echo "bar"; 17 | die(); 18 | } else if($name == 'peter') { 19 | echo "pan"; 20 | die(); 21 | } 22 | 23 | echo 'ERROR '; 24 | ?> -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/nocontent.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/offset/absolute.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | absolute 7 | 18 | 19 | 29 | 30 | 31 |
    absolute-1 32 |
    absolute-1-1 33 |
    absolute-1-1-1
    34 |
    35 |
    36 |
    absolute-2
    37 |
    Has absolute position but no values set for the location ('auto').
    38 |
    39 |

    Click the white box to move the marker to it. Clicking the box also changes the position to absolute (if not already) and sets the position according to the position method.

    40 | 41 | 42 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/offset/body.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | body 7 | 12 | 13 | 21 | 22 | 23 |
    24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/offset/fixed.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | fixed 7 | 15 | 16 | 25 | 26 | 27 |
    28 |
    29 |
    30 |
    31 |
    32 |

    Click the white box to move the marker to it.

    33 | 34 | 35 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/offset/relative.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | relative 7 | 13 | 14 | 24 | 25 | 26 |
    27 |
    28 |
    29 |

    Click the white box to move the marker to it. Clicking the box also changes the position to absolute (if not already) and sets the position according to the position method.

    30 | 31 | 32 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/offset/scroll.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | scroll 7 | 16 | 17 | 28 | 29 | 30 |
    31 |
    32 |
    33 |
    34 |
    35 |
    36 |
    37 |

    Click the white box to move the marker to it.

    38 | 39 | 40 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/offset/static.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | static 7 | 13 | 14 | 24 | 25 | 26 |
    27 |
    28 |
    29 |

    Click the white box to move the marker to it. Clicking the box also changes the position to absolute (if not already) and sets the position according to the position method.

    30 | 31 | 32 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/offset/table.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | table 7 | 13 | 14 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |
    th-1th-2th-3
    td-1td-2td-3
    40 |
    41 |

    Click the white box to move the marker to it.

    42 | 43 | 44 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/params_html.php: -------------------------------------------------------------------------------- 1 |
    2 | $value ) 4 | echo "$value"; 5 | ?> 6 |
    7 |
    8 | $value ) 10 | echo "$value"; 11 | ?> 12 |
    -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/readywaitasset.js: -------------------------------------------------------------------------------- 1 | var delayedMessage = "It worked!"; 2 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/readywaitloader.js: -------------------------------------------------------------------------------- 1 | // Simple script loader that uses jQuery.readyWait via jQuery.holdReady() 2 | 3 | //Hold on jQuery! 4 | jQuery.holdReady(true); 5 | 6 | var readyRegExp = /^(complete|loaded)$/; 7 | 8 | function assetLoaded( evt ){ 9 | var node = evt.currentTarget || evt.srcElement; 10 | if ( evt.type === "load" || readyRegExp.test(node.readyState) ) { 11 | jQuery.holdReady(false); 12 | } 13 | } 14 | 15 | setTimeout( function() { 16 | var script = document.createElement("script"); 17 | script.type = "text/javascript"; 18 | if ( script.addEventListener ) { 19 | script.addEventListener( "load", assetLoaded, false ); 20 | } else { 21 | script.attachEvent( "onreadystatechange", assetLoaded ); 22 | } 23 | script.src = "data/readywaitasset.js"; 24 | document.getElementsByTagName("head")[0].appendChild(script); 25 | }, 2000 ); 26 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/script.php: -------------------------------------------------------------------------------- 1 | 11 | ok( true, "Script executed correctly." ); 12 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/selector/html5_selector.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | jQuery selector - attributes 6 | 7 | 8 | 9 | 12 | 13 | 19 | 20 | 21 | 23 | 24 |
    26 | 27 |
    31 | 37 | 39 |
    40 | 41 | 42 | 44 |
    45 | 46 | 49 | 50 | 52 | 53 |
      55 | 56 |
      58 | 59 |
      61 | 62 | 73 | 74 | 76 | 77 | 82 | 83 | 84 | 87 | 88 | 89 | 93 | 94 | 100 | 101 |
      103 |
      Term
      This is the first definition in compact format.
      104 |
      Term
      This is the second definition in compact format.
      105 |
      106 | 107 | 109 | 110 | Scrolling text (non-standard) 113 | 114 | 115 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/selector/sizzle_cache.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | jQuery selector - sizzle cache 6 | 7 | 8 | 14 | 15 | 16 | 17 |
      18 | Worlds collide 19 |
      20 | 21 | 22 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/statusText.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/support/bodyBackground.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 17 | 18 | 19 |
      20 | 21 |
      22 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/support/boxSizing.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/support/csp.js: -------------------------------------------------------------------------------- 1 | jQuery(function() { 2 | parent.iframeCallback( jQuery.support ); 3 | }); 4 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/support/csp.php: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | CSP Test Page 16 | 17 | 18 | 19 | 20 |

      CSP Test Page

      21 | 22 | 23 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/support/shrinkWrapBlocks.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 13 | 14 |
      15 | 16 |
      17 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/support/testElementCrash.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/test.html: -------------------------------------------------------------------------------- 1 | html text
      2 | 6 | 7 | blabla 8 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/test.js: -------------------------------------------------------------------------------- 1 | this.testBar = "bar"; 2 | jQuery("#ap").html("bar"); 3 | ok( true, "test.js executed"); 4 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/test.php: -------------------------------------------------------------------------------- 1 | html text
      2 | 6 | 7 | blabla -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/test2.html: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/test3.html: -------------------------------------------------------------------------------- 1 |
      This is a user
      2 |
      This is a user
      3 |
      This is a teacher
      4 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/text.php: -------------------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet 2 | consectetuer adipiscing elit 3 | Sed lorem leo 4 | lorem leo consectetuer adipiscing elit 5 | Sed lorem leo 6 | rhoncus sit amet 7 | elementum at 8 | bibendum at, eros 9 | Cras at mi et tortor egestas vestibulum 10 | sed Cras at mi vestibulum 11 | Phasellus sed felis sit amet 12 | orci dapibus semper. 13 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/with_fries.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 1 14 | 15 | 16 | 17 | 18 | foo 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/data/with_fries_over_jsonp.php: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/jquery.js: -------------------------------------------------------------------------------- 1 | // Use the right jQuery source in iframe tests 2 | document.write( " 8 | 12 | 13 | 14 |

      jQuery Local File Test

      15 |

      16 | Introduction 17 |

      18 |
        19 |
      • 20 | Access this file using the "file:" protocol, 21 |
      • 22 |
      • 23 | two green "OK" strings must appear below, 24 |
      • 25 |
      • 26 | Empty local files will issue errors, it's a known limitation. 27 |
      • 28 |
      29 |

      30 | Results 31 |

      32 |
        33 |
      • 34 | Success: 35 | 36 | 37 |
      • 38 |
      • 39 | Error: 40 | 41 | 42 |
      • 43 |
      44 |

      45 | Logs: 46 |

      47 |
        48 |
      49 | 75 | 76 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/networkerror.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | 13 | jQuery Network Error Test for Firefox 14 | 15 | 18 | 19 | 36 | 37 | 38 |

      39 | jQuery Network Error Test for Firefox 40 |

      41 |
      42 | This is a test page for 43 | 44 | #8135 45 | 46 | which was reported in Firefox when accessing properties 47 | of an XMLHttpRequest object after a network error occurred. 48 |
      49 |
      Take the following steps:
      50 |
        51 |
      1. 52 | make sure you accessed this page through a web server, 53 |
      2. 54 |
      3. 55 | stop the web server, 56 |
      4. 57 |
      5. 58 | open the console, 59 |
      6. 60 |
      7. 61 | click this 62 | 63 | , 64 |
      8. 65 |
      9. 66 | wait for both requests to fail. 67 |
      10. 68 |
      69 |
      70 | Test passes if you get two log lines: 71 |
        72 |
      • 73 | the first starting with "abort", 74 |
      • 75 |
      • 76 | the second starting with "complete", 77 |
      • 78 |
      79 |
      80 |
      81 | Test fails if the browser notifies an exception. 82 |
      83 | 84 | 85 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/readywait.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 | jQuery.holdReady Test 11 | 12 | 17 | 18 | 19 | 21 | 22 | 23 | 34 | 35 | 36 |

      37 | jQuery.holdReady Test 38 |

      39 |

      40 | This is a test page for jQuery.readyWait and jQuery.holdReady, 41 | see 42 | #6781 43 | and 44 | #8803. 45 |

      46 |

      47 | Test for jQuery.holdReady, which can be used 48 | by plugins and other scripts to indicate something 49 | important to the page is still loading and needs 50 | to block the DOM ready callbacks that are registered 51 | with jQuery. 52 |

      53 |

      54 | Script loaders are the most likely kind of script 55 | to use jQuery.holdReady, but it could be used by 56 | other things like a script that loads a CSS file 57 | and wants to pause the DOM ready callbacks. 58 |

      59 |

      60 | Expected Result: The text 61 | It Worked! 62 | appears below after about 2 seconds. 63 |

      64 |

      65 | If there is an error in the console, 66 | or the text does not show up, then the test failed. 67 |

      68 |
      69 | 70 | 71 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/unit/deprecated.js: -------------------------------------------------------------------------------- 1 | module("deprecated", { teardown: moduleTeardown }); 2 | 3 | if ( jQuery.fn.size ) { 4 | test("size()", function() { 5 | expect(1); 6 | equal( jQuery("#qunit-fixture p").size(), 6, "Get Number of Elements Found" ); 7 | }); 8 | } 9 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/unit/exports.js: -------------------------------------------------------------------------------- 1 | module("exports", { teardown: moduleTeardown }); 2 | 3 | test("amdModule", function() { 4 | expect(1); 5 | 6 | equal( jQuery, amdDefined, "Make sure defined module matches jQuery" ); 7 | }); 8 | -------------------------------------------------------------------------------- /app/bower_components/jquery/test/xhtml.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /app/bower_components/json3/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "json3", 3 | "version": "3.2.6", 4 | "main": "lib/json3.min.js", 5 | "repository": { 6 | "type": "git", 7 | "url": "git://github.com/bestiejs/json3.git" 8 | }, 9 | "ignore": [ 10 | ".*", 11 | "build.js", 12 | "index.html", 13 | "index.js", 14 | "component.json", 15 | "package.json", 16 | "benchmark", 17 | "page", 18 | "test", 19 | "vendor" 20 | ], 21 | "homepage": "https://github.com/bestiejs/json3", 22 | "_release": "3.2.6", 23 | "_resolution": { 24 | "type": "version", 25 | "tag": "v3.2.6", 26 | "commit": "7b89fd94939f970f316420e157a836cc68aa2207" 27 | }, 28 | "_source": "https://github.com/bestiejs/json3.git", 29 | "_target": "~3.2.6", 30 | "_originalSource": "json3" 31 | } -------------------------------------------------------------------------------- /app/bower_components/json3/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012-2013 Kit Cambridge. 2 | http://kitcambridge.be/ 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | this software and associated documentation files (the "Software"), to deal in 6 | the Software without restriction, including without limitation the rights to 7 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 8 | of the Software, and to permit persons to whom the Software is furnished to do 9 | so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all 12 | copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 | SOFTWARE. -------------------------------------------------------------------------------- /app/bower_components/json3/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "json3", 3 | "version": "3.2.6", 4 | "main": "lib/json3.min.js", 5 | "repository": { 6 | "type": "git", 7 | "url": "git://github.com/bestiejs/json3.git" 8 | }, 9 | "ignore": [ 10 | ".*", 11 | "build.js", 12 | "index.html", 13 | "index.js", 14 | "component.json", 15 | "package.json", 16 | "benchmark", 17 | "page", 18 | "test", 19 | "vendor" 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siddii/angular-feeds/fa44b7b359b945f599bcdb1ec9f15f57984743e9/app/favicon.ico -------------------------------------------------------------------------------- /app/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siddii/angular-feeds/fa44b7b359b945f599bcdb1ec9f15f57984743e9/app/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /app/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siddii/angular-feeds/fa44b7b359b945f599bcdb1ec9f15f57984743e9/app/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /app/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siddii/angular-feeds/fa44b7b359b945f599bcdb1ec9f15f57984743e9/app/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /app/images/forkme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siddii/angular-feeds/fa44b7b359b945f599bcdb1ec9f15f57984743e9/app/images/forkme.png -------------------------------------------------------------------------------- /app/index.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | Angular Feeds - AngularJS module for Atom, RSS & media feeds... 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
      26 | 27 |
      28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /app/my-feeds.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "title": "Hacker News", 4 | "url": "https://news.ycombinator.com/rss", 5 | "count": 10 6 | }, 7 | { 8 | "title": "DZone", 9 | "url": "http://feeds.dzone.com/dzone/frontpage?format=xml", 10 | "count": 10 11 | }, 12 | { 13 | "title": "Reddit Programming", 14 | "url": "http://www.reddit.com/r/programming/.rss", 15 | "count": 10 16 | }, 17 | { 18 | "title": "NetTuts+", 19 | "url": "http://feeds.feedburner.com/nettuts", 20 | "summary": true, 21 | "count": 10 22 | }, 23 | { 24 | "title": "A List Apart", 25 | "url": "http://feeds.feedburner.com/alistapart/main", 26 | "summary": true, 27 | "count": 10 28 | }, 29 | { 30 | "title": "Think Vitamin", 31 | "url": "http://feeds.feedburner.com/vitaminmasterfeed", 32 | "summary": true, 33 | "count": 10 34 | } 35 | ] -------------------------------------------------------------------------------- /app/scripts/docs/docs.js: -------------------------------------------------------------------------------- 1 | $(function (){ 2 | setTimeout(function (){ 3 | window.prettyPrint(); 4 | }, 2000); //Yuck! 5 | }); 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/scripts/feed-tester.js: -------------------------------------------------------------------------------- 1 | angular.module('feed-tester', [ 2 | 'feeds' 3 | ]).controller('FeedTesterController', ['$scope', '$compile', function ($scope, $compile) { 4 | $scope.count = 10; 5 | $scope.summary = false; 6 | $scope.showFeed = function (){ 7 | var $panelBody = $('.panel-body'); 8 | $panelBody.html(''); 9 | var feedHTML = ""; 10 | $panelBody.append($compile(feedHTML)($scope)); 11 | }; 12 | 13 | var url = window.location.href.substring(window.location.href.lastIndexOf('/') + 1); 14 | $scope.isOrigin = function (){ 15 | return window.parent.location.href.indexOf(url) === -1; 16 | }; 17 | }]); 18 | -------------------------------------------------------------------------------- /app/scripts/feeds-demo.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('feeds-demo', [ 4 | 'feeds', 5 | 'ngSanitize' 6 | ]).controller('FeedController', ['$scope', '$element', function ($scope, $element) { 7 | $scope.toggleCode = function (code) { 8 | var fadeElements = ['div.feed-block', 'div.code-block']; 9 | if (!code) { 10 | fadeElements.reverse(); 11 | } 12 | $element.find(fadeElements[0]).fadeOut(function () { 13 | $element.find(fadeElements[1]).fadeIn(); 14 | }); 15 | }; 16 | }]).controller('NavbarController', ['$scope', '$element', function ($scope, $element) { 17 | 18 | $scope.page = '#main-page'; 19 | 20 | function scrollToPanel(panelId) { 21 | if (panelId) { 22 | var target = $(panelId); 23 | target = target.length ? target : $('[name=' + this.hash.slice(1) + ']'); 24 | if (target.length) { 25 | $('html,body').animate({ 26 | scrollTop: target.offset().top - 55 27 | }, 1000); 28 | } 29 | } 30 | } 31 | 32 | function checkNavbarToggle() { 33 | var $navbarToggle = $('.navbar-toggle'); 34 | if ($navbarToggle.is(':visible')) { 35 | $navbarToggle.click(); 36 | } 37 | } 38 | 39 | $scope.gotoPage = function (pageId, panelId) { 40 | if ($scope.page === pageId) { 41 | scrollToPanel(panelId); 42 | checkNavbarToggle(); 43 | return; 44 | } 45 | $($scope.page).fadeOut(); 46 | $(pageId).fadeIn(); 47 | $scope.page = pageId; 48 | scrollToPanel(panelId); 49 | checkNavbarToggle(); 50 | }; 51 | }]); -------------------------------------------------------------------------------- /app/scripts/my-feeds.js: -------------------------------------------------------------------------------- 1 | angular.module('my-feeds', [ 2 | 'feeds' 3 | ]) 4 | .controller('MyFeedsController', ['$scope', '$compile', '$http', 'storage', function ($scope, $compile, $http, storage) { 5 | $scope.isOrigin = function () { 6 | var url = window.location.href.substring(window.location.href.lastIndexOf('/') + 1); 7 | return window.parent.location.href.indexOf(url) !== -1; 8 | }; 9 | 10 | $scope.$watch('feeds', function (newValue, oldValue) { 11 | if (newValue) { 12 | storage.set('feeds', newValue); 13 | } 14 | }, true); 15 | 16 | if (!storage.get('feeds')) { 17 | $http.get('my-feeds.json').success(function (feeds) { 18 | $scope.feeds = feeds; 19 | }); 20 | } 21 | else { 22 | $scope.feeds = storage.get('feeds'); 23 | } 24 | 25 | }]) 26 | .directive('feedWidget', ['$compile', function ($compile) { 27 | return { 28 | restrict: 'A', 29 | controller: ['$scope', '$element', '$attrs', '$timeout', function ($scope, $element) { 30 | var feed = $scope.feed; 31 | var feedHTML = ""; 32 | $element.append($compile(feedHTML)($scope)); 33 | }] 34 | }; 35 | }]) 36 | .controller('FeedWidgetController', ['$scope', function ($scope) { 37 | $scope.toggleFeed = function () { 38 | $scope.collapsed = !$scope.collapsed; 39 | }; 40 | 41 | $scope.deleteFeed = function () { 42 | if (confirm('Are you sure you want to delete this feed?') && $scope.feeds.indexOf($scope.feed) > -1) { 43 | $scope.feeds.splice($scope.feeds.indexOf($scope.feed), 1); 44 | } 45 | } 46 | }]) 47 | .factory('storage', function () { 48 | return { 49 | set: function (name, obj) { 50 | localStorage[name] = angular.toJson(obj); 51 | }, 52 | get: function (name) { 53 | return angular.fromJson(localStorage[name]); 54 | } 55 | }; 56 | }); 57 | 58 | function feedPostRender(element) { 59 | $(element).find('a').attr('target', '_blank'); 60 | } 61 | -------------------------------------------------------------------------------- /app/styles/docs/prettify.css: -------------------------------------------------------------------------------- 1 | .com { color: #93a1a1; } 2 | .lit { color: #195f91; } 3 | .pun, .opn, .clo { color: #93a1a1; } 4 | .fun { color: #dc322f; } 5 | .str, .atv { color: #D14; } 6 | .kwd, .prettyprint .tag { color: #1e347b; } 7 | .typ, .atn, .dec, .var { color: teal; } 8 | .pln { color: #48484c; } 9 | 10 | .prettyprint { 11 | padding: 8px; 12 | background-color: #f7f7f9; 13 | border: 1px solid #e1e1e8; 14 | } 15 | .prettyprint.linenums { 16 | -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 17 | -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 18 | box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 19 | } 20 | 21 | /* Specify class=linenums on a pre to get line numbering */ 22 | ol.linenums { 23 | margin: 0 0 0 33px; /* IE indents via margin-left */ 24 | } 25 | ol.linenums li { 26 | padding-left: 12px; 27 | color: #bebec5; 28 | line-height: 20px; 29 | text-shadow: 0 1px 0 #fff; 30 | } -------------------------------------------------------------------------------- /app/styles/feed-tester.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding-top: 0; 3 | } -------------------------------------------------------------------------------- /app/styles/feeds-demo.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding-top: 70px; 3 | padding-bottom: 30px; 4 | } 5 | 6 | .page-header { 7 | padding-bottom: 0; 8 | margin-top: 5px; 9 | } 10 | 11 | .theme-dropdown .dropdown-menu { 12 | display: block; 13 | position: static; 14 | margin-bottom: 20px; 15 | } 16 | 17 | .theme-showcase > p > .btn { 18 | margin: 5px 0; 19 | } 20 | 21 | .carousel-control { 22 | width: 0; 23 | } 24 | 25 | .carousel-control.left { 26 | background-image: none; 27 | } 28 | .carousel-control.right { 29 | background-image: none; 30 | } 31 | 32 | .carousel-control .glyphicon-chevron-left, 33 | .carousel-control .glyphicon-chevron-right { 34 | position: absolute; 35 | top: 3%; 36 | color: #000000; 37 | } 38 | 39 | .carousel-inner { 40 | padding: 10px; 41 | } 42 | 43 | hr { 44 | margin-top: 0; 45 | margin-bottom: 0; 46 | } 47 | 48 | .underline { 49 | text-decoration: underline; 50 | } 51 | 52 | #fork-me { 53 | position: absolute; 54 | top:0; 55 | right:0; 56 | } 57 | 58 | @media (max-width: 979px) { 59 | #fork-me { 60 | display: none; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /app/styles/my-feeds.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding-top: 0; 3 | } 4 | 5 | .feed-body { 6 | height: 400px; 7 | overflow: auto; 8 | } 9 | 10 | .media { 11 | margin-top: 0; 12 | } 13 | 14 | hr { 15 | margin-bottom: 10px; 16 | margin-top: 10px; 17 | } 18 | 19 | .fa { 20 | cursor: pointer; 21 | } 22 | 23 | .panel-title { 24 | cursor: pointer; 25 | } -------------------------------------------------------------------------------- /app/templates/code.html: -------------------------------------------------------------------------------- 1 |
      2 | 5 | 6 |
      7 |
      8 |

      Getting Started

      9 |
        10 |
      1. First make sure to include Google Feeds API script preferably in the <head/> section

        11 |
        12 |                         
        13 | <script
        14 | type="text/javascript"
        15 | src="https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22feeds%22%2C%22version%22%3A%221.0%22%2C%22nocss%22%3Atrue%7D%5D%7D"></script>
        16 |                     
        17 |
      2. 18 |
      3. Now include Angular Feeds files after including AngularJS scripts

        19 |
        20 | <head>
        21 | ...
        22 | <script src="http://siddii.github.io/angular-feeds/app/angular-feeds/angular-feeds.js"></script>
        23 | </head>                        
        24 |                     
        25 |
      4. 26 |
      5. Make sure to inject feeds module into your app

        27 |
        28 | angular.module('angular-feeds-demo', ['feeds',...])
        29 |                     
        30 |
      6. 31 |
      7. Use <feeds/> directive as you wish...
      8. 32 |
      33 |
      34 |
      35 | 36 |
      37 |
      38 |

      39 | Contributions welcome!

      40 |

      41 | We welcome any or all kinds of contributions! Please submit pull requests or create issues to contribute to this 44 | project :)

      45 |
      46 |
      47 |
      48 | -------------------------------------------------------------------------------- /app/templates/feed-code-toggle.html: -------------------------------------------------------------------------------- 1 |
      2 | 3 |
      4 | -------------------------------------------------------------------------------- /app/templates/feed-tester-iframe.html: -------------------------------------------------------------------------------- 1 |
      2 | 3 |
      4 | -------------------------------------------------------------------------------- /app/templates/feed-widget-control.html: -------------------------------------------------------------------------------- 1 |
      2 |    3 |
      4 | -------------------------------------------------------------------------------- /app/templates/feed-widget.html: -------------------------------------------------------------------------------- 1 |
      2 |
      3 |
      4 |

      {{title}}

      5 |
      6 |
      7 |
      8 | {{feed_html}} 9 |
      10 |
      11 |
      12 | -------------------------------------------------------------------------------- /app/templates/my-feeds-iframe.html: -------------------------------------------------------------------------------- 1 |
      2 | 3 |
      4 | -------------------------------------------------------------------------------- /app/templates/reddit-feed-code.html: -------------------------------------------------------------------------------- 1 |
      2 |
      3 | <feed url="http://www.reddit.com/r/programming/.rss"/>
      4 |
      5 | -------------------------------------------------------------------------------- /app/templates/stackoverflow-feed-code.html: -------------------------------------------------------------------------------- 1 |
      2 |
      3 | <feed summary="true" url="http://stackoverflow.com/feeds/tag?tagnames=angularjs&sort=newest" count="5"/>
      4 |
      5 | -------------------------------------------------------------------------------- /app/templates/used-where.html: -------------------------------------------------------------------------------- 1 |
      2 | 5 | 6 |
      7 |
      8 |

      Following is the list of apps & services where this module is used currently. If you like to add something to the list, please send a Pull Request updating this file.

      9 | 10 |

      Android Apps

      11 | 15 | 16 |

      iOS Apps

      17 | 20 | 21 |

      Chrome Extensions

      22 | 25 |
      26 |
      27 |
      28 | -------------------------------------------------------------------------------- /app/templates/wikipedia-featured-article.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/templates/wikipedia-feed-code.html: -------------------------------------------------------------------------------- 1 |
      2 | 6 | 7 | 8 |
      9 |
      10 |
      11 | <script type="text/javascript">
      12 | //run only trusted code here :)
      13 | function wikipediaFeedPostRender() {
      14 |     $('#wikipedia-feed').find('a').each(function (idx, anchor) {
      15 |         anchor.target = '_new';
      16 |         anchor.href = anchor.href.replace(window.location.origin, 'http://en.wikipedia.org');
      17 |     })
      18 | }
      19 | </script>
      20 | <feed id="wikipedia-feed" count="10"
      21 |       url="http://en.wikipedia.org/w/api.php?action=featuredfeed&feed=featured&feedformat=atom"
      22 |       template-url="templates/wikipedia-featured-article.html"
      23 |       post-render="wikipediaFeedPostRender();"/>
      24 |
      25 |
      26 |
      27 | <div id="wikipedia-featured-articles" class="carousel slide" data-ride="carousel" data-interval="false">
      28 |     <ol class="carousel-indicators">
      29 |         <li data-target="#wikipedia-featured-articles" data-slide-to="0" class="active"></li>
      30 |         <li data-target="#wikipedia-featured-articles" data-slide-to="1"></li>
      31 |         <li data-target="#wikipedia-featured-articles" data-slide-to="2"></li>
      32 |     </ol>
      33 |     <div class="carousel-inner">
      34 |         <div ng-repeat="feed in feeds" class="item" ng-class="{active: $index==0}">
      35 |             <h4 class="text-center"><a target="_new" href="{{feed.link}}" ng-bind-html="feed.title"></a></h4>
      36 |             <p ng-bind-html="!summary ? feed.content : feed.contentSnippet"></p>
      37 |         </div>
      38 |     </div>
      39 | 
      40 |     <a class="left carousel-control" href="#wikipedia-featured-articles" data-slide="prev">
      41 |         <span class="glyphicon glyphicon-chevron-left"></span>
      42 |     </a>
      43 |     <a class="right carousel-control" href="#wikipedia-featured-articles" data-slide="next">
      44 |         <span class="glyphicon glyphicon-chevron-right"></span>
      45 |     </a>
      46 | </div>
      47 |             
      48 |
      49 |
      50 |
      51 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": "Siddique Hameed", 3 | "name": "angular-feeds", 4 | "version": "0.0.4", 5 | "homepage": "https://github.com/siddii/angular-feeds", 6 | "description": "AngularJS module for Atom, RSS & media feeds", 7 | "repository": { 8 | "type": "git", 9 | "url": "git://github.com/siddii/angular-feeds.git" 10 | }, 11 | "dependencies": { 12 | "angular": "1.2.6", 13 | "es5-shim": "~2.1.0", 14 | "angular-sanitize": "1.2.6", 15 | "yui": "^3.18.1" 16 | }, 17 | "devDependencies": { 18 | "bootstrap": "~3.1.0", 19 | "angular-route": "1.2.6", 20 | "angular-mocks": "1.2.6", 21 | "angular-scenario": "1.2.6", 22 | "Font-Awesome": "*", 23 | "jquery": "~1.10.2", 24 | "json3": "~3.2.6" 25 | }, 26 | "main": [ 27 | "./app/angular-feeds/angular-feeds.min.js", 28 | "./app/angular-feeds/angular-feeds.min.css" 29 | ], 30 | "ignore": [ 31 | "./node_modules/", 32 | "./app/bower_components/" 33 | ] 34 | } 35 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /karma-e2e.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration 2 | // http://karma-runner.github.io/0.10/config/configuration-file.html 3 | 4 | module.exports = function(config) { 5 | config.set({ 6 | // base path, that will be used to resolve files and exclude 7 | basePath: '', 8 | 9 | // testing framework to use (jasmine/mocha/qunit/...) 10 | frameworks: ['ng-scenario'], 11 | 12 | // list of files / patterns to load in the browser 13 | files: [ 14 | 'test/e2e/**/*.js' 15 | ], 16 | 17 | // list of files / patterns to exclude 18 | exclude: [], 19 | 20 | // web server port 21 | port: 8080, 22 | 23 | // level of logging 24 | // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG 25 | logLevel: config.LOG_INFO, 26 | 27 | 28 | // enable / disable watching file and executing tests whenever any file changes 29 | autoWatch: false, 30 | 31 | 32 | // Start these browsers, currently available: 33 | // - Chrome 34 | // - ChromeCanary 35 | // - Firefox 36 | // - Opera 37 | // - Safari (only Mac) 38 | // - PhantomJS 39 | // - IE (only Windows) 40 | browsers: ['Chrome'], 41 | 42 | 43 | // Continuous Integration mode 44 | // if true, it capture browsers, run tests and exit 45 | singleRun: false 46 | 47 | // Uncomment the following lines if you are using grunt's server to run the tests 48 | // proxies: { 49 | // '/': 'http://localhost:9000/' 50 | // }, 51 | // URL root prevent conflicts with the site root 52 | // urlRoot: '_karma_' 53 | }); 54 | }; 55 | -------------------------------------------------------------------------------- /karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration 2 | // http://karma-runner.github.io/0.10/config/configuration-file.html 3 | 4 | module.exports = function(config) { 5 | config.set({ 6 | // base path, that will be used to resolve files and exclude 7 | basePath: '', 8 | 9 | // testing framework to use (jasmine/mocha/qunit/...) 10 | frameworks: ['jasmine'], 11 | 12 | // list of files / patterns to load in the browser 13 | files: [ 14 | 'app/bower_components/angular/angular.js', 15 | 'app/bower_components/angular-mocks/angular-mocks.js', 16 | 'app/bower_components/angular-sanitize/angular-sanitize.js', 17 | 'app/bower_components/angular-route/angular-route.js', 18 | 'app/scripts/*.js', 19 | 'app/scripts/**/*.js', 20 | 'test/mock/**/*.js', 21 | 'test/spec/**/*.js' 22 | ], 23 | 24 | // list of files / patterns to exclude 25 | exclude: [], 26 | 27 | // web server port 28 | port: 8080, 29 | 30 | // level of logging 31 | // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG 32 | logLevel: config.LOG_INFO, 33 | 34 | 35 | // enable / disable watching file and executing tests whenever any file changes 36 | autoWatch: false, 37 | 38 | 39 | // Start these browsers, currently available: 40 | // - Chrome 41 | // - ChromeCanary 42 | // - Firefox 43 | // - Opera 44 | // - Safari (only Mac) 45 | // - PhantomJS 46 | // - IE (only Windows) 47 | browsers: ['Chrome'], 48 | 49 | 50 | // Continuous Integration mode 51 | // if true, it capture browsers, run tests and exit 52 | singleRun: false 53 | }); 54 | }; 55 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-feeds", 3 | "version": "0.0.4", 4 | "homepage": "https://github.com/siddii/angular-feeds", 5 | "licenses": { 6 | "type": "MIT", 7 | "url": "https://github.com/siddii/angular-feeds/blob/master/LICENSE.txt" 8 | }, 9 | "bugs": "https://github.com/siddii/angular-feeds/issues", 10 | "repository": { 11 | "type": "git", 12 | "url": "git@github.com:siddii/angular-feeds.git" 13 | }, 14 | "dependencies": {}, 15 | "devDependencies": { 16 | "grunt": "~0.4.1", 17 | "grunt-autoprefixer": "~0.4.0", 18 | "grunt-bower-install": "~0.7.0", 19 | "grunt-concurrent": "~0.4.1", 20 | "grunt-contrib-clean": "~0.5.0", 21 | "grunt-contrib-coffee": "~0.7.0", 22 | "grunt-contrib-compass": "~0.6.0", 23 | "grunt-contrib-concat": "~0.3.0", 24 | "grunt-contrib-connect": "~0.5.0", 25 | "grunt-contrib-copy": "~0.4.1", 26 | "grunt-contrib-cssmin": "~0.7.0", 27 | "grunt-contrib-htmlmin": "~0.1.3", 28 | "grunt-contrib-imagemin": "~0.3.0", 29 | "grunt-contrib-jshint": "~0.7.1", 30 | "grunt-contrib-uglify": "~0.2.0", 31 | "grunt-contrib-watch": "~0.5.2", 32 | "grunt-google-cdn": "~0.2.0", 33 | "grunt-newer": "~0.5.4", 34 | "grunt-ngmin": "~0.0.2", 35 | "grunt-rev": "~0.1.0", 36 | "grunt-svgmin": "~0.2.0", 37 | "grunt-usemin": "~2.0.0", 38 | "jshint-stylish": "~0.1.3", 39 | "load-grunt-tasks": "~0.2.0", 40 | "time-grunt": "~0.2.1", 41 | "karma-ng-scenario": "~0.1.0", 42 | "grunt-karma": "~0.6.2", 43 | "karma-chrome-launcher": "~0.1.2", 44 | "karma-script-launcher": "~0.1.0", 45 | "karma-html2js-preprocessor": "~0.1.0", 46 | "karma-firefox-launcher": "~0.1.3", 47 | "karma-jasmine": "~0.1.5", 48 | "karma-coffee-preprocessor": "~0.1.2", 49 | "requirejs": "~2.1.10", 50 | "karma-requirejs": "~0.2.1", 51 | "karma-phantomjs-launcher": "~0.1.1", 52 | "karma": "~0.10.9", 53 | "karma-ng-html2js-preprocessor": "~0.1.0", 54 | "grunt-angular-templates": "~0.5.1" 55 | }, 56 | "engines": { 57 | "node": ">=0.8.0" 58 | }, 59 | "scripts": { 60 | "test": "grunt test" 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/scripts/feeds.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('feeds', ['feeds-services', 'feeds-directives']); -------------------------------------------------------------------------------- /src/scripts/templates.js: -------------------------------------------------------------------------------- 1 | angular.module('feeds').run(['$templateCache', function($templateCache) { 2 | 'use strict'; 3 | 4 | $templateCache.put('feed-list.html', 5 | "
      \n" + 6 | "
      \n" + 7 | "
      Oops... Something bad happened, please try later :(
      \n" + 8 | "
      \n" + 9 | "\n" + 10 | "
        \n" + 11 | "
      • \n" + 12 | "
        \n" + 13 | "

        \n" + 14 | "

        \n" + 15 | "
        \n" + 16 | "
        \n" + 17 | "
      • \n" + 18 | "
      \n" + 19 | "
      " 20 | ); 21 | 22 | 23 | $templateCache.put('feed-spinner.html', 24 | "
      \n" + 25 | "
      \n" + 26 | "
      \n" + 27 | "
      \n" + 28 | "
      \n" + 29 | "
      \n" + 30 | "
      \n" + 31 | "
      \n" + 32 | "
      \n" + 33 | "
      \n" 34 | ); 35 | 36 | }]); 37 | -------------------------------------------------------------------------------- /src/styles/spinner.css: -------------------------------------------------------------------------------- 1 | 2 | .spinner div{ 3 | -webkit-animation: spinner-fade 1s linear infinite; 4 | -opacity: 0; 5 | } 6 | .spinner div.bar1 { 7 | -moz-transform:rotate(0deg) translate(0, -30px); 8 | -webkit-transform:rotate(0deg) translate(0, -30px); 9 | -webkit-animation-delay: 0s; 10 | } 11 | .spinner div.bar2 { 12 | -moz-transform:rotate(45deg) translate(0, -30px); 13 | -webkit-transform:rotate(45deg) translate(0, -30px); 14 | -webkit-animation-delay: -0.875s; 15 | } 16 | .spinner div.bar3 { 17 | -moz-transform:rotate(90deg) translate(0, -30px); 18 | -webkit-transform:rotate(90deg) translate(0, -30px); 19 | -webkit-animation-delay: -0.75s; 20 | } 21 | .spinner div.bar4 { 22 | -moz-transform:rotate(135deg) translate(0, -30px); 23 | -webkit-transform:rotate(135deg) translate(0, -30px); 24 | -webkit-animation-delay: -0.625s; 25 | } 26 | .spinner div.bar5 { 27 | -moz-transform:rotate(180deg) translate(0, -30px); 28 | -webkit-transform:rotate(180deg) translate(0, -30px); 29 | -webkit-animation-delay: -0.5s; 30 | } 31 | .spinner div.bar6 { 32 | -moz-transform:rotate(225deg) translate(0, -30px); 33 | -webkit-transform:rotate(225deg) translate(0, -30px); 34 | -webkit-animation-delay: -0.375s; 35 | } 36 | .spinner div.bar7 { 37 | -moz-transform:rotate(270deg) translate(0, -30px); 38 | -webkit-transform:rotate(270deg) translate(0, -30px); 39 | -webkit-animation-delay: -0.25s; 40 | } 41 | .spinner div.bar8 { 42 | -moz-transform:rotate(315deg) translate(0, -30px); 43 | -webkit-transform:rotate(315deg) translate(0, -30px); 44 | -webkit-animation-delay: -0.125s; 45 | } 46 | 47 | .spinner { 48 | position:relative; 49 | height:50px; 50 | -moz-border-radius:50px; 51 | -webkit-border-radius: 50px; 52 | border-radius: 50px; 53 | float:left; 54 | left: 48%; 55 | -moz-transform:scale(0.5); 56 | -webkit-transform:scale(0.5); 57 | } 58 | 59 | .spinner div { 60 | width:10px; 61 | height:25px; 62 | background:black; 63 | position:absolute; 64 | } 65 | 66 | @-webkit-keyframes spinner-fade { 67 | from {opacity: 1;} 68 | to {opacity: 0;} 69 | } -------------------------------------------------------------------------------- /src/templates/feed-list.html: -------------------------------------------------------------------------------- 1 |
      2 |
      3 |
      Oops... Something bad happened, please try later :(
      4 |
      5 | 6 |
        7 |
      • 8 |
        9 |

        10 |

        11 |
        12 |
        13 |
      • 14 |
      15 |
      -------------------------------------------------------------------------------- /src/templates/feed-spinner.html: -------------------------------------------------------------------------------- 1 |
      2 |
      3 |
      4 |
      5 |
      6 |
      7 |
      8 |
      9 |
      10 |
      11 | -------------------------------------------------------------------------------- /test/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "node": true, 3 | "browser": true, 4 | "esnext": true, 5 | "bitwise": true, 6 | "camelcase": true, 7 | "curly": true, 8 | "eqeqeq": true, 9 | "immed": true, 10 | "indent": 2, 11 | "latedef": true, 12 | "newcap": true, 13 | "noarg": true, 14 | "quotmark": "single", 15 | "regexp": true, 16 | "undef": true, 17 | "unused": true, 18 | "strict": true, 19 | "trailing": true, 20 | "smarttabs": true, 21 | "globals": { 22 | "after": false, 23 | "afterEach": false, 24 | "angular": false, 25 | "before": false, 26 | "beforeEach": false, 27 | "browser": false, 28 | "describe": false, 29 | "expect": false, 30 | "inject": false, 31 | "it": false, 32 | "jasmine": false, 33 | "spyOn": false 34 | } 35 | } 36 | 37 | -------------------------------------------------------------------------------- /test/runner.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | End2end Test Runner 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/spec/controllers/main.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | describe('Controller: MainCtrl', function () { 4 | 5 | // load the controller's module 6 | beforeEach(module('angularFeedsApp')); 7 | 8 | var MainCtrl, 9 | scope; 10 | 11 | // Initialize the controller and a mock scope 12 | beforeEach(inject(function ($controller, $rootScope) { 13 | scope = $rootScope.$new(); 14 | MainCtrl = $controller('MainCtrl', { 15 | $scope: scope 16 | }); 17 | })); 18 | 19 | it('should attach a list of awesomeThings to the scope', function () { 20 | expect(scope.awesomeThings.length).toBe(3); 21 | }); 22 | }); 23 | --------------------------------------------------------------------------------