nodality 1.3.7 → 1.3.8

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 (237) 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/agent-surface.js +1 -1
  212. package/lib/card-getter.js +1 -1
  213. package/lib/check-page.js +1 -1
  214. package/lib/codegen.js +1 -1
  215. package/lib/data.js +1 -1
  216. package/lib/designer.js +1 -1
  217. package/lib/element-mapper.js +1 -1
  218. package/lib/element-params.generated.js +1 -1
  219. package/lib/keyframe-animation.js +1 -1
  220. package/lib/link-getter.js +1 -1
  221. package/lib/morph-node.js +1 -1
  222. package/lib/normalize-spec.js +1 -1
  223. package/lib/parse-html.js +1 -1
  224. package/lib/raster-inspect.js +1 -1
  225. package/lib/raster-ops.js +42 -3
  226. package/lib/raster-presets.js +1 -1
  227. package/lib/resolve-refs.js +1 -1
  228. package/lib/scroll-video.js +1 -1
  229. package/lib/seo.js +1 -1
  230. package/lib/stacker.js +1 -1
  231. package/lib/suggest.js +1 -1
  232. package/lib/theme.js +1 -1
  233. package/lib/transform-anim.js +1 -1
  234. package/lib/transition.js +1 -1
  235. package/lib/validate-nodes.js +1 -1
  236. package/lib/webmcp-adapter.js +1 -1
  237. package/package.json +1 -1
package/lib/raster-ops.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.7
2
+ * nodality v1.3.8
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -2936,8 +2936,24 @@ function snapshotToImage(el, w, h, dpr) {
2936
2936
  return embeddedFontCss(el).catch(() => "").then((fontCss) => new Promise((resolve, reject) => {
2937
2937
  const serialized = new XMLSerializer()
2938
2938
  .serializeToString(freezeStyles(el, el.cloneNode(true)));
2939
+ // The SVG carries NO scaling at all — it is emitted at CSS size, 1:1.
2940
+ //
2941
+ // Engines do not agree about scaling foreignObject content: mobile Chrome and
2942
+ // Safari apply neither a viewBox ratio nor an ancestor transform to the HTML
2943
+ // subtree, so content laid out at `w x h` stayed `w x h` in the top-left of a
2944
+ // `w*dpr` canvas. Reading the uploaded texture back off the GPU on a dpr-3
2945
+ // phone showed exactly that: a 1101x369 texture with its ink confined to the
2946
+ // first 367x123. The same SVG looked correct in an <img> sized to 367 CSS px,
2947
+ // because there the unscaled content happened to fill the box — which is what
2948
+ // made this look like a compositing bug for so long.
2949
+ //
2950
+ // So the SVG is rasterised at the size its contents are laid out for, and the
2951
+ // dpr upscale is done by drawImage below, where the destination rectangle is
2952
+ // stated outright and no engine has an opinion. High-dpr output is a touch
2953
+ // softer than a native-resolution rasterisation would be; correct everywhere
2954
+ // beats crisp on the machines that happened to agree with us.
2939
2955
  const svg =
2940
- `<svg xmlns="http://www.w3.org/2000/svg" width="${w * dpr}" height="${h * dpr}" viewBox="0 0 ${w} ${h}">` +
2956
+ `<svg xmlns="http://www.w3.org/2000/svg" width="${w}" height="${h}" viewBox="0 0 ${w} ${h}">` +
2941
2957
  `<foreignObject width="100%" height="100%">` +
2942
2958
  `<div xmlns="http://www.w3.org/1999/xhtml">` +
2943
2959
  (fontCss ? `<style>${fontCss}</style>` : "") +
@@ -2948,7 +2964,30 @@ function snapshotToImage(el, w, h, dpr) {
2948
2964
  // globalThis. Where they do, the DOM constructor is gone and this
2949
2965
  // promise never settles: the snapshot backend hangs with no error.
2950
2966
  const img = document.createElement("img");
2951
- img.onload = () => resolve(img);
2967
+ img.onload = () => {
2968
+ // Rasterise into a canvas of exactly the size we asked for, and hand
2969
+ // THAT to the caller.
2970
+ //
2971
+ // texImage2D takes an image's INTRINSIC size, and engines disagree about
2972
+ // what that is for an SVG: desktop Chrome honours the width/height
2973
+ // attributes (w*dpr), while mobile Chrome and Safari take it from the
2974
+ // viewBox (w). On a phone the texture therefore arrived at 1/dpr scale
2975
+ // and the effect painted its content into the top-left corner of its own
2976
+ // canvas — the headline came out about a third of its size, while every
2977
+ // measurement of the box, the SVG and the CSS looked perfectly correct.
2978
+ //
2979
+ // Drawing with an explicit destination rectangle makes the size ours
2980
+ // instead of theirs, so the texture matches the backing store on every
2981
+ // engine. This mirrors what fitImageToBox already does for the
2982
+ // sole-image fast path.
2983
+ const c = document.createElement("canvas");
2984
+ c.width = Math.max(1, Math.round(w * dpr));
2985
+ c.height = Math.max(1, Math.round(h * dpr));
2986
+ const ctx = c.getContext("2d");
2987
+ if (!ctx) { resolve(img); return; }
2988
+ ctx.drawImage(img, 0, 0, c.width, c.height);
2989
+ resolve(c);
2990
+ };
2952
2991
  img.onerror = reject;
2953
2992
  img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(svg);
2954
2993
  }));
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.7
2
+ * nodality v1.3.8
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.7
2
+ * nodality v1.3.8
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.7
2
+ * nodality v1.3.8
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.7
2
+ * nodality v1.3.8
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.7
2
+ * nodality v1.3.8
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.7
2
+ * nodality v1.3.8
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.7
2
+ * nodality v1.3.8
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.7
2
+ * nodality v1.3.8
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.7
2
+ * nodality v1.3.8
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.7
2
+ * nodality v1.3.8
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.3.7
2
+ * nodality v1.3.8
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.3.7",
3
+ "version": "1.3.8",
4
4
  "description": "A lightweight library for declarative UI elements.",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",