ember-source 2.9.0.beta.4 → 2.9.0.beta.5
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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/dist/ember-runtime.js +329 -341
- data/dist/ember-template-compiler.js +38 -45
- data/dist/ember-testing.js +1 -1
- data/dist/ember.debug.js +449 -453
- data/dist/ember.js +449 -453
- data/dist/ember.min.js +15 -15
- data/dist/ember.prod.js +425 -442
- metadata +3 -4
- data/dist/test-template.js +0 -6
data/dist/ember.js
CHANGED
@@ -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.9.0-beta.
|
9
|
+
* @version 2.9.0-beta.5
|
10
10
|
*/
|
11
11
|
|
12
12
|
var enifed, requireModule, require, Ember;
|
@@ -7150,7 +7150,8 @@ enifed('ember-glimmer/component', ['exports', 'ember-utils', 'ember-views', 'emb
|
|
7150
7150
|
Component[_emberMetal.NAME_KEY] = 'Ember.Component';
|
7151
7151
|
|
7152
7152
|
Component.reopenClass({
|
7153
|
-
isComponentFactory: true
|
7153
|
+
isComponentFactory: true,
|
7154
|
+
positionalParams: []
|
7154
7155
|
});
|
7155
7156
|
|
7156
7157
|
exports.default = Component;
|
@@ -8677,8 +8678,6 @@ enifed('ember-glimmer/environment', ['exports', 'ember-utils', 'ember-metal', 'e
|
|
8677
8678
|
enifed('ember-glimmer/helper', ['exports', 'ember-utils', 'ember-runtime', 'glimmer-reference'], function (exports, _emberUtils, _emberRuntime, _glimmerReference) {
|
8678
8679
|
'use strict';
|
8679
8680
|
|
8680
|
-
var _EmberObject$extend;
|
8681
|
-
|
8682
8681
|
exports.helper = helper;
|
8683
8682
|
var RECOMPUTE_TAG = _emberUtils.symbol('RECOMPUTE_TAG');
|
8684
8683
|
|
@@ -8723,23 +8722,49 @@ enifed('ember-glimmer/helper', ['exports', 'ember-utils', 'ember-runtime', 'glim
|
|
8723
8722
|
@public
|
8724
8723
|
@since 1.13.0
|
8725
8724
|
*/
|
8726
|
-
var Helper = _emberRuntime.
|
8727
|
-
isHelperInstance: true
|
8725
|
+
var Helper = _emberRuntime.FrameworkObject.extend({
|
8726
|
+
isHelperInstance: true,
|
8728
8727
|
|
8729
|
-
|
8730
|
-
|
8731
|
-
|
8732
|
-
|
8733
|
-
|
8728
|
+
init: function () {
|
8729
|
+
this._super.apply(this, arguments);
|
8730
|
+
this[RECOMPUTE_TAG] = new _glimmerReference.DirtyableTag();
|
8731
|
+
},
|
8732
|
+
|
8733
|
+
/**
|
8734
|
+
On a class-based helper, it may be useful to force a recomputation of that
|
8735
|
+
helpers value. This is akin to `rerender` on a component.
|
8736
|
+
For example, this component will rerender when the `currentUser` on a
|
8737
|
+
session service changes:
|
8738
|
+
```js
|
8739
|
+
// app/helpers/current-user-email.js
|
8740
|
+
export default Ember.Helper.extend({
|
8741
|
+
session: Ember.inject.service(),
|
8742
|
+
onNewUser: Ember.observer('session.currentUser', function() {
|
8743
|
+
this.recompute();
|
8744
|
+
}),
|
8745
|
+
compute() {
|
8746
|
+
return this.get('session.currentUser.email');
|
8747
|
+
}
|
8748
|
+
});
|
8749
|
+
```
|
8750
|
+
@method recompute
|
8751
|
+
@public
|
8752
|
+
@since 1.13.0
|
8753
|
+
*/
|
8754
|
+
recompute: function () {
|
8755
|
+
this[RECOMPUTE_TAG].dirty();
|
8756
|
+
}
|
8757
|
+
|
8758
|
+
/**
|
8759
|
+
Override this function when writing a class-based helper.
|
8760
|
+
@method compute
|
8761
|
+
@param {Array} params The positional arguments to the helper
|
8762
|
+
@param {Object} hash The named arguments to the helper
|
8763
|
+
@public
|
8764
|
+
@since 1.13.0
|
8765
|
+
*/
|
8766
|
+
});
|
8734
8767
|
|
8735
|
-
/**
|
8736
|
-
Override this function when writing a class-based helper.
|
8737
|
-
@method compute
|
8738
|
-
@param {Array} params The positional arguments to the helper
|
8739
|
-
@param {Object} hash The named arguments to the helper
|
8740
|
-
@public
|
8741
|
-
@since 1.13.0
|
8742
|
-
*/
|
8743
8768
|
Helper.reopenClass({
|
8744
8769
|
isHelperFactory: true
|
8745
8770
|
});
|
@@ -8774,28 +8799,6 @@ enifed('ember-glimmer/helper', ['exports', 'ember-utils', 'ember-runtime', 'glim
|
|
8774
8799
|
|
8775
8800
|
exports.default = Helper;
|
8776
8801
|
});
|
8777
|
-
|
8778
|
-
/**
|
8779
|
-
On a class-based helper, it may be useful to force a recomputation of that
|
8780
|
-
helpers value. This is akin to `rerender` on a component.
|
8781
|
-
For example, this component will rerender when the `currentUser` on a
|
8782
|
-
session service changes:
|
8783
|
-
```js
|
8784
|
-
// app/helpers/current-user-email.js
|
8785
|
-
export default Ember.Helper.extend({
|
8786
|
-
session: Ember.inject.service(),
|
8787
|
-
onNewUser: Ember.observer('session.currentUser', function() {
|
8788
|
-
this.recompute();
|
8789
|
-
}),
|
8790
|
-
compute() {
|
8791
|
-
return this.get('session.currentUser.email');
|
8792
|
-
}
|
8793
|
-
});
|
8794
|
-
```
|
8795
|
-
@method recompute
|
8796
|
-
@public
|
8797
|
-
@since 1.13.0
|
8798
|
-
*/
|
8799
8802
|
enifed('ember-glimmer/helpers/-class', ['exports', 'ember-glimmer/utils/references', 'ember-runtime'], function (exports, _emberGlimmerUtilsReferences, _emberRuntime) {
|
8800
8803
|
'use strict';
|
8801
8804
|
|
@@ -8888,8 +8891,10 @@ enifed('ember-glimmer/helpers/action', ['exports', 'ember-utils', 'ember-glimmer
|
|
8888
8891
|
|
8889
8892
|
exports.createClosureAction = createClosureAction;
|
8890
8893
|
var INVOKE = _emberUtils.symbol('INVOKE');
|
8891
|
-
|
8892
8894
|
exports.INVOKE = INVOKE;
|
8895
|
+
var ACTION = _emberUtils.symbol('ACTION');
|
8896
|
+
|
8897
|
+
exports.ACTION = ACTION;
|
8893
8898
|
|
8894
8899
|
var ClosureActionReference = (function (_CachedReference) {
|
8895
8900
|
babelHelpers.inherits(ClosureActionReference, _CachedReference);
|
@@ -9023,6 +9028,7 @@ enifed('ember-glimmer/helpers/action', ['exports', 'ember-utils', 'ember-glimmer
|
|
9023
9028
|
};
|
9024
9029
|
}
|
9025
9030
|
|
9031
|
+
closureAction[ACTION] = true;
|
9026
9032
|
return closureAction;
|
9027
9033
|
}
|
9028
9034
|
});
|
@@ -10459,15 +10465,6 @@ enifed('ember-glimmer/renderer', ['exports', 'ember-glimmer/utils/references', '
|
|
10459
10465
|
this._scheduleRevalidate();
|
10460
10466
|
};
|
10461
10467
|
|
10462
|
-
Renderer.prototype.componentInitAttrs = function componentInitAttrs() {
|
10463
|
-
// TODO: Remove me
|
10464
|
-
};
|
10465
|
-
|
10466
|
-
Renderer.prototype.ensureViewNotRendering = function ensureViewNotRendering() {
|
10467
|
-
// TODO: Implement this
|
10468
|
-
// throw new Error('Something you did caused a view to re-render after it rendered but before it was inserted into the DOM.');
|
10469
|
-
};
|
10470
|
-
|
10471
10468
|
Renderer.prototype.register = function register(view) {
|
10472
10469
|
var id = _emberViews.getViewId(view);
|
10473
10470
|
_emberMetal.assert('Attempted to register a view with an id already in use: ' + id, !this._viewRegistry[id]);
|
@@ -10597,6 +10594,8 @@ enifed('ember-glimmer/renderer', ['exports', 'ember-glimmer/utils/references', '
|
|
10597
10594
|
globalShouldReflush = globalShouldReflush || shouldReflush;
|
10598
10595
|
}
|
10599
10596
|
|
10597
|
+
this._lastRevision = _glimmerReference.CURRENT_TAG.value();
|
10598
|
+
|
10600
10599
|
env.commit();
|
10601
10600
|
} while (globalShouldReflush || roots.length > initialRootsLength);
|
10602
10601
|
|
@@ -10624,10 +10623,14 @@ enifed('ember-glimmer/renderer', ['exports', 'ember-glimmer/utils/references', '
|
|
10624
10623
|
// while we are actively rendering roots
|
10625
10624
|
this._isRenderingRoots = true;
|
10626
10625
|
|
10626
|
+
var completedWithoutError = false;
|
10627
10627
|
try {
|
10628
10628
|
this._renderRoots();
|
10629
|
+
completedWithoutError = true;
|
10629
10630
|
} finally {
|
10630
|
-
|
10631
|
+
if (!completedWithoutError) {
|
10632
|
+
this._lastRevision = _glimmerReference.CURRENT_TAG.value();
|
10633
|
+
}
|
10631
10634
|
this._isRenderingRoots = false;
|
10632
10635
|
}
|
10633
10636
|
};
|
@@ -11070,8 +11073,14 @@ babelHelpers.classCallCheck(this, CurlyComponentManager);
|
|
11070
11073
|
component.trigger('didInitAttrs', { attrs: attrs });
|
11071
11074
|
component.trigger('didReceiveAttrs', { newAttrs: attrs });
|
11072
11075
|
|
11073
|
-
|
11074
|
-
|
11076
|
+
// We usually do this in the `didCreateElement`, but that hook doesn't fire for tagless components
|
11077
|
+
if (component.tagName === '') {
|
11078
|
+
component._transitionTo('hasElement');
|
11079
|
+
|
11080
|
+
if (environment.isInteractive) {
|
11081
|
+
component.trigger('willInsertElement');
|
11082
|
+
component.trigger('willRender');
|
11083
|
+
}
|
11075
11084
|
}
|
11076
11085
|
|
11077
11086
|
var bucket = new ComponentStateBucket(environment, component, processedArgs, finalizer);
|
@@ -11155,6 +11164,7 @@ babelHelpers.classCallCheck(this, CurlyComponentManager);
|
|
11155
11164
|
|
11156
11165
|
if (environment.isInteractive) {
|
11157
11166
|
component.trigger('willInsertElement');
|
11167
|
+
component.trigger('willRender');
|
11158
11168
|
}
|
11159
11169
|
};
|
11160
11170
|
|
@@ -11255,8 +11265,14 @@ babelHelpers.classCallCheck(this, TopComponentManager);
|
|
11255
11265
|
component.trigger('didInitAttrs');
|
11256
11266
|
component.trigger('didReceiveAttrs');
|
11257
11267
|
|
11258
|
-
|
11259
|
-
|
11268
|
+
// We usually do this in the `didCreateElement`, but that hook doesn't fire for tagless components
|
11269
|
+
if (component.tagName === '') {
|
11270
|
+
component._transitionTo('hasElement');
|
11271
|
+
|
11272
|
+
if (environment.isInteractive) {
|
11273
|
+
component.trigger('willInsertElement');
|
11274
|
+
component.trigger('willRender');
|
11275
|
+
}
|
11260
11276
|
}
|
11261
11277
|
|
11262
11278
|
processComponentInitializationAssertions(component, {});
|
@@ -12146,6 +12162,17 @@ enifed('ember-glimmer/utils/bindings', ['exports', 'glimmer-runtime', 'ember-met
|
|
12146
12162
|
}
|
12147
12163
|
|
12148
12164
|
function referenceForParts(component, parts) {
|
12165
|
+
var isAttrs = parts[0] === 'attrs';
|
12166
|
+
|
12167
|
+
// TODO deprecate this
|
12168
|
+
if (isAttrs) {
|
12169
|
+
parts.shift();
|
12170
|
+
|
12171
|
+
if (parts.length === 1) {
|
12172
|
+
return referenceForKey(component, parts[0]);
|
12173
|
+
}
|
12174
|
+
}
|
12175
|
+
|
12149
12176
|
return _glimmerReference.referenceFromParts(component[_emberGlimmerComponent.ROOT_REF], parts);
|
12150
12177
|
}
|
12151
12178
|
|
@@ -12676,7 +12703,7 @@ enifed('ember-glimmer/utils/iterable', ['exports', 'ember-utils', 'ember-metal',
|
|
12676
12703
|
return ArrayIterable;
|
12677
12704
|
})();
|
12678
12705
|
});
|
12679
|
-
enifed('ember-glimmer/utils/process-args', ['exports', 'ember-utils', 'glimmer-reference', 'ember-glimmer/component', 'ember-glimmer/utils/references', 'ember-views'], function (exports, _emberUtils, _glimmerReference, _emberGlimmerComponent, _emberGlimmerUtilsReferences, _emberViews) {
|
12706
|
+
enifed('ember-glimmer/utils/process-args', ['exports', 'ember-utils', 'glimmer-reference', 'ember-glimmer/component', 'ember-glimmer/utils/references', 'ember-views', 'ember-glimmer/helpers/action'], function (exports, _emberUtils, _glimmerReference, _emberGlimmerComponent, _emberGlimmerUtilsReferences, _emberViews, _emberGlimmerHelpersAction) {
|
12680
12707
|
'use strict';
|
12681
12708
|
|
12682
12709
|
exports.default = processArgs;
|
@@ -12734,7 +12761,9 @@ enifed('ember-glimmer/utils/process-args', ['exports', 'ember-utils', 'glimmer-r
|
|
12734
12761
|
var ref = namedArgs.get(_name);
|
12735
12762
|
var value = attrs[_name];
|
12736
12763
|
|
12737
|
-
if (
|
12764
|
+
if (typeof value === 'function' && value[_emberGlimmerHelpersAction.ACTION]) {
|
12765
|
+
attrs[_name] = value;
|
12766
|
+
} else if (ref[_emberGlimmerUtilsReferences.UPDATE]) {
|
12738
12767
|
attrs[_name] = new MutableCell(ref, value);
|
12739
12768
|
}
|
12740
12769
|
|
@@ -13079,6 +13108,10 @@ enifed('ember-glimmer/utils/references', ['exports', 'ember-utils', 'ember-metal
|
|
13079
13108
|
|
13080
13109
|
_parentObjectTag.update(_emberMetal.tagFor(parentValue));
|
13081
13110
|
|
13111
|
+
if (typeof parentValue === 'string' && _propertyKey === 'length') {
|
13112
|
+
return parentValue.length;
|
13113
|
+
}
|
13114
|
+
|
13082
13115
|
if (typeof parentValue === 'object' && parentValue) {
|
13083
13116
|
if (true) {
|
13084
13117
|
var meta = _emberMetal.meta(parentValue);
|
@@ -20665,19 +20698,12 @@ enifed('ember-metal/set_properties', ['exports', 'ember-metal/property_events',
|
|
20665
20698
|
return properties;
|
20666
20699
|
}
|
20667
20700
|
});
|
20668
|
-
enifed('ember-metal/tags', ['exports', 'ember-metal/meta', 'require'], function (exports, _emberMetalMeta,
|
20701
|
+
enifed('ember-metal/tags', ['exports', 'glimmer-reference', 'ember-metal/meta', 'require'], function (exports, _glimmerReference, _emberMetalMeta, _require) {
|
20669
20702
|
'use strict';
|
20670
20703
|
|
20671
20704
|
exports.setHasViews = setHasViews;
|
20672
20705
|
exports.tagFor = tagFor;
|
20673
|
-
|
20674
|
-
var hasGlimmer = _require2.has('glimmer-reference');
|
20675
|
-
|
20676
|
-
var CONSTANT_TAG = undefined,
|
20677
|
-
CURRENT_TAG = undefined,
|
20678
|
-
DirtyableTag = undefined,
|
20679
|
-
makeTag = undefined,
|
20680
|
-
run = undefined;
|
20706
|
+
exports.markObjectAsDirty = markObjectAsDirty;
|
20681
20707
|
|
20682
20708
|
var hasViews = function () {
|
20683
20709
|
return false;
|
@@ -20687,56 +20713,41 @@ enifed('ember-metal/tags', ['exports', 'ember-metal/meta', 'require'], function
|
|
20687
20713
|
hasViews = fn;
|
20688
20714
|
}
|
20689
20715
|
|
20690
|
-
|
20691
|
-
|
20692
|
-
|
20716
|
+
function makeTag() {
|
20717
|
+
return new _glimmerReference.DirtyableTag();
|
20718
|
+
}
|
20693
20719
|
|
20694
20720
|
function tagFor(object, _meta) {
|
20695
|
-
if (!hasGlimmer) {
|
20696
|
-
throw new Error('Cannot call tagFor without Glimmer');
|
20697
|
-
}
|
20698
|
-
|
20699
20721
|
if (typeof object === 'object' && object) {
|
20700
20722
|
var meta = _meta || _emberMetalMeta.meta(object);
|
20701
20723
|
return meta.writableTag(makeTag);
|
20702
20724
|
} else {
|
20703
|
-
return CONSTANT_TAG;
|
20725
|
+
return _glimmerReference.CONSTANT_TAG;
|
20726
|
+
}
|
20727
|
+
}
|
20728
|
+
|
20729
|
+
function markObjectAsDirty(meta) {
|
20730
|
+
var tag = meta && meta.readableTag();
|
20731
|
+
|
20732
|
+
if (tag) {
|
20733
|
+
ensureRunloop();
|
20734
|
+
tag.dirty();
|
20704
20735
|
}
|
20705
20736
|
}
|
20706
20737
|
|
20738
|
+
var run = undefined;
|
20739
|
+
|
20707
20740
|
function K() {}
|
20741
|
+
|
20708
20742
|
function ensureRunloop() {
|
20709
20743
|
if (!run) {
|
20710
|
-
run =
|
20744
|
+
run = _require.default('ember-metal/run_loop').default;
|
20711
20745
|
}
|
20712
20746
|
|
20713
20747
|
if (hasViews() && !run.backburner.currentInstance) {
|
20714
20748
|
run.schedule('actions', K);
|
20715
20749
|
}
|
20716
20750
|
}
|
20717
|
-
|
20718
|
-
if (hasGlimmer) {
|
20719
|
-
var _require = _require2.default('glimmer-reference');
|
20720
|
-
|
20721
|
-
DirtyableTag = _require.DirtyableTag;
|
20722
|
-
CONSTANT_TAG = _require.CONSTANT_TAG;
|
20723
|
-
CURRENT_TAG = _require.CURRENT_TAG;
|
20724
|
-
|
20725
|
-
makeTag = function () {
|
20726
|
-
return new DirtyableTag();
|
20727
|
-
};
|
20728
|
-
|
20729
|
-
exports.markObjectAsDirty = markObjectAsDirty = function (meta) {
|
20730
|
-
var tag = meta && meta.readableTag();
|
20731
|
-
|
20732
|
-
if (tag) {
|
20733
|
-
ensureRunloop();
|
20734
|
-
tag.dirty();
|
20735
|
-
}
|
20736
|
-
};
|
20737
|
-
} else {
|
20738
|
-
exports.markObjectAsDirty = markObjectAsDirty = function () {};
|
20739
|
-
}
|
20740
20751
|
});
|
20741
20752
|
enifed("ember-metal/testing", ["exports"], function (exports) {
|
20742
20753
|
"use strict";
|
@@ -20826,7 +20837,7 @@ enifed('ember-metal/transaction', ['exports', 'ember-metal/meta', 'ember-metal/d
|
|
20826
20837
|
label = 'the same value';
|
20827
20838
|
}
|
20828
20839
|
|
20829
|
-
return 'You modified ' + parts.join('.') + ' twice in a single render. This was unreliable and slow in Ember 1.x and ' + implication;
|
20840
|
+
return 'You modified ' + parts.join('.') + ' twice on ' + object + ' in a single render. This was unreliable and slow in Ember 1.x and ' + implication;
|
20830
20841
|
})(), false);
|
20831
20842
|
|
20832
20843
|
shouldReflush = true;
|
@@ -28849,6 +28860,7 @@ enifed('ember-runtime/index', ['exports', 'ember-runtime/ext/string', 'ember-run
|
|
28849
28860
|
'use strict';
|
28850
28861
|
|
28851
28862
|
exports.Object = _emberRuntimeSystemObject.default;
|
28863
|
+
exports.FrameworkObject = _emberRuntimeSystemObject.FrameworkObject;
|
28852
28864
|
exports.String = _emberRuntimeSystemString.default;
|
28853
28865
|
exports.RegistryProxyMixin = _emberRuntimeMixinsRegistry_proxy.default;
|
28854
28866
|
exports.buildFakeRegistryWithDeprecations = _emberRuntimeMixinsRegistry_proxy.buildFakeRegistryWithDeprecations;
|
@@ -28869,7 +28881,6 @@ enifed('ember-runtime/index', ['exports', 'ember-runtime/ext/string', 'ember-run
|
|
28869
28881
|
exports.ArrayProxy = _emberRuntimeSystemArray_proxy.default;
|
28870
28882
|
exports.ObjectProxy = _emberRuntimeSystemObject_proxy.default;
|
28871
28883
|
exports.CoreObject = _emberRuntimeSystemCore_object.default;
|
28872
|
-
exports.POST_INIT = _emberRuntimeSystemCore_object.POST_INIT;
|
28873
28884
|
exports.NativeArray = _emberRuntimeSystemNative_array.default;
|
28874
28885
|
exports.A = _emberRuntimeSystemNative_array.A;
|
28875
28886
|
exports.ActionHandler = _emberRuntimeMixinsAction_handler.default;
|
@@ -29067,7 +29078,7 @@ enifed('ember-runtime/is-equal', ['exports'], function (exports) {
|
|
29067
29078
|
return a === b;
|
29068
29079
|
}
|
29069
29080
|
});
|
29070
|
-
enifed('ember-runtime/mixins/-proxy', ['exports', '
|
29081
|
+
enifed('ember-runtime/mixins/-proxy', ['exports', 'glimmer-reference', 'ember-utils', 'ember-metal', 'ember-runtime/computed/computed_macros'], function (exports, _glimmerReference, _emberUtils, _emberMetal, _emberRuntimeComputedComputed_macros) {
|
29071
29082
|
/**
|
29072
29083
|
@module ember
|
29073
29084
|
@submodule ember-runtime
|
@@ -29075,12 +29086,10 @@ enifed('ember-runtime/mixins/-proxy', ['exports', 'ember-utils', 'ember-metal',
|
|
29075
29086
|
|
29076
29087
|
'use strict';
|
29077
29088
|
|
29078
|
-
var
|
29089
|
+
var _Mixin$create;
|
29079
29090
|
|
29080
29091
|
exports.isProxy = isProxy;
|
29081
29092
|
|
29082
|
-
var hasGlimmer = _require2.has('glimmer-reference');
|
29083
|
-
|
29084
29093
|
var IS_PROXY = _emberUtils.symbol('IS_PROXY');
|
29085
29094
|
|
29086
29095
|
function isProxy(value) {
|
@@ -29103,31 +29112,66 @@ enifed('ember-runtime/mixins/-proxy', ['exports', 'ember-utils', 'ember-metal',
|
|
29103
29112
|
_emberMetal.propertyDidChange(this, key);
|
29104
29113
|
}
|
29105
29114
|
|
29106
|
-
|
29107
|
-
|
29108
|
-
|
29109
|
-
|
29110
|
-
|
29111
|
-
|
29112
|
-
|
29113
|
-
|
29114
|
-
|
29115
|
+
var ProxyTag = (function (_CachedTag) {
|
29116
|
+
babelHelpers.inherits(ProxyTag, _CachedTag);
|
29117
|
+
|
29118
|
+
function ProxyTag(proxy) {
|
29119
|
+
babelHelpers.classCallCheck(this, ProxyTag);
|
29120
|
+
|
29121
|
+
_CachedTag.call(this);
|
29122
|
+
|
29123
|
+
var content = _emberMetal.get(proxy, 'content');
|
29124
|
+
|
29125
|
+
this.proxy = proxy;
|
29126
|
+
this.proxyWrapperTag = new _glimmerReference.DirtyableTag();
|
29127
|
+
this.proxyContentTag = new _glimmerReference.UpdatableTag(_emberMetal.tagFor(content));
|
29128
|
+
}
|
29129
|
+
|
29130
|
+
/**
|
29131
|
+
`Ember.ProxyMixin` forwards all properties not defined by the proxy itself
|
29132
|
+
to a proxied `content` object. See Ember.ObjectProxy for more details.
|
29133
|
+
|
29134
|
+
@class ProxyMixin
|
29135
|
+
@namespace Ember
|
29136
|
+
@private
|
29137
|
+
*/
|
29138
|
+
|
29139
|
+
ProxyTag.prototype.compute = function compute() {
|
29140
|
+
return Math.max(this.proxyWrapperTag.value(), this.proxyContentTag.value());
|
29141
|
+
};
|
29142
|
+
|
29143
|
+
ProxyTag.prototype.dirty = function dirty() {
|
29144
|
+
this.proxyWrapperTag.dirty();
|
29145
|
+
};
|
29146
|
+
|
29147
|
+
ProxyTag.prototype.contentDidChange = function contentDidChange() {
|
29148
|
+
var content = _emberMetal.get(this.proxy, 'content');
|
29149
|
+
this.proxyContentTag.update(_emberMetal.tagFor(content));
|
29150
|
+
};
|
29151
|
+
|
29152
|
+
return ProxyTag;
|
29153
|
+
})(_glimmerReference.CachedTag);
|
29154
|
+
|
29155
|
+
exports.default = _emberMetal.Mixin.create((_Mixin$create = {}, _Mixin$create[IS_PROXY] = true, _Mixin$create.content = null, _Mixin$create._initializeTag = _emberMetal.on('init', function () {
|
29156
|
+
_emberMetal.meta(this)._tag = new ProxyTag(this);
|
29157
|
+
}), _Mixin$create._contentDidChange = _emberMetal.observer('content', function () {
|
29115
29158
|
_emberMetal.assert('Can\'t set Proxy\'s content to itself', _emberMetal.get(this, 'content') !== this);
|
29116
|
-
|
29159
|
+
_emberMetal.tagFor(this).contentDidChange();
|
29160
|
+
}), _Mixin$create.isTruthy = _emberRuntimeComputedComputed_macros.bool('content'), _Mixin$create._debugContainerKey = null, _Mixin$create.willWatchProperty = function (key) {
|
29117
29161
|
var contentKey = 'content.' + key;
|
29118
29162
|
_emberMetal._addBeforeObserver(this, contentKey, null, contentPropertyWillChange);
|
29119
29163
|
_emberMetal.addObserver(this, contentKey, null, contentPropertyDidChange);
|
29120
|
-
},
|
29164
|
+
}, _Mixin$create.didUnwatchProperty = function (key) {
|
29121
29165
|
var contentKey = 'content.' + key;
|
29122
29166
|
_emberMetal._removeBeforeObserver(this, contentKey, null, contentPropertyWillChange);
|
29123
29167
|
_emberMetal.removeObserver(this, contentKey, null, contentPropertyDidChange);
|
29124
|
-
},
|
29168
|
+
}, _Mixin$create.unknownProperty = function (key) {
|
29125
29169
|
var content = _emberMetal.get(this, 'content');
|
29126
29170
|
if (content) {
|
29127
29171
|
_emberMetal.deprecate('You attempted to access `' + key + '` from `' + this + '`, but object proxying is deprecated. Please use `model.' + key + '` instead.', !this.isController, { id: 'ember-runtime.controller-proxy', until: '3.0.0' });
|
29128
29172
|
return _emberMetal.get(content, key);
|
29129
29173
|
}
|
29130
|
-
},
|
29174
|
+
}, _Mixin$create.setUnknownProperty = function (key, value) {
|
29131
29175
|
var m = _emberMetal.meta(this);
|
29132
29176
|
if (m.proto === this) {
|
29133
29177
|
// if marked as prototype then just defineProperty
|
@@ -29141,55 +29185,7 @@ enifed('ember-runtime/mixins/-proxy', ['exports', 'ember-utils', 'ember-metal',
|
|
29141
29185
|
|
29142
29186
|
_emberMetal.deprecate('You attempted to set `' + key + '` from `' + this + '`, but object proxying is deprecated. Please use `model.' + key + '` instead.', !this.isController, { id: 'ember-runtime.controller-proxy', until: '3.0.0' });
|
29143
29187
|
return _emberMetal.set(content, key, value);
|
29144
|
-
},
|
29145
|
-
|
29146
|
-
if (hasGlimmer) {
|
29147
|
-
(function () {
|
29148
|
-
var _require = _require2.default('glimmer-reference');
|
29149
|
-
|
29150
|
-
var CachedTag = _require.CachedTag;
|
29151
|
-
var DirtyableTag = _require.DirtyableTag;
|
29152
|
-
var UpdatableTag = _require.UpdatableTag;
|
29153
|
-
|
29154
|
-
var ProxyTag = (function (_CachedTag) {
|
29155
|
-
babelHelpers.inherits(ProxyTag, _CachedTag);
|
29156
|
-
|
29157
|
-
function ProxyTag(proxy, content) {
|
29158
|
-
babelHelpers.classCallCheck(this, ProxyTag);
|
29159
|
-
|
29160
|
-
_CachedTag.call(this);
|
29161
|
-
this.proxyWrapperTag = new DirtyableTag();
|
29162
|
-
this.proxyContentTag = new UpdatableTag(_emberMetal.tagFor(content));
|
29163
|
-
}
|
29164
|
-
|
29165
|
-
ProxyTag.prototype.compute = function compute() {
|
29166
|
-
return Math.max(this.proxyWrapperTag.value(), this.proxyContentTag.value());
|
29167
|
-
};
|
29168
|
-
|
29169
|
-
ProxyTag.prototype.dirty = function dirty() {
|
29170
|
-
this.proxyWrapperTag.dirty();
|
29171
|
-
};
|
29172
|
-
|
29173
|
-
ProxyTag.prototype.contentDidChange = function contentDidChange(content) {
|
29174
|
-
this.proxyContentTag.update(_emberMetal.tagFor(content));
|
29175
|
-
};
|
29176
|
-
|
29177
|
-
return ProxyTag;
|
29178
|
-
})(CachedTag);
|
29179
|
-
|
29180
|
-
PROXY_MIXIN_PROPS[_emberRuntimeSystemCore_object.POST_INIT] = function postInit() {
|
29181
|
-
this._super();
|
29182
|
-
_emberMetal.meta(this)._tag = new ProxyTag(this, _emberMetal.get(this, 'content'));
|
29183
|
-
};
|
29184
|
-
|
29185
|
-
PROXY_MIXIN_PROPS._contentDidChange = _emberMetal.observer('content', function () {
|
29186
|
-
_emberMetal.assert('Can\'t set Proxy\'s content to itself', _emberMetal.get(this, 'content') !== this);
|
29187
|
-
_emberMetal.meta(this)._tag.contentDidChange(_emberMetal.get(this, 'content'));
|
29188
|
-
});
|
29189
|
-
})();
|
29190
|
-
}
|
29191
|
-
|
29192
|
-
exports.default = _emberMetal.Mixin.create(PROXY_MIXIN_PROPS);
|
29188
|
+
}, _Mixin$create));
|
29193
29189
|
});
|
29194
29190
|
|
29195
29191
|
/**
|
@@ -33518,10 +33514,6 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-utils', 'ember-met
|
|
33518
33514
|
// using ember-metal/lib/main here to ensure that ember-debug is setup
|
33519
33515
|
// if present
|
33520
33516
|
|
33521
|
-
var _Mixin$create;
|
33522
|
-
|
33523
|
-
var POST_INIT = _emberUtils.symbol('POST_INIT');
|
33524
|
-
exports.POST_INIT = POST_INIT;
|
33525
33517
|
var schedule = _emberMetal.run.schedule;
|
33526
33518
|
var applyMixin = _emberMetal.Mixin._apply;
|
33527
33519
|
var finishPartial = _emberMetal.Mixin.finishPartial;
|
@@ -33628,8 +33620,6 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-utils', 'ember-met
|
|
33628
33620
|
|
33629
33621
|
this.init.apply(this, arguments);
|
33630
33622
|
|
33631
|
-
this[POST_INIT]();
|
33632
|
-
|
33633
33623
|
m.proto = proto;
|
33634
33624
|
_emberMetal.finishChains(this);
|
33635
33625
|
_emberMetal.sendEvent(this, 'init');
|
@@ -33674,7 +33664,7 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-utils', 'ember-met
|
|
33674
33664
|
CoreObject.toString = function () {
|
33675
33665
|
return 'Ember.CoreObject';
|
33676
33666
|
};
|
33677
|
-
CoreObject.PrototypeMixin = _emberMetal.Mixin.create(
|
33667
|
+
CoreObject.PrototypeMixin = _emberMetal.Mixin.create({
|
33678
33668
|
reopen: function () {
|
33679
33669
|
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
33680
33670
|
args[_key] = arguments[_key];
|
@@ -33707,39 +33697,244 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-utils', 'ember-met
|
|
33707
33697
|
@method init
|
33708
33698
|
@public
|
33709
33699
|
*/
|
33710
|
-
init: function () {}
|
33700
|
+
init: function () {},
|
33711
33701
|
|
33712
|
-
|
33713
|
-
|
33714
|
-
|
33715
|
-
|
33716
|
-
if (this.isDestroying) {
|
33717
|
-
return;
|
33718
|
-
}
|
33719
|
-
this.isDestroying = true;
|
33702
|
+
__defineNonEnumerable: function (property) {
|
33703
|
+
Object.defineProperty(this, property.name, property.descriptor);
|
33704
|
+
//this[property.name] = property.descriptor.value;
|
33705
|
+
},
|
33720
33706
|
|
33721
|
-
|
33722
|
-
|
33723
|
-
|
33724
|
-
|
33725
|
-
|
33726
|
-
|
33727
|
-
|
33728
|
-
|
33729
|
-
|
33730
|
-
|
33731
|
-
|
33732
|
-
|
33733
|
-
|
33734
|
-
|
33735
|
-
|
33736
|
-
|
33737
|
-
|
33738
|
-
|
33739
|
-
|
33707
|
+
/**
|
33708
|
+
Defines the properties that will be concatenated from the superclass
|
33709
|
+
(instead of overridden).
|
33710
|
+
By default, when you extend an Ember class a property defined in
|
33711
|
+
the subclass overrides a property with the same name that is defined
|
33712
|
+
in the superclass. However, there are some cases where it is preferable
|
33713
|
+
to build up a property's value by combining the superclass' property
|
33714
|
+
value with the subclass' value. An example of this in use within Ember
|
33715
|
+
is the `classNames` property of `Ember.View`.
|
33716
|
+
Here is some sample code showing the difference between a concatenated
|
33717
|
+
property and a normal one:
|
33718
|
+
```javascript
|
33719
|
+
const Bar = Ember.Object.extend({
|
33720
|
+
// Configure which properties to concatenate
|
33721
|
+
concatenatedProperties: ['concatenatedProperty'],
|
33722
|
+
someNonConcatenatedProperty: ['bar'],
|
33723
|
+
concatenatedProperty: ['bar']
|
33724
|
+
});
|
33725
|
+
const FooBar = Bar.extend({
|
33726
|
+
someNonConcatenatedProperty: ['foo'],
|
33727
|
+
concatenatedProperty: ['foo']
|
33728
|
+
});
|
33729
|
+
let fooBar = FooBar.create();
|
33730
|
+
fooBar.get('someNonConcatenatedProperty'); // ['foo']
|
33731
|
+
fooBar.get('concatenatedProperty'); // ['bar', 'foo']
|
33732
|
+
```
|
33733
|
+
This behavior extends to object creation as well. Continuing the
|
33734
|
+
above example:
|
33735
|
+
```javascript
|
33736
|
+
let fooBar = FooBar.create({
|
33737
|
+
someNonConcatenatedProperty: ['baz'],
|
33738
|
+
concatenatedProperty: ['baz']
|
33739
|
+
})
|
33740
|
+
fooBar.get('someNonConcatenatedProperty'); // ['baz']
|
33741
|
+
fooBar.get('concatenatedProperty'); // ['bar', 'foo', 'baz']
|
33742
|
+
```
|
33743
|
+
Adding a single property that is not an array will just add it in the array:
|
33744
|
+
```javascript
|
33745
|
+
let fooBar = FooBar.create({
|
33746
|
+
concatenatedProperty: 'baz'
|
33747
|
+
})
|
33748
|
+
view.get('concatenatedProperty'); // ['bar', 'foo', 'baz']
|
33749
|
+
```
|
33750
|
+
Using the `concatenatedProperties` property, we can tell Ember to mix the
|
33751
|
+
content of the properties.
|
33752
|
+
In `Ember.Component` the `classNames`, `classNameBindings` and
|
33753
|
+
`attributeBindings` properties are concatenated.
|
33754
|
+
This feature is available for you to use throughout the Ember object model,
|
33755
|
+
although typical app developers are likely to use it infrequently. Since
|
33756
|
+
it changes expectations about behavior of properties, you should properly
|
33757
|
+
document its usage in each individual concatenated property (to not
|
33758
|
+
mislead your users to think they can override the property in a subclass).
|
33759
|
+
@property concatenatedProperties
|
33760
|
+
@type Array
|
33761
|
+
@default null
|
33762
|
+
@public
|
33763
|
+
*/
|
33764
|
+
concatenatedProperties: null,
|
33740
33765
|
|
33741
|
-
|
33742
|
-
|
33766
|
+
/**
|
33767
|
+
Defines the properties that will be merged from the superclass
|
33768
|
+
(instead of overridden).
|
33769
|
+
By default, when you extend an Ember class a property defined in
|
33770
|
+
the subclass overrides a property with the same name that is defined
|
33771
|
+
in the superclass. However, there are some cases where it is preferable
|
33772
|
+
to build up a property's value by merging the superclass property value
|
33773
|
+
with the subclass property's value. An example of this in use within Ember
|
33774
|
+
is the `queryParams` property of routes.
|
33775
|
+
Here is some sample code showing the difference between a merged
|
33776
|
+
property and a normal one:
|
33777
|
+
```javascript
|
33778
|
+
const Bar = Ember.Object.extend({
|
33779
|
+
// Configure which properties are to be merged
|
33780
|
+
mergedProperties: ['mergedProperty'],
|
33781
|
+
someNonMergedProperty: {
|
33782
|
+
nonMerged: 'superclass value of nonMerged'
|
33783
|
+
},
|
33784
|
+
mergedProperty: {
|
33785
|
+
page: {replace: false},
|
33786
|
+
limit: {replace: true}
|
33787
|
+
}
|
33788
|
+
});
|
33789
|
+
const FooBar = Bar.extend({
|
33790
|
+
someNonMergedProperty: {
|
33791
|
+
completelyNonMerged: 'subclass value of nonMerged'
|
33792
|
+
},
|
33793
|
+
mergedProperty: {
|
33794
|
+
limit: {replace: false}
|
33795
|
+
}
|
33796
|
+
});
|
33797
|
+
let fooBar = FooBar.create();
|
33798
|
+
fooBar.get('someNonMergedProperty');
|
33799
|
+
// => { completelyNonMerged: 'subclass value of nonMerged' }
|
33800
|
+
//
|
33801
|
+
// Note the entire object, including the nonMerged property of
|
33802
|
+
// the superclass object, has been replaced
|
33803
|
+
fooBar.get('mergedProperty');
|
33804
|
+
// => {
|
33805
|
+
// page: {replace: false},
|
33806
|
+
// limit: {replace: false}
|
33807
|
+
// }
|
33808
|
+
//
|
33809
|
+
// Note the page remains from the superclass, and the
|
33810
|
+
// `limit` property's value of `false` has been merged from
|
33811
|
+
// the subclass.
|
33812
|
+
```
|
33813
|
+
This behavior is not available during object `create` calls. It is only
|
33814
|
+
available at `extend` time.
|
33815
|
+
In `Ember.Route` the `queryParams` property is merged.
|
33816
|
+
This feature is available for you to use throughout the Ember object model,
|
33817
|
+
although typical app developers are likely to use it infrequently. Since
|
33818
|
+
it changes expectations about behavior of properties, you should properly
|
33819
|
+
document its usage in each individual merged property (to not
|
33820
|
+
mislead your users to think they can override the property in a subclass).
|
33821
|
+
@property mergedProperties
|
33822
|
+
@type Array
|
33823
|
+
@default null
|
33824
|
+
@public
|
33825
|
+
*/
|
33826
|
+
mergedProperties: null,
|
33827
|
+
|
33828
|
+
/**
|
33829
|
+
Destroyed object property flag.
|
33830
|
+
if this property is `true` the observers and bindings were already
|
33831
|
+
removed by the effect of calling the `destroy()` method.
|
33832
|
+
@property isDestroyed
|
33833
|
+
@default false
|
33834
|
+
@public
|
33835
|
+
*/
|
33836
|
+
isDestroyed: false,
|
33837
|
+
|
33838
|
+
/**
|
33839
|
+
Destruction scheduled flag. The `destroy()` method has been called.
|
33840
|
+
The object stays intact until the end of the run loop at which point
|
33841
|
+
the `isDestroyed` flag is set.
|
33842
|
+
@property isDestroying
|
33843
|
+
@default false
|
33844
|
+
@public
|
33845
|
+
*/
|
33846
|
+
isDestroying: false,
|
33847
|
+
|
33848
|
+
/**
|
33849
|
+
Destroys an object by setting the `isDestroyed` flag and removing its
|
33850
|
+
metadata, which effectively destroys observers and bindings.
|
33851
|
+
If you try to set a property on a destroyed object, an exception will be
|
33852
|
+
raised.
|
33853
|
+
Note that destruction is scheduled for the end of the run loop and does not
|
33854
|
+
happen immediately. It will set an isDestroying flag immediately.
|
33855
|
+
@method destroy
|
33856
|
+
@return {Ember.Object} receiver
|
33857
|
+
@public
|
33858
|
+
*/
|
33859
|
+
destroy: function () {
|
33860
|
+
if (this.isDestroying) {
|
33861
|
+
return;
|
33862
|
+
}
|
33863
|
+
this.isDestroying = true;
|
33864
|
+
|
33865
|
+
schedule('actions', this, this.willDestroy);
|
33866
|
+
schedule('destroy', this, this._scheduledDestroy);
|
33867
|
+
return this;
|
33868
|
+
},
|
33869
|
+
|
33870
|
+
/**
|
33871
|
+
Override to implement teardown.
|
33872
|
+
@method willDestroy
|
33873
|
+
@public
|
33874
|
+
*/
|
33875
|
+
willDestroy: function () {},
|
33876
|
+
|
33877
|
+
/**
|
33878
|
+
Invoked by the run loop to actually destroy the object. This is
|
33879
|
+
scheduled for execution by the `destroy` method.
|
33880
|
+
@private
|
33881
|
+
@method _scheduledDestroy
|
33882
|
+
*/
|
33883
|
+
_scheduledDestroy: function () {
|
33884
|
+
if (this.isDestroyed) {
|
33885
|
+
return;
|
33886
|
+
}
|
33887
|
+
_emberMetal.destroy(this);
|
33888
|
+
this.isDestroyed = true;
|
33889
|
+
},
|
33890
|
+
|
33891
|
+
bind: function (to, from) {
|
33892
|
+
if (!(from instanceof _emberMetal.Binding)) {
|
33893
|
+
from = _emberMetal.Binding.from(from);
|
33894
|
+
}
|
33895
|
+
from.to(to).connect(this);
|
33896
|
+
return from;
|
33897
|
+
},
|
33898
|
+
|
33899
|
+
/**
|
33900
|
+
Returns a string representation which attempts to provide more information
|
33901
|
+
than Javascript's `toString` typically does, in a generic way for all Ember
|
33902
|
+
objects.
|
33903
|
+
```javascript
|
33904
|
+
const Person = Ember.Object.extend()
|
33905
|
+
person = Person.create()
|
33906
|
+
person.toString() //=> "<Person:ember1024>"
|
33907
|
+
```
|
33908
|
+
If the object's class is not defined on an Ember namespace, it will
|
33909
|
+
indicate it is a subclass of the registered superclass:
|
33910
|
+
```javascript
|
33911
|
+
const Student = Person.extend()
|
33912
|
+
let student = Student.create()
|
33913
|
+
student.toString() //=> "<(subclass of Person):ember1025>"
|
33914
|
+
```
|
33915
|
+
If the method `toStringExtension` is defined, its return value will be
|
33916
|
+
included in the output.
|
33917
|
+
```javascript
|
33918
|
+
const Teacher = Person.extend({
|
33919
|
+
toStringExtension() {
|
33920
|
+
return this.get('fullName');
|
33921
|
+
}
|
33922
|
+
});
|
33923
|
+
teacher = Teacher.create()
|
33924
|
+
teacher.toString(); //=> "<Teacher:ember1026:Tom Dale>"
|
33925
|
+
```
|
33926
|
+
@method toString
|
33927
|
+
@return {String} string representation
|
33928
|
+
@public
|
33929
|
+
*/
|
33930
|
+
toString: function () {
|
33931
|
+
var hasToStringExtension = typeof this.toStringExtension === 'function';
|
33932
|
+
var extension = hasToStringExtension ? ':' + this.toStringExtension() : '';
|
33933
|
+
var ret = '<' + this.constructor.toString() + ':' + _emberUtils.guidFor(this) + extension + '>';
|
33934
|
+
|
33935
|
+
return ret;
|
33936
|
+
}
|
33937
|
+
});
|
33743
33938
|
|
33744
33939
|
CoreObject.PrototypeMixin.ownerConstructor = CoreObject;
|
33745
33940
|
|
@@ -34120,200 +34315,6 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-utils', 'ember-met
|
|
34120
34315
|
|
34121
34316
|
exports.default = CoreObject;
|
34122
34317
|
});
|
34123
|
-
|
34124
|
-
/**
|
34125
|
-
Defines the properties that will be concatenated from the superclass
|
34126
|
-
(instead of overridden).
|
34127
|
-
By default, when you extend an Ember class a property defined in
|
34128
|
-
the subclass overrides a property with the same name that is defined
|
34129
|
-
in the superclass. However, there are some cases where it is preferable
|
34130
|
-
to build up a property's value by combining the superclass' property
|
34131
|
-
value with the subclass' value. An example of this in use within Ember
|
34132
|
-
is the `classNames` property of `Ember.View`.
|
34133
|
-
Here is some sample code showing the difference between a concatenated
|
34134
|
-
property and a normal one:
|
34135
|
-
```javascript
|
34136
|
-
const Bar = Ember.Object.extend({
|
34137
|
-
// Configure which properties to concatenate
|
34138
|
-
concatenatedProperties: ['concatenatedProperty'],
|
34139
|
-
someNonConcatenatedProperty: ['bar'],
|
34140
|
-
concatenatedProperty: ['bar']
|
34141
|
-
});
|
34142
|
-
const FooBar = Bar.extend({
|
34143
|
-
someNonConcatenatedProperty: ['foo'],
|
34144
|
-
concatenatedProperty: ['foo']
|
34145
|
-
});
|
34146
|
-
let fooBar = FooBar.create();
|
34147
|
-
fooBar.get('someNonConcatenatedProperty'); // ['foo']
|
34148
|
-
fooBar.get('concatenatedProperty'); // ['bar', 'foo']
|
34149
|
-
```
|
34150
|
-
This behavior extends to object creation as well. Continuing the
|
34151
|
-
above example:
|
34152
|
-
```javascript
|
34153
|
-
let fooBar = FooBar.create({
|
34154
|
-
someNonConcatenatedProperty: ['baz'],
|
34155
|
-
concatenatedProperty: ['baz']
|
34156
|
-
})
|
34157
|
-
fooBar.get('someNonConcatenatedProperty'); // ['baz']
|
34158
|
-
fooBar.get('concatenatedProperty'); // ['bar', 'foo', 'baz']
|
34159
|
-
```
|
34160
|
-
Adding a single property that is not an array will just add it in the array:
|
34161
|
-
```javascript
|
34162
|
-
let fooBar = FooBar.create({
|
34163
|
-
concatenatedProperty: 'baz'
|
34164
|
-
})
|
34165
|
-
view.get('concatenatedProperty'); // ['bar', 'foo', 'baz']
|
34166
|
-
```
|
34167
|
-
Using the `concatenatedProperties` property, we can tell Ember to mix the
|
34168
|
-
content of the properties.
|
34169
|
-
In `Ember.Component` the `classNames`, `classNameBindings` and
|
34170
|
-
`attributeBindings` properties are concatenated.
|
34171
|
-
This feature is available for you to use throughout the Ember object model,
|
34172
|
-
although typical app developers are likely to use it infrequently. Since
|
34173
|
-
it changes expectations about behavior of properties, you should properly
|
34174
|
-
document its usage in each individual concatenated property (to not
|
34175
|
-
mislead your users to think they can override the property in a subclass).
|
34176
|
-
@property concatenatedProperties
|
34177
|
-
@type Array
|
34178
|
-
@default null
|
34179
|
-
@public
|
34180
|
-
*/
|
34181
|
-
|
34182
|
-
/**
|
34183
|
-
Defines the properties that will be merged from the superclass
|
34184
|
-
(instead of overridden).
|
34185
|
-
By default, when you extend an Ember class a property defined in
|
34186
|
-
the subclass overrides a property with the same name that is defined
|
34187
|
-
in the superclass. However, there are some cases where it is preferable
|
34188
|
-
to build up a property's value by merging the superclass property value
|
34189
|
-
with the subclass property's value. An example of this in use within Ember
|
34190
|
-
is the `queryParams` property of routes.
|
34191
|
-
Here is some sample code showing the difference between a merged
|
34192
|
-
property and a normal one:
|
34193
|
-
```javascript
|
34194
|
-
const Bar = Ember.Object.extend({
|
34195
|
-
// Configure which properties are to be merged
|
34196
|
-
mergedProperties: ['mergedProperty'],
|
34197
|
-
someNonMergedProperty: {
|
34198
|
-
nonMerged: 'superclass value of nonMerged'
|
34199
|
-
},
|
34200
|
-
mergedProperty: {
|
34201
|
-
page: {replace: false},
|
34202
|
-
limit: {replace: true}
|
34203
|
-
}
|
34204
|
-
});
|
34205
|
-
const FooBar = Bar.extend({
|
34206
|
-
someNonMergedProperty: {
|
34207
|
-
completelyNonMerged: 'subclass value of nonMerged'
|
34208
|
-
},
|
34209
|
-
mergedProperty: {
|
34210
|
-
limit: {replace: false}
|
34211
|
-
}
|
34212
|
-
});
|
34213
|
-
let fooBar = FooBar.create();
|
34214
|
-
fooBar.get('someNonMergedProperty');
|
34215
|
-
// => { completelyNonMerged: 'subclass value of nonMerged' }
|
34216
|
-
//
|
34217
|
-
// Note the entire object, including the nonMerged property of
|
34218
|
-
// the superclass object, has been replaced
|
34219
|
-
fooBar.get('mergedProperty');
|
34220
|
-
// => {
|
34221
|
-
// page: {replace: false},
|
34222
|
-
// limit: {replace: false}
|
34223
|
-
// }
|
34224
|
-
//
|
34225
|
-
// Note the page remains from the superclass, and the
|
34226
|
-
// `limit` property's value of `false` has been merged from
|
34227
|
-
// the subclass.
|
34228
|
-
```
|
34229
|
-
This behavior is not available during object `create` calls. It is only
|
34230
|
-
available at `extend` time.
|
34231
|
-
In `Ember.Route` the `queryParams` property is merged.
|
34232
|
-
This feature is available for you to use throughout the Ember object model,
|
34233
|
-
although typical app developers are likely to use it infrequently. Since
|
34234
|
-
it changes expectations about behavior of properties, you should properly
|
34235
|
-
document its usage in each individual merged property (to not
|
34236
|
-
mislead your users to think they can override the property in a subclass).
|
34237
|
-
@property mergedProperties
|
34238
|
-
@type Array
|
34239
|
-
@default null
|
34240
|
-
@public
|
34241
|
-
*/
|
34242
|
-
|
34243
|
-
/**
|
34244
|
-
Destroyed object property flag.
|
34245
|
-
if this property is `true` the observers and bindings were already
|
34246
|
-
removed by the effect of calling the `destroy()` method.
|
34247
|
-
@property isDestroyed
|
34248
|
-
@default false
|
34249
|
-
@public
|
34250
|
-
*/
|
34251
|
-
|
34252
|
-
/**
|
34253
|
-
Destruction scheduled flag. The `destroy()` method has been called.
|
34254
|
-
The object stays intact until the end of the run loop at which point
|
34255
|
-
the `isDestroyed` flag is set.
|
34256
|
-
@property isDestroying
|
34257
|
-
@default false
|
34258
|
-
@public
|
34259
|
-
*/
|
34260
|
-
|
34261
|
-
/**
|
34262
|
-
Destroys an object by setting the `isDestroyed` flag and removing its
|
34263
|
-
metadata, which effectively destroys observers and bindings.
|
34264
|
-
If you try to set a property on a destroyed object, an exception will be
|
34265
|
-
raised.
|
34266
|
-
Note that destruction is scheduled for the end of the run loop and does not
|
34267
|
-
happen immediately. It will set an isDestroying flag immediately.
|
34268
|
-
@method destroy
|
34269
|
-
@return {Ember.Object} receiver
|
34270
|
-
@public
|
34271
|
-
*/
|
34272
|
-
|
34273
|
-
/**
|
34274
|
-
Override to implement teardown.
|
34275
|
-
@method willDestroy
|
34276
|
-
@public
|
34277
|
-
*/
|
34278
|
-
|
34279
|
-
/**
|
34280
|
-
Invoked by the run loop to actually destroy the object. This is
|
34281
|
-
scheduled for execution by the `destroy` method.
|
34282
|
-
@private
|
34283
|
-
@method _scheduledDestroy
|
34284
|
-
*/
|
34285
|
-
|
34286
|
-
/**
|
34287
|
-
Returns a string representation which attempts to provide more information
|
34288
|
-
than Javascript's `toString` typically does, in a generic way for all Ember
|
34289
|
-
objects.
|
34290
|
-
```javascript
|
34291
|
-
const Person = Ember.Object.extend()
|
34292
|
-
person = Person.create()
|
34293
|
-
person.toString() //=> "<Person:ember1024>"
|
34294
|
-
```
|
34295
|
-
If the object's class is not defined on an Ember namespace, it will
|
34296
|
-
indicate it is a subclass of the registered superclass:
|
34297
|
-
```javascript
|
34298
|
-
const Student = Person.extend()
|
34299
|
-
let student = Student.create()
|
34300
|
-
student.toString() //=> "<(subclass of Person):ember1025>"
|
34301
|
-
```
|
34302
|
-
If the method `toStringExtension` is defined, its return value will be
|
34303
|
-
included in the output.
|
34304
|
-
```javascript
|
34305
|
-
const Teacher = Person.extend({
|
34306
|
-
toStringExtension() {
|
34307
|
-
return this.get('fullName');
|
34308
|
-
}
|
34309
|
-
});
|
34310
|
-
teacher = Teacher.create()
|
34311
|
-
teacher.toString(); //=> "<Teacher:ember1026:Tom Dale>"
|
34312
|
-
```
|
34313
|
-
@method toString
|
34314
|
-
@return {String} string representation
|
34315
|
-
@public
|
34316
|
-
*/
|
34317
34318
|
enifed('ember-runtime/system/each_proxy', ['exports', 'ember-utils', 'ember-metal', 'ember-runtime/mixins/array'], function (exports, _emberUtils, _emberMetal, _emberRuntimeMixinsArray) {
|
34318
34319
|
'use strict';
|
34319
34320
|
|
@@ -34897,7 +34898,7 @@ enifed('ember-runtime/system/native_array', ['exports', 'ember-metal', 'ember-en
|
|
34897
34898
|
exports.default = NativeArray;
|
34898
34899
|
});
|
34899
34900
|
// Ember.A circular
|
34900
|
-
enifed('ember-runtime/system/object', ['exports', 'ember-runtime/system/core_object', 'ember-runtime/mixins/observable'], function (exports, _emberRuntimeSystemCore_object, _emberRuntimeMixinsObservable) {
|
34901
|
+
enifed('ember-runtime/system/object', ['exports', 'ember-utils', 'ember-metal', 'ember-runtime/system/core_object', 'ember-runtime/mixins/observable'], function (exports, _emberUtils, _emberMetal, _emberRuntimeSystemCore_object, _emberRuntimeMixinsObservable) {
|
34901
34902
|
/**
|
34902
34903
|
@module ember
|
34903
34904
|
@submodule ember-runtime
|
@@ -34921,6 +34922,26 @@ enifed('ember-runtime/system/object', ['exports', 'ember-runtime/system/core_obj
|
|
34921
34922
|
return 'Ember.Object';
|
34922
34923
|
};
|
34923
34924
|
|
34925
|
+
var FrameworkObject = EmberObject;
|
34926
|
+
|
34927
|
+
exports.FrameworkObject = FrameworkObject;
|
34928
|
+
_emberMetal.runInDebug(function () {
|
34929
|
+
var _EmberObject$extend;
|
34930
|
+
|
34931
|
+
var INIT_WAS_CALLED = _emberUtils.symbol('INIT_WAS_CALLED');
|
34932
|
+
var ASSERT_INIT_WAS_CALLED = _emberUtils.symbol('ASSERT_INIT_WAS_CALLED');
|
34933
|
+
|
34934
|
+
exports.FrameworkObject = FrameworkObject = EmberObject.extend((_EmberObject$extend = {
|
34935
|
+
init: function () {
|
34936
|
+
this._super.apply(this, arguments);
|
34937
|
+
this[INIT_WAS_CALLED] = true;
|
34938
|
+
}
|
34939
|
+
|
34940
|
+
}, _EmberObject$extend[ASSERT_INIT_WAS_CALLED] = _emberMetal.on('init', function () {
|
34941
|
+
_emberMetal.assert('You must call `this._super(...arguments);` when overriding `init` on a framework object. Please update ' + this + ' to call `this._super(...arguments);` from `init`.', this[INIT_WAS_CALLED]);
|
34942
|
+
}), _EmberObject$extend));
|
34943
|
+
});
|
34944
|
+
|
34924
34945
|
exports.default = EmberObject;
|
34925
34946
|
});
|
34926
34947
|
enifed('ember-runtime/system/object_proxy', ['exports', 'ember-runtime/system/object', 'ember-runtime/mixins/-proxy'], function (exports, _emberRuntimeSystemObject, _emberRuntimeMixinsProxy) {
|
@@ -38575,13 +38596,9 @@ enifed('ember-views/mixins/view_state_support', ['exports', 'ember-metal'], func
|
|
38575
38596
|
}
|
38576
38597
|
});
|
38577
38598
|
});
|
38578
|
-
enifed('ember-views/mixins/view_support', ['exports', 'ember-utils', 'ember-metal', 'ember-
|
38599
|
+
enifed('ember-views/mixins/view_support', ['exports', 'ember-utils', 'ember-metal', 'ember-environment', 'ember-views/system/utils', 'ember-views/system/jquery'], function (exports, _emberUtils, _emberMetal, _emberEnvironment, _emberViewsSystemUtils, _emberViewsSystemJquery) {
|
38579
38600
|
'use strict';
|
38580
38601
|
|
38581
|
-
var _Mixin$create;
|
38582
|
-
|
38583
|
-
var INIT_WAS_CALLED = _emberUtils.symbol('INIT_WAS_CALLED');
|
38584
|
-
|
38585
38602
|
function K() {
|
38586
38603
|
return this;
|
38587
38604
|
}
|
@@ -38591,7 +38608,7 @@ enifed('ember-views/mixins/view_support', ['exports', 'ember-utils', 'ember-meta
|
|
38591
38608
|
@namespace Ember
|
38592
38609
|
@private
|
38593
38610
|
*/
|
38594
|
-
exports.default = _emberMetal.Mixin.create(
|
38611
|
+
exports.default = _emberMetal.Mixin.create({
|
38595
38612
|
concatenatedProperties: ['attributeBindings'],
|
38596
38613
|
|
38597
38614
|
// ..........................................................
|
@@ -38964,51 +38981,35 @@ enifed('ember-views/mixins/view_support', ['exports', 'ember-utils', 'ember-meta
|
|
38964
38981
|
this.elementId = _emberUtils.guidFor(this);
|
38965
38982
|
}
|
38966
38983
|
|
38967
|
-
|
38968
|
-
|
38969
|
-
|
38970
|
-
|
38971
|
-
|
38972
|
-
until: '3.0.0',
|
38973
|
-
url: 'http://emberjs.com/deprecations/v2.x#toc_ember-component-didinitattrs'
|
38974
|
-
});
|
38975
|
-
}
|
38984
|
+
_emberMetal.deprecate('[DEPRECATED] didInitAttrs called in ' + this.toString() + '.', typeof this.didInitAttrs !== 'function', {
|
38985
|
+
id: 'ember-views.did-init-attrs',
|
38986
|
+
until: '3.0.0',
|
38987
|
+
url: 'http://emberjs.com/deprecations/v2.x#toc_ember-component-didinitattrs'
|
38988
|
+
});
|
38976
38989
|
|
38977
38990
|
_emberMetal.assert('Using a custom `.render` function is no longer supported.', !this.render);
|
38978
|
-
}
|
38991
|
+
},
|
38979
38992
|
|
38980
|
-
|
38981
|
-
|
38993
|
+
__defineNonEnumerable: function (property) {
|
38994
|
+
this[property.name] = property.descriptor.value;
|
38995
|
+
},
|
38982
38996
|
|
38983
|
-
|
38997
|
+
// .......................................................
|
38998
|
+
// EVENT HANDLING
|
38999
|
+
//
|
38984
39000
|
|
38985
|
-
|
38986
|
-
|
38987
|
-
|
38988
|
-
|
38989
|
-
|
38990
|
-
|
39001
|
+
/**
|
39002
|
+
Handle events from `Ember.EventDispatcher`
|
39003
|
+
@method handleEvent
|
39004
|
+
@param eventName {String}
|
39005
|
+
@param evt {Event}
|
39006
|
+
@private
|
39007
|
+
*/
|
39008
|
+
handleEvent: function (eventName, evt) {
|
39009
|
+
return this._currentState.handleEvent(this, eventName, evt);
|
39010
|
+
}
|
39011
|
+
});
|
38991
39012
|
});
|
38992
|
-
/*
|
38993
|
-
This is a special hook implemented in CoreObject, that allows Views/Components
|
38994
|
-
to have a way to ensure that `init` fires before `didInitAttrs` / `didReceiveAttrs`
|
38995
|
-
(so that `this._super` in init does not trigger `didReceiveAttrs` before the classes
|
38996
|
-
own `init` is finished).
|
38997
|
-
@method __postInitInitialization
|
38998
|
-
@private
|
38999
|
-
*/
|
39000
|
-
|
39001
|
-
// .......................................................
|
39002
|
-
// EVENT HANDLING
|
39003
|
-
//
|
39004
|
-
|
39005
|
-
/**
|
39006
|
-
Handle events from `Ember.EventDispatcher`
|
39007
|
-
@method handleEvent
|
39008
|
-
@param eventName {String}
|
39009
|
-
@param evt {Event}
|
39010
|
-
@private
|
39011
|
-
*/
|
39012
39013
|
enifed("ember-views/system/action_manager", ["exports"], function (exports) {
|
39013
39014
|
/**
|
39014
39015
|
@module ember
|
@@ -39662,7 +39663,7 @@ enifed('ember-views/views/core_view', ['exports', 'ember-runtime', 'ember-views/
|
|
39662
39663
|
@uses Ember.ActionHandler
|
39663
39664
|
@private
|
39664
39665
|
*/
|
39665
|
-
var CoreView = _emberRuntime.
|
39666
|
+
var CoreView = _emberRuntime.FrameworkObject.extend(_emberRuntime.Evented, _emberRuntime.ActionHandler, {
|
39666
39667
|
isView: true,
|
39667
39668
|
|
39668
39669
|
_states: _emberViewsViewsStates.cloneStates(_emberViewsViewsStates.states),
|
@@ -39799,11 +39800,9 @@ enifed('ember-views/views/states/default', ['exports', 'ember-metal'], function
|
|
39799
39800
|
return true; // continue event propagation
|
39800
39801
|
},
|
39801
39802
|
|
39802
|
-
|
39803
|
+
rerender: function () {},
|
39803
39804
|
|
39804
|
-
|
39805
|
-
view.renderer.ensureViewNotRendering(view);
|
39806
|
-
}
|
39805
|
+
destroy: function () {}
|
39807
39806
|
};
|
39808
39807
|
});
|
39809
39808
|
enifed('ember-views/views/states/destroying', ['exports', 'ember-utils', 'ember-metal', 'ember-views/views/states/default'], function (exports, _emberUtils, _emberMetal, _emberViewsViewsStatesDefault) {
|
@@ -39838,10 +39837,7 @@ enifed('ember-views/views/states/has_element', ['exports', 'ember-utils', 'ember
|
|
39838
39837
|
return sel ? _emberViewsSystemJquery.default(sel, elem) : _emberViewsSystemJquery.default(elem);
|
39839
39838
|
},
|
39840
39839
|
|
39841
|
-
// once the view has been inserted into the DOM, rerendering is
|
39842
|
-
// deferred to allow bindings to synchronize.
|
39843
39840
|
rerender: function (view) {
|
39844
|
-
view.renderer.ensureViewNotRendering(view);
|
39845
39841
|
view.renderer.rerender(view);
|
39846
39842
|
},
|
39847
39843
|
|
@@ -40937,7 +40933,7 @@ enifed('ember/index', ['exports', 'require', 'ember-environment', 'ember-utils',
|
|
40937
40933
|
enifed("ember/version", ["exports"], function (exports) {
|
40938
40934
|
"use strict";
|
40939
40935
|
|
40940
|
-
exports.default = "2.9.0-beta.
|
40936
|
+
exports.default = "2.9.0-beta.5";
|
40941
40937
|
});
|
40942
40938
|
enifed('internal-test-helpers/factory', ['exports'], function (exports) {
|
40943
40939
|
'use strict';
|