@spearwolf/shadow-objects 0.30.2 → 0.32.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/CHANGELOG.md +23 -1
- package/bundle.js +13 -13
- package/package.json +3 -3
- package/src/bundle.js +4 -4
- package/src/bundle.js.map +7 -1
- package/src/constants.js +53 -40
- package/src/constants.js.map +7 -1
- package/src/create-worker.bundle.js +6 -8
- package/src/create-worker.bundle.js.map +7 -1
- package/src/create-worker.js +5 -2
- package/src/create-worker.js.map +7 -1
- package/src/elements/ShaeElement.js +57 -54
- package/src/elements/ShaeElement.js.map +7 -1
- package/src/elements/ShaeEntElement.d.ts.map +1 -1
- package/src/elements/ShaeEntElement.js +320 -341
- package/src/elements/ShaeEntElement.js.map +7 -1
- package/src/elements/ShaePropElement.js +312 -320
- package/src/elements/ShaePropElement.js.map +7 -1
- package/src/elements/ShaeWorkerElement.js +234 -229
- package/src/elements/ShaeWorkerElement.js.map +7 -1
- package/src/elements/constants.js +37 -22
- package/src/elements/constants.js.map +7 -1
- package/src/elements/events.d.ts +1 -1
- package/src/elements/events.d.ts.map +1 -1
- package/src/elements/events.js +1 -2
- package/src/elements/events.js.map +7 -1
- package/src/elements.js +4 -4
- package/src/elements.js.map +7 -1
- package/src/in-the-dark/Entity.d.ts +1 -1
- package/src/in-the-dark/Entity.d.ts.map +1 -1
- package/src/in-the-dark/Entity.js +299 -293
- package/src/in-the-dark/Entity.js.map +7 -1
- package/src/in-the-dark/Kernel.d.ts.map +1 -1
- package/src/in-the-dark/Kernel.js +556 -533
- package/src/in-the-dark/Kernel.js.map +7 -1
- package/src/in-the-dark/Registry.d.ts.map +1 -1
- package/src/in-the-dark/Registry.js +101 -104
- package/src/in-the-dark/Registry.js.map +7 -1
- package/src/in-the-dark/ShadowObject.d.ts.map +1 -1
- package/src/in-the-dark/ShadowObject.js +21 -23
- package/src/in-the-dark/ShadowObject.js.map +7 -1
- package/src/in-the-dark/SignalsPath.d.ts.map +1 -1
- package/src/in-the-dark/SignalsPath.js +139 -123
- package/src/in-the-dark/SignalsPath.js.map +7 -1
- package/src/in-the-dark/events.js +11 -9
- package/src/in-the-dark/events.js.map +7 -1
- package/src/in-the-dark/importModule.js +31 -29
- package/src/in-the-dark/importModule.js.map +7 -1
- package/src/index.d.ts +2 -2
- package/src/index.d.ts.map +1 -1
- package/src/index.js +14 -14
- package/src/index.js.map +7 -1
- package/src/shadow-objects.js +6 -6
- package/src/shadow-objects.js.map +7 -1
- package/src/shadow-objects.worker.js +3 -3
- package/src/shadow-objects.worker.js.map +7 -1
- package/src/shae-ent.js +3 -3
- package/src/shae-ent.js.map +7 -1
- package/src/shae-prop.js +3 -3
- package/src/shae-prop.js.map +7 -1
- package/src/shae-worker.js +3 -3
- package/src/shae-worker.js.map +7 -1
- package/src/types.d.ts +3 -2
- package/src/types.d.ts.map +1 -1
- package/src/types.js +1 -2
- package/src/types.js.map +7 -1
- package/src/utils/ConsoleLogger.js +179 -185
- package/src/utils/ConsoleLogger.js.map +7 -1
- package/src/utils/FrameLoop.js +41 -40
- package/src/utils/FrameLoop.js.map +7 -1
- package/src/utils/array-utils.js +22 -24
- package/src/utils/array-utils.js.map +7 -1
- package/src/utils/attr-utils.js +15 -11
- package/src/utils/attr-utils.js.map +7 -1
- package/src/utils/constants.js +5 -2
- package/src/utils/constants.js.map +7 -1
- package/src/utils/generateUUID.d.ts.map +1 -1
- package/src/utils/generateUUID.js +269 -32
- package/src/utils/generateUUID.js.map +7 -1
- package/src/utils/props-utils.js +34 -43
- package/src/utils/props-utils.js.map +7 -1
- package/src/utils/toMaybe.js +5 -2
- package/src/utils/toMaybe.js.map +7 -1
- package/src/utils/toNamespace.js +6 -3
- package/src/utils/toNamespace.js.map +7 -1
- package/src/utils/toUrlString.js +9 -6
- package/src/utils/toUrlString.js.map +7 -1
- package/src/utils/waitForMessageOfType.js +30 -32
- package/src/utils/waitForMessageOfType.js.map +7 -1
- package/src/view/ComponentChanges.d.ts +1 -1
- package/src/view/ComponentChanges.d.ts.map +1 -1
- package/src/view/ComponentChanges.js +249 -251
- package/src/view/ComponentChanges.js.map +7 -1
- package/src/view/ComponentContext.d.ts.map +1 -1
- package/src/view/ComponentContext.js +303 -331
- package/src/view/ComponentContext.js.map +7 -1
- package/src/view/ComponentMemory.d.ts +1 -0
- package/src/view/ComponentMemory.d.ts.map +1 -1
- package/src/view/ComponentMemory.js +73 -76
- package/src/view/ComponentMemory.js.map +7 -1
- package/src/view/IShadowObjectEnvProxy.js +1 -2
- package/src/view/IShadowObjectEnvProxy.js.map +7 -1
- package/src/view/LocalShadowObjectEnv.d.ts.map +1 -1
- package/src/view/LocalShadowObjectEnv.js +57 -52
- package/src/view/LocalShadowObjectEnv.js.map +7 -1
- package/src/view/RemoteWorkerEnv.js +134 -123
- package/src/view/RemoteWorkerEnv.js.map +7 -1
- package/src/view/ShadowEnv.d.ts.map +1 -1
- package/src/view/ShadowEnv.js +232 -228
- package/src/view/ShadowEnv.js.map +7 -1
- package/src/view/ViewComponent.d.ts +9 -0
- package/src/view/ViewComponent.d.ts.map +1 -1
- package/src/view/ViewComponent.js +142 -130
- package/src/view/ViewComponent.js.map +7 -1
- package/src/view/cloneChangeTrail.js +13 -11
- package/src/view/cloneChangeTrail.js.map +7 -1
- package/src/worker/MessageRouter.d.ts.map +1 -1
- package/src/worker/MessageRouter.js +78 -67
- package/src/worker/MessageRouter.js.map +7 -1
- package/src/worker/WorkerRuntime.js +22 -21
- package/src/worker/WorkerRuntime.js.map +7 -1
- package/tsconfig.lib.tsbuildinfo +0 -1
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentContext.js","sourceRoot":"","sources":["../../../src/view/ComponentContext.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/view/ComponentContext.ts"],
|
|
4
|
+
"sourcesContent": ["import {ChangeTrailPhase, ContextLost, GlobalNS} from '../constants.js';\nimport type {ChangeTrailType, IComponentChangeType, NamespaceType} from '../types.js';\nimport {removeFrom} from '../utils/array-utils.js';\nimport {toNamespace} from '../utils/toNamespace.js';\nimport {ComponentChanges} from './ComponentChanges.js';\nimport {ComponentMemory} from './ComponentMemory.js';\nimport type {ViewComponent} from './ViewComponent.js';\n\ninterface ViewInstance {\n component: ViewComponent;\n children: string[]; // we use an Array here and not a Set, because we want to keep the insertion order\n changes: ComponentChanges;\n propIsEqual?: Map<string, (a: any, b: any) => boolean>;\n}\n\ndeclare global {\n // eslint-disable-next-line no-var\n var __shadowEntsContexts: Map<string | symbol, ComponentContext> | undefined;\n}\n\n/**\n * The {@link ComponentContext} represents the current real-time state of the _view components_.\n *\n * Changes to the components and their hierarchy are also logged to the {@link ComponentChanges}.\n *\n * Each time a change trail is created (a call to {@link ComponentContext#buildChangeTrails}),\n * the past changes are summarized and returned as the result. This means that the change trail\n * is always the path of changes from the time of the previous change trail (or from the beginning)\n * to the current call to the {@link ComponentContext#buildChangeTrails} method.\n *\n * In addition, there is the {@link ComponentMemory}. The memory represents the component state at\n * the time of the last change trail, as opposed to the {@link ComponentContext}, which represents\n * the current real-time state of the _view components_.\n *\n * A context is always associated with a namespace.\n * If no namespace is specified when creating a {@link ComponentContext}, the global namespace is used.\n * There is only one {@link ComponentContext} (a singleton) for each namespace.\n */\nexport class ComponentContext {\n static readonly ReRequestParentRoots = 're-request-parent-roots';\n\n static getContextsMap(): Map<NamespaceType, ComponentContext> {\n if (globalThis.__shadowEntsContexts == null) {\n globalThis.__shadowEntsContexts = new Map<NamespaceType, ComponentContext>();\n }\n return globalThis.__shadowEntsContexts;\n }\n\n static get(namespace?: NamespaceType): ComponentContext {\n const ns = toNamespace(namespace);\n const ctxMap = ComponentContext.getContextsMap();\n if (ctxMap.has(ns)) {\n return ctxMap.get(ns)!;\n }\n return new ComponentContext(ns);\n }\n\n ns?: NamespaceType;\n\n #components: Map<string, ViewInstance> = new Map();\n #rootComponents: string[] = []; // we use an Array here and not a Set, because we want to keep the insertion order\n\n readonly #componentMemory = new ComponentMemory();\n\n constructor(namespace: NamespaceType = GlobalNS) {\n const ns = toNamespace(namespace);\n const ctxMap = ComponentContext.getContextsMap();\n if (ctxMap.has(ns)) {\n return ctxMap.get(ns)!;\n }\n this.ns = ns;\n ctxMap.set(ns, this);\n }\n\n addComponent(component: ViewComponent) {\n let viewInstance: ViewInstance | undefined;\n\n if (this.#components.has(component.uuid)) {\n viewInstance = this.#components.get(component.uuid);\n viewInstance.component = component;\n viewInstance.children = [];\n } else {\n viewInstance = {\n component,\n children: [],\n changes: new ComponentChanges(component.uuid),\n propIsEqual: undefined,\n };\n this.#components.set(component.uuid, viewInstance);\n }\n\n viewInstance.changes.create(\n component.token,\n component.parent?.uuid,\n component.order,\n component.autoDestructionOnParentRemoval,\n );\n\n if (component.parent) {\n this.addToChildren(component.parent, component);\n viewInstance.changes.setParent(component.parent.uuid);\n } else {\n this.#appendToOrdered(component, this.#rootComponents);\n }\n\n this.#viewInstances = undefined;\n }\n\n hasComponent(component: ViewComponent) {\n return this.#components.has(component.uuid);\n }\n\n hasComponents() {\n return this.#components.size > 0;\n }\n\n isRootComponent(component: ViewComponent) {\n return this.#rootComponents.includes(component.uuid);\n }\n\n destroyComponent(component: ViewComponent) {\n if (this.hasComponent(component)) {\n const entry = this.#components.get(component.uuid)!;\n entry.children.slice(0).forEach((childUuid) => this.#components.get(childUuid)?.component.removeFromParent());\n entry.changes.destroy();\n this.#viewInstances = undefined;\n }\n }\n\n getChildren(component: ViewComponent): ViewComponent[] {\n return this.#components.get(component.uuid)?.children.map((uuid) => this.#components.get(uuid)!.component) ?? [];\n }\n\n removeFromParent(childUuid: string, parent: ViewComponent) {\n if (this.hasComponent(parent)) {\n const childEntry = this.#components.get(childUuid)!;\n const parentEntry = this.#components.get(parent.uuid)!;\n const childIdx = parentEntry.children.indexOf(childUuid);\n if (childIdx !== -1) {\n parentEntry.children.splice(childIdx, 1);\n childEntry.changes.setParent(undefined);\n }\n this.#appendToOrdered(childEntry.component, this.#rootComponents);\n this.#viewInstances = undefined;\n }\n }\n\n moveToRoot(childUuid: string) {\n const childEntry = this.#components.get(childUuid)!;\n if (childEntry) {\n childEntry.changes?.setParent(undefined);\n this.#appendToOrdered(childEntry.component, this.#rootComponents);\n }\n this.#viewInstances = undefined;\n }\n\n changeToken(component: ViewComponent, token?: string) {\n this.#components.get(component.uuid)?.changes.changeToken(token);\n }\n\n isChildOf(child: ViewComponent, parent: ViewComponent) {\n if (this.hasComponent(parent)) {\n const entry = this.#components.get(parent.uuid)!;\n return entry.children.includes(child.uuid);\n }\n return false;\n }\n\n addToChildren(parent: ViewComponent, child: ViewComponent) {\n const entry = this.#components.get(parent.uuid);\n if (entry) {\n this.#appendToOrdered(child, entry.children);\n this.#components.get(child.uuid)?.changes.setParent(parent.uuid);\n removeFrom(this.#rootComponents, child.uuid);\n this.#viewInstances = undefined;\n } else {\n throw new Error(`the view component ${parent.uuid} cannot have a child added to it because the component do not exist!`);\n }\n }\n\n removeSubTree(uuid: string) {\n const entry = this.#components.get(uuid);\n if (entry) {\n entry.children.slice(0).forEach((childUuid) => this.removeSubTree(childUuid));\n this.destroyComponent(entry.component);\n this.#deleteComponent(uuid);\n }\n }\n\n setProperty<T = unknown>(component: ViewComponent, propKey: string, value: T, isEqual?: (a: T, b: T) => boolean) {\n const vi = this.#components.get(component.uuid);\n if (vi != null) {\n if (isEqual != null) {\n vi.propIsEqual ??= new Map();\n vi.propIsEqual.set(propKey, isEqual);\n } else if (vi.propIsEqual?.has(propKey)) {\n vi.propIsEqual.delete(propKey);\n }\n return vi.changes.changeProperty(propKey, value, isEqual);\n }\n return false;\n }\n\n removeProperty(component: ViewComponent, propKey: string) {\n this.#components.get(component.uuid)?.changes.removeProperty(propKey);\n }\n\n changeOrder(component: ViewComponent) {\n if (component.parent) {\n const parentEntry = this.#components.get(component.parent.uuid)!;\n removeFrom(parentEntry.children, component.uuid);\n this.#appendToOrdered(component, parentEntry.children);\n } else {\n removeFrom(this.#rootComponents, component.uuid);\n this.#appendToOrdered(component, this.#rootComponents);\n }\n this.#components.get(component.uuid)?.changes.changeOrder(component.order);\n this.#viewInstances = undefined;\n }\n\n /**\n * @returns all view-components in breadth-first order\n */\n traverseLevelOrderBFS(): ViewComponent[] {\n return this.#traverseLevelOrderBFS().map((vi) => vi.component);\n }\n\n /**\n * Dispatch an event to the shadow objects linked to the view component\n */\n dispatchShadowObjectsEvent(component: ViewComponent, type: string, data: unknown, transferables?: Transferable[]) {\n this.#components.get(component.uuid)?.changes.createEvent(type, data, transferables);\n }\n\n /**\n * Dispatch an event to all view components\n */\n broadcastEvent(type: string, data: unknown = undefined) {\n for (const c of this.traverseLevelOrderBFS()) {\n c.dispatchEvent(type, data, false);\n }\n }\n\n /**\n * Dispatch an event (usually from the shadow-objects from the worker env) to a specific view component\n */\n dispatchMessage(uuid: string, type: string, data: unknown = undefined, traverseChildren = false) {\n this.#components.get(uuid)?.component.dispatchEvent(type, data, traverseChildren);\n }\n\n /**\n * Inform all root components that they should re-request their parents\n */\n dispatchReRequestParentRoots() {\n for (const uuid of this.#rootComponents) {\n this.dispatchMessage(uuid, ComponentContext.ReRequestParentRoots);\n }\n }\n\n /**\n * Create the component change trails at this point in time.\n * The next call will only return the differences from the previous call.\n *\n * @see {@link ComponentContext.reCreateChanges}\n */\n buildChangeTrails(clearChanges = true): ChangeTrailType {\n const trails: IComponentChangeType[] = [];\n\n if (!this.hasComponents()) return trails;\n\n const pathOfChanges = this.#buildPathOfChanges();\n\n // console.log(\n // 'path of changes:',\n // pathOfChanges.map((c) => c.uuid),\n // );\n\n for (const changes of pathOfChanges) {\n changes.buildChangeTrail(trails, ChangeTrailPhase.StructuralChanges);\n }\n\n for (const changes of pathOfChanges) {\n changes.buildChangeTrail(trails, ChangeTrailPhase.ContentUpdates);\n }\n\n for (const changes of pathOfChanges) {\n changes.buildChangeTrail(trails, ChangeTrailPhase.Removal);\n\n if (changes.isDestroyed || (changes.isNew && !changes.isCreated)) {\n this.#deleteComponent(changes.uuid);\n }\n\n if (clearChanges) changes.clear();\n }\n\n this.#componentMemory.write(trails);\n\n return trails;\n }\n\n /**\n * Resets the internal component change states so that all view components are regenerated with the next change trail.\n * The outstanding events are taken over.\n *\n * @see {@link ComponentContext.buildChangeTrails}\n */\n reCreateChanges() {\n if (this.#componentMemory.isEmpty()) return;\n\n this.buildChangeTrails(false);\n\n for (const [uuid, cMem] of this.#componentMemory) {\n const c = this.#components.get(uuid);\n if (c) {\n const changes = new ComponentChanges(uuid);\n changes.create(cMem.token, cMem.parentUuid, cMem.order, cMem.autoDestructionOnParentRemoval);\n\n if (cMem.properties) {\n for (const [key, value] of cMem.properties) {\n changes.changeProperty(key, value, c.propIsEqual?.get(key));\n }\n }\n\n c.changes.transferEventsTo(changes);\n c.changes.clear();\n\n c.changes = changes;\n }\n }\n\n this.#componentMemory.clear();\n\n this.broadcastEvent(ContextLost);\n }\n\n clear() {\n this.#viewInstances = undefined;\n this.#componentMemory.clear();\n\n this.#rootComponents.slice(0).forEach((uuid) => this.removeSubTree(uuid));\n\n if (this.#rootComponents.length !== 0) {\n throw new Error('component-context panic: #rootComponents is not empty!');\n }\n\n if (this.#components.size !== 0) {\n throw new Error('component-context panic: #components is not empty!');\n }\n }\n\n #deleteComponent(uuid: string) {\n // console.log('deleteComponent:', uuid, this.#components.has(uuid) ? 'x' : '');\n if (this.#components.has(uuid)) {\n this.#components.delete(uuid);\n removeFrom(this.#rootComponents, uuid);\n this.#viewInstances = undefined;\n }\n }\n\n #buildPathOfChanges(): ComponentChanges[] {\n return this.#traverseLevelOrderBFS()\n .filter((vi) => vi.changes.hasChanges())\n .map((vi) => vi.changes);\n }\n\n #appendToOrdered(component: ViewComponent, childUuids: string[]) {\n if (childUuids.length === 0) {\n childUuids.push(component.uuid);\n return;\n }\n\n if (childUuids.includes(component.uuid)) {\n return;\n }\n\n const len = childUuids.length;\n const childComponents = new Array<ViewComponent>(len);\n\n childComponents[0] = this.#components.get(childUuids[0])!.component;\n\n if (component.order < childComponents[0].order) {\n childUuids.unshift(component.uuid);\n return;\n }\n\n if (len === 1) {\n childUuids.push(component.uuid);\n return;\n }\n\n const lastIdx = len - 1;\n childComponents[lastIdx] = this.#components.get(childUuids[lastIdx])!.component;\n\n if (component.order >= childComponents[lastIdx].order) {\n childUuids.push(component.uuid);\n return;\n }\n\n if (len === 2) {\n childUuids.splice(1, 0, component.uuid);\n return;\n }\n\n for (let i = lastIdx - 1; i >= 1; i--) {\n childComponents[i] = this.#components.get(childUuids[i])!.component;\n if (component.order >= childComponents[i].order) {\n childUuids.splice(i + 1, 0, component.uuid);\n return;\n }\n }\n }\n\n #viewInstances?: ViewInstance[];\n\n #traverseLevelOrderBFS(): ViewInstance[] {\n if (this.#viewInstances) return this.#viewInstances;\n\n const lvl = new Map<number, ViewInstance[]>();\n\n const traverse = (uuid: string, depth: number) => {\n const viewInstance = this.#components.get(uuid);\n if (viewInstance == null) return;\n\n if (lvl.has(depth)) {\n lvl.get(depth).push(viewInstance);\n } else {\n lvl.set(depth, [viewInstance]);\n }\n\n for (const childUuid of viewInstance.children) {\n traverse(childUuid, depth + 1);\n }\n };\n\n this.#rootComponents.forEach((uuid) => traverse(uuid, 0));\n\n this.#viewInstances = Array.from(lvl.entries())\n .sort((a, b) => a[0] - b[0])\n .flatMap(([, vi]) => vi);\n\n return this.#viewInstances;\n }\n}"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentMemory.d.ts","sourceRoot":"","sources":["../../../src/view/ComponentMemory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EAQxB,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"ComponentMemory.d.ts","sourceRoot":"","sources":["../../../src/view/ComponentMemory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EAQxB,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAC1C"}
|
|
@@ -1,79 +1,76 @@
|
|
|
1
|
-
import { ComponentChangeType, VoidToken } from
|
|
2
|
-
import { applyPropsChanges } from
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
break;
|
|
42
|
-
case ComponentChangeType.ChangeToken:
|
|
43
|
-
this.changeToken(change);
|
|
44
|
-
break;
|
|
45
|
-
case ComponentChangeType.ChangeProperties:
|
|
46
|
-
this.changeProperties(change);
|
|
47
|
-
break;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
1
|
+
import { ComponentChangeType, VoidToken } from "../constants.js";
|
|
2
|
+
import { applyPropsChanges } from "../utils/props-utils.js";
|
|
3
|
+
class ComponentMemory {
|
|
4
|
+
#components = /* @__PURE__ */ new Map();
|
|
5
|
+
get [Symbol.iterator]() {
|
|
6
|
+
return this.#components.entries.bind(this.#components);
|
|
7
|
+
}
|
|
8
|
+
clear() {
|
|
9
|
+
this.#components.clear();
|
|
10
|
+
}
|
|
11
|
+
isEmpty() {
|
|
12
|
+
return this.#components.size === 0;
|
|
13
|
+
}
|
|
14
|
+
hasComponentState(uuid) {
|
|
15
|
+
return this.#components.has(uuid);
|
|
16
|
+
}
|
|
17
|
+
getComponentState(uuid) {
|
|
18
|
+
return this.#components.get(uuid);
|
|
19
|
+
}
|
|
20
|
+
write(changes) {
|
|
21
|
+
for (const change of changes) {
|
|
22
|
+
if (change.type === ComponentChangeType.CreateEntities) {
|
|
23
|
+
this.createEntity(change);
|
|
24
|
+
} else if (this.#components.has(change.uuid)) {
|
|
25
|
+
switch (change.type) {
|
|
26
|
+
case ComponentChangeType.DestroyEntities:
|
|
27
|
+
this.destroyEntity(change);
|
|
28
|
+
break;
|
|
29
|
+
case ComponentChangeType.SetParent:
|
|
30
|
+
this.setParent(change);
|
|
31
|
+
break;
|
|
32
|
+
case ComponentChangeType.UpdateOrder:
|
|
33
|
+
this.updateOrder(change);
|
|
34
|
+
break;
|
|
35
|
+
case ComponentChangeType.ChangeToken:
|
|
36
|
+
this.changeToken(change);
|
|
37
|
+
break;
|
|
38
|
+
case ComponentChangeType.ChangeProperties:
|
|
39
|
+
this.changeProperties(change);
|
|
40
|
+
break;
|
|
50
41
|
}
|
|
42
|
+
}
|
|
51
43
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
44
|
+
}
|
|
45
|
+
changeProperties({ uuid, properties }) {
|
|
46
|
+
const c = this.getComponentState(uuid);
|
|
47
|
+
c.properties = applyPropsChanges(c.properties, properties);
|
|
48
|
+
}
|
|
49
|
+
changeToken({ uuid, token }) {
|
|
50
|
+
this.getComponentState(uuid).token = token || VoidToken;
|
|
51
|
+
}
|
|
52
|
+
updateOrder({ uuid, order }) {
|
|
53
|
+
this.getComponentState(uuid).order = order ?? 0;
|
|
54
|
+
}
|
|
55
|
+
setParent({ uuid, parentUuid, order }) {
|
|
56
|
+
const c = this.getComponentState(uuid);
|
|
57
|
+
c.parentUuid = parentUuid;
|
|
58
|
+
c.order = order ?? 0;
|
|
59
|
+
}
|
|
60
|
+
destroyEntity({ uuid }) {
|
|
61
|
+
this.#components.delete(uuid);
|
|
62
|
+
}
|
|
63
|
+
createEntity({ uuid, token, parentUuid, order, properties, autoDestructionOnParentRemoval }) {
|
|
64
|
+
this.#components.set(uuid, {
|
|
65
|
+
token: token || VoidToken,
|
|
66
|
+
parentUuid,
|
|
67
|
+
order: order ?? 0,
|
|
68
|
+
properties: applyPropsChanges(void 0, properties),
|
|
69
|
+
...autoDestructionOnParentRemoval ? { autoDestructionOnParentRemoval: true } : {}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
78
72
|
}
|
|
79
|
-
|
|
73
|
+
export {
|
|
74
|
+
ComponentMemory
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=ComponentMemory.js.map
|
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/view/ComponentMemory.ts"],
|
|
4
|
+
"sourcesContent": ["import {ComponentChangeType, VoidToken} from '../constants.js';\nimport type {\n ComponentPropertiesType,\n IChangeToken,\n IComponentChange,\n ICreateEntitiesChange,\n IDestroyEntitiesChange,\n IPropertiesChange,\n ISetParentChange,\n IUpdateOrderChange,\n} from '../types.js';\nimport {applyPropsChanges} from '../utils/props-utils.js';\n\nexport interface ComponentState {\n token: string;\n parentUuid?: string;\n order?: number;\n properties?: ComponentPropertiesType;\n autoDestructionOnParentRemoval?: boolean;\n}\n\n/**\n * Stores the state of components and their hierarchy. The state is updated using a _change trail_.\n *\n * @internal\n * @see ComponentContext.buildChangeTrails\n */\nexport class ComponentMemory {\n #components: Map<string, ComponentState> = new Map();\n\n get [Symbol.iterator]() {\n return this.#components.entries.bind(this.#components);\n }\n\n clear() {\n this.#components.clear();\n }\n\n isEmpty() {\n return this.#components.size === 0;\n }\n\n hasComponentState(uuid: string) {\n return this.#components.has(uuid);\n }\n\n getComponentState(uuid: string) {\n return this.#components.get(uuid);\n }\n\n write(changes: IComponentChange[]) {\n for (const change of changes) {\n if (change.type === ComponentChangeType.CreateEntities) {\n this.createEntity(change as ICreateEntitiesChange);\n } else if (this.#components.has(change.uuid)) {\n switch (change.type) {\n case ComponentChangeType.DestroyEntities:\n this.destroyEntity(change as IDestroyEntitiesChange);\n break;\n\n case ComponentChangeType.SetParent:\n this.setParent(change as ISetParentChange);\n break;\n\n case ComponentChangeType.UpdateOrder:\n this.updateOrder(change as IUpdateOrderChange);\n break;\n\n case ComponentChangeType.ChangeToken:\n this.changeToken(change as IChangeToken);\n break;\n\n case ComponentChangeType.ChangeProperties:\n this.changeProperties(change as IPropertiesChange);\n break;\n }\n }\n }\n }\n\n private changeProperties({uuid, properties}: IPropertiesChange) {\n const c = this.getComponentState(uuid)!;\n c.properties = applyPropsChanges(c.properties, properties);\n }\n\n private changeToken({uuid, token}: IChangeToken) {\n this.getComponentState(uuid)!.token = token || VoidToken;\n }\n\n private updateOrder({uuid, order}: IUpdateOrderChange) {\n this.getComponentState(uuid)!.order = order ?? 0;\n }\n\n private setParent({uuid, parentUuid, order}: ISetParentChange) {\n const c = this.getComponentState(uuid)!;\n c.parentUuid = parentUuid;\n c.order = order ?? 0;\n }\n\n private destroyEntity({uuid}: IDestroyEntitiesChange) {\n this.#components.delete(uuid);\n }\n\n private createEntity({uuid, token, parentUuid, order, properties, autoDestructionOnParentRemoval}: ICreateEntitiesChange) {\n this.#components.set(uuid, {\n token: token || VoidToken,\n parentUuid,\n order: order ?? 0,\n properties: applyPropsChanges(undefined, properties),\n ...(autoDestructionOnParentRemoval ? {autoDestructionOnParentRemoval: true} : {}),\n });\n }\n}"],
|
|
5
|
+
"mappings": "AAAA,SAAQ,qBAAqB,iBAAgB;AAW7C,SAAQ,yBAAwB;AAgBzB,MAAM,gBAAgB;AAAA,EAC3B,cAA2C,oBAAI,IAAI;AAAA,EAEnD,KAAK,OAAO,QAAQ,IAAI;AACtB,WAAO,KAAK,YAAY,QAAQ,KAAK,KAAK,WAAW;AAAA,EACvD;AAAA,EAEA,QAAQ;AACN,SAAK,YAAY,MAAM;AAAA,EACzB;AAAA,EAEA,UAAU;AACR,WAAO,KAAK,YAAY,SAAS;AAAA,EACnC;AAAA,EAEA,kBAAkB,MAAc;AAC9B,WAAO,KAAK,YAAY,IAAI,IAAI;AAAA,EAClC;AAAA,EAEA,kBAAkB,MAAc;AAC9B,WAAO,KAAK,YAAY,IAAI,IAAI;AAAA,EAClC;AAAA,EAEA,MAAM,SAA6B;AACjC,eAAW,UAAU,SAAS;AAC5B,UAAI,OAAO,SAAS,oBAAoB,gBAAgB;AACtD,aAAK,aAAa,MAA+B;AAAA,MACnD,WAAW,KAAK,YAAY,IAAI,OAAO,IAAI,GAAG;AAC5C,gBAAQ,OAAO,MAAM;AAAA,UACnB,KAAK,oBAAoB;AACvB,iBAAK,cAAc,MAAgC;AACnD;AAAA,UAEF,KAAK,oBAAoB;AACvB,iBAAK,UAAU,MAA0B;AACzC;AAAA,UAEF,KAAK,oBAAoB;AACvB,iBAAK,YAAY,MAA4B;AAC7C;AAAA,UAEF,KAAK,oBAAoB;AACvB,iBAAK,YAAY,MAAsB;AACvC;AAAA,UAEF,KAAK,oBAAoB;AACvB,iBAAK,iBAAiB,MAA2B;AACjD;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,iBAAiB,EAAC,MAAM,WAAU,GAAsB;AAC9D,UAAM,IAAI,KAAK,kBAAkB,IAAI;AACrC,MAAE,aAAa,kBAAkB,EAAE,YAAY,UAAU;AAAA,EAC3D;AAAA,EAEQ,YAAY,EAAC,MAAM,MAAK,GAAiB;AAC/C,SAAK,kBAAkB,IAAI,EAAG,QAAQ,SAAS;AAAA,EACjD;AAAA,EAEQ,YAAY,EAAC,MAAM,MAAK,GAAuB;AACrD,SAAK,kBAAkB,IAAI,EAAG,QAAQ,SAAS;AAAA,EACjD;AAAA,EAEQ,UAAU,EAAC,MAAM,YAAY,MAAK,GAAqB;AAC7D,UAAM,IAAI,KAAK,kBAAkB,IAAI;AACrC,MAAE,aAAa;AACf,MAAE,QAAQ,SAAS;AAAA,EACrB;AAAA,EAEQ,cAAc,EAAC,KAAI,GAA2B;AACpD,SAAK,YAAY,OAAO,IAAI;AAAA,EAC9B;AAAA,EAEQ,aAAa,EAAC,MAAM,OAAO,YAAY,OAAO,YAAY,+BAA8B,GAA0B;AACxH,SAAK,YAAY,IAAI,MAAM;AAAA,MACzB,OAAO,SAAS;AAAA,MAChB;AAAA,MACA,OAAO,SAAS;AAAA,MAChB,YAAY,kBAAkB,QAAW,UAAU;AAAA,MACnD,GAAI,iCAAiC,EAAC,gCAAgC,KAAI,IAAI,CAAC;AAAA,IACjF,CAAC;AAAA,EACH;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=IShadowObjectEnvProxy.js.map
|
|
1
|
+
//# sourceMappingURL=IShadowObjectEnvProxy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalShadowObjectEnv.d.ts","sourceRoot":"","sources":["../../../src/view/LocalShadowObjectEnv.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LocalShadowObjectEnv.d.ts","sourceRoot":"","sources":["../../../src/view/LocalShadowObjectEnv.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,MAAM,EAA0B,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAC,eAAe,EAAE,mBAAmB,EAAY,MAAM,aAAa,CAAC;AAGjF,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;AAEtE,qBAAa,oBAAqB,YAAW,qBAAqB;;IAGhE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED,QAAQ,CAAC,UAAU,QAAQ;IAE3B,sBAAsB,UAAS;gBAEnB,QAAQ,CAAC,EAAE,QAAQ;IAY/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,gBAAgB,CAAC,IAAI,EAAE,eAAe,EAAE,oBAAoB,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAY/E,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9C,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,OAAO,IAAI,IAAI;CAKhB"}
|
|
@@ -1,55 +1,60 @@
|
|
|
1
|
-
import { on } from
|
|
2
|
-
import { MessageToView, ShadowObjectsExport } from
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { toUrlString } from
|
|
6
|
-
import { cloneChangeTrail } from
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import { on } from "@spearwolf/eventize";
|
|
2
|
+
import { MessageToView, ShadowObjectsExport } from "../constants.js";
|
|
3
|
+
import { importModule } from "../in-the-dark/importModule.js";
|
|
4
|
+
import { Kernel } from "../in-the-dark/Kernel.js";
|
|
5
|
+
import { toUrlString } from "../utils/toUrlString.js";
|
|
6
|
+
import { cloneChangeTrail } from "./cloneChangeTrail.js";
|
|
7
|
+
class LocalShadowObjectEnv {
|
|
8
|
+
constructor(registry) {
|
|
9
|
+
this.#importedModules = /* @__PURE__ */ new Set();
|
|
10
|
+
this.isLocalEnv = true;
|
|
11
|
+
this.disableStructuredClone = false;
|
|
12
|
+
this.kernel = new Kernel(registry);
|
|
13
|
+
on(this.kernel, MessageToView, (message) => {
|
|
14
|
+
if (this.onMessageToView != null) {
|
|
15
|
+
const { type, uuid, traverseChildren } = message;
|
|
16
|
+
const data = structuredClone(message.data, { transfer: message.transferables });
|
|
17
|
+
this.onMessageToView({ type, uuid, data, traverseChildren });
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
#importedModules;
|
|
22
|
+
get registry() {
|
|
23
|
+
return this.kernel.registry;
|
|
24
|
+
}
|
|
25
|
+
start() {
|
|
26
|
+
return Promise.resolve();
|
|
27
|
+
}
|
|
28
|
+
applyChangeTrail(data, _waitForConfirmation) {
|
|
29
|
+
const syncData = { changeTrail: this.disableStructuredClone ? data : cloneChangeTrail(data) };
|
|
30
|
+
let result;
|
|
31
|
+
try {
|
|
32
|
+
this.kernel.run(syncData);
|
|
33
|
+
result = Promise.resolve();
|
|
34
|
+
} catch (error) {
|
|
35
|
+
result = Promise.reject(error);
|
|
11
36
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
this.onMessageToView({ type, uuid, data, traverseChildren });
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
start() {
|
|
26
|
-
return Promise.resolve();
|
|
27
|
-
}
|
|
28
|
-
applyChangeTrail(data, _waitForConfirmation) {
|
|
29
|
-
const syncData = { changeTrail: this.disableStructuredClone ? data : cloneChangeTrail(data) };
|
|
30
|
-
let result;
|
|
31
|
-
try {
|
|
32
|
-
this.kernel.run(syncData);
|
|
33
|
-
result = Promise.resolve();
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
result = Promise.reject(error);
|
|
37
|
-
}
|
|
38
|
-
return result;
|
|
39
|
-
}
|
|
40
|
-
async importScript(url) {
|
|
41
|
-
const module = await import(/* @vite-ignore */ toUrlString(url));
|
|
42
|
-
if (module[ShadowObjectsExport]) {
|
|
43
|
-
await this.importModule(module[ShadowObjectsExport]);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
async importModule(module) {
|
|
47
|
-
return importModule(this.kernel, module, this.#importedModules);
|
|
48
|
-
}
|
|
49
|
-
destroy() {
|
|
50
|
-
this.kernel.destroy();
|
|
51
|
-
this.registry.clear();
|
|
52
|
-
this.#importedModules.clear();
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
async importScript(url) {
|
|
40
|
+
const module = await import(
|
|
41
|
+
/* @vite-ignore */
|
|
42
|
+
toUrlString(url)
|
|
43
|
+
);
|
|
44
|
+
if (module[ShadowObjectsExport]) {
|
|
45
|
+
await this.importModule(module[ShadowObjectsExport]);
|
|
53
46
|
}
|
|
47
|
+
}
|
|
48
|
+
async importModule(module) {
|
|
49
|
+
return importModule(this.kernel, module, this.#importedModules);
|
|
50
|
+
}
|
|
51
|
+
destroy() {
|
|
52
|
+
this.kernel.destroy();
|
|
53
|
+
this.registry.clear();
|
|
54
|
+
this.#importedModules.clear();
|
|
55
|
+
}
|
|
54
56
|
}
|
|
55
|
-
|
|
57
|
+
export {
|
|
58
|
+
LocalShadowObjectEnv
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=LocalShadowObjectEnv.js.map
|
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/view/LocalShadowObjectEnv.ts"],
|
|
4
|
+
"sourcesContent": ["import {on} from '@spearwolf/eventize';\nimport {MessageToView, ShadowObjectsExport} from '../constants.js';\nimport {importModule} from '../in-the-dark/importModule.js';\nimport {Kernel, type MessageToViewEvent} from '../in-the-dark/Kernel.js';\nimport type {Registry} from '../in-the-dark/Registry.js';\nimport type {ChangeTrailType, ShadowObjectsModule, SyncEvent} from '../types.js';\nimport {toUrlString} from '../utils/toUrlString.js';\nimport {cloneChangeTrail} from './cloneChangeTrail.js';\nimport type {IShadowObjectEnvProxy} from './IShadowObjectEnvProxy.js';\n\nexport class LocalShadowObjectEnv implements IShadowObjectEnvProxy {\n #importedModules: Set<ShadowObjectsModule> = new Set();\n\n readonly kernel: Kernel;\n\n get registry(): Registry {\n return this.kernel.registry;\n }\n\n readonly isLocalEnv = true;\n\n disableStructuredClone = false;\n\n constructor(registry?: Registry) {\n this.kernel = new Kernel(registry);\n\n on(this.kernel, MessageToView, (message: MessageToViewEvent) => {\n if ((this as IShadowObjectEnvProxy).onMessageToView != null) {\n const {type, uuid, traverseChildren} = message;\n const data = structuredClone(message.data, {transfer: message.transferables});\n (this as IShadowObjectEnvProxy).onMessageToView({type, uuid, data, traverseChildren});\n }\n });\n }\n\n start(): Promise<void> {\n return Promise.resolve();\n }\n\n applyChangeTrail(data: ChangeTrailType, _waitForConfirmation: boolean): Promise<void> {\n const syncData: SyncEvent = {changeTrail: this.disableStructuredClone ? data : cloneChangeTrail(data)};\n let result: Promise<void>;\n try {\n this.kernel.run(syncData);\n result = Promise.resolve();\n } catch (error) {\n result = Promise.reject(error);\n }\n return result;\n }\n\n async importScript(url: URL | string): Promise<void> {\n const module = await import(/* @vite-ignore */ toUrlString(url));\n if (module[ShadowObjectsExport]) {\n await this.importModule(module[ShadowObjectsExport]);\n }\n }\n\n async importModule(module: ShadowObjectsModule): Promise<void> {\n return importModule(this.kernel, module, this.#importedModules);\n }\n\n destroy(): void {\n this.kernel.destroy();\n this.registry.clear();\n this.#importedModules.clear();\n }\n}"],
|
|
5
|
+
"mappings": "AAAA,SAAQ,UAAS;AACjB,SAAQ,eAAe,2BAA0B;AACjD,SAAQ,oBAAmB;AAC3B,SAAQ,cAAsC;AAG9C,SAAQ,mBAAkB;AAC1B,SAAQ,wBAAuB;AAGxB,MAAM,qBAAsD;AAAA,EAajE,YAAY,UAAqB;AAZjC,4BAA6C,oBAAI,IAAI;AAQrD,SAAS,aAAa;AAEtB,kCAAyB;AAGvB,SAAK,SAAS,IAAI,OAAO,QAAQ;AAEjC,OAAG,KAAK,QAAQ,eAAe,CAAC,YAAgC;AAC9D,UAAK,KAA+B,mBAAmB,MAAM;AAC3D,cAAM,EAAC,MAAM,MAAM,iBAAgB,IAAI;AACvC,cAAM,OAAO,gBAAgB,QAAQ,MAAM,EAAC,UAAU,QAAQ,cAAa,CAAC;AAC5E,QAAC,KAA+B,gBAAgB,EAAC,MAAM,MAAM,MAAM,iBAAgB,CAAC;AAAA,MACtF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAtBA;AAAA,EAIA,IAAI,WAAqB;AACvB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAkBA,QAAuB;AACrB,WAAO,QAAQ,QAAQ;AAAA,EACzB;AAAA,EAEA,iBAAiB,MAAuB,sBAA8C;AACpF,UAAM,WAAsB,EAAC,aAAa,KAAK,yBAAyB,OAAO,iBAAiB,IAAI,EAAC;AACrG,QAAI;AACJ,QAAI;AACF,WAAK,OAAO,IAAI,QAAQ;AACxB,eAAS,QAAQ,QAAQ;AAAA,IAC3B,SAAS,OAAO;AACd,eAAS,QAAQ,OAAO,KAAK;AAAA,IAC/B;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,aAAa,KAAkC;AACnD,UAAM,SAAS,MAAM;AAAA;AAAA,MAA0B,YAAY,GAAG;AAAA;AAC9D,QAAI,OAAO,mBAAmB,GAAG;AAC/B,YAAM,KAAK,aAAa,OAAO,mBAAmB,CAAC;AAAA,IACrD;AAAA,EACF;AAAA,EAEA,MAAM,aAAa,QAA4C;AAC7D,WAAO,aAAa,KAAK,QAAQ,QAAQ,KAAK,gBAAgB;AAAA,EAChE;AAAA,EAEA,UAAgB;AACd,SAAK,OAAO,QAAQ;AACpB,SAAK,SAAS,MAAM;AACpB,SAAK,iBAAiB,MAAM;AAAA,EAC9B;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|