nodality 1.0.213 → 1.0.215

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 (276) 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 +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 +1 -1
  8. package/dist/audionew.esm.js.LICENSE.txt +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 +1 -1
  14. package/dist/beta-desktop-bar.esm.js.LICENSE.txt +1 -1
  15. package/dist/beta-mobile-bar.cjs.js +1 -1
  16. package/dist/beta-mobile-bar.cjs.js.LICENSE.txt +1 -1
  17. package/dist/beta-mobile-bar.esm.js +1 -1
  18. package/dist/beta-mobile-bar.esm.js.LICENSE.txt +1 -1
  19. package/dist/bundle.umd.js +1 -1
  20. package/dist/bundle.umd.js.LICENSE.txt +1 -1
  21. package/dist/button.cjs.js +1 -1
  22. package/dist/button.cjs.js.LICENSE.txt +1 -1
  23. package/dist/button.esm.js +1 -1
  24. package/dist/button.esm.js.LICENSE.txt +1 -1
  25. package/dist/card-getter.cjs.js.LICENSE.txt +1 -1
  26. package/dist/card-getter.esm.js.LICENSE.txt +1 -1
  27. package/dist/center.cjs.js +1 -1
  28. package/dist/center.cjs.js.LICENSE.txt +1 -1
  29. package/dist/center.esm.js +1 -1
  30. package/dist/center.esm.js.LICENSE.txt +1 -1
  31. package/dist/checkbox.cjs.js +1 -1
  32. package/dist/checkbox.cjs.js.LICENSE.txt +1 -1
  33. package/dist/checkbox.esm.js +1 -1
  34. package/dist/checkbox.esm.js.LICENSE.txt +1 -1
  35. package/dist/code.cjs.js +1 -1
  36. package/dist/code.cjs.js.LICENSE.txt +1 -1
  37. package/dist/code.esm.js +1 -1
  38. package/dist/code.esm.js.LICENSE.txt +1 -1
  39. package/dist/container.cjs.js +1 -1
  40. package/dist/container.cjs.js.LICENSE.txt +1 -1
  41. package/dist/container.esm.js +1 -1
  42. package/dist/container.esm.js.LICENSE.txt +1 -1
  43. package/dist/data-list.cjs.js.LICENSE.txt +1 -1
  44. package/dist/data-list.esm.js.LICENSE.txt +1 -1
  45. package/dist/designer.cjs.js +1 -1
  46. package/dist/designer.cjs.js.LICENSE.txt +1 -1
  47. package/dist/designer.esm.js +1 -1
  48. package/dist/designer.esm.js.LICENSE.txt +1 -1
  49. package/dist/dropdown.cjs.js +1 -1
  50. package/dist/dropdown.cjs.js.LICENSE.txt +1 -1
  51. package/dist/dropdown.esm.js +1 -1
  52. package/dist/dropdown.esm.js.LICENSE.txt +1 -1
  53. package/dist/element-mapper.cjs.js +1 -1
  54. package/dist/element-mapper.cjs.js.LICENSE.txt +1 -1
  55. package/dist/element-mapper.esm.js +1 -1
  56. package/dist/element-mapper.esm.js.LICENSE.txt +1 -1
  57. package/dist/finalresult.esm.js +1 -1
  58. package/dist/finalresult.esm.js.LICENSE.txt +1 -1
  59. package/dist/flex-card.cjs.js +1 -1
  60. package/dist/flex-card.cjs.js.LICENSE.txt +1 -1
  61. package/dist/flex-card.esm.js +1 -1
  62. package/dist/flex-card.esm.js.LICENSE.txt +1 -1
  63. package/dist/flex-grid.cjs.js +1 -1
  64. package/dist/flex-grid.cjs.js.LICENSE.txt +1 -1
  65. package/dist/flex-grid.esm.js +1 -1
  66. package/dist/flex-grid.esm.js.LICENSE.txt +1 -1
  67. package/dist/flex-row.cjs.js +1 -1
  68. package/dist/flex-row.cjs.js.LICENSE.txt +1 -1
  69. package/dist/flex-row.esm.js +1 -1
  70. package/dist/flex-row.esm.js.LICENSE.txt +1 -1
  71. package/dist/floating-input.cjs.js +1 -1
  72. package/dist/floating-input.cjs.js.LICENSE.txt +1 -1
  73. package/dist/floating-input.esm.js +1 -1
  74. package/dist/floating-input.esm.js.LICENSE.txt +1 -1
  75. package/dist/free.cjs.js +1 -1
  76. package/dist/free.cjs.js.LICENSE.txt +1 -1
  77. package/dist/free.esm.js +1 -1
  78. package/dist/free.esm.js.LICENSE.txt +1 -1
  79. package/dist/horizontal-scroller.cjs.js.LICENSE.txt +1 -1
  80. package/dist/horizontal-scroller.esm.js.LICENSE.txt +1 -1
  81. package/dist/image-picker.cjs.js +1 -1
  82. package/dist/image-picker.cjs.js.LICENSE.txt +1 -1
  83. package/dist/image-picker.esm.js +1 -1
  84. package/dist/image-picker.esm.js.LICENSE.txt +1 -1
  85. package/dist/image.cjs.js +1 -1
  86. package/dist/image.cjs.js.LICENSE.txt +1 -1
  87. package/dist/image.esm.js +1 -1
  88. package/dist/image.esm.js.LICENSE.txt +1 -1
  89. package/dist/index.cjs.js +1 -1
  90. package/dist/index.cjs.js.LICENSE.txt +1 -1
  91. package/dist/index.esm.js +1 -1
  92. package/dist/index.esm.js.LICENSE.txt +1 -1
  93. package/dist/keyframe-animation.cjs.js.LICENSE.txt +1 -1
  94. package/dist/keyframe-animation.esm.js.LICENSE.txt +1 -1
  95. package/dist/link-getter.cjs.js +1 -1
  96. package/dist/link-getter.cjs.js.LICENSE.txt +1 -1
  97. package/dist/link-getter.esm.js +1 -1
  98. package/dist/link-getter.esm.js.LICENSE.txt +1 -1
  99. package/dist/link.cjs.js +1 -1
  100. package/dist/link.cjs.js.LICENSE.txt +1 -1
  101. package/dist/link.esm.js +1 -1
  102. package/dist/link.esm.js.LICENSE.txt +1 -1
  103. package/dist/meta-adder.cjs.js.LICENSE.txt +1 -1
  104. package/dist/meta-adder.esm.js.LICENSE.txt +1 -1
  105. package/dist/modal-2025.cjs.js.LICENSE.txt +1 -1
  106. package/dist/modal-2025.esm.js.LICENSE.txt +1 -1
  107. package/dist/multiswitcher.cjs.js +1 -1
  108. package/dist/multiswitcher.cjs.js.LICENSE.txt +1 -1
  109. package/dist/multiswitcher.esm.js +1 -1
  110. package/dist/multiswitcher.esm.js.LICENSE.txt +1 -1
  111. package/dist/new-nav-bar.cjs.js +1 -1
  112. package/dist/new-nav-bar.cjs.js.LICENSE.txt +1 -1
  113. package/dist/new-nav-bar.esm.js +1 -1
  114. package/dist/new-nav-bar.esm.js.LICENSE.txt +1 -1
  115. package/dist/picker.cjs.js +1 -1
  116. package/dist/picker.cjs.js.LICENSE.txt +1 -1
  117. package/dist/picker.esm.js +1 -1
  118. package/dist/picker.esm.js.LICENSE.txt +1 -1
  119. package/dist/progress.cjs.js +1 -1
  120. package/dist/progress.cjs.js.LICENSE.txt +1 -1
  121. package/dist/progress.esm.js +1 -1
  122. package/dist/progress.esm.js.LICENSE.txt +1 -1
  123. package/dist/radio.cjs.js.LICENSE.txt +1 -1
  124. package/dist/radio.esm.js.LICENSE.txt +1 -1
  125. package/dist/range.cjs.js.LICENSE.txt +1 -1
  126. package/dist/range.esm.js.LICENSE.txt +1 -1
  127. package/dist/scroll-video.cjs.js.LICENSE.txt +1 -1
  128. package/dist/scroll-video.esm.js.LICENSE.txt +1 -1
  129. package/dist/side-bar.cjs.js.LICENSE.txt +1 -1
  130. package/dist/side-bar.esm.js.LICENSE.txt +1 -1
  131. package/dist/side-nav-bar.cjs.js +1 -1
  132. package/dist/side-nav-bar.cjs.js.LICENSE.txt +1 -1
  133. package/dist/side-nav-bar.esm.js +1 -1
  134. package/dist/side-nav-bar.esm.js.LICENSE.txt +1 -1
  135. package/dist/simple-bar.cjs.js +1 -1
  136. package/dist/simple-bar.cjs.js.LICENSE.txt +1 -1
  137. package/dist/simple-bar.esm.js +1 -1
  138. package/dist/simple-bar.esm.js.LICENSE.txt +1 -1
  139. package/dist/slider-2025.cjs.js +1 -1
  140. package/dist/slider-2025.cjs.js.LICENSE.txt +1 -1
  141. package/dist/slider-2025.esm.js +1 -1
  142. package/dist/slider-2025.esm.js.LICENSE.txt +1 -1
  143. package/dist/spacer.cjs.js.LICENSE.txt +1 -1
  144. package/dist/spacer.esm.js.LICENSE.txt +1 -1
  145. package/dist/stack.cjs.js.LICENSE.txt +1 -1
  146. package/dist/stack.esm.js.LICENSE.txt +1 -1
  147. package/dist/stacker.cjs.js.LICENSE.txt +1 -1
  148. package/dist/stacker.esm.js.LICENSE.txt +1 -1
  149. package/dist/table.cjs.js +1 -1
  150. package/dist/table.cjs.js.LICENSE.txt +1 -1
  151. package/dist/table.esm.js +1 -1
  152. package/dist/table.esm.js.LICENSE.txt +1 -1
  153. package/dist/text-field.cjs.js +1 -1
  154. package/dist/text-field.cjs.js.LICENSE.txt +1 -1
  155. package/dist/text-field.esm.js +1 -1
  156. package/dist/text-field.esm.js.LICENSE.txt +1 -1
  157. package/dist/text.cjs.js +1 -1
  158. package/dist/text.cjs.js.LICENSE.txt +1 -1
  159. package/dist/text.esm.js +1 -1
  160. package/dist/text.esm.js.LICENSE.txt +1 -1
  161. package/dist/theme.cjs.js.LICENSE.txt +1 -1
  162. package/dist/theme.esm.js.LICENSE.txt +1 -1
  163. package/dist/transform-anim.cjs.js.LICENSE.txt +1 -1
  164. package/dist/transform-anim.esm.js.LICENSE.txt +1 -1
  165. package/dist/ulist.cjs.js +1 -1
  166. package/dist/ulist.cjs.js.LICENSE.txt +1 -1
  167. package/dist/ulist.esm.js +1 -1
  168. package/dist/ulist.esm.js.LICENSE.txt +1 -1
  169. package/dist/video.cjs.js +1 -1
  170. package/dist/video.cjs.js.LICENSE.txt +1 -1
  171. package/dist/video.esm.js +1 -1
  172. package/dist/video.esm.js.LICENSE.txt +1 -1
  173. package/dist/wrap.cjs.js.LICENSE.txt +1 -1
  174. package/dist/wrap.esm.js.LICENSE.txt +1 -1
  175. package/dist/zoom-card.cjs.js +1 -1
  176. package/dist/zoom-card.cjs.js.LICENSE.txt +1 -1
  177. package/dist/zoom-card.esm.js +1 -1
  178. package/dist/zoom-card.esm.js.LICENSE.txt +1 -1
  179. package/layout/animator.js +91 -31
  180. package/layout/audio.js +1 -1
  181. package/layout/audionew.js +1 -1
  182. package/layout/base-2.js +1 -1
  183. package/layout/base.js +1 -1
  184. package/layout/beta-desktop-bar.js +1 -1
  185. package/layout/beta-mobile-bar.js +1 -1
  186. package/layout/box.js +1 -1
  187. package/layout/button.js +1 -84
  188. package/layout/cards.js +1 -1
  189. package/layout/center.js +1 -21
  190. package/layout/checkbox.js +1 -1
  191. package/layout/circle.js +1 -2
  192. package/layout/clean-row.js +1 -87
  193. package/layout/code.js +1 -1
  194. package/layout/container.js +24 -152
  195. package/layout/custom.js +7 -5
  196. package/layout/div-image.js +1 -49
  197. package/layout/dropdown-2025.js +1 -1
  198. package/layout/dropdown.js +1 -1
  199. package/layout/empty-element.js +1 -1
  200. package/layout/external-stylesheet.js +1 -1
  201. package/layout/flex-card.js +2 -90
  202. package/layout/flex-grid.js +1 -6
  203. package/layout/flex-row.js +1 -86
  204. package/layout/footer.js +1 -1
  205. package/layout/form-components/custom.js +1 -1
  206. package/layout/form-components/data-list.js +1 -1
  207. package/layout/form-components/floating-input.js +1 -1
  208. package/layout/form-components/form-all.js +1 -1
  209. package/layout/form-components/form.js +1 -1
  210. package/layout/form-components/image-picker.js +1 -1
  211. package/layout/form-components/picker.js +1 -1
  212. package/layout/form-components/radio.js +1 -1
  213. package/layout/form-components/radiogroup.js +1 -1
  214. package/layout/form-components/range.js +1 -1
  215. package/layout/free.js +1 -1
  216. package/layout/grid-new.js +1 -1
  217. package/layout/grid-switcher.js +1 -1
  218. package/layout/grid.js +1 -1
  219. package/layout/group.js +1 -41
  220. package/layout/header.js +1 -1
  221. package/layout/horizontal-scroller.js +3 -3
  222. package/layout/image-old.js +1 -41
  223. package/layout/image.js +1 -79
  224. package/layout/index.js +1 -1
  225. package/layout/label.js +1 -1
  226. package/layout/link.js +7 -101
  227. package/layout/list-OLD.js +1 -1
  228. package/layout/list.js +1 -1
  229. package/layout/meta-adder.js +1 -1
  230. package/layout/modal-2025.js +1 -1
  231. package/layout/modernwrap.js +1 -1
  232. package/layout/multiswitcher.js +1 -1
  233. package/layout/multiswitcherBeta.js +1 -1
  234. package/layout/nav-bar.js +1 -1
  235. package/layout/nav-factor/custom-div.js +1 -1
  236. package/layout/navBar-OLD.js +1 -1
  237. package/layout/new-flat-adder.js +1 -1
  238. package/layout/new-nav-bar.js +2 -2
  239. package/layout/offset-container.js +2 -9
  240. package/layout/polygon.js +1 -6
  241. package/layout/prerender-site.js +1 -1
  242. package/layout/prerender.js +1 -1
  243. package/layout/progress.js +1 -21
  244. package/layout/row.js +1 -1
  245. package/layout/saved-new-nav-bar.js +1 -1
  246. package/layout/scroll-video.js +1 -1
  247. package/layout/side-bar.js +1 -1
  248. package/layout/side-nav-bar.js +1 -1
  249. package/layout/simple-bar.js +1 -1
  250. package/layout/slider-2025.js +3 -3
  251. package/layout/spacer.js +1 -1
  252. package/layout/stack.js +1 -1
  253. package/layout/svg.js +1 -1
  254. package/layout/switcher.js +1 -1
  255. package/layout/table.js +1 -6
  256. package/layout/text-field.js +1 -65
  257. package/layout/text.js +5 -100
  258. package/layout/ulist.js +1 -1
  259. package/layout/video.js +1 -1
  260. package/layout/without-new.js +1 -1
  261. package/layout/wrap.js +1 -1
  262. package/layout/zoom-card.js +1 -3
  263. package/lib/card-getter.js +1 -1
  264. package/lib/data.js +1 -1
  265. package/lib/designer.js +1 -1
  266. package/lib/element-mapper.js +1 -1
  267. package/lib/keyframe-animation.js +1 -1
  268. package/lib/link-getter.js +1 -1
  269. package/lib/raster-ops.js +1 -1
  270. package/lib/scroll-video.js +1 -1
  271. package/lib/seo.js +1 -1
  272. package/lib/stacker.js +1 -1
  273. package/lib/theme.js +1 -1
  274. package/lib/transform-anim.js +1 -1
  275. package/package.json +1 -1
  276. package/layout/styler.js +0 -119
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.213
2
+ * nodality v1.0.215
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -120,7 +120,6 @@ code = `${pad}new Wrapper()`;
120
120
  obj.pad && this.pad(obj.pad);
