ember-source 3.0.0.beta.1 → 3.0.0.beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/dist/ember-runtime.js +34 -540
- data/dist/ember-template-compiler.js +125 -604
- data/dist/ember-testing.js +1 -1
- data/dist/ember-tests.js +91 -1280
- data/dist/ember-tests.prod.js +84 -1219
- data/dist/ember.debug.js +173 -603
- data/dist/ember.min.js +383 -393
- data/dist/ember.prod.js +177 -593
- data/package.json +12 -6
- metadata +2 -2
@@ -6,7 +6,7 @@
|
|
6
6
|
* Portions Copyright 2008-2011 Apple Inc. All rights reserved.
|
7
7
|
* @license Licensed under MIT license
|
8
8
|
* See https://raw.github.com/emberjs/ember.js/master/LICENSE
|
9
|
-
* @version 3.0.0-beta.
|
9
|
+
* @version 3.0.0-beta.2
|
10
10
|
*/
|
11
11
|
|
12
12
|
/*globals process */
|
@@ -4645,15 +4645,6 @@ enifed('backburner', ['exports'], function (exports) {
|
|
4645
4645
|
this.globalOptions = globalOptions;
|
4646
4646
|
}
|
4647
4647
|
|
4648
|
-
Queue.prototype.push = function (target, method, args, stack) {
|
4649
|
-
this._queue.push(target, method, args, stack);
|
4650
|
-
return {
|
4651
|
-
queue: this,
|
4652
|
-
target: target,
|
4653
|
-
method: method
|
4654
|
-
};
|
4655
|
-
};
|
4656
|
-
|
4657
4648
|
Queue.prototype.flush = function (sync) {
|
4658
4649
|
var _options = this.options,
|
4659
4650
|
before = _options.before,
|
@@ -4730,16 +4721,10 @@ enifed('backburner', ['exports'], function (exports) {
|
|
4730
4721
|
|
4731
4722
|
var queue = this._queue;
|
4732
4723
|
var targetQueueMap = this.targetQueues.get(target);
|
4733
|
-
var index = void 0;
|
4734
4724
|
if (targetQueueMap !== undefined) {
|
4735
|
-
|
4736
|
-
if (index !== undefined) {
|
4737
|
-
targetQueueMap.delete(method);
|
4738
|
-
}
|
4739
|
-
}
|
4740
|
-
if (index === undefined) {
|
4741
|
-
index = findItem(target, method, queue);
|
4725
|
+
targetQueueMap.delete(method);
|
4742
4726
|
}
|
4727
|
+
var index = findItem(target, method, queue);
|
4743
4728
|
if (index > -1) {
|
4744
4729
|
queue.splice(index, 4);
|
4745
4730
|
return true;
|
@@ -4755,6 +4740,15 @@ enifed('backburner', ['exports'], function (exports) {
|
|
4755
4740
|
return false;
|
4756
4741
|
};
|
4757
4742
|
|
4743
|
+
Queue.prototype.push = function (target, method, args, stack) {
|
4744
|
+
this._queue.push(target, method, args, stack);
|
4745
|
+
return {
|
4746
|
+
queue: this,
|
4747
|
+
target: target,
|
4748
|
+
method: method
|
4749
|
+
};
|
4750
|
+
};
|
4751
|
+
|
4758
4752
|
Queue.prototype.pushUnique = function (target, method, args, stack) {
|
4759
4753
|
var localQueueMap = this.targetQueues.get(target),
|
4760
4754
|
queueIndex,
|
@@ -4832,10 +4826,10 @@ enifed('backburner', ['exports'], function (exports) {
|
|
4832
4826
|
DeferredActionQueues.prototype.schedule = function (queueName, target, method, args, onceFlag, stack) {
|
4833
4827
|
var queues = this.queues;
|
4834
4828
|
var queue = queues[queueName];
|
4835
|
-
if (
|
4829
|
+
if (queue === undefined) {
|
4836
4830
|
noSuchQueue(queueName);
|
4837
4831
|
}
|
4838
|
-
if (
|
4832
|
+
if (method === undefined || method === null) {
|
4839
4833
|
noSuchMethod(queueName);
|
4840
4834
|
}
|
4841
4835
|
if (onceFlag) {
|
@@ -5184,28 +5178,45 @@ enifed('backburner', ['exports'], function (exports) {
|
|
5184
5178
|
return this._setTimeout(fn, executeAt);
|
5185
5179
|
};
|
5186
5180
|
|
5187
|
-
Backburner.prototype.throttle = function (
|
5181
|
+
Backburner.prototype.throttle = function (targetOrThisArgOrMethod) {
|
5188
5182
|
var _this2 = this,
|
5189
5183
|
_len4,
|
5190
5184
|
args,
|
5191
5185
|
_key4;
|
5192
5186
|
|
5193
|
-
|
5194
|
-
|
5195
|
-
|
5196
|
-
|
5197
|
-
var immediate = args.pop();
|
5187
|
+
var target = void 0;
|
5188
|
+
var method = void 0;
|
5189
|
+
var immediate = void 0;
|
5198
5190
|
var isImmediate = void 0;
|
5199
5191
|
var wait = void 0;
|
5200
|
-
|
5201
|
-
|
5192
|
+
|
5193
|
+
for (_len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
|
5194
|
+
args[_key4 - 1] = arguments[_key4];
|
5195
|
+
}
|
5196
|
+
|
5197
|
+
if (args.length === 1) {
|
5198
|
+
method = targetOrThisArgOrMethod;
|
5199
|
+
wait = args.pop();
|
5200
|
+
target = null;
|
5202
5201
|
isImmediate = true;
|
5203
5202
|
} else {
|
5204
|
-
|
5205
|
-
|
5206
|
-
|
5207
|
-
|
5208
|
-
|
5203
|
+
target = targetOrThisArgOrMethod;
|
5204
|
+
method = args.shift();
|
5205
|
+
immediate = args.pop();
|
5206
|
+
if (isString(method)) {
|
5207
|
+
method = target[method];
|
5208
|
+
} else if (!isFunction(method)) {
|
5209
|
+
args.unshift(method);
|
5210
|
+
method = target;
|
5211
|
+
target = null;
|
5212
|
+
}
|
5213
|
+
if (isCoercableNumber(immediate)) {
|
5214
|
+
wait = immediate;
|
5215
|
+
isImmediate = true;
|
5216
|
+
} else {
|
5217
|
+
wait = args.pop();
|
5218
|
+
isImmediate = immediate === true;
|
5219
|
+
}
|
5209
5220
|
}
|
5210
5221
|
var index = findItem(target, method, this._throttlers);
|
5211
5222
|
if (index > -1) {
|
@@ -5232,29 +5243,46 @@ enifed('backburner', ['exports'], function (exports) {
|
|
5232
5243
|
return timer;
|
5233
5244
|
};
|
5234
5245
|
|
5235
|
-
Backburner.prototype.debounce = function (
|
5246
|
+
Backburner.prototype.debounce = function (targetOrThisArgOrMethod) {
|
5236
5247
|
var _this3 = this,
|
5237
5248
|
_len5,
|
5238
5249
|
args,
|
5239
5250
|
_key5,
|
5240
5251
|
timerId;
|
5241
5252
|
|
5242
|
-
|
5243
|
-
|
5244
|
-
|
5245
|
-
|
5246
|
-
var immediate = args.pop();
|
5253
|
+
var target = void 0;
|
5254
|
+
var method = void 0;
|
5255
|
+
var immediate = void 0;
|
5247
5256
|
var isImmediate = void 0;
|
5248
5257
|
var wait = void 0;
|
5249
|
-
|
5250
|
-
|
5258
|
+
|
5259
|
+
for (_len5 = arguments.length, args = Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {
|
5260
|
+
args[_key5 - 1] = arguments[_key5];
|
5261
|
+
}
|
5262
|
+
|
5263
|
+
if (args.length === 1) {
|
5264
|
+
method = targetOrThisArgOrMethod;
|
5265
|
+
wait = args.pop();
|
5266
|
+
target = null;
|
5251
5267
|
isImmediate = false;
|
5252
5268
|
} else {
|
5253
|
-
|
5254
|
-
|
5255
|
-
|
5256
|
-
|
5257
|
-
|
5269
|
+
target = targetOrThisArgOrMethod;
|
5270
|
+
method = args.shift();
|
5271
|
+
immediate = args.pop();
|
5272
|
+
if (isString(method)) {
|
5273
|
+
method = target[method];
|
5274
|
+
} else if (!isFunction(method)) {
|
5275
|
+
args.unshift(method);
|
5276
|
+
method = target;
|
5277
|
+
target = null;
|
5278
|
+
}
|
5279
|
+
if (isCoercableNumber(immediate)) {
|
5280
|
+
wait = immediate;
|
5281
|
+
isImmediate = false;
|
5282
|
+
} else {
|
5283
|
+
wait = args.pop();
|
5284
|
+
isImmediate = immediate === true;
|
5285
|
+
}
|
5258
5286
|
}
|
5259
5287
|
wait = parseInt(wait, 10);
|
5260
5288
|
// Remove debouncee
|
@@ -6513,9 +6541,16 @@ enifed("ember-console", ["exports"], function (exports) {
|
|
6513
6541
|
return (_console4 = console).info.apply(_console4, arguments);
|
6514
6542
|
},
|
6515
6543
|
debug: function () {
|
6516
|
-
var
|
6544
|
+
var _console6, _console5;
|
6517
6545
|
|
6518
|
-
|
6546
|
+
/* eslint-disable no-console */
|
6547
|
+
if (console.debug) {
|
6548
|
+
|
6549
|
+
return (_console5 = console).debug.apply(_console5, arguments);
|
6550
|
+
}
|
6551
|
+
|
6552
|
+
return (_console6 = console).info.apply(_console6, arguments);
|
6553
|
+
/* eslint-enable no-console */
|
6519
6554
|
},
|
6520
6555
|
assert: function () {
|
6521
6556
|
var _console7;
|
@@ -7487,12 +7522,11 @@ enifed('ember-environment', ['exports'], function (exports) {
|
|
7487
7522
|
exports.context = context;
|
7488
7523
|
exports.environment = environment;
|
7489
7524
|
});
|
7490
|
-
enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-debug', 'ember/features', 'ember-babel', '@glimmer/reference', 'require', 'backburner'
|
7525
|
+
enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-debug', 'ember/features', 'ember-babel', '@glimmer/reference', 'require', 'backburner'], function (exports, emberEnvironment, emberUtils, emberDebug, features, emberBabel, reference, require, Backburner) {
|
7491
7526
|
'use strict';
|
7492
7527
|
|
7493
7528
|
require = require && require.hasOwnProperty('default') ? require['default'] : require;
|
7494
7529
|
Backburner = Backburner && Backburner.hasOwnProperty('default') ? Backburner['default'] : Backburner;
|
7495
|
-
Logger = Logger && Logger.hasOwnProperty('default') ? Logger['default'] : Logger;
|
7496
7530
|
|
7497
7531
|
/**
|
7498
7532
|
@module ember
|
@@ -8405,9 +8439,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
8405
8439
|
//
|
8406
8440
|
// This should only be used by the target of the observer
|
8407
8441
|
// while it is setting the observed path.
|
8408
|
-
|
8409
|
-
return suspendListener(obj, changeEvent(path), target, method, callback);
|
8410
|
-
}
|
8442
|
+
|
8411
8443
|
|
8412
8444
|
/**
|
8413
8445
|
@method removeBeforeObserver
|
@@ -8822,7 +8854,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
8822
8854
|
// development to aid in development asertions. Production builds of
|
8823
8855
|
// ember strip this entire branch out.
|
8824
8856
|
messageFor = function (obj, keyName, property, value) {
|
8825
|
-
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.';
|
8857
|
+
return 'You attempted to access the `' + keyName + '.' + String(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 + '.' + String(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.';
|
8826
8858
|
};
|
8827
8859
|
trapFor = void 0;
|
8828
8860
|
|
@@ -8834,7 +8866,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
8834
8866
|
get: function (descriptor, property) {
|
8835
8867
|
if (property === DESCRIPTOR) {
|
8836
8868
|
return descriptor;
|
8837
|
-
} else if (property === '
|
8869
|
+
} else if (property === 'prototype' || property === 'constructor' || property === 'nodeType') {
|
8870
|
+
return undefined;
|
8871
|
+
} else if (property === 'toString' || property === 'valueOf' || property === 'inspect' || Symbol && property === Symbol.toPrimitive || Symbol && property === Symbol.toStringTag) {
|
8838
8872
|
return function () {
|
8839
8873
|
return '[COMPUTED PROPERTY]';
|
8840
8874
|
};
|
@@ -9605,7 +9639,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
9605
9639
|
|
9606
9640
|
this._watching = undefined;
|
9607
9641
|
this._mixins = undefined;
|
9608
|
-
|
9642
|
+
if (emberEnvironment.ENV._ENABLE_BINDING_SUPPORT) {
|
9643
|
+
this._bindings = undefined;
|
9644
|
+
}
|
9609
9645
|
this._values = undefined;
|
9610
9646
|
this._deps = undefined;
|
9611
9647
|
this._chainWatchers = undefined;
|
@@ -9951,6 +9987,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
9951
9987
|
};
|
9952
9988
|
|
9953
9989
|
Meta.prototype.writeBindings = function (subkey, value) {
|
9990
|
+
true && !emberEnvironment.ENV._ENABLE_BINDING_SUPPORT && emberDebug.assert('Cannot invoke `meta.writeBindings` when EmberENV._ENABLE_BINDING_SUPPORT is not set', emberEnvironment.ENV._ENABLE_BINDING_SUPPORT);
|
9954
9991
|
true && !!this.isMetaDestroyed() && emberDebug.assert('Cannot add a binding for `' + subkey + '` on `' + emberUtils.toString(this.source) + '` after it has been destroyed.', !this.isMetaDestroyed());
|
9955
9992
|
|
9956
9993
|
var map = this._getOrCreateOwnMap('_bindings');
|
@@ -9958,10 +9995,14 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
9958
9995
|
};
|
9959
9996
|
|
9960
9997
|
Meta.prototype.peekBindings = function (subkey) {
|
9998
|
+
true && !emberEnvironment.ENV._ENABLE_BINDING_SUPPORT && emberDebug.assert('Cannot invoke `meta.peekBindings` when EmberENV._ENABLE_BINDING_SUPPORT is not set', emberEnvironment.ENV._ENABLE_BINDING_SUPPORT);
|
9999
|
+
|
9961
10000
|
return this._findInherited('_bindings', subkey);
|
9962
10001
|
};
|
9963
10002
|
|
9964
10003
|
Meta.prototype.forEachBindings = function (fn) {
|
10004
|
+
true && !emberEnvironment.ENV._ENABLE_BINDING_SUPPORT && emberDebug.assert('Cannot invoke `meta.forEachBindings` when EmberENV._ENABLE_BINDING_SUPPORT is not set', emberEnvironment.ENV._ENABLE_BINDING_SUPPORT);
|
10005
|
+
|
9965
10006
|
var pointer = this,
|
9966
10007
|
map;
|
9967
10008
|
var seen = void 0;
|
@@ -9982,6 +10023,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
9982
10023
|
};
|
9983
10024
|
|
9984
10025
|
Meta.prototype.clearBindings = function () {
|
10026
|
+
true && !emberEnvironment.ENV._ENABLE_BINDING_SUPPORT && emberDebug.assert('Cannot invoke `meta.clearBindings` when EmberENV._ENABLE_BINDING_SUPPORT is not set', emberEnvironment.ENV._ENABLE_BINDING_SUPPORT);
|
9985
10027
|
true && !!this.isMetaDestroyed() && emberDebug.assert('Cannot clear bindings on `' + emberUtils.toString(this.source) + '` after it has been destroyed.', !this.isMetaDestroyed());
|
9986
10028
|
|
9987
10029
|
this._bindings = undefined;
|
@@ -10313,32 +10355,20 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
10313
10355
|
return key.indexOf('.');
|
10314
10356
|
});
|
10315
10357
|
|
10316
|
-
|
10358
|
+
new Cache(1000, function (path) {
|
10317
10359
|
var index = firstDotIndexCache.get(path);
|
10318
10360
|
return index === -1 ? path : path.slice(0, index);
|
10319
10361
|
});
|
10320
|
-
|
10321
|
-
var tailPathCache = new Cache(1000, function (path) {
|
10362
|
+
new Cache(1000, function (path) {
|
10322
10363
|
var index = firstDotIndexCache.get(path);
|
10323
10364
|
return index === -1 ? undefined : path.slice(index + 1);
|
10324
10365
|
});
|
10325
10366
|
|
10326
|
-
function isGlobalPath(path) {
|
10327
|
-
return isGlobalPathCache.get(path);
|
10328
|
-
}
|
10329
10367
|
|
10330
10368
|
function isPath(path) {
|
10331
10369
|
return firstDotIndexCache.get(path) !== -1;
|
10332
10370
|
}
|
10333
10371
|
|
10334
|
-
function getFirstKey(path) {
|
10335
|
-
return firstKeyCache.get(path);
|
10336
|
-
}
|
10337
|
-
|
10338
|
-
function getTailPath(path) {
|
10339
|
-
return tailPathCache.get(path);
|
10340
|
-
}
|
10341
|
-
|
10342
10372
|
/**
|
10343
10373
|
@module @ember/object
|
10344
10374
|
*/
|
@@ -10601,9 +10631,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
10601
10631
|
@param {Object} value The value to set
|
10602
10632
|
@public
|
10603
10633
|
*/
|
10604
|
-
|
10605
|
-
return set(root, path, value, true);
|
10606
|
-
}
|
10634
|
+
|
10607
10635
|
|
10608
10636
|
/**
|
10609
10637
|
@module @ember/object
|
@@ -13191,487 +13219,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
13191
13219
|
*/
|
13192
13220
|
|
13193
13221
|
|
13194
|
-
/**
|
13195
|
-
@module ember
|
13196
|
-
*/
|
13197
|
-
|
13198
|
-
// ..........................................................
|
13199
|
-
// BINDING
|
13200
|
-
//
|
13201
|
-
|
13202
|
-
var Binding = function () {
|
13203
|
-
function Binding(toPath, fromPath) {
|
13204
|
-
|
13205
|
-
// Configuration
|
13206
|
-
this._from = fromPath;
|
13207
|
-
this._to = toPath;
|
13208
|
-
this._oneWay = undefined;
|
13209
|
-
|
13210
|
-
// State
|
13211
|
-
this._direction = undefined;
|
13212
|
-
this._readyToSync = undefined;
|
13213
|
-
this._fromObj = undefined;
|
13214
|
-
this._fromPath = undefined;
|
13215
|
-
this._toObj = undefined;
|
13216
|
-
}
|
13217
|
-
|
13218
|
-
/**
|
13219
|
-
@class Binding
|
13220
|
-
@namespace Ember
|
13221
|
-
@deprecated See https://emberjs.com/deprecations/v2.x#toc_ember-binding
|
13222
|
-
@public
|
13223
|
-
*/
|
13224
|
-
|
13225
|
-
/**
|
13226
|
-
This copies the Binding so it can be connected to another object.
|
13227
|
-
@method copy
|
13228
|
-
@return {Ember.Binding} `this`
|
13229
|
-
@public
|
13230
|
-
*/
|
13231
|
-
|
13232
|
-
Binding.prototype.copy = function () {
|
13233
|
-
var copy = new Binding(this._to, this._from);
|
13234
|
-
if (this._oneWay) {
|
13235
|
-
copy._oneWay = true;
|
13236
|
-
}
|
13237
|
-
return copy;
|
13238
|
-
};
|
13239
|
-
|
13240
|
-
// ..........................................................
|
13241
|
-
// CONFIG
|
13242
|
-
//
|
13243
|
-
|
13244
|
-
/**
|
13245
|
-
This will set `from` property path to the specified value. It will not
|
13246
|
-
attempt to resolve this property path to an actual object until you
|
13247
|
-
connect the binding.
|
13248
|
-
The binding will search for the property path starting at the root object
|
13249
|
-
you pass when you `connect()` the binding. It follows the same rules as
|
13250
|
-
`get()` - see that method for more information.
|
13251
|
-
@method from
|
13252
|
-
@param {String} path The property path to connect to.
|
13253
|
-
@return {Ember.Binding} `this`
|
13254
|
-
@public
|
13255
|
-
*/
|
13256
|
-
|
13257
|
-
Binding.prototype.from = function (path) {
|
13258
|
-
this._from = path;
|
13259
|
-
return this;
|
13260
|
-
};
|
13261
|
-
|
13262
|
-
/**
|
13263
|
-
This will set the `to` property path to the specified value. It will not
|
13264
|
-
attempt to resolve this property path to an actual object until you
|
13265
|
-
connect the binding.
|
13266
|
-
The binding will search for the property path starting at the root object
|
13267
|
-
you pass when you `connect()` the binding. It follows the same rules as
|
13268
|
-
`get()` - see that method for more information.
|
13269
|
-
@method to
|
13270
|
-
@param {String|Tuple} path A property path or tuple.
|
13271
|
-
@return {Ember.Binding} `this`
|
13272
|
-
@public
|
13273
|
-
*/
|
13274
|
-
|
13275
|
-
Binding.prototype.to = function (path) {
|
13276
|
-
this._to = path;
|
13277
|
-
return this;
|
13278
|
-
};
|
13279
|
-
|
13280
|
-
/**
|
13281
|
-
Configures the binding as one way. A one-way binding will relay changes
|
13282
|
-
on the `from` side to the `to` side, but not the other way around. This
|
13283
|
-
means that if you change the `to` side directly, the `from` side may have
|
13284
|
-
a different value.
|
13285
|
-
@method oneWay
|
13286
|
-
@return {Ember.Binding} `this`
|
13287
|
-
@public
|
13288
|
-
*/
|
13289
|
-
|
13290
|
-
Binding.prototype.oneWay = function () {
|
13291
|
-
this._oneWay = true;
|
13292
|
-
return this;
|
13293
|
-
};
|
13294
|
-
|
13295
|
-
/**
|
13296
|
-
@method toString
|
13297
|
-
@return {String} string representation of binding
|
13298
|
-
@public
|
13299
|
-
*/
|
13300
|
-
|
13301
|
-
Binding.prototype.toString = function () {
|
13302
|
-
var oneWay = this._oneWay ? '[oneWay]' : '';
|
13303
|
-
return 'Ember.Binding<' + emberUtils.guidFor(this) + '>(' + this._from + ' -> ' + this._to + ')' + oneWay;
|
13304
|
-
};
|
13305
|
-
|
13306
|
-
// ..........................................................
|
13307
|
-
// CONNECT AND SYNC
|
13308
|
-
//
|
13309
|
-
|
13310
|
-
/**
|
13311
|
-
Attempts to connect this binding instance so that it can receive and relay
|
13312
|
-
changes. This method will raise an exception if you have not set the
|
13313
|
-
from/to properties yet.
|
13314
|
-
@method connect
|
13315
|
-
@param {Object} obj The root object for this binding.
|
13316
|
-
@return {Ember.Binding} `this`
|
13317
|
-
@public
|
13318
|
-
*/
|
13319
|
-
|
13320
|
-
Binding.prototype.connect = function (obj) {
|
13321
|
-
true && !!!obj && emberDebug.assert('Must pass a valid object to Ember.Binding.connect()', !!obj);
|
13322
|
-
|
13323
|
-
var fromObj = void 0,
|
13324
|
-
fromPath = void 0,
|
13325
|
-
possibleGlobal = void 0,
|
13326
|
-
name;
|
13327
|
-
|
13328
|
-
// If the binding's "from" path could be interpreted as a global, verify
|
13329
|
-
// whether the path refers to a global or not by consulting `Ember.lookup`.
|
13330
|
-
if (isGlobalPath(this._from)) {
|
13331
|
-
name = getFirstKey(this._from);
|
13332
|
-
|
13333
|
-
possibleGlobal = emberEnvironment.context.lookup[name];
|
13334
|
-
|
13335
|
-
if (possibleGlobal) {
|
13336
|
-
fromObj = possibleGlobal;
|
13337
|
-
fromPath = getTailPath(this._from);
|
13338
|
-
}
|
13339
|
-
}
|
13340
|
-
|
13341
|
-
if (fromObj === undefined) {
|
13342
|
-
fromObj = obj;
|
13343
|
-
fromPath = this._from;
|
13344
|
-
}
|
13345
|
-
|
13346
|
-
trySet(obj, this._to, get(fromObj, fromPath));
|
13347
|
-
|
13348
|
-
// Add an observer on the object to be notified when the binding should be updated.
|
13349
|
-
addObserver(fromObj, fromPath, this, 'fromDidChange');
|
13350
|
-
|
13351
|
-
// If the binding is a two-way binding, also set up an observer on the target.
|
13352
|
-
if (!this._oneWay) {
|
13353
|
-
addObserver(obj, this._to, this, 'toDidChange');
|
13354
|
-
}
|
13355
|
-
|
13356
|
-
addListener(obj, 'willDestroy', this, 'disconnect');
|
13357
|
-
|
13358
|
-
fireDeprecations(obj, this._to, this._from, possibleGlobal, this._oneWay, !possibleGlobal && !this._oneWay);
|
13359
|
-
|
13360
|
-
this._readyToSync = true;
|
13361
|
-
this._fromObj = fromObj;
|
13362
|
-
this._fromPath = fromPath;
|
13363
|
-
this._toObj = obj;
|
13364
|
-
|
13365
|
-
return this;
|
13366
|
-
};
|
13367
|
-
|
13368
|
-
/**
|
13369
|
-
Disconnects the binding instance. Changes will no longer be relayed. You
|
13370
|
-
will not usually need to call this method.
|
13371
|
-
@method disconnect
|
13372
|
-
@return {Ember.Binding} `this`
|
13373
|
-
@public
|
13374
|
-
*/
|
13375
|
-
|
13376
|
-
Binding.prototype.disconnect = function () {
|
13377
|
-
true && !!!this._toObj && emberDebug.assert('Must pass a valid object to Ember.Binding.disconnect()', !!this._toObj);
|
13378
|
-
|
13379
|
-
// Remove an observer on the object so we're no longer notified of
|
13380
|
-
// changes that should update bindings.
|
13381
|
-
|
13382
|
-
removeObserver(this._fromObj, this._fromPath, this, 'fromDidChange');
|
13383
|
-
|
13384
|
-
// If the binding is two-way, remove the observer from the target as well.
|
13385
|
-
if (!this._oneWay) {
|
13386
|
-
removeObserver(this._toObj, this._to, this, 'toDidChange');
|
13387
|
-
}
|
13388
|
-
|
13389
|
-
this._readyToSync = false; // Disable scheduled syncs...
|
13390
|
-
return this;
|
13391
|
-
};
|
13392
|
-
|
13393
|
-
// ..........................................................
|
13394
|
-
// PRIVATE
|
13395
|
-
//
|
13396
|
-
|
13397
|
-
/* Called when the from side changes. */
|
13398
|
-
|
13399
|
-
Binding.prototype.fromDidChange = function () {
|
13400
|
-
// eslint-disable-line no-unused-vars
|
13401
|
-
this._scheduleSync('fwd');
|
13402
|
-
};
|
13403
|
-
|
13404
|
-
/* Called when the to side changes. */
|
13405
|
-
|
13406
|
-
Binding.prototype.toDidChange = function () {
|
13407
|
-
// eslint-disable-line no-unused-vars
|
13408
|
-
this._scheduleSync('back');
|
13409
|
-
};
|
13410
|
-
|
13411
|
-
Binding.prototype._scheduleSync = function (dir) {
|
13412
|
-
var existingDir = this._direction;
|
13413
|
-
|
13414
|
-
// If we haven't scheduled the binding yet, schedule it.
|
13415
|
-
if (existingDir === undefined) {
|
13416
|
-
run.schedule('sync', this, '_sync');
|
13417
|
-
this._direction = dir;
|
13418
|
-
}
|
13419
|
-
|
13420
|
-
// If both a 'back' and 'fwd' sync have been scheduled on the same object,
|
13421
|
-
// default to a 'fwd' sync so that it remains deterministic.
|
13422
|
-
if (existingDir === 'back' && dir === 'fwd') {
|
13423
|
-
this._direction = 'fwd';
|
13424
|
-
}
|
13425
|
-
};
|
13426
|
-
|
13427
|
-
Binding.prototype._sync = function () {
|
13428
|
-
var log = emberEnvironment.ENV.LOG_BINDINGS,
|
13429
|
-
fromValue,
|
13430
|
-
toValue;
|
13431
|
-
|
13432
|
-
var toObj = this._toObj;
|
13433
|
-
|
13434
|
-
// Don't synchronize destroyed objects or disconnected bindings.
|
13435
|
-
if (toObj.isDestroyed || !this._readyToSync) {
|
13436
|
-
return;
|
13437
|
-
}
|
13438
|
-
|
13439
|
-
// Get the direction of the binding for the object we are
|
13440
|
-
// synchronizing from.
|
13441
|
-
var direction = this._direction;
|
13442
|
-
|
13443
|
-
var fromObj = this._fromObj;
|
13444
|
-
var fromPath = this._fromPath;
|
13445
|
-
|
13446
|
-
this._direction = undefined;
|
13447
|
-
|
13448
|
-
// If we're synchronizing from the remote object...
|
13449
|
-
if (direction === 'fwd') {
|
13450
|
-
fromValue = get(fromObj, fromPath);
|
13451
|
-
|
13452
|
-
if (log) {
|
13453
|
-
Logger.log(' ', this.toString(), '->', fromValue, fromObj);
|
13454
|
-
}
|
13455
|
-
if (this._oneWay) {
|
13456
|
-
trySet(toObj, this._to, fromValue);
|
13457
|
-
} else {
|
13458
|
-
_suspendObserver(toObj, this._to, this, 'toDidChange', function () {
|
13459
|
-
trySet(toObj, this._to, fromValue);
|
13460
|
-
});
|
13461
|
-
}
|
13462
|
-
// If we're synchronizing *to* the remote object.
|
13463
|
-
} else if (direction === 'back') {
|
13464
|
-
toValue = get(toObj, this._to);
|
13465
|
-
|
13466
|
-
if (log) {
|
13467
|
-
Logger.log(' ', this.toString(), '<-', toValue, toObj);
|
13468
|
-
}
|
13469
|
-
_suspendObserver(fromObj, fromPath, this, 'fromDidChange', function () {
|
13470
|
-
trySet(fromObj, fromPath, toValue);
|
13471
|
-
});
|
13472
|
-
}
|
13473
|
-
};
|
13474
|
-
|
13475
|
-
return Binding;
|
13476
|
-
}();
|
13477
|
-
|
13478
|
-
function fireDeprecations(obj, toPath, fromPath, deprecateGlobal, deprecateOneWay, deprecateAlias) {
|
13479
|
-
|
13480
|
-
var objectInfo = 'The `' + toPath + '` property of `' + obj + '` is an `Ember.Binding` connected to `' + fromPath + '`, but ';
|
13481
|
-
true && !!deprecateGlobal && emberDebug.deprecate(objectInfo + ('`Ember.Binding` is deprecated. Since you' + ' are binding to a global consider using a service instead.'), !deprecateGlobal, {
|
13482
|
-
id: 'ember-metal.binding',
|
13483
|
-
until: '3.0.0',
|
13484
|
-
url: 'https://emberjs.com/deprecations/v2.x#toc_ember-binding'
|
13485
|
-
});
|
13486
|
-
true && !!deprecateOneWay && emberDebug.deprecate(objectInfo + ('`Ember.Binding` is deprecated. Since you' + ' are using a `oneWay` binding consider using a `readOnly` computed' + ' property instead.'), !deprecateOneWay, {
|
13487
|
-
id: 'ember-metal.binding',
|
13488
|
-
until: '3.0.0',
|
13489
|
-
url: 'https://emberjs.com/deprecations/v2.x#toc_ember-binding'
|
13490
|
-
});
|
13491
|
-
true && !!deprecateAlias && emberDebug.deprecate(objectInfo + ('`Ember.Binding` is deprecated. Consider' + ' using an `alias` computed property instead.'), !deprecateAlias, {
|
13492
|
-
id: 'ember-metal.binding',
|
13493
|
-
until: '3.0.0',
|
13494
|
-
url: 'https://emberjs.com/deprecations/v2.x#toc_ember-binding'
|
13495
|
-
});
|
13496
|
-
}
|
13497
|
-
|
13498
|
-
(function (to, from) {
|
13499
|
-
for (var key in from) {
|
13500
|
-
if (from.hasOwnProperty(key)) {
|
13501
|
-
to[key] = from[key];
|
13502
|
-
}
|
13503
|
-
}
|
13504
|
-
})(Binding, {
|
13505
|
-
|
13506
|
-
/*
|
13507
|
-
See `Ember.Binding.from`.
|
13508
|
-
@method from
|
13509
|
-
@static
|
13510
|
-
*/
|
13511
|
-
from: function (from) {
|
13512
|
-
var C = this;
|
13513
|
-
return new C(undefined, from);
|
13514
|
-
},
|
13515
|
-
|
13516
|
-
/*
|
13517
|
-
See `Ember.Binding.to`.
|
13518
|
-
@method to
|
13519
|
-
@static
|
13520
|
-
*/
|
13521
|
-
to: function (to) {
|
13522
|
-
var C = this;
|
13523
|
-
return new C(to, undefined);
|
13524
|
-
}
|
13525
|
-
});
|
13526
|
-
/**
|
13527
|
-
An `Ember.Binding` connects the properties of two objects so that whenever
|
13528
|
-
the value of one property changes, the other property will be changed also.
|
13529
|
-
|
13530
|
-
## Automatic Creation of Bindings with `/^*Binding/`-named Properties.
|
13531
|
-
|
13532
|
-
You do not usually create Binding objects directly but instead describe
|
13533
|
-
bindings in your class or object definition using automatic binding
|
13534
|
-
detection.
|
13535
|
-
|
13536
|
-
Properties ending in a `Binding` suffix will be converted to `Ember.Binding`
|
13537
|
-
instances. The value of this property should be a string representing a path
|
13538
|
-
to another object or a custom binding instance created using Binding helpers
|
13539
|
-
(see "One Way Bindings"):
|
13540
|
-
|
13541
|
-
```
|
13542
|
-
valueBinding: "MyApp.someController.title"
|
13543
|
-
```
|
13544
|
-
|
13545
|
-
This will create a binding from `MyApp.someController.title` to the `value`
|
13546
|
-
property of your object instance automatically. Now the two values will be
|
13547
|
-
kept in sync.
|
13548
|
-
|
13549
|
-
## One Way Bindings
|
13550
|
-
|
13551
|
-
One especially useful binding customization you can use is the `oneWay()`
|
13552
|
-
helper. This helper tells Ember that you are only interested in
|
13553
|
-
receiving changes on the object you are binding from. For example, if you
|
13554
|
-
are binding to a preference and you want to be notified if the preference
|
13555
|
-
has changed, but your object will not be changing the preference itself, you
|
13556
|
-
could do:
|
13557
|
-
|
13558
|
-
```
|
13559
|
-
bigTitlesBinding: Ember.Binding.oneWay("MyApp.preferencesController.bigTitles")
|
13560
|
-
```
|
13561
|
-
|
13562
|
-
This way if the value of `MyApp.preferencesController.bigTitles` changes the
|
13563
|
-
`bigTitles` property of your object will change also. However, if you
|
13564
|
-
change the value of your `bigTitles` property, it will not update the
|
13565
|
-
`preferencesController`.
|
13566
|
-
|
13567
|
-
One way bindings are almost twice as fast to setup and twice as fast to
|
13568
|
-
execute because the binding only has to worry about changes to one side.
|
13569
|
-
|
13570
|
-
You should consider using one way bindings anytime you have an object that
|
13571
|
-
may be created frequently and you do not intend to change a property; only
|
13572
|
-
to monitor it for changes (such as in the example above).
|
13573
|
-
|
13574
|
-
## Adding Bindings Manually
|
13575
|
-
|
13576
|
-
All of the examples above show you how to configure a custom binding, but the
|
13577
|
-
result of these customizations will be a binding template, not a fully active
|
13578
|
-
Binding instance. The binding will actually become active only when you
|
13579
|
-
instantiate the object the binding belongs to. It is useful, however, to
|
13580
|
-
understand what actually happens when the binding is activated.
|
13581
|
-
|
13582
|
-
For a binding to function it must have at least a `from` property and a `to`
|
13583
|
-
property. The `from` property path points to the object/key that you want to
|
13584
|
-
bind from while the `to` path points to the object/key you want to bind to.
|
13585
|
-
|
13586
|
-
When you define a custom binding, you are usually describing the property
|
13587
|
-
you want to bind from (such as `MyApp.someController.value` in the examples
|
13588
|
-
above). When your object is created, it will automatically assign the value
|
13589
|
-
you want to bind `to` based on the name of your binding key. In the
|
13590
|
-
examples above, during init, Ember objects will effectively call
|
13591
|
-
something like this on your binding:
|
13592
|
-
|
13593
|
-
```javascript
|
13594
|
-
binding = Ember.Binding.from("valueBinding").to("value");
|
13595
|
-
```
|
13596
|
-
|
13597
|
-
This creates a new binding instance based on the template you provide, and
|
13598
|
-
sets the to path to the `value` property of the new object. Now that the
|
13599
|
-
binding is fully configured with a `from` and a `to`, it simply needs to be
|
13600
|
-
connected to become active. This is done through the `connect()` method:
|
13601
|
-
|
13602
|
-
```javascript
|
13603
|
-
binding.connect(this);
|
13604
|
-
```
|
13605
|
-
|
13606
|
-
Note that when you connect a binding you pass the object you want it to be
|
13607
|
-
connected to. This object will be used as the root for both the from and
|
13608
|
-
to side of the binding when inspecting relative paths. This allows the
|
13609
|
-
binding to be automatically inherited by subclassed objects as well.
|
13610
|
-
|
13611
|
-
This also allows you to bind between objects using the paths you declare in
|
13612
|
-
`from` and `to`:
|
13613
|
-
|
13614
|
-
```javascript
|
13615
|
-
// Example 1
|
13616
|
-
binding = Ember.Binding.from("App.someObject.value").to("value");
|
13617
|
-
binding.connect(this);
|
13618
|
-
|
13619
|
-
// Example 2
|
13620
|
-
binding = Ember.Binding.from("parentView.value").to("App.someObject.value");
|
13621
|
-
binding.connect(this);
|
13622
|
-
```
|
13623
|
-
|
13624
|
-
Now that the binding is connected, it will observe both the from and to side
|
13625
|
-
and relay changes.
|
13626
|
-
|
13627
|
-
If you ever needed to do so (you almost never will, but it is useful to
|
13628
|
-
understand this anyway), you could manually create an active binding by
|
13629
|
-
using the `Ember.bind()` helper method. (This is the same method used by
|
13630
|
-
to setup your bindings on objects):
|
13631
|
-
|
13632
|
-
```javascript
|
13633
|
-
Ember.bind(MyApp.anotherObject, "value", "MyApp.someController.value");
|
13634
|
-
```
|
13635
|
-
|
13636
|
-
Both of these code fragments have the same effect as doing the most friendly
|
13637
|
-
form of binding creation like so:
|
13638
|
-
|
13639
|
-
```javascript
|
13640
|
-
MyApp.anotherObject = Ember.Object.create({
|
13641
|
-
valueBinding: "MyApp.someController.value",
|
13642
|
-
|
13643
|
-
// OTHER CODE FOR THIS OBJECT...
|
13644
|
-
});
|
13645
|
-
```
|
13646
|
-
|
13647
|
-
Ember's built in binding creation method makes it easy to automatically
|
13648
|
-
create bindings for you. You should always use the highest-level APIs
|
13649
|
-
available, even if you understand how it works underneath.
|
13650
|
-
|
13651
|
-
@class Binding
|
13652
|
-
@namespace Ember
|
13653
|
-
@since Ember 0.9
|
13654
|
-
@public
|
13655
|
-
*/
|
13656
|
-
// Ember.Binding = Binding; ES6TODO: where to put this?
|
13657
|
-
|
13658
|
-
|
13659
|
-
/**
|
13660
|
-
Global helper method to create a new binding. Just pass the root object
|
13661
|
-
along with a `to` and `from` path to create and connect the binding.
|
13662
|
-
|
13663
|
-
@method bind
|
13664
|
-
@for Ember
|
13665
|
-
@param {Object} obj The root object of the transform.
|
13666
|
-
@param {String} to The path to the 'to' side of the binding.
|
13667
|
-
Must be relative to obj.
|
13668
|
-
@param {String} from The path to the 'from' side of the binding.
|
13669
|
-
Must be relative to obj or a global path.
|
13670
|
-
@return {Ember.Binding} binding instance
|
13671
|
-
@public
|
13672
|
-
*/
|
13673
|
-
|
13674
|
-
|
13675
13222
|
/**
|
13676
13223
|
@module @ember/object
|
13677
13224
|
*/
|
@@ -13909,43 +13456,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
13909
13456
|
}
|
13910
13457
|
}
|
13911
13458
|
|
13912
|
-
function detectBinding(key) {
|
13913
|
-
var length = key.length;
|
13914
|
-
|
13915
|
-
return length > 7 && key.charCodeAt(length - 7) === 66 && key.indexOf('inding', length - 6) !== -1;
|
13916
|
-
}
|
13917
|
-
// warm both paths of above function
|
13918
|
-
detectBinding('notbound');
|
13919
|
-
detectBinding('fooBinding');
|
13920
|
-
|
13921
|
-
function connectBindings(obj, meta$$1) {
|
13922
|
-
// TODO Mixin.apply(instance) should disconnect binding if exists
|
13923
|
-
meta$$1.forEachBindings(function (key, binding) {
|
13924
|
-
var to;
|
13925
|
-
|
13926
|
-
if (binding) {
|
13927
|
-
to = key.slice(0, -7); // strip Binding off end
|
13928
|
-
|
13929
|
-
if (binding instanceof Binding) {
|
13930
|
-
binding = binding.copy(); // copy prototypes' instance
|
13931
|
-
binding.to(to);
|
13932
|
-
} else {
|
13933
|
-
// binding is string path
|
13934
|
-
binding = new Binding(to, binding);
|
13935
|
-
}
|
13936
|
-
binding.connect(obj);
|
13937
|
-
obj[key] = binding;
|
13938
|
-
}
|
13939
|
-
});
|
13940
|
-
// mark as applied
|
13941
|
-
meta$$1.clearBindings();
|
13942
|
-
}
|
13943
|
-
|
13944
|
-
function finishPartial(obj, meta$$1) {
|
13945
|
-
connectBindings(obj, meta$$1 === undefined ? meta(obj) : meta$$1);
|
13946
|
-
return obj;
|
13947
|
-
}
|
13948
|
-
|
13949
13459
|
function followAlias(obj, desc, descs, values) {
|
13950
13460
|
var altKey = desc.methodName;
|
13951
13461
|
var value = void 0;
|
@@ -14040,16 +13550,16 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
14040
13550
|
replaceObserversAndListeners(obj, key, obj[key], value);
|
14041
13551
|
}
|
14042
13552
|
|
14043
|
-
if (detectBinding(key)) {
|
13553
|
+
if (emberEnvironment.ENV._ENABLE_BINDING_SUPPORT && Mixin.detectBinding(key)) {
|
14044
13554
|
meta$$1.writeBindings(key, value);
|
14045
13555
|
}
|
14046
13556
|
|
14047
13557
|
defineProperty(obj, key, desc, value, meta$$1);
|
14048
13558
|
}
|
14049
13559
|
|
14050
|
-
if (!partial) {
|
13560
|
+
if (emberEnvironment.ENV._ENABLE_BINDING_SUPPORT && !partial) {
|
14051
13561
|
// don't apply to prototype
|
14052
|
-
finishPartial(obj, meta$$1);
|
13562
|
+
Mixin.finishPartial(obj, meta$$1);
|
14053
13563
|
}
|
14054
13564
|
|
14055
13565
|
return obj;
|
@@ -14333,7 +13843,12 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
14333
13843
|
}();
|
14334
13844
|
|
14335
13845
|
Mixin._apply = applyMixin;
|
14336
|
-
|
13846
|
+
if (emberEnvironment.ENV._ENABLE_BINDING_SUPPORT) {
|
13847
|
+
// slotting this so that the legacy addon can add the function here
|
13848
|
+
// without triggering an error due to the Object.seal done below
|
13849
|
+
Mixin.finishPartial = null;
|
13850
|
+
Mixin.detectBinding = null;
|
13851
|
+
}
|
14337
13852
|
|
14338
13853
|
var MixinPrototype = Mixin.prototype;
|
14339
13854
|
MixinPrototype.toString = Object.toString;
|
@@ -14719,7 +14234,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
14719
14234
|
return value;
|
14720
14235
|
};
|
14721
14236
|
exports.set = set;
|
14722
|
-
exports.trySet =
|
14237
|
+
exports.trySet = function (root, path, value) {
|
14238
|
+
return set(root, path, value, true);
|
14239
|
+
};
|
14723
14240
|
exports.addListener = addListener;
|
14724
14241
|
exports.hasListeners = function (obj, eventName) {
|
14725
14242
|
var meta$$1 = peekMeta(obj);
|
@@ -14840,7 +14357,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
14840
14357
|
return properties;
|
14841
14358
|
};
|
14842
14359
|
exports.expandProperties = expandProperties;
|
14843
|
-
exports._suspendObserver =
|
14360
|
+
exports._suspendObserver = function (obj, path, target, method, callback) {
|
14361
|
+
return suspendListener(obj, changeEvent(path), target, method, callback);
|
14362
|
+
};
|
14844
14363
|
exports._suspendObservers = function (obj, paths, target, method, callback) {
|
14845
14364
|
var events = paths.map(changeEvent);
|
14846
14365
|
return suspendListeners(obj, events, target, method, callback);
|
@@ -14935,12 +14454,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
14935
14454
|
exports.clearUnprocessedMixins = function () {
|
14936
14455
|
unprocessedFlag = false;
|
14937
14456
|
};
|
14938
|
-
exports.
|
14939
|
-
|
14940
|
-
exports.bind = function (obj, to, from) {
|
14941
|
-
return new Binding(to, from).connect(obj);
|
14457
|
+
exports.isGlobalPath = function (path) {
|
14458
|
+
return isGlobalPathCache.get(path);
|
14942
14459
|
};
|
14943
|
-
exports.isGlobalPath = isGlobalPath;
|
14944
14460
|
exports.InjectedProperty = InjectedProperty;
|
14945
14461
|
exports.setHasViews = function (fn) {
|
14946
14462
|
hasViews = fn;
|
@@ -16708,6 +16224,10 @@ enifed('ember-utils', ['exports'], function (exports) {
|
|
16708
16224
|
return obj !== null && obj !== undefined && typeof obj[methodName] === 'function';
|
16709
16225
|
}
|
16710
16226
|
|
16227
|
+
/**
|
16228
|
+
@module @ember/utils
|
16229
|
+
*/
|
16230
|
+
|
16711
16231
|
/**
|
16712
16232
|
Checks to see if the `methodName` exists on the `obj`,
|
16713
16233
|
and if it does, invokes it with the arguments passed.
|
@@ -16721,7 +16241,8 @@ enifed('ember-utils', ['exports'], function (exports) {
|
|
16721
16241
|
```
|
16722
16242
|
|
16723
16243
|
@method tryInvoke
|
16724
|
-
@for
|
16244
|
+
@for @ember/utils
|
16245
|
+
@static
|
16725
16246
|
@param {Object} obj The object to check for the method
|
16726
16247
|
@param {String} methodName The method name to check for
|
16727
16248
|
@param {Array} [args] The arguments to pass to the method
|
@@ -17003,7 +16524,7 @@ enifed('ember/features', ['exports', 'ember-environment', 'ember-utils'], functi
|
|
17003
16524
|
enifed("ember/version", ["exports"], function (exports) {
|
17004
16525
|
"use strict";
|
17005
16526
|
|
17006
|
-
exports.default = "3.0.0-beta.
|
16527
|
+
exports.default = "3.0.0-beta.2";
|
17007
16528
|
});
|
17008
16529
|
enifed("handlebars", ["exports"], function (exports) {
|
17009
16530
|
"use strict";
|