nodality 1.3.9 → 1.3.11

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 (283) hide show
  1. package/dist/animator.cjs.js +1 -1
  2. package/dist/animator.cjs.js.LICENSE.txt +1 -1
  3. package/dist/animator.esm.js +1 -1
  4. package/dist/animator.esm.js.LICENSE.txt +1 -1
  5. package/dist/audionew.cjs.js +1 -1
  6. package/dist/audionew.cjs.js.LICENSE.txt +1 -1
  7. package/dist/audionew.esm.js +1 -1
  8. package/dist/audionew.esm.js.LICENSE.txt +1 -1
  9. package/dist/base.cjs.js +1 -1
  10. package/dist/base.cjs.js.LICENSE.txt +1 -1
  11. package/dist/base.esm.js +1 -1
  12. package/dist/base.esm.js.LICENSE.txt +1 -1
  13. package/dist/beta-desktop-bar.cjs.js +1 -1
  14. package/dist/beta-desktop-bar.cjs.js.LICENSE.txt +1 -1
  15. package/dist/beta-desktop-bar.esm.js +1 -1
  16. package/dist/beta-desktop-bar.esm.js.LICENSE.txt +1 -1
  17. package/dist/beta-mobile-bar.cjs.js +1 -1
  18. package/dist/beta-mobile-bar.cjs.js.LICENSE.txt +1 -1
  19. package/dist/beta-mobile-bar.esm.js +1 -1
  20. package/dist/beta-mobile-bar.esm.js.LICENSE.txt +1 -1
  21. package/dist/bundle.umd.js +1 -1
  22. package/dist/bundle.umd.js.LICENSE.txt +1 -1
  23. package/dist/button.cjs.js +1 -1
  24. package/dist/button.cjs.js.LICENSE.txt +1 -1
  25. package/dist/button.esm.js +1 -1
  26. package/dist/button.esm.js.LICENSE.txt +1 -1
  27. package/dist/card-getter.cjs.js.LICENSE.txt +1 -1
  28. package/dist/card-getter.esm.js.LICENSE.txt +1 -1
  29. package/dist/center.cjs.js +1 -1
  30. package/dist/center.cjs.js.LICENSE.txt +1 -1
  31. package/dist/center.esm.js +1 -1
  32. package/dist/center.esm.js.LICENSE.txt +1 -1
  33. package/dist/checkbox.cjs.js +1 -1
  34. package/dist/checkbox.cjs.js.LICENSE.txt +1 -1
  35. package/dist/checkbox.esm.js +1 -1
  36. package/dist/checkbox.esm.js.LICENSE.txt +1 -1
  37. package/dist/code.cjs.js +1 -1
  38. package/dist/code.cjs.js.LICENSE.txt +1 -1
  39. package/dist/code.esm.js +1 -1
  40. package/dist/code.esm.js.LICENSE.txt +1 -1
  41. package/dist/container.cjs.js +1 -1
  42. package/dist/container.cjs.js.LICENSE.txt +1 -1
  43. package/dist/container.esm.js +1 -1
  44. package/dist/container.esm.js.LICENSE.txt +1 -1
  45. package/dist/data-list.cjs.js.LICENSE.txt +1 -1
  46. package/dist/data-list.esm.js.LICENSE.txt +1 -1
  47. package/dist/designer.cjs.js +1 -1
  48. package/dist/designer.cjs.js.LICENSE.txt +1 -1
  49. package/dist/designer.esm.js +1 -1
  50. package/dist/designer.esm.js.LICENSE.txt +1 -1
  51. package/dist/element-mapper.cjs.js +1 -1
  52. package/dist/element-mapper.cjs.js.LICENSE.txt +1 -1
  53. package/dist/element-mapper.esm.js +1 -1
  54. package/dist/element-mapper.esm.js.LICENSE.txt +1 -1
  55. package/dist/finalresult.esm.js +1 -1
  56. package/dist/finalresult.esm.js.LICENSE.txt +1 -1
  57. package/dist/flex-card.cjs.js +1 -1
  58. package/dist/flex-card.cjs.js.LICENSE.txt +1 -1
  59. package/dist/flex-card.esm.js +1 -1
  60. package/dist/flex-card.esm.js.LICENSE.txt +1 -1
  61. package/dist/flex-grid.cjs.js +1 -1
  62. package/dist/flex-grid.cjs.js.LICENSE.txt +1 -1
  63. package/dist/flex-grid.esm.js +1 -1
  64. package/dist/flex-grid.esm.js.LICENSE.txt +1 -1
  65. package/dist/flex-row.cjs.js +1 -1
  66. package/dist/flex-row.cjs.js.LICENSE.txt +1 -1
  67. package/dist/flex-row.esm.js +1 -1
  68. package/dist/flex-row.esm.js.LICENSE.txt +1 -1
  69. package/dist/floating-input.cjs.js +1 -1
  70. package/dist/floating-input.cjs.js.LICENSE.txt +1 -1
  71. package/dist/floating-input.esm.js +1 -1
  72. package/dist/floating-input.esm.js.LICENSE.txt +1 -1
  73. package/dist/free.cjs.js +1 -1
  74. package/dist/free.cjs.js.LICENSE.txt +1 -1
  75. package/dist/free.esm.js +1 -1
  76. package/dist/free.esm.js.LICENSE.txt +1 -1
  77. package/dist/horizontal-scroller.cjs.js.LICENSE.txt +1 -1
  78. package/dist/horizontal-scroller.esm.js.LICENSE.txt +1 -1
  79. package/dist/image-picker.cjs.js +1 -1
  80. package/dist/image-picker.cjs.js.LICENSE.txt +1 -1
  81. package/dist/image-picker.esm.js +1 -1
  82. package/dist/image-picker.esm.js.LICENSE.txt +1 -1
  83. package/dist/image.cjs.js +1 -1
  84. package/dist/image.cjs.js.LICENSE.txt +1 -1
  85. package/dist/image.esm.js +1 -1
  86. package/dist/image.esm.js.LICENSE.txt +1 -1
  87. package/dist/index.cjs.js +1 -1
  88. package/dist/index.cjs.js.LICENSE.txt +1 -1
  89. package/dist/index.d.ts +1 -1
  90. package/dist/index.esm.js +1 -1
  91. package/dist/index.esm.js.LICENSE.txt +1 -1
  92. package/dist/keyframe-animation.cjs.js.LICENSE.txt +1 -1
  93. package/dist/keyframe-animation.esm.js.LICENSE.txt +1 -1
  94. package/dist/link-getter.cjs.js +1 -1
  95. package/dist/link-getter.cjs.js.LICENSE.txt +1 -1
  96. package/dist/link-getter.esm.js +1 -1
  97. package/dist/link-getter.esm.js.LICENSE.txt +1 -1
  98. package/dist/link.cjs.js +1 -1
  99. package/dist/link.cjs.js.LICENSE.txt +1 -1
  100. package/dist/link.esm.js +1 -1
  101. package/dist/link.esm.js.LICENSE.txt +1 -1
  102. package/dist/meta-adder.cjs.js +1 -1
  103. package/dist/meta-adder.cjs.js.LICENSE.txt +1 -1
  104. package/dist/meta-adder.esm.js +1 -1
  105. package/dist/meta-adder.esm.js.LICENSE.txt +1 -1
  106. package/dist/modal-2025.cjs.js +1 -1
  107. package/dist/modal-2025.cjs.js.LICENSE.txt +1 -1
  108. package/dist/modal-2025.esm.js +1 -1
  109. package/dist/modal-2025.esm.js.LICENSE.txt +1 -1
  110. package/dist/multiswitcher.cjs.js +1 -1
  111. package/dist/multiswitcher.cjs.js.LICENSE.txt +1 -1
  112. package/dist/multiswitcher.esm.js +1 -1
  113. package/dist/multiswitcher.esm.js.LICENSE.txt +1 -1
  114. package/dist/new-nav-bar.cjs.js +1 -1
  115. package/dist/new-nav-bar.cjs.js.LICENSE.txt +1 -1
  116. package/dist/new-nav-bar.esm.js +1 -1
  117. package/dist/new-nav-bar.esm.js.LICENSE.txt +1 -1
  118. package/dist/picker.cjs.js +1 -1
  119. package/dist/picker.cjs.js.LICENSE.txt +1 -1
  120. package/dist/picker.esm.js +1 -1
  121. package/dist/picker.esm.js.LICENSE.txt +1 -1
  122. package/dist/progress.cjs.js +1 -1
  123. package/dist/progress.cjs.js.LICENSE.txt +1 -1
  124. package/dist/progress.esm.js +1 -1
  125. package/dist/progress.esm.js.LICENSE.txt +1 -1
  126. package/dist/radio.cjs.js.LICENSE.txt +1 -1
  127. package/dist/radio.esm.js.LICENSE.txt +1 -1
  128. package/dist/range.cjs.js.LICENSE.txt +1 -1
  129. package/dist/range.esm.js.LICENSE.txt +1 -1
  130. package/dist/scroll-video.cjs.js.LICENSE.txt +1 -1
  131. package/dist/scroll-video.esm.js.LICENSE.txt +1 -1
  132. package/dist/side-bar.cjs.js +1 -1
  133. package/dist/side-bar.cjs.js.LICENSE.txt +1 -1
  134. package/dist/side-bar.esm.js +1 -1
  135. package/dist/side-bar.esm.js.LICENSE.txt +1 -1
  136. package/dist/side-nav-bar.cjs.js +1 -1
  137. package/dist/side-nav-bar.cjs.js.LICENSE.txt +1 -1
  138. package/dist/side-nav-bar.esm.js +1 -1
  139. package/dist/side-nav-bar.esm.js.LICENSE.txt +1 -1
  140. package/dist/simple-bar.cjs.js +1 -1
  141. package/dist/simple-bar.cjs.js.LICENSE.txt +1 -1
  142. package/dist/simple-bar.esm.js +1 -1
  143. package/dist/simple-bar.esm.js.LICENSE.txt +1 -1
  144. package/dist/slider-2025.cjs.js +1 -1
  145. package/dist/slider-2025.cjs.js.LICENSE.txt +1 -1
  146. package/dist/slider-2025.esm.js +1 -1
  147. package/dist/slider-2025.esm.js.LICENSE.txt +1 -1
  148. package/dist/spacer.cjs.js +1 -1
  149. package/dist/spacer.cjs.js.LICENSE.txt +1 -1
  150. package/dist/spacer.esm.js +1 -1
  151. package/dist/spacer.esm.js.LICENSE.txt +1 -1
  152. package/dist/stack.cjs.js +1 -1
  153. package/dist/stack.cjs.js.LICENSE.txt +1 -1
  154. package/dist/stack.esm.js +1 -1
  155. package/dist/stack.esm.js.LICENSE.txt +1 -1
  156. package/dist/stacker.cjs.js.LICENSE.txt +1 -1
  157. package/dist/stacker.esm.js.LICENSE.txt +1 -1
  158. package/dist/table.cjs.js +1 -1
  159. package/dist/table.cjs.js.LICENSE.txt +1 -1
  160. package/dist/table.esm.js +1 -1
  161. package/dist/table.esm.js.LICENSE.txt +1 -1
  162. package/dist/text-field.cjs.js +1 -1
  163. package/dist/text-field.cjs.js.LICENSE.txt +1 -1
  164. package/dist/text-field.esm.js +1 -1
  165. package/dist/text-field.esm.js.LICENSE.txt +1 -1
  166. package/dist/text.cjs.js +1 -1
  167. package/dist/text.cjs.js.LICENSE.txt +1 -1
  168. package/dist/text.esm.js +1 -1
  169. package/dist/text.esm.js.LICENSE.txt +1 -1
  170. package/dist/theme.cjs.js.LICENSE.txt +1 -1
  171. package/dist/theme.esm.js.LICENSE.txt +1 -1
  172. package/dist/transform-anim.cjs.js.LICENSE.txt +1 -1
  173. package/dist/transform-anim.esm.js.LICENSE.txt +1 -1
  174. package/dist/ulist.cjs.js +1 -1
  175. package/dist/ulist.cjs.js.LICENSE.txt +1 -1
  176. package/dist/ulist.esm.js +1 -1
  177. package/dist/ulist.esm.js.LICENSE.txt +1 -1
  178. package/dist/video.cjs.js +1 -1
  179. package/dist/video.cjs.js.LICENSE.txt +1 -1
  180. package/dist/video.esm.js +1 -1
  181. package/dist/video.esm.js.LICENSE.txt +1 -1
  182. package/dist/wrap.cjs.js +1 -1
  183. package/dist/wrap.cjs.js.LICENSE.txt +1 -1
  184. package/dist/wrap.esm.js +1 -1
  185. package/dist/wrap.esm.js.LICENSE.txt +1 -1
  186. package/dist/zoom-card.cjs.js +1 -1
  187. package/dist/zoom-card.cjs.js.LICENSE.txt +1 -1
  188. package/dist/zoom-card.esm.js +1 -1
  189. package/dist/zoom-card.esm.js.LICENSE.txt +1 -1
  190. package/layout/animator.js +44 -21
  191. package/layout/audio.js +1 -1
  192. package/layout/audionew.js +1 -1
  193. package/layout/base.js +1 -1
  194. package/layout/beta-desktop-bar.js +1 -1
  195. package/layout/beta-mobile-bar.js +1 -1
  196. package/layout/button.js +1 -1
  197. package/layout/center.js +1 -1
  198. package/layout/checkbox.js +1 -1
  199. package/layout/circle.js +1 -1
  200. package/layout/code.js +1 -1
  201. package/layout/container.js +1 -1
  202. package/layout/dropdown-2025.js +1 -1
  203. package/layout/flex-card.js +1 -1
  204. package/layout/flex-grid.js +1 -1
  205. package/layout/flex-row.js +1 -1
  206. package/layout/form-components/custom.js +1 -1
  207. package/layout/form-components/data-list.js +1 -1
  208. package/layout/form-components/floating-input.js +1 -1
  209. package/layout/form-components/form-all.js +1 -1
  210. package/layout/form-components/form.js +1 -1
  211. package/layout/form-components/image-picker.js +1 -1
  212. package/layout/form-components/picker.js +1 -1
  213. package/layout/form-components/radio.js +1 -1
  214. package/layout/form-components/radiogroup.js +1 -1
  215. package/layout/form-components/range.js +1 -1
  216. package/layout/free.js +1 -1
  217. package/layout/grid-overlay.js +19 -19
  218. package/layout/grid-switcher.js +1 -1
  219. package/layout/grid.js +1 -1
  220. package/layout/horizontal-scroller.js +1 -1
  221. package/layout/image.js +1 -1
  222. package/layout/index.js +1 -1
  223. package/layout/link.js +1 -1
  224. package/layout/list.js +1 -1
  225. package/layout/meta-adder.js +1 -1
  226. package/layout/modal-2025.js +1 -1
  227. package/layout/morph.js +1 -1
  228. package/layout/multiswitcher.js +1 -1
  229. package/layout/nav-bar.js +1 -1
  230. package/layout/nav-factor/custom-div.js +1 -1
  231. package/layout/new-nav-bar.js +1 -1
  232. package/layout/polygon.js +1 -1
  233. package/layout/prerender-site.js +1 -1
  234. package/layout/prerender.js +1 -1
  235. package/layout/progress.js +1 -1
  236. package/layout/row.js +1 -1
  237. package/layout/scroll-video.js +1 -1
  238. package/layout/side-bar.js +1 -1
  239. package/layout/side-nav-bar.js +1 -1
  240. package/layout/simple-bar.js +1 -1
  241. package/layout/slider-2025.js +1 -1
  242. package/layout/spacer.js +1 -1
  243. package/layout/stack.js +1 -1
  244. package/layout/svg.js +1 -1
  245. package/layout/switcher.js +1 -1
  246. package/layout/table.js +1 -1
  247. package/layout/text-field.js +1 -1
  248. package/layout/text.js +1 -1
  249. package/layout/ulist.js +1 -1
  250. package/layout/video.js +24 -21
  251. package/layout/wrap.js +1 -1
  252. package/layout/zoom-card.js +1 -1
  253. package/lib/agent-surface.js +1 -1
  254. package/lib/card-getter.js +1 -1
  255. package/lib/check-page.js +1 -1
  256. package/lib/codegen.js +1 -1
  257. package/lib/data.js +1 -1
  258. package/lib/designer.js +1 -1
  259. package/lib/element-mapper.js +83 -13
  260. package/lib/element-params.generated.js +13 -2
  261. package/lib/grid-geometry.js +1 -1
  262. package/lib/keyframe-animation.js +1 -1
  263. package/lib/link-getter.js +1 -1
  264. package/lib/morph-node.js +1 -1
  265. package/lib/normalize-spec.js +1 -1
  266. package/lib/parse-html.js +1 -1
  267. package/lib/raster-inspect.js +1 -1
  268. package/lib/raster-ops.js +1 -1
  269. package/lib/raster-presets.js +1 -1
  270. package/lib/resolve-refs.js +1 -1
  271. package/lib/scroll-video.js +1 -1
  272. package/lib/seo.js +1 -1
  273. package/lib/stacker.js +1 -1
  274. package/lib/suggest.js +1 -1
  275. package/lib/theme.js +1 -1
  276. package/lib/transform-anim.js +1 -1
  277. package/lib/transition.js +1 -1
  278. package/lib/validate-nodes.js +146 -4
  279. package/lib/webmcp-adapter.js +1 -1
  280. package/package.json +1 -1
  281. package/schema.json +1391 -2263
  282. package/scripts/generate-schema.mjs +135 -15
  283. package/skills/nodality/SKILL.md +15 -0
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.9
2
+ * nodality v1.3.11
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -176,7 +176,41 @@ function warnWrongSlot(el) {
176
176
  }