121
121
  obj.mar && this.mar(obj.mar);
122
122
  // obj.mar && (stra += `mar: {sides: [${obj.mar.sides.map(x => `"${x}"`).join(", ")}], value: "${obj.arrpad.value}"}, `);
123
- obj.arrpad && (stra += `pad: {sides: [${obj.arrpad.sides.map(x => `"${x}"`).join(", ")}], value: "${obj.arrpad.value}"}, `); // 2345 06/03
124
123
 
125
124
  //@ gpos: Grid placement — {col, row}, written to grid-column and grid-row.
126
125
  obj.gpos && this.gpos(obj.gpos);
@@ -253,15 +252,17 @@ code = `${pad}new Wrapper()`;
253
252
 
254
253
 
255
254
 
256
- if (obj.centerColumn){ // was obj.socenter
257
- this.res.style.display = "flex";
258
- this.res.style.flexDirection = "column";
259
- this.res.style.alignItems = "center";
255
+ obj.centerColumn && this.deprecatedOption("centerColumn", 'center: "x"');
260
256
 
261
- obj.centerColumn && (stra += `centerColumn: ${obj.centerColumn},`); // 2345 06/03
262
- }
263
-
264
- obj.mboth && (this.res.style.marginRight = "auto") && (this.res.style.marginLeft = "auto" );
257
+ //@deprecated mboth: superseded by `mar: "center"`. Still works, but warns.
258
+ // NOT wired to `center`: on a Wrapper `center` calls toCenter(), which
259
+ // sets display:flex + justify-content:center and centres the wrapper's
260
+ // CHILDREN. `mboth` centres the wrapper ITSELF in its parent via auto
261
+ // margins. Pointing one at the other would relayout every page using it.
262
+ if (obj.mboth) {
263
+ this.deprecatedOption("mboth", 'mar: "center"');
264
+ this.mar("center");
265
+ }
265
266
 
