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.
- 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.LICENSE.txt +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 +1 -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.LICENSE.txt +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 +1 -1
- package/dist/designer.esm.js +1 -1
- package/dist/designer.esm.js.LICENSE.txt +1 -1
- package/dist/dropdown.cjs.js +1 -1
- package/dist/dropdown.cjs.js.LICENSE.txt +1 -1
- package/dist/dropdown.esm.js +1 -1
- package/dist/dropdown.esm.js.LICENSE.txt +1 -1
- package/dist/element-mapper.cjs.js +1 -1
- package/dist/element-mapper.cjs.js.LICENSE.txt +1 -1
- package/dist/element-mapper.esm.js +1 -1
- package/dist/element-mapper.esm.js.LICENSE.txt +1 -1
- package/dist/finalresult.esm.js +1 -1
- package/dist/finalresult.esm.js.LICENSE.txt +1 -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 +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.LICENSE.txt +1 -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.LICENSE.txt +1 -1
- package/dist/meta-adder.esm.js.LICENSE.txt +1 -1
- package/dist/modal-2025.cjs.js.LICENSE.txt +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.LICENSE.txt +1 -1
- package/dist/radio.esm.js.LICENSE.txt +1 -1
- package/dist/range.cjs.js.LICENSE.txt +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.LICENSE.txt +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.LICENSE.txt +1 -1
- package/dist/spacer.esm.js.LICENSE.txt +1 -1
- package/dist/stack.cjs.js.LICENSE.txt +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.LICENSE.txt +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/layout/animator.js +91 -31
- package/layout/audio.js +1 -1
- package/layout/audionew.js +1 -1
- package/layout/base-2.js +1 -1
- package/layout/base.js +1 -1
- package/layout/beta-desktop-bar.js +1 -1
- package/layout/beta-mobile-bar.js +1 -1
- package/layout/box.js +1 -1
- package/layout/button.js +1 -84
- package/layout/cards.js +1 -1
- package/layout/center.js +1 -21
- package/layout/checkbox.js +1 -1
- package/layout/circle.js +1 -2
- package/layout/clean-row.js +1 -87
- package/layout/code.js +1 -1
- package/layout/container.js +24 -152
- package/layout/custom.js +7 -5
- package/layout/div-image.js +1 -49
- package/layout/dropdown-2025.js +1 -1
- package/layout/dropdown.js +1 -1
- package/layout/empty-element.js +1 -1
- package/layout/external-stylesheet.js +1 -1
- package/layout/flex-card.js +2 -90
- package/layout/flex-grid.js +1 -6
- package/layout/flex-row.js +1 -86
- package/layout/footer.js +1 -1
- package/layout/form-components/custom.js +1 -1
- package/layout/form-components/data-list.js +1 -1
- package/layout/form-components/floating-input.js +1 -1
- package/layout/form-components/form-all.js +1 -1
- package/layout/form-components/form.js +1 -1
- package/layout/form-components/image-picker.js +1 -1
- package/layout/form-components/picker.js +1 -1
- package/layout/form-components/radio.js +1 -1
- package/layout/form-components/radiogroup.js +1 -1
- package/layout/form-components/range.js +1 -1
- package/layout/free.js +1 -1
- package/layout/grid-new.js +1 -1
- package/layout/grid-switcher.js +1 -1
- package/layout/grid.js +1 -1
- package/layout/group.js +1 -41
- package/layout/header.js +1 -1
- package/layout/horizontal-scroller.js +3 -3
- package/layout/image-old.js +1 -41
- package/layout/image.js +1 -79
- package/layout/index.js +1 -1
- package/layout/label.js +1 -1
- package/layout/link.js +7 -101
- package/layout/list-OLD.js +1 -1
- package/layout/list.js +1 -1
- package/layout/meta-adder.js +1 -1
- package/layout/modal-2025.js +1 -1
- package/layout/modernwrap.js +1 -1
- package/layout/multiswitcher.js +1 -1
- package/layout/multiswitcherBeta.js +1 -1
- package/layout/nav-bar.js +1 -1
- package/layout/nav-factor/custom-div.js +1 -1
- package/layout/navBar-OLD.js +1 -1
- package/layout/new-flat-adder.js +1 -1
- package/layout/new-nav-bar.js +2 -2
- package/layout/offset-container.js +2 -9
- package/layout/polygon.js +1 -6
- package/layout/prerender-site.js +1 -1
- package/layout/prerender.js +1 -1
- package/layout/progress.js +1 -21
- package/layout/row.js +1 -1
- package/layout/saved-new-nav-bar.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 +3 -3
- package/layout/spacer.js +1 -1
- package/layout/stack.js +1 -1
- package/layout/svg.js +1 -1
- package/layout/switcher.js +1 -1
- package/layout/table.js +1 -6
- package/layout/text-field.js +1 -65
- package/layout/text.js +5 -100
- package/layout/ulist.js +1 -1
- package/layout/video.js +1 -1
- package/layout/without-new.js +1 -1
- package/layout/wrap.js +1 -1
- package/layout/zoom-card.js +1 -3
- package/lib/card-getter.js +1 -1
- package/lib/data.js +1 -1
- package/lib/designer.js +1 -1
- package/lib/element-mapper.js +1 -1
- package/lib/keyframe-animation.js +1 -1
- package/lib/link-getter.js +1 -1
- package/lib/raster-ops.js +1 -1
- package/lib/scroll-video.js +1 -1
- package/lib/seo.js +1 -1
- package/lib/stacker.js +1 -1
- package/lib/theme.js +1 -1
- package/lib/transform-anim.js +1 -1
- package/package.json +1 -1
- package/layout/styler.js +0 -119
package/layout/container.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
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
|
-
|
|
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
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
]).
|
|
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
|
-
.
|
|
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
|
-
.
|
|
225
|
+
.pad([{tb: 30}])
|
|
224
226
|
.render("#res");
|
|
225
227
|
|
|
226
228
|
|
package/layout/div-image.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
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);
|
package/layout/dropdown-2025.js
CHANGED
package/layout/dropdown.js
CHANGED
package/layout/empty-element.js
CHANGED
package/layout/flex-card.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
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
|
|
package/layout/flex-grid.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
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;
|
package/layout/flex-row.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
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