ember-source 1.10.0.beta.4 → 1.10.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of ember-source might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fad2c197b0678e6e8faf6ab8765f10c341c2a3d9
4
- data.tar.gz: ea5c65c55f105962b9a485bc02e3b3071f73f50e
3
+ metadata.gz: b7b3c948c4a161b9e0a7f1f0f9bf038c1b840161
4
+ data.tar.gz: 548e7087d1d51fb4d1dcd42cf57a1db271931ab7
5
5
  SHA512:
6
- metadata.gz: d65c44e6bedf7a4b9a9375e5087bf141abfb3b3bcef6c57d847d3742845466d16cef638f9d755ccb1c3e7aec3da0095ee5c8896df0517d542f86f7b5c16f21f9
7
- data.tar.gz: b6cbae5fcf4fa3000191387c02a3a4d7465e492a0d737018cc7028e059581dcfc7bd0a8171e3939915841700ebdaf97563ca0bd24ef9edf2d0d8b361a9b6af1a
6
+ metadata.gz: 43d4e42fb0f7b2bdd7162c9ef06c08c57cad56a06eb5ad2aecc87c30ec203f10246d61df34182d4b0d754eea0c1f86147268722875e17c45d816854c78f407b7
7
+ data.tar.gz: 64ff1f9d5e0e70f12fa3c944a7205d07328b55dd96e151ca505b5163ed6864585128dd1c6d0232d54a2d3da5763e03ec653b025e4544d518768d909639366dcc
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.10.0-beta.4
1
+ 1.10.0
@@ -5,7 +5,7 @@
5
5
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
6
6
  * @license Licensed under MIT license
7
7
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
8
- * @version 1.10.0-beta.4
8
+ * @version 1.10.0
9
9
  */
10
10
 
