nodality 1.1.6 → 1.1.7

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 (229) 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.LICENSE.txt +1 -1
  4. package/dist/audionew.cjs.js +1 -1
  5. package/dist/audionew.cjs.js.LICENSE.txt +1 -1
  6. package/dist/audionew.esm.js.LICENSE.txt +1 -1
  7. package/dist/base.cjs.js +1 -1
  8. package/dist/base.cjs.js.LICENSE.txt +1 -1
  9. package/dist/base.esm.js.LICENSE.txt +1 -1
  10. package/dist/beta-desktop-bar.cjs.js +1 -1
  11. package/dist/beta-desktop-bar.cjs.js.LICENSE.txt +1 -1
  12. package/dist/beta-desktop-bar.esm.js.LICENSE.txt +1 -1
  13. package/dist/beta-mobile-bar.cjs.js +1 -1
  14. package/dist/beta-mobile-bar.cjs.js.LICENSE.txt +1 -1
  15. package/dist/beta-mobile-bar.esm.js.LICENSE.txt +1 -1
  16. package/dist/bundle.umd.js +1 -1
  17. package/dist/bundle.umd.js.LICENSE.txt +1 -1
  18. package/dist/button.cjs.js +1 -1
  19. package/dist/button.cjs.js.LICENSE.txt +1 -1
  20. package/dist/button.esm.js.LICENSE.txt +1 -1
  21. package/dist/card-getter.cjs.js.LICENSE.txt +1 -1
  22. package/dist/card-getter.esm.js.LICENSE.txt +1 -1
  23. package/dist/center.cjs.js +1 -1
  24. package/dist/center.cjs.js.LICENSE.txt +1 -1
  25. package/dist/center.esm.js.LICENSE.txt +1 -1
  26. package/dist/checkbox.cjs.js +1 -1
  27. package/dist/checkbox.cjs.js.LICENSE.txt +1 -1
  28. package/dist/checkbox.esm.js.LICENSE.txt +1 -1
  29. package/dist/code.cjs.js +1 -1
  30. package/dist/code.cjs.js.LICENSE.txt +1 -1
  31. package/dist/code.esm.js.LICENSE.txt +1 -1
  32. package/dist/container.cjs.js +1 -1
  33. package/dist/container.cjs.js.LICENSE.txt +1 -1
  34. package/dist/container.esm.js.LICENSE.txt +1 -1
  35. package/dist/data-list.cjs.js.LICENSE.txt +1 -1
  36. package/dist/data-list.esm.js.LICENSE.txt +1 -1
  37. package/dist/designer.cjs.js +1 -1
  38. package/dist/designer.cjs.js.LICENSE.txt +1 -1
  39. package/dist/designer.esm.js.LICENSE.txt +1 -1
  40. package/dist/element-mapper.cjs.js +1 -1
  41. package/dist/element-mapper.cjs.js.LICENSE.txt +1 -1
  42. package/dist/element-mapper.esm.js.LICENSE.txt +1 -1
  43. package/dist/finalresult.esm.js +1 -1
  44. package/dist/finalresult.esm.js.LICENSE.txt +1 -1
  45. package/dist/flex-card.cjs.js +1 -1
  46. package/dist/flex-card.cjs.js.LICENSE.txt +1 -1
  47. package/dist/flex-card.esm.js.LICENSE.txt +1 -1
  48. package/dist/flex-grid.cjs.js +1 -1
  49. package/dist/flex-grid.cjs.js.LICENSE.txt +1 -1
  50. package/dist/flex-grid.esm.js.LICENSE.txt +1 -1
  51. package/dist/flex-row.cjs.js +1 -1
  52. package/dist/flex-row.cjs.js.LICENSE.txt +1 -1
  53. package/dist/flex-row.esm.js.LICENSE.txt +1 -1
  54. package/dist/floating-input.cjs.js +1 -1
  55. package/dist/floating-input.cjs.js.LICENSE.txt +1 -1
  56. package/dist/floating-input.esm.js.LICENSE.txt +1 -1
  57. package/dist/free.cjs.js +1 -1
  58. package/dist/free.cjs.js.LICENSE.txt +1 -1
  59. package/dist/free.esm.js.LICENSE.txt +1 -1
  60. package/dist/horizontal-scroller.cjs.js.LICENSE.txt +1 -1
  61. package/dist/horizontal-scroller.esm.js.LICENSE.txt +1 -1
  62. package/dist/image-picker.cjs.js +1 -1
  63. package/dist/image-picker.cjs.js.LICENSE.txt +1 -1
  64. package/dist/image-picker.esm.js.LICENSE.txt +1 -1
  65. package/dist/image.cjs.js +1 -1
  66. package/dist/image.cjs.js.LICENSE.txt +1 -1
  67. package/dist/image.esm.js.LICENSE.txt +1 -1
  68. package/dist/index.cjs.js +1 -1
  69. package/dist/index.cjs.js.LICENSE.txt +1 -1
  70. package/dist/index.d.ts +1 -1
  71. package/dist/index.esm.js.LICENSE.txt +1 -1
  72. package/dist/keyframe-animation.cjs.js.LICENSE.txt +1 -1
  73. package/dist/keyframe-animation.esm.js.LICENSE.txt +1 -1
  74. package/dist/link-getter.cjs.js +1 -1
  75. package/dist/link-getter.cjs.js.LICENSE.txt +1 -1
  76. package/dist/link-getter.esm.js.LICENSE.txt +1 -1
  77. package/dist/link.cjs.js +1 -1
  78. package/dist/link.cjs.js.LICENSE.txt +1 -1
  79. package/dist/link.esm.js.LICENSE.txt +1 -1
  80. package/dist/meta-adder.cjs.js +1 -1
  81. package/dist/meta-adder.cjs.js.LICENSE.txt +1 -1
  82. package/dist/meta-adder.esm.js.LICENSE.txt +1 -1
  83. package/dist/modal-2025.cjs.js +1 -1
  84. package/dist/modal-2025.cjs.js.LICENSE.txt +1 -1
  85. package/dist/modal-2025.esm.js.LICENSE.txt +1 -1
  86. package/dist/multiswitcher.cjs.js +1 -1
  87. package/dist/multiswitcher.cjs.js.LICENSE.txt +1 -1
  88. package/dist/multiswitcher.esm.js.LICENSE.txt +1 -1
  89. package/dist/new-nav-bar.cjs.js +1 -1
  90. package/dist/new-nav-bar.cjs.js.LICENSE.txt +1 -1
  91. package/dist/new-nav-bar.esm.js.LICENSE.txt +1 -1
  92. package/dist/picker.cjs.js +1 -1
  93. package/dist/picker.cjs.js.LICENSE.txt +1 -1
  94. package/dist/picker.esm.js.LICENSE.txt +1 -1
  95. package/dist/progress.cjs.js +1 -1
  96. package/dist/progress.cjs.js.LICENSE.txt +1 -1
  97. package/dist/progress.esm.js.LICENSE.txt +1 -1
  98. package/dist/radio.cjs.js.LICENSE.txt +1 -1
  99. package/dist/radio.esm.js.LICENSE.txt +1 -1
  100. package/dist/range.cjs.js.LICENSE.txt +1 -1
  101. package/dist/range.esm.js.LICENSE.txt +1 -1
  102. package/dist/scroll-video.cjs.js.LICENSE.txt +1 -1
  103. package/dist/scroll-video.esm.js.LICENSE.txt +1 -1
  104. package/dist/side-bar.cjs.js +1 -1
  105. package/dist/side-bar.cjs.js.LICENSE.txt +1 -1
  106. package/dist/side-bar.esm.js.LICENSE.txt +1 -1
  107. package/dist/side-nav-bar.cjs.js +1 -1
  108. package/dist/side-nav-bar.cjs.js.LICENSE.txt +1 -1
  109. package/dist/side-nav-bar.esm.js.LICENSE.txt +1 -1
  110. package/dist/simple-bar.cjs.js +1 -1
  111. package/dist/simple-bar.cjs.js.LICENSE.txt +1 -1
  112. package/dist/simple-bar.esm.js.LICENSE.txt +1 -1
  113. package/dist/slider-2025.cjs.js +1 -1
  114. package/dist/slider-2025.cjs.js.LICENSE.txt +1 -1
  115. package/dist/slider-2025.esm.js.LICENSE.txt +1 -1
  116. package/dist/spacer.cjs.js +1 -1
  117. package/dist/spacer.cjs.js.LICENSE.txt +1 -1
  118. package/dist/spacer.esm.js.LICENSE.txt +1 -1
  119. package/dist/stack.cjs.js +1 -1
  120. package/dist/stack.cjs.js.LICENSE.txt +1 -1
  121. package/dist/stack.esm.js.LICENSE.txt +1 -1
  122. package/dist/stacker.cjs.js.LICENSE.txt +1 -1
  123. package/dist/stacker.esm.js.LICENSE.txt +1 -1
  124. package/dist/table.cjs.js +1 -1
  125. package/dist/table.cjs.js.LICENSE.txt +1 -1
  126. package/dist/table.esm.js.LICENSE.txt +1 -1
  127. package/dist/text-field.cjs.js +1 -1
  128. package/dist/text-field.cjs.js.LICENSE.txt +1 -1
  129. package/dist/text-field.esm.js.LICENSE.txt +1 -1
  130. package/dist/text.cjs.js +1 -1
  131. package/dist/text.cjs.js.LICENSE.txt +1 -1
  132. package/dist/text.esm.js.LICENSE.txt +1 -1
  133. package/dist/theme.cjs.js.LICENSE.txt +1 -1
  134. package/dist/theme.esm.js.LICENSE.txt +1 -1
  135. package/dist/transform-anim.cjs.js.LICENSE.txt +1 -1
  136. package/dist/transform-anim.esm.js.LICENSE.txt +1 -1
  137. package/dist/ulist.cjs.js +1 -1
  138. package/dist/ulist.cjs.js.LICENSE.txt +1 -1
  139. package/dist/ulist.esm.js.LICENSE.txt +1 -1
  140. package/dist/video.cjs.js +1 -1
  141. package/dist/video.cjs.js.LICENSE.txt +1 -1
  142. package/dist/video.esm.js.LICENSE.txt +1 -1
  143. package/dist/wrap.cjs.js +1 -1
  144. package/dist/wrap.cjs.js.LICENSE.txt +1 -1
  145. package/dist/wrap.esm.js.LICENSE.txt +1 -1
  146. package/dist/zoom-card.cjs.js +1 -1
  147. package/dist/zoom-card.cjs.js.LICENSE.txt +1 -1
  148. package/dist/zoom-card.esm.js.LICENSE.txt +1 -1
  149. package/layout/animator.js +1 -1
  150. package/layout/audio.js +1 -1
  151. package/layout/audionew.js +1 -1
  152. package/layout/base.js +1 -1
  153. package/layout/beta-desktop-bar.js +1 -1
  154. package/layout/beta-mobile-bar.js +1 -1
  155. package/layout/button.js +1 -1
  156. package/layout/center.js +1 -1
  157. package/layout/checkbox.js +1 -1
  158. package/layout/circle.js +1 -1
  159. package/layout/code.js +1 -1
  160. package/layout/container.js +1 -1
  161. package/layout/dropdown-2025.js +1 -1
  162. package/layout/flex-card.js +1 -1
  163. package/layout/flex-grid.js +1 -1
  164. package/layout/flex-row.js +1 -1
  165. package/layout/form-components/custom.js +1 -1
  166. package/layout/form-components/data-list.js +1 -1
  167. package/layout/form-components/floating-input.js +1 -1
  168. package/layout/form-components/form-all.js +1 -1
  169. package/layout/form-components/form.js +1 -1
  170. package/layout/form-components/image-picker.js +1 -1
  171. package/layout/form-components/picker.js +1 -1
  172. package/layout/form-components/radio.js +1 -1
  173. package/layout/form-components/radiogroup.js +1 -1
  174. package/layout/form-components/range.js +1 -1
  175. package/layout/free.js +1 -1
  176. package/layout/grid-switcher.js +1 -1
  177. package/layout/grid.js +1 -1
  178. package/layout/horizontal-scroller.js +1 -1
  179. package/layout/image.js +1 -1
  180. package/layout/index.js +1 -1
  181. package/layout/link.js +1 -1
  182. package/layout/list.js +1 -1
  183. package/layout/meta-adder.js +1 -1
  184. package/layout/modal-2025.js +1 -1
  185. package/layout/morph.js +1 -1
  186. package/layout/multiswitcher.js +1 -1
  187. package/layout/nav-bar.js +1 -1
  188. package/layout/nav-factor/custom-div.js +1 -1
  189. package/layout/new-nav-bar.js +1 -1
  190. package/layout/polygon.js +1 -1
  191. package/layout/prerender-site.js +1 -1
  192. package/layout/prerender.js +1 -1
  193. package/layout/progress.js +1 -1
  194. package/layout/row.js +1 -1
  195. package/layout/scroll-video.js +1 -1
  196. package/layout/side-bar.js +1 -1
  197. package/layout/side-nav-bar.js +1 -1
  198. package/layout/simple-bar.js +1 -1
  199. package/layout/slider-2025.js +1 -1
  200. package/layout/spacer.js +1 -1
  201. package/layout/stack.js +1 -1
  202. package/layout/svg.js +1 -1
  203. package/layout/switcher.js +1 -1
  204. package/layout/table.js +1 -1
  205. package/layout/text-field.js +1 -1
  206. package/layout/text.js +1 -1
  207. package/layout/ulist.js +1 -1
  208. package/layout/video.js +1 -1
  209. package/layout/wrap.js +1 -1
  210. package/layout/zoom-card.js +1 -1
  211. package/lib/card-getter.js +1 -1
  212. package/lib/codegen.js +1 -1
  213. package/lib/data.js +1 -1
  214. package/lib/designer.js +1 -1
  215. package/lib/element-mapper.js +1 -1
  216. package/lib/keyframe-animation.js +1 -1
  217. package/lib/link-getter.js +1 -1
  218. package/lib/morph-node.js +1 -1
  219. package/lib/raster-inspect.js +1 -1
  220. package/lib/raster-ops.js +48 -3
  221. package/lib/raster-presets.js +1 -1
  222. package/lib/scroll-video.js +1 -1
  223. package/lib/seo.js +1 -1
  224. package/lib/stacker.js +1 -1
  225. package/lib/suggest.js +1 -1
  226. package/lib/theme.js +1 -1
  227. package/lib/transform-anim.js +1 -1
  228. package/lib/transition.js +1 -1
  229. package/package.json +1 -1
