ember-source 2.15.3 → 2.16.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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";