11
11
  (function() {
@@ -4852,7 +4852,7 @@ define("ember-metal/core",
4852
4852
 
4853
4853
  @class Ember
4854
4854
  @static
4855
- @version 1.10.0-beta.4
4855
+ @version 1.10.0
4856
4856
  */
4857
4857
 
4858
4858
  if ('undefined' === typeof Ember) {
@@ -4879,10 +4879,10 @@ define("ember-metal/core",
4879
4879
  /**
4880
4880
  @property VERSION
4881
4881
  @type String
4882
- @default '1.10.0-beta.4'
4882
+ @default '1.10.0'
4883
4883
  @static
4884
4884
  */
4885
- Ember.VERSION = '1.10.0-beta.4';
4885
+ Ember.VERSION = '1.10.0';
4886
4886
 
4887
4887
  /**
4888
4888
  Standard environmental variables. You can define these in a global `EmberENV`
@@ -4921,7 +4921,7 @@ define("ember-metal/core",
4921
4921
  /**
4922
4922
  Hash of enabled Canary features. Add to this before creating your application.
4923
4923
 
4924
- You can also define `ENV.FEATURES` if you need to enable features flagged at runtime.
4924
+ You can also define `EmberENV.FEATURES` if you need to enable features flagged at runtime.
4925
4925
 
4926
4926
  @class FEATURES
4927
4927
  @namespace Ember
@@ -4937,8 +4937,8 @@ define("ember-metal/core",
4937
4937
 
4938
4938
  You can define the following configuration options:
4939
4939
 
4940
- * `ENV.ENABLE_ALL_FEATURES` - force all features to be enabled.
4941
- * `ENV.ENABLE_OPTIONAL_FEATURES` - enable any features that have not been explicitly
4940
+ * `EmberENV.ENABLE_ALL_FEATURES` - force all features to be enabled.
4941
+ * `EmberENV.ENABLE_OPTIONAL_FEATURES` - enable any features that have not been explicitly
4942
4942
  enabled/disabled.
4943
4943
 
4944
4944
  @method isEnabled
@@ -4974,7 +4974,7 @@ define("ember-metal/core",
4974
4974
 
4975
4975
  In general we recommend leaving this option set to true since it rarely
4976
4976
  conflicts with other code. If you need to turn it off however, you can
4977
- define an `ENV.EXTEND_PROTOTYPES` config to disable it.
4977
+ define an `EmberENV.EXTEND_PROTOTYPES` config to disable it.
4978
4978
 
4979
4979
  @property EXTEND_PROTOTYPES
4980
4980
  @type Boolean
@@ -6476,7 +6476,7 @@ define("ember-metal/is_present",
6476
6476
  @for Ember
6477
6477
  @param {Object} obj Value to test
6478
6478
  @return {Boolean}
6479
- @since 1.7.0
6479
+ @since 1.8.0
6480
6480
  */
6481
6481
  isPresent = function isPresent(obj) {
6482
6482
  return !isBlank(obj);
@@ -6917,6 +6917,7 @@ define("ember-metal/map",
6917
6917
  },
6918
6918
 
6919
6919
  /**
6920
+ @since 1.8.0
6920
6921
  @method delete
6921
6922
  @param obj
6922
6923
  @param _guid (optional and for internal use only)
@@ -7064,6 +7065,7 @@ define("ember-metal/map",
7064
7065
  /**
7065
7066
  This property will change as the number of objects in the map changes.
7066
7067
 
7068
+ @since 1.8.0
7067
7069
  @property size
7068
7070
  @type number
7069
7071
  @default 0
@@ -7129,6 +7131,7 @@ define("ember-metal/map",
7129
7131
  /**
7130
7132
  Removes a value from the map for an associated key.
7131
7133
 
7134
+ @since 1.8.0
7132
7135
  @method delete
7133
7136
  @param {*} key
7134
7137
  @return {Boolean} true if an item was removed, false otherwise
@@ -8540,12 +8543,15 @@ define("ember-metal/platform",
8540
8543
  __exports__.canDefineNonEnumerableProperties = canDefineNonEnumerableProperties;
8541
8544
  });
8542
8545
  define("ember-metal/platform/create",
8543
- ["exports"],
8544
- function(__exports__) {
8546
+ ["ember-metal/platform/define_properties","exports"],
8547
+ function(__dependency1__, __exports__) {
8545
8548
  // Remove "use strict"; from transpiled module until
8546
8549
  // https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
8547
8550
  //
8548
8551
  // REMOVE_USE_STRICT: true
8552
+ //
8553
+
8554
+ var defineProperties = __dependency1__["default"];
8549
8555
 
8550
8556
  /**
8551
8557
  @class platform
@@ -8556,6 +8562,7 @@ define("ember-metal/platform/create",
8556
8562
  /**
8557
8563
  Identical to `Object.create()`. Implements if not available natively.
8558
8564
 
8565
+ @since 1.8.0
8559
8566
  @method create
8560
8567
  @for Ember
8561
8568
  */
@@ -8630,7 +8637,7 @@ define("ember-metal/platform/create",
8630
8637
  }
8631
8638
 
8632
8639
  if (properties !== undefined) {
8633
- Object.defineProperties(object, properties);
8640
+ defineProperties(object, properties);
8634
8641
  }
8635
8642
 
8636
8643
  return object;
@@ -9730,8 +9737,7 @@ define("ember-metal/run_loop",
9730
9737
  May be a function or a string. If you pass a string
9731
9738
  then it will be looked up on the passed target.
9732
9739
  @param {Object} [args*] Any additional arguments you wish to pass to the method.
9733
- @return {Object} return value from invoking the passed function. Please note,
9734
- when called within an existing loop, no return value is possible.
9740
+ @return {Function} returns a new function that will always have a particular context
9735
9741
  @since 1.4.0
9736
9742
  */
9737
9743
  run.bind = function(target, method /* args */) {
@@ -10189,7 +10195,7 @@ define("ember-metal/run_loop",
10189
10195
  function checkAutoRun() {
10190
10196
  if (!run.currentRunLoop) {
10191
10197
  Ember.assert("You have turned on testing mode, which disabled the run-loop's autorun." +
10192
- " You will need to wrap any code with asynchronous side-effects in an run", !Ember.testing);
10198
+ " You will need to wrap any code with asynchronous side-effects in a run", !Ember.testing);
10193
10199
  }
10194
10200
  }
10195
10201
 
@@ -14219,22 +14225,18 @@ define("ember-runtime/controllers/array_controller",
14219
14225
  __exports__["default"] = ArrayProxy.extend(ControllerMixin, SortableMixin, {
14220
14226
 
14221
14227
  /**
14222
- The controller used to wrap items, if any. If the value is a string, it will
14223
- be used to lookup the container for the controller. As an alternative, you
14224
- can also provide a controller class as the value.
14228
+ A string containing the controller name used to wrap items.
14225
14229
 
14226
14230
  For example:
14227
14231
 
14228
14232
  ```javascript
14229
14233
  App.MyArrayController = Ember.ArrayController.extend({
14230
- itemController: Ember.ObjectController.extend({
14231
- //Item Controller Implementation
14232
- })
14234
+ itemController: 'myItem' // use App.MyItemController
14233
14235
  });
14234
14236
  ```
14235
14237
 
14236
14238
  @property itemController
14237
- @type String | Ember.Controller
14239
+ @type String
14238
14240
  @default null
14239
14241
  */
14240
14242
  itemController: null,
@@ -14902,6 +14904,9 @@ define("ember-runtime/ext/rsvp",
14902
14904
  if (e && e.errorThrown) {
14903
14905
  // jqXHR provides this
14904
14906
  error = e.errorThrown;
14907
+ if (typeof error === 'string') {
14908
+ error = new Error(error);
14909
+ }
14905
14910
  error.__reason_with_error_thrown__ = e;
14906
14911
  } else {
14907
14912
  error = e;
@@ -20573,7 +20578,8 @@ define("ember-runtime/system/core_object",
20573
20578
  ```
20574
20579
 
20575
20580
  This will return the original hash that was passed to `meta()`.
20576
-
20581
+
20582
+ @static
20577
20583
  @method metaForProperty
20578
20584
  @param key {String} property name
20579
20585
  */
@@ -20608,7 +20614,8 @@ define("ember-runtime/system/core_object",
20608
20614
  /**
20609
20615
  Iterate over each computed property for the class, passing its name
20610
20616
  and any associated metadata (see `metaForProperty`) to the callback.
20611
-
20617
+
20618
+ @static
20612
20619
  @method eachComputedProperty
20613
20620
  @param {Function} callback
20614
20621
  @param {Object} binding
@@ -21278,7 +21285,7 @@ define("ember-runtime/system/native_array",
21278
21285
  // because they are so common.
21279
21286
 
21280
21287
  /**
21281
- The NativeArray mixin contains the properties needed to to make the native
21288
+ The NativeArray mixin contains the properties needed to make the native
21282
21289
  Array support Ember.MutableArray and all of its dependent APIs. Unless you
21283
21290
  have `Ember.EXTEND_PROTOTYPES` or `Ember.EXTEND_PROTOTYPES.Array` set to
21284
21291
  false, this will be applied automatically. Otherwise you can apply the mixin
@@ -5,7 +5,7 @@
5
5
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
6
6
  * @license Licensed under MIT license
7
7
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
8
- * @version 1.10.0-beta.4
8
+ * @version 1.10.0
9
9
  */
10
10
 
11
11
  (function() {
@@ -114,7 +114,7 @@ define("ember-metal/core",
114
114
 
115
115
  @class Ember
116
116
  @static
117
- @version 1.10.0-beta.4
117
+ @version 1.10.0
118
118
  */
119
119
 
120
120
  if ('undefined' === typeof Ember) {
@@ -141,10 +141,10 @@ define("ember-metal/core",
141
141
  /**
142
142
  @property VERSION
143
143
  @type String
144
- @default '1.10.0-beta.4'
144
+ @default '1.10.0'
145
145
  @static
146
146
  */
147
- Ember.VERSION = '1.10.0-beta.4';
147
+ Ember.VERSION = '1.10.0';
148
148
 
149
149
  /**
150
150
  Standard environmental variables. You can define these in a global `EmberENV`
@@ -183,7 +183,7 @@ define("ember-metal/core",
183
183
  /**
184
184
  Hash of enabled Canary features. Add to this before creating your application.
185
185
 
186
- You can also define `ENV.FEATURES` if you need to enable features flagged at runtime.
186
+ You can also define `EmberENV.FEATURES` if you need to enable features flagged at runtime.
187
187
 
188
188
  @class FEATURES
189
189
  @namespace Ember
@@ -199,8 +199,8 @@ define("ember-metal/core",
199
199
 
200
200
  You can define the following configuration options:
201
201
 
202
- * `ENV.ENABLE_ALL_FEATURES` - force all features to be enabled.
203
- * `ENV.ENABLE_OPTIONAL_FEATURES` - enable any features that have not been explicitly
202
+ * `EmberENV.ENABLE_ALL_FEATURES` - force all features to be enabled.
203
+ * `EmberENV.ENABLE_OPTIONAL_FEATURES` - enable any features that have not been explicitly
204
204
  enabled/disabled.
205
205
 
206
206
  @method isEnabled
@@ -236,7 +236,7 @@ define("ember-metal/core",
236
236
 
237
237
  In general we recommend leaving this option set to true since it rarely
238
238
  conflicts with other code. If you need to turn it off however, you can
239
- define an `ENV.EXTEND_PROTOTYPES` config to disable it.
239
+ define an `EmberENV.EXTEND_PROTOTYPES` config to disable it.
240
240
 
241
241
  @property EXTEND_PROTOTYPES
242
242
  @type Boolean
@@ -302,8 +302,8 @@ define("ember-metal/core",
302
302
  __exports__["default"] = Ember;
303
303
  });
304
304
  define("ember-template-compiler",
305
- ["ember-metal/core","ember-template-compiler/system/precompile","ember-template-compiler/system/compile","ember-template-compiler/system/template","ember-template-compiler/plugins","ember-template-compiler/plugins/transform-each-in-to-hash","ember-template-compiler/plugins/transform-with-as-to-hash","exports"],
306
- function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __exports__) {
305
+ ["ember-metal/core","ember-template-compiler/system/precompile","ember-template-compiler/system/compile","ember-template-compiler/system/template","ember-template-compiler/plugins","ember-template-compiler/plugins/transform-each-in-to-hash","ember-template-compiler/plugins/transform-with-as-to-hash","ember-template-compiler/compat","exports"],
306
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __exports__) {
307
307
  "use strict";
308
308
  var _Ember = __dependency1__["default"];
309
309
  var precompile = __dependency2__["default"];
@@ -314,6 +314,8 @@ define("ember-template-compiler",
314
314
  var TransformEachInToHash = __dependency6__["default"];
315
315
  var TransformWithAsToHash = __dependency7__["default"];
316
316
 
317
+ // used for adding Ember.Handlebars.compile for backwards compat
318
+
317
319
  registerPlugin('ast', TransformWithAsToHash);
318
320
  registerPlugin('ast', TransformEachInToHash);
319
321
 
@@ -323,6 +325,50 @@ define("ember-template-compiler",
323
325
  __exports__.template = template;
324
326
  __exports__.registerPlugin = registerPlugin;
325
327
  });
328
+ define("ember-template-compiler/compat",
329
+ ["ember-metal/core","ember-template-compiler/compat/precompile","ember-template-compiler/system/compile","ember-template-compiler/system/template"],
330
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__) {
331
+ "use strict";
332
+ var Ember = __dependency1__["default"];
333
+ var precompile = __dependency2__["default"];
334
+ var compile = __dependency3__["default"];
335
+ var template = __dependency4__["default"];
336
+
337
+ var EmberHandlebars = Ember.Handlebars = Ember.Handlebars || {};
338
+
339
+ EmberHandlebars.precompile = precompile;
340
+ EmberHandlebars.compile = compile;
341
+ EmberHandlebars.template = template;
342
+ });
343
+ define("ember-template-compiler/compat/precompile",
344
+ ["exports"],
345
+ function(__exports__) {
346
+ "use strict";
347
+ /**
348
+ @module ember
349
+ @submodule ember-template-compiler
350
+ */
351
+
352
+ var compile, compileSpec;
353
+
354
+ __exports__["default"] = function(string) {
355
+ if ((!compile || !compileSpec) && Ember.__loader.registry['htmlbars-compiler/compiler']) {
356
+ var Compiler = requireModule('htmlbars-compiler/compiler');
357
+
358
+ compile = Compiler.compile;
359
+ compileSpec = Compiler.compileSpec;
360
+ }
361
+
362
+ if (!compile || !compileSpec) {
363
+ throw new Error('Cannot call `precompile` without the template compiler loaded. Please load `ember-template-compiler.js` prior to calling `precompile`.');
364
+ }
365
+
366
+ var asObject = arguments[1] === undefined ? true : arguments[1];
367
+ var compileFunc = asObject ? compile : compileSpec;
368
+
369
+ return compileFunc(string);
370
+ }
371
+ });
326
372
  define("ember-template-compiler/plugins",
327
373
  ["exports"],
328
374
  function(__exports__) {
@@ -502,17 +548,17 @@ define("ember-template-compiler/plugins/transform-with-as-to-hash",
502
548
  __exports__["default"] = TransformWithAsToHash;
503
549
  });
504
550
  define("ember-template-compiler/system/compile",
505
- ["htmlbars-compiler/compiler","ember-template-compiler/system/compile_options","ember-template-compiler/system/template","exports"],
506
- function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
551
+ ["ember-template-compiler/system/compile_options","ember-template-compiler/system/template","exports"],
552
+ function(__dependency1__, __dependency2__, __exports__) {
507
553
  "use strict";
508
554
  /**
509
555
  @module ember
510
556
  @submodule ember-template-compiler
511
557
  */
512
558
 
513
- var compile = __dependency1__.compile;
514
- var compileOptions = __dependency2__["default"];
515
- var template = __dependency3__["default"];
559
+ var compile;
560
+ var compileOptions = __dependency1__["default"];
561
+ var template = __dependency2__["default"];
516
562
 
517
563
  /**
518
564
  Uses HTMLBars `compile` function to process a string into a compiled template.
@@ -524,6 +570,14 @@ define("ember-template-compiler/system/compile",
524
570
  @param {String} templateString This is the string to be compiled by HTMLBars.
525
571
  */
526
572
  __exports__["default"] = function(templateString) {
573
+ if (!compile && Ember.__loader.registry['htmlbars-compiler/compiler']) {
574
+ compile = requireModule('htmlbars-compiler/compiler').compile;
575
+ }
576
+
577
+ if (!compile) {
578
+ throw new Error('Cannot call `compile` without the template compiler loaded. Please load `ember-template-compiler.js` prior to calling `compile`.');
579
+ }
580
+
527
581
  var templateSpec = compile(templateString, compileOptions());
528
582
 
529
583
  return template(templateSpec);
@@ -556,16 +610,16 @@ define("ember-template-compiler/system/compile_options",
556
610
  }
557
611
  });
558
612
  define("ember-template-compiler/system/precompile",
559
- ["htmlbars-compiler/compiler","ember-template-compiler/system/compile_options","exports"],
560
- function(__dependency1__, __dependency2__, __exports__) {
613
+ ["ember-template-compiler/system/compile_options","exports"],
614
+ function(__dependency1__, __exports__) {
561
615
  "use strict";
562
616
  /**
563
617
  @module ember
564
618
  @submodule ember-template-compiler
565
619
  */
566
620
 
567
- var compileSpec = __dependency1__.compileSpec;
568
- var compileOptions = __dependency2__["default"];
621
+ var compileOptions = __dependency1__["default"];
622
+ var compileSpec;
569
623
 
570
624
  /**
571
625
  Uses HTMLBars `compile` function to process a string into a compiled template string.
@@ -578,6 +632,14 @@ define("ember-template-compiler/system/precompile",
578
632
  @param {String} templateString This is the string to be compiled by HTMLBars.
579
633
  */
580
634
  __exports__["default"] = function(templateString) {
635
+ if (!compileSpec && Ember.__loader.registry['htmlbars-compiler/compiler']) {
636
+ compileSpec = requireModule('htmlbars-compiler/compiler').compileSpec;
637
+ }
638
+
639
+ if (!compileSpec) {
640
+ throw new Error('Cannot call `compileSpec` without the template compiler loaded. Please load `ember-template-compiler.js` prior to calling `compileSpec`.');
641
+ }
642
+
581
643
  return compileSpec(templateString, compileOptions());
582
644
  }
583
645
  });
@@ -788,13 +850,13 @@ define("htmlbars-compiler/fragment-javascript-compiler",
788
850
  };
789
851
  });
790
852
  define("htmlbars-compiler/fragment-opcode-compiler",
791
- ["./template-visitor","./utils","../htmlbars-util/array-utils","exports"],
792
- function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
853
+ ["./template-visitor","./utils","../htmlbars-util","../htmlbars-util/array-utils","exports"],
854
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
793
855
  "use strict";
794
856
  var TemplateVisitor = __dependency1__["default"];
795
857
  var processOpcodes = __dependency2__.processOpcodes;
796
- var getNamespace = __dependency2__.getNamespace;
797
- var forEach = __dependency3__.forEach;
858
+ var getAttrNamespace = __dependency3__.getAttrNamespace;
859
+ var forEach = __dependency4__.forEach;
798
860
 
799
861
  function FragmentOpcodeCompiler() {
800
862
  this.opcodes = [];
@@ -854,7 +916,7 @@ define("htmlbars-compiler/fragment-opcode-compiler",
854
916
  FragmentOpcodeCompiler.prototype.attribute = function(attr) {
855
917
  if (attr.value.type === 'TextNode') {
856
918
 
857
- var namespace = getNamespace(attr.name) || null;
919
+ var namespace = getAttrNamespace(attr.name);
858
920
 
859
921
  this.opcode('setAttribute', [attr.name, attr.value.chars, namespace]);
860
922
  }
@@ -1126,14 +1188,14 @@ define("htmlbars-compiler/hydration-javascript-compiler",
1126
1188
  };
1127
1189
  });
1128
1190
  define("htmlbars-compiler/hydration-opcode-compiler",
1129
- ["./template-visitor","./utils","../htmlbars-util/array-utils","../htmlbars-syntax/utils","exports"],
1130
- function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
1191
+ ["./template-visitor","./utils","../htmlbars-util","../htmlbars-util/array-utils","../htmlbars-syntax/utils","exports"],
1192
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __exports__) {
1131
1193
  "use strict";
1132
1194
  var TemplateVisitor = __dependency1__["default"];
1133
1195
  var processOpcodes = __dependency2__.processOpcodes;
1134
- var getNamespace = __dependency2__.getNamespace;
1135
- var forEach = __dependency3__.forEach;
1136
- var isHelper = __dependency4__.isHelper;
1196
+ var getAttrNamespace = __dependency3__.getAttrNamespace;
1197
+ var forEach = __dependency4__.forEach;
1198
+ var isHelper = __dependency5__.isHelper;
1137
1199
 
1138
1200
  function unwrapMustache(mustache) {
1139
1201
  if (isHelper(mustache.sexpr)) {
@@ -1305,7 +1367,7 @@ define("htmlbars-compiler/hydration-opcode-compiler",
1305
1367
  HydrationOpcodeCompiler.prototype.attribute = function(attr) {
1306
1368
  var value = attr.value;
1307
1369
  var escaped = true;
1308
- var namespace = getNamespace(attr.name) || null;
1370
+ var namespace = getAttrNamespace(attr.name);
1309
1371
 
1310
1372
  // TODO: Introduce context specific AST nodes to avoid switching here.
1311
1373
  if (value.type === 'TextNode') {
@@ -1545,16 +1607,20 @@ define("htmlbars-compiler/template-compiler",
1545
1607
  this.getHydrationHooks(indent + ' ', this.hydrationCompiler.hooks) +
1546
1608
  indent+' dom.detectNamespace(contextualElement);\n' +
1547
1609
  indent+' var fragment;\n' +
1548
- indent+' if (this.cachedFragment === null) {\n' +
1549
- indent+' fragment = this.build(dom);\n' +
1550
- indent+' if (this.hasRendered) {\n' +
1551
- indent+' this.cachedFragment = fragment;\n' +
1552
- indent+' } else {\n' +
1553
- indent+' this.hasRendered = true;\n' +
1610
+ indent+' if (env.useFragmentCache && dom.canClone) {\n' +
1611
+ indent+' if (this.cachedFragment === null) {\n' +
1612
+ indent+' fragment = this.build(dom);\n' +
1613
+ indent+' if (this.hasRendered) {\n' +
1614
+ indent+' this.cachedFragment = fragment;\n' +
1615
+ indent+' } else {\n' +
1616
+ indent+' this.hasRendered = true;\n' +
1617
+ indent+' }\n' +
1554
1618
  indent+' }\n' +
1555
- indent+' }\n' +
1556
- indent+' if (this.cachedFragment) {\n' +
1557
- indent+' fragment = dom.cloneNode(this.cachedFragment, true);\n' +
1619
+ indent+' if (this.cachedFragment) {\n' +
1620
+ indent+' fragment = dom.cloneNode(this.cachedFragment, true);\n' +
1621
+ indent+' }\n' +
1622
+ indent+' } else {\n' +
1623
+ indent+' fragment = this.build(dom);\n' +
1558
1624
  indent+' }\n' +
1559
1625
  hydrationProgram +
1560
1626
  indent+' return fragment;\n' +
@@ -1862,23 +1928,7 @@ define("htmlbars-compiler/utils",
1862
1928
  }
1863
1929
  }
1864
1930
 
1865
- __exports__.processOpcodes = processOpcodes;// ref http://dev.w3.org/html5/spec-LC/namespaces.html
1866
- var defaultNamespaces = {
1867
- html: 'http://www.w3.org/1999/xhtml',
1868
- mathml: 'http://www.w3.org/1998/Math/MathML',
1869
- svg: 'http://www.w3.org/2000/svg',
1870
- xlink: 'http://www.w3.org/1999/xlink',
1871
- xml: 'http://www.w3.org/XML/1998/namespace'
1872
- };
1873
-
1874
- function getNamespace(attrName) {
1875
- var parts = attrName.split(':');
1876
- if (parts.length > 1) {
1877
- return defaultNamespaces[parts[0]];
1878
- }
1879
- }
1880
-
1881
- __exports__.getNamespace = getNamespace;
1931
+ __exports__.processOpcodes = processOpcodes;
1882
1932
  });
1883
1933
  define("htmlbars-syntax",
1884
1934
  ["./htmlbars-syntax/walker","./htmlbars-syntax/builders","./htmlbars-syntax/parser","exports"],
@@ -3332,7 +3382,7 @@ define("htmlbars-syntax/node-handlers",
3332
3382
  // Ensure that that the element stack is balanced properly.
3333
3383
  var poppedNode = this.elementStack.pop();
3334
3384
  if (poppedNode !== node) {
3335
- throw new Error("Unclosed element: " + poppedNode.tag);
3385
+ throw new Error("Unclosed element `" + poppedNode.tag + "` (on line " + poppedNode.loc.start.line + ").");
3336
3386
  }
3337
3387
 
3338
3388
  return node;
@@ -3482,6 +3532,20 @@ define("htmlbars-syntax/parser",
3482
3532
  // But this version of the transpiler does not support it properly
3483
3533
  var syntax = __dependency7__;
3484
3534
 
3535
+ var splitLines;
3536
+ // IE8 throws away blank pieces when splitting strings with a regex
3537
+ // So we split using a string instead as appropriate
3538
+ if ("foo\n\nbar".split(/\n/).length === 2) {
3539
+ splitLines = function(str) {
3540
+ var clean = str.replace(/\r\n?/g, '\n');
3541
+ return clean.split('\n');
3542
+ };
3543
+ } else {
3544
+ splitLines = function(str) {
3545
+ return str.split(/(?:\r\n?|\n)/g);
3546
+ };
3547
+ }
3548
+
3485
3549
  function preprocess(html, options) {
3486
3550
  var ast = (typeof html === 'object') ? html : parse(html);
3487
3551
  var combined = new HTMLProcessor(html, options).acceptNode(ast);
@@ -3507,7 +3571,7 @@ define("htmlbars-syntax/parser",
3507
3571
  this.tokenHandlers = tokenHandlers;
3508
3572
 
3509
3573
  if (typeof source === 'string') {
3510
- this.source = source.split(/(?:\r\n?|\n)/g);
3574
+ this.source = splitLines(source);
3511
3575
  }
3512
3576
  }
3513
3577
 
@@ -3810,11 +3874,11 @@ define("htmlbars-syntax/tokenizer",
3810
3874
  __exports__.unwrapMustache = unwrapMustache;__exports__.Tokenizer = Tokenizer;
3811
3875
  });
3812
3876
  define("htmlbars-syntax/utils",
3813
- ["./builders","exports"],
3814
- function(__dependency1__, __exports__) {
3877
+ ["./builders","../htmlbars-util/array-utils","exports"],
3878
+ function(__dependency1__, __dependency2__, __exports__) {
3815
3879
  "use strict";
3816
3880
  var buildText = __dependency1__.buildText;
3817
-
3881
+ var indexOfArray = __dependency2__.indexOfArray;
3818
3882
  // Regex to validate the identifier for block parameters.
3819
3883
  // Based on the ID validation regex in Handlebars.
3820
3884
 
@@ -3832,7 +3896,7 @@ define("htmlbars-syntax/utils",
3832
3896
  attrNames.push(element.attributes[i].name);
3833
3897
  }
3834
3898
 
3835
- var asIndex = attrNames.indexOf('as');
3899
+ var asIndex = indexOfArray(attrNames, 'as');
3836
3900
 
3837
3901
  if (asIndex !== -1 && l > asIndex && attrNames[asIndex + 1].charAt(0) === '|') {
3838
3902
  // Some basic validation, since we're doing the parsing ourselves
@@ -4007,6 +4071,9 @@ define("htmlbars-test-helpers",
4007
4071
 
4008
4072
  // detect side-effects of cloning svg elements in IE9-11
4009
4073
  var ieSVGInnerHTML = (function () {
4074
+ if (!document.createElementNS) {
4075
+ return false;
4076
+ }
4010
4077
  var div = document.createElement('div');
4011
4078
  var node = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
4012
4079
  div.appendChild(node);
@@ -4019,20 +4086,31 @@ define("htmlbars-test-helpers",
4019
4086
  // drop newlines in IE8
4020
4087
  actualHTML = actualHTML.replace(/\r\n/gm, '');
4021
4088
  // downcase ALLCAPS tags in IE8
4022
- actualHTML = actualHTML.replace(/<\/?[A-Z]+/gi, function(tag){
4089
+ actualHTML = actualHTML.replace(/<\/?[A-Z\-]+/gi, function(tag){
4023
4090
  return tag.toLowerCase();
4024
4091
  });
4025
4092
  // quote ids in IE8
4026
4093
  actualHTML = actualHTML.replace(/id=([^ >]+)/gi, function(match, id){
4027
4094
  return 'id="'+id+'"';
4028
4095
  });
4096
+ // IE8 adds ':' to some tags
4097
+ // <keygen> becomes <:keygen>
4098
+ actualHTML = actualHTML.replace(/<(\/?):([^ >]+)/gi, function(match, slash, tag){
4099
+ return '<'+slash+tag;
4100
+ });
4101
+
4102
+ // Normalize the style attribute
4103
+ actualHTML = actualHTML.replace(/style="(.+?)"/gi, function(match, val){
4104
+ return 'style="'+val.toLowerCase()+';"';
4105
+ });
4106
+
4029
4107
  }
4030
4108
  if (ieSVGInnerHTML) {
4031
4109
  // Replace `<svg xmlns="http://www.w3.org/2000/svg" height="50%" />` with `<svg height="50%"></svg>`, etc.
4032
4110
  // drop namespace attribute
4033
4111
  actualHTML = actualHTML.replace(/ xmlns="[^"]+"/, '');
4034
4112
  // replace self-closing elements
4035
- actualHTML = actualHTML.replace(/<([A-Z]+) [^\/>]*\/>/gi, function(tag, tagName) {
4113
+ actualHTML = actualHTML.replace(/<([^ >]+) [^\/>]*\/>/gi, function(tag, tagName) {
4036
4114
  return tag.slice(0, tag.length - 3) + '></' + tagName + '>';
4037
4115
  });
4038
4116
  }
@@ -4048,17 +4126,41 @@ define("htmlbars-test-helpers",
4048
4126
  equal(element.outerHTML, checkedInputString);
4049
4127
  }
4050
4128
 
4051
- __exports__.isCheckedInputHTML = isCheckedInputHTML;
4129
+ __exports__.isCheckedInputHTML = isCheckedInputHTML;// check which property has the node's text content
4130
+ var textProperty = document.createElement('div').textContent === undefined ? 'innerText' : 'textContent';
4131
+ function getTextContent(el) {
4132
+ // textNode
4133
+ if (el.nodeType === 3) {
4134
+ return el.nodeValue;
4135
+ } else {
4136
+ return el[textProperty];
4137
+ }
4138
+ }
4139
+
4140
+ __exports__.getTextContent = getTextContent;// IE8 does not have Object.create, so use a polyfill if needed.
4141
+ // Polyfill based on Mozilla's (MDN)
4142
+ function createObject(obj) {
4143
+ if (typeof Object.create === 'function') {
4144
+ return Object.create(obj);
4145
+ } else {
4146
+ var Temp = function() {};
4147
+ Temp.prototype = obj;
4148
+ return new Temp();
4149
+ }
4150
+ }
4151
+ __exports__.createObject = createObject;
4052
4152
  });
4053
4153
  define("htmlbars-util",
4054
- ["./htmlbars-util/safe-string","./htmlbars-util/handlebars/utils","exports"],
4055
- function(__dependency1__, __dependency2__, __exports__) {
4154
+ ["./htmlbars-util/safe-string","./htmlbars-util/handlebars/utils","./htmlbars-util/namespaces","exports"],
4155
+ function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
4056
4156
  "use strict";
4057
4157
  var SafeString = __dependency1__["default"];
4058
4158
  var escapeExpression = __dependency2__.escapeExpression;
4159
+ var getAttrNamespace = __dependency3__.getAttrNamespace;
4059
4160
 
4060
4161
  __exports__.SafeString = SafeString;
4061
4162
  __exports__.escapeExpression = escapeExpression;
4163
+ __exports__.getAttrNamespace = getAttrNamespace;
4062
4164
  });
4063
4165
  define("htmlbars-util/array-utils",
4064
4166
  ["exports"],
@@ -4088,7 +4190,29 @@ define("htmlbars-util/array-utils",
4088
4190
  return output;
4089
4191
  }
4090
4192
 
4091
- __exports__.map = map;
4193
+ __exports__.map = map;var getIdx;
4194
+ if (Array.prototype.indexOf) {
4195
+ getIdx = function(array, obj, from){
4196
+ return array.indexOf(obj, from);
4197
+ };
4198
+ } else {
4199
+ getIdx = function(array, obj, from) {
4200
+ if (from === undefined || from === null) {
4201
+ from = 0;
4202
+ } else if (from < 0) {
4203
+ from = Math.max(0, array.length + from);
4204
+ }
4205
+ for (var i = from, l= array.length; i < l; i++) {
4206
+ if (array[i] === obj) {
4207
+ return i;
4208
+ }
4209
+ }
4210
+ return -1;
4211
+ };
4212
+ }
4213
+
4214
+ var indexOfArray = getIdx;
4215
+ __exports__.indexOfArray = indexOfArray;
4092
4216
  });
4093
4217
  define("htmlbars-util/handlebars/safe-string",
4094
4218
  ["exports"],
@@ -4197,6 +4321,33 @@ define("htmlbars-util/handlebars/utils",
4197
4321
 
4198
4322
  __exports__.appendContextPath = appendContextPath;
4199
4323
  });
4324
+ define("htmlbars-util/namespaces",
4325
+ ["exports"],
4326
+ function(__exports__) {
4327
+ "use strict";
4328
+ // ref http://dev.w3.org/html5/spec-LC/namespaces.html
4329
+ var defaultNamespaces = {
4330
+ html: 'http://www.w3.org/1999/xhtml',
4331
+ mathml: 'http://www.w3.org/1998/Math/MathML',
4332
+ svg: 'http://www.w3.org/2000/svg',
4333
+ xlink: 'http://www.w3.org/1999/xlink',
4334
+ xml: 'http://www.w3.org/XML/1998/namespace'
4335
+ };
4336
+
4337
+ function getAttrNamespace(attrName) {
4338
+ var namespace;
4339
+
4340
+ var colonIndex = attrName.indexOf(':');
4341
+ if (colonIndex !== -1) {
4342
+ var prefix = attrName.slice(0, colonIndex);
4343
+ namespace = defaultNamespaces[prefix];
4344
+ }
4345
+
4346
+ return namespace || null;
4347
+ }
4348
+
4349
+ __exports__.getAttrNamespace = getAttrNamespace;
4350
+ });
4200
4351
  define("htmlbars-util/object-utils",
4201
4352
  ["exports"],
4202
4353
  function(__exports__) {