ember-source 2.13.0.beta.1 → 2.13.0.beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,7 +6,7 @@
6
6
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
7
7
  * @license Licensed under MIT license
8
8
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
9
- * @version 2.13.0-beta.1
9
+ * @version 2.13.0-beta.2
10
10
  */
11
11
 
12
12
  var enifed, requireModule, Ember;
@@ -3697,6 +3697,7 @@ enifed('container/container', ['exports', 'ember-debug', 'ember-utils', 'ember-e
3697
3697
  this.fullName = fullName;
3698
3698
  this.normalizedName = normalizedName;
3699
3699
  this.madeToString = undefined;
3700
+ this.injections = undefined;
3700
3701
  }
3701
3702
 
3702
3703
  FactoryManager.prototype.create = function create() {
@@ -3704,7 +3705,13 @@ enifed('container/container', ['exports', 'ember-debug', 'ember-utils', 'ember-e
3704
3705
 
3705
3706
  var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
3706
3707
 
3707
- var injections = injectionsFor(this.container, this.normalizedName);
3708
+ var injections = this.injections;
3709
+ if (injections === undefined) {
3710
+ injections = injectionsFor(this.container, this.normalizedName);
3711
+ if (areInjectionsDynamic(injections) === false) {
3712
+ this.injections = injections;
3713
+ }
3714
+ }
3708
3715
  var props = _emberUtils.assign({}, injections, options);
3709
3716
 
3710
3717
  props[_emberUtils.NAME_KEY] = this.madeToString || (this.madeToString = this.container.registry.makeToString(this.class, this.fullName));
@@ -8347,6 +8354,10 @@ enifed('ember-debug/warn', ['exports', 'ember-console', 'ember-debug/deprecate',
8347
8354
  */
8348
8355
 
8349
8356
  function warn(message, test, options) {
8357
+ if (arguments.length === 2 && typeof test === 'object') {
8358
+ options = test;
8359
+ test = false;
8360
+ }
8350
8361
  if (!options) {
8351
8362
  _emberDebugDeprecate.default(missingOptionsDeprecation, false, {
8352
8363
  id: 'ember-debug.warn-options-missing',
@@ -8363,7 +8374,7 @@ enifed('ember-debug/warn', ['exports', 'ember-console', 'ember-debug/deprecate',
8363
8374
  });
8364
8375
  }
8365
8376
 
8366
- _emberDebugHandlers.invoke.apply(undefined, ['warn'].concat(babelHelpers.slice.call(arguments)));
8377
+ _emberDebugHandlers.invoke('warn', message, test, options);
8367
8378
  }
8368
8379
  });
8369
8380
  enifed('ember-environment/global', ['exports'], function (exports) {
@@ -18759,18 +18770,18 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
18759
18770
  // It is false for the root of a chain (because we have no parent)
18760
18771
  // and for global paths (because the parent node is the object with
18761
18772
  // the observer on it)
18762
- this._watching = value === undefined;
18773
+ var isWatching = this._watching = value === undefined;
18763
18774
 
18764
18775
  this._chains = undefined;
18765
18776
  this._object = undefined;
18766
18777
  this.count = 0;
18767
18778
 
18768
18779
  this._value = value;
18769
- this._paths = {};
18770
- if (this._watching) {
18780
+ this._paths = undefined;
18781
+ if (isWatching === true) {
18771
18782
  var obj = parent.value();
18772
18783
 
18773
- if (!isObject(obj)) {
18784
+ if (!isObject(obj) === true) {
18774
18785
  return;
18775
18786
  }
18776
18787
 
@@ -18781,7 +18792,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
18781
18792
  }
18782
18793
 
18783
18794
  ChainNode.prototype.value = function value() {
18784
- if (this._value === undefined && this._watching) {
18795
+ if (this._value === undefined && this._watching === true) {
18785
18796
  var obj = this._parent.value();
18786
18797
  this._value = lazyGet(obj, this._key);
18787
18798
  }
@@ -18789,7 +18800,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
18789
18800
  };
18790
18801
 
18791
18802
  ChainNode.prototype.destroy = function destroy() {
18792
- if (this._watching) {
18803
+ if (this._watching === true) {
18793
18804
  var obj = this._object;
18794
18805
  if (obj) {
18795
18806
  removeChainWatcher(obj, this._key, this);
@@ -18804,13 +18815,14 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
18804
18815
  var ret = new ChainNode(null, null, obj);
18805
18816
  var paths = this._paths;
18806
18817
  var path = undefined;
18807
-
18808
- for (path in paths) {
18809
- // this check will also catch non-number vals.
18810
- if (paths[path] <= 0) {
18811
- continue;
18818
+ if (paths !== undefined) {
18819
+ for (path in paths) {
18820
+ // this check will also catch non-number vals.
18821
+ if (paths[path] <= 0) {
18822
+ continue;
18823
+ }
18824
+ ret.add(path);
18812
18825
  }
18813
- ret.add(path);
18814
18826
  }
18815
18827
  return ret;
18816
18828
  };
@@ -18819,7 +18831,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
18819
18831
  // path.
18820
18832
 
18821
18833
  ChainNode.prototype.add = function add(path) {
18822
- var paths = this._paths;
18834
+ var paths = this._paths || (this._paths = {});
18823
18835
  paths[path] = (paths[path] || 0) + 1;
18824
18836
 
18825
18837
  var key = firstKey(path);
@@ -18833,6 +18845,9 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
18833
18845
 
18834
18846
  ChainNode.prototype.remove = function remove(path) {
18835
18847
  var paths = this._paths;
18848
+ if (paths === undefined) {
18849
+ return;
18850
+ }
18836
18851
  if (paths[path] > 0) {
18837
18852
  paths[path]--;
18838
18853
  }
@@ -18886,11 +18901,11 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
18886
18901
  };
18887
18902
 
18888
18903
  ChainNode.prototype.notify = function notify(revalidate, affected) {
18889
- if (revalidate && this._watching) {
18904
+ if (revalidate && this._watching === true) {
18890
18905
  var parentValue = this._parent.value();
18891
18906
 
18892
18907
  if (parentValue !== this._object) {
18893
- if (this._object) {
18908
+ if (this._object !== undefined) {
18894
18909
  removeChainWatcher(this._object, this._key, this);
18895
18910
  }
18896
18911
 
@@ -18907,7 +18922,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
18907
18922
  // then notify chains...
18908
18923
  var chains = this._chains;
18909
18924
  var node = undefined;
18910
- if (chains) {
18925
+ if (chains !== undefined) {
18911
18926
  for (var key in chains) {
18912
18927
  node = chains[key];
18913
18928
  if (node !== undefined) {
@@ -18946,12 +18961,12 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
18946
18961
  var meta = _emberMetalMeta.peekMeta(obj);
18947
18962
 
18948
18963
  // check if object meant only to be a prototype
18949
- if (meta && meta.proto === obj) {
18964
+ if (meta !== undefined && meta.proto === obj) {
18950
18965
  return;
18951
18966
  }
18952
18967
 
18953
18968
  // Use `get` if the return value is an EachProxy or an uncacheable value.
18954
- if (isVolatile(obj[key])) {
18969
+ if (isVolatile(obj[key]) === true) {
18955
18970
  return _emberMetalProperty_get.get(obj, key);
18956
18971
  // Otherwise attempt to get the cached value of the computed property
18957
18972
  } else {
@@ -18965,17 +18980,17 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
18965
18980
  function finishChains(obj) {
18966
18981
  // We only create meta if we really have to
18967
18982
  var m = _emberMetalMeta.peekMeta(obj);
18968
- if (m) {
18983
+ if (m !== undefined) {
18969
18984
  m = _emberMetalMeta.meta(obj);
18970
18985
 
18971
18986
  // finish any current chains node watchers that reference obj
18972
18987
  var chainWatchers = m.readableChainWatchers();
18973
- if (chainWatchers) {
18988
+ if (chainWatchers !== undefined) {
18974
18989
  chainWatchers.revalidateAll();
18975
18990
  }
18976
18991
  // ensure that if we have inherited any chains they have been
18977
18992
  // copied onto our own meta.
18978
- if (m.readableChains()) {
18993
+ if (m.readableChains() !== undefined) {
18979
18994
  m.writableChains(_emberMetalWatch_path.makeChainNode);
18980
18995
  }
18981
18996
  }
@@ -19853,6 +19868,9 @@ enifed('ember-metal/events', ['exports', 'ember-utils', 'ember-metal/meta', 'emb
19853
19868
  return;
19854
19869
  }
19855
19870
  var actions = meta.matchingListeners(eventName);
19871
+ if (actions === undefined) {
19872
+ return;
19873
+ }
19856
19874
  var newActions = [];
19857
19875
 
19858
19876
  for (var i = actions.length - 3; i >= 0; i -= 3) {
@@ -20070,7 +20088,8 @@ enifed('ember-metal/events', ['exports', 'ember-utils', 'ember-metal/meta', 'emb
20070
20088
  if (!meta) {
20071
20089
  return false;
20072
20090
  }
20073
- return meta.matchingListeners(eventName).length > 0;
20091
+ var matched = meta.matchingListeners(eventName);
20092
+ return matched !== undefined && matched.length > 0;
20074
20093
  }
20075
20094
 
20076
20095
  /**
@@ -20176,7 +20195,7 @@ enifed('ember-metal/expand_properties', ['exports', 'ember-debug'], function (ex
20176
20195
  */
20177
20196
 
20178
20197
  function expandProperties(pattern, callback) {
20179
- _emberDebug.assert('A computed property key must be a string', typeof pattern === 'string');
20198
+ _emberDebug.assert('A computed property key must be a string, you passed ' + typeof pattern + ' ' + pattern, typeof pattern === 'string');
20180
20199
  _emberDebug.assert('Brace expanded properties cannot contain spaces, e.g. "user.{firstName, lastName}" should be "user.{firstName,lastName}"', pattern.indexOf(' ') === -1);
20181
20200
 
20182
20201
  var unbalancedNestedError = 'Brace expanded properties have to be balanced and cannot be nested, pattern: ' + pattern;
@@ -22227,23 +22246,24 @@ enifed('ember-metal/meta_listeners', ['exports'], function (exports) {
22227
22246
 
22228
22247
  matchingListeners: function (eventName) {
22229
22248
  var pointer = this;
22230
- var result = [];
22231
- while (pointer) {
22249
+ var result = undefined;
22250
+ while (pointer !== undefined) {
22232
22251
  var listeners = pointer._listeners;
22233
- if (listeners) {
22252
+ if (listeners !== undefined) {
22234
22253
  for (var index = 0; index < listeners.length - 3; index += 4) {
22235
22254
  if (listeners[index] === eventName) {
22255
+ result = result || [];
22236
22256
  pushUniqueListener(result, listeners, index);
22237
22257
  }
22238
22258
  }
22239
22259
  }
22240
- if (pointer._listenersFinalized) {
22260
+ if (pointer._listenersFinalized === true) {
22241
22261
  break;
22242
22262
  }
22243
22263
  pointer = pointer.parent;
22244
22264
  }
22245
22265
  var sus = this._suspendedListeners;
22246
- if (sus) {
22266
+ if (sus !== undefined && result !== undefined) {
22247
22267
  for (var susIndex = 0; susIndex < sus.length - 2; susIndex += 3) {
22248
22268
  if (eventName === sus[susIndex]) {
22249
22269
  for (var resultIndex = 0; resultIndex < result.length - 2; resultIndex += 3) {
@@ -26561,7 +26581,7 @@ enifed('ember-routing/location/history_location', ['exports', 'ember-metal', 'em
26561
26581
  baseURL = baseURL.replace(/\/$/, '');
26562
26582
 
26563
26583
  // remove baseURL and rootURL from start of path
26564
- var url = path.replace(new RegExp('^' + baseURL + '(?=/|$)'), '').replace(new RegExp('^' + rootURL + '(?=/|$)'), '');
26584
+ var url = path.replace(new RegExp('^' + baseURL + '(?=/|$)'), '').replace(new RegExp('^' + rootURL + '(?=/|$)'), '').replace(/\/\/$/g, '/'); // remove extra slashes
26565
26585
 
26566
26586
  var search = location.search || '';
26567
26587
  url += search + this.getHash();
@@ -41401,13 +41421,15 @@ enifed('ember-testing/setup_for_testing', ['exports', 'ember-debug', 'ember-view
41401
41421
  _emberTestingTestAdapter.setAdapter(typeof self.QUnit === 'undefined' ? new _emberTestingAdaptersAdapter.default() : new _emberTestingAdaptersQunit.default());
41402
41422
  }
41403
41423
 
41404
- _emberViews.jQuery(document).off('ajaxSend', _emberTestingTestPending_requests.incrementPendingRequests);
41405
- _emberViews.jQuery(document).off('ajaxComplete', _emberTestingTestPending_requests.decrementPendingRequests);
41424
+ if (_emberViews.jQuery) {
41425
+ _emberViews.jQuery(document).off('ajaxSend', _emberTestingTestPending_requests.incrementPendingRequests);
41426
+ _emberViews.jQuery(document).off('ajaxComplete', _emberTestingTestPending_requests.decrementPendingRequests);
41406
41427
 
41407
- _emberTestingTestPending_requests.clearPendingRequests();
41428
+ _emberTestingTestPending_requests.clearPendingRequests();
41408
41429
 
41409
- _emberViews.jQuery(document).on('ajaxSend', _emberTestingTestPending_requests.incrementPendingRequests);
41410
- _emberViews.jQuery(document).on('ajaxComplete', _emberTestingTestPending_requests.decrementPendingRequests);
41430
+ _emberViews.jQuery(document).on('ajaxSend', _emberTestingTestPending_requests.incrementPendingRequests);
41431
+ _emberViews.jQuery(document).on('ajaxComplete', _emberTestingTestPending_requests.decrementPendingRequests);
41432
+ }
41411
41433
  }
41412
41434
  });
41413
41435
  enifed('ember-testing/support', ['exports', 'ember-debug', 'ember-views', 'ember-environment'], function (exports, _emberDebug, _emberViews, _emberEnvironment) {
@@ -44207,6 +44229,7 @@ enifed('ember-views/system/event_dispatcher', ['exports', 'ember-utils', 'ember-
44207
44229
 
44208
44230
  rootElement.on(event + '.ember', '[data-ember-action]', function (evt) {
44209
44231
  var attributes = evt.currentTarget.attributes;
44232
+ var handledActions = [];
44210
44233
 
44211
44234
  for (var i = 0; i < attributes.length; i++) {
44212
44235
  var attr = attributes.item(i);
@@ -44218,8 +44241,12 @@ enifed('ember-views/system/event_dispatcher', ['exports', 'ember-utils', 'ember-
44218
44241
  // We have to check for action here since in some cases, jQuery will trigger
44219
44242
  // an event on `removeChild` (i.e. focusout) after we've already torn down the
44220
44243
  // action handlers for the view.
44221
- if (action && action.eventName === eventName) {
44244
+ if (action && action.eventName === eventName && handledActions.indexOf(action) === -1) {
44222
44245
  action.handler(evt);
44246
+ // Action handlers can mutate state which in turn creates new attributes on the element.
44247
+ // This effect could cause the `data-ember-action` attribute to shift down and be invoked twice.
44248
+ // To avoid this, we keep track of which actions have been handled.
44249
+ handledActions.push(action);
44223
44250
  }
44224
44251
  }
44225
44252
  }
@@ -45426,7 +45453,7 @@ enifed('ember/index', ['exports', 'require', 'ember-environment', 'ember-utils',
45426
45453
  enifed("ember/version", ["exports"], function (exports) {
45427
45454
  "use strict";
45428
45455
 
45429
- exports.default = "2.13.0-beta.1";
45456
+ exports.default = "2.13.0-beta.2";
45430
45457
  });
45431
45458
  enifed('internal-test-helpers/apply-mixins', ['exports', 'ember-utils'], function (exports, _emberUtils) {
45432
45459
  'use strict';
@@ -759,7 +759,9 @@ var i=this.registry.resolve(n)
759
759
  if(void 0!==i){var o=new R(this,i,e,n)
760
760
  return this.factoryManagerCache[n]=o,o}}}
761
761
  var R=(function(){function e(e,t,n){this.container=e,this.class=t,this.fullName=n}return e.prototype.create=function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0]
762
- return y(this.class,e,this.container,this.fullName)},e}(),function(){function e(e,t,n,r){this.container=e,this.class=t,this.fullName=n,this.normalizedName=r,this.madeToString=void 0}return e.prototype.create=function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],t=g(this.container,this.normalizedName),r=n.assign({},t,e)
762
+ return y(this.class,e,this.container,this.fullName)},e}(),function(){function e(e,t,n,r){this.container=e,this.class=t,this.fullName=n,this.normalizedName=r,this.madeToString=void 0,this.injections=void 0}return e.prototype.create=function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],t=this.injections
763
+ void 0===t&&(t=g(this.container,this.normalizedName),d(t)===!1&&(this.injections=t))
764
+ var r=n.assign({},t,e)
763
765
  if(r[n.NAME_KEY]=this.madeToString||(this.madeToString=this.container.registry.makeToString(this.class,this.fullName)),!this.class.create)throw new Error("Failed to create an instance of '"+this.normalizedName+"'. Most likely an improperly defined class or an invalid module export.")
764
766
  var i=this.class.prototype
765
767
  return i&&_(i,this.container),this.class.create(r)},e}())}),s("container/index",["exports","container/registry","container/container"],function(e,t,n){"use strict"
@@ -982,7 +984,7 @@ var E=!1
982
984
  e.runningNonEmberDebugJS=E,E&&d("Please use `ember.debug.js` instead of `ember.js` for development and debugging.")}),s("ember-debug/run-in-debug",["exports"],function(e){"use strict"}),s("ember-debug/testing",["exports"],function(e){"use strict"
983
985
  function t(){return r}function n(e){r=!!e}e.isTesting=t,e.setTesting=n
984
986
  var r=!1}),s("ember-debug/warn",["exports","ember-console","ember-debug/deprecate","ember-debug/handlers"],function(e,t,n,r){"use strict"
985
- function i(e){r.registerHandler("warn",e)}function o(e,t,i){i||n.default(s,!1,{id:"ember-debug.warn-options-missing",until:"3.0.0",url:"http://emberjs.com/deprecations/v2.x/#toc_ember-debug-function-options"}),i&&!i.id&&n.default(a,!1,{id:"ember-debug.warn-id-missing",until:"3.0.0",url:"http://emberjs.com/deprecations/v2.x/#toc_ember-debug-function-options"}),r.invoke.apply(void 0,["warn"].concat(c.slice.call(arguments)))}e.registerHandler=i,e.default=o,i(function(e,n){t.default.warn("WARNING: "+e),"trace"in t.default&&t.default.trace()})
987
+ function i(e){r.registerHandler("warn",e)}function o(e,t,i){2===arguments.length&&"object"==typeof t&&(i=t,t=!1),i||n.default(s,!1,{id:"ember-debug.warn-options-missing",until:"3.0.0",url:"http://emberjs.com/deprecations/v2.x/#toc_ember-debug-function-options"}),i&&!i.id&&n.default(a,!1,{id:"ember-debug.warn-id-missing",until:"3.0.0",url:"http://emberjs.com/deprecations/v2.x/#toc_ember-debug-function-options"}),r.invoke("warn",e,t,i)}e.registerHandler=i,e.default=o,i(function(e,n){t.default.warn("WARNING: "+e),"trace"in t.default&&t.default.trace()})
986
988
  var s="When calling `Ember.warn` you must provide an `options` hash as the third parameter. `options` should include an `id` property."
987
989
  e.missingOptionsDeprecation=s
988
990
  var a="When calling `Ember.warn` you must provide `id` in options."
@@ -1561,12 +1563,12 @@ var r=function(){function e(){this.data=Object.create(null)}return e.prototype.g
1561
1563
  function s(e){return e.match(d)[0]}function a(e){return"object"==typeof e&&e}function u(e){return!(a(e)&&e.isDescriptor&&e._volatile===!1)}function l(){return new m}function c(e,t,i){var o=n.meta(e)
1562
1564
  o.writableChainWatchers(l).add(t,i),r.watchKey(e,t,o)}function p(e,t,i,o){if(a(e)){var s=o||n.peekMeta(e)
1563
1565
  s&&s.readableChainWatchers()&&(s=n.meta(e),s.readableChainWatchers().remove(t,i),r.unwatchKey(e,t,s))}}function h(e,r){if(a(e)){var o=n.peekMeta(e)
1564
- if(!o||o.proto!==e){if(u(e[r]))return t.get(e,r)
1566
+ if(void 0===o||o.proto!==e){if(u(e[r])===!0)return t.get(e,r)
1565
1567
  var s=o.readableCache()
1566
1568
  return s?i.cacheFor.get(s,r):void 0}}}function f(e){var t=n.peekMeta(e)
1567
- if(t){t=n.meta(e)
1569
+ if(void 0!==t){t=n.meta(e)
1568
1570
  var r=t.readableChainWatchers()
1569
- r&&r.revalidateAll(),t.readableChains()&&t.writableChains(o.makeChainNode)}}e.finishChains=f
1571
+ void 0!==r&&r.revalidateAll(),void 0!==t.readableChains()&&t.writableChains(o.makeChainNode)}}e.finishChains=f
1570
1572
  var d=/^([^\.]+)/,m=function(){function e(){this.chains=Object.create(null)}return e.prototype.add=function(e,t){var n=this.chains[e]
1571
1573
  void 0===n?this.chains[e]=[t]:n.push(t)},e.prototype.remove=function(e,t){var n=this.chains[e]
1572
1574
  if(n)for(var r=0;r<n.length;r++)if(n[r]===t){n.splice(r,1)
@@ -1577,24 +1579,26 @@ if(void 0!==r&&0!==r.length){var i=void 0
1577
1579
  n&&(i=[])
1578
1580
  for(var o=0;o<r.length;o++)r[o].notify(t,i)
1579
1581
  if(void 0!==n)for(var o=0;o<i.length;o+=2){var s=i[o],a=i[o+1]
1580
- n(s,a)}}},e}(),v=function(){function e(e,t,n){if(this._parent=e,this._key=t,this._watching=void 0===n,this._chains=void 0,this._object=void 0,this.count=0,this._value=n,this._paths={},this._watching){var r=e.value()
1581
- if(!a(r))return
1582
- this._object=r,c(this._object,this._key,this)}}return e.prototype.value=function(){if(void 0===this._value&&this._watching){var e=this._parent.value()
1583
- this._value=h(e,this._key)}return this._value},e.prototype.destroy=function(){if(this._watching){var e=this._object
1582
+ n(s,a)}}},e}(),v=function(){function e(e,t,n){this._parent=e,this._key=t
1583
+ var r=this._watching=void 0===n
1584
+ if(this._chains=void 0,this._object=void 0,this.count=0,this._value=n,this._paths=void 0,r===!0){var i=e.value()
1585
+ if(!a(i)==!0)return
1586
+ this._object=i,c(this._object,this._key,this)}}return e.prototype.value=function(){if(void 0===this._value&&this._watching===!0){var e=this._parent.value()
1587
+ this._value=h(e,this._key)}return this._value},e.prototype.destroy=function(){if(this._watching===!0){var e=this._object
1584
1588
  e&&p(e,this._key,this),this._watching=!1}},e.prototype.copy=function(t){var n=new e(null,null,t),r=this._paths,i=void 0
1585
- for(i in r)r[i]<=0||n.add(i)
1586
- return n},e.prototype.add=function(e){var t=this._paths
1589
+ if(void 0!==r)for(i in r)r[i]<=0||n.add(i)
1590
+ return n},e.prototype.add=function(e){var t=this._paths||(this._paths={})
1587
1591
  t[e]=(t[e]||0)+1
1588
1592
  var n=s(e),r=e.slice(n.length+1)
1589
1593
  this.chain(n,r)},e.prototype.remove=function(e){var t=this._paths
1590
- t[e]>0&&t[e]--
1594
+ if(void 0!==t){t[e]>0&&t[e]--
1591
1595
  var n=s(e),r=e.slice(n.length+1)
1592
- this.unchain(n,r)},e.prototype.chain=function(t,n){var r=this._chains,i=void 0
1596
+ this.unchain(n,r)}},e.prototype.chain=function(t,n){var r=this._chains,i=void 0
1593
1597
  void 0===r?r=this._chains=Object.create(null):i=r[t],void 0===i&&(i=r[t]=new e(this,t,void 0)),i.count++,n&&(t=s(n),n=n.slice(t.length+1),i.chain(t,n))},e.prototype.unchain=function(e,t){var n=this._chains,r=n[e]
1594
1598
  if(t&&t.length>1){var i=s(t),o=t.slice(i.length+1)
1595
- r.unchain(i,o)}r.count--,r.count<=0&&(n[r._key]=void 0,r.destroy())},e.prototype.notify=function(e,t){if(e&&this._watching){var n=this._parent.value()
1596
- n!==this._object&&(this._object&&p(this._object,this._key,this),a(n)?(this._object=n,c(n,this._key,this)):this._object=void 0),this._value=void 0}var r=this._chains,i=void 0
1597
- if(r)for(var o in r)i=r[o],void 0!==i&&i.notify(e,t)
1599
+ r.unchain(i,o)}r.count--,r.count<=0&&(n[r._key]=void 0,r.destroy())},e.prototype.notify=function(e,t){if(e&&this._watching===!0){var n=this._parent.value()
1600
+ n!==this._object&&(void 0!==this._object&&p(this._object,this._key,this),a(n)?(this._object=n,c(n,this._key,this)):this._object=void 0),this._value=void 0}var r=this._chains,i=void 0
1601
+ if(void 0!==r)for(var o in r)i=r[o],void 0!==i&&i.notify(e,t)
1598
1602
  t&&this._parent&&this._parent.populateAffected(this._key,1,t)},e.prototype.populateAffected=function(e,t,n){this._key&&(e=this._key+"."+e),this._parent?this._parent.populateAffected(e,t+1,n):t>1&&n.push(this.value(),e)},e}()
1599
1603
  e.removeChainWatcher=p,e.ChainNode=v}),s("ember-metal/computed",["exports","ember-utils","ember-debug","ember-metal/property_set","ember-metal/meta","ember-metal/expand_properties","ember-metal/properties","ember-metal/property_events","ember-metal/dependent_keys"],function(e,t,n,r,i,o,s,a,u){"use strict"
1600
1604
  function l(e,t){this.isDescriptor=!0,"function"==typeof e?this._getter=e:(this._getter=e.get,this._setter=e.set),this._dependentKeys=void 0,this._suspended=void 0,this._meta=void 0,this._volatile=!1,this._dependentKeys=t&&t.dependentKeys,this._readOnly=!1}function c(e){var t=void 0
@@ -1637,13 +1641,16 @@ var l=function(e){var t=e.stack,n=e.message
1637
1641
  return t&&!t.includes(n)&&(t=n+"\n"+t),t},c=void 0,p=void 0}),s("ember-metal/events",["exports","ember-utils","ember-metal/meta","ember-debug","ember-metal/meta_listeners"],function(e,t,n,r,i){"use strict"
1638
1642
  function o(e,t,n){for(var r=-1,i=e.length-3;i>=0;i-=3)if(t===e[i]&&n===e[i+1]){r=i
1639
1643
  break}return r}function s(e,t,r){var i=n.peekMeta(e)
1640
- if(i){for(var s=i.matchingListeners(t),a=[],u=s.length-3;u>=0;u-=3){var l=s[u],c=s[u+1],p=s[u+2],h=o(r,l,c)
1641
- h===-1&&(r.push(l,c,p),a.push(l,c,p))}return a}}function a(e,t,r,o,s){o||"function"!=typeof r||(o=r,r=null)
1644
+ if(i){var s=i.matchingListeners(t)
1645
+ if(void 0!==s){for(var a=[],u=s.length-3;u>=0;u-=3){var l=s[u],c=s[u+1],p=s[u+2],h=o(r,l,c)
1646
+ h===-1&&(r.push(l,c,p),a.push(l,c,p))}return a}}}function a(e,t,r,o,s){o||"function"!=typeof r||(o=r,r=null)
1642
1647
  var a=0
1643
1648
  s&&(a|=i.ONCE),n.meta(e).addToListeners(t,r,o,a),"function"==typeof e.didAddListener&&e.didAddListener(t,r,o)}function u(e,t,r,i){i||"function"!=typeof r||(i=r,r=null),n.meta(e).removeFromListeners(t,r,i,function(){"function"==typeof e.didRemoveListener&&e.didRemoveListener.apply(e,arguments)})}function l(e,t,n,r,i){return c(e,[t],n,r,i)}function c(e,t,r,i,o){return i||"function"!=typeof r||(i=r,r=null),n.meta(e).suspendListeners(t,r,i,o)}function p(e){return n.meta(e).watchedEvents()}function h(e,r,o,s){if(!s){var a=n.peekMeta(e)
1644
1649
  s=a&&a.matchingListeners(r)}if(s&&0!==s.length){for(var l=s.length-3;l>=0;l-=3){var c=s[l],p=s[l+1],h=s[l+2]
1645
1650
  p&&(h&i.SUSPENDED||(h&i.ONCE&&u(e,r,c,p),c||(c=e),"string"==typeof p?o?t.applyStr(c,p,o):c[p]():o?p.apply(c,o):p.call(c)))}return!0}}function f(e,t){var r=n.peekMeta(e)
1646
- return!!r&&r.matchingListeners(t).length>0}function d(e,t){var r=[],i=n.peekMeta(e),o=i&&i.matchingListeners(t)
1651
+ if(!r)return!1
1652
+ var i=r.matchingListeners(t)
1653
+ return void 0!==i&&i.length>0}function d(e,t){var r=[],i=n.peekMeta(e),o=i&&i.matchingListeners(t)
1647
1654
  if(!o)return r
1648
1655
  for(var s=0;s<o.length;s+=3){var a=o[s],u=o[s+1]
1649
1656
  r.push([a,u])}return r}function m(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n]
@@ -1792,11 +1799,11 @@ if(t&&(this._listeners=this._listeners.concat(t)),e._listenersFinalized)break
1792
1799
  e=e.parent}this._listenersFinalized=!0}},removeFromListeners:function(e,t,n,r){for(var i=this;i;){var o=i._listeners
1793
1800
  if(o)for(var s=o.length-4;s>=0;s-=4)if(o[s]===e&&(!n||o[s+1]===t&&o[s+2]===n)){if(i!==this)return this._finalizeListeners(),this.removeFromListeners(e,t,n)
1794
1801
  "function"==typeof r&&r(e,t,o[s+2]),o.splice(s,4)}if(i._listenersFinalized)break
1795
- i=i.parent}},matchingListeners:function(e){for(var n=this,i=[];n;){var o=n._listeners
1796
- if(o)for(var s=0;s<o.length-3;s+=4)o[s]===e&&t(i,o,s)
1797
- if(n._listenersFinalized)break
1802
+ i=i.parent}},matchingListeners:function(e){for(var n=this,i=void 0;void 0!==n;){var o=n._listeners
1803
+ if(void 0!==o)for(var s=0;s<o.length-3;s+=4)o[s]===e&&(i=i||[],t(i,o,s))
1804
+ if(n._listenersFinalized===!0)break
1798
1805
  n=n.parent}var a=this._suspendedListeners
1799
- if(a)for(var u=0;u<a.length-2;u+=3)if(e===a[u])for(var l=0;l<i.length-2;l+=3)i[l]===a[u+1]&&i[l+1]===a[u+2]&&(i[l+2]|=r)
1806
+ if(void 0!==a&&void 0!==i)for(var u=0;u<a.length-2;u+=3)if(e===a[u])for(var l=0;l<i.length-2;l+=3)i[l]===a[u+1]&&i[l+1]===a[u+2]&&(i[l+2]|=r)
1800
1807
  return i},suspendListeners:function(e,t,n,r){var i=this._suspendedListeners
1801
1808
  i||(i=this._suspendedListeners=[])
1802
1809
  for(var o=0;o<e.length;o++)i.push(e[o],t,n)
@@ -2010,7 +2017,7 @@ var e=document.querySelector("base"),n=""
2010
2017
  e&&(n=e.getAttribute("href")),t.set(this,"baseURL",n),t.set(this,"location",t.get(this,"location")||window.location),this._popstateHandler=void 0},initState:function(){var e=t.get(this,"history")||window.history
2011
2018
  t.set(this,"history",e),e&&"state"in e&&(this.supportsHistory=!0),this.replaceState(this.formatURL(this.getURL()))},rootURL:"/",getURL:function(){var e=t.get(this,"location"),n=e.pathname,r=t.get(this,"rootURL"),i=t.get(this,"baseURL")
2012
2019
  r=r.replace(/\/$/,""),i=i.replace(/\/$/,"")
2013
- var o=n.replace(new RegExp("^"+i+"(?=/|$)"),"").replace(new RegExp("^"+r+"(?=/|$)"),""),s=e.search||""
2020
+ var o=n.replace(new RegExp("^"+i+"(?=/|$)"),"").replace(new RegExp("^"+r+"(?=/|$)"),"").replace(/\/\/$/g,"/"),s=e.search||""
2014
2021
  return o+=s+this.getHash()},setURL:function(e){var t=this.getState()
2015
2022
  e=this.formatURL(e),t&&t.path===e||this.pushState(e)},replaceURL:function(e){var t=this.getState()
2016
2023
  e=this.formatURL(e),t&&t.path===e||this.replaceState(e)},getState:function(){return this.supportsHistory?t.get(this,"history").state:this._historyState},pushState:function(e){var n={path:e}
@@ -2799,9 +2806,9 @@ if(r.isNone(n)?n=r.get(this,"rootElement"):r.set(this,"rootElement",n),n=o.defau
2799
2806
  var a=this._getViewRegistry()
2800
2807
  for(i in s)s.hasOwnProperty(i)&&this.setupHandler(n,i,s[i],a)},setupHandler:function(e,t,n,r){var i=this
2801
2808
  null!==n&&(e.on(t+".ember",".ember-view",function(e,t){var o=r[this.id],s=!0,a=i.canDispatchToEventManager?i._findNearestEventManager(o,n):null
2802
- return a&&a!==t?s=i._dispatchEvent(a,e,n,o):o&&(s=i._bubbleEvent(o,e,n)),s}),e.on(t+".ember","[data-ember-action]",function(e){for(var t=e.currentTarget.attributes,r=0;r<t.length;r++){var i=t.item(r),o=i.name
2803
- if(o.lastIndexOf("data-ember-action-",0)!==-1){var a=s.default.registeredActions[i.value]
2804
- a&&a.eventName===n&&a.handler(e)}}}))},_getViewRegistry:function(){var e=t.getOwner(this),n=e&&e.lookup("-view-registry:main")||u.default
2809
+ return a&&a!==t?s=i._dispatchEvent(a,e,n,o):o&&(s=i._bubbleEvent(o,e,n)),s}),e.on(t+".ember","[data-ember-action]",function(e){for(var t=e.currentTarget.attributes,r=[],i=0;i<t.length;i++){var o=t.item(i),a=o.name
2810
+ if(a.lastIndexOf("data-ember-action-",0)!==-1){var u=s.default.registeredActions[o.value]
2811
+ u&&u.eventName===n&&r.indexOf(u)===-1&&(u.handler(e),r.push(u))}}}))},_getViewRegistry:function(){var e=t.getOwner(this),n=e&&e.lookup("-view-registry:main")||u.default
2805
2812
  return n},_findNearestEventManager:function(e,t){for(var n=null;e&&(n=r.get(e,"eventManager"),!n||!n[t]);)e=r.get(e,"parentView")
2806
2813
  return n},_dispatchEvent:function(e,t,n,i){var o=!0,s=e[n]
2807
2814
  return"function"==typeof s?(o=r.run(e,s,t,i),t.stopPropagation()):o=this._bubbleEvent(i,t,n),o},_bubbleEvent:function(e,t,n){return e.handleEvent(n,t)},destroy:function(){var e=r.get(this,"rootElement")
@@ -2867,7 +2874,7 @@ g.map=l.map,g.sort=l.sort,g.setDiff=l.setDiff,g.mapBy=l.mapBy,g.filter=l.filter,
2867
2874
  var y=o.default.Handlebars=o.default.Handlebars||{},b=o.default.HTMLBars=o.default.HTMLBars||{},_=y.Utils=y.Utils||{}
2868
2875
  if(Object.defineProperty(y,"SafeString",{get:c._getSafeString}),b.template=y.template=c.template,_.escapeExpression=c.escapeExpression,l.String.htmlSafe=c.htmlSafe,l.String.isHTMLSafe=c.isHTMLSafe,b.makeBoundHelper=c.makeBoundHelper,Object.defineProperty(o.default,"TEMPLATES",{get:c.getTemplates,set:c.setTemplates,configurable:!1,enumerable:!1}),e.VERSION=p.default,o.default.VERSION=p.default,o.libraries.registerCoreLibrary("Ember",p.default),o.default.create=s.deprecateFunc("Ember.create is deprecated in favor of Object.create",{id:"ember-metal.ember-create",until:"3.0.0"},Object.create),o.default.keys=s.deprecateFunc("Ember.keys is deprecated in favor of Object.keys",{id:"ember-metal.ember.keys",until:"3.0.0"},Object.keys),o.default.$=h.jQuery,o.default.ViewTargetActionSupport=h.ViewTargetActionSupport,o.default.ViewUtils={isSimpleClick:h.isSimpleClick,getViewElement:h.getViewElement,getViewBounds:h.getViewBounds,getViewClientRects:h.getViewClientRects,getViewBoundingClientRect:h.getViewBoundingClientRect,getRootViews:h.getRootViews,getChildViews:h.getChildViews},o.default.TextSupport=h.TextSupport,o.default.ComponentLookup=h.ComponentLookup,o.default.EventDispatcher=h.EventDispatcher,o.default.Location=f.Location,o.default.AutoLocation=f.AutoLocation,o.default.HashLocation=f.HashLocation,o.default.HistoryLocation=f.HistoryLocation,o.default.NoneLocation=f.NoneLocation,o.default.controllerFor=f.controllerFor,o.default.generateControllerFactory=f.generateControllerFactory,o.default.generateController=f.generateController,o.default.RouterDSL=f.RouterDSL,o.default.Router=f.Router,o.default.Route=f.Route,o.default.Application=d.Application,o.default.ApplicationInstance=d.ApplicationInstance,o.default.Engine=d.Engine,o.default.EngineInstance=d.EngineInstance,o.default.DefaultResolver=o.default.Resolver=d.Resolver,l.runLoadHooks("Ember.Application",d.Application),o.default.DataAdapter=m.DataAdapter,o.default.ContainerDebugAdapter=m.ContainerDebugAdapter,t.has("ember-template-compiler")&&t.default("ember-template-compiler"),t.has("ember-testing")){var w=t.default("ember-testing")
2869
2876
  o.default.Test=w.Test,o.default.Test.Adapter=w.Adapter,o.default.Test.QUnitAdapter=w.QUnitAdapter,o.default.setupForTesting=w.setupForTesting}l.runLoadHooks("Ember"),e.default=o.default,"object"==typeof module&&module.exports?module.exports=o.default:n.context.exports.Ember=n.context.exports.Em=o.default}),s("ember/version",["exports"],function(e){"use strict"
2870
- e.default="2.13.0-beta.1"}),s("internal-test-helpers/apply-mixins",["exports","ember-utils"],function(e,t){"use strict"
2877
+ e.default="2.13.0-beta.2"}),s("internal-test-helpers/apply-mixins",["exports","ember-utils"],function(e,t){"use strict"
2871
2878
  function n(e){return Array.isArray(e.cases)&&"function"==typeof e.generate}function r(e){for(var r=arguments.length,i=Array(r>1?r-1:0),o=1;o<r;o++)i[o-1]=arguments[o]
2872
2879
  return i.forEach(function(r){var i=void 0
2873
2880
  n(r)?function(){var e=r
@@ -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.13.0-beta.1
9
+ * @version 2.13.0-beta.2
10
10
  */
11
11
 
12
12
  var enifed, requireModule, Ember;
@@ -3642,12 +3642,19 @@ enifed('container/container', ['exports', 'ember-debug', 'ember-utils', 'ember-e
3642
3642
  this.fullName = fullName;
3643
3643
  this.normalizedName = normalizedName;
3644
3644
  this.madeToString = undefined;
3645
+ this.injections = undefined;
3645
3646
  }
3646
3647
 
3647
3648
  FactoryManager.prototype.create = function create() {
3648
3649
  var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
3649
3650
 
3650
- var injections = injectionsFor(this.container, this.normalizedName);
3651
+ var injections = this.injections;
3652
+ if (injections === undefined) {
3653
+ injections = injectionsFor(this.container, this.normalizedName);
3654
+ if (areInjectionsDynamic(injections) === false) {
3655
+ this.injections = injections;
3656
+ }
3657
+ }
3651
3658
  var props = _emberUtils.assign({}, injections, options);
3652
3659
 
3653
3660
  props[_emberUtils.NAME_KEY] = this.madeToString || (this.madeToString = this.container.registry.makeToString(this.class, this.fullName));
@@ -8200,6 +8207,10 @@ enifed('ember-debug/warn', ['exports', 'ember-console', 'ember-debug/deprecate',
8200
8207
  */
8201
8208
 
8202
8209
  function warn(message, test, options) {
8210
+ if (arguments.length === 2 && typeof test === 'object') {
8211
+ options = test;
8212
+ test = false;
8213
+ }
8203
8214
  if (!options) {
8204
8215
  _emberDebugDeprecate.default(missingOptionsDeprecation, false, {
8205
8216
  id: 'ember-debug.warn-options-missing',
@@ -8216,7 +8227,7 @@ enifed('ember-debug/warn', ['exports', 'ember-console', 'ember-debug/deprecate',
8216
8227
  });
8217
8228
  }
8218
8229
 
8219
- _emberDebugHandlers.invoke.apply(undefined, ['warn'].concat(babelHelpers.slice.call(arguments)));
8230
+ _emberDebugHandlers.invoke('warn', message, test, options);
8220
8231
  }
8221
8232
  });
8222
8233
  enifed('ember-environment/global', ['exports'], function (exports) {
@@ -18034,18 +18045,18 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
18034
18045
  // It is false for the root of a chain (because we have no parent)
18035
18046
  // and for global paths (because the parent node is the object with
18036
18047
  // the observer on it)
18037
- this._watching = value === undefined;
18048
+ var isWatching = this._watching = value === undefined;
18038
18049
 
18039
18050
  this._chains = undefined;
18040
18051
  this._object = undefined;
18041
18052
  this.count = 0;
18042
18053
 
18043
18054
  this._value = value;
18044
- this._paths = {};
18045
- if (this._watching) {
18055
+ this._paths = undefined;
18056
+ if (isWatching === true) {
18046
18057
  var obj = parent.value();
18047
18058
 
18048
- if (!isObject(obj)) {
18059
+ if (!isObject(obj) === true) {
18049
18060
  return;
18050
18061
  }
18051
18062
 
@@ -18056,7 +18067,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
18056
18067
  }
18057
18068
 
18058
18069
  ChainNode.prototype.value = function value() {
18059
- if (this._value === undefined && this._watching) {
18070
+ if (this._value === undefined && this._watching === true) {
18060
18071
  var obj = this._parent.value();
18061
18072
  this._value = lazyGet(obj, this._key);
18062
18073
  }
@@ -18064,7 +18075,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
18064
18075
  };
18065
18076
 
18066
18077
  ChainNode.prototype.destroy = function destroy() {
18067
- if (this._watching) {
18078
+ if (this._watching === true) {
18068
18079
  var obj = this._object;
18069
18080
  if (obj) {
18070
18081
  removeChainWatcher(obj, this._key, this);
@@ -18079,13 +18090,14 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
18079
18090
  var ret = new ChainNode(null, null, obj);
18080
18091
  var paths = this._paths;
18081
18092
  var path = undefined;
18082
-
18083
- for (path in paths) {
18084
- // this check will also catch non-number vals.
18085
- if (paths[path] <= 0) {
18086
- continue;
18093
+ if (paths !== undefined) {
18094
+ for (path in paths) {
18095
+ // this check will also catch non-number vals.
18096
+ if (paths[path] <= 0) {
18097
+ continue;
18098
+ }
18099
+ ret.add(path);
18087
18100
  }
18088
- ret.add(path);
18089
18101
  }
18090
18102
  return ret;
18091
18103
  };
@@ -18094,7 +18106,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
18094
18106
  // path.
18095
18107
 
18096
18108
  ChainNode.prototype.add = function add(path) {
18097
- var paths = this._paths;
18109
+ var paths = this._paths || (this._paths = {});
18098
18110
  paths[path] = (paths[path] || 0) + 1;
18099
18111
 
18100
18112
  var key = firstKey(path);
@@ -18108,6 +18120,9 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
18108
18120
 
18109
18121
  ChainNode.prototype.remove = function remove(path) {
18110
18122
  var paths = this._paths;
18123
+ if (paths === undefined) {
18124
+ return;
18125
+ }
18111
18126
  if (paths[path] > 0) {
18112
18127
  paths[path]--;
18113
18128
  }
@@ -18161,11 +18176,11 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
18161
18176
  };
18162
18177
 
18163
18178
  ChainNode.prototype.notify = function notify(revalidate, affected) {
18164
- if (revalidate && this._watching) {
18179
+ if (revalidate && this._watching === true) {
18165
18180
  var parentValue = this._parent.value();
18166
18181
 
18167
18182
  if (parentValue !== this._object) {
18168
- if (this._object) {
18183
+ if (this._object !== undefined) {
18169
18184
  removeChainWatcher(this._object, this._key, this);
18170
18185
  }
18171
18186
 
@@ -18182,7 +18197,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
18182
18197
  // then notify chains...
18183
18198
  var chains = this._chains;
18184
18199
  var node = undefined;
18185
- if (chains) {
18200
+ if (chains !== undefined) {
18186
18201
  for (var key in chains) {
18187
18202
  node = chains[key];
18188
18203
  if (node !== undefined) {
@@ -18221,12 +18236,12 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
18221
18236
  var meta = _emberMetalMeta.peekMeta(obj);
18222
18237
 
18223
18238
  // check if object meant only to be a prototype
18224
- if (meta && meta.proto === obj) {
18239
+ if (meta !== undefined && meta.proto === obj) {
18225
18240
  return;
18226
18241
  }
18227
18242
 
18228
18243
  // Use `get` if the return value is an EachProxy or an uncacheable value.
18229
- if (isVolatile(obj[key])) {
18244
+ if (isVolatile(obj[key]) === true) {
18230
18245
  return _emberMetalProperty_get.get(obj, key);
18231
18246
  // Otherwise attempt to get the cached value of the computed property
18232
18247
  } else {
@@ -18240,17 +18255,17 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
18240
18255
  function finishChains(obj) {
18241
18256
  // We only create meta if we really have to
18242
18257
  var m = _emberMetalMeta.peekMeta(obj);
18243
- if (m) {
18258
+ if (m !== undefined) {
18244
18259
  m = _emberMetalMeta.meta(obj);
18245
18260
 
18246
18261
  // finish any current chains node watchers that reference obj
18247
18262
  var chainWatchers = m.readableChainWatchers();
18248
- if (chainWatchers) {
18263
+ if (chainWatchers !== undefined) {
18249
18264
  chainWatchers.revalidateAll();
18250
18265
  }
18251
18266
  // ensure that if we have inherited any chains they have been
18252
18267
  // copied onto our own meta.
18253
- if (m.readableChains()) {
18268
+ if (m.readableChains() !== undefined) {
18254
18269
  m.writableChains(_emberMetalWatch_path.makeChainNode);
18255
18270
  }
18256
18271
  }
@@ -19113,6 +19128,9 @@ enifed('ember-metal/events', ['exports', 'ember-utils', 'ember-metal/meta', 'emb
19113
19128
  return;
19114
19129
  }
19115
19130
  var actions = meta.matchingListeners(eventName);
19131
+ if (actions === undefined) {
19132
+ return;
19133
+ }
19116
19134
  var newActions = [];
19117
19135
 
19118
19136
  for (var i = actions.length - 3; i >= 0; i -= 3) {
@@ -19322,7 +19340,8 @@ enifed('ember-metal/events', ['exports', 'ember-utils', 'ember-metal/meta', 'emb
19322
19340
  if (!meta) {
19323
19341
  return false;
19324
19342
  }
19325
- return meta.matchingListeners(eventName).length > 0;
19343
+ var matched = meta.matchingListeners(eventName);
19344
+ return matched !== undefined && matched.length > 0;
19326
19345
  }
19327
19346
 
19328
19347
  /**
@@ -21431,23 +21450,24 @@ enifed('ember-metal/meta_listeners', ['exports'], function (exports) {
21431
21450
 
21432
21451
  matchingListeners: function (eventName) {
21433
21452
  var pointer = this;
21434
- var result = [];
21435
- while (pointer) {
21453
+ var result = undefined;
21454
+ while (pointer !== undefined) {
21436
21455
  var listeners = pointer._listeners;
21437
- if (listeners) {
21456
+ if (listeners !== undefined) {
21438
21457
  for (var index = 0; index < listeners.length - 3; index += 4) {
21439
21458
  if (listeners[index] === eventName) {
21459
+ result = result || [];
21440
21460
  pushUniqueListener(result, listeners, index);
21441
21461
  }
21442
21462
  }
21443
21463
  }
21444
- if (pointer._listenersFinalized) {
21464
+ if (pointer._listenersFinalized === true) {
21445
21465
  break;
21446
21466
  }
21447
21467
  pointer = pointer.parent;
21448
21468
  }
21449
21469
  var sus = this._suspendedListeners;
21450
- if (sus) {
21470
+ if (sus !== undefined && result !== undefined) {
21451
21471
  for (var susIndex = 0; susIndex < sus.length - 2; susIndex += 3) {
21452
21472
  if (eventName === sus[susIndex]) {
21453
21473
  for (var resultIndex = 0; resultIndex < result.length - 2; resultIndex += 3) {
@@ -25676,7 +25696,7 @@ enifed('ember-routing/location/history_location', ['exports', 'ember-metal', 'em
25676
25696
  baseURL = baseURL.replace(/\/$/, '');
25677
25697
 
25678
25698
  // remove baseURL and rootURL from start of path
25679
- var url = path.replace(new RegExp('^' + baseURL + '(?=/|$)'), '').replace(new RegExp('^' + rootURL + '(?=/|$)'), '');
25699
+ var url = path.replace(new RegExp('^' + baseURL + '(?=/|$)'), '').replace(new RegExp('^' + rootURL + '(?=/|$)'), '').replace(/\/\/$/g, '/'); // remove extra slashes
25680
25700
 
25681
25701
  var search = location.search || '';
25682
25702
  url += search + this.getHash();
@@ -41374,6 +41394,7 @@ enifed('ember-views/system/event_dispatcher', ['exports', 'ember-utils', 'ember-
41374
41394
 
41375
41395
  rootElement.on(event + '.ember', '[data-ember-action]', function (evt) {
41376
41396
  var attributes = evt.currentTarget.attributes;
41397
+ var handledActions = [];
41377
41398
 
41378
41399
  for (var i = 0; i < attributes.length; i++) {
41379
41400
  var attr = attributes.item(i);
@@ -41385,8 +41406,12 @@ enifed('ember-views/system/event_dispatcher', ['exports', 'ember-utils', 'ember-
41385
41406
  // We have to check for action here since in some cases, jQuery will trigger
41386
41407
  // an event on `removeChild` (i.e. focusout) after we've already torn down the
41387
41408
  // action handlers for the view.
41388
- if (action && action.eventName === eventName) {
41409
+ if (action && action.eventName === eventName && handledActions.indexOf(action) === -1) {
41389
41410
  action.handler(evt);
41411
+ // Action handlers can mutate state which in turn creates new attributes on the element.
41412
+ // This effect could cause the `data-ember-action` attribute to shift down and be invoked twice.
41413
+ // To avoid this, we keep track of which actions have been handled.
41414
+ handledActions.push(action);
41390
41415
  }
41391
41416
  }
41392
41417
  }
@@ -42571,7 +42596,7 @@ enifed('ember/index', ['exports', 'require', 'ember-environment', 'ember-utils',
42571
42596
  enifed("ember/version", ["exports"], function (exports) {
42572
42597
  "use strict";
42573
42598
 
42574
- exports.default = "2.13.0-beta.1";
42599
+ exports.default = "2.13.0-beta.2";
42575
42600
  });
42576
42601
  enifed('internal-test-helpers/apply-mixins', ['exports', 'ember-utils'], function (exports, _emberUtils) {
42577
42602
  'use strict';