Update to Speedometer 2.0 w/updated frameworks + new workloads
[WebKit-https.git] / PerformanceTests / Speedometer / resources / todomvc / architecture-examples / emberjs / assets / todomvc.js
1 "use strict";
2
3 /* jshint ignore:start */
4
5
6
7 /* jshint ignore:end */
8
9 define('todomvc/app', ['exports', 'ember', 'todomvc/resolver', 'ember-load-initializers', 'todomvc/config/environment'], function (exports, _ember, _todomvcResolver, _emberLoadInitializers, _todomvcConfigEnvironment) {
10
11     var App = undefined;
12
13     _ember['default'].MODEL_FACTORY_INJECTIONS = true;
14
15     App = _ember['default'].Application.extend({
16         modulePrefix: _todomvcConfigEnvironment['default'].modulePrefix,
17         podModulePrefix: _todomvcConfigEnvironment['default'].podModulePrefix,
18         Resolver: _todomvcResolver['default']
19     });
20
21     (0, _emberLoadInitializers['default'])(App, _todomvcConfigEnvironment['default'].modulePrefix);
22
23     exports['default'] = App;
24 });
25 define('todomvc/components/app-version', ['exports', 'ember-cli-app-version/components/app-version', 'todomvc/config/environment'], function (exports, _emberCliAppVersionComponentsAppVersion, _todomvcConfigEnvironment) {
26
27   var name = _todomvcConfigEnvironment['default'].APP.name;
28   var version = _todomvcConfigEnvironment['default'].APP.version;
29
30   exports['default'] = _emberCliAppVersionComponentsAppVersion['default'].extend({
31     version: version,
32     name: name
33   });
34 });
35 define('todomvc/components/todo-item', ['exports', 'ember'], function (exports, _ember) {
36     exports['default'] = _ember['default'].Component.extend({
37         repo: _ember['default'].inject.service(),
38         tagName: 'li',
39         editing: false,
40         classNameBindings: ['todo.completed', 'editing'],
41
42         actions: {
43             startEditing: function startEditing() {
44                 this.get('onStartEdit')();
45                 this.set('editing', true);
46                 _ember['default'].run.scheduleOnce('afterRender', this, 'focusInput');
47             },
48
49             doneEditing: function doneEditing(todoTitle) {
50                 if (!this.get('editing')) {
51                     return;
52                 }
53                 if (_ember['default'].isBlank(todoTitle)) {
54                     this.send('removeTodo');
55                 } else {
56                     this.set('todo.title', todoTitle.trim());
57                     this.set('editing', false);
58                     this.get('onEndEdit')();
59                 }
60             },
61
62             handleKeydown: function handleKeydown(e) {
63                 if (e.keyCode === 13) {
64                     e.target.blur();
65                 } else if (e.keyCode === 27) {
66                     this.set('editing', false);
67                 }
68             },
69
70             toggleCompleted: function toggleCompleted(e) {
71                 var todo = this.get('todo');
72                 _ember['default'].set(todo, 'completed', e.target.checked);
73                 this.get('repo').persist();
74             },
75
76             removeTodo: function removeTodo() {
77                 this.get('repo')['delete'](this.get('todo'));
78             }
79         },
80
81         focusInput: function focusInput() {
82             this.element.querySelector('input.edit').focus();
83         }
84     });
85 });
86 define('todomvc/components/todo-list', ['exports', 'ember'], function (exports, _ember) {
87     exports['default'] = _ember['default'].Component.extend({
88         repo: _ember['default'].inject.service(),
89         tagName: 'section',
90         elementId: 'main',
91         canToggle: true,
92         allCompleted: _ember['default'].computed('todos.@each.completed', function () {
93             return this.get('todos').isEvery('completed');
94         }),
95
96         actions: {
97             enableToggle: function enableToggle() {
98                 this.set('canToggle', true);
99             },
100
101             disableToggle: function disableToggle() {
102                 this.set('canToggle', false);
103             },
104
105             toggleAll: function toggleAll() {
106                 var allCompleted = this.get('allCompleted');
107                 this.get('todos').forEach(function (todo) {
108                     return _ember['default'].set(todo, 'completed', !allCompleted);
109                 });
110                 this.get('repo').persist();
111             }
112         }
113     });
114 });
115 define('todomvc/controllers/active', ['exports', 'ember'], function (exports, _ember) {
116     exports['default'] = _ember['default'].Controller.extend({
117         todos: _ember['default'].computed.filterBy('model', 'completed', false)
118     });
119 });
120 define('todomvc/controllers/application', ['exports', 'ember'], function (exports, _ember) {
121     exports['default'] = _ember['default'].Controller.extend({
122         repo: _ember['default'].inject.service(),
123         remaining: _ember['default'].computed.filterBy('model', 'completed', false),
124         completed: _ember['default'].computed.filterBy('model', 'completed'),
125         actions: {
126             createTodo: function createTodo(e) {
127                 if (e.keyCode === 13 && !_ember['default'].isBlank(e.target.value)) {
128                     this.get('repo').add({ title: e.target.value.trim(), completed: false });
129                     e.target.value = '';
130                 }
131             },
132
133             clearCompleted: function clearCompleted() {
134                 this.get('model').removeObjects(this.get('completed'));
135                 this.get('repo').persist();
136             }
137         }
138     });
139 });
140 define('todomvc/controllers/completed', ['exports', 'ember'], function (exports, _ember) {
141     exports['default'] = _ember['default'].Controller.extend({
142         todos: _ember['default'].computed.filterBy('model', 'completed', true)
143     });
144 });
145 define('todomvc/helpers/gt', ['exports', 'ember'], function (exports, _ember) {
146     var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();
147
148     exports.gt = gt;
149
150     function gt(_ref /*, hash*/) {
151         var _ref2 = _slicedToArray(_ref, 2);
152
153         var n1 = _ref2[0];
154         var n2 = _ref2[1];
155
156         return n1 > n2;
157     }
158
159     exports['default'] = _ember['default'].Helper.helper(gt);
160 });
161 define('todomvc/helpers/pluralize', ['exports', 'ember', 'ember-inflector'], function (exports, _ember, _emberInflector) {
162     var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();
163
164     exports.pluralizeHelper = pluralizeHelper;
165
166     function pluralizeHelper(_ref /*, hash*/) {
167         var _ref2 = _slicedToArray(_ref, 2);
168
169         var singular = _ref2[0];
170         var count = _ref2[1];
171
172         return count === 1 ? singular : (0, _emberInflector.pluralize)(singular);
173     }
174
175     exports['default'] = _ember['default'].Helper.helper(pluralizeHelper);
176 });
177 define('todomvc/helpers/singularize', ['exports', 'ember-inflector/lib/helpers/singularize'], function (exports, _emberInflectorLibHelpersSingularize) {
178   exports['default'] = _emberInflectorLibHelpersSingularize['default'];
179 });
180 define('todomvc/initializers/app-version', ['exports', 'ember-cli-app-version/initializer-factory', 'todomvc/config/environment'], function (exports, _emberCliAppVersionInitializerFactory, _todomvcConfigEnvironment) {
181   exports['default'] = {
182     name: 'App Version',
183     initialize: (0, _emberCliAppVersionInitializerFactory['default'])(_todomvcConfigEnvironment['default'].APP.name, _todomvcConfigEnvironment['default'].APP.version)
184   };
185 });
186 define('todomvc/initializers/container-debug-adapter', ['exports', 'ember-resolver/container-debug-adapter'], function (exports, _emberResolverContainerDebugAdapter) {
187   exports['default'] = {
188     name: 'container-debug-adapter',
189
190     initialize: function initialize() {
191       var app = arguments[1] || arguments[0];
192
193       app.register('container-debug-adapter:main', _emberResolverContainerDebugAdapter['default']);
194       app.inject('container-debug-adapter:main', 'namespace', 'application:main');
195     }
196   };
197 });
198 define('todomvc/initializers/export-application-global', ['exports', 'ember', 'todomvc/config/environment'], function (exports, _ember, _todomvcConfigEnvironment) {
199   exports.initialize = initialize;
200
201   function initialize() {
202     var application = arguments[1] || arguments[0];
203     if (_todomvcConfigEnvironment['default'].exportApplicationGlobal !== false) {
204       var theGlobal;
205       if (typeof window !== 'undefined') {
206         theGlobal = window;
207       } else if (typeof global !== 'undefined') {
208         theGlobal = global;
209       } else if (typeof self !== 'undefined') {
210         theGlobal = self;
211       } else {
212         // no reasonable global, just bail
213         return;
214       }
215
216       var value = _todomvcConfigEnvironment['default'].exportApplicationGlobal;
217       var globalName;
218
219       if (typeof value === 'string') {
220         globalName = value;
221       } else {
222         globalName = _ember['default'].String.classify(_todomvcConfigEnvironment['default'].modulePrefix);
223       }
224
225       if (!theGlobal[globalName]) {
226         theGlobal[globalName] = application;
227
228         application.reopen({
229           willDestroy: function willDestroy() {
230             this._super.apply(this, arguments);
231             delete theGlobal[globalName];
232           }
233         });
234       }
235     }
236   }
237
238   exports['default'] = {
239     name: 'export-application-global',
240
241     initialize: initialize
242   };
243 });
244 define('todomvc/instance-initializers/global', ['exports'], function (exports) {
245   exports.initialize = initialize;
246   // app/instance-initializers/global.js
247
248   function initialize(application) {
249     window.App = application; // or window.Whatever
250   }
251
252   exports['default'] = {
253     name: 'global',
254     initialize: initialize
255   };
256 });
257 define('todomvc/resolver', ['exports', 'ember-resolver'], function (exports, _emberResolver) {
258   exports['default'] = _emberResolver['default'];
259 });
260 define('todomvc/router', ['exports', 'ember', 'todomvc/config/environment'], function (exports, _ember, _todomvcConfigEnvironment) {
261
262     var Router = _ember['default'].Router.extend({
263         location: _todomvcConfigEnvironment['default'].locationType
264     });
265
266     Router.map(function () {
267         this.route('active');
268         this.route('completed');
269     });
270
271     exports['default'] = Router;
272 });
273 define('todomvc/routes/application', ['exports', 'ember'], function (exports, _ember) {
274     exports['default'] = _ember['default'].Route.extend({
275         repo: _ember['default'].inject.service(),
276         model: function model() {
277             return this.get('repo').findAll();
278         }
279     });
280 });
281 define('todomvc/services/ajax', ['exports', 'ember-ajax/services/ajax'], function (exports, _emberAjaxServicesAjax) {
282   Object.defineProperty(exports, 'default', {
283     enumerable: true,
284     get: function get() {
285       return _emberAjaxServicesAjax['default'];
286     }
287   });
288 });
289 define('todomvc/services/memory', ['exports'], function (exports) {
290   (function (root) {
291     var localStorageMemory = {};
292     var cache = {};
293
294     /**
295      * number of stored items.
296      */
297     localStorageMemory.length = 0;
298
299     /**
300      * returns item for passed key, or null
301      *
302      * @para {String} key
303      *       name of item to be returned
304      * @returns {String|null}
305      */
306     localStorageMemory.getItem = function (key) {
307       return cache[key] || null;
308     };
309
310     /**
311      * sets item for key to passed value, as String
312      *
313      * @para {String} key
314      *       name of item to be set
315      * @para {String} value
316      *       value, will always be turned into a String
317      * @returns {undefined}
318      */
319     localStorageMemory.setItem = function (key, value) {
320       if (typeof value === 'undefined') {
321         localStorageMemory.removeItem(key);
322       } else {
323         if (!cache.hasOwnProperty(key)) {
324           localStorageMemory.length++;
325         }
326
327         cache[key] = '' + value;
328       }
329     };
330
331     /**
332      * removes item for passed key
333      *
334      * @para {String} key
335      *       name of item to be removed
336      * @returns {undefined}
337      */
338     localStorageMemory.removeItem = function (key) {
339       if (cache.hasOwnProperty(key)) {
340         delete cache[key];
341         localStorageMemory.length--;
342       }
343     };
344
345     /**
346      * returns name of key at passed index
347      *
348      * @para {Number} index
349      *       Position for key to be returned (starts at 0)
350      * @returns {String|null}
351      */
352     localStorageMemory.key = function (index) {
353       return Object.keys(cache)[index] || null;
354     };
355
356     /**
357      * removes all stored items and sets length to 0
358      *
359      * @returns {undefined}
360      */
361     localStorageMemory.clear = function () {
362       cache = {};
363       localStorageMemory.length = 0;
364     };
365
366     root.localStorageMemory = localStorageMemory;
367   })(window);
368 });
369 define('todomvc/services/repo', ['exports', 'ember', 'todomvc/services/memory'], function (exports, _ember, _todomvcServicesMemory) {
370     exports['default'] = _ember['default'].Service.extend({
371         lastId: 0,
372         data: null,
373         findAll: function findAll() {
374             return this.get('data') || this.set('data', JSON.parse(window.localStorageMemory.getItem('todos') || '[]'));
375         },
376
377         add: function add(attrs) {
378             var todo = Object.assign({ id: this.incrementProperty('lastId') }, attrs);
379             this.get('data').pushObject(todo);
380             this.persist();
381             return todo;
382         },
383
384         'delete': function _delete(todo) {
385             this.get('data').removeObject(todo);
386             this.persist();
387         },
388
389         persist: function persist() {
390             window.localStorageMemory.setItem('todos', JSON.stringify(this.get('data')));
391         }
392     });
393 });
394 define("todomvc/templates/active", ["exports"], function (exports) {
395   exports["default"] = Ember.HTMLBars.template((function () {
396     return {
397       meta: {
398         "fragmentReason": {
399           "name": "missing-wrapper",
400           "problems": ["wrong-type"]
401         },
402         "revision": "Ember@2.6.2",
403         "loc": {
404           "source": null,
405           "start": {
406             "line": 1,
407             "column": 0
408           },
409           "end": {
410             "line": 1,
411             "column": 25
412           }
413         },
414         "moduleName": "todomvc/templates/active.hbs"
415       },
416       isEmpty: false,
417       arity: 0,
418       cachedFragment: null,
419       hasRendered: false,
420       buildFragment: function buildFragment(dom) {
421         var el0 = dom.createDocumentFragment();
422         var el1 = dom.createComment("");
423         dom.appendChild(el0, el1);
424         return el0;
425       },
426       buildRenderNodes: function buildRenderNodes(dom, fragment, contextualElement) {
427         var morphs = new Array(1);
428         morphs[0] = dom.createMorphAt(fragment, 0, 0, contextualElement);
429         dom.insertBoundary(fragment, 0);
430         dom.insertBoundary(fragment, null);
431         return morphs;
432       },
433       statements: [["inline", "todo-list", [], ["todos", ["subexpr", "@mut", [["get", "todos", ["loc", [null, [1, 18], [1, 23]]]]], [], []]], ["loc", [null, [1, 0], [1, 25]]]]],
434       locals: [],
435       templates: []
436     };
437   })());
438 });
439 define("todomvc/templates/application", ["exports"], function (exports) {
440   exports["default"] = Ember.HTMLBars.template((function () {
441     var child0 = (function () {
442       var child0 = (function () {
443         return {
444           meta: {
445             "fragmentReason": false,
446             "revision": "Ember@2.6.2",
447             "loc": {
448               "source": null,
449               "start": {
450                 "line": 11,
451                 "column": 14
452               },
453               "end": {
454                 "line": 11,
455                 "column": 60
456               }
457             },
458             "moduleName": "todomvc/templates/application.hbs"
459           },
460           isEmpty: false,
461           arity: 0,
462           cachedFragment: null,
463           hasRendered: false,
464           buildFragment: function buildFragment(dom) {
465             var el0 = dom.createDocumentFragment();
466             var el1 = dom.createTextNode("All");
467             dom.appendChild(el0, el1);
468             return el0;
469           },
470           buildRenderNodes: function buildRenderNodes() {
471             return [];
472           },
473           statements: [],
474           locals: [],
475           templates: []
476         };
477       })();
478       var child1 = (function () {
479         return {
480           meta: {
481             "fragmentReason": false,
482             "revision": "Ember@2.6.2",
483             "loc": {
484               "source": null,
485               "start": {
486                 "line": 12,
487                 "column": 14
488               },
489               "end": {
490                 "line": 12,
491                 "column": 64
492               }
493             },
494             "moduleName": "todomvc/templates/application.hbs"
495           },
496           isEmpty: false,
497           arity: 0,
498           cachedFragment: null,
499           hasRendered: false,
500           buildFragment: function buildFragment(dom) {
501             var el0 = dom.createDocumentFragment();
502             var el1 = dom.createTextNode("Active");
503             dom.appendChild(el0, el1);
504             return el0;
505           },
506           buildRenderNodes: function buildRenderNodes() {
507             return [];
508           },
509           statements: [],
510           locals: [],
511           templates: []
512         };
513       })();
514       var child2 = (function () {
515         return {
516           meta: {
517             "fragmentReason": false,
518             "revision": "Ember@2.6.2",
519             "loc": {
520               "source": null,
521               "start": {
522                 "line": 13,
523                 "column": 14
524               },
525               "end": {
526                 "line": 13,
527                 "column": 70
528               }
529             },
530             "moduleName": "todomvc/templates/application.hbs"
531           },
532           isEmpty: false,
533           arity: 0,
534           cachedFragment: null,
535           hasRendered: false,
536           buildFragment: function buildFragment(dom) {
537             var el0 = dom.createDocumentFragment();
538             var el1 = dom.createTextNode("Completed");
539             dom.appendChild(el0, el1);
540             return el0;
541           },
542           buildRenderNodes: function buildRenderNodes() {
543             return [];
544           },
545           statements: [],
546           locals: [],
547           templates: []
548         };
549       })();
550       var child3 = (function () {
551         return {
552           meta: {
553             "fragmentReason": false,
554             "revision": "Ember@2.6.2",
555             "loc": {
556               "source": null,
557               "start": {
558                 "line": 15,
559                 "column": 8
560               },
561               "end": {
562                 "line": 17,
563                 "column": 8
564               }
565             },
566             "moduleName": "todomvc/templates/application.hbs"
567           },
568           isEmpty: false,
569           arity: 0,
570           cachedFragment: null,
571           hasRendered: false,
572           buildFragment: function buildFragment(dom) {
573             var el0 = dom.createDocumentFragment();
574             var el1 = dom.createTextNode("          ");
575             dom.appendChild(el0, el1);
576             var el1 = dom.createElement("button");
577             dom.setAttribute(el1, "id", "clear-completed");
578             var el2 = dom.createTextNode("Clear completed");
579             dom.appendChild(el1, el2);
580             dom.appendChild(el0, el1);
581             var el1 = dom.createTextNode("\n");
582             dom.appendChild(el0, el1);
583             return el0;
584           },
585           buildRenderNodes: function buildRenderNodes(dom, fragment, contextualElement) {
586             var element0 = dom.childAt(fragment, [1]);
587             var morphs = new Array(1);
588             morphs[0] = dom.createAttrMorph(element0, 'onclick');
589             return morphs;
590           },
591           statements: [["attribute", "onclick", ["subexpr", "action", ["clearCompleted"], [], ["loc", [null, [16, 47], [16, 74]]]]]],
592           locals: [],
593           templates: []
594         };
595       })();
596       return {
597         meta: {
598           "fragmentReason": false,
599           "revision": "Ember@2.6.2",
600           "loc": {
601             "source": null,
602             "start": {
603               "line": 7,
604               "column": 4
605             },
606             "end": {
607               "line": 19,
608               "column": 4
609             }
610           },
611           "moduleName": "todomvc/templates/application.hbs"
612         },
613         isEmpty: false,
614         arity: 0,
615         cachedFragment: null,
616         hasRendered: false,
617         buildFragment: function buildFragment(dom) {
618           var el0 = dom.createDocumentFragment();
619           var el1 = dom.createTextNode("      ");
620           dom.appendChild(el0, el1);
621           var el1 = dom.createElement("footer");
622           dom.setAttribute(el1, "id", "footer");
623           var el2 = dom.createTextNode("\n        ");
624           dom.appendChild(el1, el2);
625           var el2 = dom.createElement("span");
626           dom.setAttribute(el2, "id", "todo-count");
627           var el3 = dom.createElement("strong");
628           var el4 = dom.createComment("");
629           dom.appendChild(el3, el4);
630           dom.appendChild(el2, el3);
631           var el3 = dom.createTextNode(" ");
632           dom.appendChild(el2, el3);
633           var el3 = dom.createComment("");
634           dom.appendChild(el2, el3);
635           var el3 = dom.createTextNode(" left");
636           dom.appendChild(el2, el3);
637           dom.appendChild(el1, el2);
638           var el2 = dom.createTextNode("\n        ");
639           dom.appendChild(el1, el2);
640           var el2 = dom.createElement("ul");
641           dom.setAttribute(el2, "id", "filters");
642           var el3 = dom.createTextNode("\n          ");
643           dom.appendChild(el2, el3);
644           var el3 = dom.createElement("li");
645           var el4 = dom.createComment("");
646           dom.appendChild(el3, el4);
647           dom.appendChild(el2, el3);
648           var el3 = dom.createTextNode("\n          ");
649           dom.appendChild(el2, el3);
650           var el3 = dom.createElement("li");
651           var el4 = dom.createComment("");
652           dom.appendChild(el3, el4);
653           dom.appendChild(el2, el3);
654           var el3 = dom.createTextNode("\n          ");
655           dom.appendChild(el2, el3);
656           var el3 = dom.createElement("li");
657           var el4 = dom.createComment("");
658           dom.appendChild(el3, el4);
659           dom.appendChild(el2, el3);
660           var el3 = dom.createTextNode("\n        ");
661           dom.appendChild(el2, el3);
662           dom.appendChild(el1, el2);
663           var el2 = dom.createTextNode("\n");
664           dom.appendChild(el1, el2);
665           var el2 = dom.createComment("");
666           dom.appendChild(el1, el2);
667           var el2 = dom.createTextNode("      ");
668           dom.appendChild(el1, el2);
669           dom.appendChild(el0, el1);
670           var el1 = dom.createTextNode("\n");
671           dom.appendChild(el0, el1);
672           return el0;
673         },
674         buildRenderNodes: function buildRenderNodes(dom, fragment, contextualElement) {
675           var element1 = dom.childAt(fragment, [1]);
676           var element2 = dom.childAt(element1, [1]);
677           var element3 = dom.childAt(element1, [3]);
678           var morphs = new Array(6);
679           morphs[0] = dom.createMorphAt(dom.childAt(element2, [0]), 0, 0);
680           morphs[1] = dom.createMorphAt(element2, 2, 2);
681           morphs[2] = dom.createMorphAt(dom.childAt(element3, [1]), 0, 0);
682           morphs[3] = dom.createMorphAt(dom.childAt(element3, [3]), 0, 0);
683           morphs[4] = dom.createMorphAt(dom.childAt(element3, [5]), 0, 0);
684           morphs[5] = dom.createMorphAt(element1, 5, 5);
685           return morphs;
686         },
687         statements: [["content", "remaining.length", ["loc", [null, [9, 38], [9, 58]]]], ["inline", "pluralize", ["item", ["get", "remaining.length", ["loc", [null, [9, 87], [9, 103]]]]], [], ["loc", [null, [9, 68], [9, 105]]]], ["block", "link-to", ["index"], ["activeClass", "selected"], 0, null, ["loc", [null, [11, 14], [11, 72]]]], ["block", "link-to", ["active"], ["activeClass", "selected"], 1, null, ["loc", [null, [12, 14], [12, 76]]]], ["block", "link-to", ["completed"], ["activeClass", "selected"], 2, null, ["loc", [null, [13, 14], [13, 82]]]], ["block", "if", [["get", "completed.length", ["loc", [null, [15, 14], [15, 30]]]]], [], 3, null, ["loc", [null, [15, 8], [17, 15]]]]],
688         locals: [],
689         templates: [child0, child1, child2, child3]
690       };
691     })();
692     return {
693       meta: {
694         "fragmentReason": {
695           "name": "missing-wrapper",
696           "problems": ["multiple-nodes"]
697         },
698         "revision": "Ember@2.6.2",
699         "loc": {
700           "source": null,
701           "start": {
702             "line": 1,
703             "column": 0
704           },
705           "end": {
706             "line": 29,
707             "column": 9
708           }
709         },
710         "moduleName": "todomvc/templates/application.hbs"
711       },
712       isEmpty: false,
713       arity: 0,
714       cachedFragment: null,
715       hasRendered: false,
716       buildFragment: function buildFragment(dom) {
717         var el0 = dom.createDocumentFragment();
718         var el1 = dom.createElement("section");
719         dom.setAttribute(el1, "id", "todoapp");
720         var el2 = dom.createTextNode("\n  ");
721         dom.appendChild(el1, el2);
722         var el2 = dom.createElement("header");
723         dom.setAttribute(el2, "id", "header");
724         var el3 = dom.createTextNode("\n    ");
725         dom.appendChild(el2, el3);
726         var el3 = dom.createElement("h1");
727         var el4 = dom.createTextNode("todos");
728         dom.appendChild(el3, el4);
729         dom.appendChild(el2, el3);
730         var el3 = dom.createTextNode("\n    ");
731         dom.appendChild(el2, el3);
732         var el3 = dom.createElement("input");
733         dom.setAttribute(el3, "type", "text");
734         dom.setAttribute(el3, "id", "new-todo");
735         dom.setAttribute(el3, "placeholder", "What needs to be done?");
736         dom.setAttribute(el3, "autofocus", "");
737         dom.appendChild(el2, el3);
738         var el3 = dom.createTextNode("\n  ");
739         dom.appendChild(el2, el3);
740         dom.appendChild(el1, el2);
741         var el2 = dom.createTextNode("\n    ");
742         dom.appendChild(el1, el2);
743         var el2 = dom.createComment("");
744         dom.appendChild(el1, el2);
745         var el2 = dom.createTextNode("\n");
746         dom.appendChild(el1, el2);
747         var el2 = dom.createComment("");
748         dom.appendChild(el1, el2);
749         dom.appendChild(el0, el1);
750         var el1 = dom.createTextNode("\n");
751         dom.appendChild(el0, el1);
752         var el1 = dom.createElement("footer");
753         dom.setAttribute(el1, "id", "info");
754         var el2 = dom.createTextNode("\n  ");
755         dom.appendChild(el1, el2);
756         var el2 = dom.createElement("p");
757         var el3 = dom.createTextNode("Double-click to edit a todo");
758         dom.appendChild(el2, el3);
759         dom.appendChild(el1, el2);
760         var el2 = dom.createTextNode("\n  ");
761         dom.appendChild(el1, el2);
762         var el2 = dom.createElement("p");
763         var el3 = dom.createTextNode("\n    Created by\n    ");
764         dom.appendChild(el2, el3);
765         var el3 = dom.createElement("a");
766         dom.setAttribute(el3, "href", "http://github.com/cibernox");
767         var el4 = dom.createTextNode("Miguel Camba");
768         dom.appendChild(el3, el4);
769         dom.appendChild(el2, el3);
770         var el3 = dom.createTextNode(",\n    ");
771         dom.appendChild(el2, el3);
772         var el3 = dom.createElement("a");
773         dom.setAttribute(el3, "href", "http://github.com/addyosmani");
774         var el4 = dom.createTextNode("Addy Osmani");
775         dom.appendChild(el3, el4);
776         dom.appendChild(el2, el3);
777         var el3 = dom.createTextNode("\n  ");
778         dom.appendChild(el2, el3);
779         dom.appendChild(el1, el2);
780         var el2 = dom.createTextNode("\n  ");
781         dom.appendChild(el1, el2);
782         var el2 = dom.createElement("p");
783         var el3 = dom.createTextNode("Part of ");
784         dom.appendChild(el2, el3);
785         var el3 = dom.createElement("a");
786         dom.setAttribute(el3, "href", "http://todomvc.com");
787         var el4 = dom.createTextNode("TodoMVC");
788         dom.appendChild(el3, el4);
789         dom.appendChild(el2, el3);
790         dom.appendChild(el1, el2);
791         var el2 = dom.createTextNode("\n");
792         dom.appendChild(el1, el2);
793         dom.appendChild(el0, el1);
794         return el0;
795       },
796       buildRenderNodes: function buildRenderNodes(dom, fragment, contextualElement) {
797         var element4 = dom.childAt(fragment, [0]);
798         var element5 = dom.childAt(element4, [1, 3]);
799         var morphs = new Array(3);
800         morphs[0] = dom.createAttrMorph(element5, 'onkeydown');
801         morphs[1] = dom.createMorphAt(element4, 3, 3);
802         morphs[2] = dom.createMorphAt(element4, 5, 5);
803         return morphs;
804       },
805       statements: [["attribute", "onkeydown", ["subexpr", "action", ["createTodo"], [], ["loc", [null, [4, 47], [4, 70]]]]], ["content", "outlet", ["loc", [null, [6, 4], [6, 14]]]], ["block", "if", [["subexpr", "gt", [["get", "model.length", ["loc", [null, [7, 14], [7, 26]]]], 0], [], ["loc", [null, [7, 10], [7, 29]]]]], [], 0, null, ["loc", [null, [7, 4], [19, 11]]]]],
806       locals: [],
807       templates: [child0]
808     };
809   })());
810 });
811 define("todomvc/templates/completed", ["exports"], function (exports) {
812   exports["default"] = Ember.HTMLBars.template((function () {
813     return {
814       meta: {
815         "fragmentReason": {
816           "name": "missing-wrapper",
817           "problems": ["wrong-type"]
818         },
819         "revision": "Ember@2.6.2",
820         "loc": {
821           "source": null,
822           "start": {
823             "line": 1,
824             "column": 0
825           },
826           "end": {
827             "line": 1,
828             "column": 25
829           }
830         },
831         "moduleName": "todomvc/templates/completed.hbs"
832       },
833       isEmpty: false,
834       arity: 0,
835       cachedFragment: null,
836       hasRendered: false,
837       buildFragment: function buildFragment(dom) {
838         var el0 = dom.createDocumentFragment();
839         var el1 = dom.createComment("");
840         dom.appendChild(el0, el1);
841         return el0;
842       },
843       buildRenderNodes: function buildRenderNodes(dom, fragment, contextualElement) {
844         var morphs = new Array(1);
845         morphs[0] = dom.createMorphAt(fragment, 0, 0, contextualElement);
846         dom.insertBoundary(fragment, 0);
847         dom.insertBoundary(fragment, null);
848         return morphs;
849       },
850       statements: [["inline", "todo-list", [], ["todos", ["subexpr", "@mut", [["get", "todos", ["loc", [null, [1, 18], [1, 23]]]]], [], []]], ["loc", [null, [1, 0], [1, 25]]]]],
851       locals: [],
852       templates: []
853     };
854   })());
855 });
856 define("todomvc/templates/components/todo-item", ["exports"], function (exports) {
857   exports["default"] = Ember.HTMLBars.template((function () {
858     return {
859       meta: {
860         "fragmentReason": {
861           "name": "missing-wrapper",
862           "problems": ["multiple-nodes"]
863         },
864         "revision": "Ember@2.6.2",
865         "loc": {
866           "source": null,
867           "start": {
868             "line": 1,
869             "column": 0
870           },
871           "end": {
872             "line": 6,
873             "column": 153
874           }
875         },
876         "moduleName": "todomvc/templates/components/todo-item.hbs"
877       },
878       isEmpty: false,
879       arity: 0,
880       cachedFragment: null,
881       hasRendered: false,
882       buildFragment: function buildFragment(dom) {
883         var el0 = dom.createDocumentFragment();
884         var el1 = dom.createElement("div");
885         dom.setAttribute(el1, "class", "view");
886         var el2 = dom.createTextNode("\n  ");
887         dom.appendChild(el1, el2);
888         var el2 = dom.createElement("input");
889         dom.setAttribute(el2, "type", "checkbox");
890         dom.setAttribute(el2, "class", "toggle");
891         dom.appendChild(el1, el2);
892         var el2 = dom.createTextNode("\n  ");
893         dom.appendChild(el1, el2);
894         var el2 = dom.createElement("label");
895         var el3 = dom.createComment("");
896         dom.appendChild(el2, el3);
897         dom.appendChild(el1, el2);
898         var el2 = dom.createTextNode("\n  ");
899         dom.appendChild(el1, el2);
900         var el2 = dom.createElement("button");
901         dom.setAttribute(el2, "class", "destroy");
902         dom.appendChild(el1, el2);
903         var el2 = dom.createTextNode("\n");
904         dom.appendChild(el1, el2);
905         dom.appendChild(el0, el1);
906         var el1 = dom.createTextNode("\n");
907         dom.appendChild(el0, el1);
908         var el1 = dom.createElement("input");
909         dom.setAttribute(el1, "type", "text");
910         dom.setAttribute(el1, "class", "edit");
911         dom.setAttribute(el1, "autofocus", "");
912         dom.appendChild(el0, el1);
913         return el0;
914       },
915       buildRenderNodes: function buildRenderNodes(dom, fragment, contextualElement) {
916         var element0 = dom.childAt(fragment, [0]);
917         var element1 = dom.childAt(element0, [1]);
918         if (this.cachedFragment) {
919           dom.repairClonedNode(element1, [], true);
920         }
921         var element2 = dom.childAt(element0, [3]);
922         var element3 = dom.childAt(element0, [5]);
923         var element4 = dom.childAt(fragment, [2]);
924         var morphs = new Array(8);
925         morphs[0] = dom.createAttrMorph(element1, 'checked');
926         morphs[1] = dom.createAttrMorph(element1, 'onchange');
927         morphs[2] = dom.createAttrMorph(element2, 'ondblclick');
928         morphs[3] = dom.createMorphAt(element2, 0, 0);
929         morphs[4] = dom.createAttrMorph(element3, 'onclick');
930         morphs[5] = dom.createAttrMorph(element4, 'value');
931         morphs[6] = dom.createAttrMorph(element4, 'onblur');
932         morphs[7] = dom.createAttrMorph(element4, 'onkeydown');
933         return morphs;
934       },
935       statements: [["attribute", "checked", ["get", "todo.completed", ["loc", [null, [2, 50], [2, 64]]]]], ["attribute", "onchange", ["subexpr", "action", ["toggleCompleted"], [], ["loc", [null, [2, 76], [2, 104]]]]], ["attribute", "ondblclick", ["subexpr", "action", ["startEditing"], [], ["loc", [null, [3, 20], [3, 45]]]]], ["content", "todo.title", ["loc", [null, [3, 46], [3, 60]]]], ["attribute", "onclick", ["subexpr", "action", ["removeTodo"], [], ["loc", [null, [4, 18], [4, 41]]]]], ["attribute", "value", ["get", "todo.title", ["loc", [null, [6, 40], [6, 50]]]]], ["attribute", "onblur", ["subexpr", "action", ["doneEditing"], ["value", "target.value"], ["loc", [null, [6, 60], [6, 105]]]]], ["attribute", "onkeydown", ["subexpr", "action", ["handleKeydown"], [], ["loc", [null, [6, 116], [6, 142]]]]]],
936       locals: [],
937       templates: []
938     };
939   })());
940 });
941 define("todomvc/templates/components/todo-list", ["exports"], function (exports) {
942   exports["default"] = Ember.HTMLBars.template((function () {
943     var child0 = (function () {
944       var child0 = (function () {
945         return {
946           meta: {
947             "fragmentReason": false,
948             "revision": "Ember@2.6.2",
949             "loc": {
950               "source": null,
951               "start": {
952                 "line": 2,
953                 "column": 2
954               },
955               "end": {
956                 "line": 4,
957                 "column": 2
958               }
959             },
960             "moduleName": "todomvc/templates/components/todo-list.hbs"
961           },
962           isEmpty: false,
963           arity: 0,
964           cachedFragment: null,
965           hasRendered: false,
966           buildFragment: function buildFragment(dom) {
967             var el0 = dom.createDocumentFragment();
968             var el1 = dom.createTextNode("    ");
969             dom.appendChild(el0, el1);
970             var el1 = dom.createElement("input");
971             dom.setAttribute(el1, "type", "checkbox");
972             dom.setAttribute(el1, "id", "toggle-all");
973             dom.appendChild(el0, el1);
974             var el1 = dom.createTextNode("\n");
975             dom.appendChild(el0, el1);
976             return el0;
977           },
978           buildRenderNodes: function buildRenderNodes(dom, fragment, contextualElement) {
979             var element0 = dom.childAt(fragment, [1]);
980             if (this.cachedFragment) {
981               dom.repairClonedNode(element0, [], true);
982             }
983             var morphs = new Array(2);
984             morphs[0] = dom.createAttrMorph(element0, 'checked');
985             morphs[1] = dom.createAttrMorph(element0, 'onchange');
986             return morphs;
987           },
988           statements: [["attribute", "checked", ["get", "allCompleted", ["loc", [null, [3, 53], [3, 65]]]]], ["attribute", "onchange", ["subexpr", "action", ["toggleAll"], [], ["loc", [null, [3, 77], [3, 99]]]]]],
989           locals: [],
990           templates: []
991         };
992       })();
993       var child1 = (function () {
994         return {
995           meta: {
996             "fragmentReason": false,
997             "revision": "Ember@2.6.2",
998             "loc": {
999               "source": null,
1000               "start": {
1001                 "line": 6,
1002                 "column": 4
1003               },
1004               "end": {
1005                 "line": 8,
1006                 "column": 4
1007               }
1008             },
1009             "moduleName": "todomvc/templates/components/todo-list.hbs"
1010           },
1011           isEmpty: false,
1012           arity: 1,
1013           cachedFragment: null,
1014           hasRendered: false,
1015           buildFragment: function buildFragment(dom) {
1016             var el0 = dom.createDocumentFragment();
1017             var el1 = dom.createTextNode("      ");
1018             dom.appendChild(el0, el1);
1019             var el1 = dom.createComment("");
1020             dom.appendChild(el0, el1);
1021             var el1 = dom.createTextNode("\n");
1022             dom.appendChild(el0, el1);
1023             return el0;
1024           },
1025           buildRenderNodes: function buildRenderNodes(dom, fragment, contextualElement) {
1026             var morphs = new Array(1);
1027             morphs[0] = dom.createMorphAt(fragment, 1, 1, contextualElement);
1028             return morphs;
1029           },
1030           statements: [["inline", "todo-item", [], ["todo", ["subexpr", "@mut", [["get", "todo", ["loc", [null, [7, 23], [7, 27]]]]], [], []], "onStartEdit", ["subexpr", "action", ["disableToggle"], [], ["loc", [null, [7, 40], [7, 64]]]], "onEndEdit", ["subexpr", "action", ["enableToggle"], [], ["loc", [null, [7, 75], [7, 98]]]]], ["loc", [null, [7, 6], [7, 100]]]]],
1031           locals: ["todo"],
1032           templates: []
1033         };
1034       })();
1035       return {
1036         meta: {
1037           "fragmentReason": {
1038             "name": "missing-wrapper",
1039             "problems": ["wrong-type", "multiple-nodes"]
1040           },
1041           "revision": "Ember@2.6.2",
1042           "loc": {
1043             "source": null,
1044             "start": {
1045               "line": 1,
1046               "column": 0
1047             },
1048             "end": {
1049               "line": 10,
1050               "column": 0
1051             }
1052           },
1053           "moduleName": "todomvc/templates/components/todo-list.hbs"
1054         },
1055         isEmpty: false,
1056         arity: 0,
1057         cachedFragment: null,
1058         hasRendered: false,
1059         buildFragment: function buildFragment(dom) {
1060           var el0 = dom.createDocumentFragment();
1061           var el1 = dom.createComment("");
1062           dom.appendChild(el0, el1);
1063           var el1 = dom.createTextNode("  ");
1064           dom.appendChild(el0, el1);
1065           var el1 = dom.createElement("ul");
1066           dom.setAttribute(el1, "id", "todo-list");
1067           dom.setAttribute(el1, "class", "todo-list");
1068           var el2 = dom.createTextNode("\n");
1069           dom.appendChild(el1, el2);
1070           var el2 = dom.createComment("");
1071           dom.appendChild(el1, el2);
1072           var el2 = dom.createTextNode("  ");
1073           dom.appendChild(el1, el2);
1074           dom.appendChild(el0, el1);
1075           var el1 = dom.createTextNode("\n");
1076           dom.appendChild(el0, el1);
1077           return el0;
1078         },
1079         buildRenderNodes: function buildRenderNodes(dom, fragment, contextualElement) {
1080           var morphs = new Array(2);
1081           morphs[0] = dom.createMorphAt(fragment, 0, 0, contextualElement);
1082           morphs[1] = dom.createMorphAt(dom.childAt(fragment, [2]), 1, 1);
1083           dom.insertBoundary(fragment, 0);
1084           return morphs;
1085         },
1086         statements: [["block", "if", [["get", "canToggle", ["loc", [null, [2, 8], [2, 17]]]]], [], 0, null, ["loc", [null, [2, 2], [4, 9]]]], ["block", "each", [["get", "todos", ["loc", [null, [6, 12], [6, 17]]]]], [], 1, null, ["loc", [null, [6, 4], [8, 13]]]]],
1087         locals: [],
1088         templates: [child0, child1]
1089       };
1090     })();
1091     return {
1092       meta: {
1093         "fragmentReason": {
1094           "name": "missing-wrapper",
1095           "problems": ["wrong-type"]
1096         },
1097         "revision": "Ember@2.6.2",
1098         "loc": {
1099           "source": null,
1100           "start": {
1101             "line": 1,
1102             "column": 0
1103           },
1104           "end": {
1105             "line": 11,
1106             "column": 0
1107           }
1108         },
1109         "moduleName": "todomvc/templates/components/todo-list.hbs"
1110       },
1111       isEmpty: false,
1112       arity: 0,
1113       cachedFragment: null,
1114       hasRendered: false,
1115       buildFragment: function buildFragment(dom) {
1116         var el0 = dom.createDocumentFragment();
1117         var el1 = dom.createComment("");
1118         dom.appendChild(el0, el1);
1119         return el0;
1120       },
1121       buildRenderNodes: function buildRenderNodes(dom, fragment, contextualElement) {
1122         var morphs = new Array(1);
1123         morphs[0] = dom.createMorphAt(fragment, 0, 0, contextualElement);
1124         dom.insertBoundary(fragment, 0);
1125         dom.insertBoundary(fragment, null);
1126         return morphs;
1127       },
1128       statements: [["block", "if", [["get", "todos.length", ["loc", [null, [1, 6], [1, 18]]]]], [], 0, null, ["loc", [null, [1, 0], [10, 7]]]]],
1129       locals: [],
1130       templates: [child0]
1131     };
1132   })());
1133 });
1134 define("todomvc/templates/index", ["exports"], function (exports) {
1135   exports["default"] = Ember.HTMLBars.template((function () {
1136     var child0 = (function () {
1137       return {
1138         meta: {
1139           "fragmentReason": {
1140             "name": "missing-wrapper",
1141             "problems": ["wrong-type"]
1142           },
1143           "revision": "Ember@2.6.2",
1144           "loc": {
1145             "source": null,
1146             "start": {
1147               "line": 1,
1148               "column": 0
1149             },
1150             "end": {
1151               "line": 3,
1152               "column": 0
1153             }
1154           },
1155           "moduleName": "todomvc/templates/index.hbs"
1156         },
1157         isEmpty: false,
1158         arity: 0,
1159         cachedFragment: null,
1160         hasRendered: false,
1161         buildFragment: function buildFragment(dom) {
1162           var el0 = dom.createDocumentFragment();
1163           var el1 = dom.createTextNode("  ");
1164           dom.appendChild(el0, el1);
1165           var el1 = dom.createComment("");
1166           dom.appendChild(el0, el1);
1167           var el1 = dom.createTextNode("\n");
1168           dom.appendChild(el0, el1);
1169           return el0;
1170         },
1171         buildRenderNodes: function buildRenderNodes(dom, fragment, contextualElement) {
1172           var morphs = new Array(1);
1173           morphs[0] = dom.createMorphAt(fragment, 1, 1, contextualElement);
1174           return morphs;
1175         },
1176         statements: [["inline", "todo-list", [], ["todos", ["subexpr", "@mut", [["get", "model", ["loc", [null, [2, 20], [2, 25]]]]], [], []]], ["loc", [null, [2, 2], [2, 27]]]]],
1177         locals: [],
1178         templates: []
1179       };
1180     })();
1181     return {
1182       meta: {
1183         "fragmentReason": {
1184           "name": "missing-wrapper",
1185           "problems": ["wrong-type"]
1186         },
1187         "revision": "Ember@2.6.2",
1188         "loc": {
1189           "source": null,
1190           "start": {
1191             "line": 1,
1192             "column": 0
1193           },
1194           "end": {
1195             "line": 4,
1196             "column": 0
1197           }
1198         },
1199         "moduleName": "todomvc/templates/index.hbs"
1200       },
1201       isEmpty: false,
1202       arity: 0,
1203       cachedFragment: null,
1204       hasRendered: false,
1205       buildFragment: function buildFragment(dom) {
1206         var el0 = dom.createDocumentFragment();
1207         var el1 = dom.createComment("");
1208         dom.appendChild(el0, el1);
1209         return el0;
1210       },
1211       buildRenderNodes: function buildRenderNodes(dom, fragment, contextualElement) {
1212         var morphs = new Array(1);
1213         morphs[0] = dom.createMorphAt(fragment, 0, 0, contextualElement);
1214         dom.insertBoundary(fragment, 0);
1215         dom.insertBoundary(fragment, null);
1216         return morphs;
1217       },
1218       statements: [["block", "if", [["get", "model.length", ["loc", [null, [1, 6], [1, 18]]]]], [], 0, null, ["loc", [null, [1, 0], [3, 7]]]]],
1219       locals: [],
1220       templates: [child0]
1221     };
1222   })());
1223 });
1224 /* jshint ignore:start */
1225
1226
1227
1228 /* jshint ignore:end */
1229
1230 /* jshint ignore:start */
1231
1232 define('todomvc/config/environment', ['ember'], function(Ember) {
1233   var prefix = 'todomvc';
1234 /* jshint ignore:start */
1235
1236 try {
1237   var metaName = prefix + '/config/environment';
1238   var rawConfig = Ember['default'].$('meta[name="' + metaName + '"]').attr('content');
1239   var config = JSON.parse(unescape(rawConfig));
1240
1241   return { 'default': config };
1242 }
1243 catch(err) {
1244   throw new Error('Could not read config from meta tag with name "' + metaName + '".');
1245 }
1246
1247 /* jshint ignore:end */
1248
1249 });
1250
1251 /* jshint ignore:end */
1252
1253 /* jshint ignore:start */
1254
1255 if (!runningTests) {
1256   require("todomvc/app")["default"].create({"name":"todomvc","version":"0.0.0+"});
1257 }
1258
1259 /* jshint ignore:end */
1260 //# sourceMappingURL=todomvc.map