266
267
  obj.mar && this.mar(obj.mar); // has to be here
267
268
 
@@ -285,22 +286,14 @@ code = `${pad}new Wrapper()`;
285
286
  obj.id && this.res.setAttribute("id", obj.id);
286
287
 
287
288
 
288
- obj.arrpad && this.arrayPadding(obj.arrpad.sides, obj.arrpad.value);
289
- obj.arrpad && (stra += `arrpad: {sides: [${obj.arrpad.sides.map(x => `"${x}"`).join(", ")}], value: "${obj.arrpad.value}"}, `); // 2345 06/03
290
289
 
291
- obj.arrayMargin && this.arrayMargin(obj.arrayMargin.sides, obj.arrayMargin.value);
292
- obj.arrayMargin && (stra += `\n arrayMargin: {sides: ["${obj.arrayMargin.sides}"], value: "${obj.arrayMargin.value}"},`); // 2345 06/03
293
290
  // obj.arrpad && (stra += `arrpad: {sides: ["${obj.arrpad.sides}"], value: "${obj.arrpad.value}"}, `); // 2345 06/03
294
291
 
295
292
  // COMMENTED OUT 08/01/2025
296
293
  // obj.grow && (this.res.style.flexGrow = 1);
297
294
 
298
- obj.center && this.toCenter(obj.center);
299
- obj.center && (stra += `center: "${obj.center}",`);
300
295
 
