nodality 1.1.10 → 1.1.13

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 (233) hide show
  1. package/README.md +71 -1
  2. package/dist/animator.cjs.js +1 -1
  3. package/dist/animator.cjs.js.LICENSE.txt +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.LICENSE.txt +1 -1
  8. package/dist/base.cjs.js +1 -1
  9. package/dist/base.cjs.js.LICENSE.txt +1 -1
  10. package/dist/base.esm.js.LICENSE.txt +1 -1
  11. package/dist/beta-desktop-bar.cjs.js +1 -1
  12. package/dist/beta-desktop-bar.cjs.js.LICENSE.txt +1 -1
  13. package/dist/beta-desktop-bar.esm.js.LICENSE.txt +1 -1
  14. package/dist/beta-mobile-bar.cjs.js +1 -1
  15. package/dist/beta-mobile-bar.cjs.js.LICENSE.txt +1 -1
  16. package/dist/beta-mobile-bar.esm.js.LICENSE.txt +1 -1
  17. package/dist/bundle.umd.js +1 -1
  18. package/dist/bundle.umd.js.LICENSE.txt +1 -1
  19. package/dist/button.cjs.js +1 -1
  20. package/dist/button.cjs.js.LICENSE.txt +1 -1
  21. package/dist/button.esm.js.LICENSE.txt +1 -1
  22. package/dist/card-getter.cjs.js.LICENSE.txt +1 -1
  23. package/dist/card-getter.esm.js.LICENSE.txt +1 -1
  24. package/dist/center.cjs.js +1 -1
  25. package/dist/center.cjs.js.LICENSE.txt +1 -1
  26. package/dist/center.esm.js.LICENSE.txt +1 -1
  27. package/dist/checkbox.cjs.js +1 -1
  28. package/dist/checkbox.cjs.js.LICENSE.txt +1 -1
  29. package/dist/checkbox.esm.js.LICENSE.txt +1 -1
  30. package/dist/code.cjs.js +1 -1
  31. package/dist/code.cjs.js.LICENSE.txt +1 -1
  32. package/dist/code.esm.js.LICENSE.txt +1 -1
  33. package/dist/container.cjs.js +1 -1
  34. package/dist/container.cjs.js.LICENSE.txt +1 -1
  35. package/dist/container.esm.js.LICENSE.txt +1 -1
  36. package/dist/data-list.cjs.js.LICENSE.txt +1 -1
  37. package/dist/data-list.esm.js.LICENSE.txt +1 -1
  38. package/dist/designer.cjs.js +1 -1
  39. package/dist/designer.cjs.js.LICENSE.txt +1 -1
  40. package/dist/designer.esm.js +1 -1
  41. package/dist/designer.esm.js.LICENSE.txt +1 -1
  42. package/dist/element-mapper.cjs.js +1 -1
  43. package/dist/element-mapper.cjs.js.LICENSE.txt +1 -1
  44. package/dist/element-mapper.esm.js.LICENSE.txt +1 -1
  45. package/dist/finalresult.esm.js +1 -1
  46. package/dist/finalresult.esm.js.LICENSE.txt +1 -1
  47. package/dist/flex-card.cjs.js +1 -1
  48. package/dist/flex-card.cjs.js.LICENSE.txt +1 -1
  49. package/dist/flex-card.esm.js.LICENSE.txt +1 -1
  50. package/dist/flex-grid.cjs.js +1 -1
  51. package/dist/flex-grid.cjs.js.LICENSE.txt +1 -1
  52. package/dist/flex-grid.esm.js.LICENSE.txt +1 -1
  53. package/dist/flex-row.cjs.js +1 -1
  54. package/dist/flex-row.cjs.js.LICENSE.txt +1 -1
  55. package/dist/flex-row.esm.js.LICENSE.txt +1 -1
  56. package/dist/floating-input.cjs.js +1 -1
  57. package/dist/floating-input.cjs.js.LICENSE.txt +1 -1
  58. package/dist/floating-input.esm.js.LICENSE.txt +1 -1
  59. package/dist/free.cjs.js +1 -1
  60. package/dist/free.cjs.js.LICENSE.txt +1 -1
  61. package/dist/free.esm.js.LICENSE.txt +1 -1
  62. package/dist/horizontal-scroller.cjs.js.LICENSE.txt +1 -1
  63. package/dist/horizontal-scroller.esm.js.LICENSE.txt +1 -1
  64. package/dist/image-picker.cjs.js +1 -1
  65. package/dist/image-picker.cjs.js.LICENSE.txt +1 -1
  66. package/dist/image-picker.esm.js.LICENSE.txt +1 -1
  67. package/dist/image.cjs.js +1 -1
  68. package/dist/image.cjs.js.LICENSE.txt +1 -1
  69. package/dist/image.esm.js.LICENSE.txt +1 -1
  70. package/dist/index.cjs.js +1 -1
  71. package/dist/index.cjs.js.LICENSE.txt +1 -1
  72. package/dist/index.d.ts +1 -1
  73. package/dist/index.esm.js +1 -1
  74. package/dist/index.esm.js.LICENSE.txt +1 -1
  75. package/dist/keyframe-animation.cjs.js.LICENSE.txt +1 -1
  76. package/dist/keyframe-animation.esm.js.LICENSE.txt +1 -1
  77. package/dist/link-getter.cjs.js +1 -1
  78. package/dist/link-getter.cjs.js.LICENSE.txt +1 -1
  79. package/dist/link-getter.esm.js.LICENSE.txt +1 -1
  80. package/dist/link.cjs.js +1 -1
  81. package/dist/link.cjs.js.LICENSE.txt +1 -1
  82. package/dist/link.esm.js.LICENSE.txt +1 -1
  83. package/dist/meta-adder.cjs.js +1 -1
  84. package/dist/meta-adder.cjs.js.LICENSE.txt +1 -1
  85. package/dist/meta-adder.esm.js.LICENSE.txt +1 -1
  86. package/dist/modal-2025.cjs.js +1 -1
  87. package/dist/modal-2025.cjs.js.LICENSE.txt +1 -1
  88. package/dist/modal-2025.esm.js.LICENSE.txt +1 -1
  89. package/dist/multiswitcher.cjs.js +1 -1
  90. package/dist/multiswitcher.cjs.js.LICENSE.txt +1 -1
  91. package/dist/multiswitcher.esm.js.LICENSE.txt +1 -1
  92. package/dist/new-nav-bar.cjs.js +1 -1
  93. package/dist/new-nav-bar.cjs.js.LICENSE.txt +1 -1
  94. package/dist/new-nav-bar.esm.js.LICENSE.txt +1 -1
  95. package/dist/picker.cjs.js +1 -1
  96. package/dist/picker.cjs.js.LICENSE.txt +1 -1
  97. package/dist/picker.esm.js.LICENSE.txt +1 -1
  98. package/dist/progress.cjs.js +1 -1
  99. package/dist/progress.cjs.js.LICENSE.txt +1 -1
  100. package/dist/progress.esm.js.LICENSE.txt +1 -1
  101. package/dist/radio.cjs.js.LICENSE.txt +1 -1
  102. package/dist/radio.esm.js.LICENSE.txt +1 -1
  103. package/dist/range.cjs.js.LICENSE.txt +1 -1
  104. package/dist/range.esm.js.LICENSE.txt +1 -1
  105. package/dist/scroll-video.cjs.js.LICENSE.txt +1 -1
  106. package/dist/scroll-video.esm.js.LICENSE.txt +1 -1
  107. package/dist/side-bar.cjs.js +1 -1
  108. package/dist/side-bar.cjs.js.LICENSE.txt +1 -1
  109. package/dist/side-bar.esm.js.LICENSE.txt +1 -1
  110. package/dist/side-nav-bar.cjs.js +1 -1
  111. package/dist/side-nav-bar.cjs.js.LICENSE.txt +1 -1
  112. package/dist/side-nav-bar.esm.js.LICENSE.txt +1 -1
  113. package/dist/simple-bar.cjs.js +1 -1
  114. package/dist/simple-bar.cjs.js.LICENSE.txt +1 -1
  115. package/dist/simple-bar.esm.js.LICENSE.txt +1 -1
  116. package/dist/slider-2025.cjs.js +1 -1
  117. package/dist/slider-2025.cjs.js.LICENSE.txt +1 -1
  118. package/dist/slider-2025.esm.js.LICENSE.txt +1 -1
  119. package/dist/spacer.cjs.js +1 -1
  120. package/dist/spacer.cjs.js.LICENSE.txt +1 -1
  121. package/dist/spacer.esm.js.LICENSE.txt +1 -1
  122. package/dist/stack.cjs.js +1 -1
  123. package/dist/stack.cjs.js.LICENSE.txt +1 -1
  124. package/dist/stack.esm.js.LICENSE.txt +1 -1
  125. package/dist/stacker.cjs.js.LICENSE.txt +1 -1
  126. package/dist/stacker.esm.js.LICENSE.txt +1 -1
  127. package/dist/table.cjs.js +1 -1
  128. package/dist/table.cjs.js.LICENSE.txt +1 -1
  129. package/dist/table.esm.js.LICENSE.txt +1 -1
  130. package/dist/text-field.cjs.js +1 -1
  131. package/dist/text-field.cjs.js.LICENSE.txt +1 -1
  132. package/dist/text-field.esm.js.LICENSE.txt +1 -1
  133. package/dist/text.cjs.js +1 -1
  134. package/dist/text.cjs.js.LICENSE.txt +1 -1
  135. package/dist/text.esm.js.LICENSE.txt +1 -1
  136. package/dist/theme.cjs.js.LICENSE.txt +1 -1
  137. package/dist/theme.esm.js.LICENSE.txt +1 -1
  138. package/dist/transform-anim.cjs.js.LICENSE.txt +1 -1
  139. package/dist/transform-anim.esm.js.LICENSE.txt +1 -1
  140. package/dist/ulist.cjs.js +1 -1
  141. package/dist/ulist.cjs.js.LICENSE.txt +1 -1
  142. package/dist/ulist.esm.js.LICENSE.txt +1 -1
  143. package/dist/video.cjs.js +1 -1
  144. package/dist/video.cjs.js.LICENSE.txt +1 -1
  145. package/dist/video.esm.js.LICENSE.txt +1 -1
  146. package/dist/wrap.cjs.js +1 -1
  147. package/dist/wrap.cjs.js.LICENSE.txt +1 -1
  148. package/dist/wrap.esm.js.LICENSE.txt +1 -1
  149. package/dist/zoom-card.cjs.js +1 -1
  150. package/dist/zoom-card.cjs.js.LICENSE.txt +1 -1
  151. package/dist/zoom-card.esm.js.LICENSE.txt +1 -1
  152. package/layout/animator.js +1 -1
  153. package/layout/audio.js +1 -1
  154. package/layout/audionew.js +1 -1
  155. package/layout/base.js +1 -1
  156. package/layout/beta-desktop-bar.js +1 -1
  157. package/layout/beta-mobile-bar.js +1 -1
  158. package/layout/button.js +1 -1
  159. package/layout/center.js +1 -1
  160. package/layout/checkbox.js +1 -1
  161. package/layout/circle.js +1 -1
  162. package/layout/code.js +1 -1
  163. package/layout/container.js +1 -1
  164. package/layout/dropdown-2025.js +1 -1
  165. package/layout/flex-card.js +1 -1
  166. package/layout/flex-grid.js +1 -1
  167. package/layout/flex-row.js +1 -1
  168. package/layout/form-components/custom.js +1 -1
  169. package/layout/form-components/data-list.js +1 -1
  170. package/layout/form-components/floating-input.js +1 -1
  171. package/layout/form-components/form-all.js +1 -1
  172. package/layout/form-components/form.js +1 -1
  173. package/layout/form-components/image-picker.js +1 -1
  174. package/layout/form-components/picker.js +1 -1
  175. package/layout/form-components/radio.js +1 -1
  176. package/layout/form-components/radiogroup.js +1 -1
  177. package/layout/form-components/range.js +1 -1
  178. package/layout/free.js +1 -1
  179. package/layout/grid-switcher.js +1 -1
  180. package/layout/grid.js +1 -1
  181. package/layout/horizontal-scroller.js +1 -1
  182. package/layout/image.js +1 -1
  183. package/layout/index.js +1 -1
  184. package/layout/link.js +1 -1
  185. package/layout/list.js +1 -1
  186. package/layout/meta-adder.js +1 -1
  187. package/layout/modal-2025.js +1 -1
  188. package/layout/morph.js +1 -1
  189. package/layout/multiswitcher.js +1 -1
  190. package/layout/nav-bar.js +1 -1
  191. package/layout/nav-factor/custom-div.js +1 -1
  192. package/layout/new-nav-bar.js +1 -1
  193. package/layout/polygon.js +1 -1
  194. package/layout/prerender-site.js +1 -1
  195. package/layout/prerender.js +1 -1
  196. package/layout/progress.js +1 -1
  197. package/layout/row.js +1 -1
  198. package/layout/scroll-video.js +1 -1
  199. package/layout/side-bar.js +1 -1
  200. package/layout/side-nav-bar.js +1 -1
  201. package/layout/simple-bar.js +1 -1
  202. package/layout/slider-2025.js +1 -1
  203. package/layout/spacer.js +1 -1
  204. package/layout/stack.js +1 -1
  205. package/layout/svg.js +1 -1
  206. package/layout/switcher.js +1 -1
  207. package/layout/table.js +1 -1
  208. package/layout/text-field.js +1 -1
  209. package/layout/text.js +1 -1
  210. package/layout/ulist.js +1 -1
  211. package/layout/video.js +1 -1
  212. package/layout/wrap.js +1 -1
  213. package/layout/zoom-card.js +1 -1
  214. package/lib/card-getter.js +1 -1
  215. package/lib/codegen.js +1 -1
  216. package/lib/data.js +1 -1
  217. package/lib/designer.js +1 -1
  218. package/lib/element-mapper.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 +487 -116
  222. package/lib/raster-inspect.js +1 -1
  223. package/lib/raster-ops.js +10 -2
  224. package/lib/raster-presets.js +1 -1
  225. package/lib/scroll-video.js +1 -1
  226. package/lib/seo.js +1 -1
  227. package/lib/stacker.js +1 -1
  228. package/lib/suggest.js +1 -1
  229. package/lib/theme.js +1 -1
  230. package/lib/transform-anim.js +1 -1
  231. package/lib/transition.js +1 -1
  232. package/lib/validate-nodes.js +1 -1
  233. package/package.json +1 -1
