ember-source 2.15.3 → 2.16.0.beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,7 +6,7 @@
6
6
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
7
7
  * @license Licensed under MIT license
8
8
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
9
- * @version 2.15.3
9
+ * @version 2.16.0-beta.1
10
10
  */
11
11
 
12
12
  var enifed, requireModule, Ember;
@@ -4640,6 +4640,7 @@ enifed('backburner', ['exports'], function (exports) {
4640
4640
  this.name = name;
4641
4641
  this.options = options;
4642
4642
  this.globalOptions = globalOptions;
4643
+ this.globalOptions.onError = getOnError(globalOptions);
4643
4644
  }
4644
4645
 
4645
4646
  Queue.prototype.push = function (target, method, args, stack) {
@@ -4669,13 +4670,14 @@ enifed('backburner', ['exports'], function (exports) {
4669
4670
  var _options = this.options,
4670
4671
  before = _options.before,
4671
4672
  after = _options.after,
4672
- onError,
4673
4673
  i;
4674
4674
 
4675
4675
  var target = void 0;
4676
4676
  var method = void 0;
4677
4677
  var args = void 0;
4678
4678
  var errorRecordedForStack = void 0;
4679
+ var onError = this.globalOptions.onError;
4680
+ var invoke = onError ? this.invokeWithOnError : this.invoke;
4679
4681
  this.targetQueues = Object.create(null);
4680
4682
  var queueItems = void 0;
4681
4683
  if (this._queueBeingFlushed.length > 0) {
@@ -4687,39 +4689,33 @@ enifed('backburner', ['exports'], function (exports) {
4687
4689
  if (before) {
4688
4690
  before();
4689
4691
  }
4690
- var invoke = void 0;
4691
- if (queueItems.length > 0) {
4692
- onError = getOnError(this.globalOptions);
4693
-
4694
- invoke = onError ? this.invokeWithOnError : this.invoke;
4695
- for (i = this.index; i < queueItems.length; i += 4) {
4696
- this.index += 4;
4697
- target = queueItems[i];
4698
- method = queueItems[i + 1];
4699
- args = queueItems[i + 2];
4700
- errorRecordedForStack = queueItems[i + 3]; // Debugging assistance
4701
- // method could have been nullified / canceled during flush
4702
- if (method !== null) {
4703
- //
4704
- // ** Attention intrepid developer **
4705
- //
4706
- // To find out the stack of this task when it was scheduled onto
4707
- // the run loop, add the following to your app.js:
4708
- //
4709
- // Ember.run.backburner.DEBUG = true; // NOTE: This slows your app, don't leave it on in production.
4710
- //
4711
- // Once that is in place, when you are at a breakpoint and navigate
4712
- // here in the stack explorer, you can look at `errorRecordedForStack.stack`,
4713
- // which will be the captured stack when this job was scheduled.
4714
- //
4715
- // One possible long-term solution is the following Chrome issue:
4716
- // https://bugs.chromium.org/p/chromium/issues/detail?id=332624
4717
- //
4718
- invoke(target, method, args, onError, errorRecordedForStack);
4719
- }
4720
- if (this.index !== this._queueBeingFlushed.length && this.globalOptions.mustYield && this.globalOptions.mustYield()) {
4721
- return 1 /* Pause */;
4722
- }
4692
+ for (i = this.index; i < queueItems.length; i += 4) {
4693
+ this.index += 4;
4694
+ target = queueItems[i];
4695
+ method = queueItems[i + 1];
4696
+ args = queueItems[i + 2];
4697
+ errorRecordedForStack = queueItems[i + 3]; // Debugging assistance
4698
+ // method could have been nullified / canceled during flush
4699
+ if (method !== null) {
4700
+ //
4701
+ // ** Attention intrepid developer **
4702
+ //
4703
+ // To find out the stack of this task when it was scheduled onto
4704
+ // the run loop, add the following to your app.js:
4705
+ //
4706
+ // Ember.run.backburner.DEBUG = true; // NOTE: This slows your app, don't leave it on in production.
4707
+ //
4708
+ // Once that is in place, when you are at a breakpoint and navigate
4709
+ // here in the stack explorer, you can look at `errorRecordedForStack.stack`,
4710
+ // which will be the captured stack when this job was scheduled.
4711
+ //
4712
+ // One possible long-term solution is the following Chrome issue:
4713
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=332624
4714
+ //
4715
+ invoke(target, method, args, onError, errorRecordedForStack);
4716
+ }
4717
+ if (this.index !== this._queueBeingFlushed.length && this.globalOptions.mustYield && this.globalOptions.mustYield()) {
4718
+ return 1 /* Pause */;
4723
4719
  }
4724
4720
  }
4725
4721
  if (after) {
@@ -4930,6 +4926,7 @@ enifed('backburner', ['exports'], function (exports) {
4930
4926
 
4931
4927
  // accepts a function that when invoked will return an iterator
4932
4928
  // iterator will drain until completion
4929
+ // accepts a function that when invoked will return an iterator
4933
4930
  var iteratorDrain = function (fn) {
4934
4931
  var iterator = fn();
4935
4932
  var result = iterator.next();
@@ -4939,8 +4936,8 @@ enifed('backburner', ['exports'], function (exports) {
4939
4936
  }
4940
4937
  };
4941
4938
 
4939
+ var now = Date.now;
4942
4940
  var noop = function () {};
4943
- var SET_TIMEOUT = setTimeout;
4944
4941
 
4945
4942
  var Backburner = function () {
4946
4943
  function Backburner(queueNames) {
@@ -4977,12 +4974,9 @@ enifed('backburner', ['exports'], function (exports) {
4977
4974
  return clearTimeout(id);
4978
4975
  };
4979
4976
  platform.next = _platform.next || function (fn) {
4980
- return SET_TIMEOUT(fn, 0);
4977
+ return platform.setTimeout(fn, 0);
4981
4978
  };
4982
4979
  platform.clearNext = _platform.clearNext || platform.clearTimeout;
4983
- platform.now = _platform.now || function () {
4984
- return Date.now();
4985
- };
4986
4980
  this._platform = platform;
4987
4981
  this._boundRunExpiredTimers = function () {
4988
4982
  _this._runExpiredTimers();
@@ -5281,7 +5275,7 @@ enifed('backburner', ['exports'], function (exports) {
5281
5275
  }
5282
5276
  }
5283
5277
  var onError = getOnError(this.options);
5284
- var executeAt = this._platform.now() + wait;
5278
+ var executeAt = now() + wait;
5285
5279
  var fn = void 0;
5286
5280
  if (onError) {
5287
5281
  fn = function () {
@@ -5501,7 +5495,7 @@ enifed('backburner', ['exports'], function (exports) {
5501
5495
  var l = timers.length;
5502
5496
  var i = 0;
5503
5497
  var defaultQueue = this.options.defaultQueue;
5504
- var n = this._platform.now();
5498
+ var n = now();
5505
5499
  for (; i < l; i += 2) {
5506
5500
  executeAt = timers[i];
5507
5501
 
@@ -5535,7 +5529,7 @@ enifed('backburner', ['exports'], function (exports) {
5535
5529
  return;
5536
5530
  }
5537
5531
  var minExpiresAt = this._timers[0];
5538
- var n = this._platform.now();
5532
+ var n = now();
5539
5533
  var wait = Math.max(0, minExpiresAt - n);
5540
5534
  this._timerTimeoutId = this._platform.setTimeout(this._boundRunExpiredTimers, wait);
5541
5535
  };
@@ -5630,19 +5624,17 @@ enifed('container', ['exports', 'ember-utils', 'ember-debug', 'ember/features',
5630
5624
  expandedFullName = this.registry.expandLocalLookup(fullName, options);
5631
5625
  // if expandLocalLookup returns falsey, we do not support local lookup
5632
5626
 
5633
- if (_features.EMBER_MODULE_UNIFICATION) {
5634
- if (expandedFullName) {
5635
- // with ember-module-unification, if expandLocalLookup returns something,
5636
- // pass it to the resolve without the source
5637
- normalizedName = expandedFullName;
5638
- options = {};
5639
- }
5640
- } else {
5627
+ if (!_features.EMBER_MODULE_UNIFICATION) {
5641
5628
  if (!expandedFullName) {
5642
5629
  return;
5643
5630
  }
5644
5631
 
5645
5632
  normalizedName = expandedFullName;
5633
+ } else if (expandedFullName) {
5634
+ // with ember-module-unification, if expandLocalLookup returns something,
5635
+ // pass it to the resolve without the source
5636
+ normalizedName = expandedFullName;
5637
+ options = {};
5646
5638
  }
5647
5639
  }
5648
5640
 
@@ -5653,12 +5645,7 @@ enifed('container', ['exports', 'ember-utils', 'ember-debug', 'ember/features',
5653
5645
  return cached;
5654
5646
  }
5655
5647
 
5656
- var factory = void 0;
5657
- if (_features.EMBER_MODULE_UNIFICATION) {
5658
- factory = this.registry.resolve(normalizedName, options);
5659
- } else {
5660
- factory = this.registry.resolve(normalizedName);
5661
- }
5648
+ var factory = _features.EMBER_MODULE_UNIFICATION ? this.registry.resolve(normalizedName, options) : this.registry.resolve(normalizedName);
5662
5649
 
5663
5650
  if (factory === undefined) {
5664
5651
  return;
@@ -5727,20 +5714,18 @@ enifed('container', ['exports', 'ember-utils', 'ember-debug', 'ember/features',
5727
5714
  expandedFullName = container.registry.expandLocalLookup(fullName, options);
5728
5715
 
5729
5716
 
5730
- if (_features.EMBER_MODULE_UNIFICATION) {
5731
- if (expandedFullName) {
5732
- // with ember-module-unification, if expandLocalLookup returns something,
5733
- // pass it to the resolve without the source
5734
- fullName = expandedFullName;
5735
- options = {};
5736
- }
5737
- } else {
5717
+ if (!_features.EMBER_MODULE_UNIFICATION) {
5738
5718
  // if expandLocalLookup returns falsey, we do not support local lookup
5739
5719
  if (!expandedFullName) {
5740
5720
  return;
5741
5721
  }
5742
5722
 
5743
5723
  fullName = expandedFullName;
5724
+ } else if (expandedFullName) {
5725
+ // with ember-module-unification, if expandLocalLookup returns something,
5726
+ // pass it to the resolve without the source
5727
+ fullName = expandedFullName;
5728
+ options = {};
5744
5729
  }
5745
5730
  }
5746
5731
 
@@ -5782,17 +5767,7 @@ enifed('container', ['exports', 'ember-utils', 'ember-debug', 'ember/features',
5782
5767
  }
5783
5768
 
5784
5769
  function instantiateFactory(container, fullName, options) {
5785
-
5786
- var factoryManager = void 0;
5787
- if (_features.EMBER_MODULE_UNIFICATION) {
5788
- if (options && options.source) {
5789
- factoryManager = container.factoryFor(fullName, options);
5790
- } else {
5791
- factoryManager = container.factoryFor(fullName);
5792
- }
5793
- } else {
5794
- factoryManager = container.factoryFor(fullName);
5795
- }
5770
+ var factoryManager = _features.EMBER_MODULE_UNIFICATION && options && options.source ? container.factoryFor(fullName, options) : container.factoryFor(fullName);
5796
5771
 
5797
5772
  if (factoryManager === undefined) {
5798
5773
  return;
@@ -6319,11 +6294,11 @@ enifed('container', ['exports', 'ember-utils', 'ember-debug', 'ember/features',
6319
6294
  return injections;
6320
6295
  },
6321
6296
  resolverCacheKey: function (name, options) {
6322
- if (_features.EMBER_MODULE_UNIFICATION) {
6323
- return options && options.source ? options.source + ':' + name : name;
6324
- } else {
6297
+ if (!_features.EMBER_MODULE_UNIFICATION) {
6325
6298
  return name;
6326
6299
  }
6300
+
6301
+ return options && options.source ? options.source + ':' + name : name;
6327
6302
  }
6328
6303
  };
6329
6304
 
@@ -6413,21 +6388,19 @@ enifed('container', ['exports', 'ember-utils', 'ember-debug', 'ember/features',
6413
6388
  // and source into the full normalizedName
6414
6389
  expandedNormalizedName = registry.expandLocalLookup(normalizedName, options);
6415
6390
 
6391
+ // if expandLocalLookup returns falsey, we do not support local lookup
6416
6392
 
6417
- if (_features.EMBER_MODULE_UNIFICATION) {
6418
- if (expandedNormalizedName) {
6419
- // with ember-module-unification, if expandLocalLookup returns something,
6420
- // pass it to the resolve without the source
6421
- normalizedName = expandedNormalizedName;
6422
- options = {};
6423
- }
6424
- } else {
6425
- // if expandLocalLookup returns falsey, we do not support local lookup
6393
+ if (!_features.EMBER_MODULE_UNIFICATION) {
6426
6394
  if (!expandedNormalizedName) {
6427
6395
  return;
6428
6396
  }
6429
6397
 
6430
6398
  normalizedName = expandedNormalizedName;
6399
+ } else if (expandedNormalizedName) {
6400
+ // with ember-module-unification, if expandLocalLookup returns something,
6401
+ // pass it to the resolve without the source
6402
+ normalizedName = expandedNormalizedName;
6403
+ options = {};
6431
6404
  }
6432
6405
  }
6433
6406
 
@@ -7859,53 +7832,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
7859
7832
 
7860
7833
  */
7861
7834
 
7862
- function indexOf(array, target, method) {
7863
- var index = -1,
7864
- i;
7865
- // hashes are added to the end of the event array
7866
- // so it makes sense to start searching at the end
7867
- // of the array and search in reverse
7868
- for (i = array.length - 3; i >= 0; i -= 3) {
7869
- if (target === array[i] && method === array[i + 1]) {
7870
- index = i;
7871
- break;
7872
- }
7873
- }
7874
- return index;
7875
- }
7876
-
7877
- function accumulateListeners(obj, eventName, otherActions) {
7878
- var meta$$1 = exports.peekMeta(obj),
7879
- i,
7880
- target,
7881
- method,
7882
- flags,
7883
- actionIndex;
7884
- if (!meta$$1) {
7885
- return;
7886
- }
7887
- var actions = meta$$1.matchingListeners(eventName);
7888
- if (actions === undefined) {
7889
- return;
7890
- }
7891
- var newActions = [];
7892
-
7893
- for (i = actions.length - 3; i >= 0; i -= 3) {
7894
- target = actions[i];
7895
- method = actions[i + 1];
7896
- flags = actions[i + 2];
7897
- actionIndex = indexOf(otherActions, target, method);
7898
-
7899
-
7900
- if (actionIndex === -1) {
7901
- otherActions.push(target, method, flags);
7902
- newActions.push(target, method, flags);
7903
- }
7904
- }
7905
-
7906
- return newActions;
7907
- }
7908
-
7909
7835
  /**
7910
7836
  Add an event listener
7911
7837
 
@@ -8185,7 +8111,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
8185
8111
  }
8186
8112
 
8187
8113
  if (propertyKey === 'content' && meta$$1.isProxy()) {
8188
- meta$$1.getTag().contentDidChange();
8114
+ objectTag.contentDidChange();
8189
8115
  }
8190
8116
 
8191
8117
  if (objectTag !== undefined || propertyTag !== undefined) {
@@ -8193,14 +8119,14 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
8193
8119
  }
8194
8120
  }
8195
8121
 
8196
- var run = void 0;
8122
+ var backburner = void 0;
8197
8123
  function ensureRunloop() {
8198
- if (run === undefined) {
8199
- run = require('ember-metal').run;
8124
+ if (backburner === undefined) {
8125
+ backburner = require('ember-metal').run.backburner;
8200
8126
  }
8201
8127
 
8202
8128
  if (hasViews()) {
8203
- run.backburner.ensureInstance();
8129
+ backburner.ensureInstance();
8204
8130
  }
8205
8131
  }
8206
8132
 
@@ -8234,12 +8160,12 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
8234
8160
  var observers = this.observers;
8235
8161
  var senderGuid = emberUtils.guidFor(sender);
8236
8162
  var keySet = observerSet[senderGuid];
8237
- var index = void 0;
8238
8163
 
8239
- if (!keySet) {
8164
+ if (keySet === undefined) {
8240
8165
  observerSet[senderGuid] = keySet = {};
8241
8166
  }
8242
- index = keySet[keyName];
8167
+
8168
+ var index = keySet[keyName];
8243
8169
  if (index === undefined) {
8244
8170
  index = observers.push({
8245
8171
  sender: sender,
@@ -8253,9 +8179,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
8253
8179
  };
8254
8180
 
8255
8181
  ObserverSet.prototype.flush = function () {
8256
- var observers = this.observers;
8257
- var i = void 0,
8258
- observer = void 0,
8182
+ var observers = this.observers,
8183
+ i;
8184
+ var observer = void 0,
8259
8185
  sender = void 0;
8260
8186
  this.clear();
8261
8187
  for (i = 0; i < observers.length; ++i) {
@@ -8407,7 +8333,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
8407
8333
  */
8408
8334
  function propertyWillChange(obj, keyName, _meta) {
8409
8335
  var meta$$1 = _meta || exports.peekMeta(obj);
8410
-
8411
8336
  if (meta$$1 && !meta$$1.isInitialized(obj)) {
8412
8337
  return;
8413
8338
  }
@@ -8461,11 +8386,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
8461
8386
  }
8462
8387
 
8463
8388
  if (hasMeta && meta$$1.peekWatching(keyName) > 0) {
8464
- if (meta$$1.hasDeps(keyName) && !meta$$1.isSourceDestroying()) {
8465
- dependentKeysDidChange(obj, keyName, meta$$1);
8466
- }
8467
-
8468
- chainsDidChange(obj, keyName, meta$$1, false);
8389
+ dependentKeysDidChange(obj, keyName, meta$$1);
8390
+ chainsDidChange(obj, keyName, meta$$1);
8469
8391
  notifyObservers(obj, keyName, meta$$1);
8470
8392
  }
8471
8393
 
@@ -8489,30 +8411,28 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
8489
8411
  var DID_SEEN = void 0;
8490
8412
  // called whenever a property is about to change to clear the cache of any dependent keys (and notify those properties of changes, etc...)
8491
8413
  function dependentKeysWillChange(obj, depKey, meta$$1) {
8492
- var seen, top;
8493
-
8494
- if (meta$$1.isSourceDestroying()) {
8414
+ if (meta$$1.isSourceDestroying() || !meta$$1.hasDeps(depKey)) {
8495
8415
  return;
8496
8416
  }
8497
- if (meta$$1.hasDeps(depKey)) {
8498
- seen = WILL_SEEN;
8499
- top = !seen;
8500
-
8417
+ var seen = WILL_SEEN;
8418
+ var top = !seen;
8501
8419
 
8502
- if (top) {
8503
- seen = WILL_SEEN = {};
8504
- }
8420
+ if (top) {
8421
+ seen = WILL_SEEN = {};
8422
+ }
8505
8423
 
8506
- iterDeps(propertyWillChange, obj, depKey, seen, meta$$1);
8424
+ iterDeps(propertyWillChange, obj, depKey, seen, meta$$1);
8507
8425
 
8508
- if (top) {
8509
- WILL_SEEN = null;
8510
- }
8426
+ if (top) {
8427
+ WILL_SEEN = null;
8511
8428
  }
8512
8429
  }
8513
8430
 
8514
8431
  // called whenever a property has just changed to update dependent keys
8515
8432
  function dependentKeysDidChange(obj, depKey, meta$$1) {
8433
+ if (meta$$1.isSourceDestroying() || !meta$$1.hasDeps(depKey)) {
8434
+ return;
8435
+ }
8516
8436
  var seen = DID_SEEN;
8517
8437
  var top = !seen;
8518
8438
 
@@ -8561,21 +8481,21 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
8561
8481
 
8562
8482
  function chainsWillChange(obj, keyName, meta$$1) {
8563
8483
  var chainWatchers = meta$$1.readableChainWatchers();
8564
- if (chainWatchers) {
8484
+ if (chainWatchers !== undefined) {
8565
8485
  chainWatchers.notify(keyName, false, propertyWillChange);
8566
8486
  }
8567
8487
  }
8568
8488
 
8569
8489
  function chainsDidChange(obj, keyName, meta$$1) {
8570
8490
  var chainWatchers = meta$$1.readableChainWatchers();
8571
- if (chainWatchers) {
8491
+ if (chainWatchers !== undefined) {
8572
8492
  chainWatchers.notify(keyName, true, propertyDidChange);
8573
8493
  }
8574
8494
  }
8575
8495
 
8576
8496
  function overrideChains(obj, keyName, meta$$1) {
8577
8497
  var chainWatchers = meta$$1.readableChainWatchers();
8578
- if (chainWatchers) {
8498
+ if (chainWatchers !== undefined) {
8579
8499
  chainWatchers.revalidate(keyName);
8580
8500
  }
8581
8501
  }
@@ -8622,8 +8542,51 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
8622
8542
  try {
8623
8543
  callback.call(binding);
8624
8544
  } finally {
8625
- endPropertyChanges.call(binding);
8545
+ endPropertyChanges();
8546
+ }
8547
+ }
8548
+
8549
+ function indexOf(array, target, method) {
8550
+ var index = -1,
8551
+ i;
8552
+ // hashes are added to the end of the event array
8553
+ // so it makes sense to start searching at the end
8554
+ // of the array and search in reverse
8555
+ for (i = array.length - 3; i >= 0; i -= 3) {
8556
+ if (target === array[i] && method === array[i + 1]) {
8557
+ index = i;
8558
+ break;
8559
+ }
8560
+ }
8561
+ return index;
8562
+ }
8563
+
8564
+ function accumulateListeners(obj, eventName, otherActions, meta$$1) {
8565
+ var actions = meta$$1.matchingListeners(eventName),
8566
+ i,
8567
+ target,
8568
+ method,
8569
+ flags,
8570
+ actionIndex;
8571
+ if (actions === undefined) {
8572
+ return;
8626
8573
  }
8574
+ var newActions = [];
8575
+
8576
+ for (i = actions.length - 3; i >= 0; i -= 3) {
8577
+ target = actions[i];
8578
+ method = actions[i + 1];
8579
+ flags = actions[i + 2];
8580
+ actionIndex = indexOf(otherActions, target, method);
8581
+
8582
+
8583
+ if (actionIndex === -1) {
8584
+ otherActions.push(target, method, flags);
8585
+ newActions.push(target, method, flags);
8586
+ }
8587
+ }
8588
+
8589
+ return newActions;
8627
8590
  }
8628
8591
 
8629
8592
  function notifyBeforeObservers(obj, keyName, meta$$1) {
@@ -8634,13 +8597,11 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
8634
8597
  var eventName = keyName + ':before';
8635
8598
  var listeners = void 0,
8636
8599
  added = void 0;
8637
- if (deferred) {
8600
+ if (deferred > 0) {
8638
8601
  listeners = beforeObserverSet.add(obj, keyName, eventName);
8639
- added = accumulateListeners(obj, eventName, listeners);
8640
- sendEvent(obj, eventName, [obj, keyName], added);
8641
- } else {
8642
- sendEvent(obj, eventName, [obj, keyName]);
8602
+ added = accumulateListeners(obj, eventName, listeners, meta$$1);
8643
8603
  }
8604
+ sendEvent(obj, eventName, [obj, keyName], added);
8644
8605
  }
8645
8606
 
8646
8607
  function notifyObservers(obj, keyName, meta$$1) {
@@ -8650,9 +8611,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
8650
8611
 
8651
8612
  var eventName = keyName + ':change';
8652
8613
  var listeners = void 0;
8653
- if (deferred) {
8614
+ if (deferred > 0) {
8654
8615
  listeners = observerSet.add(obj, keyName, eventName);
8655
- accumulateListeners(obj, eventName, listeners);
8616
+ accumulateListeners(obj, eventName, listeners, meta$$1);
8656
8617
  } else {
8657
8618
  sendEvent(obj, eventName, [obj, keyName]);
8658
8619
  }
@@ -8714,7 +8675,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
8714
8675
  function DEFAULT_GETTER_FUNCTION(name) {
8715
8676
  return function () {
8716
8677
  var meta$$1 = exports.peekMeta(this);
8717
- return meta$$1 && meta$$1.peekValues(name);
8678
+ if (meta$$1 !== null && meta$$1 !== undefined) {
8679
+ return meta$$1.peekValues(name);
8680
+ }
8718
8681
  };
8719
8682
  }
8720
8683
 
@@ -8722,7 +8685,10 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
8722
8685
  function IGETTER_FUNCTION() {
8723
8686
  var meta$$1 = exports.peekMeta(this),
8724
8687
  proto;
8725
- var val = meta$$1 && meta$$1.readInheritedValue('values', name);
8688
+ var val = void 0;
8689
+ if (meta$$1 !== null && meta$$1 !== undefined) {
8690
+ val = meta$$1.readInheritedValue('values', name);
8691
+ }
8726
8692
 
8727
8693
  if (val === UNDEFINED) {
8728
8694
  proto = Object.getPrototypeOf(this);
@@ -8783,7 +8749,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
8783
8749
  become the explicit value of this property.
8784
8750
  */
8785
8751
  function defineProperty(obj, keyName, desc, data, meta$$1) {
8786
- if (!meta$$1) {
8752
+ if (meta$$1 === null || meta$$1 === undefined) {
8787
8753
  meta$$1 = meta(obj);
8788
8754
  }
8789
8755
 
@@ -9038,13 +9004,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
9038
9004
  }
9039
9005
  }
9040
9006
 
9041
- // get the chains for the current object. If the current object has
9042
- // chains inherited from the proto they will be cloned and reconfigured for
9043
- // the current object.
9044
- function chainsFor(obj, meta$$1) {
9045
- return (meta$$1 || meta(obj)).writableChains(makeChainNode);
9046
- }
9047
-
9048
9007
  function makeChainNode(obj) {
9049
9008
  return new ChainNode(null, null, obj);
9050
9009
  }
@@ -9059,7 +9018,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
9059
9018
  m.writeWatching(keyPath, counter + 1);
9060
9019
  if (counter === 0) {
9061
9020
  // activate watching first time
9062
- chainsFor(obj, m).add(keyPath);
9021
+ m.writableChains(makeChainNode).add(keyPath);
9063
9022
  }
9064
9023
  }
9065
9024
 
@@ -9075,7 +9034,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
9075
9034
 
9076
9035
  if (counter === 1) {
9077
9036
  m.writeWatching(keyPath, 0);
9078
- chainsFor(obj, m).remove(keyPath);
9037
+ m.readableChains().remove(keyPath);
9079
9038
  } else if (counter > 1) {
9080
9039
  m.writeWatching(keyPath, counter - 1);
9081
9040
  }
@@ -9282,16 +9241,16 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
9282
9241
 
9283
9242
 
9284
9243
  ChainNode.prototype.copy = function (obj) {
9285
- var ret = new ChainNode(null, null, obj);
9244
+ var ret = new ChainNode(null, null, obj),
9245
+ path;
9286
9246
  var paths = this._paths;
9287
- var path = void 0;
9288
9247
  if (paths !== undefined) {
9248
+ path = void 0;
9249
+
9289
9250
  for (path in paths) {
9290
- // this check will also catch non-number vals.
9291
- if (paths[path] <= 0) {
9292
- continue;
9251
+ if (paths[path] > 0) {
9252
+ ret.add(path);
9293
9253
  }
9294
- ret.add(path);
9295
9254
  }
9296
9255
  }
9297
9256
  return ret;
@@ -9395,9 +9354,11 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
9395
9354
 
9396
9355
  // then notify chains...
9397
9356
  var chains = this._chains,
9398
- parentValue;
9399
- var node = void 0;
9357
+ parentValue,
9358
+ node;
9400
9359
  if (chains !== undefined) {
9360
+ node = void 0;
9361
+
9401
9362
  for (var key in chains) {
9402
9363
  node = chains[key];
9403
9364
  if (node !== undefined) {
@@ -9418,10 +9379,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
9418
9379
 
9419
9380
  if (this._parent) {
9420
9381
  this._parent.populateAffected(path, depth + 1, affected);
9421
- } else {
9422
- if (depth > 1) {
9423
- affected.push(this.value(), path);
9424
- }
9382
+ } else if (depth > 1) {
9383
+ affected.push(this.value(), path);
9425
9384
  }
9426
9385
  };
9427
9386
 
@@ -9536,14 +9495,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
9536
9495
  return this.proto !== obj;
9537
9496
  };
9538
9497
 
9539
- Meta.prototype.setTag = function (tag) {
9540
- this._tag = tag;
9541
- };
9542
-
9543
- Meta.prototype.getTag = function () {
9544
- return this._tag;
9545
- };
9546
-
9547
9498
  Meta.prototype.destroy = function () {
9548
9499
  if (this.isMetaDestroyed()) {
9549
9500
  return;
@@ -9555,14 +9506,14 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
9555
9506
  nodeObject = void 0,
9556
9507
  foreignMeta;
9557
9508
  var node = this.readableChains();
9558
- if (node) {
9509
+ if (node !== undefined) {
9559
9510
  NODE_STACK.push(node);
9560
9511
  // process tree
9561
9512
  while (NODE_STACK.length > 0) {
9562
9513
  node = NODE_STACK.pop();
9563
9514
  // push children
9564
9515
  nodes = node._chains;
9565
- if (nodes) {
9516
+ if (nodes !== undefined) {
9566
9517
  for (key in nodes) {
9567
9518
  if (nodes[key] !== undefined) {
9568
9519
  NODE_STACK.push(nodes[key]);
@@ -9573,7 +9524,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
9573
9524
  // remove chainWatcher in node object
9574
9525
  if (node._watching) {
9575
9526
  nodeObject = node._object;
9576
- if (nodeObject) {
9527
+ if (nodeObject !== undefined) {
9577
9528
  foreignMeta = exports.peekMeta(nodeObject);
9578
9529
  // avoid cleaning up chain watchers when both current and
9579
9530
  // foreign objects are being destroyed
@@ -9806,11 +9757,12 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
9806
9757
 
9807
9758
  var ret = this._chains;
9808
9759
  if (ret === undefined) {
9809
- if (this.parent) {
9810
- ret = this._chains = this.parent.writableChains(create).copy(this.source);
9760
+ if (this.parent === undefined) {
9761
+ ret = create(this.source);
9811
9762
  } else {
9812
- ret = this._chains = create(this.source);
9763
+ ret = this.parent.writableChains(create).copy(this.source);
9813
9764
  }
9765
+ this._chains = ret;
9814
9766
  }
9815
9767
  return ret;
9816
9768
  };
@@ -9820,7 +9772,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
9820
9772
  };
9821
9773
 
9822
9774
  Meta.prototype.writeWatching = function (subkey, value) {
9823
- true && !!this.isMetaDestroyed() && emberDebug.assert('Cannot update watchers for `hello` on `' + emberUtils.toString(this.source) + '` after it has been destroyed.', !this.isMetaDestroyed());
9775
+ true && !!this.isMetaDestroyed() && emberDebug.assert('Cannot update watchers for `' + subkey + '` on `' + emberUtils.toString(this.source) + '` after it has been destroyed.', !this.isMetaDestroyed());
9824
9776
 
9825
9777
  var map = this._getOrCreateOwnMap('_watching');
9826
9778
  map[subkey] = value;
@@ -10031,7 +9983,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
10031
9983
 
10032
9984
  pointer = getPrototypeOf(pointer);
10033
9985
  {
10034
- counters.peakPrototypeWalks++;
9986
+ counters.peekPrototypeWalks++;
10035
9987
  }
10036
9988
  }
10037
9989
  };
@@ -10051,17 +10003,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
10051
10003
  };
10052
10004
  }
10053
10005
 
10054
- function deleteMeta(obj) {
10055
- {
10056
- counters.deleteCalls++;
10057
- }
10058
-
10059
- var meta = exports.peekMeta(obj);
10060
- if (meta !== undefined) {
10061
- meta.destroy();
10062
- }
10063
- }
10064
-
10065
10006
  /**
10066
10007
  Retrieves the meta hash for an object. If `writable` is true ensures the
10067
10008
  hash is writable for this object as well.
@@ -10179,46 +10120,29 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
10179
10120
  return DefaultStore;
10180
10121
  }();
10181
10122
 
10182
- var IS_GLOBAL = /^[A-Z$]/;
10183
10123
  var IS_GLOBAL_PATH = /^[A-Z$].*[\.]/;
10184
- new Cache(1000, function (key) {
10185
- return IS_GLOBAL.test(key);
10186
- });
10187
10124
 
10188
10125
  var isGlobalPathCache = new Cache(1000, function (key) {
10189
10126
  return IS_GLOBAL_PATH.test(key);
10190
10127
  });
10191
- var hasThisCache = new Cache(1000, function (key) {
10192
- return key.lastIndexOf('this.', 0) === 0;
10193
- });
10194
10128
  var firstDotIndexCache = new Cache(1000, function (key) {
10195
10129
  return key.indexOf('.');
10196
10130
  });
10197
10131
 
10198
10132
  var firstKeyCache = new Cache(1000, function (path) {
10199
10133
  var index = firstDotIndexCache.get(path);
10200
- if (index === -1) {
10201
- return path;
10202
- } else {
10203
- return path.slice(0, index);
10204
- }
10134
+ return index === -1 ? path : path.slice(0, index);
10205
10135
  });
10206
10136
 
10207
10137
  var tailPathCache = new Cache(1000, function (path) {
10208
10138
  var index = firstDotIndexCache.get(path);
10209
- if (index !== -1) {
10210
- return path.slice(index + 1);
10211
- }
10139
+ return index === -1 ? undefined : path.slice(index + 1);
10212
10140
  });
10213
10141
 
10214
10142
  function isGlobalPath(path) {
10215
10143
  return isGlobalPathCache.get(path);
10216
10144
  }
10217
10145
 
10218
- function hasThis(path) {
10219
- return hasThisCache.get(path);
10220
- }
10221
-
10222
10146
  function isPath(path) {
10223
10147
  return firstDotIndexCache.get(path) !== -1;
10224
10148
  }
@@ -10281,7 +10205,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
10281
10205
  true && !(arguments.length === 2) && emberDebug.assert('Get must be called with two arguments; an object and a property key', arguments.length === 2);
10282
10206
  true && !(obj !== undefined && obj !== null) && emberDebug.assert('Cannot call get with \'' + keyName + '\' on an undefined object.', obj !== undefined && obj !== null);
10283
10207
  true && !(typeof keyName === 'string') && emberDebug.assert('The key provided to get must be a string, you passed ' + keyName, typeof keyName === 'string');
10284
- true && !!hasThis(keyName) && emberDebug.assert('\'this\' in paths is not supported', !hasThis(keyName));
10208
+ true && !(keyName.lastIndexOf('this.', 0) !== 0) && emberDebug.assert('\'this\' in paths is not supported', keyName.lastIndexOf('this.', 0) !== 0);
10285
10209
  true && !(keyName !== '') && emberDebug.assert('Cannot call `Ember.get` with an empty string', keyName !== '');
10286
10210
 
10287
10211
  var value = obj[keyName];
@@ -10291,7 +10215,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
10291
10215
  return value.get(obj, keyName);
10292
10216
  } else if (isPath(keyName)) {
10293
10217
  return _getPath(obj, keyName);
10294
- } else if (value === undefined && 'object' === typeof obj && !(keyName in obj) && 'function' === typeof obj.unknownProperty) {
10218
+ } else if (value === undefined && 'object' === typeof obj && !(keyName in obj) && typeof obj.unknownProperty === 'function') {
10295
10219
  return obj.unknownProperty(keyName);
10296
10220
  } else {
10297
10221
  return value;
@@ -10362,7 +10286,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
10362
10286
  true && !(arguments.length === 3 || arguments.length === 4) && emberDebug.assert('Set must be called with three or four arguments; an object, a property key, a value and tolerant true/false', arguments.length === 3 || arguments.length === 4);
10363
10287
  true && !(obj && typeof obj === 'object' || typeof obj === 'function') && emberDebug.assert('Cannot call set with \'' + keyName + '\' on an undefined object.', obj && typeof obj === 'object' || typeof obj === 'function');
10364
10288
  true && !(typeof keyName === 'string') && emberDebug.assert('The key provided to set must be a string, you passed ' + keyName, typeof keyName === 'string');
10365
- true && !!hasThis(keyName) && emberDebug.assert('\'this\' in paths is not supported', !hasThis(keyName));
10289
+ true && !(keyName.lastIndexOf('this.', 0) !== 0) && emberDebug.assert('\'this\' in paths is not supported', keyName.lastIndexOf('this.', 0) !== 0);
10366
10290
  true && !!obj.isDestroyed && emberDebug.assert('calling set on destroyed object: ' + emberUtils.toString(obj) + '.' + keyName + ' = ' + emberUtils.toString(value), !obj.isDestroyed);
10367
10291
 
10368
10292
  if (isPath(keyName)) {
@@ -10376,10 +10300,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
10376
10300
  if (isDescriptor) {
10377
10301
  /* computed property */
10378
10302
  currentValue.set(obj, keyName, value);
10379
- } else if (obj.setUnknownProperty && currentValue === undefined && !(keyName in obj)) {
10303
+ } else if (currentValue === undefined && 'object' === typeof obj && !(keyName in obj) && typeof obj.setUnknownProperty === 'function') {
10380
10304
  /* unknown property */
10381
- true && !(typeof obj.setUnknownProperty === 'function') && emberDebug.assert('setUnknownProperty must be a function', typeof obj.setUnknownProperty === 'function');
10382
-
10383
10305
  obj.setUnknownProperty(keyName, value);
10384
10306
  } else if (!(currentValue === value)) {
10385
10307
  meta$$1 = exports.peekMeta(obj);
@@ -10418,31 +10340,20 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
10418
10340
  }
10419
10341
 
10420
10342
  function setPath(root, path, value, tolerant) {
10421
- // get the last part of the path
10422
- var keyName = path.slice(path.lastIndexOf('.') + 1);
10343
+ var parts = path.split('.');
10344
+ var keyName = parts.pop();
10423
10345
 
10424
- // get the first part of the part
10425
- path = path === keyName ? keyName : path.slice(0, path.length - (keyName.length + 1));
10346
+ true && !(keyName.trim().length > 0) && emberDebug.assert('Property set failed: You passed an empty path', keyName.trim().length > 0);
10426
10347
 
10427
- // unless the path is this, look up the first part to
10428
- // get the root
10429
- if (path !== 'this') {
10430
- root = _getPath(root, path);
10431
- }
10348
+ var newPath = parts.join('.');
10432
10349
 
10433
- if (!keyName || keyName.length === 0) {
10434
- throw new emberDebug.Error('Property set failed: You passed an empty path');
10435
- }
10350
+ var newRoot = _getPath(root, newPath);
10436
10351
 
10437
- if (!root) {
10438
- if (tolerant) {
10439
- return;
10440
- } else {
10441
- throw new emberDebug.Error('Property set failed: object in path "' + path + '" could not be found or was destroyed.');
10442
- }
10352
+ if (newRoot) {
10353
+ return set(newRoot, keyName, value);
10354
+ } else if (!tolerant) {
10355
+ throw new emberDebug.Error('Property set failed: object in path "' + newPath + '" could not be found or was destroyed.');
10443
10356
  }
10444
-
10445
- return set(root, keyName, value);
10446
10357
  }
10447
10358
 
10448
10359
  /**
@@ -10492,7 +10403,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
10492
10403
 
10493
10404
  @method expandProperties
10494
10405
  @for Ember
10495
- @private
10406
+ @public
10496
10407
  @param {String} pattern The property pattern to expand.
10497
10408
  @param {Function} callback The callback to invoke. It is invoked once per
10498
10409
  expansion, and is passed the expansion.
@@ -10535,7 +10446,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
10535
10446
  /**
10536
10447
  @module ember-metal
10537
10448
  */
10538
-
10539
10449
  /**
10540
10450
  Starts watching a property on an object. Whenever the property changes,
10541
10451
  invokes `Ember.propertyWillChange` and `Ember.propertyDidChange`. This is the
@@ -10550,33 +10460,26 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
10550
10460
  @param {String} _keyPath
10551
10461
  */
10552
10462
  function watch(obj, _keyPath, m) {
10553
- if (!isPath(_keyPath)) {
10554
- watchKey(obj, _keyPath, m);
10555
- } else {
10463
+ if (isPath(_keyPath)) {
10556
10464
  watchPath(obj, _keyPath, m);
10465
+ } else {
10466
+ watchKey(obj, _keyPath, m);
10557
10467
  }
10558
10468
  }
10559
10469
 
10470
+ function watcherCount(obj, key) {
10471
+ var meta$$1 = exports.peekMeta(obj);
10472
+ return meta$$1 && meta$$1.peekWatching(key) || 0;
10473
+ }
10474
+
10560
10475
  function unwatch(obj, _keyPath, m) {
10561
- if (!isPath(_keyPath)) {
10562
- unwatchKey(obj, _keyPath, m);
10563
- } else {
10476
+ if (isPath(_keyPath)) {
10564
10477
  unwatchPath(obj, _keyPath, m);
10478
+ } else {
10479
+ unwatchKey(obj, _keyPath, m);
10565
10480
  }
10566
10481
  }
10567
10482
 
10568
- /**
10569
- Tears down the meta on an object so that it can be garbage collected.
10570
- Multiple calls will have no effect.
10571
-
10572
- @method destroy
10573
- @for Ember
10574
- @param {Object} obj the object to destroy
10575
- @return {void}
10576
- @private
10577
- */
10578
-
10579
-
10580
10483
  /**
10581
10484
  @module ember
10582
10485
  @submodule ember-metal
@@ -10589,16 +10492,17 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
10589
10492
  function addDependentKeys(desc, obj, keyName, meta) {
10590
10493
  // the descriptor has a list of dependent keys, so
10591
10494
  // add all of its dependent keys.
10592
- var idx = void 0,
10593
- depKey = void 0;
10594
- var depKeys = desc._dependentKeys;
10595
- if (!depKeys) {
10495
+ var depKeys = desc._dependentKeys,
10496
+ idx,
10497
+ depKey;
10498
+ if (depKeys === null || depKeys === undefined) {
10596
10499
  return;
10597
10500
  }
10598
10501
 
10599
10502
  for (idx = 0; idx < depKeys.length; idx++) {
10600
10503
  depKey = depKeys[idx];
10601
10504
  // Increment the number of times depKey depends on keyName.
10505
+
10602
10506
  meta.writeDeps(depKey, keyName, (meta.peekDeps(depKey, keyName) || 0) + 1);
10603
10507
  // Watch the depKey
10604
10508
  watch(obj, depKey, meta);
@@ -10611,7 +10515,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
10611
10515
  var depKeys = desc._dependentKeys,
10612
10516
  idx,
10613
10517
  depKey;
10614
- if (!depKeys) {
10518
+ if (depKeys === null || depKeys === undefined) {
10615
10519
  return;
10616
10520
  }
10617
10521
 
@@ -11525,20 +11429,22 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
11525
11429
  };
11526
11430
 
11527
11431
  var onerror = void 0;
11528
- var onErrorTarget = {
11529
- get onerror() {
11530
- return dispatchOverride || onerror;
11531
- }
11532
- };
11533
-
11534
11432
  // Ember.onerror getter
11535
11433
 
11536
11434
  // Ember.onerror setter
11537
-
11435
+ function setOnerror(handler) {
11436
+ onerror = handler;
11437
+ }
11538
11438
 
11539
11439
  var dispatchOverride = void 0;
11540
11440
  // dispatch error
11541
-
11441
+ function dispatchError(error) {
11442
+ if (dispatchOverride) {
11443
+ dispatchOverride(error);
11444
+ } else {
11445
+ defaultDispatch(error);
11446
+ }
11447
+ }
11542
11448
 
11543
11449
  // allows testing adapter to override dispatch
11544
11450
 
@@ -11574,116 +11480,125 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
11574
11480
  * practice, most use cases satisfy this limitation which is why it is included
11575
11481
  * in ember-metal.
11576
11482
  */
11577
- function WeakMap$1(iterable) {
11578
- var i, _iterable$i, key, value;
11579
-
11580
- if (!(this instanceof WeakMap$1)) {
11581
- throw new TypeError('Constructor WeakMap requires \'new\'');
11582
- }
11483
+ var WeakMapPolyfill = function () {
11484
+ function WeakMapPolyfill(iterable) {
11485
+ var i, _iterable$i, key, value;
11583
11486
 
11584
- this._id = emberUtils.GUID_KEY + id++;
11487
+ this._id = emberUtils.GUID_KEY + id++;
11585
11488
 
11586
- if (iterable === null || iterable === undefined) {} else if (Array.isArray(iterable)) {
11587
- for (i = 0; i < iterable.length; i++) {
11588
- _iterable$i = iterable[i], key = _iterable$i[0], value = _iterable$i[1];
11489
+ if (iterable === null || iterable === undefined) {} else if (Array.isArray(iterable)) {
11490
+ for (i = 0; i < iterable.length; i++) {
11491
+ _iterable$i = iterable[i], key = _iterable$i[0], value = _iterable$i[1];
11589
11492
 
11590
11493
 
11591
- this.set(key, value);
11494
+ this.set(key, value);
11495
+ }
11496
+ } else {
11497
+ throw new TypeError('The weak map constructor polyfill only supports an array argument');
11592
11498
  }
11593
- } else {
11594
- throw new TypeError('The weak map constructor polyfill only supports an array argument');
11595
11499
  }
11596
- }
11597
11500
 
11598
- /*
11599
- * @method get
11600
- * @param key {Object | Function}
11601
- * @return {Any} stored value
11602
- */
11603
- WeakMap$1.prototype.get = function (obj) {
11604
- if (!isObject$1(obj)) {
11605
- return undefined;
11606
- }
11501
+ /*
11502
+ * @method get
11503
+ * @param key {Object | Function}
11504
+ * @return {Any} stored value
11505
+ */
11607
11506
 
11608
- var meta$$1 = exports.peekMeta(obj),
11609
- map;
11610
- if (meta$$1) {
11611
- map = meta$$1.readableWeak();
11507
+ WeakMapPolyfill.prototype.get = function (obj) {
11508
+ if (!isObject$1(obj)) {
11509
+ return undefined;
11510
+ }
11511
+
11512
+ var meta$$1 = exports.peekMeta(obj),
11513
+ map,
11514
+ val;
11515
+ if (meta$$1) {
11516
+ map = meta$$1.readableWeak();
11517
+
11518
+ if (map !== undefined) {
11519
+ val = map[this._id];
11612
11520
 
11613
- if (map) {
11614
- if (map[this._id] === UNDEFINED) {
11615
- return undefined;
11521
+ if (val === UNDEFINED) {
11522
+ return undefined;
11523
+ }
11524
+ return val;
11616
11525
  }
11526
+ }
11527
+ };
11528
+
11529
+ /*
11530
+ * @method set
11531
+ * @param key {Object | Function}
11532
+ * @param value {Any}
11533
+ * @return {WeakMap} the weak map
11534
+ */
11617
11535
 
11618
- return map[this._id];
11536
+ WeakMapPolyfill.prototype.set = function (obj, value) {
11537
+ if (!isObject$1(obj)) {
11538
+ throw new TypeError('Invalid value used as weak map key');
11619
11539
  }
11620
- }
11621
- };
11622
11540
 
11623
- /*
11624
- * @method set
11625
- * @param key {Object | Function}
11626
- * @param value {Any}
11627
- * @return {WeakMap} the weak map
11628
- */
11629
- WeakMap$1.prototype.set = function (obj, value) {
11630
- if (!isObject$1(obj)) {
11631
- throw new TypeError('Invalid value used as weak map key');
11632
- }
11541
+ if (value === undefined) {
11542
+ value = UNDEFINED;
11543
+ }
11633
11544
 
11634
- if (value === undefined) {
11635
- value = UNDEFINED;
11636
- }
11545
+ meta(obj).writableWeak()[this._id] = value;
11637
11546
 
11638
- meta(obj).writableWeak()[this._id] = value;
11547
+ return this;
11548
+ };
11639
11549
 
11640
- return this;
11641
- };
11550
+ /*
11551
+ * @method has
11552
+ * @param key {Object | Function}
11553
+ * @return {boolean} if the key exists
11554
+ */
11555
+
11556
+ WeakMapPolyfill.prototype.has = function (obj) {
11557
+ if (!isObject$1(obj)) {
11558
+ return false;
11559
+ }
11560
+
11561
+ var meta$$1 = exports.peekMeta(obj),
11562
+ map;
11563
+ if (meta$$1) {
11564
+ map = meta$$1.readableWeak();
11565
+
11566
+ if (map !== undefined) {
11567
+ return map[this._id] !== undefined;
11568
+ }
11569
+ }
11642
11570
 
11643
- /*
11644
- * @method has
11645
- * @param key {Object | Function}
11646
- * @return {boolean} if the key exists
11647
- */
11648
- WeakMap$1.prototype.has = function (obj) {
11649
- if (!isObject$1(obj)) {
11650
11571
  return false;
11651
- }
11572
+ };
11652
11573
 
11653
- var meta$$1 = exports.peekMeta(obj),
11654
- map;
11655
- if (meta$$1) {
11656
- map = meta$$1.readableWeak();
11574
+ /*
11575
+ * @method delete
11576
+ * @param key {Object | Function}
11577
+ * @return {boolean} if the key was deleted
11578
+ */
11657
11579
 
11658
- if (map) {
11659
- return map[this._id] !== undefined;
11580
+ WeakMapPolyfill.prototype.delete = function (obj) {
11581
+ if (this.has(obj)) {
11582
+ delete exports.peekMeta(obj).writableWeak()[this._id];
11583
+ return true;
11584
+ } else {
11585
+ return false;
11660
11586
  }
11661
- }
11587
+ };
11662
11588
 
11663
- return false;
11664
- };
11589
+ /*
11590
+ * @method toString
11591
+ * @return {String}
11592
+ */
11665
11593
 
11666
- /*
11667
- * @method delete
11668
- * @param key {Object | Function}
11669
- * @return {boolean} if the key was deleted
11670
- */
11671
- WeakMap$1.prototype.delete = function (obj) {
11672
- if (this.has(obj)) {
11673
- delete meta(obj).writableWeak()[this._id];
11674
- return true;
11675
- } else {
11676
- return false;
11677
- }
11678
- };
11594
+ WeakMapPolyfill.prototype.toString = function () {
11595
+ return '[object WeakMap]';
11596
+ };
11679
11597
 
11680
- /*
11681
- * @method toString
11682
- * @return {String}
11683
- */
11684
- WeakMap$1.prototype.toString = function () {
11685
- return '[object WeakMap]';
11686
- };
11598
+ return WeakMapPolyfill;
11599
+ }();
11600
+
11601
+ var weak_map = emberUtils.HAS_NATIVE_WEAKMAP ? WeakMap : WeakMapPolyfill;
11687
11602
 
11688
11603
  /**
11689
11604
  Returns true if the passed value is null or undefined. This avoids errors
@@ -11832,7 +11747,16 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
11832
11747
  */
11833
11748
 
11834
11749
 
11835
- var backburner = new Backburner(['sync', 'actions', 'destroy'], {
11750
+ var onErrorTarget = {
11751
+ get onerror() {
11752
+ return dispatchError;
11753
+ },
11754
+ set onerror(handler) {
11755
+ return setOnerror(handler);
11756
+ }
11757
+ };
11758
+
11759
+ var backburner$1 = new Backburner(['sync', 'actions', 'destroy'], {
11836
11760
  GUID_KEY: emberUtils.GUID_KEY,
11837
11761
  sync: {
11838
11762
  before: beginPropertyChanges,
@@ -11840,10 +11764,10 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
11840
11764
  },
11841
11765
  defaultQueue: 'actions',
11842
11766
  onBegin: function (current) {
11843
- run$1.currentRunLoop = current;
11767
+ run.currentRunLoop = current;
11844
11768
  },
11845
11769
  onEnd: function (current, next) {
11846
- run$1.currentRunLoop = next;
11770
+ run.currentRunLoop = next;
11847
11771
  },
11848
11772
  onErrorTarget: onErrorTarget,
11849
11773
  onErrorMethod: 'onerror'
@@ -11881,8 +11805,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
11881
11805
  @return {Object} return value from invoking the passed function.
11882
11806
  @public
11883
11807
  */
11884
- function run$1() {
11885
- return backburner.run.apply(backburner, arguments);
11808
+ function run() {
11809
+ return backburner$1.run.apply(backburner$1, arguments);
11886
11810
  }
11887
11811
 
11888
11812
  /**
@@ -11923,8 +11847,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
11923
11847
  when called within an existing loop, no return value is possible.
11924
11848
  @public
11925
11849
  */
11926
- run$1.join = function () {
11927
- return backburner.join.apply(backburner, arguments);
11850
+ run.join = function () {
11851
+ return backburner$1.join.apply(backburner$1, arguments);
11928
11852
  };
11929
11853
 
11930
11854
  /**
@@ -11977,7 +11901,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
11977
11901
  @since 1.4.0
11978
11902
  @public
11979
11903
  */
11980
- run$1.bind = function () {
11904
+ run.bind = function () {
11981
11905
  var _len, curried, _key;
11982
11906
 
11983
11907
  for (_len = arguments.length, curried = Array(_len), _key = 0; _key < _len; _key++) {
@@ -11991,13 +11915,13 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
11991
11915
  args[_key2] = arguments[_key2];
11992
11916
  }
11993
11917
 
11994
- return run$1.join.apply(run$1, curried.concat(args));
11918
+ return run.join.apply(run, curried.concat(args));
11995
11919
  };
11996
11920
  };
11997
11921
 
11998
- run$1.backburner = backburner;
11999
- run$1.currentRunLoop = null;
12000
- run$1.queues = backburner.queueNames;
11922
+ run.backburner = backburner$1;
11923
+ run.currentRunLoop = null;
11924
+ run.queues = backburner$1.queueNames;
12001
11925
 
12002
11926
  /**
12003
11927
  Begins a new RunLoop. Any deferred actions invoked after the begin will
@@ -12014,8 +11938,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
12014
11938
  @return {void}
12015
11939
  @public
12016
11940
  */
12017
- run$1.begin = function () {
12018
- backburner.begin();
11941
+ run.begin = function () {
11942
+ backburner$1.begin();
12019
11943
  };
12020
11944
 
12021
11945
  /**
@@ -12033,8 +11957,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
12033
11957
  @return {void}
12034
11958
  @public
12035
11959
  */
12036
- run$1.end = function () {
12037
- backburner.end();
11960
+ run.end = function () {
11961
+ backburner$1.end();
12038
11962
  };
12039
11963
 
12040
11964
  /**
@@ -12087,20 +12011,20 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
12087
12011
  @return {*} Timer information for use in canceling, see `run.cancel`.
12088
12012
  @public
12089
12013
  */
12090
- run$1.schedule = function () /* queue, target, method */{
12091
- true && !(run$1.currentRunLoop || !emberDebug.isTesting()) && emberDebug.assert('You have turned on testing mode, which disabled the run-loop\'s autorun. ' + 'You will need to wrap any code with asynchronous side-effects in a run', run$1.currentRunLoop || !emberDebug.isTesting());
12014
+ run.schedule = function () /* queue, target, method */{
12015
+ true && !(run.currentRunLoop || !emberDebug.isTesting()) && emberDebug.assert('You have turned on testing mode, which disabled the run-loop\'s autorun. ' + 'You will need to wrap any code with asynchronous side-effects in a run', run.currentRunLoop || !emberDebug.isTesting());
12092
12016
 
12093
- return backburner.schedule.apply(backburner, arguments);
12017
+ return backburner$1.schedule.apply(backburner$1, arguments);
12094
12018
  };
12095
12019
 
12096
12020
  // Used by global test teardown
12097
- run$1.hasScheduledTimers = function () {
12098
- return backburner.hasTimers();
12021
+ run.hasScheduledTimers = function () {
12022
+ return backburner$1.hasTimers();
12099
12023
  };
12100
12024
 
12101
12025
  // Used by global test teardown
12102
- run$1.cancelTimers = function () {
12103
- backburner.cancelTimers();
12026
+ run.cancelTimers = function () {
12027
+ backburner$1.cancelTimers();
12104
12028
  };
12105
12029
 
12106
12030
  /**
@@ -12120,9 +12044,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
12120
12044
  @return {void}
12121
12045
  @private
12122
12046
  */
12123
- run$1.sync = function () {
12124
- if (backburner.currentInstance) {
12125
- backburner.currentInstance.queues.sync.flush();
12047
+ run.sync = function () {
12048
+ if (backburner$1.currentInstance) {
12049
+ backburner$1.currentInstance.queues.sync.flush();
12126
12050
  }
12127
12051
  };
12128
12052
 
@@ -12152,8 +12076,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
12152
12076
  @return {*} Timer information for use in canceling, see `run.cancel`.
12153
12077
  @public
12154
12078
  */
12155
- run$1.later = function () /*target, method*/{
12156
- return backburner.later.apply(backburner, arguments);
12079
+ run.later = function () /*target, method*/{
12080
+ return backburner$1.later.apply(backburner$1, arguments);
12157
12081
  };
12158
12082
 
12159
12083
  /**
@@ -12169,17 +12093,17 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
12169
12093
  @return {Object} Timer information for use in canceling, see `run.cancel`.
12170
12094
  @public
12171
12095
  */
12172
- run$1.once = function () {
12096
+ run.once = function () {
12173
12097
  var _len3, args, _key3;
12174
12098
 
12175
- true && !(run$1.currentRunLoop || !emberDebug.isTesting()) && emberDebug.assert('You have turned on testing mode, which disabled the run-loop\'s autorun. ' + 'You will need to wrap any code with asynchronous side-effects in a run', run$1.currentRunLoop || !emberDebug.isTesting());
12099
+ true && !(run.currentRunLoop || !emberDebug.isTesting()) && emberDebug.assert('You have turned on testing mode, which disabled the run-loop\'s autorun. ' + 'You will need to wrap any code with asynchronous side-effects in a run', run.currentRunLoop || !emberDebug.isTesting());
12176
12100
 
12177
12101
  for (_len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
12178
12102
  args[_key3] = arguments[_key3];
12179
12103
  }
12180
12104
 
12181
12105
  args.unshift('actions');
12182
- return backburner.scheduleOnce.apply(backburner, args);
12106
+ return backburner$1.scheduleOnce.apply(backburner$1, args);
12183
12107
  };
12184
12108
 
12185
12109
  /**
@@ -12234,10 +12158,10 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
12234
12158
  @return {Object} Timer information for use in canceling, see `run.cancel`.
12235
12159
  @public
12236
12160
  */
12237
- run$1.scheduleOnce = function () /*queue, target, method*/{
12238
- true && !(run$1.currentRunLoop || !emberDebug.isTesting()) && emberDebug.assert('You have turned on testing mode, which disabled the run-loop\'s autorun. ' + 'You will need to wrap any code with asynchronous side-effects in a run', run$1.currentRunLoop || !emberDebug.isTesting());
12161
+ run.scheduleOnce = function () /*queue, target, method*/{
12162
+ true && !(run.currentRunLoop || !emberDebug.isTesting()) && emberDebug.assert('You have turned on testing mode, which disabled the run-loop\'s autorun. ' + 'You will need to wrap any code with asynchronous side-effects in a run', run.currentRunLoop || !emberDebug.isTesting());
12239
12163
 
12240
- return backburner.scheduleOnce.apply(backburner, arguments);
12164
+ return backburner$1.scheduleOnce.apply(backburner$1, arguments);
12241
12165
  };
12242
12166
 
12243
12167
  /**
@@ -12303,7 +12227,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
12303
12227
  @return {Object} Timer information for use in canceling, see `run.cancel`.
12304
12228
  @public
12305
12229
  */
12306
- run$1.next = function () {
12230
+ run.next = function () {
12307
12231
  var _len4, args, _key4;
12308
12232
 
12309
12233
  for (_len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
@@ -12311,7 +12235,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
12311
12235
  }
12312
12236
 
12313
12237
  args.push(1);
12314
- return backburner.later.apply(backburner, args);
12238
+ return backburner$1.later.apply(backburner$1, args);
12315
12239
  };
12316
12240
 
12317
12241
  /**
@@ -12369,8 +12293,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
12369
12293
  @return {Boolean} true if canceled or false/undefined if it wasn't found
12370
12294
  @public
12371
12295
  */
12372
- run$1.cancel = function (timer) {
12373
- return backburner.cancel(timer);
12296
+ run.cancel = function (timer) {
12297
+ return backburner$1.cancel(timer);
12374
12298
  };
12375
12299
 
12376
12300
  /**
@@ -12442,8 +12366,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
12442
12366
  @return {Array} Timer information for use in canceling, see `run.cancel`.
12443
12367
  @public
12444
12368
  */
12445
- run$1.debounce = function () {
12446
- return backburner.debounce.apply(backburner, arguments);
12369
+ run.debounce = function () {
12370
+ return backburner$1.debounce.apply(backburner$1, arguments);
12447
12371
  };
12448
12372
 
12449
12373
  /**
@@ -12485,8 +12409,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
12485
12409
  @return {Array} Timer information for use in canceling, see `run.cancel`.
12486
12410
  @public
12487
12411
  */
12488
- run$1.throttle = function () {
12489
- return backburner.throttle.apply(backburner, arguments);
12412
+ run.throttle = function () {
12413
+ return backburner$1.throttle.apply(backburner$1, arguments);
12490
12414
  };
12491
12415
 
12492
12416
  /**
@@ -12499,9 +12423,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
12499
12423
  @param {String} after the name of the queue to add after.
12500
12424
  @private
12501
12425
  */
12502
- run$1._addQueue = function (name, after) {
12503
- if (run$1.queues.indexOf(name) === -1) {
12504
- run$1.queues.splice(run$1.queues.indexOf(after) + 1, 0, name);
12426
+ run._addQueue = function (name, after) {
12427
+ if (run.queues.indexOf(name) === -1) {
12428
+ run.queues.splice(run.queues.indexOf(after) + 1, 0, name);
12505
12429
  }
12506
12430
  };
12507
12431
 
@@ -13418,7 +13342,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
13418
13342
 
13419
13343
  // If we haven't scheduled the binding yet, schedule it.
13420
13344
  if (existingDir === undefined) {
13421
- run$1.schedule('sync', this, '_sync');
13345
+ run.schedule('sync', this, '_sync');
13422
13346
  this._direction = dir;
13423
13347
  }
13424
13348
 
@@ -14722,16 +14646,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
14722
14646
  exports.getOnerror = function () {
14723
14647
  return onerror;
14724
14648
  };
14725
- exports.setOnerror = function (handler) {
14726
- onerror = handler;
14727
- };
14728
- exports.dispatchError = function (error) {
14729
- if (dispatchOverride) {
14730
- dispatchOverride(error);
14731
- } else {
14732
- defaultDispatch(error);
14733
- }
14734
- };
14649
+ exports.setOnerror = setOnerror;
14650
+ exports.dispatchError = dispatchError;
14735
14651
  exports.setDispatchOverride = function (handler) {
14736
14652
  dispatchOverride = handler;
14737
14653
  };
@@ -14753,8 +14669,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
14753
14669
  };
14754
14670
  exports.set = set;
14755
14671
  exports.trySet = trySet;
14756
- exports.WeakMap = WeakMap$1;
14757
- exports.accumulateListeners = accumulateListeners;
14672
+ exports.WeakMap = weak_map;
14673
+ exports.WeakMapPolyfill = WeakMapPolyfill;
14758
14674
  exports.addListener = addListener;
14759
14675
  exports.hasListeners = function (obj, eventName) {
14760
14676
  var meta$$1 = exports.peekMeta(obj);
@@ -14792,7 +14708,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
14792
14708
  exports.isPresent = function (obj) {
14793
14709
  return !isBlank(obj);
14794
14710
  };
14795
- exports.run = run$1;
14711
+ exports.run = run;
14796
14712
  exports.ObserverSet = ObserverSet;
14797
14713
  exports.beginPropertyChanges = beginPropertyChanges;
14798
14714
  exports.changeProperties = changeProperties;
@@ -14825,21 +14741,21 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
14825
14741
  exports.watchPath = watchPath;
14826
14742
  exports.unwatchPath = unwatchPath;
14827
14743
  exports.destroy = function (obj) {
14828
- deleteMeta(obj);
14744
+ {
14745
+ counters.deleteCalls++;
14746
+ }
14747
+
14748
+ var meta = exports.peekMeta(obj);
14749
+ if (meta !== undefined) {
14750
+ meta.destroy();
14751
+ }
14829
14752
  };
14830
14753
  exports.isWatching = function (obj, key) {
14831
- if (typeof obj !== 'object' || obj === null) {
14832
- return false;
14833
- }
14834
- var meta$$1 = exports.peekMeta(obj);
14835
- return (meta$$1 && meta$$1.peekWatching(key)) > 0;
14754
+ return watcherCount(obj, key) > 0;
14836
14755
  };
14837
14756
  exports.unwatch = unwatch;
14838
14757
  exports.watch = watch;
14839
- exports.watcherCount = function (obj, key) {
14840
- var meta$$1 = exports.peekMeta(obj);
14841
- return meta$$1 && meta$$1.peekWatching(key) || 0;
14842
- };
14758
+ exports.watcherCount = watcherCount;
14843
14759
  exports.libraries = libraries;
14844
14760
  exports.Libraries = Libraries;
14845
14761
  exports.Map = Map;
@@ -17146,7 +17062,7 @@ enifed('ember/features', ['exports', 'ember-environment', 'ember-utils'], functi
17146
17062
  enifed("ember/version", ["exports"], function (exports) {
17147
17063
  "use strict";
17148
17064
 
17149
- exports.default = "2.15.3";
17065
+ exports.default = "2.16.0-beta.1";
17150
17066
  });
17151
17067
  enifed("handlebars", ["exports"], function (exports) {
17152
17068
  "use strict";