nodality 1.0.221 → 1.1.0

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 (279) hide show
  1. package/API.md +227 -0
  2. package/bin/nodality.js +64 -0
  3. package/dist/animator.cjs.js +1 -1
  4. package/dist/animator.cjs.js.LICENSE.txt +1 -1
  5. package/dist/animator.esm.js +1 -1
  6. package/dist/animator.esm.js.LICENSE.txt +1 -1
  7. package/dist/audionew.cjs.js +1 -1
  8. package/dist/audionew.cjs.js.LICENSE.txt +1 -1
  9. package/dist/audionew.esm.js +1 -1
  10. package/dist/audionew.esm.js.LICENSE.txt +1 -1
  11. package/dist/base.cjs.js +1 -1
  12. package/dist/base.cjs.js.LICENSE.txt +1 -1
  13. package/dist/base.esm.js +1 -1
  14. package/dist/base.esm.js.LICENSE.txt +1 -1
  15. package/dist/beta-desktop-bar.cjs.js +1 -1
  16. package/dist/beta-desktop-bar.cjs.js.LICENSE.txt +1 -1
  17. package/dist/beta-desktop-bar.esm.js +1 -1
  18. package/dist/beta-desktop-bar.esm.js.LICENSE.txt +1 -1
  19. package/dist/beta-mobile-bar.cjs.js +1 -1
  20. package/dist/beta-mobile-bar.cjs.js.LICENSE.txt +1 -1
  21. package/dist/beta-mobile-bar.esm.js +1 -1
  22. package/dist/beta-mobile-bar.esm.js.LICENSE.txt +1 -1
  23. package/dist/bundle.umd.js +1 -1
  24. package/dist/bundle.umd.js.LICENSE.txt +131 -1
  25. package/dist/button.cjs.js +1 -1
  26. package/dist/button.cjs.js.LICENSE.txt +1 -1
  27. package/dist/button.esm.js +1 -1
  28. package/dist/button.esm.js.LICENSE.txt +1 -1
  29. package/dist/card-getter.cjs.js.LICENSE.txt +1 -1
  30. package/dist/card-getter.esm.js.LICENSE.txt +1 -1
  31. package/dist/center.cjs.js +1 -1
  32. package/dist/center.cjs.js.LICENSE.txt +1 -1
  33. package/dist/center.esm.js +1 -1
  34. package/dist/center.esm.js.LICENSE.txt +1 -1
  35. package/dist/checkbox.cjs.js +1 -1
  36. package/dist/checkbox.cjs.js.LICENSE.txt +1 -1
  37. package/dist/checkbox.esm.js +1 -1
  38. package/dist/checkbox.esm.js.LICENSE.txt +1 -1
  39. package/dist/code.cjs.js +1 -1
  40. package/dist/code.cjs.js.LICENSE.txt +1 -1
  41. package/dist/code.esm.js +1 -1
  42. package/dist/code.esm.js.LICENSE.txt +1 -1
  43. package/dist/container.cjs.js +1 -1
  44. package/dist/container.cjs.js.LICENSE.txt +1 -1
  45. package/dist/container.esm.js +1 -1
  46. package/dist/container.esm.js.LICENSE.txt +1 -1
  47. package/dist/data-list.cjs.js +1 -1
  48. package/dist/data-list.cjs.js.LICENSE.txt +1 -1
  49. package/dist/data-list.esm.js +1 -1
  50. package/dist/data-list.esm.js.LICENSE.txt +1 -1
  51. package/dist/designer.cjs.js +1 -1
  52. package/dist/designer.cjs.js.LICENSE.txt +97 -1
  53. package/dist/designer.esm.js +1 -1
  54. package/dist/designer.esm.js.LICENSE.txt +97 -1
  55. package/dist/element-mapper.cjs.js +1 -1
  56. package/dist/element-mapper.cjs.js.LICENSE.txt +17 -1
  57. package/dist/element-mapper.esm.js +1 -1
  58. package/dist/element-mapper.esm.js.LICENSE.txt +17 -1
  59. package/dist/finalresult.esm.js +1 -1
  60. package/dist/finalresult.esm.js.LICENSE.txt +158 -1
  61. package/dist/flex-card.cjs.js +1 -1
  62. package/dist/flex-card.cjs.js.LICENSE.txt +1 -1
  63. package/dist/flex-card.esm.js +1 -1
  64. package/dist/flex-card.esm.js.LICENSE.txt +1 -1
  65. package/dist/flex-grid.cjs.js +1 -1
  66. package/dist/flex-grid.cjs.js.LICENSE.txt +1 -1
  67. package/dist/flex-grid.esm.js +1 -1
  68. package/dist/flex-grid.esm.js.LICENSE.txt +1 -1
  69. package/dist/flex-row.cjs.js +1 -1
  70. package/dist/flex-row.cjs.js.LICENSE.txt +1 -1
  71. package/dist/flex-row.esm.js +1 -1
  72. package/dist/flex-row.esm.js.LICENSE.txt +1 -1
  73. package/dist/floating-input.cjs.js +1 -1
  74. package/dist/floating-input.cjs.js.LICENSE.txt +1 -1
  75. package/dist/floating-input.esm.js +1 -1
  76. package/dist/floating-input.esm.js.LICENSE.txt +1 -1
  77. package/dist/free.cjs.js +1 -1
  78. package/dist/free.cjs.js.LICENSE.txt +1 -1
  79. package/dist/free.esm.js +1 -1
  80. package/dist/free.esm.js.LICENSE.txt +1 -1
  81. package/dist/horizontal-scroller.cjs.js.LICENSE.txt +1 -1
  82. package/dist/horizontal-scroller.esm.js.LICENSE.txt +1 -1
  83. package/dist/image-picker.cjs.js +1 -1
  84. package/dist/image-picker.cjs.js.LICENSE.txt +1 -1
  85. package/dist/image-picker.esm.js +1 -1
  86. package/dist/image-picker.esm.js.LICENSE.txt +1 -1
  87. package/dist/image.cjs.js +1 -1
  88. package/dist/image.cjs.js.LICENSE.txt +1 -1
  89. package/dist/image.esm.js +1 -1
  90. package/dist/image.esm.js.LICENSE.txt +1 -1
  91. package/dist/index.cjs.js +1 -1
  92. package/dist/index.cjs.js.LICENSE.txt +158 -1
  93. package/dist/index.d.ts +962 -0
  94. package/dist/index.esm.js +1 -1
  95. package/dist/index.esm.js.LICENSE.txt +158 -1
  96. package/dist/keyframe-animation.cjs.js.LICENSE.txt +1 -1
  97. package/dist/keyframe-animation.esm.js.LICENSE.txt +1 -1
  98. package/dist/link-getter.cjs.js +1 -1
  99. package/dist/link-getter.cjs.js.LICENSE.txt +1 -1
  100. package/dist/link-getter.esm.js +1 -1
  101. package/dist/link-getter.esm.js.LICENSE.txt +1 -1
  102. package/dist/link.cjs.js +1 -1
  103. package/dist/link.cjs.js.LICENSE.txt +1 -1
  104. package/dist/link.esm.js +1 -1
  105. package/dist/link.esm.js.LICENSE.txt +1 -1
  106. package/dist/meta-adder.cjs.js +1 -1
  107. package/dist/meta-adder.cjs.js.LICENSE.txt +1 -1
  108. package/dist/meta-adder.esm.js +1 -1
  109. package/dist/meta-adder.esm.js.LICENSE.txt +1 -1
  110. package/dist/modal-2025.cjs.js +1 -1
  111. package/dist/modal-2025.cjs.js.LICENSE.txt +1 -1
  112. package/dist/modal-2025.esm.js +1 -1
  113. package/dist/modal-2025.esm.js.LICENSE.txt +1 -1
  114. package/dist/multiswitcher.cjs.js +1 -1
  115. package/dist/multiswitcher.cjs.js.LICENSE.txt +1 -1
  116. package/dist/multiswitcher.esm.js +1 -1
  117. package/dist/multiswitcher.esm.js.LICENSE.txt +1 -1
  118. package/dist/new-nav-bar.cjs.js +1 -1
  119. package/dist/new-nav-bar.cjs.js.LICENSE.txt +1 -1
  120. package/dist/new-nav-bar.esm.js +1 -1
  121. package/dist/new-nav-bar.esm.js.LICENSE.txt +1 -1
  122. package/dist/picker.cjs.js +1 -1
  123. package/dist/picker.cjs.js.LICENSE.txt +1 -1
  124. package/dist/picker.esm.js +1 -1
  125. package/dist/picker.esm.js.LICENSE.txt +1 -1
  126. package/dist/progress.cjs.js +1 -1
  127. package/dist/progress.cjs.js.LICENSE.txt +1 -1
  128. package/dist/progress.esm.js +1 -1
  129. package/dist/progress.esm.js.LICENSE.txt +1 -1
  130. package/dist/radio.cjs.js +1 -1
  131. package/dist/radio.cjs.js.LICENSE.txt +1 -1
  132. package/dist/radio.esm.js +1 -1
  133. package/dist/radio.esm.js.LICENSE.txt +1 -1
  134. package/dist/range.cjs.js +1 -1
  135. package/dist/range.cjs.js.LICENSE.txt +1 -1
  136. package/dist/range.esm.js +1 -1
  137. package/dist/range.esm.js.LICENSE.txt +1 -1
  138. package/dist/scroll-video.cjs.js.LICENSE.txt +1 -1
  139. package/dist/scroll-video.esm.js.LICENSE.txt +1 -1
  140. package/dist/side-bar.cjs.js +1 -1
  141. package/dist/side-bar.cjs.js.LICENSE.txt +1 -1
  142. package/dist/side-bar.esm.js +1 -1
  143. package/dist/side-bar.esm.js.LICENSE.txt +1 -1
  144. package/dist/side-nav-bar.cjs.js +1 -1
  145. package/dist/side-nav-bar.cjs.js.LICENSE.txt +1 -1
  146. package/dist/side-nav-bar.esm.js +1 -1
  147. package/dist/side-nav-bar.esm.js.LICENSE.txt +1 -1
  148. package/dist/simple-bar.cjs.js +1 -1
  149. package/dist/simple-bar.cjs.js.LICENSE.txt +1 -1
  150. package/dist/simple-bar.esm.js +1 -1
  151. package/dist/simple-bar.esm.js.LICENSE.txt +1 -1
  152. package/dist/slider-2025.cjs.js +1 -1
  153. package/dist/slider-2025.cjs.js.LICENSE.txt +1 -1
  154. package/dist/slider-2025.esm.js +1 -1
  155. package/dist/slider-2025.esm.js.LICENSE.txt +1 -1
  156. package/dist/spacer.cjs.js +1 -1
  157. package/dist/spacer.cjs.js.LICENSE.txt +1 -1
  158. package/dist/spacer.esm.js +1 -1
  159. package/dist/spacer.esm.js.LICENSE.txt +1 -1
  160. package/dist/stack.cjs.js +1 -1
  161. package/dist/stack.cjs.js.LICENSE.txt +1 -1
  162. package/dist/stack.esm.js +1 -1
  163. package/dist/stack.esm.js.LICENSE.txt +1 -1
  164. package/dist/stacker.cjs.js.LICENSE.txt +1 -1
  165. package/dist/stacker.esm.js.LICENSE.txt +1 -1
  166. package/dist/table.cjs.js +1 -1
  167. package/dist/table.cjs.js.LICENSE.txt +1 -1
  168. package/dist/table.esm.js +1 -1
  169. package/dist/table.esm.js.LICENSE.txt +1 -1
  170. package/dist/text-field.cjs.js +1 -1
  171. package/dist/text-field.cjs.js.LICENSE.txt +1 -1
  172. package/dist/text-field.esm.js +1 -1
  173. package/dist/text-field.esm.js.LICENSE.txt +1 -1
  174. package/dist/text.cjs.js +1 -1
  175. package/dist/text.cjs.js.LICENSE.txt +1 -1
  176. package/dist/text.esm.js +1 -1
  177. package/dist/text.esm.js.LICENSE.txt +1 -1
  178. package/dist/theme.cjs.js.LICENSE.txt +1 -1
  179. package/dist/theme.esm.js.LICENSE.txt +1 -1
  180. package/dist/transform-anim.cjs.js.LICENSE.txt +1 -1
  181. package/dist/transform-anim.esm.js.LICENSE.txt +1 -1
  182. package/dist/ulist.cjs.js +1 -1
  183. package/dist/ulist.cjs.js.LICENSE.txt +1 -1
  184. package/dist/ulist.esm.js +1 -1
  185. package/dist/ulist.esm.js.LICENSE.txt +1 -1
  186. package/dist/video.cjs.js +1 -1
  187. package/dist/video.cjs.js.LICENSE.txt +1 -1
  188. package/dist/video.esm.js +1 -1
  189. package/dist/video.esm.js.LICENSE.txt +1 -1
  190. package/dist/wrap.cjs.js +1 -1
  191. package/dist/wrap.cjs.js.LICENSE.txt +1 -1
  192. package/dist/wrap.esm.js +1 -1
  193. package/dist/wrap.esm.js.LICENSE.txt +1 -1
  194. package/dist/zoom-card.cjs.js +1 -1
  195. package/dist/zoom-card.cjs.js.LICENSE.txt +1 -1
  196. package/dist/zoom-card.esm.js +1 -1
  197. package/dist/zoom-card.esm.js.LICENSE.txt +1 -1
  198. package/examples/custom-raster-op.js +174 -0
  199. package/layout/animator.js +30 -2
  200. package/layout/audio.js +1 -1
  201. package/layout/audionew.js +1 -1
  202. package/layout/base.js +1 -1
  203. package/layout/beta-desktop-bar.js +1 -1
  204. package/layout/beta-mobile-bar.js +3 -2
  205. package/layout/button.js +1 -1
  206. package/layout/center.js +1 -1
  207. package/layout/checkbox.js +2 -2
  208. package/layout/circle.js +3 -2
  209. package/layout/code.js +3 -2
  210. package/layout/container.js +3 -4
  211. package/layout/dropdown-2025.js +1 -1
  212. package/layout/flex-card.js +1 -1
  213. package/layout/flex-grid.js +1 -1
  214. package/layout/flex-row.js +3 -2
  215. package/layout/form-components/custom.js +1 -1
  216. package/layout/form-components/data-list.js +2 -2
  217. package/layout/form-components/floating-input.js +2 -2
  218. package/layout/form-components/form-all.js +2 -2
  219. package/layout/form-components/form.js +1 -1
  220. package/layout/form-components/image-picker.js +1 -1
  221. package/layout/form-components/picker.js +2 -2
  222. package/layout/form-components/radio.js +2 -2
  223. package/layout/form-components/radiogroup.js +2 -2
  224. package/layout/form-components/range.js +2 -2
  225. package/layout/free.js +3 -4
  226. package/layout/grid-switcher.js +1 -1
  227. package/layout/grid.js +1 -1
  228. package/layout/horizontal-scroller.js +1 -1
  229. package/layout/image.js +1 -1
  230. package/layout/index.js +1 -1
  231. package/layout/link.js +5 -5
  232. package/layout/list.js +3 -4
  233. package/layout/meta-adder.js +1 -1
  234. package/layout/modal-2025.js +1 -1
  235. package/layout/morph.js +1003 -0
  236. package/layout/multiswitcher.js +11 -3
  237. package/layout/nav-bar.js +2 -3
  238. package/layout/nav-factor/custom-div.js +2 -2
  239. package/layout/new-nav-bar.js +11 -4
  240. package/layout/polygon.js +3 -4
  241. package/layout/prerender-site.js +1 -1
  242. package/layout/prerender.js +1 -1
  243. package/layout/progress.js +1 -1
  244. package/layout/row.js +1 -1
  245. package/layout/scroll-video.js +1 -1
  246. package/layout/side-bar.js +1 -1
  247. package/layout/side-nav-bar.js +1 -1
  248. package/layout/simple-bar.js +1 -1
  249. package/layout/slider-2025.js +1 -1
  250. package/layout/spacer.js +1 -1
  251. package/layout/stack.js +1 -1
  252. package/layout/svg.js +3 -4
  253. package/layout/switcher.js +1 -1
  254. package/layout/table.js +1 -1
  255. package/layout/text-field.js +1 -1
  256. package/layout/text.js +5 -5
  257. package/layout/ulist.js +1 -1
  258. package/layout/video.js +1 -1
  259. package/layout/wrap.js +1 -1
  260. package/layout/zoom-card.js +1 -1
  261. package/lib/card-getter.js +1 -1
  262. package/lib/codegen.js +62 -0
  263. package/lib/data.js +37 -1
  264. package/lib/designer.js +18 -1
  265. package/lib/element-mapper.js +351 -247
  266. package/lib/keyframe-animation.js +1 -1
  267. package/lib/link-getter.js +1 -1
  268. package/lib/morph-node.js +424 -0
  269. package/lib/raster-inspect.js +409 -0
  270. package/lib/raster-ops.js +1980 -81
  271. package/lib/raster-presets.js +329 -0
  272. package/lib/scroll-video.js +1 -1
  273. package/lib/seo.js +28 -1
  274. package/lib/stacker.js +1 -1
  275. package/lib/suggest.js +66 -0
  276. package/lib/theme.js +1 -1
  277. package/lib/transform-anim.js +1 -1
  278. package/lib/transition.js +205 -0
  279. package/package.json +20 -7
