@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.
Files changed (162) hide show
  1. package/API.md +14 -4
  2. package/CHANGELOG.md +59 -0
  3. package/COMPONENTS.md +229 -0
  4. package/README.md +39 -6
  5. package/RELEASING.md +4 -2
  6. package/dist/advanced.d.ts +1 -1
  7. package/dist/advanced.d.ts.map +1 -1
  8. package/dist/catalog/fragment.d.ts +2 -2
  9. package/dist/catalog/fragment.d.ts.map +1 -1
  10. package/dist/catalog/fragment.js.map +1 -1
  11. package/dist/changes/derived.d.ts +10 -0
  12. package/dist/changes/derived.d.ts.map +1 -0
  13. package/dist/changes/derived.js +14 -0
  14. package/dist/changes/derived.js.map +1 -0
  15. package/dist/changes/restore.d.ts.map +1 -1
  16. package/dist/changes/restore.js +22 -4
  17. package/dist/changes/restore.js.map +1 -1
  18. package/dist/changes/service.d.ts +5 -0
  19. package/dist/changes/service.d.ts.map +1 -1
  20. package/dist/changes/service.js +16 -2
  21. package/dist/changes/service.js.map +1 -1
  22. package/dist/components/changes.d.ts +34 -0
  23. package/dist/components/changes.d.ts.map +1 -0
  24. package/dist/components/changes.js +119 -0
  25. package/dist/components/changes.js.map +1 -0
  26. package/dist/components/component.d.ts +62 -0
  27. package/dist/components/component.d.ts.map +1 -0
  28. package/dist/components/component.js +355 -0
  29. package/dist/components/component.js.map +1 -0
  30. package/dist/components/decorators.d.ts +7 -0
  31. package/dist/components/decorators.d.ts.map +1 -0
  32. package/dist/components/decorators.js +81 -0
  33. package/dist/components/decorators.js.map +1 -0
  34. package/dist/components/metadata.d.ts +10 -0
  35. package/dist/components/metadata.d.ts.map +1 -0
  36. package/dist/components/metadata.js +85 -0
  37. package/dist/components/metadata.js.map +1 -0
  38. package/dist/components/registry.d.ts +24 -0
  39. package/dist/components/registry.d.ts.map +1 -0
  40. package/dist/components/registry.js +78 -0
  41. package/dist/components/registry.js.map +1 -0
  42. package/dist/components/types.d.ts +54 -0
  43. package/dist/components/types.d.ts.map +1 -0
  44. package/dist/components/types.js +2 -0
  45. package/dist/components/types.js.map +1 -0
  46. package/dist/components/view.d.ts +9 -0
  47. package/dist/components/view.d.ts.map +1 -0
  48. package/dist/components/view.js +104 -0
  49. package/dist/components/view.js.map +1 -0
  50. package/dist/components.d.ts +6 -0
  51. package/dist/components.d.ts.map +1 -0
  52. package/dist/components.js +5 -0
  53. package/dist/components.js.map +1 -0
  54. package/dist/core/node.d.ts +7 -0
  55. package/dist/core/node.d.ts.map +1 -1
  56. package/dist/core/node.js +30 -0
  57. package/dist/core/node.js.map +1 -1
  58. package/dist/interchange/clone.d.ts.map +1 -1
  59. package/dist/interchange/clone.js +3 -2
  60. package/dist/interchange/clone.js.map +1 -1
  61. package/dist/interchange/reconstruct.d.ts.map +1 -1
  62. package/dist/interchange/reconstruct.js +16 -12
  63. package/dist/interchange/reconstruct.js.map +1 -1
  64. package/dist/interchange/references.d.ts.map +1 -1
  65. package/dist/interchange/references.js +10 -4
  66. package/dist/interchange/references.js.map +1 -1
  67. package/dist/mixins/parent-internals.d.ts +6 -0
  68. package/dist/mixins/parent-internals.d.ts.map +1 -1
  69. package/dist/mixins/parent-internals.js +34 -0
  70. package/dist/mixins/parent-internals.js.map +1 -1
  71. package/dist/mixins/parent.d.ts.map +1 -1
  72. package/dist/mixins/parent.js +6 -1
  73. package/dist/mixins/parent.js.map +1 -1
  74. package/dist/mixins/types.d.ts +2 -2
  75. package/dist/mixins/types.d.ts.map +1 -1
  76. package/dist/resources/references.d.ts +2 -0
  77. package/dist/resources/references.d.ts.map +1 -1
  78. package/dist/resources/references.js +3 -3
  79. package/dist/resources/references.js.map +1 -1
  80. package/dist/services/catalog.d.ts.map +1 -1
  81. package/dist/services/catalog.js +5 -3
  82. package/dist/services/catalog.js.map +1 -1
  83. package/dist/services/defs-manager.d.ts +2 -0
  84. package/dist/services/defs-manager.d.ts.map +1 -1
  85. package/dist/services/defs-manager.js +4 -0
  86. package/dist/services/defs-manager.js.map +1 -1
  87. package/dist/services/element-key.d.ts +4 -0
  88. package/dist/services/element-key.d.ts.map +1 -0
  89. package/dist/services/element-key.js +12 -0
  90. package/dist/services/element-key.js.map +1 -0
  91. package/dist/services/initialization.d.ts +7 -0
  92. package/dist/services/initialization.d.ts.map +1 -0
  93. package/dist/services/initialization.js +27 -0
  94. package/dist/services/initialization.js.map +1 -0
  95. package/dist/services/registry.d.ts +8 -0
  96. package/dist/services/registry.d.ts.map +1 -1
  97. package/dist/services/registry.js +45 -10
  98. package/dist/services/registry.js.map +1 -1
  99. package/dist/services/types.d.ts +17 -0
  100. package/dist/services/types.d.ts.map +1 -1
  101. package/dist/template/parts.d.ts +12 -6
  102. package/dist/template/parts.d.ts.map +1 -1
  103. package/dist/template/parts.js +36 -29
  104. package/dist/template/parts.js.map +1 -1
  105. package/dist/template/render.d.ts +6 -7
  106. package/dist/template/render.d.ts.map +1 -1
  107. package/dist/template/render.js +188 -44
  108. package/dist/template/render.js.map +1 -1
  109. package/dist/template/svg-tag.d.ts +5 -1
  110. package/dist/template/svg-tag.d.ts.map +1 -1
  111. package/dist/template/svg-tag.js.map +1 -1
  112. package/dist/text/internals.d.ts +1 -0
  113. package/dist/text/internals.d.ts.map +1 -1
  114. package/dist/types/common.d.ts +27 -0
  115. package/dist/types/common.d.ts.map +1 -1
  116. package/package.json +156 -148
  117. package/reports/adoption.json +20 -20
  118. package/reports/animation-benchmark.json +612 -612
  119. package/reports/benchmark.json +40 -40
  120. package/reports/components-benchmark-before.json +10 -0
  121. package/reports/components-benchmark.json +10 -0
  122. package/reports/creation.json +26 -26
  123. package/reports/interchange-benchmark.json +85 -85
  124. package/reports/public-api-contract.json +334 -17
  125. package/reports/size-components.json +102 -0
  126. package/reports/size-parity.json +47 -34
  127. package/reports/size.json +6 -4
  128. package/reports/svgjs-comparison.json +3100 -3100
  129. package/reports/svgjs-comparison.md +16 -16
  130. package/reports/svgjs-parity-current.json +135 -42
  131. package/src/advanced.ts +1 -1
  132. package/src/catalog/fragment.ts +2 -2
  133. package/src/changes/derived.ts +19 -0
  134. package/src/changes/restore.ts +27 -4
  135. package/src/changes/service.ts +21 -6
  136. package/src/components/changes.ts +131 -0
  137. package/src/components/component.ts +401 -0
  138. package/src/components/decorators.ts +104 -0
  139. package/src/components/metadata.ts +111 -0
  140. package/src/components/registry.ts +79 -0
  141. package/src/components/types.ts +66 -0
  142. package/src/components/view.ts +123 -0
  143. package/src/components.ts +15 -0
  144. package/src/core/node.ts +32 -1
  145. package/src/interchange/clone.ts +3 -2
  146. package/src/interchange/reconstruct.ts +16 -12
  147. package/src/interchange/references.ts +12 -4
  148. package/src/mixins/parent-internals.ts +37 -0
  149. package/src/mixins/parent.ts +13 -4
  150. package/src/mixins/types.ts +2 -2
  151. package/src/resources/references.ts +5 -5
  152. package/src/services/catalog.ts +5 -3
  153. package/src/services/defs-manager.ts +5 -0
  154. package/src/services/element-key.ts +14 -0
  155. package/src/services/initialization.ts +25 -0
  156. package/src/services/registry.ts +47 -10
  157. package/src/services/types.ts +21 -0
  158. package/src/template/parts.ts +54 -39
  159. package/src/template/render.ts +211 -54
  160. package/src/template/svg-tag.ts +6 -1
  161. package/src/text/internals.ts +1 -0
  162. 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 previous = this.constructors.get(Constructor.tag);
