├── .gitignore ├── .npmignore ├── .travis.yml ├── README.md ├── app └── bower_components │ ├── backbone.localStorage │ ├── .bower.json │ ├── .documentup.json │ ├── .gitignore │ ├── .travis.yml │ ├── CHANGELOG.md │ ├── CNAME │ ├── Makefile │ ├── README.md │ ├── backbone.localStorage-min.js │ ├── backbone.localStorage.js │ ├── bower.json │ ├── component.json │ ├── examples │ │ └── todos │ │ │ ├── destroy.png │ │ │ ├── index.html │ │ │ ├── todos.css │ │ │ └── todos.js │ ├── package.json │ └── spec │ │ ├── localStorage_commonjs_spec.js │ │ ├── localStorage_spec.js │ │ ├── runner.html │ │ ├── runner_commonjs.html │ │ └── support │ │ ├── backbone.js │ │ ├── chai.js │ │ ├── jquery.js │ │ ├── mocha.css │ │ ├── mocha.js │ │ ├── require.js │ │ └── underscore.js │ ├── backbone │ ├── .bower.json │ ├── .gitignore │ ├── .npmignore │ ├── CNAME │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── README.md │ ├── backbone.js │ ├── bower.json │ ├── component.json │ ├── index.html │ ├── index.js │ └── package.json │ ├── es6-module-loader │ ├── .bower.json │ ├── .gitignore │ ├── .jshintrc │ ├── Gruntfile.js │ ├── LICENSE-MIT │ ├── README.md │ ├── bower.json │ └── dist │ │ ├── es6-module-loader.js │ │ ├── traceur-runtime.js │ │ └── traceur.js │ ├── jquery │ ├── .bower.json │ ├── MIT-LICENSE.txt │ ├── bower.json │ ├── dist │ │ ├── jquery.js │ │ ├── jquery.min.js │ │ └── jquery.min.map │ └── src │ │ ├── ajax.js │ │ ├── ajax │ │ ├── jsonp.js │ │ ├── load.js │ │ ├── parseJSON.js │ │ ├── parseXML.js │ │ ├── script.js │ │ ├── var │ │ │ ├── nonce.js │ │ │ └── rquery.js │ │ └── xhr.js │ │ ├── attributes.js │ │ ├── attributes │ │ ├── attr.js │ │ ├── classes.js │ │ ├── prop.js │ │ ├── support.js │ │ └── val.js │ │ ├── callbacks.js │ │ ├── core.js │ │ ├── core │ │ ├── access.js │ │ ├── init.js │ │ ├── parseHTML.js │ │ ├── ready.js │ │ └── var │ │ │ └── rsingleTag.js │ │ ├── css.js │ │ ├── css │ │ ├── addGetHookIf.js │ │ ├── curCSS.js │ │ ├── defaultDisplay.js │ │ ├── hiddenVisibleSelectors.js │ │ ├── support.js │ │ ├── swap.js │ │ └── var │ │ │ ├── cssExpand.js │ │ │ ├── getStyles.js │ │ │ ├── isHidden.js │ │ │ ├── rmargin.js │ │ │ └── rnumnonpx.js │ │ ├── data.js │ │ ├── data │ │ ├── Data.js │ │ ├── accepts.js │ │ └── var │ │ │ ├── data_priv.js │ │ │ └── data_user.js │ │ ├── deferred.js │ │ ├── deprecated.js │ │ ├── dimensions.js │ │ ├── effects.js │ │ ├── effects │ │ ├── Tween.js │ │ └── animatedSelector.js │ │ ├── event.js │ │ ├── event │ │ ├── alias.js │ │ └── support.js │ │ ├── exports │ │ ├── amd.js │ │ └── global.js │ │ ├── intro.js │ │ ├── jquery.js │ │ ├── manipulation.js │ │ ├── manipulation │ │ ├── _evalUrl.js │ │ ├── support.js │ │ └── var │ │ │ └── rcheckableType.js │ │ ├── offset.js │ │ ├── outro.js │ │ ├── queue.js │ │ ├── queue │ │ └── delay.js │ │ ├── selector-native.js │ │ ├── selector-sizzle.js │ │ ├── selector.js │ │ ├── serialize.js │ │ ├── sizzle │ │ └── dist │ │ │ ├── sizzle.js │ │ │ ├── sizzle.min.js │ │ │ └── sizzle.min.map │ │ ├── traversing.js │ │ ├── traversing │ │ ├── findFilter.js │ │ └── var │ │ │ └── rneedsContext.js │ │ ├── var │ │ ├── arr.js │ │ ├── class2type.js │ │ ├── concat.js │ │ ├── hasOwn.js │ │ ├── indexOf.js │ │ ├── pnum.js │ │ ├── push.js │ │ ├── rnotwhite.js │ │ ├── slice.js │ │ ├── strundefined.js │ │ ├── support.js │ │ ├── toString.js │ │ └── trim.js │ │ └── wrap.js │ ├── lodash │ ├── .bower.json │ ├── LICENSE.txt │ ├── bower.json │ └── dist │ │ ├── lodash.compat.js │ │ ├── lodash.compat.min.js │ │ ├── lodash.js │ │ ├── lodash.min.js │ │ ├── lodash.underscore.js │ │ └── lodash.underscore.min.js │ ├── todomvc-common │ ├── .bower.json │ ├── base.css │ ├── base.js │ ├── bg.png │ ├── bower.json │ └── readme.md │ └── underscore │ ├── .bower.json │ ├── .editorconfig │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── bower.json │ ├── component.json │ ├── package.json │ └── underscore.js ├── bower.json ├── bower_components ├── backbone.localStorage │ └── backbone.localStorage.js ├── backbone │ └── backbone.js ├── es6-module-loader │ ├── .bower.json │ ├── .gitignore │ ├── .jshintrc │ └── dist │ │ ├── es6-module-loader.js │ │ └── traceur.js ├── jquery │ └── jquery.js ├── lodash │ └── dist │ │ └── lodash.js └── todomvc-common │ ├── base.css │ ├── base.js │ └── bg.png ├── docs ├── app.html ├── docco.css ├── public │ ├── fonts │ │ ├── aller-bold.eot │ │ ├── aller-bold.ttf │ │ ├── aller-bold.woff │ │ ├── aller-light.eot │ │ ├── aller-light.ttf │ │ ├── aller-light.woff │ │ ├── novecento-bold.eot │ │ ├── novecento-bold.ttf │ │ └── novecento-bold.woff │ └── stylesheets │ │ └── normalize.css └── todo-app.html ├── index.html └── js ├── app.js └── todo-app.js /.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | .svn 3 | *.swp 4 | .DS_Store 5 | *.sublime-project 6 | *.sublime-workspace 7 | node_modules 8 | build/dep.mk 9 | build/local.mk 10 | bin/traceur.min.js 11 | bin/traceur.ugly.js 12 | src/syntax/trees/ParseTreeType.js 13 | src/syntax/trees/ParseTrees.js 14 | src/syntax/ParseTreeVisitor.js 15 | src/codegeneration/ParseTreeTransformer.js 16 | src/outputgeneration/SourceMapIntegration.js 17 | test/errsfile.json 18 | test/bench/esprima 19 | test/test-list.js 20 | *.dep 21 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | * 2 | !src/runtime/runtime.js 3 | !src/node/*.js 4 | !bin/traceur.js 5 | !traceur 6 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 0.8 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Backbone TodoMVC + ECMAScript 6 2 | 3 | This repo contains an implementation of the Backbone TodoMVC app rewritten to use ES6 modules, classes and other features. Using the [Traceur compiler](https://github.com/google/traceur-compiler), we're able to use these features in today's browsers with it being dynamically interpreted at runtime. 4 | 5 | * [Demo](http://tastejs.com/todomvc-backbone-es6/) 6 | * Documentation: [app.js](http://tastejs.com/todomvc-backbone-es6/docs/app.html) and [todo-app.js](http://tastejs.com/todomvc-backbone-es6/docs/todo-app.html). 7 | 8 | Run `index.html` on a server to try out the app, or read `docs/app.html` for the literate Docco version. 9 | 10 | ## Preview 11 | 12 | 13 | 14 | ## Bower 15 | 16 | This repository uses [Bower](http://bower.io) and a checked in version of `bower_components` for dependencies. To update dependencies to the latest version run `bower update`. 17 | 18 | ## Docco compilation 19 | 20 | * `npm install -g docco` 21 | * `docco js/todo-app.js js/app.js` 22 | * Update the `docs` directory 23 | 24 | 25 | ## License 26 | 27 | MIT 28 | -------------------------------------------------------------------------------- /app/bower_components/backbone.localStorage/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "backbone.localStorage", 3 | "version": "1.1.7", 4 | "main": "./backbone.localStorage.js", 5 | "dependencies": {}, 6 | "homepage": "https://github.com/jeromegn/Backbone.localStorage", 7 | "_release": "1.1.7", 8 | "_resolution": { 9 | "type": "version", 10 | "tag": "v1.1.7", 11 | "commit": "363a7c38e0903d29ee978f0987d4456065db27dc" 12 | }, 13 | "_source": "git://github.com/jeromegn/Backbone.localStorage.git", 14 | "_target": "~1.1.7", 15 | "_originalSource": "backbone.localStorage" 16 | } -------------------------------------------------------------------------------- /app/bower_components/backbone.localStorage/.documentup.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Backbone.localStorage", 3 | "twitter": "jeromegn" 4 | } -------------------------------------------------------------------------------- /app/bower_components/backbone.localStorage/.gitignore: -------------------------------------------------------------------------------- 1 | spec/localStorage_commonjs_spec.bundled.js 2 | node_modules 3 | \.DS_Store 4 | -------------------------------------------------------------------------------- /app/bower_components/backbone.localStorage/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 0.8 4 | before_script: 5 | - "export DISPLAY=:99.0" 6 | - "sh -e /etc/init.d/xvfb start" 7 | script: make test -------------------------------------------------------------------------------- /app/bower_components/backbone.localStorage/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## 1.1.7 - October 4, 2013 4 | 5 | - Fix CommonJS requiring (Brandon Dimcheff) 6 | 7 | ## 1.1.6 - July 2, 2013 8 | 9 | - Don't assume `require` is defined when `exports` is defined (#100) 10 | 11 | ## 1.1.5 - At some point... 12 | 13 | - Can't remember... 14 | 15 | ## 1.1.4 - May 19, 2013 16 | 17 | - #90 Check for localStorage (throw an error if not available) 18 | 19 | ## 1.1.3 - May 12, 2013 20 | 21 | - #79 Added CommonJS support 22 | 23 | ## 1.1.2 - May 12, 2013 24 | 25 | - #82 Upgraded Backbone to version 1.0 in test suite 26 | - Fixed a few bugs after upgrading to 1.0... looks like Backbone is now triggering the events we were previously manually triggering. 27 | 28 | ## 1.1.1 - May 11, 2013 29 | 30 | - #87 Fixes Lodash v1.0.0-rc.1 removal of _#chain 31 | - #86 Fix for when developer has specified in backbone which jQuery version to use by setting Backbone.$ 32 | 33 | ## 1.1.0 - prior to May 11, 2013 34 | 35 | - localStorage adapter for Backbone.js -------------------------------------------------------------------------------- /app/bower_components/backbone.localStorage/CNAME: -------------------------------------------------------------------------------- 1 | localtodos.com -------------------------------------------------------------------------------- /app/bower_components/backbone.localStorage/Makefile: -------------------------------------------------------------------------------- 1 | bin = ./node_modules/.bin 2 | 3 | test: test-globals-amd test-commonjs 4 | 5 | test-globals-amd: 6 | $(bin)/mocha-phantomjs ./spec/runner.html 7 | 8 | test-commonjs: install ./spec/localStorage_commonjs_spec.bundled.js 9 | $(bin)/mocha-phantomjs ./spec/runner_commonjs.html 10 | 11 | link install: 12 | @npm $@ 13 | 14 | clean: 15 | rm -rf node_modules ./spec/localStorage_commonjs_spec.bundled.js 16 | 17 | ./spec/localStorage_commonjs_spec.bundled.js: ./spec/localStorage_commonjs_spec.js 18 | $(bin)/browserify -e $< -o $@ 19 | 20 | minify: 21 | $(bin)/uglifyjs -o backbone.localStorage-min.js backbone.localStorage.js 22 | 23 | # Get version number from package.json, need this for tagging. 24 | version = $(shell node -e "console.log(JSON.parse(require('fs').readFileSync('package.json')).version)") 25 | 26 | # npm publish, public-docs and tag 27 | publish : 28 | npm publish 29 | git push 30 | git tag v$(version) 31 | git push --tags origin master -------------------------------------------------------------------------------- /app/bower_components/backbone.localStorage/README.md: -------------------------------------------------------------------------------- 1 | # Backbone localStorage Adapter v1.1.7 2 | 3 | [![Build Status](https://secure.travis-ci.org/jeromegn/Backbone.localStorage.png?branch=master)](http://travis-ci.org/jeromegn/Backbone.localStorage) 4 | 5 | Quite simply a localStorage adapter for Backbone. It's a drop-in replacement for Backbone.Sync() to handle saving to a localStorage database. 6 | 7 | [![Gittip](http://badgr.co/gittip/jeromegn.png)](https://www.gittip.com/jeromegn/) 8 | 9 | ## Usage 10 | 11 | Include Backbone.localStorage after having included Backbone.js: 12 | 13 | ```html 14 | 15 | 16 | ``` 17 | 18 | Create your collections like so: 19 | 20 | ```javascript 21 | window.SomeCollection = Backbone.Collection.extend({ 22 | 23 | localStorage: new Backbone.LocalStorage("SomeCollection"), // Unique name within your app. 24 | 25 | // ... everything else is normal. 26 | 27 | }); 28 | ``` 29 | ### RequireJS 30 | 31 | Include [RequireJS](http://requirejs.org): 32 | 33 | ```html 34 | 35 | ``` 36 | 37 | RequireJS config: 38 | ```javascript 39 | require.config({ 40 | paths: { 41 | jquery: "lib/jquery", 42 | underscore: "lib/underscore", 43 | backbone: "lib/backbone", 44 | localstorage: "lib/backbone.localStorage" 45 | } 46 | }); 47 | ``` 48 | 49 | Define your collection as a module: 50 | ```javascript 51 | define("someCollection", ["localstorage"], function() { 52 | var SomeCollection = Backbone.Collection.extend({ 53 | localStorage: new Backbone.LocalStorage("SomeCollection") // Unique name within your app. 54 | }); 55 | 56 | return new SomeCollection(); 57 | }); 58 | ``` 59 | 60 | Require your collection: 61 | ```javascript 62 | require(["someCollection"], function(someCollection) { 63 | // ready to use someCollection 64 | }); 65 | ``` 66 | 67 | ### CommonJS 68 | 69 | If you're using [browserify](https://github.com/substack/node-browserify). 70 | 71 | ```javascript 72 | Backbone.LocalStorage = require("backbone.localstorage"); 73 | ``` 74 | 75 | ##Support 76 | 77 | If you're having a problem with using the project, get help at CodersClan. 78 | 79 | 80 | 81 | ## Contributing 82 | 83 | You'll need node and to `npm install` before being able to run the minification script. 84 | 85 | 1. Fork; 86 | 2. Write code, with tests; 87 | 3. `make test` or `open spec/runner.html`; 88 | 4. Create a pull request. 89 | 90 | Have fun! 91 | 92 | ## Acknowledgments 93 | 94 | - [Mark Woodall](https://github.com/llad): initial tests (now refactored); 95 | - [Martin Häcker](https://github.com/dwt): many fixes and the test isolation. 96 | 97 | ## License 98 | 99 | Licensed under MIT license 100 | 101 | Copyright (c) 2010 Jerome Gravel-Niquet 102 | 103 | Permission is hereby granted, free of charge, to any person obtaining 104 | a copy of this software and associated documentation files (the 105 | "Software"), to deal in the Software without restriction, including 106 | without limitation the rights to use, copy, modify, merge, publish, 107 | distribute, sublicense, and/or sell copies of the Software, and to 108 | permit persons to whom the Software is furnished to do so, subject to 109 | the following conditions: 110 | 111 | The above copyright notice and this permission notice shall be 112 | included in all copies or substantial portions of the Software. 113 | 114 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 115 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 116 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 117 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 118 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 119 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 120 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 121 | -------------------------------------------------------------------------------- /app/bower_components/backbone.localStorage/backbone.localStorage-min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Backbone localStorage Adapter 3 | * Version 1.1.7 4 | * 5 | * https://github.com/jeromegn/Backbone.localStorage 6 | */(function(a,b){typeof exports=="object"&&typeof require=="function"?module.exports=b(require("underscore"),require("backbone")):typeof define=="function"&&define.amd?define(["underscore","backbone"],function(c,d){return b(c||a._,d||a.Backbone)}):b(_,Backbone)})(this,function(a,b){function c(){return((1+Math.random())*65536|0).toString(16).substring(1)}function d(){return c()+c()+"-"+c()+"-"+c()+"-"+c()+"-"+c()+c()+c()}return b.LocalStorage=window.Store=function(a){if(!this.localStorage)throw"Backbone.localStorage: Environment does not support localStorage.";this.name=a;var b=this.localStorage().getItem(this.name);this.records=b&&b.split(",")||[]},a.extend(b.LocalStorage.prototype,{save:function(){this.localStorage().setItem(this.name,this.records.join(","))},create:function(a){return a.id||(a.id=d(),a.set(a.idAttribute,a.id)),this.localStorage().setItem(this.name+"-"+a.id,JSON.stringify(a)),this.records.push(a.id.toString()),this.save(),this.find(a)},update:function(b){return this.localStorage().setItem(this.name+"-"+b.id,JSON.stringify(b)),a.include(this.records,b.id.toString())||this.records.push(b.id.toString()),this.save(),this.find(b)},find:function(a){return this.jsonData(this.localStorage().getItem(this.name+"-"+a.id))},findAll:function(){return(a.chain||a)(this.records).map(function(a){return this.jsonData(this.localStorage().getItem(this.name+"-"+a))},this).compact().value()},destroy:function(b){return b.isNew()?!1:(this.localStorage().removeItem(this.name+"-"+b.id),this.records=a.reject(this.records,function(a){return a===b.id.toString()}),this.save(),b)},localStorage:function(){return localStorage},jsonData:function(a){return a&&JSON.parse(a)},_clear:function(){var b=this.localStorage(),c=new RegExp("^"+this.name+"-");b.removeItem(this.name),(a.chain||a)(b).keys().filter(function(a){return c.test(a)}).each(function(a){b.removeItem(a)}),this.records.length=0},_storageSize:function(){return this.localStorage().length}}),b.LocalStorage.sync=window.Store.sync=b.localSync=function(a,c,d){var e=c.localStorage||c.collection.localStorage,f,g,h=b.$.Deferred&&b.$.Deferred();try{switch(a){case"read":f=c.id!=undefined?e.find(c):e.findAll();break;case"create":f=e.create(c);break;case"update":f=e.update(c);break;case"delete":f=e.destroy(c)}}catch(i){i.code===22&&e._storageSize()===0?g="Private browsing is unsupported":g=i.message}return f?(d&&d.success&&(b.VERSION==="0.9.10"?d.success(c,f,d):d.success(f)),h&&h.resolve(f)):(g=g?g:"Record Not Found",d&&d.error&&(b.VERSION==="0.9.10"?d.error(c,g,d):d.error(g)),h&&h.reject(g)),d&&d.complete&&d.complete(f),h&&h.promise()},b.ajaxSync=b.sync,b.getSyncMethod=function(a){return a.localStorage||a.collection&&a.collection.localStorage?b.localSync:b.ajaxSync},b.sync=function(a,c,d){return b.getSyncMethod(c).apply(this,[a,c,d])},b.LocalStorage}); -------------------------------------------------------------------------------- /app/bower_components/backbone.localStorage/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "backbone.localStorage", 3 | "version": "1.1.7", 4 | "main": "./backbone.localStorage.js", 5 | "dependencies": {} 6 | } 7 | -------------------------------------------------------------------------------- /app/bower_components/backbone.localStorage/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "backbone.localStorage", 3 | "version": "1.1.7", 4 | "main": "./backbone.localStorage.js", 5 | "dependencies": {} 6 | } 7 | -------------------------------------------------------------------------------- /app/bower_components/backbone.localStorage/examples/todos/destroy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tastejs/todomvc-backbone-es6/30bd0a384c3bfbd04e49746cd73a1f13d00463be/app/bower_components/backbone.localStorage/examples/todos/destroy.png -------------------------------------------------------------------------------- /app/bower_components/backbone.localStorage/examples/todos/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Backbone.js Todos 7 | 8 | 22 | 23 | 24 | 25 | 26 |
27 | 28 |
29 |