301
- //@ simpleCenter: Centre children on both axes (justify + align, content + items).
302
- obj.simpleCenter && this.simpleCenter();
303
- obj.simpleCenter && (stra += `center: "${obj.simpleCenter}",`);
296
+ obj.simpleCenter && this.deprecatedOption("simpleCenter", 'center: true');
304
297
 
305
298
  obj.filter && (this.res.style.backdropFilter = "blur(3px)"); // 002506 21/05 002945
306
299
  obj.radius && this.corner(obj.radius);
@@ -355,19 +348,13 @@ code = `${pad}new Wrapper()`;
355
348
  obj.font && this.font(obj.font);
356
349
  obj.font && (stra += `font: "${obj.font}",`);
357
350
  obj.maxWidth && this.maxWidth(obj.maxWidth);
358
- //@ flexCenter: Flex column with justify-content: center.
359
- obj.flexCenter && this.flexc(obj.flexCenter);
360
- //@ multipad: Several padding values applied together.
361
- obj.multipad && this.makeMultiPad(obj.multipad);
362
- //@ multimargin: Several margin values applied together.
363
- obj.multimargin && this.makeMultiMargin(obj.multimargin);
351
+ obj.flexCenter && this.deprecatedOption("flexCenter", 'center: "y"');
364
352
  obj.color && this.color(obj.color);
