nodality 1.3.13 → 1.3.15
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/bin/nodality.mjs +1 -1
- package/dist/animator.cjs.js.LICENSE.txt +1 -1
- package/dist/animator.esm.js.LICENSE.txt +1 -1
- package/dist/audionew.cjs.js.LICENSE.txt +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.LICENSE.txt +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.LICENSE.txt +1 -1
- package/dist/center.esm.js.LICENSE.txt +1 -1
- package/dist/checkbox.cjs.js.LICENSE.txt +1 -1
- package/dist/checkbox.esm.js.LICENSE.txt +1 -1
- package/dist/code.cjs.js.LICENSE.txt +1 -1
- package/dist/code.esm.js.LICENSE.txt +1 -1
- package/dist/container.cjs.js.LICENSE.txt +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/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 +2 -2
- package/dist/finalresult.esm.js.LICENSE.txt +1 -1
- package/dist/flex-card.cjs.js.LICENSE.txt +1 -1
- package/dist/flex-card.esm.js.LICENSE.txt +1 -1
- package/dist/flex-grid.cjs.js.LICENSE.txt +1 -1
- package/dist/flex-grid.esm.js.LICENSE.txt +1 -1
- package/dist/flex-row.cjs.js.LICENSE.txt +1 -1
- package/dist/flex-row.esm.js.LICENSE.txt +1 -1
- package/dist/floating-input.cjs.js.LICENSE.txt +1 -1
- package/dist/floating-input.esm.js.LICENSE.txt +1 -1
- package/dist/free.cjs.js.LICENSE.txt +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.LICENSE.txt +1 -1
- package/dist/image-picker.esm.js.LICENSE.txt +1 -1
- package/dist/image.cjs.js.LICENSE.txt +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.d.ts +20 -1
- package/dist/index.esm.js +2 -2
- 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.LICENSE.txt +1 -1
- package/dist/link-getter.esm.js.LICENSE.txt +1 -1
- package/dist/link.cjs.js.LICENSE.txt +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.LICENSE.txt +1 -1
- package/dist/new-nav-bar.esm.js.LICENSE.txt +1 -1
- package/dist/picker.cjs.js.LICENSE.txt +1 -1
- package/dist/picker.esm.js.LICENSE.txt +1 -1
- package/dist/progress.cjs.js.LICENSE.txt +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.LICENSE.txt +1 -1
- package/dist/side-nav-bar.esm.js.LICENSE.txt +1 -1
- package/dist/simple-bar.cjs.js.LICENSE.txt +1 -1
- package/dist/simple-bar.esm.js.LICENSE.txt +1 -1
- package/dist/slider-2025.cjs.js.LICENSE.txt +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.LICENSE.txt +1 -1
- package/dist/table.esm.js.LICENSE.txt +1 -1
- package/dist/text-field.cjs.js.LICENSE.txt +1 -1
- package/dist/text-field.esm.js.LICENSE.txt +1 -1
- package/dist/text.cjs.js.LICENSE.txt +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.LICENSE.txt +1 -1
- package/dist/ulist.esm.js.LICENSE.txt +1 -1
- package/dist/video.cjs.js.LICENSE.txt +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.LICENSE.txt +1 -1
- package/dist/zoom-card.esm.js.LICENSE.txt +1 -1
- package/layout/animator.js +1 -1
- package/layout/audio.js +1 -1
- package/layout/audionew.js +1 -1
- package/layout/base.js +1 -1
- package/layout/beta-desktop-bar.js +4 -1
- package/layout/beta-mobile-bar.js +35 -13
- package/layout/button.js +1 -1
- package/layout/center.js +1 -1
- package/layout/checkbox.js +1 -1
- package/layout/circle.js +1 -1
- package/layout/code.js +1 -1
- package/layout/container.js +1 -1
- 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 +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-overlay.js +1 -1
- 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 +5 -1
- package/layout/link.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/morph.js +1 -1
- package/layout/multiswitcher.js +15 -2
- package/layout/nav-bar.js +1 -1
- package/layout/nav-factor/custom-div.js +1 -1
- package/layout/new-nav-bar.js +1 -1
- package/layout/polygon.js +1 -1
- package/layout/prerender-site.js +1 -1
- package/layout/prerender.js +14 -9
- package/layout/progress.js +1 -1
- package/layout/row.js +1 -1
- package/layout/scroll-video.js +1 -1
- package/layout/shop.js +261 -0
- 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 +1 -1
- package/layout/switcher.js +1 -1
- package/layout/table.js +1 -1
- package/layout/text-field.js +1 -1
- package/layout/text.js +1 -1
- 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/agent-surface.js +24 -2
- package/lib/card-getter.js +1 -1
- package/lib/check-page.js +1 -1
- package/lib/codegen.js +1 -1
- package/lib/data.js +1 -1
- package/lib/designer.js +3 -2
- package/lib/element-mapper.js +186 -1
- package/lib/element-params.generated.js +4 -4
- package/lib/grid-geometry.js +1 -1
- package/lib/keyframe-animation.js +1 -1
- package/lib/link-getter.js +1 -1
- package/lib/morph-node.js +1 -1
- package/lib/normalize-spec.js +1 -1
- package/lib/parse-html.js +1 -1
- package/lib/raster-inspect.js +1 -1
- package/lib/raster-ops.js +1 -1
- package/lib/raster-presets.js +1 -1
- package/lib/resolve-refs.js +1 -1
- package/lib/scroll-video.js +1 -1
- package/lib/seo.js +1 -1
- package/lib/stacker.js +1 -1
- package/lib/suggest.js +1 -1
- package/lib/theme.js +1 -1
- package/lib/transform-anim.js +1 -1
- package/lib/transition.js +1 -1
- package/lib/validate-nodes.js +42 -4
- package/lib/webmcp-adapter.js +36 -1
- package/package.json +1 -1
- package/schema.json +1028 -12
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.3.
|
|
2
|
+
* nodality v1.3.15
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -54,6 +54,9 @@ class /*Beta*/DesktopBar extends Animator { // add set method for background col
|
|
|
54
54
|
if (obj.hamburgerColour) {
|
|
55
55
|
this.hamburgerColour = obj.hamburgerColour;
|
|
56
56
|
}
|
|
57
|
+
// Last, so a page's values replace the defaults setStyles() wrote.
|
|
58
|
+
obj.color && (this.res.style.color = obj.color);
|
|
59
|
+
obj.keySet && this.keySet(obj.keySet);
|
|
57
60
|
return this;
|
|
58
61
|
}
|
|
59
62
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.3.
|
|
2
|
+
* nodality v1.3.15
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -39,15 +39,18 @@ let repl = this.removeQuotesFromFirstWord(JSON.stringify(this.obj));
|
|
|
39
39
|
|
|
40
40
|
// 23:38:35 Yes!!! 23/04/2025
|
|
41
41
|
// Alway construct neste in this way
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
brand
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
42
|
+
// Des renders by running this code, so an option left out of it never
|
|
43
|
+
// reaches the page — hamburgerColour was read by set() and dropped here.
|
|
44
|
+
// Every option set() reads is emitted; brand only when there is one (it
|
|
45
|
+
// threw on a bar without a brand).
|
|
46
|
+
const SERIALISED = ["background", "color", "mar", "pad", "resmar", "respad", "radius", "maxHeight", "hamburgerColour", "keySet", "menuLabel", "menuId"];
|
|
47
|
+
let codeObj = SERIALISED
|
|
48
|
+
.filter((k) => this.obj[k] !== undefined)
|
|
49
|
+
.map((k) => `${k}: ${JSON.stringify(this.obj[k])},`)
|
|
50
|
+
.join("\n");
|
|
51
|
+
if (this.obj.brand && typeof this.obj.brand.toCode === "function") {
|
|
52
|
+
codeObj += `\nbrand: ${[].concat(this.obj.brand.toCode()).join("")},`;
|
|
53
|
+
}
|
|
51
54
|
|
|
52
55
|
return `new MobileBar().set({${codeObj}}).add([
|
|
53
56
|
${items.join(",")}
|
|
@@ -92,9 +95,12 @@ radius: ${JSON.stringify(this.obj.radius)},
|
|
|
92
95
|
this.hamburgerColour = obj.hamburgerColour;
|
|
93
96
|
}
|
|
94
97
|
|
|
95
|
-
|
|
96
|
-
|
|
97
98
|
this.setStyles(obj);
|
|
99
|
+
|
|
100
|
+
// After setStyles, so a page's values replace the defaults.
|
|
101
|
+
obj.color && (this.navbar.style.color = obj.color);
|
|
102
|
+
obj.pad && this.pad(obj.pad);
|
|
103
|
+
obj.keySet && this.keySet(obj.keySet);
|
|
98
104
|
return this;
|
|
99
105
|
}
|
|
100
106
|
|
|
@@ -143,7 +149,6 @@ console.log(newTextInstance.render());*/
|
|
|
143
149
|
//}
|
|
144
150
|
|
|
145
151
|
if (obj.brand && typeof newTextInstance.render === "function") {
|
|
146
|
-
console.log("Appending brand:", newTextInstance.render());
|
|
147
152
|
this.brand.appendChild(newTextInstance.render());
|
|
148
153
|
} else {
|
|
149
154
|
}
|
|
@@ -156,9 +161,25 @@ if (obj.brand && typeof newTextInstance.render === "function") {
|
|
|
156
161
|
this.toggleButton = document.createElement('button');
|
|
157
162
|
this.toggleButton.classList.add('navbar-toggle');
|
|
158
163
|
this.toggleButton.innerHTML = '☰'; // Hamburger icon
|
|
164
|
+
// A glyph is not a name: without these a screen reader announced the
|
|
165
|
+
// button as "☰" and could not tell whether the menu was open.
|
|
166
|
+
this.toggleButton.setAttribute('type', 'button');
|
|
167
|
+
this.toggleButton.setAttribute('aria-label', obj.menuLabel ?? 'Menu');
|
|
168
|
+
this.toggleButton.setAttribute('aria-expanded', 'false');
|
|
159
169
|
|
|
160
170
|
this.navContent = document.createElement('div');
|
|
161
171
|
this.navContent.classList.add('navbar-content');
|
|
172
|
+
if (obj.menuId) {
|
|
173
|
+
this.navContent.setAttribute('id', obj.menuId);
|
|
174
|
+
this.toggleButton.setAttribute('aria-controls', obj.menuId);
|
|
175
|
+
}
|
|
176
|
+
// Following a link closes the menu. On a one-page site the links are
|
|
177
|
+
// anchors, and a menu left open covered the section it had jumped to.
|
|
178
|
+
this.navContent.addEventListener('click', (e) => {
|
|
179
|
+
if (this.isMobileNavOpen && e.target && e.target.closest && e.target.closest('a')) {
|
|
180
|
+
this.toggleMobileNav();
|
|
181
|
+
}
|
|
182
|
+
});
|
|
162
183
|
|
|
163
184
|
this.navbarHeader.appendChild(this.brand);
|
|
164
185
|
this.navbarHeader.appendChild(this.toggleButton);
|
|
@@ -213,6 +234,7 @@ if (obj.brand && typeof newTextInstance.render === "function") {
|
|
|
213
234
|
|
|
214
235
|
toggleMobileNav() {
|
|
215
236
|
this.isMobileNavOpen = !this.isMobileNavOpen;
|
|
237
|
+
this.toggleButton.setAttribute('aria-expanded', String(this.isMobileNavOpen));
|
|
216
238
|
this.navContent.style.display = this.isMobileNavOpen ? 'flex' : 'none';
|
|
217
239
|
if (this.isMobileNavOpen) {
|
|
218
240
|
this.navContent.style.flexDirection = 'column';
|
package/layout/button.js
CHANGED
package/layout/center.js
CHANGED
package/layout/checkbox.js
CHANGED
package/layout/circle.js
CHANGED
package/layout/code.js
CHANGED
package/layout/container.js
CHANGED
package/layout/dropdown-2025.js
CHANGED
package/layout/flex-card.js
CHANGED
package/layout/flex-grid.js
CHANGED
package/layout/flex-row.js
CHANGED
package/layout/free.js
CHANGED
package/layout/grid-overlay.js
CHANGED
package/layout/grid-switcher.js
CHANGED
package/layout/grid.js
CHANGED
package/layout/image.js
CHANGED
package/layout/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.3.
|
|
2
|
+
* nodality v1.3.15
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -70,6 +70,7 @@ import { AreaSwitcher } from "../layout/grid-switcher.js";
|
|
|
70
70
|
import { Polygon } from "../layout/polygon.js";
|
|
71
71
|
import { Circle } from "../layout/circle.js";
|
|
72
72
|
import { GridOverlay } from "../layout/grid-overlay.js";
|
|
73
|
+
import { Shop } from "../layout/shop.js";
|
|
73
74
|
|
|
74
75
|
// SEO + data helpers — also surface via package.json subpath exports
|
|
75
76
|
// (`nodality/seo`, `nodality/data`) for Node-side tree-shaking, but we
|
|
@@ -142,6 +143,7 @@ if (typeof window !== 'undefined') {
|
|
|
142
143
|
window.Polygon = Polygon;
|
|
143
144
|
window.Circle = Circle;
|
|
144
145
|
window.GridOverlay = GridOverlay;
|
|
146
|
+
window.Shop = Shop;
|
|
145
147
|
window.FloatingInput = FloatingInput;
|
|
146
148
|
window.Form = Form;
|
|
147
149
|
}
|
|
@@ -203,6 +205,7 @@ if (typeof global !== 'undefined') {
|
|
|
203
205
|
global.Polygon = Polygon;
|
|
204
206
|
global.Circle = Circle;
|
|
205
207
|
global.GridOverlay = GridOverlay;
|
|
208
|
+
global.Shop = Shop;
|
|
206
209
|
global.FloatingInput = FloatingInput;
|
|
207
210
|
global.Form = Form;
|
|
208
211
|
}
|
|
@@ -264,6 +267,7 @@ export {
|
|
|
264
267
|
Polygon,
|
|
265
268
|
Circle,
|
|
266
269
|
GridOverlay,
|
|
270
|
+
Shop,
|
|
267
271
|
FloatingInput,
|
|
268
272
|
Form,
|
|
269
273
|
// SEO + data helpers — see explanation above the imports block.
|
package/layout/link.js
CHANGED
package/layout/list.js
CHANGED
package/layout/meta-adder.js
CHANGED
package/layout/modal-2025.js
CHANGED
package/layout/morph.js
CHANGED
package/layout/multiswitcher.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.3.
|
|
2
|
+
* nodality v1.3.15
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -117,8 +117,21 @@ str += `{ at: "${this.options.breakpoints[i].at}", view: ${this.options.breakpoi
|
|
|
117
117
|
|
|
118
118
|
applyView() {
|
|
119
119
|
|
|
120
|
+
// No matchMedia at all (a bare jsdom — the prerenderer installs its own,
|
|
121
|
+
// other hosts may not): show the widest view rather than an empty box.
|
|
122
|
+
// The browser re-runs this with real queries when it rebuilds the page.
|
|
123
|
+
if (typeof window.matchMedia !== "function") {
|
|
124
|
+
const widest = this.breakpoints.reduce((a, b) => (parseFloat(b.at) > parseFloat(a.at) ? b : a), this.breakpoints[0]);
|
|
125
|
+
if (widest && this.currentView !== widest.view.render()) {
|
|
126
|
+
this.internalDiv.innerHTML = "";
|
|
127
|
+
this.internalDiv.appendChild(widest.view.render());
|
|
128
|
+
this.currentView = widest.view.render();
|
|
129
|
+
}
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
|
|
120
133
|
// check if we are in range
|
|
121
|
-
|
|
134
|
+
|
|
122
135
|
const width = window.innerWidth;
|
|
123
136
|
|
|
124
137
|
let rstart = this.breakpoints.map(el => el.at);
|
package/layout/nav-bar.js
CHANGED
package/layout/new-nav-bar.js
CHANGED
package/layout/polygon.js
CHANGED
package/layout/prerender-site.js
CHANGED
package/layout/prerender.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.3.
|
|
2
|
+
* nodality v1.3.15
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -263,14 +263,19 @@ export async function prerender({
|
|
|
263
263
|
window.matchMedia = (query) => {
|
|
264
264
|
let matches = false;
|
|
265
265
|
if (typeof query === "string" && query.includes("width")) {
|
|
266
|
-
//
|
|
267
|
-
//
|
|
268
|
-
// false
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
266
|
+
// Every min-width / max-width clause must hold, so a range —
|
|
267
|
+
// "(min-width: 0px) and (max-width: 1199px)" — resolves too. It
|
|
268
|
+
// used to fall through to false on the claim that Nodality never
|
|
269
|
+
// emits one, but the Switcher behind every `nav` does: no range
|
|
270
|
+
// matched during SSG, and every nav shipped as an empty box.
|
|
271
|
+
// Comma lists (OR) are still answered false.
|
|
272
|
+
if (!query.includes(",")) {
|
|
273
|
+
const min = query.match(/min-width:\s*([\d.]+)\s*px/i);
|
|
274
|
+
const max = query.match(/max-width:\s*([\d.]+)\s*px/i);
|
|
275
|
+
if (min || max) {
|
|
276
|
+
matches = (!min || vw >= Number(min[1])) && (!max || vw <= Number(max[1]));
|
|
277
|
+
}
|
|
278
|
+
}
|
|
274
279
|
}
|
|
275
280
|
return {
|
|
276
281
|
matches,
|
package/layout/progress.js
CHANGED
package/layout/row.js
CHANGED
package/layout/scroll-video.js
CHANGED