@tomorrowevening/theatre-core 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +203 -0
- package/README.md +49 -0
- package/dist/index.js +3973 -0
- package/dist/index.js.map +7 -0
- package/package.json +56 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,3973 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty, __defProps = Object.defineProperties, __getOwnPropDesc = Object.getOwnPropertyDescriptor, __getOwnPropDescs = Object.getOwnPropertyDescriptors, __getOwnPropNames = Object.getOwnPropertyNames, __getOwnPropSymbols = Object.getOwnPropertySymbols, __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty, __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
4
|
+
var __knownSymbol = (name, symbol) => {
|
|
5
|
+
if (symbol = Symbol[name])
|
|
6
|
+
return symbol;
|
|
7
|
+
throw Error("Symbol." + name + " is not defined");
|
|
8
|
+
};
|
|
9
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __spreadValues = (a, b) => {
|
|
10
|
+
for (var prop in b || (b = {}))
|
|
11
|
+
__hasOwnProp.call(b, prop) && __defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b))
|
|
14
|
+
__propIsEnum.call(b, prop) && __defNormalProp(a, prop, b[prop]);
|
|
15
|
+
return a;
|
|
16
|
+
}, __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
17
|
+
var __commonJS = (cb, mod) => function() {
|
|
18
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
19
|
+
};
|
|
20
|
+
var __export = (target, all) => {
|
|
21
|
+
for (var name in all)
|
|
22
|
+
__defProp(target, name, { get: all[name], enumerable: !0 });
|
|
23
|
+
}, __copyProps = (to, from, except, desc) => {
|
|
24
|
+
if (from && typeof from == "object" || typeof from == "function")
|
|
25
|
+
for (let key of __getOwnPropNames(from))
|
|
26
|
+
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
27
|
+
return to;
|
|
28
|
+
};
|
|
29
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
30
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
31
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
32
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
33
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
34
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: !0 }) : target,
|
|
35
|
+
mod
|
|
36
|
+
)), __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
37
|
+
var __publicField = (obj, key, value) => (__defNormalProp(obj, typeof key != "symbol" ? key + "" : key, value), value);
|
|
38
|
+
var __await = function(promise, isYieldStar) {
|
|
39
|
+
this[0] = promise, this[1] = isYieldStar;
|
|
40
|
+
};
|
|
41
|
+
var __yieldStar = (value) => {
|
|
42
|
+
var obj = value[__knownSymbol("asyncIterator")], isAwait = !1, method, it = {};
|
|
43
|
+
return obj == null ? (obj = value[__knownSymbol("iterator")](), method = (k) => it[k] = (x) => obj[k](x)) : (obj = obj.call(value), method = (k) => it[k] = (v) => {
|
|
44
|
+
if (isAwait) {
|
|
45
|
+
if (isAwait = !1, k === "throw")
|
|
46
|
+
throw v;
|
|
47
|
+
return v;
|
|
48
|
+
}
|
|
49
|
+
return isAwait = !0, {
|
|
50
|
+
done: !1,
|
|
51
|
+
value: new __await(new Promise((resolve) => {
|
|
52
|
+
var x = obj[k](v);
|
|
53
|
+
if (!(x instanceof Object))
|
|
54
|
+
throw TypeError("Object expected");
|
|
55
|
+
resolve(x);
|
|
56
|
+
}), 1)
|
|
57
|
+
};
|
|
58
|
+
}), it[__knownSymbol("iterator")] = () => it, method("next"), "throw" in obj ? method("throw") : it.throw = (x) => {
|
|
59
|
+
throw x;
|
|
60
|
+
}, "return" in obj && method("return"), it;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
// ../../node_modules/timing-function/lib/UnitBezier.js
|
|
64
|
+
var require_UnitBezier = __commonJS({
|
|
65
|
+
"../../node_modules/timing-function/lib/UnitBezier.js"(exports2, module2) {
|
|
66
|
+
var UnitBezier2;
|
|
67
|
+
module2.exports = UnitBezier2 = function() {
|
|
68
|
+
function UnitBezier3(p1x, p1y, p2x, p2y) {
|
|
69
|
+
this.set(p1x, p1y, p2x, p2y);
|
|
70
|
+
}
|
|
71
|
+
return UnitBezier3.prototype.set = function(p1x, p1y, p2x, p2y) {
|
|
72
|
+
this._cx = 3 * p1x, this._bx = 3 * (p2x - p1x) - this._cx, this._ax = 1 - this._cx - this._bx, this._cy = 3 * p1y, this._by = 3 * (p2y - p1y) - this._cy, this._ay = 1 - this._cy - this._by;
|
|
73
|
+
}, UnitBezier3.epsilon = 1e-6, UnitBezier3.prototype._sampleCurveX = function(t) {
|
|
74
|
+
return ((this._ax * t + this._bx) * t + this._cx) * t;
|
|
75
|
+
}, UnitBezier3.prototype._sampleCurveY = function(t) {
|
|
76
|
+
return ((this._ay * t + this._by) * t + this._cy) * t;
|
|
77
|
+
}, UnitBezier3.prototype._sampleCurveDerivativeX = function(t) {
|
|
78
|
+
return (3 * this._ax * t + 2 * this._bx) * t + this._cx;
|
|
79
|
+
}, UnitBezier3.prototype._solveCurveX = function(x, epsilon) {
|
|
80
|
+
var d2, i, t0, t1, t2, x2;
|
|
81
|
+
for (t0 = void 0, t1 = void 0, t2 = void 0, x2 = void 0, d2 = void 0, i = void 0, t2 = x, i = 0; i < 8; ) {
|
|
82
|
+
if (x2 = this._sampleCurveX(t2) - x, Math.abs(x2) < epsilon)
|
|
83
|
+
return t2;
|
|
84
|
+
if (d2 = this._sampleCurveDerivativeX(t2), Math.abs(d2) < epsilon)
|
|
85
|
+
break;
|
|
86
|
+
t2 = t2 - x2 / d2, i++;
|
|
87
|
+
}
|
|
88
|
+
if (t0 = 0, t1 = 1, t2 = x, t2 < t0)
|
|
89
|
+
return t0;
|
|
90
|
+
if (t2 > t1)
|
|
91
|
+
return t1;
|
|
92
|
+
for (; t0 < t1; ) {
|
|
93
|
+
if (x2 = this._sampleCurveX(t2), Math.abs(x2 - x) < epsilon)
|
|
94
|
+
return t2;
|
|
95
|
+
x > x2 ? t0 = t2 : t1 = t2, t2 = (t1 - t0) * 0.5 + t0;
|
|
96
|
+
}
|
|
97
|
+
return t2;
|
|
98
|
+
}, UnitBezier3.prototype.solve = function(x, epsilon) {
|
|
99
|
+
return this._sampleCurveY(this._solveCurveX(x, epsilon));
|
|
100
|
+
}, UnitBezier3.prototype.solveSimple = function(x) {
|
|
101
|
+
return this._sampleCurveY(this._solveCurveX(x, 1e-6));
|
|
102
|
+
}, UnitBezier3;
|
|
103
|
+
}();
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
// ../../node_modules/fast-deep-equal/index.js
|
|
108
|
+
var require_fast_deep_equal = __commonJS({
|
|
109
|
+
"../../node_modules/fast-deep-equal/index.js"(exports2, module2) {
|
|
110
|
+
"use strict";
|
|
111
|
+
module2.exports = function equal(a, b) {
|
|
112
|
+
if (a === b)
|
|
113
|
+
return !0;
|
|
114
|
+
if (a && b && typeof a == "object" && typeof b == "object") {
|
|
115
|
+
if (a.constructor !== b.constructor)
|
|
116
|
+
return !1;
|
|
117
|
+
var length, i, keys2;
|
|
118
|
+
if (Array.isArray(a)) {
|
|
119
|
+
if (length = a.length, length != b.length)
|
|
120
|
+
return !1;
|
|
121
|
+
for (i = length; i-- !== 0; )
|
|
122
|
+
if (!equal(a[i], b[i]))
|
|
123
|
+
return !1;
|
|
124
|
+
return !0;
|
|
125
|
+
}
|
|
126
|
+
if (a.constructor === RegExp)
|
|
127
|
+
return a.source === b.source && a.flags === b.flags;
|
|
128
|
+
if (a.valueOf !== Object.prototype.valueOf)
|
|
129
|
+
return a.valueOf() === b.valueOf();
|
|
130
|
+
if (a.toString !== Object.prototype.toString)
|
|
131
|
+
return a.toString() === b.toString();
|
|
132
|
+
if (keys2 = Object.keys(a), length = keys2.length, length !== Object.keys(b).length)
|
|
133
|
+
return !1;
|
|
134
|
+
for (i = length; i-- !== 0; )
|
|
135
|
+
if (!Object.prototype.hasOwnProperty.call(b, keys2[i]))
|
|
136
|
+
return !1;
|
|
137
|
+
for (i = length; i-- !== 0; ) {
|
|
138
|
+
var key = keys2[i];
|
|
139
|
+
if (!equal(a[key], b[key]))
|
|
140
|
+
return !1;
|
|
141
|
+
}
|
|
142
|
+
return !0;
|
|
143
|
+
}
|
|
144
|
+
return a !== a && b !== b;
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
// src/index.ts
|
|
150
|
+
var src_exports = {};
|
|
151
|
+
__export(src_exports, {
|
|
152
|
+
__private: () => __private,
|
|
153
|
+
createRafDriver: () => createRafDriver,
|
|
154
|
+
default: () => src_default,
|
|
155
|
+
getProject: () => getProject,
|
|
156
|
+
getStudio: () => getStudio,
|
|
157
|
+
getStudioSync: () => getStudioSync,
|
|
158
|
+
init: () => init,
|
|
159
|
+
notify: () => notify,
|
|
160
|
+
onChange: () => onChange,
|
|
161
|
+
propTypeSymbol: () => propTypeSymbol,
|
|
162
|
+
types: () => propTypes_exports,
|
|
163
|
+
val: () => val8
|
|
164
|
+
});
|
|
165
|
+
module.exports = __toCommonJS(src_exports);
|
|
166
|
+
|
|
167
|
+
// src/coreExports.ts
|
|
168
|
+
var coreExports_exports = {};
|
|
169
|
+
__export(coreExports_exports, {
|
|
170
|
+
__private: () => __private,
|
|
171
|
+
createRafDriver: () => createRafDriver,
|
|
172
|
+
getProject: () => getProject,
|
|
173
|
+
notify: () => notify,
|
|
174
|
+
onChange: () => onChange,
|
|
175
|
+
types: () => propTypes_exports,
|
|
176
|
+
val: () => val8
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
// src/projects/projectsSingleton.ts
|
|
180
|
+
var import_dataverse = require("@theatre/dataverse");
|
|
181
|
+
var ProjectsSingleton = class {
|
|
182
|
+
constructor() {
|
|
183
|
+
__publicField(this, "atom", new import_dataverse.Atom({ projects: {} }));
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* We're trusting here that each project id is unique
|
|
187
|
+
*/
|
|
188
|
+
add(id, project) {
|
|
189
|
+
this.atom.setByPointer((p) => p.projects[id], project);
|
|
190
|
+
}
|
|
191
|
+
get(id) {
|
|
192
|
+
return this.atom.get().projects[id];
|
|
193
|
+
}
|
|
194
|
+
has(id) {
|
|
195
|
+
return !!this.get(id);
|
|
196
|
+
}
|
|
197
|
+
}, singleton = new ProjectsSingleton(), projectsSingleton_default = singleton;
|
|
198
|
+
|
|
199
|
+
// src/privateAPIs.ts
|
|
200
|
+
var publicAPIToPrivateAPIMap = /* @__PURE__ */ new WeakMap();
|
|
201
|
+
function privateAPI(pub) {
|
|
202
|
+
return publicAPIToPrivateAPIMap.get(pub);
|
|
203
|
+
}
|
|
204
|
+
function setPrivateAPI(pub, priv) {
|
|
205
|
+
publicAPIToPrivateAPIMap.set(pub, priv);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// src/sheetObjects/SheetObjectTemplate.ts
|
|
209
|
+
var import_utils3 = require("@theatre/utils"), import_getDeep = __toESM(require("@theatre/utils/getDeep")), import_SimpleCache3 = __toESM(require("@theatre/utils/SimpleCache")), import_dataverse5 = require("@theatre/dataverse");
|
|
210
|
+
|
|
211
|
+
// ../../node_modules/lodash-es/_freeGlobal.js
|
|
212
|
+
var freeGlobal = typeof global == "object" && global && global.Object === Object && global, freeGlobal_default = freeGlobal;
|
|
213
|
+
|
|
214
|
+
// ../../node_modules/lodash-es/_root.js
|
|
215
|
+
var freeSelf = typeof self == "object" && self && self.Object === Object && self, root = freeGlobal_default || freeSelf || Function("return this")(), root_default = root;
|
|
216
|
+
|
|
217
|
+
// ../../node_modules/lodash-es/_Symbol.js
|
|
218
|
+
var Symbol2 = root_default.Symbol, Symbol_default = Symbol2;
|
|
219
|
+
|
|
220
|
+
// ../../node_modules/lodash-es/_getRawTag.js
|
|
221
|
+
var objectProto = Object.prototype, hasOwnProperty = objectProto.hasOwnProperty, nativeObjectToString = objectProto.toString, symToStringTag = Symbol_default ? Symbol_default.toStringTag : void 0;
|
|
222
|
+
function getRawTag(value) {
|
|
223
|
+
var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];
|
|
224
|
+
try {
|
|
225
|
+
value[symToStringTag] = void 0;
|
|
226
|
+
var unmasked = !0;
|
|
227
|
+
} catch (e) {
|
|
228
|
+
}
|
|
229
|
+
var result = nativeObjectToString.call(value);
|
|
230
|
+
return unmasked && (isOwn ? value[symToStringTag] = tag : delete value[symToStringTag]), result;
|
|
231
|
+
}
|
|
232
|
+
var getRawTag_default = getRawTag;
|
|
233
|
+
|
|
234
|
+
// ../../node_modules/lodash-es/_objectToString.js
|
|
235
|
+
var objectProto2 = Object.prototype, nativeObjectToString2 = objectProto2.toString;
|
|
236
|
+
function objectToString(value) {
|
|
237
|
+
return nativeObjectToString2.call(value);
|
|
238
|
+
}
|
|
239
|
+
var objectToString_default = objectToString;
|
|
240
|
+
|
|
241
|
+
// ../../node_modules/lodash-es/_baseGetTag.js
|
|
242
|
+
var nullTag = "[object Null]", undefinedTag = "[object Undefined]", symToStringTag2 = Symbol_default ? Symbol_default.toStringTag : void 0;
|
|
243
|
+
function baseGetTag(value) {
|
|
244
|
+
return value == null ? value === void 0 ? undefinedTag : nullTag : symToStringTag2 && symToStringTag2 in Object(value) ? getRawTag_default(value) : objectToString_default(value);
|
|
245
|
+
}
|
|
246
|
+
var baseGetTag_default = baseGetTag;
|
|
247
|
+
|
|
248
|
+
// ../../node_modules/lodash-es/isObject.js
|
|
249
|
+
function isObject(value) {
|
|
250
|
+
var type = typeof value;
|
|
251
|
+
return value != null && (type == "object" || type == "function");
|
|
252
|
+
}
|
|
253
|
+
var isObject_default = isObject;
|
|
254
|
+
|
|
255
|
+
// ../../node_modules/lodash-es/isFunction.js
|
|
256
|
+
var asyncTag = "[object AsyncFunction]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", proxyTag = "[object Proxy]";
|
|
257
|
+
function isFunction(value) {
|
|
258
|
+
if (!isObject_default(value))
|
|
259
|
+
return !1;
|
|
260
|
+
var tag = baseGetTag_default(value);
|
|
261
|
+
return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
|
|
262
|
+
}
|
|
263
|
+
var isFunction_default = isFunction;
|
|
264
|
+
|
|
265
|
+
// ../../node_modules/lodash-es/_coreJsData.js
|
|
266
|
+
var coreJsData = root_default["__core-js_shared__"], coreJsData_default = coreJsData;
|
|
267
|
+
|
|
268
|
+
// ../../node_modules/lodash-es/_isMasked.js
|
|
269
|
+
var maskSrcKey = function() {
|
|
270
|
+
var uid = /[^.]+$/.exec(coreJsData_default && coreJsData_default.keys && coreJsData_default.keys.IE_PROTO || "");
|
|
271
|
+
return uid ? "Symbol(src)_1." + uid : "";
|
|
272
|
+
}();
|
|
273
|
+
function isMasked(func) {
|
|
274
|
+
return !!maskSrcKey && maskSrcKey in func;
|
|
275
|
+
}
|
|
276
|
+
var isMasked_default = isMasked;
|
|
277
|
+
|
|
278
|
+
// ../../node_modules/lodash-es/_toSource.js
|
|
279
|
+
var funcProto = Function.prototype, funcToString = funcProto.toString;
|
|
280
|
+
function toSource(func) {
|
|
281
|
+
if (func != null) {
|
|
282
|
+
try {
|
|
283
|
+
return funcToString.call(func);
|
|
284
|
+
} catch (e) {
|
|
285
|
+
}
|
|
286
|
+
try {
|
|
287
|
+
return func + "";
|
|
288
|
+
} catch (e) {
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
return "";
|
|
292
|
+
}
|
|
293
|
+
var toSource_default = toSource;
|
|
294
|
+
|
|
295
|
+
// ../../node_modules/lodash-es/_baseIsNative.js
|
|
296
|
+
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reIsHostCtor = /^\[object .+?Constructor\]$/, funcProto2 = Function.prototype, objectProto3 = Object.prototype, funcToString2 = funcProto2.toString, hasOwnProperty2 = objectProto3.hasOwnProperty, reIsNative = RegExp(
|
|
297
|
+
"^" + funcToString2.call(hasOwnProperty2).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
|
|
298
|
+
);
|
|
299
|
+
function baseIsNative(value) {
|
|
300
|
+
if (!isObject_default(value) || isMasked_default(value))
|
|
301
|
+
return !1;
|
|
302
|
+
var pattern = isFunction_default(value) ? reIsNative : reIsHostCtor;
|
|
303
|
+
return pattern.test(toSource_default(value));
|
|
304
|
+
}
|
|
305
|
+
var baseIsNative_default = baseIsNative;
|
|
306
|
+
|
|
307
|
+
// ../../node_modules/lodash-es/_getValue.js
|
|
308
|
+
function getValue(object, key) {
|
|
309
|
+
return object == null ? void 0 : object[key];
|
|
310
|
+
}
|
|
311
|
+
var getValue_default = getValue;
|
|
312
|
+
|
|
313
|
+
// ../../node_modules/lodash-es/_getNative.js
|
|
314
|
+
function getNative(object, key) {
|
|
315
|
+
var value = getValue_default(object, key);
|
|
316
|
+
return baseIsNative_default(value) ? value : void 0;
|
|
317
|
+
}
|
|
318
|
+
var getNative_default = getNative;
|
|
319
|
+
|
|
320
|
+
// ../../node_modules/lodash-es/_defineProperty.js
|
|
321
|
+
var defineProperty = function() {
|
|
322
|
+
try {
|
|
323
|
+
var func = getNative_default(Object, "defineProperty");
|
|
324
|
+
return func({}, "", {}), func;
|
|
325
|
+
} catch (e) {
|
|
326
|
+
}
|
|
327
|
+
}(), defineProperty_default = defineProperty;
|
|
328
|
+
|
|
329
|
+
// ../../node_modules/lodash-es/_baseAssignValue.js
|
|
330
|
+
function baseAssignValue(object, key, value) {
|
|
331
|
+
key == "__proto__" && defineProperty_default ? defineProperty_default(object, key, {
|
|
332
|
+
configurable: !0,
|
|
333
|
+
enumerable: !0,
|
|
334
|
+
value,
|
|
335
|
+
writable: !0
|
|
336
|
+
}) : object[key] = value;
|
|
337
|
+
}
|
|
338
|
+
var baseAssignValue_default = baseAssignValue;
|
|
339
|
+
|
|
340
|
+
// ../../node_modules/lodash-es/eq.js
|
|
341
|
+
function eq(value, other) {
|
|
342
|
+
return value === other || value !== value && other !== other;
|
|
343
|
+
}
|
|
344
|
+
var eq_default = eq;
|
|
345
|
+
|
|
346
|
+
// ../../node_modules/lodash-es/_assignValue.js
|
|
347
|
+
var objectProto4 = Object.prototype, hasOwnProperty3 = objectProto4.hasOwnProperty;
|
|
348
|
+
function assignValue(object, key, value) {
|
|
349
|
+
var objValue = object[key];
|
|
350
|
+
(!(hasOwnProperty3.call(object, key) && eq_default(objValue, value)) || value === void 0 && !(key in object)) && baseAssignValue_default(object, key, value);
|
|
351
|
+
}
|
|
352
|
+
var assignValue_default = assignValue;
|
|
353
|
+
|
|
354
|
+
// ../../node_modules/lodash-es/isArray.js
|
|
355
|
+
var isArray = Array.isArray, isArray_default = isArray;
|
|
356
|
+
|
|
357
|
+
// ../../node_modules/lodash-es/isObjectLike.js
|
|
358
|
+
function isObjectLike(value) {
|
|
359
|
+
return value != null && typeof value == "object";
|
|
360
|
+
}
|
|
361
|
+
var isObjectLike_default = isObjectLike;
|
|
362
|
+
|
|
363
|
+
// ../../node_modules/lodash-es/isSymbol.js
|
|
364
|
+
var symbolTag = "[object Symbol]";
|
|
365
|
+
function isSymbol(value) {
|
|
366
|
+
return typeof value == "symbol" || isObjectLike_default(value) && baseGetTag_default(value) == symbolTag;
|
|
367
|
+
}
|
|
368
|
+
var isSymbol_default = isSymbol;
|
|
369
|
+
|
|
370
|
+
// ../../node_modules/lodash-es/_isKey.js
|
|
371
|
+
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/;
|
|
372
|
+
function isKey(value, object) {
|
|
373
|
+
if (isArray_default(value))
|
|
374
|
+
return !1;
|
|
375
|
+
var type = typeof value;
|
|
376
|
+
return type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol_default(value) ? !0 : reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);
|
|
377
|
+
}
|
|
378
|
+
var isKey_default = isKey;
|
|
379
|
+
|
|
380
|
+
// ../../node_modules/lodash-es/_nativeCreate.js
|
|
381
|
+
var nativeCreate = getNative_default(Object, "create"), nativeCreate_default = nativeCreate;
|
|
382
|
+
|
|
383
|
+
// ../../node_modules/lodash-es/_hashClear.js
|
|
384
|
+
function hashClear() {
|
|
385
|
+
this.__data__ = nativeCreate_default ? nativeCreate_default(null) : {}, this.size = 0;
|
|
386
|
+
}
|
|
387
|
+
var hashClear_default = hashClear;
|
|
388
|
+
|
|
389
|
+
// ../../node_modules/lodash-es/_hashDelete.js
|
|
390
|
+
function hashDelete(key) {
|
|
391
|
+
var result = this.has(key) && delete this.__data__[key];
|
|
392
|
+
return this.size -= result ? 1 : 0, result;
|
|
393
|
+
}
|
|
394
|
+
var hashDelete_default = hashDelete;
|
|
395
|
+
|
|
396
|
+
// ../../node_modules/lodash-es/_hashGet.js
|
|
397
|
+
var HASH_UNDEFINED = "__lodash_hash_undefined__", objectProto5 = Object.prototype, hasOwnProperty4 = objectProto5.hasOwnProperty;
|
|
398
|
+
function hashGet(key) {
|
|
399
|
+
var data = this.__data__;
|
|
400
|
+
if (nativeCreate_default) {
|
|
401
|
+
var result = data[key];
|
|
402
|
+
return result === HASH_UNDEFINED ? void 0 : result;
|
|
403
|
+
}
|
|
404
|
+
return hasOwnProperty4.call(data, key) ? data[key] : void 0;
|
|
405
|
+
}
|
|
406
|
+
var hashGet_default = hashGet;
|
|
407
|
+
|
|
408
|
+
// ../../node_modules/lodash-es/_hashHas.js
|
|
409
|
+
var objectProto6 = Object.prototype, hasOwnProperty5 = objectProto6.hasOwnProperty;
|
|
410
|
+
function hashHas(key) {
|
|
411
|
+
var data = this.__data__;
|
|
412
|
+
return nativeCreate_default ? data[key] !== void 0 : hasOwnProperty5.call(data, key);
|
|
413
|
+
}
|
|
414
|
+
var hashHas_default = hashHas;
|
|
415
|
+
|
|
416
|
+
// ../../node_modules/lodash-es/_hashSet.js
|
|
417
|
+
var HASH_UNDEFINED2 = "__lodash_hash_undefined__";
|
|
418
|
+
function hashSet(key, value) {
|
|
419
|
+
var data = this.__data__;
|
|
420
|
+
return this.size += this.has(key) ? 0 : 1, data[key] = nativeCreate_default && value === void 0 ? HASH_UNDEFINED2 : value, this;
|
|
421
|
+
}
|
|
422
|
+
var hashSet_default = hashSet;
|
|
423
|
+
|
|
424
|
+
// ../../node_modules/lodash-es/_Hash.js
|
|
425
|
+
function Hash(entries) {
|
|
426
|
+
var index = -1, length = entries == null ? 0 : entries.length;
|
|
427
|
+
for (this.clear(); ++index < length; ) {
|
|
428
|
+
var entry = entries[index];
|
|
429
|
+
this.set(entry[0], entry[1]);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
Hash.prototype.clear = hashClear_default;
|
|
433
|
+
Hash.prototype.delete = hashDelete_default;
|
|
434
|
+
Hash.prototype.get = hashGet_default;
|
|
435
|
+
Hash.prototype.has = hashHas_default;
|
|
436
|
+
Hash.prototype.set = hashSet_default;
|
|
437
|
+
var Hash_default = Hash;
|
|
438
|
+
|
|
439
|
+
// ../../node_modules/lodash-es/_listCacheClear.js
|
|
440
|
+
function listCacheClear() {
|
|
441
|
+
this.__data__ = [], this.size = 0;
|
|
442
|
+
}
|
|
443
|
+
var listCacheClear_default = listCacheClear;
|
|
444
|
+
|
|
445
|
+
// ../../node_modules/lodash-es/_assocIndexOf.js
|
|
446
|
+
function assocIndexOf(array, key) {
|
|
447
|
+
for (var length = array.length; length--; )
|
|
448
|
+
if (eq_default(array[length][0], key))
|
|
449
|
+
return length;
|
|
450
|
+
return -1;
|
|
451
|
+
}
|
|
452
|
+
var assocIndexOf_default = assocIndexOf;
|
|
453
|
+
|
|
454
|
+
// ../../node_modules/lodash-es/_listCacheDelete.js
|
|
455
|
+
var arrayProto = Array.prototype, splice = arrayProto.splice;
|
|
456
|
+
function listCacheDelete(key) {
|
|
457
|
+
var data = this.__data__, index = assocIndexOf_default(data, key);
|
|
458
|
+
if (index < 0)
|
|
459
|
+
return !1;
|
|
460
|
+
var lastIndex = data.length - 1;
|
|
461
|
+
return index == lastIndex ? data.pop() : splice.call(data, index, 1), --this.size, !0;
|
|
462
|
+
}
|
|
463
|
+
var listCacheDelete_default = listCacheDelete;
|
|
464
|
+
|
|
465
|
+
// ../../node_modules/lodash-es/_listCacheGet.js
|
|
466
|
+
function listCacheGet(key) {
|
|
467
|
+
var data = this.__data__, index = assocIndexOf_default(data, key);
|
|
468
|
+
return index < 0 ? void 0 : data[index][1];
|
|
469
|
+
}
|
|
470
|
+
var listCacheGet_default = listCacheGet;
|
|
471
|
+
|
|
472
|
+
// ../../node_modules/lodash-es/_listCacheHas.js
|
|
473
|
+
function listCacheHas(key) {
|
|
474
|
+
return assocIndexOf_default(this.__data__, key) > -1;
|
|
475
|
+
}
|
|
476
|
+
var listCacheHas_default = listCacheHas;
|
|
477
|
+
|
|
478
|
+
// ../../node_modules/lodash-es/_listCacheSet.js
|
|
479
|
+
function listCacheSet(key, value) {
|
|
480
|
+
var data = this.__data__, index = assocIndexOf_default(data, key);
|
|
481
|
+
return index < 0 ? (++this.size, data.push([key, value])) : data[index][1] = value, this;
|
|
482
|
+
}
|
|
483
|
+
var listCacheSet_default = listCacheSet;
|
|
484
|
+
|
|
485
|
+
// ../../node_modules/lodash-es/_ListCache.js
|
|
486
|
+
function ListCache(entries) {
|
|
487
|
+
var index = -1, length = entries == null ? 0 : entries.length;
|
|
488
|
+
for (this.clear(); ++index < length; ) {
|
|
489
|
+
var entry = entries[index];
|
|
490
|
+
this.set(entry[0], entry[1]);
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
ListCache.prototype.clear = listCacheClear_default;
|
|
494
|
+
ListCache.prototype.delete = listCacheDelete_default;
|
|
495
|
+
ListCache.prototype.get = listCacheGet_default;
|
|
496
|
+
ListCache.prototype.has = listCacheHas_default;
|
|
497
|
+
ListCache.prototype.set = listCacheSet_default;
|
|
498
|
+
var ListCache_default = ListCache;
|
|
499
|
+
|
|
500
|
+
// ../../node_modules/lodash-es/_Map.js
|
|
501
|
+
var Map2 = getNative_default(root_default, "Map"), Map_default = Map2;
|
|
502
|
+
|
|
503
|
+
// ../../node_modules/lodash-es/_mapCacheClear.js
|
|
504
|
+
function mapCacheClear() {
|
|
505
|
+
this.size = 0, this.__data__ = {
|
|
506
|
+
hash: new Hash_default(),
|
|
507
|
+
map: new (Map_default || ListCache_default)(),
|
|
508
|
+
string: new Hash_default()
|
|
509
|
+
};
|
|
510
|
+
}
|
|
511
|
+
var mapCacheClear_default = mapCacheClear;
|
|
512
|
+
|
|
513
|
+
// ../../node_modules/lodash-es/_isKeyable.js
|
|
514
|
+
function isKeyable(value) {
|
|
515
|
+
var type = typeof value;
|
|
516
|
+
return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
|
|
517
|
+
}
|
|
518
|
+
var isKeyable_default = isKeyable;
|
|
519
|
+
|
|
520
|
+
// ../../node_modules/lodash-es/_getMapData.js
|
|
521
|
+
function getMapData(map, key) {
|
|
522
|
+
var data = map.__data__;
|
|
523
|
+
return isKeyable_default(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
|
|
524
|
+
}
|
|
525
|
+
var getMapData_default = getMapData;
|
|
526
|
+
|
|
527
|
+
// ../../node_modules/lodash-es/_mapCacheDelete.js
|
|
528
|
+
function mapCacheDelete(key) {
|
|
529
|
+
var result = getMapData_default(this, key).delete(key);
|
|
530
|
+
return this.size -= result ? 1 : 0, result;
|
|
531
|
+
}
|
|
532
|
+
var mapCacheDelete_default = mapCacheDelete;
|
|
533
|
+
|
|
534
|
+
// ../../node_modules/lodash-es/_mapCacheGet.js
|
|
535
|
+
function mapCacheGet(key) {
|
|
536
|
+
return getMapData_default(this, key).get(key);
|
|
537
|
+
}
|
|
538
|
+
var mapCacheGet_default = mapCacheGet;
|
|
539
|
+
|
|
540
|
+
// ../../node_modules/lodash-es/_mapCacheHas.js
|
|
541
|
+
function mapCacheHas(key) {
|
|
542
|
+
return getMapData_default(this, key).has(key);
|
|
543
|
+
}
|
|
544
|
+
var mapCacheHas_default = mapCacheHas;
|
|
545
|
+
|
|
546
|
+
// ../../node_modules/lodash-es/_mapCacheSet.js
|
|
547
|
+
function mapCacheSet(key, value) {
|
|
548
|
+
var data = getMapData_default(this, key), size = data.size;
|
|
549
|
+
return data.set(key, value), this.size += data.size == size ? 0 : 1, this;
|
|
550
|
+
}
|
|
551
|
+
var mapCacheSet_default = mapCacheSet;
|
|
552
|
+
|
|
553
|
+
// ../../node_modules/lodash-es/_MapCache.js
|
|
554
|
+
function MapCache(entries) {
|
|
555
|
+
var index = -1, length = entries == null ? 0 : entries.length;
|
|
556
|
+
for (this.clear(); ++index < length; ) {
|
|
557
|
+
var entry = entries[index];
|
|
558
|
+
this.set(entry[0], entry[1]);
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
MapCache.prototype.clear = mapCacheClear_default;
|
|
562
|
+
MapCache.prototype.delete = mapCacheDelete_default;
|
|
563
|
+
MapCache.prototype.get = mapCacheGet_default;
|
|
564
|
+
MapCache.prototype.has = mapCacheHas_default;
|
|
565
|
+
MapCache.prototype.set = mapCacheSet_default;
|
|
566
|
+
var MapCache_default = MapCache;
|
|
567
|
+
|
|
568
|
+
// ../../node_modules/lodash-es/memoize.js
|
|
569
|
+
var FUNC_ERROR_TEXT = "Expected a function";
|
|
570
|
+
function memoize(func, resolver) {
|
|
571
|
+
if (typeof func != "function" || resolver != null && typeof resolver != "function")
|
|
572
|
+
throw new TypeError(FUNC_ERROR_TEXT);
|
|
573
|
+
var memoized = function() {
|
|
574
|
+
var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache2 = memoized.cache;
|
|
575
|
+
if (cache2.has(key))
|
|
576
|
+
return cache2.get(key);
|
|
577
|
+
var result = func.apply(this, args);
|
|
578
|
+
return memoized.cache = cache2.set(key, result) || cache2, result;
|
|
579
|
+
};
|
|
580
|
+
return memoized.cache = new (memoize.Cache || MapCache_default)(), memoized;
|
|
581
|
+
}
|
|
582
|
+
memoize.Cache = MapCache_default;
|
|
583
|
+
var memoize_default = memoize;
|
|
584
|
+
|
|
585
|
+
// ../../node_modules/lodash-es/_memoizeCapped.js
|
|
586
|
+
var MAX_MEMOIZE_SIZE = 500;
|
|
587
|
+
function memoizeCapped(func) {
|
|
588
|
+
var result = memoize_default(func, function(key) {
|
|
589
|
+
return cache2.size === MAX_MEMOIZE_SIZE && cache2.clear(), key;
|
|
590
|
+
}), cache2 = result.cache;
|
|
591
|
+
return result;
|
|
592
|
+
}
|
|
593
|
+
var memoizeCapped_default = memoizeCapped;
|
|
594
|
+
|
|
595
|
+
// ../../node_modules/lodash-es/_stringToPath.js
|
|
596
|
+
var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, reEscapeChar = /\\(\\)?/g, stringToPath = memoizeCapped_default(function(string2) {
|
|
597
|
+
var result = [];
|
|
598
|
+
return string2.charCodeAt(0) === 46 && result.push(""), string2.replace(rePropName, function(match, number2, quote, subString) {
|
|
599
|
+
result.push(quote ? subString.replace(reEscapeChar, "$1") : number2 || match);
|
|
600
|
+
}), result;
|
|
601
|
+
}), stringToPath_default = stringToPath;
|
|
602
|
+
|
|
603
|
+
// ../../node_modules/lodash-es/_arrayMap.js
|
|
604
|
+
function arrayMap(array, iteratee) {
|
|
605
|
+
for (var index = -1, length = array == null ? 0 : array.length, result = Array(length); ++index < length; )
|
|
606
|
+
result[index] = iteratee(array[index], index, array);
|
|
607
|
+
return result;
|
|
608
|
+
}
|
|
609
|
+
var arrayMap_default = arrayMap;
|
|
610
|
+
|
|
611
|
+
// ../../node_modules/lodash-es/_baseToString.js
|
|
612
|
+
var INFINITY = 1 / 0, symbolProto = Symbol_default ? Symbol_default.prototype : void 0, symbolToString = symbolProto ? symbolProto.toString : void 0;
|
|
613
|
+
function baseToString(value) {
|
|
614
|
+
if (typeof value == "string")
|
|
615
|
+
return value;
|
|
616
|
+
if (isArray_default(value))
|
|
617
|
+
return arrayMap_default(value, baseToString) + "";
|
|
618
|
+
if (isSymbol_default(value))
|
|
619
|
+
return symbolToString ? symbolToString.call(value) : "";
|
|
620
|
+
var result = value + "";
|
|
621
|
+
return result == "0" && 1 / value == -INFINITY ? "-0" : result;
|
|
622
|
+
}
|
|
623
|
+
var baseToString_default = baseToString;
|
|
624
|
+
|
|
625
|
+
// ../../node_modules/lodash-es/toString.js
|
|
626
|
+
function toString(value) {
|
|
627
|
+
return value == null ? "" : baseToString_default(value);
|
|
628
|
+
}
|
|
629
|
+
var toString_default = toString;
|
|
630
|
+
|
|
631
|
+
// ../../node_modules/lodash-es/_castPath.js
|
|
632
|
+
function castPath(value, object) {
|
|
633
|
+
return isArray_default(value) ? value : isKey_default(value, object) ? [value] : stringToPath_default(toString_default(value));
|
|
634
|
+
}
|
|
635
|
+
var castPath_default = castPath;
|
|
636
|
+
|
|
637
|
+
// ../../node_modules/lodash-es/_isIndex.js
|
|
638
|
+
var MAX_SAFE_INTEGER = 9007199254740991, reIsUint = /^(?:0|[1-9]\d*)$/;
|
|
639
|
+
function isIndex(value, length) {
|
|
640
|
+
var type = typeof value;
|
|
641
|
+
return length = length == null ? MAX_SAFE_INTEGER : length, !!length && (type == "number" || type != "symbol" && reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;
|
|
642
|
+
}
|
|
643
|
+
var isIndex_default = isIndex;
|
|
644
|
+
|
|
645
|
+
// ../../node_modules/lodash-es/_toKey.js
|
|
646
|
+
var INFINITY2 = 1 / 0;
|
|
647
|
+
function toKey(value) {
|
|
648
|
+
if (typeof value == "string" || isSymbol_default(value))
|
|
649
|
+
return value;
|
|
650
|
+
var result = value + "";
|
|
651
|
+
return result == "0" && 1 / value == -INFINITY2 ? "-0" : result;
|
|
652
|
+
}
|
|
653
|
+
var toKey_default = toKey;
|
|
654
|
+
|
|
655
|
+
// ../../node_modules/lodash-es/_baseSet.js
|
|
656
|
+
function baseSet(object, path, value, customizer) {
|
|
657
|
+
if (!isObject_default(object))
|
|
658
|
+
return object;
|
|
659
|
+
path = castPath_default(path, object);
|
|
660
|
+
for (var index = -1, length = path.length, lastIndex = length - 1, nested = object; nested != null && ++index < length; ) {
|
|
661
|
+
var key = toKey_default(path[index]), newValue = value;
|
|
662
|
+
if (key === "__proto__" || key === "constructor" || key === "prototype")
|
|
663
|
+
return object;
|
|
664
|
+
if (index != lastIndex) {
|
|
665
|
+
var objValue = nested[key];
|
|
666
|
+
newValue = customizer ? customizer(objValue, key, nested) : void 0, newValue === void 0 && (newValue = isObject_default(objValue) ? objValue : isIndex_default(path[index + 1]) ? [] : {});
|
|
667
|
+
}
|
|
668
|
+
assignValue_default(nested, key, newValue), nested = nested[key];
|
|
669
|
+
}
|
|
670
|
+
return object;
|
|
671
|
+
}
|
|
672
|
+
var baseSet_default = baseSet;
|
|
673
|
+
|
|
674
|
+
// ../../node_modules/lodash-es/set.js
|
|
675
|
+
function set(object, path, value) {
|
|
676
|
+
return object == null ? object : baseSet_default(object, path, value);
|
|
677
|
+
}
|
|
678
|
+
var set_default = set;
|
|
679
|
+
|
|
680
|
+
// src/sheetObjects/getPropDefaultsOfSheetObject.ts
|
|
681
|
+
var cachedDefaults = /* @__PURE__ */ new WeakMap();
|
|
682
|
+
function getPropDefaultsOfSheetObject(config) {
|
|
683
|
+
return getDefaultsOfPropTypeConfig(config);
|
|
684
|
+
}
|
|
685
|
+
function getDefaultsOfPropTypeConfig(config) {
|
|
686
|
+
if (cachedDefaults.has(config))
|
|
687
|
+
return cachedDefaults.get(config);
|
|
688
|
+
let generated = config.type === "compound" ? generateDefaultsForCompound(config) : config.type === "enum" ? generateDefaultsForEnum(config) : config.default;
|
|
689
|
+
return cachedDefaults.set(config, generated), generated;
|
|
690
|
+
}
|
|
691
|
+
function generateDefaultsForEnum(config) {
|
|
692
|
+
let defaults = {
|
|
693
|
+
$case: config.defaultCase
|
|
694
|
+
};
|
|
695
|
+
for (let [case_, caseConf] of Object.entries(config.cases))
|
|
696
|
+
defaults[case_] = getDefaultsOfPropTypeConfig(caseConf);
|
|
697
|
+
return defaults;
|
|
698
|
+
}
|
|
699
|
+
function generateDefaultsForCompound(config) {
|
|
700
|
+
let defaults = {};
|
|
701
|
+
for (let [key, propConf] of Object.entries(config.props))
|
|
702
|
+
defaults[key] = getDefaultsOfPropTypeConfig(propConf);
|
|
703
|
+
return defaults;
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
// src/sequences/interpolationTripleAtPosition.ts
|
|
707
|
+
var import_dataverse2 = require("@theatre/dataverse"), import_UnitBezier = __toESM(require_UnitBezier());
|
|
708
|
+
|
|
709
|
+
// src/utils/keyframeUtils.ts
|
|
710
|
+
var keyframeUtils_exports = {};
|
|
711
|
+
__export(keyframeUtils_exports, {
|
|
712
|
+
fromArray: () => fromArray,
|
|
713
|
+
fromSortedKeyframesCached: () => fromSortedKeyframesCached,
|
|
714
|
+
getSortedKeyframes: () => getSortedKeyframes,
|
|
715
|
+
getSortedKeyframesCached: () => getSortedKeyframesCached
|
|
716
|
+
});
|
|
717
|
+
var import_memoizeFn = __toESM(require("@theatre/utils/memoizeFn"));
|
|
718
|
+
|
|
719
|
+
// ../../node_modules/lodash-es/_trimmedEndIndex.js
|
|
720
|
+
var reWhitespace = /\s/;
|
|
721
|
+
function trimmedEndIndex(string2) {
|
|
722
|
+
for (var index = string2.length; index-- && reWhitespace.test(string2.charAt(index)); )
|
|
723
|
+
;
|
|
724
|
+
return index;
|
|
725
|
+
}
|
|
726
|
+
var trimmedEndIndex_default = trimmedEndIndex;
|
|
727
|
+
|
|
728
|
+
// ../../node_modules/lodash-es/_baseTrim.js
|
|
729
|
+
var reTrimStart = /^\s+/;
|
|
730
|
+
function baseTrim(string2) {
|
|
731
|
+
return string2 && string2.slice(0, trimmedEndIndex_default(string2) + 1).replace(reTrimStart, "");
|
|
732
|
+
}
|
|
733
|
+
var baseTrim_default = baseTrim;
|
|
734
|
+
|
|
735
|
+
// ../../node_modules/lodash-es/toNumber.js
|
|
736
|
+
var NAN = 0 / 0, reIsBadHex = /^[-+]0x[0-9a-f]+$/i, reIsBinary = /^0b[01]+$/i, reIsOctal = /^0o[0-7]+$/i, freeParseInt = parseInt;
|
|
737
|
+
function toNumber(value) {
|
|
738
|
+
if (typeof value == "number")
|
|
739
|
+
return value;
|
|
740
|
+
if (isSymbol_default(value))
|
|
741
|
+
return NAN;
|
|
742
|
+
if (isObject_default(value)) {
|
|
743
|
+
var other = typeof value.valueOf == "function" ? value.valueOf() : value;
|
|
744
|
+
value = isObject_default(other) ? other + "" : other;
|
|
745
|
+
}
|
|
746
|
+
if (typeof value != "string")
|
|
747
|
+
return value === 0 ? value : +value;
|
|
748
|
+
value = baseTrim_default(value);
|
|
749
|
+
var isBinary = reIsBinary.test(value);
|
|
750
|
+
return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;
|
|
751
|
+
}
|
|
752
|
+
var toNumber_default = toNumber;
|
|
753
|
+
|
|
754
|
+
// ../../node_modules/lodash-es/toFinite.js
|
|
755
|
+
var INFINITY3 = 1 / 0, MAX_INTEGER = 17976931348623157e292;
|
|
756
|
+
function toFinite(value) {
|
|
757
|
+
if (!value)
|
|
758
|
+
return value === 0 ? value : 0;
|
|
759
|
+
if (value = toNumber_default(value), value === INFINITY3 || value === -INFINITY3) {
|
|
760
|
+
var sign = value < 0 ? -1 : 1;
|
|
761
|
+
return sign * MAX_INTEGER;
|
|
762
|
+
}
|
|
763
|
+
return value === value ? value : 0;
|
|
764
|
+
}
|
|
765
|
+
var toFinite_default = toFinite;
|
|
766
|
+
|
|
767
|
+
// ../../node_modules/lodash-es/toInteger.js
|
|
768
|
+
function toInteger(value) {
|
|
769
|
+
var result = toFinite_default(value), remainder = result % 1;
|
|
770
|
+
return result === result ? remainder ? result - remainder : result : 0;
|
|
771
|
+
}
|
|
772
|
+
var toInteger_default = toInteger;
|
|
773
|
+
|
|
774
|
+
// ../../node_modules/lodash-es/identity.js
|
|
775
|
+
function identity(value) {
|
|
776
|
+
return value;
|
|
777
|
+
}
|
|
778
|
+
var identity_default = identity;
|
|
779
|
+
|
|
780
|
+
// ../../node_modules/lodash-es/_WeakMap.js
|
|
781
|
+
var WeakMap2 = getNative_default(root_default, "WeakMap"), WeakMap_default = WeakMap2;
|
|
782
|
+
|
|
783
|
+
// ../../node_modules/lodash-es/_baseCreate.js
|
|
784
|
+
var objectCreate = Object.create, baseCreate = function() {
|
|
785
|
+
function object() {
|
|
786
|
+
}
|
|
787
|
+
return function(proto) {
|
|
788
|
+
if (!isObject_default(proto))
|
|
789
|
+
return {};
|
|
790
|
+
if (objectCreate)
|
|
791
|
+
return objectCreate(proto);
|
|
792
|
+
object.prototype = proto;
|
|
793
|
+
var result = new object();
|
|
794
|
+
return object.prototype = void 0, result;
|
|
795
|
+
};
|
|
796
|
+
}(), baseCreate_default = baseCreate;
|
|
797
|
+
|
|
798
|
+
// ../../node_modules/lodash-es/_copyArray.js
|
|
799
|
+
function copyArray(source, array) {
|
|
800
|
+
var index = -1, length = source.length;
|
|
801
|
+
for (array || (array = Array(length)); ++index < length; )
|
|
802
|
+
array[index] = source[index];
|
|
803
|
+
return array;
|
|
804
|
+
}
|
|
805
|
+
var copyArray_default = copyArray;
|
|
806
|
+
|
|
807
|
+
// ../../node_modules/lodash-es/_arrayEach.js
|
|
808
|
+
function arrayEach(array, iteratee) {
|
|
809
|
+
for (var index = -1, length = array == null ? 0 : array.length; ++index < length && iteratee(array[index], index, array) !== !1; )
|
|
810
|
+
;
|
|
811
|
+
return array;
|
|
812
|
+
}
|
|
813
|
+
var arrayEach_default = arrayEach;
|
|
814
|
+
|
|
815
|
+
// ../../node_modules/lodash-es/_copyObject.js
|
|
816
|
+
function copyObject(source, props, object, customizer) {
|
|
817
|
+
var isNew = !object;
|
|
818
|
+
object || (object = {});
|
|
819
|
+
for (var index = -1, length = props.length; ++index < length; ) {
|
|
820
|
+
var key = props[index], newValue = customizer ? customizer(object[key], source[key], key, object, source) : void 0;
|
|
821
|
+
newValue === void 0 && (newValue = source[key]), isNew ? baseAssignValue_default(object, key, newValue) : assignValue_default(object, key, newValue);
|
|
822
|
+
}
|
|
823
|
+
return object;
|
|
824
|
+
}
|
|
825
|
+
var copyObject_default = copyObject;
|
|
826
|
+
|
|
827
|
+
// ../../node_modules/lodash-es/isLength.js
|
|
828
|
+
var MAX_SAFE_INTEGER2 = 9007199254740991;
|
|
829
|
+
function isLength(value) {
|
|
830
|
+
return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER2;
|
|
831
|
+
}
|
|
832
|
+
var isLength_default = isLength;
|
|
833
|
+
|
|
834
|
+
// ../../node_modules/lodash-es/isArrayLike.js
|
|
835
|
+
function isArrayLike(value) {
|
|
836
|
+
return value != null && isLength_default(value.length) && !isFunction_default(value);
|
|
837
|
+
}
|
|
838
|
+
var isArrayLike_default = isArrayLike;
|
|
839
|
+
|
|
840
|
+
// ../../node_modules/lodash-es/_isPrototype.js
|
|
841
|
+
var objectProto7 = Object.prototype;
|
|
842
|
+
function isPrototype(value) {
|
|
843
|
+
var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto7;
|
|
844
|
+
return value === proto;
|
|
845
|
+
}
|
|
846
|
+
var isPrototype_default = isPrototype;
|
|
847
|
+
|
|
848
|
+
// ../../node_modules/lodash-es/_baseTimes.js
|
|
849
|
+
function baseTimes(n, iteratee) {
|
|
850
|
+
for (var index = -1, result = Array(n); ++index < n; )
|
|
851
|
+
result[index] = iteratee(index);
|
|
852
|
+
return result;
|
|
853
|
+
}
|
|
854
|
+
var baseTimes_default = baseTimes;
|
|
855
|
+
|
|
856
|
+
// ../../node_modules/lodash-es/_baseIsArguments.js
|
|
857
|
+
var argsTag = "[object Arguments]";
|
|
858
|
+
function baseIsArguments(value) {
|
|
859
|
+
return isObjectLike_default(value) && baseGetTag_default(value) == argsTag;
|
|
860
|
+
}
|
|
861
|
+
var baseIsArguments_default = baseIsArguments;
|
|
862
|
+
|
|
863
|
+
// ../../node_modules/lodash-es/isArguments.js
|
|
864
|
+
var objectProto8 = Object.prototype, hasOwnProperty6 = objectProto8.hasOwnProperty, propertyIsEnumerable = objectProto8.propertyIsEnumerable, isArguments = baseIsArguments_default(function() {
|
|
865
|
+
return arguments;
|
|
866
|
+
}()) ? baseIsArguments_default : function(value) {
|
|
867
|
+
return isObjectLike_default(value) && hasOwnProperty6.call(value, "callee") && !propertyIsEnumerable.call(value, "callee");
|
|
868
|
+
}, isArguments_default = isArguments;
|
|
869
|
+
|
|
870
|
+
// ../../node_modules/lodash-es/stubFalse.js
|
|
871
|
+
function stubFalse() {
|
|
872
|
+
return !1;
|
|
873
|
+
}
|
|
874
|
+
var stubFalse_default = stubFalse;
|
|
875
|
+
|
|
876
|
+
// ../../node_modules/lodash-es/isBuffer.js
|
|
877
|
+
var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports, freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module, moduleExports = freeModule && freeModule.exports === freeExports, Buffer2 = moduleExports ? root_default.Buffer : void 0, nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : void 0, isBuffer = nativeIsBuffer || stubFalse_default, isBuffer_default = isBuffer;
|
|
878
|
+
|
|
879
|
+
// ../../node_modules/lodash-es/_baseIsTypedArray.js
|
|
880
|
+
var argsTag2 = "[object Arguments]", arrayTag = "[object Array]", boolTag = "[object Boolean]", dateTag = "[object Date]", errorTag = "[object Error]", funcTag2 = "[object Function]", mapTag = "[object Map]", numberTag = "[object Number]", objectTag = "[object Object]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", weakMapTag = "[object WeakMap]", arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]", typedArrayTags = {};
|
|
881
|
+
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = !0;
|
|
882
|
+
typedArrayTags[argsTag2] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag2] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = !1;
|
|
883
|
+
function baseIsTypedArray(value) {
|
|
884
|
+
return isObjectLike_default(value) && isLength_default(value.length) && !!typedArrayTags[baseGetTag_default(value)];
|
|
885
|
+
}
|
|
886
|
+
var baseIsTypedArray_default = baseIsTypedArray;
|
|
887
|
+
|
|
888
|
+
// ../../node_modules/lodash-es/_baseUnary.js
|
|
889
|
+
function baseUnary(func) {
|
|
890
|
+
return function(value) {
|
|
891
|
+
return func(value);
|
|
892
|
+
};
|
|
893
|
+
}
|
|
894
|
+
var baseUnary_default = baseUnary;
|
|
895
|
+
|
|
896
|
+
// ../../node_modules/lodash-es/_nodeUtil.js
|
|
897
|
+
var freeExports2 = typeof exports == "object" && exports && !exports.nodeType && exports, freeModule2 = freeExports2 && typeof module == "object" && module && !module.nodeType && module, moduleExports2 = freeModule2 && freeModule2.exports === freeExports2, freeProcess = moduleExports2 && freeGlobal_default.process, nodeUtil = function() {
|
|
898
|
+
try {
|
|
899
|
+
var types = freeModule2 && freeModule2.require && freeModule2.require("util").types;
|
|
900
|
+
return types || freeProcess && freeProcess.binding && freeProcess.binding("util");
|
|
901
|
+
} catch (e) {
|
|
902
|
+
}
|
|
903
|
+
}(), nodeUtil_default = nodeUtil;
|
|
904
|
+
|
|
905
|
+
// ../../node_modules/lodash-es/isTypedArray.js
|
|
906
|
+
var nodeIsTypedArray = nodeUtil_default && nodeUtil_default.isTypedArray, isTypedArray = nodeIsTypedArray ? baseUnary_default(nodeIsTypedArray) : baseIsTypedArray_default, isTypedArray_default = isTypedArray;
|
|
907
|
+
|
|
908
|
+
// ../../node_modules/lodash-es/_arrayLikeKeys.js
|
|
909
|
+
var objectProto9 = Object.prototype, hasOwnProperty7 = objectProto9.hasOwnProperty;
|
|
910
|
+
function arrayLikeKeys(value, inherited) {
|
|
911
|
+
var isArr = isArray_default(value), isArg = !isArr && isArguments_default(value), isBuff = !isArr && !isArg && isBuffer_default(value), isType = !isArr && !isArg && !isBuff && isTypedArray_default(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes_default(value.length, String) : [], length = result.length;
|
|
912
|
+
for (var key in value)
|
|
913
|
+
(inherited || hasOwnProperty7.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.
|
|
914
|
+
(key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers.
|
|
915
|
+
isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays.
|
|
916
|
+
isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties.
|
|
917
|
+
isIndex_default(key, length))) && result.push(key);
|
|
918
|
+
return result;
|
|
919
|
+
}
|
|
920
|
+
var arrayLikeKeys_default = arrayLikeKeys;
|
|
921
|
+
|
|
922
|
+
// ../../node_modules/lodash-es/_overArg.js
|
|
923
|
+
function overArg(func, transform) {
|
|
924
|
+
return function(arg) {
|
|
925
|
+
return func(transform(arg));
|
|
926
|
+
};
|
|
927
|
+
}
|
|
928
|
+
var overArg_default = overArg;
|
|
929
|
+
|
|
930
|
+
// ../../node_modules/lodash-es/_nativeKeys.js
|
|
931
|
+
var nativeKeys = overArg_default(Object.keys, Object), nativeKeys_default = nativeKeys;
|
|
932
|
+
|
|
933
|
+
// ../../node_modules/lodash-es/_baseKeys.js
|
|
934
|
+
var objectProto10 = Object.prototype, hasOwnProperty8 = objectProto10.hasOwnProperty;
|
|
935
|
+
function baseKeys(object) {
|
|
936
|
+
if (!isPrototype_default(object))
|
|
937
|
+
return nativeKeys_default(object);
|
|
938
|
+
var result = [];
|
|
939
|
+
for (var key in Object(object))
|
|
940
|
+
hasOwnProperty8.call(object, key) && key != "constructor" && result.push(key);
|
|
941
|
+
return result;
|
|
942
|
+
}
|
|
943
|
+
var baseKeys_default = baseKeys;
|
|
944
|
+
|
|
945
|
+
// ../../node_modules/lodash-es/keys.js
|
|
946
|
+
function keys(object) {
|
|
947
|
+
return isArrayLike_default(object) ? arrayLikeKeys_default(object) : baseKeys_default(object);
|
|
948
|
+
}
|
|
949
|
+
var keys_default = keys;
|
|
950
|
+
|
|
951
|
+
// ../../node_modules/lodash-es/_nativeKeysIn.js
|
|
952
|
+
function nativeKeysIn(object) {
|
|
953
|
+
var result = [];
|
|
954
|
+
if (object != null)
|
|
955
|
+
for (var key in Object(object))
|
|
956
|
+
result.push(key);
|
|
957
|
+
return result;
|
|
958
|
+
}
|
|
959
|
+
var nativeKeysIn_default = nativeKeysIn;
|
|
960
|
+
|
|
961
|
+
// ../../node_modules/lodash-es/_baseKeysIn.js
|
|
962
|
+
var objectProto11 = Object.prototype, hasOwnProperty9 = objectProto11.hasOwnProperty;
|
|
963
|
+
function baseKeysIn(object) {
|
|
964
|
+
if (!isObject_default(object))
|
|
965
|
+
return nativeKeysIn_default(object);
|
|
966
|
+
var isProto = isPrototype_default(object), result = [];
|
|
967
|
+
for (var key in object)
|
|
968
|
+
key == "constructor" && (isProto || !hasOwnProperty9.call(object, key)) || result.push(key);
|
|
969
|
+
return result;
|
|
970
|
+
}
|
|
971
|
+
var baseKeysIn_default = baseKeysIn;
|
|
972
|
+
|
|
973
|
+
// ../../node_modules/lodash-es/keysIn.js
|
|
974
|
+
function keysIn(object) {
|
|
975
|
+
return isArrayLike_default(object) ? arrayLikeKeys_default(object, !0) : baseKeysIn_default(object);
|
|
976
|
+
}
|
|
977
|
+
var keysIn_default = keysIn;
|
|
978
|
+
|
|
979
|
+
// ../../node_modules/lodash-es/_baseGet.js
|
|
980
|
+
function baseGet(object, path) {
|
|
981
|
+
path = castPath_default(path, object);
|
|
982
|
+
for (var index = 0, length = path.length; object != null && index < length; )
|
|
983
|
+
object = object[toKey_default(path[index++])];
|
|
984
|
+
return index && index == length ? object : void 0;
|
|
985
|
+
}
|
|
986
|
+
var baseGet_default = baseGet;
|
|
987
|
+
|
|
988
|
+
// ../../node_modules/lodash-es/get.js
|
|
989
|
+
function get(object, path, defaultValue) {
|
|
990
|
+
var result = object == null ? void 0 : baseGet_default(object, path);
|
|
991
|
+
return result === void 0 ? defaultValue : result;
|
|
992
|
+
}
|
|
993
|
+
var get_default = get;
|
|
994
|
+
|
|
995
|
+
// ../../node_modules/lodash-es/_arrayPush.js
|
|
996
|
+
function arrayPush(array, values) {
|
|
997
|
+
for (var index = -1, length = values.length, offset = array.length; ++index < length; )
|
|
998
|
+
array[offset + index] = values[index];
|
|
999
|
+
return array;
|
|
1000
|
+
}
|
|
1001
|
+
var arrayPush_default = arrayPush;
|
|
1002
|
+
|
|
1003
|
+
// ../../node_modules/lodash-es/_getPrototype.js
|
|
1004
|
+
var getPrototype = overArg_default(Object.getPrototypeOf, Object), getPrototype_default = getPrototype;
|
|
1005
|
+
|
|
1006
|
+
// ../../node_modules/lodash-es/isPlainObject.js
|
|
1007
|
+
var objectTag2 = "[object Object]", funcProto3 = Function.prototype, objectProto12 = Object.prototype, funcToString3 = funcProto3.toString, hasOwnProperty10 = objectProto12.hasOwnProperty, objectCtorString = funcToString3.call(Object);
|
|
1008
|
+
function isPlainObject(value) {
|
|
1009
|
+
if (!isObjectLike_default(value) || baseGetTag_default(value) != objectTag2)
|
|
1010
|
+
return !1;
|
|
1011
|
+
var proto = getPrototype_default(value);
|
|
1012
|
+
if (proto === null)
|
|
1013
|
+
return !0;
|
|
1014
|
+
var Ctor = hasOwnProperty10.call(proto, "constructor") && proto.constructor;
|
|
1015
|
+
return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString3.call(Ctor) == objectCtorString;
|
|
1016
|
+
}
|
|
1017
|
+
var isPlainObject_default = isPlainObject;
|
|
1018
|
+
|
|
1019
|
+
// ../../node_modules/lodash-es/_baseSlice.js
|
|
1020
|
+
function baseSlice(array, start, end) {
|
|
1021
|
+
var index = -1, length = array.length;
|
|
1022
|
+
start < 0 && (start = -start > length ? 0 : length + start), end = end > length ? length : end, end < 0 && (end += length), length = start > end ? 0 : end - start >>> 0, start >>>= 0;
|
|
1023
|
+
for (var result = Array(length); ++index < length; )
|
|
1024
|
+
result[index] = array[index + start];
|
|
1025
|
+
return result;
|
|
1026
|
+
}
|
|
1027
|
+
var baseSlice_default = baseSlice;
|
|
1028
|
+
|
|
1029
|
+
// ../../node_modules/lodash-es/_castSlice.js
|
|
1030
|
+
function castSlice(array, start, end) {
|
|
1031
|
+
var length = array.length;
|
|
1032
|
+
return end = end === void 0 ? length : end, !start && end >= length ? array : baseSlice_default(array, start, end);
|
|
1033
|
+
}
|
|
1034
|
+
var castSlice_default = castSlice;
|
|
1035
|
+
|
|
1036
|
+
// ../../node_modules/lodash-es/_hasUnicode.js
|
|
1037
|
+
var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsVarRange = "\\ufe0e\\ufe0f", rsZWJ = "\\u200d", reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]");
|
|
1038
|
+
function hasUnicode(string2) {
|
|
1039
|
+
return reHasUnicode.test(string2);
|
|
1040
|
+
}
|
|
1041
|
+
var hasUnicode_default = hasUnicode;
|
|
1042
|
+
|
|
1043
|
+
// ../../node_modules/lodash-es/_asciiToArray.js
|
|
1044
|
+
function asciiToArray(string2) {
|
|
1045
|
+
return string2.split("");
|
|
1046
|
+
}
|
|
1047
|
+
var asciiToArray_default = asciiToArray;
|
|
1048
|
+
|
|
1049
|
+
// ../../node_modules/lodash-es/_unicodeToArray.js
|
|
1050
|
+
var rsAstralRange2 = "\\ud800-\\udfff", rsComboMarksRange2 = "\\u0300-\\u036f", reComboHalfMarksRange2 = "\\ufe20-\\ufe2f", rsComboSymbolsRange2 = "\\u20d0-\\u20ff", rsComboRange2 = rsComboMarksRange2 + reComboHalfMarksRange2 + rsComboSymbolsRange2, rsVarRange2 = "\\ufe0e\\ufe0f", rsAstral = "[" + rsAstralRange2 + "]", rsCombo = "[" + rsComboRange2 + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange2 + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsZWJ2 = "\\u200d", reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange2 + "]?", rsOptJoin = "(?:" + rsZWJ2 + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")", reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g");
|
|
1051
|
+
function unicodeToArray(string2) {
|
|
1052
|
+
return string2.match(reUnicode) || [];
|
|
1053
|
+
}
|
|
1054
|
+
var unicodeToArray_default = unicodeToArray;
|
|
1055
|
+
|
|
1056
|
+
// ../../node_modules/lodash-es/_stringToArray.js
|
|
1057
|
+
function stringToArray(string2) {
|
|
1058
|
+
return hasUnicode_default(string2) ? unicodeToArray_default(string2) : asciiToArray_default(string2);
|
|
1059
|
+
}
|
|
1060
|
+
var stringToArray_default = stringToArray;
|
|
1061
|
+
|
|
1062
|
+
// ../../node_modules/lodash-es/_baseClamp.js
|
|
1063
|
+
function baseClamp(number2, lower, upper) {
|
|
1064
|
+
return number2 === number2 && (upper !== void 0 && (number2 = number2 <= upper ? number2 : upper), lower !== void 0 && (number2 = number2 >= lower ? number2 : lower)), number2;
|
|
1065
|
+
}
|
|
1066
|
+
var baseClamp_default = baseClamp;
|
|
1067
|
+
|
|
1068
|
+
// ../../node_modules/lodash-es/clamp.js
|
|
1069
|
+
function clamp(number2, lower, upper) {
|
|
1070
|
+
return upper === void 0 && (upper = lower, lower = void 0), upper !== void 0 && (upper = toNumber_default(upper), upper = upper === upper ? upper : 0), lower !== void 0 && (lower = toNumber_default(lower), lower = lower === lower ? lower : 0), baseClamp_default(toNumber_default(number2), lower, upper);
|
|
1071
|
+
}
|
|
1072
|
+
var clamp_default = clamp;
|
|
1073
|
+
|
|
1074
|
+
// ../../node_modules/lodash-es/_stackClear.js
|
|
1075
|
+
function stackClear() {
|
|
1076
|
+
this.__data__ = new ListCache_default(), this.size = 0;
|
|
1077
|
+
}
|
|
1078
|
+
var stackClear_default = stackClear;
|
|
1079
|
+
|
|
1080
|
+
// ../../node_modules/lodash-es/_stackDelete.js
|
|
1081
|
+
function stackDelete(key) {
|
|
1082
|
+
var data = this.__data__, result = data.delete(key);
|
|
1083
|
+
return this.size = data.size, result;
|
|
1084
|
+
}
|
|
1085
|
+
var stackDelete_default = stackDelete;
|
|
1086
|
+
|
|
1087
|
+
// ../../node_modules/lodash-es/_stackGet.js
|
|
1088
|
+
function stackGet(key) {
|
|
1089
|
+
return this.__data__.get(key);
|
|
1090
|
+
}
|
|
1091
|
+
var stackGet_default = stackGet;
|
|
1092
|
+
|
|
1093
|
+
// ../../node_modules/lodash-es/_stackHas.js
|
|
1094
|
+
function stackHas(key) {
|
|
1095
|
+
return this.__data__.has(key);
|
|
1096
|
+
}
|
|
1097
|
+
var stackHas_default = stackHas;
|
|
1098
|
+
|
|
1099
|
+
// ../../node_modules/lodash-es/_stackSet.js
|
|
1100
|
+
var LARGE_ARRAY_SIZE = 200;
|
|
1101
|
+
function stackSet(key, value) {
|
|
1102
|
+
var data = this.__data__;
|
|
1103
|
+
if (data instanceof ListCache_default) {
|
|
1104
|
+
var pairs = data.__data__;
|
|
1105
|
+
if (!Map_default || pairs.length < LARGE_ARRAY_SIZE - 1)
|
|
1106
|
+
return pairs.push([key, value]), this.size = ++data.size, this;
|
|
1107
|
+
data = this.__data__ = new MapCache_default(pairs);
|
|
1108
|
+
}
|
|
1109
|
+
return data.set(key, value), this.size = data.size, this;
|
|
1110
|
+
}
|
|
1111
|
+
var stackSet_default = stackSet;
|
|
1112
|
+
|
|
1113
|
+
// ../../node_modules/lodash-es/_Stack.js
|
|
1114
|
+
function Stack(entries) {
|
|
1115
|
+
var data = this.__data__ = new ListCache_default(entries);
|
|
1116
|
+
this.size = data.size;
|
|
1117
|
+
}
|
|
1118
|
+
Stack.prototype.clear = stackClear_default;
|
|
1119
|
+
Stack.prototype.delete = stackDelete_default;
|
|
1120
|
+
Stack.prototype.get = stackGet_default;
|
|
1121
|
+
Stack.prototype.has = stackHas_default;
|
|
1122
|
+
Stack.prototype.set = stackSet_default;
|
|
1123
|
+
var Stack_default = Stack;
|
|
1124
|
+
|
|
1125
|
+
// ../../node_modules/lodash-es/_baseAssign.js
|
|
1126
|
+
function baseAssign(object, source) {
|
|
1127
|
+
return object && copyObject_default(source, keys_default(source), object);
|
|
1128
|
+
}
|
|
1129
|
+
var baseAssign_default = baseAssign;
|
|
1130
|
+
|
|
1131
|
+
// ../../node_modules/lodash-es/_baseAssignIn.js
|
|
1132
|
+
function baseAssignIn(object, source) {
|
|
1133
|
+
return object && copyObject_default(source, keysIn_default(source), object);
|
|
1134
|
+
}
|
|
1135
|
+
var baseAssignIn_default = baseAssignIn;
|
|
1136
|
+
|
|
1137
|
+
// ../../node_modules/lodash-es/_cloneBuffer.js
|
|
1138
|
+
var freeExports3 = typeof exports == "object" && exports && !exports.nodeType && exports, freeModule3 = freeExports3 && typeof module == "object" && module && !module.nodeType && module, moduleExports3 = freeModule3 && freeModule3.exports === freeExports3, Buffer3 = moduleExports3 ? root_default.Buffer : void 0, allocUnsafe = Buffer3 ? Buffer3.allocUnsafe : void 0;
|
|
1139
|
+
function cloneBuffer(buffer, isDeep) {
|
|
1140
|
+
if (isDeep)
|
|
1141
|
+
return buffer.slice();
|
|
1142
|
+
var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
|
|
1143
|
+
return buffer.copy(result), result;
|
|
1144
|
+
}
|
|
1145
|
+
var cloneBuffer_default = cloneBuffer;
|
|
1146
|
+
|
|
1147
|
+
// ../../node_modules/lodash-es/_arrayFilter.js
|
|
1148
|
+
function arrayFilter(array, predicate) {
|
|
1149
|
+
for (var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = []; ++index < length; ) {
|
|
1150
|
+
var value = array[index];
|
|
1151
|
+
predicate(value, index, array) && (result[resIndex++] = value);
|
|
1152
|
+
}
|
|
1153
|
+
return result;
|
|
1154
|
+
}
|
|
1155
|
+
var arrayFilter_default = arrayFilter;
|
|
1156
|
+
|
|
1157
|
+
// ../../node_modules/lodash-es/stubArray.js
|
|
1158
|
+
function stubArray() {
|
|
1159
|
+
return [];
|
|
1160
|
+
}
|
|
1161
|
+
var stubArray_default = stubArray;
|
|
1162
|
+
|
|
1163
|
+
// ../../node_modules/lodash-es/_getSymbols.js
|
|
1164
|
+
var objectProto13 = Object.prototype, propertyIsEnumerable2 = objectProto13.propertyIsEnumerable, nativeGetSymbols = Object.getOwnPropertySymbols, getSymbols = nativeGetSymbols ? function(object) {
|
|
1165
|
+
return object == null ? [] : (object = Object(object), arrayFilter_default(nativeGetSymbols(object), function(symbol) {
|
|
1166
|
+
return propertyIsEnumerable2.call(object, symbol);
|
|
1167
|
+
}));
|
|
1168
|
+
} : stubArray_default, getSymbols_default = getSymbols;
|
|
1169
|
+
|
|
1170
|
+
// ../../node_modules/lodash-es/_copySymbols.js
|
|
1171
|
+
function copySymbols(source, object) {
|
|
1172
|
+
return copyObject_default(source, getSymbols_default(source), object);
|
|
1173
|
+
}
|
|
1174
|
+
var copySymbols_default = copySymbols;
|
|
1175
|
+
|
|
1176
|
+
// ../../node_modules/lodash-es/_getSymbolsIn.js
|
|
1177
|
+
var nativeGetSymbols2 = Object.getOwnPropertySymbols, getSymbolsIn = nativeGetSymbols2 ? function(object) {
|
|
1178
|
+
for (var result = []; object; )
|
|
1179
|
+
arrayPush_default(result, getSymbols_default(object)), object = getPrototype_default(object);
|
|
1180
|
+
return result;
|
|
1181
|
+
} : stubArray_default, getSymbolsIn_default = getSymbolsIn;
|
|
1182
|
+
|
|
1183
|
+
// ../../node_modules/lodash-es/_copySymbolsIn.js
|
|
1184
|
+
function copySymbolsIn(source, object) {
|
|
1185
|
+
return copyObject_default(source, getSymbolsIn_default(source), object);
|
|
1186
|
+
}
|
|
1187
|
+
var copySymbolsIn_default = copySymbolsIn;
|
|
1188
|
+
|
|
1189
|
+
// ../../node_modules/lodash-es/_baseGetAllKeys.js
|
|
1190
|
+
function baseGetAllKeys(object, keysFunc, symbolsFunc) {
|
|
1191
|
+
var result = keysFunc(object);
|
|
1192
|
+
return isArray_default(object) ? result : arrayPush_default(result, symbolsFunc(object));
|
|
1193
|
+
}
|
|
1194
|
+
var baseGetAllKeys_default = baseGetAllKeys;
|
|
1195
|
+
|
|
1196
|
+
// ../../node_modules/lodash-es/_getAllKeys.js
|
|
1197
|
+
function getAllKeys(object) {
|
|
1198
|
+
return baseGetAllKeys_default(object, keys_default, getSymbols_default);
|
|
1199
|
+
}
|
|
1200
|
+
var getAllKeys_default = getAllKeys;
|
|
1201
|
+
|
|
1202
|
+
// ../../node_modules/lodash-es/_getAllKeysIn.js
|
|
1203
|
+
function getAllKeysIn(object) {
|
|
1204
|
+
return baseGetAllKeys_default(object, keysIn_default, getSymbolsIn_default);
|
|
1205
|
+
}
|
|
1206
|
+
var getAllKeysIn_default = getAllKeysIn;
|
|
1207
|
+
|
|
1208
|
+
// ../../node_modules/lodash-es/_DataView.js
|
|
1209
|
+
var DataView = getNative_default(root_default, "DataView"), DataView_default = DataView;
|
|
1210
|
+
|
|
1211
|
+
// ../../node_modules/lodash-es/_Promise.js
|
|
1212
|
+
var Promise2 = getNative_default(root_default, "Promise"), Promise_default = Promise2;
|
|
1213
|
+
|
|
1214
|
+
// ../../node_modules/lodash-es/_Set.js
|
|
1215
|
+
var Set = getNative_default(root_default, "Set"), Set_default = Set;
|
|
1216
|
+
|
|
1217
|
+
// ../../node_modules/lodash-es/_getTag.js
|
|
1218
|
+
var mapTag2 = "[object Map]", objectTag3 = "[object Object]", promiseTag = "[object Promise]", setTag2 = "[object Set]", weakMapTag2 = "[object WeakMap]", dataViewTag2 = "[object DataView]", dataViewCtorString = toSource_default(DataView_default), mapCtorString = toSource_default(Map_default), promiseCtorString = toSource_default(Promise_default), setCtorString = toSource_default(Set_default), weakMapCtorString = toSource_default(WeakMap_default), getTag = baseGetTag_default;
|
|
1219
|
+
(DataView_default && getTag(new DataView_default(new ArrayBuffer(1))) != dataViewTag2 || Map_default && getTag(new Map_default()) != mapTag2 || Promise_default && getTag(Promise_default.resolve()) != promiseTag || Set_default && getTag(new Set_default()) != setTag2 || WeakMap_default && getTag(new WeakMap_default()) != weakMapTag2) && (getTag = function(value) {
|
|
1220
|
+
var result = baseGetTag_default(value), Ctor = result == objectTag3 ? value.constructor : void 0, ctorString = Ctor ? toSource_default(Ctor) : "";
|
|
1221
|
+
if (ctorString)
|
|
1222
|
+
switch (ctorString) {
|
|
1223
|
+
case dataViewCtorString:
|
|
1224
|
+
return dataViewTag2;
|
|
1225
|
+
case mapCtorString:
|
|
1226
|
+
return mapTag2;
|
|
1227
|
+
case promiseCtorString:
|
|
1228
|
+
return promiseTag;
|
|
1229
|
+
case setCtorString:
|
|
1230
|
+
return setTag2;
|
|
1231
|
+
case weakMapCtorString:
|
|
1232
|
+
return weakMapTag2;
|
|
1233
|
+
}
|
|
1234
|
+
return result;
|
|
1235
|
+
});
|
|
1236
|
+
var getTag_default = getTag;
|
|
1237
|
+
|
|
1238
|
+
// ../../node_modules/lodash-es/_initCloneArray.js
|
|
1239
|
+
var objectProto14 = Object.prototype, hasOwnProperty11 = objectProto14.hasOwnProperty;
|
|
1240
|
+
function initCloneArray(array) {
|
|
1241
|
+
var length = array.length, result = new array.constructor(length);
|
|
1242
|
+
return length && typeof array[0] == "string" && hasOwnProperty11.call(array, "index") && (result.index = array.index, result.input = array.input), result;
|
|
1243
|
+
}
|
|
1244
|
+
var initCloneArray_default = initCloneArray;
|
|
1245
|
+
|
|
1246
|
+
// ../../node_modules/lodash-es/_Uint8Array.js
|
|
1247
|
+
var Uint8Array2 = root_default.Uint8Array, Uint8Array_default = Uint8Array2;
|
|
1248
|
+
|
|
1249
|
+
// ../../node_modules/lodash-es/_cloneArrayBuffer.js
|
|
1250
|
+
function cloneArrayBuffer(arrayBuffer) {
|
|
1251
|
+
var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
|
|
1252
|
+
return new Uint8Array_default(result).set(new Uint8Array_default(arrayBuffer)), result;
|
|
1253
|
+
}
|
|
1254
|
+
var cloneArrayBuffer_default = cloneArrayBuffer;
|
|
1255
|
+
|
|
1256
|
+
// ../../node_modules/lodash-es/_cloneDataView.js
|
|
1257
|
+
function cloneDataView(dataView, isDeep) {
|
|
1258
|
+
var buffer = isDeep ? cloneArrayBuffer_default(dataView.buffer) : dataView.buffer;
|
|
1259
|
+
return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
|
|
1260
|
+
}
|
|
1261
|
+
var cloneDataView_default = cloneDataView;
|
|
1262
|
+
|
|
1263
|
+
// ../../node_modules/lodash-es/_cloneRegExp.js
|
|
1264
|
+
var reFlags = /\w*$/;
|
|
1265
|
+
function cloneRegExp(regexp) {
|
|
1266
|
+
var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
|
|
1267
|
+
return result.lastIndex = regexp.lastIndex, result;
|
|
1268
|
+
}
|
|
1269
|
+
var cloneRegExp_default = cloneRegExp;
|
|
1270
|
+
|
|
1271
|
+
// ../../node_modules/lodash-es/_cloneSymbol.js
|
|
1272
|
+
var symbolProto2 = Symbol_default ? Symbol_default.prototype : void 0, symbolValueOf = symbolProto2 ? symbolProto2.valueOf : void 0;
|
|
1273
|
+
function cloneSymbol(symbol) {
|
|
1274
|
+
return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
|
|
1275
|
+
}
|
|
1276
|
+
var cloneSymbol_default = cloneSymbol;
|
|
1277
|
+
|
|
1278
|
+
// ../../node_modules/lodash-es/_cloneTypedArray.js
|
|
1279
|
+
function cloneTypedArray(typedArray, isDeep) {
|
|
1280
|
+
var buffer = isDeep ? cloneArrayBuffer_default(typedArray.buffer) : typedArray.buffer;
|
|
1281
|
+
return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
|
|
1282
|
+
}
|
|
1283
|
+
var cloneTypedArray_default = cloneTypedArray;
|
|
1284
|
+
|
|
1285
|
+
// ../../node_modules/lodash-es/_initCloneByTag.js
|
|
1286
|
+
var boolTag2 = "[object Boolean]", dateTag2 = "[object Date]", mapTag3 = "[object Map]", numberTag2 = "[object Number]", regexpTag2 = "[object RegExp]", setTag3 = "[object Set]", stringTag2 = "[object String]", symbolTag2 = "[object Symbol]", arrayBufferTag2 = "[object ArrayBuffer]", dataViewTag3 = "[object DataView]", float32Tag2 = "[object Float32Array]", float64Tag2 = "[object Float64Array]", int8Tag2 = "[object Int8Array]", int16Tag2 = "[object Int16Array]", int32Tag2 = "[object Int32Array]", uint8Tag2 = "[object Uint8Array]", uint8ClampedTag2 = "[object Uint8ClampedArray]", uint16Tag2 = "[object Uint16Array]", uint32Tag2 = "[object Uint32Array]";
|
|
1287
|
+
function initCloneByTag(object, tag, isDeep) {
|
|
1288
|
+
var Ctor = object.constructor;
|
|
1289
|
+
switch (tag) {
|
|
1290
|
+
case arrayBufferTag2:
|
|
1291
|
+
return cloneArrayBuffer_default(object);
|
|
1292
|
+
case boolTag2:
|
|
1293
|
+
case dateTag2:
|
|
1294
|
+
return new Ctor(+object);
|
|
1295
|
+
case dataViewTag3:
|
|
1296
|
+
return cloneDataView_default(object, isDeep);
|
|
1297
|
+
case float32Tag2:
|
|
1298
|
+
case float64Tag2:
|
|
1299
|
+
case int8Tag2:
|
|
1300
|
+
case int16Tag2:
|
|
1301
|
+
case int32Tag2:
|
|
1302
|
+
case uint8Tag2:
|
|
1303
|
+
case uint8ClampedTag2:
|
|
1304
|
+
case uint16Tag2:
|
|
1305
|
+
case uint32Tag2:
|
|
1306
|
+
return cloneTypedArray_default(object, isDeep);
|
|
1307
|
+
case mapTag3:
|
|
1308
|
+
return new Ctor();
|
|
1309
|
+
case numberTag2:
|
|
1310
|
+
case stringTag2:
|
|
1311
|
+
return new Ctor(object);
|
|
1312
|
+
case regexpTag2:
|
|
1313
|
+
return cloneRegExp_default(object);
|
|
1314
|
+
case setTag3:
|
|
1315
|
+
return new Ctor();
|
|
1316
|
+
case symbolTag2:
|
|
1317
|
+
return cloneSymbol_default(object);
|
|
1318
|
+
}
|
|
1319
|
+
}
|
|
1320
|
+
var initCloneByTag_default = initCloneByTag;
|
|
1321
|
+
|
|
1322
|
+
// ../../node_modules/lodash-es/_initCloneObject.js
|
|
1323
|
+
function initCloneObject(object) {
|
|
1324
|
+
return typeof object.constructor == "function" && !isPrototype_default(object) ? baseCreate_default(getPrototype_default(object)) : {};
|
|
1325
|
+
}
|
|
1326
|
+
var initCloneObject_default = initCloneObject;
|
|
1327
|
+
|
|
1328
|
+
// ../../node_modules/lodash-es/_baseIsMap.js
|
|
1329
|
+
var mapTag4 = "[object Map]";
|
|
1330
|
+
function baseIsMap(value) {
|
|
1331
|
+
return isObjectLike_default(value) && getTag_default(value) == mapTag4;
|
|
1332
|
+
}
|
|
1333
|
+
var baseIsMap_default = baseIsMap;
|
|
1334
|
+
|
|
1335
|
+
// ../../node_modules/lodash-es/isMap.js
|
|
1336
|
+
var nodeIsMap = nodeUtil_default && nodeUtil_default.isMap, isMap = nodeIsMap ? baseUnary_default(nodeIsMap) : baseIsMap_default, isMap_default = isMap;
|
|
1337
|
+
|
|
1338
|
+
// ../../node_modules/lodash-es/_baseIsSet.js
|
|
1339
|
+
var setTag4 = "[object Set]";
|
|
1340
|
+
function baseIsSet(value) {
|
|
1341
|
+
return isObjectLike_default(value) && getTag_default(value) == setTag4;
|
|
1342
|
+
}
|
|
1343
|
+
var baseIsSet_default = baseIsSet;
|
|
1344
|
+
|
|
1345
|
+
// ../../node_modules/lodash-es/isSet.js
|
|
1346
|
+
var nodeIsSet = nodeUtil_default && nodeUtil_default.isSet, isSet = nodeIsSet ? baseUnary_default(nodeIsSet) : baseIsSet_default, isSet_default = isSet;
|
|
1347
|
+
|
|
1348
|
+
// ../../node_modules/lodash-es/_baseClone.js
|
|
1349
|
+
var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4, argsTag3 = "[object Arguments]", arrayTag2 = "[object Array]", boolTag3 = "[object Boolean]", dateTag3 = "[object Date]", errorTag2 = "[object Error]", funcTag3 = "[object Function]", genTag2 = "[object GeneratorFunction]", mapTag5 = "[object Map]", numberTag3 = "[object Number]", objectTag4 = "[object Object]", regexpTag3 = "[object RegExp]", setTag5 = "[object Set]", stringTag3 = "[object String]", symbolTag3 = "[object Symbol]", weakMapTag3 = "[object WeakMap]", arrayBufferTag3 = "[object ArrayBuffer]", dataViewTag4 = "[object DataView]", float32Tag3 = "[object Float32Array]", float64Tag3 = "[object Float64Array]", int8Tag3 = "[object Int8Array]", int16Tag3 = "[object Int16Array]", int32Tag3 = "[object Int32Array]", uint8Tag3 = "[object Uint8Array]", uint8ClampedTag3 = "[object Uint8ClampedArray]", uint16Tag3 = "[object Uint16Array]", uint32Tag3 = "[object Uint32Array]", cloneableTags = {};
|
|
1350
|
+
cloneableTags[argsTag3] = cloneableTags[arrayTag2] = cloneableTags[arrayBufferTag3] = cloneableTags[dataViewTag4] = cloneableTags[boolTag3] = cloneableTags[dateTag3] = cloneableTags[float32Tag3] = cloneableTags[float64Tag3] = cloneableTags[int8Tag3] = cloneableTags[int16Tag3] = cloneableTags[int32Tag3] = cloneableTags[mapTag5] = cloneableTags[numberTag3] = cloneableTags[objectTag4] = cloneableTags[regexpTag3] = cloneableTags[setTag5] = cloneableTags[stringTag3] = cloneableTags[symbolTag3] = cloneableTags[uint8Tag3] = cloneableTags[uint8ClampedTag3] = cloneableTags[uint16Tag3] = cloneableTags[uint32Tag3] = !0;
|
|
1351
|
+
cloneableTags[errorTag2] = cloneableTags[funcTag3] = cloneableTags[weakMapTag3] = !1;
|
|
1352
|
+
function baseClone(value, bitmask, customizer, key, object, stack) {
|
|
1353
|
+
var result, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG;
|
|
1354
|
+
if (customizer && (result = object ? customizer(value, key, object, stack) : customizer(value)), result !== void 0)
|
|
1355
|
+
return result;
|
|
1356
|
+
if (!isObject_default(value))
|
|
1357
|
+
return value;
|
|
1358
|
+
var isArr = isArray_default(value);
|
|
1359
|
+
if (isArr) {
|
|
1360
|
+
if (result = initCloneArray_default(value), !isDeep)
|
|
1361
|
+
return copyArray_default(value, result);
|
|
1362
|
+
} else {
|
|
1363
|
+
var tag = getTag_default(value), isFunc = tag == funcTag3 || tag == genTag2;
|
|
1364
|
+
if (isBuffer_default(value))
|
|
1365
|
+
return cloneBuffer_default(value, isDeep);
|
|
1366
|
+
if (tag == objectTag4 || tag == argsTag3 || isFunc && !object) {
|
|
1367
|
+
if (result = isFlat || isFunc ? {} : initCloneObject_default(value), !isDeep)
|
|
1368
|
+
return isFlat ? copySymbolsIn_default(value, baseAssignIn_default(result, value)) : copySymbols_default(value, baseAssign_default(result, value));
|
|
1369
|
+
} else {
|
|
1370
|
+
if (!cloneableTags[tag])
|
|
1371
|
+
return object ? value : {};
|
|
1372
|
+
result = initCloneByTag_default(value, tag, isDeep);
|
|
1373
|
+
}
|
|
1374
|
+
}
|
|
1375
|
+
stack || (stack = new Stack_default());
|
|
1376
|
+
var stacked = stack.get(value);
|
|
1377
|
+
if (stacked)
|
|
1378
|
+
return stacked;
|
|
1379
|
+
stack.set(value, result), isSet_default(value) ? value.forEach(function(subValue) {
|
|
1380
|
+
result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
|
|
1381
|
+
}) : isMap_default(value) && value.forEach(function(subValue, key2) {
|
|
1382
|
+
result.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack));
|
|
1383
|
+
});
|
|
1384
|
+
var keysFunc = isFull ? isFlat ? getAllKeysIn_default : getAllKeys_default : isFlat ? keysIn_default : keys_default, props = isArr ? void 0 : keysFunc(value);
|
|
1385
|
+
return arrayEach_default(props || value, function(subValue, key2) {
|
|
1386
|
+
props && (key2 = subValue, subValue = value[key2]), assignValue_default(result, key2, baseClone(subValue, bitmask, customizer, key2, value, stack));
|
|
1387
|
+
}), result;
|
|
1388
|
+
}
|
|
1389
|
+
var baseClone_default = baseClone;
|
|
1390
|
+
|
|
1391
|
+
// ../../node_modules/lodash-es/cloneDeep.js
|
|
1392
|
+
var CLONE_DEEP_FLAG2 = 1, CLONE_SYMBOLS_FLAG2 = 4;
|
|
1393
|
+
function cloneDeep(value) {
|
|
1394
|
+
return baseClone_default(value, CLONE_DEEP_FLAG2 | CLONE_SYMBOLS_FLAG2);
|
|
1395
|
+
}
|
|
1396
|
+
var cloneDeep_default = cloneDeep;
|
|
1397
|
+
|
|
1398
|
+
// ../../node_modules/lodash-es/_setCacheAdd.js
|
|
1399
|
+
var HASH_UNDEFINED3 = "__lodash_hash_undefined__";
|
|
1400
|
+
function setCacheAdd(value) {
|
|
1401
|
+
return this.__data__.set(value, HASH_UNDEFINED3), this;
|
|
1402
|
+
}
|
|
1403
|
+
var setCacheAdd_default = setCacheAdd;
|
|
1404
|
+
|
|
1405
|
+
// ../../node_modules/lodash-es/_setCacheHas.js
|
|
1406
|
+
function setCacheHas(value) {
|
|
1407
|
+
return this.__data__.has(value);
|
|
1408
|
+
}
|
|
1409
|
+
var setCacheHas_default = setCacheHas;
|
|
1410
|
+
|
|
1411
|
+
// ../../node_modules/lodash-es/_SetCache.js
|
|
1412
|
+
function SetCache(values) {
|
|
1413
|
+
var index = -1, length = values == null ? 0 : values.length;
|
|
1414
|
+
for (this.__data__ = new MapCache_default(); ++index < length; )
|
|
1415
|
+
this.add(values[index]);
|
|
1416
|
+
}
|
|
1417
|
+
SetCache.prototype.add = SetCache.prototype.push = setCacheAdd_default;
|
|
1418
|
+
SetCache.prototype.has = setCacheHas_default;
|
|
1419
|
+
var SetCache_default = SetCache;
|
|
1420
|
+
|
|
1421
|
+
// ../../node_modules/lodash-es/_arraySome.js
|
|
1422
|
+
function arraySome(array, predicate) {
|
|
1423
|
+
for (var index = -1, length = array == null ? 0 : array.length; ++index < length; )
|
|
1424
|
+
if (predicate(array[index], index, array))
|
|
1425
|
+
return !0;
|
|
1426
|
+
return !1;
|
|
1427
|
+
}
|
|
1428
|
+
var arraySome_default = arraySome;
|
|
1429
|
+
|
|
1430
|
+
// ../../node_modules/lodash-es/_cacheHas.js
|
|
1431
|
+
function cacheHas(cache2, key) {
|
|
1432
|
+
return cache2.has(key);
|
|
1433
|
+
}
|
|
1434
|
+
var cacheHas_default = cacheHas;
|
|
1435
|
+
|
|
1436
|
+
// ../../node_modules/lodash-es/_equalArrays.js
|
|
1437
|
+
var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2;
|
|
1438
|
+
function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
|
|
1439
|
+
var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array.length, othLength = other.length;
|
|
1440
|
+
if (arrLength != othLength && !(isPartial && othLength > arrLength))
|
|
1441
|
+
return !1;
|
|
1442
|
+
var arrStacked = stack.get(array), othStacked = stack.get(other);
|
|
1443
|
+
if (arrStacked && othStacked)
|
|
1444
|
+
return arrStacked == other && othStacked == array;
|
|
1445
|
+
var index = -1, result = !0, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache_default() : void 0;
|
|
1446
|
+
for (stack.set(array, other), stack.set(other, array); ++index < arrLength; ) {
|
|
1447
|
+
var arrValue = array[index], othValue = other[index];
|
|
1448
|
+
if (customizer)
|
|
1449
|
+
var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);
|
|
1450
|
+
if (compared !== void 0) {
|
|
1451
|
+
if (compared)
|
|
1452
|
+
continue;
|
|
1453
|
+
result = !1;
|
|
1454
|
+
break;
|
|
1455
|
+
}
|
|
1456
|
+
if (seen) {
|
|
1457
|
+
if (!arraySome_default(other, function(othValue2, othIndex) {
|
|
1458
|
+
if (!cacheHas_default(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack)))
|
|
1459
|
+
return seen.push(othIndex);
|
|
1460
|
+
})) {
|
|
1461
|
+
result = !1;
|
|
1462
|
+
break;
|
|
1463
|
+
}
|
|
1464
|
+
} else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
|
|
1465
|
+
result = !1;
|
|
1466
|
+
break;
|
|
1467
|
+
}
|
|
1468
|
+
}
|
|
1469
|
+
return stack.delete(array), stack.delete(other), result;
|
|
1470
|
+
}
|
|
1471
|
+
var equalArrays_default = equalArrays;
|
|
1472
|
+
|
|
1473
|
+
// ../../node_modules/lodash-es/_mapToArray.js
|
|
1474
|
+
function mapToArray(map) {
|
|
1475
|
+
var index = -1, result = Array(map.size);
|
|
1476
|
+
return map.forEach(function(value, key) {
|
|
1477
|
+
result[++index] = [key, value];
|
|
1478
|
+
}), result;
|
|
1479
|
+
}
|
|
1480
|
+
var mapToArray_default = mapToArray;
|
|
1481
|
+
|
|
1482
|
+
// ../../node_modules/lodash-es/_setToArray.js
|
|
1483
|
+
function setToArray(set2) {
|
|
1484
|
+
var index = -1, result = Array(set2.size);
|
|
1485
|
+
return set2.forEach(function(value) {
|
|
1486
|
+
result[++index] = value;
|
|
1487
|
+
}), result;
|
|
1488
|
+
}
|
|
1489
|
+
var setToArray_default = setToArray;
|
|
1490
|
+
|
|
1491
|
+
// ../../node_modules/lodash-es/_equalByTag.js
|
|
1492
|
+
var COMPARE_PARTIAL_FLAG2 = 1, COMPARE_UNORDERED_FLAG2 = 2, boolTag4 = "[object Boolean]", dateTag4 = "[object Date]", errorTag3 = "[object Error]", mapTag6 = "[object Map]", numberTag4 = "[object Number]", regexpTag4 = "[object RegExp]", setTag6 = "[object Set]", stringTag4 = "[object String]", symbolTag4 = "[object Symbol]", arrayBufferTag4 = "[object ArrayBuffer]", dataViewTag5 = "[object DataView]", symbolProto3 = Symbol_default ? Symbol_default.prototype : void 0, symbolValueOf2 = symbolProto3 ? symbolProto3.valueOf : void 0;
|
|
1493
|
+
function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
|
|
1494
|
+
switch (tag) {
|
|
1495
|
+
case dataViewTag5:
|
|
1496
|
+
if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset)
|
|
1497
|
+
return !1;
|
|
1498
|
+
object = object.buffer, other = other.buffer;
|
|
1499
|
+
case arrayBufferTag4:
|
|
1500
|
+
return !(object.byteLength != other.byteLength || !equalFunc(new Uint8Array_default(object), new Uint8Array_default(other)));
|
|
1501
|
+
case boolTag4:
|
|
1502
|
+
case dateTag4:
|
|
1503
|
+
case numberTag4:
|
|
1504
|
+
return eq_default(+object, +other);
|
|
1505
|
+
case errorTag3:
|
|
1506
|
+
return object.name == other.name && object.message == other.message;
|
|
1507
|
+
case regexpTag4:
|
|
1508
|
+
case stringTag4:
|
|
1509
|
+
return object == other + "";
|
|
1510
|
+
case mapTag6:
|
|
1511
|
+
var convert = mapToArray_default;
|
|
1512
|
+
case setTag6:
|
|
1513
|
+
var isPartial = bitmask & COMPARE_PARTIAL_FLAG2;
|
|
1514
|
+
if (convert || (convert = setToArray_default), object.size != other.size && !isPartial)
|
|
1515
|
+
return !1;
|
|
1516
|
+
var stacked = stack.get(object);
|
|
1517
|
+
if (stacked)
|
|
1518
|
+
return stacked == other;
|
|
1519
|
+
bitmask |= COMPARE_UNORDERED_FLAG2, stack.set(object, other);
|
|
1520
|
+
var result = equalArrays_default(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
|
|
1521
|
+
return stack.delete(object), result;
|
|
1522
|
+
case symbolTag4:
|
|
1523
|
+
if (symbolValueOf2)
|
|
1524
|
+
return symbolValueOf2.call(object) == symbolValueOf2.call(other);
|
|
1525
|
+
}
|
|
1526
|
+
return !1;
|
|
1527
|
+
}
|
|
1528
|
+
var equalByTag_default = equalByTag;
|
|
1529
|
+
|
|
1530
|
+
// ../../node_modules/lodash-es/_equalObjects.js
|
|
1531
|
+
var COMPARE_PARTIAL_FLAG3 = 1, objectProto15 = Object.prototype, hasOwnProperty12 = objectProto15.hasOwnProperty;
|
|
1532
|
+
function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
|
|
1533
|
+
var isPartial = bitmask & COMPARE_PARTIAL_FLAG3, objProps = getAllKeys_default(object), objLength = objProps.length, othProps = getAllKeys_default(other), othLength = othProps.length;
|
|
1534
|
+
if (objLength != othLength && !isPartial)
|
|
1535
|
+
return !1;
|
|
1536
|
+
for (var index = objLength; index--; ) {
|
|
1537
|
+
var key = objProps[index];
|
|
1538
|
+
if (!(isPartial ? key in other : hasOwnProperty12.call(other, key)))
|
|
1539
|
+
return !1;
|
|
1540
|
+
}
|
|
1541
|
+
var objStacked = stack.get(object), othStacked = stack.get(other);
|
|
1542
|
+
if (objStacked && othStacked)
|
|
1543
|
+
return objStacked == other && othStacked == object;
|
|
1544
|
+
var result = !0;
|
|
1545
|
+
stack.set(object, other), stack.set(other, object);
|
|
1546
|
+
for (var skipCtor = isPartial; ++index < objLength; ) {
|
|
1547
|
+
key = objProps[index];
|
|
1548
|
+
var objValue = object[key], othValue = other[key];
|
|
1549
|
+
if (customizer)
|
|
1550
|
+
var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
|
|
1551
|
+
if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {
|
|
1552
|
+
result = !1;
|
|
1553
|
+
break;
|
|
1554
|
+
}
|
|
1555
|
+
skipCtor || (skipCtor = key == "constructor");
|
|
1556
|
+
}
|
|
1557
|
+
if (result && !skipCtor) {
|
|
1558
|
+
var objCtor = object.constructor, othCtor = other.constructor;
|
|
1559
|
+
objCtor != othCtor && "constructor" in object && "constructor" in other && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor) && (result = !1);
|
|
1560
|
+
}
|
|
1561
|
+
return stack.delete(object), stack.delete(other), result;
|
|
1562
|
+
}
|
|
1563
|
+
var equalObjects_default = equalObjects;
|
|
1564
|
+
|
|
1565
|
+
// ../../node_modules/lodash-es/_baseIsEqualDeep.js
|
|
1566
|
+
var COMPARE_PARTIAL_FLAG4 = 1, argsTag4 = "[object Arguments]", arrayTag3 = "[object Array]", objectTag5 = "[object Object]", objectProto16 = Object.prototype, hasOwnProperty13 = objectProto16.hasOwnProperty;
|
|
1567
|
+
function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
|
|
1568
|
+
var objIsArr = isArray_default(object), othIsArr = isArray_default(other), objTag = objIsArr ? arrayTag3 : getTag_default(object), othTag = othIsArr ? arrayTag3 : getTag_default(other);
|
|
1569
|
+
objTag = objTag == argsTag4 ? objectTag5 : objTag, othTag = othTag == argsTag4 ? objectTag5 : othTag;
|
|
1570
|
+
var objIsObj = objTag == objectTag5, othIsObj = othTag == objectTag5, isSameTag = objTag == othTag;
|
|
1571
|
+
if (isSameTag && isBuffer_default(object)) {
|
|
1572
|
+
if (!isBuffer_default(other))
|
|
1573
|
+
return !1;
|
|
1574
|
+
objIsArr = !0, objIsObj = !1;
|
|
1575
|
+
}
|
|
1576
|
+
if (isSameTag && !objIsObj)
|
|
1577
|
+
return stack || (stack = new Stack_default()), objIsArr || isTypedArray_default(object) ? equalArrays_default(object, other, bitmask, customizer, equalFunc, stack) : equalByTag_default(object, other, objTag, bitmask, customizer, equalFunc, stack);
|
|
1578
|
+
if (!(bitmask & COMPARE_PARTIAL_FLAG4)) {
|
|
1579
|
+
var objIsWrapped = objIsObj && hasOwnProperty13.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty13.call(other, "__wrapped__");
|
|
1580
|
+
if (objIsWrapped || othIsWrapped) {
|
|
1581
|
+
var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
|
|
1582
|
+
return stack || (stack = new Stack_default()), equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
|
|
1583
|
+
}
|
|
1584
|
+
}
|
|
1585
|
+
return isSameTag ? (stack || (stack = new Stack_default()), equalObjects_default(object, other, bitmask, customizer, equalFunc, stack)) : !1;
|
|
1586
|
+
}
|
|
1587
|
+
var baseIsEqualDeep_default = baseIsEqualDeep;
|
|
1588
|
+
|
|
1589
|
+
// ../../node_modules/lodash-es/_baseIsEqual.js
|
|
1590
|
+
function baseIsEqual(value, other, bitmask, customizer, stack) {
|
|
1591
|
+
return value === other ? !0 : value == null || other == null || !isObjectLike_default(value) && !isObjectLike_default(other) ? value !== value && other !== other : baseIsEqualDeep_default(value, other, bitmask, customizer, baseIsEqual, stack);
|
|
1592
|
+
}
|
|
1593
|
+
var baseIsEqual_default = baseIsEqual;
|
|
1594
|
+
|
|
1595
|
+
// ../../node_modules/lodash-es/_baseIsMatch.js
|
|
1596
|
+
var COMPARE_PARTIAL_FLAG5 = 1, COMPARE_UNORDERED_FLAG3 = 2;
|
|
1597
|
+
function baseIsMatch(object, source, matchData, customizer) {
|
|
1598
|
+
var index = matchData.length, length = index, noCustomizer = !customizer;
|
|
1599
|
+
if (object == null)
|
|
1600
|
+
return !length;
|
|
1601
|
+
for (object = Object(object); index--; ) {
|
|
1602
|
+
var data = matchData[index];
|
|
1603
|
+
if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object))
|
|
1604
|
+
return !1;
|
|
1605
|
+
}
|
|
1606
|
+
for (; ++index < length; ) {
|
|
1607
|
+
data = matchData[index];
|
|
1608
|
+
var key = data[0], objValue = object[key], srcValue = data[1];
|
|
1609
|
+
if (noCustomizer && data[2]) {
|
|
1610
|
+
if (objValue === void 0 && !(key in object))
|
|
1611
|
+
return !1;
|
|
1612
|
+
} else {
|
|
1613
|
+
var stack = new Stack_default();
|
|
1614
|
+
if (customizer)
|
|
1615
|
+
var result = customizer(objValue, srcValue, key, object, source, stack);
|
|
1616
|
+
if (!(result === void 0 ? baseIsEqual_default(srcValue, objValue, COMPARE_PARTIAL_FLAG5 | COMPARE_UNORDERED_FLAG3, customizer, stack) : result))
|
|
1617
|
+
return !1;
|
|
1618
|
+
}
|
|
1619
|
+
}
|
|
1620
|
+
return !0;
|
|
1621
|
+
}
|
|
1622
|
+
var baseIsMatch_default = baseIsMatch;
|
|
1623
|
+
|
|
1624
|
+
// ../../node_modules/lodash-es/_isStrictComparable.js
|
|
1625
|
+
function isStrictComparable(value) {
|
|
1626
|
+
return value === value && !isObject_default(value);
|
|
1627
|
+
}
|
|
1628
|
+
var isStrictComparable_default = isStrictComparable;
|
|
1629
|
+
|
|
1630
|
+
// ../../node_modules/lodash-es/_getMatchData.js
|
|
1631
|
+
function getMatchData(object) {
|
|
1632
|
+
for (var result = keys_default(object), length = result.length; length--; ) {
|
|
1633
|
+
var key = result[length], value = object[key];
|
|
1634
|
+
result[length] = [key, value, isStrictComparable_default(value)];
|
|
1635
|
+
}
|
|
1636
|
+
return result;
|
|
1637
|
+
}
|
|
1638
|
+
var getMatchData_default = getMatchData;
|
|
1639
|
+
|
|
1640
|
+
// ../../node_modules/lodash-es/_matchesStrictComparable.js
|
|
1641
|
+
function matchesStrictComparable(key, srcValue) {
|
|
1642
|
+
return function(object) {
|
|
1643
|
+
return object == null ? !1 : object[key] === srcValue && (srcValue !== void 0 || key in Object(object));
|
|
1644
|
+
};
|
|
1645
|
+
}
|
|
1646
|
+
var matchesStrictComparable_default = matchesStrictComparable;
|
|
1647
|
+
|
|
1648
|
+
// ../../node_modules/lodash-es/_baseMatches.js
|
|
1649
|
+
function baseMatches(source) {
|
|
1650
|
+
var matchData = getMatchData_default(source);
|
|
1651
|
+
return matchData.length == 1 && matchData[0][2] ? matchesStrictComparable_default(matchData[0][0], matchData[0][1]) : function(object) {
|
|
1652
|
+
return object === source || baseIsMatch_default(object, source, matchData);
|
|
1653
|
+
};
|
|
1654
|
+
}
|
|
1655
|
+
var baseMatches_default = baseMatches;
|
|
1656
|
+
|
|
1657
|
+
// ../../node_modules/lodash-es/_baseHasIn.js
|
|
1658
|
+
function baseHasIn(object, key) {
|
|
1659
|
+
return object != null && key in Object(object);
|
|
1660
|
+
}
|
|
1661
|
+
var baseHasIn_default = baseHasIn;
|
|
1662
|
+
|
|
1663
|
+
// ../../node_modules/lodash-es/_hasPath.js
|
|
1664
|
+
function hasPath(object, path, hasFunc) {
|
|
1665
|
+
path = castPath_default(path, object);
|
|
1666
|
+
for (var index = -1, length = path.length, result = !1; ++index < length; ) {
|
|
1667
|
+
var key = toKey_default(path[index]);
|
|
1668
|
+
if (!(result = object != null && hasFunc(object, key)))
|
|
1669
|
+
break;
|
|
1670
|
+
object = object[key];
|
|
1671
|
+
}
|
|
1672
|
+
return result || ++index != length ? result : (length = object == null ? 0 : object.length, !!length && isLength_default(length) && isIndex_default(key, length) && (isArray_default(object) || isArguments_default(object)));
|
|
1673
|
+
}
|
|
1674
|
+
var hasPath_default = hasPath;
|
|
1675
|
+
|
|
1676
|
+
// ../../node_modules/lodash-es/hasIn.js
|
|
1677
|
+
function hasIn(object, path) {
|
|
1678
|
+
return object != null && hasPath_default(object, path, baseHasIn_default);
|
|
1679
|
+
}
|
|
1680
|
+
var hasIn_default = hasIn;
|
|
1681
|
+
|
|
1682
|
+
// ../../node_modules/lodash-es/_baseMatchesProperty.js
|
|
1683
|
+
var COMPARE_PARTIAL_FLAG6 = 1, COMPARE_UNORDERED_FLAG4 = 2;
|
|
1684
|
+
function baseMatchesProperty(path, srcValue) {
|
|
1685
|
+
return isKey_default(path) && isStrictComparable_default(srcValue) ? matchesStrictComparable_default(toKey_default(path), srcValue) : function(object) {
|
|
1686
|
+
var objValue = get_default(object, path);
|
|
1687
|
+
return objValue === void 0 && objValue === srcValue ? hasIn_default(object, path) : baseIsEqual_default(srcValue, objValue, COMPARE_PARTIAL_FLAG6 | COMPARE_UNORDERED_FLAG4);
|
|
1688
|
+
};
|
|
1689
|
+
}
|
|
1690
|
+
var baseMatchesProperty_default = baseMatchesProperty;
|
|
1691
|
+
|
|
1692
|
+
// ../../node_modules/lodash-es/_baseProperty.js
|
|
1693
|
+
function baseProperty(key) {
|
|
1694
|
+
return function(object) {
|
|
1695
|
+
return object == null ? void 0 : object[key];
|
|
1696
|
+
};
|
|
1697
|
+
}
|
|
1698
|
+
var baseProperty_default = baseProperty;
|
|
1699
|
+
|
|
1700
|
+
// ../../node_modules/lodash-es/_basePropertyDeep.js
|
|
1701
|
+
function basePropertyDeep(path) {
|
|
1702
|
+
return function(object) {
|
|
1703
|
+
return baseGet_default(object, path);
|
|
1704
|
+
};
|
|
1705
|
+
}
|
|
1706
|
+
var basePropertyDeep_default = basePropertyDeep;
|
|
1707
|
+
|
|
1708
|
+
// ../../node_modules/lodash-es/property.js
|
|
1709
|
+
function property(path) {
|
|
1710
|
+
return isKey_default(path) ? baseProperty_default(toKey_default(path)) : basePropertyDeep_default(path);
|
|
1711
|
+
}
|
|
1712
|
+
var property_default = property;
|
|
1713
|
+
|
|
1714
|
+
// ../../node_modules/lodash-es/_baseIteratee.js
|
|
1715
|
+
function baseIteratee(value) {
|
|
1716
|
+
return typeof value == "function" ? value : value == null ? identity_default : typeof value == "object" ? isArray_default(value) ? baseMatchesProperty_default(value[0], value[1]) : baseMatches_default(value) : property_default(value);
|
|
1717
|
+
}
|
|
1718
|
+
var baseIteratee_default = baseIteratee;
|
|
1719
|
+
|
|
1720
|
+
// ../../node_modules/lodash-es/_createBaseFor.js
|
|
1721
|
+
function createBaseFor(fromRight) {
|
|
1722
|
+
return function(object, iteratee, keysFunc) {
|
|
1723
|
+
for (var index = -1, iterable = Object(object), props = keysFunc(object), length = props.length; length--; ) {
|
|
1724
|
+
var key = props[fromRight ? length : ++index];
|
|
1725
|
+
if (iteratee(iterable[key], key, iterable) === !1)
|
|
1726
|
+
break;
|
|
1727
|
+
}
|
|
1728
|
+
return object;
|
|
1729
|
+
};
|
|
1730
|
+
}
|
|
1731
|
+
var createBaseFor_default = createBaseFor;
|
|
1732
|
+
|
|
1733
|
+
// ../../node_modules/lodash-es/_baseFor.js
|
|
1734
|
+
var baseFor = createBaseFor_default(), baseFor_default = baseFor;
|
|
1735
|
+
|
|
1736
|
+
// ../../node_modules/lodash-es/_baseForOwn.js
|
|
1737
|
+
function baseForOwn(object, iteratee) {
|
|
1738
|
+
return object && baseFor_default(object, iteratee, keys_default);
|
|
1739
|
+
}
|
|
1740
|
+
var baseForOwn_default = baseForOwn;
|
|
1741
|
+
|
|
1742
|
+
// ../../node_modules/lodash-es/now.js
|
|
1743
|
+
var now = function() {
|
|
1744
|
+
return root_default.Date.now();
|
|
1745
|
+
}, now_default = now;
|
|
1746
|
+
|
|
1747
|
+
// ../../node_modules/lodash-es/debounce.js
|
|
1748
|
+
var FUNC_ERROR_TEXT2 = "Expected a function", nativeMax = Math.max, nativeMin = Math.min;
|
|
1749
|
+
function debounce(func, wait, options) {
|
|
1750
|
+
var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = !1, maxing = !1, trailing = !0;
|
|
1751
|
+
if (typeof func != "function")
|
|
1752
|
+
throw new TypeError(FUNC_ERROR_TEXT2);
|
|
1753
|
+
wait = toNumber_default(wait) || 0, isObject_default(options) && (leading = !!options.leading, maxing = "maxWait" in options, maxWait = maxing ? nativeMax(toNumber_default(options.maxWait) || 0, wait) : maxWait, trailing = "trailing" in options ? !!options.trailing : trailing);
|
|
1754
|
+
function invokeFunc(time) {
|
|
1755
|
+
var args = lastArgs, thisArg = lastThis;
|
|
1756
|
+
return lastArgs = lastThis = void 0, lastInvokeTime = time, result = func.apply(thisArg, args), result;
|
|
1757
|
+
}
|
|
1758
|
+
function leadingEdge(time) {
|
|
1759
|
+
return lastInvokeTime = time, timerId = setTimeout(timerExpired, wait), leading ? invokeFunc(time) : result;
|
|
1760
|
+
}
|
|
1761
|
+
function remainingWait(time) {
|
|
1762
|
+
var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;
|
|
1763
|
+
return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;
|
|
1764
|
+
}
|
|
1765
|
+
function shouldInvoke(time) {
|
|
1766
|
+
var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;
|
|
1767
|
+
return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
|
|
1768
|
+
}
|
|
1769
|
+
function timerExpired() {
|
|
1770
|
+
var time = now_default();
|
|
1771
|
+
if (shouldInvoke(time))
|
|
1772
|
+
return trailingEdge(time);
|
|
1773
|
+
timerId = setTimeout(timerExpired, remainingWait(time));
|
|
1774
|
+
}
|
|
1775
|
+
function trailingEdge(time) {
|
|
1776
|
+
return timerId = void 0, trailing && lastArgs ? invokeFunc(time) : (lastArgs = lastThis = void 0, result);
|
|
1777
|
+
}
|
|
1778
|
+
function cancel() {
|
|
1779
|
+
timerId !== void 0 && clearTimeout(timerId), lastInvokeTime = 0, lastArgs = lastCallTime = lastThis = timerId = void 0;
|
|
1780
|
+
}
|
|
1781
|
+
function flush() {
|
|
1782
|
+
return timerId === void 0 ? result : trailingEdge(now_default());
|
|
1783
|
+
}
|
|
1784
|
+
function debounced() {
|
|
1785
|
+
var time = now_default(), isInvoking = shouldInvoke(time);
|
|
1786
|
+
if (lastArgs = arguments, lastThis = this, lastCallTime = time, isInvoking) {
|
|
1787
|
+
if (timerId === void 0)
|
|
1788
|
+
return leadingEdge(lastCallTime);
|
|
1789
|
+
if (maxing)
|
|
1790
|
+
return clearTimeout(timerId), timerId = setTimeout(timerExpired, wait), invokeFunc(lastCallTime);
|
|
1791
|
+
}
|
|
1792
|
+
return timerId === void 0 && (timerId = setTimeout(timerExpired, wait)), result;
|
|
1793
|
+
}
|
|
1794
|
+
return debounced.cancel = cancel, debounced.flush = flush, debounced;
|
|
1795
|
+
}
|
|
1796
|
+
var debounce_default = debounce;
|
|
1797
|
+
|
|
1798
|
+
// ../../node_modules/lodash-es/last.js
|
|
1799
|
+
function last(array) {
|
|
1800
|
+
var length = array == null ? 0 : array.length;
|
|
1801
|
+
return length ? array[length - 1] : void 0;
|
|
1802
|
+
}
|
|
1803
|
+
var last_default = last;
|
|
1804
|
+
|
|
1805
|
+
// ../../node_modules/lodash-es/_parent.js
|
|
1806
|
+
function parent(object, path) {
|
|
1807
|
+
return path.length < 2 ? object : baseGet_default(object, baseSlice_default(path, 0, -1));
|
|
1808
|
+
}
|
|
1809
|
+
var parent_default = parent;
|
|
1810
|
+
|
|
1811
|
+
// ../../node_modules/lodash-es/isInteger.js
|
|
1812
|
+
function isInteger(value) {
|
|
1813
|
+
return typeof value == "number" && value == toInteger_default(value);
|
|
1814
|
+
}
|
|
1815
|
+
var isInteger_default = isInteger;
|
|
1816
|
+
|
|
1817
|
+
// ../../node_modules/lodash-es/mapValues.js
|
|
1818
|
+
function mapValues(object, iteratee) {
|
|
1819
|
+
var result = {};
|
|
1820
|
+
return iteratee = baseIteratee_default(iteratee, 3), baseForOwn_default(object, function(value, key, object2) {
|
|
1821
|
+
baseAssignValue_default(result, key, iteratee(value, key, object2));
|
|
1822
|
+
}), result;
|
|
1823
|
+
}
|
|
1824
|
+
var mapValues_default = mapValues;
|
|
1825
|
+
|
|
1826
|
+
// ../../node_modules/lodash-es/_baseUnset.js
|
|
1827
|
+
function baseUnset(object, path) {
|
|
1828
|
+
return path = castPath_default(path, object), object = parent_default(object, path), object == null || delete object[toKey_default(last_default(path))];
|
|
1829
|
+
}
|
|
1830
|
+
var baseUnset_default = baseUnset;
|
|
1831
|
+
|
|
1832
|
+
// ../../node_modules/lodash-es/_baseRepeat.js
|
|
1833
|
+
var MAX_SAFE_INTEGER3 = 9007199254740991, nativeFloor = Math.floor;
|
|
1834
|
+
function baseRepeat(string2, n) {
|
|
1835
|
+
var result = "";
|
|
1836
|
+
if (!string2 || n < 1 || n > MAX_SAFE_INTEGER3)
|
|
1837
|
+
return result;
|
|
1838
|
+
do
|
|
1839
|
+
n % 2 && (result += string2), n = nativeFloor(n / 2), n && (string2 += string2);
|
|
1840
|
+
while (n);
|
|
1841
|
+
return result;
|
|
1842
|
+
}
|
|
1843
|
+
var baseRepeat_default = baseRepeat;
|
|
1844
|
+
|
|
1845
|
+
// ../../node_modules/lodash-es/_asciiSize.js
|
|
1846
|
+
var asciiSize = baseProperty_default("length"), asciiSize_default = asciiSize;
|
|
1847
|
+
|
|
1848
|
+
// ../../node_modules/lodash-es/_unicodeSize.js
|
|
1849
|
+
var rsAstralRange3 = "\\ud800-\\udfff", rsComboMarksRange3 = "\\u0300-\\u036f", reComboHalfMarksRange3 = "\\ufe20-\\ufe2f", rsComboSymbolsRange3 = "\\u20d0-\\u20ff", rsComboRange3 = rsComboMarksRange3 + reComboHalfMarksRange3 + rsComboSymbolsRange3, rsVarRange3 = "\\ufe0e\\ufe0f", rsAstral2 = "[" + rsAstralRange3 + "]", rsCombo2 = "[" + rsComboRange3 + "]", rsFitz2 = "\\ud83c[\\udffb-\\udfff]", rsModifier2 = "(?:" + rsCombo2 + "|" + rsFitz2 + ")", rsNonAstral2 = "[^" + rsAstralRange3 + "]", rsRegional2 = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair2 = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsZWJ3 = "\\u200d", reOptMod2 = rsModifier2 + "?", rsOptVar2 = "[" + rsVarRange3 + "]?", rsOptJoin2 = "(?:" + rsZWJ3 + "(?:" + [rsNonAstral2, rsRegional2, rsSurrPair2].join("|") + ")" + rsOptVar2 + reOptMod2 + ")*", rsSeq2 = rsOptVar2 + reOptMod2 + rsOptJoin2, rsSymbol2 = "(?:" + [rsNonAstral2 + rsCombo2 + "?", rsCombo2, rsRegional2, rsSurrPair2, rsAstral2].join("|") + ")", reUnicode2 = RegExp(rsFitz2 + "(?=" + rsFitz2 + ")|" + rsSymbol2 + rsSeq2, "g");
|
|
1850
|
+
function unicodeSize(string2) {
|
|
1851
|
+
for (var result = reUnicode2.lastIndex = 0; reUnicode2.test(string2); )
|
|
1852
|
+
++result;
|
|
1853
|
+
return result;
|
|
1854
|
+
}
|
|
1855
|
+
var unicodeSize_default = unicodeSize;
|
|
1856
|
+
|
|
1857
|
+
// ../../node_modules/lodash-es/_stringSize.js
|
|
1858
|
+
function stringSize(string2) {
|
|
1859
|
+
return hasUnicode_default(string2) ? unicodeSize_default(string2) : asciiSize_default(string2);
|
|
1860
|
+
}
|
|
1861
|
+
var stringSize_default = stringSize;
|
|
1862
|
+
|
|
1863
|
+
// ../../node_modules/lodash-es/_createPadding.js
|
|
1864
|
+
var nativeCeil = Math.ceil;
|
|
1865
|
+
function createPadding(length, chars) {
|
|
1866
|
+
chars = chars === void 0 ? " " : baseToString_default(chars);
|
|
1867
|
+
var charsLength = chars.length;
|
|
1868
|
+
if (charsLength < 2)
|
|
1869
|
+
return charsLength ? baseRepeat_default(chars, length) : chars;
|
|
1870
|
+
var result = baseRepeat_default(chars, nativeCeil(length / stringSize_default(chars)));
|
|
1871
|
+
return hasUnicode_default(chars) ? castSlice_default(stringToArray_default(result), 0, length).join("") : result.slice(0, length);
|
|
1872
|
+
}
|
|
1873
|
+
var createPadding_default = createPadding;
|
|
1874
|
+
|
|
1875
|
+
// ../../node_modules/lodash-es/padStart.js
|
|
1876
|
+
function padStart(string2, length, chars) {
|
|
1877
|
+
string2 = toString_default(string2), length = toInteger_default(length);
|
|
1878
|
+
var strLength = length ? stringSize_default(string2) : 0;
|
|
1879
|
+
return length && strLength < length ? createPadding_default(length - strLength, chars) + string2 : string2;
|
|
1880
|
+
}
|
|
1881
|
+
var padStart_default = padStart;
|
|
1882
|
+
|
|
1883
|
+
// ../../node_modules/lodash-es/unset.js
|
|
1884
|
+
function unset(object, path) {
|
|
1885
|
+
return object == null ? !0 : baseUnset_default(object, path);
|
|
1886
|
+
}
|
|
1887
|
+
var unset_default = unset;
|
|
1888
|
+
|
|
1889
|
+
// src/utils/keyframeUtils.ts
|
|
1890
|
+
var getSortedKeyframes = (keyframes) => {
|
|
1891
|
+
let sorted = Object.values(
|
|
1892
|
+
keyframes.byId
|
|
1893
|
+
);
|
|
1894
|
+
return sorted.sort((a, b) => a.position - b.position), cloneDeep_default(sorted);
|
|
1895
|
+
}, getSortedKeyframesCached = (0, import_memoizeFn.default)(getSortedKeyframes), fromArray = (keyframes) => {
|
|
1896
|
+
let byId = {}, allIds = {};
|
|
1897
|
+
for (let keyframe of keyframes)
|
|
1898
|
+
byId[keyframe.id] = keyframe, allIds[keyframe.id] = !0;
|
|
1899
|
+
return cloneDeep_default({ byId, allIds });
|
|
1900
|
+
}, fromSortedKeyframesCached = (0, import_memoizeFn.default)(fromArray);
|
|
1901
|
+
|
|
1902
|
+
// src/sequences/interpolationTripleAtPosition.ts
|
|
1903
|
+
function interpolationTripleAtPosition(trackP, timeD) {
|
|
1904
|
+
return (0, import_dataverse2.prism)(() => {
|
|
1905
|
+
let track = (0, import_dataverse2.val)(trackP);
|
|
1906
|
+
return import_dataverse2.prism.memo(
|
|
1907
|
+
"driver",
|
|
1908
|
+
() => track ? track.type === "BasicKeyframedTrack" ? _forKeyframedTrack(track, timeD) : (console.error("Track type not yet supported."), (0, import_dataverse2.prism)(() => {
|
|
1909
|
+
})) : (0, import_dataverse2.prism)(() => {
|
|
1910
|
+
}),
|
|
1911
|
+
[track]
|
|
1912
|
+
).getValue();
|
|
1913
|
+
});
|
|
1914
|
+
}
|
|
1915
|
+
function _forKeyframedTrack(track, timeD) {
|
|
1916
|
+
return (0, import_dataverse2.prism)(() => {
|
|
1917
|
+
let stateRef = import_dataverse2.prism.ref("state", { started: !1 }), state = stateRef.current, time = timeD.getValue();
|
|
1918
|
+
return (!state.started || time < state.validFrom || state.validTo <= time) && (stateRef.current = state = updateState(timeD, track)), state.der.getValue();
|
|
1919
|
+
});
|
|
1920
|
+
}
|
|
1921
|
+
var undefinedConstD = (0, import_dataverse2.prism)(() => {
|
|
1922
|
+
});
|
|
1923
|
+
function updateState(progressionD, track) {
|
|
1924
|
+
let keyframes = getSortedKeyframesCached(track.keyframes), progression = progressionD.getValue();
|
|
1925
|
+
if (keyframes.length === 0)
|
|
1926
|
+
return {
|
|
1927
|
+
started: !0,
|
|
1928
|
+
validFrom: -1 / 0,
|
|
1929
|
+
validTo: 1 / 0,
|
|
1930
|
+
der: undefinedConstD
|
|
1931
|
+
};
|
|
1932
|
+
let currentKeyframeIndex = 0;
|
|
1933
|
+
for (; ; ) {
|
|
1934
|
+
let currentKeyframe = keyframes[currentKeyframeIndex];
|
|
1935
|
+
if (!currentKeyframe)
|
|
1936
|
+
return states.error;
|
|
1937
|
+
let isLastKeyframe = currentKeyframeIndex === keyframes.length - 1;
|
|
1938
|
+
if (progression < currentKeyframe.position)
|
|
1939
|
+
return currentKeyframeIndex === 0 ? states.beforeFirstKeyframe(currentKeyframe) : states.error;
|
|
1940
|
+
if (currentKeyframe.position === progression)
|
|
1941
|
+
return isLastKeyframe ? states.lastKeyframe(currentKeyframe) : states.between(
|
|
1942
|
+
currentKeyframe,
|
|
1943
|
+
keyframes[currentKeyframeIndex + 1],
|
|
1944
|
+
progressionD
|
|
1945
|
+
);
|
|
1946
|
+
if (currentKeyframeIndex === keyframes.length - 1)
|
|
1947
|
+
return states.lastKeyframe(currentKeyframe);
|
|
1948
|
+
{
|
|
1949
|
+
let nextKeyframeIndex = currentKeyframeIndex + 1;
|
|
1950
|
+
if (keyframes[nextKeyframeIndex].position <= progression) {
|
|
1951
|
+
currentKeyframeIndex = nextKeyframeIndex;
|
|
1952
|
+
continue;
|
|
1953
|
+
} else
|
|
1954
|
+
return states.between(
|
|
1955
|
+
currentKeyframe,
|
|
1956
|
+
keyframes[currentKeyframeIndex + 1],
|
|
1957
|
+
progressionD
|
|
1958
|
+
);
|
|
1959
|
+
}
|
|
1960
|
+
}
|
|
1961
|
+
}
|
|
1962
|
+
var states = {
|
|
1963
|
+
beforeFirstKeyframe(kf) {
|
|
1964
|
+
return {
|
|
1965
|
+
started: !0,
|
|
1966
|
+
validFrom: -1 / 0,
|
|
1967
|
+
validTo: kf.position,
|
|
1968
|
+
der: (0, import_dataverse2.prism)(() => ({ left: kf.value, progression: 0 }))
|
|
1969
|
+
};
|
|
1970
|
+
},
|
|
1971
|
+
lastKeyframe(kf) {
|
|
1972
|
+
return {
|
|
1973
|
+
started: !0,
|
|
1974
|
+
validFrom: kf.position,
|
|
1975
|
+
validTo: 1 / 0,
|
|
1976
|
+
der: (0, import_dataverse2.prism)(() => ({ left: kf.value, progression: 0 }))
|
|
1977
|
+
};
|
|
1978
|
+
},
|
|
1979
|
+
between(left, right, progressionD) {
|
|
1980
|
+
if (!left.connectedRight)
|
|
1981
|
+
return {
|
|
1982
|
+
started: !0,
|
|
1983
|
+
validFrom: left.position,
|
|
1984
|
+
validTo: right.position,
|
|
1985
|
+
der: (0, import_dataverse2.prism)(() => ({ left: left.value, progression: 0 }))
|
|
1986
|
+
};
|
|
1987
|
+
let globalProgressionToLocalProgression = (globalProgression) => (globalProgression - left.position) / (right.position - left.position);
|
|
1988
|
+
if (!left.type || left.type === "bezier") {
|
|
1989
|
+
let solver = new import_UnitBezier.default(
|
|
1990
|
+
left.handles[2],
|
|
1991
|
+
left.handles[3],
|
|
1992
|
+
right.handles[0],
|
|
1993
|
+
right.handles[1]
|
|
1994
|
+
), bezierDer = (0, import_dataverse2.prism)(() => {
|
|
1995
|
+
let progression = globalProgressionToLocalProgression(
|
|
1996
|
+
progressionD.getValue()
|
|
1997
|
+
), valueProgression = solver.solveSimple(progression);
|
|
1998
|
+
return {
|
|
1999
|
+
left: left.value,
|
|
2000
|
+
right: right.value,
|
|
2001
|
+
progression: valueProgression
|
|
2002
|
+
};
|
|
2003
|
+
});
|
|
2004
|
+
return {
|
|
2005
|
+
started: !0,
|
|
2006
|
+
validFrom: left.position,
|
|
2007
|
+
validTo: right.position,
|
|
2008
|
+
der: bezierDer
|
|
2009
|
+
};
|
|
2010
|
+
}
|
|
2011
|
+
let holdDer = (0, import_dataverse2.prism)(() => {
|
|
2012
|
+
let progression = globalProgressionToLocalProgression(
|
|
2013
|
+
progressionD.getValue()
|
|
2014
|
+
), valueProgression = Math.floor(progression);
|
|
2015
|
+
return {
|
|
2016
|
+
left: left.value,
|
|
2017
|
+
right: right.value,
|
|
2018
|
+
progression: valueProgression
|
|
2019
|
+
};
|
|
2020
|
+
});
|
|
2021
|
+
return {
|
|
2022
|
+
started: !0,
|
|
2023
|
+
validFrom: left.position,
|
|
2024
|
+
validTo: right.position,
|
|
2025
|
+
der: holdDer
|
|
2026
|
+
};
|
|
2027
|
+
},
|
|
2028
|
+
error: {
|
|
2029
|
+
started: !0,
|
|
2030
|
+
validFrom: -1 / 0,
|
|
2031
|
+
validTo: 1 / 0,
|
|
2032
|
+
der: undefinedConstD
|
|
2033
|
+
}
|
|
2034
|
+
};
|
|
2035
|
+
|
|
2036
|
+
// src/sheetObjects/SheetObject.ts
|
|
2037
|
+
var import_deepMergeWithCache = __toESM(require("@theatre/utils/deepMergeWithCache")), import_pointerDeep = __toESM(require("@theatre/utils/pointerDeep")), import_SimpleCache2 = __toESM(require("@theatre/utils/SimpleCache")), import_valToAtom = require("@theatre/utils/valToAtom"), import_dataverse4 = require("@theatre/dataverse");
|
|
2038
|
+
|
|
2039
|
+
// src/sheetObjects/TheatreSheetObject.ts
|
|
2040
|
+
var import_SimpleCache = __toESM(require("@theatre/utils/SimpleCache")), import_dataverse3 = require("@theatre/dataverse");
|
|
2041
|
+
var KEEP_HOT_FOR_MS = 5 * 1e3, TheatreSheetObject = class {
|
|
2042
|
+
/**
|
|
2043
|
+
* @internal
|
|
2044
|
+
*/
|
|
2045
|
+
constructor(internals) {
|
|
2046
|
+
__publicField(this, "_cache", new import_SimpleCache.default());
|
|
2047
|
+
/** @internal See https://linear.app/theatre/issue/P-217/if-objvalue-is-read-make-sure-its-derivation-remains-hot-for-a-while */
|
|
2048
|
+
__publicField(this, "_keepHotUntapDebounce");
|
|
2049
|
+
setPrivateAPI(this, internals);
|
|
2050
|
+
}
|
|
2051
|
+
get type() {
|
|
2052
|
+
return "Theatre_SheetObject_PublicAPI";
|
|
2053
|
+
}
|
|
2054
|
+
get props() {
|
|
2055
|
+
return privateAPI(this).propsP;
|
|
2056
|
+
}
|
|
2057
|
+
get sheet() {
|
|
2058
|
+
return privateAPI(this).sheet.publicApi;
|
|
2059
|
+
}
|
|
2060
|
+
get project() {
|
|
2061
|
+
return privateAPI(this).sheet.project.publicApi;
|
|
2062
|
+
}
|
|
2063
|
+
get address() {
|
|
2064
|
+
return __spreadValues({}, privateAPI(this).address);
|
|
2065
|
+
}
|
|
2066
|
+
_valuesPrism() {
|
|
2067
|
+
return this._cache.get("_valuesPrism", () => {
|
|
2068
|
+
let sheetObject = privateAPI(this);
|
|
2069
|
+
return (0, import_dataverse3.prism)(() => (0, import_dataverse3.val)(sheetObject.getValues().getValue()));
|
|
2070
|
+
});
|
|
2071
|
+
}
|
|
2072
|
+
onValuesChange(fn, rafDriver) {
|
|
2073
|
+
return onChange(this._valuesPrism(), fn, rafDriver);
|
|
2074
|
+
}
|
|
2075
|
+
// internal: Make the deviration keepHot if directly read
|
|
2076
|
+
get value() {
|
|
2077
|
+
let der = this._valuesPrism();
|
|
2078
|
+
if (KEEP_HOT_FOR_MS != null) {
|
|
2079
|
+
if (!der.isHot) {
|
|
2080
|
+
this._keepHotUntapDebounce != null && this._keepHotUntapDebounce.flush();
|
|
2081
|
+
let untap = der.keepHot();
|
|
2082
|
+
this._keepHotUntapDebounce = debounce_default(() => {
|
|
2083
|
+
untap(), this._keepHotUntapDebounce = void 0;
|
|
2084
|
+
}, KEEP_HOT_FOR_MS);
|
|
2085
|
+
}
|
|
2086
|
+
this._keepHotUntapDebounce && this._keepHotUntapDebounce();
|
|
2087
|
+
}
|
|
2088
|
+
return der.getValue();
|
|
2089
|
+
}
|
|
2090
|
+
set initialValue(val9) {
|
|
2091
|
+
privateAPI(this).setInitialValue(val9);
|
|
2092
|
+
}
|
|
2093
|
+
};
|
|
2094
|
+
|
|
2095
|
+
// src/propTypes/utils.ts
|
|
2096
|
+
var utils_exports = {};
|
|
2097
|
+
__export(utils_exports, {
|
|
2098
|
+
compoundHasSimpleDescendants: () => compoundHasSimpleDescendants,
|
|
2099
|
+
forEachPropDeep: () => forEachPropDeep,
|
|
2100
|
+
getPropConfigByPath: () => getPropConfigByPath,
|
|
2101
|
+
isPropConfSequencable: () => isPropConfSequencable,
|
|
2102
|
+
isPropConfigComposite: () => isPropConfigComposite,
|
|
2103
|
+
iteratePropType: () => iteratePropType,
|
|
2104
|
+
valueInProp: () => valueInProp
|
|
2105
|
+
});
|
|
2106
|
+
var import_memoizeFn2 = __toESM(require("@theatre/utils/memoizeFn"));
|
|
2107
|
+
function forEachPropDeep(m, fn, startingPath = []) {
|
|
2108
|
+
if (typeof m == "object" && m) {
|
|
2109
|
+
if (isImage(m) || isRGBA(m)) {
|
|
2110
|
+
fn(m, startingPath);
|
|
2111
|
+
return;
|
|
2112
|
+
}
|
|
2113
|
+
for (let [key, value] of Object.entries(m))
|
|
2114
|
+
forEachPropDeep(value, fn, [...startingPath, key]);
|
|
2115
|
+
} else {
|
|
2116
|
+
if (m == null)
|
|
2117
|
+
return;
|
|
2118
|
+
fn(m, startingPath);
|
|
2119
|
+
}
|
|
2120
|
+
}
|
|
2121
|
+
var isImage = (value) => typeof value == "object" && value !== null && Object.hasOwnProperty.call(value, "type") && // @ts-ignore
|
|
2122
|
+
value.type === "image" && Object.hasOwnProperty.call(value, "id") && // @ts-ignore
|
|
2123
|
+
typeof value.id == "string" && // @ts-ignore
|
|
2124
|
+
value.id !== "", isRGBA = (value) => typeof value == "object" && value !== null && Object.hasOwnProperty.call(value, "r") && Object.hasOwnProperty.call(value, "g") && Object.hasOwnProperty.call(value, "b") && Object.hasOwnProperty.call(value, "a") && // @ts-ignore
|
|
2125
|
+
typeof value.r == "number" && // @ts-ignore
|
|
2126
|
+
typeof value.g == "number" && // @ts-ignore
|
|
2127
|
+
typeof value.b == "number" && // @ts-ignore
|
|
2128
|
+
typeof value.a == "number";
|
|
2129
|
+
function isPropConfigComposite(c) {
|
|
2130
|
+
return c.type === "compound" || c.type === "enum";
|
|
2131
|
+
}
|
|
2132
|
+
function getPropConfigByPath(parentConf, path) {
|
|
2133
|
+
if (!parentConf)
|
|
2134
|
+
return;
|
|
2135
|
+
let [key, ...rest] = path;
|
|
2136
|
+
if (key === void 0)
|
|
2137
|
+
return parentConf;
|
|
2138
|
+
if (!isPropConfigComposite(parentConf))
|
|
2139
|
+
return;
|
|
2140
|
+
let sub = parentConf.type === "enum" ? parentConf.cases[key] : parentConf.props[key];
|
|
2141
|
+
return getPropConfigByPath(sub, rest);
|
|
2142
|
+
}
|
|
2143
|
+
function valueInProp(value, propConfig) {
|
|
2144
|
+
let sanitizedVal = propConfig.deserializeAndSanitize(value);
|
|
2145
|
+
return sanitizedVal === void 0 ? propConfig.default : sanitizedVal;
|
|
2146
|
+
}
|
|
2147
|
+
function isPropConfSequencable(conf) {
|
|
2148
|
+
return !isPropConfigComposite(conf);
|
|
2149
|
+
}
|
|
2150
|
+
var compoundHasSimpleDescendants = (0, import_memoizeFn2.default)(
|
|
2151
|
+
(conf) => {
|
|
2152
|
+
if (conf.type === "enum")
|
|
2153
|
+
throw new Error("Not implemented yet for enums");
|
|
2154
|
+
for (let key in conf.props) {
|
|
2155
|
+
let subConf = conf.props[key];
|
|
2156
|
+
if (isPropConfigComposite(subConf)) {
|
|
2157
|
+
if (compoundHasSimpleDescendants(subConf))
|
|
2158
|
+
return !0;
|
|
2159
|
+
} else
|
|
2160
|
+
return !0;
|
|
2161
|
+
}
|
|
2162
|
+
return !1;
|
|
2163
|
+
}
|
|
2164
|
+
);
|
|
2165
|
+
function* iteratePropType(conf, pathPrefix) {
|
|
2166
|
+
if (conf.type === "compound")
|
|
2167
|
+
for (let key in conf.props)
|
|
2168
|
+
yield* __yieldStar(iteratePropType(conf.props[key], [
|
|
2169
|
+
...pathPrefix,
|
|
2170
|
+
key
|
|
2171
|
+
]));
|
|
2172
|
+
else {
|
|
2173
|
+
if (conf.type === "enum")
|
|
2174
|
+
throw new Error("Not implemented yet");
|
|
2175
|
+
return yield { path: pathPrefix, conf };
|
|
2176
|
+
}
|
|
2177
|
+
}
|
|
2178
|
+
|
|
2179
|
+
// src/sheetObjects/SheetObject.ts
|
|
2180
|
+
var SheetObject = class {
|
|
2181
|
+
constructor(sheet, template, nativeObject) {
|
|
2182
|
+
this.sheet = sheet;
|
|
2183
|
+
this.template = template;
|
|
2184
|
+
this.nativeObject = nativeObject;
|
|
2185
|
+
__publicField(this, "$$isPointerToPrismProvider", !0);
|
|
2186
|
+
__publicField(this, "address");
|
|
2187
|
+
__publicField(this, "publicApi");
|
|
2188
|
+
__publicField(this, "_initialValue", new import_dataverse4.Atom({}));
|
|
2189
|
+
__publicField(this, "_cache", new import_SimpleCache2.default());
|
|
2190
|
+
this.address = __spreadProps(__spreadValues({}, template.address), {
|
|
2191
|
+
sheetInstanceId: sheet.address.sheetInstanceId
|
|
2192
|
+
}), this.publicApi = new TheatreSheetObject(this);
|
|
2193
|
+
}
|
|
2194
|
+
get type() {
|
|
2195
|
+
return "Theatre_SheetObject";
|
|
2196
|
+
}
|
|
2197
|
+
getValues() {
|
|
2198
|
+
return this._cache.get(
|
|
2199
|
+
"getValues()",
|
|
2200
|
+
() => (0, import_dataverse4.prism)(() => {
|
|
2201
|
+
let defaults = (0, import_dataverse4.val)(this.template.getDefaultValues()), initial = (0, import_dataverse4.val)(this._initialValue.pointer), withInitialCache = import_dataverse4.prism.memo(
|
|
2202
|
+
"withInitialCache",
|
|
2203
|
+
() => /* @__PURE__ */ new WeakMap(),
|
|
2204
|
+
[]
|
|
2205
|
+
), withInitial = (0, import_deepMergeWithCache.default)(
|
|
2206
|
+
defaults,
|
|
2207
|
+
initial,
|
|
2208
|
+
withInitialCache
|
|
2209
|
+
), statics = (0, import_dataverse4.val)(this.template.getStaticValues()), withStaticsCache = import_dataverse4.prism.memo(
|
|
2210
|
+
"withStatics",
|
|
2211
|
+
() => /* @__PURE__ */ new WeakMap(),
|
|
2212
|
+
[]
|
|
2213
|
+
), final = (0, import_deepMergeWithCache.default)(
|
|
2214
|
+
withInitial,
|
|
2215
|
+
statics,
|
|
2216
|
+
withStaticsCache
|
|
2217
|
+
), sequenced;
|
|
2218
|
+
{
|
|
2219
|
+
let pointerToSequencedValuesD = import_dataverse4.prism.memo(
|
|
2220
|
+
"seq",
|
|
2221
|
+
() => this.getSequencedValues(),
|
|
2222
|
+
[]
|
|
2223
|
+
), withSeqsCache = import_dataverse4.prism.memo(
|
|
2224
|
+
"withSeqsCache",
|
|
2225
|
+
() => /* @__PURE__ */ new WeakMap(),
|
|
2226
|
+
[]
|
|
2227
|
+
);
|
|
2228
|
+
sequenced = (0, import_dataverse4.val)((0, import_dataverse4.val)(pointerToSequencedValuesD)), final = (0, import_deepMergeWithCache.default)(final, sequenced, withSeqsCache);
|
|
2229
|
+
}
|
|
2230
|
+
return (0, import_valToAtom.valToAtom)("finalAtom", final).pointer;
|
|
2231
|
+
})
|
|
2232
|
+
);
|
|
2233
|
+
}
|
|
2234
|
+
getValueByPointer(pointer3) {
|
|
2235
|
+
let allValuesP = (0, import_dataverse4.val)(this.getValues()), { path } = (0, import_dataverse4.getPointerParts)(pointer3);
|
|
2236
|
+
return (0, import_dataverse4.val)(
|
|
2237
|
+
(0, import_pointerDeep.default)(allValuesP, path)
|
|
2238
|
+
);
|
|
2239
|
+
}
|
|
2240
|
+
pointerToPrism(pointer3) {
|
|
2241
|
+
let { path } = (0, import_dataverse4.getPointerParts)(pointer3);
|
|
2242
|
+
return (0, import_dataverse4.prism)(() => {
|
|
2243
|
+
let allValuesP = (0, import_dataverse4.val)(this.getValues());
|
|
2244
|
+
return (0, import_dataverse4.val)((0, import_pointerDeep.default)(allValuesP, path));
|
|
2245
|
+
});
|
|
2246
|
+
}
|
|
2247
|
+
/**
|
|
2248
|
+
* Returns values of props that are sequenced.
|
|
2249
|
+
*/
|
|
2250
|
+
getSequencedValues() {
|
|
2251
|
+
return (0, import_dataverse4.prism)(() => {
|
|
2252
|
+
let tracksToProcessD = import_dataverse4.prism.memo(
|
|
2253
|
+
"tracksToProcess",
|
|
2254
|
+
() => this.template.getArrayOfValidSequenceTracks(),
|
|
2255
|
+
[]
|
|
2256
|
+
), tracksToProcess = (0, import_dataverse4.val)(tracksToProcessD), valsAtom = new import_dataverse4.Atom({}), config = (0, import_dataverse4.val)(this.template.configPointer);
|
|
2257
|
+
return import_dataverse4.prism.effect(
|
|
2258
|
+
"processTracks",
|
|
2259
|
+
() => {
|
|
2260
|
+
let untaps = [];
|
|
2261
|
+
for (let { trackId, pathToProp } of tracksToProcess) {
|
|
2262
|
+
let pr = this._trackIdToPrism(trackId), propConfig = getPropConfigByPath(
|
|
2263
|
+
config,
|
|
2264
|
+
pathToProp
|
|
2265
|
+
), deserializeAndSanitize = propConfig.deserializeAndSanitize, interpolate = propConfig.interpolate, updateSequenceValueFromItsPrism = () => {
|
|
2266
|
+
let triple = pr.getValue();
|
|
2267
|
+
if (!triple)
|
|
2268
|
+
return valsAtom.setByPointer(
|
|
2269
|
+
(p) => (0, import_pointerDeep.default)(p, pathToProp),
|
|
2270
|
+
void 0
|
|
2271
|
+
);
|
|
2272
|
+
let leftDeserialized = deserializeAndSanitize(triple.left), left = leftDeserialized === void 0 ? propConfig.default : leftDeserialized;
|
|
2273
|
+
if (triple.right === void 0)
|
|
2274
|
+
return valsAtom.setByPointer(
|
|
2275
|
+
(p) => (0, import_pointerDeep.default)(p, pathToProp),
|
|
2276
|
+
left
|
|
2277
|
+
);
|
|
2278
|
+
let rightDeserialized = deserializeAndSanitize(triple.right), right = rightDeserialized === void 0 ? propConfig.default : rightDeserialized;
|
|
2279
|
+
return valsAtom.setByPointer(
|
|
2280
|
+
(p) => (0, import_pointerDeep.default)(p, pathToProp),
|
|
2281
|
+
interpolate(left, right, triple.progression)
|
|
2282
|
+
);
|
|
2283
|
+
}, untap = pr.onStale(updateSequenceValueFromItsPrism);
|
|
2284
|
+
updateSequenceValueFromItsPrism(), untaps.push(untap);
|
|
2285
|
+
}
|
|
2286
|
+
return () => {
|
|
2287
|
+
for (let untap of untaps)
|
|
2288
|
+
untap();
|
|
2289
|
+
};
|
|
2290
|
+
},
|
|
2291
|
+
[config, ...tracksToProcess]
|
|
2292
|
+
), valsAtom.pointer;
|
|
2293
|
+
});
|
|
2294
|
+
}
|
|
2295
|
+
_trackIdToPrism(trackId) {
|
|
2296
|
+
let trackP = this.template.project.pointers.historic.sheetsById[this.address.sheetId].sequence.tracksByObject[this.address.objectKey].trackData[trackId], timeD = this.sheet.getSequence().positionPrism;
|
|
2297
|
+
return interpolationTripleAtPosition(trackP, timeD);
|
|
2298
|
+
}
|
|
2299
|
+
get propsP() {
|
|
2300
|
+
return this._cache.get(
|
|
2301
|
+
"propsP",
|
|
2302
|
+
() => (0, import_dataverse4.pointer)({ root: this, path: [] })
|
|
2303
|
+
);
|
|
2304
|
+
}
|
|
2305
|
+
validateValue(pointer3, value) {
|
|
2306
|
+
}
|
|
2307
|
+
setInitialValue(val9) {
|
|
2308
|
+
this.validateValue(this.propsP, val9), this._initialValue.set(val9);
|
|
2309
|
+
}
|
|
2310
|
+
};
|
|
2311
|
+
|
|
2312
|
+
// src/sheetObjects/getOrderingOfPropTypeConfig.ts
|
|
2313
|
+
var cache = /* @__PURE__ */ new WeakMap();
|
|
2314
|
+
function getOrderingOfPropTypeConfig(config) {
|
|
2315
|
+
let existing = cache.get(config);
|
|
2316
|
+
if (existing)
|
|
2317
|
+
return existing;
|
|
2318
|
+
let map = /* @__PURE__ */ new Map();
|
|
2319
|
+
return cache.set(config, map), iterateOnCompound([], config, map), map;
|
|
2320
|
+
}
|
|
2321
|
+
function iterateOnCompound(path, config, map) {
|
|
2322
|
+
for (let [key, subConf] of Object.entries(config.props))
|
|
2323
|
+
if (!isPropConfigComposite(subConf)) {
|
|
2324
|
+
let subPath = [...path, key];
|
|
2325
|
+
map.set(JSON.stringify(subPath), map.size), iterateOnAny(subPath, subConf, map);
|
|
2326
|
+
}
|
|
2327
|
+
for (let [key, subConf] of Object.entries(config.props))
|
|
2328
|
+
if (isPropConfigComposite(subConf)) {
|
|
2329
|
+
let subPath = [...path, key];
|
|
2330
|
+
map.set(JSON.stringify(subPath), map.size), iterateOnAny(subPath, subConf, map);
|
|
2331
|
+
}
|
|
2332
|
+
}
|
|
2333
|
+
function iterateOnAny(path, config, map) {
|
|
2334
|
+
if (config.type === "compound")
|
|
2335
|
+
iterateOnCompound(path, config, map);
|
|
2336
|
+
else {
|
|
2337
|
+
if (config.type === "enum")
|
|
2338
|
+
throw new Error("Enums aren't supported yet");
|
|
2339
|
+
map.set(JSON.stringify(path), map.size);
|
|
2340
|
+
}
|
|
2341
|
+
}
|
|
2342
|
+
|
|
2343
|
+
// src/sheetObjects/SheetObjectTemplate.ts
|
|
2344
|
+
function isObjectEmpty(obj) {
|
|
2345
|
+
return typeof obj == "object" && obj !== null && Object.keys(obj).length === 0;
|
|
2346
|
+
}
|
|
2347
|
+
var SheetObjectTemplate = class {
|
|
2348
|
+
constructor(sheetTemplate, objectKey, nativeObject, config, _temp_actions) {
|
|
2349
|
+
this.sheetTemplate = sheetTemplate;
|
|
2350
|
+
__publicField(this, "address");
|
|
2351
|
+
__publicField(this, "type", "Theatre_SheetObjectTemplate");
|
|
2352
|
+
__publicField(this, "_config");
|
|
2353
|
+
__publicField(this, "_temp_actions_atom");
|
|
2354
|
+
__publicField(this, "_cache", new import_SimpleCache3.default());
|
|
2355
|
+
__publicField(this, "project");
|
|
2356
|
+
__publicField(this, "pointerToSheetState");
|
|
2357
|
+
__publicField(this, "pointerToStaticOverrides");
|
|
2358
|
+
this.address = __spreadProps(__spreadValues({}, sheetTemplate.address), { objectKey }), this._config = new import_dataverse5.Atom(config), this._temp_actions_atom = new import_dataverse5.Atom(_temp_actions), this.project = sheetTemplate.project, this.pointerToSheetState = this.sheetTemplate.project.pointers.historic.sheetsById[this.address.sheetId], this.pointerToStaticOverrides = this.pointerToSheetState.staticOverrides.byObject[this.address.objectKey];
|
|
2359
|
+
}
|
|
2360
|
+
get staticConfig() {
|
|
2361
|
+
return this._config.get();
|
|
2362
|
+
}
|
|
2363
|
+
get configPointer() {
|
|
2364
|
+
return this._config.pointer;
|
|
2365
|
+
}
|
|
2366
|
+
get _temp_actions() {
|
|
2367
|
+
return this._temp_actions_atom.get();
|
|
2368
|
+
}
|
|
2369
|
+
get _temp_actionsPointer() {
|
|
2370
|
+
return this._temp_actions_atom.pointer;
|
|
2371
|
+
}
|
|
2372
|
+
createInstance(sheet, nativeObject, config) {
|
|
2373
|
+
return this._config.set(config), new SheetObject(sheet, this, nativeObject);
|
|
2374
|
+
}
|
|
2375
|
+
reconfigure(config) {
|
|
2376
|
+
this._config.set(config);
|
|
2377
|
+
}
|
|
2378
|
+
/**
|
|
2379
|
+
* The `actions` api is temporary until we implement events.
|
|
2380
|
+
*/
|
|
2381
|
+
_temp_setActions(actions) {
|
|
2382
|
+
this._temp_actions_atom.set(actions);
|
|
2383
|
+
}
|
|
2384
|
+
/**
|
|
2385
|
+
* Returns the default values (all defaults are read from the config)
|
|
2386
|
+
*/
|
|
2387
|
+
getDefaultValues() {
|
|
2388
|
+
return this._cache.get(
|
|
2389
|
+
"getDefaultValues()",
|
|
2390
|
+
() => (0, import_dataverse5.prism)(() => {
|
|
2391
|
+
let config = (0, import_dataverse5.val)(this.configPointer);
|
|
2392
|
+
return getPropDefaultsOfSheetObject(config);
|
|
2393
|
+
})
|
|
2394
|
+
);
|
|
2395
|
+
}
|
|
2396
|
+
/**
|
|
2397
|
+
* Returns values that are set statically (ie, not sequenced, and not defaults)
|
|
2398
|
+
*/
|
|
2399
|
+
getStaticValues() {
|
|
2400
|
+
return this._cache.get(
|
|
2401
|
+
"getStaticValues",
|
|
2402
|
+
() => (0, import_dataverse5.prism)(() => {
|
|
2403
|
+
var _a;
|
|
2404
|
+
let json = (_a = (0, import_dataverse5.val)(this.pointerToStaticOverrides)) != null ? _a : {};
|
|
2405
|
+
return (0, import_dataverse5.val)(this.configPointer).deserializeAndSanitize(json) || {};
|
|
2406
|
+
})
|
|
2407
|
+
);
|
|
2408
|
+
}
|
|
2409
|
+
/**
|
|
2410
|
+
* Filters through the sequenced tracks and returns those tracks who are valid
|
|
2411
|
+
* according to the object's prop types, then sorted in the same order as the config
|
|
2412
|
+
*
|
|
2413
|
+
* Returns an array.
|
|
2414
|
+
*/
|
|
2415
|
+
getArrayOfValidSequenceTracks() {
|
|
2416
|
+
return this._cache.get(
|
|
2417
|
+
"getArrayOfValidSequenceTracks",
|
|
2418
|
+
() => (0, import_dataverse5.prism)(() => {
|
|
2419
|
+
let pointerToSheetState = this.project.pointers.historic.sheetsById[this.address.sheetId], trackIdByPropPath = (0, import_dataverse5.val)(
|
|
2420
|
+
pointerToSheetState.sequence.tracksByObject[this.address.objectKey].trackIdByPropPath
|
|
2421
|
+
);
|
|
2422
|
+
if (!trackIdByPropPath)
|
|
2423
|
+
return import_utils3.emptyArray;
|
|
2424
|
+
let arrayOfIds = [];
|
|
2425
|
+
if (!trackIdByPropPath)
|
|
2426
|
+
return import_utils3.emptyArray;
|
|
2427
|
+
let objectConfig = (0, import_dataverse5.val)(this.configPointer), _entries = Object.entries(trackIdByPropPath);
|
|
2428
|
+
for (let [pathToPropInString, trackId] of _entries) {
|
|
2429
|
+
let pathToProp = parsePathToProp(pathToPropInString);
|
|
2430
|
+
if (!pathToProp)
|
|
2431
|
+
continue;
|
|
2432
|
+
let propConfig = getPropConfigByPath(objectConfig, pathToProp);
|
|
2433
|
+
propConfig && isPropConfSequencable(propConfig) && arrayOfIds.push({ pathToProp, trackId });
|
|
2434
|
+
}
|
|
2435
|
+
let mapping = getOrderingOfPropTypeConfig(objectConfig);
|
|
2436
|
+
return arrayOfIds.sort((a, b) => {
|
|
2437
|
+
let pathToPropA = a.pathToProp, pathToPropB = b.pathToProp, indexA = mapping.get(JSON.stringify(pathToPropA)), indexB = mapping.get(JSON.stringify(pathToPropB));
|
|
2438
|
+
return indexA > indexB ? 1 : -1;
|
|
2439
|
+
}), arrayOfIds.length === 0 ? import_utils3.emptyArray : arrayOfIds;
|
|
2440
|
+
})
|
|
2441
|
+
);
|
|
2442
|
+
}
|
|
2443
|
+
/**
|
|
2444
|
+
* Filters through the sequenced tracks those tracks that are valid
|
|
2445
|
+
* according to the object's prop types.
|
|
2446
|
+
*
|
|
2447
|
+
* Returns a map.
|
|
2448
|
+
*
|
|
2449
|
+
* Not available in core.
|
|
2450
|
+
*/
|
|
2451
|
+
getMapOfValidSequenceTracks_forStudio() {
|
|
2452
|
+
return this._cache.get(
|
|
2453
|
+
"getMapOfValidSequenceTracks_forStudio",
|
|
2454
|
+
() => (0, import_dataverse5.prism)(() => {
|
|
2455
|
+
let arr = (0, import_dataverse5.val)(this.getArrayOfValidSequenceTracks()), map = {};
|
|
2456
|
+
for (let { pathToProp, trackId } of arr)
|
|
2457
|
+
set_default(map, pathToProp, trackId);
|
|
2458
|
+
return map;
|
|
2459
|
+
})
|
|
2460
|
+
);
|
|
2461
|
+
}
|
|
2462
|
+
/**
|
|
2463
|
+
* @returns The static overrides that are not sequenced. Returns undefined if there are no static overrides,
|
|
2464
|
+
* or if all those static overrides are sequenced.
|
|
2465
|
+
*/
|
|
2466
|
+
getStaticButNotSequencedOverrides() {
|
|
2467
|
+
return this._cache.get(
|
|
2468
|
+
"getStaticButNotSequencedOverrides",
|
|
2469
|
+
() => (0, import_dataverse5.prism)(() => {
|
|
2470
|
+
let staticOverrides = (0, import_dataverse5.val)(this.getStaticValues()), arrayOfValidSequenceTracks = (0, import_dataverse5.val)(
|
|
2471
|
+
this.getArrayOfValidSequenceTracks()
|
|
2472
|
+
), staticButNotSequencedOverrides = cloneDeep_default(staticOverrides);
|
|
2473
|
+
for (let { pathToProp } of arrayOfValidSequenceTracks) {
|
|
2474
|
+
unset_default(staticButNotSequencedOverrides, pathToProp);
|
|
2475
|
+
let parentPath = pathToProp.slice(0, -1);
|
|
2476
|
+
for (; parentPath.length > 0; ) {
|
|
2477
|
+
let parentValue = (0, import_getDeep.default)(
|
|
2478
|
+
staticButNotSequencedOverrides,
|
|
2479
|
+
parentPath
|
|
2480
|
+
);
|
|
2481
|
+
if (!isObjectEmpty(parentValue))
|
|
2482
|
+
break;
|
|
2483
|
+
unset_default(staticButNotSequencedOverrides, parentPath), parentPath = parentPath.slice(0, -1);
|
|
2484
|
+
}
|
|
2485
|
+
}
|
|
2486
|
+
if (!isObjectEmpty(staticButNotSequencedOverrides))
|
|
2487
|
+
return staticButNotSequencedOverrides;
|
|
2488
|
+
})
|
|
2489
|
+
);
|
|
2490
|
+
}
|
|
2491
|
+
getDefaultsAtPointer(pointer3) {
|
|
2492
|
+
let { path } = (0, import_dataverse5.getPointerParts)(pointer3), defaults = this.getDefaultValues().getValue();
|
|
2493
|
+
return (0, import_getDeep.default)(defaults, path);
|
|
2494
|
+
}
|
|
2495
|
+
};
|
|
2496
|
+
function parsePathToProp(pathToPropInString) {
|
|
2497
|
+
try {
|
|
2498
|
+
return JSON.parse(pathToPropInString);
|
|
2499
|
+
} catch (e) {
|
|
2500
|
+
console.warn(
|
|
2501
|
+
"property ".concat(JSON.stringify(
|
|
2502
|
+
pathToPropInString
|
|
2503
|
+
), " cannot be parsed. Skipping.")
|
|
2504
|
+
);
|
|
2505
|
+
return;
|
|
2506
|
+
}
|
|
2507
|
+
}
|
|
2508
|
+
|
|
2509
|
+
// src/sheets/SheetTemplate.ts
|
|
2510
|
+
var import_dataverse14 = require("@theatre/dataverse");
|
|
2511
|
+
|
|
2512
|
+
// src/sequences/Sequence.ts
|
|
2513
|
+
var import_pathToProp = require("@theatre/utils/pathToProp"), import_didYouMean = require("@theatre/utils/didYouMean"), import_errors2 = require("@theatre/utils/errors"), import_dataverse9 = require("@theatre/dataverse"), import_dataverse10 = require("@theatre/dataverse"), import_dataverse11 = require("@theatre/dataverse"), import_dataverse12 = require("@theatre/dataverse");
|
|
2514
|
+
|
|
2515
|
+
// src/sequences/playbackControllers/DefaultPlaybackController.ts
|
|
2516
|
+
var import_defer = require("@theatre/utils/defer"), import_noop = __toESM(require("@theatre/utils/noop")), import_dataverse6 = require("@theatre/dataverse");
|
|
2517
|
+
var DefaultPlaybackController = class {
|
|
2518
|
+
constructor() {
|
|
2519
|
+
__publicField(this, "_stopPlayCallback", import_noop.default);
|
|
2520
|
+
__publicField(this, "_state", new import_dataverse6.Atom({
|
|
2521
|
+
position: 0,
|
|
2522
|
+
playing: !1
|
|
2523
|
+
}));
|
|
2524
|
+
__publicField(this, "statePointer");
|
|
2525
|
+
this.statePointer = this._state.pointer;
|
|
2526
|
+
}
|
|
2527
|
+
destroy() {
|
|
2528
|
+
}
|
|
2529
|
+
pause() {
|
|
2530
|
+
this._stopPlayCallback(), this.playing = !1, this._stopPlayCallback = import_noop.default;
|
|
2531
|
+
}
|
|
2532
|
+
gotoPosition(time) {
|
|
2533
|
+
this._updatePositionInState(time);
|
|
2534
|
+
}
|
|
2535
|
+
_updatePositionInState(time) {
|
|
2536
|
+
this._state.setByPointer((p) => p.position, time);
|
|
2537
|
+
}
|
|
2538
|
+
getCurrentPosition() {
|
|
2539
|
+
return this._state.get().position;
|
|
2540
|
+
}
|
|
2541
|
+
get playing() {
|
|
2542
|
+
return this._state.get().playing;
|
|
2543
|
+
}
|
|
2544
|
+
set playing(playing) {
|
|
2545
|
+
this._state.setByPointer((p) => p.playing, playing);
|
|
2546
|
+
}
|
|
2547
|
+
play(iterationCount, range, rate, direction, ticker) {
|
|
2548
|
+
this.playing && this.pause(), this.playing = !0;
|
|
2549
|
+
let iterationLength = range[1] - range[0];
|
|
2550
|
+
{
|
|
2551
|
+
let startPos = this.getCurrentPosition();
|
|
2552
|
+
startPos < range[0] || startPos > range[1] ? direction === "normal" || direction === "alternate" ? this._updatePositionInState(range[0]) : (direction === "reverse" || direction === "alternateReverse") && this._updatePositionInState(range[1]) : direction === "normal" || direction === "alternate" ? startPos === range[1] && this._updatePositionInState(range[0]) : startPos === range[0] && this._updatePositionInState(range[1]);
|
|
2553
|
+
}
|
|
2554
|
+
let deferred = (0, import_defer.defer)(), initialTickerTime = ticker.time, totalPlaybackLength = iterationLength * iterationCount, initialElapsedPos = this.getCurrentPosition() - range[0];
|
|
2555
|
+
(direction === "reverse" || direction === "alternateReverse") && (initialElapsedPos = range[1] - this.getCurrentPosition());
|
|
2556
|
+
let tick = (currentTickerTime) => {
|
|
2557
|
+
let elapsedTickerTimeInSeconds = Math.max(
|
|
2558
|
+
currentTickerTime - initialTickerTime,
|
|
2559
|
+
0
|
|
2560
|
+
) / 1e3, elapsedPos = Math.min(
|
|
2561
|
+
elapsedTickerTimeInSeconds * rate + initialElapsedPos,
|
|
2562
|
+
totalPlaybackLength
|
|
2563
|
+
);
|
|
2564
|
+
if (elapsedPos !== totalPlaybackLength) {
|
|
2565
|
+
let iterationNumber = Math.floor(elapsedPos / iterationLength), currentIterationPos = elapsedPos / iterationLength % 1 * iterationLength;
|
|
2566
|
+
if (direction !== "normal")
|
|
2567
|
+
if (direction === "reverse")
|
|
2568
|
+
currentIterationPos = iterationLength - currentIterationPos;
|
|
2569
|
+
else {
|
|
2570
|
+
let isCurrentIterationNumberEven = iterationNumber % 2 === 0;
|
|
2571
|
+
direction === "alternate" ? isCurrentIterationNumberEven || (currentIterationPos = iterationLength - currentIterationPos) : isCurrentIterationNumberEven && (currentIterationPos = iterationLength - currentIterationPos);
|
|
2572
|
+
}
|
|
2573
|
+
this._updatePositionInState(currentIterationPos + range[0]), requestNextTick();
|
|
2574
|
+
} else {
|
|
2575
|
+
if (direction === "normal")
|
|
2576
|
+
this._updatePositionInState(range[1]);
|
|
2577
|
+
else if (direction === "reverse")
|
|
2578
|
+
this._updatePositionInState(range[0]);
|
|
2579
|
+
else {
|
|
2580
|
+
let isLastIterationEven = (iterationCount - 1) % 2 === 0;
|
|
2581
|
+
direction === "alternate" ? isLastIterationEven ? this._updatePositionInState(range[1]) : this._updatePositionInState(range[0]) : isLastIterationEven ? this._updatePositionInState(range[0]) : this._updatePositionInState(range[1]);
|
|
2582
|
+
}
|
|
2583
|
+
this.playing = !1, deferred.resolve(!0);
|
|
2584
|
+
}
|
|
2585
|
+
};
|
|
2586
|
+
this._stopPlayCallback = () => {
|
|
2587
|
+
ticker.offThisOrNextTick(tick), ticker.offNextTick(tick), this.playing && deferred.resolve(!1);
|
|
2588
|
+
};
|
|
2589
|
+
let requestNextTick = () => ticker.onNextTick(tick);
|
|
2590
|
+
return ticker.onThisOrNextTick(tick), deferred.promise;
|
|
2591
|
+
}
|
|
2592
|
+
playDynamicRange(rangeD, ticker) {
|
|
2593
|
+
this.playing && this.pause(), this.playing = !0;
|
|
2594
|
+
let deferred = (0, import_defer.defer)(), untapFromRangeD = rangeD.keepHot();
|
|
2595
|
+
deferred.promise.then(untapFromRangeD, untapFromRangeD);
|
|
2596
|
+
let lastTickerTime = ticker.time, tick = (currentTickerTime) => {
|
|
2597
|
+
let elapsedSinceLastTick = Math.max(
|
|
2598
|
+
currentTickerTime - lastTickerTime,
|
|
2599
|
+
0
|
|
2600
|
+
);
|
|
2601
|
+
lastTickerTime = currentTickerTime;
|
|
2602
|
+
let elapsedSinceLastTickInSeconds = elapsedSinceLastTick / 1e3, lastPosition = this.getCurrentPosition(), range = rangeD.getValue();
|
|
2603
|
+
if (lastPosition < range[0] || lastPosition > range[1])
|
|
2604
|
+
this.gotoPosition(range[0]);
|
|
2605
|
+
else {
|
|
2606
|
+
let newPosition = lastPosition + elapsedSinceLastTickInSeconds;
|
|
2607
|
+
newPosition > range[1] && (newPosition = range[0] + (newPosition - range[1])), this.gotoPosition(newPosition);
|
|
2608
|
+
}
|
|
2609
|
+
requestNextTick();
|
|
2610
|
+
};
|
|
2611
|
+
this._stopPlayCallback = () => {
|
|
2612
|
+
ticker.offThisOrNextTick(tick), ticker.offNextTick(tick), deferred.resolve(!1);
|
|
2613
|
+
};
|
|
2614
|
+
let requestNextTick = () => ticker.onNextTick(tick);
|
|
2615
|
+
return ticker.onThisOrNextTick(tick), deferred.promise;
|
|
2616
|
+
}
|
|
2617
|
+
};
|
|
2618
|
+
|
|
2619
|
+
// src/sequences/TheatreSequence.ts
|
|
2620
|
+
var import_defer3 = require("@theatre/utils/defer");
|
|
2621
|
+
|
|
2622
|
+
// src/sequences/playbackControllers/AudioPlaybackController.ts
|
|
2623
|
+
var import_defer2 = require("@theatre/utils/defer"), import_errors = require("@theatre/utils/errors"), import_noop2 = __toESM(require("@theatre/utils/noop")), import_dataverse7 = require("@theatre/dataverse");
|
|
2624
|
+
|
|
2625
|
+
// src/globals.ts
|
|
2626
|
+
var globals = {
|
|
2627
|
+
/**
|
|
2628
|
+
* If the schema of the redux store changes in a backwards-incompatible way, then this version number should be incremented.
|
|
2629
|
+
*
|
|
2630
|
+
* While this looks like semver, it is not. There are no patch numbers, so any change in this number is a breaking change.
|
|
2631
|
+
*
|
|
2632
|
+
* However, as long as the schema of the redux store is backwards-compatible, then we don't have to change this number.
|
|
2633
|
+
*
|
|
2634
|
+
* Since the 0.4.0 release, this number has not had to change.
|
|
2635
|
+
*/
|
|
2636
|
+
currentProjectStateDefinitionVersion: "0.4.0"
|
|
2637
|
+
}, globalVariableNames = {
|
|
2638
|
+
StudioBundle: "__TheatreJS_StudioBundle",
|
|
2639
|
+
coreBundle: "__TheatreJS_CoreBundle",
|
|
2640
|
+
notifications: "__TheatreJS_Notifications"
|
|
2641
|
+
};
|
|
2642
|
+
|
|
2643
|
+
// src/utils/notify.ts
|
|
2644
|
+
var createHandler = (type) => (...args) => {
|
|
2645
|
+
var _a;
|
|
2646
|
+
switch (type) {
|
|
2647
|
+
case "success":
|
|
2648
|
+
break;
|
|
2649
|
+
case "info": {
|
|
2650
|
+
console.info(args.slice(0, 2).join("\n"));
|
|
2651
|
+
break;
|
|
2652
|
+
}
|
|
2653
|
+
case "warning": {
|
|
2654
|
+
console.warn(args.slice(0, 2).join("\n"));
|
|
2655
|
+
break;
|
|
2656
|
+
}
|
|
2657
|
+
case "error":
|
|
2658
|
+
}
|
|
2659
|
+
return typeof window < "u" ? (
|
|
2660
|
+
// @ts-ignore
|
|
2661
|
+
(_a = window[globalVariableNames.notifications]) == null ? void 0 : _a.notify[type](...args)
|
|
2662
|
+
) : void 0;
|
|
2663
|
+
}, notify = {
|
|
2664
|
+
warning: createHandler("warning"),
|
|
2665
|
+
success: createHandler("success"),
|
|
2666
|
+
info: createHandler("info"),
|
|
2667
|
+
error: createHandler("error")
|
|
2668
|
+
};
|
|
2669
|
+
typeof window < "u" && (window.addEventListener("error", (e) => {
|
|
2670
|
+
notify.error(
|
|
2671
|
+
"An error occurred",
|
|
2672
|
+
"<pre>".concat(e.message, "</pre>\n\nSee **console** for details.")
|
|
2673
|
+
);
|
|
2674
|
+
}), window.addEventListener("unhandledrejection", (e) => {
|
|
2675
|
+
notify.error(
|
|
2676
|
+
"An error occurred",
|
|
2677
|
+
"<pre>".concat(e.reason, "</pre>\n\nSee **console** for details.")
|
|
2678
|
+
);
|
|
2679
|
+
}));
|
|
2680
|
+
|
|
2681
|
+
// src/sequences/playbackControllers/AudioPlaybackController.ts
|
|
2682
|
+
var AudioPlaybackController = class {
|
|
2683
|
+
constructor(_decodedBuffer, _audioContext, _nodeDestination) {
|
|
2684
|
+
this._decodedBuffer = _decodedBuffer;
|
|
2685
|
+
this._audioContext = _audioContext;
|
|
2686
|
+
this._nodeDestination = _nodeDestination;
|
|
2687
|
+
__publicField(this, "_mainGain");
|
|
2688
|
+
__publicField(this, "_state", new import_dataverse7.Atom({
|
|
2689
|
+
position: 0,
|
|
2690
|
+
playing: !1
|
|
2691
|
+
}));
|
|
2692
|
+
__publicField(this, "statePointer");
|
|
2693
|
+
__publicField(this, "_stopPlayCallback", import_noop2.default);
|
|
2694
|
+
this.statePointer = this._state.pointer, this._mainGain = this._audioContext.createGain(), this._mainGain.connect(this._nodeDestination);
|
|
2695
|
+
}
|
|
2696
|
+
playDynamicRange(rangeD, ticker) {
|
|
2697
|
+
let deferred = (0, import_defer2.defer)();
|
|
2698
|
+
this._playing && this.pause(), this._playing = !0;
|
|
2699
|
+
let stop, play = () => {
|
|
2700
|
+
stop == null || stop(), stop = this._loopInRange(rangeD.getValue(), ticker).stop;
|
|
2701
|
+
}, untapFromRangeD = rangeD.onStale(play);
|
|
2702
|
+
return play(), this._stopPlayCallback = () => {
|
|
2703
|
+
stop == null || stop(), untapFromRangeD(), deferred.resolve(!1);
|
|
2704
|
+
}, deferred.promise;
|
|
2705
|
+
}
|
|
2706
|
+
_loopInRange(range, ticker) {
|
|
2707
|
+
let startPos = this.getCurrentPosition(), iterationLength = range[1] - range[0];
|
|
2708
|
+
startPos < range[0] || startPos > range[1] ? this._updatePositionInState(range[0]) : startPos === range[1] && this._updatePositionInState(range[0]), startPos = this.getCurrentPosition();
|
|
2709
|
+
let currentSource = this._audioContext.createBufferSource();
|
|
2710
|
+
currentSource.buffer = this._decodedBuffer, currentSource.connect(this._mainGain), currentSource.playbackRate.value = 1, currentSource.loop = !0, currentSource.loopStart = range[0], currentSource.loopEnd = range[1];
|
|
2711
|
+
let initialTickerTime = ticker.time, initialElapsedPos = startPos - range[0];
|
|
2712
|
+
currentSource.start(0, startPos);
|
|
2713
|
+
let tick = (currentTickerTime) => {
|
|
2714
|
+
let currentIterationPos = (Math.max(
|
|
2715
|
+
currentTickerTime - initialTickerTime,
|
|
2716
|
+
0
|
|
2717
|
+
) / 1e3 * 1 + initialElapsedPos) / iterationLength % 1 * iterationLength;
|
|
2718
|
+
this._updatePositionInState(currentIterationPos + range[0]), requestNextTick();
|
|
2719
|
+
}, requestNextTick = () => ticker.onNextTick(tick);
|
|
2720
|
+
return ticker.onThisOrNextTick(tick), { stop: () => {
|
|
2721
|
+
currentSource.stop(), currentSource.disconnect(), ticker.offThisOrNextTick(tick), ticker.offNextTick(tick);
|
|
2722
|
+
} };
|
|
2723
|
+
}
|
|
2724
|
+
get _playing() {
|
|
2725
|
+
return this._state.get().playing;
|
|
2726
|
+
}
|
|
2727
|
+
set _playing(playing) {
|
|
2728
|
+
this._state.setByPointer((p) => p.playing, playing);
|
|
2729
|
+
}
|
|
2730
|
+
destroy() {
|
|
2731
|
+
}
|
|
2732
|
+
pause() {
|
|
2733
|
+
this._stopPlayCallback(), this._playing = !1, this._stopPlayCallback = import_noop2.default;
|
|
2734
|
+
}
|
|
2735
|
+
gotoPosition(time) {
|
|
2736
|
+
this._updatePositionInState(time);
|
|
2737
|
+
}
|
|
2738
|
+
_updatePositionInState(time) {
|
|
2739
|
+
this._state.reduce((s) => __spreadProps(__spreadValues({}, s), { position: time }));
|
|
2740
|
+
}
|
|
2741
|
+
getCurrentPosition() {
|
|
2742
|
+
return this._state.get().position;
|
|
2743
|
+
}
|
|
2744
|
+
play(iterationCount, range, rate, direction, ticker) {
|
|
2745
|
+
this._playing && this.pause(), this._playing = !0;
|
|
2746
|
+
let startPos = this.getCurrentPosition(), iterationLength = range[1] - range[0];
|
|
2747
|
+
if (direction !== "normal")
|
|
2748
|
+
throw new import_errors.InvalidArgumentError(
|
|
2749
|
+
'Audio-controlled sequences can only be played in the "normal" direction. ' + "'".concat(direction, "' given.")
|
|
2750
|
+
);
|
|
2751
|
+
startPos < range[0] || startPos > range[1] ? this._updatePositionInState(range[0]) : startPos === range[1] && this._updatePositionInState(range[0]), startPos = this.getCurrentPosition();
|
|
2752
|
+
let deferred = (0, import_defer2.defer)(), currentSource = this._audioContext.createBufferSource();
|
|
2753
|
+
currentSource.buffer = this._decodedBuffer, currentSource.connect(this._mainGain), currentSource.playbackRate.value = rate, iterationCount > 1e3 && (notify.warning(
|
|
2754
|
+
"Can't play sequences with audio more than 1000 times",
|
|
2755
|
+
"The sequence will still play, but only 1000 times. The `iterationCount: ".concat(iterationCount, "` provided to `sequence.play()`\nis too high for a sequence with audio.\n\nTo fix this, either set `iterationCount` to a lower value, or remove the audio from the sequence."),
|
|
2756
|
+
[
|
|
2757
|
+
{
|
|
2758
|
+
url: "https://www.theatrejs.com/docs/latest/manual/audio",
|
|
2759
|
+
title: "Using Audio"
|
|
2760
|
+
},
|
|
2761
|
+
{
|
|
2762
|
+
url: "https://www.theatrejs.com/docs/latest/api/core#sequence.attachaudio",
|
|
2763
|
+
title: "Audio API"
|
|
2764
|
+
}
|
|
2765
|
+
]
|
|
2766
|
+
), iterationCount = 1e3), iterationCount > 1 && (currentSource.loop = !0, currentSource.loopStart = range[0], currentSource.loopEnd = range[1]);
|
|
2767
|
+
let initialTickerTime = ticker.time, initialElapsedPos = startPos - range[0], totalPlaybackLength = iterationLength * iterationCount;
|
|
2768
|
+
currentSource.start(0, startPos, totalPlaybackLength - initialElapsedPos);
|
|
2769
|
+
let tick = (currentTickerTime) => {
|
|
2770
|
+
let elapsedTickerTimeInSeconds = Math.max(
|
|
2771
|
+
currentTickerTime - initialTickerTime,
|
|
2772
|
+
0
|
|
2773
|
+
) / 1e3, elapsedPos = Math.min(
|
|
2774
|
+
elapsedTickerTimeInSeconds * rate + initialElapsedPos,
|
|
2775
|
+
totalPlaybackLength
|
|
2776
|
+
);
|
|
2777
|
+
if (elapsedPos !== totalPlaybackLength) {
|
|
2778
|
+
let currentIterationPos = elapsedPos / iterationLength % 1 * iterationLength;
|
|
2779
|
+
this._updatePositionInState(currentIterationPos + range[0]), requestNextTick();
|
|
2780
|
+
} else
|
|
2781
|
+
this._updatePositionInState(range[1]), this._playing = !1, cleanup(), deferred.resolve(!0);
|
|
2782
|
+
}, cleanup = () => {
|
|
2783
|
+
currentSource.stop(), currentSource.disconnect();
|
|
2784
|
+
};
|
|
2785
|
+
this._stopPlayCallback = () => {
|
|
2786
|
+
cleanup(), ticker.offThisOrNextTick(tick), ticker.offNextTick(tick), this._playing && deferred.resolve(!1);
|
|
2787
|
+
};
|
|
2788
|
+
let requestNextTick = () => ticker.onNextTick(tick);
|
|
2789
|
+
return ticker.onThisOrNextTick(tick), deferred.promise;
|
|
2790
|
+
}
|
|
2791
|
+
};
|
|
2792
|
+
|
|
2793
|
+
// src/rafDrivers.ts
|
|
2794
|
+
var import_dataverse8 = require("@theatre/dataverse");
|
|
2795
|
+
var lastDriverId = 0;
|
|
2796
|
+
function createRafDriver(conf) {
|
|
2797
|
+
var _a;
|
|
2798
|
+
let tick = (time) => {
|
|
2799
|
+
ticker.tick(time);
|
|
2800
|
+
}, ticker = new import_dataverse8.Ticker({
|
|
2801
|
+
onActive() {
|
|
2802
|
+
var _a2;
|
|
2803
|
+
(_a2 = conf == null ? void 0 : conf.start) == null || _a2.call(conf);
|
|
2804
|
+
},
|
|
2805
|
+
onDormant() {
|
|
2806
|
+
var _a2;
|
|
2807
|
+
(_a2 = conf == null ? void 0 : conf.stop) == null || _a2.call(conf);
|
|
2808
|
+
}
|
|
2809
|
+
}), driverPublicApi = {
|
|
2810
|
+
tick,
|
|
2811
|
+
id: lastDriverId++,
|
|
2812
|
+
name: (_a = conf == null ? void 0 : conf.name) != null ? _a : "CustomRafDriver-".concat(lastDriverId),
|
|
2813
|
+
type: "Theatre_RafDriver_PublicAPI"
|
|
2814
|
+
}, driverPrivateApi = {
|
|
2815
|
+
type: "Theatre_RafDriver_PrivateAPI",
|
|
2816
|
+
publicApi: driverPublicApi,
|
|
2817
|
+
ticker,
|
|
2818
|
+
start: conf == null ? void 0 : conf.start,
|
|
2819
|
+
stop: conf == null ? void 0 : conf.stop
|
|
2820
|
+
};
|
|
2821
|
+
return setPrivateAPI(driverPublicApi, driverPrivateApi), driverPublicApi;
|
|
2822
|
+
}
|
|
2823
|
+
|
|
2824
|
+
// src/coreTicker.ts
|
|
2825
|
+
function createBasicRafDriver() {
|
|
2826
|
+
let rafId = null, driver = createRafDriver({ name: "DefaultCoreRafDriver", start: () => {
|
|
2827
|
+
if (typeof window < "u") {
|
|
2828
|
+
let onAnimationFrame = (t) => {
|
|
2829
|
+
driver.tick(t), rafId = window.requestAnimationFrame(onAnimationFrame);
|
|
2830
|
+
};
|
|
2831
|
+
rafId = window.requestAnimationFrame(onAnimationFrame);
|
|
2832
|
+
} else
|
|
2833
|
+
driver.tick(0), setTimeout(() => driver.tick(1), 0);
|
|
2834
|
+
}, stop: () => {
|
|
2835
|
+
typeof window < "u" && rafId !== null && window.cancelAnimationFrame(rafId);
|
|
2836
|
+
} });
|
|
2837
|
+
return driver;
|
|
2838
|
+
}
|
|
2839
|
+
var coreRafDriver;
|
|
2840
|
+
function getCoreRafDriver() {
|
|
2841
|
+
return coreRafDriver || setCoreRafDriver(createBasicRafDriver()), coreRafDriver;
|
|
2842
|
+
}
|
|
2843
|
+
function getCoreTicker() {
|
|
2844
|
+
return getCoreRafDriver().ticker;
|
|
2845
|
+
}
|
|
2846
|
+
function setCoreRafDriver(driver) {
|
|
2847
|
+
if (coreRafDriver)
|
|
2848
|
+
throw new Error("`setCoreRafDriver()` is already called.");
|
|
2849
|
+
coreRafDriver = privateAPI(driver);
|
|
2850
|
+
}
|
|
2851
|
+
|
|
2852
|
+
// src/sequences/TheatreSequence.ts
|
|
2853
|
+
var TheatreSequence = class {
|
|
2854
|
+
get type() {
|
|
2855
|
+
return "Theatre_Sequence_PublicAPI";
|
|
2856
|
+
}
|
|
2857
|
+
/**
|
|
2858
|
+
* @internal
|
|
2859
|
+
*/
|
|
2860
|
+
constructor(seq) {
|
|
2861
|
+
setPrivateAPI(this, seq);
|
|
2862
|
+
}
|
|
2863
|
+
play(conf) {
|
|
2864
|
+
let priv = privateAPI(this);
|
|
2865
|
+
if (priv._project.isReady()) {
|
|
2866
|
+
let ticker = conf != null && conf.rafDriver ? privateAPI(conf.rafDriver).ticker : getCoreTicker();
|
|
2867
|
+
return priv.play(conf != null ? conf : {}, ticker);
|
|
2868
|
+
} else {
|
|
2869
|
+
let d = (0, import_defer3.defer)();
|
|
2870
|
+
return d.resolve(!0), d.promise;
|
|
2871
|
+
}
|
|
2872
|
+
}
|
|
2873
|
+
pause() {
|
|
2874
|
+
privateAPI(this).pause();
|
|
2875
|
+
}
|
|
2876
|
+
get position() {
|
|
2877
|
+
return privateAPI(this).position;
|
|
2878
|
+
}
|
|
2879
|
+
set position(position) {
|
|
2880
|
+
privateAPI(this).position = position;
|
|
2881
|
+
}
|
|
2882
|
+
__experimental_getKeyframes(prop) {
|
|
2883
|
+
return privateAPI(this).getKeyframesOfSimpleProp(prop);
|
|
2884
|
+
}
|
|
2885
|
+
async attachAudio(args) {
|
|
2886
|
+
let { audioContext, destinationNode, decodedBuffer, gainNode } = await resolveAudioBuffer(args), playbackController = new AudioPlaybackController(
|
|
2887
|
+
decodedBuffer,
|
|
2888
|
+
audioContext,
|
|
2889
|
+
gainNode
|
|
2890
|
+
);
|
|
2891
|
+
return privateAPI(this).replacePlaybackController(playbackController), { audioContext, destinationNode, decodedBuffer, gainNode };
|
|
2892
|
+
}
|
|
2893
|
+
get pointer() {
|
|
2894
|
+
return privateAPI(this).pointer;
|
|
2895
|
+
}
|
|
2896
|
+
};
|
|
2897
|
+
async function resolveAudioBuffer(args) {
|
|
2898
|
+
function getAudioContext() {
|
|
2899
|
+
if (args.audioContext)
|
|
2900
|
+
return Promise.resolve(args.audioContext);
|
|
2901
|
+
let ctx = new AudioContext();
|
|
2902
|
+
return ctx.state === "running" || typeof window > "u" ? Promise.resolve(ctx) : new Promise((resolve) => {
|
|
2903
|
+
let listener = () => {
|
|
2904
|
+
ctx.resume().catch((err) => {
|
|
2905
|
+
console.error(err);
|
|
2906
|
+
});
|
|
2907
|
+
}, eventsToHookInto = [
|
|
2908
|
+
"mousedown",
|
|
2909
|
+
"keydown",
|
|
2910
|
+
"touchstart"
|
|
2911
|
+
], eventListenerOpts = { capture: !0, passive: !1 };
|
|
2912
|
+
eventsToHookInto.forEach((eventName) => {
|
|
2913
|
+
window.addEventListener(eventName, listener, eventListenerOpts);
|
|
2914
|
+
}), ctx.addEventListener("statechange", () => {
|
|
2915
|
+
ctx.state === "running" && (eventsToHookInto.forEach((eventName) => {
|
|
2916
|
+
window.removeEventListener(eventName, listener, eventListenerOpts);
|
|
2917
|
+
}), resolve(ctx));
|
|
2918
|
+
});
|
|
2919
|
+
});
|
|
2920
|
+
}
|
|
2921
|
+
async function getAudioBuffer() {
|
|
2922
|
+
if (args.source instanceof AudioBuffer)
|
|
2923
|
+
return args.source;
|
|
2924
|
+
let decodedBufferDeferred = (0, import_defer3.defer)();
|
|
2925
|
+
if (typeof args.source != "string")
|
|
2926
|
+
throw new Error(
|
|
2927
|
+
"Error validating arguments to sequence.attachAudio(). args.source must either be a string or an instance of AudioBuffer."
|
|
2928
|
+
);
|
|
2929
|
+
let fetchResponse;
|
|
2930
|
+
try {
|
|
2931
|
+
fetchResponse = await fetch(args.source);
|
|
2932
|
+
} catch (e) {
|
|
2933
|
+
throw console.error(e), new Error(
|
|
2934
|
+
"Could not fetch '".concat(args.source, "'. Network error logged above.")
|
|
2935
|
+
);
|
|
2936
|
+
}
|
|
2937
|
+
let arrayBuffer;
|
|
2938
|
+
try {
|
|
2939
|
+
arrayBuffer = await fetchResponse.arrayBuffer();
|
|
2940
|
+
} catch (e) {
|
|
2941
|
+
throw console.error(e), new Error("Could not read '".concat(args.source, "' as an arrayBuffer."));
|
|
2942
|
+
}
|
|
2943
|
+
(await audioContextPromise).decodeAudioData(
|
|
2944
|
+
arrayBuffer,
|
|
2945
|
+
decodedBufferDeferred.resolve,
|
|
2946
|
+
decodedBufferDeferred.reject
|
|
2947
|
+
);
|
|
2948
|
+
let decodedBuffer2;
|
|
2949
|
+
try {
|
|
2950
|
+
decodedBuffer2 = await decodedBufferDeferred.promise;
|
|
2951
|
+
} catch (e) {
|
|
2952
|
+
throw console.error(e), new Error("Could not decode ".concat(args.source, " as an audio file."));
|
|
2953
|
+
}
|
|
2954
|
+
return decodedBuffer2;
|
|
2955
|
+
}
|
|
2956
|
+
let audioContextPromise = getAudioContext(), audioBufferPromise = getAudioBuffer(), [audioContext, decodedBuffer] = await Promise.all([
|
|
2957
|
+
audioContextPromise,
|
|
2958
|
+
audioBufferPromise
|
|
2959
|
+
]), destinationNode = args.destinationNode || audioContext.destination, gainNode = audioContext.createGain();
|
|
2960
|
+
return gainNode.connect(destinationNode), {
|
|
2961
|
+
audioContext,
|
|
2962
|
+
decodedBuffer,
|
|
2963
|
+
gainNode,
|
|
2964
|
+
destinationNode
|
|
2965
|
+
};
|
|
2966
|
+
}
|
|
2967
|
+
|
|
2968
|
+
// src/utils/instanceTypes.ts
|
|
2969
|
+
var instanceTypes_exports = {};
|
|
2970
|
+
__export(instanceTypes_exports, {
|
|
2971
|
+
isProject: () => isProject,
|
|
2972
|
+
isProjectPublicAPI: () => isProjectPublicAPI,
|
|
2973
|
+
isSequence: () => isSequence,
|
|
2974
|
+
isSheet: () => isSheet,
|
|
2975
|
+
isSheetObject: () => isSheetObject,
|
|
2976
|
+
isSheetObjectPublicAPI: () => isSheetObjectPublicAPI,
|
|
2977
|
+
isSheetObjectTemplate: () => isSheetObjectTemplate,
|
|
2978
|
+
isSheetPublicAPI: () => isSheetPublicAPI,
|
|
2979
|
+
isSheetTemplate: () => isSheetTemplate
|
|
2980
|
+
});
|
|
2981
|
+
var isProject = typeAsserter("Theatre_Project"), isSheet = typeAsserter("Theatre_Sheet"), isSheetTemplate = typeAsserter(
|
|
2982
|
+
"Theatre_SheetTemplate"
|
|
2983
|
+
), isSheetObject = typeAsserter("Theatre_SheetObject"), isSequence = typeAsserter("Theatre_Sequence"), isSheetObjectTemplate = typeAsserter(
|
|
2984
|
+
"Theatre_SheetObjectTemplate"
|
|
2985
|
+
), isProjectPublicAPI = typeAsserter(
|
|
2986
|
+
"Theatre_Project_PublicAPI"
|
|
2987
|
+
), isSheetPublicAPI = typeAsserter("Theatre_Sheet_PublicAPI"), isSheetObjectPublicAPI = typeAsserter(
|
|
2988
|
+
"Theatre_SheetObject_PublicAPI"
|
|
2989
|
+
);
|
|
2990
|
+
function typeAsserter(t) {
|
|
2991
|
+
return (v) => typeof v == "object" && !!v && v.type === t;
|
|
2992
|
+
}
|
|
2993
|
+
|
|
2994
|
+
// src/sequences/Sequence.ts
|
|
2995
|
+
var Sequence = class {
|
|
2996
|
+
constructor(_project, _sheet, _lengthD, _subUnitsPerUnitD, playbackController) {
|
|
2997
|
+
this._project = _project;
|
|
2998
|
+
this._sheet = _sheet;
|
|
2999
|
+
this._lengthD = _lengthD;
|
|
3000
|
+
this._subUnitsPerUnitD = _subUnitsPerUnitD;
|
|
3001
|
+
__publicField(this, "address");
|
|
3002
|
+
__publicField(this, "publicApi");
|
|
3003
|
+
__publicField(this, "_playbackControllerBox");
|
|
3004
|
+
__publicField(this, "_prismOfStatePointer");
|
|
3005
|
+
__publicField(this, "_positionD");
|
|
3006
|
+
__publicField(this, "_positionFormatterD");
|
|
3007
|
+
__publicField(this, "_playableRangeD");
|
|
3008
|
+
__publicField(this, "pointer", (0, import_dataverse11.pointer)({ root: this, path: [] }));
|
|
3009
|
+
__publicField(this, "$$isPointerToPrismProvider", !0);
|
|
3010
|
+
__publicField(this, "closestGridPosition", (posInUnitSpace) => {
|
|
3011
|
+
let gridLength = 1 / this.subUnitsPerUnit;
|
|
3012
|
+
return parseFloat(
|
|
3013
|
+
(Math.round(posInUnitSpace / gridLength) * gridLength).toFixed(3)
|
|
3014
|
+
);
|
|
3015
|
+
});
|
|
3016
|
+
this.address = __spreadProps(__spreadValues({}, this._sheet.address), { sequenceName: "default" }), this.publicApi = new TheatreSequence(this), this._playbackControllerBox = new import_dataverse10.Atom(
|
|
3017
|
+
playbackController != null ? playbackController : new DefaultPlaybackController()
|
|
3018
|
+
), this._prismOfStatePointer = (0, import_dataverse12.prism)(
|
|
3019
|
+
() => this._playbackControllerBox.prism.getValue().statePointer
|
|
3020
|
+
), this._positionD = (0, import_dataverse12.prism)(() => {
|
|
3021
|
+
let statePointer = this._prismOfStatePointer.getValue();
|
|
3022
|
+
return (0, import_dataverse12.val)(statePointer.position);
|
|
3023
|
+
}), this._positionFormatterD = (0, import_dataverse12.prism)(() => {
|
|
3024
|
+
let subUnitsPerUnit = (0, import_dataverse12.val)(this._subUnitsPerUnitD);
|
|
3025
|
+
return new TimeBasedPositionFormatter(subUnitsPerUnit);
|
|
3026
|
+
});
|
|
3027
|
+
}
|
|
3028
|
+
get type() {
|
|
3029
|
+
return "Theatre_Sequence";
|
|
3030
|
+
}
|
|
3031
|
+
pointerToPrism(pointer3) {
|
|
3032
|
+
let { path } = (0, import_dataverse9.getPointerParts)(pointer3);
|
|
3033
|
+
if (path.length === 0)
|
|
3034
|
+
return (0, import_dataverse12.prism)(() => ({
|
|
3035
|
+
length: (0, import_dataverse12.val)(this.pointer.length),
|
|
3036
|
+
playing: (0, import_dataverse12.val)(this.pointer.playing),
|
|
3037
|
+
position: (0, import_dataverse12.val)(this.pointer.position),
|
|
3038
|
+
subUnitsPerUnit: (0, import_dataverse12.val)(this.pointer.subUnitsPerUnit)
|
|
3039
|
+
}));
|
|
3040
|
+
if (path.length > 1)
|
|
3041
|
+
return (0, import_dataverse12.prism)(() => {
|
|
3042
|
+
});
|
|
3043
|
+
let [prop] = path;
|
|
3044
|
+
return prop === "length" ? this._lengthD : prop === "subUnitsPerUnit" ? this._subUnitsPerUnitD : prop === "position" ? this._positionD : prop === "playing" ? (0, import_dataverse12.prism)(() => (0, import_dataverse12.val)(this._prismOfStatePointer.getValue().playing)) : (0, import_dataverse12.prism)(() => {
|
|
3045
|
+
});
|
|
3046
|
+
}
|
|
3047
|
+
/**
|
|
3048
|
+
* Takes a pointer to a property of a SheetObject and returns the keyframes of that property.
|
|
3049
|
+
*
|
|
3050
|
+
* Theoretically, this method can be called from inside a prism so it can be reactive.
|
|
3051
|
+
*/
|
|
3052
|
+
getKeyframesOfSimpleProp(prop) {
|
|
3053
|
+
let { path, root: root2 } = (0, import_dataverse9.getPointerParts)(prop);
|
|
3054
|
+
if (!isSheetObject(root2))
|
|
3055
|
+
throw new import_errors2.InvalidArgumentError(
|
|
3056
|
+
"Argument prop must be a pointer to a SheetObject property"
|
|
3057
|
+
);
|
|
3058
|
+
let trackP = (0, import_dataverse12.val)(
|
|
3059
|
+
this._project.pointers.historic.sheetsById[this._sheet.address.sheetId].sequence.tracksByObject[root2.address.objectKey]
|
|
3060
|
+
);
|
|
3061
|
+
if (!trackP)
|
|
3062
|
+
return [];
|
|
3063
|
+
let { trackData, trackIdByPropPath } = trackP, objectAddress = (0, import_pathToProp.encodePathToProp)(path), id = trackIdByPropPath[objectAddress];
|
|
3064
|
+
if (!id)
|
|
3065
|
+
return [];
|
|
3066
|
+
let track = trackData[id];
|
|
3067
|
+
return track ? getSortedKeyframesCached(track.keyframes) : [];
|
|
3068
|
+
}
|
|
3069
|
+
get positionFormatter() {
|
|
3070
|
+
return this._positionFormatterD.getValue();
|
|
3071
|
+
}
|
|
3072
|
+
get prismOfStatePointer() {
|
|
3073
|
+
return this._prismOfStatePointer;
|
|
3074
|
+
}
|
|
3075
|
+
get length() {
|
|
3076
|
+
return this._lengthD.getValue();
|
|
3077
|
+
}
|
|
3078
|
+
get positionPrism() {
|
|
3079
|
+
return this._positionD;
|
|
3080
|
+
}
|
|
3081
|
+
get position() {
|
|
3082
|
+
return this._playbackControllerBox.get().getCurrentPosition();
|
|
3083
|
+
}
|
|
3084
|
+
get subUnitsPerUnit() {
|
|
3085
|
+
return this._subUnitsPerUnitD.getValue();
|
|
3086
|
+
}
|
|
3087
|
+
get positionSnappedToGrid() {
|
|
3088
|
+
return this.closestGridPosition(this.position);
|
|
3089
|
+
}
|
|
3090
|
+
set position(requestedPosition) {
|
|
3091
|
+
let position = requestedPosition;
|
|
3092
|
+
this.pause(), position > this.length && (position = this.length);
|
|
3093
|
+
let dur = this.length;
|
|
3094
|
+
this._playbackControllerBox.get().gotoPosition(position > dur ? dur : position);
|
|
3095
|
+
}
|
|
3096
|
+
getDurationCold() {
|
|
3097
|
+
return this._lengthD.getValue();
|
|
3098
|
+
}
|
|
3099
|
+
get playing() {
|
|
3100
|
+
return (0, import_dataverse12.val)(this._playbackControllerBox.get().statePointer.playing);
|
|
3101
|
+
}
|
|
3102
|
+
_makeRangeFromSequenceTemplate() {
|
|
3103
|
+
return (0, import_dataverse12.prism)(() => [0, (0, import_dataverse12.val)(this._lengthD)]);
|
|
3104
|
+
}
|
|
3105
|
+
/**
|
|
3106
|
+
* Controls the playback within a range. Repeats infinitely unless stopped.
|
|
3107
|
+
*
|
|
3108
|
+
* @remarks
|
|
3109
|
+
* One use case for this is to play the playback within the focus range.
|
|
3110
|
+
*
|
|
3111
|
+
* @param rangeD - The prism that contains the range that will be used for the playback
|
|
3112
|
+
*
|
|
3113
|
+
* @returns a promise that gets rejected if the playback stopped for whatever reason
|
|
3114
|
+
*
|
|
3115
|
+
*/
|
|
3116
|
+
playDynamicRange(rangeD, ticker) {
|
|
3117
|
+
return this._playbackControllerBox.get().playDynamicRange(rangeD, ticker);
|
|
3118
|
+
}
|
|
3119
|
+
async play(conf, ticker) {
|
|
3120
|
+
let sequenceDuration = this.length, range = conf && conf.range ? conf.range : [0, sequenceDuration], iterationCount = conf && typeof conf.iterationCount == "number" ? conf.iterationCount : 1, rate = conf && typeof conf.rate < "u" ? conf.rate : 1, direction = conf && conf.direction ? conf.direction : "normal";
|
|
3121
|
+
return await this._play(
|
|
3122
|
+
iterationCount,
|
|
3123
|
+
[range[0], range[1]],
|
|
3124
|
+
rate,
|
|
3125
|
+
direction,
|
|
3126
|
+
ticker
|
|
3127
|
+
);
|
|
3128
|
+
}
|
|
3129
|
+
_play(iterationCount, range, rate, direction, ticker) {
|
|
3130
|
+
return this._playbackControllerBox.get().play(iterationCount, range, rate, direction, ticker);
|
|
3131
|
+
}
|
|
3132
|
+
pause() {
|
|
3133
|
+
this._playbackControllerBox.get().pause();
|
|
3134
|
+
}
|
|
3135
|
+
replacePlaybackController(playbackController) {
|
|
3136
|
+
this.pause();
|
|
3137
|
+
let oldController = this._playbackControllerBox.get();
|
|
3138
|
+
this._playbackControllerBox.set(playbackController);
|
|
3139
|
+
let time = oldController.getCurrentPosition();
|
|
3140
|
+
oldController.destroy(), playbackController.gotoPosition(time);
|
|
3141
|
+
}
|
|
3142
|
+
getMarkerPosition(markerName) {
|
|
3143
|
+
let sheetState = this._project.pointers.historic.sheetsById[this._sheet.address.sheetId], markers = (0, import_dataverse12.val)(sheetState.sequence.markers);
|
|
3144
|
+
if (!markers)
|
|
3145
|
+
return;
|
|
3146
|
+
let marker = markers.find((m) => m.label === markerName);
|
|
3147
|
+
return marker == null ? void 0 : marker.position;
|
|
3148
|
+
}
|
|
3149
|
+
async goToAndPlay(markerName, conf, ticker) {
|
|
3150
|
+
let position = this.getMarkerPosition(markerName);
|
|
3151
|
+
if (position === void 0)
|
|
3152
|
+
throw new Error(
|
|
3153
|
+
'Marker "'.concat(markerName, '" not found in sequence "').concat(this._sheet.address.sheetId, '"')
|
|
3154
|
+
);
|
|
3155
|
+
return this.position = position, this.play(conf, ticker);
|
|
3156
|
+
}
|
|
3157
|
+
goToAndStop(markerName) {
|
|
3158
|
+
let position = this.getMarkerPosition(markerName);
|
|
3159
|
+
if (position === void 0)
|
|
3160
|
+
throw new Error(
|
|
3161
|
+
'Marker "'.concat(markerName, '" not found in sequence "').concat(this._sheet.address.sheetId, '"')
|
|
3162
|
+
);
|
|
3163
|
+
this.position = position;
|
|
3164
|
+
}
|
|
3165
|
+
}, TimeBasedPositionFormatter = class {
|
|
3166
|
+
constructor(_fps) {
|
|
3167
|
+
this._fps = _fps;
|
|
3168
|
+
}
|
|
3169
|
+
formatSubUnitForGrid(posInUnitSpace) {
|
|
3170
|
+
let subSecondPos = posInUnitSpace % 1, frame = 1 / this._fps;
|
|
3171
|
+
return Math.round(subSecondPos / frame) + "f";
|
|
3172
|
+
}
|
|
3173
|
+
formatFullUnitForGrid(posInUnitSpace) {
|
|
3174
|
+
let p = posInUnitSpace, s = "";
|
|
3175
|
+
if (p >= hour) {
|
|
3176
|
+
let hours = Math.floor(p / hour);
|
|
3177
|
+
s += hours + "h", p = p % hour;
|
|
3178
|
+
}
|
|
3179
|
+
if (p >= minute) {
|
|
3180
|
+
let minutes = Math.floor(p / minute);
|
|
3181
|
+
s += minutes + "m", p = p % minute;
|
|
3182
|
+
}
|
|
3183
|
+
if (p >= second) {
|
|
3184
|
+
let seconds = Math.floor(p / second);
|
|
3185
|
+
s += seconds + "s", p = p % second;
|
|
3186
|
+
}
|
|
3187
|
+
let frame = 1 / this._fps;
|
|
3188
|
+
if (p >= frame) {
|
|
3189
|
+
let frames = Math.floor(p / frame);
|
|
3190
|
+
s += frames + "f", p = p % frame;
|
|
3191
|
+
}
|
|
3192
|
+
return s.length === 0 ? "0s" : s;
|
|
3193
|
+
}
|
|
3194
|
+
formatForPlayhead(posInUnitSpace) {
|
|
3195
|
+
let p = posInUnitSpace, s = "";
|
|
3196
|
+
if (p >= hour) {
|
|
3197
|
+
let hours = Math.floor(p / hour);
|
|
3198
|
+
s += padStart_default(hours.toString(), 2, "0") + "h", p = p % hour;
|
|
3199
|
+
}
|
|
3200
|
+
if (p >= minute) {
|
|
3201
|
+
let minutes = Math.floor(p / minute);
|
|
3202
|
+
s += padStart_default(minutes.toString(), 2, "0") + "m", p = p % minute;
|
|
3203
|
+
} else
|
|
3204
|
+
s.length > 0 && (s += "00m");
|
|
3205
|
+
if (p >= second) {
|
|
3206
|
+
let seconds = Math.floor(p / second);
|
|
3207
|
+
s += padStart_default(seconds.toString(), 2, "0") + "s", p = p % second;
|
|
3208
|
+
} else
|
|
3209
|
+
s += "00s";
|
|
3210
|
+
let frameLength = 1 / this._fps;
|
|
3211
|
+
if (p >= frameLength) {
|
|
3212
|
+
let frames = Math.round(p / frameLength);
|
|
3213
|
+
s += padStart_default(frames.toString(), 2, "0") + "f", p = p % frameLength;
|
|
3214
|
+
} else
|
|
3215
|
+
p / frameLength > 0.98 ? (s += padStart_default(1 .toString(), 2, "0") + "f", p = p % frameLength) : s += "00f";
|
|
3216
|
+
return s.length === 0 ? "00s00f" : s;
|
|
3217
|
+
}
|
|
3218
|
+
formatBasic(posInUnitSpace) {
|
|
3219
|
+
return posInUnitSpace.toFixed(2) + "s";
|
|
3220
|
+
}
|
|
3221
|
+
}, second = 1, minute = second * 60, hour = minute * 60;
|
|
3222
|
+
|
|
3223
|
+
// src/propTypes/index.ts
|
|
3224
|
+
var propTypes_exports = {};
|
|
3225
|
+
__export(propTypes_exports, {
|
|
3226
|
+
boolean: () => boolean,
|
|
3227
|
+
compound: () => compound,
|
|
3228
|
+
file: () => file,
|
|
3229
|
+
image: () => image,
|
|
3230
|
+
number: () => number,
|
|
3231
|
+
rgba: () => rgba,
|
|
3232
|
+
string: () => string,
|
|
3233
|
+
stringLiteral: () => stringLiteral
|
|
3234
|
+
});
|
|
3235
|
+
var import_userReadableTypeOfValue2 = require("@theatre/utils/userReadableTypeOfValue"), import_color = require("@theatre/utils/color");
|
|
3236
|
+
|
|
3237
|
+
// src/types/public.ts
|
|
3238
|
+
var nominal = Symbol(), propTypeSymbol = Symbol("TheatrePropType_Basic");
|
|
3239
|
+
|
|
3240
|
+
// src/propTypes/internals.ts
|
|
3241
|
+
var import_errors3 = require("@theatre/utils/errors"), import_userReadableTypeOfValue = __toESM(require("@theatre/utils/userReadableTypeOfValue"));
|
|
3242
|
+
function isLonghandPropType(t) {
|
|
3243
|
+
return typeof t == "object" && !!t && t[propTypeSymbol] === "TheatrePropType";
|
|
3244
|
+
}
|
|
3245
|
+
function toLonghandProp(p) {
|
|
3246
|
+
if (typeof p == "number")
|
|
3247
|
+
return number(p);
|
|
3248
|
+
if (typeof p == "boolean")
|
|
3249
|
+
return boolean(p);
|
|
3250
|
+
if (typeof p == "string")
|
|
3251
|
+
return string(p);
|
|
3252
|
+
if (typeof p == "object" && p) {
|
|
3253
|
+
if (isLonghandPropType(p))
|
|
3254
|
+
return p;
|
|
3255
|
+
if (isPlainObject_default(p))
|
|
3256
|
+
return compound(p);
|
|
3257
|
+
throw new import_errors3.InvalidArgumentError(
|
|
3258
|
+
"This value is not a valid prop type: ".concat((0, import_userReadableTypeOfValue.default)(p))
|
|
3259
|
+
);
|
|
3260
|
+
} else
|
|
3261
|
+
throw new import_errors3.InvalidArgumentError(
|
|
3262
|
+
"This value is not a valid prop type: ".concat((0, import_userReadableTypeOfValue.default)(p))
|
|
3263
|
+
);
|
|
3264
|
+
}
|
|
3265
|
+
function sanitizeCompoundProps(props) {
|
|
3266
|
+
let sanitizedProps = {};
|
|
3267
|
+
for (let key of Object.keys(props)) {
|
|
3268
|
+
let val9 = props[key];
|
|
3269
|
+
isLonghandPropType(val9) ? sanitizedProps[key] = val9 : sanitizedProps[key] = toLonghandProp(val9);
|
|
3270
|
+
}
|
|
3271
|
+
return sanitizedProps;
|
|
3272
|
+
}
|
|
3273
|
+
|
|
3274
|
+
// src/propTypes/index.ts
|
|
3275
|
+
var validateCommonOpts = (fnCallSignature, opts) => {
|
|
3276
|
+
}, compound = (props, opts = {}) => {
|
|
3277
|
+
validateCommonOpts("t.compound(props, opts)", opts);
|
|
3278
|
+
let sanitizedProps = sanitizeCompoundProps(props), deserializationCache = /* @__PURE__ */ new WeakMap();
|
|
3279
|
+
return {
|
|
3280
|
+
type: "compound",
|
|
3281
|
+
props: sanitizedProps,
|
|
3282
|
+
valueType: null,
|
|
3283
|
+
[propTypeSymbol]: "TheatrePropType",
|
|
3284
|
+
label: opts.label,
|
|
3285
|
+
default: mapValues_default(sanitizedProps, (p) => p.default),
|
|
3286
|
+
deserializeAndSanitize: (json) => {
|
|
3287
|
+
if (typeof json != "object" || !json)
|
|
3288
|
+
return;
|
|
3289
|
+
if (deserializationCache.has(json))
|
|
3290
|
+
return deserializationCache.get(json);
|
|
3291
|
+
let deserialized = {}, atLeastOnePropWasDeserialized = !1;
|
|
3292
|
+
for (let [key, propConfig] of Object.entries(sanitizedProps))
|
|
3293
|
+
if (Object.prototype.hasOwnProperty.call(json, key)) {
|
|
3294
|
+
let deserializedSub = propConfig.deserializeAndSanitize(
|
|
3295
|
+
json[key]
|
|
3296
|
+
);
|
|
3297
|
+
deserializedSub != null && (atLeastOnePropWasDeserialized = !0, deserialized[key] = deserializedSub);
|
|
3298
|
+
}
|
|
3299
|
+
if (deserializationCache.set(json, deserialized), atLeastOnePropWasDeserialized)
|
|
3300
|
+
return deserialized;
|
|
3301
|
+
}
|
|
3302
|
+
};
|
|
3303
|
+
}, file = (defaultValue, opts = {}) => {
|
|
3304
|
+
let interpolate = (left, right, progression) => {
|
|
3305
|
+
var _a;
|
|
3306
|
+
return {
|
|
3307
|
+
type: "file",
|
|
3308
|
+
id: ((_a = opts.interpolate) != null ? _a : leftInterpolate)(left.id, right.id, progression)
|
|
3309
|
+
};
|
|
3310
|
+
};
|
|
3311
|
+
return {
|
|
3312
|
+
type: "file",
|
|
3313
|
+
default: { type: "file", id: defaultValue },
|
|
3314
|
+
valueType: null,
|
|
3315
|
+
[propTypeSymbol]: "TheatrePropType",
|
|
3316
|
+
label: opts.label,
|
|
3317
|
+
interpolate,
|
|
3318
|
+
deserializeAndSanitize: _ensureFile
|
|
3319
|
+
};
|
|
3320
|
+
}, _ensureFile = (val9) => {
|
|
3321
|
+
if (!val9)
|
|
3322
|
+
return;
|
|
3323
|
+
let valid = !0;
|
|
3324
|
+
if (typeof val9.id != "string" && ![null, void 0].includes(val9.id) && (valid = !1), val9.type !== "file" && (valid = !1), !!valid)
|
|
3325
|
+
return val9;
|
|
3326
|
+
}, image = (defaultValue, opts = {}) => {
|
|
3327
|
+
let interpolate = (left, right, progression) => {
|
|
3328
|
+
var _a;
|
|
3329
|
+
return {
|
|
3330
|
+
type: "image",
|
|
3331
|
+
id: ((_a = opts.interpolate) != null ? _a : leftInterpolate)(left.id, right.id, progression)
|
|
3332
|
+
};
|
|
3333
|
+
};
|
|
3334
|
+
return {
|
|
3335
|
+
type: "image",
|
|
3336
|
+
default: { type: "image", id: defaultValue },
|
|
3337
|
+
valueType: null,
|
|
3338
|
+
[propTypeSymbol]: "TheatrePropType",
|
|
3339
|
+
label: opts.label,
|
|
3340
|
+
interpolate,
|
|
3341
|
+
deserializeAndSanitize: _ensureImage
|
|
3342
|
+
};
|
|
3343
|
+
}, _ensureImage = (val9) => {
|
|
3344
|
+
if (!val9)
|
|
3345
|
+
return;
|
|
3346
|
+
let valid = !0;
|
|
3347
|
+
if (typeof val9.id != "string" && ![null, void 0].includes(val9.id) && (valid = !1), val9.type !== "image" && (valid = !1), !!valid)
|
|
3348
|
+
return val9;
|
|
3349
|
+
}, number = (defaultValue, opts = {}) => {
|
|
3350
|
+
var _a;
|
|
3351
|
+
return __spreadProps(__spreadValues({
|
|
3352
|
+
type: "number",
|
|
3353
|
+
valueType: 0,
|
|
3354
|
+
default: defaultValue,
|
|
3355
|
+
[propTypeSymbol]: "TheatrePropType"
|
|
3356
|
+
}, opts || {}), {
|
|
3357
|
+
label: opts.label,
|
|
3358
|
+
nudgeFn: (_a = opts.nudgeFn) != null ? _a : defaultNumberNudgeFn,
|
|
3359
|
+
nudgeMultiplier: typeof opts.nudgeMultiplier == "number" ? opts.nudgeMultiplier : void 0,
|
|
3360
|
+
interpolate: _interpolateNumber,
|
|
3361
|
+
deserializeAndSanitize: numberDeserializer(opts.range)
|
|
3362
|
+
});
|
|
3363
|
+
}, numberDeserializer = (range) => range ? (json) => {
|
|
3364
|
+
if (typeof json == "number" && isFinite(json))
|
|
3365
|
+
return clamp_default(json, range[0], range[1]);
|
|
3366
|
+
} : _ensureNumber, _ensureNumber = (value) => typeof value == "number" && isFinite(value) ? value : void 0, _interpolateNumber = (left, right, progression) => left + progression * (right - left), rgba = (defaultValue = { r: 0, g: 0, b: 0, a: 1 }, opts = {}) => {
|
|
3367
|
+
let sanitized = {};
|
|
3368
|
+
for (let component of ["r", "g", "b", "a"])
|
|
3369
|
+
sanitized[component] = Math.min(
|
|
3370
|
+
Math.max(defaultValue[component], 0),
|
|
3371
|
+
1
|
|
3372
|
+
);
|
|
3373
|
+
return {
|
|
3374
|
+
type: "rgba",
|
|
3375
|
+
valueType: null,
|
|
3376
|
+
default: (0, import_color.decorateRgba)(sanitized),
|
|
3377
|
+
[propTypeSymbol]: "TheatrePropType",
|
|
3378
|
+
label: opts.label,
|
|
3379
|
+
interpolate: _interpolateRgba,
|
|
3380
|
+
deserializeAndSanitize: _sanitizeRgba
|
|
3381
|
+
};
|
|
3382
|
+
}, _sanitizeRgba = (val9) => {
|
|
3383
|
+
if (!val9)
|
|
3384
|
+
return;
|
|
3385
|
+
let valid = !0;
|
|
3386
|
+
for (let c of ["r", "g", "b", "a"])
|
|
3387
|
+
(!Object.prototype.hasOwnProperty.call(val9, c) || typeof val9[c] != "number") && (valid = !1);
|
|
3388
|
+
if (!valid)
|
|
3389
|
+
return;
|
|
3390
|
+
let sanitized = {};
|
|
3391
|
+
for (let c of ["r", "g", "b", "a"])
|
|
3392
|
+
sanitized[c] = Math.min(
|
|
3393
|
+
Math.max(val9[c], 0),
|
|
3394
|
+
1
|
|
3395
|
+
);
|
|
3396
|
+
return (0, import_color.decorateRgba)(sanitized);
|
|
3397
|
+
}, _interpolateRgba = (left, right, progression) => {
|
|
3398
|
+
let leftLab = (0, import_color.linearSrgbToOklab)((0, import_color.srgbToLinearSrgb)(left)), rightLab = (0, import_color.linearSrgbToOklab)((0, import_color.srgbToLinearSrgb)(right)), interpolatedLab = {
|
|
3399
|
+
L: (1 - progression) * leftLab.L + progression * rightLab.L,
|
|
3400
|
+
a: (1 - progression) * leftLab.a + progression * rightLab.a,
|
|
3401
|
+
b: (1 - progression) * leftLab.b + progression * rightLab.b,
|
|
3402
|
+
alpha: (1 - progression) * leftLab.alpha + progression * rightLab.alpha
|
|
3403
|
+
}, interpolatedRgba = (0, import_color.linearSrgbToSrgb)((0, import_color.oklabToLinearSrgb)(interpolatedLab));
|
|
3404
|
+
return (0, import_color.decorateRgba)(interpolatedRgba);
|
|
3405
|
+
}, boolean = (defaultValue, opts = {}) => {
|
|
3406
|
+
var _a;
|
|
3407
|
+
return {
|
|
3408
|
+
type: "boolean",
|
|
3409
|
+
default: defaultValue,
|
|
3410
|
+
valueType: null,
|
|
3411
|
+
[propTypeSymbol]: "TheatrePropType",
|
|
3412
|
+
label: opts.label,
|
|
3413
|
+
interpolate: (_a = opts.interpolate) != null ? _a : leftInterpolate,
|
|
3414
|
+
deserializeAndSanitize: _ensureBoolean
|
|
3415
|
+
};
|
|
3416
|
+
}, _ensureBoolean = (val9) => typeof val9 == "boolean" ? val9 : void 0;
|
|
3417
|
+
function leftInterpolate(left) {
|
|
3418
|
+
return left;
|
|
3419
|
+
}
|
|
3420
|
+
var string = (defaultValue, opts = {}) => {
|
|
3421
|
+
var _a;
|
|
3422
|
+
return {
|
|
3423
|
+
type: "string",
|
|
3424
|
+
default: defaultValue,
|
|
3425
|
+
valueType: null,
|
|
3426
|
+
[propTypeSymbol]: "TheatrePropType",
|
|
3427
|
+
label: opts.label,
|
|
3428
|
+
interpolate: (_a = opts.interpolate) != null ? _a : leftInterpolate,
|
|
3429
|
+
deserializeAndSanitize: _ensureString
|
|
3430
|
+
};
|
|
3431
|
+
};
|
|
3432
|
+
function _ensureString(s) {
|
|
3433
|
+
return typeof s == "string" ? s : void 0;
|
|
3434
|
+
}
|
|
3435
|
+
function stringLiteral(defaultValue, valuesAndLabels, opts = {}) {
|
|
3436
|
+
var _a, _b;
|
|
3437
|
+
return {
|
|
3438
|
+
type: "stringLiteral",
|
|
3439
|
+
default: defaultValue,
|
|
3440
|
+
valuesAndLabels: __spreadValues({}, valuesAndLabels),
|
|
3441
|
+
[propTypeSymbol]: "TheatrePropType",
|
|
3442
|
+
valueType: null,
|
|
3443
|
+
as: (_a = opts.as) != null ? _a : "menu",
|
|
3444
|
+
label: opts.label,
|
|
3445
|
+
interpolate: (_b = opts.interpolate) != null ? _b : leftInterpolate,
|
|
3446
|
+
deserializeAndSanitize(json) {
|
|
3447
|
+
if (typeof json == "string" && Object.prototype.hasOwnProperty.call(valuesAndLabels, json))
|
|
3448
|
+
return json;
|
|
3449
|
+
}
|
|
3450
|
+
};
|
|
3451
|
+
}
|
|
3452
|
+
var defaultNumberNudgeFn = ({
|
|
3453
|
+
config,
|
|
3454
|
+
deltaX,
|
|
3455
|
+
deltaFraction,
|
|
3456
|
+
magnitude
|
|
3457
|
+
}) => {
|
|
3458
|
+
var _a;
|
|
3459
|
+
let { range } = config;
|
|
3460
|
+
return !config.nudgeMultiplier && range && !range.includes(1 / 0) && !range.includes(-1 / 0) ? deltaFraction * (range[1] - range[0]) * magnitude : deltaX * magnitude * ((_a = config.nudgeMultiplier) != null ? _a : 1);
|
|
3461
|
+
};
|
|
3462
|
+
|
|
3463
|
+
// src/sheets/TheatreSheet.ts
|
|
3464
|
+
var import_errors4 = require("@theatre/utils/errors"), import_slashedPaths = require("@theatre/utils/slashedPaths"), import_userReadableTypeOfValue3 = __toESM(require("@theatre/utils/userReadableTypeOfValue")), import_fast_deep_equal = __toESM(require_fast_deep_equal()), import_notify4 = require("@theatre/shared/notify");
|
|
3465
|
+
var TheatreSheet = class {
|
|
3466
|
+
get type() {
|
|
3467
|
+
return "Theatre_Sheet_PublicAPI";
|
|
3468
|
+
}
|
|
3469
|
+
/**
|
|
3470
|
+
* @internal
|
|
3471
|
+
*/
|
|
3472
|
+
constructor(sheet) {
|
|
3473
|
+
setPrivateAPI(this, sheet);
|
|
3474
|
+
}
|
|
3475
|
+
object(key, config, opts) {
|
|
3476
|
+
let internal = privateAPI(this), sanitizedPath = (0, import_slashedPaths.validateAndSanitiseSlashedPathOrThrow)(
|
|
3477
|
+
key,
|
|
3478
|
+
"sheet.object",
|
|
3479
|
+
import_notify4.notify.warning
|
|
3480
|
+
), existingObject = internal.getObject(sanitizedPath), nativeObject = null, actions = opts == null ? void 0 : opts.__actions__THIS_API_IS_UNSTABLE_AND_WILL_CHANGE_IN_THE_NEXT_VERSION;
|
|
3481
|
+
if (existingObject)
|
|
3482
|
+
return actions && existingObject.template._temp_setActions(actions), existingObject.publicApi;
|
|
3483
|
+
{
|
|
3484
|
+
let sanitizedConfig = compound(config);
|
|
3485
|
+
return internal.createObject(
|
|
3486
|
+
sanitizedPath,
|
|
3487
|
+
nativeObject,
|
|
3488
|
+
sanitizedConfig,
|
|
3489
|
+
actions
|
|
3490
|
+
).publicApi;
|
|
3491
|
+
}
|
|
3492
|
+
}
|
|
3493
|
+
__experimental_getExistingObject(key) {
|
|
3494
|
+
let internal = privateAPI(this), sanitizedPath = (0, import_slashedPaths.validateAndSanitiseSlashedPathOrThrow)(
|
|
3495
|
+
key,
|
|
3496
|
+
"sheet.object"
|
|
3497
|
+
), existingObject = internal.getObject(sanitizedPath);
|
|
3498
|
+
return existingObject == null ? void 0 : existingObject.publicApi;
|
|
3499
|
+
}
|
|
3500
|
+
get sequence() {
|
|
3501
|
+
return privateAPI(this).getSequence().publicApi;
|
|
3502
|
+
}
|
|
3503
|
+
get project() {
|
|
3504
|
+
return privateAPI(this).project.publicApi;
|
|
3505
|
+
}
|
|
3506
|
+
get address() {
|
|
3507
|
+
return __spreadValues({}, privateAPI(this).address);
|
|
3508
|
+
}
|
|
3509
|
+
detachObject(key) {
|
|
3510
|
+
let internal = privateAPI(this), sanitizedPath = (0, import_slashedPaths.validateAndSanitiseSlashedPathOrThrow)(
|
|
3511
|
+
key,
|
|
3512
|
+
'sheet.deleteObject("'.concat(key, '")'),
|
|
3513
|
+
import_notify4.notify.warning
|
|
3514
|
+
);
|
|
3515
|
+
if (!internal.getObject(sanitizedPath)) {
|
|
3516
|
+
import_notify4.notify.warning(
|
|
3517
|
+
"Couldn't delete object \"".concat(sanitizedPath, '"'),
|
|
3518
|
+
'There is no object with key "'.concat(sanitizedPath, '".\n\nTo fix this, make sure you are calling `sheet.deleteObject("').concat(sanitizedPath, '")` with the correct key.')
|
|
3519
|
+
), console.warn('Object key "'.concat(sanitizedPath, '" does not exist.'));
|
|
3520
|
+
return;
|
|
3521
|
+
}
|
|
3522
|
+
internal.deleteObject(sanitizedPath);
|
|
3523
|
+
}
|
|
3524
|
+
};
|
|
3525
|
+
|
|
3526
|
+
// src/sheets/Sheet.ts
|
|
3527
|
+
var import_dataverse13 = require("@theatre/dataverse");
|
|
3528
|
+
var Sheet = class {
|
|
3529
|
+
constructor(template, instanceId) {
|
|
3530
|
+
this.template = template;
|
|
3531
|
+
this.instanceId = instanceId;
|
|
3532
|
+
__publicField(this, "_objects", new import_dataverse13.Atom({}));
|
|
3533
|
+
__publicField(this, "_sequence");
|
|
3534
|
+
__publicField(this, "address");
|
|
3535
|
+
__publicField(this, "publicApi");
|
|
3536
|
+
__publicField(this, "project");
|
|
3537
|
+
__publicField(this, "objectsP", this._objects.pointer);
|
|
3538
|
+
__publicField(this, "type", "Theatre_Sheet");
|
|
3539
|
+
this.project = template.project, this.address = __spreadProps(__spreadValues({}, template.address), {
|
|
3540
|
+
sheetInstanceId: this.instanceId
|
|
3541
|
+
}), this.publicApi = new TheatreSheet(this);
|
|
3542
|
+
}
|
|
3543
|
+
/**
|
|
3544
|
+
* @remarks At some point, we have to reconcile the concept of "an object"
|
|
3545
|
+
* with that of "an element."
|
|
3546
|
+
*/
|
|
3547
|
+
createObject(objectKey, nativeObject, config, actions = {}) {
|
|
3548
|
+
let object = this.template.getObjectTemplate(
|
|
3549
|
+
objectKey,
|
|
3550
|
+
nativeObject,
|
|
3551
|
+
config,
|
|
3552
|
+
actions
|
|
3553
|
+
).createInstance(this, nativeObject, config);
|
|
3554
|
+
return this._objects.setByPointer((p) => p[objectKey], object), object;
|
|
3555
|
+
}
|
|
3556
|
+
getObject(key) {
|
|
3557
|
+
return this._objects.get()[key];
|
|
3558
|
+
}
|
|
3559
|
+
deleteObject(objectKey) {
|
|
3560
|
+
this._objects.reduce((state) => {
|
|
3561
|
+
let newState = __spreadValues({}, state);
|
|
3562
|
+
return delete newState[objectKey], newState;
|
|
3563
|
+
});
|
|
3564
|
+
}
|
|
3565
|
+
getSequence() {
|
|
3566
|
+
if (!this._sequence) {
|
|
3567
|
+
let lengthD = (0, import_dataverse13.prism)(() => {
|
|
3568
|
+
let unsanitized = (0, import_dataverse13.val)(
|
|
3569
|
+
this.project.pointers.historic.sheetsById[this.address.sheetId].sequence.length
|
|
3570
|
+
);
|
|
3571
|
+
return sanitizeSequenceLength(unsanitized);
|
|
3572
|
+
}), subUnitsPerUnitD = (0, import_dataverse13.prism)(() => {
|
|
3573
|
+
let unsanitized = (0, import_dataverse13.val)(
|
|
3574
|
+
this.project.pointers.historic.sheetsById[this.address.sheetId].sequence.subUnitsPerUnit
|
|
3575
|
+
);
|
|
3576
|
+
return sanitizeSequenceSubUnitsPerUnit(unsanitized);
|
|
3577
|
+
});
|
|
3578
|
+
this._sequence = new Sequence(
|
|
3579
|
+
this.template.project,
|
|
3580
|
+
this,
|
|
3581
|
+
lengthD,
|
|
3582
|
+
subUnitsPerUnitD
|
|
3583
|
+
);
|
|
3584
|
+
}
|
|
3585
|
+
return this._sequence;
|
|
3586
|
+
}
|
|
3587
|
+
}, sanitizeSequenceLength = (len) => typeof len == "number" && isFinite(len) && len > 0 ? len : 10, sanitizeSequenceSubUnitsPerUnit = (subs) => typeof subs == "number" && isInteger_default(subs) && subs >= 1 && subs <= 1e3 ? subs : 30;
|
|
3588
|
+
|
|
3589
|
+
// src/sheets/SheetTemplate.ts
|
|
3590
|
+
var SheetTemplate = class {
|
|
3591
|
+
constructor(project, sheetId) {
|
|
3592
|
+
this.project = project;
|
|
3593
|
+
__publicField(this, "type", "Theatre_SheetTemplate");
|
|
3594
|
+
__publicField(this, "address");
|
|
3595
|
+
__publicField(this, "_instances", new import_dataverse14.Atom({}));
|
|
3596
|
+
__publicField(this, "instancesP", this._instances.pointer);
|
|
3597
|
+
__publicField(this, "_objectTemplates", new import_dataverse14.Atom({}));
|
|
3598
|
+
__publicField(this, "objectTemplatesP", this._objectTemplates.pointer);
|
|
3599
|
+
this.address = __spreadProps(__spreadValues({}, project.address), { sheetId });
|
|
3600
|
+
}
|
|
3601
|
+
getInstance(instanceId) {
|
|
3602
|
+
let inst = this._instances.get()[instanceId];
|
|
3603
|
+
return inst || (inst = new Sheet(this, instanceId), this._instances.setByPointer((p) => p[instanceId], inst)), inst;
|
|
3604
|
+
}
|
|
3605
|
+
getObjectTemplate(objectKey, nativeObject, config, actions) {
|
|
3606
|
+
let template = this._objectTemplates.get()[objectKey];
|
|
3607
|
+
return template || (template = new SheetObjectTemplate(
|
|
3608
|
+
this,
|
|
3609
|
+
objectKey,
|
|
3610
|
+
nativeObject,
|
|
3611
|
+
config,
|
|
3612
|
+
actions
|
|
3613
|
+
), this._objectTemplates.setByPointer((p) => p[objectKey], template)), template;
|
|
3614
|
+
}
|
|
3615
|
+
};
|
|
3616
|
+
|
|
3617
|
+
// src/projects/Project.ts
|
|
3618
|
+
var import_dataverse16 = require("@theatre/dataverse"), import_dataverse17 = require("@theatre/dataverse");
|
|
3619
|
+
|
|
3620
|
+
// src/projects/initialiseProjectState.ts
|
|
3621
|
+
var import_delay = __toESM(require("@theatre/utils/delay"));
|
|
3622
|
+
var import_dataverse15 = require("@theatre/dataverse");
|
|
3623
|
+
async function initialiseProjectState(studio, project, onDiskState) {
|
|
3624
|
+
await (0, import_delay.default)(0);
|
|
3625
|
+
let projectId = project.address.projectId;
|
|
3626
|
+
studio.ephemeralAtom.setByPointer(
|
|
3627
|
+
(p) => p.coreByProject[projectId],
|
|
3628
|
+
{
|
|
3629
|
+
lastExportedObject: null,
|
|
3630
|
+
loadingState: { type: "loading" }
|
|
3631
|
+
}
|
|
3632
|
+
);
|
|
3633
|
+
let browserState = (0, import_dataverse15.val)(studio.atomP.historic.coreByProject[projectId]);
|
|
3634
|
+
browserState ? onDiskState && browserState.revisionHistory.indexOf(onDiskState.revisionHistory[0]) == -1 ? browserStateIsNotBasedOnDiskState(onDiskState) : useBrowserState() : onDiskState ? useOnDiskState(onDiskState) : useInitialState();
|
|
3635
|
+
function useInitialState() {
|
|
3636
|
+
studio.transaction(({ stateEditors }) => {
|
|
3637
|
+
stateEditors.coreByProject.historic.setProjectState({
|
|
3638
|
+
projectId,
|
|
3639
|
+
state: {
|
|
3640
|
+
sheetsById: {},
|
|
3641
|
+
definitionVersion: globals.currentProjectStateDefinitionVersion,
|
|
3642
|
+
revisionHistory: []
|
|
3643
|
+
}
|
|
3644
|
+
});
|
|
3645
|
+
}, !1), studio.ephemeralAtom.setByPointer(
|
|
3646
|
+
(p) => p.coreByProject[projectId].loadingState,
|
|
3647
|
+
{
|
|
3648
|
+
type: "loaded"
|
|
3649
|
+
}
|
|
3650
|
+
);
|
|
3651
|
+
}
|
|
3652
|
+
function useOnDiskState(state) {
|
|
3653
|
+
studio.transaction(({ stateEditors }) => {
|
|
3654
|
+
stateEditors.coreByProject.historic.setProjectState({
|
|
3655
|
+
projectId,
|
|
3656
|
+
state
|
|
3657
|
+
});
|
|
3658
|
+
}), studio.ephemeralAtom.setByPointer(
|
|
3659
|
+
(p) => p.coreByProject[projectId].loadingState,
|
|
3660
|
+
{
|
|
3661
|
+
type: "loaded"
|
|
3662
|
+
}
|
|
3663
|
+
);
|
|
3664
|
+
}
|
|
3665
|
+
function useBrowserState() {
|
|
3666
|
+
studio.ephemeralAtom.setByPointer(
|
|
3667
|
+
(p) => p.coreByProject[projectId].loadingState,
|
|
3668
|
+
{
|
|
3669
|
+
type: "loaded"
|
|
3670
|
+
}
|
|
3671
|
+
);
|
|
3672
|
+
}
|
|
3673
|
+
function browserStateIsNotBasedOnDiskState(onDiskState2) {
|
|
3674
|
+
studio.ephemeralAtom.setByPointer(
|
|
3675
|
+
(p) => p.coreByProject[projectId].loadingState,
|
|
3676
|
+
{
|
|
3677
|
+
type: "browserStateIsNotBasedOnDiskState",
|
|
3678
|
+
onDiskState: onDiskState2
|
|
3679
|
+
}
|
|
3680
|
+
);
|
|
3681
|
+
}
|
|
3682
|
+
}
|
|
3683
|
+
|
|
3684
|
+
// src/projects/Project.ts
|
|
3685
|
+
var import_defer4 = require("@theatre/utils/defer");
|
|
3686
|
+
var import_errors5 = require("@theatre/utils/errors"), import_userReadableTypeOfValue4 = __toESM(require("@theatre/utils/userReadableTypeOfValue"));
|
|
3687
|
+
var Project = class {
|
|
3688
|
+
constructor(id, config = {}, publicApi) {
|
|
3689
|
+
this.config = config;
|
|
3690
|
+
this.publicApi = publicApi;
|
|
3691
|
+
__publicField(this, "pointers");
|
|
3692
|
+
__publicField(this, "_pointerProxies");
|
|
3693
|
+
__publicField(this, "address");
|
|
3694
|
+
__publicField(this, "_studioReadyDeferred");
|
|
3695
|
+
__publicField(this, "_assetStorageReadyDeferred");
|
|
3696
|
+
__publicField(this, "_readyPromise");
|
|
3697
|
+
__publicField(this, "_sheetTemplates", new import_dataverse17.Atom({}));
|
|
3698
|
+
__publicField(this, "sheetTemplatesP", this._sheetTemplates.pointer);
|
|
3699
|
+
__publicField(this, "_studio");
|
|
3700
|
+
__publicField(this, "assetStorage");
|
|
3701
|
+
__publicField(this, "type", "Theatre_Project");
|
|
3702
|
+
var _a;
|
|
3703
|
+
this.address = { projectId: id };
|
|
3704
|
+
let onDiskEphemeralAtom = new import_dataverse17.Atom({
|
|
3705
|
+
loadingState: {
|
|
3706
|
+
type: "loaded"
|
|
3707
|
+
},
|
|
3708
|
+
lastExportedObject: null
|
|
3709
|
+
}), onDiskStateAtom = new import_dataverse17.Atom({
|
|
3710
|
+
historic: (_a = config.state) != null ? _a : {
|
|
3711
|
+
sheetsById: {},
|
|
3712
|
+
definitionVersion: globals.currentProjectStateDefinitionVersion,
|
|
3713
|
+
revisionHistory: []
|
|
3714
|
+
}
|
|
3715
|
+
});
|
|
3716
|
+
this._assetStorageReadyDeferred = (0, import_defer4.defer)(), this.assetStorage = {
|
|
3717
|
+
getAssetUrl: (assetId) => {
|
|
3718
|
+
var _a2;
|
|
3719
|
+
return "".concat((_a2 = config.assets) == null ? void 0 : _a2.baseUrl, "/").concat(assetId);
|
|
3720
|
+
},
|
|
3721
|
+
// Until the asset storage is ready, we'll throw an error when the user tries to use it
|
|
3722
|
+
createAsset: () => {
|
|
3723
|
+
throw new Error("Please wait for Project.ready to use assets.");
|
|
3724
|
+
}
|
|
3725
|
+
}, this._pointerProxies = {
|
|
3726
|
+
historic: new import_dataverse16.PointerProxy(onDiskStateAtom.pointer.historic),
|
|
3727
|
+
ephemeral: new import_dataverse16.PointerProxy(onDiskEphemeralAtom.pointer)
|
|
3728
|
+
}, this.pointers = {
|
|
3729
|
+
historic: this._pointerProxies.historic.pointer,
|
|
3730
|
+
ephemeral: this._pointerProxies.ephemeral.pointer
|
|
3731
|
+
}, projectsSingleton_default.add(id, this), this._studioReadyDeferred = (0, import_defer4.defer)(), this._readyPromise = Promise.all([
|
|
3732
|
+
this._studioReadyDeferred.promise,
|
|
3733
|
+
this._assetStorageReadyDeferred.promise
|
|
3734
|
+
// hide the array from the user, i.e. make it Promise<void> instead of Promise<[undefined, undefined]>
|
|
3735
|
+
]).then(() => {
|
|
3736
|
+
}), config.state ? setTimeout(() => {
|
|
3737
|
+
this._studio || (this._studioReadyDeferred.resolve(void 0), this._assetStorageReadyDeferred.resolve(void 0));
|
|
3738
|
+
}, 0) : typeof window > "u" ? console.error(
|
|
3739
|
+
'Argument config.state in Theatre.getProject("'.concat(id, '", config) is empty. ') + "You can safely ignore this message if you're developing a Next.js/Remix project in development mode. But if you are shipping to your end-users, then you need to set config.state, otherwise your project's state will be empty and nothing will animate. Learn more at https://www.theatrejs.com/docs/latest/manual/projects#state"
|
|
3740
|
+
) : setTimeout(() => {
|
|
3741
|
+
if (!this._studio)
|
|
3742
|
+
throw new Error(
|
|
3743
|
+
'Argument config.state in Theatre.getProject("'.concat(id, '", config) is empty. This is fine ') + "while you are using @theatre/core along with @theatre/studio. But since @theatre/studio " + 'is not loaded, the state of project "'.concat(id, '" will be empty.\n\n') + "To fix this, you need to add @theatre/studio into the bundle and export the project's state. Learn how to do that at https://www.theatrejs.com/docs/latest/manual/projects#state\n"
|
|
3744
|
+
);
|
|
3745
|
+
}, 1e3);
|
|
3746
|
+
}
|
|
3747
|
+
attachToStudio(studio) {
|
|
3748
|
+
if (this._studio) {
|
|
3749
|
+
if (this._studio !== studio)
|
|
3750
|
+
throw new Error(
|
|
3751
|
+
"Project ".concat(this.address.projectId, " is already attached to studio ").concat(this._studio.address.studioId)
|
|
3752
|
+
);
|
|
3753
|
+
console.warn(
|
|
3754
|
+
"Project ".concat(this.address.projectId, " is already attached to studio ").concat(this._studio.address.studioId)
|
|
3755
|
+
);
|
|
3756
|
+
return;
|
|
3757
|
+
}
|
|
3758
|
+
this._studio = studio, studio.initialized.then(async () => {
|
|
3759
|
+
var _a;
|
|
3760
|
+
await initialiseProjectState(studio, this, this.config.state), this._pointerProxies.historic.setPointer(
|
|
3761
|
+
studio.atomP.historic.coreByProject[this.address.projectId]
|
|
3762
|
+
), this._pointerProxies.ephemeral.setPointer(
|
|
3763
|
+
studio.ephemeralAtom.pointer.coreByProject[this.address.projectId]
|
|
3764
|
+
), await studio.createAssetStorage(this, (_a = this.config.assets) == null ? void 0 : _a.baseUrl).then((assetStorage) => {
|
|
3765
|
+
this.assetStorage = assetStorage, this._assetStorageReadyDeferred.resolve(void 0);
|
|
3766
|
+
}), this._studioReadyDeferred.resolve(void 0);
|
|
3767
|
+
}).catch((err) => {
|
|
3768
|
+
throw console.error(err), err;
|
|
3769
|
+
});
|
|
3770
|
+
}
|
|
3771
|
+
get isAttachedToStudio() {
|
|
3772
|
+
return !!this._studio;
|
|
3773
|
+
}
|
|
3774
|
+
get ready() {
|
|
3775
|
+
return this._readyPromise;
|
|
3776
|
+
}
|
|
3777
|
+
isReady() {
|
|
3778
|
+
return this._studioReadyDeferred.status === "resolved" && this._assetStorageReadyDeferred.status === "resolved";
|
|
3779
|
+
}
|
|
3780
|
+
getOrCreateSheet(sheetId, instanceId = "default") {
|
|
3781
|
+
let template = this._sheetTemplates.get()[sheetId];
|
|
3782
|
+
return template || (template = new SheetTemplate(this, sheetId), this._sheetTemplates.reduce((s) => __spreadProps(__spreadValues({}, s), { [sheetId]: template }))), template.getInstance(instanceId);
|
|
3783
|
+
}
|
|
3784
|
+
}, shallowValidateOnDiskState = (projectId, s) => {
|
|
3785
|
+
if (Array.isArray(s) || s == null || s.definitionVersion !== globals.currentProjectStateDefinitionVersion)
|
|
3786
|
+
throw new import_errors5.InvalidArgumentError(
|
|
3787
|
+
"Error validating conf.state in Theatre.getProject(".concat(JSON.stringify(
|
|
3788
|
+
projectId
|
|
3789
|
+
), ", conf). The state seems to be formatted in a way that is unreadable to Theatre.js. Read more at https://www.theatrejs.com/docs/latest/manual/projects#state")
|
|
3790
|
+
);
|
|
3791
|
+
}, deepValidateOnDiskState = (projectId, s) => {
|
|
3792
|
+
shallowValidateOnDiskState(projectId, s);
|
|
3793
|
+
};
|
|
3794
|
+
|
|
3795
|
+
// src/projects/TheatreProject.ts
|
|
3796
|
+
var import_sanitizers = require("@theatre/utils/sanitizers"), import_slashedPaths2 = require("@theatre/utils/slashedPaths");
|
|
3797
|
+
var TheatreProject = class {
|
|
3798
|
+
get type() {
|
|
3799
|
+
return "Theatre_Project_PublicAPI";
|
|
3800
|
+
}
|
|
3801
|
+
/**
|
|
3802
|
+
* @internal
|
|
3803
|
+
*/
|
|
3804
|
+
constructor(id, config = {}) {
|
|
3805
|
+
setPrivateAPI(this, new Project(id, config, this));
|
|
3806
|
+
}
|
|
3807
|
+
get ready() {
|
|
3808
|
+
return privateAPI(this).ready;
|
|
3809
|
+
}
|
|
3810
|
+
get isReady() {
|
|
3811
|
+
return privateAPI(this).isReady();
|
|
3812
|
+
}
|
|
3813
|
+
get address() {
|
|
3814
|
+
return __spreadValues({}, privateAPI(this).address);
|
|
3815
|
+
}
|
|
3816
|
+
getAssetUrl(asset) {
|
|
3817
|
+
if (!this.isReady) {
|
|
3818
|
+
console.error(
|
|
3819
|
+
"Calling `project.getAssetUrl()` before `project.ready` is resolved, will always return `undefined`. Either use `project.ready.then(() => project.getAssetUrl())` or `await project.ready` before calling `project.getAssetUrl()`."
|
|
3820
|
+
);
|
|
3821
|
+
return;
|
|
3822
|
+
}
|
|
3823
|
+
return asset.id ? privateAPI(this).assetStorage.getAssetUrl(asset.id) : void 0;
|
|
3824
|
+
}
|
|
3825
|
+
sheet(sheetId, instanceId = "default") {
|
|
3826
|
+
let sanitizedPath = (0, import_slashedPaths2.validateAndSanitiseSlashedPathOrThrow)(
|
|
3827
|
+
sheetId,
|
|
3828
|
+
"project.sheet",
|
|
3829
|
+
notify.warning
|
|
3830
|
+
);
|
|
3831
|
+
return privateAPI(this).getOrCreateSheet(
|
|
3832
|
+
sanitizedPath,
|
|
3833
|
+
instanceId
|
|
3834
|
+
).publicApi;
|
|
3835
|
+
}
|
|
3836
|
+
};
|
|
3837
|
+
|
|
3838
|
+
// src/coreExports.ts
|
|
3839
|
+
var import_sanitizers2 = require("@theatre/utils/sanitizers"), import_fast_deep_equal2 = __toESM(require_fast_deep_equal()), import_dataverse18 = require("@theatre/dataverse"), import_dataverse19 = require("@theatre/dataverse");
|
|
3840
|
+
|
|
3841
|
+
// src/utils/ids.ts
|
|
3842
|
+
var ids_exports = {};
|
|
3843
|
+
__export(ids_exports, {
|
|
3844
|
+
asKeyframeId: () => asKeyframeId,
|
|
3845
|
+
asSequenceTrackId: () => asSequenceTrackId
|
|
3846
|
+
});
|
|
3847
|
+
function asKeyframeId(s) {
|
|
3848
|
+
return s;
|
|
3849
|
+
}
|
|
3850
|
+
function asSequenceTrackId(s) {
|
|
3851
|
+
return s;
|
|
3852
|
+
}
|
|
3853
|
+
|
|
3854
|
+
// src/coreExports.ts
|
|
3855
|
+
var __private = {
|
|
3856
|
+
propTypeUtils: utils_exports,
|
|
3857
|
+
ids: ids_exports,
|
|
3858
|
+
instanceTypes: instanceTypes_exports,
|
|
3859
|
+
keyframeUtils: keyframeUtils_exports,
|
|
3860
|
+
currentProjectStateDefinitionVersion: globals.currentProjectStateDefinitionVersion
|
|
3861
|
+
};
|
|
3862
|
+
function getProject(id, config = {}) {
|
|
3863
|
+
let existingProject = projectsSingleton_default.get(id);
|
|
3864
|
+
return existingProject ? existingProject.publicApi : (config.state && deepValidateOnDiskState(id, config.state), new TheatreProject(id, config));
|
|
3865
|
+
}
|
|
3866
|
+
function onChange(pointer3, callback, rafDriver) {
|
|
3867
|
+
let ticker = rafDriver ? privateAPI(rafDriver).ticker : getCoreTicker();
|
|
3868
|
+
if ((0, import_dataverse18.isPointer)(pointer3))
|
|
3869
|
+
return (0, import_dataverse19.pointerToPrism)(pointer3).onChange(ticker, callback, !0);
|
|
3870
|
+
if ((0, import_dataverse19.isPrism)(pointer3))
|
|
3871
|
+
return pointer3.onChange(ticker, callback, !0);
|
|
3872
|
+
throw new Error(
|
|
3873
|
+
"Called onChange(p) where p is neither a pointer nor a prism."
|
|
3874
|
+
);
|
|
3875
|
+
}
|
|
3876
|
+
function val8(pointer3) {
|
|
3877
|
+
if ((0, import_dataverse18.isPointer)(pointer3))
|
|
3878
|
+
return (0, import_dataverse19.pointerToPrism)(pointer3).getValue();
|
|
3879
|
+
throw new Error("Called val(p) where p is not a pointer.");
|
|
3880
|
+
}
|
|
3881
|
+
|
|
3882
|
+
// src/index.ts
|
|
3883
|
+
var import_defer5 = require("@theatre/utils/defer");
|
|
3884
|
+
|
|
3885
|
+
// src/env.ts
|
|
3886
|
+
var env = process.env;
|
|
3887
|
+
|
|
3888
|
+
// src/CoreBundle.ts
|
|
3889
|
+
var CoreBundle = class {
|
|
3890
|
+
constructor(_opts) {
|
|
3891
|
+
this._opts = _opts;
|
|
3892
|
+
__publicField(this, "_studio");
|
|
3893
|
+
}
|
|
3894
|
+
get type() {
|
|
3895
|
+
return "Theatre_CoreBundle";
|
|
3896
|
+
}
|
|
3897
|
+
get version() {
|
|
3898
|
+
return env.THEATRE_VERSION;
|
|
3899
|
+
}
|
|
3900
|
+
getBitsForStudio(studio, callback) {
|
|
3901
|
+
if (this._studio)
|
|
3902
|
+
throw new Error("@theatre/core is already attached to @theatre/studio");
|
|
3903
|
+
this._studio = studio;
|
|
3904
|
+
let bits = {
|
|
3905
|
+
projectsP: projectsSingleton_default.atom.pointer.projects,
|
|
3906
|
+
privateAPI,
|
|
3907
|
+
coreExports: coreExports_exports,
|
|
3908
|
+
getCoreRafDriver
|
|
3909
|
+
};
|
|
3910
|
+
callback(bits), this._opts.onAttach(studio);
|
|
3911
|
+
}
|
|
3912
|
+
};
|
|
3913
|
+
|
|
3914
|
+
// src/index.ts
|
|
3915
|
+
var studioDeferred = (0, import_defer5.defer)();
|
|
3916
|
+
async function getStudio() {
|
|
3917
|
+
return (await studioDeferred.promise).publicApi;
|
|
3918
|
+
}
|
|
3919
|
+
function getStudioSync(errorIfNotReady = !1) {
|
|
3920
|
+
if (studioDeferred.status !== "resolved") {
|
|
3921
|
+
if (errorIfNotReady)
|
|
3922
|
+
throw new Error("Studio is not ready yet.");
|
|
3923
|
+
return;
|
|
3924
|
+
}
|
|
3925
|
+
return studioDeferred.currentValue.publicApi;
|
|
3926
|
+
}
|
|
3927
|
+
var initCalled = !1, initOptsDeferred = (0, import_defer5.defer)();
|
|
3928
|
+
async function init(opts) {
|
|
3929
|
+
initCalled || (initCalled = !0, initOptsDeferred.resolve(opts));
|
|
3930
|
+
}
|
|
3931
|
+
var theatre = { getStudio, getStudioSync, init }, src_default = theatre;
|
|
3932
|
+
registerCoreBundle();
|
|
3933
|
+
function registerCoreBundle() {
|
|
3934
|
+
if (typeof window > "u" && global.__THEATREJS__FORCE_CONNECT_CORE_AND_STUDIO !== !0)
|
|
3935
|
+
return;
|
|
3936
|
+
let globalContext = typeof window < "u" ? window : global, existingBundle = (
|
|
3937
|
+
// @ts-ignore ignore
|
|
3938
|
+
globalContext[globalVariableNames.coreBundle]
|
|
3939
|
+
);
|
|
3940
|
+
if (typeof existingBundle < "u")
|
|
3941
|
+
throw typeof existingBundle == "object" && existingBundle && typeof existingBundle.version == "string" ? new Error(
|
|
3942
|
+
"It seems that the module '@theatre/core' is loaded more than once. This could have two possible causes:\n1. You might have two separate versions of Theatre.js in node_modules.\n2. Or this might be a bundling misconfiguration, in case you're using a bundler like Webpack/ESBuild/Rollup.\n\nNote that it **is okay** to import '@theatre/core' multiple times. But those imports should point to the same module."
|
|
3943
|
+
) : new Error(
|
|
3944
|
+
"The variable window.".concat(globalVariableNames.coreBundle, " seems to be already set by a module other than @theatre/core.")
|
|
3945
|
+
);
|
|
3946
|
+
let coreBundle = new CoreBundle({
|
|
3947
|
+
onAttach: (s) => {
|
|
3948
|
+
initOptsDeferred.promise.then((opts) => {
|
|
3949
|
+
s.initialize(opts), studioDeferred.resolve(s);
|
|
3950
|
+
});
|
|
3951
|
+
}
|
|
3952
|
+
});
|
|
3953
|
+
globalContext[globalVariableNames.coreBundle] = coreBundle;
|
|
3954
|
+
let possibleExistingStudioBundle = (
|
|
3955
|
+
// @ts-ignore ignore
|
|
3956
|
+
globalContext[globalVariableNames.studioBundle]
|
|
3957
|
+
);
|
|
3958
|
+
possibleExistingStudioBundle && possibleExistingStudioBundle !== null && possibleExistingStudioBundle.type === "Theatre_StudioBundle" && possibleExistingStudioBundle.registerCoreBundle(coreBundle);
|
|
3959
|
+
}
|
|
3960
|
+
/*! Bundled license information:
|
|
3961
|
+
|
|
3962
|
+
lodash-es/lodash.js:
|
|
3963
|
+
(**
|
|
3964
|
+
* @license
|
|
3965
|
+
* Lodash (Custom Build) <https://lodash.com/>
|
|
3966
|
+
* Build: `lodash modularize exports="es" -o ./`
|
|
3967
|
+
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
|
|
3968
|
+
* Released under MIT license <https://lodash.com/license>
|
|
3969
|
+
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
|
3970
|
+
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
|
3971
|
+
*)
|
|
3972
|
+
*/
|
|
3973
|
+
//# sourceMappingURL=index.js.map
|