package/README.md CHANGED
@@ -76,7 +76,7 @@ Here is the complete working code which uses CDN for convenient testing.
76
76
  <div id="#mount"></div>
77
77
 
78
78
  <script type="module">
79
- import {Des} from "https://www.unpkg.com/nodality@1.0.13/dist/index.esm.js";
79
+ import {Des} from "https://www.unpkg.com/nodality@1.1.10/dist/index.esm.js";
80
80
 
81
81
  let elements = [
82
82
  {
@@ -111,3 +111,73 @@ After running this code:
111
111
  - You will see an `<h1>` element on the screen.
112
112
  - When the user resizes the window and hits the **400–600px** breakpoint, a **stroke effect** will appear on the text, thanks to the `blast` modifier.
113
113
  - The **resulting code** of the UI will also be displayed below the rendered element.
114
+
115
+ ---
116
+
117
+ ## Effects on live elements
118
+
119
+ Nodes are not limited to design changes. A raster node compiles to a GPU
120
+ shader pass over the element it targets, and several nodes aimed at one
121
+ element compose into a **single** pass, in array order:
122
+
123
+ ```js
124
+ const nodes = [
125
+ { op: "dither", target: ["hero"], levels: 6, size: 2 },
126
+ { op: "flow", target: ["hero"], by: "mouse" },
127
+ ];
128
+ ```
129
+
130
+ The source is your live DOM, not an image you exported. Two capture
131
+ backends sit underneath: a snapshot path that works in any WebGL browser,
132
+ and an HTML-in-Canvas path that samples the running element directly
133
+ where the browser supports it. The choice is automatic — if the newer API
134
+ is absent the pipeline falls back rather than failing.
135
+
136
+ Effects do not cost you interaction. Pointer input is resolved through
137
+ the inverse of the compiled transformation and re-dispatched, so links
138
+ and buttons under an effect still work — including where the content is
139
+ hosted inside the canvas and the browser's own hit testing cannot reach
140
+ it.
141
+
142
+ ## Transitions as data
143
+
144
+ A `morph` node says which element becomes which, and on what interaction.
145
+ There is no timeline to drive and no capture to manage:
146
+
147
+ ```js
148
+ const nodes = [
149
+ { op: "morph", from: "topnav",
150
+ to: { About: "about", Services: "offer", Contact: "contact" },
151
+ effect: "t-vhs", duration: 900, back: true },
152
+ ];
153
+ ```
154
+
155
+ `from` and `to` name ids in your elements array; `back: true` wires the
156
+ destination's own button to return. Mapping is by link label rather than
157
+ position, because a responsive nav renders a different set of links per
158
+ breakpoint.
159
+
160
+ ## For AI agents
161
+
162
+ `nodality mcp` runs a Model Context Protocol server over stdio, so an
163
+ agent can write interfaces against the real vocabulary instead of
164
+ guessing at it:
165
+
166
+ ```json
167
+ { "mcpServers": { "nodality": { "command": "npx", "args": ["nodality", "mcp"] } } }
168
+ ```
169
+
170
+ Three tools: `list_ops` returns the op registry as data — every op with
171
+ its stage, parameters, units, defaults; `validate_nodes` checks a node
172
+ array and returns a machine-readable report with did-you-mean
173
+ suggestions, so `{ op: "dithr" }` comes back as `UNKNOWN_OP` suggesting
174
+ `dither` rather than rendering nothing at all; `preview` renders an
175
+ `(E, N)` pair to a self-contained HTML file. `preview` needs `jsdom` in
176
+ your project (`npm i -D jsdom`) — it is required only for prerendering,
177
+ so the library does not bundle it.
178
+
179
+ The same validator is available directly:
180
+
181
+ ```js
182
+ import { validateNodes, describeOps } from "nodality/validate";
183
+ ```