365
353
  obj.background && this.background(obj.background);
366
354
  obj.background && (stra += `background: "${obj.background}",`);
367
355
 
368
356
  obj.weight && this.weight(obj.weight);
369
357
  //@ paddings: Padding via the paddingo() form.
370
- obj.paddings && this.paddingo(obj.paddings);
371
358
 
372
359
  obj.area && this.setArea(obj.area);
373
360
  obj.area && (stra += `area: "${obj.area}"`);
@@ -375,6 +362,7 @@ code = `${pad}new Wrapper()`;
375
362
  obj.column && (stra += `\n column: "${obj.column}",`);
376
363
 
377
364
 
365
+ //@deprecated alignIts: obsolete. Its body sets background:"gray" and hardcodes alignItems/justifyItems to flex-start with the argument commented out — debugging left in. Use `customAlign` / `customJustify`.
378
366
  obj.alignIts && (this.res.style.background = "gray");
379
367
  obj.alignIts && (this.res.style.alignItems = "flex-start"/*obj.alignIts*/);
380
368
  obj.alignIts && (this.res.style.justifyItems = "flex-start"/*obj.alignIts*/);
@@ -390,6 +378,13 @@ code = `${pad}new Wrapper()`;
390
378
  obj.flexDir && (this.res.style.display = "flex");
391
379
  obj.flexDir && (stra += `\n flexDir: "${obj.flexDir}",`)
392
380
 
381
+ //@ center: Centres this element's CHILDREN. `true` for both axes, `"x"` horizontal, `"y"` vertical. Axis-aware: in a flex column `"y"` is justify-content, in a row it is align-items. To centre the element itself inside its parent, use `mar: "center"`.
382
+ // After disp and flexDir on purpose: center() reads the layout mode
383
+ // already on the element to decide which property owns which axis,
384
+ // so it has to run once the mode is set. Dispatched earlier it saw a
385
+ // bare element every time and always assumed a flex column.
386
+ obj.center && (stra += `center: ${JSON.stringify(obj.center)},`);
387
+
393
388
  obj.zIndex && (this.res.style.zIndex = obj.zIndex);
394
389
 
395
390
  // String transforms are handled by commonMethods. Only object-shaped
@@ -562,31 +557,10 @@ code = `${pad}new Wrapper()`;
562
557
  return this;
563
558
  }
564
559
 
565
- paddingo(el){
566
- this.res.style.padding = el;
567
- return this;
568
- }
569
560
 
570
561
 
571
- toCenter(dir){
572
- this.res.style.display = "flex";
573
- this.res.style.flexDirection = "column";
574
- this.res.style.justifyContent = "center";
575
562
 
576
- if (dir === "both"){
577
- this.res.style.alignItems = "center";
578
- }
579
-
580
- return this;
581
- }
582
563
 
583
- simpleCenter(){
584
- this.res.style.justifyContent = "center";
585
- this.res.style.justifyItems = "center";
586
- this.res.style.alignContent = "center";
587
- this.res.style.alignItems = "center";
588
- return this;
589
- }
590
564
 
591
565
 
592
566
 
@@ -600,52 +574,8 @@ code = `${pad}new Wrapper()`;
600
574
  return this;
601
575
  }
602
576
 
603
- makeMultiPad(obj){
604
-
605
- for (var i = 0; i < obj.length; i++){
606
- if (obj[i].side === "left"){
607
-
608
- this.res.style.paddingLeft = obj[i].value;
609
- }
610
-
611
- if (obj[i].side === "right"){
612
- this.res.style.paddingRight = obj[i].value;
613
- }
614
- }
615
-
616
- return this;
617
- }
618
-
619
- makeMultiMargin(obj){ // 11:22:52
620
- this.res.style.zIndex = "1";
621
-
622
- for (var i = 0; i < obj.length; i++){
623
- if (obj[i].side === "left"){
624
- this.res.style.marginLeft = obj[i].value;
625
- }
626
577
 
627
- if (obj[i].side === "right"){
628
- this.res.style.marginRight = obj[i].value;
629
- }
630
-
631
- if (obj[i].side === "top"){
632
- this.res.style.marginTop = obj[i].value;
633
- }
634
-
635
- if (obj[i].side === "bottom"){
636
- this.res.style.marginBottom = obj[i].value;
637
- }
638
- }
639
-
640
- return this;
641
- }
642
578
 