Todos

30 | 31 |
32 | 33 |
34 | 35 | 36 | 37 |
38 | 39 | 43 | 44 |
45 | 46 |
47 | Double-click to edit a todo. 48 |
49 | 50 |
51 | Created by 52 |
53 | Jérôme Gravel-Niquet. 54 |
Rewritten by: TodoMVC. 55 |
56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 73 | 74 | 80 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /app/bower_components/backbone.localStorage/examples/todos/todos.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | margin: 0; 4 | padding: 0; 5 | } 6 | 7 | body { 8 | font: 14px "Helvetica Neue", Helvetica, Arial, sans-serif; 9 | line-height: 1.4em; 10 | background: #eeeeee; 11 | color: #333333; 12 | width: 520px; 13 | margin: 0 auto; 14 | -webkit-font-smoothing: antialiased; 15 | } 16 | 17 | #todoapp { 18 | background: #fff; 19 | padding: 20px; 20 | margin-bottom: 40px; 21 | -webkit-box-shadow: rgba(0, 0, 0, 0.2) 0 2px 6px 0; 22 | -moz-box-shadow: rgba(0, 0, 0, 0.2) 0 2px 6px 0; 23 | -ms-box-shadow: rgba(0, 0, 0, 0.2) 0 2px 6px 0; 24 | -o-box-shadow: rgba(0, 0, 0, 0.2) 0 2px 6px 0; 25 | box-shadow: rgba(0, 0, 0, 0.2) 0 2px 6px 0; 26 | -webkit-border-radius: 0 0 5px 5px; 27 | -moz-border-radius: 0 0 5px 5px; 28 | -ms-border-radius: 0 0 5px 5px; 29 | -o-border-radius: 0 0 5px 5px; 30 | border-radius: 0 0 5px 5px; 31 | } 32 | 33 | #todoapp h1 { 34 | font-size: 36px; 35 | font-weight: bold; 36 | text-align: center; 37 | padding: 0 0 10px 0; 38 | } 39 | 40 | #todoapp input[type="text"] { 41 | width: 466px; 42 | font-size: 24px; 43 | font-family: inherit; 44 | line-height: 1.4em; 45 | border: 0; 46 | outline: none; 47 | padding: 6px; 48 | border: 1px solid #999999; 49 | -webkit-box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px 0 inset; 50 | -moz-box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px 0 inset; 51 | -ms-box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px 0 inset; 52 | -o-box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px 0 inset; 53 | box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px 0 inset; 54 | } 55 | 56 | #todoapp input::-webkit-input-placeholder { 57 | font-style: italic; 58 | } 59 | 60 | #main { 61 | display: none; 62 | } 63 | 64 | #todo-list { 65 | margin: 10px 0; 66 | padding: 0; 67 | list-style: none; 68 | } 69 | 70 | #todo-list li { 71 | padding: 18px 20px 18px 0; 72 | position: relative; 73 | font-size: 24px; 74 | border-bottom: 1px solid #cccccc; 75 | } 76 | 77 | #todo-list li:last-child { 78 | border-bottom: none; 79 | } 80 | 81 | #todo-list li.done label { 82 | color: #777777; 83 | text-decoration: line-through; 84 | } 85 | 86 | #todo-list .destroy { 87 | position: absolute; 88 | right: 5px; 89 | top: 20px; 90 | display: none; 91 | cursor: pointer; 92 | width: 20px; 93 | height: 20px; 94 | background: url(destroy.png) no-repeat; 95 | } 96 | 97 | #todo-list li:hover .destroy { 98 | display: block; 99 | } 100 | 101 | #todo-list .destroy:hover { 102 | background-position: 0 -20px; 103 | } 104 | 105 | #todo-list li.editing { 106 | border-bottom: none; 107 | margin-top: -1px; 108 | padding: 0; 109 | } 110 | 111 | #todo-list li.editing:last-child { 112 | margin-bottom: -1px; 113 | } 114 | 115 | #todo-list li.editing .edit { 116 | display: block; 117 | width: 444px; 118 | padding: 13px 15px 14px 20px; 119 | margin: 0; 120 | } 121 | 122 | #todo-list li.editing .view { 123 | display: none; 124 | } 125 | 126 | #todo-list li .view label { 127 | word-break: break-word; 128 | } 129 | 130 | #todo-list li .edit { 131 | display: none; 132 | } 133 | 134 | #todoapp footer { 135 | display: none; 136 | margin: 0 -20px -20px -20px; 137 | overflow: hidden; 138 | color: #555555; 139 | background: #f4fce8; 140 | border-top: 1px solid #ededed; 141 | padding: 0 20px; 142 | line-height: 37px; 143 | -webkit-border-radius: 0 0 5px 5px; 144 | -moz-border-radius: 0 0 5px 5px; 145 | -ms-border-radius: 0 0 5px 5px; 146 | -o-border-radius: 0 0 5px 5px; 147 | border-radius: 0 0 5px 5px; 148 | } 149 | 150 | #clear-completed { 151 | float: right; 152 | line-height: 20px; 153 | text-decoration: none; 154 | background: rgba(0, 0, 0, 0.1); 155 | color: #555555; 156 | font-size: 11px; 157 | margin-top: 8px; 158 | margin-bottom: 8px; 159 | padding: 0 10px 1px; 160 | cursor: pointer; 161 | -webkit-border-radius: 12px; 162 | -moz-border-radius: 12px; 163 | -ms-border-radius: 12px; 164 | -o-border-radius: 12px; 165 | border-radius: 12px; 166 | -webkit-box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 0 0; 167 | -moz-box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 0 0; 168 | -ms-box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 0 0; 169 | -o-box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 0 0; 170 | box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 0 0; 171 | } 172 | 173 | #clear-completed:hover { 174 | background: rgba(0, 0, 0, 0.15); 175 | -webkit-box-shadow: rgba(0, 0, 0, 0.3) 0 -1px 0 0; 176 | -moz-box-shadow: rgba(0, 0, 0, 0.3) 0 -1px 0 0; 177 | -ms-box-shadow: rgba(0, 0, 0, 0.3) 0 -1px 0 0; 178 | -o-box-shadow: rgba(0, 0, 0, 0.3) 0 -1px 0 0; 179 | box-shadow: rgba(0, 0, 0, 0.3) 0 -1px 0 0; 180 | } 181 | 182 | #clear-completed:active { 183 | position: relative; 184 | top: 1px; 185 | } 186 | 187 | #todo-count span { 188 | font-weight: bold; 189 | } 190 | 191 | #instructions { 192 | margin: 10px auto; 193 | color: #777777; 194 | text-shadow: rgba(255, 255, 255, 0.8) 0 1px 0; 195 | text-align: center; 196 | } 197 | 198 | #instructions a { 199 | color: #336699; 200 | } 201 | 202 | #credits { 203 | margin: 30px auto; 204 | color: #999; 205 | text-shadow: rgba(255, 255, 255, 0.8) 0 1px 0; 206 | text-align: center; 207 | } 208 | 209 | #credits a { 210 | color: #888; 211 | } 212 | -------------------------------------------------------------------------------- /app/bower_components/backbone.localStorage/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": "Jerome Gravel-Niquet (http://jgn.me)", 3 | "name": "backbone.localstorage", 4 | "version": "1.1.7", 5 | "repository": { 6 | "type": "git", 7 | "url": "git://github.com/jeromegn/Backbone.localStorage.git" 8 | }, 9 | "dependencies": { 10 | "backbone": "~1.x.x", 11 | "underscore": "~1.4.x" 12 | }, 13 | "devDependencies": { 14 | "uglify-js": "~1.2.6", 15 | "mocha-phantomjs": "~1.1.2", 16 | "browserify": "~2.x.x" 17 | }, 18 | "main": "./backbone.localStorage.js", 19 | "engines": { 20 | "node": "*" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/bower_components/backbone.localStorage/spec/localStorage_commonjs_spec.js: -------------------------------------------------------------------------------- 1 | describe("Backbone.localStorage in CommonJS environment", function() { 2 | 3 | var LocalStorage = require("../backbone.localStorage"); 4 | var Backbone = require("backbone"); 5 | 6 | it("should be the same as the non-CommonJS usage", function(){ 7 | assert.equal(Backbone.LocalStorage, LocalStorage); 8 | }); 9 | }); 10 | -------------------------------------------------------------------------------- /app/bower_components/backbone.localStorage/spec/runner.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Backbone.localStorage Test Suite 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 35 | 36 | -------------------------------------------------------------------------------- /app/bower_components/backbone.localStorage/spec/runner_commonjs.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Backbone.localStorage Test Suite (CommonJS environment) 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/bower_components/backbone.localStorage/spec/support/mocha.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | body { 4 | font: 20px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif; 5 | padding: 60px 50px; 6 | } 7 | 8 | #mocha ul, #mocha li { 9 | margin: 0; 10 | padding: 0; 11 | } 12 | 13 | #mocha ul { 14 | list-style: none; 15 | } 16 | 17 | #mocha h1, #mocha h2 { 18 | margin: 0; 19 | } 20 | 21 | #mocha h1 { 22 | margin-top: 15px; 23 | font-size: 1em; 24 | font-weight: 200; 25 | } 26 | 27 | #mocha h1 a { 28 | text-decoration: none; 29 | color: inherit; 30 | } 31 | 32 | #mocha h1 a:hover { 33 | text-decoration: underline; 34 | } 35 | 36 | #mocha .suite .suite h1 { 37 | margin-top: 0; 38 | font-size: .8em; 39 | } 40 | 41 | .hidden { 42 | display: none; 43 | } 44 | 45 | #mocha h2 { 46 | font-size: 12px; 47 | font-weight: normal; 48 | cursor: pointer; 49 | } 50 | 51 | #mocha .suite { 52 | margin-left: 15px; 53 | } 54 | 55 | #mocha .test { 56 | margin-left: 15px; 57 | overflow: hidden; 58 | } 59 | 60 | #mocha .test.pending:hover h2::after { 61 | content: '(pending)'; 62 | font-family: arial; 63 | } 64 | 65 | #mocha .test.pass.medium .duration { 66 | background: #C09853; 67 | } 68 | 69 | #mocha .test.pass.slow .duration { 70 | background: #B94A48; 71 | } 72 | 73 | #mocha .test.pass::before { 74 | content: '✓'; 75 | font-size: 12px; 76 | display: block; 77 | float: left; 78 | margin-right: 5px; 79 | color: #00d6b2; 80 | } 81 | 82 | #mocha .test.pass .duration { 83 | font-size: 9px; 84 | margin-left: 5px; 85 | padding: 2px 5px; 86 | color: white; 87 | -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.2); 88 | -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.2); 89 | box-shadow: inset 0 1px 1px rgba(0,0,0,.2); 90 | -webkit-border-radius: 5px; 91 | -moz-border-radius: 5px; 92 | -ms-border-radius: 5px; 93 | -o-border-radius: 5px; 94 | border-radius: 5px; 95 | } 96 | 97 | #mocha .test.pass.fast .duration { 98 | display: none; 99 | } 100 | 101 | #mocha .test.pending { 102 | color: #0b97c4; 103 | } 104 | 105 | #mocha .test.pending::before { 106 | content: '◦'; 107 | color: #0b97c4; 108 | } 109 | 110 | #mocha .test.fail { 111 | color: #c00; 112 | } 113 | 114 | #mocha .test.fail pre { 115 | color: black; 116 | } 117 | 118 | #mocha .test.fail::before { 119 | content: '✖'; 120 | font-size: 12px; 121 | display: block; 122 | float: left; 123 | margin-right: 5px; 124 | color: #c00; 125 | } 126 | 127 | #mocha .test pre.error { 128 | color: #c00; 129 | max-height: 300px; 130 | overflow: auto; 131 | } 132 | 133 | #mocha .test pre { 134 | display: block; 135 | float: left; 136 | clear: left; 137 | font: 12px/1.5 monaco, monospace; 138 | margin: 5px; 139 | padding: 15px; 140 | border: 1px solid #eee; 141 | border-bottom-color: #ddd; 142 | -webkit-border-radius: 3px; 143 | -webkit-box-shadow: 0 1px 3px #eee; 144 | -moz-border-radius: 3px; 145 | -moz-box-shadow: 0 1px 3px #eee; 146 | } 147 | 148 | #mocha .test h2 { 149 | position: relative; 150 | } 151 | 152 | #mocha .test a.replay { 153 | position: absolute; 154 | top: 3px; 155 | right: 0; 156 | text-decoration: none; 157 | vertical-align: middle; 158 | display: block; 159 | width: 15px; 160 | height: 15px; 161 | line-height: 15px; 162 | text-align: center; 163 | background: #eee; 164 | font-size: 15px; 165 | -moz-border-radius: 15px; 166 | border-radius: 15px; 167 | -webkit-transition: opacity 200ms; 168 | -moz-transition: opacity 200ms; 169 | transition: opacity 200ms; 170 | opacity: 0.3; 171 | color: #888; 172 | } 173 | 174 | #mocha .test:hover a.replay { 175 | opacity: 1; 176 | } 177 | 178 | #mocha-report.pass .test.fail { 179 | display: none; 180 | } 181 | 182 | #mocha-report.fail .test.pass { 183 | display: none; 184 | } 185 | 186 | #mocha-error { 187 | color: #c00; 188 | font-size: 1.5 em; 189 | font-weight: 100; 190 | letter-spacing: 1px; 191 | } 192 | 193 | #mocha-stats { 194 | position: fixed; 195 | top: 15px; 196 | right: 10px; 197 | font-size: 12px; 198 | margin: 0; 199 | color: #888; 200 | } 201 | 202 | #mocha-stats .progress { 203 | float: right; 204 | padding-top: 0; 205 | } 206 | 207 | #mocha-stats em { 208 | color: black; 209 | } 210 | 211 | #mocha-stats a { 212 | text-decoration: none; 213 | color: inherit; 214 | } 215 | 216 | #mocha-stats a:hover { 217 | border-bottom: 1px solid #eee; 218 | } 219 | 220 | #mocha-stats li { 221 | display: inline-block; 222 | margin: 0 5px; 223 | list-style: none; 224 | padding-top: 11px; 225 | } 226 | 227 | code .comment { color: #ddd } 228 | code .init { color: #2F6FAD } 229 | code .string { color: #5890AD } 230 | code .keyword { color: #8A6343 } 231 | code .number { color: #2F6FAD } 232 | -------------------------------------------------------------------------------- /app/bower_components/backbone/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "backbone", 3 | "version": "1.1.2", 4 | "main": "backbone.js", 5 | "dependencies": { 6 | "underscore": ">=1.5.0" 7 | }, 8 | "ignore": [ 9 | "backbone-min.js", 10 | "docs", 11 | "examples", 12 | "test", 13 | "*.yml", 14 | "*.map", 15 | ".html", 16 | "*.ico" 17 | ], 18 | "homepage": "https://github.com/jashkenas/backbone", 19 | "_release": "1.1.2", 20 | "_resolution": { 21 | "type": "version", 22 | "tag": "1.1.2", 23 | "commit": "53f77901a4ea9c7cf75d3db93ddddf491998d90f" 24 | }, 25 | "_source": "git://github.com/jashkenas/backbone.git", 26 | "_target": "~1.1.0", 27 | "_originalSource": "backbone" 28 | } -------------------------------------------------------------------------------- /app/bower_components/backbone/.gitignore: -------------------------------------------------------------------------------- 1 | raw 2 | *.sw? 3 | .DS_Store 4 | node_modules 5 | bower_components 6 | -------------------------------------------------------------------------------- /app/bower_components/backbone/.npmignore: -------------------------------------------------------------------------------- 1 | test/ 2 | Rakefile 3 | docs/ 4 | raw/ 5 | examples/ 6 | index.html 7 | .jshintrc 8 | -------------------------------------------------------------------------------- /app/bower_components/backbone/CNAME: -------------------------------------------------------------------------------- 1 | backbonejs.org 2 | 3 | -------------------------------------------------------------------------------- /app/bower_components/backbone/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## How to Open a Backbone.js Ticket 2 | 3 | * Do not use tickets to ask for help with (debugging) your application. Ask on 4 | the [mailing list](https://groups.google.com/forum/#!forum/backbonejs), 5 | in the IRC channel (`#documentcloud` on Freenode), or if you understand your 6 | specific problem, on [StackOverflow](http://stackoverflow.com/questions/tagged/backbone.js). 7 | 8 | * Before you open a ticket or send a pull request, 9 | [search](https://github.com/jashkenas/backbone/issues) for previous 10 | discussions about the same feature or issue. Add to the earlier ticket if you 11 | find one. 12 | 13 | * Before sending a pull request for a feature or bug fix, be sure to have 14 | [tests](http://backbonejs.org/test/). 15 | 16 | * Use the same coding style as the rest of the 17 | [codebase](https://github.com/jashkenas/backbone/blob/master/backbone.js). 18 | 19 | * In your pull request, do not add documentation or rebuild the minified 20 | `backbone-min.js` file. We'll do that before cutting a new release. 21 | 22 | * All pull requests should be made to the `master` branch. 23 | -------------------------------------------------------------------------------- /app/bower_components/backbone/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2010-2014 Jeremy Ashkenas, DocumentCloud 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | 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 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /app/bower_components/backbone/README.md: -------------------------------------------------------------------------------- 1 | ____ __ __ 2 | /\ _`\ /\ \ /\ \ __ 3 | \ \ \ \ \ __ ___\ \ \/'\\ \ \____ ___ ___ __ /\_\ ____ 4 | \ \ _ <' /'__`\ /'___\ \ , < \ \ '__`\ / __`\ /' _ `\ /'__`\ \/\ \ /',__\ 5 | \ \ \ \ \/\ \ \.\_/\ \__/\ \ \\`\\ \ \ \ \/\ \ \ \/\ \/\ \/\ __/ __ \ \ \/\__, `\ 6 | \ \____/\ \__/.\_\ \____\\ \_\ \_\ \_,__/\ \____/\ \_\ \_\ \____\/\_\_\ \ \/\____/ 7 | \/___/ \/__/\/_/\/____/ \/_/\/_/\/___/ \/___/ \/_/\/_/\/____/\/_/\ \_\ \/___/ 8 | \ \____/ 9 | \/___/ 10 | (_'_______________________________________________________________________________'_) 11 | (_.———————————————————————————————————————————————————————————————————————————————._) 12 | 13 | 14 | Backbone supplies structure to JavaScript-heavy applications by providing models key-value binding and custom events, collections with a rich API of enumerable functions, views with declarative event handling, and connects it all to your existing application over a RESTful JSON interface. 15 | 16 | For Docs, License, Tests, pre-packed downloads, and everything else, really, see: 17 | http://backbonejs.org 18 | 19 | To suggest a feature, report a bug, or general discussion: 20 | http://github.com/jashkenas/backbone/issues 21 | 22 | Backbone is an open-sourced component of DocumentCloud: 23 | https://github.com/documentcloud 24 | 25 | Many thanks to our contributors: 26 | http://github.com/jashkenas/backbone/contributors 27 | 28 | Special thanks to Robert Kieffer for the original philosophy behind Backbone. 29 | http://github.com/broofa 30 | -------------------------------------------------------------------------------- /app/bower_components/backbone/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "backbone", 3 | "version" : "1.1.2", 4 | "main" : "backbone.js", 5 | "dependencies" : { 6 | "underscore" : ">=1.5.0" 7 | }, 8 | "ignore" : ["backbone-min.js", "docs", "examples", "test", "*.yml", "*.map", ".html", "*.ico"] 9 | } 10 | -------------------------------------------------------------------------------- /app/bower_components/backbone/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "backbone", 3 | "version" : "1.1.2", 4 | "description" : "Give your JS App some Backbone with Models, Views, Collections, and Events.", 5 | "keywords" : ["model", "view", "controller", "router", "server", "client", "browser"], 6 | "repo" : "jashkenas/backbone", 7 | "dependencies" : { 8 | "jashkenas/underscore" : "*" 9 | }, 10 | "main" : "backbone.js", 11 | "scripts" : ["backbone.js"], 12 | "license" : "MIT" 13 | } 14 | -------------------------------------------------------------------------------- /app/bower_components/backbone/index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./backbone'); 2 | -------------------------------------------------------------------------------- /app/bower_components/backbone/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "backbone", 3 | "description" : "Give your JS App some Backbone with Models, Views, Collections, and Events.", 4 | "url" : "http://backbonejs.org", 5 | "keywords" : ["model", "view", "controller", "router", "server", "client", "browser"], 6 | "author" : "Jeremy Ashkenas ", 7 | "dependencies" : { 8 | "underscore" : ">=1.5.0" 9 | }, 10 | "devDependencies": { 11 | "phantomjs": "1.9.0-1", 12 | "docco": "0.6.1", 13 | "coffee-script": "1.6.1" 14 | }, 15 | "scripts": { 16 | "test": "phantomjs test/vendor/runner.js test/index.html?noglobals=true && coffee test/model.coffee", 17 | "build": "uglifyjs backbone.js --mangle --source-map backbone-min.map -o backbone-min.js", 18 | "doc": "docco backbone.js && docco examples/todos/todos.js examples/backbone.localstorage.js", 19 | "lint": "jsl -nofilelisting -nologo -conf docs/jsl.conf -process backbone.js" 20 | }, 21 | "main" : "backbone.js", 22 | "version" : "1.1.2", 23 | "license" : "MIT", 24 | "repository": { 25 | "type": "git", 26 | "url": "https://github.com/jashkenas/backbone.git" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/bower_components/es6-module-loader/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "es6-module-loader", 3 | "version": "0.4.3", 4 | "description": "An ES6 Module Loader polyfill based on the latest spec.", 5 | "homepage": "https://github.com/ModuleLoader/es6-module-loader", 6 | "main": "dist/es6-module-loader.js", 7 | "keywords": [ 8 | "es6", 9 | "harmony", 10 | "polyfill", 11 | "modules" 12 | ], 13 | "ignore": [ 14 | "demo", 15 | "lib", 16 | "test", 17 | "grunt.js", 18 | "package.json" 19 | ], 20 | "repository": { 21 | "type": "git", 22 | "url": "https://github.com/ModuleLoader/es6-module-loader.git" 23 | }, 24 | "licenses": [ 25 | { 26 | "type": "MIT" 27 | } 28 | ], 29 | "_release": "0.4.3", 30 | "_resolution": { 31 | "type": "version", 32 | "tag": "v0.4.3", 33 | "commit": "52b67e3afa5a26568ac2e9d15c8d742bdd50c78c" 34 | }, 35 | "_source": "git://github.com/ModuleLoader/es6-module-loader.git", 36 | "_target": "~0.4.2", 37 | "_originalSource": "es6-module-loader" 38 | } -------------------------------------------------------------------------------- /app/bower_components/es6-module-loader/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /app/bower_components/es6-module-loader/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "curly": true, 3 | "eqeqeq": true, 4 | "immed": true, 5 | "latedef": true, 6 | "newcap": true, 7 | "noarg": true, 8 | "sub": true, 9 | "undef": true, 10 | "boss": true, 11 | "eqnull": true 12 | } 13 | -------------------------------------------------------------------------------- /app/bower_components/es6-module-loader/Gruntfile.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = function (grunt) { 3 | grunt.initConfig({ 4 | pkg: grunt.file.readJSON('package.json'), 5 | meta: { 6 | banner: '/*\n * <%= pkg.name %> v<%= pkg.version %>\n' + 7 | '<%= pkg.homepage ? " * " + pkg.homepage + "\\n" : "" %>' + 8 | ' * Implemented to the 2013-12-02 ES6 module specification draft\n' + 9 | ' * Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' + 10 | ' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %>\n */\n' 11 | }, 12 | uglify: { 13 | options: { 14 | banner: '<%= meta.banner %>' 15 | }, 16 | dist: { 17 | src: 'lib/<%= pkg.name %>.js', 18 | dest: 'dist/<%= pkg.name %>.js' 19 | }, 20 | traceur: { 21 | options: { 22 | banner: '/*\n Traceur Compiler 0.0.9 - https://github.com/google/traceur-compiler \n*/\n' 23 | }, 24 | src: 'lib/traceur.js', 25 | dest: 'dist/traceur.js' 26 | } 27 | }, 28 | jshint: { 29 | options: { 30 | jshintrc: '.jshintrc' 31 | }, 32 | dist: [ 33 | 'lib/es6-module-loader.js', 34 | 'test/es6-module-loader_test.js' 35 | ] 36 | } 37 | }); 38 | 39 | grunt.loadNpmTasks('grunt-contrib-jshint'); 40 | grunt.loadNpmTasks('grunt-contrib-uglify'); 41 | 42 | grunt.registerTask('default', [/*'jshint', */'uglify']); 43 | }; 44 | -------------------------------------------------------------------------------- /app/bower_components/es6-module-loader/LICENSE-MIT: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013 Guy Bedford, Luke Hoban, Addy Osmani 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | 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 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /app/bower_components/es6-module-loader/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "es6-module-loader", 3 | "version": "0.4.3", 4 | "description": "An ES6 Module Loader polyfill based on the latest spec.", 5 | "homepage": "https://github.com/ModuleLoader/es6-module-loader", 6 | "main": "dist/es6-module-loader.js", 7 | "keywords": [ 8 | "es6", 9 | "harmony", 10 | "polyfill", 11 | "modules" 12 | ], 13 | "ignore": [ 14 | "demo", 15 | "lib", 16 | "test", 17 | "grunt.js", 18 | "package.json" 19 | ], 20 | "repository": { 21 | "type": "git", 22 | "url": "https://github.com/ModuleLoader/es6-module-loader.git" 23 | }, 24 | "licenses": [ 25 | { 26 | "type": "MIT" 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /app/bower_components/jquery/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "2.1.0", 4 | "main": "dist/jquery.js", 5 | "license": "MIT", 6 | "ignore": [ 7 | "**/.*", 8 | "build", 9 | "speed", 10 | "test", 11 | "*.md", 12 | "AUTHORS.txt", 13 | "Gruntfile.js", 14 | "package.json" 15 | ], 16 | "devDependencies": { 17 | "sizzle": "1.10.16", 18 | "requirejs": "~2.1.8", 19 | "qunit": "~1.12.0", 20 | "sinon": "~1.7.3" 21 | }, 22 | "keywords": [ 23 | "jquery", 24 | "javascript", 25 | "library" 26 | ], 27 | "homepage": "https://github.com/jquery/jquery", 28 | "_release": "2.1.0", 29 | "_resolution": { 30 | "type": "version", 31 | "tag": "2.1.0", 32 | "commit": "9434e03193c45d51bbd063a0edd1a07a6178d33f" 33 | }, 34 | "_source": "git://github.com/jquery/jquery.git", 35 | "_target": "~2.1.0", 36 | "_originalSource": "jquery" 37 | } -------------------------------------------------------------------------------- /app/bower_components/jquery/MIT-LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2014 jQuery Foundation and other contributors 2 | http://jquery.com/ 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining 5 | a copy of this software and associated documentation files (the 6 | "Software"), to deal in the Software without restriction, including 7 | without limitation the rights to use, copy, modify, merge, publish, 8 | distribute, sublicense, and/or sell copies of the Software, and to 9 | permit persons to whom the Software is furnished to do so, subject to 10 | the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 19 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 20 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 21 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /app/bower_components/jquery/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "2.1.0", 4 | "main": "dist/jquery.js", 5 | "license": "MIT", 6 | "ignore": [ 7 | "**/.*", 8 | "build", 9 | "speed", 10 | "test", 11 | "*.md", 12 | "AUTHORS.txt", 13 | "Gruntfile.js", 14 | "package.json" 15 | ], 16 | "devDependencies": { 17 | "sizzle": "1.10.16", 18 | "requirejs": "~2.1.8", 19 | "qunit": "~1.12.0", 20 | "sinon": "~1.7.3" 21 | }, 22 | "keywords": [ 23 | "jquery", 24 | "javascript", 25 | "library" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/ajax/jsonp.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "./var/nonce", 4 | "./var/rquery", 5 | "../ajax" 6 | ], function( jQuery, nonce, rquery ) { 7 | 8 | var oldCallbacks = [], 9 | rjsonp = /(=)\?(?=&|$)|\?\?/; 10 | 11 | // Default jsonp settings 12 | jQuery.ajaxSetup({ 13 | jsonp: "callback", 14 | jsonpCallback: function() { 15 | var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); 16 | this[ callback ] = true; 17 | return callback; 18 | } 19 | }); 20 | 21 | // Detect, normalize options and install callbacks for jsonp requests 22 | jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { 23 | 24 | var callbackName, overwritten, responseContainer, 25 | jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? 26 | "url" : 27 | typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data" 28 | ); 29 | 30 | // Handle iff the expected data type is "jsonp" or we have a parameter to set 31 | if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { 32 | 33 | // Get callback name, remembering preexisting value associated with it 34 | callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? 35 | s.jsonpCallback() : 36 | s.jsonpCallback; 37 | 38 | // Insert callback into url or form data 39 | if ( jsonProp ) { 40 | s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); 41 | } else if ( s.jsonp !== false ) { 42 | s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; 43 | } 44 | 45 | // Use data converter to retrieve json after script execution 46 | s.converters["script json"] = function() { 47 | if ( !responseContainer ) { 48 | jQuery.error( callbackName + " was not called" ); 49 | } 50 | return responseContainer[ 0 ]; 51 | }; 52 | 53 | // force json dataType 54 | s.dataTypes[ 0 ] = "json"; 55 | 56 | // Install callback 57 | overwritten = window[ callbackName ]; 58 | window[ callbackName ] = function() { 59 | responseContainer = arguments; 60 | }; 61 | 62 | // Clean-up function (fires after converters) 63 | jqXHR.always(function() { 64 | // Restore preexisting value 65 | window[ callbackName ] = overwritten; 66 | 67 | // Save back as free 68 | if ( s[ callbackName ] ) { 69 | // make sure that re-using the options doesn't screw things around 70 | s.jsonpCallback = originalSettings.jsonpCallback; 71 | 72 | // save the callback name for future use 73 | oldCallbacks.push( callbackName ); 74 | } 75 | 76 | // Call if it was a function and we have a response 77 | if ( responseContainer && jQuery.isFunction( overwritten ) ) { 78 | overwritten( responseContainer[ 0 ] ); 79 | } 80 | 81 | responseContainer = overwritten = undefined; 82 | }); 83 | 84 | // Delegate to script 85 | return "script"; 86 | } 87 | }); 88 | 89 | }); 90 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/ajax/load.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../core/parseHTML", 4 | "../ajax", 5 | "../traversing", 6 | "../manipulation", 7 | "../selector", 8 | // Optional event/alias dependency 9 | "../event/alias" 10 | ], function( jQuery ) { 11 | 12 | // Keep a copy of the old load method 13 | var _load = jQuery.fn.load; 14 | 15 | /** 16 | * Load a url into a page 17 | */ 18 | jQuery.fn.load = function( url, params, callback ) { 19 | if ( typeof url !== "string" && _load ) { 20 | return _load.apply( this, arguments ); 21 | } 22 | 23 | var selector, type, response, 24 | self = this, 25 | off = url.indexOf(" "); 26 | 27 | if ( off >= 0 ) { 28 | selector = url.slice( off ); 29 | url = url.slice( 0, off ); 30 | } 31 | 32 | // If it's a function 33 | if ( jQuery.isFunction( params ) ) { 34 | 35 | // We assume that it's the callback 36 | callback = params; 37 | params = undefined; 38 | 39 | // Otherwise, build a param string 40 | } else if ( params && typeof params === "object" ) { 41 | type = "POST"; 42 | } 43 | 44 | // If we have elements to modify, make the request 45 | if ( self.length > 0 ) { 46 | jQuery.ajax({ 47 | url: url, 48 | 49 | // if "type" variable is undefined, then "GET" method will be used 50 | type: type, 51 | dataType: "html", 52 | data: params 53 | }).done(function( responseText ) { 54 | 55 | // Save response for use in complete callback 56 | response = arguments; 57 | 58 | self.html( selector ? 59 | 60 | // If a selector was specified, locate the right elements in a dummy div 61 | // Exclude scripts to avoid IE 'Permission Denied' errors 62 | jQuery("
").append( jQuery.parseHTML( responseText ) ).find( selector ) : 63 | 64 | // Otherwise use the full result 65 | responseText ); 66 | 67 | }).complete( callback && function( jqXHR, status ) { 68 | self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] ); 69 | }); 70 | } 71 | 72 | return this; 73 | }; 74 | 75 | }); 76 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/ajax/parseJSON.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // Support: Android 2.3 6 | // Workaround failure to string-cast null input 7 | jQuery.parseJSON = function( data ) { 8 | return JSON.parse( data + "" ); 9 | }; 10 | 11 | return jQuery.parseJSON; 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/ajax/parseXML.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // Cross-browser xml parsing 6 | jQuery.parseXML = function( data ) { 7 | var xml, tmp; 8 | if ( !data || typeof data !== "string" ) { 9 | return null; 10 | } 11 | 12 | // Support: IE9 13 | try { 14 | tmp = new DOMParser(); 15 | xml = tmp.parseFromString( data, "text/xml" ); 16 | } catch ( e ) { 17 | xml = undefined; 18 | } 19 | 20 | if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { 21 | jQuery.error( "Invalid XML: " + data ); 22 | } 23 | return xml; 24 | }; 25 | 26 | return jQuery.parseXML; 27 | 28 | }); 29 | -------------------------------------------------------------------------------- /app/bower_components/jquery/src/ajax/script.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../ajax" 4 | ], function( jQuery ) { 5 | 6 | // Install script dataType 7 | jQuery.ajaxSetup({ 8 | accepts: { 9 | script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" 10 | }, 11 | contents: { 12 | script: /(?:java|ecma)script/ 13 | }, 14 | converters: { 15 | "text script": function( text ) { 16 | jQuery.globalEval( text ); 17 | return text; 18 | } 19 | } 20 | }); 21 | 22 | // Handle cache's special case and crossDomain 23 | jQuery.ajaxPrefilter( "script", function( s ) { 24 | if ( s.cache === undefined ) { 25 | s.cache = false; 26 | } 27 | if ( s.crossDomain ) { 28 | s.type = "GET"; 29 | } 30 | }); 31 | 32 | // Bind script tag hack transport 33 | jQuery.ajaxTransport( "script", function( s ) { 34 | // This transport only deals with cross domain requests 35 | if ( s.crossDomain ) { 36 | var script, callback; 37 | return { 38 | send: function( _, complete ) { 39 | script = jQuery(" 35 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /js/app.js: -------------------------------------------------------------------------------- 1 | /*jshint esnext:true */ 2 | 3 | // Traceur TodoMVC 4 | // --------------- 5 | // This is a re-write of the Backbone [TodoMVC](http://todomvc.com) app using 6 | // ECMAScript 6 features. It's made possible using 7 | // [Traceur](https://github.com/google/traceur-compiler) compiler and was 8 | // authored by Addy Osmani, Pascal Hartig, Sindre Sorhus, Stephen Sawchuk, 9 | // Rick Waldron, Domenic Denicola and Guy Bedford. 10 | 11 | // You can [run](http://addyosmani.github.io/todomvc-backbone-es6/) the completed app, 12 | // [watch](https://github.com/addyosmani/todomvc-backbone-es6) the project repository 13 | // or look at the original [ES5 implementation](http://goo.gl/8opExB). 14 | 15 | // Begin your ES6 adventure here 16 | // ----------------------------- 17 | 18 | // #### Imports 19 | // We import the classes we defined in the TodoApp module using the `import` 20 | // keyword. 21 | import {AppView, Filters} from './todo-app'; 22 | 23 | // Document ready 24 | // -------------- 25 | 26 | // #### Arrow Functions (Statements) 27 | // Load the application once the DOM is ready, using `jQuery.ready` 28 | // `() => { ... }` which you'll see below is the statement form of 29 | // the arrow function syntax. Practically speaking, it is lightweight 30 | // sugar for `function () { ... }.bind(this)`. 31 | // 32 | // Apart from containing statements instead of an automatically-returned 33 | // expression, it has the same properties as the expression-form arrow functions 34 | // we talked about above. 35 | $(() => { 36 | // *Finally, we kick things off by creating the **App**.* 37 | new AppView(); 38 | new Filters(); 39 | Backbone.history.start(); 40 | }); 41 | 42 | --------------------------------------------------------------------------------