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;
@@ -9487,6 +9487,7 @@ enifed('backburner', ['exports'], function (exports) {
9487
9487
  this.name = name;
9488
9488
  this.options = options;
9489
9489
  this.globalOptions = globalOptions;
9490
+ this.globalOptions.onError = getOnError(globalOptions);
9490
9491
  }
9491
9492
 
9492
9493
  Queue.prototype.push = function (target, method, args, stack) {
@@ -9516,13 +9517,14 @@ enifed('backburner', ['exports'], function (exports) {
9516
9517
  var _options = this.options,
9517
9518
  before = _options.before,
9518
9519
  after = _options.after,
9519
- onError,
9520
9520
  i;
9521
9521
 
9522
9522
  var target = void 0;
9523
9523
  var method = void 0;
9524
9524
  var args = void 0;
9525
9525
  var errorRecordedForStack = void 0;
9526
+ var onError = this.globalOptions.onError;
9527
+ var invoke = onError ? this.invokeWithOnError : this.invoke;
9526
9528
  this.targetQueues = Object.create(null);
9527
9529
  var queueItems = void 0;
9528
9530
  if (this._queueBeingFlushed.length > 0) {
@@ -9534,39 +9536,33 @@ enifed('backburner', ['exports'], function (exports) {
9534
9536
  if (before) {
9535
9537
  before();
9536
9538
  }
9537
- var invoke = void 0;
9538
- if (queueItems.length > 0) {
9539
- onError = getOnError(this.globalOptions);
9540
-
9541
- invoke = onError ? this.invokeWithOnError : this.invoke;
9542
- for (i = this.index; i < queueItems.length; i += 4) {
9543
- this.index += 4;
9544
- target = queueItems[i];
9545
- method = queueItems[i + 1];
9546
- args = queueItems[i + 2];
9547
- errorRecordedForStack = queueItems[i + 3]; // Debugging assistance
9548
- // method could have been nullified / canceled during flush
9549
- if (method !== null) {
9550
- //
9551
- // ** Attention intrepid developer **
9552
- //
9553
- // To find out the stack of this task when it was scheduled onto
9554
- // the run loop, add the following to your app.js:
9555
- //
9556
- // Ember.run.backburner.DEBUG = true; // NOTE: This slows your app, don't leave it on in production.
9557
- //
9558
- // Once that is in place, when you are at a breakpoint and navigate
9559
- // here in the stack explorer, you can look at `errorRecordedForStack.stack`,
9560
- // which will be the captured stack when this job was scheduled.
9561
- //
9562
- // One possible long-term solution is the following Chrome issue:
9563
- // https://bugs.chromium.org/p/chromium/issues/detail?id=332624
9564
- //
9565
- invoke(target, method, args, onError, errorRecordedForStack);
9566
- }
9567
- if (this.index !== this._queueBeingFlushed.length && this.globalOptions.mustYield && this.globalOptions.mustYield()) {
9568
- return 1 /* Pause */;
9569
- }
9539
+ for (i = this.index; i < queueItems.length; i += 4) {
9540
+ this.index += 4;
9541
+ target = queueItems[i];
9542
+ method = queueItems[i + 1];
9543
+ args = queueItems[i + 2];
9544
+ errorRecordedForStack = queueItems[i + 3]; // Debugging assistance
9545
+ // method could have been nullified / canceled during flush
9546
+ if (method !== null) {
9547
+ //
9548
+ // ** Attention intrepid developer **
9549
+ //
9550
+ // To find out the stack of this task when it was scheduled onto
9551
+ // the run loop, add the following to your app.js:
9552
+ //
9553
+ // Ember.run.backburner.DEBUG = true; // NOTE: This slows your app, don't leave it on in production.
9554
+ //
9555
+ // Once that is in place, when you are at a breakpoint and navigate
9556
+ // here in the stack explorer, you can look at `errorRecordedForStack.stack`,
9557
+ // which will be the captured stack when this job was scheduled.
9558
+ //
9559
+ // One possible long-term solution is the following Chrome issue:
9560
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=332624
9561
+ //
9562
+ invoke(target, method, args, onError, errorRecordedForStack);
9563
+ }
9564
+ if (this.index !== this._queueBeingFlushed.length && this.globalOptions.mustYield && this.globalOptions.mustYield()) {
9565
+ return 1 /* Pause */;
9570
9566
  }
9571
9567
  }
9572
9568
  if (after) {
@@ -9777,6 +9773,7 @@ enifed('backburner', ['exports'], function (exports) {
9777
9773
 
9778
9774
  // accepts a function that when invoked will return an iterator
9779
9775
  // iterator will drain until completion
9776
+ // accepts a function that when invoked will return an iterator
9780
9777
  var iteratorDrain = function (fn) {
9781
9778
  var iterator = fn();
9782
9779
  var result = iterator.next();
@@ -9786,8 +9783,8 @@ enifed('backburner', ['exports'], function (exports) {
9786
9783
  }
9787
9784
  };
9788
9785
 
9786
+ var now = Date.now;
9789
9787
  var noop = function () {};
9790
- var SET_TIMEOUT = setTimeout;
9791
9788
 
9792
9789
  var Backburner = function () {
9793
9790
  function Backburner(queueNames) {
@@ -9824,12 +9821,9 @@ enifed('backburner', ['exports'], function (exports) {
9824
9821
  return clearTimeout(id);
9825
9822
  };
9826
9823
  platform.next = _platform.next || function (fn) {
9827
- return SET_TIMEOUT(fn, 0);
9824
+ return platform.setTimeout(fn, 0);
9828
9825
  };
9829
9826
  platform.clearNext = _platform.clearNext || platform.clearTimeout;
9830
- platform.now = _platform.now || function () {
9831
- return Date.now();
9832
- };
9833
9827
  this._platform = platform;
9834
9828
  this._boundRunExpiredTimers = function () {
9835
9829
  _this._runExpiredTimers();
@@ -10128,7 +10122,7 @@ enifed('backburner', ['exports'], function (exports) {
10128
10122
  }
10129
10123
  }
10130
10124
  var onError = getOnError(this.options);
10131
- var executeAt = this._platform.now() + wait;
10125
+ var executeAt = now() + wait;
10132
10126
  var fn = void 0;
10133
10127
  if (onError) {
10134
10128
  fn = function () {
@@ -10348,7 +10342,7 @@ enifed('backburner', ['exports'], function (exports) {
10348
10342
  var l = timers.length;
10349
10343
  var i = 0;
10350
10344
  var defaultQueue = this.options.defaultQueue;
10351
- var n = this._platform.now();
10345
+ var n = now();
10352
10346
  for (; i < l; i += 2) {
10353
10347
  executeAt = timers[i];
10354
10348
 
@@ -10382,7 +10376,7 @@ enifed('backburner', ['exports'], function (exports) {
10382
10376
  return;
10383
10377
  }
10384
10378
  var minExpiresAt = this._timers[0];
10385
- var n = this._platform.now();
10379
+ var n = now();
10386
10380
  var wait = Math.max(0, minExpiresAt - n);
10387
10381
  this._timerTimeoutId = this._platform.setTimeout(this._boundRunExpiredTimers, wait);
10388
10382
  };
@@ -10489,10 +10483,7 @@ enifed('container', ['exports', 'ember-utils', 'ember-debug', 'ember-environment
10489
10483
  return cached;
10490
10484
  }
10491
10485
 
10492
- var factory = void 0;
10493
-
10494
- factory = this.registry.resolve(normalizedName);
10495
-
10486
+ var factory = this.registry.resolve(normalizedName);
10496
10487
 
10497
10488
  if (factory === undefined) {
10498
10489
  return;
@@ -10572,11 +10563,7 @@ enifed('container', ['exports', 'ember-utils', 'ember-debug', 'ember-environment
10572
10563
  }
10573
10564
 
10574
10565
  function instantiateFactory(container, fullName, options) {
10575
-
10576
- var factoryManager = void 0;
10577
-
10578
- factoryManager = container.factoryFor(fullName);
10579
-
10566
+ var factoryManager = container.factoryFor(fullName);
10580
10567
 
10581
10568
  if (factoryManager === undefined) {
10582
10569
  return;
@@ -11088,7 +11075,7 @@ enifed('container', ['exports', 'ember-utils', 'ember-debug', 'ember-environment
11088
11075
  }
11089
11076
  return injections;
11090
11077
  },
11091
- resolverCacheKey: function (name) {
11078
+ resolverCacheKey: function (name, options) {
11092
11079
  return name;
11093
11080
  }
11094
11081
  };
@@ -11165,6 +11152,7 @@ enifed('container', ['exports', 'ember-utils', 'ember-debug', 'ember-environment
11165
11152
  expandedNormalizedName = registry.expandLocalLookup(normalizedName, options);
11166
11153
 
11167
11154
  // if expandLocalLookup returns falsey, we do not support local lookup
11155
+
11168
11156
  if (!expandedNormalizedName) {
11169
11157
  return;
11170
11158
  }
@@ -12597,11 +12585,7 @@ enifed('ember-application/system/engine-instance', ['exports', 'ember-babel', 'e
12597
12585
  var env = parent.lookup('-environment:main');
12598
12586
  this.register('-environment:main', env, { instantiate: false });
12599
12587
 
12600
- var singletons = ['router:main', (0, _container.privatize)(_templateObject), '-view-registry:main', 'renderer:-' + (env.isInteractive ? 'dom' : 'inert'), 'service:-document'];
12601
-
12602
- if (env.isInteractive) {
12603
- singletons.push('event_dispatcher:main');
12604
- }
12588
+ var singletons = ['router:main', (0, _container.privatize)(_templateObject), '-view-registry:main', 'renderer:-' + (env.isInteractive ? 'dom' : 'inert'), 'service:-document', 'event_dispatcher:main'];
12605
12589
 
12606
12590
  singletons.forEach(function (key) {
12607
12591
  return _this2.register(key, parent.lookup(key), { instantiate: false });
@@ -13163,7 +13147,7 @@ enifed('ember-application/system/resolver', ['exports', 'ember-utils', 'ember-me
13163
13147
  this._parseNameCache = (0, _emberUtils.dictionary)(null);
13164
13148
  },
13165
13149
  normalize: function (fullName) {
13166
- var _fullName$split = fullName.split(':', 2),
13150
+ var _fullName$split = fullName.split(':'),
13167
13151
  type = _fullName$split[0],
13168
13152
  name = _fullName$split[1],
13169
13153
  result;
@@ -13171,26 +13155,10 @@ enifed('ember-application/system/resolver', ['exports', 'ember-utils', 'ember-me
13171
13155
  false && !(fullName.split(':').length === 2) && (0, _emberDebug.assert)('Tried to normalize a container name without a colon (:) in it. ' + 'You probably tried to lookup a name that did not contain a type, ' + 'a colon, and a name. A proper lookup name would be `view:post`.', fullName.split(':').length === 2);
13172
13156
 
13173
13157
  if (type !== 'template') {
13174
- result = name;
13175
-
13176
-
13177
- if (result.indexOf('.') > -1) {
13178
- result = result.replace(/\.(.)/g, function (m) {
13179
- return m.charAt(1).toUpperCase();
13180
- });
13181
- }
13182
-
13183
- if (name.indexOf('_') > -1) {
13184
- result = result.replace(/_(.)/g, function (m) {
13185
- return m.charAt(1).toUpperCase();
13186
- });
13187
- }
13158
+ result = name.replace(/(\.|_|-)./g, function (m) {
13159
+ return m.charAt(1).toUpperCase();
13160
+ });
13188
13161
 
13189
- if (name.indexOf('-') > -1) {
13190
- result = result.replace(/-(.)/g, function (m) {
13191
- return m.charAt(1).toUpperCase();
13192
- });
13193
- }
13194
13162
 
13195
13163
  return type + ':' + result;
13196
13164
  } else {
@@ -13316,9 +13284,10 @@ enifed('ember-application/system/resolver', ['exports', 'ember-utils', 'ember-me
13316
13284
  @protected
13317
13285
  */
13318
13286
  useRouterNaming: function (parsedName) {
13319
- parsedName.name = parsedName.name.replace(/\./g, '_');
13320
13287
  if (parsedName.name === 'basic') {
13321
13288
  parsedName.name = '';
13289
+ } else {
13290
+ parsedName.name = parsedName.name.replace(/\./g, '_');
13322
13291
  }
13323
13292
  },
13324
13293
 
@@ -13422,15 +13391,9 @@ enifed('ember-application/system/resolver', ['exports', 'ember-utils', 'ember-me
13422
13391
  @private
13423
13392
  */
13424
13393
  _logLookup: function (found, parsedName) {
13425
- var symbol = void 0,
13426
- padding = void 0;
13427
-
13428
- if (found) {
13429
- symbol = '[✓]';
13430
- } else {
13431
- symbol = '[ ]';
13432
- }
13394
+ var symbol = found ? '[✓]' : '[ ]';
13433
13395
 
13396
+ var padding = void 0;
13434
13397
  if (parsedName.fullName.length > 60) {
13435
13398
  padding = '.';
13436
13399
  } else {
@@ -14430,12 +14393,8 @@ enifed('ember-extension-support/data_adapter', ['exports', 'ember-utils', 'ember
14430
14393
  }
14431
14394
 
14432
14395
  var observer = {
14433
- didChange: function (array, idx, removedCount, addedCount) {
14434
- // Only re-fetch records if the record count changed
14435
- // (which is all we care about as far as model types are concerned).
14436
- if (removedCount > 0 || addedCount > 0) {
14437
- _emberMetal.run.scheduleOnce('actions', this, onChange);
14438
- }
14396
+ didChange: function () {
14397
+ _emberMetal.run.scheduleOnce('actions', this, onChange);
14439
14398
  },
14440
14399
  willChange: function () {
14441
14400
  return this;
@@ -16510,12 +16469,13 @@ enifed('ember-glimmer/components/link-to', ['exports', 'ember-console', 'ember-d
16510
16469
  queryParams: null,
16511
16470
 
16512
16471
  qualifiedRouteName: (0, _emberMetal.computed)('targetRouteName', '_routing.currentState', function () {
16513
- var params = (0, _emberMetal.get)(this, 'params').slice();
16514
- var lastParam = params[params.length - 1];
16472
+ var params = (0, _emberMetal.get)(this, 'params');
16473
+ var paramsLength = params.length;
16474
+ var lastParam = params[paramsLength - 1];
16515
16475
  if (lastParam && lastParam.isQueryParams) {
16516
- params.pop();
16476
+ paramsLength--;
16517
16477
  }
16518
- var onlyQueryParamsSupplied = this[_component.HAS_BLOCK] ? params.length === 0 : params.length === 1;
16478
+ var onlyQueryParamsSupplied = this[_component.HAS_BLOCK] ? paramsLength === 0 : paramsLength === 1;
16519
16479
  if (onlyQueryParamsSupplied) {
16520
16480
  return (0, _emberMetal.get)(this, '_routing.currentRouteName');
16521
16481
  }
@@ -17156,7 +17116,7 @@ enifed('ember-glimmer/environment', ['exports', 'ember-babel', 'ember-utils', 'e
17156
17116
  (0, _emberBabel.inherits)(Environment, _GlimmerEnvironment);
17157
17117
 
17158
17118
  Environment.create = function (options) {
17159
- return new Environment(options);
17119
+ return new this(options);
17160
17120
  };
17161
17121
 
17162
17122
  function Environment(_ref) {
@@ -17629,7 +17589,6 @@ enifed('ember-glimmer/helpers/action', ['exports', 'ember-utils', 'ember-metal',
17629
17589
  positional = args.positional;
17630
17590
 
17631
17591
  var capturedArgs = positional.capture();
17632
- capturedArgs.references;
17633
17592
 
17634
17593
  // The first two argument slots are reserved.
17635
17594
  // pos[0] is the context (or `this`)
@@ -18477,16 +18436,9 @@ enifed('ember-glimmer/helpers/if-unless', ['exports', 'ember-babel', 'ember-debu
18477
18436
  */
18478
18437
  function (vm, _ref) {
18479
18438
  var positional = _ref.positional;
18439
+ false && !(positional.length === 3 || positional.length === 2) && (0, _emberDebug.assert)('The inline form of the `if` helper expects two or three arguments, e.g. ' + '`{{if trialExpired "Expired" expiryDate}}`.', positional.length === 3 || positional.length === 2);
18480
18440
 
18481
- switch (positional.length) {
18482
- case 2:
18483
- return ConditionalHelperReference.create(positional.at(0), positional.at(1), null);
18484
- case 3:
18485
- return ConditionalHelperReference.create(positional.at(0), positional.at(1), positional.at(2));
18486
- default:
18487
- false && !false && (0, _emberDebug.assert)('The inline form of the `if` helper expects two or three arguments, e.g. ' + '`{{if trialExpired "Expired" expiryDate}}`.');
18488
-
18489
- }
18441
+ return ConditionalHelperReference.create(positional.at(0), positional.at(1), positional.at(2));
18490
18442
  }
18491
18443
 
18492
18444
  /**
@@ -18512,26 +18464,16 @@ enifed('ember-glimmer/helpers/if-unless', ['exports', 'ember-babel', 'ember-debu
18512
18464
  ;
18513
18465
  exports.inlineUnless = function (vm, _ref2) {
18514
18466
  var positional = _ref2.positional;
18467
+ false && !(positional.length === 3 || positional.length === 2) && (0, _emberDebug.assert)('The inline form of the `unless` helper expects two or three arguments, e.g. ' + '`{{unless isFirstLogin "Welcome back!"}}`.', positional.length === 3 || positional.length === 2);
18515
18468
 
18516
- switch (positional.length) {
18517
- case 2:
18518
- return ConditionalHelperReference.create(positional.at(0), null, positional.at(1));
18519
- case 3:
18520
- return ConditionalHelperReference.create(positional.at(0), positional.at(2), positional.at(1));
18521
- default:
18522
- false && !false && (0, _emberDebug.assert)('The inline form of the `unless` helper expects two or three arguments, e.g. ' + '`{{unless isFirstLogin "Welcome back!"}}`.');
18523
-
18524
- }
18469
+ return ConditionalHelperReference.create(positional.at(0), positional.at(2), positional.at(1));
18525
18470
  };
18526
18471
 
18527
18472
  var ConditionalHelperReference = function (_CachedReference) {
18528
18473
  (0, _emberBabel.inherits)(ConditionalHelperReference, _CachedReference);
18529
18474
 
18530
- ConditionalHelperReference.create = function (_condRef, _truthyRef, _falsyRef) {
18475
+ ConditionalHelperReference.create = function (_condRef, truthyRef, falsyRef) {
18531
18476
  var condRef = _references.ConditionalReference.create(_condRef);
18532
- var truthyRef = _truthyRef || _references.UNDEFINED_REFERENCE;
18533
- var falsyRef = _falsyRef || _references.UNDEFINED_REFERENCE;
18534
-
18535
18477
  if ((0, _reference.isConst)(condRef)) {
18536
18478
  return condRef.value() ? truthyRef : falsyRef;
18537
18479
  } else {
@@ -18553,11 +18495,7 @@ enifed('ember-glimmer/helpers/if-unless', ['exports', 'ember-babel', 'ember-debu
18553
18495
  }
18554
18496
 
18555
18497
  ConditionalHelperReference.prototype.compute = function () {
18556
- var cond = this.cond,
18557
- truthy = this.truthy,
18558
- falsy = this.falsy;
18559
-
18560
- var branch = cond.value() ? truthy : falsy;
18498
+ var branch = this.cond.value() ? this.truthy : this.falsy;
18561
18499
 
18562
18500
  this.branchTag.update(branch.tag);
18563
18501
 
@@ -21260,22 +21198,10 @@ enifed('ember-glimmer/utils/process-args', ['exports', 'ember-utils', 'ember-gli
21260
21198
  return MutableCell;
21261
21199
  }();
21262
21200
  });
21263
- enifed('ember-glimmer/utils/references', ['exports', '@glimmer/runtime', 'ember-babel', 'ember-utils', 'ember-metal', '@glimmer/reference', 'ember-glimmer/utils/to-bool', 'ember-glimmer/helper'], function (exports, _runtime, _emberBabel, _emberUtils, _emberMetal, _reference, _toBool, _helper) {
21201
+ enifed('ember-glimmer/utils/references', ['exports', 'ember-babel', 'ember-utils', 'ember-metal', '@glimmer/reference', '@glimmer/runtime', 'ember-glimmer/utils/to-bool', 'ember-glimmer/helper'], function (exports, _emberBabel, _emberUtils, _emberMetal, _reference, _runtime, _toBool, _helper) {
21264
21202
  'use strict';
21265
21203
 
21266
- exports.UnboundReference = exports.InternalHelperReference = exports.ClassBasedHelperReference = exports.SimpleHelperReference = exports.ConditionalReference = exports.UpdatablePrimitiveReference = exports.UpdatableReference = exports.NestedPropertyReference = exports.RootPropertyReference = exports.PropertyReference = exports.RootReference = exports.CachedReference = exports.UNDEFINED_REFERENCE = exports.NULL_REFERENCE = exports.UPDATE = undefined;
21267
- Object.defineProperty(exports, 'NULL_REFERENCE', {
21268
- enumerable: true,
21269
- get: function () {
21270
- return _runtime.NULL_REFERENCE;
21271
- }
21272
- });
21273
- Object.defineProperty(exports, 'UNDEFINED_REFERENCE', {
21274
- enumerable: true,
21275
- get: function () {
21276
- return _runtime.UNDEFINED_REFERENCE;
21277
- }
21278
- });
21204
+ exports.UnboundReference = exports.InternalHelperReference = exports.ClassBasedHelperReference = exports.SimpleHelperReference = exports.ConditionalReference = exports.UpdatablePrimitiveReference = exports.UpdatableReference = exports.NestedPropertyReference = exports.RootPropertyReference = exports.PropertyReference = exports.RootReference = exports.CachedReference = exports.UPDATE = undefined;
21279
21205
  var UPDATE = exports.UPDATE = (0, _emberUtils.symbol)('UPDATE');
21280
21206
 
21281
21207
  // @abstract
@@ -21336,7 +21262,7 @@ enifed('ember-glimmer/utils/references', ['exports', '@glimmer/runtime', 'ember-
21336
21262
  RootReference.prototype.get = function (propertyKey) {
21337
21263
  var ref = this.children[propertyKey];
21338
21264
 
21339
- if (!ref) {
21265
+ if (ref === undefined) {
21340
21266
  ref = this.children[propertyKey] = new RootPropertyReference(this.inner, propertyKey);
21341
21267
  }
21342
21268
 
@@ -21544,11 +21470,7 @@ enifed('ember-glimmer/utils/references', ['exports', '@glimmer/runtime', 'ember-
21544
21470
  _result = helper(positionalValue, namedValue);
21545
21471
 
21546
21472
 
21547
- if (_result === null) {
21548
- return _runtime.NULL_REFERENCE;
21549
- } else if (_result === undefined) {
21550
- return _runtime.UNDEFINED_REFERENCE;
21551
- } else if (typeof _result === 'object' || typeof _result === 'function') {
21473
+ if (typeof _result === 'object' && _result !== null || typeof _result === 'function') {
21552
21474
  return new RootReference(_result);
21553
21475
  } else {
21554
21476
  return _runtime.PrimitiveReference.create(_result);
@@ -21648,11 +21570,7 @@ enifed('ember-glimmer/utils/references', ['exports', '@glimmer/runtime', 'ember-
21648
21570
  }
21649
21571
 
21650
21572
  UnboundReference.create = function (value) {
21651
- if (value === null) {
21652
- return _runtime.NULL_REFERENCE;
21653
- } else if (value === undefined) {
21654
- return _runtime.UNDEFINED_REFERENCE;
21655
- } else if (typeof value === 'object' || typeof result === 'function') {
21573
+ if (typeof value === 'object' && value !== null || typeof result === 'function') {
21656
21574
  return new UnboundReference(value);
21657
21575
  } else {
21658
21576
  return _runtime.PrimitiveReference.create(value);
@@ -22207,53 +22125,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
22207
22125
 
22208
22126
  */
22209
22127
 
22210
- function indexOf(array, target, method) {
22211
- var index = -1,
22212
- i;
22213
- // hashes are added to the end of the event array
22214
- // so it makes sense to start searching at the end
22215
- // of the array and search in reverse
22216
- for (i = array.length - 3; i >= 0; i -= 3) {
22217
- if (target === array[i] && method === array[i + 1]) {
22218
- index = i;
22219
- break;
22220
- }
22221
- }
22222
- return index;
22223
- }
22224
-
22225
- function accumulateListeners(obj, eventName, otherActions) {
22226
- var meta$$1 = exports.peekMeta(obj),
22227
- i,
22228
- target,
22229
- method,
22230
- flags,
22231
- actionIndex;
22232
- if (!meta$$1) {
22233
- return;
22234
- }
22235
- var actions = meta$$1.matchingListeners(eventName);
22236
- if (actions === undefined) {
22237
- return;
22238
- }
22239
- var newActions = [];
22240
-
22241
- for (i = actions.length - 3; i >= 0; i -= 3) {
22242
- target = actions[i];
22243
- method = actions[i + 1];
22244
- flags = actions[i + 2];
22245
- actionIndex = indexOf(otherActions, target, method);
22246
-
22247
-
22248
- if (actionIndex === -1) {
22249
- otherActions.push(target, method, flags);
22250
- newActions.push(target, method, flags);
22251
- }
22252
- }
22253
-
22254
- return newActions;
22255
- }
22256
-
22257
22128
  /**
22258
22129
  Add an event listener
22259
22130
 
@@ -22533,7 +22404,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
22533
22404
  }
22534
22405
 
22535
22406
  if (propertyKey === 'content' && meta$$1.isProxy()) {
22536
- meta$$1.getTag().contentDidChange();
22407
+ objectTag.contentDidChange();
22537
22408
  }
22538
22409
 
22539
22410
  if (objectTag !== undefined || propertyTag !== undefined) {
@@ -22541,14 +22412,14 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
22541
22412
  }
22542
22413
  }
22543
22414
 
22544
- var run = void 0;
22415
+ var backburner = void 0;
22545
22416
  function ensureRunloop() {
22546
- if (run === undefined) {
22547
- run = require('ember-metal').run;
22417
+ if (backburner === undefined) {
22418
+ backburner = require('ember-metal').run.backburner;
22548
22419
  }
22549
22420
 
22550
22421
  if (hasViews()) {
22551
- run.backburner.ensureInstance();
22422
+ backburner.ensureInstance();
22552
22423
  }
22553
22424
  }
22554
22425
 
@@ -22582,12 +22453,12 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
22582
22453
  var observers = this.observers;
22583
22454
  var senderGuid = emberUtils.guidFor(sender);
22584
22455
  var keySet = observerSet[senderGuid];
22585
- var index = void 0;
22586
22456
 
22587
- if (!keySet) {
22457
+ if (keySet === undefined) {
22588
22458
  observerSet[senderGuid] = keySet = {};
22589
22459
  }
22590
- index = keySet[keyName];
22460
+
22461
+ var index = keySet[keyName];
22591
22462
  if (index === undefined) {
22592
22463
  index = observers.push({
22593
22464
  sender: sender,
@@ -22601,9 +22472,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
22601
22472
  };
22602
22473
 
22603
22474
  ObserverSet.prototype.flush = function () {
22604
- var observers = this.observers;
22605
- var i = void 0,
22606
- observer = void 0,
22475
+ var observers = this.observers,
22476
+ i;
22477
+ var observer = void 0,
22607
22478
  sender = void 0;
22608
22479
  this.clear();
22609
22480
  for (i = 0; i < observers.length; ++i) {
@@ -22665,7 +22536,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
22665
22536
  */
22666
22537
  function propertyWillChange(obj, keyName, _meta) {
22667
22538
  var meta$$1 = _meta || exports.peekMeta(obj);
22668
-
22669
22539
  if (meta$$1 && !meta$$1.isInitialized(obj)) {
22670
22540
  return;
22671
22541
  }
@@ -22719,11 +22589,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
22719
22589
  }
22720
22590
 
22721
22591
  if (hasMeta && meta$$1.peekWatching(keyName) > 0) {
22722
- if (meta$$1.hasDeps(keyName) && !meta$$1.isSourceDestroying()) {
22723
- dependentKeysDidChange(obj, keyName, meta$$1);
22724
- }
22725
-
22726
- chainsDidChange(obj, keyName, meta$$1, false);
22592
+ dependentKeysDidChange(obj, keyName, meta$$1);
22593
+ chainsDidChange(obj, keyName, meta$$1);
22727
22594
  notifyObservers(obj, keyName, meta$$1);
22728
22595
  }
22729
22596
 
@@ -22743,30 +22610,28 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
22743
22610
  var DID_SEEN = void 0;
22744
22611
  // called whenever a property is about to change to clear the cache of any dependent keys (and notify those properties of changes, etc...)
22745
22612
  function dependentKeysWillChange(obj, depKey, meta$$1) {
22746
- var seen, top;
22747
-
22748
- if (meta$$1.isSourceDestroying()) {
22613
+ if (meta$$1.isSourceDestroying() || !meta$$1.hasDeps(depKey)) {
22749
22614
  return;
22750
22615
  }
22751
- if (meta$$1.hasDeps(depKey)) {
22752
- seen = WILL_SEEN;
22753
- top = !seen;
22754
-
22616
+ var seen = WILL_SEEN;
22617
+ var top = !seen;
22755
22618
 
22756
- if (top) {
22757
- seen = WILL_SEEN = {};
22758
- }
22619
+ if (top) {
22620
+ seen = WILL_SEEN = {};
22621
+ }
22759
22622
 
22760
- iterDeps(propertyWillChange, obj, depKey, seen, meta$$1);
22623
+ iterDeps(propertyWillChange, obj, depKey, seen, meta$$1);
22761
22624
 
22762
- if (top) {
22763
- WILL_SEEN = null;
22764
- }
22625
+ if (top) {
22626
+ WILL_SEEN = null;
22765
22627
  }
22766
22628
  }
22767
22629
 
22768
22630
  // called whenever a property has just changed to update dependent keys
22769
22631
  function dependentKeysDidChange(obj, depKey, meta$$1) {
22632
+ if (meta$$1.isSourceDestroying() || !meta$$1.hasDeps(depKey)) {
22633
+ return;
22634
+ }
22770
22635
  var seen = DID_SEEN;
22771
22636
  var top = !seen;
22772
22637
 
@@ -22815,21 +22680,21 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
22815
22680
 
22816
22681
  function chainsWillChange(obj, keyName, meta$$1) {
22817
22682
  var chainWatchers = meta$$1.readableChainWatchers();
22818
- if (chainWatchers) {
22683
+ if (chainWatchers !== undefined) {
22819
22684
  chainWatchers.notify(keyName, false, propertyWillChange);
22820
22685
  }
22821
22686
  }
22822
22687
 
22823
22688
  function chainsDidChange(obj, keyName, meta$$1) {
22824
22689
  var chainWatchers = meta$$1.readableChainWatchers();
22825
- if (chainWatchers) {
22690
+ if (chainWatchers !== undefined) {
22826
22691
  chainWatchers.notify(keyName, true, propertyDidChange);
22827
22692
  }
22828
22693
  }
22829
22694
 
22830
22695
  function overrideChains(obj, keyName, meta$$1) {
22831
22696
  var chainWatchers = meta$$1.readableChainWatchers();
22832
- if (chainWatchers) {
22697
+ if (chainWatchers !== undefined) {
22833
22698
  chainWatchers.revalidate(keyName);
22834
22699
  }
22835
22700
  }
@@ -22876,10 +22741,53 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
22876
22741
  try {
22877
22742
  callback.call(binding);
22878
22743
  } finally {
22879
- endPropertyChanges.call(binding);
22744
+ endPropertyChanges();
22880
22745
  }
22881
22746
  }
22882
22747
 
22748
+ function indexOf(array, target, method) {
22749
+ var index = -1,
22750
+ i;
22751
+ // hashes are added to the end of the event array
22752
+ // so it makes sense to start searching at the end
22753
+ // of the array and search in reverse
22754
+ for (i = array.length - 3; i >= 0; i -= 3) {
22755
+ if (target === array[i] && method === array[i + 1]) {
22756
+ index = i;
22757
+ break;
22758
+ }
22759
+ }
22760
+ return index;
22761
+ }
22762
+
22763
+ function accumulateListeners(obj, eventName, otherActions, meta$$1) {
22764
+ var actions = meta$$1.matchingListeners(eventName),
22765
+ i,
22766
+ target,
22767
+ method,
22768
+ flags,
22769
+ actionIndex;
22770
+ if (actions === undefined) {
22771
+ return;
22772
+ }
22773
+ var newActions = [];
22774
+
22775
+ for (i = actions.length - 3; i >= 0; i -= 3) {
22776
+ target = actions[i];
22777
+ method = actions[i + 1];
22778
+ flags = actions[i + 2];
22779
+ actionIndex = indexOf(otherActions, target, method);
22780
+
22781
+
22782
+ if (actionIndex === -1) {
22783
+ otherActions.push(target, method, flags);
22784
+ newActions.push(target, method, flags);
22785
+ }
22786
+ }
22787
+
22788
+ return newActions;
22789
+ }
22790
+
22883
22791
  function notifyBeforeObservers(obj, keyName, meta$$1) {
22884
22792
  if (meta$$1.isSourceDestroying()) {
22885
22793
  return;
@@ -22888,13 +22796,11 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
22888
22796
  var eventName = keyName + ':before';
22889
22797
  var listeners = void 0,
22890
22798
  added = void 0;
22891
- if (deferred) {
22799
+ if (deferred > 0) {
22892
22800
  listeners = beforeObserverSet.add(obj, keyName, eventName);
22893
- added = accumulateListeners(obj, eventName, listeners);
22894
- sendEvent(obj, eventName, [obj, keyName], added);
22895
- } else {
22896
- sendEvent(obj, eventName, [obj, keyName]);
22801
+ added = accumulateListeners(obj, eventName, listeners, meta$$1);
22897
22802
  }
22803
+ sendEvent(obj, eventName, [obj, keyName], added);
22898
22804
  }
22899
22805
 
22900
22806
  function notifyObservers(obj, keyName, meta$$1) {
@@ -22904,9 +22810,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
22904
22810
 
22905
22811
  var eventName = keyName + ':change';
22906
22812
  var listeners = void 0;
22907
- if (deferred) {
22813
+ if (deferred > 0) {
22908
22814
  listeners = observerSet.add(obj, keyName, eventName);
22909
- accumulateListeners(obj, eventName, listeners);
22815
+ accumulateListeners(obj, eventName, listeners, meta$$1);
22910
22816
  } else {
22911
22817
  sendEvent(obj, eventName, [obj, keyName]);
22912
22818
  }
@@ -23000,7 +22906,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
23000
22906
 
23001
22907
 
23002
22908
  function defineProperty(obj, keyName, desc, data, meta$$1) {
23003
- if (!meta$$1) {
22909
+ if (meta$$1 === null || meta$$1 === undefined) {
23004
22910
  meta$$1 = meta(obj);
23005
22911
  }
23006
22912
 
@@ -23126,13 +23032,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
23126
23032
  }
23127
23033
  }
23128
23034
 
23129
- // get the chains for the current object. If the current object has
23130
- // chains inherited from the proto they will be cloned and reconfigured for
23131
- // the current object.
23132
- function chainsFor(obj, meta$$1) {
23133
- return (meta$$1 || meta(obj)).writableChains(makeChainNode);
23134
- }
23135
-
23136
23035
  function makeChainNode(obj) {
23137
23036
  return new ChainNode(null, null, obj);
23138
23037
  }
@@ -23147,7 +23046,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
23147
23046
  m.writeWatching(keyPath, counter + 1);
23148
23047
  if (counter === 0) {
23149
23048
  // activate watching first time
23150
- chainsFor(obj, m).add(keyPath);
23049
+ m.writableChains(makeChainNode).add(keyPath);
23151
23050
  }
23152
23051
  }
23153
23052
 
@@ -23163,7 +23062,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
23163
23062
 
23164
23063
  if (counter === 1) {
23165
23064
  m.writeWatching(keyPath, 0);
23166
- chainsFor(obj, m).remove(keyPath);
23065
+ m.readableChains().remove(keyPath);
23167
23066
  } else if (counter > 1) {
23168
23067
  m.writeWatching(keyPath, counter - 1);
23169
23068
  }
@@ -23370,16 +23269,16 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
23370
23269
 
23371
23270
 
23372
23271
  ChainNode.prototype.copy = function (obj) {
23373
- var ret = new ChainNode(null, null, obj);
23272
+ var ret = new ChainNode(null, null, obj),
23273
+ path;
23374
23274
  var paths = this._paths;
23375
- var path = void 0;
23376
23275
  if (paths !== undefined) {
23276
+ path = void 0;
23277
+
23377
23278
  for (path in paths) {
23378
- // this check will also catch non-number vals.
23379
- if (paths[path] <= 0) {
23380
- continue;
23279
+ if (paths[path] > 0) {
23280
+ ret.add(path);
23381
23281
  }
23382
- ret.add(path);
23383
23282
  }
23384
23283
  }
23385
23284
  return ret;
@@ -23483,9 +23382,11 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
23483
23382
 
23484
23383
  // then notify chains...
23485
23384
  var chains = this._chains,
23486
- parentValue;
23487
- var node = void 0;
23385
+ parentValue,
23386
+ node;
23488
23387
  if (chains !== undefined) {
23388
+ node = void 0;
23389
+
23489
23390
  for (var key in chains) {
23490
23391
  node = chains[key];
23491
23392
  if (node !== undefined) {
@@ -23506,10 +23407,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
23506
23407
 
23507
23408
  if (this._parent) {
23508
23409
  this._parent.populateAffected(path, depth + 1, affected);
23509
- } else {
23510
- if (depth > 1) {
23511
- affected.push(this.value(), path);
23512
- }
23410
+ } else if (depth > 1) {
23411
+ affected.push(this.value(), path);
23513
23412
  }
23514
23413
  };
23515
23414
 
@@ -23599,14 +23498,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
23599
23498
  return this.proto !== obj;
23600
23499
  };
23601
23500
 
23602
- Meta.prototype.setTag = function (tag) {
23603
- this._tag = tag;
23604
- };
23605
-
23606
- Meta.prototype.getTag = function () {
23607
- return this._tag;
23608
- };
23609
-
23610
23501
  Meta.prototype.destroy = function () {
23611
23502
  if (this.isMetaDestroyed()) {
23612
23503
  return;
@@ -23618,14 +23509,14 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
23618
23509
  nodeObject = void 0,
23619
23510
  foreignMeta;
23620
23511
  var node = this.readableChains();
23621
- if (node) {
23512
+ if (node !== undefined) {
23622
23513
  NODE_STACK.push(node);
23623
23514
  // process tree
23624
23515
  while (NODE_STACK.length > 0) {
23625
23516
  node = NODE_STACK.pop();
23626
23517
  // push children
23627
23518
  nodes = node._chains;
23628
- if (nodes) {
23519
+ if (nodes !== undefined) {
23629
23520
  for (key in nodes) {
23630
23521
  if (nodes[key] !== undefined) {
23631
23522
  NODE_STACK.push(nodes[key]);
@@ -23636,7 +23527,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
23636
23527
  // remove chainWatcher in node object
23637
23528
  if (node._watching) {
23638
23529
  nodeObject = node._object;
23639
- if (nodeObject) {
23530
+ if (nodeObject !== undefined) {
23640
23531
  foreignMeta = exports.peekMeta(nodeObject);
23641
23532
  // avoid cleaning up chain watchers when both current and
23642
23533
  // foreign objects are being destroyed
@@ -23869,11 +23760,12 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
23869
23760
 
23870
23761
  var ret = this._chains;
23871
23762
  if (ret === undefined) {
23872
- if (this.parent) {
23873
- ret = this._chains = this.parent.writableChains(create).copy(this.source);
23763
+ if (this.parent === undefined) {
23764
+ ret = create(this.source);
23874
23765
  } else {
23875
- ret = this._chains = create(this.source);
23766
+ ret = this.parent.writableChains(create).copy(this.source);
23876
23767
  }
23768
+ this._chains = ret;
23877
23769
  }
23878
23770
  return ret;
23879
23771
  };
@@ -23883,7 +23775,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
23883
23775
  };
23884
23776
 
23885
23777
  Meta.prototype.writeWatching = function (subkey, value) {
23886
- false && !!this.isMetaDestroyed() && emberDebug.assert('Cannot update watchers for `hello` on `' + emberUtils.toString(this.source) + '` after it has been destroyed.', !this.isMetaDestroyed());
23778
+ false && !!this.isMetaDestroyed() && emberDebug.assert('Cannot update watchers for `' + subkey + '` on `' + emberUtils.toString(this.source) + '` after it has been destroyed.', !this.isMetaDestroyed());
23887
23779
 
23888
23780
  var map = this._getOrCreateOwnMap('_watching');
23889
23781
  map[subkey] = value;
@@ -24047,13 +23939,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
24047
23939
  };
24048
23940
  }
24049
23941
 
24050
- function deleteMeta(obj) {
24051
- var meta = exports.peekMeta(obj);
24052
- if (meta !== undefined) {
24053
- meta.destroy();
24054
- }
24055
- }
24056
-
24057
23942
  /**
24058
23943
  Retrieves the meta hash for an object. If `writable` is true ensures the
24059
23944
  hash is writable for this object as well.
@@ -24167,46 +24052,29 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
24167
24052
  return DefaultStore;
24168
24053
  }();
24169
24054
 
24170
- var IS_GLOBAL = /^[A-Z$]/;
24171
24055
  var IS_GLOBAL_PATH = /^[A-Z$].*[\.]/;
24172
- new Cache(1000, function (key) {
24173
- return IS_GLOBAL.test(key);
24174
- });
24175
24056
 
24176
24057
  var isGlobalPathCache = new Cache(1000, function (key) {
24177
24058
  return IS_GLOBAL_PATH.test(key);
24178
24059
  });
24179
- var hasThisCache = new Cache(1000, function (key) {
24180
- return key.lastIndexOf('this.', 0) === 0;
24181
- });
24182
24060
  var firstDotIndexCache = new Cache(1000, function (key) {
24183
24061
  return key.indexOf('.');
24184
24062
  });
24185
24063
 
24186
24064
  var firstKeyCache = new Cache(1000, function (path) {
24187
24065
  var index = firstDotIndexCache.get(path);
24188
- if (index === -1) {
24189
- return path;
24190
- } else {
24191
- return path.slice(0, index);
24192
- }
24066
+ return index === -1 ? path : path.slice(0, index);
24193
24067
  });
24194
24068
 
24195
24069
  var tailPathCache = new Cache(1000, function (path) {
24196
24070
  var index = firstDotIndexCache.get(path);
24197
- if (index !== -1) {
24198
- return path.slice(index + 1);
24199
- }
24071
+ return index === -1 ? undefined : path.slice(index + 1);
24200
24072
  });
24201
24073
 
24202
24074
  function isGlobalPath(path) {
24203
24075
  return isGlobalPathCache.get(path);
24204
24076
  }
24205
24077
 
24206
- function hasThis(path) {
24207
- return hasThisCache.get(path);
24208
- }
24209
-
24210
24078
  function isPath(path) {
24211
24079
  return firstDotIndexCache.get(path) !== -1;
24212
24080
  }
@@ -24269,7 +24137,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
24269
24137
  false && !(arguments.length === 2) && emberDebug.assert('Get must be called with two arguments; an object and a property key', arguments.length === 2);
24270
24138
  false && !(obj !== undefined && obj !== null) && emberDebug.assert('Cannot call get with \'' + keyName + '\' on an undefined object.', obj !== undefined && obj !== null);
24271
24139
  false && !(typeof keyName === 'string') && emberDebug.assert('The key provided to get must be a string, you passed ' + keyName, typeof keyName === 'string');
24272
- false && !!hasThis(keyName) && emberDebug.assert('\'this\' in paths is not supported', !hasThis(keyName));
24140
+ false && !(keyName.lastIndexOf('this.', 0) !== 0) && emberDebug.assert('\'this\' in paths is not supported', keyName.lastIndexOf('this.', 0) !== 0);
24273
24141
  false && !(keyName !== '') && emberDebug.assert('Cannot call `Ember.get` with an empty string', keyName !== '');
24274
24142
 
24275
24143
  var value = obj[keyName];
@@ -24279,7 +24147,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
24279
24147
  return value.get(obj, keyName);
24280
24148
  } else if (isPath(keyName)) {
24281
24149
  return _getPath(obj, keyName);
24282
- } else if (value === undefined && 'object' === typeof obj && !(keyName in obj) && 'function' === typeof obj.unknownProperty) {
24150
+ } else if (value === undefined && 'object' === typeof obj && !(keyName in obj) && typeof obj.unknownProperty === 'function') {
24283
24151
  return obj.unknownProperty(keyName);
24284
24152
  } else {
24285
24153
  return value;
@@ -24350,7 +24218,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
24350
24218
  false && !(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);
24351
24219
  false && !(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');
24352
24220
  false && !(typeof keyName === 'string') && emberDebug.assert('The key provided to set must be a string, you passed ' + keyName, typeof keyName === 'string');
24353
- false && !!hasThis(keyName) && emberDebug.assert('\'this\' in paths is not supported', !hasThis(keyName));
24221
+ false && !(keyName.lastIndexOf('this.', 0) !== 0) && emberDebug.assert('\'this\' in paths is not supported', keyName.lastIndexOf('this.', 0) !== 0);
24354
24222
  false && !!obj.isDestroyed && emberDebug.assert('calling set on destroyed object: ' + emberUtils.toString(obj) + '.' + keyName + ' = ' + emberUtils.toString(value), !obj.isDestroyed);
24355
24223
 
24356
24224
  if (isPath(keyName)) {
@@ -24364,10 +24232,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
24364
24232
  if (isDescriptor) {
24365
24233
  /* computed property */
24366
24234
  currentValue.set(obj, keyName, value);
24367
- } else if (obj.setUnknownProperty && currentValue === undefined && !(keyName in obj)) {
24235
+ } else if (currentValue === undefined && 'object' === typeof obj && !(keyName in obj) && typeof obj.setUnknownProperty === 'function') {
24368
24236
  /* unknown property */
24369
- false && !(typeof obj.setUnknownProperty === 'function') && emberDebug.assert('setUnknownProperty must be a function', typeof obj.setUnknownProperty === 'function');
24370
-
24371
24237
  obj.setUnknownProperty(keyName, value);
24372
24238
  } else if (!(currentValue === value)) {
24373
24239
  meta$$1 = exports.peekMeta(obj);
@@ -24385,31 +24251,20 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
24385
24251
  }
24386
24252
 
24387
24253
  function setPath(root, path, value, tolerant) {
24388
- // get the last part of the path
24389
- var keyName = path.slice(path.lastIndexOf('.') + 1);
24254
+ var parts = path.split('.');
24255
+ var keyName = parts.pop();
24390
24256
 
24391
- // get the first part of the part
24392
- path = path === keyName ? keyName : path.slice(0, path.length - (keyName.length + 1));
24257
+ false && !(keyName.trim().length > 0) && emberDebug.assert('Property set failed: You passed an empty path', keyName.trim().length > 0);
24393
24258
 
24394
- // unless the path is this, look up the first part to
24395
- // get the root
24396
- if (path !== 'this') {
24397
- root = _getPath(root, path);
24398
- }
24259
+ var newPath = parts.join('.');
24399
24260
 
24400
- if (!keyName || keyName.length === 0) {
24401
- throw new emberDebug.Error('Property set failed: You passed an empty path');
24402
- }
24261
+ var newRoot = _getPath(root, newPath);
24403
24262
 
24404
- if (!root) {
24405
- if (tolerant) {
24406
- return;
24407
- } else {
24408
- throw new emberDebug.Error('Property set failed: object in path "' + path + '" could not be found or was destroyed.');
24409
- }
24263
+ if (newRoot) {
24264
+ return set(newRoot, keyName, value);
24265
+ } else if (!tolerant) {
24266
+ throw new emberDebug.Error('Property set failed: object in path "' + newPath + '" could not be found or was destroyed.');
24410
24267
  }
24411
-
24412
- return set(root, keyName, value);
24413
24268
  }
24414
24269
 
24415
24270
  /**
@@ -24459,7 +24314,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
24459
24314
 
24460
24315
  @method expandProperties
24461
24316
  @for Ember
24462
- @private
24317
+ @public
24463
24318
  @param {String} pattern The property pattern to expand.
24464
24319
  @param {Function} callback The callback to invoke. It is invoked once per
24465
24320
  expansion, and is passed the expansion.
@@ -24502,7 +24357,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
24502
24357
  /**
24503
24358
  @module ember-metal
24504
24359
  */
24505
-
24506
24360
  /**
24507
24361
  Starts watching a property on an object. Whenever the property changes,
24508
24362
  invokes `Ember.propertyWillChange` and `Ember.propertyDidChange`. This is the
@@ -24517,33 +24371,26 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
24517
24371
  @param {String} _keyPath
24518
24372
  */
24519
24373
  function watch(obj, _keyPath, m) {
24520
- if (!isPath(_keyPath)) {
24521
- watchKey(obj, _keyPath, m);
24522
- } else {
24374
+ if (isPath(_keyPath)) {
24523
24375
  watchPath(obj, _keyPath, m);
24376
+ } else {
24377
+ watchKey(obj, _keyPath, m);
24524
24378
  }
24525
24379
  }
24526
24380
 
24381
+ function watcherCount(obj, key) {
24382
+ var meta$$1 = exports.peekMeta(obj);
24383
+ return meta$$1 && meta$$1.peekWatching(key) || 0;
24384
+ }
24385
+
24527
24386
  function unwatch(obj, _keyPath, m) {
24528
- if (!isPath(_keyPath)) {
24529
- unwatchKey(obj, _keyPath, m);
24530
- } else {
24387
+ if (isPath(_keyPath)) {
24531
24388
  unwatchPath(obj, _keyPath, m);
24389
+ } else {
24390
+ unwatchKey(obj, _keyPath, m);
24532
24391
  }
24533
24392
  }
24534
24393
 
24535
- /**
24536
- Tears down the meta on an object so that it can be garbage collected.
24537
- Multiple calls will have no effect.
24538
-
24539
- @method destroy
24540
- @for Ember
24541
- @param {Object} obj the object to destroy
24542
- @return {void}
24543
- @private
24544
- */
24545
-
24546
-
24547
24394
  /**
24548
24395
  @module ember
24549
24396
  @submodule ember-metal
@@ -24556,16 +24403,17 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
24556
24403
  function addDependentKeys(desc, obj, keyName, meta) {
24557
24404
  // the descriptor has a list of dependent keys, so
24558
24405
  // add all of its dependent keys.
24559
- var idx = void 0,
24560
- depKey = void 0;
24561
- var depKeys = desc._dependentKeys;
24562
- if (!depKeys) {
24406
+ var depKeys = desc._dependentKeys,
24407
+ idx,
24408
+ depKey;
24409
+ if (depKeys === null || depKeys === undefined) {
24563
24410
  return;
24564
24411
  }
24565
24412
 
24566
24413
  for (idx = 0; idx < depKeys.length; idx++) {
24567
24414
  depKey = depKeys[idx];
24568
24415
  // Increment the number of times depKey depends on keyName.
24416
+
24569
24417
  meta.writeDeps(depKey, keyName, (meta.peekDeps(depKey, keyName) || 0) + 1);
24570
24418
  // Watch the depKey
24571
24419
  watch(obj, depKey, meta);
@@ -24578,7 +24426,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
24578
24426
  var depKeys = desc._dependentKeys,
24579
24427
  idx,
24580
24428
  depKey;
24581
- if (!depKeys) {
24429
+ if (depKeys === null || depKeys === undefined) {
24582
24430
  return;
24583
24431
  }
24584
24432
 
@@ -25471,20 +25319,22 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
25471
25319
  };
25472
25320
 
25473
25321
  var onerror = void 0;
25474
- var onErrorTarget = {
25475
- get onerror() {
25476
- return dispatchOverride || onerror;
25477
- }
25478
- };
25479
-
25480
25322
  // Ember.onerror getter
25481
25323
 
25482
25324
  // Ember.onerror setter
25483
-
25325
+ function setOnerror(handler) {
25326
+ onerror = handler;
25327
+ }
25484
25328
 
25485
25329
  var dispatchOverride = void 0;
25486
25330
  // dispatch error
25487
-
25331
+ function dispatchError(error) {
25332
+ if (dispatchOverride) {
25333
+ dispatchOverride(error);
25334
+ } else {
25335
+ defaultDispatch(error);
25336
+ }
25337
+ }
25488
25338
 
25489
25339
  // allows testing adapter to override dispatch
25490
25340
 
@@ -25520,116 +25370,125 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
25520
25370
  * practice, most use cases satisfy this limitation which is why it is included
25521
25371
  * in ember-metal.
25522
25372
  */
25523
- function WeakMap$1(iterable) {
25524
- var i, _iterable$i, key, value;
25373
+ var WeakMapPolyfill = function () {
25374
+ function WeakMapPolyfill(iterable) {
25375
+ var i, _iterable$i, key, value;
25525
25376
 
25526
- if (!(this instanceof WeakMap$1)) {
25527
- throw new TypeError('Constructor WeakMap requires \'new\'');
25528
- }
25377
+ this._id = emberUtils.GUID_KEY + id++;
25529
25378
 
25530
- this._id = emberUtils.GUID_KEY + id++;
25379
+ if (iterable === null || iterable === undefined) {} else if (Array.isArray(iterable)) {
25380
+ for (i = 0; i < iterable.length; i++) {
25381
+ _iterable$i = iterable[i], key = _iterable$i[0], value = _iterable$i[1];
25531
25382
 
25532
- if (iterable === null || iterable === undefined) {} else if (Array.isArray(iterable)) {
25533
- for (i = 0; i < iterable.length; i++) {
25534
- _iterable$i = iterable[i], key = _iterable$i[0], value = _iterable$i[1];
25535
25383
 
25536
-
25537
- this.set(key, value);
25384
+ this.set(key, value);
25385
+ }
25386
+ } else {
25387
+ throw new TypeError('The weak map constructor polyfill only supports an array argument');
25538
25388
  }
25539
- } else {
25540
- throw new TypeError('The weak map constructor polyfill only supports an array argument');
25541
25389
  }
25542
- }
25543
25390
 
25544
- /*
25545
- * @method get
25546
- * @param key {Object | Function}
25547
- * @return {Any} stored value
25548
- */
25549
- WeakMap$1.prototype.get = function (obj) {
25550
- if (!isObject$1(obj)) {
25551
- return undefined;
25552
- }
25391
+ /*
25392
+ * @method get
25393
+ * @param key {Object | Function}
25394
+ * @return {Any} stored value
25395
+ */
25553
25396
 
25554
- var meta$$1 = exports.peekMeta(obj),
25555
- map;
25556
- if (meta$$1) {
25557
- map = meta$$1.readableWeak();
25397
+ WeakMapPolyfill.prototype.get = function (obj) {
25398
+ if (!isObject$1(obj)) {
25399
+ return undefined;
25400
+ }
25401
+
25402
+ var meta$$1 = exports.peekMeta(obj),
25403
+ map,
25404
+ val;
25405
+ if (meta$$1) {
25406
+ map = meta$$1.readableWeak();
25407
+
25408
+ if (map !== undefined) {
25409
+ val = map[this._id];
25558
25410
 
25559
- if (map) {
25560
- if (map[this._id] === UNDEFINED) {
25561
- return undefined;
25411
+ if (val === UNDEFINED) {
25412
+ return undefined;
25413
+ }
25414
+ return val;
25562
25415
  }
25416
+ }
25417
+ };
25563
25418
 
25564
- return map[this._id];
25419
+ /*
25420
+ * @method set
25421
+ * @param key {Object | Function}
25422
+ * @param value {Any}
25423
+ * @return {WeakMap} the weak map
25424
+ */
25425
+
25426
+ WeakMapPolyfill.prototype.set = function (obj, value) {
25427
+ if (!isObject$1(obj)) {
25428
+ throw new TypeError('Invalid value used as weak map key');
25565
25429
  }
25566
- }
25567
- };
25568
25430
 
25569
- /*
25570
- * @method set
25571
- * @param key {Object | Function}
25572
- * @param value {Any}
25573
- * @return {WeakMap} the weak map
25574
- */
25575
- WeakMap$1.prototype.set = function (obj, value) {
25576
- if (!isObject$1(obj)) {
25577
- throw new TypeError('Invalid value used as weak map key');
25578
- }
25431
+ if (value === undefined) {
25432
+ value = UNDEFINED;
25433
+ }
25579
25434
 
25580
- if (value === undefined) {
25581
- value = UNDEFINED;
25582
- }
25435
+ meta(obj).writableWeak()[this._id] = value;
25583
25436
 
25584
- meta(obj).writableWeak()[this._id] = value;
25437
+ return this;
25438
+ };
25585
25439
 
25586
- return this;
25587
- };
25440
+ /*
25441
+ * @method has
25442
+ * @param key {Object | Function}
25443
+ * @return {boolean} if the key exists
25444
+ */
25445
+
25446
+ WeakMapPolyfill.prototype.has = function (obj) {
25447
+ if (!isObject$1(obj)) {
25448
+ return false;
25449
+ }
25450
+
25451
+ var meta$$1 = exports.peekMeta(obj),
25452
+ map;
25453
+ if (meta$$1) {
25454
+ map = meta$$1.readableWeak();
25455
+
25456
+ if (map !== undefined) {
25457
+ return map[this._id] !== undefined;
25458
+ }
25459
+ }
25588
25460
 
25589
- /*
25590
- * @method has
25591
- * @param key {Object | Function}
25592
- * @return {boolean} if the key exists
25593
- */
25594
- WeakMap$1.prototype.has = function (obj) {
25595
- if (!isObject$1(obj)) {
25596
25461
  return false;
25597
- }
25462
+ };
25598
25463
 
25599
- var meta$$1 = exports.peekMeta(obj),
25600
- map;
25601
- if (meta$$1) {
25602
- map = meta$$1.readableWeak();
25464
+ /*
25465
+ * @method delete
25466
+ * @param key {Object | Function}
25467
+ * @return {boolean} if the key was deleted
25468
+ */
25603
25469
 
25604
- if (map) {
25605
- return map[this._id] !== undefined;
25470
+ WeakMapPolyfill.prototype.delete = function (obj) {
25471
+ if (this.has(obj)) {
25472
+ delete exports.peekMeta(obj).writableWeak()[this._id];
25473
+ return true;
25474
+ } else {
25475
+ return false;
25606
25476
  }
25607
- }
25477
+ };
25608
25478
 
25609
- return false;
25610
- };
25479
+ /*
25480
+ * @method toString
25481
+ * @return {String}
25482
+ */
25611
25483
 
25612
- /*
25613
- * @method delete
25614
- * @param key {Object | Function}
25615
- * @return {boolean} if the key was deleted
25616
- */
25617
- WeakMap$1.prototype.delete = function (obj) {
25618
- if (this.has(obj)) {
25619
- delete meta(obj).writableWeak()[this._id];
25620
- return true;
25621
- } else {
25622
- return false;
25623
- }
25624
- };
25484
+ WeakMapPolyfill.prototype.toString = function () {
25485
+ return '[object WeakMap]';
25486
+ };
25625
25487
 
25626
- /*
25627
- * @method toString
25628
- * @return {String}
25629
- */
25630
- WeakMap$1.prototype.toString = function () {
25631
- return '[object WeakMap]';
25632
- };
25488
+ return WeakMapPolyfill;
25489
+ }();
25490
+
25491
+ var weak_map = emberUtils.HAS_NATIVE_WEAKMAP ? WeakMap : WeakMapPolyfill;
25633
25492
 
25634
25493
  /**
25635
25494
  Returns true if the passed value is null or undefined. This avoids errors
@@ -25778,7 +25637,16 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
25778
25637
  */
25779
25638
 
25780
25639
 
25781
- var backburner = new Backburner(['sync', 'actions', 'destroy'], {
25640
+ var onErrorTarget = {
25641
+ get onerror() {
25642
+ return dispatchError;
25643
+ },
25644
+ set onerror(handler) {
25645
+ return setOnerror(handler);
25646
+ }
25647
+ };
25648
+
25649
+ var backburner$1 = new Backburner(['sync', 'actions', 'destroy'], {
25782
25650
  GUID_KEY: emberUtils.GUID_KEY,
25783
25651
  sync: {
25784
25652
  before: beginPropertyChanges,
@@ -25786,10 +25654,10 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
25786
25654
  },
25787
25655
  defaultQueue: 'actions',
25788
25656
  onBegin: function (current) {
25789
- run$1.currentRunLoop = current;
25657
+ run.currentRunLoop = current;
25790
25658
  },
25791
25659
  onEnd: function (current, next) {
25792
- run$1.currentRunLoop = next;
25660
+ run.currentRunLoop = next;
25793
25661
  },
25794
25662
  onErrorTarget: onErrorTarget,
25795
25663
  onErrorMethod: 'onerror'
@@ -25827,8 +25695,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
25827
25695
  @return {Object} return value from invoking the passed function.
25828
25696
  @public
25829
25697
  */
25830
- function run$1() {
25831
- return backburner.run.apply(backburner, arguments);
25698
+ function run() {
25699
+ return backburner$1.run.apply(backburner$1, arguments);
25832
25700
  }
25833
25701
 
25834
25702
  /**
@@ -25869,8 +25737,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
25869
25737
  when called within an existing loop, no return value is possible.
25870
25738
  @public
25871
25739
  */
25872
- run$1.join = function () {
25873
- return backburner.join.apply(backburner, arguments);
25740
+ run.join = function () {
25741
+ return backburner$1.join.apply(backburner$1, arguments);
25874
25742
  };
25875
25743
 
25876
25744
  /**
@@ -25923,7 +25791,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
25923
25791
  @since 1.4.0
25924
25792
  @public
25925
25793
  */
25926
- run$1.bind = function () {
25794
+ run.bind = function () {
25927
25795
  var _len, curried, _key;
25928
25796
 
25929
25797
  for (_len = arguments.length, curried = Array(_len), _key = 0; _key < _len; _key++) {
@@ -25937,13 +25805,13 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
25937
25805
  args[_key2] = arguments[_key2];
25938
25806
  }
25939
25807
 
25940
- return run$1.join.apply(run$1, curried.concat(args));
25808
+ return run.join.apply(run, curried.concat(args));
25941
25809
  };
25942
25810
  };
25943
25811
 
25944
- run$1.backburner = backburner;
25945
- run$1.currentRunLoop = null;
25946
- run$1.queues = backburner.queueNames;
25812
+ run.backburner = backburner$1;
25813
+ run.currentRunLoop = null;
25814
+ run.queues = backburner$1.queueNames;
25947
25815
 
25948
25816
  /**
25949
25817
  Begins a new RunLoop. Any deferred actions invoked after the begin will
@@ -25960,8 +25828,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
25960
25828
  @return {void}
25961
25829
  @public
25962
25830
  */
25963
- run$1.begin = function () {
25964
- backburner.begin();
25831
+ run.begin = function () {
25832
+ backburner$1.begin();
25965
25833
  };
25966
25834
 
25967
25835
  /**
@@ -25979,8 +25847,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
25979
25847
  @return {void}
25980
25848
  @public
25981
25849
  */
25982
- run$1.end = function () {
25983
- backburner.end();
25850
+ run.end = function () {
25851
+ backburner$1.end();
25984
25852
  };
25985
25853
 
25986
25854
  /**
@@ -26033,20 +25901,20 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
26033
25901
  @return {*} Timer information for use in canceling, see `run.cancel`.
26034
25902
  @public
26035
25903
  */
26036
- run$1.schedule = function () /* queue, target, method */{
26037
- false && !(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());
25904
+ run.schedule = function () /* queue, target, method */{
25905
+ false && !(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());
26038
25906
 
26039
- return backburner.schedule.apply(backburner, arguments);
25907
+ return backburner$1.schedule.apply(backburner$1, arguments);
26040
25908
  };
26041
25909
 
26042
25910
  // Used by global test teardown
26043
- run$1.hasScheduledTimers = function () {
26044
- return backburner.hasTimers();
25911
+ run.hasScheduledTimers = function () {
25912
+ return backburner$1.hasTimers();
26045
25913
  };
26046
25914
 
26047
25915
  // Used by global test teardown
26048
- run$1.cancelTimers = function () {
26049
- backburner.cancelTimers();
25916
+ run.cancelTimers = function () {
25917
+ backburner$1.cancelTimers();
26050
25918
  };
26051
25919
 
26052
25920
  /**
@@ -26066,9 +25934,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
26066
25934
  @return {void}
26067
25935
  @private
26068
25936
  */
26069
- run$1.sync = function () {
26070
- if (backburner.currentInstance) {
26071
- backburner.currentInstance.queues.sync.flush();
25937
+ run.sync = function () {
25938
+ if (backburner$1.currentInstance) {
25939
+ backburner$1.currentInstance.queues.sync.flush();
26072
25940
  }
26073
25941
  };
26074
25942
 
@@ -26098,8 +25966,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
26098
25966
  @return {*} Timer information for use in canceling, see `run.cancel`.
26099
25967
  @public
26100
25968
  */
26101
- run$1.later = function () /*target, method*/{
26102
- return backburner.later.apply(backburner, arguments);
25969
+ run.later = function () /*target, method*/{
25970
+ return backburner$1.later.apply(backburner$1, arguments);
26103
25971
  };
26104
25972
 
26105
25973
  /**
@@ -26115,17 +25983,17 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
26115
25983
  @return {Object} Timer information for use in canceling, see `run.cancel`.
26116
25984
  @public
26117
25985
  */
26118
- run$1.once = function () {
25986
+ run.once = function () {
26119
25987
  var _len3, args, _key3;
26120
25988
 
26121
- false && !(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());
25989
+ false && !(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());
26122
25990
 
26123
25991
  for (_len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
26124
25992
  args[_key3] = arguments[_key3];
26125
25993
  }
26126
25994
 
26127
25995
  args.unshift('actions');
26128
- return backburner.scheduleOnce.apply(backburner, args);
25996
+ return backburner$1.scheduleOnce.apply(backburner$1, args);
26129
25997
  };
26130
25998
 
26131
25999
  /**
@@ -26180,10 +26048,10 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
26180
26048
  @return {Object} Timer information for use in canceling, see `run.cancel`.
26181
26049
  @public
26182
26050
  */
26183
- run$1.scheduleOnce = function () /*queue, target, method*/{
26184
- false && !(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());
26051
+ run.scheduleOnce = function () /*queue, target, method*/{
26052
+ false && !(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());
26185
26053
 
26186
- return backburner.scheduleOnce.apply(backburner, arguments);
26054
+ return backburner$1.scheduleOnce.apply(backburner$1, arguments);
26187
26055
  };
26188
26056
 
26189
26057
  /**
@@ -26249,7 +26117,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
26249
26117
  @return {Object} Timer information for use in canceling, see `run.cancel`.
26250
26118
  @public
26251
26119
  */
26252
- run$1.next = function () {
26120
+ run.next = function () {
26253
26121
  var _len4, args, _key4;
26254
26122
 
26255
26123
  for (_len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
@@ -26257,7 +26125,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
26257
26125
  }
26258
26126
 
26259
26127
  args.push(1);
26260
- return backburner.later.apply(backburner, args);
26128
+ return backburner$1.later.apply(backburner$1, args);
26261
26129
  };
26262
26130
 
26263
26131
  /**
@@ -26315,8 +26183,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
26315
26183
  @return {Boolean} true if canceled or false/undefined if it wasn't found
26316
26184
  @public
26317
26185
  */
26318
- run$1.cancel = function (timer) {
26319
- return backburner.cancel(timer);
26186
+ run.cancel = function (timer) {
26187
+ return backburner$1.cancel(timer);
26320
26188
  };
26321
26189
 
26322
26190
  /**
@@ -26388,8 +26256,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
26388
26256
  @return {Array} Timer information for use in canceling, see `run.cancel`.
26389
26257
  @public
26390
26258
  */
26391
- run$1.debounce = function () {
26392
- return backburner.debounce.apply(backburner, arguments);
26259
+ run.debounce = function () {
26260
+ return backburner$1.debounce.apply(backburner$1, arguments);
26393
26261
  };
26394
26262
 
26395
26263
  /**
@@ -26431,8 +26299,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
26431
26299
  @return {Array} Timer information for use in canceling, see `run.cancel`.
26432
26300
  @public
26433
26301
  */
26434
- run$1.throttle = function () {
26435
- return backburner.throttle.apply(backburner, arguments);
26302
+ run.throttle = function () {
26303
+ return backburner$1.throttle.apply(backburner$1, arguments);
26436
26304
  };
26437
26305
 
26438
26306
  /**
@@ -26445,9 +26313,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
26445
26313
  @param {String} after the name of the queue to add after.
26446
26314
  @private
26447
26315
  */
26448
- run$1._addQueue = function (name, after) {
26449
- if (run$1.queues.indexOf(name) === -1) {
26450
- run$1.queues.splice(run$1.queues.indexOf(after) + 1, 0, name);
26316
+ run._addQueue = function (name, after) {
26317
+ if (run.queues.indexOf(name) === -1) {
26318
+ run.queues.splice(run.queues.indexOf(after) + 1, 0, name);
26451
26319
  }
26452
26320
  };
26453
26321
 
@@ -27358,7 +27226,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
27358
27226
 
27359
27227
  // If we haven't scheduled the binding yet, schedule it.
27360
27228
  if (existingDir === undefined) {
27361
- run$1.schedule('sync', this, '_sync');
27229
+ run.schedule('sync', this, '_sync');
27362
27230
  this._direction = dir;
27363
27231
  }
27364
27232
 
@@ -28665,16 +28533,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
28665
28533
  exports.getOnerror = function () {
28666
28534
  return onerror;
28667
28535
  };
28668
- exports.setOnerror = function (handler) {
28669
- onerror = handler;
28670
- };
28671
- exports.dispatchError = function (error) {
28672
- if (dispatchOverride) {
28673
- dispatchOverride(error);
28674
- } else {
28675
- defaultDispatch(error);
28676
- }
28677
- };
28536
+ exports.setOnerror = setOnerror;
28537
+ exports.dispatchError = dispatchError;
28678
28538
  exports.setDispatchOverride = function (handler) {
28679
28539
  dispatchOverride = handler;
28680
28540
  };
@@ -28696,8 +28556,8 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
28696
28556
  };
28697
28557
  exports.set = set;
28698
28558
  exports.trySet = trySet;
28699
- exports.WeakMap = WeakMap$1;
28700
- exports.accumulateListeners = accumulateListeners;
28559
+ exports.WeakMap = weak_map;
28560
+ exports.WeakMapPolyfill = WeakMapPolyfill;
28701
28561
  exports.addListener = addListener;
28702
28562
  exports.hasListeners = function (obj, eventName) {
28703
28563
  var meta$$1 = exports.peekMeta(obj);
@@ -28735,7 +28595,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
28735
28595
  exports.isPresent = function (obj) {
28736
28596
  return !isBlank(obj);
28737
28597
  };
28738
- exports.run = run$1;
28598
+ exports.run = run;
28739
28599
  exports.ObserverSet = ObserverSet;
28740
28600
  exports.beginPropertyChanges = beginPropertyChanges;
28741
28601
  exports.changeProperties = changeProperties;
@@ -28768,21 +28628,17 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
28768
28628
  exports.watchPath = watchPath;
28769
28629
  exports.unwatchPath = unwatchPath;
28770
28630
  exports.destroy = function (obj) {
28771
- deleteMeta(obj);
28631
+ var meta = exports.peekMeta(obj);
28632
+ if (meta !== undefined) {
28633
+ meta.destroy();
28634
+ }
28772
28635
  };
28773
28636
  exports.isWatching = function (obj, key) {
28774
- if (typeof obj !== 'object' || obj === null) {
28775
- return false;
28776
- }
28777
- var meta$$1 = exports.peekMeta(obj);
28778
- return (meta$$1 && meta$$1.peekWatching(key)) > 0;
28637
+ return watcherCount(obj, key) > 0;
28779
28638
  };
28780
28639
  exports.unwatch = unwatch;
28781
28640
  exports.watch = watch;
28782
- exports.watcherCount = function (obj, key) {
28783
- var meta$$1 = exports.peekMeta(obj);
28784
- return meta$$1 && meta$$1.peekWatching(key) || 0;
28785
- };
28641
+ exports.watcherCount = watcherCount;
28786
28642
  exports.libraries = libraries;
28787
28643
  exports.Libraries = Libraries;
28788
28644
  exports.Map = Map;
@@ -30108,24 +29964,9 @@ enifed('ember-routing/location/util', ['exports'], function (exports) {
30108
29964
  return origin;
30109
29965
  }
30110
29966
  });
30111
- enifed('ember-routing/services/router', ['exports', 'ember-runtime', 'ember-utils', 'ember-routing/system/dsl'], function (exports, _emberRuntime) {
29967
+ enifed('ember-routing/services/router', ['exports', 'ember-runtime', 'ember-routing/utils'], function (exports, _emberRuntime, _utils) {
30112
29968
  'use strict';
30113
29969
 
30114
- function shallowEqual(a, b) {
30115
- var k = void 0;
30116
- for (k in a) {
30117
- if (a.hasOwnProperty(k) && a[k] !== b[k]) {
30118
- return false;
30119
- }
30120
- }
30121
- for (k in b) {
30122
- if (b.hasOwnProperty(k) && a[k] !== b[k]) {
30123
- return false;
30124
- }
30125
- }
30126
- return true;
30127
- }
30128
-
30129
29970
  /**
30130
29971
  The Router service is the public API that provides component/view layer
30131
29972
  access to the router.
@@ -30198,7 +30039,7 @@ enifed('ember-routing/services/router', ['exports', 'ember-runtime', 'ember-util
30198
30039
 
30199
30040
  if (hasQueryParams) {
30200
30041
  this._router._prepareQueryParams(routeName, models, queryParams, true /* fromRouterService */);
30201
- return shallowEqual(queryParams, state.queryParams);
30042
+ return (0, _utils.shallowEqual)(queryParams, state.queryParams);
30202
30043
  }
30203
30044
 
30204
30045
  return true;
@@ -32978,9 +32819,6 @@ enifed('ember-routing/system/router', ['exports', 'ember-utils', 'ember-console'
32978
32819
  errorRouteName = findRouteStateName(route, 'error');
32979
32820
 
32980
32821
  if (errorRouteName) {
32981
- _errorId = (0, _emberUtils.guidFor)(error);
32982
-
32983
- router._markErrorAsHandled(_errorId);
32984
32822
  router.intermediateTransitionTo(errorRouteName, error);
32985
32823
  return false;
32986
32824
  }
@@ -32988,13 +32826,8 @@ enifed('ember-routing/system/router', ['exports', 'ember-utils', 'ember-console'
32988
32826
 
32989
32827
  // Check for an 'error' substate route
32990
32828
  var errorSubstateName = findRouteSubstateName(route, 'error'),
32991
- errorRouteName,
32992
- _errorId,
32993
- errorId;
32829
+ errorRouteName;
32994
32830
  if (errorSubstateName) {
32995
- errorId = (0, _emberUtils.guidFor)(error);
32996
-
32997
- router._markErrorAsHandled(errorId);
32998
32831
  router.intermediateTransitionTo(errorSubstateName, error);
32999
32832
  return false;
33000
32833
  }
@@ -33431,7 +33264,7 @@ enifed('ember-routing/system/router', ['exports', 'ember-utils', 'ember-console'
33431
33264
 
33432
33265
  exports.default = EmberRouter;
33433
33266
  });
33434
- enifed('ember-routing/system/router_state', ['exports', 'ember-utils', 'ember-metal', 'ember-runtime'], function (exports, _emberUtils, _emberMetal, _emberRuntime) {
33267
+ enifed('ember-routing/system/router_state', ['exports', 'ember-utils', 'ember-routing/utils', 'ember-runtime'], function (exports, _emberUtils, _utils, _emberRuntime) {
33435
33268
  'use strict';
33436
33269
 
33437
33270
  exports.default = _emberRuntime.Object.extend({
@@ -33446,35 +33279,17 @@ enifed('ember-routing/system/router_state', ['exports', 'ember-utils', 'ember-me
33446
33279
  return false;
33447
33280
  }
33448
33281
 
33449
- var emptyQueryParams = (0, _emberMetal.isEmpty)(Object.keys(queryParams));
33282
+ if (queryParamsMustMatch && Object.keys(queryParams).length > 0) {
33283
+ visibleQueryParams = (0, _emberUtils.assign)({}, queryParams);
33450
33284
 
33451
- if (queryParamsMustMatch && !emptyQueryParams) {
33452
- visibleQueryParams = {};
33453
-
33454
- (0, _emberUtils.assign)(visibleQueryParams, queryParams);
33455
33285
 
33456
33286
  this.emberRouter._prepareQueryParams(routeName, models, visibleQueryParams);
33457
- return shallowEqual(visibleQueryParams, state.queryParams);
33287
+ return (0, _utils.shallowEqual)(visibleQueryParams, state.queryParams);
33458
33288
  }
33459
33289
 
33460
33290
  return true;
33461
33291
  }
33462
33292
  });
33463
-
33464
- function shallowEqual(a, b) {
33465
- var k = void 0;
33466
- for (k in a) {
33467
- if (a.hasOwnProperty(k) && a[k] !== b[k]) {
33468
- return false;
33469
- }
33470
- }
33471
- for (k in b) {
33472
- if (b.hasOwnProperty(k) && a[k] !== b[k]) {
33473
- return false;
33474
- }
33475
- }
33476
- return true;
33477
- }
33478
33293
  });
33479
33294
  enifed('ember-routing/utils', ['exports', 'ember-utils', 'ember-metal', 'ember-debug'], function (exports, _emberUtils, _emberMetal, _emberDebug) {
33480
33295
  'use strict';
@@ -33628,6 +33443,27 @@ enifed('ember-routing/utils', ['exports', 'ember-utils', 'ember-metal', 'ember-d
33628
33443
 
33629
33444
  return args;
33630
33445
  };
33446
+ exports.shallowEqual = function (a, b) {
33447
+ var k = void 0;
33448
+ var aCount = 0;
33449
+ var bCount = 0;
33450
+ for (k in a) {
33451
+ if (a.hasOwnProperty(k)) {
33452
+ if (a[k] !== b[k]) {
33453
+ return false;
33454
+ }
33455
+ aCount++;
33456
+ }
33457
+ }
33458
+
33459
+ for (k in b) {
33460
+ if (b.hasOwnProperty(k)) {
33461
+ bCount++;
33462
+ }
33463
+ }
33464
+
33465
+ return aCount === bCount;
33466
+ };
33631
33467
 
33632
33468
  var ALL_PERIODS_REGEX = /\./g;
33633
33469
 
@@ -34054,8 +33890,7 @@ enifed('ember-runtime/computed/computed_macros', ['exports', 'ember-metal', 'emb
34054
33890
  exports.match = function (dependentKey, regexp) {
34055
33891
  return (0, _emberMetal.computed)(dependentKey, function () {
34056
33892
  var value = (0, _emberMetal.get)(this, dependentKey);
34057
-
34058
- return typeof value === 'string' ? regexp.test(value) : false;
33893
+ return regexp.test(value);
34059
33894
  });
34060
33895
  }
34061
33896
 
@@ -34468,28 +34303,28 @@ enifed('ember-runtime/computed/computed_macros', ['exports', 'ember-metal', 'emb
34468
34303
  properties[_key] = arguments[_key];
34469
34304
  }
34470
34305
 
34471
- var expandedProperties = expandPropertiesToArray(name, properties),
34306
+ var dependentKeys = expandPropertiesToArray(name, properties),
34472
34307
  _len,
34473
34308
  properties,
34474
34309
  _key;
34475
34310
 
34476
- var computedFunc = (0, _emberMetal.computed)(function () {
34477
- var lastIdx = expandedProperties.length - 1,
34311
+ var computedFunc = new _emberMetal.ComputedProperty(function () {
34312
+ var lastIdx = dependentKeys.length - 1,
34478
34313
  i,
34479
34314
  value;
34480
34315
 
34481
34316
  for (i = 0; i < lastIdx; i++) {
34482
- value = (0, _emberMetal.get)(this, expandedProperties[i]);
34317
+ value = (0, _emberMetal.get)(this, dependentKeys[i]);
34483
34318
 
34484
34319
  if (!predicate(value)) {
34485
34320
  return value;
34486
34321
  }
34487
34322
  }
34488
34323
 
34489
- return (0, _emberMetal.get)(this, expandedProperties[lastIdx]);
34490
- });
34324
+ return (0, _emberMetal.get)(this, dependentKeys[lastIdx]);
34325
+ }, { dependentKeys: dependentKeys });
34491
34326
 
34492
- return computedFunc.property.apply(computedFunc, expandedProperties);
34327
+ return computedFunc;
34493
34328
  };
34494
34329
  }exports.and = generateComputedWithPredicate('and', function (value) {
34495
34330
  return value;
@@ -34988,11 +34823,10 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-utils
34988
34823
  }
34989
34824
 
34990
34825
  return multiArrayMacro(args, function (dependentKeys) {
34991
- var _this3 = this;
34826
+ var _this2 = this;
34992
34827
 
34993
34828
  var arrays = dependentKeys.map(function (dependentKey) {
34994
- var array = (0, _emberMetal.get)(_this3, dependentKey);
34995
-
34829
+ var array = (0, _emberMetal.get)(_this2, dependentKey);
34996
34830
  return (0, _utils.isArray)(array) ? array : [];
34997
34831
  });
34998
34832
 
@@ -35206,19 +35040,15 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-utils
35206
35040
  */
35207
35041
 
35208
35042
  function reduceMacro(dependentKey, callback, initialValue) {
35209
- return (0, _emberMetal.computed)(dependentKey + '.[]', function () {
35210
- var _this = this;
35211
-
35043
+ var cp = new _emberMetal.ComputedProperty(function () {
35212
35044
  var arr = (0, _emberMetal.get)(this, dependentKey);
35213
-
35214
35045
  if (arr === null || typeof arr !== 'object') {
35215
35046
  return initialValue;
35216
35047
  }
35048
+ return arr.reduce(callback, initialValue, this);
35049
+ }, { dependentKeys: [dependentKey + '.[]'] });
35217
35050
 
35218
- return arr.reduce(function (previousValue, currentValue, index, array) {
35219
- return callback.call(_this, previousValue, currentValue, index, array);
35220
- }, initialValue);
35221
- }).readOnly();
35051
+ return cp.readOnly();
35222
35052
  }
35223
35053
 
35224
35054
  function arrayMacro(dependentKey, callback) {
@@ -35231,26 +35061,28 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-utils
35231
35061
  dependentKey += '.[]';
35232
35062
  }
35233
35063
 
35234
- return (0, _emberMetal.computed)(dependentKey, function () {
35064
+ var cp = new _emberMetal.ComputedProperty(function () {
35235
35065
  var value = (0, _emberMetal.get)(this, propertyName);
35236
35066
  if ((0, _utils.isArray)(value)) {
35237
35067
  return (0, _native_array.A)(callback.call(this, value));
35238
35068
  } else {
35239
35069
  return (0, _native_array.A)();
35240
35070
  }
35241
- }).readOnly();
35071
+ }, { dependentKeys: [dependentKey] });
35072
+
35073
+ return cp.readOnly();
35242
35074
  }
35243
35075
 
35244
- function multiArrayMacro(dependentKeys, callback) {
35245
- var args = dependentKeys.map(function (key) {
35076
+ function multiArrayMacro(_dependentKeys, callback) {
35077
+ var dependentKeys = _dependentKeys.map(function (key) {
35246
35078
  return key + '.[]';
35247
35079
  });
35248
35080
 
35249
- args.push(function () {
35250
- return (0, _native_array.A)(callback.call(this, dependentKeys));
35251
- });
35081
+ var cp = new _emberMetal.ComputedProperty(function () {
35082
+ return (0, _native_array.A)(callback.call(this, _dependentKeys));
35083
+ }, { dependentKeys: dependentKeys });
35252
35084
 
35253
- return _emberMetal.computed.apply(this, args).readOnly();
35085
+ return cp.readOnly();
35254
35086
  }function map(dependentKey, callback) {
35255
35087
  return arrayMacro(dependentKey, function (value) {
35256
35088
  return value.map(callback, this);
@@ -35267,12 +35099,12 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-utils
35267
35099
  }
35268
35100
 
35269
35101
  return multiArrayMacro(args, function (dependentKeys) {
35270
- var _this2 = this;
35102
+ var _this = this;
35271
35103
 
35272
35104
  var uniq = (0, _native_array.A)();
35273
35105
 
35274
35106
  dependentKeys.forEach(function (dependentKey) {
35275
- var value = (0, _emberMetal.get)(_this2, dependentKey);
35107
+ var value = (0, _emberMetal.get)(_this, dependentKey);
35276
35108
  if ((0, _utils.isArray)(value)) {
35277
35109
  value.forEach(function (item) {
35278
35110
  if (uniq.indexOf(item) === -1) {
@@ -35289,10 +35121,10 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-utils
35289
35121
 
35290
35122
  function customSort(itemsKey, comparator) {
35291
35123
  return arrayMacro(itemsKey, function (value) {
35292
- var _this4 = this;
35124
+ var _this3 = this;
35293
35125
 
35294
35126
  return value.slice().sort(function (x, y) {
35295
- return comparator.call(_this4, x, y);
35127
+ return comparator.call(_this3, x, y);
35296
35128
  });
35297
35129
  });
35298
35130
  }
@@ -35301,9 +35133,8 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-utils
35301
35133
  // depending on the sortProperties
35302
35134
  function propertySort(itemsKey, sortPropertiesKey) {
35303
35135
  var cp = new _emberMetal.ComputedProperty(function (key) {
35304
- var _this5 = this;
35136
+ var _this4 = this;
35305
35137
 
35306
- var itemsKeyIsAtThis = itemsKey === '@this';
35307
35138
  var sortProperties = (0, _emberMetal.get)(this, sortPropertiesKey);
35308
35139
 
35309
35140
  false && !((0, _utils.isArray)(sortProperties) && sortProperties.every(function (s) {
@@ -35312,46 +35143,43 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-utils
35312
35143
  return typeof s === 'string';
35313
35144
  }));
35314
35145
 
35315
- var normalizedSortProperties = normalizeSortProperties(sortProperties);
35316
-
35317
35146
  // Add/remove property observers as required.
35318
35147
  var activeObserversMap = cp._activeObserverMap || (cp._activeObserverMap = new _emberMetal.WeakMap());
35319
35148
  var activeObservers = activeObserversMap.get(this);
35320
35149
 
35321
- if (activeObservers) {
35150
+ if (activeObservers !== undefined) {
35322
35151
  activeObservers.forEach(function (args) {
35323
35152
  return _emberMetal.removeObserver.apply(undefined, args);
35324
35153
  });
35325
35154
  }
35326
35155
 
35156
+ var itemsKeyIsAtThis = itemsKey === '@this';
35157
+ var items = itemsKeyIsAtThis ? this : (0, _emberMetal.get)(this, itemsKey);
35158
+ if (!(0, _utils.isArray)(items)) {
35159
+ return (0, _native_array.A)();
35160
+ }
35161
+
35327
35162
  function sortPropertyDidChange() {
35328
35163
  this.notifyPropertyChange(key);
35329
35164
  }
35330
35165
 
35166
+ var normalizedSortProperties = normalizeSortProperties(sortProperties);
35331
35167
  activeObservers = normalizedSortProperties.map(function (_ref) {
35332
35168
  var prop = _ref[0];
35333
35169
 
35334
35170
  var path = itemsKeyIsAtThis ? '@each.' + prop : itemsKey + '.@each.' + prop;
35335
- var args = [_this5, path, sortPropertyDidChange];
35336
- _emberMetal.addObserver.apply(undefined, args);
35337
- return args;
35171
+ (0, _emberMetal.addObserver)(_this4, path, sortPropertyDidChange);
35172
+ return [_this4, path, sortPropertyDidChange];
35338
35173
  });
35339
35174
 
35340
35175
  activeObserversMap.set(this, activeObservers);
35341
35176
 
35342
- // Sort and return the array.
35343
- var items = itemsKeyIsAtThis ? this : (0, _emberMetal.get)(this, itemsKey);
35344
-
35345
- if ((0, _utils.isArray)(items)) {
35346
- return sortByNormalizedSortProperties(items, normalizedSortProperties);
35347
- } else {
35348
- return (0, _native_array.A)();
35349
- }
35350
- });
35177
+ return sortByNormalizedSortProperties(items, normalizedSortProperties);
35178
+ }, { dependentKeys: [sortPropertiesKey + '.[]'] });
35351
35179
 
35352
35180
  cp._activeObserverMap = undefined;
35353
35181
 
35354
- return cp.property(sortPropertiesKey + '.[]').readOnly();
35182
+ return cp.readOnly();
35355
35183
  }
35356
35184
 
35357
35185
  function normalizeSortProperties(sortProperties) {
@@ -35539,12 +35367,10 @@ enifed('ember-runtime/copy', ['exports', 'ember-debug', 'ember-runtime/system/ob
35539
35367
  enifed('ember-runtime/ext/function', ['ember-environment', 'ember-metal', 'ember-debug'], function (_emberEnvironment, _emberMetal, _emberDebug) {
35540
35368
  'use strict';
35541
35369
 
35542
- var a_slice = Array.prototype.slice; /**
35543
- @module ember
35544
- @submodule ember-runtime
35545
- */
35546
-
35547
- var FunctionPrototype = Function.prototype;
35370
+ var FunctionPrototype = Function.prototype; /**
35371
+ @module ember
35372
+ @submodule ember-runtime
35373
+ */
35548
35374
 
35549
35375
  if (_emberEnvironment.ENV.EXTEND_PROTOTYPES.Function) {
35550
35376
  /**
@@ -35594,10 +35420,7 @@ enifed('ember-runtime/ext/function', ['ember-environment', 'ember-metal', 'ember
35594
35420
  @public
35595
35421
  */
35596
35422
  FunctionPrototype.property = function () {
35597
- var ret = (0, _emberMetal.computed)(this);
35598
- // ComputedProperty.prototype.property expands properties; no need for us to
35599
- // do so here.
35600
- return ret.property.apply(ret, arguments);
35423
+ return _emberMetal.computed.apply(undefined, Array.prototype.slice.call(arguments).concat([this]));
35601
35424
  };
35602
35425
 
35603
35426
  /**
@@ -35621,14 +35444,7 @@ enifed('ember-runtime/ext/function', ['ember-environment', 'ember-metal', 'ember
35621
35444
  @public
35622
35445
  */
35623
35446
  FunctionPrototype.observes = function () {
35624
- var _len, args, _key;
35625
-
35626
- for (_len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
35627
- args[_key] = arguments[_key];
35628
- }
35629
-
35630
- args.push(this);
35631
- return _emberMetal.observer.apply(this, args);
35447
+ return _emberMetal.observer.apply(undefined, Array.prototype.slice.call(arguments).concat([this]));
35632
35448
  };
35633
35449
 
35634
35450
  FunctionPrototype._observesImmediately = function () {
@@ -35697,10 +35513,7 @@ enifed('ember-runtime/ext/function', ['ember-environment', 'ember-metal', 'ember
35697
35513
  @public
35698
35514
  */
35699
35515
  FunctionPrototype.on = function () {
35700
- var events = a_slice.call(arguments);
35701
- this.__ember_listens__ = events;
35702
-
35703
- return this;
35516
+ return _emberMetal.on.apply(undefined, Array.prototype.slice.call(arguments).concat([this]));
35704
35517
  };
35705
35518
  }
35706
35519
  });
@@ -36567,7 +36380,9 @@ enifed('ember-runtime/mixins/-proxy', ['exports', 'ember-babel', '@glimmer/refer
36567
36380
  this._super.apply(this, arguments);
36568
36381
  var m = (0, _emberMetal.meta)(this);
36569
36382
  m.setProxy();
36570
- m.setTag(new ProxyTag(this));
36383
+ m.writableTag(function (source) {
36384
+ return new ProxyTag(source);
36385
+ });
36571
36386
  },
36572
36387
 
36573
36388
  isTruthy: (0, _computed_macros.bool)('content'),
@@ -36868,14 +36683,14 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-utils', 'ember-metal', '
36868
36683
  normalStartIdx = startIdx < 0 ? previousLength + startIdx : startIdx;
36869
36684
 
36870
36685
  if (cache.firstObject !== undefined && normalStartIdx === 0) {
36871
- (0, _emberMetal.propertyWillChange)(array, 'firstObject');
36872
- (0, _emberMetal.propertyDidChange)(array, 'firstObject');
36686
+ (0, _emberMetal.propertyWillChange)(array, 'firstObject', meta);
36687
+ (0, _emberMetal.propertyDidChange)(array, 'firstObject', meta);
36873
36688
  }
36874
36689
 
36875
36690
  if (cache.lastObject !== undefined) {
36876
36691
  if (previousLength - 1 < normalStartIdx + removedAmount) {
36877
- (0, _emberMetal.propertyWillChange)(array, 'lastObject');
36878
- (0, _emberMetal.propertyDidChange)(array, 'lastObject');
36692
+ (0, _emberMetal.propertyWillChange)(array, 'lastObject', meta);
36693
+ (0, _emberMetal.propertyDidChange)(array, 'lastObject', meta);
36879
36694
  }
36880
36695
  }
36881
36696
  }
@@ -37114,7 +36929,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-utils', 'ember-metal', '
37114
36929
  item = objectAt(content, loc);
37115
36930
 
37116
36931
  if (item) {
37117
- false && !(typeof item === 'object') && (0, _emberDebug.assert)('When using @each to observe the array ' + content + ', the array must return an object', typeof item === 'object');
36932
+ false && !(typeof item === 'object') && (0, _emberDebug.assert)('When using @each to observe the array `' + (0, _emberUtils.toString)(content) + '`, the array must return an object', typeof item === 'object');
37118
36933
 
37119
36934
  (0, _emberMetal._addBeforeObserver)(item, keyName, proxy, 'contentKeyWillChange');
37120
36935
  (0, _emberMetal.addObserver)(item, keyName, proxy, 'contentKeyDidChange');
@@ -37207,10 +37022,10 @@ enifed('ember-runtime/mixins/container_proxy', ['exports', 'ember-metal'], funct
37207
37022
  }
37208
37023
  });
37209
37024
  });
37210
- enifed('ember-runtime/mixins/controller', ['exports', 'ember-metal', 'ember-runtime/mixins/action_handler', 'ember-runtime/mixins/controller_content_model_alias_deprecation'], function (exports, _emberMetal, _action_handler, _controller_content_model_alias_deprecation) {
37025
+ enifed('ember-runtime/mixins/controller', ['exports', 'ember-metal', 'ember-runtime/computed/computed_macros', 'ember-runtime/mixins/action_handler'], function (exports, _emberMetal, _computed_macros, _action_handler) {
37211
37026
  'use strict';
37212
37027
 
37213
- exports.default = _emberMetal.Mixin.create(_action_handler.default, _controller_content_model_alias_deprecation.default, {
37028
+ exports.default = _emberMetal.Mixin.create(_action_handler.default, {
37214
37029
  /* ducktype as a controller */
37215
37030
  isController: true,
37216
37031
 
@@ -37236,43 +37051,17 @@ enifed('ember-runtime/mixins/controller', ['exports', 'ember-metal', 'ember-runt
37236
37051
  model, this property should be used instead of the `content` property.
37237
37052
  @property model
37238
37053
  @public
37239
- */
37240
- model: null,
37241
-
37242
- /**
37243
- @private
37244
37054
  */
37245
- content: (0, _emberMetal.alias)('model')
37246
-
37247
- });
37248
- });
37249
- enifed('ember-runtime/mixins/controller_content_model_alias_deprecation', ['exports', 'ember-metal', 'ember-debug'], function (exports, _emberMetal, _emberDebug) {
37250
- 'use strict';
37055
+ model: null,
37251
37056
 
37252
- exports.default = _emberMetal.Mixin.create({
37253
37057
  /**
37254
37058
  @private
37255
- Moves `content` to `model` at extend time if a `model` is not also specified.
37256
- Note that this currently modifies the mixin themselves, which is technically
37257
- dubious but is practically of little consequence. This may change in the
37258
- future.
37259
- @method willMergeMixin
37260
- @since 1.4.0
37261
37059
  */
37262
- willMergeMixin: function (props) {
37263
- // Calling super is only OK here since we KNOW that
37264
- // there is another Mixin loaded first.
37265
- this._super.apply(this, arguments);
37266
-
37267
- var modelSpecified = !!props.model;
37268
-
37269
- if (props.content && !modelSpecified) {
37270
- props.model = props.content;
37271
- delete props['content'];
37272
-
37273
- false && !false && (0, _emberDebug.deprecate)('Do not specify `content` on a Controller, use `model` instead.', false, { id: 'ember-runtime.will-merge-mixin', until: '3.0.0' });
37274
- }
37275
- }
37060
+ content: (0, _computed_macros.deprecatingAlias)('model', {
37061
+ id: 'ember-runtime.controller.content-alias',
37062
+ until: '2.17.0',
37063
+ url: 'https://emberjs.com/deprecations/v2.x/#toc_controller-content-alias'
37064
+ })
37276
37065
  });
37277
37066
  });
37278
37067
  enifed('ember-runtime/mixins/copyable', ['exports', 'ember-metal', 'ember-debug', 'ember-runtime/mixins/freezable'], function (exports, _emberMetal, _emberDebug, _freezable) {
@@ -37327,7 +37116,10 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-utils', 'ember-meta
37327
37116
  //
37328
37117
 
37329
37118
  function emberA() {
37330
- return (_emberA || (_emberA = (0, _require2.default)('ember-runtime/system/native_array').A))();
37119
+ if (_emberA === undefined) {
37120
+ _emberA = (0, _require2.default)('ember-runtime/system/native_array').A;
37121
+ }
37122
+ return _emberA();
37331
37123
  }
37332
37124
 
37333
37125
  var contexts = [];
@@ -37344,9 +37136,10 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-utils', 'ember-meta
37344
37136
  function iter(key, value) {
37345
37137
  var valueProvided = arguments.length === 2;
37346
37138
 
37347
- return function (item) {
37348
- var cur = (0, _emberMetal.get)(item, key);
37349
- return valueProvided ? value === cur : !!cur;
37139
+ return valueProvided ? function (item) {
37140
+ return value === (0, _emberMetal.get)(item, key);
37141
+ } : function (item) {
37142
+ return !!(0, _emberMetal.get)(item, key);
37350
37143
  };
37351
37144
  }
37352
37145
 
@@ -37501,9 +37294,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-utils', 'ember-meta
37501
37294
  return found !== undefined;
37502
37295
  },
37503
37296
  forEach: function (callback, target) {
37504
- if (typeof callback !== 'function') {
37505
- throw new TypeError();
37506
- }
37297
+ false && !(typeof callback === 'function') && (0, _emberDebug.assert)('Enumerable#forEach expects a function as first argument.', typeof callback === 'function');
37507
37298
 
37508
37299
  var context = popCtx(),
37509
37300
  idx,
@@ -37543,6 +37334,8 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-utils', 'ember-meta
37543
37334
  });
37544
37335
  },
37545
37336
  map: function (callback, target) {
37337
+ false && !(typeof callback === 'function') && (0, _emberDebug.assert)('Enumerable#map expects a function as first argument.', typeof callback === 'function');
37338
+
37546
37339
  var ret = emberA();
37547
37340
 
37548
37341
  this.forEach(function (x, idx, i) {
@@ -37557,6 +37350,8 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-utils', 'ember-meta
37557
37350
  });
37558
37351
  },
37559
37352
  filter: function (callback, target) {
37353
+ false && !(typeof callback === 'function') && (0, _emberDebug.assert)('Enumerable#filter expects a function as first argument.', typeof callback === 'function');
37354
+
37560
37355
  var ret = emberA();
37561
37356
 
37562
37357
  this.forEach(function (x, idx, i) {
@@ -37568,6 +37363,8 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-utils', 'ember-meta
37568
37363
  return ret;
37569
37364
  },
37570
37365
  reject: function (callback, target) {
37366
+ false && !(typeof callback === 'function') && (0, _emberDebug.assert)('Enumerable#reject expects a function as first argument.', typeof callback === 'function');
37367
+
37571
37368
  return this.filter(function () {
37572
37369
  return !callback.apply(target, arguments);
37573
37370
  });
@@ -37585,6 +37382,8 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-utils', 'ember-meta
37585
37382
  return this.reject(use);
37586
37383
  },
37587
37384
  find: function (callback, target) {
37385
+ false && !(typeof callback === 'function') && (0, _emberDebug.assert)('Enumerable#find expects a function as first argument.', typeof callback === 'function');
37386
+
37588
37387
  var len = (0, _emberMetal.get)(this, 'length'),
37589
37388
  idx;
37590
37389
 
@@ -37618,6 +37417,8 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-utils', 'ember-meta
37618
37417
  return this.find(iter.apply(this, arguments));
37619
37418
  },
37620
37419
  every: function (callback, target) {
37420
+ false && !(typeof callback === 'function') && (0, _emberDebug.assert)('Enumerable#every expects a function as first argument.', typeof callback === 'function');
37421
+
37621
37422
  return !this.find(function (x, idx, i) {
37622
37423
  return !callback.call(target, x, idx, i);
37623
37424
  });
@@ -37626,6 +37427,8 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-utils', 'ember-meta
37626
37427
  return this.every(iter.apply(this, arguments));
37627
37428
  },
37628
37429
  any: function (callback, target) {
37430
+ false && !(typeof callback === 'function') && (0, _emberDebug.assert)('Enumerable#any expects a function as first argument.', typeof callback === 'function');
37431
+
37629
37432
  var len = (0, _emberMetal.get)(this, 'length'),
37630
37433
  idx;
37631
37434
  var context = popCtx();
@@ -37651,9 +37454,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-utils', 'ember-meta
37651
37454
  return this.any(iter.apply(this, arguments));
37652
37455
  },
37653
37456
  reduce: function (callback, initialValue, reducerProperty) {
37654
- if (typeof callback !== 'function') {
37655
- throw new TypeError();
37656
- }
37457
+ false && !(typeof callback === 'function') && (0, _emberDebug.assert)('Enumerable#reduce expects a function as first argument.', typeof callback === 'function');
37657
37458
 
37658
37459
  var ret = initialValue;
37659
37460
 
@@ -37677,7 +37478,7 @@ enifed('ember-runtime/mixins/enumerable', ['exports', 'ember-utils', 'ember-meta
37677
37478
  var method = x && x[methodName];
37678
37479
 
37679
37480
  if ('function' === typeof method) {
37680
- ret[idx] = args ? method.apply(x, args) : x[methodName]();
37481
+ ret[idx] = args.length ? method.apply(x, args) : x[methodName]();
37681
37482
  }
37682
37483
  }, this);
37683
37484
 
@@ -38978,7 +38779,7 @@ enifed('ember-runtime/mixins/promise_proxy', ['exports', 'ember-metal', 'ember-d
38978
38779
  let ObjectPromiseProxy = Ember.ObjectProxy.extend(Ember.PromiseProxyMixin);
38979
38780
 
38980
38781
  let proxy = ObjectPromiseProxy.create({
38981
- promise: Ember.RSVP.resolve($.getJSON('/some/remote/data.json'))
38782
+ promise: Ember.RSVP.cast($.getJSON('/some/remote/data.json'))
38982
38783
  });
38983
38784
 
38984
38785
  proxy.then(function(json){
@@ -39001,7 +38802,7 @@ enifed('ember-runtime/mixins/promise_proxy', ['exports', 'ember-metal', 'ember-d
39001
38802
  When the $.getJSON completes, and the promise is fulfilled
39002
38803
  with json, the life cycle attributes will update accordingly.
39003
38804
  Note that $.getJSON doesn't return an ECMA specified promise,
39004
- it is useful to wrap this with an `RSVP.resolve` so that it behaves
38805
+ it is useful to wrap this with an `RSVP.cast` so that it behaves
39005
38806
  as a spec compliant promise.
39006
38807
 
39007
38808
  ```javascript
@@ -40892,7 +40693,7 @@ enifed('ember-runtime/system/string', ['exports', 'ember-metal', 'ember-debug',
40892
40693
  return str.replace(STRING_UNDERSCORE_REGEXP_1, '$1_$2').replace(STRING_UNDERSCORE_REGEXP_2, '_').toLowerCase();
40893
40694
  });
40894
40695
 
40895
- var STRING_CAPITALIZE_REGEXP = /(^|\/)([a-z])/g;
40696
+ var STRING_CAPITALIZE_REGEXP = /(^|\/)([a-z\u00C0-\u024F])/g;
40896
40697
 
40897
40698
  var CAPITALIZE_CACHE = new _emberMetal.Cache(1000, function (str) {
40898
40699
  return str.replace(STRING_CAPITALIZE_REGEXP, function (match) {
@@ -43000,15 +42801,14 @@ enifed("ember-views/system/action_manager", ["exports"], function (exports) {
43000
42801
  */
43001
42802
  ActionManager.registeredActions = {};
43002
42803
  });
43003
- enifed('ember-views/system/event_dispatcher', ['exports', 'ember-utils', 'ember-debug', 'ember-metal', 'ember-runtime', 'ember-views/system/jquery', 'ember-views/system/action_manager', 'ember-views/compat/fallback-view-registry'], function (exports, _emberUtils, _emberDebug, _emberMetal, _emberRuntime, _jquery, _action_manager, _fallbackViewRegistry) {
42804
+ enifed('ember-views/system/event_dispatcher', ['exports', 'ember-utils', 'ember-debug', 'ember-metal', 'ember-runtime', 'ember-views/system/jquery', 'ember-views/system/action_manager', 'ember-environment', 'ember-views/compat/fallback-view-registry'], function (exports, _emberUtils, _emberDebug, _emberMetal, _emberRuntime, _jquery, _action_manager, _emberEnvironment, _fallbackViewRegistry) {
43004
42805
  'use strict';
43005
42806
 
43006
- /**
43007
- @module ember
43008
- @submodule ember-views
43009
- */
42807
+ var ROOT_ELEMENT_CLASS = 'ember-application'; /**
42808
+ @module ember
42809
+ @submodule ember-views
42810
+ */
43010
42811
 
43011
- var ROOT_ELEMENT_CLASS = 'ember-application';
43012
42812
  var ROOT_ELEMENT_SELECTOR = '.' + ROOT_ELEMENT_CLASS;
43013
42813
 
43014
42814
  /**
@@ -43120,18 +42920,8 @@ enifed('ember-views/system/event_dispatcher', ['exports', 'ember-utils', 'ember-
43120
42920
  */
43121
42921
 
43122
42922
  init: function () {
43123
- var _this = this;
43124
-
43125
42923
  this._super();
43126
-
43127
- false && !function () {
43128
- var owner = (0, _emberUtils.getOwner)(_this);
43129
- var environment = owner.lookup('-environment:main');
43130
-
43131
- return environment.isInteractive;
43132
- }() && (0, _emberDebug.assert)('EventDispatcher should never be instantiated in fastboot mode. Please report this as an Ember bug.', function () {
43133
- var owner = (0, _emberUtils.getOwner)(_this);var environment = owner.lookup('-environment:main');return environment.isInteractive;
43134
- }());
42924
+ false && !_emberEnvironment.environment.hasDOM && (0, _emberDebug.assert)('EventDispatcher should never be instantiated in fastboot mode. Please report this as an Ember bug.', _emberEnvironment.environment.hasDOM);
43135
42925
  false && !!('canDispatchToEventManager' in this) && (0, _emberDebug.deprecate)('`canDispatchToEventManager` has been deprecated in ' + this + '.', !('canDispatchToEventManager' in this), {
43136
42926
  id: 'ember-views.event-dispatcher.canDispatchToEventManager',
43137
42927
  until: '2.17.0'
@@ -43652,18 +43442,17 @@ enifed('ember-views/views/core_view', ['exports', 'ember-runtime', 'ember-views/
43652
43442
  hash.view = this;
43653
43443
  return hash;
43654
43444
  },
43655
- trigger: function () {
43445
+ trigger: function (name) {
43446
+ for (_len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
43447
+ args[_key - 1] = arguments[_key];
43448
+ }
43449
+
43656
43450
  this._super.apply(this, arguments);
43657
- var name = arguments[0],
43451
+ var method = this[name],
43452
+ _len,
43658
43453
  args,
43659
- i;
43660
- var method = this[name];
43454
+ _key;
43661
43455
  if (typeof method === 'function') {
43662
- args = new Array(arguments.length - 1);
43663
-
43664
- for (i = 1; i < arguments.length; i++) {
43665
- args[i - 1] = arguments[i];
43666
- }
43667
43456
  return method.apply(this, args);
43668
43457
  }
43669
43458
  },
@@ -43925,7 +43714,6 @@ enifed('ember/index', ['exports', 'require', 'ember-environment', 'node-module',
43925
43714
  _emberMetal.default.hasListeners = _emberMetal.hasListeners;
43926
43715
  _emberMetal.default.watchedEvents = _emberMetal.watchedEvents;
43927
43716
  _emberMetal.default.listenersFor = _emberMetal.listenersFor;
43928
- _emberMetal.default.accumulateListeners = _emberMetal.accumulateListeners;
43929
43717
  _emberMetal.default.isNone = _emberMetal.isNone;
43930
43718
  _emberMetal.default.isEmpty = _emberMetal.isEmpty;
43931
43719
  _emberMetal.default.isBlank = _emberMetal.isBlank;
@@ -44351,7 +44139,7 @@ enifed('ember/index', ['exports', 'require', 'ember-environment', 'node-module',
44351
44139
  enifed("ember/version", ["exports"], function (exports) {
44352
44140
  "use strict";
44353
44141
 
44354
- exports.default = "2.15.3";
44142
+ exports.default = "2.16.0-beta.1";
44355
44143
  });
44356
44144
  enifed('node-module', ['exports'], function(_exports) {
44357
44145
  var IS_NODE = typeof module === 'object' && typeof module.require === 'function';
@@ -47909,110 +47697,105 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
47909
47697
  return child;
47910
47698
  }
47911
47699
 
47912
- var Enumerator = function () {
47913
- function Enumerator(Constructor, input, abortOnReject, label) {
47914
-
47915
- this._instanceConstructor = Constructor;
47916
- this.promise = new Constructor(noop, label);
47917
- this._abortOnReject = abortOnReject;
47700
+ function Enumerator(Constructor, input, abortOnReject, label) {
47701
+ this._instanceConstructor = Constructor;
47702
+ this.promise = new Constructor(noop, label);
47703
+ this._abortOnReject = abortOnReject;
47918
47704
 
47919
- this._init.apply(this, arguments);
47920
- }
47705
+ this._init.apply(this, arguments);
47706
+ }
47921
47707
 
47922
- Enumerator.prototype._init = function (Constructor, input) {
47923
- var len = input.length || 0;
47924
- this.length = len;
47925
- this._remaining = len;
47926
- this._result = new Array(len);
47708
+ Enumerator.prototype._init = function (Constructor, input) {
47709
+ var len = input.length || 0;
47710
+ this.length = len;
47711
+ this._remaining = len;
47712
+ this._result = new Array(len);
47927
47713
 
47928
- this._enumerate(input);
47929
- if (this._remaining === 0) {
47930
- fulfill(this.promise, this._result);
47931
- }
47932
- };
47714
+ this._enumerate(input);
47715
+ if (this._remaining === 0) {
47716
+ fulfill(this.promise, this._result);
47717
+ }
47718
+ };
47933
47719
 
47934
- Enumerator.prototype._enumerate = function (input) {
47935
- var length = this.length,
47936
- i;
47937
- var promise = this.promise;
47720
+ Enumerator.prototype._enumerate = function (input) {
47721
+ var length = this.length,
47722
+ i;
47723
+ var promise = this.promise;
47938
47724
 
47939
- for (i = 0; promise._state === PENDING && i < length; i++) {
47940
- this._eachEntry(input[i], i);
47941
- }
47942
- };
47725
+ for (i = 0; promise._state === PENDING && i < length; i++) {
47726
+ this._eachEntry(input[i], i);
47727
+ }
47728
+ };
47943
47729
 
47944
- Enumerator.prototype._settleMaybeThenable = function (entry, i) {
47945
- var c = this._instanceConstructor,
47946
- then$$1,
47947
- promise;
47948
- var resolve$$1 = c.resolve;
47730
+ Enumerator.prototype._settleMaybeThenable = function (entry, i) {
47731
+ var c = this._instanceConstructor,
47732
+ then$$1,
47733
+ promise;
47734
+ var resolve$$1 = c.resolve;
47949
47735
 
47950
- if (resolve$$1 === resolve$1) {
47951
- then$$1 = getThen(entry);
47736
+ if (resolve$$1 === resolve$1) {
47737
+ then$$1 = getThen(entry);
47952
47738
 
47953
47739
 
47954
- if (then$$1 === then && entry._state !== PENDING) {
47955
- entry._onError = null;
47956
- this._settledAt(entry._state, i, entry._result);
47957
- } else if (typeof then$$1 !== 'function') {
47958
- this._remaining--;
47959
- this._result[i] = this._makeResult(FULFILLED, i, entry);
47960
- } else if (c === Promise) {
47961
- promise = new c(noop);
47740
+ if (then$$1 === then && entry._state !== PENDING) {
47741
+ entry._onError = null;
47742
+ this._settledAt(entry._state, i, entry._result);
47743
+ } else if (typeof then$$1 !== 'function') {
47744
+ this._remaining--;
47745
+ this._result[i] = this._makeResult(FULFILLED, i, entry);
47746
+ } else if (c === Promise) {
47747
+ promise = new c(noop);
47962
47748
 
47963
- handleMaybeThenable(promise, entry, then$$1);
47964
- this._willSettleAt(promise, i);
47965
- } else {
47966
- this._willSettleAt(new c(function (resolve$$1) {
47967
- return resolve$$1(entry);
47968
- }), i);
47969
- }
47749
+ handleMaybeThenable(promise, entry, then$$1);
47750
+ this._willSettleAt(promise, i);
47970
47751
  } else {
47971
- this._willSettleAt(resolve$$1(entry), i);
47752
+ this._willSettleAt(new c(function (resolve$$1) {
47753
+ return resolve$$1(entry);
47754
+ }), i);
47972
47755
  }
47973
- };
47756
+ } else {
47757
+ this._willSettleAt(resolve$$1(entry), i);
47758
+ }
47759
+ };
47974
47760
 
47975
- Enumerator.prototype._eachEntry = function (entry, i) {
47976
- if (isMaybeThenable(entry)) {
47977
- this._settleMaybeThenable(entry, i);
47978
- } else {
47979
- this._remaining--;
47980
- this._result[i] = this._makeResult(FULFILLED, i, entry);
47981
- }
47982
- };
47761
+ Enumerator.prototype._eachEntry = function (entry, i) {
47762
+ if (isMaybeThenable(entry)) {
47763
+ this._settleMaybeThenable(entry, i);
47764
+ } else {
47765
+ this._remaining--;
47766
+ this._result[i] = this._makeResult(FULFILLED, i, entry);
47767
+ }
47768
+ };
47983
47769
 
47984
- Enumerator.prototype._settledAt = function (state, i, value) {
47985
- var promise = this.promise;
47770
+ Enumerator.prototype._settledAt = function (state, i, value) {
47771
+ var promise = this.promise;
47986
47772
 
47987
- if (promise._state === PENDING) {
47988
- if (this._abortOnReject && state === REJECTED) {
47989
- reject(promise, value);
47990
- } else {
47991
- this._remaining--;
47992
- this._result[i] = this._makeResult(state, i, value);
47993
- if (this._remaining === 0) {
47994
- fulfill(promise, this._result);
47995
- }
47773
+ if (promise._state === PENDING) {
47774
+ if (this._abortOnReject && state === REJECTED) {
47775
+ reject(promise, value);
47776
+ } else {
47777
+ this._remaining--;
47778
+ this._result[i] = this._makeResult(state, i, value);
47779
+ if (this._remaining === 0) {
47780
+ fulfill(promise, this._result);
47996
47781
  }
47997
47782
  }
47998
- };
47999
-
48000
- Enumerator.prototype._makeResult = function (state, i, value) {
48001
- return value;
48002
- };
47783
+ }
47784
+ };
48003
47785
 
48004
- Enumerator.prototype._willSettleAt = function (promise, i) {
48005
- var enumerator = this;
47786
+ Enumerator.prototype._makeResult = function (state, i, value) {
47787
+ return value;
47788
+ };
48006
47789
 
48007
- subscribe(promise, undefined, function (value) {
48008
- return enumerator._settledAt(FULFILLED, i, value);
48009
- }, function (reason) {
48010
- return enumerator._settledAt(REJECTED, i, reason);
48011
- });
48012
- };
47790
+ Enumerator.prototype._willSettleAt = function (promise, i) {
47791
+ var enumerator = this;
48013
47792
 
48014
- return Enumerator;
48015
- }();
47793
+ subscribe(promise, undefined, function (value) {
47794
+ return enumerator._settledAt(FULFILLED, i, value);
47795
+ }, function (reason) {
47796
+ return enumerator._settledAt(REJECTED, i, reason);
47797
+ });
47798
+ };
48016
47799
 
48017
47800
  function makeSettledResult(state, position, value) {
48018
47801
  if (state === FULFILLED) {
@@ -48297,55 +48080,117 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
48297
48080
  Useful for tooling.
48298
48081
  @constructor
48299
48082
  */
48083
+ function Promise(resolver, label) {
48084
+ this._id = counter++;
48085
+ this._label = label;
48086
+ this._state = undefined;
48087
+ this._result = undefined;
48088
+ this._subscribers = [];
48300
48089
 
48301
- var Promise = function () {
48302
- function Promise(resolver, label) {
48090
+ config.instrument && instrument('created', this);
48303
48091
 
48304
- this._id = counter++;
48305
- this._label = label;
48306
- this._state = undefined;
48307
- this._result = undefined;
48308
- this._subscribers = [];
48092
+ if (noop !== resolver) {
48093
+ typeof resolver !== 'function' && needsResolver();
48094
+ this instanceof Promise ? initializePromise(this, resolver) : needsNew();
48095
+ }
48096
+ }
48309
48097
 
48310
- config.instrument && instrument('created', this);
48098
+ Promise.prototype._onError = function (reason) {
48099
+ var _this = this;
48311
48100
 
48312
- if (noop !== resolver) {
48313
- typeof resolver !== 'function' && needsResolver();
48314
- this instanceof Promise ? initializePromise(this, resolver) : needsNew();
48101
+ config.after(function () {
48102
+ if (_this._onError) {
48103
+ config.trigger('error', reason, _this._label);
48315
48104
  }
48105
+ });
48106
+ };
48107
+
48108
+ /**
48109
+ `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same
48110
+ as the catch block of a try/catch statement.
48111
+
48112
+ ```js
48113
+ function findAuthor(){
48114
+ throw new Error('couldn\'t find that author');
48115
+ }
48116
+
48117
+ // synchronous
48118
+ try {
48119
+ findAuthor();
48120
+ } catch(reason) {
48121
+ // something went wrong
48316
48122
  }
48123
+
48124
+ // async with promises
48125
+ findAuthor().catch(function(reason){
48126
+ // something went wrong
48127
+ });
48128
+ ```
48129
+
48130
+ @method catch
48131
+ @param {Function} onRejection
48132
+ @param {String} label optional string for labeling the promise.
48133
+ Useful for tooling.
48134
+ @return {Promise}
48135
+ */
48136
+ Promise.prototype.catch = function (onRejection, label) {
48137
+ return this.then(undefined, onRejection, label);
48138
+ };
48317
48139
 
48318
- Promise.prototype._onError = function (reason) {
48319
- var _this = this;
48140
+ /**
48141
+ `finally` will be invoked regardless of the promise's fate just as native
48142
+ try/catch/finally behaves
48143
+
48144
+ Synchronous example:
48145
+
48146
+ ```js
48147
+ findAuthor() {
48148
+ if (Math.random() > 0.5) {
48149
+ throw new Error();
48150
+ }
48151
+ return new Author();
48152
+ }
48153
+
48154
+ try {
48155
+ return findAuthor(); // succeed or fail
48156
+ } catch(error) {
48157
+ return findOtherAuthor();
48158
+ } finally {
48159
+ // always runs
48160
+ // doesn't affect the return value
48161
+ }
48162
+ ```
48163
+
48164
+ Asynchronous example:
48165
+
48166
+ ```js
48167
+ findAuthor().catch(function(reason){
48168
+ return findOtherAuthor();
48169
+ }).finally(function(){
48170
+ // author was either found, or not
48171
+ });
48172
+ ```
48173
+
48174
+ @method finally
48175
+ @param {Function} callback
48176
+ @param {String} label optional string for labeling the promise.
48177
+ Useful for tooling.
48178
+ @return {Promise}
48179
+ */
48180
+ Promise.prototype.finally = function (callback, label) {
48181
+ var promise = this;
48182
+ var constructor = promise.constructor;
48320
48183
 
48321
- config.after(function () {
48322
- if (_this._onError) {
48323
- config.trigger('error', reason, _this._label);
48324
- }
48184
+ return promise.then(function (value) {
48185
+ return constructor.resolve(callback()).then(function () {
48186
+ return value;
48325
48187
  });
48326
- };
48327
-
48328
- Promise.prototype.catch = function (onRejection, label) {
48329
- return this.then(undefined, onRejection, label);
48330
- };
48331
-
48332
- Promise.prototype.finally = function (callback, label) {
48333
- var promise = this;
48334
- var constructor = promise.constructor;
48335
-
48336
- return promise.then(function (value) {
48337
- return constructor.resolve(callback()).then(function () {
48338
- return value;
48339
- });
48340
- }, function (reason) {
48341
- return constructor.resolve(callback()).then(function () {
48342
- throw reason;
48343
- });
48344
- }, label);
48345
- };
48346
-
48347
- return Promise;
48348
- }();
48188
+ }, function (reason) {
48189
+ return constructor.resolve(callback()).then(function () {
48190
+ throw reason;
48191
+ });
48192
+ }, label);
48193
+ };
48349
48194
 
48350
48195
  Promise.cast = resolve$1; // deprecated
48351
48196
  Promise.all = function (entries, label) {