643
- flexc(obj){
644
- this.res.style.display = "flex";
645
- this.res.style.flexDirection = "column";
646
- this.res.style.justifyContent = "center";
647
- return this;
648
- }
649
579
 
650
580
  maxWidth(w){
651
581
  this.res.style.maxWidth = w;
@@ -686,19 +616,14 @@ code = `${pad}new Wrapper()`;
686
616
 
687
617
  border(obj){
688
618
  this.res.style.borderRadius = `${obj.radius}px`;
689
- this.res.style.padding = "0.25em";
619
+ // No padding here. It used to set 0.25em, which runs after pad()
620
+ // in set() and silently overwrote it: {pad: [{a: 40}], border: {…}}
621
+ // rendered 4px, not 40px. A border has no business sizing the box.
690
622
  this.res.style.border = `${obj.width}px solid ${obj.color}`;
691
623
  return this;
692
624
  }
693
625
 
694
626
 
695
- toCol(){
696
- this.res.style.display = "flex";
697
- this.res.style.flexDirection = "column";
698
- this.res.style.justifyContent = "center";
699
- this.res.style.alignItems = "center";
700
- return this;
701
- }
702
627
 
703
628
 
704
629
  add(els){
@@ -729,62 +654,9 @@ code = `${pad}new Wrapper()`;
729
654
 
730
655
 
731
656
 
732
- arrayPadding(arr, value) {
733
-
734
- if (arr.includes("left")){
735
- this.res.style.paddingLeft = value;
736
- }
737
-
738
- if (arr.includes("right")){
739
- this.res.style.paddingRight = value;
740
- }
741
-
742
- if (arr.includes("top")){
743
- this.res.style.paddingTop = value;
744
- }
745
-
746
- if (arr.includes("bottom")){
747
-
748
- this.res.style.paddingBottom = value;
749
- }
750
-
751
-
752
- return this;
753
- }
754
-
755
-
756
-
757
- arrayMargin(arr, value) {
758
-
759
-
760
- if (!value){ // LTRB
761
- this.res.style.marginLeft = `${arr[0]}px`;
762
- this.res.style.marginTop = `${arr[1]}px`;
763
- this.res.style.marginRight = `${arr[2]}px`;
764
- this.res.style.marginBottom = `${arr[3]}px`;
765
- }
766
657
 
767
658
 
768
659
 
769
- if (arr.includes("left")){
770
- this.res.style.marginLeft = value;
771
- }
772
-
773
- if (arr.includes("right")){
774
- this.res.style.marginRight = value;
775
- }
776
-
777
- if (arr.includes("top")){
778
- this.res.style.marginTop = value;
779
- }
780
-
781
- if (arr.includes("bottom")){
782
- this.res.style.marginBottom = value;
783
- }
784
-
785
-
786
- return this;
787
- }
788
660
 
789
661
 
790
662
 
package/layout/custom.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.213
2
+ * nodality v1.0.215
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -16,7 +16,7 @@ class TopBar extends Base {
16
16
  Text("Newsroom"),
17
17
  Spacer(true),
18
18
  Text("Contact us")
19
- ]).arrayPadding(["left", "right"], "20px")
19
+ ]).pad([{lr: "20px"}])
20
20
  }
21
21
  }
22
22
 
@@ -90,7 +90,9 @@ return new FlexGrid(3).items([
90
90
  new Image("https://cdn3.iconfinder.com/data/icons/capsocial-round/500/facebook-512.png").RSize(30, 30, 1.4).padding(10),
91
91
  ])
92
92
  .width("80%")
93
- .center();
93
+ // FlexGrid.center() used to mean "centre myself"; center() now centres
94
+ // children everywhere. Centring the element itself is mar("center").
95
+ .mar("center");
94
96
  }
95
97
  }
96
98
 
