@rasamjs/core 0.2.0 → 0.3.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/API.md +14 -4
- package/CHANGELOG.md +59 -0
- package/COMPONENTS.md +229 -0
- package/README.md +39 -6
- package/RELEASING.md +4 -2
- package/dist/advanced.d.ts +1 -1
- package/dist/advanced.d.ts.map +1 -1
- package/dist/catalog/fragment.d.ts +2 -2
- package/dist/catalog/fragment.d.ts.map +1 -1
- package/dist/catalog/fragment.js.map +1 -1
- package/dist/changes/derived.d.ts +10 -0
- package/dist/changes/derived.d.ts.map +1 -0
- package/dist/changes/derived.js +14 -0
- package/dist/changes/derived.js.map +1 -0
- package/dist/changes/restore.d.ts.map +1 -1
- package/dist/changes/restore.js +22 -4
- package/dist/changes/restore.js.map +1 -1
- package/dist/changes/service.d.ts +5 -0
- package/dist/changes/service.d.ts.map +1 -1
- package/dist/changes/service.js +16 -2
- package/dist/changes/service.js.map +1 -1
- package/dist/components/changes.d.ts +34 -0
- package/dist/components/changes.d.ts.map +1 -0
- package/dist/components/changes.js +119 -0
- package/dist/components/changes.js.map +1 -0
- package/dist/components/component.d.ts +62 -0
- package/dist/components/component.d.ts.map +1 -0
- package/dist/components/component.js +355 -0
- package/dist/components/component.js.map +1 -0
- package/dist/components/decorators.d.ts +7 -0
- package/dist/components/decorators.d.ts.map +1 -0
- package/dist/components/decorators.js +81 -0
- package/dist/components/decorators.js.map +1 -0
- package/dist/components/metadata.d.ts +10 -0
- package/dist/components/metadata.d.ts.map +1 -0
- package/dist/components/metadata.js +85 -0
- package/dist/components/metadata.js.map +1 -0
- package/dist/components/registry.d.ts +24 -0
- package/dist/components/registry.d.ts.map +1 -0
- package/dist/components/registry.js +78 -0
- package/dist/components/registry.js.map +1 -0
- package/dist/components/types.d.ts +54 -0
- package/dist/components/types.d.ts.map +1 -0
- package/dist/components/types.js +2 -0
- package/dist/components/types.js.map +1 -0
- package/dist/components/view.d.ts +9 -0
- package/dist/components/view.d.ts.map +1 -0
- package/dist/components/view.js +104 -0
- package/dist/components/view.js.map +1 -0
- package/dist/components.d.ts +6 -0
- package/dist/components.d.ts.map +1 -0
- package/dist/components.js +5 -0
- package/dist/components.js.map +1 -0
- package/dist/core/node.d.ts +7 -0
- package/dist/core/node.d.ts.map +1 -1
- package/dist/core/node.js +30 -0
- package/dist/core/node.js.map +1 -1
- package/dist/interchange/clone.d.ts.map +1 -1
- package/dist/interchange/clone.js +3 -2
- package/dist/interchange/clone.js.map +1 -1
- package/dist/interchange/reconstruct.d.ts.map +1 -1
- package/dist/interchange/reconstruct.js +16 -12
- package/dist/interchange/reconstruct.js.map +1 -1
- package/dist/interchange/references.d.ts.map +1 -1
- package/dist/interchange/references.js +10 -4
- package/dist/interchange/references.js.map +1 -1
- package/dist/mixins/parent-internals.d.ts +6 -0
- package/dist/mixins/parent-internals.d.ts.map +1 -1
- package/dist/mixins/parent-internals.js +34 -0
- package/dist/mixins/parent-internals.js.map +1 -1
- package/dist/mixins/parent.d.ts.map +1 -1
- package/dist/mixins/parent.js +6 -1
- package/dist/mixins/parent.js.map +1 -1
- package/dist/mixins/types.d.ts +2 -2
- package/dist/mixins/types.d.ts.map +1 -1
- package/dist/resources/references.d.ts +2 -0
- package/dist/resources/references.d.ts.map +1 -1
- package/dist/resources/references.js +3 -3
- package/dist/resources/references.js.map +1 -1
- package/dist/services/catalog.d.ts.map +1 -1
- package/dist/services/catalog.js +5 -3
- package/dist/services/catalog.js.map +1 -1
- package/dist/services/defs-manager.d.ts +2 -0
- package/dist/services/defs-manager.d.ts.map +1 -1
- package/dist/services/defs-manager.js +4 -0
- package/dist/services/defs-manager.js.map +1 -1
- package/dist/services/element-key.d.ts +4 -0
- package/dist/services/element-key.d.ts.map +1 -0
- package/dist/services/element-key.js +12 -0
- package/dist/services/element-key.js.map +1 -0
- package/dist/services/initialization.d.ts +7 -0
- package/dist/services/initialization.d.ts.map +1 -0
- package/dist/services/initialization.js +27 -0
- package/dist/services/initialization.js.map +1 -0
- package/dist/services/registry.d.ts +8 -0
- package/dist/services/registry.d.ts.map +1 -1
- package/dist/services/registry.js +45 -10
- package/dist/services/registry.js.map +1 -1
- package/dist/services/types.d.ts +17 -0
- package/dist/services/types.d.ts.map +1 -1
- package/dist/template/parts.d.ts +12 -6
- package/dist/template/parts.d.ts.map +1 -1
- package/dist/template/parts.js +36 -29
- package/dist/template/parts.js.map +1 -1
- package/dist/template/render.d.ts +6 -7
- package/dist/template/render.d.ts.map +1 -1
- package/dist/template/render.js +188 -44
- package/dist/template/render.js.map +1 -1
- package/dist/template/svg-tag.d.ts +5 -1
- package/dist/template/svg-tag.d.ts.map +1 -1
- package/dist/template/svg-tag.js.map +1 -1
- package/dist/text/internals.d.ts +1 -0
- package/dist/text/internals.d.ts.map +1 -1
- package/dist/types/common.d.ts +27 -0
- package/dist/types/common.d.ts.map +1 -1
- package/package.json +156 -148
- package/reports/adoption.json +20 -20
- package/reports/animation-benchmark.json +612 -612
- package/reports/benchmark.json +40 -40
- package/reports/components-benchmark-before.json +10 -0
- package/reports/components-benchmark.json +10 -0
- package/reports/creation.json +26 -26
- package/reports/interchange-benchmark.json +85 -85
- package/reports/public-api-contract.json +334 -17
- package/reports/size-components.json +102 -0
- package/reports/size-parity.json +47 -34
- package/reports/size.json +6 -4
- package/reports/svgjs-comparison.json +3100 -3100
- package/reports/svgjs-comparison.md +16 -16
- package/reports/svgjs-parity-current.json +135 -42
- package/src/advanced.ts +1 -1
- package/src/catalog/fragment.ts +2 -2
- package/src/changes/derived.ts +19 -0
- package/src/changes/restore.ts +27 -4
- package/src/changes/service.ts +21 -6
- package/src/components/changes.ts +131 -0
- package/src/components/component.ts +401 -0
- package/src/components/decorators.ts +104 -0
- package/src/components/metadata.ts +111 -0
- package/src/components/registry.ts +79 -0
- package/src/components/types.ts +66 -0
- package/src/components/view.ts +123 -0
- package/src/components.ts +15 -0
- package/src/core/node.ts +32 -1
- package/src/interchange/clone.ts +3 -2
- package/src/interchange/reconstruct.ts +16 -12
- package/src/interchange/references.ts +12 -4
- package/src/mixins/parent-internals.ts +37 -0
- package/src/mixins/parent.ts +13 -4
- package/src/mixins/types.ts +2 -2
- package/src/resources/references.ts +5 -5
- package/src/services/catalog.ts +5 -3
- package/src/services/defs-manager.ts +5 -0
- package/src/services/element-key.ts +14 -0
- package/src/services/initialization.ts +25 -0
- package/src/services/registry.ts +47 -10
- package/src/services/types.ts +21 -0
- package/src/template/parts.ts +54 -39
- package/src/template/render.ts +211 -54
- package/src/template/svg-tag.ts +6 -1
- package/src/text/internals.ts +1 -0
- package/src/types/common.ts +29 -0
|
@@ -2,11 +2,16 @@ import { Attributes } from '../dom/attributes.js';
|
|
|
2
2
|
import { Matrix } from '../math/matrix.js';
|
|
3
3
|
import { validateAttributeValue } from '../core/attribute-validation.js';
|
|
4
4
|
import { validateNativeElement } from '../core/native-validation.js';
|
|
5
|
+
import { withInternalStructure } from '../mixins/parent-internals.js';
|
|
6
|
+
import { elementKey } from './element-key.js';
|
|
7
|
+
import { initializeNode, withInitialization } from './initialization.js';
|
|
5
8
|
export class Registry {
|
|
6
9
|
context;
|
|
7
10
|
static identity = new WeakMap();
|
|
8
11
|
wrappers = new Map();
|
|
9
12
|
constructors = new Map();
|
|
13
|
+
/** Tags that have variants, with the attributes that select them. */
|
|
14
|
+
variantAttributes = new Map();
|
|
10
15
|
constructor(context) {
|
|
11
16
|
this.context = context;
|
|
12
17
|
}
|
|
@@ -14,17 +19,42 @@ export class Registry {
|
|
|
14
19
|
return [...this.wrappers.values()];
|
|
15
20
|
}
|
|
16
21
|
register(Constructor) {
|
|
17
|
-
const
|
|
22
|
+
const key = elementKey(Constructor);
|
|
23
|
+
const previous = this.constructors.get(key);
|
|
18
24
|
if (previous === Constructor)
|
|
19
25
|
return this;
|
|
20
|
-
if (previous
|
|
21
|
-
throw new Error(
|
|
22
|
-
this.constructors.set(
|
|
26
|
+
if (previous)
|
|
27
|
+
throw new Error(`${Constructor.variant ? 'Variant' : 'Tag'} already registered: ${key}`);
|
|
28
|
+
this.constructors.set(key, Constructor);
|
|
29
|
+
const variant = Constructor.variant;
|
|
30
|
+
if (variant) {
|
|
31
|
+
const attributes = this.variantAttributes.get(Constructor.tag) ?? new Set();
|
|
32
|
+
this.variantAttributes.set(Constructor.tag, attributes.add(variant.attribute));
|
|
33
|
+
}
|
|
23
34
|
return this;
|
|
24
35
|
}
|
|
36
|
+
/** The tag's base constructor, ignoring variants. */
|
|
25
37
|
get(tag) {
|
|
26
38
|
return this.constructors.get(tag);
|
|
27
39
|
}
|
|
40
|
+
/** The constructor registered for the same tag or variant as `Constructor`, if any. */
|
|
41
|
+
registered(Constructor) {
|
|
42
|
+
return this.constructors.get(elementKey(Constructor));
|
|
43
|
+
}
|
|
44
|
+
variant(tag, attribute, value) {
|
|
45
|
+
return this.constructors.get(`${tag}[${attribute}="${value}"]`);
|
|
46
|
+
}
|
|
47
|
+
/** The constructor for a native element: a matching variant, else the tag's base. */
|
|
48
|
+
resolve(element) {
|
|
49
|
+
const tag = this.context.dom.tag(element);
|
|
50
|
+
for (const attribute of this.variantAttributes.get(tag) ?? []) {
|
|
51
|
+
const value = element.getAttribute(attribute);
|
|
52
|
+
const Constructor = value === null ? undefined : this.variant(tag, attribute, value);
|
|
53
|
+
if (Constructor)
|
|
54
|
+
return Constructor;
|
|
55
|
+
}
|
|
56
|
+
return this.constructors.get(tag);
|
|
57
|
+
}
|
|
28
58
|
/** Creates a fresh wrapper for binding initialization, without constructor defaults or mounting. */
|
|
29
59
|
createEmpty(tag, context = this.context) {
|
|
30
60
|
const Constructor = this.get(tag);
|
|
@@ -57,6 +87,7 @@ export class Registry {
|
|
|
57
87
|
this.forget(node);
|
|
58
88
|
this.wrappers.clear();
|
|
59
89
|
this.constructors.clear();
|
|
90
|
+
this.variantAttributes.clear();
|
|
60
91
|
}
|
|
61
92
|
adopt(element, parent) {
|
|
62
93
|
this.assertAdoptionParent(parent);
|
|
@@ -69,15 +100,18 @@ export class Registry {
|
|
|
69
100
|
}
|
|
70
101
|
const forbidden = new Set();
|
|
71
102
|
for (let ancestor = this.context.dom.svgParent(element); ancestor; ancestor = this.context.dom.svgParent(ancestor)) {
|
|
72
|
-
const Constructor = this.
|
|
103
|
+
const Constructor = this.resolve(ancestor);
|
|
73
104
|
if (Constructor?.opaqueContent)
|
|
74
105
|
throw new Error('Cannot adopt descendants across an opaque native boundary');
|
|
75
106
|
for (const tag of Constructor?.forbiddenDescendantTags ?? [])
|
|
76
107
|
forbidden.add(tag);
|
|
77
108
|
}
|
|
78
109
|
this.validateTree(element, forbidden);
|
|
79
|
-
|
|
80
|
-
return
|
|
110
|
+
// Adoption reproduces a native tree exactly, so it may fill owned children.
|
|
111
|
+
return withInitialization(() => {
|
|
112
|
+
const wrapped = withInternalStructure(() => this.wrapTree(element));
|
|
113
|
+
return parent ? parent.add(wrapped) : wrapped;
|
|
114
|
+
});
|
|
81
115
|
}
|
|
82
116
|
assertAdoptionParent(parent) {
|
|
83
117
|
if (!parent)
|
|
@@ -97,7 +131,7 @@ export class Registry {
|
|
|
97
131
|
throw new Error('Cross-root adoption is unsupported');
|
|
98
132
|
return;
|
|
99
133
|
}
|
|
100
|
-
const Constructor = this.
|
|
134
|
+
const Constructor = this.resolve(element);
|
|
101
135
|
if (!this.context.dom.isSvg(element) || !Constructor)
|
|
102
136
|
throw new TypeError(`Unsupported SVG tag: ${tag}`);
|
|
103
137
|
Constructor[validateNativeElement]?.(element);
|
|
@@ -124,15 +158,16 @@ export class Registry {
|
|
|
124
158
|
const existing = Registry.wrapper(element);
|
|
125
159
|
if (existing)
|
|
126
160
|
return existing;
|
|
127
|
-
const Constructor = this.
|
|
161
|
+
const Constructor = this.resolve(element);
|
|
128
162
|
const children = this.managedChildren(element);
|
|
129
163
|
const node = new Constructor(this.context, {}, element);
|
|
130
164
|
if (Constructor.isContainer)
|
|
131
165
|
node.adoptChildren(children.map((child) => this.wrapTree(child)));
|
|
166
|
+
initializeNode(node);
|
|
132
167
|
return node;
|
|
133
168
|
}
|
|
134
169
|
managedChildren(element) {
|
|
135
|
-
const Constructor = this.
|
|
170
|
+
const Constructor = this.resolve(element);
|
|
136
171
|
if (Constructor?.opaqueContent)
|
|
137
172
|
return [];
|
|
138
173
|
return this.context.dom
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/services/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/services/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAGrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAIzE,MAAM,OAAO,QAAQ;IAOU,OAAO;IAN5B,MAAM,CAAU,QAAQ,GAAG,IAAI,OAAO,EAAuB,CAAC;IACrD,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC1C,YAAY,GAAG,IAAI,GAAG,EAAwB,CAAC;IAChE,qEAAqE;IACpD,iBAAiB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAEpE,YAA6B,OAAuB;uBAAvB,OAAO;IAAmB,CAAC;IAExD,IAAI,KAAK;QACP,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,QAAQ,CAAkC,WAA0C;QAClF,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,QAAQ,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QAC1C,IAAI,QAAQ;YACV,MAAM,IAAI,KAAK,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,wBAAwB,GAAG,EAAE,CAAC,CAAC;QAC3F,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QACpC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;YACpF,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qDAAqD;IACrD,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,uFAAuF;IACvF,UAAU,CAAC,WAAyB;QAClC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,CAAC,GAAW,EAAE,SAAiB,EAAE,KAAa;QACnD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,SAAS,KAAK,KAAK,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,qFAAqF;IACrF,OAAO,CAAC,OAAmB;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1C,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC9C,MAAM,WAAW,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACrF,IAAI,WAAW;gBAAE,OAAO,WAAW,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,oGAAoG;IACpG,WAAW,CAAC,GAAW,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,SAAS,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAiC,CAAC,CAAC;QACtE,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,OAAmB;QAChC,OAAO,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,CAAC,OAAmB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,IAAa;QACjB,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACrF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC5F,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,IAAa;QAClB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI;YAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,KAAK;QACH,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,OAAmB,EAAE,MAAmB;QAC5C,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,UAAU,EAAE,CAAC;YACtB,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YAC7F,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAClD,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,KACE,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,EAClD,QAAQ,EACR,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,EAC/C,CAAC;YACD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,WAAW,EAAE,aAAa;gBAC5B,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;YAC/E,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,uBAAuB,IAAI,EAAE;gBAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACtC,4EAA4E;QAC5E,OAAO,kBAAkB,CAAC,GAAG,EAAE;YAC7B,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YACpE,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,MAA8B;QACzD,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,CAAC,UAAU,EAAE,CAAC;QACpB,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAC7F,CAAC;IAEO,YAAY,CAAC,OAAmB,EAAE,SAA8B;QACtE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;YACpB,MAAM,IAAI,SAAS,CAAC,uDAAuD,CAAC,CAAC;QAC/E,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,UAAU,EAAE,CAAC;YACtB,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YAC7F,OAAO;QACT,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW;YAClD,MAAM,IAAI,SAAS,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;QACrD,WAAW,CAAC,qBAAqB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW;YAC7C,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;QACnE,IACE,WAAW,CAAC,SAAS;YACrB,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAEtF,MAAM,IAAI,SAAS,CAAC,GAAG,GAAG,iBAAiB,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1F,4EAA4E;QAC5E,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;QACvE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;YACjD,IAAI,IAAI,KAAK,WAAW;gBAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtD,WAAW,CAAC,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,WAAW,GAAG,WAAW,CAAC,uBAAuB;YACrD,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,WAAW,CAAC,uBAAuB,CAAC,CAAC;YACjE,CAAC,CAAC,SAAS,CAAC;QACd,KAAK,MAAM,KAAK,IAAI,QAAQ;YAAE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACtE,CAAC;IAEO,QAAQ,CAAC,OAAmB;QAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QACxD,IAAI,WAAW,CAAC,WAAW;YACxB,IAAmB,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpF,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,eAAe,CAAC,OAAmB;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,WAAW,EAAE,aAAa;YAAE,OAAO,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG;aACpB,QAAQ,CAAC,OAAO,CAAC;aACjB,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;YAC9B,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpE,CAAC,WAAW,EAAE,WAAW;gBACvB,CAAC,CAAC,WAAW,CAAC,SAAS;oBACrB,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9D,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAC7C,CAAC;IACN,CAAC;CACF"}
|
package/dist/services/types.d.ts
CHANGED
|
@@ -4,6 +4,19 @@ import type { DrawingContext } from './context.js';
|
|
|
4
4
|
import type { AttributeValue } from '../types/common.js';
|
|
5
5
|
import { validateAttributeValue } from '../core/attribute-validation.js';
|
|
6
6
|
import { validateNativeElement } from '../core/native-validation.js';
|
|
7
|
+
/** Type-only capability for constructors whose options come from instance fields. */
|
|
8
|
+
export declare const creationOptions: unique symbol;
|
|
9
|
+
export type CreationOptions<Options, Instance> = Instance extends {
|
|
10
|
+
readonly [creationOptions]: infer Fields;
|
|
11
|
+
} ? Fields : Options;
|
|
12
|
+
/**
|
|
13
|
+
* Selects a subclass for elements that share a tag, by the exact value of one `data-*`
|
|
14
|
+
* attribute. Instances always carry that value, and it can't change.
|
|
15
|
+
*/
|
|
16
|
+
export interface ElementVariant {
|
|
17
|
+
readonly attribute: string;
|
|
18
|
+
readonly value: string;
|
|
19
|
+
}
|
|
7
20
|
export interface ElementClass<Options = any, Result extends AnyNode = AnyNode> {
|
|
8
21
|
readonly tag: string;
|
|
9
22
|
readonly attributeNames: readonly string[];
|
|
@@ -12,6 +25,10 @@ export interface ElementClass<Options = any, Result extends AnyNode = AnyNode> {
|
|
|
12
25
|
readonly childTags?: readonly string[] | undefined;
|
|
13
26
|
readonly forbiddenDescendantTags?: readonly string[] | undefined;
|
|
14
27
|
readonly opaqueContent?: boolean;
|
|
28
|
+
/** Registers the class for one attribute value of its tag instead of the whole tag. */
|
|
29
|
+
readonly variant?: ElementVariant | undefined;
|
|
30
|
+
/** Children belong to the class: outside structural edits throw. */
|
|
31
|
+
readonly ownsChildren?: boolean;
|
|
15
32
|
[validateAttributeValue]?(name: string, value: AttributeValue): void;
|
|
16
33
|
[validateNativeElement]?(element: SVGElement): void;
|
|
17
34
|
new (context: DrawingContext, options: Options, existing?: any): Result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/services/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAIrE,MAAM,WAAW,YAAY,CAAC,OAAO,GAAG,GAAG,EAAE,MAAM,SAAS,OAAO,GAAG,OAAO;IAC3E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,uBAAuB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACjE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACrE,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IACpD,KAAK,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC;CACzE;AAID,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAID,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAID,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,2DAA2D;AAC3D,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACtD,sEAAsE;AACtE,MAAM,MAAM,oBAAoB,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/services/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAIrE,qFAAqF;AACrF,MAAM,CAAC,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAC;AACpD,MAAM,MAAM,eAAe,CAAC,OAAO,EAAE,QAAQ,IAAI,QAAQ,SAAS;IAChE,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,MAAM,MAAM,CAAC;CAC1C,GACG,MAAM,GACN,OAAO,CAAC;AAEZ;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY,CAAC,OAAO,GAAG,GAAG,EAAE,MAAM,SAAS,OAAO,GAAG,OAAO;IAC3E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,uBAAuB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACjE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,uFAAuF;IACvF,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC9C,oEAAoE;IACpE,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACrE,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IACpD,KAAK,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC;CACzE;AAID,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAID,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAID,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,2DAA2D;AAC3D,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACtD,sEAAsE;AACtE,MAAM,MAAM,oBAAoB,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC"}
|
package/dist/template/parts.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { AnyNode } from '../core/types.js';
|
|
2
2
|
import type { DomFactory } from '../dom/create.js';
|
|
3
3
|
import type { Registry } from '../services/registry.js';
|
|
4
|
+
import type { ElementClass } from '../services/types.js';
|
|
4
5
|
import type { TemplateValue } from './svg-tag.js';
|
|
5
6
|
import type { TextBinding } from '../text/internals.js';
|
|
6
7
|
export type PartValue = string | number;
|
|
@@ -9,16 +10,22 @@ export interface TemplateDescription {
|
|
|
9
10
|
readonly attributes: Readonly<Record<string, readonly PartValue[]>>;
|
|
10
11
|
readonly children: readonly TemplateDescription[];
|
|
11
12
|
readonly text: readonly PartValue[];
|
|
12
|
-
readonly content: readonly
|
|
13
|
-
readonly parts: readonly PartValue[];
|
|
14
|
-
})[];
|
|
13
|
+
readonly content: readonly ContentItem[];
|
|
15
14
|
}
|
|
15
|
+
/** An element, or a text run whose number parts are hole indexes (child holes outside text). */
|
|
16
|
+
export type ContentItem = TemplateDescription | {
|
|
17
|
+
readonly parts: readonly PartValue[];
|
|
18
|
+
};
|
|
16
19
|
export declare class TemplateCompiler {
|
|
17
20
|
private static readonly cache;
|
|
18
21
|
private readonly counts;
|
|
19
22
|
private constructor();
|
|
23
|
+
/** Top-level elements; templates with top-level child holes need `content()`. */
|
|
20
24
|
static compile(dom: DomFactory, strings: TemplateStringsArray): readonly TemplateDescription[];
|
|
21
|
-
|
|
25
|
+
/** Top-level content in order: elements and text runs that may hold child holes. */
|
|
26
|
+
static content(dom: DomFactory, strings: TemplateStringsArray): readonly ContentItem[];
|
|
27
|
+
/** `parent` is the container class that receives `content`, for its child rules. */
|
|
28
|
+
static validate(content: readonly ContentItem[], registry: Registry, forbidden?: ReadonlySet<string>, parent?: ElementClass): void;
|
|
22
29
|
private split;
|
|
23
30
|
private describe;
|
|
24
31
|
}
|
|
@@ -27,11 +34,10 @@ export declare class BindingPart {
|
|
|
27
34
|
private readonly name;
|
|
28
35
|
private readonly parts;
|
|
29
36
|
private readonly textBinding?;
|
|
30
|
-
private previous;
|
|
31
37
|
constructor(node: AnyNode, name: string | null, parts: readonly PartValue[], textBinding?: TextBinding);
|
|
32
38
|
evaluate(values: readonly TemplateValue[]): string | undefined;
|
|
33
39
|
validate(value: string | undefined): void;
|
|
34
|
-
commit(value: string | undefined
|
|
40
|
+
commit(value: string | undefined): void;
|
|
35
41
|
private static primitive;
|
|
36
42
|
}
|
|
37
43
|
//# sourceMappingURL=parts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../src/template/parts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC,CAAC,CAAC;IACpE,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAClD,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,mBAAmB,GAAG;
|
|
1
|
+
{"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../src/template/parts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC,CAAC,CAAC;IACpE,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAClD,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;CAC1C;AAED,gGAAgG;AAChG,MAAM,MAAM,WAAW,GAAG,mBAAmB,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAA;CAAE,CAAC;AAEzF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAA+D;IAC5F,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAElC,OAAO,eAEN;IAED,iFAAiF;IACjF,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,oBAAoB,GAAG,SAAS,mBAAmB,EAAE,CAW7F;IAED,oFAAoF;IACpF,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,oBAAoB,GAAG,SAAS,WAAW,EAAE,CAgBrF;IAED,oFAAoF;IACpF,MAAM,CAAC,QAAQ,CACb,OAAO,EAAE,SAAS,WAAW,EAAE,EAC/B,QAAQ,EAAE,QAAQ,EAClB,SAAS,GAAE,WAAW,CAAC,MAAM,CAAa,EAC1C,MAAM,CAAC,EAAE,YAAY,GACpB,IAAI,CAoCN;IAED,OAAO,CAAC,KAAK;IAcb,OAAO,CAAC,QAAQ;CA8BjB;AAED,qBAAa,WAAW;IAEpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAJ/B,YACmB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,KAAK,EAAE,SAAS,SAAS,EAAE,EAC3B,WAAW,CAAC,EAAE,WAAW,EACxC;IAEJ,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,MAAM,GAAG,SAAS,CAa7D;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAiBxC;IAED,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAYtC;IAED,OAAO,CAAC,MAAM,CAAC,SAAS;CAMzB"}
|
package/dist/template/parts.js
CHANGED
|
@@ -7,7 +7,16 @@ export class TemplateCompiler {
|
|
|
7
7
|
constructor(strings) {
|
|
8
8
|
this.counts = new Array(strings.length - 1).fill(0);
|
|
9
9
|
}
|
|
10
|
+
/** Top-level elements; templates with top-level child holes need `content()`. */
|
|
10
11
|
static compile(dom, strings) {
|
|
12
|
+
const content = TemplateCompiler.content(dom, strings);
|
|
13
|
+
if (content.some((item) => !('tag' in item) &&
|
|
14
|
+
item.parts.some((part) => part !== '' && (typeof part == 'number' || part.trim()))))
|
|
15
|
+
throw new TypeError('Template text must be inside a text element');
|
|
16
|
+
return content.filter((item) => 'tag' in item);
|
|
17
|
+
}
|
|
18
|
+
/** Top-level content in order: elements and text runs that may hold child holes. */
|
|
19
|
+
static content(dom, strings) {
|
|
11
20
|
const cached = TemplateCompiler.cache.get(strings);
|
|
12
21
|
if (cached)
|
|
13
22
|
return cached;
|
|
@@ -18,38 +27,41 @@ export class TemplateCompiler {
|
|
|
18
27
|
.map((part, index) => part + (index < strings.length - 1 ? `rasamHole${index}End` : ''))
|
|
19
28
|
.join('');
|
|
20
29
|
const result = [];
|
|
21
|
-
for (const node of dom.parse(source))
|
|
22
|
-
|
|
23
|
-
if (description)
|
|
24
|
-
result.push(description);
|
|
25
|
-
}
|
|
30
|
+
for (const node of dom.parse(source))
|
|
31
|
+
result.push('text' in node ? { parts: compiler.split(node.text) } : compiler.describe(node));
|
|
26
32
|
if (compiler.counts.some((count) => count !== 1))
|
|
27
33
|
throw new TypeError('Bindings must appear in attribute values or text elements');
|
|
28
34
|
TemplateCompiler.cache.set(strings, result);
|
|
29
35
|
return result;
|
|
30
36
|
}
|
|
31
|
-
|
|
32
|
-
|
|
37
|
+
/** `parent` is the container class that receives `content`, for its child rules. */
|
|
38
|
+
static validate(content, registry, forbidden = new Set(), parent) {
|
|
39
|
+
for (const description of content) {
|
|
40
|
+
if (!('tag' in description)) {
|
|
41
|
+
if (description.parts.some((part) => typeof part == 'string' && part.trim()))
|
|
42
|
+
throw new TypeError('Template text must be inside a text element');
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
33
45
|
const Constructor = registry.get(description.tag);
|
|
34
46
|
if (forbidden.has(description.tag))
|
|
35
47
|
throw new TypeError('Nested links or forbidden descendants are unsupported');
|
|
36
48
|
if (!Constructor)
|
|
37
49
|
throw new TypeError(`Unsupported template tag: ${description.tag}`);
|
|
50
|
+
if (parent?.childTags && !parent.childTags.includes(description.tag))
|
|
51
|
+
throw new TypeError(`${parent.tag} only accepts ${parent.childTags.join(', ')} children`);
|
|
38
52
|
for (const name of Object.keys(description.attributes)) {
|
|
39
53
|
if (!Constructor.attributeNames.includes(name) && !/^(?:data|aria)-[\w-]+$/.test(name))
|
|
40
54
|
throw new TypeError(`Unsupported template attribute: ${name}`);
|
|
41
55
|
}
|
|
42
56
|
if (description.children.length > 0 && !Constructor.isContainer)
|
|
43
57
|
throw new TypeError('Only containers may have element children');
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
if (description.text.some((part) => typeof part === 'number' || part.trim()) &&
|
|
48
|
-
!Constructor.isText)
|
|
58
|
+
// Outside text elements, holes between children are child holes, so only containers take them.
|
|
59
|
+
if (!Constructor.isText &&
|
|
60
|
+
description.text.some((part) => typeof part == 'number' ? !Constructor.isContainer : part.trim()))
|
|
49
61
|
throw new TypeError('Text bindings require a text element');
|
|
50
|
-
TemplateCompiler.validate(description.children, registry, Constructor.forbiddenDescendantTags
|
|
62
|
+
TemplateCompiler.validate(Constructor.isText ? description.children : description.content, registry, Constructor.forbiddenDescendantTags
|
|
51
63
|
? new Set([...forbidden, ...Constructor.forbiddenDescendantTags])
|
|
52
|
-
: forbidden);
|
|
64
|
+
: forbidden, Constructor);
|
|
53
65
|
}
|
|
54
66
|
}
|
|
55
67
|
split(value) {
|
|
@@ -67,11 +79,6 @@ export class TemplateCompiler {
|
|
|
67
79
|
return parts;
|
|
68
80
|
}
|
|
69
81
|
describe(node) {
|
|
70
|
-
if ('text' in node) {
|
|
71
|
-
if (node.text.trim())
|
|
72
|
-
throw new TypeError('Template text must be inside a text element');
|
|
73
|
-
return null;
|
|
74
|
-
}
|
|
75
82
|
if (/rasamHole\d+End/.test(node.tag))
|
|
76
83
|
throw new TypeError('Dynamic tag names are unsupported');
|
|
77
84
|
const attributes = {};
|
|
@@ -97,10 +104,8 @@ export class TemplateCompiler {
|
|
|
97
104
|
}
|
|
98
105
|
else {
|
|
99
106
|
const description = this.describe(child);
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
content.push(description);
|
|
103
|
-
}
|
|
107
|
+
children.push(description);
|
|
108
|
+
content.push(description);
|
|
104
109
|
}
|
|
105
110
|
}
|
|
106
111
|
return { tag: node.tag, attributes, children, text, content };
|
|
@@ -111,7 +116,6 @@ export class BindingPart {
|
|
|
111
116
|
name;
|
|
112
117
|
parts;
|
|
113
118
|
textBinding;
|
|
114
|
-
previous;
|
|
115
119
|
constructor(node, name, parts, textBinding) {
|
|
116
120
|
this.node = node;
|
|
117
121
|
this.name = name;
|
|
@@ -150,20 +154,23 @@ export class BindingPart {
|
|
|
150
154
|
throw new TypeError('Templates support only local url(#id) references');
|
|
151
155
|
}
|
|
152
156
|
}
|
|
153
|
-
commit(value
|
|
154
|
-
if (!initial && value === this.previous)
|
|
155
|
-
return;
|
|
157
|
+
commit(value) {
|
|
156
158
|
if (this.name === null) {
|
|
157
159
|
if (!Guards.isTextual(this.node))
|
|
158
160
|
throw new TypeError('Text binding requires the Textual mixin');
|
|
161
|
+
if ((this.textBinding ? this.textBinding.value : this.node.text()) === (value ?? ''))
|
|
162
|
+
return;
|
|
159
163
|
if (this.textBinding)
|
|
160
164
|
this.textBinding.set(value ?? '');
|
|
161
165
|
else
|
|
162
166
|
this.node.text(value ?? '');
|
|
163
167
|
}
|
|
164
|
-
else
|
|
168
|
+
else {
|
|
169
|
+
const current = this.node.getAttributeValue(this.name);
|
|
170
|
+
if ((current === undefined ? undefined : String(current)) === value)
|
|
171
|
+
return;
|
|
165
172
|
this.node.setAttributeValue(this.name, value);
|
|
166
|
-
|
|
173
|
+
}
|
|
167
174
|
}
|
|
168
175
|
static primitive(value) {
|
|
169
176
|
if (value == null)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parts.js","sourceRoot":"","sources":["../../src/template/parts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"parts.js","sourceRoot":"","sources":["../../src/template/parts.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,19 +2,18 @@ import type { AnyNode } from '../core/types.js';
|
|
|
2
2
|
import type { ParentNode } from '../mixins/types.js';
|
|
3
3
|
import { Group } from '../elements/group.js';
|
|
4
4
|
import type { Registry } from '../services/registry.js';
|
|
5
|
-
import type {
|
|
6
|
-
import
|
|
5
|
+
import type { ContentItem } from './parts.js';
|
|
6
|
+
import { SvgTemplate } from './svg-tag.js';
|
|
7
7
|
export declare class TemplateInstance {
|
|
8
8
|
readonly template: SvgTemplate;
|
|
9
9
|
readonly host: Group;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
private readonly mount;
|
|
11
|
+
constructor(parent: ParentNode, template: SvgTemplate, registry: Registry, content: readonly ContentItem[]);
|
|
12
|
+
/** The current top-level nodes, including those that child holes render. */
|
|
13
|
+
get nodes(): readonly AnyNode[];
|
|
13
14
|
get isDestroyed(): boolean;
|
|
14
15
|
update(template: SvgTemplate): this;
|
|
15
16
|
destroy(): void;
|
|
16
|
-
private instantiate;
|
|
17
|
-
private bind;
|
|
18
17
|
}
|
|
19
18
|
export declare class Renderer {
|
|
20
19
|
private readonly parent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/template/render.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/template/render.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,KAAK,EAAE,WAAW,EAAuB,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAkM3C,qBAAa,gBAAgB;IAMzB,QAAQ,CAAC,QAAQ,EAAE,WAAW;IALhC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAE9B,YACE,MAAM,EAAE,UAAU,EACT,QAAQ,EAAE,WAAW,EAC9B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,SAAS,WAAW,EAAE,EAShC;IAED,4EAA4E;IAC5E,IAAI,KAAK,IAAI,SAAS,OAAO,EAAE,CAE9B;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,MAAM,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAQlC;IAED,OAAO,IAAI,IAAI,CAEd;CACF;AAED,qBAAa,QAAQ;IAKjB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAL3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAuC;IACxE,OAAO,CAAC,QAAQ,CAAiC;IAEjD,YACmB,MAAM,EAAE,UAAU,EAClB,QAAQ,WAA0B,EAMpD;IAED,MAAM,CAAC,MAAM,CACX,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,WAAW,EACrB,QAAQ,WAA0B,GACjC,gBAAgB,CAOlB;IAED,MAAM,CAAC,QAAQ,EAAE,WAAW,GAAG,gBAAgB,CAuB9C;CACF"}
|