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
data/dist/ember.prod.js
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
* Portions Copyright 2008-2011 Apple Inc. All rights reserved.
|
7
7
|
* @license Licensed under MIT license
|
8
8
|
* See https://raw.github.com/emberjs/ember.js/master/LICENSE
|
9
|
-
* @version 3.0.0-beta.
|
9
|
+
* @version 3.0.0-beta.2
|
10
10
|
*/
|
11
11
|
|
12
12
|
/*globals process */
|
@@ -9494,15 +9494,6 @@ enifed('backburner', ['exports'], function (exports) {
|
|
9494
9494
|
this.globalOptions = globalOptions;
|
9495
9495
|
}
|
9496
9496
|
|
9497
|
-
Queue.prototype.push = function (target, method, args, stack) {
|
9498
|
-
this._queue.push(target, method, args, stack);
|
9499
|
-
return {
|
9500
|
-
queue: this,
|
9501
|
-
target: target,
|
9502
|
-
method: method
|
9503
|
-
};
|
9504
|
-
};
|
9505
|
-
|
9506
9497
|
Queue.prototype.flush = function (sync) {
|
9507
9498
|
var _options = this.options,
|
9508
9499
|
before = _options.before,
|
@@ -9579,16 +9570,10 @@ enifed('backburner', ['exports'], function (exports) {
|
|
9579
9570
|
|
9580
9571
|
var queue = this._queue;
|
9581
9572
|
var targetQueueMap = this.targetQueues.get(target);
|
9582
|
-
var index = void 0;
|
9583
9573
|
if (targetQueueMap !== undefined) {
|
9584
|
-
|
9585
|
-
if (index !== undefined) {
|
9586
|
-
targetQueueMap.delete(method);
|
9587
|
-
}
|
9588
|
-
}
|
9589
|
-
if (index === undefined) {
|
9590
|
-
index = findItem(target, method, queue);
|
9574
|
+
targetQueueMap.delete(method);
|
9591
9575
|
}
|
9576
|
+
var index = findItem(target, method, queue);
|
9592
9577
|
if (index > -1) {
|
9593
9578
|
queue.splice(index, 4);
|
9594
9579
|
return true;
|
@@ -9604,6 +9589,15 @@ enifed('backburner', ['exports'], function (exports) {
|
|
9604
9589
|
return false;
|
9605
9590
|
};
|
9606
9591
|
|
9592
|
+
Queue.prototype.push = function (target, method, args, stack) {
|
9593
|
+
this._queue.push(target, method, args, stack);
|
9594
|
+
return {
|
9595
|
+
queue: this,
|
9596
|
+
target: target,
|
9597
|
+
method: method
|
9598
|
+
};
|
9599
|
+
};
|
9600
|
+
|
9607
9601
|
Queue.prototype.pushUnique = function (target, method, args, stack) {
|
9608
9602
|
var localQueueMap = this.targetQueues.get(target),
|
9609
9603
|
queueIndex,
|
@@ -9681,10 +9675,10 @@ enifed('backburner', ['exports'], function (exports) {
|
|
9681
9675
|
DeferredActionQueues.prototype.schedule = function (queueName, target, method, args, onceFlag, stack) {
|
9682
9676
|
var queues = this.queues;
|
9683
9677
|
var queue = queues[queueName];
|
9684
|
-
if (
|
9678
|
+
if (queue === undefined) {
|
9685
9679
|
noSuchQueue(queueName);
|
9686
9680
|
}
|
9687
|
-
if (
|
9681
|
+
if (method === undefined || method === null) {
|
9688
9682
|
noSuchMethod(queueName);
|
9689
9683
|
}
|
9690
9684
|
if (onceFlag) {
|
@@ -10033,28 +10027,45 @@ enifed('backburner', ['exports'], function (exports) {
|
|
10033
10027
|
return this._setTimeout(fn, executeAt);
|
10034
10028
|
};
|
10035
10029
|
|
10036
|
-
Backburner.prototype.throttle = function (
|
10030
|
+
Backburner.prototype.throttle = function (targetOrThisArgOrMethod) {
|
10037
10031
|
var _this2 = this,
|
10038
10032
|
_len4,
|
10039
10033
|
args,
|
10040
10034
|
_key4;
|
10041
10035
|
|
10042
|
-
|
10043
|
-
|
10044
|
-
|
10045
|
-
|
10046
|
-
var immediate = args.pop();
|
10036
|
+
var target = void 0;
|
10037
|
+
var method = void 0;
|
10038
|
+
var immediate = void 0;
|
10047
10039
|
var isImmediate = void 0;
|
10048
10040
|
var wait = void 0;
|
10049
|
-
|
10050
|
-
|
10041
|
+
|
10042
|
+
for (_len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
|
10043
|
+
args[_key4 - 1] = arguments[_key4];
|
10044
|
+
}
|
10045
|
+
|
10046
|
+
if (args.length === 1) {
|
10047
|
+
method = targetOrThisArgOrMethod;
|
10048
|
+
wait = args.pop();
|
10049
|
+
target = null;
|
10051
10050
|
isImmediate = true;
|
10052
10051
|
} else {
|
10053
|
-
|
10054
|
-
|
10055
|
-
|
10056
|
-
|
10057
|
-
|
10052
|
+
target = targetOrThisArgOrMethod;
|
10053
|
+
method = args.shift();
|
10054
|
+
immediate = args.pop();
|
10055
|
+
if (isString(method)) {
|
10056
|
+
method = target[method];
|
10057
|
+
} else if (!isFunction(method)) {
|
10058
|
+
args.unshift(method);
|
10059
|
+
method = target;
|
10060
|
+
target = null;
|
10061
|
+
}
|
10062
|
+
if (isCoercableNumber(immediate)) {
|
10063
|
+
wait = immediate;
|
10064
|
+
isImmediate = true;
|
10065
|
+
} else {
|
10066
|
+
wait = args.pop();
|
10067
|
+
isImmediate = immediate === true;
|
10068
|
+
}
|
10058
10069
|
}
|
10059
10070
|
var index = findItem(target, method, this._throttlers);
|
10060
10071
|
if (index > -1) {
|
@@ -10081,29 +10092,46 @@ enifed('backburner', ['exports'], function (exports) {
|
|
10081
10092
|
return timer;
|
10082
10093
|
};
|
10083
10094
|
|
10084
|
-
Backburner.prototype.debounce = function (
|
10095
|
+
Backburner.prototype.debounce = function (targetOrThisArgOrMethod) {
|
10085
10096
|
var _this3 = this,
|
10086
10097
|
_len5,
|
10087
10098
|
args,
|
10088
10099
|
_key5,
|
10089
10100
|
timerId;
|
10090
10101
|
|
10091
|
-
|
10092
|
-
|
10093
|
-
|
10094
|
-
|
10095
|
-
var immediate = args.pop();
|
10102
|
+
var target = void 0;
|
10103
|
+
var method = void 0;
|
10104
|
+
var immediate = void 0;
|
10096
10105
|
var isImmediate = void 0;
|
10097
10106
|
var wait = void 0;
|
10098
|
-
|
10099
|
-
|
10107
|
+
|
10108
|
+
for (_len5 = arguments.length, args = Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {
|
10109
|
+
args[_key5 - 1] = arguments[_key5];
|
10110
|
+
}
|
10111
|
+
|
10112
|
+
if (args.length === 1) {
|
10113
|
+
method = targetOrThisArgOrMethod;
|
10114
|
+
wait = args.pop();
|
10115
|
+
target = null;
|
10100
10116
|
isImmediate = false;
|
10101
10117
|
} else {
|
10102
|
-
|
10103
|
-
|
10104
|
-
|
10105
|
-
|
10106
|
-
|
10118
|
+
target = targetOrThisArgOrMethod;
|
10119
|
+
method = args.shift();
|
10120
|
+
immediate = args.pop();
|
10121
|
+
if (isString(method)) {
|
10122
|
+
method = target[method];
|
10123
|
+
} else if (!isFunction(method)) {
|
10124
|
+
args.unshift(method);
|
10125
|
+
method = target;
|
10126
|
+
target = null;
|
10127
|
+
}
|
10128
|
+
if (isCoercableNumber(immediate)) {
|
10129
|
+
wait = immediate;
|
10130
|
+
isImmediate = false;
|
10131
|
+
} else {
|
10132
|
+
wait = args.pop();
|
10133
|
+
isImmediate = immediate === true;
|
10134
|
+
}
|
10107
10135
|
}
|
10108
10136
|
wait = parseInt(wait, 10);
|
10109
10137
|
// Remove debouncee
|
@@ -11452,7 +11480,7 @@ enifed('ember-application/initializers/dom-templates', ['require', 'ember-glimme
|
|
11452
11480
|
}
|
11453
11481
|
});
|
11454
11482
|
});
|
11455
|
-
enifed('ember-application/system/application-instance', ['exports', 'ember-utils', 'ember-metal', 'ember-
|
11483
|
+
enifed('ember-application/system/application-instance', ['exports', 'ember-utils', 'ember-metal', 'ember-environment', 'ember-views', 'ember-application/system/engine-instance', 'ember-glimmer'], function (exports, _emberUtils, _emberMetal, _emberEnvironment, _emberViews, _engineInstance, _emberGlimmer) {
|
11456
11484
|
'use strict';
|
11457
11485
|
|
11458
11486
|
/**
|
@@ -11615,13 +11643,9 @@ enifed('ember-application/system/application-instance', ['exports', 'ember-utils
|
|
11615
11643
|
// No rendering is needed, and routing has completed, simply return.
|
11616
11644
|
return _this;
|
11617
11645
|
} else {
|
11618
|
-
|
11619
|
-
|
11620
|
-
|
11621
|
-
// a scheduled revalidation (into the `render` queue) in the Renderer.
|
11622
|
-
//
|
11623
|
-
// This uses `run.schedule('afterRender', ....)` to resolve after that rendering has completed.
|
11624
|
-
_emberMetal.run.schedule('afterRender', null, resolve, _this);
|
11646
|
+
// Ensure that the visit promise resolves when all rendering has completed
|
11647
|
+
return (0, _emberGlimmer.renderSettled)().then(function () {
|
11648
|
+
return _this;
|
11625
11649
|
});
|
11626
11650
|
}
|
11627
11651
|
};
|
@@ -13363,9 +13387,16 @@ enifed("ember-console", ["exports"], function (exports) {
|
|
13363
13387
|
return (_console4 = console).info.apply(_console4, arguments);
|
13364
13388
|
},
|
13365
13389
|
debug: function () {
|
13366
|
-
var
|
13390
|
+
var _console6, _console5;
|
13391
|
+
|
13392
|
+
/* eslint-disable no-console */
|
13393
|
+
if (console.debug) {
|
13394
|
+
|
13395
|
+
return (_console5 = console).debug.apply(_console5, arguments);
|
13396
|
+
}
|
13367
13397
|
|
13368
|
-
return
|
13398
|
+
return (_console6 = console).info.apply(_console6, arguments);
|
13399
|
+
/* eslint-enable no-console */
|
13369
13400
|
},
|
13370
13401
|
assert: function () {
|
13371
13402
|
var _console7;
|
@@ -18351,6 +18382,12 @@ enifed('ember-glimmer/index', ['exports', 'ember-glimmer/helpers/action', 'ember
|
|
18351
18382
|
return _renderer._resetRenderers;
|
18352
18383
|
}
|
18353
18384
|
});
|
18385
|
+
Object.defineProperty(exports, 'renderSettled', {
|
18386
|
+
enumerable: true,
|
18387
|
+
get: function () {
|
18388
|
+
return _renderer.renderSettled;
|
18389
|
+
}
|
18390
|
+
});
|
18354
18391
|
Object.defineProperty(exports, 'getTemplate', {
|
18355
18392
|
enumerable: true,
|
18356
18393
|
get: function () {
|
@@ -18687,13 +18724,35 @@ enifed('ember-glimmer/protocol-for-url', ['exports', 'ember-environment', 'node-
|
|
18687
18724
|
return protocol === null ? ':' : protocol;
|
18688
18725
|
}
|
18689
18726
|
});
|
18690
|
-
enifed('ember-glimmer/renderer', ['exports', 'ember-babel', '@glimmer/reference', 'ember-debug', 'ember-metal', 'ember-views', 'ember-glimmer/component', 'ember-glimmer/component-managers/outlet', 'ember-glimmer/component-managers/root', 'ember-glimmer/utils/references', '@glimmer/runtime'], function (exports, _emberBabel, _reference, _emberDebug, _emberMetal, _emberViews, _component, _outlet, _root2, _references, _runtime) {
|
18727
|
+
enifed('ember-glimmer/renderer', ['exports', 'ember-babel', '@glimmer/reference', 'ember-debug', 'ember-metal', 'ember-views', 'ember-glimmer/component', 'ember-glimmer/component-managers/outlet', 'ember-glimmer/component-managers/root', 'ember-glimmer/utils/references', '@glimmer/runtime', 'rsvp'], function (exports, _emberBabel, _reference, _emberDebug, _emberMetal, _emberViews, _component, _outlet, _root2, _references, _runtime, _rsvp) {
|
18691
18728
|
'use strict';
|
18692
18729
|
|
18693
18730
|
exports.InteractiveRenderer = exports.InertRenderer = exports.Renderer = exports.DynamicScope = undefined;
|
18694
18731
|
exports._resetRenderers = function () {
|
18695
18732
|
renderers.length = 0;
|
18696
18733
|
};
|
18734
|
+
exports.renderSettled =
|
18735
|
+
/*
|
18736
|
+
Returns a promise which will resolve when rendering has settled. Settled in
|
18737
|
+
this context is defined as when all of the tags in use are "current" (e.g.
|
18738
|
+
`renderers.every(r => r._isValid())`). When this is checked at the _end_ of
|
18739
|
+
the run loop, this essentially guarantees that all rendering is completed.
|
18740
|
+
|
18741
|
+
@method renderSettled
|
18742
|
+
@returns {Promise<void>} a promise which fulfills when rendering has settled
|
18743
|
+
*/
|
18744
|
+
function () {
|
18745
|
+
if (renderSettledDeferred === null) {
|
18746
|
+
renderSettledDeferred = _rsvp.default.defer();
|
18747
|
+
// if there is no current runloop, the promise created above will not have
|
18748
|
+
// a chance to resolve (because its resolved in backburner's "end" event)
|
18749
|
+
if (!_emberMetal.run.currentRunLoop) {
|
18750
|
+
// ensure a runloop has been kicked off
|
18751
|
+
backburner.schedule('actions', null, K);
|
18752
|
+
}
|
18753
|
+
}
|
18754
|
+
return renderSettledDeferred.promise;
|
18755
|
+
};
|
18697
18756
|
var backburner = _emberMetal.run.backburner;
|
18698
18757
|
|
18699
18758
|
var DynamicScope = exports.DynamicScope = function () {
|
@@ -18811,6 +18870,17 @@ enifed('ember-glimmer/renderer', ['exports', 'ember-babel', '@glimmer/reference'
|
|
18811
18870
|
}
|
18812
18871
|
|
18813
18872
|
function K() {}
|
18873
|
+
var renderSettledDeferred = null;
|
18874
|
+
function resolveRenderPromise() {
|
18875
|
+
var resolve;
|
18876
|
+
|
18877
|
+
if (renderSettledDeferred !== null) {
|
18878
|
+
resolve = renderSettledDeferred.resolve;
|
18879
|
+
|
18880
|
+
renderSettledDeferred = null;
|
18881
|
+
backburner.join(null, resolve);
|
18882
|
+
}
|
18883
|
+
}
|
18814
18884
|
var loops = 0;
|
18815
18885
|
|
18816
18886
|
backburner.on('begin', function () {
|
@@ -18836,6 +18906,7 @@ enifed('ember-glimmer/renderer', ['exports', 'ember-babel', '@glimmer/reference'
|
|
18836
18906
|
}
|
18837
18907
|
}
|
18838
18908
|
loops = 0;
|
18909
|
+
resolveRenderPromise();
|
18839
18910
|
});
|
18840
18911
|
|
18841
18912
|
var Renderer = exports.Renderer = function () {
|
@@ -21210,12 +21281,11 @@ enifed('ember-glimmer/views/outlet', ['exports', 'ember-babel', '@glimmer/refere
|
|
21210
21281
|
|
21211
21282
|
exports.default = OutletView;
|
21212
21283
|
});
|
21213
|
-
enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-debug', 'ember-babel', '@glimmer/reference', 'require', 'backburner'
|
21284
|
+
enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-debug', 'ember-babel', '@glimmer/reference', 'require', 'backburner'], function (exports, emberEnvironment, emberUtils, emberDebug, emberBabel, reference, require, Backburner) {
|
21214
21285
|
'use strict';
|
21215
21286
|
|
21216
21287
|
require = require && require.hasOwnProperty('default') ? require['default'] : require;
|
21217
21288
|
Backburner = Backburner && Backburner.hasOwnProperty('default') ? Backburner['default'] : Backburner;
|
21218
|
-
Logger = Logger && Logger.hasOwnProperty('default') ? Logger['default'] : Logger;
|
21219
21289
|
|
21220
21290
|
/**
|
21221
21291
|
@module ember
|
@@ -21963,9 +22033,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
21963
22033
|
//
|
21964
22034
|
// This should only be used by the target of the observer
|
21965
22035
|
// while it is setting the observed path.
|
21966
|
-
|
21967
|
-
return suspendListener(obj, changeEvent(path), target, method, callback);
|
21968
|
-
}
|
22036
|
+
|
21969
22037
|
|
21970
22038
|
/**
|
21971
22039
|
@method removeBeforeObserver
|
@@ -22894,7 +22962,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
22894
22962
|
|
22895
22963
|
this._watching = undefined;
|
22896
22964
|
this._mixins = undefined;
|
22897
|
-
|
22965
|
+
if (emberEnvironment.ENV._ENABLE_BINDING_SUPPORT) {
|
22966
|
+
this._bindings = undefined;
|
22967
|
+
}
|
22898
22968
|
this._values = undefined;
|
22899
22969
|
this._deps = undefined;
|
22900
22970
|
this._chainWatchers = undefined;
|
@@ -23485,32 +23555,20 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
23485
23555
|
return key.indexOf('.');
|
23486
23556
|
});
|
23487
23557
|
|
23488
|
-
|
23558
|
+
new Cache(1000, function (path) {
|
23489
23559
|
var index = firstDotIndexCache.get(path);
|
23490
23560
|
return index === -1 ? path : path.slice(0, index);
|
23491
23561
|
});
|
23492
|
-
|
23493
|
-
var tailPathCache = new Cache(1000, function (path) {
|
23562
|
+
new Cache(1000, function (path) {
|
23494
23563
|
var index = firstDotIndexCache.get(path);
|
23495
23564
|
return index === -1 ? undefined : path.slice(index + 1);
|
23496
23565
|
});
|
23497
23566
|
|
23498
|
-
function isGlobalPath(path) {
|
23499
|
-
return isGlobalPathCache.get(path);
|
23500
|
-
}
|
23501
23567
|
|
23502
23568
|
function isPath(path) {
|
23503
23569
|
return firstDotIndexCache.get(path) !== -1;
|
23504
23570
|
}
|
23505
23571
|
|
23506
|
-
function getFirstKey(path) {
|
23507
|
-
return firstKeyCache.get(path);
|
23508
|
-
}
|
23509
|
-
|
23510
|
-
function getTailPath(path) {
|
23511
|
-
return tailPathCache.get(path);
|
23512
|
-
}
|
23513
|
-
|
23514
23572
|
/**
|
23515
23573
|
@module @ember/object
|
23516
23574
|
*/
|
@@ -23716,9 +23774,7 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
23716
23774
|
@param {Object} value The value to set
|
23717
23775
|
@public
|
23718
23776
|
*/
|
23719
|
-
|
23720
|
-
return set(root, path, value, true);
|
23721
|
-
}
|
23777
|
+
|
23722
23778
|
|
23723
23779
|
/**
|
23724
23780
|
@module @ember/object
|
@@ -26240,462 +26296,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
26240
26296
|
*/
|
26241
26297
|
|
26242
26298
|
|
26243
|
-
/**
|
26244
|
-
@module ember
|
26245
|
-
*/
|
26246
|
-
|
26247
|
-
// ..........................................................
|
26248
|
-
// BINDING
|
26249
|
-
//
|
26250
|
-
|
26251
|
-
var Binding = function () {
|
26252
|
-
function Binding(toPath, fromPath) {
|
26253
|
-
|
26254
|
-
// Configuration
|
26255
|
-
this._from = fromPath;
|
26256
|
-
this._to = toPath;
|
26257
|
-
this._oneWay = undefined;
|
26258
|
-
|
26259
|
-
// State
|
26260
|
-
this._direction = undefined;
|
26261
|
-
this._readyToSync = undefined;
|
26262
|
-
this._fromObj = undefined;
|
26263
|
-
this._fromPath = undefined;
|
26264
|
-
this._toObj = undefined;
|
26265
|
-
}
|
26266
|
-
|
26267
|
-
/**
|
26268
|
-
@class Binding
|
26269
|
-
@namespace Ember
|
26270
|
-
@deprecated See https://emberjs.com/deprecations/v2.x#toc_ember-binding
|
26271
|
-
@public
|
26272
|
-
*/
|
26273
|
-
|
26274
|
-
/**
|
26275
|
-
This copies the Binding so it can be connected to another object.
|
26276
|
-
@method copy
|
26277
|
-
@return {Ember.Binding} `this`
|
26278
|
-
@public
|
26279
|
-
*/
|
26280
|
-
|
26281
|
-
Binding.prototype.copy = function () {
|
26282
|
-
var copy = new Binding(this._to, this._from);
|
26283
|
-
if (this._oneWay) {
|
26284
|
-
copy._oneWay = true;
|
26285
|
-
}
|
26286
|
-
return copy;
|
26287
|
-
};
|
26288
|
-
|
26289
|
-
// ..........................................................
|
26290
|
-
// CONFIG
|
26291
|
-
//
|
26292
|
-
|
26293
|
-
/**
|
26294
|
-
This will set `from` property path to the specified value. It will not
|
26295
|
-
attempt to resolve this property path to an actual object until you
|
26296
|
-
connect the binding.
|
26297
|
-
The binding will search for the property path starting at the root object
|
26298
|
-
you pass when you `connect()` the binding. It follows the same rules as
|
26299
|
-
`get()` - see that method for more information.
|
26300
|
-
@method from
|
26301
|
-
@param {String} path The property path to connect to.
|
26302
|
-
@return {Ember.Binding} `this`
|
26303
|
-
@public
|
26304
|
-
*/
|
26305
|
-
|
26306
|
-
Binding.prototype.from = function (path) {
|
26307
|
-
this._from = path;
|
26308
|
-
return this;
|
26309
|
-
};
|
26310
|
-
|
26311
|
-
/**
|
26312
|
-
This will set the `to` property path to the specified value. It will not
|
26313
|
-
attempt to resolve this property path to an actual object until you
|
26314
|
-
connect the binding.
|
26315
|
-
The binding will search for the property path starting at the root object
|
26316
|
-
you pass when you `connect()` the binding. It follows the same rules as
|
26317
|
-
`get()` - see that method for more information.
|
26318
|
-
@method to
|
26319
|
-
@param {String|Tuple} path A property path or tuple.
|
26320
|
-
@return {Ember.Binding} `this`
|
26321
|
-
@public
|
26322
|
-
*/
|
26323
|
-
|
26324
|
-
Binding.prototype.to = function (path) {
|
26325
|
-
this._to = path;
|
26326
|
-
return this;
|
26327
|
-
};
|
26328
|
-
|
26329
|
-
/**
|
26330
|
-
Configures the binding as one way. A one-way binding will relay changes
|
26331
|
-
on the `from` side to the `to` side, but not the other way around. This
|
26332
|
-
means that if you change the `to` side directly, the `from` side may have
|
26333
|
-
a different value.
|
26334
|
-
@method oneWay
|
26335
|
-
@return {Ember.Binding} `this`
|
26336
|
-
@public
|
26337
|
-
*/
|
26338
|
-
|
26339
|
-
Binding.prototype.oneWay = function () {
|
26340
|
-
this._oneWay = true;
|
26341
|
-
return this;
|
26342
|
-
};
|
26343
|
-
|
26344
|
-
/**
|
26345
|
-
@method toString
|
26346
|
-
@return {String} string representation of binding
|
26347
|
-
@public
|
26348
|
-
*/
|
26349
|
-
|
26350
|
-
Binding.prototype.toString = function () {
|
26351
|
-
var oneWay = this._oneWay ? '[oneWay]' : '';
|
26352
|
-
return 'Ember.Binding<' + emberUtils.guidFor(this) + '>(' + this._from + ' -> ' + this._to + ')' + oneWay;
|
26353
|
-
};
|
26354
|
-
|
26355
|
-
// ..........................................................
|
26356
|
-
// CONNECT AND SYNC
|
26357
|
-
//
|
26358
|
-
|
26359
|
-
/**
|
26360
|
-
Attempts to connect this binding instance so that it can receive and relay
|
26361
|
-
changes. This method will raise an exception if you have not set the
|
26362
|
-
from/to properties yet.
|
26363
|
-
@method connect
|
26364
|
-
@param {Object} obj The root object for this binding.
|
26365
|
-
@return {Ember.Binding} `this`
|
26366
|
-
@public
|
26367
|
-
*/
|
26368
|
-
|
26369
|
-
Binding.prototype.connect = function (obj) {
|
26370
|
-
var fromObj = void 0,
|
26371
|
-
fromPath = void 0,
|
26372
|
-
possibleGlobal = void 0,
|
26373
|
-
name;
|
26374
|
-
|
26375
|
-
// If the binding's "from" path could be interpreted as a global, verify
|
26376
|
-
// whether the path refers to a global or not by consulting `Ember.lookup`.
|
26377
|
-
if (isGlobalPath(this._from)) {
|
26378
|
-
name = getFirstKey(this._from);
|
26379
|
-
|
26380
|
-
possibleGlobal = emberEnvironment.context.lookup[name];
|
26381
|
-
|
26382
|
-
if (possibleGlobal) {
|
26383
|
-
fromObj = possibleGlobal;
|
26384
|
-
fromPath = getTailPath(this._from);
|
26385
|
-
}
|
26386
|
-
}
|
26387
|
-
|
26388
|
-
if (fromObj === undefined) {
|
26389
|
-
fromObj = obj;
|
26390
|
-
fromPath = this._from;
|
26391
|
-
}
|
26392
|
-
|
26393
|
-
trySet(obj, this._to, get(fromObj, fromPath));
|
26394
|
-
|
26395
|
-
// Add an observer on the object to be notified when the binding should be updated.
|
26396
|
-
addObserver(fromObj, fromPath, this, 'fromDidChange');
|
26397
|
-
|
26398
|
-
// If the binding is a two-way binding, also set up an observer on the target.
|
26399
|
-
if (!this._oneWay) {
|
26400
|
-
addObserver(obj, this._to, this, 'toDidChange');
|
26401
|
-
}
|
26402
|
-
|
26403
|
-
addListener(obj, 'willDestroy', this, 'disconnect');
|
26404
|
-
|
26405
|
-
fireDeprecations(obj, this._to, this._from, possibleGlobal, this._oneWay, !possibleGlobal && !this._oneWay);
|
26406
|
-
|
26407
|
-
this._readyToSync = true;
|
26408
|
-
this._fromObj = fromObj;
|
26409
|
-
this._fromPath = fromPath;
|
26410
|
-
this._toObj = obj;
|
26411
|
-
|
26412
|
-
return this;
|
26413
|
-
};
|
26414
|
-
|
26415
|
-
/**
|
26416
|
-
Disconnects the binding instance. Changes will no longer be relayed. You
|
26417
|
-
will not usually need to call this method.
|
26418
|
-
@method disconnect
|
26419
|
-
@return {Ember.Binding} `this`
|
26420
|
-
@public
|
26421
|
-
*/
|
26422
|
-
|
26423
|
-
Binding.prototype.disconnect = function () {
|
26424
|
-
removeObserver(this._fromObj, this._fromPath, this, 'fromDidChange');
|
26425
|
-
|
26426
|
-
// If the binding is two-way, remove the observer from the target as well.
|
26427
|
-
if (!this._oneWay) {
|
26428
|
-
removeObserver(this._toObj, this._to, this, 'toDidChange');
|
26429
|
-
}
|
26430
|
-
|
26431
|
-
this._readyToSync = false; // Disable scheduled syncs...
|
26432
|
-
return this;
|
26433
|
-
};
|
26434
|
-
|
26435
|
-
// ..........................................................
|
26436
|
-
// PRIVATE
|
26437
|
-
//
|
26438
|
-
|
26439
|
-
/* Called when the from side changes. */
|
26440
|
-
|
26441
|
-
Binding.prototype.fromDidChange = function () {
|
26442
|
-
// eslint-disable-line no-unused-vars
|
26443
|
-
this._scheduleSync('fwd');
|
26444
|
-
};
|
26445
|
-
|
26446
|
-
/* Called when the to side changes. */
|
26447
|
-
|
26448
|
-
Binding.prototype.toDidChange = function () {
|
26449
|
-
// eslint-disable-line no-unused-vars
|
26450
|
-
this._scheduleSync('back');
|
26451
|
-
};
|
26452
|
-
|
26453
|
-
Binding.prototype._scheduleSync = function (dir) {
|
26454
|
-
var existingDir = this._direction;
|
26455
|
-
|
26456
|
-
// If we haven't scheduled the binding yet, schedule it.
|
26457
|
-
if (existingDir === undefined) {
|
26458
|
-
run.schedule('sync', this, '_sync');
|
26459
|
-
this._direction = dir;
|
26460
|
-
}
|
26461
|
-
|
26462
|
-
// If both a 'back' and 'fwd' sync have been scheduled on the same object,
|
26463
|
-
// default to a 'fwd' sync so that it remains deterministic.
|
26464
|
-
if (existingDir === 'back' && dir === 'fwd') {
|
26465
|
-
this._direction = 'fwd';
|
26466
|
-
}
|
26467
|
-
};
|
26468
|
-
|
26469
|
-
Binding.prototype._sync = function () {
|
26470
|
-
var log = emberEnvironment.ENV.LOG_BINDINGS,
|
26471
|
-
fromValue,
|
26472
|
-
toValue;
|
26473
|
-
|
26474
|
-
var toObj = this._toObj;
|
26475
|
-
|
26476
|
-
// Don't synchronize destroyed objects or disconnected bindings.
|
26477
|
-
if (toObj.isDestroyed || !this._readyToSync) {
|
26478
|
-
return;
|
26479
|
-
}
|
26480
|
-
|
26481
|
-
// Get the direction of the binding for the object we are
|
26482
|
-
// synchronizing from.
|
26483
|
-
var direction = this._direction;
|
26484
|
-
|
26485
|
-
var fromObj = this._fromObj;
|
26486
|
-
var fromPath = this._fromPath;
|
26487
|
-
|
26488
|
-
this._direction = undefined;
|
26489
|
-
|
26490
|
-
// If we're synchronizing from the remote object...
|
26491
|
-
if (direction === 'fwd') {
|
26492
|
-
fromValue = get(fromObj, fromPath);
|
26493
|
-
|
26494
|
-
if (log) {
|
26495
|
-
Logger.log(' ', this.toString(), '->', fromValue, fromObj);
|
26496
|
-
}
|
26497
|
-
if (this._oneWay) {
|
26498
|
-
trySet(toObj, this._to, fromValue);
|
26499
|
-
} else {
|
26500
|
-
_suspendObserver(toObj, this._to, this, 'toDidChange', function () {
|
26501
|
-
trySet(toObj, this._to, fromValue);
|
26502
|
-
});
|
26503
|
-
}
|
26504
|
-
// If we're synchronizing *to* the remote object.
|
26505
|
-
} else if (direction === 'back') {
|
26506
|
-
toValue = get(toObj, this._to);
|
26507
|
-
|
26508
|
-
if (log) {
|
26509
|
-
Logger.log(' ', this.toString(), '<-', toValue, toObj);
|
26510
|
-
}
|
26511
|
-
_suspendObserver(fromObj, fromPath, this, 'fromDidChange', function () {
|
26512
|
-
trySet(fromObj, fromPath, toValue);
|
26513
|
-
});
|
26514
|
-
}
|
26515
|
-
};
|
26516
|
-
|
26517
|
-
return Binding;
|
26518
|
-
}();
|
26519
|
-
|
26520
|
-
function fireDeprecations() {}
|
26521
|
-
|
26522
|
-
(function (to, from) {
|
26523
|
-
for (var key in from) {
|
26524
|
-
if (from.hasOwnProperty(key)) {
|
26525
|
-
to[key] = from[key];
|
26526
|
-
}
|
26527
|
-
}
|
26528
|
-
})(Binding, {
|
26529
|
-
|
26530
|
-
/*
|
26531
|
-
See `Ember.Binding.from`.
|
26532
|
-
@method from
|
26533
|
-
@static
|
26534
|
-
*/
|
26535
|
-
from: function (from) {
|
26536
|
-
var C = this;
|
26537
|
-
return new C(undefined, from);
|
26538
|
-
},
|
26539
|
-
|
26540
|
-
/*
|
26541
|
-
See `Ember.Binding.to`.
|
26542
|
-
@method to
|
26543
|
-
@static
|
26544
|
-
*/
|
26545
|
-
to: function (to) {
|
26546
|
-
var C = this;
|
26547
|
-
return new C(to, undefined);
|
26548
|
-
}
|
26549
|
-
});
|
26550
|
-
/**
|
26551
|
-
An `Ember.Binding` connects the properties of two objects so that whenever
|
26552
|
-
the value of one property changes, the other property will be changed also.
|
26553
|
-
|
26554
|
-
## Automatic Creation of Bindings with `/^*Binding/`-named Properties.
|
26555
|
-
|
26556
|
-
You do not usually create Binding objects directly but instead describe
|
26557
|
-
bindings in your class or object definition using automatic binding
|
26558
|
-
detection.
|
26559
|
-
|
26560
|
-
Properties ending in a `Binding` suffix will be converted to `Ember.Binding`
|
26561
|
-
instances. The value of this property should be a string representing a path
|
26562
|
-
to another object or a custom binding instance created using Binding helpers
|
26563
|
-
(see "One Way Bindings"):
|
26564
|
-
|
26565
|
-
```
|
26566
|
-
valueBinding: "MyApp.someController.title"
|
26567
|
-
```
|
26568
|
-
|
26569
|
-
This will create a binding from `MyApp.someController.title` to the `value`
|
26570
|
-
property of your object instance automatically. Now the two values will be
|
26571
|
-
kept in sync.
|
26572
|
-
|
26573
|
-
## One Way Bindings
|
26574
|
-
|
26575
|
-
One especially useful binding customization you can use is the `oneWay()`
|
26576
|
-
helper. This helper tells Ember that you are only interested in
|
26577
|
-
receiving changes on the object you are binding from. For example, if you
|
26578
|
-
are binding to a preference and you want to be notified if the preference
|
26579
|
-
has changed, but your object will not be changing the preference itself, you
|
26580
|
-
could do:
|
26581
|
-
|
26582
|
-
```
|
26583
|
-
bigTitlesBinding: Ember.Binding.oneWay("MyApp.preferencesController.bigTitles")
|
26584
|
-
```
|
26585
|
-
|
26586
|
-
This way if the value of `MyApp.preferencesController.bigTitles` changes the
|
26587
|
-
`bigTitles` property of your object will change also. However, if you
|
26588
|
-
change the value of your `bigTitles` property, it will not update the
|
26589
|
-
`preferencesController`.
|
26590
|
-
|
26591
|
-
One way bindings are almost twice as fast to setup and twice as fast to
|
26592
|
-
execute because the binding only has to worry about changes to one side.
|
26593
|
-
|
26594
|
-
You should consider using one way bindings anytime you have an object that
|
26595
|
-
may be created frequently and you do not intend to change a property; only
|
26596
|
-
to monitor it for changes (such as in the example above).
|
26597
|
-
|
26598
|
-
## Adding Bindings Manually
|
26599
|
-
|
26600
|
-
All of the examples above show you how to configure a custom binding, but the
|
26601
|
-
result of these customizations will be a binding template, not a fully active
|
26602
|
-
Binding instance. The binding will actually become active only when you
|
26603
|
-
instantiate the object the binding belongs to. It is useful, however, to
|
26604
|
-
understand what actually happens when the binding is activated.
|
26605
|
-
|
26606
|
-
For a binding to function it must have at least a `from` property and a `to`
|
26607
|
-
property. The `from` property path points to the object/key that you want to
|
26608
|
-
bind from while the `to` path points to the object/key you want to bind to.
|
26609
|
-
|
26610
|
-
When you define a custom binding, you are usually describing the property
|
26611
|
-
you want to bind from (such as `MyApp.someController.value` in the examples
|
26612
|
-
above). When your object is created, it will automatically assign the value
|
26613
|
-
you want to bind `to` based on the name of your binding key. In the
|
26614
|
-
examples above, during init, Ember objects will effectively call
|
26615
|
-
something like this on your binding:
|
26616
|
-
|
26617
|
-
```javascript
|
26618
|
-
binding = Ember.Binding.from("valueBinding").to("value");
|
26619
|
-
```
|
26620
|
-
|
26621
|
-
This creates a new binding instance based on the template you provide, and
|
26622
|
-
sets the to path to the `value` property of the new object. Now that the
|
26623
|
-
binding is fully configured with a `from` and a `to`, it simply needs to be
|
26624
|
-
connected to become active. This is done through the `connect()` method:
|
26625
|
-
|
26626
|
-
```javascript
|
26627
|
-
binding.connect(this);
|
26628
|
-
```
|
26629
|
-
|
26630
|
-
Note that when you connect a binding you pass the object you want it to be
|
26631
|
-
connected to. This object will be used as the root for both the from and
|
26632
|
-
to side of the binding when inspecting relative paths. This allows the
|
26633
|
-
binding to be automatically inherited by subclassed objects as well.
|
26634
|
-
|
26635
|
-
This also allows you to bind between objects using the paths you declare in
|
26636
|
-
`from` and `to`:
|
26637
|
-
|
26638
|
-
```javascript
|
26639
|
-
// Example 1
|
26640
|
-
binding = Ember.Binding.from("App.someObject.value").to("value");
|
26641
|
-
binding.connect(this);
|
26642
|
-
|
26643
|
-
// Example 2
|
26644
|
-
binding = Ember.Binding.from("parentView.value").to("App.someObject.value");
|
26645
|
-
binding.connect(this);
|
26646
|
-
```
|
26647
|
-
|
26648
|
-
Now that the binding is connected, it will observe both the from and to side
|
26649
|
-
and relay changes.
|
26650
|
-
|
26651
|
-
If you ever needed to do so (you almost never will, but it is useful to
|
26652
|
-
understand this anyway), you could manually create an active binding by
|
26653
|
-
using the `Ember.bind()` helper method. (This is the same method used by
|
26654
|
-
to setup your bindings on objects):
|
26655
|
-
|
26656
|
-
```javascript
|
26657
|
-
Ember.bind(MyApp.anotherObject, "value", "MyApp.someController.value");
|
26658
|
-
```
|
26659
|
-
|
26660
|
-
Both of these code fragments have the same effect as doing the most friendly
|
26661
|
-
form of binding creation like so:
|
26662
|
-
|
26663
|
-
```javascript
|
26664
|
-
MyApp.anotherObject = Ember.Object.create({
|
26665
|
-
valueBinding: "MyApp.someController.value",
|
26666
|
-
|
26667
|
-
// OTHER CODE FOR THIS OBJECT...
|
26668
|
-
});
|
26669
|
-
```
|
26670
|
-
|
26671
|
-
Ember's built in binding creation method makes it easy to automatically
|
26672
|
-
create bindings for you. You should always use the highest-level APIs
|
26673
|
-
available, even if you understand how it works underneath.
|
26674
|
-
|
26675
|
-
@class Binding
|
26676
|
-
@namespace Ember
|
26677
|
-
@since Ember 0.9
|
26678
|
-
@public
|
26679
|
-
*/
|
26680
|
-
// Ember.Binding = Binding; ES6TODO: where to put this?
|
26681
|
-
|
26682
|
-
|
26683
|
-
/**
|
26684
|
-
Global helper method to create a new binding. Just pass the root object
|
26685
|
-
along with a `to` and `from` path to create and connect the binding.
|
26686
|
-
|
26687
|
-
@method bind
|
26688
|
-
@for Ember
|
26689
|
-
@param {Object} obj The root object of the transform.
|
26690
|
-
@param {String} to The path to the 'to' side of the binding.
|
26691
|
-
Must be relative to obj.
|
26692
|
-
@param {String} from The path to the 'from' side of the binding.
|
26693
|
-
Must be relative to obj or a global path.
|
26694
|
-
@return {Ember.Binding} binding instance
|
26695
|
-
@public
|
26696
|
-
*/
|
26697
|
-
|
26698
|
-
|
26699
26299
|
var a_concat = Array.prototype.concat;
|
26700
26300
|
var isArray = Array.isArray;
|
26701
26301
|
|
@@ -26917,43 +26517,6 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
26917
26517
|
}
|
26918
26518
|
}
|
26919
26519
|
|
26920
|
-
function detectBinding(key) {
|
26921
|
-
var length = key.length;
|
26922
|
-
|
26923
|
-
return length > 7 && key.charCodeAt(length - 7) === 66 && key.indexOf('inding', length - 6) !== -1;
|
26924
|
-
}
|
26925
|
-
// warm both paths of above function
|
26926
|
-
detectBinding('notbound');
|
26927
|
-
detectBinding('fooBinding');
|
26928
|
-
|
26929
|
-
function connectBindings(obj, meta$$1) {
|
26930
|
-
// TODO Mixin.apply(instance) should disconnect binding if exists
|
26931
|
-
meta$$1.forEachBindings(function (key, binding) {
|
26932
|
-
var to;
|
26933
|
-
|
26934
|
-
if (binding) {
|
26935
|
-
to = key.slice(0, -7); // strip Binding off end
|
26936
|
-
|
26937
|
-
if (binding instanceof Binding) {
|
26938
|
-
binding = binding.copy(); // copy prototypes' instance
|
26939
|
-
binding.to(to);
|
26940
|
-
} else {
|
26941
|
-
// binding is string path
|
26942
|
-
binding = new Binding(to, binding);
|
26943
|
-
}
|
26944
|
-
binding.connect(obj);
|
26945
|
-
obj[key] = binding;
|
26946
|
-
}
|
26947
|
-
});
|
26948
|
-
// mark as applied
|
26949
|
-
meta$$1.clearBindings();
|
26950
|
-
}
|
26951
|
-
|
26952
|
-
function finishPartial(obj, meta$$1) {
|
26953
|
-
connectBindings(obj, meta$$1 === undefined ? meta(obj) : meta$$1);
|
26954
|
-
return obj;
|
26955
|
-
}
|
26956
|
-
|
26957
26520
|
function followAlias(obj, desc, descs, values) {
|
26958
26521
|
var altKey = desc.methodName;
|
26959
26522
|
var value = void 0;
|
@@ -27046,16 +26609,16 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
27046
26609
|
replaceObserversAndListeners(obj, key, obj[key], value);
|
27047
26610
|
}
|
27048
26611
|
|
27049
|
-
if (detectBinding(key)) {
|
26612
|
+
if (emberEnvironment.ENV._ENABLE_BINDING_SUPPORT && Mixin.detectBinding(key)) {
|
27050
26613
|
meta$$1.writeBindings(key, value);
|
27051
26614
|
}
|
27052
26615
|
|
27053
26616
|
defineProperty(obj, key, desc, value, meta$$1);
|
27054
26617
|
}
|
27055
26618
|
|
27056
|
-
if (!partial) {
|
26619
|
+
if (emberEnvironment.ENV._ENABLE_BINDING_SUPPORT && !partial) {
|
27057
26620
|
// don't apply to prototype
|
27058
|
-
finishPartial(obj, meta$$1);
|
26621
|
+
Mixin.finishPartial(obj, meta$$1);
|
27059
26622
|
}
|
27060
26623
|
|
27061
26624
|
return obj;
|
@@ -27337,7 +26900,12 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
27337
26900
|
}();
|
27338
26901
|
|
27339
26902
|
Mixin._apply = applyMixin;
|
27340
|
-
|
26903
|
+
if (emberEnvironment.ENV._ENABLE_BINDING_SUPPORT) {
|
26904
|
+
// slotting this so that the legacy addon can add the function here
|
26905
|
+
// without triggering an error due to the Object.seal done below
|
26906
|
+
Mixin.finishPartial = null;
|
26907
|
+
Mixin.detectBinding = null;
|
26908
|
+
}
|
27341
26909
|
|
27342
26910
|
var MixinPrototype = Mixin.prototype;
|
27343
26911
|
MixinPrototype.toString = Object.toString;
|
@@ -27725,7 +27293,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
27725
27293
|
return value;
|
27726
27294
|
};
|
27727
27295
|
exports.set = set;
|
27728
|
-
exports.trySet =
|
27296
|
+
exports.trySet = function (root, path, value) {
|
27297
|
+
return set(root, path, value, true);
|
27298
|
+
};
|
27729
27299
|
exports.addListener = addListener;
|
27730
27300
|
exports.hasListeners = function (obj, eventName) {
|
27731
27301
|
var meta$$1 = peekMeta(obj);
|
@@ -27839,7 +27409,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
27839
27409
|
return properties;
|
27840
27410
|
};
|
27841
27411
|
exports.expandProperties = expandProperties;
|
27842
|
-
exports._suspendObserver =
|
27412
|
+
exports._suspendObserver = function (obj, path, target, method, callback) {
|
27413
|
+
return suspendListener(obj, changeEvent(path), target, method, callback);
|
27414
|
+
};
|
27843
27415
|
exports._suspendObservers = function (obj, paths, target, method, callback) {
|
27844
27416
|
var events = paths.map(changeEvent);
|
27845
27417
|
return suspendListeners(obj, events, target, method, callback);
|
@@ -27923,12 +27495,9 @@ enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-deb
|
|
27923
27495
|
exports.clearUnprocessedMixins = function () {
|
27924
27496
|
unprocessedFlag = false;
|
27925
27497
|
};
|
27926
|
-
exports.
|
27927
|
-
|
27928
|
-
exports.bind = function (obj, to, from) {
|
27929
|
-
return new Binding(to, from).connect(obj);
|
27498
|
+
exports.isGlobalPath = function (path) {
|
27499
|
+
return isGlobalPathCache.get(path);
|
27930
27500
|
};
|
27931
|
-
exports.isGlobalPath = isGlobalPath;
|
27932
27501
|
exports.InjectedProperty = InjectedProperty;
|
27933
27502
|
exports.setHasViews = function (fn) {
|
27934
27503
|
hasViews = fn;
|
@@ -32740,6 +32309,10 @@ enifed('ember-runtime/compare', ['exports', 'ember-runtime/utils', 'ember-runtim
|
|
32740
32309
|
return (diff > 0) - (diff < 0);
|
32741
32310
|
}
|
32742
32311
|
|
32312
|
+
/**
|
32313
|
+
@module @ember/utils
|
32314
|
+
*/
|
32315
|
+
|
32743
32316
|
/**
|
32744
32317
|
Compares two javascript values and returns:
|
32745
32318
|
|
@@ -32775,7 +32348,8 @@ enifed('ember-runtime/compare', ['exports', 'ember-runtime/utils', 'ember-runtim
|
|
32775
32348
|
```
|
32776
32349
|
|
32777
32350
|
@method compare
|
32778
|
-
@for
|
32351
|
+
@for @ember/utils
|
32352
|
+
@static
|
32779
32353
|
@param {Object} v First value to compare
|
32780
32354
|
@param {Object} w Second value to compare
|
32781
32355
|
@return {Number} -1 if v < w, 0 if v = w and 1 if v > w.
|
@@ -34199,11 +33773,11 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-debug
|
|
34199
33773
|
```javascript
|
34200
33774
|
let ToDoList = Ember.Object.extend({
|
34201
33775
|
// using standard ascending sort
|
34202
|
-
todosSorting: ['name'],
|
33776
|
+
todosSorting: Object.freeze(['name']),
|
34203
33777
|
sortedTodos: Ember.computed.sort('todos', 'todosSorting'),
|
34204
33778
|
|
34205
33779
|
// using descending sort
|
34206
|
-
todosSortingDesc: ['name:desc'],
|
33780
|
+
todosSortingDesc: Object.freeze(['name:desc']),
|
34207
33781
|
sortedTodosDesc: Ember.computed.sort('todos', 'todosSortingDesc'),
|
34208
33782
|
|
34209
33783
|
// using a custom sort function
|
@@ -35440,6 +35014,9 @@ enifed('ember-runtime/is-equal', ['exports'], function (exports) {
|
|
35440
35014
|
'use strict';
|
35441
35015
|
|
35442
35016
|
exports.default =
|
35017
|
+
/**
|
35018
|
+
@module @ember/utils
|
35019
|
+
*/
|
35443
35020
|
/**
|
35444
35021
|
Compares two objects, returning true if they are equal.
|
35445
35022
|
|
@@ -35472,7 +35049,8 @@ enifed('ember-runtime/is-equal', ['exports'], function (exports) {
|
|
35472
35049
|
```
|
35473
35050
|
|
35474
35051
|
@method isEqual
|
35475
|
-
@for
|
35052
|
+
@for @ember/utils
|
35053
|
+
@static
|
35476
35054
|
@param {Object} a first object to compare
|
35477
35055
|
@param {Object} b second object to compare
|
35478
35056
|
@return {Boolean}
|
@@ -38675,7 +38253,6 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-utils', 'ember-met
|
|
38675
38253
|
|
38676
38254
|
var schedule = _emberMetal.run.schedule;
|
38677
38255
|
var applyMixin = _emberMetal.Mixin._apply;
|
38678
|
-
var finishPartial = _emberMetal.Mixin.finishPartial;
|
38679
38256
|
var reopen = _emberMetal.Mixin.prototype.reopen;
|
38680
38257
|
|
38681
38258
|
var POST_INIT = exports.POST_INIT = (0, _emberUtils.symbol)('POST_INIT');
|
@@ -38754,7 +38331,7 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-utils', 'ember-met
|
|
38754
38331
|
value = properties[keyName];
|
38755
38332
|
|
38756
38333
|
|
38757
|
-
if (
|
38334
|
+
if (_emberEnvironment.ENV._ENABLE_BINDING_SUPPORT && _emberMetal.Mixin.detectBinding(keyName)) {
|
38758
38335
|
m.writeBindings(keyName, value);
|
38759
38336
|
}
|
38760
38337
|
|
@@ -38794,7 +38371,9 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-utils', 'ember-met
|
|
38794
38371
|
}
|
38795
38372
|
}
|
38796
38373
|
|
38797
|
-
|
38374
|
+
if (_emberEnvironment.ENV._ENABLE_BINDING_SUPPORT) {
|
38375
|
+
_emberMetal.Mixin.finishPartial(this, m);
|
38376
|
+
}
|
38798
38377
|
|
38799
38378
|
this.init.apply(this, arguments);
|
38800
38379
|
|
@@ -40488,6 +40067,10 @@ enifed('ember-utils', ['exports'], function (exports) {
|
|
40488
40067
|
return obj !== null && obj !== undefined && typeof obj[methodName] === 'function';
|
40489
40068
|
}
|
40490
40069
|
|
40070
|
+
/**
|
40071
|
+
@module @ember/utils
|
40072
|
+
*/
|
40073
|
+
|
40491
40074
|
/**
|
40492
40075
|
Checks to see if the `methodName` exists on the `obj`,
|
40493
40076
|
and if it does, invokes it with the arguments passed.
|
@@ -40501,7 +40084,8 @@ enifed('ember-utils', ['exports'], function (exports) {
|
|
40501
40084
|
```
|
40502
40085
|
|
40503
40086
|
@method tryInvoke
|
40504
|
-
@for
|
40087
|
+
@for @ember/utils
|
40088
|
+
@static
|
40505
40089
|
@param {Object} obj The object to check for the method
|
40506
40090
|
@param {String} methodName The method name to check for
|
40507
40091
|
@param {Array} [args] The arguments to pass to the method
|
@@ -43182,7 +42766,7 @@ enifed('ember/index', ['exports', 'require', 'ember-environment', 'node-module',
|
|
43182
42766
|
enifed("ember/version", ["exports"], function (exports) {
|
43183
42767
|
"use strict";
|
43184
42768
|
|
43185
|
-
exports.default = "3.0.0-beta.
|
42769
|
+
exports.default = "3.0.0-beta.2";
|
43186
42770
|
});
|
43187
42771
|
/*global enifed */
|
43188
42772
|
enifed('node-module', ['exports'], function(_exports) {
|