ember-source 2.0.2 → 2.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/dist/ember-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");
|