ember-source 2.0.2 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/dist/ember-template-compiler.js +1633 -1633
- data/dist/ember-testing.js +158 -159
- data/dist/ember.debug.js +8536 -8536
- data/dist/ember.js +8536 -8536
- data/dist/ember.min.js +14 -14
- data/dist/ember.prod.js +8510 -8510
- metadata +2 -3
- data/dist/version-test.js +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4dbb36593413117ee2571318d7fbf4cf4128492f
|
4
|
+
data.tar.gz: 4d0d079a59b73f06b0e59d698893762b0429b20e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff007605bf24cf686481ea9129a141b2e5a8041916a664806a57eea25ad4da8a93c4b5162af24f655beb0bcf99be42ae62b2c5bee0d91bf838f5b3d242644eb6
|
7
|
+
data.tar.gz: b89d50e5eccd49b6b6ce61411b621d380470cbb01ac6bec0276b80e216568c72af16d3f7b931bb808d8784e0e4a5334acb3b4b799ee7763217f76264f287ad06
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.0.
|
1
|
+
2.0.3
|
@@ -1,1164 +1,1078 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
* @copyright Copyright 2011-2015 Tilde Inc. and contributors
|
4
|
-
* Portions Copyright 2006-2011 Strobe Inc.
|
5
|
-
* Portions Copyright 2008-2011 Apple Inc. All rights reserved.
|
6
|
-
* @license Licensed under MIT license
|
7
|
-
* See https://raw.github.com/emberjs/ember.js/master/LICENSE
|
8
|
-
* @version 2.0.2
|
9
|
-
*/
|
10
|
-
|
11
|
-
(function() {
|
12
|
-
var enifed, requireModule, eriuqer, requirejs, Ember;
|
13
|
-
var mainContext = this;
|
14
|
-
|
15
|
-
(function() {
|
16
|
-
var isNode = typeof window === 'undefined' &&
|
17
|
-
typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';
|
1
|
+
enifed("backburner/binary-search", ["exports"], function (exports) {
|
2
|
+
"use strict";
|
18
3
|
|
19
|
-
|
20
|
-
Ember = this.Ember = this.Ember || {};
|
21
|
-
}
|
4
|
+
exports.default = binarySearch;
|
22
5
|
|
23
|
-
|
6
|
+
function binarySearch(time, timers) {
|
7
|
+
var start = 0;
|
8
|
+
var end = timers.length - 2;
|
9
|
+
var middle, l;
|
24
10
|
|
25
|
-
|
26
|
-
|
27
|
-
|
11
|
+
while (start < end) {
|
12
|
+
// since timers is an array of pairs 'l' will always
|
13
|
+
// be an integer
|
14
|
+
l = (end - start) / 2;
|
28
15
|
|
29
|
-
|
30
|
-
|
16
|
+
// compensate for the index in case even number
|
17
|
+
// of pairs inside timers
|
18
|
+
middle = start + l - l % 2;
|
31
19
|
|
32
|
-
if (
|
33
|
-
|
34
|
-
value.callback = deps;
|
20
|
+
if (time >= timers[middle]) {
|
21
|
+
start = middle + 2;
|
35
22
|
} else {
|
36
|
-
|
37
|
-
value.callback = callback;
|
23
|
+
end = middle;
|
38
24
|
}
|
25
|
+
}
|
39
26
|
|
40
|
-
|
41
|
-
|
27
|
+
return time >= timers[start] ? start + 2 : start;
|
28
|
+
}
|
29
|
+
});
|
30
|
+
enifed('backburner/deferred-action-queues', ['exports', './utils', './queue'], function (exports, _utils, _queue) {
|
31
|
+
'use strict';
|
42
32
|
|
43
|
-
|
44
|
-
return internalRequire(name, null);
|
45
|
-
}
|
33
|
+
exports.default = DeferredActionQueues;
|
46
34
|
|
47
|
-
|
48
|
-
|
35
|
+
function DeferredActionQueues(queueNames, options) {
|
36
|
+
var queues = this.queues = {};
|
37
|
+
this.queueNames = queueNames = queueNames || [];
|
49
38
|
|
50
|
-
|
51
|
-
return exports;
|
52
|
-
}
|
39
|
+
this.options = options;
|
53
40
|
|
54
|
-
|
41
|
+
_utils.each(queueNames, function (queueName) {
|
42
|
+
queues[queueName] = new _queue.default(queueName, options[queueName], options);
|
43
|
+
});
|
44
|
+
}
|
55
45
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
} else {
|
60
|
-
throw new Error('Could not find module ' + name);
|
61
|
-
}
|
62
|
-
}
|
46
|
+
function noSuchQueue(name) {
|
47
|
+
throw new Error('You attempted to schedule an action in a queue (' + name + ') that doesn\'t exist');
|
48
|
+
}
|
63
49
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
var reified = [];
|
68
|
-
var length = deps.length;
|
50
|
+
function noSuchMethod(name) {
|
51
|
+
throw new Error('You attempted to schedule an action in a queue (' + name + ') for a method that doesn\'t exist');
|
52
|
+
}
|
69
53
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
reified.push(internalRequire(resolve(deps[i], name), name));
|
75
|
-
}
|
76
|
-
}
|
54
|
+
DeferredActionQueues.prototype = {
|
55
|
+
schedule: function (name, target, method, args, onceFlag, stack) {
|
56
|
+
var queues = this.queues;
|
57
|
+
var queue = queues[name];
|
77
58
|
|
78
|
-
|
59
|
+
if (!queue) {
|
60
|
+
noSuchQueue(name);
|
61
|
+
}
|
79
62
|
|
80
|
-
|
81
|
-
|
63
|
+
if (!method) {
|
64
|
+
noSuchMethod(name);
|
65
|
+
}
|
82
66
|
|
83
|
-
|
84
|
-
|
85
|
-
|
67
|
+
if (onceFlag) {
|
68
|
+
return queue.pushUnique(target, method, args, stack);
|
69
|
+
} else {
|
70
|
+
return queue.push(target, method, args, stack);
|
86
71
|
}
|
87
|
-
|
88
|
-
var parentBase = name.split('/').slice(0, -1);
|
72
|
+
},
|
89
73
|
|
90
|
-
|
91
|
-
|
74
|
+
flush: function () {
|
75
|
+
var queues = this.queues;
|
76
|
+
var queueNames = this.queueNames;
|
77
|
+
var queueName, queue, queueItems, priorQueueNameIndex;
|
78
|
+
var queueNameIndex = 0;
|
79
|
+
var numberOfQueues = queueNames.length;
|
80
|
+
var options = this.options;
|
92
81
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
82
|
+
while (queueNameIndex < numberOfQueues) {
|
83
|
+
queueName = queueNames[queueNameIndex];
|
84
|
+
queue = queues[queueName];
|
85
|
+
|
86
|
+
var numberOfQueueItems = queue._queue.length;
|
87
|
+
|
88
|
+
if (numberOfQueueItems === 0) {
|
89
|
+
queueNameIndex++;
|
97
90
|
} else {
|
98
|
-
|
91
|
+
queue.flush(false /* async */);
|
92
|
+
queueNameIndex = 0;
|
99
93
|
}
|
100
94
|
}
|
101
|
-
|
102
|
-
return parentBase.join('/');
|
103
95
|
}
|
96
|
+
};
|
97
|
+
});
|
98
|
+
enifed('backburner/platform', ['exports'], function (exports) {
|
99
|
+
// In IE 6-8, try/finally doesn't work without a catch.
|
100
|
+
// Unfortunately, this is impossible to test for since wrapping it in a parent try/catch doesn't trigger the bug.
|
101
|
+
// This tests for another broken try/catch behavior that only exhibits in the same versions of IE.
|
102
|
+
'use strict';
|
104
103
|
|
105
|
-
|
104
|
+
var needsIETryCatchFix = (function (e, x) {
|
105
|
+
try {
|
106
|
+
x();
|
107
|
+
} catch (e) {} // jshint ignore:line
|
108
|
+
return !!e;
|
109
|
+
})();
|
106
110
|
|
107
|
-
|
108
|
-
|
109
|
-
require: eriuqer,
|
110
|
-
registry: registry
|
111
|
-
};
|
112
|
-
} else {
|
113
|
-
enifed = Ember.__loader.define;
|
114
|
-
requirejs = eriuqer = requireModule = Ember.__loader.require;
|
115
|
-
}
|
116
|
-
})();
|
111
|
+
exports.needsIETryCatchFix = needsIETryCatchFix;
|
112
|
+
var platform;
|
117
113
|
|
118
|
-
|
114
|
+
/* global self */
|
115
|
+
if (typeof self === 'object') {
|
116
|
+
platform = self;
|
117
|
+
|
118
|
+
/* global global */
|
119
|
+
} else if (typeof global === 'object') {
|
120
|
+
platform = global;
|
121
|
+
} else {
|
122
|
+
throw new Error('no global: `self` or `global` found');
|
123
|
+
}
|
124
|
+
|
125
|
+
exports.default = platform;
|
126
|
+
});
|
127
|
+
enifed('backburner/queue', ['exports', './utils'], function (exports, _utils) {
|
119
128
|
'use strict';
|
120
129
|
|
121
|
-
exports.default =
|
130
|
+
exports.default = Queue;
|
122
131
|
|
123
|
-
function
|
124
|
-
this.
|
125
|
-
this.
|
126
|
-
|
127
|
-
|
128
|
-
}
|
129
|
-
this.
|
130
|
-
this._debouncees = [];
|
131
|
-
this._throttlers = [];
|
132
|
-
this._timers = [];
|
133
|
-
this._eventCallbacks = {
|
134
|
-
end: [],
|
135
|
-
begin: []
|
136
|
-
};
|
132
|
+
function Queue(name, options, globalOptions) {
|
133
|
+
this.name = name;
|
134
|
+
this.globalOptions = globalOptions || {};
|
135
|
+
this.options = options;
|
136
|
+
this._queue = [];
|
137
|
+
this.targetQueues = {};
|
138
|
+
this._queueBeingFlushed = undefined;
|
137
139
|
}
|
138
140
|
|
139
|
-
|
140
|
-
|
141
|
-
var
|
142
|
-
|
143
|
-
var previousInstance = this.currentInstance;
|
141
|
+
Queue.prototype = {
|
142
|
+
push: function (target, method, args, stack) {
|
143
|
+
var queue = this._queue;
|
144
|
+
queue.push(target, method, args, stack);
|
144
145
|
|
145
|
-
|
146
|
-
this
|
147
|
-
|
146
|
+
return {
|
147
|
+
queue: this,
|
148
|
+
target: target,
|
149
|
+
method: method
|
150
|
+
};
|
151
|
+
},
|
148
152
|
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
+
pushUniqueWithoutGuid: function (target, method, args, stack) {
|
154
|
+
var queue = this._queue;
|
155
|
+
|
156
|
+
for (var i = 0, l = queue.length; i < l; i += 4) {
|
157
|
+
var currentTarget = queue[i];
|
158
|
+
var currentMethod = queue[i + 1];
|
159
|
+
|
160
|
+
if (currentTarget === target && currentMethod === method) {
|
161
|
+
queue[i + 2] = args; // replace args
|
162
|
+
queue[i + 3] = stack; // replace stack
|
163
|
+
return;
|
164
|
+
}
|
153
165
|
}
|
166
|
+
|
167
|
+
queue.push(target, method, args, stack);
|
154
168
|
},
|
155
169
|
|
156
|
-
|
157
|
-
var
|
158
|
-
var onEnd = options && options.onEnd;
|
159
|
-
var currentInstance = this.currentInstance;
|
160
|
-
var nextInstance = null;
|
170
|
+
targetQueue: function (targetQueue, target, method, args, stack) {
|
171
|
+
var queue = this._queue;
|
161
172
|
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
try {
|
166
|
-
currentInstance.flush();
|
167
|
-
} finally {
|
168
|
-
if (!finallyAlreadyCalled) {
|
169
|
-
finallyAlreadyCalled = true;
|
170
|
-
|
171
|
-
this.currentInstance = null;
|
173
|
+
for (var i = 0, l = targetQueue.length; i < l; i += 2) {
|
174
|
+
var currentMethod = targetQueue[i];
|
175
|
+
var currentIndex = targetQueue[i + 1];
|
172
176
|
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
this._trigger('end', currentInstance, nextInstance);
|
178
|
-
if (onEnd) {
|
179
|
-
onEnd(currentInstance, nextInstance);
|
180
|
-
}
|
177
|
+
if (currentMethod === method) {
|
178
|
+
queue[currentIndex + 2] = args; // replace args
|
179
|
+
queue[currentIndex + 3] = stack; // replace stack
|
180
|
+
return;
|
181
181
|
}
|
182
182
|
}
|
183
|
-
},
|
184
183
|
|
185
|
-
|
186
|
-
Trigger an event. Supports up to two arguments. Designed around
|
187
|
-
triggering transition events from one run loop instance to the
|
188
|
-
next, which requires an argument for the first instance and then
|
189
|
-
an argument for the next instance.
|
190
|
-
@private
|
191
|
-
@method _trigger
|
192
|
-
@param {String} eventName
|
193
|
-
@param {any} arg1
|
194
|
-
@param {any} arg2
|
195
|
-
*/
|
196
|
-
_trigger: function (eventName, arg1, arg2) {
|
197
|
-
var callbacks = this._eventCallbacks[eventName];
|
198
|
-
if (callbacks) {
|
199
|
-
for (var i = 0; i < callbacks.length; i++) {
|
200
|
-
callbacks[i](arg1, arg2);
|
201
|
-
}
|
202
|
-
}
|
184
|
+
targetQueue.push(method, queue.push(target, method, args, stack) - 4);
|
203
185
|
},
|
204
186
|
|
205
|
-
|
206
|
-
|
207
|
-
throw new TypeError('Callback must be a function');
|
208
|
-
}
|
209
|
-
var callbacks = this._eventCallbacks[eventName];
|
210
|
-
if (callbacks) {
|
211
|
-
callbacks.push(callback);
|
212
|
-
} else {
|
213
|
-
throw new TypeError('Cannot on() event "' + eventName + '" because it does not exist');
|
214
|
-
}
|
215
|
-
},
|
187
|
+
pushUniqueWithGuid: function (guid, target, method, args, stack) {
|
188
|
+
var hasLocalQueue = this.targetQueues[guid];
|
216
189
|
|
217
|
-
|
218
|
-
|
219
|
-
var callbacks = this._eventCallbacks[eventName];
|
220
|
-
var callbackFound = false;
|
221
|
-
if (!callbacks) return;
|
222
|
-
if (callback) {
|
223
|
-
for (var i = 0; i < callbacks.length; i++) {
|
224
|
-
if (callbacks[i] === callback) {
|
225
|
-
callbackFound = true;
|
226
|
-
callbacks.splice(i, 1);
|
227
|
-
i--;
|
228
|
-
}
|
229
|
-
}
|
230
|
-
}
|
231
|
-
if (!callbackFound) {
|
232
|
-
throw new TypeError('Cannot off() callback that does not exist');
|
233
|
-
}
|
190
|
+
if (hasLocalQueue) {
|
191
|
+
this.targetQueue(hasLocalQueue, target, method, args, stack);
|
234
192
|
} else {
|
235
|
-
|
193
|
+
this.targetQueues[guid] = [method, this._queue.push(target, method, args, stack) - 4];
|
236
194
|
}
|
237
|
-
},
|
238
|
-
|
239
|
-
run: function () /* target, method, args */{
|
240
|
-
var length = arguments.length;
|
241
|
-
var method, target, args;
|
242
195
|
|
243
|
-
|
244
|
-
|
245
|
-
target
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
}
|
196
|
+
return {
|
197
|
+
queue: this,
|
198
|
+
target: target,
|
199
|
+
method: method
|
200
|
+
};
|
201
|
+
},
|
250
202
|
|
251
|
-
|
252
|
-
|
253
|
-
|
203
|
+
pushUnique: function (target, method, args, stack) {
|
204
|
+
var queue = this._queue,
|
205
|
+
currentTarget,
|
206
|
+
currentMethod,
|
207
|
+
i,
|
208
|
+
l;
|
209
|
+
var KEY = this.globalOptions.GUID_KEY;
|
254
210
|
|
255
|
-
if (
|
256
|
-
|
257
|
-
|
258
|
-
|
211
|
+
if (target && KEY) {
|
212
|
+
var guid = target[KEY];
|
213
|
+
if (guid) {
|
214
|
+
return this.pushUniqueWithGuid(guid, target, method, args, stack);
|
259
215
|
}
|
260
|
-
} else {
|
261
|
-
args = [];
|
262
216
|
}
|
263
217
|
|
264
|
-
|
265
|
-
|
266
|
-
this.begin();
|
218
|
+
this.pushUniqueWithoutGuid(target, method, args, stack);
|
267
219
|
|
268
|
-
|
269
|
-
|
220
|
+
return {
|
221
|
+
queue: this,
|
222
|
+
target: target,
|
223
|
+
method: method
|
224
|
+
};
|
225
|
+
},
|
270
226
|
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
} catch (error) {
|
275
|
-
onError(error);
|
276
|
-
} finally {
|
277
|
-
if (!didFinally) {
|
278
|
-
didFinally = true;
|
279
|
-
this.end();
|
280
|
-
}
|
281
|
-
}
|
227
|
+
invoke: function (target, method, args, _, _errorRecordedForStack) {
|
228
|
+
if (args && args.length > 0) {
|
229
|
+
method.apply(target, args);
|
282
230
|
} else {
|
283
|
-
|
284
|
-
return method.apply(target, args);
|
285
|
-
} finally {
|
286
|
-
if (!didFinally) {
|
287
|
-
didFinally = true;
|
288
|
-
this.end();
|
289
|
-
}
|
290
|
-
}
|
231
|
+
method.call(target);
|
291
232
|
}
|
292
233
|
},
|
293
234
|
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
if (length === 1) {
|
300
|
-
method = arguments[0];
|
301
|
-
target = null;
|
302
|
-
} else {
|
303
|
-
target = arguments[0];
|
304
|
-
method = arguments[1];
|
305
|
-
}
|
306
|
-
|
307
|
-
if (_backburnerUtils.isString(method)) {
|
308
|
-
method = target[method];
|
309
|
-
}
|
310
|
-
|
311
|
-
if (length === 1) {
|
312
|
-
return method();
|
313
|
-
} else if (length === 2) {
|
314
|
-
return method.call(target);
|
235
|
+
invokeWithOnError: function (target, method, args, onError, errorRecordedForStack) {
|
236
|
+
try {
|
237
|
+
if (args && args.length > 0) {
|
238
|
+
method.apply(target, args);
|
315
239
|
} else {
|
316
|
-
|
317
|
-
for (var i = 0, l = length - 2; i < l; i++) {
|
318
|
-
args[i] = arguments[i + 2];
|
319
|
-
}
|
320
|
-
return method.apply(target, args);
|
240
|
+
method.call(target);
|
321
241
|
}
|
322
|
-
}
|
323
|
-
|
242
|
+
} catch (error) {
|
243
|
+
onError(error, errorRecordedForStack);
|
324
244
|
}
|
325
245
|
},
|
326
246
|
|
327
|
-
|
328
|
-
var
|
329
|
-
var
|
247
|
+
flush: function (sync) {
|
248
|
+
var queue = this._queue;
|
249
|
+
var length = queue.length;
|
330
250
|
|
331
|
-
if (length ===
|
332
|
-
|
333
|
-
target = null;
|
334
|
-
} else {
|
335
|
-
target = arguments[1];
|
336
|
-
method = arguments[2];
|
251
|
+
if (length === 0) {
|
252
|
+
return;
|
337
253
|
}
|
338
254
|
|
339
|
-
|
340
|
-
|
255
|
+
var globalOptions = this.globalOptions;
|
256
|
+
var options = this.options;
|
257
|
+
var before = options && options.before;
|
258
|
+
var after = options && options.after;
|
259
|
+
var onError = globalOptions.onError || globalOptions.onErrorTarget && globalOptions.onErrorTarget[globalOptions.onErrorMethod];
|
260
|
+
var target, method, args, errorRecordedForStack;
|
261
|
+
var invoke = onError ? this.invokeWithOnError : this.invoke;
|
262
|
+
|
263
|
+
this.targetQueues = Object.create(null);
|
264
|
+
var queueItems = this._queueBeingFlushed = this._queue.slice();
|
265
|
+
this._queue = [];
|
266
|
+
|
267
|
+
if (before) {
|
268
|
+
before();
|
341
269
|
}
|
342
270
|
|
343
|
-
var
|
271
|
+
for (var i = 0; i < length; i += 4) {
|
272
|
+
target = queueItems[i];
|
273
|
+
method = queueItems[i + 1];
|
274
|
+
args = queueItems[i + 2];
|
275
|
+
errorRecordedForStack = queueItems[i + 3]; // Debugging assistance
|
344
276
|
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
277
|
+
if (_utils.isString(method)) {
|
278
|
+
method = target[method];
|
279
|
+
}
|
280
|
+
|
281
|
+
// method could have been nullified / canceled during flush
|
282
|
+
if (method) {
|
283
|
+
//
|
284
|
+
// ** Attention intrepid developer **
|
285
|
+
//
|
286
|
+
// To find out the stack of this task when it was scheduled onto
|
287
|
+
// the run loop, add the following to your app.js:
|
288
|
+
//
|
289
|
+
// Ember.run.backburner.DEBUG = true; // NOTE: This slows your app, don't leave it on in production.
|
290
|
+
//
|
291
|
+
// Once that is in place, when you are at a breakpoint and navigate
|
292
|
+
// here in the stack explorer, you can look at `errorRecordedForStack.stack`,
|
293
|
+
// which will be the captured stack when this job was scheduled.
|
294
|
+
//
|
295
|
+
invoke(target, method, args, onError, errorRecordedForStack);
|
349
296
|
}
|
350
|
-
} else {
|
351
|
-
args = undefined;
|
352
297
|
}
|
353
298
|
|
354
|
-
if (
|
355
|
-
|
299
|
+
if (after) {
|
300
|
+
after();
|
356
301
|
}
|
357
|
-
return this.currentInstance.schedule(queueName, target, method, args, false, stack);
|
358
|
-
},
|
359
302
|
|
360
|
-
|
361
|
-
var length = arguments.length;
|
362
|
-
var method, target, args;
|
303
|
+
this._queueBeingFlushed = undefined;
|
363
304
|
|
364
|
-
if (length
|
365
|
-
|
366
|
-
|
367
|
-
} else {
|
368
|
-
target = arguments[1];
|
369
|
-
method = arguments[2];
|
305
|
+
if (sync !== false && this._queue.length > 0) {
|
306
|
+
// check if new items have been added
|
307
|
+
this.flush(true);
|
370
308
|
}
|
309
|
+
},
|
371
310
|
|
372
|
-
|
373
|
-
|
374
|
-
|
311
|
+
cancel: function (actionToCancel) {
|
312
|
+
var queue = this._queue,
|
313
|
+
currentTarget,
|
314
|
+
currentMethod,
|
315
|
+
i,
|
316
|
+
l;
|
317
|
+
var target = actionToCancel.target;
|
318
|
+
var method = actionToCancel.method;
|
319
|
+
var GUID_KEY = this.globalOptions.GUID_KEY;
|
375
320
|
|
376
|
-
|
321
|
+
if (GUID_KEY && this.targetQueues && target) {
|
322
|
+
var targetQueue = this.targetQueues[target[GUID_KEY]];
|
377
323
|
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
324
|
+
if (targetQueue) {
|
325
|
+
for (i = 0, l = targetQueue.length; i < l; i++) {
|
326
|
+
if (targetQueue[i] === method) {
|
327
|
+
targetQueue.splice(i, 1);
|
328
|
+
}
|
329
|
+
}
|
382
330
|
}
|
383
|
-
} else {
|
384
|
-
args = undefined;
|
385
|
-
}
|
386
|
-
|
387
|
-
if (!this.currentInstance) {
|
388
|
-
createAutorun(this);
|
389
331
|
}
|
390
|
-
return this.currentInstance.schedule(queueName, target, method, args, true, stack);
|
391
|
-
},
|
392
332
|
|
393
|
-
|
394
|
-
|
395
|
-
|
333
|
+
for (i = 0, l = queue.length; i < l; i += 4) {
|
334
|
+
currentTarget = queue[i];
|
335
|
+
currentMethod = queue[i + 1];
|
396
336
|
|
397
|
-
|
398
|
-
|
337
|
+
if (currentTarget === target && currentMethod === method) {
|
338
|
+
queue.splice(i, 4);
|
339
|
+
return true;
|
340
|
+
}
|
399
341
|
}
|
400
342
|
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
target,
|
405
|
-
methodOrTarget,
|
406
|
-
methodOrWait,
|
407
|
-
methodOrArgs;
|
343
|
+
// if not found in current queue
|
344
|
+
// could be in the queue that is being flushed
|
345
|
+
queue = this._queueBeingFlushed;
|
408
346
|
|
409
|
-
if (
|
347
|
+
if (!queue) {
|
410
348
|
return;
|
411
|
-
}
|
412
|
-
method = args.shift();
|
413
|
-
wait = 0;
|
414
|
-
} else if (length === 2) {
|
415
|
-
methodOrTarget = args[0];
|
416
|
-
methodOrWait = args[1];
|
417
|
-
|
418
|
-
if (_backburnerUtils.isFunction(methodOrWait) || _backburnerUtils.isFunction(methodOrTarget[methodOrWait])) {
|
419
|
-
target = args.shift();
|
420
|
-
method = args.shift();
|
421
|
-
wait = 0;
|
422
|
-
} else if (_backburnerUtils.isCoercableNumber(methodOrWait)) {
|
423
|
-
method = args.shift();
|
424
|
-
wait = args.shift();
|
425
|
-
} else {
|
426
|
-
method = args.shift();
|
427
|
-
wait = 0;
|
428
|
-
}
|
429
|
-
} else {
|
430
|
-
var last = args[args.length - 1];
|
431
|
-
|
432
|
-
if (_backburnerUtils.isCoercableNumber(last)) {
|
433
|
-
wait = args.pop();
|
434
|
-
} else {
|
435
|
-
wait = 0;
|
436
|
-
}
|
349
|
+
}
|
437
350
|
|
438
|
-
|
439
|
-
|
351
|
+
for (i = 0, l = queue.length; i < l; i += 4) {
|
352
|
+
currentTarget = queue[i];
|
353
|
+
currentMethod = queue[i + 1];
|
440
354
|
|
441
|
-
if (
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
355
|
+
if (currentTarget === target && currentMethod === method) {
|
356
|
+
// don't mess with array during flush
|
357
|
+
// just nullify the method
|
358
|
+
queue[i + 1] = null;
|
359
|
+
return true;
|
446
360
|
}
|
447
361
|
}
|
362
|
+
}
|
363
|
+
};
|
364
|
+
});
|
365
|
+
enifed('backburner/utils', ['exports'], function (exports) {
|
366
|
+
'use strict';
|
448
367
|
|
449
|
-
|
368
|
+
exports.each = each;
|
369
|
+
exports.isString = isString;
|
370
|
+
exports.isFunction = isFunction;
|
371
|
+
exports.isNumber = isNumber;
|
372
|
+
exports.isCoercableNumber = isCoercableNumber;
|
373
|
+
exports.wrapInTryCatch = wrapInTryCatch;
|
374
|
+
var NUMBER = /\d+/;
|
450
375
|
|
451
|
-
|
452
|
-
|
453
|
-
|
376
|
+
function each(collection, callback) {
|
377
|
+
for (var i = 0; i < collection.length; i++) {
|
378
|
+
callback(collection[i]);
|
379
|
+
}
|
380
|
+
}
|
454
381
|
|
455
|
-
|
382
|
+
// Date.now is not available in browsers < IE9
|
383
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now#Compatibility
|
384
|
+
var now = Date.now || function () {
|
385
|
+
return new Date().getTime();
|
386
|
+
};
|
456
387
|
|
457
|
-
|
458
|
-
if (onError) {
|
459
|
-
try {
|
460
|
-
method.apply(target, args);
|
461
|
-
} catch (e) {
|
462
|
-
onError(e);
|
463
|
-
}
|
464
|
-
} else {
|
465
|
-
method.apply(target, args);
|
466
|
-
}
|
467
|
-
}
|
388
|
+
exports.now = now;
|
468
389
|
|
469
|
-
|
470
|
-
|
390
|
+
function isString(suspect) {
|
391
|
+
return typeof suspect === 'string';
|
392
|
+
}
|
471
393
|
|
472
|
-
|
394
|
+
function isFunction(suspect) {
|
395
|
+
return typeof suspect === 'function';
|
396
|
+
}
|
473
397
|
|
474
|
-
|
398
|
+
function isNumber(suspect) {
|
399
|
+
return typeof suspect === 'number';
|
400
|
+
}
|
475
401
|
|
476
|
-
|
477
|
-
|
402
|
+
function isCoercableNumber(number) {
|
403
|
+
return isNumber(number) || NUMBER.test(number);
|
404
|
+
}
|
478
405
|
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
406
|
+
function wrapInTryCatch(func) {
|
407
|
+
return function () {
|
408
|
+
try {
|
409
|
+
return func.apply(this, arguments);
|
410
|
+
} catch (e) {
|
411
|
+
throw e;
|
484
412
|
}
|
485
|
-
|
486
|
-
|
413
|
+
};
|
414
|
+
}
|
415
|
+
});
|
416
|
+
enifed('backburner', ['exports', './backburner/utils', './backburner/platform', './backburner/binary-search', './backburner/deferred-action-queues'], function (exports, _backburnerUtils, _backburnerPlatform, _backburnerBinarySearch, _backburnerDeferredActionQueues) {
|
417
|
+
'use strict';
|
487
418
|
|
488
|
-
|
489
|
-
wait = immediate;
|
490
|
-
immediate = true;
|
491
|
-
} else {
|
492
|
-
wait = args.pop();
|
493
|
-
}
|
419
|
+
exports.default = Backburner;
|
494
420
|
|
495
|
-
|
421
|
+
function Backburner(queueNames, options) {
|
422
|
+
this.queueNames = queueNames;
|
423
|
+
this.options = options || {};
|
424
|
+
if (!this.options.defaultQueue) {
|
425
|
+
this.options.defaultQueue = queueNames[0];
|
426
|
+
}
|
427
|
+
this.instanceStack = [];
|
428
|
+
this._debouncees = [];
|
429
|
+
this._throttlers = [];
|
430
|
+
this._timers = [];
|
431
|
+
this._eventCallbacks = {
|
432
|
+
end: [],
|
433
|
+
begin: []
|
434
|
+
};
|
435
|
+
}
|
496
436
|
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
437
|
+
Backburner.prototype = {
|
438
|
+
begin: function () {
|
439
|
+
var options = this.options;
|
440
|
+
var onBegin = options && options.onBegin;
|
441
|
+
var previousInstance = this.currentInstance;
|
501
442
|
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
}
|
506
|
-
var index = findThrottler(target, method, backburner._throttlers);
|
507
|
-
if (index > -1) {
|
508
|
-
backburner._throttlers.splice(index, 1);
|
509
|
-
}
|
510
|
-
}, wait);
|
443
|
+
if (previousInstance) {
|
444
|
+
this.instanceStack.push(previousInstance);
|
445
|
+
}
|
511
446
|
|
512
|
-
|
513
|
-
|
447
|
+
this.currentInstance = new _backburnerDeferredActionQueues.default(this.queueNames, options);
|
448
|
+
this._trigger('begin', this.currentInstance, previousInstance);
|
449
|
+
if (onBegin) {
|
450
|
+
onBegin(this.currentInstance, previousInstance);
|
514
451
|
}
|
452
|
+
},
|
515
453
|
|
516
|
-
|
454
|
+
end: function () {
|
455
|
+
var options = this.options;
|
456
|
+
var onEnd = options && options.onEnd;
|
457
|
+
var currentInstance = this.currentInstance;
|
458
|
+
var nextInstance = null;
|
517
459
|
|
518
|
-
|
460
|
+
// Prevent double-finally bug in Safari 6.0.2 and iOS 6
|
461
|
+
// This bug appears to be resolved in Safari 6.0.5 and iOS 7
|
462
|
+
var finallyAlreadyCalled = false;
|
463
|
+
try {
|
464
|
+
currentInstance.flush();
|
465
|
+
} finally {
|
466
|
+
if (!finallyAlreadyCalled) {
|
467
|
+
finallyAlreadyCalled = true;
|
519
468
|
|
520
|
-
|
521
|
-
},
|
469
|
+
this.currentInstance = null;
|
522
470
|
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
if (_backburnerUtils.isNumber(immediate) || _backburnerUtils.isString(immediate)) {
|
534
|
-
wait = immediate;
|
535
|
-
immediate = false;
|
536
|
-
} else {
|
537
|
-
wait = args.pop();
|
538
|
-
}
|
539
|
-
|
540
|
-
wait = parseInt(wait, 10);
|
541
|
-
// Remove debouncee
|
542
|
-
index = findDebouncee(target, method, this._debouncees);
|
543
|
-
|
544
|
-
if (index > -1) {
|
545
|
-
debouncee = this._debouncees[index];
|
546
|
-
this._debouncees.splice(index, 1);
|
547
|
-
clearTimeout(debouncee[2]);
|
471
|
+
if (this.instanceStack.length) {
|
472
|
+
nextInstance = this.instanceStack.pop();
|
473
|
+
this.currentInstance = nextInstance;
|
474
|
+
}
|
475
|
+
this._trigger('end', currentInstance, nextInstance);
|
476
|
+
if (onEnd) {
|
477
|
+
onEnd(currentInstance, nextInstance);
|
478
|
+
}
|
479
|
+
}
|
548
480
|
}
|
481
|
+
},
|
549
482
|
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
483
|
+
/**
|
484
|
+
Trigger an event. Supports up to two arguments. Designed around
|
485
|
+
triggering transition events from one run loop instance to the
|
486
|
+
next, which requires an argument for the first instance and then
|
487
|
+
an argument for the next instance.
|
488
|
+
@private
|
489
|
+
@method _trigger
|
490
|
+
@param {String} eventName
|
491
|
+
@param {any} arg1
|
492
|
+
@param {any} arg2
|
493
|
+
*/
|
494
|
+
_trigger: function (eventName, arg1, arg2) {
|
495
|
+
var callbacks = this._eventCallbacks[eventName];
|
496
|
+
if (callbacks) {
|
497
|
+
for (var i = 0; i < callbacks.length; i++) {
|
498
|
+
callbacks[i](arg1, arg2);
|
557
499
|
}
|
558
|
-
}, wait);
|
559
|
-
|
560
|
-
if (immediate && index === -1) {
|
561
|
-
backburner.run.apply(backburner, args);
|
562
500
|
}
|
563
|
-
|
564
|
-
debouncee = [target, method, timer];
|
565
|
-
|
566
|
-
backburner._debouncees.push(debouncee);
|
567
|
-
|
568
|
-
return debouncee;
|
569
501
|
},
|
570
502
|
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
};
|
575
|
-
|
576
|
-
_backburnerUtils.each(this._throttlers, clearItems);
|
577
|
-
this._throttlers = [];
|
578
|
-
|
579
|
-
_backburnerUtils.each(this._debouncees, clearItems);
|
580
|
-
this._debouncees = [];
|
581
|
-
|
582
|
-
if (this._laterTimer) {
|
583
|
-
clearTimeout(this._laterTimer);
|
584
|
-
this._laterTimer = null;
|
503
|
+
on: function (eventName, callback) {
|
504
|
+
if (typeof callback !== 'function') {
|
505
|
+
throw new TypeError('Callback must be a function');
|
585
506
|
}
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
507
|
+
var callbacks = this._eventCallbacks[eventName];
|
508
|
+
if (callbacks) {
|
509
|
+
callbacks.push(callback);
|
510
|
+
} else {
|
511
|
+
throw new TypeError('Cannot on() event "' + eventName + '" because it does not exist');
|
591
512
|
}
|
592
513
|
},
|
593
514
|
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
// we're cancelling a setTimeout
|
606
|
-
for (var i = 0, l = this._timers.length; i < l; i += 2) {
|
607
|
-
if (this._timers[i + 1] === timer) {
|
608
|
-
this._timers.splice(i, 2); // remove the two elements
|
609
|
-
if (i === 0) {
|
610
|
-
if (this._laterTimer) {
|
611
|
-
// Active timer? Then clear timer and reset for future timer
|
612
|
-
clearTimeout(this._laterTimer);
|
613
|
-
this._laterTimer = null;
|
614
|
-
}
|
615
|
-
if (this._timers.length > 0) {
|
616
|
-
// Update to next available timer when available
|
617
|
-
updateLaterTimer(this, this._timers[0], this._timers[0] - _backburnerUtils.now());
|
618
|
-
}
|
515
|
+
off: function (eventName, callback) {
|
516
|
+
if (eventName) {
|
517
|
+
var callbacks = this._eventCallbacks[eventName];
|
518
|
+
var callbackFound = false;
|
519
|
+
if (!callbacks) return;
|
520
|
+
if (callback) {
|
521
|
+
for (var i = 0; i < callbacks.length; i++) {
|
522
|
+
if (callbacks[i] === callback) {
|
523
|
+
callbackFound = true;
|
524
|
+
callbacks.splice(i, 1);
|
525
|
+
i--;
|
619
526
|
}
|
620
|
-
return true;
|
621
527
|
}
|
622
528
|
}
|
623
|
-
|
624
|
-
|
625
|
-
|
529
|
+
if (!callbackFound) {
|
530
|
+
throw new TypeError('Cannot off() callback that does not exist');
|
531
|
+
}
|
626
532
|
} else {
|
627
|
-
|
533
|
+
throw new TypeError('Cannot off() event "' + eventName + '" because it does not exist');
|
628
534
|
}
|
629
535
|
},
|
630
536
|
|
631
|
-
|
632
|
-
var
|
537
|
+
run: function () /* target, method, args */{
|
538
|
+
var length = arguments.length;
|
539
|
+
var method, target, args;
|
633
540
|
|
634
|
-
if (
|
635
|
-
|
541
|
+
if (length === 1) {
|
542
|
+
method = arguments[0];
|
543
|
+
target = null;
|
544
|
+
} else {
|
545
|
+
target = arguments[0];
|
546
|
+
method = arguments[1];
|
636
547
|
}
|
637
548
|
|
638
|
-
|
639
|
-
|
640
|
-
|
641
|
-
|
642
|
-
item = array[index];
|
549
|
+
if (_backburnerUtils.isString(method)) {
|
550
|
+
method = target[method];
|
551
|
+
}
|
643
552
|
|
644
|
-
|
645
|
-
|
646
|
-
|
647
|
-
|
553
|
+
if (length > 2) {
|
554
|
+
args = new Array(length - 2);
|
555
|
+
for (var i = 0, l = length - 2; i < l; i++) {
|
556
|
+
args[i] = arguments[i + 2];
|
648
557
|
}
|
558
|
+
} else {
|
559
|
+
args = [];
|
649
560
|
}
|
650
561
|
|
651
|
-
|
652
|
-
}
|
653
|
-
};
|
654
|
-
|
655
|
-
Backburner.prototype.schedule = Backburner.prototype.defer;
|
656
|
-
Backburner.prototype.scheduleOnce = Backburner.prototype.deferOnce;
|
657
|
-
Backburner.prototype.later = Backburner.prototype.setTimeout;
|
658
|
-
|
659
|
-
if (_backburnerPlatform.needsIETryCatchFix) {
|
660
|
-
var originalRun = Backburner.prototype.run;
|
661
|
-
Backburner.prototype.run = _backburnerUtils.wrapInTryCatch(originalRun);
|
662
|
-
|
663
|
-
var originalEnd = Backburner.prototype.end;
|
664
|
-
Backburner.prototype.end = _backburnerUtils.wrapInTryCatch(originalEnd);
|
665
|
-
}
|
666
|
-
|
667
|
-
function getOnError(options) {
|
668
|
-
return options.onError || options.onErrorTarget && options.onErrorTarget[options.onErrorMethod];
|
669
|
-
}
|
670
|
-
|
671
|
-
function createAutorun(backburner) {
|
672
|
-
backburner.begin();
|
673
|
-
backburner._autorun = _backburnerPlatform.default.setTimeout(function () {
|
674
|
-
backburner._autorun = null;
|
675
|
-
backburner.end();
|
676
|
-
});
|
677
|
-
}
|
562
|
+
var onError = getOnError(this.options);
|
678
563
|
|
679
|
-
|
680
|
-
var n = _backburnerUtils.now();
|
681
|
-
if (!backburner._laterTimer || executeAt < backburner._laterTimerExpiresAt || backburner._laterTimerExpiresAt < n) {
|
564
|
+
this.begin();
|
682
565
|
|
683
|
-
|
684
|
-
|
685
|
-
// - Already expired
|
686
|
-
// - New timer is earlier
|
687
|
-
clearTimeout(backburner._laterTimer);
|
566
|
+
// guard against Safari 6's double-finally bug
|
567
|
+
var didFinally = false;
|
688
568
|
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
569
|
+
if (onError) {
|
570
|
+
try {
|
571
|
+
return method.apply(target, args);
|
572
|
+
} catch (error) {
|
573
|
+
onError(error);
|
574
|
+
} finally {
|
575
|
+
if (!didFinally) {
|
576
|
+
didFinally = true;
|
577
|
+
this.end();
|
578
|
+
}
|
579
|
+
}
|
580
|
+
} else {
|
581
|
+
try {
|
582
|
+
return method.apply(target, args);
|
583
|
+
} finally {
|
584
|
+
if (!didFinally) {
|
585
|
+
didFinally = true;
|
586
|
+
this.end();
|
587
|
+
}
|
693
588
|
}
|
694
589
|
}
|
590
|
+
},
|
695
591
|
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
}, wait);
|
701
|
-
|
702
|
-
backburner._laterTimerExpiresAt = n + wait;
|
703
|
-
}
|
704
|
-
}
|
705
|
-
|
706
|
-
function executeTimers(backburner) {
|
707
|
-
var n = _backburnerUtils.now();
|
708
|
-
var fns, i, l;
|
592
|
+
join: function () /* target, method, args */{
|
593
|
+
if (this.currentInstance) {
|
594
|
+
var length = arguments.length;
|
595
|
+
var method, target;
|
709
596
|
|
710
|
-
|
711
|
-
|
597
|
+
if (length === 1) {
|
598
|
+
method = arguments[0];
|
599
|
+
target = null;
|
600
|
+
} else {
|
601
|
+
target = arguments[0];
|
602
|
+
method = arguments[1];
|
603
|
+
}
|
712
604
|
|
713
|
-
|
605
|
+
if (_backburnerUtils.isString(method)) {
|
606
|
+
method = target[method];
|
607
|
+
}
|
714
608
|
|
715
|
-
|
716
|
-
|
609
|
+
if (length === 1) {
|
610
|
+
return method();
|
611
|
+
} else if (length === 2) {
|
612
|
+
return method.call(target);
|
613
|
+
} else {
|
614
|
+
var args = new Array(length - 2);
|
615
|
+
for (var i = 0, l = length - 2; i < l; i++) {
|
616
|
+
args[i] = arguments[i + 2];
|
617
|
+
}
|
618
|
+
return method.apply(target, args);
|
619
|
+
}
|
620
|
+
} else {
|
621
|
+
return this.run.apply(this, arguments);
|
717
622
|
}
|
718
|
-
}
|
719
|
-
|
720
|
-
if (backburner._timers.length) {
|
721
|
-
updateLaterTimer(backburner, backburner._timers[0], backburner._timers[0] - n);
|
722
|
-
}
|
723
|
-
}
|
724
|
-
|
725
|
-
function findDebouncee(target, method, debouncees) {
|
726
|
-
return findItem(target, method, debouncees);
|
727
|
-
}
|
728
|
-
|
729
|
-
function findThrottler(target, method, throttlers) {
|
730
|
-
return findItem(target, method, throttlers);
|
731
|
-
}
|
623
|
+
},
|
732
624
|
|
733
|
-
|
734
|
-
|
735
|
-
|
625
|
+
defer: function (queueName /* , target, method, args */) {
|
626
|
+
var length = arguments.length;
|
627
|
+
var method, target, args;
|
736
628
|
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
629
|
+
if (length === 2) {
|
630
|
+
method = arguments[1];
|
631
|
+
target = null;
|
632
|
+
} else {
|
633
|
+
target = arguments[1];
|
634
|
+
method = arguments[2];
|
742
635
|
}
|
743
|
-
}
|
744
636
|
|
745
|
-
|
746
|
-
|
747
|
-
}
|
748
|
-
enifed("backburner/binary-search", ["exports"], function (exports) {
|
749
|
-
"use strict";
|
750
|
-
|
751
|
-
exports.default = binarySearch;
|
752
|
-
|
753
|
-
function binarySearch(time, timers) {
|
754
|
-
var start = 0;
|
755
|
-
var end = timers.length - 2;
|
756
|
-
var middle, l;
|
757
|
-
|
758
|
-
while (start < end) {
|
759
|
-
// since timers is an array of pairs 'l' will always
|
760
|
-
// be an integer
|
761
|
-
l = (end - start) / 2;
|
637
|
+
if (_backburnerUtils.isString(method)) {
|
638
|
+
method = target[method];
|
639
|
+
}
|
762
640
|
|
763
|
-
|
764
|
-
// of pairs inside timers
|
765
|
-
middle = start + l - l % 2;
|
641
|
+
var stack = this.DEBUG ? new Error() : undefined;
|
766
642
|
|
767
|
-
if (
|
768
|
-
|
643
|
+
if (length > 3) {
|
644
|
+
args = new Array(length - 3);
|
645
|
+
for (var i = 3; i < length; i++) {
|
646
|
+
args[i - 3] = arguments[i];
|
647
|
+
}
|
769
648
|
} else {
|
770
|
-
|
649
|
+
args = undefined;
|
771
650
|
}
|
772
|
-
}
|
773
|
-
|
774
|
-
return time >= timers[start] ? start + 2 : start;
|
775
|
-
}
|
776
|
-
});
|
777
|
-
enifed('backburner/deferred-action-queues', ['exports', './utils', './queue'], function (exports, _utils, _queue) {
|
778
|
-
'use strict';
|
779
|
-
|
780
|
-
exports.default = DeferredActionQueues;
|
781
|
-
|
782
|
-
function DeferredActionQueues(queueNames, options) {
|
783
|
-
var queues = this.queues = {};
|
784
|
-
this.queueNames = queueNames = queueNames || [];
|
785
651
|
|
786
|
-
|
787
|
-
|
788
|
-
_utils.each(queueNames, function (queueName) {
|
789
|
-
queues[queueName] = new _queue.default(queueName, options[queueName], options);
|
790
|
-
});
|
791
|
-
}
|
792
|
-
|
793
|
-
function noSuchQueue(name) {
|
794
|
-
throw new Error('You attempted to schedule an action in a queue (' + name + ') that doesn\'t exist');
|
795
|
-
}
|
796
|
-
|
797
|
-
function noSuchMethod(name) {
|
798
|
-
throw new Error('You attempted to schedule an action in a queue (' + name + ') for a method that doesn\'t exist');
|
799
|
-
}
|
800
|
-
|
801
|
-
DeferredActionQueues.prototype = {
|
802
|
-
schedule: function (name, target, method, args, onceFlag, stack) {
|
803
|
-
var queues = this.queues;
|
804
|
-
var queue = queues[name];
|
805
|
-
|
806
|
-
if (!queue) {
|
807
|
-
noSuchQueue(name);
|
652
|
+
if (!this.currentInstance) {
|
653
|
+
createAutorun(this);
|
808
654
|
}
|
655
|
+
return this.currentInstance.schedule(queueName, target, method, args, false, stack);
|
656
|
+
},
|
809
657
|
|
810
|
-
|
811
|
-
|
812
|
-
|
658
|
+
deferOnce: function (queueName /* , target, method, args */) {
|
659
|
+
var length = arguments.length;
|
660
|
+
var method, target, args;
|
813
661
|
|
814
|
-
if (
|
815
|
-
|
662
|
+
if (length === 2) {
|
663
|
+
method = arguments[1];
|
664
|
+
target = null;
|
816
665
|
} else {
|
817
|
-
|
666
|
+
target = arguments[1];
|
667
|
+
method = arguments[2];
|
818
668
|
}
|
819
|
-
},
|
820
|
-
|
821
|
-
flush: function () {
|
822
|
-
var queues = this.queues;
|
823
|
-
var queueNames = this.queueNames;
|
824
|
-
var queueName, queue, queueItems, priorQueueNameIndex;
|
825
|
-
var queueNameIndex = 0;
|
826
|
-
var numberOfQueues = queueNames.length;
|
827
|
-
var options = this.options;
|
828
|
-
|
829
|
-
while (queueNameIndex < numberOfQueues) {
|
830
|
-
queueName = queueNames[queueNameIndex];
|
831
|
-
queue = queues[queueName];
|
832
|
-
|
833
|
-
var numberOfQueueItems = queue._queue.length;
|
834
669
|
|
835
|
-
|
836
|
-
|
837
|
-
} else {
|
838
|
-
queue.flush(false /* async */);
|
839
|
-
queueNameIndex = 0;
|
840
|
-
}
|
670
|
+
if (_backburnerUtils.isString(method)) {
|
671
|
+
method = target[method];
|
841
672
|
}
|
842
|
-
}
|
843
|
-
};
|
844
|
-
});
|
845
|
-
enifed('backburner/platform', ['exports'], function (exports) {
|
846
|
-
// In IE 6-8, try/finally doesn't work without a catch.
|
847
|
-
// Unfortunately, this is impossible to test for since wrapping it in a parent try/catch doesn't trigger the bug.
|
848
|
-
// This tests for another broken try/catch behavior that only exhibits in the same versions of IE.
|
849
|
-
'use strict';
|
850
|
-
|
851
|
-
var needsIETryCatchFix = (function (e, x) {
|
852
|
-
try {
|
853
|
-
x();
|
854
|
-
} catch (e) {} // jshint ignore:line
|
855
|
-
return !!e;
|
856
|
-
})();
|
857
|
-
|
858
|
-
exports.needsIETryCatchFix = needsIETryCatchFix;
|
859
|
-
var platform;
|
860
673
|
|
861
|
-
|
862
|
-
if (typeof self === 'object') {
|
863
|
-
platform = self;
|
674
|
+
var stack = this.DEBUG ? new Error() : undefined;
|
864
675
|
|
865
|
-
|
866
|
-
|
867
|
-
|
868
|
-
|
869
|
-
|
870
|
-
|
676
|
+
if (length > 3) {
|
677
|
+
args = new Array(length - 3);
|
678
|
+
for (var i = 3; i < length; i++) {
|
679
|
+
args[i - 3] = arguments[i];
|
680
|
+
}
|
681
|
+
} else {
|
682
|
+
args = undefined;
|
683
|
+
}
|
871
684
|
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
|
685
|
+
if (!this.currentInstance) {
|
686
|
+
createAutorun(this);
|
687
|
+
}
|
688
|
+
return this.currentInstance.schedule(queueName, target, method, args, true, stack);
|
689
|
+
},
|
876
690
|
|
877
|
-
|
691
|
+
setTimeout: function () {
|
692
|
+
var l = arguments.length;
|
693
|
+
var args = new Array(l);
|
878
694
|
|
879
|
-
|
880
|
-
|
881
|
-
|
882
|
-
this.options = options;
|
883
|
-
this._queue = [];
|
884
|
-
this.targetQueues = {};
|
885
|
-
this._queueBeingFlushed = undefined;
|
886
|
-
}
|
695
|
+
for (var x = 0; x < l; x++) {
|
696
|
+
args[x] = arguments[x];
|
697
|
+
}
|
887
698
|
|
888
|
-
|
889
|
-
|
890
|
-
|
891
|
-
|
699
|
+
var length = args.length,
|
700
|
+
method,
|
701
|
+
wait,
|
702
|
+
target,
|
703
|
+
methodOrTarget,
|
704
|
+
methodOrWait,
|
705
|
+
methodOrArgs;
|
892
706
|
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
method
|
897
|
-
|
898
|
-
|
707
|
+
if (length === 0) {
|
708
|
+
return;
|
709
|
+
} else if (length === 1) {
|
710
|
+
method = args.shift();
|
711
|
+
wait = 0;
|
712
|
+
} else if (length === 2) {
|
713
|
+
methodOrTarget = args[0];
|
714
|
+
methodOrWait = args[1];
|
899
715
|
|
900
|
-
|
901
|
-
|
716
|
+
if (_backburnerUtils.isFunction(methodOrWait) || _backburnerUtils.isFunction(methodOrTarget[methodOrWait])) {
|
717
|
+
target = args.shift();
|
718
|
+
method = args.shift();
|
719
|
+
wait = 0;
|
720
|
+
} else if (_backburnerUtils.isCoercableNumber(methodOrWait)) {
|
721
|
+
method = args.shift();
|
722
|
+
wait = args.shift();
|
723
|
+
} else {
|
724
|
+
method = args.shift();
|
725
|
+
wait = 0;
|
726
|
+
}
|
727
|
+
} else {
|
728
|
+
var last = args[args.length - 1];
|
902
729
|
|
903
|
-
|
904
|
-
|
905
|
-
|
730
|
+
if (_backburnerUtils.isCoercableNumber(last)) {
|
731
|
+
wait = args.pop();
|
732
|
+
} else {
|
733
|
+
wait = 0;
|
734
|
+
}
|
906
735
|
|
907
|
-
|
908
|
-
|
909
|
-
|
910
|
-
|
736
|
+
methodOrTarget = args[0];
|
737
|
+
methodOrArgs = args[1];
|
738
|
+
|
739
|
+
if (_backburnerUtils.isFunction(methodOrArgs) || _backburnerUtils.isString(methodOrArgs) && methodOrTarget !== null && methodOrArgs in methodOrTarget) {
|
740
|
+
target = args.shift();
|
741
|
+
method = args.shift();
|
742
|
+
} else {
|
743
|
+
method = args.shift();
|
911
744
|
}
|
912
745
|
}
|
913
746
|
|
914
|
-
|
915
|
-
},
|
747
|
+
var executeAt = _backburnerUtils.now() + parseInt(wait, 10);
|
916
748
|
|
917
|
-
|
918
|
-
|
749
|
+
if (_backburnerUtils.isString(method)) {
|
750
|
+
method = target[method];
|
751
|
+
}
|
919
752
|
|
920
|
-
|
921
|
-
var currentMethod = targetQueue[i];
|
922
|
-
var currentIndex = targetQueue[i + 1];
|
753
|
+
var onError = getOnError(this.options);
|
923
754
|
|
924
|
-
|
925
|
-
|
926
|
-
|
927
|
-
|
755
|
+
function fn() {
|
756
|
+
if (onError) {
|
757
|
+
try {
|
758
|
+
method.apply(target, args);
|
759
|
+
} catch (e) {
|
760
|
+
onError(e);
|
761
|
+
}
|
762
|
+
} else {
|
763
|
+
method.apply(target, args);
|
928
764
|
}
|
929
765
|
}
|
930
766
|
|
931
|
-
|
767
|
+
// find position to insert
|
768
|
+
var i = _backburnerBinarySearch.default(executeAt, this._timers);
|
769
|
+
|
770
|
+
this._timers.splice(i, 0, executeAt, fn);
|
771
|
+
|
772
|
+
updateLaterTimer(this, executeAt, wait);
|
773
|
+
|
774
|
+
return fn;
|
932
775
|
},
|
933
776
|
|
934
|
-
|
935
|
-
var
|
777
|
+
throttle: function (target, method /* , args, wait, [immediate] */) {
|
778
|
+
var backburner = this;
|
779
|
+
var args = new Array(arguments.length);
|
780
|
+
for (var i = 0; i < arguments.length; i++) {
|
781
|
+
args[i] = arguments[i];
|
782
|
+
}
|
783
|
+
var immediate = args.pop();
|
784
|
+
var wait, throttler, index, timer;
|
936
785
|
|
937
|
-
if (
|
938
|
-
|
786
|
+
if (_backburnerUtils.isNumber(immediate) || _backburnerUtils.isString(immediate)) {
|
787
|
+
wait = immediate;
|
788
|
+
immediate = true;
|
939
789
|
} else {
|
940
|
-
|
790
|
+
wait = args.pop();
|
941
791
|
}
|
942
792
|
|
943
|
-
|
944
|
-
queue: this,
|
945
|
-
target: target,
|
946
|
-
method: method
|
947
|
-
};
|
948
|
-
},
|
793
|
+
wait = parseInt(wait, 10);
|
949
794
|
|
950
|
-
|
951
|
-
|
952
|
-
|
953
|
-
|
954
|
-
i,
|
955
|
-
l;
|
956
|
-
var KEY = this.globalOptions.GUID_KEY;
|
795
|
+
index = findThrottler(target, method, this._throttlers);
|
796
|
+
if (index > -1) {
|
797
|
+
return this._throttlers[index];
|
798
|
+
} // throttled
|
957
799
|
|
958
|
-
|
959
|
-
|
960
|
-
|
961
|
-
|
800
|
+
timer = _backburnerPlatform.default.setTimeout(function () {
|
801
|
+
if (!immediate) {
|
802
|
+
backburner.run.apply(backburner, args);
|
803
|
+
}
|
804
|
+
var index = findThrottler(target, method, backburner._throttlers);
|
805
|
+
if (index > -1) {
|
806
|
+
backburner._throttlers.splice(index, 1);
|
962
807
|
}
|
808
|
+
}, wait);
|
809
|
+
|
810
|
+
if (immediate) {
|
811
|
+
this.run.apply(this, args);
|
963
812
|
}
|
964
813
|
|
965
|
-
|
814
|
+
throttler = [target, method, timer];
|
966
815
|
|
967
|
-
|
968
|
-
|
969
|
-
|
970
|
-
method: method
|
971
|
-
};
|
816
|
+
this._throttlers.push(throttler);
|
817
|
+
|
818
|
+
return throttler;
|
972
819
|
},
|
973
820
|
|
974
|
-
|
975
|
-
|
976
|
-
|
821
|
+
debounce: function (target, method /* , args, wait, [immediate] */) {
|
822
|
+
var backburner = this;
|
823
|
+
var args = new Array(arguments.length);
|
824
|
+
for (var i = 0; i < arguments.length; i++) {
|
825
|
+
args[i] = arguments[i];
|
826
|
+
}
|
827
|
+
|
828
|
+
var immediate = args.pop();
|
829
|
+
var wait, index, debouncee, timer;
|
830
|
+
|
831
|
+
if (_backburnerUtils.isNumber(immediate) || _backburnerUtils.isString(immediate)) {
|
832
|
+
wait = immediate;
|
833
|
+
immediate = false;
|
977
834
|
} else {
|
978
|
-
|
835
|
+
wait = args.pop();
|
979
836
|
}
|
980
|
-
},
|
981
837
|
|
982
|
-
|
983
|
-
|
984
|
-
|
985
|
-
|
986
|
-
|
987
|
-
|
988
|
-
|
989
|
-
|
990
|
-
onError(error, errorRecordedForStack);
|
838
|
+
wait = parseInt(wait, 10);
|
839
|
+
// Remove debouncee
|
840
|
+
index = findDebouncee(target, method, this._debouncees);
|
841
|
+
|
842
|
+
if (index > -1) {
|
843
|
+
debouncee = this._debouncees[index];
|
844
|
+
this._debouncees.splice(index, 1);
|
845
|
+
clearTimeout(debouncee[2]);
|
991
846
|
}
|
992
|
-
},
|
993
847
|
|
994
|
-
|
995
|
-
|
996
|
-
|
848
|
+
timer = _backburnerPlatform.default.setTimeout(function () {
|
849
|
+
if (!immediate) {
|
850
|
+
backburner.run.apply(backburner, args);
|
851
|
+
}
|
852
|
+
var index = findDebouncee(target, method, backburner._debouncees);
|
853
|
+
if (index > -1) {
|
854
|
+
backburner._debouncees.splice(index, 1);
|
855
|
+
}
|
856
|
+
}, wait);
|
997
857
|
|
998
|
-
if (
|
999
|
-
|
858
|
+
if (immediate && index === -1) {
|
859
|
+
backburner.run.apply(backburner, args);
|
1000
860
|
}
|
1001
861
|
|
1002
|
-
|
1003
|
-
var options = this.options;
|
1004
|
-
var before = options && options.before;
|
1005
|
-
var after = options && options.after;
|
1006
|
-
var onError = globalOptions.onError || globalOptions.onErrorTarget && globalOptions.onErrorTarget[globalOptions.onErrorMethod];
|
1007
|
-
var target, method, args, errorRecordedForStack;
|
1008
|
-
var invoke = onError ? this.invokeWithOnError : this.invoke;
|
862
|
+
debouncee = [target, method, timer];
|
1009
863
|
|
1010
|
-
|
1011
|
-
var queueItems = this._queueBeingFlushed = this._queue.slice();
|
1012
|
-
this._queue = [];
|
864
|
+
backburner._debouncees.push(debouncee);
|
1013
865
|
|
1014
|
-
|
1015
|
-
|
1016
|
-
}
|
866
|
+
return debouncee;
|
867
|
+
},
|
1017
868
|
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
1022
|
-
errorRecordedForStack = queueItems[i + 3]; // Debugging assistance
|
869
|
+
cancelTimers: function () {
|
870
|
+
var clearItems = function (item) {
|
871
|
+
clearTimeout(item[2]);
|
872
|
+
};
|
1023
873
|
|
1024
|
-
|
1025
|
-
|
1026
|
-
}
|
874
|
+
_backburnerUtils.each(this._throttlers, clearItems);
|
875
|
+
this._throttlers = [];
|
1027
876
|
|
1028
|
-
|
1029
|
-
|
1030
|
-
//
|
1031
|
-
// ** Attention intrepid developer **
|
1032
|
-
//
|
1033
|
-
// To find out the stack of this task when it was scheduled onto
|
1034
|
-
// the run loop, add the following to your app.js:
|
1035
|
-
//
|
1036
|
-
// Ember.run.backburner.DEBUG = true; // NOTE: This slows your app, don't leave it on in production.
|
1037
|
-
//
|
1038
|
-
// Once that is in place, when you are at a breakpoint and navigate
|
1039
|
-
// here in the stack explorer, you can look at `errorRecordedForStack.stack`,
|
1040
|
-
// which will be the captured stack when this job was scheduled.
|
1041
|
-
//
|
1042
|
-
invoke(target, method, args, onError, errorRecordedForStack);
|
1043
|
-
}
|
1044
|
-
}
|
877
|
+
_backburnerUtils.each(this._debouncees, clearItems);
|
878
|
+
this._debouncees = [];
|
1045
879
|
|
1046
|
-
if (
|
1047
|
-
|
880
|
+
if (this._laterTimer) {
|
881
|
+
clearTimeout(this._laterTimer);
|
882
|
+
this._laterTimer = null;
|
1048
883
|
}
|
884
|
+
this._timers = [];
|
1049
885
|
|
1050
|
-
this.
|
1051
|
-
|
1052
|
-
|
1053
|
-
// check if new items have been added
|
1054
|
-
this.flush(true);
|
886
|
+
if (this._autorun) {
|
887
|
+
clearTimeout(this._autorun);
|
888
|
+
this._autorun = null;
|
1055
889
|
}
|
1056
890
|
},
|
1057
891
|
|
1058
|
-
|
1059
|
-
|
1060
|
-
|
1061
|
-
currentMethod,
|
1062
|
-
i,
|
1063
|
-
l;
|
1064
|
-
var target = actionToCancel.target;
|
1065
|
-
var method = actionToCancel.method;
|
1066
|
-
var GUID_KEY = this.globalOptions.GUID_KEY;
|
892
|
+
hasTimers: function () {
|
893
|
+
return !!this._timers.length || !!this._debouncees.length || !!this._throttlers.length || this._autorun;
|
894
|
+
},
|
1067
895
|
|
1068
|
-
|
1069
|
-
|
896
|
+
cancel: function (timer) {
|
897
|
+
var timerType = typeof timer;
|
1070
898
|
|
1071
|
-
|
1072
|
-
|
1073
|
-
|
1074
|
-
|
899
|
+
if (timer && timerType === 'object' && timer.queue && timer.method) {
|
900
|
+
// we're cancelling a deferOnce
|
901
|
+
return timer.queue.cancel(timer);
|
902
|
+
} else if (timerType === 'function') {
|
903
|
+
// we're cancelling a setTimeout
|
904
|
+
for (var i = 0, l = this._timers.length; i < l; i += 2) {
|
905
|
+
if (this._timers[i + 1] === timer) {
|
906
|
+
this._timers.splice(i, 2); // remove the two elements
|
907
|
+
if (i === 0) {
|
908
|
+
if (this._laterTimer) {
|
909
|
+
// Active timer? Then clear timer and reset for future timer
|
910
|
+
clearTimeout(this._laterTimer);
|
911
|
+
this._laterTimer = null;
|
912
|
+
}
|
913
|
+
if (this._timers.length > 0) {
|
914
|
+
// Update to next available timer when available
|
915
|
+
updateLaterTimer(this, this._timers[0], this._timers[0] - _backburnerUtils.now());
|
916
|
+
}
|
1075
917
|
}
|
918
|
+
return true;
|
1076
919
|
}
|
1077
920
|
}
|
921
|
+
} else if (Object.prototype.toString.call(timer) === '[object Array]') {
|
922
|
+
// we're cancelling a throttle or debounce
|
923
|
+
return this._cancelItem(findThrottler, this._throttlers, timer) || this._cancelItem(findDebouncee, this._debouncees, timer);
|
924
|
+
} else {
|
925
|
+
return; // timer was null or not a timer
|
1078
926
|
}
|
927
|
+
},
|
1079
928
|
|
1080
|
-
|
1081
|
-
|
1082
|
-
currentMethod = queue[i + 1];
|
929
|
+
_cancelItem: function (findMethod, array, timer) {
|
930
|
+
var item, index;
|
1083
931
|
|
1084
|
-
|
1085
|
-
|
1086
|
-
return true;
|
1087
|
-
}
|
932
|
+
if (timer.length < 3) {
|
933
|
+
return false;
|
1088
934
|
}
|
1089
935
|
|
1090
|
-
|
1091
|
-
// could be in the queue that is being flushed
|
1092
|
-
queue = this._queueBeingFlushed;
|
936
|
+
index = findMethod(timer[0], timer[1], array);
|
1093
937
|
|
1094
|
-
if (
|
1095
|
-
return;
|
1096
|
-
}
|
938
|
+
if (index > -1) {
|
1097
939
|
|
1098
|
-
|
1099
|
-
currentTarget = queue[i];
|
1100
|
-
currentMethod = queue[i + 1];
|
940
|
+
item = array[index];
|
1101
941
|
|
1102
|
-
if (
|
1103
|
-
|
1104
|
-
|
1105
|
-
queue[i + 1] = null;
|
942
|
+
if (item[2] === timer[2]) {
|
943
|
+
array.splice(index, 1);
|
944
|
+
clearTimeout(timer[2]);
|
1106
945
|
return true;
|
1107
946
|
}
|
1108
947
|
}
|
948
|
+
|
949
|
+
return false;
|
1109
950
|
}
|
1110
951
|
};
|
1111
|
-
});
|
1112
|
-
enifed('backburner/utils', ['exports'], function (exports) {
|
1113
|
-
'use strict';
|
1114
952
|
|
1115
|
-
|
1116
|
-
|
1117
|
-
|
1118
|
-
exports.isNumber = isNumber;
|
1119
|
-
exports.isCoercableNumber = isCoercableNumber;
|
1120
|
-
exports.wrapInTryCatch = wrapInTryCatch;
|
1121
|
-
var NUMBER = /\d+/;
|
953
|
+
Backburner.prototype.schedule = Backburner.prototype.defer;
|
954
|
+
Backburner.prototype.scheduleOnce = Backburner.prototype.deferOnce;
|
955
|
+
Backburner.prototype.later = Backburner.prototype.setTimeout;
|
1122
956
|
|
1123
|
-
|
1124
|
-
|
1125
|
-
|
957
|
+
if (_backburnerPlatform.needsIETryCatchFix) {
|
958
|
+
var originalRun = Backburner.prototype.run;
|
959
|
+
Backburner.prototype.run = _backburnerUtils.wrapInTryCatch(originalRun);
|
960
|
+
|
961
|
+
var originalEnd = Backburner.prototype.end;
|
962
|
+
Backburner.prototype.end = _backburnerUtils.wrapInTryCatch(originalEnd);
|
963
|
+
}
|
964
|
+
|
965
|
+
function getOnError(options) {
|
966
|
+
return options.onError || options.onErrorTarget && options.onErrorTarget[options.onErrorMethod];
|
967
|
+
}
|
968
|
+
|
969
|
+
function createAutorun(backburner) {
|
970
|
+
backburner.begin();
|
971
|
+
backburner._autorun = _backburnerPlatform.default.setTimeout(function () {
|
972
|
+
backburner._autorun = null;
|
973
|
+
backburner.end();
|
974
|
+
});
|
975
|
+
}
|
976
|
+
|
977
|
+
function updateLaterTimer(backburner, executeAt, wait) {
|
978
|
+
var n = _backburnerUtils.now();
|
979
|
+
if (!backburner._laterTimer || executeAt < backburner._laterTimerExpiresAt || backburner._laterTimerExpiresAt < n) {
|
980
|
+
|
981
|
+
if (backburner._laterTimer) {
|
982
|
+
// Clear when:
|
983
|
+
// - Already expired
|
984
|
+
// - New timer is earlier
|
985
|
+
clearTimeout(backburner._laterTimer);
|
986
|
+
|
987
|
+
if (backburner._laterTimerExpiresAt < n) {
|
988
|
+
// If timer was never triggered
|
989
|
+
// Calculate the left-over wait-time
|
990
|
+
wait = Math.max(0, executeAt - n);
|
991
|
+
}
|
992
|
+
}
|
993
|
+
|
994
|
+
backburner._laterTimer = _backburnerPlatform.default.setTimeout(function () {
|
995
|
+
backburner._laterTimer = null;
|
996
|
+
backburner._laterTimerExpiresAt = null;
|
997
|
+
executeTimers(backburner);
|
998
|
+
}, wait);
|
999
|
+
|
1000
|
+
backburner._laterTimerExpiresAt = n + wait;
|
1126
1001
|
}
|
1127
1002
|
}
|
1128
1003
|
|
1129
|
-
|
1130
|
-
|
1131
|
-
|
1132
|
-
return new Date().getTime();
|
1133
|
-
};
|
1004
|
+
function executeTimers(backburner) {
|
1005
|
+
var n = _backburnerUtils.now();
|
1006
|
+
var fns, i, l;
|
1134
1007
|
|
1135
|
-
|
1008
|
+
backburner.run(function () {
|
1009
|
+
i = _backburnerBinarySearch.default(n, backburner._timers);
|
1136
1010
|
|
1137
|
-
|
1138
|
-
|
1011
|
+
fns = backburner._timers.splice(0, i);
|
1012
|
+
|
1013
|
+
for (i = 1, l = fns.length; i < l; i += 2) {
|
1014
|
+
backburner.schedule(backburner.options.defaultQueue, null, fns[i]);
|
1015
|
+
}
|
1016
|
+
});
|
1017
|
+
|
1018
|
+
if (backburner._timers.length) {
|
1019
|
+
updateLaterTimer(backburner, backburner._timers[0], backburner._timers[0] - n);
|
1020
|
+
}
|
1139
1021
|
}
|
1140
1022
|
|
1141
|
-
function
|
1142
|
-
return
|
1023
|
+
function findDebouncee(target, method, debouncees) {
|
1024
|
+
return findItem(target, method, debouncees);
|
1143
1025
|
}
|
1144
1026
|
|
1145
|
-
function
|
1146
|
-
return
|
1027
|
+
function findThrottler(target, method, throttlers) {
|
1028
|
+
return findItem(target, method, throttlers);
|
1147
1029
|
}
|
1148
1030
|
|
1149
|
-
function
|
1150
|
-
|
1031
|
+
function findItem(target, method, collection) {
|
1032
|
+
var item;
|
1033
|
+
var index = -1;
|
1034
|
+
|
1035
|
+
for (var i = 0, l = collection.length; i < l; i++) {
|
1036
|
+
item = collection[i];
|
1037
|
+
if (item[0] === target && item[1] === method) {
|
1038
|
+
index = i;
|
1039
|
+
break;
|
1040
|
+
}
|
1041
|
+
}
|
1042
|
+
|
1043
|
+
return index;
|
1151
1044
|
}
|
1045
|
+
});
|
1046
|
+
requireModule("ember-debug");
|
1047
|
+
requireModule("ember-template-compiler");
|
1152
1048
|
|
1153
|
-
|
1154
|
-
|
1155
|
-
|
1156
|
-
|
1157
|
-
|
1158
|
-
|
1049
|
+
enifed('ember-debug/deprecation-manager', ['exports', 'ember-metal/dictionary', 'ember-metal/utils'], function (exports, _emberMetalDictionary, _emberMetalUtils) {
|
1050
|
+
'use strict';
|
1051
|
+
|
1052
|
+
var deprecationLevels = {
|
1053
|
+
RAISE: _emberMetalUtils.symbol('RAISE'),
|
1054
|
+
LOG: _emberMetalUtils.symbol('LOG'),
|
1055
|
+
SILENCE: _emberMetalUtils.symbol('SILENCE')
|
1056
|
+
};
|
1057
|
+
|
1058
|
+
exports.deprecationLevels = deprecationLevels;
|
1059
|
+
exports.default = {
|
1060
|
+
defaultLevel: deprecationLevels.LOG,
|
1061
|
+
individualLevels: _emberMetalDictionary.default(null),
|
1062
|
+
setDefaultLevel: function (level) {
|
1063
|
+
this.defaultLevel = level;
|
1064
|
+
},
|
1065
|
+
setLevel: function (id, level) {
|
1066
|
+
this.individualLevels[id] = level;
|
1067
|
+
},
|
1068
|
+
getLevel: function (id) {
|
1069
|
+
var level = this.individualLevels[id];
|
1070
|
+
if (!level) {
|
1071
|
+
level = this.defaultLevel;
|
1159
1072
|
}
|
1160
|
-
|
1161
|
-
|
1073
|
+
return level;
|
1074
|
+
}
|
1075
|
+
};
|
1162
1076
|
});
|
1163
1077
|
enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'ember-metal/error', 'ember-metal/logger', 'ember-debug/deprecation-manager', 'ember-metal/environment'], function (exports, _emberMetalCore, _emberMetalFeatures, _emberMetalError, _emberMetalLogger, _emberDebugDeprecationManager, _emberMetalEnvironment) {
|
1164
1078
|
/*global __fail__*/
|
@@ -1480,247 +1394,11 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
|
|
1480
1394
|
so that if `ember.js` (which must be output for backwards compat reasons) is
|
1481
1395
|
used a nice helpful warning message will be printed out.
|
1482
1396
|
*/
|
1483
|
-
var runningNonEmberDebugJS = false;
|
1484
|
-
exports.runningNonEmberDebugJS = runningNonEmberDebugJS;
|
1485
|
-
if (runningNonEmberDebugJS) {
|
1486
|
-
_emberMetalCore.default.warn('Please use `ember.debug.js` instead of `ember.js` for development and debugging.');
|
1487
|
-
}
|
1488
|
-
});
|
1489
|
-
enifed('ember-debug/deprecation-manager', ['exports', 'ember-metal/dictionary', 'ember-metal/utils'], function (exports, _emberMetalDictionary, _emberMetalUtils) {
|
1490
|
-
'use strict';
|
1491
|
-
|
1492
|
-
var deprecationLevels = {
|
1493
|
-
RAISE: _emberMetalUtils.symbol('RAISE'),
|
1494
|
-
LOG: _emberMetalUtils.symbol('LOG'),
|
1495
|
-
SILENCE: _emberMetalUtils.symbol('SILENCE')
|
1496
|
-
};
|
1497
|
-
|
1498
|
-
exports.deprecationLevels = deprecationLevels;
|
1499
|
-
exports.default = {
|
1500
|
-
defaultLevel: deprecationLevels.LOG,
|
1501
|
-
individualLevels: _emberMetalDictionary.default(null),
|
1502
|
-
setDefaultLevel: function (level) {
|
1503
|
-
this.defaultLevel = level;
|
1504
|
-
},
|
1505
|
-
setLevel: function (id, level) {
|
1506
|
-
this.individualLevels[id] = level;
|
1507
|
-
},
|
1508
|
-
getLevel: function (id) {
|
1509
|
-
var level = this.individualLevels[id];
|
1510
|
-
if (!level) {
|
1511
|
-
level = this.defaultLevel;
|
1512
|
-
}
|
1513
|
-
return level;
|
1514
|
-
}
|
1515
|
-
};
|
1516
|
-
});
|
1517
|
-
enifed('ember-metal', ['exports', 'ember-metal/core', 'ember-metal/features', 'ember-metal/merge', 'ember-metal/instrumentation', 'ember-metal/utils', 'ember-metal/error', 'ember-metal/cache', 'ember-metal/logger', 'ember-metal/property_get', 'ember-metal/events', 'ember-metal/observer_set', 'ember-metal/property_events', 'ember-metal/properties', 'ember-metal/property_set', 'ember-metal/map', 'ember-metal/get_properties', 'ember-metal/set_properties', 'ember-metal/watch_key', 'ember-metal/chains', 'ember-metal/watch_path', 'ember-metal/watching', 'ember-metal/expand_properties', 'ember-metal/computed', 'ember-metal/alias', 'ember-metal/computed_macros', 'ember-metal/observer', 'ember-metal/mixin', 'ember-metal/binding', 'ember-metal/run_loop', 'ember-metal/libraries', 'ember-metal/is_none', 'ember-metal/is_empty', 'ember-metal/is_blank', 'ember-metal/is_present', 'backburner', 'ember-metal/streams/utils', 'ember-metal/streams/stream'], function (exports, _emberMetalCore, _emberMetalFeatures, _emberMetalMerge, _emberMetalInstrumentation, _emberMetalUtils, _emberMetalError, _emberMetalCache, _emberMetalLogger, _emberMetalProperty_get, _emberMetalEvents, _emberMetalObserver_set, _emberMetalProperty_events, _emberMetalProperties, _emberMetalProperty_set, _emberMetalMap, _emberMetalGet_properties, _emberMetalSet_properties, _emberMetalWatch_key, _emberMetalChains, _emberMetalWatch_path, _emberMetalWatching, _emberMetalExpand_properties, _emberMetalComputed, _emberMetalAlias, _emberMetalComputed_macros, _emberMetalObserver, _emberMetalMixin, _emberMetalBinding, _emberMetalRun_loop, _emberMetalLibraries, _emberMetalIs_none, _emberMetalIs_empty, _emberMetalIs_blank, _emberMetalIs_present, _backburner, _emberMetalStreamsUtils, _emberMetalStreamsStream) {
|
1518
|
-
/**
|
1519
|
-
@module ember
|
1520
|
-
@submodule ember-metal
|
1521
|
-
*/
|
1522
|
-
|
1523
|
-
// BEGIN IMPORTS
|
1524
|
-
'use strict';
|
1525
|
-
|
1526
|
-
_emberMetalComputed.computed.empty = _emberMetalComputed_macros.empty;
|
1527
|
-
_emberMetalComputed.computed.notEmpty = _emberMetalComputed_macros.notEmpty;
|
1528
|
-
_emberMetalComputed.computed.none = _emberMetalComputed_macros.none;
|
1529
|
-
_emberMetalComputed.computed.not = _emberMetalComputed_macros.not;
|
1530
|
-
_emberMetalComputed.computed.bool = _emberMetalComputed_macros.bool;
|
1531
|
-
_emberMetalComputed.computed.match = _emberMetalComputed_macros.match;
|
1532
|
-
_emberMetalComputed.computed.equal = _emberMetalComputed_macros.equal;
|
1533
|
-
_emberMetalComputed.computed.gt = _emberMetalComputed_macros.gt;
|
1534
|
-
_emberMetalComputed.computed.gte = _emberMetalComputed_macros.gte;
|
1535
|
-
_emberMetalComputed.computed.lt = _emberMetalComputed_macros.lt;
|
1536
|
-
_emberMetalComputed.computed.lte = _emberMetalComputed_macros.lte;
|
1537
|
-
_emberMetalComputed.computed.alias = _emberMetalAlias.default;
|
1538
|
-
_emberMetalComputed.computed.oneWay = _emberMetalComputed_macros.oneWay;
|
1539
|
-
_emberMetalComputed.computed.reads = _emberMetalComputed_macros.oneWay;
|
1540
|
-
_emberMetalComputed.computed.readOnly = _emberMetalComputed_macros.readOnly;
|
1541
|
-
_emberMetalComputed.computed.defaultTo = _emberMetalComputed_macros.defaultTo;
|
1542
|
-
_emberMetalComputed.computed.deprecatingAlias = _emberMetalComputed_macros.deprecatingAlias;
|
1543
|
-
_emberMetalComputed.computed.and = _emberMetalComputed_macros.and;
|
1544
|
-
_emberMetalComputed.computed.or = _emberMetalComputed_macros.or;
|
1545
|
-
_emberMetalComputed.computed.any = _emberMetalComputed_macros.any;
|
1546
|
-
_emberMetalComputed.computed.collect = _emberMetalComputed_macros.collect;
|
1547
|
-
|
1548
|
-
// END IMPORTS
|
1549
|
-
|
1550
|
-
// BEGIN EXPORTS
|
1551
|
-
var EmberInstrumentation = _emberMetalCore.default.Instrumentation = {};
|
1552
|
-
EmberInstrumentation.instrument = _emberMetalInstrumentation.instrument;
|
1553
|
-
EmberInstrumentation.subscribe = _emberMetalInstrumentation.subscribe;
|
1554
|
-
EmberInstrumentation.unsubscribe = _emberMetalInstrumentation.unsubscribe;
|
1555
|
-
EmberInstrumentation.reset = _emberMetalInstrumentation.reset;
|
1556
|
-
|
1557
|
-
_emberMetalCore.default.instrument = _emberMetalInstrumentation.instrument;
|
1558
|
-
_emberMetalCore.default.subscribe = _emberMetalInstrumentation.subscribe;
|
1559
|
-
|
1560
|
-
_emberMetalCore.default._Cache = _emberMetalCache.default;
|
1561
|
-
|
1562
|
-
_emberMetalCore.default.generateGuid = _emberMetalUtils.generateGuid;
|
1563
|
-
_emberMetalCore.default.GUID_KEY = _emberMetalUtils.GUID_KEY;
|
1564
|
-
_emberMetalCore.default.platform = {
|
1565
|
-
defineProperty: true,
|
1566
|
-
hasPropertyAccessors: true
|
1567
|
-
};
|
1568
|
-
|
1569
|
-
_emberMetalCore.default.Error = _emberMetalError.default;
|
1570
|
-
_emberMetalCore.default.guidFor = _emberMetalUtils.guidFor;
|
1571
|
-
_emberMetalCore.default.META_DESC = _emberMetalUtils.META_DESC;
|
1572
|
-
_emberMetalCore.default.EMPTY_META = _emberMetalUtils.EMPTY_META;
|
1573
|
-
_emberMetalCore.default.meta = _emberMetalUtils.meta;
|
1574
|
-
_emberMetalCore.default.inspect = _emberMetalUtils.inspect;
|
1575
|
-
_emberMetalCore.default.tryCatchFinally = _emberMetalUtils.deprecatedTryCatchFinally;
|
1576
|
-
_emberMetalCore.default.makeArray = _emberMetalUtils.makeArray;
|
1577
|
-
_emberMetalCore.default.canInvoke = _emberMetalUtils.canInvoke;
|
1578
|
-
_emberMetalCore.default.tryInvoke = _emberMetalUtils.tryInvoke;
|
1579
|
-
_emberMetalCore.default.wrap = _emberMetalUtils.wrap;
|
1580
|
-
_emberMetalCore.default.apply = _emberMetalUtils.apply;
|
1581
|
-
_emberMetalCore.default.applyStr = _emberMetalUtils.applyStr;
|
1582
|
-
_emberMetalCore.default.uuid = _emberMetalUtils.uuid;
|
1583
|
-
|
1584
|
-
_emberMetalCore.default.Logger = _emberMetalLogger.default;
|
1585
|
-
|
1586
|
-
_emberMetalCore.default.get = _emberMetalProperty_get.get;
|
1587
|
-
_emberMetalCore.default.getWithDefault = _emberMetalProperty_get.getWithDefault;
|
1588
|
-
_emberMetalCore.default.normalizeTuple = _emberMetalProperty_get.normalizeTuple;
|
1589
|
-
_emberMetalCore.default._getPath = _emberMetalProperty_get._getPath;
|
1590
|
-
|
1591
|
-
_emberMetalCore.default.on = _emberMetalEvents.on;
|
1592
|
-
_emberMetalCore.default.addListener = _emberMetalEvents.addListener;
|
1593
|
-
_emberMetalCore.default.removeListener = _emberMetalEvents.removeListener;
|
1594
|
-
_emberMetalCore.default._suspendListener = _emberMetalEvents.suspendListener;
|
1595
|
-
_emberMetalCore.default._suspendListeners = _emberMetalEvents.suspendListeners;
|
1596
|
-
_emberMetalCore.default.sendEvent = _emberMetalEvents.sendEvent;
|
1597
|
-
_emberMetalCore.default.hasListeners = _emberMetalEvents.hasListeners;
|
1598
|
-
_emberMetalCore.default.watchedEvents = _emberMetalEvents.watchedEvents;
|
1599
|
-
_emberMetalCore.default.listenersFor = _emberMetalEvents.listenersFor;
|
1600
|
-
_emberMetalCore.default.accumulateListeners = _emberMetalEvents.accumulateListeners;
|
1601
|
-
|
1602
|
-
_emberMetalCore.default._ObserverSet = _emberMetalObserver_set.default;
|
1603
|
-
|
1604
|
-
_emberMetalCore.default.propertyWillChange = _emberMetalProperty_events.propertyWillChange;
|
1605
|
-
_emberMetalCore.default.propertyDidChange = _emberMetalProperty_events.propertyDidChange;
|
1606
|
-
_emberMetalCore.default.overrideChains = _emberMetalProperty_events.overrideChains;
|
1607
|
-
_emberMetalCore.default.beginPropertyChanges = _emberMetalProperty_events.beginPropertyChanges;
|
1608
|
-
_emberMetalCore.default.endPropertyChanges = _emberMetalProperty_events.endPropertyChanges;
|
1609
|
-
_emberMetalCore.default.changeProperties = _emberMetalProperty_events.changeProperties;
|
1610
|
-
|
1611
|
-
_emberMetalCore.default.defineProperty = _emberMetalProperties.defineProperty;
|
1612
|
-
|
1613
|
-
_emberMetalCore.default.set = _emberMetalProperty_set.set;
|
1614
|
-
_emberMetalCore.default.trySet = _emberMetalProperty_set.trySet;
|
1615
|
-
|
1616
|
-
_emberMetalCore.default.OrderedSet = _emberMetalMap.OrderedSet;
|
1617
|
-
_emberMetalCore.default.Map = _emberMetalMap.Map;
|
1618
|
-
_emberMetalCore.default.MapWithDefault = _emberMetalMap.MapWithDefault;
|
1619
|
-
|
1620
|
-
_emberMetalCore.default.getProperties = _emberMetalGet_properties.default;
|
1621
|
-
_emberMetalCore.default.setProperties = _emberMetalSet_properties.default;
|
1622
|
-
|
1623
|
-
_emberMetalCore.default.watchKey = _emberMetalWatch_key.watchKey;
|
1624
|
-
_emberMetalCore.default.unwatchKey = _emberMetalWatch_key.unwatchKey;
|
1625
|
-
|
1626
|
-
_emberMetalCore.default.flushPendingChains = _emberMetalChains.flushPendingChains;
|
1627
|
-
_emberMetalCore.default.removeChainWatcher = _emberMetalChains.removeChainWatcher;
|
1628
|
-
_emberMetalCore.default._ChainNode = _emberMetalChains.ChainNode;
|
1629
|
-
_emberMetalCore.default.finishChains = _emberMetalChains.finishChains;
|
1630
|
-
|
1631
|
-
_emberMetalCore.default.watchPath = _emberMetalWatch_path.watchPath;
|
1632
|
-
_emberMetalCore.default.unwatchPath = _emberMetalWatch_path.unwatchPath;
|
1633
|
-
|
1634
|
-
_emberMetalCore.default.watch = _emberMetalWatching.watch;
|
1635
|
-
_emberMetalCore.default.isWatching = _emberMetalWatching.isWatching;
|
1636
|
-
_emberMetalCore.default.unwatch = _emberMetalWatching.unwatch;
|
1637
|
-
_emberMetalCore.default.rewatch = _emberMetalWatching.rewatch;
|
1638
|
-
_emberMetalCore.default.destroy = _emberMetalWatching.destroy;
|
1639
|
-
|
1640
|
-
_emberMetalCore.default.expandProperties = _emberMetalExpand_properties.default;
|
1641
|
-
|
1642
|
-
_emberMetalCore.default.ComputedProperty = _emberMetalComputed.ComputedProperty;
|
1643
|
-
_emberMetalCore.default.computed = _emberMetalComputed.computed;
|
1644
|
-
_emberMetalCore.default.cacheFor = _emberMetalComputed.cacheFor;
|
1645
|
-
|
1646
|
-
_emberMetalCore.default.addObserver = _emberMetalObserver.addObserver;
|
1647
|
-
_emberMetalCore.default.observersFor = _emberMetalObserver.observersFor;
|
1648
|
-
_emberMetalCore.default.removeObserver = _emberMetalObserver.removeObserver;
|
1649
|
-
_emberMetalCore.default._suspendObserver = _emberMetalObserver._suspendObserver;
|
1650
|
-
_emberMetalCore.default._suspendObservers = _emberMetalObserver._suspendObservers;
|
1651
|
-
|
1652
|
-
_emberMetalCore.default.IS_BINDING = _emberMetalMixin.IS_BINDING;
|
1653
|
-
_emberMetalCore.default.required = _emberMetalMixin.required;
|
1654
|
-
_emberMetalCore.default.aliasMethod = _emberMetalMixin.aliasMethod;
|
1655
|
-
_emberMetalCore.default.observer = _emberMetalMixin.observer;
|
1656
|
-
_emberMetalCore.default.immediateObserver = _emberMetalMixin._immediateObserver;
|
1657
|
-
_emberMetalCore.default.mixin = _emberMetalMixin.mixin;
|
1658
|
-
_emberMetalCore.default.Mixin = _emberMetalMixin.Mixin;
|
1659
|
-
|
1660
|
-
_emberMetalCore.default.bind = _emberMetalBinding.bind;
|
1661
|
-
_emberMetalCore.default.Binding = _emberMetalBinding.Binding;
|
1662
|
-
_emberMetalCore.default.isGlobalPath = _emberMetalBinding.isGlobalPath;
|
1663
|
-
|
1664
|
-
_emberMetalCore.default.run = _emberMetalRun_loop.default;
|
1665
|
-
|
1666
|
-
/**
|
1667
|
-
@class Backburner
|
1668
|
-
@for Ember
|
1669
|
-
@private
|
1670
|
-
*/
|
1671
|
-
_emberMetalCore.default.Backburner = _backburner.default;
|
1672
|
-
// this is the new go forward, once Ember Data updates to using `_Backburner` we
|
1673
|
-
// can remove the non-underscored version.
|
1674
|
-
_emberMetalCore.default._Backburner = _backburner.default;
|
1675
|
-
|
1676
|
-
_emberMetalCore.default.libraries = new _emberMetalLibraries.default();
|
1677
|
-
_emberMetalCore.default.libraries.registerCoreLibrary('Ember', _emberMetalCore.default.VERSION);
|
1678
|
-
|
1679
|
-
_emberMetalCore.default.isNone = _emberMetalIs_none.default;
|
1680
|
-
_emberMetalCore.default.isEmpty = _emberMetalIs_empty.default;
|
1681
|
-
_emberMetalCore.default.isBlank = _emberMetalIs_blank.default;
|
1682
|
-
_emberMetalCore.default.isPresent = _emberMetalIs_present.default;
|
1683
|
-
|
1684
|
-
_emberMetalCore.default.merge = _emberMetalMerge.default;
|
1685
|
-
|
1686
|
-
_emberMetalCore.default.FEATURES = _emberMetalFeatures.FEATURES;
|
1687
|
-
_emberMetalCore.default.FEATURES.isEnabled = _emberMetalFeatures.default;
|
1688
|
-
|
1689
|
-
/**
|
1690
|
-
A function may be assigned to `Ember.onerror` to be called when Ember
|
1691
|
-
internals encounter an error. This is useful for specialized error handling
|
1692
|
-
and reporting code.
|
1693
|
-
|
1694
|
-
```javascript
|
1695
|
-
Ember.onerror = function(error) {
|
1696
|
-
Em.$.ajax('/report-error', 'POST', {
|
1697
|
-
stack: error.stack,
|
1698
|
-
otherInformation: 'whatever app state you want to provide'
|
1699
|
-
});
|
1700
|
-
};
|
1701
|
-
```
|
1702
|
-
|
1703
|
-
Internally, `Ember.onerror` is used as Backburner's error handler.
|
1704
|
-
|
1705
|
-
@event onerror
|
1706
|
-
@for Ember
|
1707
|
-
@param {Exception} error the error object
|
1708
|
-
@public
|
1709
|
-
*/
|
1710
|
-
_emberMetalCore.default.onerror = null;
|
1711
|
-
// END EXPORTS
|
1712
|
-
|
1713
|
-
// do this for side-effects of updating Ember.assert, warn, etc when
|
1714
|
-
// ember-debug is present
|
1715
|
-
// This needs to be called before any deprecateFunc
|
1716
|
-
if (_emberMetalCore.default.__loader.registry['ember-debug']) {
|
1717
|
-
requireModule('ember-debug');
|
1397
|
+
var runningNonEmberDebugJS = false;
|
1398
|
+
exports.runningNonEmberDebugJS = runningNonEmberDebugJS;
|
1399
|
+
if (runningNonEmberDebugJS) {
|
1400
|
+
_emberMetalCore.default.warn('Please use `ember.debug.js` instead of `ember.js` for development and debugging.');
|
1718
1401
|
}
|
1719
|
-
|
1720
|
-
_emberMetalCore.default.create = _emberMetalCore.default.deprecateFunc('Ember.create is deprecated in favor of Object.create', { id: 'ember-metal.ember-create', until: '3.0.0' }, Object.create);
|
1721
|
-
_emberMetalCore.default.keys = _emberMetalCore.default.deprecateFunc('Ember.keys is deprecated in favor of Object.keys', { id: 'ember-metal.ember.keys', until: '3.0.0' }, Object.keys);
|
1722
|
-
|
1723
|
-
exports.default = _emberMetalCore.default;
|
1724
1402
|
});
|
1725
1403
|
enifed('ember-metal/alias', ['exports', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/core', 'ember-metal/error', 'ember-metal/properties', 'ember-metal/computed', 'ember-metal/utils', 'ember-metal/dependent_keys'], function (exports, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalCore, _emberMetalError, _emberMetalProperties, _emberMetalComputed, _emberMetalUtils, _emberMetalDependent_keys) {
|
1726
1404
|
'use strict';
|
@@ -4059,7 +3737,7 @@ enifed('ember-metal/core', ['exports'], function (exports) {
|
|
4059
3737
|
|
4060
3738
|
@class Ember
|
4061
3739
|
@static
|
4062
|
-
@version 2.0.
|
3740
|
+
@version 2.0.3
|
4063
3741
|
@public
|
4064
3742
|
*/
|
4065
3743
|
|
@@ -4093,11 +3771,11 @@ enifed('ember-metal/core', ['exports'], function (exports) {
|
|
4093
3771
|
|
4094
3772
|
@property VERSION
|
4095
3773
|
@type String
|
4096
|
-
@default '2.0.
|
3774
|
+
@default '2.0.3'
|
4097
3775
|
@static
|
4098
3776
|
@public
|
4099
3777
|
*/
|
4100
|
-
Ember.VERSION = '2.0.
|
3778
|
+
Ember.VERSION = '2.0.3';
|
4101
3779
|
|
4102
3780
|
/**
|
4103
3781
|
The hash of environment variables used to control various configuration
|
@@ -10951,158 +10629,331 @@ enifed('ember-metal/watch_path', ['exports', 'ember-metal/utils', 'ember-metal/c
|
|
10951
10629
|
}
|
10952
10630
|
}
|
10953
10631
|
|
10954
|
-
function unwatchPath(obj, keyPath, meta) {
|
10955
|
-
var m = meta || _emberMetalUtils.meta(obj);
|
10956
|
-
var watching = m.watching;
|
10632
|
+
function unwatchPath(obj, keyPath, meta) {
|
10633
|
+
var m = meta || _emberMetalUtils.meta(obj);
|
10634
|
+
var watching = m.watching;
|
10635
|
+
|
10636
|
+
if (watching[keyPath] === 1) {
|
10637
|
+
watching[keyPath] = 0;
|
10638
|
+
chainsFor(obj, m).remove(keyPath);
|
10639
|
+
} else if (watching[keyPath] > 1) {
|
10640
|
+
watching[keyPath]--;
|
10641
|
+
}
|
10642
|
+
}
|
10643
|
+
});
|
10644
|
+
enifed('ember-metal/watching', ['exports', 'ember-metal/chains', 'ember-metal/watch_key', 'ember-metal/watch_path', 'ember-metal/path_cache'], function (exports, _emberMetalChains, _emberMetalWatch_key, _emberMetalWatch_path, _emberMetalPath_cache) {
|
10645
|
+
/**
|
10646
|
+
@module ember-metal
|
10647
|
+
*/
|
10648
|
+
|
10649
|
+
'use strict';
|
10650
|
+
|
10651
|
+
exports.isWatching = isWatching;
|
10652
|
+
exports.unwatch = unwatch;
|
10653
|
+
exports.destroy = destroy;
|
10654
|
+
|
10655
|
+
/**
|
10656
|
+
Starts watching a property on an object. Whenever the property changes,
|
10657
|
+
invokes `Ember.propertyWillChange` and `Ember.propertyDidChange`. This is the
|
10658
|
+
primitive used by observers and dependent keys; usually you will never call
|
10659
|
+
this method directly but instead use higher level methods like
|
10660
|
+
`Ember.addObserver()`
|
10661
|
+
|
10662
|
+
@private
|
10663
|
+
@method watch
|
10664
|
+
@for Ember
|
10665
|
+
@param obj
|
10666
|
+
@param {String} _keyPath
|
10667
|
+
*/
|
10668
|
+
function watch(obj, _keyPath, m) {
|
10669
|
+
// can't watch length on Array - it is special...
|
10670
|
+
if (_keyPath === 'length' && Array.isArray(obj)) {
|
10671
|
+
return;
|
10672
|
+
}
|
10673
|
+
|
10674
|
+
if (!_emberMetalPath_cache.isPath(_keyPath)) {
|
10675
|
+
_emberMetalWatch_key.watchKey(obj, _keyPath, m);
|
10676
|
+
} else {
|
10677
|
+
_emberMetalWatch_path.watchPath(obj, _keyPath, m);
|
10678
|
+
}
|
10679
|
+
}
|
10680
|
+
|
10681
|
+
exports.watch = watch;
|
10682
|
+
|
10683
|
+
function isWatching(obj, key) {
|
10684
|
+
var meta = obj['__ember_meta__'];
|
10685
|
+
return (meta && meta.watching[key]) > 0;
|
10686
|
+
}
|
10687
|
+
|
10688
|
+
watch.flushPending = _emberMetalChains.flushPendingChains;
|
10689
|
+
|
10690
|
+
function unwatch(obj, _keyPath, m) {
|
10691
|
+
// can't watch length on Array - it is special...
|
10692
|
+
if (_keyPath === 'length' && Array.isArray(obj)) {
|
10693
|
+
return;
|
10694
|
+
}
|
10695
|
+
|
10696
|
+
if (!_emberMetalPath_cache.isPath(_keyPath)) {
|
10697
|
+
_emberMetalWatch_key.unwatchKey(obj, _keyPath, m);
|
10698
|
+
} else {
|
10699
|
+
_emberMetalWatch_path.unwatchPath(obj, _keyPath, m);
|
10700
|
+
}
|
10701
|
+
}
|
10702
|
+
|
10703
|
+
var NODE_STACK = [];
|
10704
|
+
|
10705
|
+
/**
|
10706
|
+
Tears down the meta on an object so that it can be garbage collected.
|
10707
|
+
Multiple calls will have no effect.
|
10708
|
+
|
10709
|
+
@method destroy
|
10710
|
+
@for Ember
|
10711
|
+
@param {Object} obj the object to destroy
|
10712
|
+
@return {void}
|
10713
|
+
@private
|
10714
|
+
*/
|
10715
|
+
|
10716
|
+
function destroy(obj) {
|
10717
|
+
var meta = obj['__ember_meta__'];
|
10718
|
+
var node, nodes, key, nodeObject;
|
10719
|
+
|
10720
|
+
if (meta) {
|
10721
|
+
obj['__ember_meta__'] = null;
|
10722
|
+
// remove chainWatchers to remove circular references that would prevent GC
|
10723
|
+
node = meta.chains;
|
10724
|
+
if (node) {
|
10725
|
+
NODE_STACK.push(node);
|
10726
|
+
// process tree
|
10727
|
+
while (NODE_STACK.length > 0) {
|
10728
|
+
node = NODE_STACK.pop();
|
10729
|
+
// push children
|
10730
|
+
nodes = node._chains;
|
10731
|
+
if (nodes) {
|
10732
|
+
for (key in nodes) {
|
10733
|
+
if (nodes[key] !== undefined) {
|
10734
|
+
NODE_STACK.push(nodes[key]);
|
10735
|
+
}
|
10736
|
+
}
|
10737
|
+
}
|
10738
|
+
// remove chainWatcher in node object
|
10739
|
+
if (node._watching) {
|
10740
|
+
nodeObject = node._object;
|
10741
|
+
if (nodeObject) {
|
10742
|
+
_emberMetalChains.removeChainWatcher(nodeObject, node._key, node);
|
10743
|
+
}
|
10744
|
+
}
|
10745
|
+
}
|
10746
|
+
}
|
10747
|
+
}
|
10748
|
+
}
|
10749
|
+
});
|
10750
|
+
enifed('ember-metal', ['exports', 'ember-metal/core', 'ember-metal/features', 'ember-metal/merge', 'ember-metal/instrumentation', 'ember-metal/utils', 'ember-metal/error', 'ember-metal/cache', 'ember-metal/logger', 'ember-metal/property_get', 'ember-metal/events', 'ember-metal/observer_set', 'ember-metal/property_events', 'ember-metal/properties', 'ember-metal/property_set', 'ember-metal/map', 'ember-metal/get_properties', 'ember-metal/set_properties', 'ember-metal/watch_key', 'ember-metal/chains', 'ember-metal/watch_path', 'ember-metal/watching', 'ember-metal/expand_properties', 'ember-metal/computed', 'ember-metal/alias', 'ember-metal/computed_macros', 'ember-metal/observer', 'ember-metal/mixin', 'ember-metal/binding', 'ember-metal/run_loop', 'ember-metal/libraries', 'ember-metal/is_none', 'ember-metal/is_empty', 'ember-metal/is_blank', 'ember-metal/is_present', 'backburner', 'ember-metal/streams/utils', 'ember-metal/streams/stream'], function (exports, _emberMetalCore, _emberMetalFeatures, _emberMetalMerge, _emberMetalInstrumentation, _emberMetalUtils, _emberMetalError, _emberMetalCache, _emberMetalLogger, _emberMetalProperty_get, _emberMetalEvents, _emberMetalObserver_set, _emberMetalProperty_events, _emberMetalProperties, _emberMetalProperty_set, _emberMetalMap, _emberMetalGet_properties, _emberMetalSet_properties, _emberMetalWatch_key, _emberMetalChains, _emberMetalWatch_path, _emberMetalWatching, _emberMetalExpand_properties, _emberMetalComputed, _emberMetalAlias, _emberMetalComputed_macros, _emberMetalObserver, _emberMetalMixin, _emberMetalBinding, _emberMetalRun_loop, _emberMetalLibraries, _emberMetalIs_none, _emberMetalIs_empty, _emberMetalIs_blank, _emberMetalIs_present, _backburner, _emberMetalStreamsUtils, _emberMetalStreamsStream) {
|
10751
|
+
/**
|
10752
|
+
@module ember
|
10753
|
+
@submodule ember-metal
|
10754
|
+
*/
|
10755
|
+
|
10756
|
+
// BEGIN IMPORTS
|
10757
|
+
'use strict';
|
10758
|
+
|
10759
|
+
_emberMetalComputed.computed.empty = _emberMetalComputed_macros.empty;
|
10760
|
+
_emberMetalComputed.computed.notEmpty = _emberMetalComputed_macros.notEmpty;
|
10761
|
+
_emberMetalComputed.computed.none = _emberMetalComputed_macros.none;
|
10762
|
+
_emberMetalComputed.computed.not = _emberMetalComputed_macros.not;
|
10763
|
+
_emberMetalComputed.computed.bool = _emberMetalComputed_macros.bool;
|
10764
|
+
_emberMetalComputed.computed.match = _emberMetalComputed_macros.match;
|
10765
|
+
_emberMetalComputed.computed.equal = _emberMetalComputed_macros.equal;
|
10766
|
+
_emberMetalComputed.computed.gt = _emberMetalComputed_macros.gt;
|
10767
|
+
_emberMetalComputed.computed.gte = _emberMetalComputed_macros.gte;
|
10768
|
+
_emberMetalComputed.computed.lt = _emberMetalComputed_macros.lt;
|
10769
|
+
_emberMetalComputed.computed.lte = _emberMetalComputed_macros.lte;
|
10770
|
+
_emberMetalComputed.computed.alias = _emberMetalAlias.default;
|
10771
|
+
_emberMetalComputed.computed.oneWay = _emberMetalComputed_macros.oneWay;
|
10772
|
+
_emberMetalComputed.computed.reads = _emberMetalComputed_macros.oneWay;
|
10773
|
+
_emberMetalComputed.computed.readOnly = _emberMetalComputed_macros.readOnly;
|
10774
|
+
_emberMetalComputed.computed.defaultTo = _emberMetalComputed_macros.defaultTo;
|
10775
|
+
_emberMetalComputed.computed.deprecatingAlias = _emberMetalComputed_macros.deprecatingAlias;
|
10776
|
+
_emberMetalComputed.computed.and = _emberMetalComputed_macros.and;
|
10777
|
+
_emberMetalComputed.computed.or = _emberMetalComputed_macros.or;
|
10778
|
+
_emberMetalComputed.computed.any = _emberMetalComputed_macros.any;
|
10779
|
+
_emberMetalComputed.computed.collect = _emberMetalComputed_macros.collect;
|
10780
|
+
|
10781
|
+
// END IMPORTS
|
10782
|
+
|
10783
|
+
// BEGIN EXPORTS
|
10784
|
+
var EmberInstrumentation = _emberMetalCore.default.Instrumentation = {};
|
10785
|
+
EmberInstrumentation.instrument = _emberMetalInstrumentation.instrument;
|
10786
|
+
EmberInstrumentation.subscribe = _emberMetalInstrumentation.subscribe;
|
10787
|
+
EmberInstrumentation.unsubscribe = _emberMetalInstrumentation.unsubscribe;
|
10788
|
+
EmberInstrumentation.reset = _emberMetalInstrumentation.reset;
|
10789
|
+
|
10790
|
+
_emberMetalCore.default.instrument = _emberMetalInstrumentation.instrument;
|
10791
|
+
_emberMetalCore.default.subscribe = _emberMetalInstrumentation.subscribe;
|
10792
|
+
|
10793
|
+
_emberMetalCore.default._Cache = _emberMetalCache.default;
|
10794
|
+
|
10795
|
+
_emberMetalCore.default.generateGuid = _emberMetalUtils.generateGuid;
|
10796
|
+
_emberMetalCore.default.GUID_KEY = _emberMetalUtils.GUID_KEY;
|
10797
|
+
_emberMetalCore.default.platform = {
|
10798
|
+
defineProperty: true,
|
10799
|
+
hasPropertyAccessors: true
|
10800
|
+
};
|
10801
|
+
|
10802
|
+
_emberMetalCore.default.Error = _emberMetalError.default;
|
10803
|
+
_emberMetalCore.default.guidFor = _emberMetalUtils.guidFor;
|
10804
|
+
_emberMetalCore.default.META_DESC = _emberMetalUtils.META_DESC;
|
10805
|
+
_emberMetalCore.default.EMPTY_META = _emberMetalUtils.EMPTY_META;
|
10806
|
+
_emberMetalCore.default.meta = _emberMetalUtils.meta;
|
10807
|
+
_emberMetalCore.default.inspect = _emberMetalUtils.inspect;
|
10808
|
+
_emberMetalCore.default.tryCatchFinally = _emberMetalUtils.deprecatedTryCatchFinally;
|
10809
|
+
_emberMetalCore.default.makeArray = _emberMetalUtils.makeArray;
|
10810
|
+
_emberMetalCore.default.canInvoke = _emberMetalUtils.canInvoke;
|
10811
|
+
_emberMetalCore.default.tryInvoke = _emberMetalUtils.tryInvoke;
|
10812
|
+
_emberMetalCore.default.wrap = _emberMetalUtils.wrap;
|
10813
|
+
_emberMetalCore.default.apply = _emberMetalUtils.apply;
|
10814
|
+
_emberMetalCore.default.applyStr = _emberMetalUtils.applyStr;
|
10815
|
+
_emberMetalCore.default.uuid = _emberMetalUtils.uuid;
|
10816
|
+
|
10817
|
+
_emberMetalCore.default.Logger = _emberMetalLogger.default;
|
10818
|
+
|
10819
|
+
_emberMetalCore.default.get = _emberMetalProperty_get.get;
|
10820
|
+
_emberMetalCore.default.getWithDefault = _emberMetalProperty_get.getWithDefault;
|
10821
|
+
_emberMetalCore.default.normalizeTuple = _emberMetalProperty_get.normalizeTuple;
|
10822
|
+
_emberMetalCore.default._getPath = _emberMetalProperty_get._getPath;
|
10823
|
+
|
10824
|
+
_emberMetalCore.default.on = _emberMetalEvents.on;
|
10825
|
+
_emberMetalCore.default.addListener = _emberMetalEvents.addListener;
|
10826
|
+
_emberMetalCore.default.removeListener = _emberMetalEvents.removeListener;
|
10827
|
+
_emberMetalCore.default._suspendListener = _emberMetalEvents.suspendListener;
|
10828
|
+
_emberMetalCore.default._suspendListeners = _emberMetalEvents.suspendListeners;
|
10829
|
+
_emberMetalCore.default.sendEvent = _emberMetalEvents.sendEvent;
|
10830
|
+
_emberMetalCore.default.hasListeners = _emberMetalEvents.hasListeners;
|
10831
|
+
_emberMetalCore.default.watchedEvents = _emberMetalEvents.watchedEvents;
|
10832
|
+
_emberMetalCore.default.listenersFor = _emberMetalEvents.listenersFor;
|
10833
|
+
_emberMetalCore.default.accumulateListeners = _emberMetalEvents.accumulateListeners;
|
10834
|
+
|
10835
|
+
_emberMetalCore.default._ObserverSet = _emberMetalObserver_set.default;
|
10836
|
+
|
10837
|
+
_emberMetalCore.default.propertyWillChange = _emberMetalProperty_events.propertyWillChange;
|
10838
|
+
_emberMetalCore.default.propertyDidChange = _emberMetalProperty_events.propertyDidChange;
|
10839
|
+
_emberMetalCore.default.overrideChains = _emberMetalProperty_events.overrideChains;
|
10840
|
+
_emberMetalCore.default.beginPropertyChanges = _emberMetalProperty_events.beginPropertyChanges;
|
10841
|
+
_emberMetalCore.default.endPropertyChanges = _emberMetalProperty_events.endPropertyChanges;
|
10842
|
+
_emberMetalCore.default.changeProperties = _emberMetalProperty_events.changeProperties;
|
10843
|
+
|
10844
|
+
_emberMetalCore.default.defineProperty = _emberMetalProperties.defineProperty;
|
10845
|
+
|
10846
|
+
_emberMetalCore.default.set = _emberMetalProperty_set.set;
|
10847
|
+
_emberMetalCore.default.trySet = _emberMetalProperty_set.trySet;
|
10848
|
+
|
10849
|
+
_emberMetalCore.default.OrderedSet = _emberMetalMap.OrderedSet;
|
10850
|
+
_emberMetalCore.default.Map = _emberMetalMap.Map;
|
10851
|
+
_emberMetalCore.default.MapWithDefault = _emberMetalMap.MapWithDefault;
|
10852
|
+
|
10853
|
+
_emberMetalCore.default.getProperties = _emberMetalGet_properties.default;
|
10854
|
+
_emberMetalCore.default.setProperties = _emberMetalSet_properties.default;
|
10855
|
+
|
10856
|
+
_emberMetalCore.default.watchKey = _emberMetalWatch_key.watchKey;
|
10857
|
+
_emberMetalCore.default.unwatchKey = _emberMetalWatch_key.unwatchKey;
|
10858
|
+
|
10859
|
+
_emberMetalCore.default.flushPendingChains = _emberMetalChains.flushPendingChains;
|
10860
|
+
_emberMetalCore.default.removeChainWatcher = _emberMetalChains.removeChainWatcher;
|
10861
|
+
_emberMetalCore.default._ChainNode = _emberMetalChains.ChainNode;
|
10862
|
+
_emberMetalCore.default.finishChains = _emberMetalChains.finishChains;
|
10863
|
+
|
10864
|
+
_emberMetalCore.default.watchPath = _emberMetalWatch_path.watchPath;
|
10865
|
+
_emberMetalCore.default.unwatchPath = _emberMetalWatch_path.unwatchPath;
|
10866
|
+
|
10867
|
+
_emberMetalCore.default.watch = _emberMetalWatching.watch;
|
10868
|
+
_emberMetalCore.default.isWatching = _emberMetalWatching.isWatching;
|
10869
|
+
_emberMetalCore.default.unwatch = _emberMetalWatching.unwatch;
|
10870
|
+
_emberMetalCore.default.rewatch = _emberMetalWatching.rewatch;
|
10871
|
+
_emberMetalCore.default.destroy = _emberMetalWatching.destroy;
|
10872
|
+
|
10873
|
+
_emberMetalCore.default.expandProperties = _emberMetalExpand_properties.default;
|
10874
|
+
|
10875
|
+
_emberMetalCore.default.ComputedProperty = _emberMetalComputed.ComputedProperty;
|
10876
|
+
_emberMetalCore.default.computed = _emberMetalComputed.computed;
|
10877
|
+
_emberMetalCore.default.cacheFor = _emberMetalComputed.cacheFor;
|
10878
|
+
|
10879
|
+
_emberMetalCore.default.addObserver = _emberMetalObserver.addObserver;
|
10880
|
+
_emberMetalCore.default.observersFor = _emberMetalObserver.observersFor;
|
10881
|
+
_emberMetalCore.default.removeObserver = _emberMetalObserver.removeObserver;
|
10882
|
+
_emberMetalCore.default._suspendObserver = _emberMetalObserver._suspendObserver;
|
10883
|
+
_emberMetalCore.default._suspendObservers = _emberMetalObserver._suspendObservers;
|
10957
10884
|
|
10958
|
-
|
10959
|
-
|
10960
|
-
|
10961
|
-
|
10962
|
-
|
10963
|
-
|
10964
|
-
|
10965
|
-
});
|
10966
|
-
enifed('ember-metal/watching', ['exports', 'ember-metal/chains', 'ember-metal/watch_key', 'ember-metal/watch_path', 'ember-metal/path_cache'], function (exports, _emberMetalChains, _emberMetalWatch_key, _emberMetalWatch_path, _emberMetalPath_cache) {
|
10967
|
-
/**
|
10968
|
-
@module ember-metal
|
10969
|
-
*/
|
10885
|
+
_emberMetalCore.default.IS_BINDING = _emberMetalMixin.IS_BINDING;
|
10886
|
+
_emberMetalCore.default.required = _emberMetalMixin.required;
|
10887
|
+
_emberMetalCore.default.aliasMethod = _emberMetalMixin.aliasMethod;
|
10888
|
+
_emberMetalCore.default.observer = _emberMetalMixin.observer;
|
10889
|
+
_emberMetalCore.default.immediateObserver = _emberMetalMixin._immediateObserver;
|
10890
|
+
_emberMetalCore.default.mixin = _emberMetalMixin.mixin;
|
10891
|
+
_emberMetalCore.default.Mixin = _emberMetalMixin.Mixin;
|
10970
10892
|
|
10971
|
-
|
10893
|
+
_emberMetalCore.default.bind = _emberMetalBinding.bind;
|
10894
|
+
_emberMetalCore.default.Binding = _emberMetalBinding.Binding;
|
10895
|
+
_emberMetalCore.default.isGlobalPath = _emberMetalBinding.isGlobalPath;
|
10972
10896
|
|
10973
|
-
|
10974
|
-
exports.unwatch = unwatch;
|
10975
|
-
exports.destroy = destroy;
|
10897
|
+
_emberMetalCore.default.run = _emberMetalRun_loop.default;
|
10976
10898
|
|
10977
10899
|
/**
|
10978
|
-
|
10979
|
-
|
10980
|
-
|
10981
|
-
this method directly but instead use higher level methods like
|
10982
|
-
`Ember.addObserver()`
|
10983
|
-
|
10984
|
-
@private
|
10985
|
-
@method watch
|
10986
|
-
@for Ember
|
10987
|
-
@param obj
|
10988
|
-
@param {String} _keyPath
|
10900
|
+
@class Backburner
|
10901
|
+
@for Ember
|
10902
|
+
@private
|
10989
10903
|
*/
|
10990
|
-
|
10991
|
-
|
10992
|
-
|
10993
|
-
|
10994
|
-
}
|
10995
|
-
|
10996
|
-
if (!_emberMetalPath_cache.isPath(_keyPath)) {
|
10997
|
-
_emberMetalWatch_key.watchKey(obj, _keyPath, m);
|
10998
|
-
} else {
|
10999
|
-
_emberMetalWatch_path.watchPath(obj, _keyPath, m);
|
11000
|
-
}
|
11001
|
-
}
|
11002
|
-
|
11003
|
-
exports.watch = watch;
|
11004
|
-
|
11005
|
-
function isWatching(obj, key) {
|
11006
|
-
var meta = obj['__ember_meta__'];
|
11007
|
-
return (meta && meta.watching[key]) > 0;
|
11008
|
-
}
|
10904
|
+
_emberMetalCore.default.Backburner = _backburner.default;
|
10905
|
+
// this is the new go forward, once Ember Data updates to using `_Backburner` we
|
10906
|
+
// can remove the non-underscored version.
|
10907
|
+
_emberMetalCore.default._Backburner = _backburner.default;
|
11009
10908
|
|
11010
|
-
|
10909
|
+
_emberMetalCore.default.libraries = new _emberMetalLibraries.default();
|
10910
|
+
_emberMetalCore.default.libraries.registerCoreLibrary('Ember', _emberMetalCore.default.VERSION);
|
11011
10911
|
|
11012
|
-
|
11013
|
-
|
11014
|
-
|
11015
|
-
|
11016
|
-
}
|
10912
|
+
_emberMetalCore.default.isNone = _emberMetalIs_none.default;
|
10913
|
+
_emberMetalCore.default.isEmpty = _emberMetalIs_empty.default;
|
10914
|
+
_emberMetalCore.default.isBlank = _emberMetalIs_blank.default;
|
10915
|
+
_emberMetalCore.default.isPresent = _emberMetalIs_present.default;
|
11017
10916
|
|
11018
|
-
|
11019
|
-
_emberMetalWatch_key.unwatchKey(obj, _keyPath, m);
|
11020
|
-
} else {
|
11021
|
-
_emberMetalWatch_path.unwatchPath(obj, _keyPath, m);
|
11022
|
-
}
|
11023
|
-
}
|
10917
|
+
_emberMetalCore.default.merge = _emberMetalMerge.default;
|
11024
10918
|
|
11025
|
-
|
10919
|
+
_emberMetalCore.default.FEATURES = _emberMetalFeatures.FEATURES;
|
10920
|
+
_emberMetalCore.default.FEATURES.isEnabled = _emberMetalFeatures.default;
|
11026
10921
|
|
11027
10922
|
/**
|
11028
|
-
|
11029
|
-
|
10923
|
+
A function may be assigned to `Ember.onerror` to be called when Ember
|
10924
|
+
internals encounter an error. This is useful for specialized error handling
|
10925
|
+
and reporting code.
|
11030
10926
|
|
11031
|
-
|
10927
|
+
```javascript
|
10928
|
+
Ember.onerror = function(error) {
|
10929
|
+
Em.$.ajax('/report-error', 'POST', {
|
10930
|
+
stack: error.stack,
|
10931
|
+
otherInformation: 'whatever app state you want to provide'
|
10932
|
+
});
|
10933
|
+
};
|
10934
|
+
```
|
10935
|
+
|
10936
|
+
Internally, `Ember.onerror` is used as Backburner's error handler.
|
10937
|
+
|
10938
|
+
@event onerror
|
11032
10939
|
@for Ember
|
11033
|
-
@param {
|
11034
|
-
@
|
11035
|
-
@private
|
10940
|
+
@param {Exception} error the error object
|
10941
|
+
@public
|
11036
10942
|
*/
|
10943
|
+
_emberMetalCore.default.onerror = null;
|
10944
|
+
// END EXPORTS
|
11037
10945
|
|
11038
|
-
|
11039
|
-
|
11040
|
-
|
11041
|
-
|
11042
|
-
|
11043
|
-
obj['__ember_meta__'] = null;
|
11044
|
-
// remove chainWatchers to remove circular references that would prevent GC
|
11045
|
-
node = meta.chains;
|
11046
|
-
if (node) {
|
11047
|
-
NODE_STACK.push(node);
|
11048
|
-
// process tree
|
11049
|
-
while (NODE_STACK.length > 0) {
|
11050
|
-
node = NODE_STACK.pop();
|
11051
|
-
// push children
|
11052
|
-
nodes = node._chains;
|
11053
|
-
if (nodes) {
|
11054
|
-
for (key in nodes) {
|
11055
|
-
if (nodes[key] !== undefined) {
|
11056
|
-
NODE_STACK.push(nodes[key]);
|
11057
|
-
}
|
11058
|
-
}
|
11059
|
-
}
|
11060
|
-
// remove chainWatcher in node object
|
11061
|
-
if (node._watching) {
|
11062
|
-
nodeObject = node._object;
|
11063
|
-
if (nodeObject) {
|
11064
|
-
_emberMetalChains.removeChainWatcher(nodeObject, node._key, node);
|
11065
|
-
}
|
11066
|
-
}
|
11067
|
-
}
|
11068
|
-
}
|
11069
|
-
}
|
11070
|
-
}
|
11071
|
-
});
|
11072
|
-
enifed('ember-template-compiler', ['exports', 'ember-metal', 'ember-template-compiler/system/precompile', 'ember-template-compiler/system/compile', 'ember-template-compiler/system/template', 'ember-template-compiler/plugins', 'ember-template-compiler/plugins/transform-old-binding-syntax', 'ember-template-compiler/plugins/transform-old-class-binding-syntax', 'ember-template-compiler/plugins/transform-item-class', 'ember-template-compiler/plugins/transform-component-attrs-into-mut', 'ember-template-compiler/plugins/transform-component-curly-to-readonly', 'ember-template-compiler/plugins/transform-angle-bracket-components', 'ember-template-compiler/plugins/transform-input-on-to-onEvent', 'ember-template-compiler/plugins/transform-each-into-collection', 'ember-template-compiler/plugins/assert-no-view-and-controller-paths', 'ember-template-compiler/plugins/assert-no-view-helper', 'ember-template-compiler/compat'], function (exports, _emberMetal, _emberTemplateCompilerSystemPrecompile, _emberTemplateCompilerSystemCompile, _emberTemplateCompilerSystemTemplate, _emberTemplateCompilerPlugins, _emberTemplateCompilerPluginsTransformOldBindingSyntax, _emberTemplateCompilerPluginsTransformOldClassBindingSyntax, _emberTemplateCompilerPluginsTransformItemClass, _emberTemplateCompilerPluginsTransformComponentAttrsIntoMut, _emberTemplateCompilerPluginsTransformComponentCurlyToReadonly, _emberTemplateCompilerPluginsTransformAngleBracketComponents, _emberTemplateCompilerPluginsTransformInputOnToOnEvent, _emberTemplateCompilerPluginsTransformEachIntoCollection, _emberTemplateCompilerPluginsAssertNoViewAndControllerPaths, _emberTemplateCompilerPluginsAssertNoViewHelper, _emberTemplateCompilerCompat) {
|
11073
|
-
'use strict';
|
11074
|
-
|
11075
|
-
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformOldBindingSyntax.default);
|
11076
|
-
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformOldClassBindingSyntax.default);
|
11077
|
-
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformItemClass.default);
|
11078
|
-
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformComponentAttrsIntoMut.default);
|
11079
|
-
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformComponentCurlyToReadonly.default);
|
11080
|
-
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformAngleBracketComponents.default);
|
11081
|
-
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformInputOnToOnEvent.default);
|
11082
|
-
|
11083
|
-
if (_emberMetal.default.ENV._ENABLE_LEGACY_VIEW_SUPPORT) {
|
11084
|
-
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformEachIntoCollection.default);
|
11085
|
-
} else {
|
11086
|
-
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsAssertNoViewAndControllerPaths.default);
|
11087
|
-
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsAssertNoViewHelper.default);
|
10946
|
+
// do this for side-effects of updating Ember.assert, warn, etc when
|
10947
|
+
// ember-debug is present
|
10948
|
+
// This needs to be called before any deprecateFunc
|
10949
|
+
if (_emberMetalCore.default.__loader.registry['ember-debug']) {
|
10950
|
+
requireModule('ember-debug');
|
11088
10951
|
}
|
11089
10952
|
|
11090
|
-
|
11091
|
-
|
11092
|
-
exports.compile = _emberTemplateCompilerSystemCompile.default;
|
11093
|
-
exports.template = _emberTemplateCompilerSystemTemplate.default;
|
11094
|
-
exports.registerPlugin = _emberTemplateCompilerPlugins.registerPlugin;
|
11095
|
-
});
|
11096
|
-
|
11097
|
-
// used for adding Ember.Handlebars.compile for backwards compat
|
11098
|
-
enifed('ember-template-compiler/compat', ['exports', 'ember-metal/core', 'ember-template-compiler/compat/precompile', 'ember-template-compiler/system/compile', 'ember-template-compiler/system/template'], function (exports, _emberMetalCore, _emberTemplateCompilerCompatPrecompile, _emberTemplateCompilerSystemCompile, _emberTemplateCompilerSystemTemplate) {
|
11099
|
-
'use strict';
|
11100
|
-
|
11101
|
-
var EmberHandlebars = _emberMetalCore.default.Handlebars = _emberMetalCore.default.Handlebars || {};
|
10953
|
+
_emberMetalCore.default.create = _emberMetalCore.default.deprecateFunc('Ember.create is deprecated in favor of Object.create', { id: 'ember-metal.ember-create', until: '3.0.0' }, Object.create);
|
10954
|
+
_emberMetalCore.default.keys = _emberMetalCore.default.deprecateFunc('Ember.keys is deprecated in favor of Object.keys', { id: 'ember-metal.ember.keys', until: '3.0.0' }, Object.keys);
|
11102
10955
|
|
11103
|
-
|
11104
|
-
EmberHandlebars.compile = _emberTemplateCompilerSystemCompile.default;
|
11105
|
-
EmberHandlebars.template = _emberTemplateCompilerSystemTemplate.default;
|
10956
|
+
exports.default = _emberMetalCore.default;
|
11106
10957
|
});
|
11107
10958
|
enifed('ember-template-compiler/compat/precompile', ['exports', 'ember-metal/core', 'ember-template-compiler/system/compile_options'], function (exports, _emberMetalCore, _emberTemplateCompilerSystemCompile_options) {
|
11108
10959
|
/**
|
@@ -11131,39 +10982,14 @@ enifed('ember-template-compiler/compat/precompile', ['exports', 'ember-metal/cor
|
|
11131
10982
|
return compileFunc(string, _emberTemplateCompilerSystemCompile_options.default());
|
11132
10983
|
};
|
11133
10984
|
});
|
11134
|
-
enifed('ember-template-compiler/
|
11135
|
-
/**
|
11136
|
-
@module ember
|
11137
|
-
@submodule ember-template-compiler
|
11138
|
-
*/
|
11139
|
-
|
11140
|
-
/**
|
11141
|
-
@private
|
11142
|
-
@property helpers
|
11143
|
-
*/
|
10985
|
+
enifed('ember-template-compiler/compat', ['exports', 'ember-metal/core', 'ember-template-compiler/compat/precompile', 'ember-template-compiler/system/compile', 'ember-template-compiler/system/template'], function (exports, _emberMetalCore, _emberTemplateCompilerCompatPrecompile, _emberTemplateCompilerSystemCompile, _emberTemplateCompilerSystemTemplate) {
|
11144
10986
|
'use strict';
|
11145
10987
|
|
11146
|
-
|
11147
|
-
var plugins = {
|
11148
|
-
ast: []
|
11149
|
-
};
|
11150
|
-
|
11151
|
-
/**
|
11152
|
-
Adds an AST plugin to be used by Ember.HTMLBars.compile.
|
11153
|
-
|
11154
|
-
@private
|
11155
|
-
@method registerASTPlugin
|
11156
|
-
*/
|
11157
|
-
|
11158
|
-
function registerPlugin(type, Plugin) {
|
11159
|
-
if (!plugins[type]) {
|
11160
|
-
throw new Error('Attempting to register "' + Plugin + '" as "' + type + '" which is not a valid HTMLBars plugin type.');
|
11161
|
-
}
|
11162
|
-
|
11163
|
-
plugins[type].push(Plugin);
|
11164
|
-
}
|
10988
|
+
var EmberHandlebars = _emberMetalCore.default.Handlebars = _emberMetalCore.default.Handlebars || {};
|
11165
10989
|
|
11166
|
-
|
10990
|
+
EmberHandlebars.precompile = _emberTemplateCompilerCompatPrecompile.default;
|
10991
|
+
EmberHandlebars.compile = _emberTemplateCompilerSystemCompile.default;
|
10992
|
+
EmberHandlebars.template = _emberTemplateCompilerSystemTemplate.default;
|
11167
10993
|
});
|
11168
10994
|
enifed('ember-template-compiler/plugins/assert-no-view-and-controller-paths', ['exports', 'ember-metal/core', 'ember-template-compiler/system/calculate-location-display'], function (exports, _emberMetalCore, _emberTemplateCompilerSystemCalculateLocationDisplay) {
|
11169
10995
|
'use strict';
|
@@ -11928,8 +11754,42 @@ enifed('ember-template-compiler/plugins/transform-old-class-binding-syntax', ['e
|
|
11928
11754
|
segments[i] = segments[i].split(':');
|
11929
11755
|
}
|
11930
11756
|
|
11931
|
-
return segments;
|
11757
|
+
return segments;
|
11758
|
+
}
|
11759
|
+
});
|
11760
|
+
enifed('ember-template-compiler/plugins', ['exports'], function (exports) {
|
11761
|
+
/**
|
11762
|
+
@module ember
|
11763
|
+
@submodule ember-template-compiler
|
11764
|
+
*/
|
11765
|
+
|
11766
|
+
/**
|
11767
|
+
@private
|
11768
|
+
@property helpers
|
11769
|
+
*/
|
11770
|
+
'use strict';
|
11771
|
+
|
11772
|
+
exports.registerPlugin = registerPlugin;
|
11773
|
+
var plugins = {
|
11774
|
+
ast: []
|
11775
|
+
};
|
11776
|
+
|
11777
|
+
/**
|
11778
|
+
Adds an AST plugin to be used by Ember.HTMLBars.compile.
|
11779
|
+
|
11780
|
+
@private
|
11781
|
+
@method registerASTPlugin
|
11782
|
+
*/
|
11783
|
+
|
11784
|
+
function registerPlugin(type, Plugin) {
|
11785
|
+
if (!plugins[type]) {
|
11786
|
+
throw new Error('Attempting to register "' + Plugin + '" as "' + type + '" which is not a valid HTMLBars plugin type.');
|
11787
|
+
}
|
11788
|
+
|
11789
|
+
plugins[type].push(Plugin);
|
11932
11790
|
}
|
11791
|
+
|
11792
|
+
exports.default = plugins;
|
11933
11793
|
});
|
11934
11794
|
enifed('ember-template-compiler/system/calculate-location-display', ['exports'], function (exports) {
|
11935
11795
|
'use strict';
|
@@ -12038,7 +11898,7 @@ enifed('ember-template-compiler/system/compile_options', ['exports', 'ember-meta
|
|
12038
11898
|
|
12039
11899
|
options.buildMeta = function buildMeta(program) {
|
12040
11900
|
return {
|
12041
|
-
revision: 'Ember@2.0.
|
11901
|
+
revision: 'Ember@2.0.3',
|
12042
11902
|
loc: program.loc,
|
12043
11903
|
moduleName: options.moduleName
|
12044
11904
|
};
|
@@ -12107,13 +11967,32 @@ enifed('ember-template-compiler/system/template', ['exports', 'htmlbars-runtime/
|
|
12107
11967
|
return templateSpec;
|
12108
11968
|
};
|
12109
11969
|
});
|
12110
|
-
enifed(
|
12111
|
-
|
11970
|
+
enifed('ember-template-compiler', ['exports', 'ember-metal', 'ember-template-compiler/system/precompile', 'ember-template-compiler/system/compile', 'ember-template-compiler/system/template', 'ember-template-compiler/plugins', 'ember-template-compiler/plugins/transform-old-binding-syntax', 'ember-template-compiler/plugins/transform-old-class-binding-syntax', 'ember-template-compiler/plugins/transform-item-class', 'ember-template-compiler/plugins/transform-component-attrs-into-mut', 'ember-template-compiler/plugins/transform-component-curly-to-readonly', 'ember-template-compiler/plugins/transform-angle-bracket-components', 'ember-template-compiler/plugins/transform-input-on-to-onEvent', 'ember-template-compiler/plugins/transform-each-into-collection', 'ember-template-compiler/plugins/assert-no-view-and-controller-paths', 'ember-template-compiler/plugins/assert-no-view-helper', 'ember-template-compiler/compat'], function (exports, _emberMetal, _emberTemplateCompilerSystemPrecompile, _emberTemplateCompilerSystemCompile, _emberTemplateCompilerSystemTemplate, _emberTemplateCompilerPlugins, _emberTemplateCompilerPluginsTransformOldBindingSyntax, _emberTemplateCompilerPluginsTransformOldClassBindingSyntax, _emberTemplateCompilerPluginsTransformItemClass, _emberTemplateCompilerPluginsTransformComponentAttrsIntoMut, _emberTemplateCompilerPluginsTransformComponentCurlyToReadonly, _emberTemplateCompilerPluginsTransformAngleBracketComponents, _emberTemplateCompilerPluginsTransformInputOnToOnEvent, _emberTemplateCompilerPluginsTransformEachIntoCollection, _emberTemplateCompilerPluginsAssertNoViewAndControllerPaths, _emberTemplateCompilerPluginsAssertNoViewHelper, _emberTemplateCompilerCompat) {
|
11971
|
+
'use strict';
|
12112
11972
|
|
12113
|
-
|
12114
|
-
|
12115
|
-
|
11973
|
+
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformOldBindingSyntax.default);
|
11974
|
+
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformOldClassBindingSyntax.default);
|
11975
|
+
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformItemClass.default);
|
11976
|
+
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformComponentAttrsIntoMut.default);
|
11977
|
+
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformComponentCurlyToReadonly.default);
|
11978
|
+
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformAngleBracketComponents.default);
|
11979
|
+
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformInputOnToOnEvent.default);
|
11980
|
+
|
11981
|
+
if (_emberMetal.default.ENV._ENABLE_LEGACY_VIEW_SUPPORT) {
|
11982
|
+
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformEachIntoCollection.default);
|
11983
|
+
} else {
|
11984
|
+
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsAssertNoViewAndControllerPaths.default);
|
11985
|
+
_emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsAssertNoViewHelper.default);
|
11986
|
+
}
|
11987
|
+
|
11988
|
+
exports._Ember = _emberMetal.default;
|
11989
|
+
exports.precompile = _emberTemplateCompilerSystemPrecompile.default;
|
11990
|
+
exports.compile = _emberTemplateCompilerSystemCompile.default;
|
11991
|
+
exports.template = _emberTemplateCompilerSystemTemplate.default;
|
11992
|
+
exports.registerPlugin = _emberTemplateCompilerPlugins.registerPlugin;
|
12116
11993
|
});
|
11994
|
+
|
11995
|
+
// used for adding Ember.Handlebars.compile for backwards compat
|
12117
11996
|
enifed("htmlbars-compiler/compiler", ["exports", "../htmlbars-syntax/parser", "./template-compiler", "../htmlbars-runtime/hooks", "../htmlbars-runtime/render"], function (exports, _htmlbarsSyntaxParser, _templateCompiler, _htmlbarsRuntimeHooks, _htmlbarsRuntimeRender) {
|
12118
11997
|
/*jshint evil:true*/
|
12119
11998
|
"use strict";
|
@@ -13393,23 +13272,12 @@ enifed("htmlbars-compiler/utils", ["exports"], function (exports) {
|
|
13393
13272
|
}
|
13394
13273
|
}
|
13395
13274
|
});
|
13396
|
-
enifed(
|
13397
|
-
|
13398
|
-
|
13399
|
-
var internal = {
|
13400
|
-
blockFor: _htmlbarsUtilTemplateUtils.blockFor,
|
13401
|
-
manualElement: _htmlbarsRuntimeRender.manualElement,
|
13402
|
-
hostBlock: _htmlbarsRuntimeHooks2.hostBlock,
|
13403
|
-
continueBlock: _htmlbarsRuntimeHooks2.continueBlock,
|
13404
|
-
hostYieldWithShadowTemplate: _htmlbarsRuntimeHooks2.hostYieldWithShadowTemplate,
|
13405
|
-
visitChildren: _htmlbarsUtilMorphUtils.visitChildren,
|
13406
|
-
validateChildMorphs: _htmlbarsRuntimeExpressionVisitor.validateChildMorphs,
|
13407
|
-
clearMorph: _htmlbarsUtilTemplateUtils.clearMorph
|
13408
|
-
};
|
13275
|
+
enifed("htmlbars-compiler", ["exports", "./htmlbars-compiler/compiler"], function (exports, _htmlbarsCompilerCompiler) {
|
13276
|
+
"use strict";
|
13409
13277
|
|
13410
|
-
exports.
|
13411
|
-
exports.
|
13412
|
-
exports.
|
13278
|
+
exports.compile = _htmlbarsCompilerCompiler.compile;
|
13279
|
+
exports.compileSpec = _htmlbarsCompilerCompiler.compileSpec;
|
13280
|
+
exports.template = _htmlbarsCompilerCompiler.template;
|
13413
13281
|
});
|
13414
13282
|
enifed("htmlbars-runtime/expression-visitor", ["exports", "../htmlbars-util/object-utils", "../htmlbars-util/morph-utils"], function (exports, _htmlbarsUtilObjectUtils, _htmlbarsUtilMorphUtils) {
|
13415
13283
|
"use strict";
|
@@ -15282,14 +15150,23 @@ enifed("htmlbars-runtime/render", ["exports", "../htmlbars-util/array-utils", ".
|
|
15282
15150
|
return fragment;
|
15283
15151
|
}
|
15284
15152
|
});
|
15285
|
-
enifed(
|
15286
|
-
|
15153
|
+
enifed('htmlbars-runtime', ['exports', './htmlbars-runtime/hooks', './htmlbars-runtime/render', '../htmlbars-util/morph-utils', '../htmlbars-util/template-utils', './htmlbars-runtime/expression-visitor', 'htmlbars-runtime/hooks'], function (exports, _htmlbarsRuntimeHooks, _htmlbarsRuntimeRender, _htmlbarsUtilMorphUtils, _htmlbarsUtilTemplateUtils, _htmlbarsRuntimeExpressionVisitor, _htmlbarsRuntimeHooks2) {
|
15154
|
+
'use strict';
|
15287
15155
|
|
15288
|
-
|
15289
|
-
|
15290
|
-
|
15291
|
-
|
15292
|
-
|
15156
|
+
var internal = {
|
15157
|
+
blockFor: _htmlbarsUtilTemplateUtils.blockFor,
|
15158
|
+
manualElement: _htmlbarsRuntimeRender.manualElement,
|
15159
|
+
hostBlock: _htmlbarsRuntimeHooks2.hostBlock,
|
15160
|
+
continueBlock: _htmlbarsRuntimeHooks2.continueBlock,
|
15161
|
+
hostYieldWithShadowTemplate: _htmlbarsRuntimeHooks2.hostYieldWithShadowTemplate,
|
15162
|
+
visitChildren: _htmlbarsUtilMorphUtils.visitChildren,
|
15163
|
+
validateChildMorphs: _htmlbarsRuntimeExpressionVisitor.validateChildMorphs,
|
15164
|
+
clearMorph: _htmlbarsUtilTemplateUtils.clearMorph
|
15165
|
+
};
|
15166
|
+
|
15167
|
+
exports.hooks = _htmlbarsRuntimeHooks.default;
|
15168
|
+
exports.render = _htmlbarsRuntimeRender.default;
|
15169
|
+
exports.internal = internal;
|
15293
15170
|
});
|
15294
15171
|
enifed("htmlbars-syntax/builders", ["exports"], function (exports) {
|
15295
15172
|
// Statements
|
@@ -17226,95 +17103,6 @@ enifed('htmlbars-syntax/handlebars/utils', ['exports'], function (exports) {
|
|
17226
17103
|
return (contextPath ? contextPath + '.' : '') + id;
|
17227
17104
|
}
|
17228
17105
|
});
|
17229
|
-
enifed("htmlbars-syntax/parser", ["exports", "./handlebars/compiler/base", "../htmlbars-syntax", "../simple-html-tokenizer/evented-tokenizer", "../simple-html-tokenizer/entity-parser", "../simple-html-tokenizer/char-refs/full", "./parser/handlebars-node-visitors", "./parser/tokenizer-event-handlers"], function (exports, _handlebarsCompilerBase, _htmlbarsSyntax, _simpleHtmlTokenizerEventedTokenizer, _simpleHtmlTokenizerEntityParser, _simpleHtmlTokenizerCharRefsFull, _parserHandlebarsNodeVisitors, _parserTokenizerEventHandlers) {
|
17230
|
-
"use strict";
|
17231
|
-
|
17232
|
-
exports.preprocess = preprocess;
|
17233
|
-
exports.Parser = Parser;
|
17234
|
-
|
17235
|
-
function preprocess(html, options) {
|
17236
|
-
var ast = typeof html === 'object' ? html : _handlebarsCompilerBase.parse(html);
|
17237
|
-
var combined = new Parser(html, options).acceptNode(ast);
|
17238
|
-
|
17239
|
-
if (options && options.plugins && options.plugins.ast) {
|
17240
|
-
for (var i = 0, l = options.plugins.ast.length; i < l; i++) {
|
17241
|
-
var plugin = new options.plugins.ast[i](options);
|
17242
|
-
|
17243
|
-
plugin.syntax = _htmlbarsSyntax;
|
17244
|
-
|
17245
|
-
combined = plugin.transform(combined);
|
17246
|
-
}
|
17247
|
-
}
|
17248
|
-
|
17249
|
-
return combined;
|
17250
|
-
}
|
17251
|
-
|
17252
|
-
exports.default = preprocess;
|
17253
|
-
|
17254
|
-
var entityParser = new _simpleHtmlTokenizerEntityParser.default(_simpleHtmlTokenizerCharRefsFull.default);
|
17255
|
-
|
17256
|
-
function Parser(source, options) {
|
17257
|
-
this.options = options || {};
|
17258
|
-
this.elementStack = [];
|
17259
|
-
this.tokenizer = new _simpleHtmlTokenizerEventedTokenizer.default(this, entityParser);
|
17260
|
-
|
17261
|
-
this.currentNode = null;
|
17262
|
-
this.currentAttribute = null;
|
17263
|
-
|
17264
|
-
if (typeof source === 'string') {
|
17265
|
-
this.source = source.split(/(?:\r\n?|\n)/g);
|
17266
|
-
}
|
17267
|
-
}
|
17268
|
-
|
17269
|
-
for (var key in _parserHandlebarsNodeVisitors.default) {
|
17270
|
-
Parser.prototype[key] = _parserHandlebarsNodeVisitors.default[key];
|
17271
|
-
}
|
17272
|
-
|
17273
|
-
for (var key in _parserTokenizerEventHandlers.default) {
|
17274
|
-
Parser.prototype[key] = _parserTokenizerEventHandlers.default[key];
|
17275
|
-
}
|
17276
|
-
|
17277
|
-
Parser.prototype.acceptNode = function (node) {
|
17278
|
-
return this[node.type](node);
|
17279
|
-
};
|
17280
|
-
|
17281
|
-
Parser.prototype.currentElement = function () {
|
17282
|
-
return this.elementStack[this.elementStack.length - 1];
|
17283
|
-
};
|
17284
|
-
|
17285
|
-
Parser.prototype.sourceForMustache = function (mustache) {
|
17286
|
-
var firstLine = mustache.loc.start.line - 1;
|
17287
|
-
var lastLine = mustache.loc.end.line - 1;
|
17288
|
-
var currentLine = firstLine - 1;
|
17289
|
-
var firstColumn = mustache.loc.start.column + 2;
|
17290
|
-
var lastColumn = mustache.loc.end.column - 2;
|
17291
|
-
var string = [];
|
17292
|
-
var line;
|
17293
|
-
|
17294
|
-
if (!this.source) {
|
17295
|
-
return '{{' + mustache.path.id.original + '}}';
|
17296
|
-
}
|
17297
|
-
|
17298
|
-
while (currentLine < lastLine) {
|
17299
|
-
currentLine++;
|
17300
|
-
line = this.source[currentLine];
|
17301
|
-
|
17302
|
-
if (currentLine === firstLine) {
|
17303
|
-
if (firstLine === lastLine) {
|
17304
|
-
string.push(line.slice(firstColumn, lastColumn));
|
17305
|
-
} else {
|
17306
|
-
string.push(line.slice(firstColumn));
|
17307
|
-
}
|
17308
|
-
} else if (currentLine === lastLine) {
|
17309
|
-
string.push(line.slice(0, lastColumn));
|
17310
|
-
} else {
|
17311
|
-
string.push(line);
|
17312
|
-
}
|
17313
|
-
}
|
17314
|
-
|
17315
|
-
return string.join('\n');
|
17316
|
-
};
|
17317
|
-
});
|
17318
17106
|
enifed("htmlbars-syntax/parser/handlebars-node-visitors", ["exports", "../builders", "../utils"], function (exports, _builders, _utils) {
|
17319
17107
|
"use strict";
|
17320
17108
|
|
@@ -17750,6 +17538,95 @@ enifed("htmlbars-syntax/parser/tokenizer-event-handlers", ["exports", "../../htm
|
|
17750
17538
|
return "`" + tag.name + "` (on line " + tag.loc.end.line + ")";
|
17751
17539
|
}
|
17752
17540
|
});
|
17541
|
+
enifed("htmlbars-syntax/parser", ["exports", "./handlebars/compiler/base", "../htmlbars-syntax", "../simple-html-tokenizer/evented-tokenizer", "../simple-html-tokenizer/entity-parser", "../simple-html-tokenizer/char-refs/full", "./parser/handlebars-node-visitors", "./parser/tokenizer-event-handlers"], function (exports, _handlebarsCompilerBase, _htmlbarsSyntax, _simpleHtmlTokenizerEventedTokenizer, _simpleHtmlTokenizerEntityParser, _simpleHtmlTokenizerCharRefsFull, _parserHandlebarsNodeVisitors, _parserTokenizerEventHandlers) {
|
17542
|
+
"use strict";
|
17543
|
+
|
17544
|
+
exports.preprocess = preprocess;
|
17545
|
+
exports.Parser = Parser;
|
17546
|
+
|
17547
|
+
function preprocess(html, options) {
|
17548
|
+
var ast = typeof html === 'object' ? html : _handlebarsCompilerBase.parse(html);
|
17549
|
+
var combined = new Parser(html, options).acceptNode(ast);
|
17550
|
+
|
17551
|
+
if (options && options.plugins && options.plugins.ast) {
|
17552
|
+
for (var i = 0, l = options.plugins.ast.length; i < l; i++) {
|
17553
|
+
var plugin = new options.plugins.ast[i](options);
|
17554
|
+
|
17555
|
+
plugin.syntax = _htmlbarsSyntax;
|
17556
|
+
|
17557
|
+
combined = plugin.transform(combined);
|
17558
|
+
}
|
17559
|
+
}
|
17560
|
+
|
17561
|
+
return combined;
|
17562
|
+
}
|
17563
|
+
|
17564
|
+
exports.default = preprocess;
|
17565
|
+
|
17566
|
+
var entityParser = new _simpleHtmlTokenizerEntityParser.default(_simpleHtmlTokenizerCharRefsFull.default);
|
17567
|
+
|
17568
|
+
function Parser(source, options) {
|
17569
|
+
this.options = options || {};
|
17570
|
+
this.elementStack = [];
|
17571
|
+
this.tokenizer = new _simpleHtmlTokenizerEventedTokenizer.default(this, entityParser);
|
17572
|
+
|
17573
|
+
this.currentNode = null;
|
17574
|
+
this.currentAttribute = null;
|
17575
|
+
|
17576
|
+
if (typeof source === 'string') {
|
17577
|
+
this.source = source.split(/(?:\r\n?|\n)/g);
|
17578
|
+
}
|
17579
|
+
}
|
17580
|
+
|
17581
|
+
for (var key in _parserHandlebarsNodeVisitors.default) {
|
17582
|
+
Parser.prototype[key] = _parserHandlebarsNodeVisitors.default[key];
|
17583
|
+
}
|
17584
|
+
|
17585
|
+
for (var key in _parserTokenizerEventHandlers.default) {
|
17586
|
+
Parser.prototype[key] = _parserTokenizerEventHandlers.default[key];
|
17587
|
+
}
|
17588
|
+
|
17589
|
+
Parser.prototype.acceptNode = function (node) {
|
17590
|
+
return this[node.type](node);
|
17591
|
+
};
|
17592
|
+
|
17593
|
+
Parser.prototype.currentElement = function () {
|
17594
|
+
return this.elementStack[this.elementStack.length - 1];
|
17595
|
+
};
|
17596
|
+
|
17597
|
+
Parser.prototype.sourceForMustache = function (mustache) {
|
17598
|
+
var firstLine = mustache.loc.start.line - 1;
|
17599
|
+
var lastLine = mustache.loc.end.line - 1;
|
17600
|
+
var currentLine = firstLine - 1;
|
17601
|
+
var firstColumn = mustache.loc.start.column + 2;
|
17602
|
+
var lastColumn = mustache.loc.end.column - 2;
|
17603
|
+
var string = [];
|
17604
|
+
var line;
|
17605
|
+
|
17606
|
+
if (!this.source) {
|
17607
|
+
return '{{' + mustache.path.id.original + '}}';
|
17608
|
+
}
|
17609
|
+
|
17610
|
+
while (currentLine < lastLine) {
|
17611
|
+
currentLine++;
|
17612
|
+
line = this.source[currentLine];
|
17613
|
+
|
17614
|
+
if (currentLine === firstLine) {
|
17615
|
+
if (firstLine === lastLine) {
|
17616
|
+
string.push(line.slice(firstColumn, lastColumn));
|
17617
|
+
} else {
|
17618
|
+
string.push(line.slice(firstColumn));
|
17619
|
+
}
|
17620
|
+
} else if (currentLine === lastLine) {
|
17621
|
+
string.push(line.slice(0, lastColumn));
|
17622
|
+
} else {
|
17623
|
+
string.push(line);
|
17624
|
+
}
|
17625
|
+
}
|
17626
|
+
|
17627
|
+
return string.join('\n');
|
17628
|
+
};
|
17629
|
+
});
|
17753
17630
|
enifed("htmlbars-syntax/traversal/errors", ["exports"], function (exports) {
|
17754
17631
|
"use strict";
|
17755
17632
|
|
@@ -18098,6 +17975,15 @@ enifed('htmlbars-syntax/utils', ['exports', '../htmlbars-util/array-utils'], fun
|
|
18098
17975
|
}
|
18099
17976
|
}
|
18100
17977
|
});
|
17978
|
+
enifed("htmlbars-syntax", ["exports", "./htmlbars-syntax/builders", "./htmlbars-syntax/parser", "./htmlbars-syntax/generation/print", "./htmlbars-syntax/traversal/traverse", "./htmlbars-syntax/traversal/walker"], function (exports, _htmlbarsSyntaxBuilders, _htmlbarsSyntaxParser, _htmlbarsSyntaxGenerationPrint, _htmlbarsSyntaxTraversalTraverse, _htmlbarsSyntaxTraversalWalker) {
|
17979
|
+
"use strict";
|
17980
|
+
|
17981
|
+
exports.builders = _htmlbarsSyntaxBuilders.default;
|
17982
|
+
exports.parse = _htmlbarsSyntaxParser.default;
|
17983
|
+
exports.print = _htmlbarsSyntaxGenerationPrint.default;
|
17984
|
+
exports.traverse = _htmlbarsSyntaxTraversalTraverse.default;
|
17985
|
+
exports.Walker = _htmlbarsSyntaxTraversalWalker.default;
|
17986
|
+
});
|
18101
17987
|
enifed("htmlbars-test-helpers", ["exports", "../simple-html-tokenizer", "../htmlbars-util/array-utils"], function (exports, _simpleHtmlTokenizer, _htmlbarsUtilArrayUtils) {
|
18102
17988
|
"use strict";
|
18103
17989
|
|
@@ -18225,16 +18111,6 @@ enifed("htmlbars-test-helpers", ["exports", "../simple-html-tokenizer", "../html
|
|
18225
18111
|
}
|
18226
18112
|
}
|
18227
18113
|
});
|
18228
|
-
enifed('htmlbars-util', ['exports', './htmlbars-util/safe-string', './htmlbars-util/handlebars/utils', './htmlbars-util/namespaces', './htmlbars-util/morph-utils'], function (exports, _htmlbarsUtilSafeString, _htmlbarsUtilHandlebarsUtils, _htmlbarsUtilNamespaces, _htmlbarsUtilMorphUtils) {
|
18229
|
-
'use strict';
|
18230
|
-
|
18231
|
-
exports.SafeString = _htmlbarsUtilSafeString.default;
|
18232
|
-
exports.escapeExpression = _htmlbarsUtilHandlebarsUtils.escapeExpression;
|
18233
|
-
exports.getAttrNamespace = _htmlbarsUtilNamespaces.getAttrNamespace;
|
18234
|
-
exports.validateChildMorphs = _htmlbarsUtilMorphUtils.validateChildMorphs;
|
18235
|
-
exports.linkParams = _htmlbarsUtilMorphUtils.linkParams;
|
18236
|
-
exports.dump = _htmlbarsUtilMorphUtils.dump;
|
18237
|
-
});
|
18238
18114
|
enifed('htmlbars-util/array-utils', ['exports'], function (exports) {
|
18239
18115
|
'use strict';
|
18240
18116
|
|
@@ -18803,43 +18679,310 @@ enifed("htmlbars-util/template-utils", ["exports", "../htmlbars-util/morph-utils
|
|
18803
18679
|
didCleanup(env, morph, destroySelf);
|
18804
18680
|
}
|
18805
18681
|
|
18806
|
-
morph.lastResult = null;
|
18807
|
-
morph.lastYielded = null;
|
18808
|
-
morph.childNodes = null;
|
18809
|
-
}
|
18682
|
+
morph.lastResult = null;
|
18683
|
+
morph.lastYielded = null;
|
18684
|
+
morph.childNodes = null;
|
18685
|
+
}
|
18686
|
+
|
18687
|
+
function clearMorphList(morphList, morph, env) {
|
18688
|
+
var item = morphList.firstChildMorph;
|
18689
|
+
|
18690
|
+
while (item) {
|
18691
|
+
var next = item.nextMorph;
|
18692
|
+
delete morph.morphMap[item.key];
|
18693
|
+
clearMorph(item, env, true);
|
18694
|
+
item.destroy();
|
18695
|
+
|
18696
|
+
item = next;
|
18697
|
+
}
|
18698
|
+
|
18699
|
+
// Remove the MorphList from the morph.
|
18700
|
+
morphList.clear();
|
18701
|
+
morph.morphList = null;
|
18702
|
+
}
|
18703
|
+
});
|
18704
|
+
enifed("htmlbars-util/void-tag-names", ["exports", "./array-utils"], function (exports, _arrayUtils) {
|
18705
|
+
"use strict";
|
18706
|
+
|
18707
|
+
// The HTML elements in this list are speced by
|
18708
|
+
// http://www.w3.org/TR/html-markup/syntax.html#syntax-elements,
|
18709
|
+
// and will be forced to close regardless of if they have a
|
18710
|
+
// self-closing /> at the end.
|
18711
|
+
var voidTagNames = "area base br col command embed hr img input keygen link meta param source track wbr";
|
18712
|
+
var voidMap = {};
|
18713
|
+
|
18714
|
+
_arrayUtils.forEach(voidTagNames.split(" "), function (tagName) {
|
18715
|
+
voidMap[tagName] = true;
|
18716
|
+
});
|
18717
|
+
|
18718
|
+
exports.default = voidMap;
|
18719
|
+
});
|
18720
|
+
enifed('htmlbars-util', ['exports', './htmlbars-util/safe-string', './htmlbars-util/handlebars/utils', './htmlbars-util/namespaces', './htmlbars-util/morph-utils'], function (exports, _htmlbarsUtilSafeString, _htmlbarsUtilHandlebarsUtils, _htmlbarsUtilNamespaces, _htmlbarsUtilMorphUtils) {
|
18721
|
+
'use strict';
|
18722
|
+
|
18723
|
+
exports.SafeString = _htmlbarsUtilSafeString.default;
|
18724
|
+
exports.escapeExpression = _htmlbarsUtilHandlebarsUtils.escapeExpression;
|
18725
|
+
exports.getAttrNamespace = _htmlbarsUtilNamespaces.getAttrNamespace;
|
18726
|
+
exports.validateChildMorphs = _htmlbarsUtilMorphUtils.validateChildMorphs;
|
18727
|
+
exports.linkParams = _htmlbarsUtilMorphUtils.linkParams;
|
18728
|
+
exports.dump = _htmlbarsUtilMorphUtils.dump;
|
18729
|
+
});
|
18730
|
+
(function() {
|
18731
|
+
})();
|
18732
|
+
/*!
|
18733
|
+
* @overview Ember - JavaScript Application Framework
|
18734
|
+
* @copyright Copyright 2011-2015 Tilde Inc. and contributors
|
18735
|
+
* Portions Copyright 2006-2011 Strobe Inc.
|
18736
|
+
* Portions Copyright 2008-2011 Apple Inc. All rights reserved.
|
18737
|
+
* @license Licensed under MIT license
|
18738
|
+
* See https://raw.github.com/emberjs/ember.js/master/LICENSE
|
18739
|
+
* @version 2.0.3
|
18740
|
+
*/
|
18741
|
+
|
18742
|
+
var enifed, requireModule, eriuqer, requirejs, Ember;
|
18743
|
+
var mainContext = this;
|
18744
|
+
|
18745
|
+
(function() {
|
18746
|
+
var isNode = typeof window === 'undefined' &&
|
18747
|
+
typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';
|
18748
|
+
|
18749
|
+
if (!isNode) {
|
18750
|
+
Ember = this.Ember = this.Ember || {};
|
18751
|
+
}
|
18752
|
+
|
18753
|
+
if (typeof Ember === 'undefined') { Ember = {}; };
|
18754
|
+
|
18755
|
+
if (typeof Ember.__loader === 'undefined') {
|
18756
|
+
var registry = {};
|
18757
|
+
var seen = {};
|
18758
|
+
|
18759
|
+
enifed = function(name, deps, callback) {
|
18760
|
+
var value = { };
|
18761
|
+
|
18762
|
+
if (!callback) {
|
18763
|
+
value.deps = [];
|
18764
|
+
value.callback = deps;
|
18765
|
+
} else {
|
18766
|
+
value.deps = deps;
|
18767
|
+
value.callback = callback;
|
18768
|
+
}
|
18769
|
+
|
18770
|
+
registry[name] = value;
|
18771
|
+
};
|
18772
|
+
|
18773
|
+
requirejs = eriuqer = requireModule = function(name) {
|
18774
|
+
return internalRequire(name, null);
|
18775
|
+
}
|
18776
|
+
|
18777
|
+
function internalRequire(name, referrerName) {
|
18778
|
+
var exports = seen[name];
|
18779
|
+
|
18780
|
+
if (exports !== undefined) {
|
18781
|
+
return exports;
|
18782
|
+
}
|
18783
|
+
|
18784
|
+
exports = seen[name] = {};
|
18785
|
+
|
18786
|
+
if (!registry[name]) {
|
18787
|
+
if (referrerName) {
|
18788
|
+
throw new Error('Could not find module ' + name + ' required by: ' + referrerName);
|
18789
|
+
} else {
|
18790
|
+
throw new Error('Could not find module ' + name);
|
18791
|
+
}
|
18792
|
+
}
|
18793
|
+
|
18794
|
+
var mod = registry[name];
|
18795
|
+
var deps = mod.deps;
|
18796
|
+
var callback = mod.callback;
|
18797
|
+
var reified = [];
|
18798
|
+
var length = deps.length;
|
18799
|
+
|
18800
|
+
for (var i=0; i<length; i++) {
|
18801
|
+
if (deps[i] === 'exports') {
|
18802
|
+
reified.push(exports);
|
18803
|
+
} else {
|
18804
|
+
reified.push(internalRequire(resolve(deps[i], name), name));
|
18805
|
+
}
|
18806
|
+
}
|
18807
|
+
|
18808
|
+
callback.apply(this, reified);
|
18809
|
+
|
18810
|
+
return exports;
|
18811
|
+
};
|
18812
|
+
|
18813
|
+
function resolve(child, name) {
|
18814
|
+
if (child.charAt(0) !== '.') {
|
18815
|
+
return child;
|
18816
|
+
}
|
18817
|
+
var parts = child.split('/');
|
18818
|
+
var parentBase = name.split('/').slice(0, -1);
|
18819
|
+
|
18820
|
+
for (var i=0, l=parts.length; i<l; i++) {
|
18821
|
+
var part = parts[i];
|
18822
|
+
|
18823
|
+
if (part === '..') {
|
18824
|
+
parentBase.pop();
|
18825
|
+
} else if (part === '.') {
|
18826
|
+
continue;
|
18827
|
+
} else {
|
18828
|
+
parentBase.push(part);
|
18829
|
+
}
|
18830
|
+
}
|
18831
|
+
|
18832
|
+
return parentBase.join('/');
|
18833
|
+
}
|
18834
|
+
|
18835
|
+
requirejs._eak_seen = registry;
|
18836
|
+
|
18837
|
+
Ember.__loader = {
|
18838
|
+
define: enifed,
|
18839
|
+
require: eriuqer,
|
18840
|
+
registry: registry
|
18841
|
+
};
|
18842
|
+
} else {
|
18843
|
+
enifed = Ember.__loader.define;
|
18844
|
+
requirejs = eriuqer = requireModule = Ember.__loader.require;
|
18845
|
+
}
|
18846
|
+
})();
|
18847
|
+
|
18848
|
+
enifed('morph-range/morph-list', ['exports', './utils'], function (exports, _utils) {
|
18849
|
+
'use strict';
|
18850
|
+
|
18851
|
+
function MorphList() {
|
18852
|
+
// morph graph
|
18853
|
+
this.firstChildMorph = null;
|
18854
|
+
this.lastChildMorph = null;
|
18855
|
+
|
18856
|
+
this.mountedMorph = null;
|
18857
|
+
}
|
18858
|
+
|
18859
|
+
var prototype = MorphList.prototype;
|
18860
|
+
|
18861
|
+
prototype.clear = function MorphList$clear() {
|
18862
|
+
var current = this.firstChildMorph;
|
18863
|
+
|
18864
|
+
while (current) {
|
18865
|
+
var next = current.nextMorph;
|
18866
|
+
current.previousMorph = null;
|
18867
|
+
current.nextMorph = null;
|
18868
|
+
current.parentMorphList = null;
|
18869
|
+
current = next;
|
18870
|
+
}
|
18871
|
+
|
18872
|
+
this.firstChildMorph = this.lastChildMorph = null;
|
18873
|
+
};
|
18874
|
+
|
18875
|
+
prototype.destroy = function MorphList$destroy() {};
|
18876
|
+
|
18877
|
+
prototype.appendMorph = function MorphList$appendMorph(morph) {
|
18878
|
+
this.insertBeforeMorph(morph, null);
|
18879
|
+
};
|
18880
|
+
|
18881
|
+
prototype.insertBeforeMorph = function MorphList$insertBeforeMorph(morph, referenceMorph) {
|
18882
|
+
if (morph.parentMorphList !== null) {
|
18883
|
+
morph.unlink();
|
18884
|
+
}
|
18885
|
+
if (referenceMorph && referenceMorph.parentMorphList !== this) {
|
18886
|
+
throw new Error('The morph before which the new morph is to be inserted is not a child of this morph.');
|
18887
|
+
}
|
18888
|
+
|
18889
|
+
var mountedMorph = this.mountedMorph;
|
18890
|
+
|
18891
|
+
if (mountedMorph) {
|
18892
|
+
|
18893
|
+
var parentNode = mountedMorph.firstNode.parentNode;
|
18894
|
+
var referenceNode = referenceMorph ? referenceMorph.firstNode : mountedMorph.lastNode.nextSibling;
|
18895
|
+
|
18896
|
+
_utils.insertBefore(parentNode, morph.firstNode, morph.lastNode, referenceNode);
|
18897
|
+
|
18898
|
+
// was not in list mode replace current content
|
18899
|
+
if (!this.firstChildMorph) {
|
18900
|
+
_utils.clear(this.mountedMorph.firstNode.parentNode, this.mountedMorph.firstNode, this.mountedMorph.lastNode);
|
18901
|
+
}
|
18902
|
+
}
|
18903
|
+
|
18904
|
+
morph.parentMorphList = this;
|
18905
|
+
|
18906
|
+
var previousMorph = referenceMorph ? referenceMorph.previousMorph : this.lastChildMorph;
|
18907
|
+
if (previousMorph) {
|
18908
|
+
previousMorph.nextMorph = morph;
|
18909
|
+
morph.previousMorph = previousMorph;
|
18910
|
+
} else {
|
18911
|
+
this.firstChildMorph = morph;
|
18912
|
+
}
|
18913
|
+
|
18914
|
+
if (referenceMorph) {
|
18915
|
+
referenceMorph.previousMorph = morph;
|
18916
|
+
morph.nextMorph = referenceMorph;
|
18917
|
+
} else {
|
18918
|
+
this.lastChildMorph = morph;
|
18919
|
+
}
|
18920
|
+
|
18921
|
+
this.firstChildMorph._syncFirstNode();
|
18922
|
+
this.lastChildMorph._syncLastNode();
|
18923
|
+
};
|
18810
18924
|
|
18811
|
-
function
|
18812
|
-
|
18925
|
+
prototype.removeChildMorph = function MorphList$removeChildMorph(morph) {
|
18926
|
+
if (morph.parentMorphList !== this) {
|
18927
|
+
throw new Error("Cannot remove a morph from a parent it is not inside of");
|
18928
|
+
}
|
18813
18929
|
|
18814
|
-
|
18815
|
-
|
18816
|
-
delete morph.morphMap[item.key];
|
18817
|
-
clearMorph(item, env, true);
|
18818
|
-
item.destroy();
|
18930
|
+
morph.destroy();
|
18931
|
+
};
|
18819
18932
|
|
18820
|
-
|
18821
|
-
|
18933
|
+
exports.default = MorphList;
|
18934
|
+
});
|
18935
|
+
enifed('morph-range/morph-list.umd', ['exports', './morph-list'], function (exports, _morphList) {
|
18936
|
+
'use strict';
|
18822
18937
|
|
18823
|
-
|
18824
|
-
|
18825
|
-
|
18826
|
-
|
18938
|
+
(function (root, factory) {
|
18939
|
+
if (typeof enifed === 'function' && enifed.amd) {
|
18940
|
+
enifed([], factory);
|
18941
|
+
} else if (typeof exports === 'object') {
|
18942
|
+
module.exports = factory();
|
18943
|
+
} else {
|
18944
|
+
root.MorphList = factory();
|
18945
|
+
}
|
18946
|
+
})(undefined, function () {
|
18947
|
+
return _morphList.default;
|
18948
|
+
});
|
18827
18949
|
});
|
18828
|
-
enifed("
|
18950
|
+
enifed("morph-range/utils", ["exports"], function (exports) {
|
18951
|
+
// inclusive of both nodes
|
18829
18952
|
"use strict";
|
18830
18953
|
|
18831
|
-
|
18832
|
-
|
18833
|
-
// and will be forced to close regardless of if they have a
|
18834
|
-
// self-closing /> at the end.
|
18835
|
-
var voidTagNames = "area base br col command embed hr img input keygen link meta param source track wbr";
|
18836
|
-
var voidMap = {};
|
18954
|
+
exports.clear = clear;
|
18955
|
+
exports.insertBefore = insertBefore;
|
18837
18956
|
|
18838
|
-
|
18839
|
-
|
18840
|
-
|
18957
|
+
function clear(parentNode, firstNode, lastNode) {
|
18958
|
+
if (!parentNode) {
|
18959
|
+
return;
|
18960
|
+
}
|
18841
18961
|
|
18842
|
-
|
18962
|
+
var node = firstNode;
|
18963
|
+
var nextNode;
|
18964
|
+
do {
|
18965
|
+
nextNode = node.nextSibling;
|
18966
|
+
parentNode.removeChild(node);
|
18967
|
+
if (node === lastNode) {
|
18968
|
+
break;
|
18969
|
+
}
|
18970
|
+
node = nextNode;
|
18971
|
+
} while (node);
|
18972
|
+
}
|
18973
|
+
|
18974
|
+
function insertBefore(parentNode, firstNode, lastNode, refNode) {
|
18975
|
+
var node = firstNode;
|
18976
|
+
var nextNode;
|
18977
|
+
do {
|
18978
|
+
nextNode = node.nextSibling;
|
18979
|
+
parentNode.insertBefore(node, refNode);
|
18980
|
+
if (node === lastNode) {
|
18981
|
+
break;
|
18982
|
+
}
|
18983
|
+
node = nextNode;
|
18984
|
+
} while (node);
|
18985
|
+
}
|
18843
18986
|
});
|
18844
18987
|
enifed('morph-range', ['exports', './morph-range/utils'], function (exports, _morphRangeUtils) {
|
18845
18988
|
'use strict';
|
@@ -18899,8 +19042,8 @@ enifed('morph-range', ['exports', './morph-range/utils'], function (exports, _mo
|
|
18899
19042
|
return this.setNode(content);
|
18900
19043
|
}
|
18901
19044
|
/* Handlebars.SafeString */
|
18902
|
-
if (typeof content.
|
18903
|
-
return this.setHTML(content.
|
19045
|
+
if (typeof content.toHTML === 'function') {
|
19046
|
+
return this.setHTML(content.toHTML());
|
18904
19047
|
}
|
18905
19048
|
if (this.parseTextAsHTML) {
|
18906
19049
|
return this.setHTML(content.toString());
|
@@ -19105,159 +19248,6 @@ enifed('morph-range', ['exports', './morph-range/utils'], function (exports, _mo
|
|
19105
19248
|
|
19106
19249
|
exports.default = Morph;
|
19107
19250
|
});
|
19108
|
-
enifed('morph-range/morph-list', ['exports', './utils'], function (exports, _utils) {
|
19109
|
-
'use strict';
|
19110
|
-
|
19111
|
-
function MorphList() {
|
19112
|
-
// morph graph
|
19113
|
-
this.firstChildMorph = null;
|
19114
|
-
this.lastChildMorph = null;
|
19115
|
-
|
19116
|
-
this.mountedMorph = null;
|
19117
|
-
}
|
19118
|
-
|
19119
|
-
var prototype = MorphList.prototype;
|
19120
|
-
|
19121
|
-
prototype.clear = function MorphList$clear() {
|
19122
|
-
var current = this.firstChildMorph;
|
19123
|
-
|
19124
|
-
while (current) {
|
19125
|
-
var next = current.nextMorph;
|
19126
|
-
current.previousMorph = null;
|
19127
|
-
current.nextMorph = null;
|
19128
|
-
current.parentMorphList = null;
|
19129
|
-
current = next;
|
19130
|
-
}
|
19131
|
-
|
19132
|
-
this.firstChildMorph = this.lastChildMorph = null;
|
19133
|
-
};
|
19134
|
-
|
19135
|
-
prototype.destroy = function MorphList$destroy() {};
|
19136
|
-
|
19137
|
-
prototype.appendMorph = function MorphList$appendMorph(morph) {
|
19138
|
-
this.insertBeforeMorph(morph, null);
|
19139
|
-
};
|
19140
|
-
|
19141
|
-
prototype.insertBeforeMorph = function MorphList$insertBeforeMorph(morph, referenceMorph) {
|
19142
|
-
if (morph.parentMorphList !== null) {
|
19143
|
-
morph.unlink();
|
19144
|
-
}
|
19145
|
-
if (referenceMorph && referenceMorph.parentMorphList !== this) {
|
19146
|
-
throw new Error('The morph before which the new morph is to be inserted is not a child of this morph.');
|
19147
|
-
}
|
19148
|
-
|
19149
|
-
var mountedMorph = this.mountedMorph;
|
19150
|
-
|
19151
|
-
if (mountedMorph) {
|
19152
|
-
|
19153
|
-
var parentNode = mountedMorph.firstNode.parentNode;
|
19154
|
-
var referenceNode = referenceMorph ? referenceMorph.firstNode : mountedMorph.lastNode.nextSibling;
|
19155
|
-
|
19156
|
-
_utils.insertBefore(parentNode, morph.firstNode, morph.lastNode, referenceNode);
|
19157
|
-
|
19158
|
-
// was not in list mode replace current content
|
19159
|
-
if (!this.firstChildMorph) {
|
19160
|
-
_utils.clear(this.mountedMorph.firstNode.parentNode, this.mountedMorph.firstNode, this.mountedMorph.lastNode);
|
19161
|
-
}
|
19162
|
-
}
|
19163
|
-
|
19164
|
-
morph.parentMorphList = this;
|
19165
|
-
|
19166
|
-
var previousMorph = referenceMorph ? referenceMorph.previousMorph : this.lastChildMorph;
|
19167
|
-
if (previousMorph) {
|
19168
|
-
previousMorph.nextMorph = morph;
|
19169
|
-
morph.previousMorph = previousMorph;
|
19170
|
-
} else {
|
19171
|
-
this.firstChildMorph = morph;
|
19172
|
-
}
|
19173
|
-
|
19174
|
-
if (referenceMorph) {
|
19175
|
-
referenceMorph.previousMorph = morph;
|
19176
|
-
morph.nextMorph = referenceMorph;
|
19177
|
-
} else {
|
19178
|
-
this.lastChildMorph = morph;
|
19179
|
-
}
|
19180
|
-
|
19181
|
-
this.firstChildMorph._syncFirstNode();
|
19182
|
-
this.lastChildMorph._syncLastNode();
|
19183
|
-
};
|
19184
|
-
|
19185
|
-
prototype.removeChildMorph = function MorphList$removeChildMorph(morph) {
|
19186
|
-
if (morph.parentMorphList !== this) {
|
19187
|
-
throw new Error("Cannot remove a morph from a parent it is not inside of");
|
19188
|
-
}
|
19189
|
-
|
19190
|
-
morph.destroy();
|
19191
|
-
};
|
19192
|
-
|
19193
|
-
exports.default = MorphList;
|
19194
|
-
});
|
19195
|
-
enifed('morph-range/morph-list.umd', ['exports', './morph-list'], function (exports, _morphList) {
|
19196
|
-
'use strict';
|
19197
|
-
|
19198
|
-
(function (root, factory) {
|
19199
|
-
if (typeof enifed === 'function' && enifed.amd) {
|
19200
|
-
enifed([], factory);
|
19201
|
-
} else if (typeof exports === 'object') {
|
19202
|
-
module.exports = factory();
|
19203
|
-
} else {
|
19204
|
-
root.MorphList = factory();
|
19205
|
-
}
|
19206
|
-
})(undefined, function () {
|
19207
|
-
return _morphList.default;
|
19208
|
-
});
|
19209
|
-
});
|
19210
|
-
enifed("morph-range/utils", ["exports"], function (exports) {
|
19211
|
-
// inclusive of both nodes
|
19212
|
-
"use strict";
|
19213
|
-
|
19214
|
-
exports.clear = clear;
|
19215
|
-
exports.insertBefore = insertBefore;
|
19216
|
-
|
19217
|
-
function clear(parentNode, firstNode, lastNode) {
|
19218
|
-
if (!parentNode) {
|
19219
|
-
return;
|
19220
|
-
}
|
19221
|
-
|
19222
|
-
var node = firstNode;
|
19223
|
-
var nextNode;
|
19224
|
-
do {
|
19225
|
-
nextNode = node.nextSibling;
|
19226
|
-
parentNode.removeChild(node);
|
19227
|
-
if (node === lastNode) {
|
19228
|
-
break;
|
19229
|
-
}
|
19230
|
-
node = nextNode;
|
19231
|
-
} while (node);
|
19232
|
-
}
|
19233
|
-
|
19234
|
-
function insertBefore(parentNode, firstNode, lastNode, refNode) {
|
19235
|
-
var node = firstNode;
|
19236
|
-
var nextNode;
|
19237
|
-
do {
|
19238
|
-
nextNode = node.nextSibling;
|
19239
|
-
parentNode.insertBefore(node, refNode);
|
19240
|
-
if (node === lastNode) {
|
19241
|
-
break;
|
19242
|
-
}
|
19243
|
-
node = nextNode;
|
19244
|
-
} while (node);
|
19245
|
-
}
|
19246
|
-
});
|
19247
|
-
enifed('simple-html-tokenizer', ['exports', './simple-html-tokenizer/evented-tokenizer', './simple-html-tokenizer/tokenizer', './simple-html-tokenizer/tokenize', './simple-html-tokenizer/generator', './simple-html-tokenizer/generate', './simple-html-tokenizer/tokens'], function (exports, _simpleHtmlTokenizerEventedTokenizer, _simpleHtmlTokenizerTokenizer, _simpleHtmlTokenizerTokenize, _simpleHtmlTokenizerGenerator, _simpleHtmlTokenizerGenerate, _simpleHtmlTokenizerTokens) {
|
19248
|
-
/*jshint boss:true*/
|
19249
|
-
'use strict';
|
19250
|
-
|
19251
|
-
exports.EventedTokenizer = _simpleHtmlTokenizerEventedTokenizer.default;
|
19252
|
-
exports.Tokenizer = _simpleHtmlTokenizerTokenizer.default;
|
19253
|
-
exports.tokenize = _simpleHtmlTokenizerTokenize.default;
|
19254
|
-
exports.Generator = _simpleHtmlTokenizerGenerator.default;
|
19255
|
-
exports.generate = _simpleHtmlTokenizerGenerate.default;
|
19256
|
-
exports.StartTag = _simpleHtmlTokenizerTokens.StartTag;
|
19257
|
-
exports.EndTag = _simpleHtmlTokenizerTokens.EndTag;
|
19258
|
-
exports.Chars = _simpleHtmlTokenizerTokens.Chars;
|
19259
|
-
exports.Comment = _simpleHtmlTokenizerTokens.Comment;
|
19260
|
-
});
|
19261
19251
|
enifed("simple-html-tokenizer/char-refs/full", ["exports"], function (exports) {
|
19262
19252
|
"use strict";
|
19263
19253
|
|
@@ -22125,10 +22115,20 @@ enifed("simple-html-tokenizer/utils", ["exports"], function (exports) {
|
|
22125
22115
|
return input.replace(/\r\n?/g, "\n");
|
22126
22116
|
}
|
22127
22117
|
});
|
22128
|
-
|
22129
|
-
|
22118
|
+
enifed('simple-html-tokenizer', ['exports', './simple-html-tokenizer/evented-tokenizer', './simple-html-tokenizer/tokenizer', './simple-html-tokenizer/tokenize', './simple-html-tokenizer/generator', './simple-html-tokenizer/generate', './simple-html-tokenizer/tokens'], function (exports, _simpleHtmlTokenizerEventedTokenizer, _simpleHtmlTokenizerTokenizer, _simpleHtmlTokenizerTokenize, _simpleHtmlTokenizerGenerator, _simpleHtmlTokenizerGenerate, _simpleHtmlTokenizerTokens) {
|
22119
|
+
/*jshint boss:true*/
|
22120
|
+
'use strict';
|
22130
22121
|
|
22131
|
-
|
22122
|
+
exports.EventedTokenizer = _simpleHtmlTokenizerEventedTokenizer.default;
|
22123
|
+
exports.Tokenizer = _simpleHtmlTokenizerTokenizer.default;
|
22124
|
+
exports.tokenize = _simpleHtmlTokenizerTokenize.default;
|
22125
|
+
exports.Generator = _simpleHtmlTokenizerGenerator.default;
|
22126
|
+
exports.generate = _simpleHtmlTokenizerGenerate.default;
|
22127
|
+
exports.StartTag = _simpleHtmlTokenizerTokens.StartTag;
|
22128
|
+
exports.EndTag = _simpleHtmlTokenizerTokens.EndTag;
|
22129
|
+
exports.Chars = _simpleHtmlTokenizerTokens.Chars;
|
22130
|
+
exports.Comment = _simpleHtmlTokenizerTokens.Comment;
|
22131
|
+
});
|
22132
22132
|
;
|
22133
22133
|
if (typeof exports === "object") {
|
22134
22134
|
module.exports = Ember.__loader.require("ember-template-compiler");
|