nodality 1.1.13 → 1.1.15

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 (194) hide show
  1. package/bin/mcp-server.mjs +13 -3
  2. package/dist/animator.cjs.js.LICENSE.txt +1 -1
  3. package/dist/animator.esm.js.LICENSE.txt +1 -1
  4. package/dist/audionew.cjs.js.LICENSE.txt +1 -1
  5. package/dist/audionew.esm.js.LICENSE.txt +1 -1
  6. package/dist/base.cjs.js.LICENSE.txt +1 -1
  7. package/dist/base.esm.js.LICENSE.txt +1 -1
  8. package/dist/beta-desktop-bar.cjs.js.LICENSE.txt +1 -1
  9. package/dist/beta-desktop-bar.esm.js.LICENSE.txt +1 -1
  10. package/dist/beta-mobile-bar.cjs.js.LICENSE.txt +1 -1
  11. package/dist/beta-mobile-bar.esm.js.LICENSE.txt +1 -1
  12. package/dist/bundle.umd.js +1 -1
  13. package/dist/bundle.umd.js.LICENSE.txt +1 -1
  14. package/dist/button.cjs.js.LICENSE.txt +1 -1
  15. package/dist/button.esm.js.LICENSE.txt +1 -1
  16. package/dist/card-getter.cjs.js.LICENSE.txt +1 -1
  17. package/dist/card-getter.esm.js.LICENSE.txt +1 -1
  18. package/dist/center.cjs.js.LICENSE.txt +1 -1
  19. package/dist/center.esm.js.LICENSE.txt +1 -1
  20. package/dist/checkbox.cjs.js.LICENSE.txt +1 -1
  21. package/dist/checkbox.esm.js.LICENSE.txt +1 -1
  22. package/dist/code.cjs.js.LICENSE.txt +1 -1
  23. package/dist/code.esm.js.LICENSE.txt +1 -1
  24. package/dist/container.cjs.js.LICENSE.txt +1 -1
  25. package/dist/container.esm.js.LICENSE.txt +1 -1
  26. package/dist/data-list.cjs.js.LICENSE.txt +1 -1
  27. package/dist/data-list.esm.js.LICENSE.txt +1 -1
  28. package/dist/designer.cjs.js +1 -1
  29. package/dist/designer.cjs.js.LICENSE.txt +1 -1
  30. package/dist/designer.esm.js +1 -1
  31. package/dist/designer.esm.js.LICENSE.txt +1 -1
  32. package/dist/element-mapper.cjs.js.LICENSE.txt +1 -1
  33. package/dist/element-mapper.esm.js.LICENSE.txt +1 -1
  34. package/dist/finalresult.esm.js +1 -1
  35. package/dist/finalresult.esm.js.LICENSE.txt +1 -1
  36. package/dist/flex-card.cjs.js.LICENSE.txt +1 -1
  37. package/dist/flex-card.esm.js.LICENSE.txt +1 -1
  38. package/dist/flex-grid.cjs.js.LICENSE.txt +1 -1
  39. package/dist/flex-grid.esm.js.LICENSE.txt +1 -1
  40. package/dist/flex-row.cjs.js.LICENSE.txt +1 -1
  41. package/dist/flex-row.esm.js.LICENSE.txt +1 -1
  42. package/dist/floating-input.cjs.js.LICENSE.txt +1 -1
  43. package/dist/floating-input.esm.js.LICENSE.txt +1 -1
  44. package/dist/free.cjs.js.LICENSE.txt +1 -1
  45. package/dist/free.esm.js.LICENSE.txt +1 -1
  46. package/dist/horizontal-scroller.cjs.js.LICENSE.txt +1 -1
  47. package/dist/horizontal-scroller.esm.js.LICENSE.txt +1 -1
  48. package/dist/image-picker.cjs.js.LICENSE.txt +1 -1
  49. package/dist/image-picker.esm.js.LICENSE.txt +1 -1
  50. package/dist/image.cjs.js.LICENSE.txt +1 -1
  51. package/dist/image.esm.js.LICENSE.txt +1 -1
  52. package/dist/index.cjs.js +1 -1
  53. package/dist/index.cjs.js.LICENSE.txt +1 -1
  54. package/dist/index.d.ts +1 -1
  55. package/dist/index.esm.js +1 -1
  56. package/dist/index.esm.js.LICENSE.txt +1 -1
  57. package/dist/keyframe-animation.cjs.js.LICENSE.txt +1 -1
  58. package/dist/keyframe-animation.esm.js.LICENSE.txt +1 -1
  59. package/dist/link-getter.cjs.js.LICENSE.txt +1 -1
  60. package/dist/link-getter.esm.js.LICENSE.txt +1 -1
  61. package/dist/link.cjs.js.LICENSE.txt +1 -1
  62. package/dist/link.esm.js.LICENSE.txt +1 -1
  63. package/dist/meta-adder.cjs.js.LICENSE.txt +1 -1
  64. package/dist/meta-adder.esm.js.LICENSE.txt +1 -1
  65. package/dist/modal-2025.cjs.js.LICENSE.txt +1 -1
  66. package/dist/modal-2025.esm.js.LICENSE.txt +1 -1
  67. package/dist/multiswitcher.cjs.js.LICENSE.txt +1 -1
  68. package/dist/multiswitcher.esm.js.LICENSE.txt +1 -1
  69. package/dist/new-nav-bar.cjs.js.LICENSE.txt +1 -1
  70. package/dist/new-nav-bar.esm.js.LICENSE.txt +1 -1
  71. package/dist/picker.cjs.js.LICENSE.txt +1 -1
  72. package/dist/picker.esm.js.LICENSE.txt +1 -1
  73. package/dist/progress.cjs.js.LICENSE.txt +1 -1
  74. package/dist/progress.esm.js.LICENSE.txt +1 -1
  75. package/dist/radio.cjs.js.LICENSE.txt +1 -1
  76. package/dist/radio.esm.js.LICENSE.txt +1 -1
  77. package/dist/range.cjs.js.LICENSE.txt +1 -1
  78. package/dist/range.esm.js.LICENSE.txt +1 -1
  79. package/dist/scroll-video.cjs.js.LICENSE.txt +1 -1
  80. package/dist/scroll-video.esm.js.LICENSE.txt +1 -1
  81. package/dist/side-bar.cjs.js.LICENSE.txt +1 -1
  82. package/dist/side-bar.esm.js.LICENSE.txt +1 -1
  83. package/dist/side-nav-bar.cjs.js.LICENSE.txt +1 -1
  84. package/dist/side-nav-bar.esm.js.LICENSE.txt +1 -1
  85. package/dist/simple-bar.cjs.js.LICENSE.txt +1 -1
  86. package/dist/simple-bar.esm.js.LICENSE.txt +1 -1
  87. package/dist/slider-2025.cjs.js.LICENSE.txt +1 -1
  88. package/dist/slider-2025.esm.js.LICENSE.txt +1 -1
  89. package/dist/spacer.cjs.js.LICENSE.txt +1 -1
  90. package/dist/spacer.esm.js.LICENSE.txt +1 -1
  91. package/dist/stack.cjs.js.LICENSE.txt +1 -1
  92. package/dist/stack.esm.js.LICENSE.txt +1 -1
  93. package/dist/stacker.cjs.js.LICENSE.txt +1 -1
  94. package/dist/stacker.esm.js.LICENSE.txt +1 -1
  95. package/dist/table.cjs.js.LICENSE.txt +1 -1
  96. package/dist/table.esm.js.LICENSE.txt +1 -1
  97. package/dist/text-field.cjs.js.LICENSE.txt +1 -1
  98. package/dist/text-field.esm.js.LICENSE.txt +1 -1
  99. package/dist/text.cjs.js.LICENSE.txt +1 -1
  100. package/dist/text.esm.js.LICENSE.txt +1 -1
  101. package/dist/theme.cjs.js.LICENSE.txt +1 -1
  102. package/dist/theme.esm.js.LICENSE.txt +1 -1
  103. package/dist/transform-anim.cjs.js.LICENSE.txt +1 -1
  104. package/dist/transform-anim.esm.js.LICENSE.txt +1 -1
  105. package/dist/ulist.cjs.js.LICENSE.txt +1 -1
  106. package/dist/ulist.esm.js.LICENSE.txt +1 -1
  107. package/dist/video.cjs.js.LICENSE.txt +1 -1
  108. package/dist/video.esm.js.LICENSE.txt +1 -1
  109. package/dist/wrap.cjs.js.LICENSE.txt +1 -1
  110. package/dist/wrap.esm.js.LICENSE.txt +1 -1
  111. package/dist/zoom-card.cjs.js.LICENSE.txt +1 -1
  112. package/dist/zoom-card.esm.js.LICENSE.txt +1 -1
  113. package/layout/animator.js +1 -1
  114. package/layout/audio.js +1 -1
  115. package/layout/audionew.js +1 -1
  116. package/layout/base.js +1 -1
  117. package/layout/beta-desktop-bar.js +1 -1
  118. package/layout/beta-mobile-bar.js +1 -1
  119. package/layout/button.js +1 -1
  120. package/layout/center.js +1 -1
  121. package/layout/checkbox.js +1 -1
  122. package/layout/circle.js +1 -1
  123. package/layout/code.js +1 -1
  124. package/layout/container.js +1 -1
  125. package/layout/dropdown-2025.js +1 -1
  126. package/layout/flex-card.js +1 -1
  127. package/layout/flex-grid.js +1 -1
  128. package/layout/flex-row.js +1 -1
  129. package/layout/form-components/custom.js +1 -1
  130. package/layout/form-components/data-list.js +1 -1
  131. package/layout/form-components/floating-input.js +1 -1
  132. package/layout/form-components/form-all.js +1 -1
  133. package/layout/form-components/form.js +1 -1
  134. package/layout/form-components/image-picker.js +1 -1
  135. package/layout/form-components/picker.js +1 -1
  136. package/layout/form-components/radio.js +1 -1
  137. package/layout/form-components/radiogroup.js +1 -1
  138. package/layout/form-components/range.js +1 -1
  139. package/layout/free.js +1 -1
  140. package/layout/grid-switcher.js +1 -1
  141. package/layout/grid.js +1 -1
  142. package/layout/horizontal-scroller.js +1 -1
  143. package/layout/image.js +1 -1
  144. package/layout/index.js +1 -1
  145. package/layout/link.js +1 -1
  146. package/layout/list.js +1 -1
  147. package/layout/meta-adder.js +1 -1
  148. package/layout/modal-2025.js +1 -1
  149. package/layout/morph.js +1 -1
  150. package/layout/multiswitcher.js +1 -1
  151. package/layout/nav-bar.js +1 -1
  152. package/layout/nav-factor/custom-div.js +1 -1
  153. package/layout/new-nav-bar.js +1 -1
  154. package/layout/polygon.js +1 -1
  155. package/layout/prerender-site.js +1 -1
  156. package/layout/prerender.js +1 -1
  157. package/layout/progress.js +1 -1
  158. package/layout/row.js +1 -1
  159. package/layout/scroll-video.js +1 -1
  160. package/layout/side-bar.js +1 -1
  161. package/layout/side-nav-bar.js +1 -1
  162. package/layout/simple-bar.js +1 -1
  163. package/layout/slider-2025.js +1 -1
  164. package/layout/spacer.js +1 -1
  165. package/layout/stack.js +1 -1
  166. package/layout/svg.js +1 -1
  167. package/layout/switcher.js +1 -1
  168. package/layout/table.js +1 -1
  169. package/layout/text-field.js +1 -1
  170. package/layout/text.js +1 -1
  171. package/layout/ulist.js +1 -1
  172. package/layout/video.js +1 -1
  173. package/layout/wrap.js +1 -1
  174. package/layout/zoom-card.js +1 -1
  175. package/lib/card-getter.js +1 -1
  176. package/lib/codegen.js +1 -1
  177. package/lib/data.js +1 -1
  178. package/lib/designer.js +1 -1
  179. package/lib/element-mapper.js +1 -1
  180. package/lib/keyframe-animation.js +1 -1
  181. package/lib/link-getter.js +1 -1
  182. package/lib/morph-node.js +53 -7
  183. package/lib/raster-inspect.js +1 -1
  184. package/lib/raster-ops.js +1 -1
  185. package/lib/raster-presets.js +1 -1
  186. package/lib/scroll-video.js +1 -1
  187. package/lib/seo.js +1 -1
  188. package/lib/stacker.js +1 -1
  189. package/lib/suggest.js +1 -1
  190. package/lib/theme.js +1 -1
  191. package/lib/transform-anim.js +1 -1
  192. package/lib/transition.js +1 -1
  193. package/lib/validate-nodes.js +118 -31
  194. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/free.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/grid.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/image.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/link.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/list.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/morph.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/nav-bar.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/polygon.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/row.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/spacer.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/stack.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/svg.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/table.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/text.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/ulist.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/video.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/wrap.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/codegen.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/data.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/designer.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
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.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -123,6 +123,25 @@ const chainFor = (effect) => {
123
123
 
124
124
  const norm = (t) => String(t || "").replace(/\s+/g, " ").trim().toLowerCase();
125
125
 
126
+ /**
127
+ * An id as written, reduced to the id itself.
128
+ *
129
+ * A node may name a state bare (`"home"`) or in selector form
130
+ * (`"#home"`). Both are accepted and both mean the same thing, because
131
+ * this is an element IDENTIFIER rather than a selector: the lookup is
132
+ * `getElementById`, plus a positional fallback against `E`, so `"#home"`
133
+ * would otherwise match nothing and the morph would fail with a console
134
+ * warning and no visible effect.
135
+ *
136
+ * Normalised HERE, once, rather than at the point of lookup: the states
137
+ * are keyed by this string, so a chain whose first edge writes `"#home"`
138
+ * and whose second writes `"home"` must arrive at ONE key. Stripping at
139
+ * lookup time would resolve both to the same element while keeping two
140
+ * entries in the map, and the second edge would then be unreachable.
141
+ */
142
+ const bareId = (id) =>
143
+ typeof id === "string" && id.startsWith("#") ? id.slice(1) : id;
144
+
126
145
  /**
127
146
  * A morph node, in one shape: a list of EDGES.
128
147
  *
@@ -170,19 +189,22 @@ const normalizeEdges = (m) => {
170
189
  // Labels are what the user is actually reading and clicking.
171
190
  const byLabel = e.to && !Array.isArray(e.to) && typeof e.to === "object"
172
191
  ? e.to : null;
192
+ // Deduplicated on the label side only. The array form is POSITIONAL
193
+ // — `toIds[triggers.indexOf(a)]` below — so collapsing a repeated
194
+ // id there would shift every later link onto the wrong destination.
173
195
  const toIds = byLabel
174
- ? [...new Set(Object.values(e.to))]
175
- : (Array.isArray(e.to) ? e.to : [e.to]);
196
+ ? [...new Set(Object.values(e.to))].map(bareId)
197
+ : (Array.isArray(e.to) ? e.to : [e.to]).map(bareId);
176
198
 
177
199
  const labelToId = new Map();
178
200
  if (byLabel) {
179
201
  for (const [label, id] of Object.entries(e.to)) {
180
- labelToId.set(norm(label), id);
202
+ labelToId.set(norm(label), bareId(id));
181
203
  }
182
204
  }
183
205
 
184
206
  return {
185
- from: e.from, byLabel, toIds, labelToId,
207
+ from: bareId(e.from), byLabel, toIds, labelToId,
186
208
  effect: opt("effect"),
187
209
  duration: opt("duration", 900),
188
210
  // Written as `!== false` rather than a truthy test: the
@@ -212,9 +234,13 @@ function applyMorphNodes(mount, elements, nodes) {
212
234
  // page. Position is what Des actually guarantees.
213
235
  const rendered = [...mount.children];
214
236
  const resolve = (id) => {
215
- const byId = document.getElementById(id);
237
+ // `bareId` again, and not only for symmetry: the descriptor in E
238
+ // may itself be written with a leading "#", so both sides are
239
+ // reduced before they are compared.
240
+ const want = bareId(id);
241
+ const byId = document.getElementById(want);
216
242
  if (byId && mount.contains(byId)) return byId;
217
- const i = (elements || []).findIndex((e) => e && e.id === id);
243
+ const i = (elements || []).findIndex((e) => e && bareId(e.id) === want);
218
244
  return i >= 0 ? rendered[i] : null;
219
245
  };
220
246
 
@@ -584,6 +610,26 @@ function setUpMorph(mount, m, resolve) {
584
610
  const landBack = (targetId) => {
585
611
  if (history[history.length - 1] === targetId) history.pop();
586
612
  current = targetId;
613
+
614
+ // Hand the DOM back before presenting.
615
+ //
616
+ // On the live backend the state being returned to is INSIDE the
617
+ // canvas — that is how the backend samples it — and the canvas
618
+ // stands down at t=0. So the moment a reversal completes, the
619
+ // thing it returned to stops being painted at all: canvas hidden,
620
+ // content hosted, nothing on screen. A forward landing has no
621
+ // such problem, because there the canvas stays up and presents
622
+ // the destination itself.
623
+ //
624
+ // `destroy()` is precisely the handover needed: it moves hosted
625
+ // children back out into the host and restores the suppressed
626
+ // ink. The cost is that the next transition rebuilds rather than
627
+ // reusing, which is the right trade for a state that would
628
+ // otherwise be invisible.
629
+ for (const p of activeRasterPipelines()) {
630
+ if (stage.contains(p.canvas)) p.destroy();
631
+ }
632
+ pipe = null; tl = null; pipeOld = null; pipeNew = null;
587
633
  lastFrom = history.length ? history[history.length - 1] : null;
588
634
  wireState(targetId);
589
635
  };
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
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.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
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.1.13
2
+ * nodality v1.1.15
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.1.13
2
+ * nodality v1.1.15
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.1.13
2
+ * nodality v1.1.15
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.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.13
2
+ * nodality v1.1.15
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.1.13
2
+ * nodality v1.1.15
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */