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.
- 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 +30 -2
- package/layout/audio.js +1 -1
- package/layout/audionew.js +1 -1
- package/layout/base.js +1 -1
- package/layout/beta-desktop-bar.js +1 -1
- package/layout/beta-mobile-bar.js +3 -2
- package/layout/button.js +1 -1
- 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 +3 -4
- package/layout/dropdown-2025.js +1 -1
- package/layout/flex-card.js +1 -1
- package/layout/flex-grid.js +1 -1
- package/layout/flex-row.js +3 -2
- 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 +1 -1
- package/layout/grid.js +1 -1
- package/layout/horizontal-scroller.js +1 -1
- package/layout/image.js +1 -1
- package/layout/index.js +1 -1
- package/layout/link.js +5 -5
- package/layout/list.js +3 -4
- package/layout/meta-adder.js +1 -1
- package/layout/modal-2025.js +1 -1
- package/layout/morph.js +1003 -0
- package/layout/multiswitcher.js +11 -3
- package/layout/nav-bar.js +2 -3
- 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 +1 -1
- package/layout/row.js +1 -1
- package/layout/scroll-video.js +1 -1
- package/layout/side-bar.js +1 -1
- 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 +1 -1
- package/layout/stack.js +1 -1
- package/layout/svg.js +3 -4
- package/layout/switcher.js +1 -1
- package/layout/table.js +1 -1
- package/layout/text-field.js +1 -1
- package/layout/text.js +5 -5
- package/layout/ulist.js +1 -1
- package/layout/video.js +1 -1
- package/layout/wrap.js +1 -1
- 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 +1980 -81
- package/lib/raster-presets.js +329 -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.1.0
|
|
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.
|
|
@@ -2034,7 +2062,7 @@ maxWidth(w){
|
|
|
2034
2062
|
}
|
|
2035
2063
|
|
|
2036
2064
|
removeQuotesFromFirstWord(jsonString) {
|
|
2037
|
-
const modifiedJSON = jsonString.replace(
|
|
2065
|
+
const modifiedJSON = jsonString.replace(keyPattern(), "$1:");
|
|
2038
2066
|
return modifiedJSON;
|
|
2039
2067
|
}
|
|
2040
2068
|
|
package/layout/audio.js
CHANGED
package/layout/audionew.js
CHANGED
package/layout/base.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0
|
|
2
|
+
* nodality v1.1.0
|
|
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
package/layout/center.js
CHANGED
package/layout/checkbox.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0
|
|
2
|
+
* nodality v1.1.0
|
|
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.1.0
|
|
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.1.0
|
|
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.1.0
|
|
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
|
}
|
package/layout/dropdown-2025.js
CHANGED
package/layout/flex-card.js
CHANGED
package/layout/flex-grid.js
CHANGED
package/layout/flex-row.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0
|
|
2
|
+
* nodality v1.1.0
|
|
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, "\\`") + "`";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0
|
|
2
|
+
* nodality v1.1.0
|
|
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.1.0
|
|
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.1.0
|
|
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.1.0
|
|
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.1.0
|
|
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.1.0
|
|
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.1.0
|
|
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.1.0
|
|
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
package/layout/grid.js
CHANGED
package/layout/image.js
CHANGED
package/layout/index.js
CHANGED
package/layout/link.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0
|
|
2
|
+
* nodality v1.1.0
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
import {Animator} from "./animator.js";
|
|
8
8
|
|
|
9
9
|
|
|
10
|
+
import { toObjectSource } from "../lib/codegen.js";
|
|
11
|
+
import { keyPattern } from "../lib/codegen.js";
|
|
10
12
|
class Link extends Animator {
|
|
11
13
|
constructor(text, link, stopEM){
|
|
12
14
|
super();
|
|
@@ -80,9 +82,7 @@ if (isExternal || isAnchor || url.endsWith(".html") || isScheme) {
|
|
|
80
82
|
Object.entries(this.options).filter(([key, value]) => value !== null)
|
|
81
83
|
);
|
|
82
84
|
|
|
83
|
-
const objString =
|
|
84
|
-
.stringify(cleanedObj, null, 4)
|
|
85
|
-
.replace(/"([^"]+)":/g, '$1:');
|
|
85
|
+
const objString = toObjectSource(cleanedObj, 4);
|
|
86
86
|
|
|
87
87
|
return [`new Link().set(${objString})`];
|
|
88
88
|
}
|
|
@@ -162,7 +162,7 @@ if (isExternal || isAnchor || url.endsWith(".html") || isScheme) {
|
|
|
162
162
|
if (!jsonString){
|
|
163
163
|
return;
|
|
164
164
|
}
|
|
165
|
-
const modifiedJSON = jsonString.replace(
|
|
165
|
+
const modifiedJSON = jsonString.replace(keyPattern(), "$1:");
|
|
166
166
|
return modifiedJSON;
|
|
167
167
|
}
|
|
168
168
|
|
package/layout/list.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0
|
|
2
|
+
* nodality v1.1.0
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -128,7 +128,6 @@ class Cell extends Animator{
|
|
|
128
128
|
return this.res;
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
|
-
window.List = List;
|
|
132
|
-
window.Cell = Cell;
|
|
133
|
-
|
|
131
|
+
if (typeof window !== "undefined") window.List = List;
|
|
132
|
+
if (typeof window !== "undefined") window.Cell = Cell;
|
|
134
133
|
export { List, Cell };
|
package/layout/meta-adder.js
CHANGED
package/layout/modal-2025.js
CHANGED