@@ -193,7 +195,7 @@ new Text("Cupertino, California — Apple today updated the 13-inch MacBook Pro
193
195
  /*.margin("top", 20)
194
196
  .margin("bottom", 30)*/
195
197
 
196
- .arrayPadding(["top", "bottom"], 40)
198
+ .pad([{tb: 40}])
197
199
  .width("80%", "center")
198
200
  /*.sizes([
199
201
  {w: 800, size: 1.2},
@@ -220,7 +222,7 @@ new Center()
220
222
  .bold()
221
223
 
222
224
  ]).itemWidth("80%")
223
- .arrayPadding(["top", "bottom"], 30)
225
+ .pad([{tb: 30}])
224
226
  .render("#res");
225
227
 
226
228
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.213
2
+ * nodality v1.0.215
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -121,57 +121,9 @@ class AspectImage extends Animator {
121
121
  }
122
122
 
123
123
 
124
- arrayPadding(arr, value) {
125
- if (arr.includes("left")){
126
- this.res.style.paddingLeft = value;
127
- }
128
-
129
- if (arr.includes("right")){
130
- this.res.style.paddingRight = value;
131
- }
132
-
133
- if (arr.includes("top")){
134
- this.res.style.paddingTop = value;
135
- }
136
-
137
- if (arr.includes("bottom")){
138
- this.res.style.paddingBottom = value;
139
- }
140
-
141
- if (!value){
142
- this.res.style.paddingBottom = arr;
143
- }
144
-
145
-
146
- return this;
147
- }
148
124
 
149
125
 
150
126
 
151
- arrayMargin(arr, value) {
152
- if (arr.includes("left")){
153
- this.res.style.marginLeft = value;
154
- }
155
-
156
- if (arr.includes("right")){
157
- this.res.style.marginRight = value;
158
- }
159
-
160
- if (arr.includes("top")){
161
- this.res.style.marginTop = value;
162
- }
163
-
164
- if (arr.includes("bottom")){
165
- this.res.style.marginBottom = value;
166
- }
167
-
168
- if (!value){
169
- this.res.style.margin = arr;
170
- }
171
-
172
-
173
- return this;
174
- }
175
127
 
176
128
  onTap(e) {
177
129
  this.res.addEventListener("click", e);
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.213
2
+ * nodality v1.0.215
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.213
2
+ * nodality v1.0.215
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.213
2
+ * nodality v1.0.215
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.213
2
+ * nodality v1.0.215
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.213
2
+ * nodality v1.0.215
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -54,25 +54,8 @@ class Card extends Animator {
54
54
  this.res.style.borderRadius = obj.radius;
55
55
  }
56
56
 
57
- if (obj.arrayPadding){
58
- let sides = obj.arrayPadding.sides;
59
- //console.log(sides);
60
- //console.log(sides.map(x => `"${x}"`).join(", "));
61
-
62
- const mapped = sides.map(x => `"${x}"`).join(", ")
63
-
64
-
65
-
66
- obj.arrayPadding && this.arrayPadding(obj.arrayPadding.sides, obj.arrayPadding.value);
67
- //obj.arrayPadding && this.arrayPadding(obj.arrayMargin.sides, obj.arrayMargin.value);
68
- obj.arrayPadding && (stra += `\n arrayPadding: {sides: [${mapped}], value: "${obj.arrayPadding.value}"},`); // 2345 06/03
69
57
 
70
-
71
- }
72
-
73
- obj.arrayMargin && this.arrayMargin(obj.arrayMargin.sides, obj.arrayMargin.value);
74
58
  //obj.arrayMargin && this.arrayMargin(obj.arrayMargin.sides, obj.arrayMargin.value);
75
- obj.arrayMargin && (stra += `\n arrayMargin: {sides: [${obj.arrayMargin.sides.map(side => `"${side}", `)}], value: "${obj.arrayMargin.value}"},`); // 2345 06/03
76
59
 
77
60
 
78
61
  obj.width && (this.res.style.width = obj.width);
@@ -137,80 +120,9 @@ this.options = obj;
137
120
  // this.res.style.border = "1px solid green";
138
121
  }
139
122
  }
140
-
141
- arrayPadding(arr, value) {
142
-
143
- if (!value){ // LTRB
144
- this.res.style.marginLeft = `${arr[0]}px`;
145
- this.res.style.marginTop = `${arr[1]}px`;
146
- this.res.style.marginRight = `${arr[2]}px`;
147
- this.res.style.marginBottom = `${arr[3]}px`;
148
- }
149
-
150
- if (arr[0] === "all"){
151
- this.res.style.paddingLeft = value;
152
- this.res.style.paddingTop = value;
153
- this.res.style.paddingRight = value;
154
- this.res.style.paddingBottom = value;
155
- }
156
-
157
-
158
- if (arr.includes("left")){
159
- this.res.style.paddingLeft = value;
160
- }
161
-
162
- if (arr.includes("right")){
163
- this.res.style.paddingRight = value;
164
- }
165
-
166
- if (arr.includes("top")){
167
- this.res.style.paddingTop = value;
168
- }
169
-
170
- if (arr.includes("bottom")){
171
- this.res.style.paddingBottom = value;
172
- }
173
-
174
- if (!value){
175
- this.res.style.paddingBottom = arr;
176
- }
177
-
178
-
179
- //alert(value);
180
-
181
- return this;
182
- } //22155 snap to change phone screen
123
+ //22155 snap to change phone screen
183
124
 
184
125
 
185
- arrayMargin(arr, value) { // 224857 redefined earlier
186
-
187
- // console.log(arr);
188
- if (arr.includes("left")){
189
- this.res.style.marginLeft = value;
190
- }
191
-
192
- if (arr.includes("right")){
193
- this.res.style.marginRight = value;
194
- }
195
-
196
- if (arr.includes("top")){
197
- this.res.style.marginTop = value;
198
- }
199
-
200
- if (arr.includes("bottom")){
201
- this.res.style.marginBottom = value;
202
- }
203
-
204
- if (arr.includes("all")){
205
- this.res.style.margin = value;
206
- }
207
-
208
- if (!value){
209
- this.res.style.marginBottom = arr;
210
- }
211
-
212
- return this;
213
- }
214
126
 
215
127
  frame(obj){
216
128
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.213
2
+ * nodality v1.0.215
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -210,11 +210,6 @@ class FlexGrid extends Animator {
210
210
  }
211
211
 
212
212
 
213
- center(){
214
- this.res.style.marginLeft = "auto";
215
- this.res.style.marginRight = "auto";
216
- return this;
217
- }
218
213
 
219
214
  items(elements){
220
215
  this.items = elements;
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.213
2
+ * nodality v1.0.215
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -202,11 +202,8 @@ let stringified = JSON.stringify(options.borderObj);
202
202
 
203
203
 
204
204
  //alert(options.arrpad);
205
- options.arrayPadding && this.arrayPadding(options.arrayPadding.sides, options.arrayPadding.value);
206
205
 
207
206
 
208
- options.arrayMargin && this.arrayMargin(options.arrayMargin.sides, options.arrayMargin.value);
209
- this.arrayMarginValue = options.arrayMargin;
210
207
  //options.arrayMargin && this.code.push(`\n arrayMargin: {sides: [${options.arrayMargin.sides.map(m => `"${m}"`).join(", ")}], value: "${options.arrayMargin.value}"},`); // 2345 06/03
211
208
 
212
209
 
@@ -219,7 +216,6 @@ let stringified = JSON.stringify(options.borderObj);
219
216
 
220
217
  // alert(options.multipad);
221
218
 
222
- options.multipad && this.makeMultiPad(options.multipad);
223
219
 
224
220
  if (options.align){
225
221
  //alert("K")
@@ -566,27 +562,6 @@ let stringified = JSON.stringify(options.borderObj);
566
562
  //return this.code; // 21:40:09*/
567
563
  }
