nodality 1.0.220 → 1.0.224
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.
- package/API.md +227 -0
- package/bin/nodality.js +64 -0
- package/dist/animator.cjs.js +1 -1
- package/dist/animator.cjs.js.LICENSE.txt +1 -1
- package/dist/animator.esm.js +1 -1
- package/dist/animator.esm.js.LICENSE.txt +1 -1
- package/dist/audionew.cjs.js +1 -1
- package/dist/audionew.cjs.js.LICENSE.txt +1 -1
- package/dist/audionew.esm.js +1 -1
- package/dist/audionew.esm.js.LICENSE.txt +1 -1
- package/dist/base.cjs.js +1 -1
- package/dist/base.cjs.js.LICENSE.txt +1 -1
- package/dist/base.esm.js +1 -1
- package/dist/base.esm.js.LICENSE.txt +1 -1
- package/dist/beta-desktop-bar.cjs.js +1 -1
- package/dist/beta-desktop-bar.cjs.js.LICENSE.txt +1 -1
- package/dist/beta-desktop-bar.esm.js +1 -1
- package/dist/beta-desktop-bar.esm.js.LICENSE.txt +1 -1
- package/dist/beta-mobile-bar.cjs.js +1 -1
- package/dist/beta-mobile-bar.cjs.js.LICENSE.txt +1 -1
- package/dist/beta-mobile-bar.esm.js +1 -1
- package/dist/beta-mobile-bar.esm.js.LICENSE.txt +1 -1
- package/dist/bundle.umd.js +1 -1
- package/dist/bundle.umd.js.LICENSE.txt +131 -1
- package/dist/button.cjs.js +1 -1
- package/dist/button.cjs.js.LICENSE.txt +1 -1
- package/dist/button.esm.js +1 -1
- package/dist/button.esm.js.LICENSE.txt +1 -1
- package/dist/card-getter.cjs.js.LICENSE.txt +1 -1
- package/dist/card-getter.esm.js.LICENSE.txt +1 -1
- package/dist/center.cjs.js +1 -1
- package/dist/center.cjs.js.LICENSE.txt +1 -1
- package/dist/center.esm.js +1 -1
- package/dist/center.esm.js.LICENSE.txt +1 -1
- package/dist/checkbox.cjs.js +1 -1
- package/dist/checkbox.cjs.js.LICENSE.txt +1 -1
- package/dist/checkbox.esm.js +1 -1
- package/dist/checkbox.esm.js.LICENSE.txt +1 -1
- package/dist/code.cjs.js +1 -1
- package/dist/code.cjs.js.LICENSE.txt +1 -1
- package/dist/code.esm.js +1 -1
- package/dist/code.esm.js.LICENSE.txt +1 -1
- package/dist/container.cjs.js +1 -1
- package/dist/container.cjs.js.LICENSE.txt +1 -1
- package/dist/container.esm.js +1 -1
- package/dist/container.esm.js.LICENSE.txt +1 -1
- package/dist/data-list.cjs.js +1 -1
- package/dist/data-list.cjs.js.LICENSE.txt +1 -1
- package/dist/data-list.esm.js +1 -1
- package/dist/data-list.esm.js.LICENSE.txt +1 -1
- package/dist/designer.cjs.js +1 -1
- package/dist/designer.cjs.js.LICENSE.txt +97 -1
- package/dist/designer.esm.js +1 -1
- package/dist/designer.esm.js.LICENSE.txt +97 -1
- package/dist/element-mapper.cjs.js +1 -1
- package/dist/element-mapper.cjs.js.LICENSE.txt +17 -1
- package/dist/element-mapper.esm.js +1 -1
- package/dist/element-mapper.esm.js.LICENSE.txt +17 -1
- package/dist/finalresult.esm.js +1 -1
- package/dist/finalresult.esm.js.LICENSE.txt +158 -1
- package/dist/flex-card.cjs.js +1 -1
- package/dist/flex-card.cjs.js.LICENSE.txt +1 -1
- package/dist/flex-card.esm.js +1 -1
- package/dist/flex-card.esm.js.LICENSE.txt +1 -1
- package/dist/flex-grid.cjs.js +1 -1
- package/dist/flex-grid.cjs.js.LICENSE.txt +1 -1
- package/dist/flex-grid.esm.js +1 -1
- package/dist/flex-grid.esm.js.LICENSE.txt +1 -1
- package/dist/flex-row.cjs.js +1 -1
- package/dist/flex-row.cjs.js.LICENSE.txt +1 -1
- package/dist/flex-row.esm.js +1 -1
- package/dist/flex-row.esm.js.LICENSE.txt +1 -1
- package/dist/floating-input.cjs.js +1 -1
- package/dist/floating-input.cjs.js.LICENSE.txt +1 -1
- package/dist/floating-input.esm.js +1 -1
- package/dist/floating-input.esm.js.LICENSE.txt +1 -1
- package/dist/free.cjs.js +1 -1
- package/dist/free.cjs.js.LICENSE.txt +1 -1
- package/dist/free.esm.js +1 -1
- package/dist/free.esm.js.LICENSE.txt +1 -1
- package/dist/horizontal-scroller.cjs.js.LICENSE.txt +1 -1
- package/dist/horizontal-scroller.esm.js.LICENSE.txt +1 -1
- package/dist/image-picker.cjs.js +1 -1
- package/dist/image-picker.cjs.js.LICENSE.txt +1 -1
- package/dist/image-picker.esm.js +1 -1
- package/dist/image-picker.esm.js.LICENSE.txt +1 -1
- package/dist/image.cjs.js +1 -1
- package/dist/image.cjs.js.LICENSE.txt +1 -1
- package/dist/image.esm.js +1 -1
- package/dist/image.esm.js.LICENSE.txt +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.LICENSE.txt +158 -1
- package/dist/index.d.ts +962 -0
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.LICENSE.txt +158 -1
- package/dist/keyframe-animation.cjs.js.LICENSE.txt +1 -1
- package/dist/keyframe-animation.esm.js.LICENSE.txt +1 -1
- package/dist/link-getter.cjs.js +1 -1
- package/dist/link-getter.cjs.js.LICENSE.txt +1 -1
- package/dist/link-getter.esm.js +1 -1
- package/dist/link-getter.esm.js.LICENSE.txt +1 -1
- package/dist/link.cjs.js +1 -1
- package/dist/link.cjs.js.LICENSE.txt +1 -1
- package/dist/link.esm.js +1 -1
- package/dist/link.esm.js.LICENSE.txt +1 -1
- package/dist/meta-adder.cjs.js +1 -1
- package/dist/meta-adder.cjs.js.LICENSE.txt +1 -1
- package/dist/meta-adder.esm.js +1 -1
- package/dist/meta-adder.esm.js.LICENSE.txt +1 -1
- package/dist/modal-2025.cjs.js +1 -1
- package/dist/modal-2025.cjs.js.LICENSE.txt +1 -1
- package/dist/modal-2025.esm.js +1 -1
- package/dist/modal-2025.esm.js.LICENSE.txt +1 -1
- package/dist/multiswitcher.cjs.js +1 -1
- package/dist/multiswitcher.cjs.js.LICENSE.txt +1 -1
- package/dist/multiswitcher.esm.js +1 -1
- package/dist/multiswitcher.esm.js.LICENSE.txt +1 -1
- package/dist/new-nav-bar.cjs.js +1 -1
- package/dist/new-nav-bar.cjs.js.LICENSE.txt +1 -1
- package/dist/new-nav-bar.esm.js +1 -1
- package/dist/new-nav-bar.esm.js.LICENSE.txt +1 -1
- package/dist/picker.cjs.js +1 -1
- package/dist/picker.cjs.js.LICENSE.txt +1 -1
- package/dist/picker.esm.js +1 -1
- package/dist/picker.esm.js.LICENSE.txt +1 -1
- package/dist/progress.cjs.js +1 -1
- package/dist/progress.cjs.js.LICENSE.txt +1 -1
- package/dist/progress.esm.js +1 -1
- package/dist/progress.esm.js.LICENSE.txt +1 -1
- package/dist/radio.cjs.js +1 -1
- package/dist/radio.cjs.js.LICENSE.txt +1 -1
- package/dist/radio.esm.js +1 -1
- package/dist/radio.esm.js.LICENSE.txt +1 -1
- package/dist/range.cjs.js +1 -1
- package/dist/range.cjs.js.LICENSE.txt +1 -1
- package/dist/range.esm.js +1 -1
- package/dist/range.esm.js.LICENSE.txt +1 -1
- package/dist/scroll-video.cjs.js.LICENSE.txt +1 -1
- package/dist/scroll-video.esm.js.LICENSE.txt +1 -1
- package/dist/side-bar.cjs.js +1 -1
- package/dist/side-bar.cjs.js.LICENSE.txt +1 -1
- package/dist/side-bar.esm.js +1 -1
- package/dist/side-bar.esm.js.LICENSE.txt +1 -1
- package/dist/side-nav-bar.cjs.js +1 -1
- package/dist/side-nav-bar.cjs.js.LICENSE.txt +1 -1
- package/dist/side-nav-bar.esm.js +1 -1
- package/dist/side-nav-bar.esm.js.LICENSE.txt +1 -1
- package/dist/simple-bar.cjs.js +1 -1
- package/dist/simple-bar.cjs.js.LICENSE.txt +1 -1
- package/dist/simple-bar.esm.js +1 -1
- package/dist/simple-bar.esm.js.LICENSE.txt +1 -1
- package/dist/slider-2025.cjs.js +1 -1
- package/dist/slider-2025.cjs.js.LICENSE.txt +1 -1
- package/dist/slider-2025.esm.js +1 -1
- package/dist/slider-2025.esm.js.LICENSE.txt +1 -1
- package/dist/spacer.cjs.js +1 -1
- package/dist/spacer.cjs.js.LICENSE.txt +1 -1
- package/dist/spacer.esm.js +1 -1
- package/dist/spacer.esm.js.LICENSE.txt +1 -1
- package/dist/stack.cjs.js +1 -1
- package/dist/stack.cjs.js.LICENSE.txt +1 -1
- package/dist/stack.esm.js +1 -1
- package/dist/stack.esm.js.LICENSE.txt +1 -1
- package/dist/stacker.cjs.js.LICENSE.txt +1 -1
- package/dist/stacker.esm.js.LICENSE.txt +1 -1
- package/dist/table.cjs.js +1 -1
- package/dist/table.cjs.js.LICENSE.txt +1 -1
- package/dist/table.esm.js +1 -1
- package/dist/table.esm.js.LICENSE.txt +1 -1
- package/dist/text-field.cjs.js +1 -1
- package/dist/text-field.cjs.js.LICENSE.txt +1 -1
- package/dist/text-field.esm.js +1 -1
- package/dist/text-field.esm.js.LICENSE.txt +1 -1
- package/dist/text.cjs.js +1 -1
- package/dist/text.cjs.js.LICENSE.txt +1 -1
- package/dist/text.esm.js +1 -1
- package/dist/text.esm.js.LICENSE.txt +1 -1
- package/dist/theme.cjs.js.LICENSE.txt +1 -1
- package/dist/theme.esm.js.LICENSE.txt +1 -1
- package/dist/transform-anim.cjs.js.LICENSE.txt +1 -1
- package/dist/transform-anim.esm.js.LICENSE.txt +1 -1
- package/dist/ulist.cjs.js +1 -1
- package/dist/ulist.cjs.js.LICENSE.txt +1 -1
- package/dist/ulist.esm.js +1 -1
- package/dist/ulist.esm.js.LICENSE.txt +1 -1
- package/dist/video.cjs.js +1 -1
- package/dist/video.cjs.js.LICENSE.txt +1 -1
- package/dist/video.esm.js +1 -1
- package/dist/video.esm.js.LICENSE.txt +1 -1
- package/dist/wrap.cjs.js +1 -1
- package/dist/wrap.cjs.js.LICENSE.txt +1 -1
- package/dist/wrap.esm.js +1 -1
- package/dist/wrap.esm.js.LICENSE.txt +1 -1
- package/dist/zoom-card.cjs.js +1 -1
- package/dist/zoom-card.cjs.js.LICENSE.txt +1 -1
- package/dist/zoom-card.esm.js +1 -1
- package/dist/zoom-card.esm.js.LICENSE.txt +1 -1
- package/examples/custom-raster-op.js +174 -0
- package/layout/animator.js +48 -2
- package/layout/audio.js +1 -1
- package/layout/audionew.js +1 -1
- package/layout/base.js +8 -3
- package/layout/beta-desktop-bar.js +1 -1
- package/layout/beta-mobile-bar.js +3 -2
- package/layout/button.js +3 -11
- package/layout/center.js +1 -1
- package/layout/checkbox.js +2 -2
- package/layout/circle.js +3 -2
- package/layout/code.js +3 -2
- package/layout/container.js +4 -8
- package/layout/dropdown-2025.js +1 -1
- package/layout/flex-card.js +1 -16
- package/layout/flex-grid.js +3 -6
- package/layout/flex-row.js +7 -12
- package/layout/form-components/custom.js +1 -1
- package/layout/form-components/data-list.js +2 -2
- package/layout/form-components/floating-input.js +2 -2
- package/layout/form-components/form-all.js +2 -2
- package/layout/form-components/form.js +1 -1
- package/layout/form-components/image-picker.js +1 -1
- package/layout/form-components/picker.js +2 -2
- package/layout/form-components/radio.js +2 -2
- package/layout/form-components/radiogroup.js +2 -2
- package/layout/form-components/range.js +2 -2
- package/layout/free.js +3 -4
- package/layout/grid-switcher.js +16 -7
- package/layout/grid.js +7 -2
- package/layout/horizontal-scroller.js +1 -1
- package/layout/image.js +1 -1
- package/layout/index.js +1 -1
- package/layout/link.js +6 -25
- package/layout/list.js +14 -6
- package/layout/meta-adder.js +8 -3
- package/layout/modal-2025.js +7 -2
- package/layout/morph.js +1003 -0
- package/layout/multiswitcher.js +11 -3
- package/layout/nav-bar.js +50 -46
- package/layout/nav-factor/custom-div.js +2 -2
- package/layout/new-nav-bar.js +11 -4
- package/layout/polygon.js +3 -4
- package/layout/prerender-site.js +1 -1
- package/layout/prerender.js +1 -1
- package/layout/progress.js +7 -2
- package/layout/row.js +7 -2
- package/layout/scroll-video.js +7 -2
- package/layout/side-bar.js +15 -10
- package/layout/side-nav-bar.js +1 -1
- package/layout/simple-bar.js +1 -1
- package/layout/slider-2025.js +1 -1
- package/layout/spacer.js +7 -2
- package/layout/stack.js +7 -2
- package/layout/svg.js +3 -4
- package/layout/switcher.js +7 -2
- package/layout/table.js +1 -1
- package/layout/text-field.js +3 -13
- package/layout/text.js +5 -15
- package/layout/ulist.js +1 -1
- package/layout/video.js +1 -1
- package/layout/wrap.js +7 -2
- package/layout/zoom-card.js +1 -1
- package/lib/card-getter.js +1 -1
- package/lib/codegen.js +62 -0
- package/lib/data.js +37 -1
- package/lib/designer.js +18 -1
- package/lib/element-mapper.js +351 -247
- package/lib/keyframe-animation.js +1 -1
- package/lib/link-getter.js +1 -1
- package/lib/morph-node.js +424 -0
- package/lib/raster-inspect.js +409 -0
- package/lib/raster-ops.js +1902 -80
- package/lib/raster-presets.js +314 -0
- package/lib/scroll-video.js +1 -1
- package/lib/seo.js +28 -1
- package/lib/stacker.js +1 -1
- package/lib/suggest.js +66 -0
- package/lib/theme.js +1 -1
- package/lib/transform-anim.js +1 -1
- package/lib/transition.js +205 -0
- package/package.json +20 -7
package/layout/animator.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.224
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import { Theme } from "../lib/theme.js";
|
|
8
8
|
import { applyRasterPipeline } from "../lib/raster-ops.js";
|
|
9
9
|
|
|
10
|
+
import { keyPattern } from "../lib/codegen.js";
|
|
10
11
|
// 22/08/2020 - 16:30
|
|
11
12
|
class Animator {
|
|
12
13
|
|
|
@@ -169,6 +170,17 @@ class Animator {
|
|
|
169
170
|
}
|
|
170
171
|
}
|
|
171
172
|
|
|
173
|
+
// Custom properties. `style[name]` does not work for them — the CSSOM
|
|
174
|
+
// only reaches a `--*` property through setProperty — which is why an
|
|
175
|
+
// axis default written like every other style silently did nothing.
|
|
176
|
+
vars(map){
|
|
177
|
+
if (!map || typeof map !== "object") return this;
|
|
178
|
+
for (const name in map) {
|
|
179
|
+
this.res.style.setProperty(name, String(map[name]));
|
|
180
|
+
}
|
|
181
|
+
return this;
|
|
182
|
+
}
|
|
183
|
+
|
|
172
184
|
keySet(obj){
|
|
173
185
|
this.temporaryVal = 1;
|
|
174
186
|
if (Array.isArray(obj)) {
|
|
@@ -256,6 +268,20 @@ class Animator {
|
|
|
256
268
|
gridTemplateRows: "gridTemplateRows",
|
|
257
269
|
rowGap: "rowGap",
|
|
258
270
|
columnGap: "columnGap",
|
|
271
|
+
// Extended 2026-08-11 — the shell vocabulary `bones` speaks, so a
|
|
272
|
+
// generated grid needs no keySet. `cols`/`rows` are short names for
|
|
273
|
+
// the two above; `areas` had no option at all, and `area` existed
|
|
274
|
+
// only on the three components that happened to dispatch it
|
|
275
|
+
// themselves (Wrapper, Text, Image) — those now set the same
|
|
276
|
+
// property to the same value, and everything else gains it.
|
|
277
|
+
//@ cols: grid-template-columns, verbatim — e.g. "240px 1fr".
|
|
278
|
+
cols: "gridTemplateColumns",
|
|
279
|
+
//@ rows: grid-template-rows, verbatim.
|
|
280
|
+
rows: "gridTemplateRows",
|
|
281
|
+
//@ areas: grid-template-areas, verbatim — e.g. '"nav main" "nav main"'.
|
|
282
|
+
areas: "gridTemplateAreas",
|
|
283
|
+
//@ area: This element's grid-area — the name of a cell declared in the parent's `areas`.
|
|
284
|
+
area: "gridArea",
|
|
259
285
|
|
|
260
286
|
// ── Typography (extended) ──────────────────────────────────────
|
|
261
287
|
letterSpacing: "letterSpacing",
|
|
@@ -349,6 +375,8 @@ class Animator {
|
|
|
349
375
|
obj.size && this.fluidCopy(obj.size);
|
|
350
376
|
//@ resprop: Per-breakpoint style overrides — [{breakpoint, ...css}]. `exact` is font size.
|
|
351
377
|
obj.resprop && this.resprop(obj.resprop, obj);
|
|
378
|
+
//@ vars: Custom CSS properties on this element — {"--nod-split": 0.2}. Custom properties inherit, so writing them on a root drives its whole subtree with one declaration; that is how the morph axes reach every generated element without a stylesheet.
|
|
379
|
+
obj.vars && this.vars(obj.vars);
|
|
352
380
|
//@ keySet: Escape hatch — {key, value} written straight to element.style, or an array of them.
|
|
353
381
|
obj.keySet && this.keySet(obj.keySet);
|
|
354
382
|
//@ noTheme: Opt this element out of Theme.setDefaults light/dark colouring.
|
|
@@ -1009,6 +1037,24 @@ resmar(arr) {
|
|
|
1009
1037
|
return this;
|
|
1010
1038
|
}
|
|
1011
1039
|
|
|
1040
|
+
round(v) {
|
|
1041
|
+
this.deprecatedOption("round()", "radius()");
|
|
1042
|
+
return this.radius(v);
|
|
1043
|
+
}
|
|
1044
|
+
|
|
1045
|
+
toCSS(){
|
|
1046
|
+
return this.css;
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1049
|
+
toHTMLA(){
|
|
1050
|
+
return this.html;
|
|
1051
|
+
}
|
|
1052
|
+
|
|
1053
|
+
background(color){
|
|
1054
|
+
this.res.style.background = color;
|
|
1055
|
+
return this;
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1012
1058
|
deprecatedOption(name, replacement) {
|
|
1013
1059
|
console.error(`nodality: \`${name}\` is deprecated — use \`${replacement}\` instead.`);
|
|
1014
1060
|
return this;
|
|
@@ -2016,7 +2062,7 @@ maxWidth(w){
|
|
|
2016
2062
|
}
|
|
2017
2063
|
|
|
2018
2064
|
removeQuotesFromFirstWord(jsonString) {
|
|
2019
|
-
const modifiedJSON = jsonString.replace(
|
|
2065
|
+
const modifiedJSON = jsonString.replace(keyPattern(), "$1:");
|
|
2020
2066
|
return modifiedJSON;
|
|
2021
2067
|
}
|
|
2022
2068
|
|
package/layout/audio.js
CHANGED
package/layout/audionew.js
CHANGED
package/layout/base.js
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.224
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
import {Animator} from "./animator.js";
|
|
8
|
+
class Base extends Animator{
|
|
8
9
|
constructor(/*items*/){
|
|
10
|
+
super();
|
|
11
|
+
// Converted from a standalone class; opting out of Theme keeps rendering
|
|
12
|
+
// byte-identical to the pre-conversion behaviour.
|
|
13
|
+
this._noTheme = true;
|
|
9
14
|
//Base.prototype.items = items;
|
|
10
15
|
this.oldLength = 0;
|
|
11
16
|
}
|
|
@@ -101,7 +106,7 @@ class Base {
|
|
|
101
106
|
|
|
102
107
|
|
|
103
108
|
mount(el){
|
|
104
|
-
this.
|
|
109
|
+
this.res = el;
|
|
105
110
|
this.render(el).render(el); // // this.render === function inside component
|
|
106
111
|
}
|
|
107
112
|
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.224
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import {Animator} from "./animator.js";
|
|
8
|
+
import { keyPattern } from "../lib/codegen.js";
|
|
8
9
|
class /*Beta*/MobileBar extends Animator {
|
|
9
10
|
constructor() {
|
|
10
11
|
super();
|
|
@@ -19,7 +20,7 @@ class /*Beta*/MobileBar extends Animator {
|
|
|
19
20
|
if (!jsonString){
|
|
20
21
|
return;
|
|
21
22
|
}
|
|
22
|
-
const modifiedJSON = jsonString.replace(
|
|
23
|
+
const modifiedJSON = jsonString.replace(keyPattern(), "$1:");
|
|
23
24
|
return modifiedJSON;
|
|
24
25
|
}
|
|
25
26
|
|
package/layout/button.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.224
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -265,11 +265,6 @@ this.options = obj;
|
|
|
265
265
|
}
|
|
266
266
|
|
|
267
267
|
|
|
268
|
-
|
|
269
|
-
background(color){
|
|
270
|
-
this.res.style.background = color;
|
|
271
|
-
return this;
|
|
272
|
-
}
|
|
273
268
|
|
|
274
269
|
|
|
275
270
|
|
|
@@ -346,11 +341,8 @@ this.options = obj;
|
|
|
346
341
|
|
|
347
342
|
return this;
|
|
348
343
|
}
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
this.res.addEventListener("click", e);
|
|
352
|
-
return this;
|
|
353
|
-
}
|
|
344
|
+
|
|
345
|
+
|
|
354
346
|
|
|
355
347
|
toCode() {
|
|
356
348
|
//console.log("OPTIONS ARE");
|
package/layout/center.js
CHANGED
package/layout/checkbox.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.224
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -177,5 +177,5 @@ obj.resmar && this.resmar(obj.resmar);
|
|
|
177
177
|
}
|
|
178
178
|
|
|
179
179
|
// Export the class
|
|
180
|
-
window.Checkbox = Checkbox;
|
|
180
|
+
if (typeof window !== "undefined") window.Checkbox = Checkbox;
|
|
181
181
|
export { Checkbox };
|
package/layout/circle.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.224
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { Animator } from "./animator.js";
|
|
8
8
|
|
|
9
|
+
import { toObjectSource } from "../lib/codegen.js";
|
|
9
10
|
class Circle extends Animator {
|
|
10
11
|
constructor() {
|
|
11
12
|
super();
|
|
@@ -36,7 +37,7 @@ class Circle extends Animator {
|
|
|
36
37
|
Object.entries(this.options || {}).filter(([, v]) => v != null)
|
|
37
38
|
);
|
|
38
39
|
|
|
39
|
-
const objString =
|
|
40
|
+
const objString = toObjectSource(cleanedObj, 4);
|
|
40
41
|
return [`new Circle().set(${objString})`];
|
|
41
42
|
}
|
|
42
43
|
|
package/layout/code.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.224
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import {Animator} from "./animator.js";
|
|
8
8
|
|
|
9
9
|
|
|
10
|
+
import { keyPattern } from "../lib/codegen.js";
|
|
10
11
|
class Code extends Animator {
|
|
11
12
|
constructor(){
|
|
12
13
|
super();
|
|
@@ -34,7 +35,7 @@ class Code extends Animator {
|
|
|
34
35
|
|
|
35
36
|
// pretty JSON, but keep functions/nested objects readable
|
|
36
37
|
const str = JSON.stringify(obj, null, 2)
|
|
37
|
-
.replace(
|
|
38
|
+
.replace(keyPattern(), "$1:") // remove quotes from identifier keys
|
|
38
39
|
.replace(/"([^"]+)"/g, (m, p1) => {
|
|
39
40
|
// keep colors and class names quoted, but escape code safely
|
|
40
41
|
if (p1.includes("\n") || p1.includes("'") || p1.includes('"')) {
|
package/layout/container.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.224
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import {Animator} from "./animator.js";
|
|
8
8
|
|
|
9
|
+
import { toObjectSource } from "../lib/codegen.js";
|
|
9
10
|
class Wrapper extends Animator { // 12:10:02 found grep 06/03
|
|
10
11
|
constructor(obj) {
|
|
11
12
|
super();
|
|
@@ -40,9 +41,7 @@ code = `${pad}new Wrapper()`;
|
|
|
40
41
|
Object.entries(this.obj).filter(([key, value]) => value !== null)
|
|
41
42
|
);
|
|
42
43
|
|
|
43
|
-
const objString =
|
|
44
|
-
.stringify(cleanedObj, null, 2)
|
|
45
|
-
.replace(/"([^"]+)":/g, '$1:');
|
|
44
|
+
const objString = toObjectSource(cleanedObj, 2);
|
|
46
45
|
|
|
47
46
|
code += `\n${pad} .set(${objString})`;
|
|
48
47
|
}
|
|
@@ -497,10 +496,7 @@ code = `${pad}new Wrapper()`;
|
|
|
497
496
|
return this;
|
|
498
497
|
}
|
|
499
498
|
|
|
500
|
-
|
|
501
|
-
this.res.style.width = perc;
|
|
502
|
-
return this;
|
|
503
|
-
}
|
|
499
|
+
|
|
504
500
|
|
|
505
501
|
heightNoAuto(perc){
|
|
506
502
|
this.res.style.height = perc;
|
package/layout/dropdown-2025.js
CHANGED
package/layout/flex-card.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.224
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -132,15 +132,6 @@ this.options = obj;
|
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
|
|
135
|
-
|
|
136
|
-
background(color){
|
|
137
|
-
// The shorthand, not backgroundColor: it also resets background-image,
|
|
138
|
-
// so setting a flat colour after a gradient clears the gradient. The
|
|
139
|
-
// longhand left it in place, so the same call behaved differently
|
|
140
|
-
// depending on which component you happened to hold.
|
|
141
|
-
this.res.style.background = color;
|
|
142
|
-
return this;
|
|
143
|
-
}
|
|
144
135
|
|
|
145
136
|
|
|
146
137
|
|
|
@@ -164,12 +155,6 @@ this.options = obj;
|
|
|
164
155
|
|
|
165
156
|
|
|
166
157
|
|
|
167
|
-
//@deprecated round: superseded by `radius()`, which is the same thing under the name the option already uses.
|
|
168
|
-
round(v) {
|
|
169
|
-
this.deprecatedOption("round()", "radius()");
|
|
170
|
-
return this.radius(v);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
158
|
|
|
174
159
|
render(div){
|
|
175
160
|
if (div){
|
package/layout/flex-grid.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.224
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -218,11 +218,8 @@ if (el != undefined){
|
|
|
218
218
|
this.code.push("\n ])");
|
|
219
219
|
return this;
|
|
220
220
|
}
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
this.res.style.width = w;
|
|
224
|
-
return this;
|
|
225
|
-
}
|
|
221
|
+
|
|
222
|
+
|
|
226
223
|
|
|
227
224
|
|
|
228
225
|
border(color, width){
|
package/layout/flex-row.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.224
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import {Animator} from "./animator.js";
|
|
8
8
|
|
|
9
|
+
import { keyPattern } from "../lib/codegen.js";
|
|
9
10
|
class FlexRow extends Animator {
|
|
10
11
|
constructor(frs, saveEl) {
|
|
11
12
|
super();
|
|
@@ -372,7 +373,7 @@ let stringified = JSON.stringify(options.borderObj);
|
|
|
372
373
|
|
|
373
374
|
// stringify cleaned object
|
|
374
375
|
const objString = JSON.stringify(clean, null, 4)
|
|
375
|
-
.replace(
|
|
376
|
+
.replace(keyPattern(), "$1:") // unquote identifier keys
|
|
376
377
|
.replace(/"([^"]*)"/g, (m, p1) => {
|
|
377
378
|
// wrap multiline text/code in backticks
|
|
378
379
|
if (p1.includes("\n")) return "`" + p1.replace(/`/g, "\\`") + "`";
|
|
@@ -491,11 +492,8 @@ let stringified = JSON.stringify(options.borderObj);
|
|
|
491
492
|
|
|
492
493
|
return this;
|
|
493
494
|
}
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
this.res.style.background = color;
|
|
497
|
-
return this;
|
|
498
|
-
}
|
|
495
|
+
|
|
496
|
+
|
|
499
497
|
|
|
500
498
|
radius(val){
|
|
501
499
|
this.res.style.borderRadius = `${val}px`;
|
|
@@ -506,11 +504,8 @@ let stringified = JSON.stringify(options.borderObj);
|
|
|
506
504
|
this.res.style.boxShadow = "0px 1px 10px 0px rgb(145 145 145)"; //`${x}px ${y}px ${radius}px #000`;
|
|
507
505
|
return this;
|
|
508
506
|
}
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
this.res.addEventListener("click", e);
|
|
512
|
-
return this;
|
|
513
|
-
}
|
|
507
|
+
|
|
508
|
+
|
|
514
509
|
|
|
515
510
|
|
|
516
511
|
items(arr) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.224
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -182,5 +182,5 @@ import {Animator} from "../animator.js";
|
|
|
182
182
|
DataList = function(...args) { return new _oldDataList(...args) };
|
|
183
183
|
|
|
184
184
|
|
|
185
|
-
window.DataList = DataList;
|
|
185
|
+
if (typeof window !== "undefined") window.DataList = DataList;
|
|
186
186
|
export { DataList };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.224
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -164,5 +164,5 @@ obj.name && input.setAttribute("name", obj.name);
|
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
// 31/01/25 22:06:50 works
|
|
167
|
-
window.FloatingInput = FloatingInput;
|
|
167
|
+
if (typeof window !== "undefined") window.FloatingInput = FloatingInput;
|
|
168
168
|
export { FloatingInput };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.224
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -155,5 +155,5 @@ let dataList = DataList()
|
|
|
155
155
|
}
|
|
156
156
|
|
|
157
157
|
new Wrappera().mount("#res");
|
|
158
|
-
window.Wrappera = Wrappera;
|
|
158
|
+
if (typeof window !== "undefined") window.Wrappera = Wrappera;
|
|
159
159
|
export { Wrappera };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.224
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -220,5 +220,5 @@ addNode(value, text){
|
|
|
220
220
|
|
|
221
221
|
|
|
222
222
|
|
|
223
|
-
window.Picker = Picker;
|
|
223
|
+
if (typeof window !== "undefined") window.Picker = Picker;
|
|
224
224
|
export { Picker };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.224
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -227,5 +227,5 @@ class RadioGroup /*extends Animator*/ {
|
|
|
227
227
|
|
|
228
228
|
|
|
229
229
|
|
|
230
|
-
window.RadioGroup = RadioGroup;
|
|
230
|
+
if (typeof window !== "undefined") window.RadioGroup = RadioGroup;
|
|
231
231
|
export { RadioGroup };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.224
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -227,5 +227,5 @@ class RadioGroup /*extends Animator*/ {
|
|
|
227
227
|
|
|
228
228
|
|
|
229
229
|
|
|
230
|
-
window.RadioGroup = RadioGroup;
|
|
230
|
+
if (typeof window !== "undefined") window.RadioGroup = RadioGroup;
|
|
231
231
|
export { RadioGroup };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.224
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -160,5 +160,5 @@ class Range {
|
|
|
160
160
|
|
|
161
161
|
|
|
162
162
|
|
|
163
|
-
window.Range = Range;
|
|
163
|
+
if (typeof window !== "undefined") window.Range = Range;
|
|
164
164
|
export { Range };
|
package/layout/free.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.224
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import {Animator} from "./animator.js";
|
|
8
8
|
|
|
9
|
+
import { toObjectSource } from "../lib/codegen.js";
|
|
9
10
|
class Free extends Animator {
|
|
10
11
|
constructor(){
|
|
11
12
|
super();
|
|
@@ -152,9 +153,7 @@ class Free extends Animator {
|
|
|
152
153
|
return [""];
|
|
153
154
|
}
|
|
154
155
|
|
|
155
|
-
const objString =
|
|
156
|
-
.stringify(this.options, null, 4)
|
|
157
|
-
.replace(/"([^"]+)":/g, '$1:');
|
|
156
|
+
const objString = toObjectSource(this.options, 4);
|
|
158
157
|
|
|
159
158
|
|
|
160
159
|
var codeStr = "";
|
package/layout/grid-switcher.js
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.224
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
import {Animator} from "./animator.js";
|
|
8
|
+
class AreaSwitcher extends Animator{
|
|
8
9
|
constructor() {
|
|
10
|
+
super();
|
|
11
|
+
// Converted from a standalone class; opting out of Theme keeps rendering
|
|
12
|
+
// byte-identical to the pre-conversion behaviour.
|
|
13
|
+
this._noTheme = true;
|
|
9
14
|
|
|
10
15
|
this.gridContainer = document.createElement("div");
|
|
11
16
|
this.gridContainer.classList.add("grid-container");
|
|
@@ -120,9 +125,13 @@ for (var i = 0; i < arr.length - 1; i++){
|
|
|
120
125
|
// Usage example:
|
|
121
126
|
|
|
122
127
|
|
|
123
|
-
class GridSwitcher {
|
|
128
|
+
class GridSwitcher extends Animator{
|
|
124
129
|
constructor(){
|
|
125
|
-
|
|
130
|
+
super();
|
|
131
|
+
// Converted from a standalone class; opting out of Theme keeps rendering
|
|
132
|
+
// byte-identical to the pre-conversion behaviour.
|
|
133
|
+
this._noTheme = true;
|
|
134
|
+
this.res = document.createElement("div");
|
|
126
135
|
this.gridWrap = document.createElement("div");
|
|
127
136
|
}
|
|
128
137
|
|
|
@@ -141,7 +150,7 @@ for (var i = 0; i < arr.length - 1; i++){
|
|
|
141
150
|
let mq = window.matchMedia(`(max-width: ${val.at})`).matches;
|
|
142
151
|
if ((mq || val.at == "default") && mq !== this.lastMq){
|
|
143
152
|
const update = new Simple().set(val.template, this.dynamicItems).render();
|
|
144
|
-
this.
|
|
153
|
+
this.res = update;
|
|
145
154
|
this.render(this.domStr);
|
|
146
155
|
this.lastMq = mq;
|
|
147
156
|
}
|
|
@@ -154,7 +163,7 @@ for (var i = 0; i < arr.length - 1; i++){
|
|
|
154
163
|
|
|
155
164
|
render(div){
|
|
156
165
|
this.gridWrap.innerHTML = "";
|
|
157
|
-
this.gridWrap.appendChild(this.
|
|
166
|
+
this.gridWrap.appendChild(this.res);
|
|
158
167
|
|
|
159
168
|
if (div){
|
|
160
169
|
document.querySelector(div).appendChild(this.gridWrap);
|
|
@@ -162,7 +171,7 @@ for (var i = 0; i < arr.length - 1; i++){
|
|
|
162
171
|
|
|
163
172
|
return this.gridWrap;
|
|
164
173
|
|
|
165
|
-
// Just return this.
|
|
174
|
+
// Just return this.res it normally
|
|
166
175
|
}
|
|
167
176
|
}
|
|
168
177
|
|
package/layout/grid.js
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.224
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
import {Animator} from "./animator.js";
|
|
8
|
+
class Grid extends Animator {
|
|
8
9
|
constructor(frs, saveEl) {
|
|
10
|
+
super();
|
|
11
|
+
// Converted from a standalone class. Opting out of Theme keeps rendering
|
|
12
|
+
// byte-identical to the pre-conversion behaviour; opt in per component.
|
|
13
|
+
this._noTheme = true;
|
|
9
14
|
this.saveEl = saveEl;
|
|
10
15
|
this.frs = frs;
|
|
11
16
|
this.res = null;
|
package/layout/image.js
CHANGED