@vectoriox/iox-ui 5.83.1 → 5.85.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/actions-core/index.d.ts +18 -2
- package/composite-core/index.d.ts +93 -15
- package/design-core/index.d.ts +566 -4
- package/fesm2022/vectoriox-iox-ui-actions-core.mjs +18 -1
- package/fesm2022/vectoriox-iox-ui-actions-core.mjs.map +1 -1
- package/fesm2022/vectoriox-iox-ui-composite-core.mjs +307 -39
- package/fesm2022/vectoriox-iox-ui-composite-core.mjs.map +1 -1
- package/fesm2022/vectoriox-iox-ui-design-core.mjs +680 -15
- package/fesm2022/vectoriox-iox-ui-design-core.mjs.map +1 -1
- package/fesm2022/vectoriox-iox-ui-generation-core.mjs +665 -24
- package/fesm2022/vectoriox-iox-ui-generation-core.mjs.map +1 -1
- package/fesm2022/vectoriox-iox-ui-harness-core.mjs +39 -1
- package/fesm2022/vectoriox-iox-ui-harness-core.mjs.map +1 -1
- package/fesm2022/vectoriox-iox-ui-scene-core.mjs +101 -5
- package/fesm2022/vectoriox-iox-ui-scene-core.mjs.map +1 -1
- package/fesm2022/vectoriox-iox-ui.mjs +285 -12
- package/fesm2022/vectoriox-iox-ui.mjs.map +1 -1
- package/generation-core/index.d.ts +414 -8
- package/harness-core/index.d.ts +81 -3
- package/index.d.ts +143 -42
- package/package.json +1 -1
- package/scene-core/index.d.ts +32 -4
- package/src/actions-core/dialog-motion.ts +25 -0
- package/src/composite-core/header.ts +25 -0
- package/src/composite-core/public-api.ts +1 -0
- package/src/composite-core/slider-runtime.ts +82 -0
- package/src/composite-core/slider.ts +194 -27
- package/src/composite-core/structure.ts +14 -9
- package/src/design-core/flavor-spec.generated.ts +596 -9
- package/src/design-core/header-behaviour.ts +76 -0
- package/src/design-core/public-api.ts +1 -0
- package/src/design-core/theme-color.ts +21 -5
- package/src/generation-core/ai-run.ts +10 -2
- package/src/generation-core/art-direction.ts +122 -0
- package/src/generation-core/audit-site.ts +14 -0
- package/src/generation-core/compose-site.ts +8 -0
- package/src/generation-core/node-baselines.generated.ts +17 -3
- package/src/generation-core/patterns.ts +2 -0
- package/src/generation-core/pictures.ts +464 -0
- package/src/generation-core/plan-wire.ts +2 -0
- package/src/generation-core/public-api.ts +2 -0
- package/src/generation-core/site-build-run.ts +3 -0
- package/src/generation-core/site-plan.model.ts +4 -0
- package/src/generation-core/site-spec.generated.ts +126 -1
- package/src/generation-core/stock-photos.ts +40 -10
- package/src/generation-core/validate-site-plan.ts +14 -0
- package/src/harness-core/business-types.ts +3 -1
- package/src/harness-core/generation-view.ts +50 -1
- package/src/harness-core/harness-spec.generated.ts +30 -0
- package/src/scene-core/scene.ts +18 -0
- package/src/scene-core/scroll-driver.ts +83 -6
- package/styles/iox-design.css +232 -1
- package/styles/iox-forms.css +5 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { readOwnedTrait, writeOwnedTrait, ROW_INDEX_ATTRIBUTE, elementStyleById, switchElementStyle, LinkType, setColorScheme, COLOR_SCHEME_TRAIT, repeatedRowIndex, roleClass } from '@vectoriox/iox-ui/design-core';
|
|
1
|
+
import { readOwnedTrait, writeOwnedTrait, ROW_INDEX_ATTRIBUTE, elementStyleById, switchElementStyle, LinkType, setColorScheme, COLOR_SCHEME_TRAIT, repeatedRowIndex, roleClass, headerBehaviourOf, HeaderTrait, headerEdgeOf, headerStaysAtTop } from '@vectoriox/iox-ui/design-core';
|
|
2
2
|
export { ROW_INDEX_ATTRIBUTE } from '@vectoriox/iox-ui/design-core';
|
|
3
3
|
|
|
4
4
|
/** What a recipe asks its consumer to create: a NEW node of `type`, the way that consumer creates one
|
|
@@ -1990,9 +1990,35 @@ var SliderRole;
|
|
|
1990
1990
|
SliderRole["Prev"] = "slider.prev";
|
|
1991
1991
|
SliderRole["Next"] = "slider.next";
|
|
1992
1992
|
SliderRole["Pagination"] = "slider.pagination";
|
|
1993
|
+
/** Premium M4 (M1.3): the bar UNDER the picture that holds the controls — caption · count · arrows. */
|
|
1994
|
+
SliderRole["Bar"] = "slider.bar";
|
|
1995
|
+
/** The caption of the slide in view (its `caption`, else its picture's description) — drawn by the runtime. */
|
|
1996
|
+
SliderRole["Caption"] = "slider.caption";
|
|
1997
|
+
/** "1 / 3", drawn by the runtime, left to right in every language. */
|
|
1998
|
+
SliderRole["Count"] = "slider.count";
|
|
1993
1999
|
})(SliderRole || (SliderRole = {}));
|
|
1994
2000
|
/** Parts in the order they are stamped: the pause control first (APG: the first focus stop), the dots last. */
|
|
1995
|
-
const SLIDER_PART_ROLES = [
|
|
2001
|
+
const SLIDER_PART_ROLES = [
|
|
2002
|
+
SliderRole.Pause, SliderRole.Prev, SliderRole.Next, SliderRole.Pagination, SliderRole.Bar, SliderRole.Caption, SliderRole.Count,
|
|
2003
|
+
];
|
|
2004
|
+
/** Where the controls sit (premium M4): over the picture (CC3, every slider saved before M4) or in the bar under it. */
|
|
2005
|
+
var SliderPlacement;
|
|
2006
|
+
(function (SliderPlacement) {
|
|
2007
|
+
SliderPlacement["Over"] = "over";
|
|
2008
|
+
SliderPlacement["Under"] = "under";
|
|
2009
|
+
})(SliderPlacement || (SliderPlacement = {}));
|
|
2010
|
+
const SLIDER_PLACEMENT_TRAIT = 'controlsPlacement';
|
|
2011
|
+
/** The bar's parts in reading order: the pause control, the caption at the reading start, the count, the dots, the
|
|
2012
|
+
* arrows at the end (M1.3). */
|
|
2013
|
+
const SLIDER_BAR_ORDER = [
|
|
2014
|
+
SliderRole.Pause, SliderRole.Caption, SliderRole.Count, SliderRole.Pagination, SliderRole.Prev, SliderRole.Next,
|
|
2015
|
+
];
|
|
2016
|
+
/** Parts that exist only in the bar. */
|
|
2017
|
+
const BAR_ONLY = [SliderRole.Caption, SliderRole.Count];
|
|
2018
|
+
/** Premium M4: the trait that has the SCROLL play the slider (held mid-screen, resting on each picture). */
|
|
2019
|
+
const SLIDER_SCROLL_PLAYS_TRAIT = 'scrollPlays';
|
|
2020
|
+
/** Premium M4: a slide's caption (SliderSlide ▸ Caption) — the bar's Caption part shows the one in view. */
|
|
2021
|
+
const SLIDE_CAPTION_TRAIT = 'caption';
|
|
1996
2022
|
const SLIDER_TYPE = 'SliderContainer';
|
|
1997
2023
|
const SLIDE_TYPE = 'SliderSlide';
|
|
1998
2024
|
/** The Bindings switches that own the parts. */
|
|
@@ -2001,11 +2027,17 @@ var SliderFlag;
|
|
|
2001
2027
|
SliderFlag["Navigation"] = "enableNavigation";
|
|
2002
2028
|
SliderFlag["Pagination"] = "enablePagination";
|
|
2003
2029
|
SliderFlag["Autoplay"] = "enableAutoplay";
|
|
2030
|
+
/** Premium M4: a caption under the picture (the bar only). */
|
|
2031
|
+
SliderFlag["Caption"] = "enableCaption";
|
|
2032
|
+
/** Premium M4: "1 / 3" under the picture (the bar only). */
|
|
2033
|
+
SliderFlag["Count"] = "enableCount";
|
|
2004
2034
|
})(SliderFlag || (SliderFlag = {}));
|
|
2005
2035
|
const FLAG_PARTS = [
|
|
2006
2036
|
[SliderFlag.Autoplay, [SliderRole.Pause]],
|
|
2007
2037
|
[SliderFlag.Navigation, [SliderRole.Prev, SliderRole.Next]],
|
|
2008
2038
|
[SliderFlag.Pagination, [SliderRole.Pagination]],
|
|
2039
|
+
[SliderFlag.Caption, [SliderRole.Caption]],
|
|
2040
|
+
[SliderFlag.Count, [SliderRole.Count]],
|
|
2009
2041
|
];
|
|
2010
2042
|
/** The trait that names the carousel (Slider ▸ Accessibility ▸ Carousel name) — the A11y trait every named part uses. */
|
|
2011
2043
|
const SLIDER_NAME_TRAIT = 'ariaLabel';
|
|
@@ -2015,9 +2047,28 @@ function isSliderPart(node) {
|
|
|
2015
2047
|
function isSlider(node) {
|
|
2016
2048
|
return node?.type === SLIDER_TYPE;
|
|
2017
2049
|
}
|
|
2018
|
-
/** The slider's own part playing `role`
|
|
2050
|
+
/** The slider's own part playing `role` — a direct child, or one in its bar — or undefined. */
|
|
2019
2051
|
function sliderPart(slider, role) {
|
|
2020
|
-
|
|
2052
|
+
const direct = (slider.children ?? []).find(c => c?.role === role);
|
|
2053
|
+
if (direct)
|
|
2054
|
+
return direct;
|
|
2055
|
+
const bar = (slider.children ?? []).find(c => c?.role === SliderRole.Bar);
|
|
2056
|
+
return (bar?.children ?? []).find(c => c?.role === role);
|
|
2057
|
+
}
|
|
2058
|
+
/**
|
|
2059
|
+
* Where the slider's controls sit. The STRUCTURE decides once there are controls — a bar means under the picture, a
|
|
2060
|
+
* control of its own means over it (every slider saved before M4) — so a stored trait can never disagree with what is
|
|
2061
|
+
* drawn. A slider with no controls yet takes its `controlsPlacement` (the builder's new Slider: under the picture).
|
|
2062
|
+
*/
|
|
2063
|
+
function sliderPlacementOf(slider) {
|
|
2064
|
+
if (!slider)
|
|
2065
|
+
return SliderPlacement.Over;
|
|
2066
|
+
const children = slider.children ?? [];
|
|
2067
|
+
if (children.some(c => c?.role === SliderRole.Bar))
|
|
2068
|
+
return SliderPlacement.Under;
|
|
2069
|
+
if (children.some(isSliderPart))
|
|
2070
|
+
return SliderPlacement.Over;
|
|
2071
|
+
return readProp(slider, SLIDER_PLACEMENT_TRAIT) === SliderPlacement.Under ? SliderPlacement.Under : SliderPlacement.Over;
|
|
2021
2072
|
}
|
|
2022
2073
|
/** True when the slider's controls are parts (it was created or migrated in CC3) — Swiper then draws none of its own. */
|
|
2023
2074
|
function hasSliderParts(slider) {
|
|
@@ -2047,11 +2098,14 @@ var Type$2;
|
|
|
2047
2098
|
Type["ButtonBlock"] = "ButtonBlock";
|
|
2048
2099
|
Type["Icon"] = "Icon";
|
|
2049
2100
|
Type["Container"] = "Container";
|
|
2101
|
+
Type["Text"] = "Text";
|
|
2050
2102
|
})(Type$2 || (Type$2 = {}));
|
|
2051
2103
|
var Style$2;
|
|
2052
2104
|
(function (Style) {
|
|
2053
2105
|
Style["Control"] = "button-secondary";
|
|
2054
2106
|
Style["Icon"] = "icon";
|
|
2107
|
+
/** The caption and the count read as small print. */
|
|
2108
|
+
Style["Words"] = "small";
|
|
2055
2109
|
})(Style$2 || (Style$2 = {}));
|
|
2056
2110
|
/** Each part's glyph (Phosphor) and its default accessible name. */
|
|
2057
2111
|
const SLIDER_PART_GLYPH = {
|
|
@@ -2065,8 +2119,29 @@ const PART_LABEL = {
|
|
|
2065
2119
|
[SliderRole.Prev]: 'Previous',
|
|
2066
2120
|
[SliderRole.Next]: 'Next',
|
|
2067
2121
|
[SliderRole.Pagination]: 'Pagination',
|
|
2122
|
+
[SliderRole.Bar]: 'Controls',
|
|
2123
|
+
[SliderRole.Caption]: 'Caption',
|
|
2124
|
+
[SliderRole.Count]: 'Count',
|
|
2068
2125
|
};
|
|
2069
2126
|
const ZERO$1 = '0px 0px 0px 0px';
|
|
2127
|
+
/** A control in the bar: in flow, its own size, no offsets (the bar spaces its parts). */
|
|
2128
|
+
const BAR_PART_LAYOUT = { position: 'static', top: 'auto', margin: ZERO$1 };
|
|
2129
|
+
/**
|
|
2130
|
+
* The bar (M1.3): a row under the picture. Its inline padding keeps the PAGE's margin when the slider bleeds to the
|
|
2131
|
+
* screen's edge — the gutter less however far the slider is already inset from the screen (`100%` is the slider's
|
|
2132
|
+
* width, the bar's containing block) — so in a padded section it is 0 and at full bleed it is the gutter.
|
|
2133
|
+
*/
|
|
2134
|
+
const BAR_INLINE_PAD = 'max(0px, calc(var(--iox-space-gutter, 24px) - (100vw - 100%) / 2))';
|
|
2135
|
+
const BAR_BASE = {
|
|
2136
|
+
position: 'relative', display: 'flex', flexDirection: 'row', flexWrap: 'nowrap', alignItems: 'center', justifyContent: 'flex-start',
|
|
2137
|
+
gap: '12px', width: '100%', height: 'auto', minHeight: '44px', margin: ZERO$1, padding: `12px ${BAR_INLINE_PAD} 0px ${BAR_INLINE_PAD}`, zIndex: '10',
|
|
2138
|
+
};
|
|
2139
|
+
/** The caption takes the room the controls leave; its words end in an ellipsis rather than push them off. */
|
|
2140
|
+
const CAPTION_BASE$1 = {
|
|
2141
|
+
flexGrow: '1', flexShrink: '1', flexBasis: '0%', minWidth: '0px', width: 'auto', minHeight: 'auto', margin: ZERO$1, padding: ZERO$1,
|
|
2142
|
+
overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap',
|
|
2143
|
+
};
|
|
2144
|
+
const COUNT_BASE = { flexGrow: '0', flexShrink: '0', width: 'auto', minHeight: 'auto', margin: ZERO$1, padding: ZERO$1 };
|
|
2070
2145
|
/** A round 44px control (board 6 `.st-ctl`), over the slides (z above `.swiper-wrapper`). The PLACE (which edge) is the
|
|
2071
2146
|
* shared CSS's, in logical insets, so a carousel reads the same way in RTL. */
|
|
2072
2147
|
const CONTROL_BASE = {
|
|
@@ -2093,6 +2168,16 @@ function legacyLookOf(slider) {
|
|
|
2093
2168
|
}
|
|
2094
2169
|
/** One part, from the recipe (board 6: `button-secondary` controls, token dots) or in a migrated slider's legacy look. */
|
|
2095
2170
|
function buildSliderPart(create, role, legacy) {
|
|
2171
|
+
if (role === SliderRole.Bar) {
|
|
2172
|
+
const bar = makeCompositePart(create, { key: 'bar', type: Type$2.Container, props: {}, elementStyle: NO_ELEMENT_STYLE }, role, PART_LABEL[role], BAR_BASE);
|
|
2173
|
+
bar.children = [];
|
|
2174
|
+
return bar;
|
|
2175
|
+
}
|
|
2176
|
+
if (role === SliderRole.Caption || role === SliderRole.Count) {
|
|
2177
|
+
// Their words are the runtime's (the slide in view), drawn as the part's generated content: the node's own
|
|
2178
|
+
// content stays empty, so no renderer ever fights the runtime over the element's text.
|
|
2179
|
+
return makeCompositePart(create, { key: role.split('.')[1], type: Type$2.Text, props: { content: '', tag: 'p' }, elementStyle: Style$2.Words }, role, PART_LABEL[role], role === SliderRole.Caption ? CAPTION_BASE$1 : COUNT_BASE);
|
|
2180
|
+
}
|
|
2096
2181
|
if (role === SliderRole.Pagination) {
|
|
2097
2182
|
const dots = makeCompositePart(create, { key: 'pagination', type: Type$2.Container, props: {}, elementStyle: NO_ELEMENT_STYLE }, role, PART_LABEL[role], legacy?.paginationColor ? { ...PAGINATION_BASE, color: legacy.paginationColor } : PAGINATION_BASE);
|
|
2098
2183
|
dots.children = [];
|
|
@@ -2117,49 +2202,133 @@ function buildSliderPart(create, role, legacy) {
|
|
|
2117
2202
|
return button;
|
|
2118
2203
|
}
|
|
2119
2204
|
const truthy = (v) => v === true || v === 'true';
|
|
2120
|
-
/** The parts the slider's switches call for, in stamping order
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2205
|
+
/** The parts the slider's switches call for, in stamping order — and its bar, while the controls sit under the
|
|
2206
|
+
* picture. A caption and a count live in the bar only. */
|
|
2207
|
+
function wantedSliderParts(slider, placement = sliderPlacementOf(slider)) {
|
|
2208
|
+
const under = placement === SliderPlacement.Under;
|
|
2209
|
+
const roles = FLAG_PARTS.filter(([flag]) => truthy(readProp(slider, flag))).flatMap(([, r]) => r).filter(r => under || !BAR_ONLY.includes(r));
|
|
2210
|
+
// The bar exists while it holds something: an empty band under the picture is never drawn.
|
|
2211
|
+
return under && roles.length ? [...roles, SliderRole.Bar] : roles;
|
|
2212
|
+
}
|
|
2213
|
+
/** The slider's parts wherever they are: its direct children and those in its bar. */
|
|
2214
|
+
function allSliderParts(slider) {
|
|
2215
|
+
const direct = (slider.children ?? []).filter(isSliderPart);
|
|
2216
|
+
const bar = direct.find(c => c.role === SliderRole.Bar);
|
|
2217
|
+
return [...direct, ...(bar?.children ?? []).filter(isSliderPart)];
|
|
2218
|
+
}
|
|
2219
|
+
const barIndex = (role) => SLIDER_BAR_ORDER.indexOf(role);
|
|
2124
2220
|
/**
|
|
2125
|
-
* Make the slider's parts match its switches — ONE edit (a palette switch, the migration, the composer
|
|
2126
|
-
* parts are stamped from the recipe (or, `legacy`, in the migrated look) at their place: the
|
|
2127
|
-
* and Next before the first slide
|
|
2128
|
-
*
|
|
2221
|
+
* Make the slider's parts match its switches — ONE edit (a palette switch, the migration, the composer, a change of
|
|
2222
|
+
* placement). Missing parts are stamped from the recipe (or, `legacy`, in the migrated look) at their place: over the
|
|
2223
|
+
* picture, the pause control, Previous and Next before the first slide and the pagination after the last; under it
|
|
2224
|
+
* (premium M4), every control in the bar in its reading order, the bar after the slides. Parts whose switch is off are
|
|
2225
|
+
* removed wherever they are. Everything else (the slides, the author's edits to an existing part) is kept.
|
|
2129
2226
|
*/
|
|
2130
2227
|
function syncSliderParts(slider, create, legacy) {
|
|
2131
|
-
|
|
2132
|
-
const
|
|
2133
|
-
const
|
|
2134
|
-
const
|
|
2228
|
+
// A migrated slider keeps the place Swiper drew its controls in: over the picture.
|
|
2229
|
+
const wanted = new Set(wantedSliderParts(slider, legacy ? SliderPlacement.Over : sliderPlacementOf(slider)));
|
|
2230
|
+
const under = wanted.has(SliderRole.Bar);
|
|
2231
|
+
const removed = allSliderParts(slider).filter(c => !wanted.has(c.role));
|
|
2135
2232
|
const added = [];
|
|
2233
|
+
let kept = [...(slider.children ?? [])].filter(c => !removed.includes(c));
|
|
2234
|
+
let bar = kept.find(c => c.role === SliderRole.Bar) ?? null;
|
|
2235
|
+
if (bar)
|
|
2236
|
+
bar.children = (bar.children ?? []).filter(c => !removed.includes(c));
|
|
2237
|
+
if (under && !bar) {
|
|
2238
|
+
bar = buildSliderPart(create, SliderRole.Bar);
|
|
2239
|
+
added.push(bar);
|
|
2240
|
+
kept.push(bar);
|
|
2241
|
+
}
|
|
2136
2242
|
for (const role of SLIDER_PART_ROLES) {
|
|
2137
|
-
if (!wanted.has(role) || kept.some(c => c.role === role))
|
|
2243
|
+
if (role === SliderRole.Bar || !wanted.has(role) || allSliderPartsOf(kept, bar).some(c => c.role === role))
|
|
2138
2244
|
continue;
|
|
2139
2245
|
const part = buildSliderPart(create, role, legacy);
|
|
2140
2246
|
added.push(part);
|
|
2141
|
-
if (
|
|
2247
|
+
if (under && bar) {
|
|
2248
|
+
if (role !== SliderRole.Caption && role !== SliderRole.Count)
|
|
2249
|
+
writeStyles(part, BAR_PART_LAYOUT);
|
|
2250
|
+
placeInBar(bar, part);
|
|
2251
|
+
}
|
|
2252
|
+
else if (role === SliderRole.Pagination) {
|
|
2142
2253
|
kept.push(part);
|
|
2143
2254
|
}
|
|
2144
2255
|
else {
|
|
2145
|
-
|
|
2146
|
-
const order = SLIDER_PART_ROLES.indexOf(role);
|
|
2147
|
-
const firstSlide = kept.findIndex(c => !isSliderPart(c));
|
|
2148
|
-
let at = firstSlide < 0 ? kept.length : firstSlide;
|
|
2149
|
-
for (let i = 0; i < kept.length; i++) {
|
|
2150
|
-
const r = kept[i].role;
|
|
2151
|
-
if (isSliderPart(kept[i]) && SLIDER_PART_ROLES.indexOf(r) > order && i < at) {
|
|
2152
|
-
at = i;
|
|
2153
|
-
break;
|
|
2154
|
-
}
|
|
2155
|
-
}
|
|
2156
|
-
kept.splice(at, 0, part);
|
|
2256
|
+
kept = placeBeforeSlides(kept, part, role);
|
|
2157
2257
|
}
|
|
2158
2258
|
}
|
|
2159
2259
|
if (added.length || removed.length)
|
|
2160
2260
|
slider.children = kept;
|
|
2161
2261
|
return { added, removed };
|
|
2162
2262
|
}
|
|
2263
|
+
function allSliderPartsOf(children, bar) {
|
|
2264
|
+
return [...children.filter(isSliderPart), ...(bar?.children ?? []).filter(isSliderPart)];
|
|
2265
|
+
}
|
|
2266
|
+
/** Into the bar at its reading-order place (after the parts that come before it). */
|
|
2267
|
+
function placeInBar(bar, part) {
|
|
2268
|
+
const children = [...(bar.children ?? [])];
|
|
2269
|
+
const order = barIndex(part.role);
|
|
2270
|
+
const at = children.findIndex(c => barIndex(c.role) > order);
|
|
2271
|
+
children.splice(at < 0 ? children.length : at, 0, part);
|
|
2272
|
+
bar.children = children;
|
|
2273
|
+
}
|
|
2274
|
+
/** Before the first slide, after the parts that come before it in stamping order. */
|
|
2275
|
+
function placeBeforeSlides(kept, part, role) {
|
|
2276
|
+
const out = [...kept];
|
|
2277
|
+
const order = SLIDER_PART_ROLES.indexOf(role);
|
|
2278
|
+
const firstSlide = out.findIndex(c => !isSliderPart(c));
|
|
2279
|
+
let at = firstSlide < 0 ? out.length : firstSlide;
|
|
2280
|
+
for (let i = 0; i < out.length; i++) {
|
|
2281
|
+
const r = out[i].role;
|
|
2282
|
+
if (isSliderPart(out[i]) && SLIDER_PART_ROLES.indexOf(r) > order && i < at) {
|
|
2283
|
+
at = i;
|
|
2284
|
+
break;
|
|
2285
|
+
}
|
|
2286
|
+
}
|
|
2287
|
+
out.splice(at, 0, part);
|
|
2288
|
+
return out;
|
|
2289
|
+
}
|
|
2290
|
+
/** The layout a control has over the picture (its recipe's place: absolute, the arrows at the vertical middle). */
|
|
2291
|
+
function overLayoutFor(role) {
|
|
2292
|
+
if (role === SliderRole.Pagination)
|
|
2293
|
+
return { position: 'absolute', margin: ZERO$1 };
|
|
2294
|
+
return role === SliderRole.Pause ? { position: 'absolute', top: 'auto', margin: ZERO$1 } : { position: 'absolute', top: ARROW_TOP, margin: ZERO$1 };
|
|
2295
|
+
}
|
|
2296
|
+
/**
|
|
2297
|
+
* Move the controls over the picture or into the bar under it (premium M4, M1.3 — Slider ▸ Controls) — ONE edit and
|
|
2298
|
+
* one undo step. The parts keep their identity and the author's edits; only their place changes (in flow in the bar,
|
|
2299
|
+
* absolute over the picture). A caption and a count exist only in the bar. True when anything changed.
|
|
2300
|
+
*/
|
|
2301
|
+
function setSliderPlacement(slider, placement, create) {
|
|
2302
|
+
const was = sliderPlacementOf(slider);
|
|
2303
|
+
writeProp(slider, SLIDER_PLACEMENT_TRAIT, placement);
|
|
2304
|
+
if (was === placement)
|
|
2305
|
+
return false;
|
|
2306
|
+
const children = [...(slider.children ?? [])];
|
|
2307
|
+
const bar = children.find(c => c.role === SliderRole.Bar) ?? null;
|
|
2308
|
+
if (placement === SliderPlacement.Under) {
|
|
2309
|
+
const controls = children.filter(c => isSliderPart(c) && c.role !== SliderRole.Bar);
|
|
2310
|
+
const rest = children.filter(c => !controls.includes(c));
|
|
2311
|
+
const target = bar ?? buildSliderPart(create, SliderRole.Bar);
|
|
2312
|
+
for (const part of controls) {
|
|
2313
|
+
writeStyles(part, BAR_PART_LAYOUT);
|
|
2314
|
+
placeInBar(target, part);
|
|
2315
|
+
}
|
|
2316
|
+
slider.children = bar ? rest : [...rest, target];
|
|
2317
|
+
}
|
|
2318
|
+
else {
|
|
2319
|
+
const inBar = (bar?.children ?? []).filter(isSliderPart);
|
|
2320
|
+
let rest = children.filter(c => c !== bar);
|
|
2321
|
+
for (const part of inBar) {
|
|
2322
|
+
if (BAR_ONLY.includes(part.role))
|
|
2323
|
+
continue;
|
|
2324
|
+
writeStyles(part, overLayoutFor(part.role));
|
|
2325
|
+
rest = part.role === SliderRole.Pagination ? [...rest, part] : placeBeforeSlides(rest, part, part.role);
|
|
2326
|
+
}
|
|
2327
|
+
slider.children = rest;
|
|
2328
|
+
}
|
|
2329
|
+
syncSliderParts(slider, create);
|
|
2330
|
+
return true;
|
|
2331
|
+
}
|
|
2163
2332
|
/** True when a saved slider still relies on Swiper-drawn controls: a switch is on and no part exists yet. */
|
|
2164
2333
|
function needsSliderMigration(slider) {
|
|
2165
2334
|
return !!slider && isSlider(slider) && !hasSliderParts(slider) && wantedSliderParts(slider).length > 0;
|
|
@@ -2248,6 +2417,8 @@ function buildCarouselRecipe(create, options = {}) {
|
|
|
2248
2417
|
// Rewind: Previous and Next are always there to press (board 6) — neither greys out at an end.
|
|
2249
2418
|
slidesPerView: 1, spaceBetween: 0, loop: 'rewind', enableNavigation: true, enablePagination: true, enableAutoplay: true, autoplayDelay: 5000,
|
|
2250
2419
|
autoplayPauseOnMouseEnter: true, autoHeight: true, [SLIDER_NAME_TRAIT]: options.name ?? 'What clients say',
|
|
2420
|
+
// Board 6 draws its controls in a row above the quotes — its own place, not the M4 bar under a picture.
|
|
2421
|
+
[SLIDER_PLACEMENT_TRAIT]: SliderPlacement.Over,
|
|
2251
2422
|
}))
|
|
2252
2423
|
writeProp(slider, name, value);
|
|
2253
2424
|
slider.children = (options.quotes ?? CAROUSEL_QUOTES).map((q, i) => {
|
|
@@ -2312,13 +2483,17 @@ const COMPOSITE_ROLE_SPECS = {
|
|
|
2312
2483
|
// A Scene always keeps its stage: everything it pins and clips lives there.
|
|
2313
2484
|
[SceneRole.Scene]: { parent: null },
|
|
2314
2485
|
[SceneRole.Stage]: { parent: SceneRole.Scene, locked: true },
|
|
2315
|
-
// CC3 — a Slider's controls are its own direct children (Swiper is handed them)
|
|
2316
|
-
// Autoplay is on (WCAG 2.2.2): the Autoplay switch removes it,
|
|
2317
|
-
// their switches and may be deleted
|
|
2318
|
-
|
|
2319
|
-
[SliderRole.
|
|
2320
|
-
[SliderRole.
|
|
2321
|
-
[SliderRole.
|
|
2486
|
+
// CC3 — a Slider's controls are its own direct children (Swiper is handed them) — or, premium M4, children of its
|
|
2487
|
+
// bar under the picture. The pause control stays while Autoplay is on (WCAG 2.2.2): the Autoplay switch removes it,
|
|
2488
|
+
// never Delete. The arrows, the dots, the caption and the count follow their switches and may be deleted; the bar
|
|
2489
|
+
// follows Slider ▸ Controls.
|
|
2490
|
+
[SliderRole.Pause]: { parent: SliderRole.Bar, parentType: SLIDER_TYPE, locked: true },
|
|
2491
|
+
[SliderRole.Prev]: { parent: SliderRole.Bar, parentType: SLIDER_TYPE, pinned: true },
|
|
2492
|
+
[SliderRole.Next]: { parent: SliderRole.Bar, parentType: SLIDER_TYPE, pinned: true },
|
|
2493
|
+
[SliderRole.Pagination]: { parent: SliderRole.Bar, parentType: SLIDER_TYPE, pinned: true },
|
|
2494
|
+
[SliderRole.Bar]: { parent: null, parentType: SLIDER_TYPE, pinned: true },
|
|
2495
|
+
[SliderRole.Caption]: { parent: SliderRole.Bar, pinned: true },
|
|
2496
|
+
[SliderRole.Count]: { parent: SliderRole.Bar, pinned: true },
|
|
2322
2497
|
};
|
|
2323
2498
|
var StructureEdit;
|
|
2324
2499
|
(function (StructureEdit) {
|
|
@@ -2348,7 +2523,7 @@ function structureRefusal(node, edit, ancestors = []) {
|
|
|
2348
2523
|
return null;
|
|
2349
2524
|
if (edit === StructureEdit.Delete)
|
|
2350
2525
|
return spec.locked ? StructureRefusal.LockedPart : null;
|
|
2351
|
-
const placed = spec.parentType
|
|
2526
|
+
const placed = (!!spec.parentType && parent?.type === spec.parentType) || (spec.parent !== null && parent?.role === spec.parent);
|
|
2352
2527
|
return placed ? null : StructureRefusal.LockedPlacement;
|
|
2353
2528
|
}
|
|
2354
2529
|
/** True when `node` is a locked part (shown with a lock and no delete in the layer tree). Deleting a whole
|
|
@@ -2508,6 +2683,77 @@ function attachCarouselA11y(swiper, options = {}) {
|
|
|
2508
2683
|
carouselOf(swiper.el)?.destroy();
|
|
2509
2684
|
return new CarouselA11y(swiper, options);
|
|
2510
2685
|
}
|
|
2686
|
+
// ── The bar's words (premium components M4, M1.3) ──────────────────────────────────────────────────────
|
|
2687
|
+
/** Where the Caption and the Count parts get their words: generated content (`attr()`), never the element's text — so
|
|
2688
|
+
* the canvas's Text component and the runtime never write the same node. */
|
|
2689
|
+
const SLIDER_TEXT_ATTRIBUTE = 'data-iox-text';
|
|
2690
|
+
/** A slide's caption, written by every renderer (iox-ui `nodeA11yAttributes`, SLIDE_CAPTION_ATTRIBUTE). */
|
|
2691
|
+
const CAPTION_ATTRIBUTE = 'data-iox-caption';
|
|
2692
|
+
/** Held for a frame while the caption changes, so its new words fade in (iox-design.css). */
|
|
2693
|
+
const SLIDER_SWAPPING_ATTRIBUTE = 'data-iox-swapping';
|
|
2694
|
+
const BAR_RUNTIME_KEY = '__ioxSliderBar';
|
|
2695
|
+
/** What the caption says for a slide: its own caption, else its picture's description, else nothing. */
|
|
2696
|
+
function sliderCaptionOf(slide) {
|
|
2697
|
+
if (!slide)
|
|
2698
|
+
return '';
|
|
2699
|
+
const holder = slide.hasAttribute(CAPTION_ATTRIBUTE) ? slide : slide.querySelector(`[${CAPTION_ATTRIBUTE}]`);
|
|
2700
|
+
const own = holder?.getAttribute(CAPTION_ATTRIBUTE)?.trim();
|
|
2701
|
+
if (own)
|
|
2702
|
+
return own;
|
|
2703
|
+
return slide.querySelector('img[alt]')?.getAttribute('alt')?.trim() ?? '';
|
|
2704
|
+
}
|
|
2705
|
+
/** "2 / 5" — the slide in view and how many there are; nothing for an empty slider. */
|
|
2706
|
+
function sliderCountText(index, total) {
|
|
2707
|
+
if (!(total > 0))
|
|
2708
|
+
return '';
|
|
2709
|
+
const i = Math.min(total - 1, Math.max(0, Math.floor(Number.isFinite(index) ? index : 0)));
|
|
2710
|
+
return `${i + 1} / ${total}`;
|
|
2711
|
+
}
|
|
2712
|
+
/**
|
|
2713
|
+
* Keep the bar's Caption and Count on the slide in view — the canvas, Preview and both engine paths (bootSlider). The
|
|
2714
|
+
* caption changes behind a short fade (the first one does not); the count reads left to right in every language.
|
|
2715
|
+
* Returns the stop; a slider with neither part gets a no-op.
|
|
2716
|
+
*/
|
|
2717
|
+
function attachSliderBar(swiper) {
|
|
2718
|
+
(swiper.el[BAR_RUNTIME_KEY])?.();
|
|
2719
|
+
const caption = sliderPartElement(swiper.el, SliderRole.Caption);
|
|
2720
|
+
const count = sliderPartElement(swiper.el, SliderRole.Count);
|
|
2721
|
+
if (!caption && !count)
|
|
2722
|
+
return () => { };
|
|
2723
|
+
const view = swiper.el.ownerDocument?.defaultView;
|
|
2724
|
+
const raf = (fn) => (view?.requestAnimationFrame ? view.requestAnimationFrame(() => view.requestAnimationFrame(fn)) : setTimeout(fn, 32));
|
|
2725
|
+
let first = true;
|
|
2726
|
+
const sync = () => {
|
|
2727
|
+
if (swiper.destroyed)
|
|
2728
|
+
return;
|
|
2729
|
+
const slides = swiper.slides ?? [];
|
|
2730
|
+
if (count) {
|
|
2731
|
+
count.setAttribute('dir', 'ltr');
|
|
2732
|
+
count.setAttribute(SLIDER_TEXT_ATTRIBUTE, sliderCountText(swiper.realIndex ?? swiper.activeIndex, slides.length));
|
|
2733
|
+
}
|
|
2734
|
+
if (caption) {
|
|
2735
|
+
const words = sliderCaptionOf(slides[swiper.activeIndex]);
|
|
2736
|
+
if (caption.getAttribute(SLIDER_TEXT_ATTRIBUTE) !== words) {
|
|
2737
|
+
if (!first) {
|
|
2738
|
+
caption.setAttribute(SLIDER_SWAPPING_ATTRIBUTE, '');
|
|
2739
|
+
raf(() => caption.removeAttribute(SLIDER_SWAPPING_ATTRIBUTE));
|
|
2740
|
+
}
|
|
2741
|
+
caption.setAttribute(SLIDER_TEXT_ATTRIBUTE, words);
|
|
2742
|
+
}
|
|
2743
|
+
}
|
|
2744
|
+
first = false;
|
|
2745
|
+
};
|
|
2746
|
+
swiper.on('slideChange', sync);
|
|
2747
|
+
swiper.on('slidesLengthChange', sync);
|
|
2748
|
+
sync();
|
|
2749
|
+
const stop = () => {
|
|
2750
|
+
swiper.off('slideChange', sync);
|
|
2751
|
+
swiper.off('slidesLengthChange', sync);
|
|
2752
|
+
delete swiper.el[BAR_RUNTIME_KEY];
|
|
2753
|
+
};
|
|
2754
|
+
swiper.el[BAR_RUNTIME_KEY] = stop;
|
|
2755
|
+
return stop;
|
|
2756
|
+
}
|
|
2511
2757
|
|
|
2512
2758
|
/**
|
|
2513
2759
|
* THE LIGHTBOX (CC3 — complex-components plan §7d, board 6). Not a component: a Dialog holding a Slider bound to the
|
|
@@ -3931,6 +4177,28 @@ function runCompositeItemAction(el, action) {
|
|
|
3931
4177
|
return runtime ? runtime.run(action, runtime.keyOf(item.el)) : null;
|
|
3932
4178
|
}
|
|
3933
4179
|
|
|
4180
|
+
/**
|
|
4181
|
+
* Set how a header behaves as the page scrolls (premium components T2, M4) — ONE edit for the builder's Header section
|
|
4182
|
+
* and the composer (generation-core), on either node shape. A header that stays at the top is the containing block of its
|
|
4183
|
+
* edge: the live site makes it sticky (iox-design.css), and a header stored `static` becomes `relative` — what the canvas,
|
|
4184
|
+
* which forces a node's own position, draws it with. Nothing else of the author's is touched.
|
|
4185
|
+
*/
|
|
4186
|
+
function setHeaderBehaviour(node, behaviour, edge) {
|
|
4187
|
+
const b = headerBehaviourOf(behaviour);
|
|
4188
|
+
writeProp(node, HeaderTrait.Behaviour, b);
|
|
4189
|
+
writeProp(node, HeaderTrait.Edge, headerEdgeOf(edge) ?? '');
|
|
4190
|
+
const position = readStyle(node, 'position');
|
|
4191
|
+
if (headerStaysAtTop(b) && (position === undefined || position === null || position === '' || position === 'static'))
|
|
4192
|
+
writeStyles(node, { position: 'relative' });
|
|
4193
|
+
}
|
|
4194
|
+
/** The header's behaviour and edge as stored (Scrolls / none for a header that never chose). */
|
|
4195
|
+
function headerBehaviourOfNode(node) {
|
|
4196
|
+
return {
|
|
4197
|
+
behaviour: headerBehaviourOf(node ? readProp(node, HeaderTrait.Behaviour) : undefined),
|
|
4198
|
+
edge: headerEdgeOf(node ? readProp(node, HeaderTrait.Edge) : undefined),
|
|
4199
|
+
};
|
|
4200
|
+
}
|
|
4201
|
+
|
|
3934
4202
|
/**
|
|
3935
4203
|
* @vectoriox/iox-ui/composite-core — composites built from the builder's own parts (composite-components
|
|
3936
4204
|
* plan §3a). FRAMEWORK-FREE: the builder, the SSR engine and iox-cms (generation-core's composer, the site
|
|
@@ -3946,5 +4214,5 @@ function runCompositeItemAction(el, action) {
|
|
|
3946
4214
|
* Generated bundle index. Do not edit.
|
|
3947
4215
|
*/
|
|
3948
4216
|
|
|
3949
|
-
export { ACCORDION_BIND_PROP, ACCORDION_CONTENT_LIMIT, ACCORDION_DEFAULT_ONS, ACCORDION_ICONS, ACCORDION_ICON_GLYPH, ACCORDION_NEW_ITEM_WORDS, ACCORDION_WORDS, ACTIVATE_ON_ATTRIBUTE, AccordionClass, AccordionDefaultOn, AccordionEditRefusal, AccordionIcon, AccordionKeyAction, AccordionRole, AccordionRuntime, BADGE_TONES, BADGE_TONE_ICONS, BadgeTone, CARD_LAYOUTS, CARD_LAYOUT_CUSTOM, CARD_PARTS, CARD_PART_ROLE, CARD_STACK_BREAKPOINT, CARD_WORDS, CAROUSEL_QUOTES, CHIP_ICON, CHIP_STYLE, COMPOSITE_ATTRIBUTE, COMPOSITE_KIND_ROLES, COMPOSITE_ROLE_SPECS, CardLayout, CardPart, CardRole, CarouselA11y, CompositeBehaviourTrait, CompositeItemAction, CompositeKind, DEFAULT_ON_ATTRIBUTE, DISCLOSURE_ITEM_KEY, DISCLOSURE_WORDS, DisclosureRole, EXCLUSIVE_KIND_ROLES, ExclusiveRuntime, ITEM_KEY_ATTRIBUTE, ITEM_OFF_EVENT, ITEM_ON_EVENT, ITEM_OPEN_STATE, LIGHTBOX_ARROWS_HIDE_AT, LIGHTBOX_LABEL, MULTIPLE_ATTRIBUTE, NO_ELEMENT_STYLE, ON_ATTRIBUTE, ON_STATE, ORIENTATION_ATTRIBUTE, PILL_LABEL_STYLE, SCOPE_ATTRIBUTE, SEGMENTED_BADGE_TONE, SEGMENTED_BADGE_WORDS, SEGMENTED_BEHAVIOUR, SEGMENTED_MAX_OPTIONS, SEGMENTED_MIN_OPTIONS, SEGMENTED_NAME, SEGMENTED_NEW_OPTION_WORDS, SEGMENTED_WORDS, SLIDER_NAME_TRAIT, SLIDER_PART_GLYPH, SLIDER_PART_ROLES, SLIDER_PLAY_GLYPH, SLIDER_TYPE, SLIDER_WORDS, SLIDE_TO_ROW, SLIDE_TYPE, SWIPER_THEME_COLOR, SceneRole, SegmentedEditRefusal, SegmentedRole, SegmentedTrait, SliderFlag, SliderRole, StructureEdit, StructureRefusal, TABS_ACTIVATE_ONS, TABS_CONTENT_LIMIT, TABS_IMAGE_BIND_PROP, TABS_LABEL_BIND_PROP, TABS_NEW_TAB_WORDS, TABS_ORIENTATIONS, TABS_STACK_BREAKPOINT, TABS_TEXT_BIND_PROP, TABS_WORDS, TabsActivateOn, TabsBehaviourTrait, TabsEditRefusal, TabsOrientation, TabsRole, UNTIL_FOUND, acceptsRefusal, accordionAnswerOf, accordionBehaviour, accordionDomIds, accordionFocusIndex, accordionHeadingLevel, accordionItemAttributes, accordionItemLabel, accordionItemOf, accordionItemState, accordionItems, accordionKeyAction, accordionPanelAttributes, accordionPanelOf, accordionPartStyle, accordionQuestionOf, accordionRegionAttributes, accordionRemovalRefusal, accordionRootAttributes, accordionRootOf, accordionRootOfItem, accordionRuntimeOf, accordionScope, accordionToContent, accordionToManual, accordionTrackAttributes, accordionTriggerAttributes, accordionTriggerOf, addAccordionItem, addSegmentedOption, addTabPair, applyCardLayout, attachAccordionAt, attachAccordions, attachCarouselA11y, attachCompositeAt, attachExclusiveAt, badgeStyleId, badgeToneOf, buildAccordionItem, buildAccordionRecipe, buildBadge, buildCardRecipe, buildCarouselRecipe, buildChip, buildCompositeIcon, buildDisclosureRecipe, buildLightboxRecipe, buildSegmentedOption, buildSegmentedRecipe, buildSliderPart, buildTabPair, buildTabsRecipe, canOpenAtClickedItem, cardPartsOf, cardRootOf, cardTitleOf, carouselOf, clearLayerStyles, closeAccordionItem, closestAccordion, closestAccordionItem, closestExclusive, closestExclusiveItemPart, compositeItemOf, compositeItems, compositeKindOfRole, compositeRootOf, compositeRowKeys, compositeScopeId, detachAccordion, detectAccordionIcon, detectCardLayout, disclosureOpenByDefault, domSafeKey, exclusiveBehaviourOf, exclusiveDefaultOf, exclusiveItemLabel, exclusiveItemPartOf, exclusiveKindHasPanels, exclusiveKindOf, exclusiveLabelOf, exclusivePartAttributes, exclusiveRootAttributesOf, exclusiveRootHoldsTriggers, exclusiveRootOf, exclusiveRuntimeOf, exclusiveScopeFor, findByRole, hasLabelledRegion, hasSliderParts, initialAccordionOpen, isAccordionFromContent, isAccordionItemOn, isAccordionPart, isAccordionRoot, isAnyCompositeRoot, isCardLinked, isCardRoot, isCompositeItem, isCompositeItemOn, isCompositePanel, isCompositeRoot, isCompositeTrigger, isDisclosurePart, isDisclosureRoot, isExclusiveItemOn, isExclusiveItemPart, isExclusiveKind, isExclusiveList, isExclusivePanel, isExclusivePanels, isExclusiveRoot, isExclusiveTrigger, isLockedPart, isPartOfExclusiveScope, isPillNode, isSegmentedPart, isSegmentedRoot, isSlider, isSliderPart, isTabsFromContent, isTabsPart, isTabsRoot, isToggleKind, itemOpenTriggerIds, lightboxSliderOf, makeCompositePart, manualTabKeys, migrateSliderControls, moveAccordionItem, moveSegmentedOption, moveTabPair, needsSliderMigration, nextAccordionState, nextItemKey, nextSegmentedKey, nextTabKey, onAccordionItemState, onCompositeItemState, onExclusiveItemState, openAccordionItem, parentInComposite, pickAccordionAutoBinds, pickTabsAutoBinds, readLayerStyle, readProp, readStyle, removeFromComposite, removeSegmentedOption, removeTabPair, renameAccordionItem, renameSegmentedOption, renameTab, repeatSourceOf, rowIndexOf, rowItemKey, rowSourceOf, runCompositeItemAction, sameRepeatSource, segmentedAddRefusal, segmentedBadgeOf, segmentedDefaultOn, segmentedItemTriggerIds, segmentedKeyAction, segmentedKeys, segmentedLabel, segmentedOptionAttributes, segmentedOptionKey, segmentedOptionLabel, segmentedOptionLabelNodeOf, segmentedOptions, segmentedPartAttributes, segmentedRemovalRefusal, segmentedRootAttributes, segmentedRootAttributesOf, segmentedScopeFor, serializeDomAttributes, setAccordionBehaviour, setAccordionIcon, setBadgeTone, setCardLinked, setCardPart, setSegmentedBadge, setSegmentedBehaviour, setSliderFlag, setTabsBehaviour, shouldScrollToItem, slideIndexForRow, sliderLiveRegion, sliderPart, sliderPartElement, sliderPauseAttributes, sliderPauseGlyph, sliderSlides, sliderWords, splitSliderChildren, structureRefusal, syncSliderParts, tabLabel, tabLabelNodeOf, tabListAttributes, tabPanelAttributes, tabPanelImageOf, tabPanelOf, tabPanelTextOf, tabPartKey, tabTriggerAttributes, tabTriggerOf, tabsBehaviour, tabsItemState, tabsItemTriggerIds, tabsKeyAction, tabsLabel, tabsListOf, tabsPanels, tabsPanelsOf, tabsPartAttributes, tabsPartnerOf, tabsRemovalRefusal, tabsRootAttributes, tabsScope, tabsScopeFor, tabsToContent, tabsToManual, tabsTriggers, walkComposite, wantedSliderParts, writeLayerStyles, writeProp, writeStyles };
|
|
4217
|
+
export { ACCORDION_BIND_PROP, ACCORDION_CONTENT_LIMIT, ACCORDION_DEFAULT_ONS, ACCORDION_ICONS, ACCORDION_ICON_GLYPH, ACCORDION_NEW_ITEM_WORDS, ACCORDION_WORDS, ACTIVATE_ON_ATTRIBUTE, AccordionClass, AccordionDefaultOn, AccordionEditRefusal, AccordionIcon, AccordionKeyAction, AccordionRole, AccordionRuntime, BADGE_TONES, BADGE_TONE_ICONS, BadgeTone, CARD_LAYOUTS, CARD_LAYOUT_CUSTOM, CARD_PARTS, CARD_PART_ROLE, CARD_STACK_BREAKPOINT, CARD_WORDS, CAROUSEL_QUOTES, CHIP_ICON, CHIP_STYLE, COMPOSITE_ATTRIBUTE, COMPOSITE_KIND_ROLES, COMPOSITE_ROLE_SPECS, CardLayout, CardPart, CardRole, CarouselA11y, CompositeBehaviourTrait, CompositeItemAction, CompositeKind, DEFAULT_ON_ATTRIBUTE, DISCLOSURE_ITEM_KEY, DISCLOSURE_WORDS, DisclosureRole, EXCLUSIVE_KIND_ROLES, ExclusiveRuntime, ITEM_KEY_ATTRIBUTE, ITEM_OFF_EVENT, ITEM_ON_EVENT, ITEM_OPEN_STATE, LIGHTBOX_ARROWS_HIDE_AT, LIGHTBOX_LABEL, MULTIPLE_ATTRIBUTE, NO_ELEMENT_STYLE, ON_ATTRIBUTE, ON_STATE, ORIENTATION_ATTRIBUTE, PILL_LABEL_STYLE, SCOPE_ATTRIBUTE, SEGMENTED_BADGE_TONE, SEGMENTED_BADGE_WORDS, SEGMENTED_BEHAVIOUR, SEGMENTED_MAX_OPTIONS, SEGMENTED_MIN_OPTIONS, SEGMENTED_NAME, SEGMENTED_NEW_OPTION_WORDS, SEGMENTED_WORDS, SLIDER_BAR_ORDER, SLIDER_NAME_TRAIT, SLIDER_PART_GLYPH, SLIDER_PART_ROLES, SLIDER_PLACEMENT_TRAIT, SLIDER_PLAY_GLYPH, SLIDER_SCROLL_PLAYS_TRAIT, SLIDER_SWAPPING_ATTRIBUTE, SLIDER_TEXT_ATTRIBUTE, SLIDER_TYPE, SLIDER_WORDS, SLIDE_CAPTION_TRAIT, SLIDE_TO_ROW, SLIDE_TYPE, SWIPER_THEME_COLOR, SceneRole, SegmentedEditRefusal, SegmentedRole, SegmentedTrait, SliderFlag, SliderPlacement, SliderRole, StructureEdit, StructureRefusal, TABS_ACTIVATE_ONS, TABS_CONTENT_LIMIT, TABS_IMAGE_BIND_PROP, TABS_LABEL_BIND_PROP, TABS_NEW_TAB_WORDS, TABS_ORIENTATIONS, TABS_STACK_BREAKPOINT, TABS_TEXT_BIND_PROP, TABS_WORDS, TabsActivateOn, TabsBehaviourTrait, TabsEditRefusal, TabsOrientation, TabsRole, UNTIL_FOUND, acceptsRefusal, accordionAnswerOf, accordionBehaviour, accordionDomIds, accordionFocusIndex, accordionHeadingLevel, accordionItemAttributes, accordionItemLabel, accordionItemOf, accordionItemState, accordionItems, accordionKeyAction, accordionPanelAttributes, accordionPanelOf, accordionPartStyle, accordionQuestionOf, accordionRegionAttributes, accordionRemovalRefusal, accordionRootAttributes, accordionRootOf, accordionRootOfItem, accordionRuntimeOf, accordionScope, accordionToContent, accordionToManual, accordionTrackAttributes, accordionTriggerAttributes, accordionTriggerOf, addAccordionItem, addSegmentedOption, addTabPair, applyCardLayout, attachAccordionAt, attachAccordions, attachCarouselA11y, attachCompositeAt, attachExclusiveAt, attachSliderBar, badgeStyleId, badgeToneOf, buildAccordionItem, buildAccordionRecipe, buildBadge, buildCardRecipe, buildCarouselRecipe, buildChip, buildCompositeIcon, buildDisclosureRecipe, buildLightboxRecipe, buildSegmentedOption, buildSegmentedRecipe, buildSliderPart, buildTabPair, buildTabsRecipe, canOpenAtClickedItem, cardPartsOf, cardRootOf, cardTitleOf, carouselOf, clearLayerStyles, closeAccordionItem, closestAccordion, closestAccordionItem, closestExclusive, closestExclusiveItemPart, compositeItemOf, compositeItems, compositeKindOfRole, compositeRootOf, compositeRowKeys, compositeScopeId, detachAccordion, detectAccordionIcon, detectCardLayout, disclosureOpenByDefault, domSafeKey, exclusiveBehaviourOf, exclusiveDefaultOf, exclusiveItemLabel, exclusiveItemPartOf, exclusiveKindHasPanels, exclusiveKindOf, exclusiveLabelOf, exclusivePartAttributes, exclusiveRootAttributesOf, exclusiveRootHoldsTriggers, exclusiveRootOf, exclusiveRuntimeOf, exclusiveScopeFor, findByRole, hasLabelledRegion, hasSliderParts, headerBehaviourOfNode, initialAccordionOpen, isAccordionFromContent, isAccordionItemOn, isAccordionPart, isAccordionRoot, isAnyCompositeRoot, isCardLinked, isCardRoot, isCompositeItem, isCompositeItemOn, isCompositePanel, isCompositeRoot, isCompositeTrigger, isDisclosurePart, isDisclosureRoot, isExclusiveItemOn, isExclusiveItemPart, isExclusiveKind, isExclusiveList, isExclusivePanel, isExclusivePanels, isExclusiveRoot, isExclusiveTrigger, isLockedPart, isPartOfExclusiveScope, isPillNode, isSegmentedPart, isSegmentedRoot, isSlider, isSliderPart, isTabsFromContent, isTabsPart, isTabsRoot, isToggleKind, itemOpenTriggerIds, lightboxSliderOf, makeCompositePart, manualTabKeys, migrateSliderControls, moveAccordionItem, moveSegmentedOption, moveTabPair, needsSliderMigration, nextAccordionState, nextItemKey, nextSegmentedKey, nextTabKey, onAccordionItemState, onCompositeItemState, onExclusiveItemState, openAccordionItem, parentInComposite, pickAccordionAutoBinds, pickTabsAutoBinds, readLayerStyle, readProp, readStyle, removeFromComposite, removeSegmentedOption, removeTabPair, renameAccordionItem, renameSegmentedOption, renameTab, repeatSourceOf, rowIndexOf, rowItemKey, rowSourceOf, runCompositeItemAction, sameRepeatSource, segmentedAddRefusal, segmentedBadgeOf, segmentedDefaultOn, segmentedItemTriggerIds, segmentedKeyAction, segmentedKeys, segmentedLabel, segmentedOptionAttributes, segmentedOptionKey, segmentedOptionLabel, segmentedOptionLabelNodeOf, segmentedOptions, segmentedPartAttributes, segmentedRemovalRefusal, segmentedRootAttributes, segmentedRootAttributesOf, segmentedScopeFor, serializeDomAttributes, setAccordionBehaviour, setAccordionIcon, setBadgeTone, setCardLinked, setCardPart, setHeaderBehaviour, setSegmentedBadge, setSegmentedBehaviour, setSliderFlag, setSliderPlacement, setTabsBehaviour, shouldScrollToItem, slideIndexForRow, sliderCaptionOf, sliderCountText, sliderLiveRegion, sliderPart, sliderPartElement, sliderPauseAttributes, sliderPauseGlyph, sliderPlacementOf, sliderSlides, sliderWords, splitSliderChildren, structureRefusal, syncSliderParts, tabLabel, tabLabelNodeOf, tabListAttributes, tabPanelAttributes, tabPanelImageOf, tabPanelOf, tabPanelTextOf, tabPartKey, tabTriggerAttributes, tabTriggerOf, tabsBehaviour, tabsItemState, tabsItemTriggerIds, tabsKeyAction, tabsLabel, tabsListOf, tabsPanels, tabsPanelsOf, tabsPartAttributes, tabsPartnerOf, tabsRemovalRefusal, tabsRootAttributes, tabsScope, tabsScopeFor, tabsToContent, tabsToManual, tabsTriggers, walkComposite, wantedSliderParts, writeLayerStyles, writeProp, writeStyles };
|
|
3950
4218
|
//# sourceMappingURL=vectoriox-iox-ui-composite-core.mjs.map
|