package/API.md ADDED
@@ -0,0 +1,227 @@
1
+ # Nodality API reference
2
+
3
+ Generated from the documentation site — do not edit by hand.
4
+ Run `node scripts/generate-llms.mjs` in the docs repo to refresh.
5
+
6
+ This file ships inside the npm package so that a coding agent reading
7
+ `node_modules/nodality/` has the API to hand without fetching a website.
8
+
9
+ ## The shape of everything
10
+
11
+ ```js
12
+ import { Des } from "nodality";
13
+
14
+ const elements = [
15
+ { type: "h1", text: "Hello" } // elements take `text`, never `value`
16
+ ];
17
+
18
+ const nodes = [
19
+ { op: "blast" } // nodes carry an `op`
20
+ ];
21
+
22
+ new Des()
23
+ .nodes(nodes)
24
+ .add(elements)
25
+ .set({ mount: "#mount" });
26
+ ```
27
+
28
+ Full documentation: https://nodalityjs.github.io
29
+ Machine-readable index: https://nodalityjs.github.io/llms.txt
30
+
31
+ ## Pages
32
+
33
+ ### api
34
+
35
+ - **Button** — `button.js`
36
+ https://nodalityjs.github.io/docs/api/button
37
+ - **Center** — `center.js`
38
+ https://nodalityjs.github.io/docs/api/center
39
+ - **FlexGrid** — `flex-grid.js`
40
+ https://nodalityjs.github.io/docs/api/flexgrid
41
+ - **FlexRow** — `flex-row.js`
42
+ https://nodalityjs.github.io/docs/api/flexrow
43
+ - **Image** — `image.js`
44
+ https://nodalityjs.github.io/docs/api/image
45
+ - **Link** — `link.js`
46
+ https://nodalityjs.github.io/docs/api/link
47
+ - **Picker** — `picker.js`
48
+ https://nodalityjs.github.io/docs/api/picker
49
+ - **Text** — `text.js`
50
+ https://nodalityjs.github.io/docs/api/text
51
+ - **TextField** — `text-field.js`
52
+ https://nodalityjs.github.io/docs/api/textfield
53
+ - **UList** — `ulist.js`
54
+ https://nodalityjs.github.io/docs/api/ulist
55
+ - **Wrapper** — `container.js`
56
+ https://nodalityjs.github.io/docs/api/wrapper
57
+
58
+ ### basics
59
+
60
+ - **Basics** — This library employs an unique approach to building static websites using declarative UI components and nodes that will style them.
61
+ https://nodalityjs.github.io/docs/basics/README
62
+ - **Animation** — Create striking animations using JS responsive API.
63
+ https://nodalityjs.github.io/docs/basics/animation
64
+ - **CDN** — To use Nodality with CDN, use this code:
65
+ https://nodalityjs.github.io/docs/basics/cdn
66
+ - **Custom elements** — To create a custom element using Nodality library, you extend the class.
67
+ https://nodalityjs.github.io/docs/basics/customElements
68
+ - **Designer** — Designer instance accepts nodes and elements arrays.
69
+ https://nodalityjs.github.io/docs/basics/designer
70
+ - **Nodes** — Nodes allow you to simply you to modify the elements.
71
+ https://nodalityjs.github.io/docs/basics/nodes
72
+ - **Getting started** — This library works with *elements* represented as an array of HTML entities, and *nodes* that control the behavior of elements.
73
+ https://nodalityjs.github.io/docs/basics/start
74
+
75
+ ### elements
76
+
77
+ - **Card** — Create elements containing , and elements.
78
+ https://nodalityjs.github.io/docs/elements/cards
79
+ - **Circle** — You can use the element to display a simple circle.
80
+ https://nodalityjs.github.io/docs/elements/circle
81
+ - **Code** — You can use the element to display a block of code.
82
+ https://nodalityjs.github.io/docs/elements/code
83
+ - **Dropdown** — Dropdown is used to create expand area upon click or hover.
84
+ https://nodalityjs.github.io/docs/elements/dropdown
85
+ - **Free** — Create free alement to use in conjuction with [Layout](/library/nodes/layout) node.
86
+ https://nodalityjs.github.io/docs/elements/free
87
+ - **AreaGrid** — The `grid` creates an instance of the `AreaGrid` element, designed to organize child elements in a grid layout.
88
+ https://nodalityjs.github.io/docs/elements/grid
89
+ - **HScroller** — You can use the to make a horizontally scrolling gallery.
90
+ https://nodalityjs.github.io/docs/elements/hscroller
91
+ - **Image** — Image allows you to create simple image
92
+ https://nodalityjs.github.io/docs/elements/image
93
+ - **Keyset** — Keyset allows you to set custom CSS properties on elements.
94
+ https://nodalityjs.github.io/docs/elements/keyset
95
+ - **Link** — To create a simple link use the following element.
96
+ https://nodalityjs.github.io/docs/elements/link
97
+ - **Modal** — To create a simple modal.
98
+ https://nodalityjs.github.io/docs/elements/modal
99
+ - **Navigation** — To create a simple navigation use element
100
+ https://nodalityjs.github.io/docs/elements/navigation
101
+ - **Offcanvas** — To create a simple navigation use element.
102
+ https://nodalityjs.github.io/docs/elements/offcanvas
103
+ - **Polygon** — You can use the element to display a block of code.
104
+ https://nodalityjs.github.io/docs/elements/polygon
105
+ - **Elements** — Elements are used to create UI.
106
+ https://nodalityjs.github.io/docs/elements/readme
107
+ - **Responsive wrapper** — The `Wrapper` class allows you to create a responsive element that can dynamically switch its layout between row and column orientations based on specified brea
108
+ https://nodalityjs.github.io/docs/elements/responsive-wrapper
109
+ - **Complex** — The `Wrapper` class allows you to create a responsive element that can dynamically switch its layout between row and column orientations based on specified brea
110
+ https://nodalityjs.github.io/docs/elements/responsive
111
+ - **Row** — Row creates a simple element to allow you to organise children in a row.
112
+ https://nodalityjs.github.io/docs/elements/row
113
+ - **SideNavigation** — To create side navigation use the structure.
114
+ https://nodalityjs.github.io/docs/elements/sidenavigation
115
+ - **Slider** — To create a simple slider, use structure
116
+ https://nodalityjs.github.io/docs/elements/slider
117
+ - **Stack** — To create a simple stack, use object.
118
+ https://nodalityjs.github.io/docs/elements/stack
119
+ - **Switcher** — Switcher allows you to display different views at different breakpoints.
120
+ https://nodalityjs.github.io/docs/elements/switcher
121
+ - **Table** — To create a simple modal.
122
+ https://nodalityjs.github.io/docs/elements/table
123
+ - **Text** — Headers are used to display text.
124
+ https://nodalityjs.github.io/docs/elements/text
125
+ - **UList** — You can use the element to display a list of items.
126
+ https://nodalityjs.github.io/docs/elements/ulist
127
+ - **WeightLayout** — WeightLayout allows you to create flexible layout using attraction weights inside element.
128
+ https://nodalityjs.github.io/docs/elements/weightLayout
129
+ - **Wrap** — Creates a simple wrapper that wraps other elements.
130
+ https://nodalityjs.github.io/docs/elements/wrap
131
+ - **ZoomCard** — To use image as background for the entire card use the element with a background.
132
+ https://nodalityjs.github.io/docs/elements/zoom-card
133
+
134
+ ### forms
135
+
136
+ - **Button** — Creates a simple button.
137
+ https://nodalityjs.github.io/docs/forms/button
138
+ - **Checkbox** — A checkbox is used to to select a single option, akin to answering yes or no.
139
+ https://nodalityjs.github.io/docs/forms/checkbox
140
+ - **Complex form** — In this example, the complete form will be shown.
141
+ https://nodalityjs.github.io/docs/forms/complex-form
142
+ - **FilePicker** — Creates a simple filepicker.
143
+ https://nodalityjs.github.io/docs/forms/filepicker
144
+ - **LabelField** — LabelField allows you to create textfield that turns placeholder text into a label.
145
+ https://nodalityjs.github.io/docs/forms/labelfield
146
+ - **Picker** — To create the picker, use the the delcaration in the elements array.
147
+ https://nodalityjs.github.io/docs/forms/picker
148
+ - **Radio** — The `radio` element creates a group of radio buttons for user selection.
149
+ https://nodalityjs.github.io/docs/forms/radio
150
+ - **Basics** — You can create forms easily with this library.
151
+ https://nodalityjs.github.io/docs/forms/readme
152
+ - **TextField** — To create a simple textfield, use the element.
153
+ https://nodalityjs.github.io/docs/forms/textfield
154
+ - **Usage with PHP** — You can use the form with PHP.
155
+ https://nodalityjs.github.io/docs/forms/usewithphp
156
+
157
+ ### guides
158
+
159
+ - **Guides** — Guides provide simple cookbooks.
160
+ https://nodalityjs.github.io/docs/guides/README
161
+ - **Deploy** — To deploy your project, first create new Nodality application by running the following command:
162
+ https://nodalityjs.github.io/docs/guides/deploy
163
+ - **Integration** — You can easily integrate this library with React.js and Vue.js libraries.
164
+ https://nodalityjs.github.io/docs/guides/integration
165
+ - **Testing** — Nodality uses Playwright for testing.
166
+ https://nodalityjs.github.io/docs/guides/testing
167
+ - **Tooling** — Create Nodality package allows you to quickly bootstrap a new Nodality application.
168
+ https://nodalityjs.github.io/docs/guides/tooling
169
+ - **Transitions** — This library supports the **CSS View Transition API** to enable smooth animations when navigating between pages.\
170
+ https://nodalityjs.github.io/docs/guides/transitions
171
+
172
+ ### nodes
173
+
174
+ - **Animation** — Animation allows you to animate elements.
175
+ https://nodalityjs.github.io/docs/nodes/animation
176
+ - **Blast** — Blast allows user to create outline around element contents.
177
+ https://nodalityjs.github.io/docs/nodes/blast
178
+ - **Copy** — To use the copy operation, we use these nodes:
179
+ https://nodalityjs.github.io/docs/nodes/copy
180
+ - **Filter** — To use the filter, we use this:
181
+ https://nodalityjs.github.io/docs/nodes/filter
182
+ - **Gradient** — To add gradient to an element, use the following object:
183
+ https://nodalityjs.github.io/docs/nodes/gradient
184
+ - **Layout** — To quickly generate common layout variation, we can use the following:
185
+ https://nodalityjs.github.io/docs/nodes/layout
186
+ - **LinkStyle** — Link style operation allows you to style links ( elements.).
187
+ https://nodalityjs.github.io/docs/nodes/linkStyle
188
+ - **Nodes** — Nodes allow you to edit design of the elements.
189
+ https://nodalityjs.github.io/docs/nodes/nodes
190
+ - **Nodes** — Nodes modify beahaviour of the elements.
191
+ https://nodalityjs.github.io/docs/nodes/readme
192
+ - **Shadow** — To use the default shadow, we use the op.
193
+ https://nodalityjs.github.io/docs/nodes/shadow
194
+ - **Span** — Span is a part of text that can have different contents and design from the rest of your text.
195
+ https://nodalityjs.github.io/docs/nodes/span
196
+ - **Transform** — To use the filter, we use this node:
197
+ https://nodalityjs.github.io/docs/nodes/transform
198
+
199
+ ### raster
200
+
201
+ - **Raster basics** — Raster ops run your element through a WebGL shader.
202
+ https://nodalityjs.github.io/docs/raster/basics
203
+ - **Composing a pipeline** — A chain is not a list of passes.
204
+ https://nodalityjs.github.io/docs/raster/composition
205
+ - **Raster ops** — Every node has an `op` and a set of options.
206
+ https://nodalityjs.github.io/docs/raster/ops
207
+
208
+ ### scrollanimation
209
+
210
+ - **Basics** — To create smooth scroll animations you can use the following:
211
+ https://nodalityjs.github.io/docs/scrollanimation/basics
212
+ - **Scroll Animation** — Create engaging scroll animation
213
+ https://nodalityjs.github.io/docs/scrollanimation/index
214
+ - **ScrollVideo** — Play video as you scroll.
215
+ https://nodalityjs.github.io/docs/scrollanimation/scrollvideo
216
+ - **Together** — Here is how you can combine the elements using the element.
217
+ https://nodalityjs.github.io/docs/scrollanimation/together
218
+ - **TransformAnimation** — Transform element as you scroll down.
219
+ https://nodalityjs.github.io/docs/scrollanimation/transformanimation
220
+
221
+ ### ssg
222
+
223
+ - **Prerender API** — The CLI covers the common case.
224
+ https://nodalityjs.github.io/docs/ssg/api
225
+ - **Prerendering** — Nodality builds your page in the browser.
226
+ https://nodalityjs.github.io/docs/ssg/prerender
227
+
package/bin/nodality.js CHANGED
@@ -867,6 +867,70 @@ async function runStage(args) {
867
867
  fs.mkdirSync(path.dirname(dst), { recursive: true });
868
868
  fs.copyFileSync(src, dst);
869
869
  console.log(`[nodality] stage: bundle → ${path.relative(cwd, dst)}`);
870
+
871
+ // 1b. The bundle does not contain everything it needs. The build
872
+ // externalises raster-ops (so every entry shares ONE op
873
+ // registry) and the layout components, so the bundle emits real
874
+ // `import "../lib/..."` / `"../layout/..."` statements resolved
875
+ // relative to wherever it is SERVED from.
876
+ //
877
+ // Inside the installed package those resolve. Copy the bundle
878
+ // somewhere else — which is exactly what this command does — and
879
+ // every one of them 404s. The failure is silent: the module
880
+ // graph aborts, nothing renders, and the library itself reports
881
+ // no error. A real site (gesos) is how this was found.
882
+ //
883
+ // Walk the graph rather than keep a hand-written list: the first
884
+ // version of this fix listed two filenames and missed the nine
885
+ // ../layout/* externals entirely.
886
+ const readIfExists = (f) => {
887
+ try { return fs.readFileSync(f, "utf8"); } catch (e) { return null; }
888
+ };
889
+ const relSpecs = (code) => {
890
+ const out = [];
891
+ const re = /(?:import|export)[^'"]*?from\s*["'](\.[^"']+)["']|import\s*\(\s*["'](\.[^"']+)["']\s*\)|import\s*["'](\.[^"']+)["']/g;
892
+ let m;
893
+ while ((m = re.exec(code))) out.push(m[1] || m[2] || m[3]);
894
+ return out;
895
+ };
896
+
897
+ // Specifiers in the bundle are relative to dist/, which is where the
898
+ // staged copy sits too — so the same relative path works verbatim.
899
+ const distDir = path.join(pkgRoot, "dist");
900
+ const seen = new Set();
901
+ const queue = relSpecs(fs.readFileSync(src, "utf8"))
902
+ .map((spec) => path.resolve(distDir, spec));
903
+ let copied = 0;
904
+ let missing = 0;
905
+ while (queue.length) {
906
+ const abs = queue.pop();
907
+ if (seen.has(abs)) continue;
908
+ seen.add(abs);
909
+ const rel = path.relative(pkgRoot, abs);
910
+ if (rel.startsWith("..") || path.isAbsolute(rel)) continue;
911
+ const code = readIfExists(abs);
912
+ if (code === null) {
913
+ console.warn(`[nodality] stage: ${rel} missing — the bundle's ` +
914
+ `import of it will 404 at runtime`);
915
+ missing++;
916
+ continue;
917
+ }
918
+ const dest = path.join(uploadDir, rel);
919
+ fs.mkdirSync(path.dirname(dest), { recursive: true });
920
+ fs.writeFileSync(dest, code);
921
+ copied++;
922
+ for (const spec of relSpecs(code)) {
923
+ queue.push(path.resolve(path.dirname(abs), spec));
924
+ }
925
+ }
926
+ if (copied) {
927
+ console.log(`[nodality] stage: ${copied} externalised module(s) → ` +
928
+ `${path.relative(cwd, uploadDir)}/`);
929
+ }
930
+ if (missing) {
931
+ console.warn(`[nodality] stage: ${missing} module(s) could not be ` +
932
+ `staged — the page will 404 on them`);
933
+ }
870
934
  }
871
935
  }
872
936