ember-source 2.15.3 → 2.16.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,7 +6,7 @@
6
6
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
7
7
  * @license Licensed under MIT license
8
8
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
9
- * @version 2.15.3
9
+ * @version 2.16.0-beta.1
10
10
  */
11
11
 
12
12
  var enifed, requireModule, Ember;
@@ -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) {