568
564
 
569
- arrayPadding(arr, value) {
570
- if (arr.includes("left")){
571
- this.res.style.paddingLeft = value;
572
- }
573
-
574
- if (arr.includes("right")){
575
- //alert("P")
576
- this.res.style.paddingRight = value;
577
- }
578
-
579
- if (arr.includes("top")){
580
- this.res.style.paddingTop = value;
581
- }
582
-
583
- if (arr.includes("bottom")){
584
- this.res.style.paddingBottom = value;
585
- }
586
-
587
-
588
- return this;
589
- }
590
565
 
591
566
  borderAround(data){
592
567
  this.res.style.border = data;
@@ -643,21 +618,6 @@ let stringified = JSON.stringify(options.borderObj);
643
618
  }
644
619
 
645
620
 
646
- makeMultiPad(obj){
647
-
648
- for (var i = 0; i < obj.length; i++){
649
- if (obj[i].side === "left"){
650
-
651
- this.res.style.paddingLeft = obj[i].value;
652
- }
653
-
654
- if (obj[i].side === "right"){
655
- this.res.style.paddingRight = obj[i].value;
656
- }
657
- }
658
-
659
- return this;
660
- }
661
621
 
662
622
 
663
623
 
@@ -666,10 +626,6 @@ let stringified = JSON.stringify(options.borderObj);
666
626
  return this;
667
627
  }
668
628
 
669
- center() {
670
- // this.res.style.justifyItems = "center";
671
- return this;
672
- }
673
629
 
674
630
  toColumn(){
675
631
  this.res.style.flexDirection = "column";
@@ -683,12 +639,6 @@ let stringified = JSON.stringify(options.borderObj);
683
639
  return this;
684
640
  }
685
641
 
686
- toCenter(classa) {
687
- this.res.style.marginLeft = "auto";
688
- this.res.style.marginRight = "auto";
689
- this.res.setAttribute("class", classa);
690
- return this;
691
- }
692
642
 
693
643
  setup() {
694
644
  let flex = document.createElement("div");
@@ -732,41 +682,6 @@ let stringified = JSON.stringify(options.borderObj);
732
682
 
733
683
  */
734
684
 
735
- arrayMargin(arr, value) {
736
-
737
- //alert(arr);
738
- //alert(value);
739
-
740
- // alert(window.matchMedia("(max-device-width: 415px)").matches)
741
- //alert("K")
742
- if (!value){ // LTRB
743
- this.res.style.marginLeft = `${arr[0]}px`;
744
- this.res.style.marginTop = `${arr[1]}px`;
745
- this.res.style.marginRight = `${arr[2]}px`;
746
- this.res.style.marginBottom = `${arr[3]}px`;
747
- }
748
-
749
-
750
- // alert("ROW.js 452"); //003337
751
- //alert(value);
752
- if (arr.includes("left")){
753
- this.res.style.marginLeft = `${value}px`;
754
- }
755
-
756
- if (arr.includes("right")){
757
- this.res.style.marginRight = `${value}px`;
758
- } // 161357 Surovikin line
759
-
760
- if (arr.includes("top")){
761
- // alert(value)
762
- this.res.style.marginTop = `${value}px`;
763
- }
764
-
765
- if (arr.includes("bottom")){
766
- this.res.style.marginBottom = `${value}px`;
767
- }
768
- return this;
769
- }
770
685
 
771
686
 
772
687
 
package/layout/footer.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.213
2
+ * nodality v1.0.215
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.213
2
+ * nodality v1.0.215
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */