ember-source 2.18.2 → 3.0.0.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/dist/ember-runtime.js +646 -845
- data/dist/ember-template-compiler.js +833 -1237
- data/dist/ember-testing.js +31 -19
- data/dist/ember-tests.js +8268 -7877
- data/dist/ember-tests.prod.js +6936 -7084
- data/dist/ember.debug.js +1465 -2032
- data/dist/ember.min.js +661 -662
- data/dist/ember.prod.js +1128 -1848
- data/package.json +10 -19
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 767aa99d524af25f77b556b708430bd94091a07d7599f1880edec25394bda0d8
|
4
|
+
data.tar.gz: df8a0bc3d99c799a1ca8b789f5ce715da2456fe5633eb1b61239a81c8a985a14
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a35ae1e8487074bc9379983fe043140cec35eacabee5ad1ec8847849401a53d0305ce4bf66c0b877bc32953963e15909038f9eeed90c8b3280aa655953ad87b
|
7
|
+
data.tar.gz: ba81b6bcbcfc0c483c56d38b3e485f3efd292b2df0cb35ca9dcd501c56e74659ca18cda64ce28f3c3b9ed2c6e6313cbfe0c0d2d66c37b3fbbc157769e0011af7
|
data/dist/ember-runtime.js
CHANGED
@@ -1,17 +1,19 @@
|
|
1
1
|
(function() {
|
2
2
|
/*!
|
3
3
|
* @overview Ember - JavaScript Application Framework
|
4
|
-
* @copyright Copyright 2011-
|
4
|
+
* @copyright Copyright 2011-2018 Tilde Inc. and contributors
|
5
5
|
* Portions Copyright 2006-2011 Strobe Inc.
|
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
|
9
|
+
* @version 3.0.0-beta.1
|
10
10
|
*/
|
11
11
|
|
12
|
-
/*
|
12
|
+
/*globals process */
|
13
13
|
var enifed, requireModule, Ember;
|
14
|
-
|
14
|
+
|
15
|
+
// Used in ember-environment/lib/global.js
|
16
|
+
mainContext = this; // eslint-disable-line no-undef
|
15
17
|
|
16
18
|
(function() {
|
17
19
|
function missingModule(name, referrerName) {
|
@@ -113,29 +115,11 @@ var mainContext = this; // Used in ember-environment/lib/global.js
|
|
113
115
|
}
|
114
116
|
})();
|
115
117
|
|
116
|
-
enifed('container', ['exports', 'ember-babel', 'ember-utils', 'ember-debug', 'ember/features'], function (exports, _emberBabel, _emberUtils, _emberDebug, _features) {
|
118
|
+
enifed('container', ['exports', 'ember-babel', 'ember-utils', 'ember-debug', 'ember/features', 'ember-environment'], function (exports, _emberBabel, _emberUtils, _emberDebug, _features, _emberEnvironment) {
|
117
119
|
'use strict';
|
118
120
|
|
119
121
|
exports.Container = exports.privatize = exports.Registry = undefined;
|
120
122
|
|
121
|
-
|
122
|
-
/* globals Proxy */
|
123
|
-
var CONTAINER_OVERRIDE = (0, _emberUtils.symbol)('CONTAINER_OVERRIDE');
|
124
|
-
|
125
|
-
/**
|
126
|
-
A container used to instantiate and cache objects.
|
127
|
-
|
128
|
-
Every `Container` must be associated with a `Registry`, which is referenced
|
129
|
-
to determine the factory and options that should be used to instantiate
|
130
|
-
objects.
|
131
|
-
|
132
|
-
The public API for `Container` is still in flux and should not be considered
|
133
|
-
stable.
|
134
|
-
|
135
|
-
@private
|
136
|
-
@class Container
|
137
|
-
*/
|
138
|
-
|
139
123
|
var Container = function () {
|
140
124
|
function Container(registry) {
|
141
125
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
@@ -145,7 +129,6 @@ enifed('container', ['exports', 'ember-babel', 'ember-utils', 'ember-debug', 'em
|
|
145
129
|
this.owner = options.owner || null;
|
146
130
|
this.cache = (0, _emberUtils.dictionary)(options.cache || null);
|
147
131
|
this.factoryManagerCache = (0, _emberUtils.dictionary)(options.factoryManagerCache || null);
|
148
|
-
this[CONTAINER_OVERRIDE] = undefined;
|
149
132
|
this.isDestroyed = false;
|
150
133
|
|
151
134
|
if (true) {
|
@@ -297,7 +280,7 @@ enifed('container', ['exports', 'ember-babel', 'ember-utils', 'ember-debug', 'em
|
|
297
280
|
function wrapManagerInDeprecationProxy(manager) {
|
298
281
|
if (_emberUtils.HAS_NATIVE_PROXY) {
|
299
282
|
var validator = {
|
300
|
-
set: function (obj, prop
|
283
|
+
set: function (obj, prop) {
|
301
284
|
throw new Error('You attempted to set "' + prop + '" on a factory manager created by container#factoryFor. A factory manager is a read-only construct.');
|
302
285
|
}
|
303
286
|
};
|
@@ -558,6 +541,7 @@ enifed('container', ['exports', 'ember-babel', 'ember-utils', 'ember-debug', 'em
|
|
558
541
|
}();
|
559
542
|
|
560
543
|
var VALID_FULL_NAME_REGEXP = /^[^:]+:[^:]+$/;
|
544
|
+
var missingResolverFunctionsDeprecation = 'Passing a `resolver` function into a Registry is deprecated. Please pass in a Resolver object with a `resolve` method.';
|
561
545
|
|
562
546
|
/**
|
563
547
|
A registry used to store factory and option information keyed
|
@@ -581,7 +565,11 @@ enifed('container', ['exports', 'ember-babel', 'ember-utils', 'ember-debug', 'em
|
|
581
565
|
this.fallback = options.fallback || null;
|
582
566
|
this.resolver = options.resolver || null;
|
583
567
|
|
584
|
-
if (
|
568
|
+
if (_emberEnvironment.ENV._ENABLE_RESOLVER_FUNCTION_SUPPORT !== true) {
|
569
|
+
(true && !(typeof this.resolver !== 'function') && (0, _emberDebug.assert)(missingResolverFunctionsDeprecation, typeof this.resolver !== 'function'));
|
570
|
+
}
|
571
|
+
|
572
|
+
if (typeof this.resolver === 'function' && _emberEnvironment.ENV._ENABLE_RESOLVER_FUNCTION_SUPPORT === true) {
|
585
573
|
deprecateResolverFunction(this);
|
586
574
|
}
|
587
575
|
|
@@ -593,7 +581,7 @@ enifed('container', ['exports', 'ember-babel', 'ember-utils', 'ember-debug', 'em
|
|
593
581
|
this._localLookupCache = Object.create(null);
|
594
582
|
this._normalizeCache = (0, _emberUtils.dictionary)(null);
|
595
583
|
this._resolveCache = (0, _emberUtils.dictionary)(null);
|
596
|
-
this.
|
584
|
+
this._failSet = new Set();
|
597
585
|
|
598
586
|
this._options = (0, _emberUtils.dictionary)(null);
|
599
587
|
this._typeOptions = (0, _emberUtils.dictionary)(null);
|
@@ -678,7 +666,7 @@ enifed('container', ['exports', 'ember-babel', 'ember-utils', 'ember-debug', 'em
|
|
678
666
|
(true && !(!this._resolveCache[normalizedName]) && (0, _emberDebug.assert)('Cannot re-register: \'' + fullName + '\', as it has already been resolved.', !this._resolveCache[normalizedName]));
|
679
667
|
|
680
668
|
|
681
|
-
|
669
|
+
this._failSet.delete(normalizedName);
|
682
670
|
this.registrations[normalizedName] = factory;
|
683
671
|
this._options[normalizedName] = options;
|
684
672
|
};
|
@@ -693,8 +681,8 @@ enifed('container', ['exports', 'ember-babel', 'ember-utils', 'ember-debug', 'em
|
|
693
681
|
|
694
682
|
delete this.registrations[normalizedName];
|
695
683
|
delete this._resolveCache[normalizedName];
|
696
|
-
delete this._failCache[normalizedName];
|
697
684
|
delete this._options[normalizedName];
|
685
|
+
this._failSet.delete(normalizedName);
|
698
686
|
};
|
699
687
|
|
700
688
|
Registry.prototype.resolve = function resolve(fullName, options) {
|
@@ -832,9 +820,6 @@ enifed('container', ['exports', 'ember-babel', 'ember-utils', 'ember-debug', 'em
|
|
832
820
|
};
|
833
821
|
|
834
822
|
Registry.prototype.knownForType = function knownForType(type) {
|
835
|
-
var fallbackKnown = void 0,
|
836
|
-
resolverKnown = void 0;
|
837
|
-
|
838
823
|
var localKnown = (0, _emberUtils.dictionary)(null);
|
839
824
|
var registeredNames = Object.keys(this.registrations);
|
840
825
|
for (var index = 0; index < registeredNames.length; index++) {
|
@@ -846,6 +831,8 @@ enifed('container', ['exports', 'ember-babel', 'ember-utils', 'ember-debug', 'em
|
|
846
831
|
}
|
847
832
|
}
|
848
833
|
|
834
|
+
var fallbackKnown = void 0,
|
835
|
+
resolverKnown = void 0;
|
849
836
|
if (this.fallback !== null) {
|
850
837
|
fallbackKnown = this.fallback.knownForType(type);
|
851
838
|
}
|
@@ -907,7 +894,7 @@ enifed('container', ['exports', 'ember-babel', 'ember-utils', 'ember-debug', 'em
|
|
907
894
|
}();
|
908
895
|
|
909
896
|
function deprecateResolverFunction(registry) {
|
910
|
-
(true && !(false) && (0, _emberDebug.deprecate)(
|
897
|
+
(true && !(false) && (0, _emberDebug.deprecate)(missingResolverFunctionsDeprecation, false, { id: 'ember-application.registry-resolver-as-function', until: '3.0.0', url: 'https://emberjs.com/deprecations/v2.x#toc_registry-resolver-as-function' }));
|
911
898
|
|
912
899
|
registry.resolver = { resolve: registry.resolver };
|
913
900
|
}
|
@@ -991,7 +978,7 @@ enifed('container', ['exports', 'ember-babel', 'ember-utils', 'ember-debug', 'em
|
|
991
978
|
if (cached !== undefined) {
|
992
979
|
return cached;
|
993
980
|
}
|
994
|
-
if (registry.
|
981
|
+
if (registry._failSet.has(cacheKey)) {
|
995
982
|
return;
|
996
983
|
}
|
997
984
|
|
@@ -1006,7 +993,7 @@ enifed('container', ['exports', 'ember-babel', 'ember-utils', 'ember-debug', 'em
|
|
1006
993
|
}
|
1007
994
|
|
1008
995
|
if (resolved === undefined) {
|
1009
|
-
registry.
|
996
|
+
registry._failSet.add(cacheKey);
|
1010
997
|
} else {
|
1011
998
|
registry._resolveCache[cacheKey] = resolved;
|
1012
999
|
}
|
@@ -1120,41 +1107,8 @@ enifed('ember-babel', ['exports'], function (exports) {
|
|
1120
1107
|
|
1121
1108
|
var slice = exports.slice = Array.prototype.slice;
|
1122
1109
|
});
|
1123
|
-
enifed(
|
1124
|
-
|
1125
|
-
|
1126
|
-
function K() {}
|
1127
|
-
|
1128
|
-
function consoleMethod(name) {
|
1129
|
-
var consoleObj = void 0;
|
1130
|
-
if (_emberEnvironment.context.imports.console) {
|
1131
|
-
consoleObj = _emberEnvironment.context.imports.console;
|
1132
|
-
} else if (typeof console !== 'undefined') {
|
1133
|
-
// eslint-disable-line no-undef
|
1134
|
-
consoleObj = console; // eslint-disable-line no-undef
|
1135
|
-
}
|
1136
|
-
|
1137
|
-
var method = typeof consoleObj === 'object' ? consoleObj[name] : null;
|
1138
|
-
|
1139
|
-
if (typeof method !== 'function') {
|
1140
|
-
return;
|
1141
|
-
}
|
1142
|
-
|
1143
|
-
return method.bind(consoleObj);
|
1144
|
-
}
|
1145
|
-
|
1146
|
-
function assertPolyfill(test, message) {
|
1147
|
-
if (!test) {
|
1148
|
-
try {
|
1149
|
-
// attempt to preserve the stack
|
1150
|
-
throw new Error('assertion failed: ' + message);
|
1151
|
-
} catch (error) {
|
1152
|
-
setTimeout(function () {
|
1153
|
-
throw error;
|
1154
|
-
}, 0);
|
1155
|
-
}
|
1156
|
-
}
|
1157
|
-
}
|
1110
|
+
enifed("ember-console", ["exports"], function (exports) {
|
1111
|
+
"use strict";
|
1158
1112
|
|
1159
1113
|
/**
|
1160
1114
|
Inside Ember-Metal, simply uses the methods from `imports.console`.
|
@@ -1165,93 +1119,36 @@ enifed('ember-console', ['exports', 'ember-environment'], function (exports, _em
|
|
1165
1119
|
@public
|
1166
1120
|
*/
|
1167
1121
|
var index = {
|
1168
|
-
|
1169
|
-
|
1170
|
-
You can pass as many arguments as you want and they will be joined together with a space.
|
1171
|
-
```javascript
|
1172
|
-
var foo = 1;
|
1173
|
-
Ember.Logger.log('log value of foo:', foo);
|
1174
|
-
// "log value of foo: 1" will be printed to the console
|
1175
|
-
```
|
1176
|
-
@method log
|
1177
|
-
@for Ember.Logger
|
1178
|
-
@param {*} arguments
|
1179
|
-
@public
|
1180
|
-
*/
|
1181
|
-
log: consoleMethod('log') || K,
|
1122
|
+
log: function () {
|
1123
|
+
var _console;
|
1182
1124
|
|
1183
|
-
|
1184
|
-
|
1185
|
-
|
1186
|
-
|
1187
|
-
Ember.Logger.warn('Something happened!');
|
1188
|
-
// "Something happened!" will be printed to the console with a warning icon.
|
1189
|
-
```
|
1190
|
-
@method warn
|
1191
|
-
@for Ember.Logger
|
1192
|
-
@param {*} arguments
|
1193
|
-
@public
|
1194
|
-
*/
|
1195
|
-
warn: consoleMethod('warn') || K,
|
1125
|
+
return (_console = console).log.apply(_console, arguments);
|
1126
|
+
},
|
1127
|
+
warn: function () {
|
1128
|
+
var _console2;
|
1196
1129
|
|
1197
|
-
|
1198
|
-
|
1199
|
-
|
1200
|
-
|
1201
|
-
Ember.Logger.error('Danger! Danger!');
|
1202
|
-
// "Danger! Danger!" will be printed to the console in red text.
|
1203
|
-
```
|
1204
|
-
@method error
|
1205
|
-
@for Ember.Logger
|
1206
|
-
@param {*} arguments
|
1207
|
-
@public
|
1208
|
-
*/
|
1209
|
-
error: consoleMethod('error') || K,
|
1130
|
+
return (_console2 = console).warn.apply(_console2, arguments);
|
1131
|
+
},
|
1132
|
+
error: function () {
|
1133
|
+
var _console3;
|
1210
1134
|
|
1211
|
-
|
1212
|
-
|
1213
|
-
|
1214
|
-
|
1215
|
-
var foo = 1;
|
1216
|
-
Ember.Logger.info('log value of foo:', foo);
|
1217
|
-
// "log value of foo: 1" will be printed to the console
|
1218
|
-
```
|
1219
|
-
@method info
|
1220
|
-
@for Ember.Logger
|
1221
|
-
@param {*} arguments
|
1222
|
-
@public
|
1223
|
-
*/
|
1224
|
-
info: consoleMethod('info') || K,
|
1135
|
+
return (_console3 = console).error.apply(_console3, arguments);
|
1136
|
+
},
|
1137
|
+
info: function () {
|
1138
|
+
var _console4;
|
1225
1139
|
|
1226
|
-
|
1227
|
-
|
1228
|
-
|
1229
|
-
|
1230
|
-
var foo = 1;
|
1231
|
-
Ember.Logger.debug('log value of foo:', foo);
|
1232
|
-
// "log value of foo: 1" will be printed to the console
|
1233
|
-
```
|
1234
|
-
@method debug
|
1235
|
-
@for Ember.Logger
|
1236
|
-
@param {*} arguments
|
1237
|
-
@public
|
1238
|
-
*/
|
1239
|
-
debug: consoleMethod('debug') || consoleMethod('info') || K,
|
1140
|
+
return (_console4 = console).info.apply(_console4, arguments);
|
1141
|
+
},
|
1142
|
+
debug: function () {
|
1143
|
+
var _console5, _console6;
|
1240
1144
|
|
1241
|
-
|
1242
|
-
|
1243
|
-
|
1244
|
-
|
1245
|
-
|
1246
|
-
|
1247
|
-
|
1248
|
-
@method assert
|
1249
|
-
@for Ember.Logger
|
1250
|
-
@param {Boolean} bool Value to test
|
1251
|
-
@param {String} message Assertion message on failed
|
1252
|
-
@public
|
1253
|
-
*/
|
1254
|
-
assert: consoleMethod('assert') || assertPolyfill
|
1145
|
+
return console.debug && (_console5 = console).debug.apply(_console5, arguments) || (_console6 = console).info.apply(_console6, arguments); // eslint-disable-line no-console
|
1146
|
+
},
|
1147
|
+
assert: function () {
|
1148
|
+
var _console7;
|
1149
|
+
|
1150
|
+
return (_console7 = console).assert.apply(_console7, arguments);
|
1151
|
+
}
|
1255
1152
|
};
|
1256
1153
|
|
1257
1154
|
exports.default = index;
|
@@ -1396,7 +1293,6 @@ enifed('ember-environment', ['exports'], function (exports) {
|
|
1396
1293
|
hasDOM: true,
|
1397
1294
|
isChrome: !!window.chrome && !window.opera,
|
1398
1295
|
isFirefox: typeof InstallTrigger !== 'undefined',
|
1399
|
-
isPhantom: !!window.callPhantom,
|
1400
1296
|
location: window.location,
|
1401
1297
|
history: window.history,
|
1402
1298
|
userAgent: window.navigator.userAgent,
|
@@ -1405,7 +1301,6 @@ enifed('ember-environment', ['exports'], function (exports) {
|
|
1405
1301
|
hasDOM: false,
|
1406
1302
|
isChrome: false,
|
1407
1303
|
isFirefox: false,
|
1408
|
-
isPhantom: false,
|
1409
1304
|
location: null,
|
1410
1305
|
history: null,
|
1411
1306
|
userAgent: 'Lynx (textmode)',
|
@@ -1416,12 +1311,12 @@ enifed('ember-environment', ['exports'], function (exports) {
|
|
1416
1311
|
exports.context = context;
|
1417
1312
|
exports.environment = environment;
|
1418
1313
|
});
|
1419
|
-
enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-debug', 'ember
|
1314
|
+
enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-debug', 'ember/features', 'ember-babel', '@glimmer/reference', 'require', 'backburner', 'ember-console'], function (exports, emberEnvironment, emberUtils, emberDebug, features, emberBabel, reference, require, Backburner, Logger) {
|
1420
1315
|
'use strict';
|
1421
1316
|
|
1422
|
-
require = 'default'
|
1423
|
-
|
1424
|
-
|
1317
|
+
require = require && require.hasOwnProperty('default') ? require['default'] : require;
|
1318
|
+
Backburner = Backburner && Backburner.hasOwnProperty('default') ? Backburner['default'] : Backburner;
|
1319
|
+
Logger = Logger && Logger.hasOwnProperty('default') ? Logger['default'] : Logger;
|
1425
1320
|
|
1426
1321
|
/**
|
1427
1322
|
@module ember
|
@@ -1642,11 +1537,16 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
1642
1537
|
*/
|
1643
1538
|
function addListener(obj, eventName, target, method, once) {
|
1644
1539
|
true && !(!!obj && !!eventName) && emberDebug.assert('You must pass at least an object and event name to addListener', !!obj && !!eventName);
|
1645
|
-
|
1646
|
-
|
1647
|
-
|
1648
|
-
|
1649
|
-
|
1540
|
+
|
1541
|
+
if (emberEnvironment.ENV._ENABLE_DID_INIT_ATTRS_SUPPORT === true) {
|
1542
|
+
true && !(eventName !== 'didInitAttrs') && emberDebug.deprecate('didInitAttrs called in ' + (obj && obj.toString && obj.toString()) + '.', eventName !== 'didInitAttrs', {
|
1543
|
+
id: 'ember-views.did-init-attrs',
|
1544
|
+
until: '3.0.0',
|
1545
|
+
url: 'https://emberjs.com/deprecations/v2.x#toc_ember-component-didinitattrs'
|
1546
|
+
});
|
1547
|
+
} else {
|
1548
|
+
true && !(eventName !== 'didInitAttrs') && emberDebug.assert('didInitAttrs called in ' + (obj && obj.toString && obj.toString()) + ' is no longer supported.', eventName !== 'didInitAttrs');
|
1549
|
+
}
|
1650
1550
|
|
1651
1551
|
if (!method && 'function' === typeof target) {
|
1652
1552
|
method = target;
|
@@ -1746,7 +1646,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
1746
1646
|
@param obj
|
1747
1647
|
*/
|
1748
1648
|
function watchedEvents(obj) {
|
1749
|
-
var meta$$1 =
|
1649
|
+
var meta$$1 = peekMeta(obj);
|
1750
1650
|
return meta$$1 !== undefined ? meta$$1.watchedEvents() : [];
|
1751
1651
|
}
|
1752
1652
|
|
@@ -1769,7 +1669,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
1769
1669
|
*/
|
1770
1670
|
function sendEvent(obj, eventName, params, actions, _meta) {
|
1771
1671
|
if (actions === undefined) {
|
1772
|
-
var meta$$1 = _meta === undefined ?
|
1672
|
+
var meta$$1 = _meta === undefined ? peekMeta(obj) : _meta;
|
1773
1673
|
actions = typeof meta$$1 === 'object' && meta$$1 !== null && meta$$1.matchingListeners(eventName);
|
1774
1674
|
}
|
1775
1675
|
|
@@ -1821,7 +1721,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
1821
1721
|
@param {String} eventName
|
1822
1722
|
*/
|
1823
1723
|
function hasListeners(obj, eventName) {
|
1824
|
-
var meta$$1 =
|
1724
|
+
var meta$$1 = peekMeta(obj);
|
1825
1725
|
if (meta$$1 === undefined) {
|
1826
1726
|
return false;
|
1827
1727
|
}
|
@@ -1839,7 +1739,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
1839
1739
|
*/
|
1840
1740
|
function listenersFor(obj, eventName) {
|
1841
1741
|
var ret = [];
|
1842
|
-
var meta$$1 =
|
1742
|
+
var meta$$1 = peekMeta(obj);
|
1843
1743
|
var actions = meta$$1 !== undefined ? meta$$1.matchingListeners(eventName) : undefined;
|
1844
1744
|
|
1845
1745
|
if (actions === undefined) {
|
@@ -1912,12 +1812,12 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
1912
1812
|
}
|
1913
1813
|
|
1914
1814
|
function makeTag() {
|
1915
|
-
return new
|
1815
|
+
return new reference.DirtyableTag();
|
1916
1816
|
}
|
1917
1817
|
|
1918
1818
|
function tagForProperty(object, propertyKey, _meta) {
|
1919
1819
|
if (typeof object !== 'object' || object === null) {
|
1920
|
-
return
|
1820
|
+
return reference.CONSTANT_TAG;
|
1921
1821
|
}
|
1922
1822
|
|
1923
1823
|
var meta$$1 = _meta === undefined ? meta(object) : _meta;
|
@@ -1939,7 +1839,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
1939
1839
|
var meta$$1 = _meta === undefined ? meta(object) : _meta;
|
1940
1840
|
return meta$$1.writableTag(makeTag);
|
1941
1841
|
} else {
|
1942
|
-
return
|
1842
|
+
return reference.CONSTANT_TAG;
|
1943
1843
|
}
|
1944
1844
|
}
|
1945
1845
|
|
@@ -2049,175 +1949,23 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2049
1949
|
return ObserverSet;
|
2050
1950
|
}();
|
2051
1951
|
|
2052
|
-
/**
|
2053
|
-
@module ember
|
2054
|
-
*/
|
2055
|
-
var id = 0;
|
2056
|
-
|
2057
|
-
// Returns whether Type(value) is Object according to the terminology in the spec
|
2058
|
-
function isObject$1(value) {
|
2059
|
-
return typeof value === 'object' && value !== null || typeof value === 'function';
|
2060
|
-
}
|
2061
|
-
|
2062
|
-
/*
|
2063
|
-
* @class Ember.WeakMap
|
2064
|
-
* @public
|
2065
|
-
* @category ember-metal-weakmap
|
2066
|
-
*
|
2067
|
-
* A partial polyfill for [WeakMap](http://www.ecma-international.org/ecma-262/6.0/#sec-weakmap-objects).
|
2068
|
-
*
|
2069
|
-
* There is a small but important caveat. This implementation assumes that the
|
2070
|
-
* weak map will live longer (in the sense of garbage collection) than all of its
|
2071
|
-
* keys, otherwise it is possible to leak the values stored in the weak map. In
|
2072
|
-
* practice, most use cases satisfy this limitation which is why it is included
|
2073
|
-
* in ember-metal.
|
2074
|
-
*/
|
2075
|
-
var WeakMapPolyfill = function () {
|
2076
|
-
function WeakMapPolyfill(iterable) {
|
2077
|
-
emberBabel.classCallCheck(this, WeakMapPolyfill);
|
2078
|
-
|
2079
|
-
this._id = emberUtils.GUID_KEY + id++;
|
2080
|
-
|
2081
|
-
if (iterable === null || iterable === undefined) {
|
2082
|
-
return;
|
2083
|
-
} else if (Array.isArray(iterable)) {
|
2084
|
-
for (var i = 0; i < iterable.length; i++) {
|
2085
|
-
var _iterable$i = iterable[i],
|
2086
|
-
key = _iterable$i[0],
|
2087
|
-
value = _iterable$i[1];
|
2088
|
-
|
2089
|
-
this.set(key, value);
|
2090
|
-
}
|
2091
|
-
} else {
|
2092
|
-
throw new TypeError('The weak map constructor polyfill only supports an array argument');
|
2093
|
-
}
|
2094
|
-
}
|
2095
|
-
|
2096
|
-
/*
|
2097
|
-
* @method get
|
2098
|
-
* @param key {Object | Function}
|
2099
|
-
* @return {Any} stored value
|
2100
|
-
*/
|
2101
|
-
|
2102
|
-
WeakMapPolyfill.prototype.get = function get(obj) {
|
2103
|
-
if (!isObject$1(obj)) {
|
2104
|
-
return undefined;
|
2105
|
-
}
|
2106
|
-
|
2107
|
-
var meta$$1 = exports.peekMeta(obj);
|
2108
|
-
if (meta$$1 !== undefined) {
|
2109
|
-
var map = meta$$1.readableWeak();
|
2110
|
-
if (map !== undefined) {
|
2111
|
-
var val = map[this._id];
|
2112
|
-
if (val === UNDEFINED) {
|
2113
|
-
return undefined;
|
2114
|
-
}
|
2115
|
-
return val;
|
2116
|
-
}
|
2117
|
-
}
|
2118
|
-
};
|
2119
|
-
|
2120
|
-
/*
|
2121
|
-
* @method set
|
2122
|
-
* @param key {Object | Function}
|
2123
|
-
* @param value {Any}
|
2124
|
-
* @return {WeakMap} the weak map
|
2125
|
-
*/
|
2126
|
-
|
2127
|
-
WeakMapPolyfill.prototype.set = function set(obj, value) {
|
2128
|
-
if (!isObject$1(obj)) {
|
2129
|
-
throw new TypeError('Invalid value used as weak map key');
|
2130
|
-
}
|
2131
|
-
|
2132
|
-
if (value === undefined) {
|
2133
|
-
value = UNDEFINED;
|
2134
|
-
}
|
2135
|
-
|
2136
|
-
meta(obj).writableWeak()[this._id] = value;
|
2137
|
-
|
2138
|
-
return this;
|
2139
|
-
};
|
2140
|
-
|
2141
|
-
/*
|
2142
|
-
* @method has
|
2143
|
-
* @param key {Object | Function}
|
2144
|
-
* @return {boolean} if the key exists
|
2145
|
-
*/
|
2146
|
-
|
2147
|
-
WeakMapPolyfill.prototype.has = function has(obj) {
|
2148
|
-
if (!isObject$1(obj)) {
|
2149
|
-
return false;
|
2150
|
-
}
|
2151
|
-
|
2152
|
-
var meta$$1 = exports.peekMeta(obj);
|
2153
|
-
if (meta$$1 !== undefined) {
|
2154
|
-
var map = meta$$1.readableWeak();
|
2155
|
-
if (map !== undefined) {
|
2156
|
-
return map[this._id] !== undefined;
|
2157
|
-
}
|
2158
|
-
}
|
2159
|
-
|
2160
|
-
return false;
|
2161
|
-
};
|
2162
|
-
|
2163
|
-
/*
|
2164
|
-
* @method delete
|
2165
|
-
* @param key {Object | Function}
|
2166
|
-
* @return {boolean} if the key was deleted
|
2167
|
-
*/
|
2168
|
-
|
2169
|
-
WeakMapPolyfill.prototype.delete = function _delete(obj) {
|
2170
|
-
if (this.has(obj)) {
|
2171
|
-
delete exports.peekMeta(obj).writableWeak()[this._id];
|
2172
|
-
return true;
|
2173
|
-
} else {
|
2174
|
-
return false;
|
2175
|
-
}
|
2176
|
-
};
|
2177
|
-
|
2178
|
-
/*
|
2179
|
-
* @method toString
|
2180
|
-
* @return {String}
|
2181
|
-
*/
|
2182
|
-
|
2183
|
-
WeakMapPolyfill.prototype.toString = function toString$$1() {
|
2184
|
-
return '[object WeakMap]';
|
2185
|
-
};
|
2186
|
-
|
2187
|
-
return WeakMapPolyfill;
|
2188
|
-
}();
|
2189
|
-
|
2190
|
-
var WeakMap$1 = emberUtils.HAS_NATIVE_WEAKMAP ? WeakMap : WeakMapPolyfill;
|
2191
|
-
|
2192
1952
|
exports.runInTransaction = void 0;
|
2193
1953
|
exports.didRender = void 0;
|
2194
1954
|
exports.assertNotRendered = void 0;
|
2195
1955
|
|
2196
1956
|
// detect-backtracking-rerender by default is debug build only
|
2197
|
-
|
2198
|
-
if (ember_features.EMBER_GLIMMER_DETECT_BACKTRACKING_RERENDER || ember_features.EMBER_GLIMMER_ALLOW_BACKTRACKING_RERENDER) {
|
1957
|
+
if (features.EMBER_GLIMMER_DETECT_BACKTRACKING_RERENDER) {
|
2199
1958
|
|
2200
|
-
// there are
|
1959
|
+
// there are 2 states
|
2201
1960
|
|
2202
|
-
//
|
1961
|
+
// DEBUG
|
2203
1962
|
// tracks lastRef and lastRenderedIn per rendered object and key during a transaction
|
2204
1963
|
// release everything via normal weakmap semantics by just derefencing the weakmap
|
2205
1964
|
|
2206
|
-
//
|
1965
|
+
// RELEASE
|
2207
1966
|
// tracks transactionId per rendered object and key during a transaction
|
2208
1967
|
// release everything via normal weakmap semantics by just derefencing the weakmap
|
2209
1968
|
|
2210
|
-
// WEAKMAP POLYFILL AND DEBUG
|
2211
|
-
// tracks lastRef and lastRenderedIn per rendered object and key during a transaction
|
2212
|
-
// since lastRef retains a lot of app state (will have a ref to the Container)
|
2213
|
-
// if the object rendered is retained (like a immutable POJO in module state)
|
2214
|
-
// during acceptance tests this adds up and obfuscates finding other leaks.
|
2215
|
-
|
2216
|
-
// WEAKMAP POLYFILL AND RELEASE
|
2217
|
-
// tracks transactionId per rendered object and key during a transaction
|
2218
|
-
// leaks it because small and likely not worth tracking it since it will only
|
2219
|
-
// be leaked if the object is retained
|
2220
|
-
|
2221
1969
|
var TransactionRunner = function () {
|
2222
1970
|
function TransactionRunner() {
|
2223
1971
|
emberBabel.classCallCheck(this, TransactionRunner);
|
@@ -2225,16 +1973,10 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2225
1973
|
this.transactionId = 0;
|
2226
1974
|
this.inTransaction = false;
|
2227
1975
|
this.shouldReflush = false;
|
2228
|
-
this.weakMap = new WeakMap
|
1976
|
+
this.weakMap = new WeakMap();
|
2229
1977
|
{
|
2230
1978
|
// track templates
|
2231
1979
|
this.debugStack = undefined;
|
2232
|
-
|
2233
|
-
if (!emberUtils.HAS_NATIVE_WEAKMAP) {
|
2234
|
-
// DEBUG AND POLYFILL
|
2235
|
-
// needs obj tracking
|
2236
|
-
this.objs = [];
|
2237
|
-
}
|
2238
1980
|
}
|
2239
1981
|
}
|
2240
1982
|
|
@@ -2248,13 +1990,13 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2248
1990
|
return this.shouldReflush;
|
2249
1991
|
};
|
2250
1992
|
|
2251
|
-
TransactionRunner.prototype.didRender = function didRender(object, key, reference) {
|
1993
|
+
TransactionRunner.prototype.didRender = function didRender(object, key, reference$$1) {
|
2252
1994
|
if (!this.inTransaction) {
|
2253
1995
|
return;
|
2254
1996
|
}
|
2255
1997
|
{
|
2256
1998
|
this.setKey(object, key, {
|
2257
|
-
lastRef: reference,
|
1999
|
+
lastRef: reference$$1,
|
2258
2000
|
lastRenderedIn: this.debugStack.peek()
|
2259
2001
|
});
|
2260
2002
|
}
|
@@ -2286,13 +2028,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2286
2028
|
label = 'the same value';
|
2287
2029
|
}
|
2288
2030
|
|
2289
|
-
|
2290
|
-
|
2291
|
-
if (ember_features.EMBER_GLIMMER_ALLOW_BACKTRACKING_RERENDER) {
|
2292
|
-
true && !false && emberDebug.deprecate(message + ' will be removed in Ember 3.0.', false, { id: 'ember-views.render-double-modify', until: '3.0.0' });
|
2293
|
-
} else {
|
2294
|
-
true && !false && emberDebug.assert(message + ' is no longer supported. See https://github.com/emberjs/ember.js/issues/13948 for more details.', false);
|
2295
|
-
}
|
2031
|
+
true && !false && emberDebug.assert('You modified "' + label + '" twice on ' + object + ' in a single render. It was rendered in ' + lastRenderedIn + ' and modified in ' + currentlyIn + '. This was unreliable and slow in Ember 1.x and is no longer supported. See https://github.com/emberjs/ember.js/issues/13948 for more details.', false);
|
2296
2032
|
}
|
2297
2033
|
|
2298
2034
|
this.shouldReflush = true;
|
@@ -2329,11 +2065,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2329
2065
|
TransactionRunner.prototype.createMap = function createMap(object) {
|
2330
2066
|
var map = Object.create(null);
|
2331
2067
|
this.weakMap.set(object, map);
|
2332
|
-
if (true && !emberUtils.HAS_NATIVE_WEAKMAP) {
|
2333
|
-
// POLYFILL AND DEBUG
|
2334
|
-
// requires tracking objects
|
2335
|
-
this.objs.push(object);
|
2336
|
-
}
|
2337
2068
|
return map;
|
2338
2069
|
};
|
2339
2070
|
|
@@ -2358,28 +2089,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2358
2089
|
};
|
2359
2090
|
|
2360
2091
|
TransactionRunner.prototype.clearObjectMap = function clearObjectMap() {
|
2361
|
-
|
2362
|
-
// NATIVE AND (DEBUG OR RELEASE)
|
2363
|
-
// if we have a real native weakmap
|
2364
|
-
// releasing the ref will allow the values to be GCed
|
2365
|
-
this.weakMap = new WeakMap$1();
|
2366
|
-
} else {
|
2367
|
-
// POLYFILL AND DEBUG
|
2368
|
-
// with a polyfill the weakmap keys must be cleared since
|
2369
|
-
// they have the last reference, acceptance tests will leak
|
2370
|
-
// the container if you render a immutable object retained
|
2371
|
-
// in module scope.
|
2372
|
-
var objs = this.objs,
|
2373
|
-
weakMap = this.weakMap;
|
2374
|
-
|
2375
|
-
this.objs = [];
|
2376
|
-
for (var i = 0; i < objs.length; i++) {
|
2377
|
-
weakMap.delete(objs[i]);
|
2378
|
-
}
|
2379
|
-
}
|
2380
|
-
// POLYFILL AND RELEASE
|
2381
|
-
// we leak the key map if the object is retained but this is
|
2382
|
-
// a POJO of keys to transaction ids
|
2092
|
+
this.weakMap = new WeakMap();
|
2383
2093
|
};
|
2384
2094
|
|
2385
2095
|
return TransactionRunner;
|
@@ -2398,6 +2108,182 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2398
2108
|
};
|
2399
2109
|
}
|
2400
2110
|
|
2111
|
+
function watchPath(obj, keyPath, meta$$1) {
|
2112
|
+
if (typeof obj !== 'object' || obj === null) {
|
2113
|
+
return;
|
2114
|
+
}
|
2115
|
+
var m = meta$$1 === undefined ? meta(obj) : meta$$1;
|
2116
|
+
var counter = m.peekWatching(keyPath) || 0;
|
2117
|
+
|
2118
|
+
m.writeWatching(keyPath, counter + 1);
|
2119
|
+
if (counter === 0) {
|
2120
|
+
// activate watching first time
|
2121
|
+
m.writableChains(makeChainNode).add(keyPath);
|
2122
|
+
}
|
2123
|
+
}
|
2124
|
+
|
2125
|
+
function unwatchPath(obj, keyPath, meta$$1) {
|
2126
|
+
if (typeof obj !== 'object' || obj === null) {
|
2127
|
+
return;
|
2128
|
+
}
|
2129
|
+
var m = meta$$1 === undefined ? peekMeta(obj) : meta$$1;
|
2130
|
+
|
2131
|
+
if (m === undefined) {
|
2132
|
+
return;
|
2133
|
+
}
|
2134
|
+
var counter = m.peekWatching(keyPath) || 0;
|
2135
|
+
|
2136
|
+
if (counter === 1) {
|
2137
|
+
m.writeWatching(keyPath, 0);
|
2138
|
+
m.writableChains(makeChainNode).remove(keyPath);
|
2139
|
+
} else if (counter > 1) {
|
2140
|
+
m.writeWatching(keyPath, counter - 1);
|
2141
|
+
}
|
2142
|
+
}
|
2143
|
+
|
2144
|
+
/**
|
2145
|
+
@module ember
|
2146
|
+
*/
|
2147
|
+
/**
|
2148
|
+
Starts watching a property on an object. Whenever the property changes,
|
2149
|
+
invokes `Ember.propertyWillChange` and `Ember.propertyDidChange`. This is the
|
2150
|
+
primitive used by observers and dependent keys; usually you will never call
|
2151
|
+
this method directly but instead use higher level methods like
|
2152
|
+
`Ember.addObserver()`
|
2153
|
+
|
2154
|
+
@private
|
2155
|
+
@method watch
|
2156
|
+
@for Ember
|
2157
|
+
@param obj
|
2158
|
+
@param {String} _keyPath
|
2159
|
+
*/
|
2160
|
+
function watch(obj, _keyPath, m) {
|
2161
|
+
if (isPath(_keyPath)) {
|
2162
|
+
watchPath(obj, _keyPath, m);
|
2163
|
+
} else {
|
2164
|
+
watchKey(obj, _keyPath, m);
|
2165
|
+
}
|
2166
|
+
}
|
2167
|
+
|
2168
|
+
function isWatching(obj, key) {
|
2169
|
+
return watcherCount(obj, key) > 0;
|
2170
|
+
}
|
2171
|
+
|
2172
|
+
function watcherCount(obj, key) {
|
2173
|
+
var meta$$1 = peekMeta(obj);
|
2174
|
+
return meta$$1 !== undefined && meta$$1.peekWatching(key) || 0;
|
2175
|
+
}
|
2176
|
+
|
2177
|
+
function unwatch(obj, _keyPath, m) {
|
2178
|
+
if (isPath(_keyPath)) {
|
2179
|
+
unwatchPath(obj, _keyPath, m);
|
2180
|
+
} else {
|
2181
|
+
unwatchKey(obj, _keyPath, m);
|
2182
|
+
}
|
2183
|
+
}
|
2184
|
+
|
2185
|
+
/**
|
2186
|
+
@module @ember/object
|
2187
|
+
*/
|
2188
|
+
|
2189
|
+
var AFTER_OBSERVERS = ':change';
|
2190
|
+
var BEFORE_OBSERVERS = ':before';
|
2191
|
+
|
2192
|
+
function changeEvent(keyName) {
|
2193
|
+
return keyName + AFTER_OBSERVERS;
|
2194
|
+
}
|
2195
|
+
|
2196
|
+
function beforeEvent(keyName) {
|
2197
|
+
return keyName + BEFORE_OBSERVERS;
|
2198
|
+
}
|
2199
|
+
|
2200
|
+
/**
|
2201
|
+
@method addObserver
|
2202
|
+
@static
|
2203
|
+
@for @ember/object/observers
|
2204
|
+
@param obj
|
2205
|
+
@param {String} _path
|
2206
|
+
@param {Object|Function} target
|
2207
|
+
@param {Function|String} [method]
|
2208
|
+
@public
|
2209
|
+
*/
|
2210
|
+
function addObserver(obj, _path, target, method) {
|
2211
|
+
addListener(obj, changeEvent(_path), target, method);
|
2212
|
+
watch(obj, _path);
|
2213
|
+
|
2214
|
+
return this;
|
2215
|
+
}
|
2216
|
+
|
2217
|
+
function observersFor(obj, path) {
|
2218
|
+
return listenersFor(obj, changeEvent(path));
|
2219
|
+
}
|
2220
|
+
|
2221
|
+
/**
|
2222
|
+
@method removeObserver
|
2223
|
+
@static
|
2224
|
+
@for @ember/object/observers
|
2225
|
+
@param obj
|
2226
|
+
@param {String} path
|
2227
|
+
@param {Object|Function} target
|
2228
|
+
@param {Function|String} [method]
|
2229
|
+
@public
|
2230
|
+
*/
|
2231
|
+
function removeObserver(obj, path, target, method) {
|
2232
|
+
unwatch(obj, path);
|
2233
|
+
removeListener(obj, changeEvent(path), target, method);
|
2234
|
+
|
2235
|
+
return this;
|
2236
|
+
}
|
2237
|
+
|
2238
|
+
/**
|
2239
|
+
@method _addBeforeObserver
|
2240
|
+
@static
|
2241
|
+
@for @ember/object/observers
|
2242
|
+
@param obj
|
2243
|
+
@param {String} path
|
2244
|
+
@param {Object|Function} target
|
2245
|
+
@param {Function|String} [method]
|
2246
|
+
@deprecated
|
2247
|
+
@private
|
2248
|
+
*/
|
2249
|
+
function _addBeforeObserver(obj, path, target, method) {
|
2250
|
+
addListener(obj, beforeEvent(path), target, method);
|
2251
|
+
watch(obj, path);
|
2252
|
+
|
2253
|
+
return this;
|
2254
|
+
}
|
2255
|
+
|
2256
|
+
// Suspend observer during callback.
|
2257
|
+
//
|
2258
|
+
// This should only be used by the target of the observer
|
2259
|
+
// while it is setting the observed path.
|
2260
|
+
function _suspendObserver(obj, path, target, method, callback) {
|
2261
|
+
return suspendListener(obj, changeEvent(path), target, method, callback);
|
2262
|
+
}
|
2263
|
+
|
2264
|
+
function _suspendObservers(obj, paths, target, method, callback) {
|
2265
|
+
var events = paths.map(changeEvent);
|
2266
|
+
return suspendListeners(obj, events, target, method, callback);
|
2267
|
+
}
|
2268
|
+
|
2269
|
+
/**
|
2270
|
+
@method removeBeforeObserver
|
2271
|
+
@static
|
2272
|
+
@for @ember/object/observers
|
2273
|
+
@param obj
|
2274
|
+
@param {String} path
|
2275
|
+
@param {Object|Function} target
|
2276
|
+
@param {Function|String} [method]
|
2277
|
+
@deprecated
|
2278
|
+
@private
|
2279
|
+
*/
|
2280
|
+
function _removeBeforeObserver(obj, path, target, method) {
|
2281
|
+
unwatch(obj, path);
|
2282
|
+
removeListener(obj, beforeEvent(path), target, method);
|
2283
|
+
|
2284
|
+
return this;
|
2285
|
+
}
|
2286
|
+
|
2401
2287
|
/**
|
2402
2288
|
@module ember
|
2403
2289
|
@private
|
@@ -2430,16 +2316,15 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2430
2316
|
@private
|
2431
2317
|
*/
|
2432
2318
|
function propertyWillChange(obj, keyName, _meta) {
|
2433
|
-
var meta$$1 = _meta === undefined ?
|
2319
|
+
var meta$$1 = _meta === undefined ? peekMeta(obj) : _meta;
|
2434
2320
|
if (meta$$1 !== undefined && !meta$$1.isInitialized(obj)) {
|
2435
2321
|
return;
|
2436
2322
|
}
|
2437
2323
|
|
2438
2324
|
var watching = meta$$1 !== undefined && meta$$1.peekWatching(keyName) > 0;
|
2439
|
-
var possibleDesc = obj
|
2440
|
-
var isDescriptor = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor;
|
2325
|
+
var possibleDesc = descriptorFor(obj, keyName, meta$$1);
|
2441
2326
|
|
2442
|
-
if (
|
2327
|
+
if (possibleDesc !== undefined && possibleDesc.willChange) {
|
2443
2328
|
possibleDesc.willChange(obj, keyName);
|
2444
2329
|
}
|
2445
2330
|
|
@@ -2468,18 +2353,17 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2468
2353
|
@private
|
2469
2354
|
*/
|
2470
2355
|
function propertyDidChange(obj, keyName, _meta) {
|
2471
|
-
var meta$$1 = _meta === undefined ?
|
2356
|
+
var meta$$1 = _meta === undefined ? peekMeta(obj) : _meta;
|
2472
2357
|
var hasMeta = meta$$1 !== undefined;
|
2473
2358
|
|
2474
2359
|
if (hasMeta && !meta$$1.isInitialized(obj)) {
|
2475
2360
|
return;
|
2476
2361
|
}
|
2477
2362
|
|
2478
|
-
var possibleDesc = obj
|
2479
|
-
var isDescriptor = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor;
|
2363
|
+
var possibleDesc = descriptorFor(obj, keyName, meta$$1);
|
2480
2364
|
|
2481
2365
|
// shouldn't this mean that we're watching this key?
|
2482
|
-
if (
|
2366
|
+
if (possibleDesc !== undefined && possibleDesc.didChange) {
|
2483
2367
|
possibleDesc.didChange(obj, keyName);
|
2484
2368
|
}
|
2485
2369
|
|
@@ -2500,7 +2384,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2500
2384
|
markObjectAsDirty(meta$$1, keyName);
|
2501
2385
|
}
|
2502
2386
|
|
2503
|
-
if (
|
2387
|
+
if (features.EMBER_GLIMMER_DETECT_BACKTRACKING_RERENDER) {
|
2504
2388
|
exports.assertNotRendered(obj, keyName, meta$$1);
|
2505
2389
|
}
|
2506
2390
|
}
|
@@ -2546,8 +2430,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2546
2430
|
}
|
2547
2431
|
|
2548
2432
|
function iterDeps(method, obj, depKey, seen, meta$$1) {
|
2549
|
-
var possibleDesc = void 0
|
2550
|
-
isDescriptor = void 0;
|
2433
|
+
var possibleDesc = void 0;
|
2551
2434
|
var guid = emberUtils.guidFor(obj);
|
2552
2435
|
var current = seen[guid];
|
2553
2436
|
|
@@ -2566,10 +2449,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2566
2449
|
return;
|
2567
2450
|
}
|
2568
2451
|
|
2569
|
-
possibleDesc = obj
|
2570
|
-
isDescriptor = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor;
|
2452
|
+
possibleDesc = descriptorFor(obj, key, meta$$1);
|
2571
2453
|
|
2572
|
-
if (
|
2454
|
+
if (possibleDesc !== undefined && possibleDesc._suspended === obj) {
|
2573
2455
|
return;
|
2574
2456
|
}
|
2575
2457
|
|
@@ -2632,13 +2514,12 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2632
2514
|
|
2633
2515
|
@method changeProperties
|
2634
2516
|
@param {Function} callback
|
2635
|
-
@param [binding]
|
2636
2517
|
@private
|
2637
2518
|
*/
|
2638
|
-
function changeProperties(callback
|
2519
|
+
function changeProperties(callback) {
|
2639
2520
|
beginPropertyChanges();
|
2640
2521
|
try {
|
2641
|
-
callback
|
2522
|
+
callback();
|
2642
2523
|
} finally {
|
2643
2524
|
endPropertyChanges();
|
2644
2525
|
}
|
@@ -2685,7 +2566,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2685
2566
|
return;
|
2686
2567
|
}
|
2687
2568
|
|
2688
|
-
var eventName = keyName
|
2569
|
+
var eventName = beforeEvent(keyName);
|
2689
2570
|
var listeners = void 0,
|
2690
2571
|
added = void 0;
|
2691
2572
|
if (deferred > 0) {
|
@@ -2700,7 +2581,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2700
2581
|
return;
|
2701
2582
|
}
|
2702
2583
|
|
2703
|
-
var eventName = keyName
|
2584
|
+
var eventName = changeEvent(keyName);
|
2704
2585
|
var listeners = void 0;
|
2705
2586
|
if (deferred > 0) {
|
2706
2587
|
listeners = observerSet.add(obj, keyName, eventName);
|
@@ -2729,29 +2610,13 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2729
2610
|
this.isDescriptor = true;
|
2730
2611
|
}
|
2731
2612
|
|
2732
|
-
var REDEFINE_SUPPORTED = function () {
|
2733
|
-
// https://github.com/spalger/kibana/commit/b7e35e6737df585585332857a4c397dc206e7ff9
|
2734
|
-
var a = Object.create(Object.prototype, {
|
2735
|
-
prop: {
|
2736
|
-
configurable: true,
|
2737
|
-
value: 1
|
2738
|
-
}
|
2739
|
-
});
|
2740
|
-
|
2741
|
-
Object.defineProperty(a, 'prop', {
|
2742
|
-
configurable: true,
|
2743
|
-
value: 2
|
2744
|
-
});
|
2745
|
-
|
2746
|
-
return a.prop === 2;
|
2747
|
-
}();
|
2748
2613
|
// ..........................................................
|
2749
2614
|
// DEFINING PROPERTIES API
|
2750
2615
|
//
|
2751
2616
|
|
2752
2617
|
function MANDATORY_SETTER_FUNCTION(name) {
|
2753
2618
|
function SETTER_FUNCTION(value) {
|
2754
|
-
var m =
|
2619
|
+
var m = peekMeta(this);
|
2755
2620
|
if (!m.isInitialized(this)) {
|
2756
2621
|
m.writeValues(name, value);
|
2757
2622
|
} else {
|
@@ -2765,7 +2630,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2765
2630
|
|
2766
2631
|
function DEFAULT_GETTER_FUNCTION(name) {
|
2767
2632
|
return function GETTER_FUNCTION() {
|
2768
|
-
var meta$$1 =
|
2633
|
+
var meta$$1 = peekMeta(this);
|
2769
2634
|
if (meta$$1 !== undefined) {
|
2770
2635
|
return meta$$1.peekValues(name);
|
2771
2636
|
}
|
@@ -2774,7 +2639,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2774
2639
|
|
2775
2640
|
function INHERITING_GETTER_FUNCTION(name) {
|
2776
2641
|
function IGETTER_FUNCTION() {
|
2777
|
-
var meta$$1 =
|
2642
|
+
var meta$$1 = peekMeta(this);
|
2778
2643
|
var val = void 0;
|
2779
2644
|
if (meta$$1 !== undefined) {
|
2780
2645
|
val = meta$$1.readInheritedValue('values', name);
|
@@ -2792,6 +2657,78 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2792
2657
|
return IGETTER_FUNCTION;
|
2793
2658
|
}
|
2794
2659
|
|
2660
|
+
var DESCRIPTOR_GETTER_FUNCTION = void 0;
|
2661
|
+
|
2662
|
+
if (features.EMBER_METAL_ES5_GETTERS) {
|
2663
|
+
DESCRIPTOR_GETTER_FUNCTION = function (name, descriptor) {
|
2664
|
+
return function CPGETTER_FUNCTION() {
|
2665
|
+
return descriptor.get(this, name);
|
2666
|
+
};
|
2667
|
+
};
|
2668
|
+
} else if (features.DESCRIPTOR_TRAP) {
|
2669
|
+
// Future traveler, although this code looks scary. It merely exists in
|
2670
|
+
// development to aid in development asertions. Production builds of
|
2671
|
+
// ember strip this entire branch out.
|
2672
|
+
var messageFor = function (obj, keyName, property, value) {
|
2673
|
+
return 'You attempted to access the `' + keyName + '.' + property + '` property ' + ('(of ' + obj + '). Due to certain internal implementation details of Ember, ') + ('the `' + keyName + '` property previously contained an internal "descriptor" ') + ('object (a private API), therefore `' + keyName + '.' + property + '` would have ') + ('been `' + String(value).replace(/\n/g, ' ') + '`. This internal implementation ') + 'detail was never intended to be a public (or even intimate) API.\n\n' + 'This internal implementation detail has now changed and the (still private) ' + '"descriptor" object has been relocated to the object\'s "meta" (also a ' + ('private API). Soon, accessing `' + keyName + '` on this object will ') + 'return the computed value (see RFC #281 for more details).\n\n' + 'If you are seeing this error, you are likely using an addon that ' + 'relies on this now-defunct private implementation detail. If you can, ' + 'find out which addon is doing this from the stack trace below and ' + 'report this bug to the addon authors. If you feel stuck, the Ember ' + 'Community Slack (https://ember-community-slackin.herokuapp.com/) ' + 'may be able to offer some help.\n\n' + 'If you are an addon author and need help transitioning your code, ' + 'please get in touch in the #dev-ember channel in the Ember Community ' + 'Slack.';
|
2674
|
+
};
|
2675
|
+
|
2676
|
+
var trapFor = void 0;
|
2677
|
+
|
2678
|
+
if (emberUtils.HAS_NATIVE_PROXY) {
|
2679
|
+
/* globals Proxy */
|
2680
|
+
trapFor = function (obj, keyName, descriptor) {
|
2681
|
+
return new Proxy(descriptor, {
|
2682
|
+
get: function (descriptor, property) {
|
2683
|
+
if (property === DESCRIPTOR) {
|
2684
|
+
return descriptor;
|
2685
|
+
} else if (property === 'toString' || property == 'valueOf' || Symbol && property === Symbol.toPrimitive) {
|
2686
|
+
return function () {
|
2687
|
+
return '[COMPUTED PROPERTY]';
|
2688
|
+
};
|
2689
|
+
}
|
2690
|
+
|
2691
|
+
true && !false && emberDebug.assert(messageFor(obj, keyName, property, descriptor[property]));
|
2692
|
+
}
|
2693
|
+
});
|
2694
|
+
};
|
2695
|
+
} else {
|
2696
|
+
trapFor = function (obj, keyName, descriptor) {
|
2697
|
+
var trap = Object.create(null);
|
2698
|
+
|
2699
|
+
Object.defineProperty(trap, DESCRIPTOR, {
|
2700
|
+
configurable: false,
|
2701
|
+
enumerable: false,
|
2702
|
+
writable: false,
|
2703
|
+
value: descriptor
|
2704
|
+
});
|
2705
|
+
|
2706
|
+
trap.toString = trap.valueOf = function () {
|
2707
|
+
return '[COMPUTED PROPERTY]';
|
2708
|
+
};
|
2709
|
+
|
2710
|
+
// Without a proxy, we can only trap the "likely" properties
|
2711
|
+
['isDescriptor', 'setup', 'teardown', 'get', '_getter', 'set', '_setter', 'meta'].forEach(function (property) {
|
2712
|
+
Object.defineProperty(trap, property, {
|
2713
|
+
configurable: false,
|
2714
|
+
enumerable: false,
|
2715
|
+
get: function () {
|
2716
|
+
true && !false && emberDebug.assert(messageFor(obj, keyName, property, descriptor[property]));
|
2717
|
+
}
|
2718
|
+
});
|
2719
|
+
});
|
2720
|
+
|
2721
|
+
return trap;
|
2722
|
+
};
|
2723
|
+
}
|
2724
|
+
|
2725
|
+
DESCRIPTOR_GETTER_FUNCTION = function (name, descriptor) {
|
2726
|
+
return function CPGETTER_FUNCTION() {
|
2727
|
+
return trapFor(this, name, descriptor);
|
2728
|
+
};
|
2729
|
+
};
|
2730
|
+
}
|
2731
|
+
|
2795
2732
|
/**
|
2796
2733
|
NOTE: This is a low-level method used by other parts of the API. You almost
|
2797
2734
|
never want to call this method directly. Instead you should use
|
@@ -2846,31 +2783,42 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2846
2783
|
|
2847
2784
|
var watchEntry = meta$$1.peekWatching(keyName);
|
2848
2785
|
var watching = watchEntry !== undefined && watchEntry > 0;
|
2849
|
-
var
|
2850
|
-
var
|
2786
|
+
var previousDesc = descriptorFor(obj, keyName, meta$$1);
|
2787
|
+
var wasDescriptor = previousDesc !== undefined;
|
2851
2788
|
|
2852
|
-
if (
|
2853
|
-
|
2789
|
+
if (wasDescriptor) {
|
2790
|
+
previousDesc.teardown(obj, keyName, meta$$1);
|
2791
|
+
|
2792
|
+
if (features.EMBER_METAL_ES5_GETTERS) {
|
2793
|
+
meta$$1.removeDescriptors(keyName);
|
2794
|
+
}
|
2854
2795
|
}
|
2855
2796
|
|
2856
2797
|
var value = void 0;
|
2857
2798
|
if (desc instanceof Descriptor) {
|
2858
2799
|
value = desc;
|
2859
|
-
|
2860
|
-
|
2861
|
-
|
2862
|
-
|
2863
|
-
|
2864
|
-
|
2865
|
-
|
2866
|
-
|
2867
|
-
|
2868
|
-
|
2869
|
-
|
2800
|
+
|
2801
|
+
if (features.EMBER_METAL_ES5_GETTERS || features.DESCRIPTOR_TRAP) {
|
2802
|
+
Object.defineProperty(obj, keyName, {
|
2803
|
+
configurable: true,
|
2804
|
+
enumerable: true,
|
2805
|
+
get: DESCRIPTOR_GETTER_FUNCTION(keyName, value)
|
2806
|
+
});
|
2807
|
+
} else if (features.MANDATORY_SETTER && watching) {
|
2808
|
+
Object.defineProperty(obj, keyName, {
|
2809
|
+
configurable: true,
|
2810
|
+
enumerable: true,
|
2811
|
+
writable: true,
|
2812
|
+
value: value
|
2813
|
+
});
|
2870
2814
|
} else {
|
2871
2815
|
obj[keyName] = value;
|
2872
2816
|
}
|
2873
2817
|
|
2818
|
+
if (features.EMBER_METAL_ES5_GETTERS) {
|
2819
|
+
meta$$1.writeDescriptors(keyName, value);
|
2820
|
+
}
|
2821
|
+
|
2874
2822
|
didDefineComputedProperty(obj.constructor);
|
2875
2823
|
|
2876
2824
|
if (typeof desc.setup === 'function') {
|
@@ -2879,25 +2827,24 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2879
2827
|
} else if (desc === undefined || desc === null) {
|
2880
2828
|
value = data;
|
2881
2829
|
|
2882
|
-
if (
|
2883
|
-
|
2884
|
-
meta$$1.writeValues(keyName, data);
|
2830
|
+
if (features.MANDATORY_SETTER && watching) {
|
2831
|
+
meta$$1.writeValues(keyName, data);
|
2885
2832
|
|
2886
|
-
|
2887
|
-
|
2888
|
-
|
2889
|
-
|
2890
|
-
|
2891
|
-
|
2833
|
+
var defaultDescriptor = {
|
2834
|
+
configurable: true,
|
2835
|
+
enumerable: true,
|
2836
|
+
set: MANDATORY_SETTER_FUNCTION(keyName),
|
2837
|
+
get: DEFAULT_GETTER_FUNCTION(keyName)
|
2838
|
+
};
|
2892
2839
|
|
2893
|
-
|
2894
|
-
|
2895
|
-
|
2896
|
-
|
2897
|
-
|
2898
|
-
|
2899
|
-
|
2900
|
-
}
|
2840
|
+
Object.defineProperty(obj, keyName, defaultDescriptor);
|
2841
|
+
} else if ((features.EMBER_METAL_ES5_GETTERS || features.DESCRIPTOR_TRAP) && wasDescriptor) {
|
2842
|
+
Object.defineProperty(obj, keyName, {
|
2843
|
+
configurable: true,
|
2844
|
+
enumerable: true,
|
2845
|
+
writable: true,
|
2846
|
+
value: value
|
2847
|
+
});
|
2901
2848
|
} else {
|
2902
2849
|
obj[keyName] = data;
|
2903
2850
|
}
|
@@ -2939,12 +2886,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2939
2886
|
}
|
2940
2887
|
}
|
2941
2888
|
|
2942
|
-
function handleBrokenPhantomDefineProperty(obj, keyName, desc) {
|
2943
|
-
// https://github.com/ariya/phantomjs/issues/11856
|
2944
|
-
Object.defineProperty(obj, keyName, { configurable: true, writable: true, value: 'iCry' });
|
2945
|
-
Object.defineProperty(obj, keyName, desc);
|
2946
|
-
}
|
2947
|
-
|
2948
2889
|
var handleMandatorySetter = void 0;
|
2949
2890
|
|
2950
2891
|
function watchKey(obj, keyName, _meta) {
|
@@ -2958,9 +2899,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2958
2899
|
|
2959
2900
|
if (count === 0) {
|
2960
2901
|
// activate watching first time
|
2961
|
-
var possibleDesc = obj
|
2962
|
-
|
2963
|
-
if (
|
2902
|
+
var possibleDesc = descriptorFor(obj, keyName, meta$$1);
|
2903
|
+
|
2904
|
+
if (possibleDesc !== undefined && possibleDesc.willWatch) {
|
2964
2905
|
possibleDesc.willWatch(obj, keyName, meta$$1);
|
2965
2906
|
}
|
2966
2907
|
|
@@ -2968,14 +2909,14 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2968
2909
|
obj.willWatchProperty(keyName);
|
2969
2910
|
}
|
2970
2911
|
|
2971
|
-
if (
|
2912
|
+
if (features.MANDATORY_SETTER) {
|
2972
2913
|
// NOTE: this is dropped for prod + minified builds
|
2973
2914
|
handleMandatorySetter(meta$$1, obj, keyName);
|
2974
2915
|
}
|
2975
2916
|
}
|
2976
2917
|
}
|
2977
2918
|
|
2978
|
-
if (
|
2919
|
+
if (features.MANDATORY_SETTER) {
|
2979
2920
|
var _hasOwnProperty = function (obj, key) {
|
2980
2921
|
return Object.prototype.hasOwnProperty.call(obj, key);
|
2981
2922
|
};
|
@@ -2989,15 +2930,13 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
2989
2930
|
handleMandatorySetter = function handleMandatorySetter(m, obj, keyName) {
|
2990
2931
|
var descriptor = emberUtils.lookupDescriptor(obj, keyName);
|
2991
2932
|
var hasDescriptor = descriptor !== null;
|
2992
|
-
var configurable = hasDescriptor ? descriptor.configurable : true;
|
2993
|
-
var isWritable = hasDescriptor ? descriptor.writable : true;
|
2994
|
-
var hasValue = hasDescriptor ? 'value' in descriptor : true;
|
2995
2933
|
var possibleDesc = hasDescriptor && descriptor.value;
|
2996
|
-
|
2997
|
-
|
2998
|
-
if (isDescriptor) {
|
2934
|
+
if (isDescriptor(possibleDesc)) {
|
2999
2935
|
return;
|
3000
2936
|
}
|
2937
|
+
var configurable = hasDescriptor ? descriptor.configurable : true;
|
2938
|
+
var isWritable = hasDescriptor ? descriptor.writable : true;
|
2939
|
+
var hasValue = hasDescriptor ? 'value' in descriptor : true;
|
3001
2940
|
|
3002
2941
|
// this x in Y deopts, so keeping it in this function is better;
|
3003
2942
|
if (configurable && isWritable && hasValue && keyName in obj) {
|
@@ -3024,7 +2963,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
3024
2963
|
if (typeof obj !== 'object' || obj === null) {
|
3025
2964
|
return;
|
3026
2965
|
}
|
3027
|
-
var meta$$1 = _meta === undefined ?
|
2966
|
+
var meta$$1 = _meta === undefined ? peekMeta(obj) : _meta;
|
3028
2967
|
|
3029
2968
|
// do nothing of this object has already been destroyed
|
3030
2969
|
if (meta$$1 === undefined || meta$$1.isSourceDestroyed()) {
|
@@ -3035,10 +2974,10 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
3035
2974
|
if (count === 1) {
|
3036
2975
|
meta$$1.writeWatching(keyName, 0);
|
3037
2976
|
|
3038
|
-
var possibleDesc = obj
|
3039
|
-
var
|
2977
|
+
var possibleDesc = descriptorFor(obj, keyName, meta$$1);
|
2978
|
+
var _isDescriptor = possibleDesc !== undefined;
|
3040
2979
|
|
3041
|
-
if (
|
2980
|
+
if (_isDescriptor && possibleDesc.didUnwatch) {
|
3042
2981
|
possibleDesc.didUnwatch(obj, keyName, meta$$1);
|
3043
2982
|
}
|
3044
2983
|
|
@@ -3046,7 +2985,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
3046
2985
|
obj.didUnwatchProperty(keyName);
|
3047
2986
|
}
|
3048
2987
|
|
3049
|
-
if (
|
2988
|
+
if (features.MANDATORY_SETTER) {
|
3050
2989
|
// It is true, the following code looks quite WAT. But have no fear, It
|
3051
2990
|
// exists purely to improve development ergonomics and is removed from
|
3052
2991
|
// ember.min.js and ember.prod.js builds.
|
@@ -3055,7 +2994,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
3055
2994
|
// for mutation, will bypass observation. This code exists to assert when
|
3056
2995
|
// that occurs, and attempt to provide more helpful feedback. The alternative
|
3057
2996
|
// is tricky to debug partially observable properties.
|
3058
|
-
if (!
|
2997
|
+
if (!_isDescriptor && keyName in obj) {
|
3059
2998
|
var maybeMandatoryDescriptor = emberUtils.lookupDescriptor(obj, keyName);
|
3060
2999
|
|
3061
3000
|
if (maybeMandatoryDescriptor.set && maybeMandatoryDescriptor.set.isMandatorySetter) {
|
@@ -3082,43 +3021,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
3082
3021
|
}
|
3083
3022
|
}
|
3084
3023
|
|
3085
|
-
function makeChainNode(obj) {
|
3086
|
-
return new ChainNode(null, null, obj);
|
3087
|
-
}
|
3088
|
-
|
3089
|
-
function watchPath(obj, keyPath, meta$$1) {
|
3090
|
-
if (typeof obj !== 'object' || obj === null) {
|
3091
|
-
return;
|
3092
|
-
}
|
3093
|
-
var m = meta$$1 === undefined ? meta(obj) : meta$$1;
|
3094
|
-
var counter = m.peekWatching(keyPath) || 0;
|
3095
|
-
|
3096
|
-
m.writeWatching(keyPath, counter + 1);
|
3097
|
-
if (counter === 0) {
|
3098
|
-
// activate watching first time
|
3099
|
-
m.writableChains(makeChainNode).add(keyPath);
|
3100
|
-
}
|
3101
|
-
}
|
3102
|
-
|
3103
|
-
function unwatchPath(obj, keyPath, meta$$1) {
|
3104
|
-
if (typeof obj !== 'object' || obj === null) {
|
3105
|
-
return;
|
3106
|
-
}
|
3107
|
-
var m = meta$$1 === undefined ? exports.peekMeta(obj) : meta$$1;
|
3108
|
-
|
3109
|
-
if (m === undefined) {
|
3110
|
-
return;
|
3111
|
-
}
|
3112
|
-
var counter = m.peekWatching(keyPath) || 0;
|
3113
|
-
|
3114
|
-
if (counter === 1) {
|
3115
|
-
m.writeWatching(keyPath, 0);
|
3116
|
-
m.writableChains(makeChainNode).remove(keyPath);
|
3117
|
-
} else if (counter > 1) {
|
3118
|
-
m.writeWatching(keyPath, counter - 1);
|
3119
|
-
}
|
3120
|
-
}
|
3121
|
-
|
3122
3024
|
var FIRST_KEY = /^([^\.]+)/;
|
3123
3025
|
|
3124
3026
|
function firstKey(path) {
|
@@ -3129,8 +3031,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
3129
3031
|
return typeof obj === 'object' && obj !== null;
|
3130
3032
|
}
|
3131
3033
|
|
3132
|
-
function isVolatile(obj) {
|
3133
|
-
|
3034
|
+
function isVolatile(obj, keyName, meta$$1) {
|
3035
|
+
var desc = descriptorFor(obj, keyName, meta$$1);
|
3036
|
+
return !(desc !== undefined && desc._volatile === false);
|
3134
3037
|
}
|
3135
3038
|
|
3136
3039
|
var ChainWatchers = function () {
|
@@ -3228,6 +3131,10 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
3228
3131
|
return new ChainWatchers();
|
3229
3132
|
}
|
3230
3133
|
|
3134
|
+
function makeChainNode(obj) {
|
3135
|
+
return new ChainNode(null, null, obj);
|
3136
|
+
}
|
3137
|
+
|
3231
3138
|
function addChainWatcher(obj, keyName, node) {
|
3232
3139
|
var m = meta(obj);
|
3233
3140
|
m.writableChainWatchers(makeChainWatcher).add(keyName, node);
|
@@ -3239,7 +3146,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
3239
3146
|
return;
|
3240
3147
|
}
|
3241
3148
|
|
3242
|
-
var meta$$1 = _meta === undefined ?
|
3149
|
+
var meta$$1 = _meta === undefined ? peekMeta(obj) : _meta;
|
3243
3150
|
|
3244
3151
|
if (meta$$1 === undefined || meta$$1.readableChainWatchers() === undefined) {
|
3245
3152
|
return;
|
@@ -3310,7 +3217,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
3310
3217
|
|
3311
3218
|
|
3312
3219
|
ChainNode.prototype.copy = function copy(obj) {
|
3313
|
-
var ret =
|
3220
|
+
var ret = makeChainNode(obj);
|
3314
3221
|
var paths = this._paths;
|
3315
3222
|
if (paths !== undefined) {
|
3316
3223
|
var path = void 0;
|
@@ -3452,7 +3359,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
3452
3359
|
return;
|
3453
3360
|
}
|
3454
3361
|
|
3455
|
-
var meta$$1 =
|
3362
|
+
var meta$$1 = peekMeta(obj);
|
3456
3363
|
|
3457
3364
|
// check if object meant only to be a prototype
|
3458
3365
|
if (meta$$1 !== undefined && meta$$1.proto === obj) {
|
@@ -3460,7 +3367,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
3460
3367
|
}
|
3461
3368
|
|
3462
3369
|
// Use `get` if the return value is an EachProxy or an uncacheable value.
|
3463
|
-
if (isVolatile(obj
|
3370
|
+
if (isVolatile(obj, key, meta$$1)) {
|
3464
3371
|
return get(obj, key);
|
3465
3372
|
// Otherwise attempt to get the cached value of the computed property
|
3466
3373
|
} else {
|
@@ -3509,7 +3416,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
3509
3416
|
var META_DESTROYED = 1 << 3;
|
3510
3417
|
var IS_PROXY = 1 << 4;
|
3511
3418
|
|
3512
|
-
var META_FIELD = '__ember_meta__';
|
3513
3419
|
var NODE_STACK = [];
|
3514
3420
|
|
3515
3421
|
var Meta = function () {
|
@@ -3521,7 +3427,11 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
3521
3427
|
}
|
3522
3428
|
|
3523
3429
|
this._cache = undefined;
|
3524
|
-
|
3430
|
+
|
3431
|
+
if (features.EMBER_METAL_ES5_GETTERS) {
|
3432
|
+
this._descriptors = undefined;
|
3433
|
+
}
|
3434
|
+
|
3525
3435
|
this._watching = undefined;
|
3526
3436
|
this._mixins = undefined;
|
3527
3437
|
this._bindings = undefined;
|
@@ -3588,7 +3498,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
3588
3498
|
if (node._watching) {
|
3589
3499
|
nodeObject = node._object;
|
3590
3500
|
if (nodeObject !== undefined) {
|
3591
|
-
var foreignMeta =
|
3501
|
+
var foreignMeta = peekMeta(nodeObject);
|
3592
3502
|
// avoid cleaning up chain watchers when both current and
|
3593
3503
|
// foreign objects are being destroyed
|
3594
3504
|
// if both are being destroyed manual cleanup is not needed
|
@@ -3724,9 +3634,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
3724
3634
|
var innerMap = map[subkey];
|
3725
3635
|
if (innerMap !== undefined) {
|
3726
3636
|
for (var innerKey in innerMap) {
|
3727
|
-
seen = seen
|
3728
|
-
if (seen
|
3729
|
-
seen
|
3637
|
+
seen = seen === undefined ? new Set() : seen;
|
3638
|
+
if (!seen.has(innerKey)) {
|
3639
|
+
seen.add(innerKey);
|
3730
3640
|
calls = calls || [];
|
3731
3641
|
calls.push(innerKey, innerMap[innerKey]);
|
3732
3642
|
}
|
@@ -3751,14 +3661,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
3751
3661
|
return this._cache;
|
3752
3662
|
};
|
3753
3663
|
|
3754
|
-
Meta.prototype.writableWeak = function writableWeak() {
|
3755
|
-
return this._getOrCreateOwnMap('_weak');
|
3756
|
-
};
|
3757
|
-
|
3758
|
-
Meta.prototype.readableWeak = function readableWeak() {
|
3759
|
-
return this._weak;
|
3760
|
-
};
|
3761
|
-
|
3762
3664
|
Meta.prototype.writableTags = function writableTags() {
|
3763
3665
|
return this._getOrCreateOwnMap('_tags');
|
3764
3666
|
};
|
@@ -3843,9 +3745,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
3843
3745
|
var map = pointer._mixins;
|
3844
3746
|
if (map !== undefined) {
|
3845
3747
|
for (var key in map) {
|
3846
|
-
seen = seen
|
3847
|
-
if (seen
|
3848
|
-
seen
|
3748
|
+
seen = seen === undefined ? new Set() : seen;
|
3749
|
+
if (!seen.has(key)) {
|
3750
|
+
seen.add(key);
|
3849
3751
|
fn(key, map[key]);
|
3850
3752
|
}
|
3851
3753
|
}
|
@@ -3921,19 +3823,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
3921
3823
|
Meta.prototype[name] = protoMethods[name];
|
3922
3824
|
}
|
3923
3825
|
|
3924
|
-
|
3925
|
-
writable: true,
|
3926
|
-
configurable: true,
|
3927
|
-
enumerable: false,
|
3928
|
-
value: null
|
3929
|
-
};
|
3930
|
-
|
3931
|
-
var EMBER_META_PROPERTY = {
|
3932
|
-
name: META_FIELD,
|
3933
|
-
descriptor: META_DESC
|
3934
|
-
};
|
3935
|
-
|
3936
|
-
if (ember_features.MANDATORY_SETTER) {
|
3826
|
+
if (features.MANDATORY_SETTER) {
|
3937
3827
|
Meta.prototype.readInheritedValue = function (key, subkey) {
|
3938
3828
|
var internalKey = '_' + key;
|
3939
3829
|
|
@@ -3965,54 +3855,60 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
3965
3855
|
};
|
3966
3856
|
}
|
3967
3857
|
|
3968
|
-
|
3969
|
-
|
3858
|
+
if (features.EMBER_METAL_ES5_GETTERS) {
|
3859
|
+
Meta.prototype.writeDescriptors = function (subkey, value) {
|
3860
|
+
true && !!this.isMetaDestroyed() && emberDebug.assert('Cannot update descriptors for `' + subkey + '` on `' + emberUtils.toString(this.source) + '` after it has been destroyed.', !this.isMetaDestroyed());
|
3970
3861
|
|
3971
|
-
|
3972
|
-
|
3973
|
-
|
3974
|
-
var metaStore = new WeakMap();
|
3862
|
+
var map = this._getOrCreateOwnMap('_descriptors');
|
3863
|
+
map[subkey] = value;
|
3864
|
+
};
|
3975
3865
|
|
3976
|
-
|
3977
|
-
|
3978
|
-
|
3979
|
-
}
|
3980
|
-
metaStore.set(obj, meta);
|
3866
|
+
Meta.prototype.peekDescriptors = function (subkey) {
|
3867
|
+
var possibleDesc = this._findInherited('_descriptors', subkey);
|
3868
|
+
return possibleDesc === UNDEFINED ? undefined : possibleDesc;
|
3981
3869
|
};
|
3982
3870
|
|
3983
|
-
|
3984
|
-
|
3985
|
-
|
3986
|
-
|
3987
|
-
meta = metaStore.get(pointer);
|
3988
|
-
// jshint loopfunc:true
|
3989
|
-
{
|
3990
|
-
counters.peekCalls++;
|
3991
|
-
}
|
3992
|
-
if (meta !== undefined) {
|
3993
|
-
return meta;
|
3994
|
-
}
|
3871
|
+
Meta.prototype.removeDescriptors = function (subkey) {
|
3872
|
+
this.writeDescriptors(subkey, UNDEFINED);
|
3873
|
+
};
|
3874
|
+
}
|
3995
3875
|
|
3996
|
-
|
3997
|
-
|
3998
|
-
|
3999
|
-
|
3876
|
+
var getPrototypeOf = Object.getPrototypeOf;
|
3877
|
+
var metaStore = new WeakMap();
|
3878
|
+
|
3879
|
+
function setMeta(obj, meta) {
|
3880
|
+
true && !(obj !== null) && emberDebug.assert('Cannot call `setMeta` on null', obj !== null);
|
3881
|
+
true && !(obj !== undefined) && emberDebug.assert('Cannot call `setMeta` on undefined', obj !== undefined);
|
3882
|
+
true && !(typeof obj === 'object' || typeof obj === 'function') && emberDebug.assert('Cannot call `setMeta` on ' + typeof obj, typeof obj === 'object' || typeof obj === 'function');
|
3883
|
+
|
3884
|
+
{
|
3885
|
+
counters.setCalls++;
|
3886
|
+
}
|
3887
|
+
metaStore.set(obj, meta);
|
3888
|
+
}
|
3889
|
+
|
3890
|
+
function peekMeta(obj) {
|
3891
|
+
true && !(obj !== null) && emberDebug.assert('Cannot call `peekMeta` on null', obj !== null);
|
3892
|
+
true && !(obj !== undefined) && emberDebug.assert('Cannot call `peekMeta` on undefined', obj !== undefined);
|
3893
|
+
true && !(typeof obj === 'object' || typeof obj === 'function') && emberDebug.assert('Cannot call `peekMeta` on ' + typeof obj, typeof obj === 'object' || typeof obj === 'function');
|
3894
|
+
|
3895
|
+
var pointer = obj;
|
3896
|
+
var meta = void 0;
|
3897
|
+
while (pointer !== undefined && pointer !== null) {
|
3898
|
+
meta = metaStore.get(pointer);
|
3899
|
+
// jshint loopfunc:true
|
3900
|
+
{
|
3901
|
+
counters.peekCalls++;
|
4000
3902
|
}
|
4001
|
-
|
4002
|
-
|
4003
|
-
setMeta = function Fallback_setMeta(obj, meta) {
|
4004
|
-
if (obj.__defineNonEnumerable) {
|
4005
|
-
obj.__defineNonEnumerable(EMBER_META_PROPERTY);
|
4006
|
-
} else {
|
4007
|
-
Object.defineProperty(obj, META_FIELD, META_DESC);
|
3903
|
+
if (meta !== undefined) {
|
3904
|
+
return meta;
|
4008
3905
|
}
|
4009
3906
|
|
4010
|
-
|
4011
|
-
|
4012
|
-
|
4013
|
-
|
4014
|
-
|
4015
|
-
};
|
3907
|
+
pointer = getPrototypeOf(pointer);
|
3908
|
+
{
|
3909
|
+
counters.peekPrototypeWalks++;
|
3910
|
+
}
|
3911
|
+
}
|
4016
3912
|
}
|
4017
3913
|
|
4018
3914
|
/**
|
@@ -4026,11 +3922,15 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
4026
3922
|
@private
|
4027
3923
|
*/
|
4028
3924
|
function deleteMeta(obj) {
|
3925
|
+
true && !(obj !== null) && emberDebug.assert('Cannot call `deleteMeta` on null', obj !== null);
|
3926
|
+
true && !(obj !== undefined) && emberDebug.assert('Cannot call `deleteMeta` on undefined', obj !== undefined);
|
3927
|
+
true && !(typeof obj === 'object' || typeof obj === 'function') && emberDebug.assert('Cannot call `deleteMeta` on ' + typeof obj, typeof obj === 'object' || typeof obj === 'function');
|
3928
|
+
|
4029
3929
|
{
|
4030
3930
|
counters.deleteCalls++;
|
4031
3931
|
}
|
4032
3932
|
|
4033
|
-
var meta =
|
3933
|
+
var meta = peekMeta(obj);
|
4034
3934
|
if (meta !== undefined) {
|
4035
3935
|
meta.destroy();
|
4036
3936
|
}
|
@@ -4055,11 +3955,15 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
4055
3955
|
@return {Object} the meta hash for an object
|
4056
3956
|
*/
|
4057
3957
|
function meta(obj) {
|
3958
|
+
true && !(obj !== null) && emberDebug.assert('Cannot call `meta` on null', obj !== null);
|
3959
|
+
true && !(obj !== undefined) && emberDebug.assert('Cannot call `meta` on undefined', obj !== undefined);
|
3960
|
+
true && !(typeof obj === 'object' || typeof obj === 'function') && emberDebug.assert('Cannot call `meta` on ' + typeof obj, typeof obj === 'object' || typeof obj === 'function');
|
3961
|
+
|
4058
3962
|
{
|
4059
3963
|
counters.metaCalls++;
|
4060
3964
|
}
|
4061
3965
|
|
4062
|
-
var maybeMeta =
|
3966
|
+
var maybeMeta = peekMeta(obj);
|
4063
3967
|
var parent = void 0;
|
4064
3968
|
|
4065
3969
|
// remove this code, in-favor of explicit parent
|
@@ -4075,6 +3979,63 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
4075
3979
|
return newMeta;
|
4076
3980
|
}
|
4077
3981
|
|
3982
|
+
// Using `symbol()` here causes some node test to fail, presumably
|
3983
|
+
// because we define the CP with one copy of Ember and boot the app
|
3984
|
+
// with a different copy, so the random key we generate do not line
|
3985
|
+
// up. Is that testing a legit scenario?
|
3986
|
+
var DESCRIPTOR = '__DESCRIPTOR__';
|
3987
|
+
|
3988
|
+
/**
|
3989
|
+
Returns the CP descriptor assocaited with `obj` and `keyName`, if any.
|
3990
|
+
|
3991
|
+
@method descriptorFor
|
3992
|
+
@param {Object} obj the object to check
|
3993
|
+
@param {String} keyName the key to check
|
3994
|
+
@return {Descriptor}
|
3995
|
+
@private
|
3996
|
+
*/
|
3997
|
+
function descriptorFor(obj, keyName, _meta) {
|
3998
|
+
true && !(obj !== null) && emberDebug.assert('Cannot call `descriptorFor` on null', obj !== null);
|
3999
|
+
true && !(obj !== undefined) && emberDebug.assert('Cannot call `descriptorFor` on undefined', obj !== undefined);
|
4000
|
+
true && !(typeof obj === 'object' || typeof obj === 'function') && emberDebug.assert('Cannot call `descriptorFor` on ' + typeof obj, typeof obj === 'object' || typeof obj === 'function');
|
4001
|
+
|
4002
|
+
if (features.EMBER_METAL_ES5_GETTERS) {
|
4003
|
+
var _meta2 = _meta === undefined ? peekMeta(obj) : _meta;
|
4004
|
+
|
4005
|
+
if (_meta2 !== undefined) {
|
4006
|
+
return _meta2.peekDescriptors(keyName);
|
4007
|
+
}
|
4008
|
+
} else {
|
4009
|
+
var possibleDesc = obj[keyName];
|
4010
|
+
|
4011
|
+
if (features.DESCRIPTOR_TRAP && isDescriptorTrap(possibleDesc)) {
|
4012
|
+
return possibleDesc[DESCRIPTOR];
|
4013
|
+
} else {
|
4014
|
+
return isDescriptor(possibleDesc) ? possibleDesc : undefined;
|
4015
|
+
}
|
4016
|
+
}
|
4017
|
+
}
|
4018
|
+
|
4019
|
+
function isDescriptorTrap(possibleDesc) {
|
4020
|
+
if (features.DESCRIPTOR_TRAP) {
|
4021
|
+
return possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc[DESCRIPTOR] !== undefined;
|
4022
|
+
} else {
|
4023
|
+
throw new Error('Cannot call `isDescriptorTrap` in production');
|
4024
|
+
}
|
4025
|
+
}
|
4026
|
+
|
4027
|
+
/**
|
4028
|
+
Check whether a value is a CP descriptor.
|
4029
|
+
|
4030
|
+
@method descriptorFor
|
4031
|
+
@param {any} possibleDesc the value to check
|
4032
|
+
@return {boolean}
|
4033
|
+
@private
|
4034
|
+
*/
|
4035
|
+
function isDescriptor(possibleDesc) {
|
4036
|
+
return possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor;
|
4037
|
+
}
|
4038
|
+
|
4078
4039
|
var Cache = function () {
|
4079
4040
|
function Cache(limit, func, key, store) {
|
4080
4041
|
emberBabel.classCallCheck(this, Cache);
|
@@ -4244,14 +4205,40 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
4244
4205
|
true && !(keyName.lastIndexOf('this.', 0) !== 0) && emberDebug.assert('\'this\' in paths is not supported', keyName.lastIndexOf('this.', 0) !== 0);
|
4245
4206
|
true && !(keyName !== '') && emberDebug.assert('Cannot call `Ember.get` with an empty string', keyName !== '');
|
4246
4207
|
|
4247
|
-
var
|
4248
|
-
|
4208
|
+
var type = typeof obj;
|
4209
|
+
|
4210
|
+
var isObject = type === 'object';
|
4211
|
+
var isFunction = type === 'function';
|
4212
|
+
var isObjectLike = isObject || isFunction;
|
4213
|
+
|
4214
|
+
var descriptor = undefined;
|
4215
|
+
var value = void 0;
|
4216
|
+
|
4217
|
+
if (isObjectLike) {
|
4218
|
+
if (features.EMBER_METAL_ES5_GETTERS) {
|
4219
|
+
descriptor = descriptorFor(obj, keyName);
|
4220
|
+
}
|
4221
|
+
|
4222
|
+
if (!features.EMBER_METAL_ES5_GETTERS || descriptor === undefined) {
|
4223
|
+
value = obj[keyName];
|
4224
|
+
|
4225
|
+
if (features.DESCRIPTOR_TRAP && isDescriptorTrap(value)) {
|
4226
|
+
descriptor = value[DESCRIPTOR];
|
4227
|
+
} else if (isDescriptor(value)) {
|
4228
|
+
descriptor = value;
|
4229
|
+
}
|
4230
|
+
}
|
4231
|
+
|
4232
|
+
if (descriptor !== undefined) {
|
4233
|
+
return descriptor.get(obj, keyName);
|
4234
|
+
}
|
4235
|
+
} else {
|
4236
|
+
value = obj[keyName];
|
4237
|
+
}
|
4249
4238
|
|
4250
|
-
if (
|
4251
|
-
return value.get(obj, keyName);
|
4252
|
-
} else if (isPath(keyName)) {
|
4239
|
+
if (isPath(keyName)) {
|
4253
4240
|
return _getPath(obj, keyName);
|
4254
|
-
} else if (value === undefined &&
|
4241
|
+
} else if (value === undefined && isObject && !(keyName in obj) && typeof obj.unknownProperty === 'function') {
|
4255
4242
|
return obj.unknownProperty(keyName);
|
4256
4243
|
} else {
|
4257
4244
|
return value;
|
@@ -4340,10 +4327,23 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
4340
4327
|
return setPath(obj, keyName, value, tolerant);
|
4341
4328
|
}
|
4342
4329
|
|
4330
|
+
if (features.EMBER_METAL_ES5_GETTERS) {
|
4331
|
+
var possibleDesc = descriptorFor(obj, keyName);
|
4332
|
+
|
4333
|
+
if (possibleDesc !== undefined) {
|
4334
|
+
/* computed property */
|
4335
|
+
possibleDesc.set(obj, keyName, value);
|
4336
|
+
return value;
|
4337
|
+
}
|
4338
|
+
}
|
4339
|
+
|
4343
4340
|
var currentValue = obj[keyName];
|
4344
|
-
var isDescriptor = currentValue !== null && typeof currentValue === 'object' && currentValue.isDescriptor;
|
4345
4341
|
|
4346
|
-
if (
|
4342
|
+
if (features.DESCRIPTOR_TRAP && isDescriptorTrap(currentValue)) {
|
4343
|
+
currentValue = currentValue[DESCRIPTOR];
|
4344
|
+
}
|
4345
|
+
|
4346
|
+
if (isDescriptor(currentValue)) {
|
4347
4347
|
/* computed property */
|
4348
4348
|
currentValue.set(obj, keyName, value);
|
4349
4349
|
} else if (currentValue === undefined && 'object' === typeof obj && !(keyName in obj) && typeof obj.setUnknownProperty === 'function') {
|
@@ -4351,10 +4351,10 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
4351
4351
|
obj.setUnknownProperty(keyName, value);
|
4352
4352
|
} else if (currentValue === value) {/* no change */
|
4353
4353
|
} else {
|
4354
|
-
var meta$$1 =
|
4354
|
+
var meta$$1 = peekMeta(obj);
|
4355
4355
|
propertyWillChange(obj, keyName, meta$$1);
|
4356
4356
|
|
4357
|
-
if (
|
4357
|
+
if (features.MANDATORY_SETTER) {
|
4358
4358
|
setWithMandatorySetter(meta$$1, obj, keyName, value);
|
4359
4359
|
} else {
|
4360
4360
|
obj[keyName] = value;
|
@@ -4366,7 +4366,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
4366
4366
|
return value;
|
4367
4367
|
}
|
4368
4368
|
|
4369
|
-
if (
|
4369
|
+
if (features.MANDATORY_SETTER) {
|
4370
4370
|
var setWithMandatorySetter = function (meta$$1, obj, keyName, value) {
|
4371
4371
|
if (meta$$1 !== undefined && meta$$1.peekWatching(keyName) > 0) {
|
4372
4372
|
makeEnumerable(obj, keyName);
|
@@ -4493,47 +4493,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
4493
4493
|
}
|
4494
4494
|
}
|
4495
4495
|
|
4496
|
-
/**
|
4497
|
-
@module ember
|
4498
|
-
*/
|
4499
|
-
/**
|
4500
|
-
Starts watching a property on an object. Whenever the property changes,
|
4501
|
-
invokes `Ember.propertyWillChange` and `Ember.propertyDidChange`. This is the
|
4502
|
-
primitive used by observers and dependent keys; usually you will never call
|
4503
|
-
this method directly but instead use higher level methods like
|
4504
|
-
`Ember.addObserver()`
|
4505
|
-
|
4506
|
-
@private
|
4507
|
-
@method watch
|
4508
|
-
@for Ember
|
4509
|
-
@param obj
|
4510
|
-
@param {String} _keyPath
|
4511
|
-
*/
|
4512
|
-
function watch(obj, _keyPath, m) {
|
4513
|
-
if (isPath(_keyPath)) {
|
4514
|
-
watchPath(obj, _keyPath, m);
|
4515
|
-
} else {
|
4516
|
-
watchKey(obj, _keyPath, m);
|
4517
|
-
}
|
4518
|
-
}
|
4519
|
-
|
4520
|
-
function isWatching(obj, key) {
|
4521
|
-
return watcherCount(obj, key) > 0;
|
4522
|
-
}
|
4523
|
-
|
4524
|
-
function watcherCount(obj, key) {
|
4525
|
-
var meta$$1 = exports.peekMeta(obj);
|
4526
|
-
return meta$$1 !== undefined && meta$$1.peekWatching(key) || 0;
|
4527
|
-
}
|
4528
|
-
|
4529
|
-
function unwatch(obj, _keyPath, m) {
|
4530
|
-
if (isPath(_keyPath)) {
|
4531
|
-
unwatchPath(obj, _keyPath, m);
|
4532
|
-
} else {
|
4533
|
-
unwatchKey(obj, _keyPath, m);
|
4534
|
-
}
|
4535
|
-
}
|
4536
|
-
|
4537
4496
|
// ..........................................................
|
4538
4497
|
// DEPENDENT KEYS
|
4539
4498
|
//
|
@@ -4871,7 +4830,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
4871
4830
|
}
|
4872
4831
|
|
4873
4832
|
// don't create objects just to invalidate
|
4874
|
-
var meta$$1 =
|
4833
|
+
var meta$$1 = peekMeta(obj);
|
4875
4834
|
if (meta$$1 === undefined || meta$$1.source !== obj) {
|
4876
4835
|
return;
|
4877
4836
|
}
|
@@ -5116,7 +5075,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
5116
5075
|
@public
|
5117
5076
|
*/
|
5118
5077
|
function cacheFor(obj, key) {
|
5119
|
-
var meta$$1 =
|
5078
|
+
var meta$$1 = peekMeta(obj);
|
5120
5079
|
var cache = meta$$1 !== undefined ? meta$$1.source === obj && meta$$1.readableCache() : undefined;
|
5121
5080
|
var ret = cache !== undefined ? cache[key] : undefined;
|
5122
5081
|
|
@@ -5218,6 +5177,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
5218
5177
|
}(Descriptor);
|
5219
5178
|
|
5220
5179
|
function AliasedProperty_readOnlySet(obj, keyName, value) {
|
5180
|
+
// eslint-disable-line no-unused-vars
|
5221
5181
|
throw new emberDebug.Error('Cannot set read-only property \'' + keyName + '\' on object: ' + emberUtils.inspect(obj));
|
5222
5182
|
}
|
5223
5183
|
|
@@ -5423,7 +5383,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
5423
5383
|
}
|
5424
5384
|
|
5425
5385
|
exports.flaggedInstrument = void 0;
|
5426
|
-
if (
|
5386
|
+
if (features.EMBER_IMPROVED_INSTRUMENTATION) {
|
5427
5387
|
exports.flaggedInstrument = instrument;
|
5428
5388
|
} else {
|
5429
5389
|
exports.flaggedInstrument = function (name, payload, callback) {
|
@@ -5772,7 +5732,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
5772
5732
|
}
|
5773
5733
|
|
5774
5734
|
var backburner$1 = new Backburner(['sync', 'actions', 'destroy'], {
|
5775
|
-
GUID_KEY: emberUtils.GUID_KEY,
|
5776
5735
|
sync: {
|
5777
5736
|
before: beginPropertyChanges,
|
5778
5737
|
after: endPropertyChanges
|
@@ -5899,7 +5858,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
5899
5858
|
setup: Ember.run.bind(this, this.setupEditor)
|
5900
5859
|
});
|
5901
5860
|
}),
|
5902
|
-
|
5861
|
+
|
5903
5862
|
didInsertElement() {
|
5904
5863
|
tinymce.init({
|
5905
5864
|
selector: '#' + this.$().prop('id'),
|
@@ -6582,7 +6541,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
6582
6541
|
return Libraries;
|
6583
6542
|
}();
|
6584
6543
|
|
6585
|
-
if (
|
6544
|
+
if (features.EMBER_LIBRARIES_ISREGISTERED) {
|
6586
6545
|
Libraries.prototype.isRegistered = function (name) {
|
6587
6546
|
return !!this._getLibraryByName(name);
|
6588
6547
|
};
|
@@ -7162,108 +7121,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
7162
7121
|
return properties;
|
7163
7122
|
}
|
7164
7123
|
|
7165
|
-
/**
|
7166
|
-
@module @ember/object
|
7167
|
-
*/
|
7168
|
-
|
7169
|
-
var AFTER_OBSERVERS = ':change';
|
7170
|
-
var BEFORE_OBSERVERS = ':before';
|
7171
|
-
|
7172
|
-
function changeEvent(keyName) {
|
7173
|
-
return keyName + AFTER_OBSERVERS;
|
7174
|
-
}
|
7175
|
-
|
7176
|
-
function beforeEvent(keyName) {
|
7177
|
-
return keyName + BEFORE_OBSERVERS;
|
7178
|
-
}
|
7179
|
-
|
7180
|
-
/**
|
7181
|
-
@method addObserver
|
7182
|
-
@static
|
7183
|
-
@for @ember/object/observers
|
7184
|
-
@param obj
|
7185
|
-
@param {String} _path
|
7186
|
-
@param {Object|Function} target
|
7187
|
-
@param {Function|String} [method]
|
7188
|
-
@public
|
7189
|
-
*/
|
7190
|
-
function addObserver(obj, _path, target, method) {
|
7191
|
-
addListener(obj, changeEvent(_path), target, method);
|
7192
|
-
watch(obj, _path);
|
7193
|
-
|
7194
|
-
return this;
|
7195
|
-
}
|
7196
|
-
|
7197
|
-
function observersFor(obj, path) {
|
7198
|
-
return listenersFor(obj, changeEvent(path));
|
7199
|
-
}
|
7200
|
-
|
7201
|
-
/**
|
7202
|
-
@method removeObserver
|
7203
|
-
@static
|
7204
|
-
@for @ember/object/observers
|
7205
|
-
@param obj
|
7206
|
-
@param {String} path
|
7207
|
-
@param {Object|Function} target
|
7208
|
-
@param {Function|String} [method]
|
7209
|
-
@public
|
7210
|
-
*/
|
7211
|
-
function removeObserver(obj, path, target, method) {
|
7212
|
-
unwatch(obj, path);
|
7213
|
-
removeListener(obj, changeEvent(path), target, method);
|
7214
|
-
|
7215
|
-
return this;
|
7216
|
-
}
|
7217
|
-
|
7218
|
-
/**
|
7219
|
-
@method _addBeforeObserver
|
7220
|
-
@static
|
7221
|
-
@for @ember/object/observers
|
7222
|
-
@param obj
|
7223
|
-
@param {String} path
|
7224
|
-
@param {Object|Function} target
|
7225
|
-
@param {Function|String} [method]
|
7226
|
-
@deprecated
|
7227
|
-
@private
|
7228
|
-
*/
|
7229
|
-
function _addBeforeObserver(obj, path, target, method) {
|
7230
|
-
addListener(obj, beforeEvent(path), target, method);
|
7231
|
-
watch(obj, path);
|
7232
|
-
|
7233
|
-
return this;
|
7234
|
-
}
|
7235
|
-
|
7236
|
-
// Suspend observer during callback.
|
7237
|
-
//
|
7238
|
-
// This should only be used by the target of the observer
|
7239
|
-
// while it is setting the observed path.
|
7240
|
-
function _suspendObserver(obj, path, target, method, callback) {
|
7241
|
-
return suspendListener(obj, changeEvent(path), target, method, callback);
|
7242
|
-
}
|
7243
|
-
|
7244
|
-
function _suspendObservers(obj, paths, target, method, callback) {
|
7245
|
-
var events = paths.map(changeEvent);
|
7246
|
-
return suspendListeners(obj, events, target, method, callback);
|
7247
|
-
}
|
7248
|
-
|
7249
|
-
/**
|
7250
|
-
@method removeBeforeObserver
|
7251
|
-
@static
|
7252
|
-
@for @ember/object/observers
|
7253
|
-
@param obj
|
7254
|
-
@param {String} path
|
7255
|
-
@param {Object|Function} target
|
7256
|
-
@param {Function|String} [method]
|
7257
|
-
@deprecated
|
7258
|
-
@private
|
7259
|
-
*/
|
7260
|
-
function _removeBeforeObserver(obj, path, target, method) {
|
7261
|
-
unwatch(obj, path);
|
7262
|
-
removeListener(obj, beforeEvent(path), target, method);
|
7263
|
-
|
7264
|
-
return this;
|
7265
|
-
}
|
7266
|
-
|
7267
7124
|
/**
|
7268
7125
|
@module ember
|
7269
7126
|
*/
|
@@ -7469,12 +7326,14 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
7469
7326
|
/* Called when the from side changes. */
|
7470
7327
|
|
7471
7328
|
Binding.prototype.fromDidChange = function fromDidChange(target) {
|
7329
|
+
// eslint-disable-line no-unused-vars
|
7472
7330
|
this._scheduleSync('fwd');
|
7473
7331
|
};
|
7474
7332
|
|
7475
7333
|
/* Called when the to side changes. */
|
7476
7334
|
|
7477
7335
|
Binding.prototype.toDidChange = function toDidChange(target) {
|
7336
|
+
// eslint-disable-line no-unused-vars
|
7478
7337
|
this._scheduleSync('back');
|
7479
7338
|
};
|
7480
7339
|
|
@@ -7793,10 +7652,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
7793
7652
|
// If we didn't find the original descriptor in a parent mixin, find
|
7794
7653
|
// it on the original object.
|
7795
7654
|
if (!superProperty) {
|
7796
|
-
|
7797
|
-
var superDesc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined;
|
7798
|
-
|
7799
|
-
superProperty = superDesc;
|
7655
|
+
superProperty = descriptorFor(base, key, meta$$1);
|
7800
7656
|
}
|
7801
7657
|
|
7802
7658
|
if (superProperty === undefined || !(superProperty instanceof ComputedProperty)) {
|
@@ -7820,24 +7676,26 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
7820
7676
|
}
|
7821
7677
|
|
7822
7678
|
function giveMethodSuper(obj, key, method, values, descs) {
|
7823
|
-
var superMethod = void 0;
|
7824
|
-
|
7825
7679
|
// Methods overwrite computed properties, and do not call super to them.
|
7826
|
-
if (descs[key]
|
7827
|
-
|
7828
|
-
superMethod = values[key];
|
7680
|
+
if (descs[key] !== undefined) {
|
7681
|
+
return method;
|
7829
7682
|
}
|
7830
7683
|
|
7684
|
+
// Find the original method in a parent mixin
|
7685
|
+
var superMethod = values[key];
|
7686
|
+
|
7831
7687
|
// If we didn't find the original value in a parent mixin, find it in
|
7832
7688
|
// the original object
|
7833
|
-
superMethod
|
7689
|
+
if (superMethod === undefined && (!features.EMBER_METAL_ES5_GETTERS || descriptorFor(obj, key) === undefined)) {
|
7690
|
+
superMethod = obj[key];
|
7691
|
+
}
|
7834
7692
|
|
7835
7693
|
// Only wrap the new method if the original method was a function
|
7836
|
-
if (superMethod ===
|
7837
|
-
return method;
|
7694
|
+
if (typeof superMethod === 'function') {
|
7695
|
+
return emberUtils.wrap(method, superMethod);
|
7838
7696
|
}
|
7839
7697
|
|
7840
|
-
return
|
7698
|
+
return method;
|
7841
7699
|
}
|
7842
7700
|
|
7843
7701
|
function applyConcatenatedProperties(obj, key, value, values) {
|
@@ -7904,7 +7762,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
7904
7762
|
|
7905
7763
|
function addNormalizedProperty(base, key, value, meta$$1, descs, values, concats, mergings) {
|
7906
7764
|
if (value instanceof Descriptor) {
|
7907
|
-
if (value === REQUIRED && descs[key]) {
|
7765
|
+
if (emberEnvironment.ENV._ENABLE_PROPERTY_REQUIRED_SUPPORT && value === REQUIRED && descs[key]) {
|
7908
7766
|
return CONTINUE;
|
7909
7767
|
}
|
7910
7768
|
|
@@ -7952,6 +7810,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
7952
7810
|
}
|
7953
7811
|
|
7954
7812
|
if (props) {
|
7813
|
+
// remove willMergeMixin after 3.4 as it was used for _actions
|
7955
7814
|
if (base.willMergeMixin) {
|
7956
7815
|
base.willMergeMixin(props);
|
7957
7816
|
}
|
@@ -8020,7 +7879,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
8020
7879
|
if (descs[altKey] || values[altKey]) {
|
8021
7880
|
value = values[altKey];
|
8022
7881
|
desc = descs[altKey];
|
8023
|
-
} else if ((possibleDesc = obj
|
7882
|
+
} else if ((possibleDesc = descriptorFor(obj, altKey)) !== undefined) {
|
8024
7883
|
desc = possibleDesc;
|
8025
7884
|
value = undefined;
|
8026
7885
|
} else {
|
@@ -8039,19 +7898,17 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
8039
7898
|
}
|
8040
7899
|
}
|
8041
7900
|
|
8042
|
-
function replaceObserversAndListeners(obj, key,
|
8043
|
-
var prev = obj[key];
|
8044
|
-
|
7901
|
+
function replaceObserversAndListeners(obj, key, prev, next) {
|
8045
7902
|
if (typeof prev === 'function') {
|
8046
7903
|
updateObserversAndListeners(obj, key, prev.__ember_observesBefore__, _removeBeforeObserver);
|
8047
7904
|
updateObserversAndListeners(obj, key, prev.__ember_observes__, removeObserver);
|
8048
7905
|
updateObserversAndListeners(obj, key, prev.__ember_listens__, removeListener);
|
8049
7906
|
}
|
8050
7907
|
|
8051
|
-
if (typeof
|
8052
|
-
updateObserversAndListeners(obj, key,
|
8053
|
-
updateObserversAndListeners(obj, key,
|
8054
|
-
updateObserversAndListeners(obj, key,
|
7908
|
+
if (typeof next === 'function') {
|
7909
|
+
updateObserversAndListeners(obj, key, next.__ember_observesBefore__, _addBeforeObserver);
|
7910
|
+
updateObserversAndListeners(obj, key, next.__ember_observes__, addObserver);
|
7911
|
+
updateObserversAndListeners(obj, key, next.__ember_listens__, addListener);
|
8055
7912
|
}
|
8056
7913
|
}
|
8057
7914
|
|
@@ -8084,7 +7941,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
8084
7941
|
desc = descs[key];
|
8085
7942
|
value = values[key];
|
8086
7943
|
|
8087
|
-
if (desc === REQUIRED) {
|
7944
|
+
if (emberEnvironment.ENV._ENABLE_PROPERTY_REQUIRED_SUPPORT && desc === REQUIRED) {
|
8088
7945
|
continue;
|
8089
7946
|
}
|
8090
7947
|
|
@@ -8098,7 +7955,11 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
8098
7955
|
continue;
|
8099
7956
|
}
|
8100
7957
|
|
8101
|
-
|
7958
|
+
if (features.EMBER_METAL_ES5_GETTERS && descriptorFor(obj, key) !== undefined) {
|
7959
|
+
replaceObserversAndListeners(obj, key, null, value);
|
7960
|
+
} else {
|
7961
|
+
replaceObserversAndListeners(obj, key, obj[key], value);
|
7962
|
+
}
|
8102
7963
|
|
8103
7964
|
if (detectBinding(key)) {
|
8104
7965
|
meta$$1.writeBindings(key, value);
|
@@ -8278,7 +8139,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
8278
8139
|
|
8279
8140
|
|
8280
8141
|
Mixin.mixins = function mixins(obj) {
|
8281
|
-
var meta$$1 =
|
8142
|
+
var meta$$1 = peekMeta(obj);
|
8282
8143
|
var ret = [];
|
8283
8144
|
if (meta$$1 === undefined) {
|
8284
8145
|
return ret;
|
@@ -8357,7 +8218,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
8357
8218
|
if (obj instanceof Mixin) {
|
8358
8219
|
return _detect(obj, this, {});
|
8359
8220
|
}
|
8360
|
-
var meta$$1 =
|
8221
|
+
var meta$$1 = peekMeta(obj);
|
8361
8222
|
if (meta$$1 === undefined) {
|
8362
8223
|
return false;
|
8363
8224
|
}
|
@@ -8533,23 +8394,12 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
8533
8394
|
@static
|
8534
8395
|
*/
|
8535
8396
|
function observer() {
|
8536
|
-
var _paths = void 0,
|
8537
|
-
func = void 0;
|
8538
|
-
|
8539
8397
|
for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
|
8540
8398
|
args[_key5] = arguments[_key5];
|
8541
8399
|
}
|
8542
8400
|
|
8543
|
-
|
8544
|
-
|
8545
|
-
true && !false && emberDebug.deprecate('Passing the dependentKeys after the callback function in observer is deprecated. Ensure the callback function is the last argument.', false, { id: 'ember-metal.observer-argument-order', until: '3.0.0' });
|
8546
|
-
|
8547
|
-
func = args.shift();
|
8548
|
-
_paths = args;
|
8549
|
-
} else {
|
8550
|
-
func = args.pop();
|
8551
|
-
_paths = args;
|
8552
|
-
}
|
8401
|
+
var func = args.pop();
|
8402
|
+
var _paths = args;
|
8553
8403
|
|
8554
8404
|
true && !(typeof func === 'function') && emberDebug.assert('observer called without a function', typeof func === 'function');
|
8555
8405
|
true && !(_paths.length > 0 && _paths.every(function (p) {
|
@@ -8571,44 +8421,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
8571
8421
|
return func;
|
8572
8422
|
}
|
8573
8423
|
|
8574
|
-
/**
|
8575
|
-
Specify a method that observes property changes.
|
8576
|
-
|
8577
|
-
```javascript
|
8578
|
-
import EmberObject from '@ember/object';
|
8579
|
-
|
8580
|
-
EmberObject.extend({
|
8581
|
-
valueObserver: Ember.immediateObserver('value', function() {
|
8582
|
-
// Executes whenever the "value" property changes
|
8583
|
-
})
|
8584
|
-
});
|
8585
|
-
```
|
8586
|
-
|
8587
|
-
In the future, `observer` may become asynchronous. In this event,
|
8588
|
-
`immediateObserver` will maintain the synchronous behavior.
|
8589
|
-
|
8590
|
-
Also available as `Function.prototype.observesImmediately` if prototype extensions are
|
8591
|
-
enabled.
|
8592
|
-
|
8593
|
-
@method _immediateObserver
|
8594
|
-
@for Ember
|
8595
|
-
@param {String} propertyNames*
|
8596
|
-
@param {Function} func
|
8597
|
-
@deprecated Use `observer` instead.
|
8598
|
-
@return func
|
8599
|
-
@private
|
8600
|
-
*/
|
8601
|
-
function _immediateObserver() {
|
8602
|
-
true && !false && emberDebug.deprecate('Usage of `Ember.immediateObserver` is deprecated, use `observer` instead.', false, { id: 'ember-metal.immediate-observer', until: '3.0.0' });
|
8603
|
-
|
8604
|
-
for (var i = 0; i < arguments.length; i++) {
|
8605
|
-
var arg = arguments[i];
|
8606
|
-
true && !(typeof arg !== 'string' || arg.indexOf('.') === -1) && emberDebug.assert('Immediate observers must observe internal properties only, not properties on other objects.', typeof arg !== 'string' || arg.indexOf('.') === -1);
|
8607
|
-
}
|
8608
|
-
|
8609
|
-
return observer.apply(this, arguments);
|
8610
|
-
}
|
8611
|
-
|
8612
8424
|
/**
|
8613
8425
|
When observers fire, they are called with the arguments `obj`, `keyName`.
|
8614
8426
|
|
@@ -8630,32 +8442,20 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
8630
8442
|
args[_key6] = arguments[_key6];
|
8631
8443
|
}
|
8632
8444
|
|
8633
|
-
var func = args
|
8634
|
-
var
|
8445
|
+
var func = args.pop();
|
8446
|
+
var _paths = args;
|
8447
|
+
|
8448
|
+
true && !(typeof func === 'function') && emberDebug.assert('_beforeObserver called without a function', typeof func === 'function');
|
8635
8449
|
|
8450
|
+
var paths = [];
|
8636
8451
|
var addWatchedProperty = function (path) {
|
8637
8452
|
paths.push(path);
|
8638
8453
|
};
|
8639
8454
|
|
8640
|
-
var _paths = args.slice(0, -1);
|
8641
|
-
|
8642
|
-
if (typeof func !== 'function') {
|
8643
|
-
// revert to old, soft-deprecated argument ordering
|
8644
|
-
|
8645
|
-
func = args[0];
|
8646
|
-
_paths = args.slice(1);
|
8647
|
-
}
|
8648
|
-
|
8649
|
-
paths = [];
|
8650
|
-
|
8651
8455
|
for (var i = 0; i < _paths.length; ++i) {
|
8652
8456
|
expandProperties(_paths[i], addWatchedProperty);
|
8653
8457
|
}
|
8654
8458
|
|
8655
|
-
if (typeof func !== 'function') {
|
8656
|
-
throw new emberDebug.EmberError('_beforeObserver called without a function');
|
8657
|
-
}
|
8658
|
-
|
8659
8459
|
func.__ember_observesBefore__ = paths;
|
8660
8460
|
return func;
|
8661
8461
|
}
|
@@ -8685,10 +8485,10 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
8685
8485
|
}
|
8686
8486
|
|
8687
8487
|
function injectedPropertyGet(keyName) {
|
8688
|
-
var desc = this
|
8488
|
+
var desc = descriptorFor(this, keyName);
|
8689
8489
|
var owner = emberUtils.getOwner(this) || this.container; // fallback to `container` for backwards compat
|
8690
8490
|
|
8691
|
-
true && !(desc && desc.
|
8491
|
+
true && !(desc && desc.type) && emberDebug.assert('InjectedProperties should be defined with the inject computed property macros.', desc && desc.type);
|
8692
8492
|
true && !owner && emberDebug.assert('Attempting to lookup an injected property on an object without a container, ensure that the object was instantiated via a container.', owner);
|
8693
8493
|
|
8694
8494
|
return owner.lookup(desc.type + ':' + (desc.name || keyName));
|
@@ -8737,7 +8537,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
8737
8537
|
|
8738
8538
|
function isProxy(value) {
|
8739
8539
|
if (typeof value === 'object' && value !== null) {
|
8740
|
-
var meta$$1 =
|
8540
|
+
var meta$$1 = peekMeta(value);
|
8741
8541
|
return meta$$1 === undefined ? false : meta$$1.isProxy();
|
8742
8542
|
}
|
8743
8543
|
|
@@ -8773,7 +8573,15 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
8773
8573
|
Object.defineProperty(obj, key, this.desc);
|
8774
8574
|
};
|
8775
8575
|
|
8776
|
-
Descriptor$$1.prototype.
|
8576
|
+
Descriptor$$1.prototype.get = function get(obj, key) {
|
8577
|
+
return obj[key];
|
8578
|
+
};
|
8579
|
+
|
8580
|
+
Descriptor$$1.prototype.set = function set(obj, key, value) {
|
8581
|
+
return obj[key] = value;
|
8582
|
+
};
|
8583
|
+
|
8584
|
+
Descriptor$$1.prototype.teardown = function teardown() {};
|
8777
8585
|
|
8778
8586
|
return Descriptor$$1;
|
8779
8587
|
}(Descriptor);
|
@@ -8794,8 +8602,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
8794
8602
|
exports.setOnerror = setOnerror;
|
8795
8603
|
exports.setDispatchOverride = setDispatchOverride;
|
8796
8604
|
exports.getDispatchOverride = getDispatchOverride;
|
8797
|
-
exports.
|
8605
|
+
exports.descriptorFor = descriptorFor;
|
8798
8606
|
exports.meta = meta;
|
8607
|
+
exports.peekMeta = peekMeta;
|
8799
8608
|
exports.deleteMeta = deleteMeta;
|
8800
8609
|
exports.Cache = Cache;
|
8801
8610
|
exports._getPath = _getPath;
|
@@ -8803,8 +8612,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
8803
8612
|
exports.getWithDefault = getWithDefault;
|
8804
8613
|
exports.set = set;
|
8805
8614
|
exports.trySet = trySet;
|
8806
|
-
exports.WeakMap = WeakMap$1;
|
8807
|
-
exports.WeakMapPolyfill = WeakMapPolyfill;
|
8808
8615
|
exports.addListener = addListener;
|
8809
8616
|
exports.hasListeners = hasListeners;
|
8810
8617
|
exports.listenersFor = listenersFor;
|
@@ -8858,7 +8665,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
8858
8665
|
exports._removeBeforeObserver = _removeBeforeObserver;
|
8859
8666
|
exports.Mixin = Mixin;
|
8860
8667
|
exports.aliasMethod = aliasMethod;
|
8861
|
-
exports._immediateObserver = _immediateObserver;
|
8862
8668
|
exports._beforeObserver = _beforeObserver;
|
8863
8669
|
exports.mixin = mixin;
|
8864
8670
|
exports.observer = observer;
|
@@ -11148,16 +10954,11 @@ enifed('rsvp', ['exports', 'ember-babel', 'node-module'], function (exports, _em
|
|
11148
10954
|
scheduleFlush$1 = useSetTimeout();
|
11149
10955
|
}
|
11150
10956
|
|
11151
|
-
var platform = void 0;
|
11152
|
-
|
11153
10957
|
/* global self */
|
11154
10958
|
if (typeof self === 'object') {
|
11155
|
-
platform = self;
|
11156
10959
|
|
11157
10960
|
/* global global */
|
11158
|
-
} else if (typeof global === 'object') {
|
11159
|
-
platform = global;
|
11160
|
-
} else {
|
10961
|
+
} else if (typeof global === 'object') {} else {
|
11161
10962
|
throw new Error('no global: `self` or `global` found');
|
11162
10963
|
}
|
11163
10964
|
|