package/lib/raster-ops.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.6
2
+ * nodality v1.1.7
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -4208,6 +4208,42 @@ function applyRasterPipeline(el, rasterNodes, opts) {
4208
4208
  // their coordinate math on the CPU.
4209
4209
  let lastMoveProbe = 0;
4210
4210
 
4211
+ /**
4212
+ * Hit-test the canvas-hosted subtree by hand.
4213
+ *
4214
+ * `document.elementFromPoint` cannot see content the LIVE backend
4215
+ * hosts. To be uploaded as a texture the content has to live inside
4216
+ * the <canvas>, where it is canvas fallback content: laid out, but
4217
+ * never painted into the page. The browser's hit test therefore walks
4218
+ * straight past it and lands on the canvas itself, which is why every
4219
+ * control inside a live pipeline used to be dead.
4220
+ *
4221
+ * The boxes are real, though — a back button inside a live morph
4222
+ * reports its true 88x28 rect — so they can be tested directly. That
4223
+ * is the whole trick: layout is available, only painting and hit
4224
+ * testing are not, and hit testing is the part we can replace.
4225
+ *
4226
+ * Deepest match wins, which is what the browser does: a <span> inside
4227
+ * a <button> resolves to the span, and the dispatched event then
4228
+ * bubbles to the button exactly as a real click would. Among siblings
4229
+ * the last match wins, which approximates paint order for the
4230
+ * ordinary, non-z-indexed case.
4231
+ */
4232
+ const hostedElementAt = (x, y) => {
4233
+ let found = null;
4234
+ const walk = (node) => {
4235
+ for (const child of node.children) {
4236
+ const r = child.getBoundingClientRect();
4237
+ if (!r.width || !r.height) continue;
4238
+ if (x < r.left || x > r.right || y < r.top || y > r.bottom) continue;
4239
+ found = child;
4240
+ walk(child);
4241
+ }
4242
+ };
4243
+ walk(sourceEl);
4244
+ return found;
4245
+ };
4246
+
4211
4247
  const onRetarget = (e) => {
4212
4248
  if (!interactive || destroyed || e[RETARGET]) return;
4213
4249
  if (e.type === "pointermove" || e.type === "mousemove") {
@@ -4217,14 +4253,23 @@ function applyRasterPipeline(el, rasterNodes, opts) {
4217
4253
  }
4218
4254
  const s = sourceAt(e.clientX, e.clientY);
4219
4255
  if (!s) return;
4256
+ // Where the content lives inside the canvas there is no native hit
4257
+ // testing to defer to, displaced or not — so this shortcut has to
4258
+ // be skipped. It is why a live morph stayed dead even after it
4259
+ // settled: at rest the shader presents 1:1, the displacement is
4260
+ // zero, and every event took this early return.
4261
+ const hosted = sourceEl !== el;
4220
4262
  // Nothing moved here: let the browser's own hit-testing stand.
4221
- if (Math.abs(s.x - e.clientX) < 0.5 && Math.abs(s.y - e.clientY) < 0.5) return;
4263
+ if (!hosted &&
4264
+ Math.abs(s.x - e.clientX) < 0.5 && Math.abs(s.y - e.clientY) < 0.5) return;
4222
4265
 
4223
4266
  // Returns null when the source lands outside the VIEWPORT — an
4224
4267
  // element scrolled half off-screen whose displacement pushes the
4225
4268
  // source past the edge. Declining is the right answer there: the
4226
4269
  // native hit stands, rather than dispatching somewhere wrong.
4227
- const target = typeof document.elementFromPoint === "function"
4270
+ const target = hosted
4271
+ ? hostedElementAt(s.x, s.y)
4272
+ : typeof document.elementFromPoint === "function"
4228
4273
  ? document.elementFromPoint(s.x, s.y)
4229
4274
  : null;
4230
4275
  // Only ever redirect INTO our own subtree. A displacement that
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.6
2
+ * nodality v1.1.7
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.6
2
+ * nodality v1.1.7
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.6
2
+ * nodality v1.1.7
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.6
2
+ * nodality v1.1.7
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.6
2
+ * nodality v1.1.7
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.6
2
+ * nodality v1.1.7
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.1.6
2
+ * nodality v1.1.7
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.6
2
+ * nodality v1.1.7
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodality",
3
- "version": "1.1.6",
3
+ "version": "1.1.7",
4
4
  "description": "A lightweight library for declarative UI elements.",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",