ember-source 2.4.0.beta.2 → 2.4.0.beta.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/dist/ember-runtime.js +253 -133
- data/dist/ember-template-compiler.js +142 -59
- data/dist/ember-testing.js +2 -2
- data/dist/ember.debug.js +304 -159
- data/dist/ember.js +304 -159
- data/dist/ember.min.js +15 -15
- data/dist/ember.prod.js +298 -159
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db9ffc0eaf20f0b6dcd04c3e75fafb1e3494a2e2
|
4
|
+
data.tar.gz: 696528ff7f1a389f8ed677ab0e640f3ac0c0ccbd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64d226462e1309659a8d3ec01b6c728a2ebf7258eb72c2420e22c73ceadc28c30a232f79bf137d346d344d288530d7ceb3de06fac2ec0b7f4c0ed8e0f53c74bc
|
7
|
+
data.tar.gz: 68adc98fd7983493c1f03f84cb81a4df9238f75bb00d3142239d8c9b4ef896a4de216cee820595b8f33ccc8e72a6cd5141e9360c3749ad3a5be51bcbf9d39c61
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.4.0-beta.
|
1
|
+
2.4.0-beta.3
|
data/dist/ember-runtime.js
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
;(function() {
|
2
2
|
/*!
|
3
3
|
* @overview Ember - JavaScript Application Framework
|
4
|
-
* @copyright Copyright 2011-
|
4
|
+
* @copyright Copyright 2011-2016 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 2.4.0-beta.
|
9
|
+
* @version 2.4.0-beta.3
|
10
10
|
*/
|
11
11
|
|
12
12
|
var enifed, requireModule, require, requirejs, Ember;
|
@@ -212,20 +212,24 @@ enifed('backburner/deferred-action-queues', ['exports', 'backburner/utils', 'bac
|
|
212
212
|
enifed('backburner/platform', ['exports'], function (exports) {
|
213
213
|
'use strict';
|
214
214
|
|
215
|
-
var
|
215
|
+
var GlobalContext;
|
216
216
|
|
217
217
|
/* global self */
|
218
218
|
if (typeof self === 'object') {
|
219
|
-
|
219
|
+
GlobalContext = self;
|
220
220
|
|
221
221
|
/* global global */
|
222
222
|
} else if (typeof global === 'object') {
|
223
|
-
|
224
|
-
} else {
|
225
|
-
throw new Error('no global: `self` or `global` found');
|
226
|
-
}
|
223
|
+
GlobalContext = global;
|
227
224
|
|
228
|
-
|
225
|
+
/* global window */
|
226
|
+
} else if (typeof window === 'object') {
|
227
|
+
GlobalContext = window;
|
228
|
+
} else {
|
229
|
+
throw new Error('no global: `self`, `global` nor `window` was found');
|
230
|
+
}
|
231
|
+
|
232
|
+
exports.default = GlobalContext;
|
229
233
|
});
|
230
234
|
enifed('backburner/queue', ['exports', 'backburner/utils'], function (exports, _backburnerUtils) {
|
231
235
|
'use strict';
|
@@ -468,7 +472,6 @@ enifed('backburner/utils', ['exports'], function (exports) {
|
|
468
472
|
exports.isFunction = isFunction;
|
469
473
|
exports.isNumber = isNumber;
|
470
474
|
exports.isCoercableNumber = isCoercableNumber;
|
471
|
-
exports.wrapInTryCatch = wrapInTryCatch;
|
472
475
|
var NUMBER = /\d+/;
|
473
476
|
|
474
477
|
function each(collection, callback) {
|
@@ -477,14 +480,6 @@ enifed('backburner/utils', ['exports'], function (exports) {
|
|
477
480
|
}
|
478
481
|
}
|
479
482
|
|
480
|
-
// Date.now is not available in browsers < IE9
|
481
|
-
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now#Compatibility
|
482
|
-
var now = Date.now || function () {
|
483
|
-
return new Date().getTime();
|
484
|
-
};
|
485
|
-
|
486
|
-
exports.now = now;
|
487
|
-
|
488
483
|
function isString(suspect) {
|
489
484
|
return typeof suspect === 'string';
|
490
485
|
}
|
@@ -500,16 +495,6 @@ enifed('backburner/utils', ['exports'], function (exports) {
|
|
500
495
|
function isCoercableNumber(number) {
|
501
496
|
return isNumber(number) || NUMBER.test(number);
|
502
497
|
}
|
503
|
-
|
504
|
-
function wrapInTryCatch(func) {
|
505
|
-
return function () {
|
506
|
-
try {
|
507
|
-
return func.apply(this, arguments);
|
508
|
-
} catch (e) {
|
509
|
-
throw e;
|
510
|
-
}
|
511
|
-
};
|
512
|
-
}
|
513
498
|
});
|
514
499
|
enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'backburner/binary-search', 'backburner/deferred-action-queues'], function (exports, _backburnerUtils, _backburnerPlatform, _backburnerBinarySearch, _backburnerDeferredActionQueues) {
|
515
500
|
'use strict';
|
@@ -530,10 +515,16 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
|
|
530
515
|
begin: []
|
531
516
|
};
|
532
517
|
|
518
|
+
var _this = this;
|
519
|
+
this._boundClearItems = function () {
|
520
|
+
clearItems();
|
521
|
+
};
|
522
|
+
|
533
523
|
this._timerTimeoutId = undefined;
|
534
524
|
this._timers = [];
|
535
525
|
|
536
|
-
|
526
|
+
this._platform = this.options._platform || _backburnerPlatform.default;
|
527
|
+
|
537
528
|
this._boundRunExpiredTimers = function () {
|
538
529
|
_this._runExpiredTimers();
|
539
530
|
};
|
@@ -870,7 +861,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
|
|
870
861
|
}
|
871
862
|
}
|
872
863
|
|
873
|
-
var executeAt =
|
864
|
+
var executeAt = Date.now() + parseInt(wait, 10);
|
874
865
|
|
875
866
|
if (_backburnerUtils.isString(method)) {
|
876
867
|
method = target[method];
|
@@ -936,7 +927,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
|
|
936
927
|
return this._throttlers[index];
|
937
928
|
} // throttled
|
938
929
|
|
939
|
-
timer =
|
930
|
+
timer = this._platform.setTimeout(function () {
|
940
931
|
if (!immediate) {
|
941
932
|
backburner.run.apply(backburner, args);
|
942
933
|
}
|
@@ -981,10 +972,10 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
|
|
981
972
|
if (index > -1) {
|
982
973
|
debouncee = this._debouncees[index];
|
983
974
|
this._debouncees.splice(index, 1);
|
984
|
-
clearTimeout(debouncee[2]);
|
975
|
+
this._platform.clearTimeout(debouncee[2]);
|
985
976
|
}
|
986
977
|
|
987
|
-
timer =
|
978
|
+
timer = this._platform.setTimeout(function () {
|
988
979
|
if (!immediate) {
|
989
980
|
backburner.run.apply(backburner, args);
|
990
981
|
}
|
@@ -1006,17 +997,17 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
|
|
1006
997
|
},
|
1007
998
|
|
1008
999
|
cancelTimers: function () {
|
1009
|
-
_backburnerUtils.each(this._throttlers,
|
1000
|
+
_backburnerUtils.each(this._throttlers, this._boundClearItems);
|
1010
1001
|
this._throttlers = [];
|
1011
1002
|
|
1012
|
-
_backburnerUtils.each(this._debouncees,
|
1003
|
+
_backburnerUtils.each(this._debouncees, this._boundClearItems);
|
1013
1004
|
this._debouncees = [];
|
1014
1005
|
|
1015
1006
|
this._clearTimerTimeout();
|
1016
1007
|
this._timers = [];
|
1017
1008
|
|
1018
1009
|
if (this._autorun) {
|
1019
|
-
clearTimeout(this._autorun);
|
1010
|
+
this._platform.clearTimeout(this._autorun);
|
1020
1011
|
this._autorun = null;
|
1021
1012
|
}
|
1022
1013
|
},
|
@@ -1065,7 +1056,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
|
|
1065
1056
|
|
1066
1057
|
if (item[2] === timer[2]) {
|
1067
1058
|
array.splice(index, 1);
|
1068
|
-
clearTimeout(timer[2]);
|
1059
|
+
this._platform.clearTimeout(timer[2]);
|
1069
1060
|
return true;
|
1070
1061
|
}
|
1071
1062
|
}
|
@@ -1079,7 +1070,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
|
|
1079
1070
|
},
|
1080
1071
|
|
1081
1072
|
_scheduleExpiredTimers: function () {
|
1082
|
-
var n =
|
1073
|
+
var n = Date.now();
|
1083
1074
|
var timers = this._timers;
|
1084
1075
|
var i = 0;
|
1085
1076
|
var l = timers.length;
|
@@ -1105,7 +1096,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
|
|
1105
1096
|
if (!this._timerTimeoutId) {
|
1106
1097
|
return;
|
1107
1098
|
}
|
1108
|
-
clearTimeout(this._timerTimeoutId);
|
1099
|
+
this._platform.clearTimeout(this._timerTimeoutId);
|
1109
1100
|
this._timerTimeoutId = undefined;
|
1110
1101
|
},
|
1111
1102
|
|
@@ -1114,9 +1105,9 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
|
|
1114
1105
|
return;
|
1115
1106
|
}
|
1116
1107
|
var minExpiresAt = this._timers[0];
|
1117
|
-
var n =
|
1108
|
+
var n = Date.now();
|
1118
1109
|
var wait = Math.max(0, minExpiresAt - n);
|
1119
|
-
this._timerTimeoutId = setTimeout(this._boundRunExpiredTimers, wait);
|
1110
|
+
this._timerTimeoutId = this._platform.setTimeout(this._boundRunExpiredTimers, wait);
|
1120
1111
|
}
|
1121
1112
|
};
|
1122
1113
|
|
@@ -1130,7 +1121,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
|
|
1130
1121
|
|
1131
1122
|
function createAutorun(backburner) {
|
1132
1123
|
backburner.begin();
|
1133
|
-
backburner._autorun =
|
1124
|
+
backburner._autorun = backburner._platform.setTimeout(function () {
|
1134
1125
|
backburner._autorun = null;
|
1135
1126
|
backburner.end();
|
1136
1127
|
});
|
@@ -1160,7 +1151,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac
|
|
1160
1151
|
}
|
1161
1152
|
|
1162
1153
|
function clearItems(item) {
|
1163
|
-
clearTimeout(item[2]);
|
1154
|
+
this._platform.clearTimeout(item[2]);
|
1164
1155
|
}
|
1165
1156
|
});
|
1166
1157
|
enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/debug', 'ember-metal/dictionary', 'ember-metal/features', 'container/owner', 'ember-runtime/mixins/container_proxy', 'ember-metal/symbol'], function (exports, _emberMetalCore, _emberMetalDebug, _emberMetalDictionary, _emberMetalFeatures, _containerOwner, _emberRuntimeMixinsContainer_proxy, _emberMetalSymbol) {
|
@@ -4884,7 +4875,7 @@ enifed('ember-metal/core', ['exports', 'require'], function (exports, _require)
|
|
4884
4875
|
|
4885
4876
|
@class Ember
|
4886
4877
|
@static
|
4887
|
-
@version 2.4.0-beta.
|
4878
|
+
@version 2.4.0-beta.3
|
4888
4879
|
@public
|
4889
4880
|
*/
|
4890
4881
|
|
@@ -4926,11 +4917,11 @@ enifed('ember-metal/core', ['exports', 'require'], function (exports, _require)
|
|
4926
4917
|
|
4927
4918
|
@property VERSION
|
4928
4919
|
@type String
|
4929
|
-
@default '2.4.0-beta.
|
4920
|
+
@default '2.4.0-beta.3'
|
4930
4921
|
@static
|
4931
4922
|
@public
|
4932
4923
|
*/
|
4933
|
-
Ember.VERSION = '2.4.0-beta.
|
4924
|
+
Ember.VERSION = '2.4.0-beta.3';
|
4934
4925
|
|
4935
4926
|
/**
|
4936
4927
|
The hash of environment variables used to control various configuration
|
@@ -7311,6 +7302,7 @@ enifed('ember-metal/meta', ['exports', 'ember-metal/meta_listeners', 'ember-meta
|
|
7311
7302
|
*/
|
7312
7303
|
var members = {
|
7313
7304
|
cache: ownMap,
|
7305
|
+
weak: ownMap,
|
7314
7306
|
watching: inheritedMap,
|
7315
7307
|
mixins: inheritedMap,
|
7316
7308
|
bindings: inheritedMap,
|
@@ -7325,6 +7317,7 @@ enifed('ember-metal/meta', ['exports', 'ember-metal/meta_listeners', 'ember-meta
|
|
7325
7317
|
|
7326
7318
|
function Meta(obj, parentMeta) {
|
7327
7319
|
this._cache = undefined;
|
7320
|
+
this._weak = undefined;
|
7328
7321
|
this._watching = undefined;
|
7329
7322
|
this._mixins = undefined;
|
7330
7323
|
this._bindings = undefined;
|
@@ -7409,7 +7402,7 @@ enifed('ember-metal/meta', ['exports', 'ember-metal/meta_listeners', 'ember-meta
|
|
7409
7402
|
};
|
7410
7403
|
|
7411
7404
|
Meta.prototype['clear' + capitalized] = function () {
|
7412
|
-
this[key] =
|
7405
|
+
this[key] = undefined;
|
7413
7406
|
};
|
7414
7407
|
|
7415
7408
|
Meta.prototype['deleteFrom' + capitalized] = function (subkey) {
|
@@ -8469,11 +8462,10 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/error',
|
|
8469
8462
|
seen[_emberMetalUtils.guidFor(mixin)] = true;
|
8470
8463
|
|
8471
8464
|
if (mixin.properties) {
|
8472
|
-
var props = mixin.properties;
|
8473
|
-
for (var
|
8474
|
-
|
8475
|
-
|
8476
|
-
}
|
8465
|
+
var props = Object.keys(mixin.properties);
|
8466
|
+
for (var i = 0; i < props.length; i++) {
|
8467
|
+
var key = props[i];
|
8468
|
+
ret[key] = true;
|
8477
8469
|
}
|
8478
8470
|
} else if (mixin.mixins) {
|
8479
8471
|
mixin.mixins.forEach(function (x) {
|
@@ -8485,13 +8477,9 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/error',
|
|
8485
8477
|
MixinPrototype.keys = function () {
|
8486
8478
|
var keys = {};
|
8487
8479
|
var seen = {};
|
8488
|
-
|
8480
|
+
|
8489
8481
|
_keys(keys, this, seen);
|
8490
|
-
|
8491
|
-
if (keys.hasOwnProperty(key)) {
|
8492
|
-
ret.push(key);
|
8493
|
-
}
|
8494
|
-
}
|
8482
|
+
var ret = Object.keys(keys);
|
8495
8483
|
return ret;
|
8496
8484
|
};
|
8497
8485
|
|
@@ -12459,6 +12447,101 @@ enifed('ember-metal/watching', ['exports', 'ember-metal/chains', 'ember-metal/wa
|
|
12459
12447
|
}
|
12460
12448
|
}
|
12461
12449
|
});
|
12450
|
+
enifed('ember-metal/weak_map', ['exports', 'ember-metal/debug', 'ember-metal/utils', 'ember-metal/meta'], function (exports, _emberMetalDebug, _emberMetalUtils, _emberMetalMeta) {
|
12451
|
+
'use strict';
|
12452
|
+
|
12453
|
+
exports.default = WeakMap;
|
12454
|
+
|
12455
|
+
var id = 0;
|
12456
|
+
function UNDEFINED() {}
|
12457
|
+
|
12458
|
+
/*
|
12459
|
+
* @private
|
12460
|
+
* @class Ember.WeakMap
|
12461
|
+
*
|
12462
|
+
* A partial polyfill for [WeakMap](http://www.ecma-international.org/ecma-262/6.0/#sec-weakmap-objects).
|
12463
|
+
*
|
12464
|
+
* There is a small but important caveat. This implementation assumes that the
|
12465
|
+
* weak map will live longer (in the sense of garbage collection) than all of its
|
12466
|
+
* keys, otherwise it is possible to leak the values stored in the weak map. In
|
12467
|
+
* practice, most use cases satisfy this limitation which is why it is included
|
12468
|
+
* in ember-metal.
|
12469
|
+
*/
|
12470
|
+
|
12471
|
+
function WeakMap() {
|
12472
|
+
_emberMetalDebug.assert('Invoking the WeakMap constructor with arguments is not supported at this time', arguments.length === 0);
|
12473
|
+
|
12474
|
+
this._id = _emberMetalUtils.GUID_KEY + id++;
|
12475
|
+
}
|
12476
|
+
|
12477
|
+
/*
|
12478
|
+
* @method get
|
12479
|
+
* @param key {Object | Function}
|
12480
|
+
* @return {Any} stored value
|
12481
|
+
*/
|
12482
|
+
WeakMap.prototype.get = function (obj) {
|
12483
|
+
var meta = _emberMetalMeta.peekMeta(obj);
|
12484
|
+
if (meta) {
|
12485
|
+
var map = meta.readableWeak();
|
12486
|
+
if (map) {
|
12487
|
+
if (map[this._id] === UNDEFINED) {
|
12488
|
+
return undefined;
|
12489
|
+
}
|
12490
|
+
|
12491
|
+
return map[this._id];
|
12492
|
+
}
|
12493
|
+
}
|
12494
|
+
};
|
12495
|
+
|
12496
|
+
/*
|
12497
|
+
* @method set
|
12498
|
+
* @param key {Object | Function}
|
12499
|
+
* @param value {Any}
|
12500
|
+
* @return {WeakMap} the weak map
|
12501
|
+
*/
|
12502
|
+
WeakMap.prototype.set = function (obj, value) {
|
12503
|
+
_emberMetalDebug.assert('Uncaught TypeError: Invalid value used as weak map key', obj && (typeof obj === 'object' || typeof obj === 'function'));
|
12504
|
+
|
12505
|
+
if (value === undefined) {
|
12506
|
+
value = UNDEFINED;
|
12507
|
+
}
|
12508
|
+
|
12509
|
+
_emberMetalMeta.meta(obj).writableWeak()[this._id] = value;
|
12510
|
+
|
12511
|
+
return this;
|
12512
|
+
};
|
12513
|
+
|
12514
|
+
/*
|
12515
|
+
* @method has
|
12516
|
+
* @param key {Object | Function}
|
12517
|
+
* @return {boolean} if the key exists
|
12518
|
+
*/
|
12519
|
+
WeakMap.prototype.has = function (obj) {
|
12520
|
+
var meta = _emberMetalMeta.peekMeta(obj);
|
12521
|
+
if (meta) {
|
12522
|
+
var map = meta.readableWeak();
|
12523
|
+
if (map) {
|
12524
|
+
return map[this._id] !== undefined;
|
12525
|
+
}
|
12526
|
+
}
|
12527
|
+
|
12528
|
+
return false;
|
12529
|
+
};
|
12530
|
+
|
12531
|
+
/*
|
12532
|
+
* @method delete
|
12533
|
+
* @param key {Object | Function}
|
12534
|
+
* @return {boolean} if the key was deleted
|
12535
|
+
*/
|
12536
|
+
WeakMap.prototype.delete = function (obj) {
|
12537
|
+
if (this.has(obj)) {
|
12538
|
+
delete _emberMetalMeta.meta(obj).writableWeak()[this._id];
|
12539
|
+
return true;
|
12540
|
+
} else {
|
12541
|
+
return false;
|
12542
|
+
}
|
12543
|
+
};
|
12544
|
+
});
|
12462
12545
|
enifed('ember-runtime/compare', ['exports', 'ember-runtime/utils', 'ember-runtime/mixins/comparable'], function (exports, _emberRuntimeUtils, _emberRuntimeMixinsComparable) {
|
12463
12546
|
'use strict';
|
12464
12547
|
|
@@ -12605,7 +12688,7 @@ enifed('ember-runtime/compare', ['exports', 'ember-runtime/utils', 'ember-runtim
|
|
12605
12688
|
}
|
12606
12689
|
}
|
12607
12690
|
});
|
12608
|
-
enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/error', 'ember-metal/computed', 'ember-metal/observer', 'ember-runtime/compare', 'ember-runtime/utils', 'ember-runtime/system/native_array', 'ember-metal/is_none', 'ember-metal/get_properties'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberMetalError, _emberMetalComputed, _emberMetalObserver, _emberRuntimeCompare, _emberRuntimeUtils, _emberRuntimeSystemNative_array, _emberMetalIs_none, _emberMetalGet_properties) {
|
12691
|
+
enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/error', 'ember-metal/computed', 'ember-metal/observer', 'ember-runtime/compare', 'ember-runtime/utils', 'ember-runtime/system/native_array', 'ember-metal/is_none', 'ember-metal/get_properties', 'ember-metal/weak_map'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberMetalError, _emberMetalComputed, _emberMetalObserver, _emberRuntimeCompare, _emberRuntimeUtils, _emberRuntimeSystemNative_array, _emberMetalIs_none, _emberMetalGet_properties, _emberMetalWeak_map) {
|
12609
12692
|
/**
|
12610
12693
|
@module ember
|
12611
12694
|
@submodule ember-runtime
|
@@ -12675,7 +12758,7 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
|
|
12675
12758
|
}
|
12676
12759
|
|
12677
12760
|
/**
|
12678
|
-
A computed property that returns the sum of the
|
12761
|
+
A computed property that returns the sum of the values
|
12679
12762
|
in the dependent array.
|
12680
12763
|
|
12681
12764
|
@method sum
|
@@ -13268,67 +13351,83 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
|
|
13268
13351
|
var cp = new _emberMetalComputed.ComputedProperty(function (key) {
|
13269
13352
|
var _this5 = this;
|
13270
13353
|
|
13271
|
-
|
13272
|
-
this.notifyPropertyChange(key);
|
13273
|
-
}
|
13274
|
-
|
13275
|
-
var items = itemsKey === '@this' ? this : _emberMetalProperty_get.get(this, itemsKey);
|
13354
|
+
var itemsKeyIsAtThis = itemsKey === '@this';
|
13276
13355
|
var sortProperties = _emberMetalProperty_get.get(this, sortPropertiesKey);
|
13277
13356
|
|
13278
|
-
|
13279
|
-
return
|
13280
|
-
}
|
13357
|
+
_emberMetalDebug.assert('The sort definition for \'' + key + '\' on ' + this + ' must be a function or an array of strings', _emberRuntimeUtils.isArray(sortProperties) && sortProperties.every(function (s) {
|
13358
|
+
return typeof s === 'string';
|
13359
|
+
}));
|
13281
13360
|
|
13282
|
-
|
13283
|
-
|
13284
|
-
|
13285
|
-
|
13361
|
+
var normalizedSortProperties = normalizeSortProperties(sortProperties);
|
13362
|
+
|
13363
|
+
// Add/remove property observers as required.
|
13364
|
+
var activeObserversMap = cp._activeObserverMap || (cp._activeObserverMap = new _emberMetalWeak_map.default());
|
13365
|
+
var activeObservers = activeObserversMap.get(this);
|
13366
|
+
|
13367
|
+
if (activeObservers) {
|
13368
|
+
activeObservers.forEach(function (args) {
|
13369
|
+
_emberMetalObserver.removeObserver.apply(null, args);
|
13286
13370
|
});
|
13287
13371
|
}
|
13288
13372
|
|
13289
|
-
|
13290
|
-
|
13291
|
-
if (!_emberRuntimeUtils.isArray(sortProperties)) {
|
13292
|
-
return items;
|
13373
|
+
function sortPropertyDidChange() {
|
13374
|
+
this.notifyPropertyChange(key);
|
13293
13375
|
}
|
13294
13376
|
|
13295
|
-
|
13296
|
-
|
13297
|
-
var _p$split = p.split(':');
|
13377
|
+
activeObservers = normalizedSortProperties.map(function (_ref) {
|
13378
|
+
var prop = _ref[0];
|
13298
13379
|
|
13299
|
-
var
|
13300
|
-
var
|
13380
|
+
var path = itemsKeyIsAtThis ? '@each.' + prop : itemsKey + '.@each.' + prop;
|
13381
|
+
var args = [_this5, path, sortPropertyDidChange];
|
13382
|
+
_emberMetalObserver.addObserver.apply(null, args);
|
13383
|
+
return args;
|
13384
|
+
});
|
13301
13385
|
|
13302
|
-
|
13386
|
+
activeObserversMap.set(this, activeObservers);
|
13303
13387
|
|
13304
|
-
|
13305
|
-
|
13388
|
+
// Sort and return the array.
|
13389
|
+
var items = itemsKeyIsAtThis ? this : _emberMetalProperty_get.get(this, itemsKey);
|
13306
13390
|
|
13307
|
-
|
13308
|
-
|
13309
|
-
|
13310
|
-
|
13311
|
-
|
13312
|
-
|
13313
|
-
});
|
13391
|
+
if (_emberRuntimeUtils.isArray(items)) {
|
13392
|
+
return sortByNormalizedSortProperties(items, normalizedSortProperties);
|
13393
|
+
} else {
|
13394
|
+
return _emberRuntimeSystemNative_array.A();
|
13395
|
+
}
|
13396
|
+
});
|
13314
13397
|
|
13315
|
-
|
13316
|
-
for (var i = 0; i < normalizedSort.length; ++i) {
|
13317
|
-
var _normalizedSort$i = normalizedSort[i];
|
13318
|
-
var prop = _normalizedSort$i[0];
|
13319
|
-
var direction = _normalizedSort$i[1];
|
13398
|
+
cp._activeObserverMap = undefined;
|
13320
13399
|
|
13321
|
-
|
13322
|
-
|
13323
|
-
return direction === 'desc' ? -1 * result : result;
|
13324
|
-
}
|
13325
|
-
}
|
13400
|
+
return cp.property(sortPropertiesKey + '.[]').readOnly();
|
13401
|
+
}
|
13326
13402
|
|
13327
|
-
|
13328
|
-
|
13403
|
+
function normalizeSortProperties(sortProperties) {
|
13404
|
+
return sortProperties.map(function (p) {
|
13405
|
+
var _p$split = p.split(':');
|
13406
|
+
|
13407
|
+
var prop = _p$split[0];
|
13408
|
+
var direction = _p$split[1];
|
13409
|
+
|
13410
|
+
direction = direction || 'asc';
|
13411
|
+
|
13412
|
+
return [prop, direction];
|
13329
13413
|
});
|
13414
|
+
}
|
13415
|
+
|
13416
|
+
function sortByNormalizedSortProperties(items, normalizedSortProperties) {
|
13417
|
+
return _emberRuntimeSystemNative_array.A(items.slice().sort(function (itemA, itemB) {
|
13418
|
+
for (var i = 0; i < normalizedSortProperties.length; i++) {
|
13419
|
+
var _normalizedSortProperties$i = normalizedSortProperties[i];
|
13420
|
+
var prop = _normalizedSortProperties$i[0];
|
13421
|
+
var direction = _normalizedSortProperties$i[1];
|
13422
|
+
|
13423
|
+
var result = _emberRuntimeCompare.default(_emberMetalProperty_get.get(itemA, prop), _emberMetalProperty_get.get(itemB, prop));
|
13424
|
+
if (result !== 0) {
|
13425
|
+
return direction === 'desc' ? -1 * result : result;
|
13426
|
+
}
|
13427
|
+
}
|
13330
13428
|
|
13331
|
-
|
13429
|
+
return 0;
|
13430
|
+
}));
|
13332
13431
|
}
|
13333
13432
|
});
|
13334
13433
|
enifed('ember-runtime/controllers/controller', ['exports', 'ember-metal/debug', 'ember-runtime/system/object', 'ember-runtime/mixins/controller', 'ember-runtime/inject', 'ember-runtime/mixins/action_handler'], function (exports, _emberMetalDebug, _emberRuntimeSystemObject, _emberRuntimeMixinsController, _emberRuntimeInject, _emberRuntimeMixinsAction_handler) {
|
@@ -14395,6 +14494,10 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
|
|
14395
14494
|
//
|
14396
14495
|
'use strict';
|
14397
14496
|
|
14497
|
+
exports.addArrayObserver = addArrayObserver;
|
14498
|
+
exports.removeArrayObserver = removeArrayObserver;
|
14499
|
+
exports.objectAt = objectAt;
|
14500
|
+
|
14398
14501
|
function arrayObserversHelper(obj, target, opts, operation, notify) {
|
14399
14502
|
var willChange = opts && opts.willChange || 'arrayWillChange';
|
14400
14503
|
var didChange = opts && opts.didChange || 'arrayDidChange';
|
@@ -14414,6 +14517,22 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
|
|
14414
14517
|
return obj;
|
14415
14518
|
}
|
14416
14519
|
|
14520
|
+
function addArrayObserver(array, target, opts) {
|
14521
|
+
return arrayObserversHelper(array, target, opts, _emberMetalEvents.addListener, false);
|
14522
|
+
}
|
14523
|
+
|
14524
|
+
function removeArrayObserver(array, target, opts) {
|
14525
|
+
return arrayObserversHelper(array, target, opts, _emberMetalEvents.removeListener, true);
|
14526
|
+
}
|
14527
|
+
|
14528
|
+
function objectAt(content, idx) {
|
14529
|
+
if (content.objectAt) {
|
14530
|
+
return content.objectAt(idx);
|
14531
|
+
}
|
14532
|
+
|
14533
|
+
return content[idx];
|
14534
|
+
}
|
14535
|
+
|
14417
14536
|
// ..........................................................
|
14418
14537
|
// ARRAY
|
14419
14538
|
//
|
@@ -14506,16 +14625,16 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
|
|
14506
14625
|
@public
|
14507
14626
|
*/
|
14508
14627
|
objectsAt: function (indexes) {
|
14509
|
-
var
|
14628
|
+
var _this = this;
|
14510
14629
|
|
14511
14630
|
return indexes.map(function (idx) {
|
14512
|
-
return
|
14631
|
+
return objectAt(_this, idx);
|
14513
14632
|
});
|
14514
14633
|
},
|
14515
14634
|
|
14516
14635
|
// overrides Ember.Enumerable version
|
14517
14636
|
nextObject: function (idx) {
|
14518
|
-
return
|
14637
|
+
return objectAt(this, idx);
|
14519
14638
|
},
|
14520
14639
|
|
14521
14640
|
/**
|
@@ -14538,11 +14657,11 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
|
|
14538
14657
|
}),
|
14539
14658
|
|
14540
14659
|
firstObject: _emberMetalComputed.computed(function () {
|
14541
|
-
return
|
14660
|
+
return objectAt(this, 0);
|
14542
14661
|
}),
|
14543
14662
|
|
14544
14663
|
lastObject: _emberMetalComputed.computed(function () {
|
14545
|
-
return
|
14664
|
+
return objectAt(this, _emberMetalProperty_get.get(this, 'length') - 1);
|
14546
14665
|
}),
|
14547
14666
|
|
14548
14667
|
// optimized version from Enumerable
|
@@ -14588,7 +14707,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
|
|
14588
14707
|
}
|
14589
14708
|
|
14590
14709
|
while (beginIndex < endIndex) {
|
14591
|
-
ret[ret.length] =
|
14710
|
+
ret[ret.length] = objectAt(this, beginIndex++);
|
14592
14711
|
}
|
14593
14712
|
|
14594
14713
|
return ret;
|
@@ -14627,7 +14746,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
|
|
14627
14746
|
}
|
14628
14747
|
|
14629
14748
|
for (idx = startAt; idx < len; idx++) {
|
14630
|
-
if (
|
14749
|
+
if (objectAt(this, idx) === object) {
|
14631
14750
|
return idx;
|
14632
14751
|
}
|
14633
14752
|
}
|
@@ -14668,7 +14787,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
|
|
14668
14787
|
}
|
14669
14788
|
|
14670
14789
|
for (idx = startAt; idx >= 0; idx--) {
|
14671
|
-
if (
|
14790
|
+
if (objectAt(this, idx) === object) {
|
14672
14791
|
return idx;
|
14673
14792
|
}
|
14674
14793
|
}
|
@@ -14703,7 +14822,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
|
|
14703
14822
|
*/
|
14704
14823
|
|
14705
14824
|
addArrayObserver: function (target, opts) {
|
14706
|
-
return
|
14825
|
+
return addArrayObserver(this, target, opts);
|
14707
14826
|
},
|
14708
14827
|
|
14709
14828
|
/**
|
@@ -14718,7 +14837,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
|
|
14718
14837
|
@public
|
14719
14838
|
*/
|
14720
14839
|
removeArrayObserver: function (target, opts) {
|
14721
|
-
return
|
14840
|
+
return removeArrayObserver(this, target, opts);
|
14722
14841
|
},
|
14723
14842
|
|
14724
14843
|
/**
|
@@ -14773,7 +14892,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
|
|
14773
14892
|
lim = startIdx + removeAmt;
|
14774
14893
|
|
14775
14894
|
for (var idx = startIdx; idx < lim; idx++) {
|
14776
|
-
removing.push(
|
14895
|
+
removing.push(objectAt(this, idx));
|
14777
14896
|
}
|
14778
14897
|
} else {
|
14779
14898
|
removing = removeAmt;
|
@@ -14820,7 +14939,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
|
|
14820
14939
|
lim = startIdx + addAmt;
|
14821
14940
|
|
14822
14941
|
for (var idx = startIdx; idx < lim; idx++) {
|
14823
|
-
adding.push(
|
14942
|
+
adding.push(objectAt(this, idx));
|
14824
14943
|
}
|
14825
14944
|
} else {
|
14826
14945
|
adding = addAmt;
|
@@ -14838,12 +14957,12 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
|
|
14838
14957
|
var cachedFirst = _emberMetalComputed.cacheFor(this, 'firstObject');
|
14839
14958
|
var cachedLast = _emberMetalComputed.cacheFor(this, 'lastObject');
|
14840
14959
|
|
14841
|
-
if (
|
14960
|
+
if (objectAt(this, 0) !== cachedFirst) {
|
14842
14961
|
_emberMetalProperty_events.propertyWillChange(this, 'firstObject');
|
14843
14962
|
_emberMetalProperty_events.propertyDidChange(this, 'firstObject');
|
14844
14963
|
}
|
14845
14964
|
|
14846
|
-
if (
|
14965
|
+
if (objectAt(this, length - 1) !== cachedLast) {
|
14847
14966
|
_emberMetalProperty_events.propertyWillChange(this, 'lastObject');
|
14848
14967
|
_emberMetalProperty_events.propertyDidChange(this, 'lastObject');
|
14849
14968
|
}
|
@@ -16606,7 +16725,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
|
|
16606
16725
|
return null;
|
16607
16726
|
}
|
16608
16727
|
|
16609
|
-
var ret =
|
16728
|
+
var ret = _emberRuntimeMixinsArray.objectAt(this, len - 1);
|
16610
16729
|
this.removeAt(len - 1, 1);
|
16611
16730
|
return ret;
|
16612
16731
|
},
|
@@ -16628,7 +16747,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
|
|
16628
16747
|
return null;
|
16629
16748
|
}
|
16630
16749
|
|
16631
|
-
var ret =
|
16750
|
+
var ret = _emberRuntimeMixinsArray.objectAt(this, 0);
|
16632
16751
|
this.removeAt(0);
|
16633
16752
|
return ret;
|
16634
16753
|
},
|
@@ -16731,7 +16850,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g
|
|
16731
16850
|
removeObject: function (obj) {
|
16732
16851
|
var loc = _emberMetalProperty_get.get(this, 'length') || 0;
|
16733
16852
|
while (--loc >= 0) {
|
16734
|
-
var curObject =
|
16853
|
+
var curObject = _emberRuntimeMixinsArray.objectAt(this, loc);
|
16735
16854
|
|
16736
16855
|
if (curObject === obj) {
|
16737
16856
|
this.removeAt(loc);
|
@@ -16913,8 +17032,9 @@ enifed('ember-runtime/mixins/observable', ['exports', 'ember-metal/debug', 'embe
|
|
16913
17032
|
|
16914
17033
|
## Observing Property Changes
|
16915
17034
|
|
16916
|
-
You typically observe property changes simply by
|
16917
|
-
|
17035
|
+
You typically observe property changes simply by using the `Ember.observer`
|
17036
|
+
function in classes that you write.
|
17037
|
+
|
16918
17038
|
For example:
|
16919
17039
|
|
16920
17040
|
```javascript
|
@@ -17939,7 +18059,7 @@ enifed('ember-runtime/system/application', ['exports', 'ember-runtime/system/nam
|
|
17939
18059
|
|
17940
18060
|
exports.default = _emberRuntimeSystemNamespace.default.extend();
|
17941
18061
|
});
|
17942
|
-
enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-runtime/utils', 'ember-metal/computed', 'ember-metal/mixin', 'ember-metal/property_events', 'ember-metal/error', 'ember-runtime/system/object', 'ember-runtime/mixins/mutable_array', 'ember-runtime/mixins/enumerable', 'ember-metal/alias'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberRuntimeUtils, _emberMetalComputed, _emberMetalMixin, _emberMetalProperty_events, _emberMetalError, _emberRuntimeSystemObject, _emberRuntimeMixinsMutable_array, _emberRuntimeMixinsEnumerable, _emberMetalAlias) {
|
18062
|
+
enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-runtime/utils', 'ember-metal/computed', 'ember-metal/mixin', 'ember-metal/property_events', 'ember-metal/error', 'ember-runtime/system/object', 'ember-runtime/mixins/mutable_array', 'ember-runtime/mixins/enumerable', 'ember-metal/alias', 'ember-runtime/mixins/array'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberRuntimeUtils, _emberMetalComputed, _emberMetalMixin, _emberMetalProperty_events, _emberMetalError, _emberRuntimeSystemObject, _emberRuntimeMixinsMutable_array, _emberRuntimeMixinsEnumerable, _emberMetalAlias, _emberRuntimeMixinsArray) {
|
17943
18063
|
'use strict';
|
17944
18064
|
|
17945
18065
|
/**
|
@@ -18024,7 +18144,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb
|
|
18024
18144
|
@private
|
18025
18145
|
*/
|
18026
18146
|
objectAtContent: function (idx) {
|
18027
|
-
return _emberMetalProperty_get.get(this, 'arrangedContent')
|
18147
|
+
return _emberRuntimeMixinsArray.objectAt(_emberMetalProperty_get.get(this, 'arrangedContent'), idx);
|
18028
18148
|
},
|
18029
18149
|
|
18030
18150
|
/**
|
@@ -18058,7 +18178,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb
|
|
18058
18178
|
var content = _emberMetalProperty_get.get(this, 'content');
|
18059
18179
|
|
18060
18180
|
if (content) {
|
18061
|
-
|
18181
|
+
_emberRuntimeMixinsArray.removeArrayObserver(content, this, {
|
18062
18182
|
willChange: 'contentArrayWillChange',
|
18063
18183
|
didChange: 'contentArrayDidChange'
|
18064
18184
|
});
|
@@ -18106,7 +18226,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb
|
|
18106
18226
|
if (content) {
|
18107
18227
|
_emberMetalDebug.assert('ArrayProxy expects an Array or Ember.ArrayProxy, but you passed ' + typeof content, _emberRuntimeUtils.isArray(content) || content.isDestroyed);
|
18108
18228
|
|
18109
|
-
|
18229
|
+
_emberRuntimeMixinsArray.addArrayObserver(content, this, {
|
18110
18230
|
willChange: 'contentArrayWillChange',
|
18111
18231
|
didChange: 'contentArrayDidChange'
|
18112
18232
|
});
|
@@ -18141,7 +18261,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb
|
|
18141
18261
|
if (arrangedContent) {
|
18142
18262
|
_emberMetalDebug.assert('ArrayProxy expects an Array or Ember.ArrayProxy, but you passed ' + typeof arrangedContent, _emberRuntimeUtils.isArray(arrangedContent) || arrangedContent.isDestroyed);
|
18143
18263
|
|
18144
|
-
|
18264
|
+
_emberRuntimeMixinsArray.addArrayObserver(arrangedContent, this, {
|
18145
18265
|
willChange: 'arrangedContentArrayWillChange',
|
18146
18266
|
didChange: 'arrangedContentArrayDidChange'
|
18147
18267
|
});
|
@@ -18152,7 +18272,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb
|
|
18152
18272
|
var arrangedContent = _emberMetalProperty_get.get(this, 'arrangedContent');
|
18153
18273
|
|
18154
18274
|
if (arrangedContent) {
|
18155
|
-
|
18275
|
+
_emberRuntimeMixinsArray.removeArrayObserver(arrangedContent, this, {
|
18156
18276
|
willChange: 'arrangedContentArrayWillChange',
|
18157
18277
|
didChange: 'arrangedContentArrayDidChange'
|
18158
18278
|
});
|
@@ -18225,7 +18345,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb
|
|
18225
18345
|
// Get a list of indices in original content to remove
|
18226
18346
|
for (i = start; i < start + len; i++) {
|
18227
18347
|
// Use arrangedContent here so we avoid confusion with objects transformed by objectAtContent
|
18228
|
-
indices.push(content.indexOf(
|
18348
|
+
indices.push(content.indexOf(_emberRuntimeMixinsArray.objectAt(arrangedContent, i)));
|
18229
18349
|
}
|
18230
18350
|
|
18231
18351
|
// Replace in reverse order since indices will change
|
@@ -19142,7 +19262,7 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-metal/debug', 'emb
|
|
19142
19262
|
@return {String} string representation
|
19143
19263
|
@public
|
19144
19264
|
*/
|
19145
|
-
enifed('ember-runtime/system/each_proxy', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/observer', 'ember-metal/property_events', 'ember-metal/empty_object'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberMetalObserver, _emberMetalProperty_events, _emberMetalEmpty_object) {
|
19265
|
+
enifed('ember-runtime/system/each_proxy', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/observer', 'ember-metal/property_events', 'ember-metal/empty_object', 'ember-runtime/mixins/array'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberMetalObserver, _emberMetalProperty_events, _emberMetalEmpty_object, _emberRuntimeMixinsArray) {
|
19146
19266
|
'use strict';
|
19147
19267
|
|
19148
19268
|
/**
|
@@ -19243,7 +19363,7 @@ enifed('ember-runtime/system/each_proxy', ['exports', 'ember-metal/debug', 'embe
|
|
19243
19363
|
|
19244
19364
|
function addObserverForContentKey(content, keyName, proxy, idx, loc) {
|
19245
19365
|
while (--loc >= idx) {
|
19246
|
-
var item =
|
19366
|
+
var item = _emberRuntimeMixinsArray.objectAt(content, loc);
|
19247
19367
|
if (item) {
|
19248
19368
|
_emberMetalDebug.assert('When using @each to observe the array ' + content + ', the array must return an object', typeof item === 'object');
|
19249
19369
|
_emberMetalObserver._addBeforeObserver(item, keyName, proxy, 'contentKeyWillChange');
|
@@ -19254,7 +19374,7 @@ enifed('ember-runtime/system/each_proxy', ['exports', 'ember-metal/debug', 'embe
|
|
19254
19374
|
|
19255
19375
|
function removeObserverForContentKey(content, keyName, proxy, idx, loc) {
|
19256
19376
|
while (--loc >= idx) {
|
19257
|
-
var item =
|
19377
|
+
var item = _emberRuntimeMixinsArray.objectAt(content, loc);
|
19258
19378
|
if (item) {
|
19259
19379
|
_emberMetalObserver._removeBeforeObserver(item, keyName, proxy, 'contentKeyWillChange');
|
19260
19380
|
_emberMetalObserver.removeObserver(item, keyName, proxy, 'contentKeyDidChange');
|