@spearwolf/shadow-objects 0.30.1 → 0.31.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 +24 -0
- package/README.md +34 -10
- 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 +3 -1
- package/src/in-the-dark/Entity.d.ts.map +1 -1
- package/src/in-the-dark/Entity.js +299 -275
- package/src/in-the-dark/Entity.js.map +7 -1
- package/src/in-the-dark/Kernel.d.ts +1 -1
- package/src/in-the-dark/Kernel.d.ts.map +1 -1
- package/src/in-the-dark/Kernel.js +556 -532
- 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 +5 -4
- 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
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@spearwolf/shadow-objects",
|
|
3
3
|
"description": "a reactive entity-component framework that feels at home in the shadows",
|
|
4
4
|
"homepage": "https://github.com/spearwolf/shadow-objects/",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.31.0",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Wolfger Schramm",
|
|
8
8
|
"email": "wolfger@spearwolf.de",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"src/shae-worker.js"
|
|
70
70
|
],
|
|
71
71
|
"dependencies": {
|
|
72
|
-
"@spearwolf/eventize": "^4.
|
|
73
|
-
"@spearwolf/signalize": "^0.
|
|
72
|
+
"@spearwolf/eventize": "^4.3.1",
|
|
73
|
+
"@spearwolf/signalize": "^0.28.0"
|
|
74
74
|
}
|
|
75
75
|
}
|
package/src/bundle.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import "./shae-ent.js";
|
|
2
|
+
import "./shae-prop.js";
|
|
3
|
+
import "./shae-worker.js";
|
|
4
4
|
globalThis.SHADOW_ENTS_BUNDLE_LOADED = true;
|
|
5
|
-
//# sourceMappingURL=bundle.js.map
|
|
5
|
+
//# sourceMappingURL=bundle.js.map
|
package/src/bundle.js.map
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/bundle.ts"],
|
|
4
|
+
"sourcesContent": ["import './shae-ent.js';\nimport './shae-prop.js';\nimport './shae-worker.js';\n\ndeclare global {\n // eslint-disable-next-line no-var\n var SHADOW_ENTS_BUNDLE_LOADED: boolean;\n}\n\nglobalThis.SHADOW_ENTS_BUNDLE_LOADED = true;"],
|
|
5
|
+
"mappings": "AAAA,OAAO;AACP,OAAO;AACP,OAAO;AAOP,WAAW,4BAA4B;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/src/constants.js
CHANGED
|
@@ -1,40 +1,53 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
})(ChangeTrailPhase ||
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
})(ComponentChangeType ||
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
1
|
+
var ChangeTrailPhase = /* @__PURE__ */ ((ChangeTrailPhase2) => {
|
|
2
|
+
ChangeTrailPhase2[ChangeTrailPhase2["StructuralChanges"] = 1] = "StructuralChanges";
|
|
3
|
+
ChangeTrailPhase2[ChangeTrailPhase2["ContentUpdates"] = 2] = "ContentUpdates";
|
|
4
|
+
ChangeTrailPhase2[ChangeTrailPhase2["Removal"] = 3] = "Removal";
|
|
5
|
+
return ChangeTrailPhase2;
|
|
6
|
+
})(ChangeTrailPhase || {});
|
|
7
|
+
var ComponentChangeType = /* @__PURE__ */ ((ComponentChangeType2) => {
|
|
8
|
+
ComponentChangeType2[ComponentChangeType2["CreateEntities"] = 1] = "CreateEntities";
|
|
9
|
+
ComponentChangeType2[ComponentChangeType2["DestroyEntities"] = 2] = "DestroyEntities";
|
|
10
|
+
ComponentChangeType2[ComponentChangeType2["SetParent"] = 3] = "SetParent";
|
|
11
|
+
ComponentChangeType2[ComponentChangeType2["UpdateOrder"] = 4] = "UpdateOrder";
|
|
12
|
+
ComponentChangeType2[ComponentChangeType2["ChangeProperties"] = 5] = "ChangeProperties";
|
|
13
|
+
ComponentChangeType2[ComponentChangeType2["ChangeToken"] = 6] = "ChangeToken";
|
|
14
|
+
ComponentChangeType2[ComponentChangeType2["SendEvents"] = 7] = "SendEvents";
|
|
15
|
+
return ComponentChangeType2;
|
|
16
|
+
})(ComponentChangeType || {});
|
|
17
|
+
const GlobalNS = /* @__PURE__ */ Symbol.for("ShadowEntsGlobalNS");
|
|
18
|
+
const VoidToken = "#void";
|
|
19
|
+
const ContextLost = "contextLost";
|
|
20
|
+
const Configure = "configure";
|
|
21
|
+
const ChangeTrail = "changeTrail";
|
|
22
|
+
const Destroy = "destroy";
|
|
23
|
+
const Loaded = "loaded";
|
|
24
|
+
const AppliedChangeTrail = "appliedChangeTrail";
|
|
25
|
+
const ImportedModule = "importedModule";
|
|
26
|
+
const Destroyed = "destroyed";
|
|
27
|
+
const MessageToView = "messageToView";
|
|
28
|
+
const WorkerLoadTimeout = 6e4;
|
|
29
|
+
const WorkerConfigureTimeout = 6e4;
|
|
30
|
+
const WorkerChangeTrailTimeout = 5e3;
|
|
31
|
+
const WorkerDestroyTimeout = 5e3;
|
|
32
|
+
const ShadowObjectsExport = "shadowObjects";
|
|
33
|
+
export {
|
|
34
|
+
AppliedChangeTrail,
|
|
35
|
+
ChangeTrail,
|
|
36
|
+
ChangeTrailPhase,
|
|
37
|
+
ComponentChangeType,
|
|
38
|
+
Configure,
|
|
39
|
+
ContextLost,
|
|
40
|
+
Destroy,
|
|
41
|
+
Destroyed,
|
|
42
|
+
GlobalNS,
|
|
43
|
+
ImportedModule,
|
|
44
|
+
Loaded,
|
|
45
|
+
MessageToView,
|
|
46
|
+
ShadowObjectsExport,
|
|
47
|
+
VoidToken,
|
|
48
|
+
WorkerChangeTrailTimeout,
|
|
49
|
+
WorkerConfigureTimeout,
|
|
50
|
+
WorkerDestroyTimeout,
|
|
51
|
+
WorkerLoadTimeout
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=constants.js.map
|
package/src/constants.js.map
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/constants.ts"],
|
|
4
|
+
"sourcesContent": ["import type {NamespaceType} from './types.ts';\n\nexport enum ChangeTrailPhase {\n StructuralChanges = 1,\n ContentUpdates,\n Removal,\n}\n\nexport enum ComponentChangeType {\n CreateEntities = 1,\n DestroyEntities,\n SetParent,\n UpdateOrder,\n ChangeProperties,\n ChangeToken,\n SendEvents,\n}\n\nexport const GlobalNS: NamespaceType = Symbol.for('ShadowEntsGlobalNS');\n\nexport const VoidToken = '#void';\n\n/**\n * The event is dispatched by {@link ComponentContext.reCreateChanges} and forwarded to all {@link ViewComponent}.\n * The event itself has no other data.\n */\nexport const ContextLost = 'contextLost';\n\nexport const Configure = 'configure';\nexport const ChangeTrail = 'changeTrail';\nexport const Destroy = 'destroy';\n\nexport const Loaded = 'loaded';\nexport const AppliedChangeTrail = 'appliedChangeTrail';\nexport const ImportedModule = 'importedModule';\nexport const Destroyed = 'destroyed';\n\n/**\n * The `messageToView` event is fired when the kernel receives a message from an entity (to its view component counterpart)\n */\nexport const MessageToView = 'messageToView';\n\nexport const WorkerLoadTimeout = 60000;\nexport const WorkerConfigureTimeout = 60000;\nexport const WorkerChangeTrailTimeout = 5000;\nexport const WorkerDestroyTimeout = 5000;\n\nexport const ShadowObjectsExport = 'shadowObjects';"],
|
|
5
|
+
"mappings": "AAEO,IAAK,mBAAL,kBAAKA,sBAAL;AACL,EAAAA,oCAAA,uBAAoB,KAApB;AACA,EAAAA,oCAAA;AACA,EAAAA,oCAAA;AAHU,SAAAA;AAAA,GAAA;AAML,IAAK,sBAAL,kBAAKC,yBAAL;AACL,EAAAA,0CAAA,oBAAiB,KAAjB;AACA,EAAAA,0CAAA;AACA,EAAAA,0CAAA;AACA,EAAAA,0CAAA;AACA,EAAAA,0CAAA;AACA,EAAAA,0CAAA;AACA,EAAAA,0CAAA;AAPU,SAAAA;AAAA,GAAA;AAUL,MAAM,WAA0B,uBAAO,IAAI,oBAAoB;AAE/D,MAAM,YAAY;AAMlB,MAAM,cAAc;AAEpB,MAAM,YAAY;AAClB,MAAM,cAAc;AACpB,MAAM,UAAU;AAEhB,MAAM,SAAS;AACf,MAAM,qBAAqB;AAC3B,MAAM,iBAAiB;AACvB,MAAM,YAAY;AAKlB,MAAM,gBAAgB;AAEtB,MAAM,oBAAoB;AAC1B,MAAM,yBAAyB;AAC/B,MAAM,2BAA2B;AACjC,MAAM,uBAAuB;AAE7B,MAAM,sBAAsB;",
|
|
6
|
+
"names": ["ChangeTrailPhase", "ComponentChangeType"]
|
|
7
|
+
}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export default () => new Worker();
|
|
8
|
-
//# sourceMappingURL=create-worker.bundle.js.map
|
|
1
|
+
import Worker from "./bundle.worker.js";
|
|
2
|
+
var create_worker_bundle_default = () => new Worker();
|
|
3
|
+
export {
|
|
4
|
+
create_worker_bundle_default as default
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=create-worker.bundle.js.map
|
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/create-worker.bundle.ts"],
|
|
4
|
+
"sourcesContent": ["// @ts-ignore\nimport Worker from './bundle.worker.js';\n\n// This module is converted to __inline__ worker code using the esbuild-plugin-inline-worker plugin.\n// It is done in the `bundle.mjs` build script.\n//\n// `worker/WorkerRuntime.ts` => `shadow-objects.worker.js` => `bundle.worker.js`\n\nexport default () => new Worker();"],
|
|
5
|
+
"mappings": "AACA,OAAO,YAAY;AAOnB,IAAO,+BAAQ,MAAM,IAAI,OAAO;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/src/create-worker.js
CHANGED
|
@@ -1,2 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var create_worker_default = () => new Worker(new URL("./shadow-objects.worker.js", import.meta.url), { type: "module" });
|
|
2
|
+
export {
|
|
3
|
+
create_worker_default as default
|
|
4
|
+
};
|
|
5
|
+
//# sourceMappingURL=create-worker.js.map
|
package/src/create-worker.js.map
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/create-worker.ts"],
|
|
4
|
+
"sourcesContent": ["export default () => new Worker(new URL('./shadow-objects.worker.js', import.meta.url), {type: 'module'});"],
|
|
5
|
+
"mappings": "AAAA,IAAO,wBAAQ,MAAM,IAAI,OAAO,IAAI,IAAI,8BAA8B,YAAY,GAAG,GAAG,EAAC,MAAM,SAAQ,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,63 +1,66 @@
|
|
|
1
|
-
import { createSignal, Signal } from
|
|
2
|
-
import { GlobalNS } from
|
|
3
|
-
import { readNamespaceAttribute } from
|
|
4
|
-
import { toNamespace } from
|
|
5
|
-
import { ShadowEnv } from
|
|
6
|
-
import { ATTR_NS } from
|
|
1
|
+
import { createSignal, Signal } from "@spearwolf/signalize";
|
|
2
|
+
import { GlobalNS } from "../constants.js";
|
|
3
|
+
import { readNamespaceAttribute } from "../utils/attr-utils.js";
|
|
4
|
+
import { toNamespace } from "../utils/toNamespace.js";
|
|
5
|
+
import { ShadowEnv } from "../view/ShadowEnv.js";
|
|
6
|
+
import { ATTR_NS } from "./constants.js";
|
|
7
7
|
const updateNamespace = (el, ns) => {
|
|
8
|
-
|
|
8
|
+
ns.set(readNamespaceAttribute(el));
|
|
9
9
|
};
|
|
10
|
-
const SyncNamespaces = new Set();
|
|
10
|
+
const SyncNamespaces = /* @__PURE__ */ new Set();
|
|
11
11
|
let nextSyncIsScheduled = false;
|
|
12
12
|
const syncShadowObjects = (ns) => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
13
|
+
SyncNamespaces.add(ns);
|
|
14
|
+
if (!nextSyncIsScheduled) {
|
|
15
|
+
nextSyncIsScheduled = true;
|
|
16
|
+
queueMicrotask(() => {
|
|
17
|
+
nextSyncIsScheduled = false;
|
|
18
|
+
for (const ns2 of SyncNamespaces) {
|
|
19
|
+
ShadowEnv.get(ns2)?.sync();
|
|
20
|
+
}
|
|
21
|
+
SyncNamespaces.clear();
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
24
|
};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
else {
|
|
35
|
-
this.ns$.set(toNamespace(ns));
|
|
25
|
+
class ShaeElement extends HTMLElement {
|
|
26
|
+
constructor() {
|
|
27
|
+
super();
|
|
28
|
+
this.isShaeElement = true;
|
|
29
|
+
this.ns$ = createSignal(GlobalNS);
|
|
30
|
+
this.ns$.onChange((ns) => {
|
|
31
|
+
if (typeof ns === "string" && ns.length > 0) {
|
|
32
|
+
if (this.getAttribute(ATTR_NS) !== ns) {
|
|
33
|
+
this.setAttribute(ATTR_NS, ns);
|
|
36
34
|
}
|
|
35
|
+
} else {
|
|
36
|
+
this.removeAttribute(ATTR_NS);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
updateNamespace(this, this.ns$);
|
|
40
|
+
}
|
|
41
|
+
static {
|
|
42
|
+
this.observedAttributes = [ATTR_NS];
|
|
43
|
+
}
|
|
44
|
+
get ns() {
|
|
45
|
+
return this.ns$.value;
|
|
46
|
+
}
|
|
47
|
+
set ns(ns) {
|
|
48
|
+
if (typeof ns === "symbol") {
|
|
49
|
+
this.ns$.set(ns);
|
|
50
|
+
} else {
|
|
51
|
+
this.ns$.set(toNamespace(ns));
|
|
37
52
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
this.ns$.onChange((ns) => {
|
|
43
|
-
if (typeof ns === 'string' && ns.length > 0) {
|
|
44
|
-
if (this.getAttribute(ATTR_NS) !== ns) {
|
|
45
|
-
this.setAttribute(ATTR_NS, ns);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
this.removeAttribute(ATTR_NS);
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
updateNamespace(this, this.ns$);
|
|
53
|
-
}
|
|
54
|
-
attributeChangedCallback(name) {
|
|
55
|
-
if (name === ATTR_NS) {
|
|
56
|
-
updateNamespace(this, this.ns$);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
syncShadowObjects() {
|
|
60
|
-
syncShadowObjects(this.ns);
|
|
53
|
+
}
|
|
54
|
+
attributeChangedCallback(name) {
|
|
55
|
+
if (name === ATTR_NS) {
|
|
56
|
+
updateNamespace(this, this.ns$);
|
|
61
57
|
}
|
|
58
|
+
}
|
|
59
|
+
syncShadowObjects() {
|
|
60
|
+
syncShadowObjects(this.ns);
|
|
61
|
+
}
|
|
62
62
|
}
|
|
63
|
-
|
|
63
|
+
export {
|
|
64
|
+
ShaeElement
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=ShaeElement.js.map
|
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/elements/ShaeElement.ts"],
|
|
4
|
+
"sourcesContent": ["import {createSignal, Signal} from '@spearwolf/signalize';\nimport {GlobalNS} from '../constants.js';\nimport type {NamespaceType} from '../types.ts';\nimport {readNamespaceAttribute} from '../utils/attr-utils.js';\nimport {toNamespace} from '../utils/toNamespace.js';\nimport {ShadowEnv} from '../view/ShadowEnv.js';\nimport {ATTR_NS} from './constants.js';\n\nconst updateNamespace = (el: HTMLElement, ns: Signal<NamespaceType>) => {\n ns.set(readNamespaceAttribute(el));\n};\n\nconst SyncNamespaces = new Set<NamespaceType>();\nlet nextSyncIsScheduled = false;\n\nconst syncShadowObjects = (ns: NamespaceType) => {\n SyncNamespaces.add(ns);\n if (!nextSyncIsScheduled) {\n nextSyncIsScheduled = true;\n queueMicrotask(() => {\n nextSyncIsScheduled = false;\n for (const ns of SyncNamespaces) {\n ShadowEnv.get(ns)?.sync();\n }\n SyncNamespaces.clear();\n });\n }\n};\n\nexport class ShaeElement extends HTMLElement {\n static observedAttributes = [ATTR_NS];\n\n readonly isShaeElement = true;\n\n readonly ns$ = createSignal<NamespaceType>(GlobalNS);\n\n get ns(): NamespaceType {\n return this.ns$.value;\n }\n\n set ns(ns: NamespaceType) {\n if (typeof ns === 'symbol') {\n this.ns$.set(ns);\n } else {\n this.ns$.set(toNamespace(ns));\n }\n }\n\n constructor() {\n super();\n\n this.ns$.onChange((ns) => {\n if (typeof ns === 'string' && ns.length > 0) {\n if (this.getAttribute(ATTR_NS) !== ns) {\n this.setAttribute(ATTR_NS, ns);\n }\n } else {\n this.removeAttribute(ATTR_NS);\n }\n });\n\n updateNamespace(this, this.ns$);\n }\n\n attributeChangedCallback(name: string) {\n if (name === ATTR_NS) {\n updateNamespace(this, this.ns$);\n }\n }\n\n syncShadowObjects() {\n syncShadowObjects(this.ns);\n }\n}"],
|
|
5
|
+
"mappings": "AAAA,SAAQ,cAAc,cAAa;AACnC,SAAQ,gBAAe;AAEvB,SAAQ,8BAA6B;AACrC,SAAQ,mBAAkB;AAC1B,SAAQ,iBAAgB;AACxB,SAAQ,eAAc;AAEtB,MAAM,kBAAkB,CAAC,IAAiB,OAA8B;AACtE,KAAG,IAAI,uBAAuB,EAAE,CAAC;AACnC;AAEA,MAAM,iBAAiB,oBAAI,IAAmB;AAC9C,IAAI,sBAAsB;AAE1B,MAAM,oBAAoB,CAAC,OAAsB;AAC/C,iBAAe,IAAI,EAAE;AACrB,MAAI,CAAC,qBAAqB;AACxB,0BAAsB;AACtB,mBAAe,MAAM;AACnB,4BAAsB;AACtB,iBAAWA,OAAM,gBAAgB;AAC/B,kBAAU,IAAIA,GAAE,GAAG,KAAK;AAAA,MAC1B;AACA,qBAAe,MAAM;AAAA,IACvB,CAAC;AAAA,EACH;AACF;AAEO,MAAM,oBAAoB,YAAY;AAAA,EAmB3C,cAAc;AACZ,UAAM;AAjBR,SAAS,gBAAgB;AAEzB,SAAS,MAAM,aAA4B,QAAQ;AAiBjD,SAAK,IAAI,SAAS,CAAC,OAAO;AACxB,UAAI,OAAO,OAAO,YAAY,GAAG,SAAS,GAAG;AAC3C,YAAI,KAAK,aAAa,OAAO,MAAM,IAAI;AACrC,eAAK,aAAa,SAAS,EAAE;AAAA,QAC/B;AAAA,MACF,OAAO;AACL,aAAK,gBAAgB,OAAO;AAAA,MAC9B;AAAA,IACF,CAAC;AAED,oBAAgB,MAAM,KAAK,GAAG;AAAA,EAChC;AAAA,EAhCA;AAAA,SAAO,qBAAqB,CAAC,OAAO;AAAA;AAAA,EAMpC,IAAI,KAAoB;AACtB,WAAO,KAAK,IAAI;AAAA,EAClB;AAAA,EAEA,IAAI,GAAG,IAAmB;AACxB,QAAI,OAAO,OAAO,UAAU;AAC1B,WAAK,IAAI,IAAI,EAAE;AAAA,IACjB,OAAO;AACL,WAAK,IAAI,IAAI,YAAY,EAAE,CAAC;AAAA,IAC9B;AAAA,EACF;AAAA,EAkBA,yBAAyB,MAAc;AACrC,QAAI,SAAS,SAAS;AACpB,sBAAgB,MAAM,KAAK,GAAG;AAAA,IAChC;AAAA,EACF;AAAA,EAEA,oBAAoB;AAClB,sBAAkB,KAAK,EAAE;AAAA,EAC3B;AACF;",
|
|
6
|
+
"names": ["ns"]
|
|
7
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShaeEntElement.d.ts","sourceRoot":"","sources":["../../../src/elements/ShaeEntElement.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,gBAAgB,EAAC,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ShaeEntElement.d.ts","sourceRoot":"","sources":["../../../src/elements/ShaeEntElement.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,gBAAgB,EAAC,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAE7C,qBAAa,cAAe,SAAQ,WAAW;;IAC7C,OAAgB,kBAAkB,WAA+E;IAEjH,QAAQ,CAAC,gBAAgB,QAAQ;IAEjC,QAAQ,CAAC,iBAAiB,0DAAgD;IAC1E,QAAQ,CAAC,cAAc,uDAA6C;IACpE,QAAQ,CAAC,MAAM,gDAAsC;IACrD,QAAQ,CAAC,oBAAoB,+DAA8C;IAE3E,IAAI,gBAAgB,IAAI,gBAAgB,GAAG,SAAS,CAEnD;IAED,IAAI,aAAa,IAAI,aAAa,GAAG,SAAS,CAE7C;IAED,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IAED,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAE9B;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAElC;IAED,aAAa,CAAC,EAAE,cAAc,CAAC;;IAkJ/B,kBAAkB,IAAI,WAAW,GAAG,SAAS;IAmB7C,SAAS,CAAC,wBAAwB;IAMlC,iBAAiB;IAmDjB,eAAe,CAAC,UAAU,EAAE,IAAI,GAAG,SAAS,EAAE,UAAU,EAAE,IAAI;IAUrD,wBAAwB,CAAC,IAAI,EAAE,MAAM;IAS9C,oBAAoB;CAgJrB"}
|