@spearwolf/shadow-objects 0.1.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 +13 -0
- package/README.md +69 -0
- package/bundle.js +70 -0
- package/package.json +58 -0
- package/src/bundle.d.ts +7 -0
- package/src/bundle.d.ts.map +1 -0
- package/src/bundle.js +5 -0
- package/src/bundle.js.map +1 -0
- package/src/constants.d.ts +39 -0
- package/src/constants.d.ts.map +1 -0
- package/src/constants.js +40 -0
- package/src/constants.js.map +1 -0
- package/src/create-worker.bundle.d.ts +3 -0
- package/src/create-worker.bundle.d.ts.map +1 -0
- package/src/create-worker.bundle.js +6 -0
- package/src/create-worker.bundle.js.map +1 -0
- package/src/create-worker.d.ts +3 -0
- package/src/create-worker.d.ts.map +1 -0
- package/src/create-worker.js +2 -0
- package/src/create-worker.js.map +1 -0
- package/src/elements/ShaeElement.d.ts +13 -0
- package/src/elements/ShaeElement.d.ts.map +1 -0
- package/src/elements/ShaeElement.js +58 -0
- package/src/elements/ShaeElement.js.map +1 -0
- package/src/elements/ShaeEntElement.d.ts +23 -0
- package/src/elements/ShaeEntElement.d.ts.map +1 -0
- package/src/elements/ShaeEntElement.js +258 -0
- package/src/elements/ShaeEntElement.js.map +1 -0
- package/src/elements/ShaePropElement.d.ts +26 -0
- package/src/elements/ShaePropElement.d.ts.map +1 -0
- package/src/elements/ShaePropElement.js +321 -0
- package/src/elements/ShaePropElement.js.map +1 -0
- package/src/elements/ShaeWorkerElement.d.ts +25 -0
- package/src/elements/ShaeWorkerElement.d.ts.map +1 -0
- package/src/elements/ShaeWorkerElement.js +208 -0
- package/src/elements/ShaeWorkerElement.js.map +1 -0
- package/src/elements/constants.d.ts +17 -0
- package/src/elements/constants.d.ts.map +1 -0
- package/src/elements/constants.js +21 -0
- package/src/elements/constants.js.map +1 -0
- package/src/elements/events.d.ts +24 -0
- package/src/elements/events.d.ts.map +1 -0
- package/src/elements/events.js +2 -0
- package/src/elements/events.js.map +1 -0
- package/src/entities/Entity.d.ts +46 -0
- package/src/entities/Entity.d.ts.map +1 -0
- package/src/entities/Entity.js +217 -0
- package/src/entities/Entity.js.map +1 -0
- package/src/entities/Kernel.d.ts +60 -0
- package/src/entities/Kernel.d.ts.map +1 -0
- package/src/entities/Kernel.js +361 -0
- package/src/entities/Kernel.js.map +1 -0
- package/src/entities/Registry.d.ts +16 -0
- package/src/entities/Registry.d.ts.map +1 -0
- package/src/entities/Registry.js +72 -0
- package/src/entities/Registry.js.map +1 -0
- package/src/entities/ShadowObject.d.ts +18 -0
- package/src/entities/ShadowObject.d.ts.map +1 -0
- package/src/entities/ShadowObject.js +24 -0
- package/src/entities/ShadowObject.js.map +1 -0
- package/src/entities/SignalsMap.d.ts +12 -0
- package/src/entities/SignalsMap.d.ts.map +1 -0
- package/src/entities/SignalsMap.js +34 -0
- package/src/entities/SignalsMap.js.map +1 -0
- package/src/entities/SignalsPath.d.ts +12 -0
- package/src/entities/SignalsPath.d.ts.map +1 -0
- package/src/entities/SignalsPath.js +73 -0
- package/src/entities/SignalsPath.js.map +1 -0
- package/src/entities/events.d.ts +27 -0
- package/src/entities/events.d.ts.map +1 -0
- package/src/entities/events.js +7 -0
- package/src/entities/events.js.map +1 -0
- package/src/entities/importModule.d.ts +4 -0
- package/src/entities/importModule.d.ts.map +1 -0
- package/src/entities/importModule.js +32 -0
- package/src/entities/importModule.js.map +1 -0
- package/src/index.d.ts +22 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +20 -0
- package/src/index.js.map +1 -0
- package/src/shadow-objects.d.ts +7 -0
- package/src/shadow-objects.d.ts.map +1 -0
- package/src/shadow-objects.js +6 -0
- package/src/shadow-objects.js.map +1 -0
- package/src/shadow-objects.worker.d.ts +2 -0
- package/src/shadow-objects.worker.d.ts.map +1 -0
- package/src/shadow-objects.worker.js +5 -0
- package/src/shadow-objects.worker.js.map +1 -0
- package/src/shae-ent.d.ts +2 -0
- package/src/shae-ent.d.ts.map +1 -0
- package/src/shae-ent.js +4 -0
- package/src/shae-ent.js.map +1 -0
- package/src/shae-prop.d.ts +2 -0
- package/src/shae-prop.d.ts.map +1 -0
- package/src/shae-prop.js +4 -0
- package/src/shae-prop.js.map +1 -0
- package/src/shae-worker.d.ts +2 -0
- package/src/shae-worker.d.ts.map +1 -0
- package/src/shae-worker.js +4 -0
- package/src/shae-worker.js.map +1 -0
- package/src/types.d.ts +89 -0
- package/src/types.d.ts.map +1 -0
- package/src/types.js +2 -0
- package/src/types.js.map +1 -0
- package/src/utils/FrameLoop.d.ts +8 -0
- package/src/utils/FrameLoop.d.ts.map +1 -0
- package/src/utils/FrameLoop.js +45 -0
- package/src/utils/FrameLoop.js.map +1 -0
- package/src/utils/array-utils.d.ts +11 -0
- package/src/utils/array-utils.d.ts.map +1 -0
- package/src/utils/array-utils.js +27 -0
- package/src/utils/array-utils.js.map +1 -0
- package/src/utils/attr-utils.d.ts +3 -0
- package/src/utils/attr-utils.d.ts.map +1 -0
- package/src/utils/attr-utils.js +12 -0
- package/src/utils/attr-utils.js.map +1 -0
- package/src/utils/constants.d.ts +2 -0
- package/src/utils/constants.d.ts.map +1 -0
- package/src/utils/constants.js +2 -0
- package/src/utils/constants.js.map +1 -0
- package/src/utils/generateUUID.d.ts +2 -0
- package/src/utils/generateUUID.d.ts.map +1 -0
- package/src/utils/generateUUID.js +34 -0
- package/src/utils/generateUUID.js.map +1 -0
- package/src/utils/props-utils.d.ts +8 -0
- package/src/utils/props-utils.d.ts.map +1 -0
- package/src/utils/props-utils.js +47 -0
- package/src/utils/props-utils.js.map +1 -0
- package/src/utils/toNamespace.d.ts +3 -0
- package/src/utils/toNamespace.d.ts.map +1 -0
- package/src/utils/toNamespace.js +3 -0
- package/src/utils/toNamespace.js.map +1 -0
- package/src/utils/toUrlString.d.ts +2 -0
- package/src/utils/toUrlString.d.ts.map +1 -0
- package/src/utils/toUrlString.js +7 -0
- package/src/utils/toUrlString.js.map +1 -0
- package/src/utils/waitForMessageOfType.d.ts +5 -0
- package/src/utils/waitForMessageOfType.d.ts.map +1 -0
- package/src/utils/waitForMessageOfType.js +34 -0
- package/src/utils/waitForMessageOfType.js.map +1 -0
- package/src/view/ComponentChanges.d.ts +30 -0
- package/src/view/ComponentChanges.d.ts.map +1 -0
- package/src/view/ComponentChanges.js +249 -0
- package/src/view/ComponentChanges.js.map +1 -0
- package/src/view/ComponentContext.d.ts +76 -0
- package/src/view/ComponentContext.d.ts.map +1 -0
- package/src/view/ComponentContext.js +344 -0
- package/src/view/ComponentContext.js.map +1 -0
- package/src/view/ComponentMemory.d.ts +8 -0
- package/src/view/ComponentMemory.d.ts.map +1 -0
- package/src/view/ComponentMemory.js +79 -0
- package/src/view/ComponentMemory.js.map +1 -0
- package/src/view/IShadowObjectEnvProxy.d.ts +10 -0
- package/src/view/IShadowObjectEnvProxy.d.ts.map +1 -0
- package/src/view/IShadowObjectEnvProxy.js +2 -0
- package/src/view/IShadowObjectEnvProxy.js.map +1 -0
- package/src/view/LocalShadowObjectEnv.d.ts +18 -0
- package/src/view/LocalShadowObjectEnv.d.ts.map +1 -0
- package/src/view/LocalShadowObjectEnv.js +55 -0
- package/src/view/LocalShadowObjectEnv.js.map +1 -0
- package/src/view/RemoteWorkerEnv.d.ts +15 -0
- package/src/view/RemoteWorkerEnv.d.ts.map +1 -0
- package/src/view/RemoteWorkerEnv.js +112 -0
- package/src/view/RemoteWorkerEnv.js.map +1 -0
- package/src/view/ShadowEnv.d.ts +30 -0
- package/src/view/ShadowEnv.d.ts.map +1 -0
- package/src/view/ShadowEnv.js +202 -0
- package/src/view/ShadowEnv.js.map +1 -0
- package/src/view/ViewComponent.d.ts +33 -0
- package/src/view/ViewComponent.d.ts.map +1 -0
- package/src/view/ViewComponent.js +130 -0
- package/src/view/ViewComponent.js.map +1 -0
- package/src/view/cloneChangeTrail.d.ts +3 -0
- package/src/view/cloneChangeTrail.d.ts.map +1 -0
- package/src/view/cloneChangeTrail.js +12 -0
- package/src/view/cloneChangeTrail.js.map +1 -0
- package/src/worker/MessageRouter.d.ts +14 -0
- package/src/worker/MessageRouter.d.ts.map +1 -0
- package/src/worker/MessageRouter.js +72 -0
- package/src/worker/MessageRouter.js.map +1 -0
- package/src/worker/WorkerRuntime.d.ts +7 -0
- package/src/worker/WorkerRuntime.d.ts.map +1 -0
- package/src/worker/WorkerRuntime.js +15 -0
- package/src/worker/WorkerRuntime.js.map +1 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// https://github.com/mrdoob/three.js/blob/master/src/math/MathUtils.js
|
|
2
|
+
// prettier-ignore
|
|
3
|
+
const _lut = ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff'];
|
|
4
|
+
const _generateUUID = () => {
|
|
5
|
+
// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136
|
|
6
|
+
const d0 = (Math.random() * 0xffffffff) | 0;
|
|
7
|
+
const d1 = (Math.random() * 0xffffffff) | 0;
|
|
8
|
+
const d2 = (Math.random() * 0xffffffff) | 0;
|
|
9
|
+
const d3 = (Math.random() * 0xffffffff) | 0;
|
|
10
|
+
const uuid = _lut[d0 & 0xff] +
|
|
11
|
+
_lut[(d0 >> 8) & 0xff] +
|
|
12
|
+
_lut[(d0 >> 16) & 0xff] +
|
|
13
|
+
_lut[(d0 >> 24) & 0xff] +
|
|
14
|
+
'-' +
|
|
15
|
+
_lut[d1 & 0xff] +
|
|
16
|
+
_lut[(d1 >> 8) & 0xff] +
|
|
17
|
+
'-' +
|
|
18
|
+
_lut[((d1 >> 16) & 0x0f) | 0x40] +
|
|
19
|
+
_lut[(d1 >> 24) & 0xff] +
|
|
20
|
+
'-' +
|
|
21
|
+
_lut[(d2 & 0x3f) | 0x80] +
|
|
22
|
+
_lut[(d2 >> 8) & 0xff] +
|
|
23
|
+
'-' +
|
|
24
|
+
_lut[(d2 >> 16) & 0xff] +
|
|
25
|
+
_lut[(d2 >> 24) & 0xff] +
|
|
26
|
+
_lut[d3 & 0xff] +
|
|
27
|
+
_lut[(d3 >> 8) & 0xff] +
|
|
28
|
+
_lut[(d3 >> 16) & 0xff] +
|
|
29
|
+
_lut[(d3 >> 24) & 0xff];
|
|
30
|
+
// .toLowerCase() here flattens concatenated strings to save heap memory space.
|
|
31
|
+
return uuid.toLowerCase();
|
|
32
|
+
};
|
|
33
|
+
export const generateUUID = () => globalThis?.crypto?.randomUUID?.() ?? _generateUUID();
|
|
34
|
+
//# sourceMappingURL=generateUUID.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateUUID.js","sourceRoot":"","sources":["../../../src/utils/generateUUID.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAEvE,kBAAkB;AAClB,MAAM,IAAI,GAAG,CAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAE,CAAC;AAEhhD,MAAM,aAAa,GAAG,GAAG,EAAE;IACzB,sGAAsG;IACtG,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,IAAI,GACR,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QACvB,GAAG;QACH,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QACtB,GAAG;QACH,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QACvB,GAAG;QACH,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QACtB,GAAG;QACH,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAE1B,+EAA+E;IAC/E,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,IAAI,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ComponentPropertiesType } from '../types.js';
|
|
2
|
+
export declare const filterUndefinedProps: (props: ComponentPropertiesType | undefined) => [string, unknown][];
|
|
3
|
+
/**
|
|
4
|
+
* Maybe `curProps` will be modified and returned. But it can also return a newly created array. `changes` will never be modified.
|
|
5
|
+
*/
|
|
6
|
+
export declare const applyPropsChanges: (curProps: ComponentPropertiesType | undefined, changes: ComponentPropertiesType | undefined) => ComponentPropertiesType | undefined;
|
|
7
|
+
export declare const propsEqual: (a: ComponentPropertiesType | undefined, b: ComponentPropertiesType | undefined) => boolean;
|
|
8
|
+
//# sourceMappingURL=props-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"props-utils.d.ts","sourceRoot":"","sources":["../../../src/utils/props-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,aAAa,CAAC;AAEzD,eAAO,MAAM,oBAAoB,UAAW,uBAAuB,GAAG,SAAS,wBAG9E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,aAClB,uBAAuB,GAAG,SAAS,WACpC,uBAAuB,GAAG,SAAS,KAC3C,uBAAuB,GAAG,SAc5B,CAAC;AAEF,eAAO,MAAM,UAAU,MAAO,uBAAuB,GAAG,SAAS,KAAK,uBAAuB,GAAG,SAAS,YAaxG,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export const filterUndefinedProps = (props) => {
|
|
2
|
+
if (props === undefined || props.length === 0)
|
|
3
|
+
return undefined;
|
|
4
|
+
return props.filter((entry) => entry.length === 1 || entry[1] !== undefined);
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Maybe `curProps` will be modified and returned. But it can also return a newly created array. `changes` will never be modified.
|
|
8
|
+
*/
|
|
9
|
+
export const applyPropsChanges = (curProps, changes) => {
|
|
10
|
+
if (curProps === changes)
|
|
11
|
+
return curProps;
|
|
12
|
+
if (changes === undefined)
|
|
13
|
+
return curProps;
|
|
14
|
+
if (curProps === undefined)
|
|
15
|
+
return filterUndefinedProps(changes);
|
|
16
|
+
for (const [key, value] of changes) {
|
|
17
|
+
const entry = curProps.find(([k]) => k === key);
|
|
18
|
+
if (entry === undefined) {
|
|
19
|
+
curProps.push([key, value]);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
entry[1] = value;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return filterUndefinedProps(curProps);
|
|
26
|
+
};
|
|
27
|
+
export const propsEqual = (a, b) => {
|
|
28
|
+
if (a === b)
|
|
29
|
+
return true;
|
|
30
|
+
a = filterUndefinedProps(a);
|
|
31
|
+
b = filterUndefinedProps(b);
|
|
32
|
+
if (a === b)
|
|
33
|
+
return true;
|
|
34
|
+
if (a === undefined || b === undefined)
|
|
35
|
+
return false;
|
|
36
|
+
if (a.length !== b.length)
|
|
37
|
+
return false;
|
|
38
|
+
for (const [aKey, value] of a) {
|
|
39
|
+
const bEntry = b.find(([bKey]) => aKey === bKey);
|
|
40
|
+
if (bEntry === undefined)
|
|
41
|
+
return false;
|
|
42
|
+
if (bEntry[1] !== value)
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
return true;
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=props-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"props-utils.js","sourceRoot":"","sources":["../../../src/utils/props-utils.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAA0C,EAAE,EAAE;IACjF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAChE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAE,KAAoB,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;AAC/F,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,QAA6C,EAC7C,OAA4C,EACP,EAAE;IACvC,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,QAAQ,CAAC;IAC1C,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC3C,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAEjE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QAChD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAsC,EAAE,CAAsC,EAAE,EAAE;IAC3G,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACrD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACjD,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACvC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toNamespace.d.ts","sourceRoot":"","sources":["../../../src/utils/toNamespace.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAE/C,eAAO,MAAM,WAAW,eAAgB,aAAa,KAAG,aAC6D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toNamespace.js","sourceRoot":"","sources":["../../../src/utils/toNamespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AAGzC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAyB,EAAiB,EAAE,CACtE,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toUrlString.d.ts","sourceRoot":"","sources":["../../../src/utils/toUrlString.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,QAAS,GAAG,GAAG,MAAM,KAAG,MAK/C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toUrlString.js","sourceRoot":"","sources":["../../../src/utils/toUrlString.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAiB,EAAU,EAAE;IACvD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wait for a message of a specific type or reject after a timeout.
|
|
3
|
+
*/
|
|
4
|
+
export declare const waitForMessageOfType: (worker: Worker, type: string, timeout?: number, guard?: (data: any) => boolean) => Promise<void>;
|
|
5
|
+
//# sourceMappingURL=waitForMessageOfType.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waitForMessageOfType.d.ts","sourceRoot":"","sources":["../../../src/utils/waitForMessageOfType.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,oBAAoB,WAAY,MAAM,QAAQ,MAAM,4BAA0B,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,kBAiC7G,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wait for a message of a specific type or reject after a timeout.
|
|
3
|
+
*/
|
|
4
|
+
export const waitForMessageOfType = (worker, type, timeout = 1000, guard) => new Promise((resolve, reject) => {
|
|
5
|
+
let timeoutId;
|
|
6
|
+
// eslint-disable-next-line prefer-const
|
|
7
|
+
let listener;
|
|
8
|
+
const cleanup = () => {
|
|
9
|
+
clearTimeout(timeoutId);
|
|
10
|
+
worker.removeEventListener('message', listener);
|
|
11
|
+
};
|
|
12
|
+
if (timeout !== 0 && timeout !== Infinity) {
|
|
13
|
+
timeoutId = setTimeout(() => {
|
|
14
|
+
cleanup();
|
|
15
|
+
reject(new Error(`Timeout waiting for message of type: ${type}`));
|
|
16
|
+
}, timeout);
|
|
17
|
+
}
|
|
18
|
+
listener = (event) => {
|
|
19
|
+
if (event.data.type === type) {
|
|
20
|
+
try {
|
|
21
|
+
if (!guard || guard(event.data)) {
|
|
22
|
+
cleanup();
|
|
23
|
+
resolve();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
cleanup();
|
|
28
|
+
reject(error.toString());
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
worker.addEventListener('message', listener);
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=waitForMessageOfType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waitForMessageOfType.js","sourceRoot":"","sources":["../../../src/utils/waitForMessageOfType.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAc,EAAE,IAAY,EAAE,OAAO,GAAG,IAAI,EAAE,KAA8B,EAAE,EAAE,CACnH,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IACpC,IAAI,SAAiB,CAAC;IACtB,wCAAwC;IACxC,IAAI,QAAuC,CAAC;IAE5C,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC,CAAC;IAEF,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC1C,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC1B,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,KAAK,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC,EAAE,OAAO,CAAQ,CAAC;IACrB,CAAC;IAED,QAAQ,GAAG,CAAC,KAAK,EAAE,EAAE;QACnB,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChC,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ChangeTrailPhase } from '../constants.js';
|
|
2
|
+
import type { IChangeToken, IComponentChangeType, ICreateEntitiesChange, IDestroyEntitiesChange, IPropertiesChange, ISendEvents, ISetParentChange, IUpdateOrderChange } from '../types.js';
|
|
3
|
+
export declare class ComponentChanges {
|
|
4
|
+
#private;
|
|
5
|
+
get uuid(): string;
|
|
6
|
+
constructor(uuid: string);
|
|
7
|
+
hasChanges(): boolean;
|
|
8
|
+
get isNew(): boolean;
|
|
9
|
+
get isCreated(): boolean;
|
|
10
|
+
get isDestroyed(): boolean;
|
|
11
|
+
create(token?: string, parentUuid?: string, order?: number): void;
|
|
12
|
+
destroy(): void;
|
|
13
|
+
clear(): void;
|
|
14
|
+
changeToken(token: string | undefined): void;
|
|
15
|
+
setParent(parentUuid?: string): void;
|
|
16
|
+
changeOrder(order: number): void;
|
|
17
|
+
changeProperty<T = unknown>(key: string, value: T, isEqual?: (a: T, b: T) => boolean): void;
|
|
18
|
+
removeProperty(key: string): void;
|
|
19
|
+
createEvent(type: string, data: unknown, transferables?: Transferable[]): void;
|
|
20
|
+
transferEventsTo(changes: ComponentChanges): void;
|
|
21
|
+
buildChangeTrail(trail: IComponentChangeType[], trailPhase: ChangeTrailPhase): void;
|
|
22
|
+
makeEvents(): ISendEvents;
|
|
23
|
+
makeCreateEntityChange(): ICreateEntitiesChange;
|
|
24
|
+
makeDestroyEntityChange(): IDestroyEntitiesChange;
|
|
25
|
+
makeSetParentChange(): ISetParentChange;
|
|
26
|
+
makeUpdateOrderChange(): IUpdateOrderChange;
|
|
27
|
+
makeChangeToken(): IChangeToken;
|
|
28
|
+
makeChangePropertyChange(): IPropertiesChange;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=ComponentChanges.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComponentChanges.d.ts","sourceRoot":"","sources":["../../../src/view/ComponentChanges.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAiC,MAAM,iBAAiB,CAAC;AACjF,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EAEpB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAGrB,qBAAa,gBAAgB;;IAG3B,IAAI,IAAI,IAAI,MAAM,CAEjB;gBAIW,IAAI,EAAE,MAAM;IAQxB,UAAU,IAAI,OAAO;IAIrB,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAUD,MAAM,CAAC,KAAK,GAAE,MAAkB,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU;IASxE,OAAO;IAKP,KAAK;IAgBL,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IASrC,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM;IAS7B,WAAW,CAAC,KAAK,EAAE,MAAM;IAazB,cAAc,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO;IAcpF,cAAc,CAAC,GAAG,EAAE,MAAM;IAgB1B,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,YAAY,EAAE;IAMvE,gBAAgB,CAAC,OAAO,EAAE,gBAAgB;IAW1C,gBAAgB,CAAC,KAAK,EAAE,oBAAoB,EAAE,EAAE,UAAU,EAAE,gBAAgB;IAsC5E,UAAU,IAAI,WAAW;IAYzB,sBAAsB,IAAI,qBAAqB;IAyB/C,uBAAuB,IAAI,sBAAsB;IAOjD,mBAAmB,IAAI,gBAAgB;IAgBvC,qBAAqB,IAAI,kBAAkB;IAU3C,eAAe,IAAI,YAAY;IAU/B,wBAAwB,IAAI,iBAAiB;CAoB9C"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { ChangeTrailPhase, ComponentChangeType, VoidToken } from '../constants.js';
|
|
2
|
+
import { appendToEnd, removeFrom } from '../utils/array-utils.js';
|
|
3
|
+
export class ComponentChanges {
|
|
4
|
+
#uuid;
|
|
5
|
+
get uuid() {
|
|
6
|
+
return this.#uuid;
|
|
7
|
+
}
|
|
8
|
+
#serial = 0;
|
|
9
|
+
constructor(uuid) {
|
|
10
|
+
this.#uuid = uuid;
|
|
11
|
+
}
|
|
12
|
+
#isNew = true;
|
|
13
|
+
#createCount = 0;
|
|
14
|
+
#destroyCount = 0;
|
|
15
|
+
hasChanges() {
|
|
16
|
+
return this.#serial > 0;
|
|
17
|
+
}
|
|
18
|
+
get isNew() {
|
|
19
|
+
return this.#isNew;
|
|
20
|
+
}
|
|
21
|
+
get isCreated() {
|
|
22
|
+
return this.#createCount > 0 && this.#createCount > this.#destroyCount;
|
|
23
|
+
}
|
|
24
|
+
get isDestroyed() {
|
|
25
|
+
return this.#destroyCount > 0 && this.#destroyCount >= this.#createCount;
|
|
26
|
+
}
|
|
27
|
+
#token = VoidToken;
|
|
28
|
+
#parentUuid;
|
|
29
|
+
#order = 0;
|
|
30
|
+
#nextToken;
|
|
31
|
+
#nextParentUuid;
|
|
32
|
+
#nextOrder;
|
|
33
|
+
create(token = VoidToken, parentUuid, order = 0) {
|
|
34
|
+
this.#serial++;
|
|
35
|
+
this.#createCount++;
|
|
36
|
+
this.#nextToken = token;
|
|
37
|
+
this.#nextParentUuid = parentUuid;
|
|
38
|
+
this.#nextOrder = !order ? undefined : order;
|
|
39
|
+
}
|
|
40
|
+
destroy() {
|
|
41
|
+
this.#destroyCount++;
|
|
42
|
+
this.#serial++;
|
|
43
|
+
}
|
|
44
|
+
clear() {
|
|
45
|
+
this.#serial = 0;
|
|
46
|
+
this.#isNew = false;
|
|
47
|
+
this.#nextToken = undefined;
|
|
48
|
+
this.#nextParentUuid = undefined;
|
|
49
|
+
this.#nextOrder = undefined;
|
|
50
|
+
this.#nextProperties.clear();
|
|
51
|
+
this.#propsChangeOrder.length = 0;
|
|
52
|
+
this.#events.length = 0;
|
|
53
|
+
this.#transferables.clear();
|
|
54
|
+
}
|
|
55
|
+
changeToken(token) {
|
|
56
|
+
if (token === this.#token) {
|
|
57
|
+
this.#nextToken = undefined;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
this.#nextToken = token;
|
|
61
|
+
this.#serial++;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
setParent(parentUuid) {
|
|
65
|
+
if (parentUuid === this.#parentUuid) {
|
|
66
|
+
this.#nextParentUuid = undefined;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
this.#nextParentUuid = parentUuid ?? null;
|
|
70
|
+
this.#serial++;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
changeOrder(order) {
|
|
74
|
+
if (order === this.#order) {
|
|
75
|
+
this.#nextOrder = undefined;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.#nextOrder = order;
|
|
79
|
+
this.#serial++;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
#properties = new Map();
|
|
83
|
+
#nextProperties = new Map();
|
|
84
|
+
#propsChangeOrder = []; // we use an Array here and not a Set, because we want to keep the change order
|
|
85
|
+
changeProperty(key, value, isEqual) {
|
|
86
|
+
const prevValue = this.#properties.get(key);
|
|
87
|
+
const valueChanged = (isEqual == null && value !== prevValue) || (isEqual != null && !isEqual(value, prevValue));
|
|
88
|
+
if (valueChanged) {
|
|
89
|
+
this.#nextProperties.set(key, value);
|
|
90
|
+
appendToEnd(this.#propsChangeOrder, key);
|
|
91
|
+
this.#serial++;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this.#nextProperties.delete(key);
|
|
95
|
+
removeFrom(this.#propsChangeOrder, key);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
removeProperty(key) {
|
|
99
|
+
const propExists = this.#properties.has(key);
|
|
100
|
+
if (this.#nextProperties.has(key)) {
|
|
101
|
+
this.#nextProperties.delete(key);
|
|
102
|
+
if (!propExists) {
|
|
103
|
+
removeFrom(this.#propsChangeOrder, key);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else if (propExists) {
|
|
107
|
+
appendToEnd(this.#propsChangeOrder, key);
|
|
108
|
+
this.#serial++;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
#events = [];
|
|
112
|
+
#transferables = new Set();
|
|
113
|
+
createEvent(type, data, transferables) {
|
|
114
|
+
this.#events.push({ type, data });
|
|
115
|
+
transferables?.forEach((transferable) => this.#transferables.add(transferable));
|
|
116
|
+
this.#serial++;
|
|
117
|
+
}
|
|
118
|
+
transferEventsTo(changes) {
|
|
119
|
+
if (this.#events.length > 0) {
|
|
120
|
+
changes.#events.push(...this.#events);
|
|
121
|
+
this.#events.length = 0;
|
|
122
|
+
}
|
|
123
|
+
if (this.#transferables.size > 0) {
|
|
124
|
+
changes.#transferables = new Set([...changes.#transferables, ...this.#transferables]);
|
|
125
|
+
this.#transferables.clear();
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
buildChangeTrail(trail, trailPhase) {
|
|
129
|
+
const { isNew, isCreated, isDestroyed } = this;
|
|
130
|
+
if (isNew && isDestroyed)
|
|
131
|
+
return;
|
|
132
|
+
switch (trailPhase) {
|
|
133
|
+
case ChangeTrailPhase.StructuralChanges:
|
|
134
|
+
if (isNew) {
|
|
135
|
+
trail.push(this.makeCreateEntityChange());
|
|
136
|
+
}
|
|
137
|
+
else if (!isDestroyed) {
|
|
138
|
+
if (this.#nextParentUuid !== undefined && this.#nextParentUuid !== this.#parentUuid) {
|
|
139
|
+
trail.push(this.makeSetParentChange());
|
|
140
|
+
}
|
|
141
|
+
else if (this.#nextOrder !== undefined && this.#nextOrder !== this.#order) {
|
|
142
|
+
trail.push(this.makeUpdateOrderChange());
|
|
143
|
+
}
|
|
144
|
+
if (this.#nextToken !== undefined && this.#nextToken !== this.#token) {
|
|
145
|
+
trail.push(this.makeChangeToken());
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
break;
|
|
149
|
+
case ChangeTrailPhase.ContentUpdates:
|
|
150
|
+
if (!isNew && isCreated && this.#propsChangeOrder.length > 0) {
|
|
151
|
+
trail.push(this.makeChangePropertyChange());
|
|
152
|
+
}
|
|
153
|
+
if (this.#events.length > 0) {
|
|
154
|
+
trail.push(this.makeEvents());
|
|
155
|
+
}
|
|
156
|
+
break;
|
|
157
|
+
case ChangeTrailPhase.Removal:
|
|
158
|
+
if (isDestroyed) {
|
|
159
|
+
trail.push(this.makeDestroyEntityChange());
|
|
160
|
+
}
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
makeEvents() {
|
|
165
|
+
const event = {
|
|
166
|
+
type: ComponentChangeType.SendEvents,
|
|
167
|
+
uuid: this.#uuid,
|
|
168
|
+
events: this.#events.slice(0),
|
|
169
|
+
};
|
|
170
|
+
if (this.#transferables.size > 0) {
|
|
171
|
+
event.transferables = Array.from(this.#transferables);
|
|
172
|
+
}
|
|
173
|
+
return event;
|
|
174
|
+
}
|
|
175
|
+
makeCreateEntityChange() {
|
|
176
|
+
const entry = {
|
|
177
|
+
type: ComponentChangeType.CreateEntities,
|
|
178
|
+
uuid: this.#uuid,
|
|
179
|
+
token: this.#nextToken,
|
|
180
|
+
};
|
|
181
|
+
this.#token = this.#nextToken;
|
|
182
|
+
if (this.#nextParentUuid !== undefined) {
|
|
183
|
+
entry.parentUuid = this.#parentUuid = this.#nextParentUuid;
|
|
184
|
+
}
|
|
185
|
+
if (this.#nextProperties.size > 0) {
|
|
186
|
+
entry.properties = Array.from(this.#nextProperties.entries()).filter(([, value]) => value !== undefined);
|
|
187
|
+
entry.properties.forEach(([key, value]) => this.#properties.set(key, value));
|
|
188
|
+
}
|
|
189
|
+
if (this.#nextOrder !== undefined && this.#nextOrder !== this.#order) {
|
|
190
|
+
entry.order = this.#order = this.#nextOrder;
|
|
191
|
+
}
|
|
192
|
+
return entry;
|
|
193
|
+
}
|
|
194
|
+
makeDestroyEntityChange() {
|
|
195
|
+
return {
|
|
196
|
+
type: ComponentChangeType.DestroyEntities,
|
|
197
|
+
uuid: this.#uuid,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
makeSetParentChange() {
|
|
201
|
+
this.#parentUuid = this.#nextParentUuid ?? undefined;
|
|
202
|
+
const entry = {
|
|
203
|
+
type: ComponentChangeType.SetParent,
|
|
204
|
+
uuid: this.#uuid,
|
|
205
|
+
parentUuid: this.#parentUuid,
|
|
206
|
+
};
|
|
207
|
+
if (this.#nextOrder !== undefined && this.#nextOrder !== this.#order) {
|
|
208
|
+
entry.order = this.#order = this.#nextOrder;
|
|
209
|
+
}
|
|
210
|
+
return entry;
|
|
211
|
+
}
|
|
212
|
+
makeUpdateOrderChange() {
|
|
213
|
+
this.#order = this.#nextOrder ?? 0;
|
|
214
|
+
return {
|
|
215
|
+
type: ComponentChangeType.UpdateOrder,
|
|
216
|
+
uuid: this.#uuid,
|
|
217
|
+
order: this.#order,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
makeChangeToken() {
|
|
221
|
+
this.#token = this.#nextToken ?? VoidToken;
|
|
222
|
+
return {
|
|
223
|
+
type: ComponentChangeType.ChangeToken,
|
|
224
|
+
uuid: this.#uuid,
|
|
225
|
+
token: this.#token,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
makeChangePropertyChange() {
|
|
229
|
+
const properties = this.#propsChangeOrder.map((key) => {
|
|
230
|
+
if (this.#nextProperties.has(key)) {
|
|
231
|
+
// set prop
|
|
232
|
+
const nextValue = this.#nextProperties.get(key);
|
|
233
|
+
this.#properties.set(key, nextValue);
|
|
234
|
+
return [key, nextValue];
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
// remove prop
|
|
238
|
+
this.#properties.delete(key);
|
|
239
|
+
return [key, undefined];
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
return {
|
|
243
|
+
type: ComponentChangeType.ChangeProperties,
|
|
244
|
+
uuid: this.#uuid,
|
|
245
|
+
properties,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=ComponentChanges.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComponentChanges.js","sourceRoot":"","sources":["../../../src/view/ComponentChanges.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { ChangeTrailType, NamespaceType } from '../types.js';
|
|
2
|
+
import type { ViewComponent } from './ViewComponent.js';
|
|
3
|
+
declare global {
|
|
4
|
+
var __shadowEntsContexts: Map<string | symbol, ComponentContext> | undefined;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* The {@link ComponentContext} represents the current real-time state of the _view components_.
|
|
8
|
+
*
|
|
9
|
+
* Changes to the components and their hierarchy are also logged to the {@link ComponentChanges}.
|
|
10
|
+
*
|
|
11
|
+
* Each time a change trail is created (a call to {@link ComponentContext#buildChangeTrails}),
|
|
12
|
+
* the past changes are summarized and returned as the result. This means that the change trail
|
|
13
|
+
* is always the path of changes from the time of the previous change trail (or from the beginning)
|
|
14
|
+
* to the current call to the {@link ComponentContext#buildChangeTrails} method.
|
|
15
|
+
*
|
|
16
|
+
* In addition, there is the {@link ComponentMemory}. The memory represents the component state at
|
|
17
|
+
* the time of the last change trail, as opposed to the {@link ComponentContext}, which represents
|
|
18
|
+
* the current real-time state of the _view components_.
|
|
19
|
+
*
|
|
20
|
+
* A context is always associated with a namespace.
|
|
21
|
+
* If no namespace is specified when creating a {@link ComponentContext}, the global namespace is used.
|
|
22
|
+
* There is only one {@link ComponentContext} (a singleton) for each namespace.
|
|
23
|
+
*/
|
|
24
|
+
export declare class ComponentContext {
|
|
25
|
+
#private;
|
|
26
|
+
static getContextsMap(): Map<NamespaceType, ComponentContext>;
|
|
27
|
+
static get(namespace?: NamespaceType): ComponentContext;
|
|
28
|
+
ns?: NamespaceType;
|
|
29
|
+
constructor(namespace?: NamespaceType);
|
|
30
|
+
addComponent(component: ViewComponent): void;
|
|
31
|
+
hasComponent(component: ViewComponent): boolean;
|
|
32
|
+
hasComponents(): boolean;
|
|
33
|
+
isRootComponent(component: ViewComponent): boolean;
|
|
34
|
+
destroyComponent(component: ViewComponent): void;
|
|
35
|
+
getChildren(component: ViewComponent): ViewComponent[];
|
|
36
|
+
removeFromParent(childUuid: string, parent: ViewComponent): void;
|
|
37
|
+
changeToken(component: ViewComponent, token?: string): void;
|
|
38
|
+
isChildOf(child: ViewComponent, parent: ViewComponent): boolean;
|
|
39
|
+
addToChildren(parent: ViewComponent, child: ViewComponent): void;
|
|
40
|
+
removeSubTree(uuid: string): void;
|
|
41
|
+
setProperty<T = unknown>(component: ViewComponent, propKey: string, value: T, isEqual?: (a: T, b: T) => boolean): false | void;
|
|
42
|
+
removeProperty(component: ViewComponent, propKey: string): void;
|
|
43
|
+
changeOrder(component: ViewComponent): void;
|
|
44
|
+
/**
|
|
45
|
+
* @returns all view-components in breadth-first order
|
|
46
|
+
*/
|
|
47
|
+
traverseLevelOrderBFS(): ViewComponent[];
|
|
48
|
+
/**
|
|
49
|
+
* Dispatch an event to the shadow objects linked to the view component
|
|
50
|
+
*/
|
|
51
|
+
dispatchShadowObjectsEvent(component: ViewComponent, type: string, data: unknown, transferables?: Transferable[]): void;
|
|
52
|
+
/**
|
|
53
|
+
* Dispatch an event to all view components
|
|
54
|
+
*/
|
|
55
|
+
broadcastEvent(type: string, data?: unknown): void;
|
|
56
|
+
/**
|
|
57
|
+
* Dispatch an event (usually from the shadow-objects from the worker env) to a specific view component
|
|
58
|
+
*/
|
|
59
|
+
dispatchMessage(uuid: string, type: string, data?: unknown, traverseChildren?: boolean): void;
|
|
60
|
+
/**
|
|
61
|
+
* Create the component change trails at this point in time.
|
|
62
|
+
* The next call will only return the differences from the previous call.
|
|
63
|
+
*
|
|
64
|
+
* @see {@link ComponentContext.reCreateChanges}
|
|
65
|
+
*/
|
|
66
|
+
buildChangeTrails(clearChanges?: boolean): ChangeTrailType;
|
|
67
|
+
/**
|
|
68
|
+
* Resets the internal component change states so that all view components are regenerated with the next change trail.
|
|
69
|
+
* The outstanding events are taken over.
|
|
70
|
+
*
|
|
71
|
+
* @see {@link ComponentContext.buildChangeTrails}
|
|
72
|
+
*/
|
|
73
|
+
reCreateChanges(): void;
|
|
74
|
+
clear(): void;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=ComponentContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComponentContext.d.ts","sourceRoot":"","sources":["../../../src/view/ComponentContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAwB,aAAa,EAAC,MAAM,aAAa,CAAC;AAKtF,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAStD,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,oBAAoB,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,gBAAgB,CAAC,GAAG,SAAS,CAAC;CAC9E;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,gBAAgB;;IAC3B,MAAM,CAAC,cAAc,IAAI,GAAG,CAAC,aAAa,EAAE,gBAAgB,CAAC;IAO7D,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,aAAa,GAAG,gBAAgB;IASvD,EAAE,CAAC,EAAE,aAAa,CAAC;gBAOP,SAAS,GAAE,aAAwB;IAU/C,YAAY,CAAC,SAAS,EAAE,aAAa;IA6BrC,YAAY,CAAC,SAAS,EAAE,aAAa;IAIrC,aAAa;IAIb,eAAe,CAAC,SAAS,EAAE,aAAa;IAIxC,gBAAgB,CAAC,SAAS,EAAE,aAAa;IASzC,WAAW,CAAC,SAAS,EAAE,aAAa,GAAG,aAAa,EAAE;IAItD,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa;IAczD,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM;IAIpD,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa;IAQrD,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa;IAYzD,aAAa,CAAC,IAAI,EAAE,MAAM;IAS1B,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO;IAc/G,cAAc,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM;IAIxD,WAAW,CAAC,SAAS,EAAE,aAAa;IAapC;;OAEG;IACH,qBAAqB,IAAI,aAAa,EAAE;IAIxC;;OAEG;IACH,0BAA0B,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,YAAY,EAAE;IAIhH;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,OAAmB;IAMtD;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,OAAmB,EAAE,gBAAgB,UAAQ;IAI/F;;;;;OAKG;IACH,iBAAiB,CAAC,YAAY,UAAO,GAAG,eAAe;IAmCvD;;;;;OAKG;IACH,eAAe;IA6Bf,KAAK;CA4GN"}
|