22
+ const key = elementKey(Constructor);
23
+ const previous = this.constructors.get(key);
18
24
  if (previous === Constructor)
19
25
  return this;
20
- if (previous && previous !== Constructor)
21
- throw new Error(`Tag already registered: ${Constructor.tag}`);
22
- this.constructors.set(Constructor.tag, Constructor);
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.get(this.context.dom.tag(ancestor));
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
- const wrapped = this.wrapTree(element);
80
- return parent ? parent.add(wrapped) : wrapped;
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.get(tag);
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.get(this.context.dom.tag(element));
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.get(this.context.dom.tag(element));
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;AAMrE,MAAM,OAAO,QAAQ;IAKU,OAAO;IAJ5B,MAAM,CAAU,QAAQ,GAAG,IAAI,OAAO,EAAuB,CAAC;IACrD,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC1C,YAAY,GAAG,IAAI,GAAG,EAAwB,CAAC;IAEhE,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,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxD,IAAI,QAAQ,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QAC1C,IAAI,QAAQ,IAAI,QAAQ,KAAK,WAAW;YACtC,MAAM,IAAI,KAAK,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,GAAW;QACb,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;IAC5B,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,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC7D,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,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAChD,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,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,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,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5D,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,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,eAAe,CAAC,OAAmB;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5D,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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/services/registry.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -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 (TemplateDescription | {
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
- static validate(descriptions: readonly TemplateDescription[], registry: Registry, forbidden?: ReadonlySet<string>): void;
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, initial?: boolean): void;
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;QAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAA;KAAE,CAAC,EAAE,CAAC;CAC/F;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAGzB;IACJ,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAElC,OAAO,eAEN;IAED,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,oBAAoB,GAAG,SAAS,mBAAmB,EAAE,CAkB7F;IAED,MAAM,CAAC,QAAQ,CACb,YAAY,EAAE,SAAS,mBAAmB,EAAE,EAC5C,QAAQ,EAAE,QAAQ,EAClB,SAAS,GAAE,WAAW,CAAC,MAAM,CAAa,GACzC,IAAI,CAgCN;IAED,OAAO,CAAC,KAAK;IAcb,OAAO,CAAC,QAAQ;CAoCjB;AAED,qBAAa,WAAW;IAIpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAN/B,OAAO,CAAC,QAAQ,CAAqB;IAErC,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,EAAE,OAAO,UAAQ,GAAG,IAAI,CASvD;IAED,OAAO,CAAC,MAAM,CAAC,SAAS;CAMzB"}
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"}
@@ -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
- const description = compiler.describe(node);
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
- static validate(descriptions, registry, forbidden = new Set()) {
32
- for (const description of descriptions) {
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
- if (Constructor.childTags &&
45
- description.children.some((child) => !Constructor.childTags.includes(child.tag)))
46
- throw new TypeError(`${description.tag} only accepts ${Constructor.childTags.join(', ')} children`);
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
- if (description) {
101
- children.push(description);
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, initial = false) {
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
- this.previous = value;
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":"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"}
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 { TemplateDescription } from './parts.js';
6
- import type { SvgTemplate } from './svg-tag.js';
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
- readonly nodes: readonly AnyNode[];
11
- private readonly parts;
12
- constructor(parent: ParentNode, template: SvgTemplate, registry: Registry, descriptions: readonly TemplateDescription[]);
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;AAChD,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;AAExD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,qBAAa,gBAAgB;IAOzB,QAAQ,CAAC,QAAQ,EAAE,WAAW;IANhC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAE3C,YACE,MAAM,EAAE,UAAU,EACT,QAAQ,EAAE,WAAW,EAC9B,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,SAAS,mBAAmB,EAAE,EAW7C;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,MAAM,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAelC;IAED,OAAO,IAAI,IAAI,CAEd;IAED,OAAO,CAAC,WAAW;IA2BnB,OAAO,CAAC,IAAI;CAMb;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,CAoB9C;CACF"}
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"}