177
177
 
178
178
  class ElementMapper { // 22:09:58 04/11/2024
179
- static mapType(obj) {
179
+ // Every element may carry an `id`. It is the joint between E and N — what
180
+ // `target`, `parse` and the agent surface all name — and applying it inside
181
+ // each of thirty-six mappers means thirty-six chances to forget. Two were
182
+ // already forgotten: `video` and `table` both accepted an id, advertised it
183
+ // in their schema, and rendered a node without one. Nothing failed; the
184
+ // element simply could not be named. So it is applied HERE, once, after
185
+ // dispatch, and a component that sets its own id keeps it.
186
+ static mapType(obj) {
187
+ const built = this.dispatchType(obj);
188
+ const id = obj && obj.el && obj.el.id;
189
+ if (id != null && id !== "") {
190
+ // `res` on almost every component; `formElement` on Form, which
191
+ // predates the convention. A mapper that returns emitted CODE
192
+ // rather than an instance (cards, copy) carries the id in the
193
+ // source it emits, and there is no node here to write to.
194
+ // Four conventions for "the node this component owns": `res` on
195
+ // most, `formElement` on Form, `el` on RadioGroup and
196
+ // FilePickera, `container` on Switcher. A mapper that returns
197
+ // emitted CODE rather than an instance (cards, copy) carries the
198
+ // id in the source it emits, and there is no node here to write.
199
+ const node = built && (built.res || built.formElement || built.el || built.container);
200
+ if (node && typeof node.setAttribute === "function") {
201
+ const current = node.getAttribute("id");
202
+ // `#hero` and `hero` name the same element everywhere else, so
203
+ // the attribute is written without the hash whether the id
204
+ // arrived here or was set by the component itself. An
205
+ // attribute spelled "#hero" matches no selector.
206
+ if (!current) node.setAttribute("id", String(id).replace(/^#/, ""));
207
+ else if (current.startsWith("#")) node.setAttribute("id", current.slice(1));
208
+ }
209
+ }
210
+ return built;
211
+ }
212
+
213
+ static dispatchType(obj) {
180
214
  warnWrongSlot(obj && obj.el);
181
215
  // console.log("LOBJ");
182
216
  // console.log(obj);
@@ -305,7 +339,7 @@ class ElementMapper { // 22:09:58 04/11/2024
305
339
  span: this.filtero("span", el.id, obj.customOptions),
306
340
  backgroundOp: this.filtero("background", el.id, obj.customOptions),
307
341
  marginOp: this.filtero("margin", el.id, obj.customOptions),
308
- transform: this.filtero("transform", el.id, obj.customOptions),
342
+ transform: this.filtero("transform", el.id, obj.customOptions) ?? el.transform,
309
343
  filtera: this.filtero("filter", el.id, obj.customOptions),
310
344
  raster: this.filteroRaster(el.id, obj.customOptions),
311
345
  });
@@ -343,7 +377,10 @@ class ElementMapper { // 22:09:58 04/11/2024
343
377
  span: this.filtero("span", el.id, obj.customOptions),
344
378
  backgroundOp: this.filtero("background", el.id, obj.customOptions),
345
379
  marginOp: this.filtero("margin", el.id, obj.customOptions),
346
- transform: this.filtero("transform", el.id, obj.customOptions),
380
+ // A transform design node wins; without one the element's
381
+ // own CSS string is used. Previously the lookup overwrote it
382
+ // with undefined, so `transform` on an element was dropped.
383
+ transform: this.filtero("transform", el.id, obj.customOptions) ?? el.transform,
347
384
  filtera: this.filtero("filter", el.id, obj.customOptions),
348
385
  raster: this.filteroRaster(el.id, obj.customOptions),
349
386
  }).items([
@@ -388,7 +425,10 @@ new Text("row.").set({
388
425
  span: this.filtero("span", el.id, obj.customOptions),
389
426
  backgroundOp: this.filtero("background", el.id, obj.customOptions),
390
427
  marginOp: this.filtero("margin", el.id, obj.customOptions),
391
- transform: this.filtero("transform", el.id, obj.customOptions),
428
+ // A transform design node wins; without one the element's
429
+ // own CSS string is used. Previously the lookup overwrote it
430
+ // with undefined, so `transform` on an element was dropped.
431
+ transform: this.filtero("transform", el.id, obj.customOptions) ?? el.transform,
392
432
  filtera: this.filtero("filter", el.id, obj.customOptions),
393
433
  raster: this.filteroRaster(el.id, obj.customOptions),
394
434
  pad: [
@@ -465,6 +505,8 @@ animation: {
465
505
  },
466
506
  `;
467
507
 
508
+ // The id below was hardcoded to "#first", so every copy element on a page
509
+ // emitted the same id and none could be targeted individually.
468
510
  return `new Wrapper()
469
511
  .set({
470
512
  width: "${minSize}px",
@@ -473,7 +515,7 @@ animation: {
473
515
  justifyContent: "center",
474
516
  alignItems: "center",
475
517
  position: "absolute",
476
- id: "#first",
518
+ id: "${obj.el.id ? String(obj.el.id).replace(/^#/, "") : "first"}",
477
519
  scale: 0.3,
478
520
  ${ft?.animation ? animation : ""}${
479
521
  // Wrapper routes its options through commonMethods(), so a raster
@@ -1039,6 +1081,10 @@ if (obj.el.dropdown){
1039
1081
 
1040
1082
  const navBar = new Switcher()
1041
1083
  .set({
1084
+ // A Switcher applies its id when it renders, because its box
1085
+ // does not exist before then. Omitting it here is why a `nav`
1086
+ // element accepted an id and rendered a bar without one.
1087
+ id: obj.el && obj.el.id,
1042
1088
  breakpoints: [ // 172800 almost
1043
1089
  {
1044
1090
  at: "0px", view: new MobileBar().set({
@@ -1647,7 +1693,10 @@ return new Circle()
1647
1693
  span: this.filtero("span", el.id, obj.customOptions),
1648
1694
  backgroundOp: this.filtero("background", el.id, obj.customOptions),
1649
1695
  marginOp: this.filtero("margin", el.id, obj.customOptions),
1650
- transform: this.filtero("transform", el.id, obj.customOptions),
1696
+ // A transform design node wins; without one the element's
1697
+ // own CSS string is used. Previously the lookup overwrote it
1698
+ // with undefined, so `transform` on an element was dropped.
1699
+ transform: this.filtero("transform", el.id, obj.customOptions) ?? el.transform,
1651
1700
  filtera: this.filtero("filter", el.id, obj.customOptions),
1652
1701
  raster: this.filteroRaster(el.id, obj.customOptions),
1653
1702
  })
@@ -1662,7 +1711,9 @@ return new Circle()
1662
1711
 
1663
1712
  const count = obj.el.sides ?? 7;
1664
1713
 
1665
- let elo = new Polygon({ id: "hex" })
1714
+ // Was `{ id: "hex" }` hardcoded, so every polygon on a page rendered the
1715
+ // same id and none could be targeted individually.
1716
+ let elo = new Polygon({ id: el.id ? String(el.id).replace(/^#/, "") : "hex" })
1666
1717
  .set({
1667
1718
  sides: count,
1668
1719
  size: 300,
@@ -1674,7 +1725,10 @@ let elo = new Polygon({ id: "hex" })
1674
1725
  span: this.filtero("span", el.id, obj.customOptions),
1675
1726
  backgroundOp: this.filtero("background", el.id, obj.customOptions),
1676
1727
  marginOp: this.filtero("margin", el.id, obj.customOptions),
1677
- transform: this.filtero("transform", el.id, obj.customOptions),
1728
+ // A transform design node wins; without one the element's
1729
+ // own CSS string is used. Previously the lookup overwrote it
1730
+ // with undefined, so `transform` on an element was dropped.
1731
+ transform: this.filtero("transform", el.id, obj.customOptions) ?? el.transform,
1678
1732
  filtera: this.filtero("filter", el.id, obj.customOptions),
1679
1733
  raster: this.filteroRaster(el.id, obj.customOptions),
1680
1734
  })
@@ -1718,6 +1772,13 @@ let elo = new Polygon({ id: "hex" })
1718
1772
  id: el.id,
1719
1773
  class: el.class,
1720
1774
  color: el.color,
1775
+ // Deliberately NOT `el.size ?? …`. In Text the step picks the
1776
+ // TAG as well as the font size, so honouring an explicit
1777
+ // `size` turned `{type:"h2", size:"S3"}` into an <h3> and
1778
+ // quietly changed the document outline. The element type owns
1779
+ // the step here; `tag` is the option for choosing the heading
1780
+ // level independently. `size` is therefore not settable on a
1781
+ // text element, which the schema now says.
1721
1782
  size: this.getElType(el.type), // update 23/07/2025
1722
1783
  //@ tag: Heading level to render, independent of the type's size.
1723
1784
  // Without this the option exists on the component and is not
@@ -1735,7 +1796,10 @@ let elo = new Polygon({ id: "hex" })
1735
1796
  span: this.filtero("span", el.id, obj.customOptions),
1736
1797
  backgroundOp: this.filtero("background", el.id, obj.customOptions),
1737
1798
  marginOp: this.filtero("margin", el.id, obj.customOptions),
1738
- transform: this.filtero("transform", el.id, obj.customOptions),
1799
+ // A transform design node wins; without one the element's
1800
+ // own CSS string is used. Previously the lookup overwrote it
1801
+ // with undefined, so `transform` on an element was dropped.
1802
+ transform: this.filtero("transform", el.id, obj.customOptions) ?? el.transform,
1739
1803
  filtera: this.filtero("filter", el.id, obj.customOptions),
1740
1804
  raster: this.filteroRaster(el.id, obj.customOptions),
1741
1805
  // The caller's own breakpoints. This used to REPLACE them
@@ -1811,7 +1875,7 @@ let elo = new Polygon({ id: "hex" })
1811
1875
  // re["index"] = obj.i + "", // add other options here
1812
1876
 
1813
1877
  // transform: this.filtero("transform", el.id, obj.customOptions),
1814
- re["transform"] = this.filtero("transform", obj.el.id, obj.customOptions),
1878
+ re["transform"] = this.filtero("transform", obj.el.id, obj.customOptions) ?? obj.el.transform,
1815
1879
  re["shadow"] = this.filtero("shadow", obj.el.id, obj.customOptions),//customOptions.filter(l => l.op.name === "shadow")[0],
1816
1880
  re["gradient"] = this.filtero("gradient", obj.el.id, obj.customOptions),
1817
1881
  re["blast"] = this.filtero("blast", obj.el.id, obj.customOptions),
@@ -2244,7 +2308,10 @@ static form(obj){
2244
2308
  gradient: this.filtero("gradient", el.id, obj.customOptions),
2245
2309
  animation: this.filtero("animation", el.id, obj.customOptions),
2246
2310
  shadow: this.filtero("shadow", el.id, obj.customOptions),
2247
- transform: this.filtero("transform", el.id, obj.customOptions),
2311
+ // A transform design node wins; without one the element's
2312
+ // own CSS string is used. Previously the lookup overwrote it
2313
+ // with undefined, so `transform` on an element was dropped.
2314
+ transform: this.filtero("transform", el.id, obj.customOptions) ?? el.transform,
2248
2315
  filtera: this.filtero("filter", el.id, obj.customOptions),
2249
2316
  raster: this.filteroRaster(el.id, obj.customOptions),
2250
2317
  });
@@ -2290,7 +2357,10 @@ static form(obj){
2290
2357
  gradient: this.filtero("gradient", el.id, obj.customOptions),
2291
2358
  animation: this.filtero("animation", el.id, obj.customOptions),
2292
2359
  shadow: this.filtero("shadow", el.id, obj.customOptions),
2293
- transform: this.filtero("transform", el.id, obj.customOptions),
2360
+ // A transform design node wins; without one the element's
2361
+ // own CSS string is used. Previously the lookup overwrote it
2362
+ // with undefined, so `transform` on an element was dropped.
2363
+ transform: this.filtero("transform", el.id, obj.customOptions) ?? el.transform,
2294
2364
  filtera: this.filtero("filter", el.id, obj.customOptions),
2295
2365
  raster: this.filteroRaster(el.id, obj.customOptions),
2296
2366
  });
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.9
2
+ * nodality v1.3.11
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -8,4 +8,15 @@
8
8
  // Every parameter name any element type reads, recovered from source.
9
9
  // Used for near-miss typo detection in validate-nodes.js. A drift test
10
10
  // regenerates this and fails if it differs, so it cannot rot silently.
11
- export const ELEMENT_PARAM_NAMES = ["absolute","accept","action","align","alignIts","alignTo","aligns","alt","animate","animation","area","arrayMargin","arrayPadding","as","aspectRatio","at","auto","autoplay","backTo","background","backgroundCard","backgroundColor","backgroundOp","behaviour","blast","blastData","block","bold","border","borderObj","borderObja","borderRadius","brand","breakWord","breakpoint","breakpoints","cellAlign","cellPadding","center","centerColumn","centerSelf","centered","checkedBackgroundColor","child","children","clampc","class","clipPath","code","colat","color","column","columns","contentWidth","controls","cursor","customAlign","customJustify","customStyle","data","decoding","decorative","diameter","disp","dropdown","em","exact","fetchPriority","filter","filtera","fitContent","fixMobileTap","fixed","flex","flexCenter","flexDir","fluid","fluidc","font","fontSize","frame","ga","gap","gpos","gradient","hamColour","hamburgerColour","headStyle","height","hideField","hideOverflow","hover","icon","id","img","index","initLetter","inline","inpad","inputType","inset","isBackground","isFull","isHidden","isLink","isNavA","italic","items","justifo","justify","keySet","kind","label","layout","lazy","left","length","letterSpacing","lineOpacity","lineWidth","link","loading","loop","map","mar","margin","marginOp","markSize","marks","maxHeight","maxWidth","mboth","method","minHeight","mobile","multiple","muted","name","new","nowrap","objectFit","objectPosition","offcanvas","okayColor","onScroll","onTap","opacity","overflow","owrap","pad","padding","placeholder","playsinline","position","positions","poster","preffersId","preload","radius","ranges","raster","react","readouts","removeDecoration","required","resmar","respad","responsive","resprop","rounded","rows","scale","sequence","shadow","sides","simpleBorder","simpleCenter","size","sizes","sources","span","srcset","sticky","stretch","stroke","style","stype","svg","tag","tags","templateCols","text","theme","tint","title","toColumn","top","transform","transition","type","uppercase","url","useBrightness","value","vtn","weight","width","wrap","x","y","zIndex"];
11
+ export const ELEMENT_PARAM_NAMES = ["absolute","accept","action","align","alignItems","alignIts","alignTo","aligns","alt","animate","animation","area","ariaLabel","arrayMargin","arrayPadding","as","aspectRatio","at","auto","autoplay","backTo","background","backgroundCard","backgroundColor","backgroundOp","barPad","behaviour","blast","blastData","block","bold","border","borderBottom","borderObj","borderObja","brand","breakWord","breakpoint","breakpoints","center","centerColumn","centerSelf","centered","checkedBackgroundColor","child","children","clampc","class","clipPath","colat","color","column","columns","contentWidth","controls","cursor","customAlign","customJustify","customStyle","data","decoding","decorative","desktopSize","diameter","disp","dropdown","els","em","exact","fetchPriority","filter","filtera","fitContent","fixMobileTap","fixed","flex","flexCenter","flexDir","fluid","fluidc","font","fontSize","frame","ga","gap","gpos","gradient","hamColour","hamburgerColour","hamburgerInset","height","hideField","hideOverflow","hover","icon","id","img","index","initLetter","inline","inpad","inputType","inset","isBackground","isFull","isHidden","isLink","isNavA","isSide","italic","items","justifo","justify","keySet","kind","label","layout","lazy","left","length","letterSpacing","lineOpacity","lineWidth","link","loading","loop","map","mar","margin","marginOp","markSize","marks","maxHeight","maxWidth","mboth","method","minHeight","mobile","mobileSize","multiple","muted","name","new","nowrap","objectFit","objectPosition","offcanvas","okayColor","onScroll","onTap","opacity","openColor","overflow","owrap","pad","padding","placeholder","playsinline","position","positions","poster","preffersId","preload","radius","ranges","raster","react","readouts","removeDecoration","required","resmar","respad","responsive","resprop","rounded","rows","scale","sequence","shadow","sides","simpleBorder","simpleCenter","size","sizes","sources","spacing","span","srcset","sticky","stretch","stroke","stype","svg","tag","tags","templateCols","text","theme","tint","title","toColumn","top","transform","transition","type","uppercase","url","useBrightness","value","vtn","weight","width","wrap","x","y","zIndex"];
12
+
13
+ // Per-type vocabulary. The union above answers "is this a real parameter
14
+ // anywhere"; this answers "does THIS type accept it", which is what a page
15
+ // actually needs to know — writing `keySet` on a `table` is a name the
16
+ // union knows and the type ignores.
17
+ export const ELEMENT_PARAMS_BY_TYPE = {"h1":["absolute","align","alt","animation","area","background","backgroundOp","block","border","borderObj","breakWord","center","clampc","class","color","cursor","em","filtera","flex","fluid","fluidc","font","gpos","gradient","height","icon","id","index","initLetter","italic","keySet","layout","left","mar","marginOp","maxWidth","onScroll","onTap","preffersId","raster","removeDecoration","responsive","resprop","shadow","size","span","stroke","tag","text","top","transform","type","url","value","vtn","width"],"h2":["absolute","align","alt","animation","area","background","backgroundOp","block","border","borderObj","breakWord","center","clampc","class","color","cursor","em","filtera","flex","fluid","fluidc","font","gpos","gradient","height","icon","id","index","initLetter","italic","keySet","layout","left","mar","marginOp","maxWidth","onScroll","onTap","preffersId","raster","removeDecoration","responsive","resprop","shadow","size","span","stroke","tag","text","top","transform","type","url","value","vtn","width"],"h3":["absolute","align","alt","animation","area","background","backgroundOp","block","border","borderObj","breakWord","center","clampc","class","color","cursor","em","filtera","flex","fluid","fluidc","font","gpos","gradient","height","icon","id","index","initLetter","italic","keySet","layout","left","mar","marginOp","maxWidth","onScroll","onTap","preffersId","raster","removeDecoration","responsive","resprop","shadow","size","span","stroke","tag","text","top","transform","type","url","value","vtn","width"],"h4":["absolute","align","alt","animation","area","background","backgroundOp","block","border","borderObj","breakWord","center","clampc","class","color","cursor","em","filtera","flex","fluid","fluidc","font","gpos","gradient","height","icon","id","index","initLetter","italic","keySet","layout","left","mar","marginOp","maxWidth","onScroll","onTap","preffersId","raster","removeDecoration","responsive","resprop","shadow","size","span","stroke","tag","text","top","transform","type","url","value","vtn","width"],"h5":["absolute","align","alt","animation","area","background","backgroundOp","block","border","borderObj","breakWord","center","clampc","class","color","cursor","em","filtera","flex","fluid","fluidc","font","gpos","gradient","height","icon","id","index","initLetter","italic","keySet","layout","left","mar","marginOp","maxWidth","onScroll","onTap","preffersId","raster","removeDecoration","responsive","resprop","shadow","size","span","stroke","tag","text","top","transform","type","url","value","vtn","width"],"h6":["absolute","align","alt","animation","area","background","backgroundOp","block","border","borderObj","breakWord","center","clampc","class","color","cursor","em","filtera","flex","fluid","fluidc","font","gpos","gradient","height","icon","id","index","initLetter","italic","keySet","layout","left","mar","marginOp","maxWidth","onScroll","onTap","preffersId","raster","removeDecoration","responsive","resprop","shadow","size","span","stroke","tag","text","top","transform","type","url","value","vtn","width"],"p":["absolute","align","alt","animation","area","background","backgroundOp","block","border","borderObj","breakWord","center","clampc","class","color","cursor","em","filtera","flex","fluid","fluidc","font","gpos","gradient","height","icon","id","index","initLetter","italic","keySet","layout","left","mar","marginOp","maxWidth","onScroll","onTap","preffersId","raster","removeDecoration","responsive","resprop","shadow","size","span","stroke","tag","text","top","transform","type","url","value","vtn","width"],"img":["alt","animation","area","as","at","backgroundOp","centerSelf","class","clipPath","color","decoding","fetchPriority","filtera","fitContent","gpos","gradient","height","id","index","isBackground","isFull","keySet","layout","loading","marginOp","maxWidth","minHeight","objectFit","objectPosition","onScroll","onTap","opacity","radius","resprop","shadow","sizes","span","srcset","stroke","stype","type","url","vtn","width","x","y","zIndex"],"a":["align","animation","background","backgroundOp","blast","blastData","block","bold","border","borderObj","clampc","class","color","data","fixMobileTap","flex","fluidc","font","gradient","hover","icon","id","isNavA","link","mar","marginOp","maxWidth","new","nowrap","onTap","pad","padding","preffersId","radius","rounded","shadow","span","stroke","tags","text","transform","type","url","width"],"cards":["absolute","action","align","alignIts","alt","animation","area","as","at","backTo","background","backgroundCard","backgroundColor","backgroundOp","blast","blastData","block","bold","border","borderObj","borderObja","breakWord","center","centerColumn","centerSelf","checkedBackgroundColor","child","children","clampc","class","clipPath","colat","color","column","cursor","customAlign","customJustify","customStyle","data","decoding","disp","em","fetchPriority","filter","filtera","fitContent","fixMobileTap","flex","flexCenter","flexDir","fluid","fluidc","font","ga","gap","gpos","gradient","height","hideOverflow","hover","icon","id","index","initLetter","inpad","isBackground","isFull","isHidden","isLink","isNavA","italic","items","keySet","kind","label","layout","left","loading","map","mar","marginOp","maxHeight","maxWidth","mboth","method","minHeight","name","new","nowrap","objectFit","objectPosition","onScroll","onTap","opacity","overflow","pad","padding","position","preffersId","radius","ranges","raster","react","removeDecoration","resmar","respad","responsive","resprop","rounded","scale","sequence","shadow","simpleBorder","simpleCenter","size","sizes","span","srcset","sticky","stretch","stroke","stype","tag","tags","text","title","top","transform","transition","type","url","useBrightness","vtn","weight","width","wrap","x","y","zIndex"],"free":["els","id","type"],"nav":["absolute","action","align","alignItems","alignIts","alt","animate","animation","area","ariaLabel","as","at","backTo","background","backgroundCard","backgroundColor","backgroundOp","barPad","behaviour","blast","blastData","block","bold","border","borderBottom","borderObj","borderObja","brand","breakWord","breakpoints","center","centerColumn","centerSelf","checkedBackgroundColor","child","children","clampc","class","clipPath","colat","color","column","contentWidth","cursor","customAlign","customJustify","customStyle","data","decoding","desktopSize","diameter","disp","dropdown","els","em","fetchPriority","filter","filtera","fitContent","fixMobileTap","fixed","flex","flexCenter","flexDir","fluid","fluidc","font","ga","gap","gpos","gradient","hamColour","hamburgerColour","hamburgerInset","height","hideOverflow","hover","icon","id","index","initLetter","inline","inpad","isBackground","isFull","isHidden","isLink","isNavA","isSide","italic","items","justify","keySet","kind","label","layout","left","link","loading","map","mar","margin","marginOp","maxHeight","maxWidth","mboth","method","minHeight","mobileSize","name","new","nowrap","objectFit","objectPosition","offcanvas","onScroll","onTap","opacity","openColor","overflow","pad","padding","position","positions","preffersId","radius","ranges","raster","react","removeDecoration","resmar","respad","responsive","resprop","rounded","scale","sequence","shadow","sides","simpleBorder","simpleCenter","size","sizes","spacing","span","srcset","sticky","stretch","stroke","stype","tag","tags","templateCols","text","title","top","transform","transition","type","url","useBrightness","value","vtn","weight","width","wrap","x","y","zIndex"],"sideNav":["absolute","action","align","alignIts","alt","animate","animation","area","as","at","backTo","background","backgroundCard","backgroundColor","backgroundOp","behaviour","blast","blastData","block","bold","border","borderObj","borderObja","breakWord","center","centerColumn","centerSelf","checkedBackgroundColor","child","children","clampc","class","clipPath","colat","color","column","contentWidth","cursor","customAlign","customJustify","customStyle","data","decoding","diameter","disp","dropdown","els","em","fetchPriority","filter","filtera","fitContent","fixMobileTap","fixed","flex","flexCenter","flexDir","fluid","fluidc","font","ga","gap","gpos","gradient","hamColour","height","hideOverflow","hover","icon","id","index","initLetter","inline","inpad","isBackground","isFull","isHidden","isLink","isNavA","italic","items","keySet","kind","label","layout","left","link","loading","map","mar","margin","marginOp","maxHeight","maxWidth","mboth","method","minHeight","name","new","nowrap","objectFit","objectPosition","offcanvas","onScroll","onTap","opacity","overflow","pad","padding","position","positions","preffersId","radius","ranges","raster","react","removeDecoration","resmar","respad","responsive","resprop","rounded","scale","sequence","shadow","sides","simpleBorder","simpleCenter","size","sizes","span","srcset","sticky","stretch","stroke","stype","tag","tags","templateCols","text","title","top","transform","transition","type","url","useBrightness","value","vtn","weight","width","wrap","x","y","zIndex"],"row":["absolute","align","alignIts","alignTo","aligns","alt","animation","area","background","backgroundOp","block","border","borderObj","breakWord","center","children","clampc","class","colat","color","column","cursor","em","filtera","flex","fluid","fluidc","font","gap","gpos","gradient","height","icon","id","index","initLetter","italic","justifo","justify","keySet","layout","left","mar","marginOp","maxWidth","mobile","onScroll","onTap","owrap","padding","position","preffersId","radius","raster","removeDecoration","responsive","shadow","size","span","stroke","tag","toColumn","top","transform","type","url","vtn","width","wrap"],"dropdown":["id","items","label","title","type"],"radio":["color","exact","font","id","items","length","multiple","tint","type"],"input":["background","bold","color","exact","font","id","inputType","label","mar","maxWidth","name","pad","placeholder","radius","required","theme","title","type","weight"],"labelInput":["color","exact","font","id","inputType","label","mar","name","pad","text","title","type"],"filePicker":["accept","background","color","font","hideField","id","index","name","okayColor","radius","title","type"],"picker":["arrayMargin","arrayPadding","background","id","items","label","mar","name","pad","radius","title","type"],"video":["aspectRatio","autoplay","background","controls","decorative","height","id","label","lazy","loop","maxWidth","muted","objectFit","opacity","playsinline","poster","preload","radius","raster","sources","type","url","width"],"audio":["id","type","url"],"multiswitcher":["area","breakpoints","id","type"],"button":["align","auto","background","bold","border","centered","class","color","exact","fluidc","frame","height","id","img","keySet","margin","onTap","padding","radius","resmar","respad","svg","text","type","url","weight","width"],"form":["action","children","id","method","type"],"checkbox":["absolute","align","alt","animation","area","background","backgroundColor","backgroundOp","block","border","borderObj","breakWord","center","checkedBackgroundColor","clampc","class","clipPath","color","cursor","customStyle","em","filtera","flex","fluid","fluidc","font","gpos","gradient","height","icon","id","index","initLetter","italic","keySet","label","layout","left","mar","marginOp","maxWidth","name","onScroll","onTap","pad","preffersId","raster","removeDecoration","resmar","respad","responsive","shadow","size","span","stroke","tag","title","top","transform","type","url","vtn","width"],"stack":["children","height","id","sticky","type"],"simple":["children","gap","height","id","react","type"],"copy":["id","type"],"wrap":["absolute","align","alignIts","alt","animation","area","at","backTo","background","backgroundOp","blast","block","border","borderObj","borderObja","breakWord","center","centerColumn","child","children","clampc","class","color","column","cursor","customAlign","customJustify","disp","em","filter","filtera","flex","flexCenter","flexDir","fluid","fluidc","font","ga","gpos","gradient","height","hideOverflow","icon","id","index","initLetter","isHidden","isLink","italic","keySet","kind","layout","left","mar","marginOp","maxHeight","maxWidth","mboth","name","onScroll","onTap","opacity","overflow","pad","position","preffersId","radius","ranges","raster","removeDecoration","responsive","resprop","scale","sequence","shadow","simpleBorder","simpleCenter","size","span","sticky","stretch","stroke","tag","top","transform","transition","type","url","vtn","weight","width","zIndex"],"circle":["id","transform","type"],"polygon":["id","sides","transform","type"],"code":["id","transform","type"],"table":["id","items","transform","type"],"ulist":["absolute","align","alt","animation","area","background","backgroundOp","block","border","borderObj","breakWord","center","clampc","class","color","cursor","em","filtera","flex","fluid","fluidc","font","gpos","gradient","height","icon","id","index","initLetter","italic","items","keySet","kind","layout","left","mar","marginOp","maxWidth","onScroll","onTap","pad","preffersId","raster","removeDecoration","responsive","shadow","size","span","stroke","tag","top","transform","type","url","vtn","width"],"gridOverlay":["breakpoint","color","columns","font","fontSize","id","inset","letterSpacing","lineOpacity","lineWidth","markSize","marks","mobile","position","readouts","rows","type","uppercase","zIndex"]};
18
+
19
+ // Declared value shapes, keyed "type.param". Only parameters whose source
20
+ // carries a `//@ name {unit}:` annotation appear, so this grows as the
21
+ // library documents itself and never claims a shape it was not told.
22
+ export const ELEMENT_PARAM_UNITS = {"h1.area":"text","h1.background":"color","h1.borderObj":"object","h1.color":"color","h1.cursor":"css-cursor","h1.height":"css-length","h1.keySet":"keyset","h1.mar":"sides","h1.maxWidth":"css-length","h1.raster":"nodes","h1.resprop":"breakpoints","h1.size":"scale-step","h1.transform":"css-transform","h1.width":"css-length","h2.area":"text","h2.background":"color","h2.borderObj":"object","h2.color":"color","h2.cursor":"css-cursor","h2.height":"css-length","h2.keySet":"keyset","h2.mar":"sides","h2.maxWidth":"css-length","h2.raster":"nodes","h2.resprop":"breakpoints","h2.size":"scale-step","h2.transform":"css-transform","h2.width":"css-length","h3.area":"text","h3.background":"color","h3.borderObj":"object","h3.color":"color","h3.cursor":"css-cursor","h3.height":"css-length","h3.keySet":"keyset","h3.mar":"sides","h3.maxWidth":"css-length","h3.raster":"nodes","h3.resprop":"breakpoints","h3.size":"scale-step","h3.transform":"css-transform","h3.width":"css-length","h4.area":"text","h4.background":"color","h4.borderObj":"object","h4.color":"color","h4.cursor":"css-cursor","h4.height":"css-length","h4.keySet":"keyset","h4.mar":"sides","h4.maxWidth":"css-length","h4.raster":"nodes","h4.resprop":"breakpoints","h4.size":"scale-step","h4.transform":"css-transform","h4.width":"css-length","h5.area":"text","h5.background":"color","h5.borderObj":"object","h5.color":"color","h5.cursor":"css-cursor","h5.height":"css-length","h5.keySet":"keyset","h5.mar":"sides","h5.maxWidth":"css-length","h5.raster":"nodes","h5.resprop":"breakpoints","h5.size":"scale-step","h5.transform":"css-transform","h5.width":"css-length","h6.area":"text","h6.background":"color","h6.borderObj":"object","h6.color":"color","h6.cursor":"css-cursor","h6.height":"css-length","h6.keySet":"keyset","h6.mar":"sides","h6.maxWidth":"css-length","h6.raster":"nodes","h6.resprop":"breakpoints","h6.size":"scale-step","h6.transform":"css-transform","h6.width":"css-length","p.area":"text","p.background":"color","p.borderObj":"object","p.color":"color","p.cursor":"css-cursor","p.height":"css-length","p.keySet":"keyset","p.mar":"sides","p.maxWidth":"css-length","p.raster":"nodes","p.resprop":"breakpoints","p.size":"scale-step","p.transform":"css-transform","p.width":"css-length","img.area":"text","img.color":"color","img.height":"css-length","img.keySet":"keyset","img.maxWidth":"css-length","img.opacity":"ratio","img.radius":"px-or-length","img.resprop":"breakpoints","img.width":"css-length","img.zIndex":"count","a.background":"color","a.borderObj":"object","a.color":"color","a.hover":"object","a.mar":"sides","a.maxWidth":"css-length","a.pad":"sides","a.radius":"px-or-length","a.transform":"css-transform","a.width":"css-length","cards.area":"text","cards.background":"color","cards.borderObj":"object","cards.color":"color","cards.cursor":"css-cursor","cards.height":"css-length","cards.hover":"object","cards.keySet":"keyset","cards.mar":"sides","cards.maxHeight":"css-length","cards.maxWidth":"css-length","cards.opacity":"ratio","cards.pad":"sides","cards.radius":"px-or-length","cards.raster":"nodes","cards.resmar":"breakpoints","cards.respad":"breakpoints","cards.resprop":"breakpoints","cards.size":"scale-step","cards.transform":"css-transform","cards.width":"css-length","cards.zIndex":"count","nav.area":"text","nav.background":"color","nav.borderObj":"object","nav.color":"color","nav.cursor":"css-cursor","nav.height":"css-length","nav.hover":"object","nav.keySet":"keyset","nav.mar":"sides","nav.maxHeight":"css-length","nav.maxWidth":"css-length","nav.opacity":"ratio","nav.pad":"sides","nav.radius":"px-or-length","nav.raster":"nodes","nav.resmar":"breakpoints","nav.respad":"breakpoints","nav.resprop":"breakpoints","nav.size":"scale-step","nav.transform":"css-transform","nav.width":"css-length","nav.zIndex":"count","sideNav.area":"text","sideNav.background":"color","sideNav.borderObj":"object","sideNav.color":"color","sideNav.cursor":"css-cursor","sideNav.height":"css-length","sideNav.hover":"object","sideNav.keySet":"keyset","sideNav.mar":"sides","sideNav.maxHeight":"css-length","sideNav.maxWidth":"css-length","sideNav.opacity":"ratio","sideNav.pad":"sides","sideNav.radius":"px-or-length","sideNav.raster":"nodes","sideNav.resmar":"breakpoints","sideNav.respad":"breakpoints","sideNav.resprop":"breakpoints","sideNav.size":"scale-step","sideNav.transform":"css-transform","sideNav.width":"css-length","sideNav.zIndex":"count","row.area":"text","row.background":"color","row.borderObj":"object","row.color":"color","row.cursor":"css-cursor","row.height":"css-length","row.keySet":"keyset","row.mar":"sides","row.maxWidth":"css-length","row.radius":"px-or-length","row.raster":"nodes","row.size":"scale-step","row.transform":"css-transform","row.width":"css-length","radio.color":"color","radio.exact":"css-length","input.background":"color","input.color":"color","input.exact":"css-length","input.mar":"sides","input.maxWidth":"css-length","input.pad":"sides","input.radius":"px-or-length","input.theme":"object","labelInput.color":"color","labelInput.exact":"css-length","labelInput.mar":"sides","labelInput.pad":"sides","filePicker.background":"color","filePicker.color":"color","filePicker.radius":"px-or-length","picker.background":"color","picker.mar":"sides","picker.pad":"sides","picker.radius":"px-or-length","video.aspectRatio":"css-aspect-ratio","video.autoplay":"bool","video.background":"color","video.controls":"bool","video.decorative":"bool","video.height":"css-length","video.id":"text","video.label":"text","video.lazy":"bool","video.loop":"bool","video.maxWidth":"css-length","video.muted":"bool","video.objectFit":"enum(cover|contain|fill|none|scale-down)","video.opacity":"ratio","video.playsinline":"bool","video.poster":"url","video.preload":"enum(none|metadata|auto)","video.radius":"px-or-length","video.raster":"nodes","video.sources":"array","video.width":"css-length","multiswitcher.area":"text","button.background":"color","button.color":"color","button.exact":"css-length","button.height":"css-length","button.keySet":"keyset","button.radius":"px-or-length","button.resmar":"breakpoints","button.respad":"breakpoints","button.width":"css-length","checkbox.area":"text","checkbox.background":"color","checkbox.borderObj":"object","checkbox.color":"color","checkbox.cursor":"css-cursor","checkbox.height":"css-length","checkbox.keySet":"keyset","checkbox.mar":"sides","checkbox.maxWidth":"css-length","checkbox.pad":"sides","checkbox.raster":"nodes","checkbox.resmar":"breakpoints","checkbox.respad":"breakpoints","checkbox.size":"scale-step","checkbox.transform":"css-transform","checkbox.width":"css-length","stack.height":"css-length","simple.height":"css-length","wrap.area":"text","wrap.background":"color","wrap.borderObj":"object","wrap.color":"color","wrap.cursor":"css-cursor","wrap.height":"css-length","wrap.keySet":"keyset","wrap.mar":"sides","wrap.maxHeight":"css-length","wrap.maxWidth":"css-length","wrap.opacity":"ratio","wrap.pad":"sides","wrap.radius":"px-or-length","wrap.raster":"nodes","wrap.resprop":"breakpoints","wrap.size":"scale-step","wrap.transform":"css-transform","wrap.width":"css-length","wrap.zIndex":"count","circle.transform":"css-transform","polygon.transform":"css-transform","code.transform":"css-transform","table.transform":"css-transform","ulist.area":"text","ulist.background":"color","ulist.borderObj":"object","ulist.color":"color","ulist.cursor":"css-cursor","ulist.height":"css-length","ulist.keySet":"keyset","ulist.mar":"sides","ulist.maxWidth":"css-length","ulist.pad":"sides","ulist.raster":"nodes","ulist.size":"scale-step","ulist.transform":"css-transform","ulist.width":"css-length","gridOverlay.breakpoint":"px-number","gridOverlay.color":"color","gridOverlay.columns":"count","gridOverlay.font":"text","gridOverlay.fontSize":"px-number","gridOverlay.inset":"px-number","gridOverlay.letterSpacing":"text","gridOverlay.lineOpacity":"ratio","gridOverlay.lineWidth":"px-number","gridOverlay.markSize":"px-number","gridOverlay.marks":"enum(square|cross|none)","gridOverlay.mobile":"object","gridOverlay.position":"enum(fixed|absolute)","gridOverlay.readouts":"array","gridOverlay.rows":"count","gridOverlay.uppercase":"bool","gridOverlay.zIndex":"count"};
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.9
2
+ * nodality v1.3.11
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.9
2
+ * nodality v1.3.11
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.9
2
+ * nodality v1.3.11
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/morph-node.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.9
2
+ * nodality v1.3.11
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.9
2
+ * nodality v1.3.11
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/parse-html.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.9
2
+ * nodality v1.3.11
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.9
2
+ * nodality v1.3.11
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/raster-ops.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.9
2
+ * nodality v1.3.11
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.9
2
+ * nodality v1.3.11
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.9
2
+ * nodality v1.3.11
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.9
2
+ * nodality v1.3.11
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/seo.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.9
2
+ * nodality v1.3.11
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/stacker.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.9
2
+ * nodality v1.3.11
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/suggest.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.9
2
+ * nodality v1.3.11
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/theme.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.9
2
+ * nodality v1.3.11
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.9
2
+ * nodality v1.3.11
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/transition.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.9
2
+ * nodality v1.3.11
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */