@spearwolf/shadow-objects 0.32.0 → 0.33.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 +64 -0
- package/README.md +49 -13
- package/bundle.js +7 -7
- package/package.json +2 -2
- package/src/elements/ShaeEntElement.d.ts +4 -4
- package/src/elements/ShaeEntElement.d.ts.map +1 -1
- package/src/elements/ShaeEntElement.js +4 -5
- package/src/elements/ShaeEntElement.js.map +2 -2
- package/src/elements/ShaePropElement.d.ts +5 -5
- package/src/elements/ShaePropElement.d.ts.map +1 -1
- package/src/elements/ShaePropElement.js +2 -2
- package/src/elements/ShaePropElement.js.map +2 -2
- package/src/elements/ShaeWorkerElement.d.ts.map +1 -1
- package/src/elements/ShaeWorkerElement.js +31 -6
- package/src/elements/ShaeWorkerElement.js.map +2 -2
- package/src/in-the-dark/Kernel.d.ts +5 -0
- package/src/in-the-dark/Kernel.d.ts.map +1 -1
- package/src/in-the-dark/Kernel.js +49 -24
- package/src/in-the-dark/Kernel.js.map +2 -2
- package/src/in-the-dark/Registry.d.ts +1 -1
- package/src/in-the-dark/Registry.d.ts.map +1 -1
- package/src/in-the-dark/Registry.js +24 -20
- package/src/in-the-dark/Registry.js.map +2 -2
- package/src/in-the-dark/ShadowObject.d.ts +1 -1
- package/src/in-the-dark/ShadowObject.d.ts.map +1 -1
- package/src/in-the-dark/ShadowObject.js +2 -2
- package/src/in-the-dark/ShadowObject.js.map +2 -2
- package/src/in-the-dark/SignalsPath.d.ts.map +1 -1
- package/src/in-the-dark/SignalsPath.js.map +2 -2
- package/src/in-the-dark/importModule.js +3 -3
- package/src/in-the-dark/importModule.js.map +2 -2
- package/src/types.d.ts +4 -4
- package/src/types.d.ts.map +1 -1
- package/src/utils/ConsoleLogger.d.ts.map +1 -1
- package/src/utils/ConsoleLogger.js +3 -2
- package/src/utils/ConsoleLogger.js.map +2 -2
- package/src/utils/FrameLoop.d.ts +1 -1
- package/src/utils/FrameLoop.d.ts.map +1 -1
- package/src/utils/FrameLoop.js +0 -2
- package/src/utils/FrameLoop.js.map +2 -2
- package/src/utils/attr-utils.d.ts.map +1 -1
- package/src/utils/attr-utils.js +1 -1
- package/src/utils/attr-utils.js.map +2 -2
- package/src/utils/generateUUID.d.ts +1 -1
- package/src/utils/generateUUID.d.ts.map +1 -1
- package/src/utils/props-utils.d.ts +1 -1
- package/src/utils/props-utils.d.ts.map +1 -1
- package/src/utils/waitForMessageOfType.d.ts +5 -1
- package/src/utils/waitForMessageOfType.d.ts.map +1 -1
- package/src/utils/waitForMessageOfType.js +12 -2
- package/src/utils/waitForMessageOfType.js.map +2 -2
- package/src/view/ComponentChanges.d.ts +4 -1
- package/src/view/ComponentChanges.d.ts.map +1 -1
- package/src/view/ComponentChanges.js +20 -6
- package/src/view/ComponentChanges.js.map +2 -2
- package/src/view/ComponentContext.d.ts +43 -1
- package/src/view/ComponentContext.d.ts.map +1 -1
- package/src/view/ComponentContext.js +123 -47
- package/src/view/ComponentContext.js.map +2 -2
- package/src/view/ComponentMemory.js +3 -1
- package/src/view/ComponentMemory.js.map +2 -2
- package/src/view/IShadowObjectEnvProxy.d.ts +6 -0
- package/src/view/IShadowObjectEnvProxy.d.ts.map +1 -1
- package/src/view/LocalShadowObjectEnv.d.ts +1 -1
- package/src/view/LocalShadowObjectEnv.d.ts.map +1 -1
- package/src/view/LocalShadowObjectEnv.js +11 -6
- package/src/view/LocalShadowObjectEnv.js.map +2 -2
- package/src/view/RemoteWorkerEnv.d.ts +42 -0
- package/src/view/RemoteWorkerEnv.d.ts.map +1 -1
- package/src/view/RemoteWorkerEnv.js +130 -18
- package/src/view/RemoteWorkerEnv.js.map +2 -2
- package/src/view/ShadowEnv.d.ts +25 -1
- package/src/view/ShadowEnv.d.ts.map +1 -1
- package/src/view/ShadowEnv.js +103 -29
- package/src/view/ShadowEnv.js.map +2 -2
- package/src/view/ViewComponent.d.ts +22 -1
- package/src/view/ViewComponent.d.ts.map +1 -1
- package/src/view/ViewComponent.js +66 -22
- package/src/view/ViewComponent.js.map +2 -2
- package/src/worker/MessageRouter.d.ts.map +1 -1
- package/src/worker/MessageRouter.js +7 -5
- package/src/worker/MessageRouter.js.map +2 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/in-the-dark/SignalsPath.ts"],
|
|
4
|
-
"sourcesContent": ["import {emit, off, retain, retainClear} from '@spearwolf/eventize';\nimport {\n createEffect,\n destroyObjectSignals,\n Effect,\n findObjectSignalByName,\n type Signal,\n type SignalLike,\n value,\n} from '@spearwolf/signalize';\nimport {signal} from '@spearwolf/signalize/decorators';\n\nconst VALUE = 'value';\n\nexport class SignalsPath {\n static readonly Value = VALUE;\n\n #signals: SignalLike<any>[] = [];\n #effect?: Effect;\n\n @signal({name: VALUE}) accessor value: any = undefined;\n\n readonly value$: Signal<any>;\n\n constructor(signals?: SignalLike<any>[]) {\n retain(this as SignalsPath, VALUE);\n\n this.value$ = findObjectSignalByName(this, VALUE)
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,SAAQ,MAAM,KAAK,QAAQ,mBAAkB;AAC7C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGA;AAAA,OACK;AACP,SAAQ,cAAa;AAErB,MAAM,QAAQ;AAQZ,cAAC,OAAO,EAAC,MAAM,MAAK,CAAC;AANhB,MAAM,YAAY;AAAA,EAUvB,YAAY,SAA6B;AAVpC;AAGL,iCAA8B,CAAC;AAC/B;AAEuB,uBAAS,QAAa,kBAAtB;AAEvB,SAAS,SAAT;AAGE,WAAO,MAAqB,KAAK;
|
|
4
|
+
"sourcesContent": ["import {emit, off, retain, retainClear} from '@spearwolf/eventize';\nimport {\n createEffect,\n destroyObjectSignals,\n Effect,\n findObjectSignalByName,\n type Signal,\n type SignalLike,\n value,\n} from '@spearwolf/signalize';\nimport {signal} from '@spearwolf/signalize/decorators';\n\nconst VALUE = 'value';\n\nexport class SignalsPath {\n static readonly Value = VALUE;\n\n #signals: SignalLike<any>[] = [];\n #effect?: Effect;\n\n @signal({name: VALUE}) accessor value: any = undefined;\n\n readonly value$: Signal<any>;\n\n constructor(signals?: SignalLike<any>[]) {\n retain(this as SignalsPath, VALUE);\n\n // the @signal accessor above creates this signal during field initialization,\n // so the lookup by that name always resolves once the constructor body runs\n this.value$ = findObjectSignalByName(this, VALUE)!;\n this.value$.onChange((val) => emit(this as SignalsPath, VALUE, val));\n\n if (signals) {\n this.add(...signals);\n }\n }\n\n add(...signals: (Signal<any> | SignalLike<any>)[]) {\n this.#signals.push(...signals);\n this.#updateGetValueFromSignalsEffect();\n return this.#makeRemoveFunc(signals);\n }\n\n unshift(...signals: SignalLike<any>[]) {\n this.#signals.unshift(...signals);\n this.#updateGetValueFromSignalsEffect();\n return this.#makeRemoveFunc(signals);\n }\n\n remove(...signals: SignalLike<any>[]) {\n this.#makeRemoveFunc(signals)();\n }\n\n clear() {\n this.#signals.length = 0;\n this.#updateGetValueFromSignalsEffect();\n }\n\n dispose() {\n this.clear();\n\n this.#effect?.destroy();\n this.#effect = undefined;\n\n retainClear(this as SignalsPath, VALUE);\n off(this);\n\n this.value$.destroy();\n destroyObjectSignals(this);\n }\n\n #makeRemoveFunc(signals: SignalLike<any>[]) {\n return () => {\n for (const sig of signals) {\n const idx = this.#signals.indexOf(sig);\n if (idx !== -1) {\n this.#signals.splice(idx, 1);\n }\n }\n this.#updateGetValueFromSignalsEffect();\n };\n }\n\n #updateGetValueFromSignalsEffect() {\n this.#effect?.destroy();\n if (this.#signals.length === 0) {\n this.#effect = undefined;\n this.value = undefined;\n } else {\n this.#effect = createEffect(() => {\n let valueFromSignals: any;\n for (const sig of this.#signals) {\n const val = value(sig);\n if (val != null) {\n valueFromSignals = val;\n break;\n }\n }\n this.value = valueFromSignals;\n }, this.#signals);\n this.#effect.run();\n }\n }\n}"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,SAAQ,MAAM,KAAK,QAAQ,mBAAkB;AAC7C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGA;AAAA,OACK;AACP,SAAQ,cAAa;AAErB,MAAM,QAAQ;AAQZ,cAAC,OAAO,EAAC,MAAM,MAAK,CAAC;AANhB,MAAM,YAAY;AAAA,EAUvB,YAAY,SAA6B;AAVpC;AAGL,iCAA8B,CAAC;AAC/B;AAEuB,uBAAS,QAAa,kBAAtB;AAEvB,SAAS,SAAT;AAGE,WAAO,MAAqB,KAAK;AAIjC,SAAK,SAAS,uBAAuB,MAAM,KAAK;AAChD,SAAK,OAAO,SAAS,CAAC,QAAQ,KAAK,MAAqB,OAAO,GAAG,CAAC;AAEnE,QAAI,SAAS;AACX,WAAK,IAAI,GAAG,OAAO;AAAA,IACrB;AAAA,EACF;AAAA,EAEA,OAAO,SAA4C;AACjD,uBAAK,UAAS,KAAK,GAAG,OAAO;AAC7B,0BAAK,4DAAL;AACA,WAAO,sBAAK,2CAAL,WAAqB;AAAA,EAC9B;AAAA,EAEA,WAAW,SAA4B;AACrC,uBAAK,UAAS,QAAQ,GAAG,OAAO;AAChC,0BAAK,4DAAL;AACA,WAAO,sBAAK,2CAAL,WAAqB;AAAA,EAC9B;AAAA,EAEA,UAAU,SAA4B;AACpC,0BAAK,2CAAL,WAAqB,SAAS;AAAA,EAChC;AAAA,EAEA,QAAQ;AACN,uBAAK,UAAS,SAAS;AACvB,0BAAK,4DAAL;AAAA,EACF;AAAA,EAEA,UAAU;AACR,SAAK,MAAM;AAEX,uBAAK,UAAS,QAAQ;AACtB,uBAAK,SAAU;AAEf,gBAAY,MAAqB,KAAK;AACtC,QAAI,IAAI;AAER,SAAK,OAAO,QAAQ;AACpB,yBAAqB,IAAI;AAAA,EAC3B;AAkCF;AAzFO;AAGL;AACA;AAEgC;AAN3B;AAyDL,oBAAe,SAAC,SAA4B;AAC1C,SAAO,MAAM;AACX,eAAW,OAAO,SAAS;AACzB,YAAM,MAAM,mBAAK,UAAS,QAAQ,GAAG;AACrC,UAAI,QAAQ,IAAI;AACd,2BAAK,UAAS,OAAO,KAAK,CAAC;AAAA,MAC7B;AAAA,IACF;AACA,0BAAK,4DAAL;AAAA,EACF;AACF;AAEA,qCAAgC,WAAG;AACjC,qBAAK,UAAS,QAAQ;AACtB,MAAI,mBAAK,UAAS,WAAW,GAAG;AAC9B,uBAAK,SAAU;AACf,SAAK,QAAQ;AAAA,EACf,OAAO;AACL,uBAAK,SAAU,aAAa,MAAM;AAChC,UAAI;AACJ,iBAAW,OAAO,mBAAK,WAAU;AAC/B,cAAM,MAAM,MAAM,GAAG;AACrB,YAAI,OAAO,MAAM;AACf,6BAAmB;AACnB;AAAA,QACF;AAAA,MACF;AACA,WAAK,QAAQ;AAAA,IACf,GAAG,mBAAK,SAAQ;AAChB,uBAAK,SAAQ,IAAI;AAAA,EACnB;AACF;AAlFuB,4BAAS,SAAhC,YANW,aAMqB;AAN3B,2BAAM;AAAA,YACK,QAAQ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -10,8 +10,8 @@ async function importModule(kernel, module, importedModules, upgradeEntities = t
|
|
|
10
10
|
}
|
|
11
11
|
const { registry } = kernel;
|
|
12
12
|
if (module.define) {
|
|
13
|
-
for (const [token,
|
|
14
|
-
registry.define(token,
|
|
13
|
+
for (const [token, constructa] of Object.entries(module.define)) {
|
|
14
|
+
registry.define(token, constructa);
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
if (module.routes) {
|
|
@@ -20,7 +20,7 @@ async function importModule(kernel, module, importedModules, upgradeEntities = t
|
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
await (module.initialize?.({
|
|
23
|
-
define: (token,
|
|
23
|
+
define: (token, constructa) => registry.define(token, constructa),
|
|
24
24
|
kernel,
|
|
25
25
|
registry
|
|
26
26
|
}) ?? Promise.resolve());
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/in-the-dark/importModule.ts"],
|
|
4
|
-
"sourcesContent": ["import type {ShadowObjectConstructor, ShadowObjectsModule} from '../types.js';\nimport type {Kernel} from './Kernel.js';\n\nexport async function importModule(\n kernel: Kernel,\n module: ShadowObjectsModule,\n importedModules: Set<ShadowObjectsModule>,\n upgradeEntities = true,\n): Promise<void> {\n if (importedModules.has(module)) {\n console.warn('importModule: skipping already imported module', module);\n return;\n } else {\n importedModules.add(module);\n }\n\n if (module.extends) {\n await Promise.all(module.extends.map((subModule) => importModule(kernel, subModule, importedModules, false)));\n }\n\n const {registry} = kernel;\n\n if (module.define) {\n for (const [token,
|
|
5
|
-
"mappings": "AAGA,eAAsB,aACpB,QACA,QACA,iBACA,kBAAkB,MACH;AACf,MAAI,gBAAgB,IAAI,MAAM,GAAG;AAC/B,YAAQ,KAAK,kDAAkD,MAAM;AACrE;AAAA,EACF,OAAO;AACL,oBAAgB,IAAI,MAAM;AAAA,EAC5B;AAEA,MAAI,OAAO,SAAS;AAClB,UAAM,QAAQ,IAAI,OAAO,QAAQ,IAAI,CAAC,cAAc,aAAa,QAAQ,WAAW,iBAAiB,KAAK,CAAC,CAAC;AAAA,EAC9G;AAEA,QAAM,EAAC,SAAQ,IAAI;AAEnB,MAAI,OAAO,QAAQ;AACjB,eAAW,CAAC,OAAO,
|
|
4
|
+
"sourcesContent": ["import type {ShadowObjectConstructor, ShadowObjectsModule} from '../types.js';\nimport type {Kernel} from './Kernel.js';\n\nexport async function importModule(\n kernel: Kernel,\n module: ShadowObjectsModule,\n importedModules: Set<ShadowObjectsModule>,\n upgradeEntities = true,\n): Promise<void> {\n if (importedModules.has(module)) {\n console.warn('importModule: skipping already imported module', module);\n return;\n } else {\n importedModules.add(module);\n }\n\n if (module.extends) {\n await Promise.all(module.extends.map((subModule) => importModule(kernel, subModule, importedModules, false)));\n }\n\n const {registry} = kernel;\n\n if (module.define) {\n for (const [token, constructa] of Object.entries(module.define)) {\n registry.define(token, constructa as ShadowObjectConstructor);\n }\n }\n\n if (module.routes) {\n for (const [token, routes] of Object.entries(module.routes)) {\n registry.appendRoute(token, routes);\n }\n }\n\n await (module.initialize?.({\n define: (token, constructa) => registry.define(token, constructa as ShadowObjectConstructor),\n kernel,\n registry,\n }) ?? Promise.resolve());\n\n if (upgradeEntities) {\n kernel.upgradeEntities();\n }\n}"],
|
|
5
|
+
"mappings": "AAGA,eAAsB,aACpB,QACA,QACA,iBACA,kBAAkB,MACH;AACf,MAAI,gBAAgB,IAAI,MAAM,GAAG;AAC/B,YAAQ,KAAK,kDAAkD,MAAM;AACrE;AAAA,EACF,OAAO;AACL,oBAAgB,IAAI,MAAM;AAAA,EAC5B;AAEA,MAAI,OAAO,SAAS;AAClB,UAAM,QAAQ,IAAI,OAAO,QAAQ,IAAI,CAAC,cAAc,aAAa,QAAQ,WAAW,iBAAiB,KAAK,CAAC,CAAC;AAAA,EAC9G;AAEA,QAAM,EAAC,SAAQ,IAAI;AAEnB,MAAI,OAAO,QAAQ;AACjB,eAAW,CAAC,OAAO,UAAU,KAAK,OAAO,QAAQ,OAAO,MAAM,GAAG;AAC/D,eAAS,OAAO,OAAO,UAAqC;AAAA,IAC9D;AAAA,EACF;AAEA,MAAI,OAAO,QAAQ;AACjB,eAAW,CAAC,OAAO,MAAM,KAAK,OAAO,QAAQ,OAAO,MAAM,GAAG;AAC3D,eAAS,YAAY,OAAO,MAAM;AAAA,IACpC;AAAA,EACF;AAEA,SAAO,OAAO,aAAa;AAAA,IACzB,QAAQ,CAAC,OAAO,eAAe,SAAS,OAAO,OAAO,UAAqC;AAAA,IAC3F;AAAA,IACA;AAAA,EACF,CAAC,KAAK,QAAQ,QAAQ;AAEtB,MAAI,iBAAiB;AACnB,WAAO,gBAAgB;AAAA,EACzB;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/src/types.d.ts
CHANGED
|
@@ -77,8 +77,8 @@ export type Maybe<T = unknown> = NonNullable<T> | undefined;
|
|
|
77
77
|
export interface ShadowObjectCreationAPI {
|
|
78
78
|
entity: EntityApi;
|
|
79
79
|
dispatchMessageToView(type: string, data?: unknown, transferables?: TransferablesType, traverseChildren?: boolean): void;
|
|
80
|
-
provideContext<T = unknown>(name: string | symbol, sourceOrInitialValue?: T | SignalReader<T | undefined>, options?: ProvideContextOptions<T> | CompareFunc<T | undefined>): Signal<Maybe<T>>;
|
|
81
|
-
provideGlobalContext<T = unknown>(name: string | symbol, sourceOrInitialValue?: T | SignalReader<T | undefined>, options?: ProvideContextOptions<T> | CompareFunc<T | undefined>): Signal<Maybe<T>>;
|
|
80
|
+
provideContext<T = unknown>(name: string | symbol, sourceOrInitialValue?: T | SignalReader<T> | SignalReader<T | undefined>, options?: ProvideContextOptions<T> | CompareFunc<T | undefined>): Signal<Maybe<T>>;
|
|
81
|
+
provideGlobalContext<T = unknown>(name: string | symbol, sourceOrInitialValue?: T | SignalReader<T> | SignalReader<T | undefined>, options?: ProvideContextOptions<T> | CompareFunc<T | undefined>): Signal<Maybe<T>>;
|
|
82
82
|
useContext<T = unknown>(name: string | symbol, options?: SignalValueOptions<T> | CompareFunc<T | undefined>): SignalReader<Maybe<T>>;
|
|
83
83
|
useParentContext<T = unknown>(name: string | symbol, options?: SignalValueOptions<T> | CompareFunc<T | undefined>): SignalReader<Maybe<T>>;
|
|
84
84
|
useProperty<T = unknown>(name: string, options?: SignalValueOptions<T> | CompareFunc<T | undefined>): SignalReader<Maybe<T>>;
|
|
@@ -88,7 +88,7 @@ export interface ShadowObjectCreationAPI {
|
|
|
88
88
|
[K in keyof T]: SignalReader<Maybe<T[K]>>;
|
|
89
89
|
};
|
|
90
90
|
createResource<T = unknown>(factory: () => T | undefined, cleanup?: (resource: NonNullable<T>) => unknown): Signal<Maybe<T>>;
|
|
91
|
-
createEffect
|
|
91
|
+
createEffect: typeof createEffect;
|
|
92
92
|
createSignal<T = unknown>(...args: Parameters<typeof createSignal<T>>): ReturnType<typeof createSignal<T>>;
|
|
93
93
|
createMemo<T = unknown>(...args: Parameters<typeof createMemo<T>>): SignalReader<T>;
|
|
94
94
|
on(...args: SubscribeArgs): ReturnType<typeof on>;
|
|
@@ -124,7 +124,7 @@ export interface ShadowObjectConstructorFunc {
|
|
|
124
124
|
export type ShadowObjectType = EventizedObject;
|
|
125
125
|
export type NamespaceType = string | symbol;
|
|
126
126
|
export type ShadowObjectsModuleInitializer = (shadowObjects: {
|
|
127
|
-
define: (token: string,
|
|
127
|
+
define: (token: string, constructa: ShadowObjectConstructor | ShadowObjectConstructorFunc) => void;
|
|
128
128
|
kernel: Kernel;
|
|
129
129
|
registry: Registry;
|
|
130
130
|
}) => Promise<void>;
|
package/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAC5G,OAAO,KAAK,EAAC,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAC,MAAM,sBAAsB,CAAC;AACpH,OAAO,KAAK,EAAC,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAC5F,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,EAAC,MAAM,EAAE,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAE1D,MAAM,MAAM,eAAe,GAAG,oBAAoB,EAAE,CAAC;AAErD,MAAM,MAAM,iBAAiB,GAAG,YAAY,EAAE,CAAC;AAE/C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;AAE1D,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,IAAI,EAAE,mBAAmB,CAAC,cAAc,CAAC;IACzC,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;AAED,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD,IAAI,EAAE,mBAAmB,CAAC,WAAW,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,IAAI,EAAE,mBAAmB,CAAC,eAAe,CAAC;CAC3C;AAED,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,IAAI,EAAE,mBAAmB,CAAC,SAAS,CAAC;IACpC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,IAAI,EAAE,mBAAmB,CAAC,WAAW,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,IAAI,EAAE,mBAAmB,CAAC,gBAAgB,CAAC;IAC3C,UAAU,EAAE,uBAAuB,CAAC;CACrC;AAED,MAAM,WAAW,WAAY,SAAQ,gBAAgB;IACnD,IAAI,EAAE,mBAAmB,CAAC,UAAU,CAAC;IACrC,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,MAAM,MAAM,oBAAoB,GAC5B,qBAAqB,GACrB,sBAAsB,GACtB,gBAAgB,GAChB,kBAAkB,GAClB,iBAAiB,GACjB,YAAY,GACZ,WAAW,CAAC;AAEhB,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,cAAc,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,OAAO,kBAAkB,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,SAAS,GAAG,QAAQ,CAC9B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,GAAG,QAAQ,CAAC,GAAG;IACrF,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,SAAS,SAAS,EAAE,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,OAAO,GAAG,IAAI,CAAC;CAC1D,CACF,CAAC;AAEF,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,CAAE,SAAQ,kBAAkB,CAAC,CAAC,CAAC;IACrE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,KAAK,CAAC,CAAC,GAAG,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAE5D,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,SAAS,CAAC;IAElB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAEzH,cAAc,CAAC,CAAC,GAAG,OAAO,EACxB,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,oBAAoB,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleLogger.d.ts","sourceRoot":"","sources":["../../../src/utils/ConsoleLogger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,kBAAkB,CAAC;AAC9C,eAAO,MAAM,sBAAsB,yBAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"ConsoleLogger.d.ts","sourceRoot":"","sources":["../../../src/utils/ConsoleLogger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,kBAAkB,CAAC;AAC9C,eAAO,MAAM,sBAAsB,yBAA6B,CAAC;AAkDjE,qBAAa,aAAa;;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,MAAM,UAAQ;IAEd,MAAM,CAAC,YAAY;;;;;;;;;MAWjB;IAEF,MAAM,KAAK,SAAS,YAEnB;IAED,MAAM,KAAK,OAAO,YAEjB;IAED,MAAM,CAAC,YAAY;eAIF,MAAM;cAMP,MAAM;cAMN,MAAM;eAML,MAAM;MAGrB;IAEF,MAAM,CAAC,UAAU;gBA4EL,SAAS,EAAE,MAAM;IAa7B,IAAI,SAAS,YAEZ;IAED,IAAI,OAAO,YAEV;IAED,IAAI,MAAM,YAET;IAED,IAAI,MAAM,YAET;IAED,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;IAIpB,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;IAInB,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;IAInB,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;CAOrB"}
|
|
@@ -16,10 +16,11 @@ const asBoolean = (val) => {
|
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
18
|
const getKeyPath = (key) => [HAS_LOCAL_STORAGE ? CONSOLE_LOGGER : void 0, ...Array.isArray(key) ? key : [key]].filter(Boolean).join(".");
|
|
19
|
-
function loadConfigValue(key, as
|
|
19
|
+
function loadConfigValue(key, as, defaultValue) {
|
|
20
20
|
const _key = getKeyPath(key);
|
|
21
21
|
const value = HAS_LOCAL_STORAGE ? localStorage.getItem(_key) : globalThis[CONSOLE_LOGGER_STORAGE]?.[_key];
|
|
22
|
-
|
|
22
|
+
if (value == void 0) return defaultValue;
|
|
23
|
+
return as ? as(value) : value;
|
|
23
24
|
}
|
|
24
25
|
function saveConfigValue(key, val) {
|
|
25
26
|
if (HAS_LOCAL_STORAGE) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/utils/ConsoleLogger.ts"],
|
|
4
|
-
"sourcesContent": ["// https://developer.chrome.com/docs/devtools/console/format-style?hl=de\n\nexport const CONSOLE_LOGGER = 'ConsoleLogger';\nexport const CONSOLE_LOGGER_STORAGE = `${CONSOLE_LOGGER}Storage`;\n\nconst IS_LOCALHOST = Boolean(globalThis.location?.host?.startsWith('localhost') ?? false);\n\nconst HAS_LOCAL_STORAGE = 'localStorage' in globalThis;\n\nconst ConsoleLogger$ = Symbol.for(CONSOLE_LOGGER);\n\nlet gInitialized = false;\n\nconst asBoolean = (val: string | boolean) => {\n if (typeof val === 'boolean') return val;\n switch (val.toLowerCase()) {\n case 'true':\n case 'yes':\n case 'on':\n return true;\n default:\n return false;\n }\n};\n\nconst getKeyPath = (key: string | string[]): string =>\n [HAS_LOCAL_STORAGE ? CONSOLE_LOGGER : undefined, ...(Array.isArray(key) ? key : [key])].filter(Boolean).join('.');\n\nfunction loadConfigValue<T>(key: string | string[], as: (val: string) => T
|
|
5
|
-
"mappings": "AAEO,MAAM,iBAAiB;AACvB,MAAM,yBAAyB,GAAG,cAAc;AAEvD,MAAM,eAAe,QAAQ,WAAW,UAAU,MAAM,WAAW,WAAW,KAAK,KAAK;AAExF,MAAM,oBAAoB,kBAAkB;AAE5C,MAAM,iBAAiB,OAAO,IAAI,cAAc;AAEhD,IAAI,eAAe;AAEnB,MAAM,YAAY,CAAC,QAA0B;AAC3C,MAAI,OAAO,QAAQ,UAAW,QAAO;AACrC,UAAQ,IAAI,YAAY,GAAG;AAAA,IACzB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEA,MAAM,aAAa,CAAC,QAClB,CAAC,oBAAoB,iBAAiB,QAAW,GAAI,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,GAAG,CAAE,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAElH,SAAS,gBAAmB,KAAwB,
|
|
4
|
+
"sourcesContent": ["// https://developer.chrome.com/docs/devtools/console/format-style?hl=de\n\nexport const CONSOLE_LOGGER = 'ConsoleLogger';\nexport const CONSOLE_LOGGER_STORAGE = `${CONSOLE_LOGGER}Storage`;\n\nconst IS_LOCALHOST = Boolean(globalThis.location?.host?.startsWith('localhost') ?? false);\n\nconst HAS_LOCAL_STORAGE = 'localStorage' in globalThis;\n\nconst ConsoleLogger$ = Symbol.for(CONSOLE_LOGGER);\n\nlet gInitialized = false;\n\nconst asBoolean = (val: string | boolean) => {\n if (typeof val === 'boolean') return val;\n switch (val.toLowerCase()) {\n case 'true':\n case 'yes':\n case 'on':\n return true;\n default:\n return false;\n }\n};\n\nconst getKeyPath = (key: string | string[]): string =>\n [HAS_LOCAL_STORAGE ? CONSOLE_LOGGER : undefined, ...(Array.isArray(key) ? key : [key])].filter(Boolean).join('.');\n\nfunction loadConfigValue<T>(key: string | string[], as: ((val: string) => T) | undefined, defaultValue: T): T {\n const _key = getKeyPath(key);\n // @ts-ignore\n const value = HAS_LOCAL_STORAGE ? localStorage.getItem(_key) : globalThis[CONSOLE_LOGGER_STORAGE]?.[_key];\n if (value == undefined) return defaultValue;\n // without a converter the stored value is the value: that is how the styles are read\n return as ? as(value) : (value as T);\n}\n\nfunction saveConfigValue(key: string | string[], val: any) {\n if (HAS_LOCAL_STORAGE) {\n localStorage.setItem(getKeyPath(key), val);\n } else {\n // @ts-ignore\n if (globalThis[CONSOLE_LOGGER_STORAGE] == undefined) {\n // @ts-ignore\n globalThis[CONSOLE_LOGGER_STORAGE] = {};\n // @ts-ignore\n console.debug(`${CONSOLE_LOGGER}: Initialize`, {[CONSOLE_LOGGER_STORAGE]: globalThis[CONSOLE_LOGGER_STORAGE]});\n }\n // @ts-ignore\n globalThis[CONSOLE_LOGGER_STORAGE][getKeyPath(key)] = val;\n }\n}\n\nexport class ConsoleLogger {\n namespace?: string;\n\n enable = true;\n\n static sharedConfig = {\n enable: IS_LOCALHOST,\n\n debug: false,\n info: true,\n warn: true,\n\n 'styles.debug': 'color: #111; background: #999; display: inline-block; padding: 0 0.25em; margin: 0; border-radius: 0.25em',\n 'styles.info': 'color: #020; background: #8a8; display: inline-block; padding: 0 0.25em; margin: 0; border-radius: 0.25em',\n 'styles.warn': 'color: #fa0; background: #a98; display: inline-block; padding: 0 0.25em; margin: 0; border-radius: 0.25em',\n 'styles.error': 'color: #ff0; background: #a00; display: inline-block; padding: 0 0.25em; margin: 0; border-radius: 0.25em',\n };\n\n static get isEnabled() {\n return ConsoleLogger.sharedConfig.enable;\n }\n\n static get isDebug() {\n return ConsoleLogger.sharedConfig.enable && ConsoleLogger.sharedConfig.debug;\n }\n\n static sharedStyles = {\n get debug() {\n return ConsoleLogger.sharedConfig['styles.debug'];\n },\n set debug(val: string) {\n ConsoleLogger.sharedConfig['styles.debug'] = val;\n },\n get info() {\n return ConsoleLogger.sharedConfig['styles.info'];\n },\n set info(val: string) {\n ConsoleLogger.sharedConfig['styles.info'] = val;\n },\n get warn() {\n return ConsoleLogger.sharedConfig['styles.warn'];\n },\n set warn(val: string) {\n ConsoleLogger.sharedConfig['styles.warn'] = val;\n },\n get error() {\n return ConsoleLogger.sharedConfig['styles.error'];\n },\n set error(val: string) {\n ConsoleLogger.sharedConfig['styles.error'] = val;\n },\n };\n\n static loadConfig() {\n if (HAS_LOCAL_STORAGE) {\n ['enable', 'debug', 'info', 'warn'].forEach((key) => {\n // @ts-ignore\n this.sharedConfig[key] = loadConfigValue(key, asBoolean, this.sharedConfig[key]);\n });\n\n ['debug', 'info', 'warn', 'error'].forEach((key) => {\n // @ts-ignore\n this.sharedStyles[key] = loadConfigValue(['styles', key], undefined, this.sharedStyles[key]);\n });\n\n if (ConsoleLogger.isDebug) {\n console.debug(`${CONSOLE_LOGGER}: Load config from localStorage`, ConsoleLogger.sharedConfig);\n }\n\n // @ts-ignore\n if (!globalThis[CONSOLE_LOGGER]?.[ConsoleLogger$]) {\n // @ts-ignore\n globalThis[CONSOLE_LOGGER] ??= {\n [ConsoleLogger$]: true,\n\n get enable() {\n return ConsoleLogger.sharedConfig.enable;\n },\n set enable(val: boolean) {\n ConsoleLogger.sharedConfig.enable = val;\n saveConfigValue('enable', val ? 'true' : 'false');\n },\n get debug() {\n return ConsoleLogger.sharedConfig.debug;\n },\n set debug(val: boolean) {\n ConsoleLogger.sharedConfig.debug = val;\n saveConfigValue('debug', val ? 'true' : 'false');\n },\n get info() {\n return ConsoleLogger.sharedConfig.info;\n },\n set info(val: boolean) {\n ConsoleLogger.sharedConfig.info = val;\n saveConfigValue('info', val ? 'true' : 'false');\n },\n get warn() {\n return ConsoleLogger.sharedConfig.warn;\n },\n set warn(val: boolean) {\n ConsoleLogger.sharedConfig.warn = val;\n saveConfigValue('warn', val ? 'true' : 'false');\n },\n };\n }\n } else {\n // no localStorage available: in this case we just use globalThis[STORAGE_KEY]\n // @ts-ignore\n if (!globalThis[CONSOLE_LOGGER_STORAGE]?.[ConsoleLogger$]) {\n // @ts-ignore\n globalThis[CONSOLE_LOGGER_STORAGE] = {\n [ConsoleLogger$]: true,\n ...ConsoleLogger.sharedConfig,\n // @ts-ignore\n ...globalThis[CONSOLE_LOGGER_STORAGE],\n };\n // @ts-ignore\n ConsoleLogger.sharedConfig = globalThis[CONSOLE_LOGGER_STORAGE];\n if (ConsoleLogger.isDebug) {\n console.debug(\n `${CONSOLE_LOGGER}: Load config from ${CONSOLE_LOGGER_STORAGE}`,\n // @ts-ignore\n globalThis[CONSOLE_LOGGER_STORAGE],\n );\n }\n }\n }\n }\n\n constructor(namespace: string) {\n this.namespace = (namespace || '').trim() || CONSOLE_LOGGER;\n\n if (!gInitialized) {\n ConsoleLogger.loadConfig();\n gInitialized = true;\n }\n\n const key = [this.namespace, 'enable'];\n this.enable = loadConfigValue(key, asBoolean, this.enable);\n saveConfigValue(key, HAS_LOCAL_STORAGE ? (this.enable ? 'true' : 'false') : this.enable);\n }\n\n get isEnabled() {\n return this.enable && ConsoleLogger.sharedConfig.enable;\n }\n\n get isDebug() {\n return this.isEnabled && ConsoleLogger.sharedConfig.debug;\n }\n\n get isInfo() {\n return this.isEnabled && ConsoleLogger.sharedConfig.info;\n }\n\n get isWarn() {\n return this.isEnabled && ConsoleLogger.sharedConfig.warn;\n }\n\n debug(...args: any[]) {\n this.#print('debug', ConsoleLogger.sharedStyles.debug, args);\n }\n\n info(...args: any[]) {\n this.#print('info', ConsoleLogger.sharedStyles.info, args);\n }\n\n warn(...args: any[]) {\n this.#print('warn', ConsoleLogger.sharedStyles.warn, args);\n }\n\n error(...args: any[]) {\n this.#print('error', ConsoleLogger.sharedStyles.error, args);\n }\n\n #print(level: 'debug' | 'info' | 'warn' | 'error', styles: string, args: any[]) {\n console[level](`%c${this.namespace}`, styles, ...args);\n }\n}"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/src/utils/FrameLoop.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export declare class FrameLoop {
|
|
|
2
2
|
#private;
|
|
3
3
|
static OnFrame: symbol;
|
|
4
4
|
constructor();
|
|
5
|
-
start(target: object | Function): () => void;
|
|
5
|
+
start(target: object | Function): (() => void) | undefined;
|
|
6
6
|
stop(target: object | Function): void;
|
|
7
7
|
}
|
|
8
8
|
//# sourceMappingURL=FrameLoop.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrameLoop.d.ts","sourceRoot":"","sources":["../../../src/utils/FrameLoop.ts"],"names":[],"mappings":"AAIA,qBAAa,SAAS;;IACpB,MAAM,CAAC,OAAO,SAAqB;;
|
|
1
|
+
{"version":3,"file":"FrameLoop.d.ts","sourceRoot":"","sources":["../../../src/utils/FrameLoop.ts"],"names":[],"mappings":"AAIA,qBAAa,SAAS;;IACpB,MAAM,CAAC,OAAO,SAAqB;;IAUnC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAc/B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;CAqB/B"}
|
package/src/utils/FrameLoop.js
CHANGED
|
@@ -5,7 +5,6 @@ class FrameLoop {
|
|
|
5
5
|
this.OnFrame = /* @__PURE__ */ Symbol("onFrame");
|
|
6
6
|
}
|
|
7
7
|
#rafID = 0;
|
|
8
|
-
#subscriptionCount = 0;
|
|
9
8
|
constructor() {
|
|
10
9
|
if (gUniqInstance) return gUniqInstance;
|
|
11
10
|
eventize(this);
|
|
@@ -17,7 +16,6 @@ class FrameLoop {
|
|
|
17
16
|
this.#requestAnimationFrame();
|
|
18
17
|
}
|
|
19
18
|
on(this, FrameLoop.OnFrame, target);
|
|
20
|
-
this.#subscriptionCount++;
|
|
21
19
|
return () => {
|
|
22
20
|
this.stop(target);
|
|
23
21
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/utils/FrameLoop.ts"],
|
|
4
|
-
"sourcesContent": ["import {emit, eventize, getSubscriptionCount, off, on} from '@spearwolf/eventize';\n\nlet gUniqInstance: FrameLoop = null;\n\nexport class FrameLoop {\n static OnFrame = Symbol('onFrame');\n\n #rafID = 0;\n
|
|
5
|
-
"mappings": "AAAA,SAAQ,MAAM,UAAU,sBAAsB,KAAK,UAAS;AAE5D,IAAI,
|
|
4
|
+
"sourcesContent": ["import {emit, eventize, getSubscriptionCount, off, on} from '@spearwolf/eventize';\n\nlet gUniqInstance: FrameLoop | null = null;\n\nexport class FrameLoop {\n static OnFrame = Symbol('onFrame');\n\n #rafID = 0;\n\n constructor() {\n if (gUniqInstance) return gUniqInstance;\n eventize(this);\n gUniqInstance = this;\n }\n\n start(target: object | Function) {\n if (target == null) return;\n\n if (getSubscriptionCount(this) === 0) {\n this.#requestAnimationFrame();\n }\n\n on(this as FrameLoop, FrameLoop.OnFrame, target);\n\n return () => {\n this.stop(target);\n };\n }\n\n stop(target: object | Function) {\n off(this, FrameLoop.OnFrame, target);\n\n if (getSubscriptionCount(this) === 0) {\n this.#cancelAnimationFrame();\n }\n }\n\n #onFrame = (now: number) => {\n emit(this as FrameLoop, FrameLoop.OnFrame, now);\n this.#requestAnimationFrame();\n };\n\n #requestAnimationFrame() {\n this.#rafID = requestAnimationFrame(this.#onFrame);\n }\n\n #cancelAnimationFrame() {\n cancelAnimationFrame(this.#rafID);\n this.#rafID = 0;\n }\n}"],
|
|
5
|
+
"mappings": "AAAA,SAAQ,MAAM,UAAU,sBAAsB,KAAK,UAAS;AAE5D,IAAI,gBAAkC;AAE/B,MAAM,UAAU;AAAA,EACrB;AAAA,SAAO,UAAU,uBAAO,SAAS;AAAA;AAAA,EAEjC,SAAS;AAAA,EAET,cAAc;AACZ,QAAI,cAAe,QAAO;AAC1B,aAAS,IAAI;AACb,oBAAgB;AAAA,EAClB;AAAA,EAEA,MAAM,QAA2B;AAC/B,QAAI,UAAU,KAAM;AAEpB,QAAI,qBAAqB,IAAI,MAAM,GAAG;AACpC,WAAK,uBAAuB;AAAA,IAC9B;AAEA,OAAG,MAAmB,UAAU,SAAS,MAAM;AAE/C,WAAO,MAAM;AACX,WAAK,KAAK,MAAM;AAAA,IAClB;AAAA,EACF;AAAA,EAEA,KAAK,QAA2B;AAC9B,QAAI,MAAM,UAAU,SAAS,MAAM;AAEnC,QAAI,qBAAqB,IAAI,MAAM,GAAG;AACpC,WAAK,sBAAsB;AAAA,IAC7B;AAAA,EACF;AAAA,EAEA,WAAW,CAAC,QAAgB;AAC1B,SAAK,MAAmB,UAAU,SAAS,GAAG;AAC9C,SAAK,uBAAuB;AAAA,EAC9B;AAAA,EAEA,yBAAyB;AACvB,SAAK,SAAS,sBAAsB,KAAK,QAAQ;AAAA,EACnD;AAAA,EAEA,wBAAwB;AACtB,yBAAqB,KAAK,MAAM;AAChC,SAAK,SAAS;AAAA,EAChB;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attr-utils.d.ts","sourceRoot":"","sources":["../../../src/utils/attr-utils.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,sBAAsB,GAAI,IAAI,WAAW,
|
|
1
|
+
{"version":3,"file":"attr-utils.d.ts","sourceRoot":"","sources":["../../../src/utils/attr-utils.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,sBAAsB,GAAI,IAAI,WAAW,wCAAuD,CAAC;AAE9G,eAAO,MAAM,oBAAoB,GAAI,IAAI,WAAW,EAAE,MAAM,MAAM,YAMjE,CAAC"}
|
package/src/utils/attr-utils.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ATTR_NS } from "../elements/constants.js";
|
|
2
2
|
import { TRUTHY_VALUES } from "./constants.js";
|
|
3
3
|
import { toNamespace } from "./toNamespace.js";
|
|
4
|
-
const readNamespaceAttribute = (el) => toNamespace(el.getAttribute(ATTR_NS));
|
|
4
|
+
const readNamespaceAttribute = (el) => toNamespace(el.getAttribute(ATTR_NS) ?? void 0);
|
|
5
5
|
const readBooleanAttribute = (el, name) => {
|
|
6
6
|
if (el.hasAttribute(name)) {
|
|
7
7
|
const val = el.getAttribute(name)?.trim()?.toLowerCase() || "1";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/utils/attr-utils.ts"],
|
|
4
|
-
"sourcesContent": ["import {ATTR_NS} from '../elements/constants.js';\nimport {TRUTHY_VALUES} from './constants.js';\nimport {toNamespace} from './toNamespace.js';\n\nexport const readNamespaceAttribute = (el: HTMLElement) => toNamespace(el.getAttribute(ATTR_NS));\n\nexport const readBooleanAttribute = (el: HTMLElement, name: string) => {\n if (el.hasAttribute(name)) {\n const val = el.getAttribute(name)?.trim()?.toLowerCase() || '1';\n return TRUTHY_VALUES.has(val);\n }\n return false;\n};"],
|
|
5
|
-
"mappings": "AAAA,SAAQ,eAAc;AACtB,SAAQ,qBAAoB;AAC5B,SAAQ,mBAAkB;AAEnB,MAAM,yBAAyB,CAAC,OAAoB,YAAY,GAAG,aAAa,OAAO,
|
|
4
|
+
"sourcesContent": ["import {ATTR_NS} from '../elements/constants.js';\nimport {TRUTHY_VALUES} from './constants.js';\nimport {toNamespace} from './toNamespace.js';\n\nexport const readNamespaceAttribute = (el: HTMLElement) => toNamespace(el.getAttribute(ATTR_NS) ?? undefined);\n\nexport const readBooleanAttribute = (el: HTMLElement, name: string) => {\n if (el.hasAttribute(name)) {\n const val = el.getAttribute(name)?.trim()?.toLowerCase() || '1';\n return TRUTHY_VALUES.has(val);\n }\n return false;\n};"],
|
|
5
|
+
"mappings": "AAAA,SAAQ,eAAc;AACtB,SAAQ,qBAAoB;AAC5B,SAAQ,mBAAkB;AAEnB,MAAM,yBAAyB,CAAC,OAAoB,YAAY,GAAG,aAAa,OAAO,KAAK,MAAS;AAErG,MAAM,uBAAuB,CAAC,IAAiB,SAAiB;AACrE,MAAI,GAAG,aAAa,IAAI,GAAG;AACzB,UAAM,MAAM,GAAG,aAAa,IAAI,GAAG,KAAK,GAAG,YAAY,KAAK;AAC5D,WAAO,cAAc,IAAI,GAAG;AAAA,EAC9B;AACA,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const generateUUID: () => string
|
|
1
|
+
export declare const generateUUID: () => `${string}-${string}-${string}-${string}-${string}`;
|
|
2
2
|
//# sourceMappingURL=generateUUID.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateUUID.d.ts","sourceRoot":"","sources":["../../../src/utils/generateUUID.ts"],"names":[],"mappings":"AAsSA,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"generateUUID.d.ts","sourceRoot":"","sources":["../../../src/utils/generateUUID.ts"],"names":[],"mappings":"AAsSA,eAAO,MAAM,YAAY,2DAA8D,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ComponentPropertiesType } from '../types.js';
|
|
2
|
-
export declare const filterUndefinedProps: (props: ComponentPropertiesType | undefined) => [string, unknown][];
|
|
2
|
+
export declare const filterUndefinedProps: (props: ComponentPropertiesType | undefined) => [string, unknown][] | undefined;
|
|
3
3
|
/**
|
|
4
4
|
* Maybe `curProps` will be modified and returned. But it can also return a newly created array. `changes` will never be modified.
|
|
5
5
|
*/
|
|
@@ -1 +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,GAAI,OAAO,uBAAuB,GAAG,SAAS,
|
|
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,GAAI,OAAO,uBAAuB,GAAG,SAAS,oCAG9E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,uBAAuB,GAAG,SAAS,EAC7C,SAAS,uBAAuB,GAAG,SAAS,KAC3C,uBAAuB,GAAG,SAc5B,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,GAAG,uBAAuB,GAAG,SAAS,EAAE,GAAG,uBAAuB,GAAG,SAAS,YAaxG,CAAC"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Wait for a message of a specific type or reject after a timeout.
|
|
3
|
+
*
|
|
4
|
+
* A `signal` rejects the promise the moment it is aborted, with the abort reason,
|
|
5
|
+
* so that a caller does not sit out the timeout waiting for a reply that can no
|
|
6
|
+
* longer arrive.
|
|
3
7
|
*/
|
|
4
|
-
export declare const waitForMessageOfType: (worker: Worker, type: string, timeout?: number, guard?: (data: any) => boolean) => Promise<void>;
|
|
8
|
+
export declare const waitForMessageOfType: (worker: Worker, type: string, timeout?: number, guard?: (data: any) => boolean, signal?: AbortSignal) => Promise<void>;
|
|
5
9
|
//# sourceMappingURL=waitForMessageOfType.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"waitForMessageOfType.d.ts","sourceRoot":"","sources":["../../../src/utils/waitForMessageOfType.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"waitForMessageOfType.d.ts","sourceRoot":"","sources":["../../../src/utils/waitForMessageOfType.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,EACd,MAAM,MAAM,EACZ,gBAAc,EACd,QAAQ,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,EAC9B,SAAS,WAAW,kBAiDlB,CAAC"}
|
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
const waitForMessageOfType = (worker, type, timeout = 1e3, guard) => new Promise((resolve, reject) => {
|
|
1
|
+
const waitForMessageOfType = (worker, type, timeout = 1e3, guard, signal) => new Promise((resolve, reject) => {
|
|
2
|
+
if (signal?.aborted) {
|
|
3
|
+
reject(signal.reason);
|
|
4
|
+
return;
|
|
5
|
+
}
|
|
2
6
|
let timeoutId;
|
|
3
7
|
let listener;
|
|
4
8
|
const cleanup = () => {
|
|
5
9
|
clearTimeout(timeoutId);
|
|
6
10
|
worker.removeEventListener("message", listener);
|
|
11
|
+
signal?.removeEventListener("abort", onAbort);
|
|
7
12
|
};
|
|
13
|
+
function onAbort() {
|
|
14
|
+
cleanup();
|
|
15
|
+
reject(signal.reason);
|
|
16
|
+
}
|
|
8
17
|
if (timeout !== 0 && timeout !== Infinity) {
|
|
9
18
|
timeoutId = setTimeout(() => {
|
|
10
19
|
cleanup();
|
|
@@ -20,10 +29,11 @@ const waitForMessageOfType = (worker, type, timeout = 1e3, guard) => new Promise
|
|
|
20
29
|
}
|
|
21
30
|
} catch (error) {
|
|
22
31
|
cleanup();
|
|
23
|
-
reject(error
|
|
32
|
+
reject(error);
|
|
24
33
|
}
|
|
25
34
|
}
|
|
26
35
|
};
|
|
36
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
27
37
|
worker.addEventListener("message", listener);
|
|
28
38
|
});
|
|
29
39
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/utils/waitForMessageOfType.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Wait for a message of a specific type or reject after a timeout.\n */\nexport const waitForMessageOfType = (worker: Worker
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["/**\n * Wait for a message of a specific type or reject after a timeout.\n *\n * A `signal` rejects the promise the moment it is aborted, with the abort reason,\n * so that a caller does not sit out the timeout waiting for a reply that can no\n * longer arrive.\n */\nexport const waitForMessageOfType = (\n worker: Worker,\n type: string,\n timeout = 1000,\n guard?: (data: any) => boolean,\n signal?: AbortSignal,\n) =>\n new Promise<void>((resolve, reject) => {\n if (signal?.aborted) {\n reject(signal.reason);\n return;\n }\n\n let timeoutId: number;\n // eslint-disable-next-line prefer-const\n let listener: (event: MessageEvent) => void;\n\n const cleanup = () => {\n clearTimeout(timeoutId);\n worker.removeEventListener('message', listener);\n signal?.removeEventListener('abort', onAbort);\n };\n\n // a function declaration, so that `cleanup` may reference it above its own definition;\n // it only ever runs when a signal was passed in, since that is the only case where it gets registered below\n function onAbort() {\n cleanup();\n reject(signal!.reason);\n }\n\n if (timeout !== 0 && timeout !== Infinity) {\n timeoutId = setTimeout(() => {\n cleanup();\n reject(new Error(`Timeout waiting for message of type: ${type}`));\n }, timeout) as any;\n }\n\n listener = (event) => {\n if (event.data.type === type) {\n try {\n if (!guard || guard(event.data)) {\n cleanup();\n resolve();\n }\n } catch (error) {\n cleanup();\n reject(error);\n }\n }\n };\n\n signal?.addEventListener('abort', onAbort, {once: true});\n\n worker.addEventListener('message', listener);\n });"],
|
|
5
|
+
"mappings": "AAOO,MAAM,uBAAuB,CAClC,QACA,MACA,UAAU,KACV,OACA,WAEA,IAAI,QAAc,CAAC,SAAS,WAAW;AACrC,MAAI,QAAQ,SAAS;AACnB,WAAO,OAAO,MAAM;AACpB;AAAA,EACF;AAEA,MAAI;AAEJ,MAAI;AAEJ,QAAM,UAAU,MAAM;AACpB,iBAAa,SAAS;AACtB,WAAO,oBAAoB,WAAW,QAAQ;AAC9C,YAAQ,oBAAoB,SAAS,OAAO;AAAA,EAC9C;AAIA,WAAS,UAAU;AACjB,YAAQ;AACR,WAAO,OAAQ,MAAM;AAAA,EACvB;AAEA,MAAI,YAAY,KAAK,YAAY,UAAU;AACzC,gBAAY,WAAW,MAAM;AAC3B,cAAQ;AACR,aAAO,IAAI,MAAM,wCAAwC,IAAI,EAAE,CAAC;AAAA,IAClE,GAAG,OAAO;AAAA,EACZ;AAEA,aAAW,CAAC,UAAU;AACpB,QAAI,MAAM,KAAK,SAAS,MAAM;AAC5B,UAAI;AACF,YAAI,CAAC,SAAS,MAAM,MAAM,IAAI,GAAG;AAC/B,kBAAQ;AACR,kBAAQ;AAAA,QACV;AAAA,MACF,SAAS,OAAO;AACd,gBAAQ;AACR,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAEA,UAAQ,iBAAiB,SAAS,SAAS,EAAC,MAAM,KAAI,CAAC;AAEvD,SAAO,iBAAiB,WAAW,QAAQ;AAC7C,CAAC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -14,7 +14,10 @@ export declare class ComponentChanges {
|
|
|
14
14
|
changeToken(token: string | undefined): void;
|
|
15
15
|
setParent(parentUuid?: string): void;
|
|
16
16
|
changeOrder(order: number): void;
|
|
17
|
-
|
|
17
|
+
/**
|
|
18
|
+
* @returns `true` if the value differs from the last value written to a change trail
|
|
19
|
+
*/
|
|
20
|
+
changeProperty<T = unknown>(key: string, value: T, isEqual?: (a: T, b: T) => boolean): boolean;
|
|
18
21
|
removeProperty(key: string): void;
|
|
19
22
|
createEvent(type: string, data: unknown, transferables?: Transferable[]): void;
|
|
20
23
|
transferEventsTo(changes: ComponentChanges): void;
|
|
@@ -1 +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;AAKrB,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;IAWD,MAAM,CAAC,KAAK,GAAE,MAAkB,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,EAAE,8BAA8B,UAAQ;IAUhH,OAAO;IAKP,KAAK;IAgBL,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;
|
|
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;AAKrB,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;IAWD,MAAM,CAAC,KAAK,GAAE,MAAkB,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,EAAE,8BAA8B,UAAQ;IAUhH,OAAO;IAKP,KAAK;IAgBL,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IAgBrC,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM;IAS7B,WAAW,CAAC,KAAK,EAAE,MAAM;IAazB;;OAEG;IACH,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,GAAG,OAAO;IAgB9F,cAAc,CAAC,GAAG,EAAE,MAAM;IAgB1B,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,YAAY,EAAE;IAQvE,gBAAgB,CAAC,OAAO,EAAE,gBAAgB;IAW1C,gBAAgB,CAAC,KAAK,EAAE,oBAAoB,EAAE,EAAE,UAAU,EAAE,gBAAgB;IAsC5E,UAAU,IAAI,WAAW;IAYzB,sBAAsB,IAAI,qBAAqB;IAuC/C,uBAAuB,IAAI,sBAAsB;IAOjD,mBAAmB,IAAI,gBAAgB;IAgBvC,qBAAqB,IAAI,kBAAkB;IAU3C,eAAe,IAAI,YAAY;IAU/B,wBAAwB,IAAI,iBAAiB;CAwB9C"}
|
|
@@ -56,8 +56,9 @@ class ComponentChanges {
|
|
|
56
56
|
this.#transferables.clear();
|
|
57
57
|
}
|
|
58
58
|
changeToken(token) {
|
|
59
|
+
token ??= VoidToken;
|
|
59
60
|
if (token === this.#token) {
|
|
60
|
-
this.#nextToken = void 0;
|
|
61
|
+
this.#nextToken = this.#isNew ? token : void 0;
|
|
61
62
|
} else {
|
|
62
63
|
this.#nextToken = token;
|
|
63
64
|
this.#serial++;
|
|
@@ -83,6 +84,9 @@ class ComponentChanges {
|
|
|
83
84
|
#nextProperties = /* @__PURE__ */ new Map();
|
|
84
85
|
#propsChangeOrder = [];
|
|
85
86
|
// we use an Array here and not a Set, because we want to keep the change order
|
|
87
|
+
/**
|
|
88
|
+
* @returns `true` if the value differs from the last value written to a change trail
|
|
89
|
+
*/
|
|
86
90
|
changeProperty(key, value, isEqual) {
|
|
87
91
|
const prevValue = this.#properties.get(key);
|
|
88
92
|
const valueChanged = isEqual == null && value !== prevValue || isEqual != null && !isEqual(value, prevValue);
|
|
@@ -94,6 +98,7 @@ class ComponentChanges {
|
|
|
94
98
|
this.#nextProperties.delete(key);
|
|
95
99
|
removeFrom(this.#propsChangeOrder, key);
|
|
96
100
|
}
|
|
101
|
+
return valueChanged;
|
|
97
102
|
}
|
|
98
103
|
removeProperty(key) {
|
|
99
104
|
const propExists = this.#properties.has(key);
|
|
@@ -111,7 +116,9 @@ class ComponentChanges {
|
|
|
111
116
|
#transferables = /* @__PURE__ */ new Set();
|
|
112
117
|
createEvent(type, data, transferables) {
|
|
113
118
|
this.#events.push({ type, data });
|
|
114
|
-
|
|
119
|
+
for (const transferable of transferables ?? []) {
|
|
120
|
+
this.#transferables.add(transferable);
|
|
121
|
+
}
|
|
115
122
|
this.#serial++;
|
|
116
123
|
}
|
|
117
124
|
transferEventsTo(changes) {
|
|
@@ -169,12 +176,13 @@ class ComponentChanges {
|
|
|
169
176
|
return event;
|
|
170
177
|
}
|
|
171
178
|
makeCreateEntityChange() {
|
|
179
|
+
const token = this.#nextToken ?? this.#token;
|
|
172
180
|
const entry = {
|
|
173
181
|
type: ComponentChangeType.CreateEntities,
|
|
174
182
|
uuid: this.#uuid,
|
|
175
|
-
token
|
|
183
|
+
token
|
|
176
184
|
};
|
|
177
|
-
this.#token =
|
|
185
|
+
this.#token = token;
|
|
178
186
|
if (this.#nextParentUuid !== void 0) {
|
|
179
187
|
const nextParentUuid = this.#nextParentUuid === ROOT ? void 0 : this.#nextParentUuid;
|
|
180
188
|
this.#parentUuid = nextParentUuid;
|
|
@@ -184,7 +192,9 @@ class ComponentChanges {
|
|
|
184
192
|
}
|
|
185
193
|
if (this.#nextProperties.size > 0) {
|
|
186
194
|
entry.properties = Array.from(this.#nextProperties.entries()).filter(([, value]) => value !== void 0);
|
|
187
|
-
|
|
195
|
+
for (const [key, value] of entry.properties) {
|
|
196
|
+
this.#properties.set(key, value);
|
|
197
|
+
}
|
|
188
198
|
}
|
|
189
199
|
if (this.#nextOrder !== void 0 && this.#nextOrder !== this.#order) {
|
|
190
200
|
entry.order = this.#order = this.#nextOrder;
|
|
@@ -232,7 +242,11 @@ class ComponentChanges {
|
|
|
232
242
|
const properties = this.#propsChangeOrder.map((key) => {
|
|
233
243
|
if (this.#nextProperties.has(key)) {
|
|
234
244
|
const nextValue = this.#nextProperties.get(key);
|
|
235
|
-
|
|
245
|
+
if (nextValue === void 0) {
|
|
246
|
+
this.#properties.delete(key);
|
|
247
|
+
} else {
|
|
248
|
+
this.#properties.set(key, nextValue);
|
|
249
|
+
}
|
|
236
250
|
return [key, nextValue];
|
|
237
251
|
} else {
|
|
238
252
|
this.#properties.delete(key);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/view/ComponentChanges.ts"],
|
|
4
|
-
"sourcesContent": ["import {ChangeTrailPhase, ComponentChangeType, VoidToken} from '../constants.js';\nimport type {\n IChangeToken,\n IComponentChangeType,\n IComponentEvent,\n ICreateEntitiesChange,\n IDestroyEntitiesChange,\n IPropertiesChange,\n ISendEvents,\n ISetParentChange,\n IUpdateOrderChange,\n} from '../types.js';\nimport {appendToEnd, removeFrom} from '../utils/array-utils.js';\n\nconst ROOT = '#root';\n\nexport class ComponentChanges {\n readonly #uuid: string;\n\n get uuid(): string {\n return this.#uuid;\n }\n\n #serial = 0;\n\n constructor(uuid: string) {\n this.#uuid = uuid;\n }\n\n #isNew = true;\n #createCount = 0;\n #destroyCount = 0;\n\n hasChanges(): boolean {\n return this.#serial > 0;\n }\n\n get isNew(): boolean {\n return this.#isNew;\n }\n\n get isCreated(): boolean {\n return this.#createCount > 0 && this.#createCount > this.#destroyCount;\n }\n\n get isDestroyed(): boolean {\n return this.#destroyCount > 0 && this.#destroyCount >= this.#createCount;\n }\n\n #token: string = VoidToken;\n #parentUuid?: string;\n #order: number = 0;\n #autoDestructionOnParentRemoval = false;\n\n #nextToken?: string;\n #nextParentUuid?: string;\n #nextOrder?: number;\n\n create(token: string = VoidToken, parentUuid?: string, order: number = 0, autoDestructionOnParentRemoval = false) {\n this.#serial++;\n this.#createCount++;\n\n this.#nextToken = token;\n this.#nextParentUuid = parentUuid ?? ROOT;\n this.#nextOrder = !order ? undefined : order;\n this.#autoDestructionOnParentRemoval = autoDestructionOnParentRemoval;\n }\n\n destroy() {\n this.#destroyCount++;\n this.#serial++;\n }\n\n clear() {\n this.#serial = 0;\n\n this.#isNew = false;\n\n this.#nextToken = undefined;\n this.#nextParentUuid = undefined;\n this.#nextOrder = undefined;\n\n this.#nextProperties.clear();\n this.#propsChangeOrder.length = 0;\n\n this.#events.length = 0;\n this.#transferables.clear();\n }\n\n changeToken(token: string | undefined) {\n if (token === this.#token) {\n this.#nextToken = undefined;\n } else {\n this.#nextToken = token;\n this.#serial++;\n }\n }\n\n setParent(parentUuid?: string) {\n if (parentUuid === this.#parentUuid) {\n this.#nextParentUuid = undefined;\n } else {\n this.#nextParentUuid = parentUuid ?? ROOT;\n this.#serial++;\n }\n }\n\n changeOrder(order: number) {\n if (order === this.#order) {\n this.#nextOrder = undefined;\n } else {\n this.#nextOrder = order;\n this.#serial++;\n }\n }\n\n #properties: Map<string, unknown> = new Map();\n #nextProperties: Map<string, unknown> = new Map();\n #propsChangeOrder: string[] = []; // we use an Array here and not a Set, because we want to keep the change order\n\n changeProperty<T = unknown>(key: string, value: T, isEqual?: (a: T, b: T) => boolean) {\n const prevValue = this.#properties.get(key) as T;\n const valueChanged = (isEqual == null && value !== prevValue) || (isEqual != null && !isEqual(value, prevValue));\n\n if (valueChanged) {\n this.#nextProperties.set(key, value);\n appendToEnd(this.#propsChangeOrder, key);\n this.#serial++;\n } else {\n this.#nextProperties.delete(key);\n removeFrom(this.#propsChangeOrder, key);\n }\n }\n\n removeProperty(key: string) {\n const propExists = this.#properties.has(key);\n if (this.#nextProperties.has(key)) {\n this.#nextProperties.delete(key);\n if (!propExists) {\n removeFrom(this.#propsChangeOrder, key);\n }\n } else if (propExists) {\n appendToEnd(this.#propsChangeOrder, key);\n this.#serial++;\n }\n }\n\n #events: IComponentEvent[] = [];\n #transferables = new Set<Transferable>();\n\n createEvent(type: string, data: unknown, transferables?: Transferable[]) {\n this.#events.push({type, data});\n
|
|
5
|
-
"mappings": "AAAA,SAAQ,kBAAkB,qBAAqB,iBAAgB;AAY/D,SAAQ,aAAa,kBAAiB;AAEtC,MAAM,OAAO;AAEN,MAAM,iBAAiB;AAAA,EACnB;AAAA,EAET,IAAI,OAAe;AACjB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,UAAU;AAAA,EAEV,YAAY,MAAc;AACxB,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,SAAS;AAAA,EACT,eAAe;AAAA,EACf,gBAAgB;AAAA,EAEhB,aAAsB;AACpB,WAAO,KAAK,UAAU;AAAA,EACxB;AAAA,EAEA,IAAI,QAAiB;AACnB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,YAAqB;AACvB,WAAO,KAAK,eAAe,KAAK,KAAK,eAAe,KAAK;AAAA,EAC3D;AAAA,EAEA,IAAI,cAAuB;AACzB,WAAO,KAAK,gBAAgB,KAAK,KAAK,iBAAiB,KAAK;AAAA,EAC9D;AAAA,EAEA,SAAiB;AAAA,EACjB;AAAA,EACA,SAAiB;AAAA,EACjB,kCAAkC;AAAA,EAElC;AAAA,EACA;AAAA,EACA;AAAA,EAEA,OAAO,QAAgB,WAAW,YAAqB,QAAgB,GAAG,iCAAiC,OAAO;AAChH,SAAK;AACL,SAAK;AAEL,SAAK,aAAa;AAClB,SAAK,kBAAkB,cAAc;AACrC,SAAK,aAAa,CAAC,QAAQ,SAAY;AACvC,SAAK,kCAAkC;AAAA,EACzC;AAAA,EAEA,UAAU;AACR,SAAK;AACL,SAAK;AAAA,EACP;AAAA,EAEA,QAAQ;AACN,SAAK,UAAU;AAEf,SAAK,SAAS;AAEd,SAAK,aAAa;AAClB,SAAK,kBAAkB;AACvB,SAAK,aAAa;AAElB,SAAK,gBAAgB,MAAM;AAC3B,SAAK,kBAAkB,SAAS;AAEhC,SAAK,QAAQ,SAAS;AACtB,SAAK,eAAe,MAAM;AAAA,EAC5B;AAAA,EAEA,YAAY,OAA2B;
|
|
4
|
+
"sourcesContent": ["import {ChangeTrailPhase, ComponentChangeType, VoidToken} from '../constants.js';\nimport type {\n IChangeToken,\n IComponentChangeType,\n IComponentEvent,\n ICreateEntitiesChange,\n IDestroyEntitiesChange,\n IPropertiesChange,\n ISendEvents,\n ISetParentChange,\n IUpdateOrderChange,\n} from '../types.js';\nimport {appendToEnd, removeFrom} from '../utils/array-utils.js';\n\nconst ROOT = '#root';\n\nexport class ComponentChanges {\n readonly #uuid: string;\n\n get uuid(): string {\n return this.#uuid;\n }\n\n #serial = 0;\n\n constructor(uuid: string) {\n this.#uuid = uuid;\n }\n\n #isNew = true;\n #createCount = 0;\n #destroyCount = 0;\n\n hasChanges(): boolean {\n return this.#serial > 0;\n }\n\n get isNew(): boolean {\n return this.#isNew;\n }\n\n get isCreated(): boolean {\n return this.#createCount > 0 && this.#createCount > this.#destroyCount;\n }\n\n get isDestroyed(): boolean {\n return this.#destroyCount > 0 && this.#destroyCount >= this.#createCount;\n }\n\n #token: string = VoidToken;\n #parentUuid?: string;\n #order: number = 0;\n #autoDestructionOnParentRemoval = false;\n\n #nextToken?: string;\n #nextParentUuid?: string;\n #nextOrder?: number;\n\n create(token: string = VoidToken, parentUuid?: string, order: number = 0, autoDestructionOnParentRemoval = false) {\n this.#serial++;\n this.#createCount++;\n\n this.#nextToken = token;\n this.#nextParentUuid = parentUuid ?? ROOT;\n this.#nextOrder = !order ? undefined : order;\n this.#autoDestructionOnParentRemoval = autoDestructionOnParentRemoval;\n }\n\n destroy() {\n this.#destroyCount++;\n this.#serial++;\n }\n\n clear() {\n this.#serial = 0;\n\n this.#isNew = false;\n\n this.#nextToken = undefined;\n this.#nextParentUuid = undefined;\n this.#nextOrder = undefined;\n\n this.#nextProperties.clear();\n this.#propsChangeOrder.length = 0;\n\n this.#events.length = 0;\n this.#transferables.clear();\n }\n\n changeToken(token: string | undefined) {\n // an absent token means the void token everywhere else, so normalize here too;\n // otherwise `undefined` would mark the component dirty without ever emitting a change\n token ??= VoidToken;\n\n if (token === this.#token) {\n // a component that has not been flushed yet still owes the trail its create-token:\n // #token is only the last *written* token, so dropping #nextToken here would emit a\n // CreateEntities change without any token at all\n this.#nextToken = this.#isNew ? token : undefined;\n } else {\n this.#nextToken = token;\n this.#serial++;\n }\n }\n\n setParent(parentUuid?: string) {\n if (parentUuid === this.#parentUuid) {\n this.#nextParentUuid = undefined;\n } else {\n this.#nextParentUuid = parentUuid ?? ROOT;\n this.#serial++;\n }\n }\n\n changeOrder(order: number) {\n if (order === this.#order) {\n this.#nextOrder = undefined;\n } else {\n this.#nextOrder = order;\n this.#serial++;\n }\n }\n\n #properties: Map<string, unknown> = new Map();\n #nextProperties: Map<string, unknown> = new Map();\n #propsChangeOrder: string[] = []; // we use an Array here and not a Set, because we want to keep the change order\n\n /**\n * @returns `true` if the value differs from the last value written to a change trail\n */\n changeProperty<T = unknown>(key: string, value: T, isEqual?: (a: T, b: T) => boolean): boolean {\n const prevValue = this.#properties.get(key) as T;\n const valueChanged = (isEqual == null && value !== prevValue) || (isEqual != null && !isEqual(value, prevValue));\n\n if (valueChanged) {\n this.#nextProperties.set(key, value);\n appendToEnd(this.#propsChangeOrder, key);\n this.#serial++;\n } else {\n this.#nextProperties.delete(key);\n removeFrom(this.#propsChangeOrder, key);\n }\n\n return valueChanged;\n }\n\n removeProperty(key: string) {\n const propExists = this.#properties.has(key);\n if (this.#nextProperties.has(key)) {\n this.#nextProperties.delete(key);\n if (!propExists) {\n removeFrom(this.#propsChangeOrder, key);\n }\n } else if (propExists) {\n appendToEnd(this.#propsChangeOrder, key);\n this.#serial++;\n }\n }\n\n #events: IComponentEvent[] = [];\n #transferables = new Set<Transferable>();\n\n createEvent(type: string, data: unknown, transferables?: Transferable[]) {\n this.#events.push({type, data});\n for (const transferable of transferables ?? []) {\n this.#transferables.add(transferable);\n }\n this.#serial++;\n }\n\n transferEventsTo(changes: ComponentChanges) {\n if (this.#events.length > 0) {\n changes.#events.push(...this.#events);\n this.#events.length = 0;\n }\n if (this.#transferables.size > 0) {\n changes.#transferables = new Set([...changes.#transferables, ...this.#transferables]);\n this.#transferables.clear();\n }\n }\n\n buildChangeTrail(trail: IComponentChangeType[], trailPhase: ChangeTrailPhase) {\n const {isNew, isCreated, isDestroyed} = this;\n\n if (isNew && isDestroyed) return;\n\n switch (trailPhase) {\n case ChangeTrailPhase.StructuralChanges:\n if (isNew) {\n trail.push(this.makeCreateEntityChange());\n } else if (!isDestroyed) {\n if (this.#nextParentUuid !== undefined && !(this.#nextParentUuid === ROOT && this.#parentUuid === undefined)) {\n trail.push(this.makeSetParentChange());\n } else if (this.#nextOrder !== undefined && this.#nextOrder !== this.#order) {\n trail.push(this.makeUpdateOrderChange());\n }\n if (this.#nextToken !== undefined && this.#nextToken !== this.#token) {\n trail.push(this.makeChangeToken());\n }\n }\n break;\n\n case ChangeTrailPhase.ContentUpdates:\n if (!isNew && isCreated && this.#propsChangeOrder.length > 0) {\n trail.push(this.makeChangePropertyChange());\n }\n if (this.#events.length > 0) {\n trail.push(this.makeEvents());\n }\n break;\n\n case ChangeTrailPhase.Removal:\n if (isDestroyed) {\n trail.push(this.makeDestroyEntityChange());\n }\n break;\n }\n }\n\n makeEvents(): ISendEvents {\n const event: ISendEvents = {\n type: ComponentChangeType.SendEvents,\n uuid: this.#uuid,\n events: this.#events.slice(0),\n };\n if (this.#transferables.size > 0) {\n event.transferables = Array.from(this.#transferables);\n }\n return event;\n }\n\n makeCreateEntityChange(): ICreateEntitiesChange {\n // never emit a create without a token: the kernel would register an entity that no\n // shadow object can ever be looked up for\n const token = this.#nextToken ?? this.#token;\n\n const entry: ICreateEntitiesChange = {\n type: ComponentChangeType.CreateEntities,\n uuid: this.#uuid,\n token,\n };\n\n this.#token = token;\n\n if (this.#nextParentUuid !== undefined) {\n const nextParentUuid = this.#nextParentUuid === ROOT ? undefined : this.#nextParentUuid;\n this.#parentUuid = nextParentUuid;\n if (nextParentUuid !== undefined) {\n entry.parentUuid = nextParentUuid;\n }\n }\n\n if (this.#nextProperties.size > 0) {\n entry.properties = Array.from(this.#nextProperties.entries()).filter(([, value]) => value !== undefined);\n for (const [key, value] of entry.properties) {\n this.#properties.set(key, value);\n }\n }\n\n if (this.#nextOrder !== undefined && this.#nextOrder !== this.#order) {\n entry.order = this.#order = this.#nextOrder;\n }\n\n if (this.#autoDestructionOnParentRemoval) {\n entry.autoDestructionOnParentRemoval = true;\n }\n\n return entry;\n }\n\n makeDestroyEntityChange(): IDestroyEntitiesChange {\n return {\n type: ComponentChangeType.DestroyEntities,\n uuid: this.#uuid,\n };\n }\n\n makeSetParentChange(): ISetParentChange {\n this.#parentUuid = this.#nextParentUuid === ROOT ? undefined : this.#nextParentUuid;\n\n const entry: ISetParentChange = {\n type: ComponentChangeType.SetParent,\n uuid: this.#uuid,\n parentUuid: this.#parentUuid,\n };\n\n if (this.#nextOrder !== undefined && this.#nextOrder !== this.#order) {\n entry.order = this.#order = this.#nextOrder;\n }\n\n return entry;\n }\n\n makeUpdateOrderChange(): IUpdateOrderChange {\n this.#order = this.#nextOrder ?? 0;\n\n return {\n type: ComponentChangeType.UpdateOrder,\n uuid: this.#uuid,\n order: this.#order,\n };\n }\n\n makeChangeToken(): IChangeToken {\n this.#token = this.#nextToken ?? VoidToken;\n\n return {\n type: ComponentChangeType.ChangeToken,\n uuid: this.#uuid,\n token: this.#token,\n };\n }\n\n makeChangePropertyChange(): IPropertiesChange {\n const properties = this.#propsChangeOrder.map((key) => {\n if (this.#nextProperties.has(key)) {\n // set prop \u2014 an explicit `undefined` is a removal, exactly like removeProperty()\n const nextValue = this.#nextProperties.get(key);\n if (nextValue === undefined) {\n this.#properties.delete(key);\n } else {\n this.#properties.set(key, nextValue);\n }\n return [key, nextValue] as [string, unknown];\n } else {\n // remove prop\n this.#properties.delete(key);\n return [key, undefined] as [string, unknown];\n }\n });\n\n return {\n type: ComponentChangeType.ChangeProperties,\n uuid: this.#uuid,\n properties,\n };\n }\n}"],
|
|
5
|
+
"mappings": "AAAA,SAAQ,kBAAkB,qBAAqB,iBAAgB;AAY/D,SAAQ,aAAa,kBAAiB;AAEtC,MAAM,OAAO;AAEN,MAAM,iBAAiB;AAAA,EACnB;AAAA,EAET,IAAI,OAAe;AACjB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,UAAU;AAAA,EAEV,YAAY,MAAc;AACxB,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,SAAS;AAAA,EACT,eAAe;AAAA,EACf,gBAAgB;AAAA,EAEhB,aAAsB;AACpB,WAAO,KAAK,UAAU;AAAA,EACxB;AAAA,EAEA,IAAI,QAAiB;AACnB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,YAAqB;AACvB,WAAO,KAAK,eAAe,KAAK,KAAK,eAAe,KAAK;AAAA,EAC3D;AAAA,EAEA,IAAI,cAAuB;AACzB,WAAO,KAAK,gBAAgB,KAAK,KAAK,iBAAiB,KAAK;AAAA,EAC9D;AAAA,EAEA,SAAiB;AAAA,EACjB;AAAA,EACA,SAAiB;AAAA,EACjB,kCAAkC;AAAA,EAElC;AAAA,EACA;AAAA,EACA;AAAA,EAEA,OAAO,QAAgB,WAAW,YAAqB,QAAgB,GAAG,iCAAiC,OAAO;AAChH,SAAK;AACL,SAAK;AAEL,SAAK,aAAa;AAClB,SAAK,kBAAkB,cAAc;AACrC,SAAK,aAAa,CAAC,QAAQ,SAAY;AACvC,SAAK,kCAAkC;AAAA,EACzC;AAAA,EAEA,UAAU;AACR,SAAK;AACL,SAAK;AAAA,EACP;AAAA,EAEA,QAAQ;AACN,SAAK,UAAU;AAEf,SAAK,SAAS;AAEd,SAAK,aAAa;AAClB,SAAK,kBAAkB;AACvB,SAAK,aAAa;AAElB,SAAK,gBAAgB,MAAM;AAC3B,SAAK,kBAAkB,SAAS;AAEhC,SAAK,QAAQ,SAAS;AACtB,SAAK,eAAe,MAAM;AAAA,EAC5B;AAAA,EAEA,YAAY,OAA2B;AAGrC,cAAU;AAEV,QAAI,UAAU,KAAK,QAAQ;AAIzB,WAAK,aAAa,KAAK,SAAS,QAAQ;AAAA,IAC1C,OAAO;AACL,WAAK,aAAa;AAClB,WAAK;AAAA,IACP;AAAA,EACF;AAAA,EAEA,UAAU,YAAqB;AAC7B,QAAI,eAAe,KAAK,aAAa;AACnC,WAAK,kBAAkB;AAAA,IACzB,OAAO;AACL,WAAK,kBAAkB,cAAc;AACrC,WAAK;AAAA,IACP;AAAA,EACF;AAAA,EAEA,YAAY,OAAe;AACzB,QAAI,UAAU,KAAK,QAAQ;AACzB,WAAK,aAAa;AAAA,IACpB,OAAO;AACL,WAAK,aAAa;AAClB,WAAK;AAAA,IACP;AAAA,EACF;AAAA,EAEA,cAAoC,oBAAI,IAAI;AAAA,EAC5C,kBAAwC,oBAAI,IAAI;AAAA,EAChD,oBAA8B,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAK/B,eAA4B,KAAa,OAAU,SAA4C;AAC7F,UAAM,YAAY,KAAK,YAAY,IAAI,GAAG;AAC1C,UAAM,eAAgB,WAAW,QAAQ,UAAU,aAAe,WAAW,QAAQ,CAAC,QAAQ,OAAO,SAAS;AAE9G,QAAI,cAAc;AAChB,WAAK,gBAAgB,IAAI,KAAK,KAAK;AACnC,kBAAY,KAAK,mBAAmB,GAAG;AACvC,WAAK;AAAA,IACP,OAAO;AACL,WAAK,gBAAgB,OAAO,GAAG;AAC/B,iBAAW,KAAK,mBAAmB,GAAG;AAAA,IACxC;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,eAAe,KAAa;AAC1B,UAAM,aAAa,KAAK,YAAY,IAAI,GAAG;AAC3C,QAAI,KAAK,gBAAgB,IAAI,GAAG,GAAG;AACjC,WAAK,gBAAgB,OAAO,GAAG;AAC/B,UAAI,CAAC,YAAY;AACf,mBAAW,KAAK,mBAAmB,GAAG;AAAA,MACxC;AAAA,IACF,WAAW,YAAY;AACrB,kBAAY,KAAK,mBAAmB,GAAG;AACvC,WAAK;AAAA,IACP;AAAA,EACF;AAAA,EAEA,UAA6B,CAAC;AAAA,EAC9B,iBAAiB,oBAAI,IAAkB;AAAA,EAEvC,YAAY,MAAc,MAAe,eAAgC;AACvE,SAAK,QAAQ,KAAK,EAAC,MAAM,KAAI,CAAC;AAC9B,eAAW,gBAAgB,iBAAiB,CAAC,GAAG;AAC9C,WAAK,eAAe,IAAI,YAAY;AAAA,IACtC;AACA,SAAK;AAAA,EACP;AAAA,EAEA,iBAAiB,SAA2B;AAC1C,QAAI,KAAK,QAAQ,SAAS,GAAG;AAC3B,cAAQ,QAAQ,KAAK,GAAG,KAAK,OAAO;AACpC,WAAK,QAAQ,SAAS;AAAA,IACxB;AACA,QAAI,KAAK,eAAe,OAAO,GAAG;AAChC,cAAQ,iBAAiB,oBAAI,IAAI,CAAC,GAAG,QAAQ,gBAAgB,GAAG,KAAK,cAAc,CAAC;AACpF,WAAK,eAAe,MAAM;AAAA,IAC5B;AAAA,EACF;AAAA,EAEA,iBAAiB,OAA+B,YAA8B;AAC5E,UAAM,EAAC,OAAO,WAAW,YAAW,IAAI;AAExC,QAAI,SAAS,YAAa;AAE1B,YAAQ,YAAY;AAAA,MAClB,KAAK,iBAAiB;AACpB,YAAI,OAAO;AACT,gBAAM,KAAK,KAAK,uBAAuB,CAAC;AAAA,QAC1C,WAAW,CAAC,aAAa;AACvB,cAAI,KAAK,oBAAoB,UAAa,EAAE,KAAK,oBAAoB,QAAQ,KAAK,gBAAgB,SAAY;AAC5G,kBAAM,KAAK,KAAK,oBAAoB,CAAC;AAAA,UACvC,WAAW,KAAK,eAAe,UAAa,KAAK,eAAe,KAAK,QAAQ;AAC3E,kBAAM,KAAK,KAAK,sBAAsB,CAAC;AAAA,UACzC;AACA,cAAI,KAAK,eAAe,UAAa,KAAK,eAAe,KAAK,QAAQ;AACpE,kBAAM,KAAK,KAAK,gBAAgB,CAAC;AAAA,UACnC;AAAA,QACF;AACA;AAAA,MAEF,KAAK,iBAAiB;AACpB,YAAI,CAAC,SAAS,aAAa,KAAK,kBAAkB,SAAS,GAAG;AAC5D,gBAAM,KAAK,KAAK,yBAAyB,CAAC;AAAA,QAC5C;AACA,YAAI,KAAK,QAAQ,SAAS,GAAG;AAC3B,gBAAM,KAAK,KAAK,WAAW,CAAC;AAAA,QAC9B;AACA;AAAA,MAEF,KAAK,iBAAiB;AACpB,YAAI,aAAa;AACf,gBAAM,KAAK,KAAK,wBAAwB,CAAC;AAAA,QAC3C;AACA;AAAA,IACJ;AAAA,EACF;AAAA,EAEA,aAA0B;AACxB,UAAM,QAAqB;AAAA,MACzB,MAAM,oBAAoB;AAAA,MAC1B,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK,QAAQ,MAAM,CAAC;AAAA,IAC9B;AACA,QAAI,KAAK,eAAe,OAAO,GAAG;AAChC,YAAM,gBAAgB,MAAM,KAAK,KAAK,cAAc;AAAA,IACtD;AACA,WAAO;AAAA,EACT;AAAA,EAEA,yBAAgD;AAG9C,UAAM,QAAQ,KAAK,cAAc,KAAK;AAEtC,UAAM,QAA+B;AAAA,MACnC,MAAM,oBAAoB;AAAA,MAC1B,MAAM,KAAK;AAAA,MACX;AAAA,IACF;AAEA,SAAK,SAAS;AAEd,QAAI,KAAK,oBAAoB,QAAW;AACtC,YAAM,iBAAiB,KAAK,oBAAoB,OAAO,SAAY,KAAK;AACxE,WAAK,cAAc;AACnB,UAAI,mBAAmB,QAAW;AAChC,cAAM,aAAa;AAAA,MACrB;AAAA,IACF;AAEA,QAAI,KAAK,gBAAgB,OAAO,GAAG;AACjC,YAAM,aAAa,MAAM,KAAK,KAAK,gBAAgB,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,UAAU,MAAS;AACvG,iBAAW,CAAC,KAAK,KAAK,KAAK,MAAM,YAAY;AAC3C,aAAK,YAAY,IAAI,KAAK,KAAK;AAAA,MACjC;AAAA,IACF;AAEA,QAAI,KAAK,eAAe,UAAa,KAAK,eAAe,KAAK,QAAQ;AACpE,YAAM,QAAQ,KAAK,SAAS,KAAK;AAAA,IACnC;AAEA,QAAI,KAAK,iCAAiC;AACxC,YAAM,iCAAiC;AAAA,IACzC;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,0BAAkD;AAChD,WAAO;AAAA,MACL,MAAM,oBAAoB;AAAA,MAC1B,MAAM,KAAK;AAAA,IACb;AAAA,EACF;AAAA,EAEA,sBAAwC;AACtC,SAAK,cAAc,KAAK,oBAAoB,OAAO,SAAY,KAAK;AAEpE,UAAM,QAA0B;AAAA,MAC9B,MAAM,oBAAoB;AAAA,MAC1B,MAAM,KAAK;AAAA,MACX,YAAY,KAAK;AAAA,IACnB;AAEA,QAAI,KAAK,eAAe,UAAa,KAAK,eAAe,KAAK,QAAQ;AACpE,YAAM,QAAQ,KAAK,SAAS,KAAK;AAAA,IACnC;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,wBAA4C;AAC1C,SAAK,SAAS,KAAK,cAAc;AAEjC,WAAO;AAAA,MACL,MAAM,oBAAoB;AAAA,MAC1B,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,IACd;AAAA,EACF;AAAA,EAEA,kBAAgC;AAC9B,SAAK,SAAS,KAAK,cAAc;AAEjC,WAAO;AAAA,MACL,MAAM,oBAAoB;AAAA,MAC1B,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,IACd;AAAA,EACF;AAAA,EAEA,2BAA8C;AAC5C,UAAM,aAAa,KAAK,kBAAkB,IAAI,CAAC,QAAQ;AACrD,UAAI,KAAK,gBAAgB,IAAI,GAAG,GAAG;AAEjC,cAAM,YAAY,KAAK,gBAAgB,IAAI,GAAG;AAC9C,YAAI,cAAc,QAAW;AAC3B,eAAK,YAAY,OAAO,GAAG;AAAA,QAC7B,OAAO;AACL,eAAK,YAAY,IAAI,KAAK,SAAS;AAAA,QACrC;AACA,eAAO,CAAC,KAAK,SAAS;AAAA,MACxB,OAAO;AAEL,aAAK,YAAY,OAAO,GAAG;AAC3B,eAAO,CAAC,KAAK,MAAS;AAAA,MACxB;AAAA,IACF,CAAC;AAED,WAAO;AAAA,MACL,MAAM,oBAAoB;AAAA,MAC1B,MAAM,KAAK;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|