@adartem/adlib-attributes 0.1.4 → 0.1.6

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.
Files changed (65) hide show
  1. package/attributes.js +957 -1
  2. package/attributes.js.map +4 -4
  3. package/dist/chunk-IEGIKJKW.js +5776 -0
  4. package/dist/chunk-IEGIKJKW.js.map +7 -0
  5. package/dist/chunk-M2KO765Q.js +43 -0
  6. package/dist/chunk-M2KO765Q.js.map +7 -0
  7. package/dist/chunk-NS2GB4WB.js +63 -0
  8. package/dist/chunk-NS2GB4WB.js.map +7 -0
  9. package/dist/dist-46N2ZXQQ.js +80 -0
  10. package/dist/dist-46N2ZXQQ.js.map +7 -0
  11. package/dist/dist-4EIQOOMJ.js +331 -0
  12. package/dist/dist-4EIQOOMJ.js.map +7 -0
  13. package/dist/dist-6YSNCGWO.js +227 -0
  14. package/dist/dist-6YSNCGWO.js.map +7 -0
  15. package/dist/dist-7GSHUMRU.js +60 -0
  16. package/dist/dist-7GSHUMRU.js.map +7 -0
  17. package/dist/dist-ALT6N2V6.js +165 -0
  18. package/dist/dist-ALT6N2V6.js.map +7 -0
  19. package/dist/dist-BXD5YEF3.js +290 -0
  20. package/dist/dist-BXD5YEF3.js.map +7 -0
  21. package/dist/dist-D2J4YZM6.js +52 -0
  22. package/dist/dist-D2J4YZM6.js.map +7 -0
  23. package/dist/dist-D2X7FLMD.js +126 -0
  24. package/dist/dist-D2X7FLMD.js.map +7 -0
  25. package/dist/dist-DOOWCYTM.js +92 -0
  26. package/dist/dist-DOOWCYTM.js.map +7 -0
  27. package/dist/dist-GLBAV2CS.js +202 -0
  28. package/dist/dist-GLBAV2CS.js.map +7 -0
  29. package/dist/dist-GQHJZHTH.js +73 -0
  30. package/dist/dist-GQHJZHTH.js.map +7 -0
  31. package/dist/dist-H4ILPDRU.js +59 -0
  32. package/dist/dist-H4ILPDRU.js.map +7 -0
  33. package/dist/dist-IDJRFWAH.js +71 -0
  34. package/dist/dist-IDJRFWAH.js.map +7 -0
  35. package/dist/dist-KDCRSMGT.js +63 -0
  36. package/dist/dist-KDCRSMGT.js.map +7 -0
  37. package/dist/dist-KF5AKQ52.js +740 -0
  38. package/dist/dist-KF5AKQ52.js.map +7 -0
  39. package/dist/dist-KU26ZFEG.js +169 -0
  40. package/dist/dist-KU26ZFEG.js.map +7 -0
  41. package/dist/dist-M6QCD7TL.js +4281 -0
  42. package/dist/dist-M6QCD7TL.js.map +7 -0
  43. package/dist/dist-MBFKX56S.js +482 -0
  44. package/dist/dist-MBFKX56S.js.map +7 -0
  45. package/dist/dist-NOIPAOTU.js +131 -0
  46. package/dist/dist-NOIPAOTU.js.map +7 -0
  47. package/dist/dist-QPNIGMZA.js +33028 -0
  48. package/dist/dist-QPNIGMZA.js.map +7 -0
  49. package/dist/dist-RAOZ6VUA.js +14416 -0
  50. package/dist/dist-RAOZ6VUA.js.map +7 -0
  51. package/dist/dist-RQZGUXDL.js +102 -0
  52. package/dist/dist-RQZGUXDL.js.map +7 -0
  53. package/dist/dist-T4V65O5X.js +54 -0
  54. package/dist/dist-T4V65O5X.js.map +7 -0
  55. package/dist/dist-UFMW7V6T.js +317 -0
  56. package/dist/dist-UFMW7V6T.js.map +7 -0
  57. package/dist/dist-V7I3FQX7.js +1419 -0
  58. package/dist/dist-V7I3FQX7.js.map +7 -0
  59. package/dist/dist-XTGERRGU.js +160 -0
  60. package/dist/dist-XTGERRGU.js.map +7 -0
  61. package/dist/dist-YAVVMJ7W.js +72 -0
  62. package/dist/dist-YAVVMJ7W.js.map +7 -0
  63. package/dist/dist-YGJKGMK6.js +137 -0
  64. package/dist/dist-YGJKGMK6.js.map +7 -0
  65. package/package.json +10 -10
@@ -0,0 +1,165 @@
1
+ import {
2
+ $n,
3
+ At,
4
+ Cn,
5
+ Dn,
6
+ Dt,
7
+ Gn,
8
+ Je,
9
+ Jo,
10
+ Mn,
11
+ Nn,
12
+ Nt,
13
+ Xt,
14
+ Zt,
15
+ _n,
16
+ ce,
17
+ fn,
18
+ init_live_reload,
19
+ jo,
20
+ kn,
21
+ le,
22
+ or,
23
+ rr,
24
+ tr,
25
+ vn,
26
+ vt,
27
+ wn,
28
+ zo
29
+ } from "./chunk-IEGIKJKW.js";
30
+
31
+ // ../accordion/dist/index.js
32
+ init_live_reload();
33
+ var D = (t, o, i) => {
34
+ let e = fn(t), a = fn(o);
35
+ t.setAttribute(Mn, Dn.button), t.setAttribute(Gn, a), t.setAttribute(vn, "0"), b(t, i), !o.hasAttribute(Nn) && !o.hasAttribute(Cn) && o.setAttribute(Nn, e);
36
+ };
37
+ var b = (t, o) => {
38
+ t.setAttribute($n, String(o));
39
+ };
40
+ var L = ({ accordion: t, trigger: o, content: i, arrow: e, isOpen: a, groupActiveClass: s, accordionActiveClass: r, arrowActiveClass: l, contentActiveClass: n, triggerActiveClass: c }) => {
41
+ let d = a ? "add" : "remove";
42
+ t.classList[d](r || s), o.classList[d](c || s), i.classList[d](n || s), e?.classList[d](l || s);
43
+ };
44
+ var S = (t) => `${getComputedStyle(t).height}`;
45
+ var O = (t) => {
46
+ t.style.display = "block", t.style.maxHeight = "";
47
+ let o = S(t);
48
+ t.style.maxHeight = "0px", requestAnimationFrame(() => {
49
+ t.style.maxHeight = o;
50
+ });
51
+ };
52
+ var v = (t) => {
53
+ let o = kn(t, "transitionend", ({ propertyName: e }) => {
54
+ e === "max-height" && (t.style.display = "none", o());
55
+ }), i = S(t);
56
+ return t.style.maxHeight = i, requestAnimationFrame(() => {
57
+ t.style.maxHeight = "0px";
58
+ }), o;
59
+ };
60
+ var u = "ad-accordion";
61
+ var x = ["group", "accordion", "trigger", "content", "arrow"];
62
+ var f = { single: { key: "single", values: ["true"] }, initial: { key: "initial", values: ["none"] }, activeclass: { key: "activeclass", defaultValue: "is-accordion-active" } };
63
+ var p = { disabled: { type: "boolean", default: false }, single: { type: "boolean", default: false }, initial: { type: "string" }, activeclass: { type: "string", default: "is-accordion-active" }, a11y: { type: "boolean", default: true } };
64
+ var h = `[ad-${Je}-element="list"]`;
65
+ var { getInstance: vt2, getPresenceSelector: xt, getElementSelector: m, getSettingSelector: Tt, getClosestElement: G, queryElement: g, queryAllElements: E, getAttribute: It, hasAttributeValue: Ct } = Jo(u, x, f);
66
+ var M = (t) => {
67
+ let o = zo(t, u, p, { includeGlobal: false }), i = o.single ?? false, e = o.initial, a = o.activeclass ?? "is-accordion-active", s;
68
+ return e && (Zt(e, f.initial.values) ? s = e : s = tr(e).map(jo).filter(ce)), { group: t, single: i, initial: s, activeClass: a, accordions: [] };
69
+ };
70
+ var _ = (t, o) => {
71
+ let i = t, e = g("trigger", { scope: i }), a = g("content", { scope: i }), s = g("arrow", { scope: i });
72
+ if (!e || !a) return;
73
+ let r = o.activeClass, l = At(t, u, "activeclass", p.activeclass, { includeGlobal: false }), n = At(e, u, "activeclass", p.activeclass, { includeGlobal: false }), c = At(a, u, "activeclass", p.activeclass, { includeGlobal: false }), d = s ? At(s, u, "activeclass", p.activeclass, { includeGlobal: false }) : null;
74
+ return { accordion: t, trigger: e, content: a, arrow: s, groupActiveClass: r, accordionActiveClass: l, triggerActiveClass: n, contentActiveClass: c, arrowActiveClass: d };
75
+ };
76
+ var y = (t, o) => {
77
+ let i = t.closest(m("group")) || document.body, e = o.find((r) => r.group === i);
78
+ if (e || (e = M(i), o.push(e)), e.accordions.find((r) => r.accordion === t)) return e;
79
+ let s = J(t, e);
80
+ return s && e.accordions.push({ accordion: t, trigger: s.trigger, a11yEnabled: s.a11yEnabled, controls: s.controls }), Q(e), e;
81
+ };
82
+ var J = (t, o) => {
83
+ let i = _(t, o);
84
+ if (!i) return;
85
+ let { trigger: e, content: a } = i, s = At(t, u, "a11y", { type: "boolean", default: true }, { includeGlobal: false }), r = le(a), l;
86
+ le(t) || (l = v(a)), D(e, a, r), L({ ...i, isOpen: r }), s && Dt(e);
87
+ let n = (c) => {
88
+ if (l?.(), l = void 0, r) l = v(a), r = false;
89
+ else if (O(a), r = true, o.single && c) for (let d of o.accordions) d.accordion !== t && d.controls.close();
90
+ b(i.trigger, r), L({ ...i, isOpen: r });
91
+ };
92
+ return { trigger: e, a11yEnabled: s ?? true, controls: { destroy: () => {
93
+ l?.();
94
+ }, open: () => {
95
+ r || n();
96
+ }, close: () => {
97
+ r && n();
98
+ }, toggle: (c) => n(c), isOpen: () => r } };
99
+ };
100
+ var Q = ({ single: t, initial: o, accordions: i }) => {
101
+ let e = false, a = o === "none", s = Array.isArray(o);
102
+ for (let [r, { controls: l }] of i.entries()) {
103
+ let n = r + 1, c = s && o.includes(n);
104
+ if (t && e || s && !o.includes(n) || a) {
105
+ l.close();
106
+ continue;
107
+ }
108
+ c && (l.open(), e = true), e || (e = l.isOpen());
109
+ }
110
+ };
111
+ var H = async (t) => {
112
+ let i = (await or("list")).map((e) => e.addHook("afterRender", (a = []) => {
113
+ for (let { element: s } of a) {
114
+ let r = [...E("accordion", { scope: s }), G(s, "accordion")].filter(ce);
115
+ for (let l of r) y(l, t);
116
+ }
117
+ }));
118
+ return () => {
119
+ for (let e of i) e();
120
+ };
121
+ };
122
+ var T = async () => {
123
+ let t = Nt();
124
+ await rr();
125
+ let o = E("accordion"), i = [], e = { activeCount: 0, disabledCount: 0, guardFailedCount: 0 };
126
+ for (let n of o) {
127
+ let c = await Xt({ el: n, moduleKey: u, includeGlobal: false, guardsRegistry: {}, readOptions: () => zo(n, u, p, { includeGlobal: false }), action: () => {
128
+ y(n, i);
129
+ } });
130
+ c.ok ? e.activeCount++ : c.reason === "disabled" ? (e.disabledCount++, e.lastNonActivationReason = "disabled") : c.reason === "guard-failed" && (e.guardFailedCount++, e.lastNonActivationReason = "guard-failed");
131
+ }
132
+ for (let { accordions: n } of i) for (let { controls: c } of n) t.add(() => c.destroy());
133
+ let a = (n) => {
134
+ for (let c of i) for (let d of c.accordions) if (d.trigger === n) return d;
135
+ }, s = _n(m("trigger"), { click: ({ event: n, el: c }) => {
136
+ let d = a(c);
137
+ d && d.controls.toggle(n);
138
+ }, keydown: ({ event: n, el: c }) => {
139
+ a(c)?.a11yEnabled && vt(n) && ((n.key === " " || n.key === "Spacebar") && n.preventDefault(), c.click());
140
+ } });
141
+ t.add(s);
142
+ let l = o.some((n) => n.closest(h)) ? await H(i) : void 0;
143
+ return l && t.add(l), { result: { groupsData: i, diagnostics: e }, destroy() {
144
+ t.run();
145
+ } };
146
+ };
147
+ var ct = "0.1.0";
148
+ var te = wn({ key: u, init: async (t) => {
149
+ let o = Nt(), i = await T();
150
+ return i && typeof i.destroy == "function" && o.add(() => {
151
+ try {
152
+ i.destroy();
153
+ } catch {
154
+ }
155
+ }), { key: u, destroy: () => o.run() };
156
+ } });
157
+ export {
158
+ x as ELEMENTS,
159
+ u as MODULE_KEY,
160
+ f as SETTINGS,
161
+ te as default,
162
+ T as init,
163
+ ct as version
164
+ };
165
+ //# sourceMappingURL=dist-ALT6N2V6.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../accordion/src/actions/a11y.ts", "../../accordion/src/actions/classes.ts", "../../accordion/src/utils/helpers.ts", "../../accordion/src/actions/content.ts", "../../accordion/src/utils/constants.ts", "../../accordion/src/utils/selectors.ts", "../../accordion/src/actions/settings.ts", "../../accordion/src/factory.ts", "../../accordion/src/actions/list.ts", "../../accordion/src/init.ts", "../../accordion/package.json", "../../accordion/src/index.ts"],
4
+ "sourcesContent": ["import {\n ARIA_CONTROLS_KEY,\n ARIA_EXPANDED_KEY,\n ARIA_LABEL_KEY,\n ARIA_LABELLEDBY_KEY,\n ARIA_ROLE_KEY,\n ARIA_ROLE_VALUES,\n ensureUniqueId,\n TABINDEX_KEY,\n} from '@adartem/adlib-utils';\n\n/**\n * Sets the correspondent aria attributes to the elements.\n * @param trigger\n * @param content\n */\nexport const setAccordionA11y = (trigger: HTMLElement, content: HTMLElement, isOpen: boolean) => {\n const triggerId = ensureUniqueId(trigger);\n const contentId = ensureUniqueId(content);\n\n trigger.setAttribute(ARIA_ROLE_KEY, ARIA_ROLE_VALUES.button);\n trigger.setAttribute(ARIA_CONTROLS_KEY, contentId);\n trigger.setAttribute(TABINDEX_KEY, '0');\n\n setAccordionAriaExpanded(trigger, isOpen);\n\n if (!content.hasAttribute(ARIA_LABELLEDBY_KEY) && !content.hasAttribute(ARIA_LABEL_KEY)) {\n content.setAttribute(ARIA_LABELLEDBY_KEY, triggerId);\n }\n};\n\n/**\n * Sets the [aria-expanded] attribute value to a trigger.\n * @param trigger\n * @param isOpen\n */\nexport const setAccordionAriaExpanded = (trigger: HTMLElement, isOpen: boolean) => {\n trigger.setAttribute(ARIA_EXPANDED_KEY, String(isOpen));\n};\n", "import type { getAccordionSettings } from './settings';\n\n/**\n * Adds/removes the active class from the accordion's elements.\n * @param params\n */\nexport const setActiveClass = ({\n accordion,\n trigger,\n content,\n arrow,\n isOpen,\n groupActiveClass,\n accordionActiveClass,\n arrowActiveClass,\n contentActiveClass,\n triggerActiveClass,\n}: {\n isOpen: boolean;\n} & ReturnType<typeof getAccordionSettings>) => {\n const action = isOpen ? 'add' : 'remove';\n\n accordion.classList[action](accordionActiveClass || groupActiveClass);\n trigger.classList[action](triggerActiveClass || groupActiveClass);\n content.classList[action](contentActiveClass || groupActiveClass);\n arrow?.classList[action](arrowActiveClass || groupActiveClass);\n};\n", "/**\n * @returns An element's computed height.\n * @param content\n */\nexport const getElementHeight = (content: HTMLElement) => `${getComputedStyle(content).height}`;\n", "import { addListener } from '@adartem/adlib-utils';\n\nimport { getElementHeight } from '../utils/helpers';\n\n/**\n * Opens an accordion's content.\n * @param content\n */\nexport const openContent = (content: HTMLElement) => {\n content.style.display = 'block';\n content.style.maxHeight = '';\n const contentHeight = getElementHeight(content);\n content.style.maxHeight = '0px';\n\n requestAnimationFrame(() => {\n content.style.maxHeight = contentHeight;\n });\n};\n\n/**\n * Closes an accordion's content.\n * @param content\n *\n * @returns A cancel function.\n */\nexport const closeContent = (content: HTMLElement) => {\n const cancel = addListener(content, 'transitionend', ({ propertyName }) => {\n if (propertyName !== 'max-height') return;\n\n content.style.display = 'none';\n cancel();\n });\n\n const contentHeight = getElementHeight(content);\n content.style.maxHeight = contentHeight;\n\n requestAnimationFrame(() => {\n content.style.maxHeight = '0px';\n });\n\n return cancel;\n};\n", "import {\n type AttributeElements,\n type AttributeSettings,\n LIST_ATTRIBUTE,\n type OptionsSchema,\n} from '@adartem/adlib-utils';\n\nexport const MODULE_KEY = 'ad-accordion' as const;\n\nexport const ELEMENTS = [\n /**\n * Defines a group of accordion elements.\n */\n 'group',\n\n /**\n * Defines an accordion element.\n */\n 'accordion',\n\n /**\n * Defines a trigger element.\n */\n 'trigger',\n\n /**\n * Defines a content element.\n */\n 'content',\n\n /**\n * Defines an arrow element.\n */\n 'arrow',\n] as const satisfies AttributeElements;\n\nexport const SETTINGS = {\n /**\n * Defines if only one accordion can be open in a group at a time.\n */\n single: {\n key: 'single',\n values: ['true'],\n },\n\n /**\n * Defines the initially open accordions in a group.\n * Accepts both {@link SETTINGS.initial.values.none} or any arbitrary numbers in a comma-separated list.\n */\n initial: {\n key: 'initial',\n values: ['none'],\n },\n\n /**\n * Defines the active CSS class to add.\n */\n activeclass: {\n key: 'activeclass',\n defaultValue: 'is-accordion-active',\n },\n} as const satisfies AttributeSettings;\n\nexport const OPTIONS = {\n disabled: { type: 'boolean', default: false },\n single: { type: 'boolean', default: false },\n initial: { type: 'string' },\n activeclass: { type: 'string', default: 'is-accordion-active' },\n a11y: { type: 'boolean', default: true },\n} as const satisfies OptionsSchema;\n\nexport const LIST_ELEMENT_SELECTOR = `[ad-${LIST_ATTRIBUTE}-element=\"list\"]`;\n", "import { generateSelectors } from '@adartem/adlib-utils';\n\nimport { ELEMENTS, MODULE_KEY, SETTINGS } from './constants';\n\nexport const {\n getInstance,\n getPresenceSelector,\n getElementSelector,\n getSettingSelector,\n getClosestElement,\n queryElement,\n queryAllElements,\n getAttribute,\n hasAttributeValue,\n} = generateSelectors(MODULE_KEY, ELEMENTS, SETTINGS);\n", "import {\n extractCommaSeparatedValues,\n isKeyOf,\n isNotEmpty,\n parseNumericAttribute,\n readOption,\n readOptionsFromAttributes,\n} from '@adartem/adlib-utils';\n\nimport { MODULE_KEY, OPTIONS, SETTINGS } from '../utils/constants';\nimport { queryElement } from '../utils/selectors';\nimport type { AccordionGroupData, InitialState } from '../utils/types';\n\n/**\n * Collects a group's settings.\n * @param group\n * @returns A new {@link AccordionGroupData} object.\n */\nexport const getGroupSettings = (group: HTMLElement): AccordionGroupData => {\n const options = readOptionsFromAttributes(group, MODULE_KEY, OPTIONS, {\n includeGlobal: false,\n });\n\n const single = options.single ?? false;\n const rawInitial = options.initial;\n const activeClass = options.activeclass ?? 'is-accordion-active';\n\n let initial: InitialState;\n\n if (rawInitial) {\n if (isKeyOf(rawInitial, SETTINGS.initial.values)) {\n initial = rawInitial;\n } else {\n const rawInitialValues = extractCommaSeparatedValues(rawInitial);\n initial = rawInitialValues.map(parseNumericAttribute).filter(isNotEmpty);\n }\n }\n\n return { group, single, initial, activeClass, accordions: [] };\n};\n\n/**\n * @returns An accordion's settings.\n * @param accordion\n * @param groupData\n */\nexport const getAccordionSettings = (accordion: HTMLElement, groupData: AccordionGroupData) => {\n const scope = accordion;\n const trigger = queryElement('trigger', { scope });\n const content = queryElement('content', { scope });\n const arrow = queryElement('arrow', { scope });\n\n if (!trigger || !content) return;\n\n const groupActiveClass = groupData.activeClass;\n const accordionActiveClass = readOption(\n accordion,\n MODULE_KEY,\n 'activeclass',\n OPTIONS.activeclass,\n {\n includeGlobal: false,\n },\n );\n const triggerActiveClass = readOption(trigger, MODULE_KEY, 'activeclass', OPTIONS.activeclass, {\n includeGlobal: false,\n });\n const contentActiveClass = readOption(content, MODULE_KEY, 'activeclass', OPTIONS.activeclass, {\n includeGlobal: false,\n });\n const arrowActiveClass = arrow\n ? readOption(arrow, MODULE_KEY, 'activeclass', OPTIONS.activeclass, { includeGlobal: false })\n : null;\n\n return {\n accordion,\n trigger,\n content,\n arrow,\n groupActiveClass,\n accordionActiveClass,\n triggerActiveClass,\n contentActiveClass,\n arrowActiveClass,\n };\n};\n", "import { ensureButtonLike, isVisible, readOption } from '@adartem/adlib-utils';\n\nimport { setAccordionA11y, setAccordionAriaExpanded } from './actions/a11y';\nimport { setActiveClass } from './actions/classes';\nimport { closeContent, openContent } from './actions/content';\nimport { getAccordionSettings, getGroupSettings } from './actions/settings';\nimport { MODULE_KEY } from './utils/constants';\nimport { getElementSelector } from './utils/selectors';\nimport type { AccordionData, AccordionGroupData } from './utils/types';\n\n/**\n * Inits an accordion group.\n * @param accordion\n * @param groupsData\n * @returns\n */\nexport const initAccordionGroup = (accordion: HTMLElement, groupsData: AccordionGroupData[]) => {\n const group = accordion.closest<HTMLElement>(getElementSelector('group')) || document.body;\n\n let groupData = groupsData.find((data) => data.group === group);\n if (!groupData) {\n groupData = getGroupSettings(group);\n\n groupsData.push(groupData);\n }\n\n const accordionData = groupData.accordions.find((data) => data.accordion === accordion);\n if (accordionData) return groupData;\n\n const result = initAccordion(accordion, groupData);\n if (result) {\n groupData.accordions.push({\n accordion,\n trigger: result.trigger,\n a11yEnabled: result.a11yEnabled,\n controls: result.controls,\n });\n }\n\n setInitialGroupState(groupData);\n\n return groupData;\n};\n\n/**\n * Inits an accordion.\n * @param accordion\n * @param groupData\n *\n * @returns The accordion's controls.\n */\nconst initAccordion = (\n accordion: HTMLElement,\n groupData: AccordionGroupData,\n):\n | { controls: AccordionData['controls']; trigger: HTMLElement; a11yEnabled: boolean }\n | undefined => {\n const settings = getAccordionSettings(accordion, groupData);\n if (!settings) return;\n\n const { trigger, content } = settings;\n\n // Read a11y option\n const a11yEnabled = readOption(\n accordion,\n MODULE_KEY,\n 'a11y',\n { type: 'boolean', default: true },\n { includeGlobal: false },\n );\n\n let isOpen = isVisible(content);\n let cancel: (() => void) | undefined;\n\n // Force the content to be closed if the accordion is not visible.\n if (!isVisible(accordion)) {\n cancel = closeContent(content);\n }\n\n setAccordionA11y(trigger, content, isOpen);\n setActiveClass({\n ...settings,\n isOpen,\n });\n\n // Apply keyboard accessibility\n if (a11yEnabled) {\n ensureButtonLike(trigger);\n }\n\n /**\n * Expands/contracts the content element.\n * @param event The Event object, if it was done by a user interaction.\n */\n const toggleContent = (event?: Event) => {\n cancel?.();\n cancel = undefined;\n\n if (isOpen) {\n cancel = closeContent(content);\n isOpen = false;\n } else {\n openContent(content);\n isOpen = true;\n\n // Close all other Accordions if the group is single.\n if (groupData.single && event) {\n for (const data of groupData.accordions) {\n if (data.accordion !== accordion) data.controls.close();\n }\n }\n }\n\n setAccordionAriaExpanded(settings.trigger, isOpen);\n setActiveClass({\n ...settings,\n isOpen,\n });\n };\n\n return {\n trigger,\n a11yEnabled: a11yEnabled ?? true,\n controls: {\n destroy: () => {\n cancel?.();\n },\n open: () => {\n if (!isOpen) toggleContent();\n },\n close: () => {\n if (isOpen) toggleContent();\n },\n toggle: (event?: Event) => toggleContent(event),\n isOpen: () => isOpen,\n },\n };\n};\n\n/**\n * Ensures all accordions are correctly open/closed on page load.\n * @param groupData\n */\nconst setInitialGroupState = ({ single, initial, accordions }: AccordionGroupData) => {\n let openedSingle = false;\n\n const isInitialNone = initial === 'none';\n const isInitialIndexes = Array.isArray(initial);\n\n for (const [index, { controls }] of accordions.entries()) {\n const adjustedIndex = index + 1;\n\n const shouldOpen = isInitialIndexes && initial.includes(adjustedIndex);\n const shouldClose =\n (single && openedSingle) ||\n (isInitialIndexes && !initial.includes(adjustedIndex)) ||\n isInitialNone;\n\n if (shouldClose) {\n controls.close();\n continue;\n }\n\n if (shouldOpen) {\n controls.open();\n openedSingle = true;\n }\n\n openedSingle ||= controls.isOpen();\n }\n};\n", "import type { List } from '@adartem/ad-list';\nimport { isNotEmpty, waitAttributeLoaded } from '@adartem/adlib-utils';\n\nimport { initAccordionGroup } from '../factory';\nimport { getClosestElement, queryAllElements } from '../utils/selectors';\nimport type { AccordionGroupData } from '../utils/types';\n\n/**\n * Inits the accordions' groups functionalities on lists.\n * @param groupsData\n * @returns A cleanup function.\n */\nexport const initListAccordions = async (groupsData: AccordionGroupData[]) => {\n const lists: List[] = await waitAttributeLoaded('list');\n\n const cleanups = lists.map((list) => {\n return list.addHook('afterRender', (items = []) => {\n for (const { element } of items) {\n const accordions = [\n ...queryAllElements('accordion', { scope: element }),\n getClosestElement(element, 'accordion'),\n ].filter(isNotEmpty);\n\n for (const accordion of accordions) {\n initAccordionGroup(accordion, groupsData);\n }\n }\n });\n });\n\n return () => {\n for (const cleanup of cleanups) {\n cleanup();\n }\n };\n};\n", "import {\n type ActivationStopReason,\n type AdLibAttributeInit,\n createCleanupBag,\n createDelegation,\n isActivationKey,\n readOptionsFromAttributes,\n runActivationPipeline,\n waitWebflowReady,\n} from '@adartem/adlib-utils';\n\nimport { initListAccordions } from './actions/list';\nimport { initAccordionGroup } from './factory';\nimport { LIST_ELEMENT_SELECTOR, MODULE_KEY, OPTIONS } from './utils/constants';\nimport { getElementSelector, queryAllElements } from './utils/selectors';\nimport type { AccordionGroupData } from './utils/types';\n\ninterface ModuleDiagnostics {\n activeCount: number;\n disabledCount: number;\n guardFailedCount: number;\n lastNonActivationReason?: ActivationStopReason;\n}\n\nexport const init: AdLibAttributeInit = async () => {\n const bag = createCleanupBag();\n\n await waitWebflowReady();\n\n // Get all accordions\n const accordions = queryAllElements('accordion');\n\n // Init all groups\n const groupsData: AccordionGroupData[] = [];\n const diagnostics: ModuleDiagnostics = {\n activeCount: 0,\n disabledCount: 0,\n guardFailedCount: 0,\n };\n\n for (const accordion of accordions) {\n const result = await runActivationPipeline({\n el: accordion,\n moduleKey: MODULE_KEY,\n includeGlobal: false,\n guardsRegistry: {},\n readOptions: () =>\n readOptionsFromAttributes(accordion, MODULE_KEY, OPTIONS, {\n includeGlobal: false,\n }),\n action: () => {\n // Init this accordion (which handles group logic internally)\n initAccordionGroup(accordion, groupsData);\n },\n });\n\n if (result.ok) {\n diagnostics.activeCount++;\n } else if (result.reason === 'disabled') {\n diagnostics.disabledCount++;\n diagnostics.lastNonActivationReason = 'disabled';\n } else if (result.reason === 'guard-failed') {\n diagnostics.guardFailedCount++;\n diagnostics.lastNonActivationReason = 'guard-failed';\n }\n }\n\n for (const { accordions } of groupsData) {\n for (const { controls } of accordions) {\n bag.add(() => controls.destroy());\n }\n }\n\n // Look up accordion data by trigger element\n const findAccordionByTrigger = (triggerEl: Element) => {\n for (const group of groupsData) {\n for (const data of group.accordions) {\n if (data.trigger === triggerEl) return data;\n }\n }\n return undefined;\n };\n\n // Event delegation: one listener per event type on document\n const destroyDelegation = createDelegation(getElementSelector('trigger'), {\n click: ({ event, el }) => {\n const data = findAccordionByTrigger(el);\n if (data) data.controls.toggle(event);\n },\n keydown: ({ event, el }) => {\n const data = findAccordionByTrigger(el);\n if (!data?.a11yEnabled) return;\n if (!isActivationKey(event)) return;\n if (event.key === ' ' || event.key === 'Spacebar') {\n event.preventDefault();\n }\n (el as HTMLElement).click();\n },\n });\n bag.add(destroyDelegation);\n\n // Listen for List instances, if any\n const usesList = accordions.some((accordion) => accordion.closest(LIST_ELEMENT_SELECTOR));\n const listsCleanup = usesList ? await initListAccordions(groupsData) : undefined;\n\n if (listsCleanup) bag.add(listsCleanup);\n\n // Finalize\n return {\n result: { groupsData, diagnostics },\n destroy() {\n bag.run();\n },\n };\n};\n", "{\n \"name\": \"@adartem/ad-accordion\",\n \"version\": \"0.1.0\",\n \"description\": \"Create accessible accordions inside Webflow without Webflow Interactions.\",\n \"private\": false,\n \"type\": \"module\",\n \"types\": \"./dist/index.d.ts\",\n \"scripts\": {\n \"lint\": \"eslint ./src && prettier --check ./src\",\n \"lint:fix\": \"eslint ./src --fix && prettier --write ./src\",\n \"typecheck\": \"tsc --noEmit\",\n \"build\": \"tsup --config tsup.config.ts\",\n \"test\": \"vitest run -c ../../vitest.config.ts\",\n \"dev\": \"tsup --config tsup.config.ts --watch\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\"\n }\n },\n \"dependencies\": {\n \"@adartem/adlib-utils\": \"workspace:*\"\n },\n \"devDependencies\": {\n \"@adartem/ad-list\": \"workspace:*\"\n },\n \"files\": [\n \"dist\",\n \"README.md\",\n \"LICENSE\"\n ],\n \"sideEffects\": false,\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\n", "import { createCleanupBag, defineModule } from '@adartem/adlib-utils';\n\nimport { init as legacyInit } from './init';\nimport { MODULE_KEY } from './utils/constants';\n\nexport default defineModule({\n key: MODULE_KEY,\n init: async (core) => {\n void core;\n\n const bag = createCleanupBag();\n const res = await legacyInit();\n\n if (res && typeof (res as { destroy?: unknown }).destroy === 'function') {\n bag.add(() => {\n try {\n (res as { destroy: () => void }).destroy();\n } catch {\n // best-effort\n }\n });\n }\n\n return {\n key: MODULE_KEY,\n destroy: () => bag.run(),\n };\n },\n});\n\nexport { version } from '../package.json';\nexport { init } from './init';\nexport { ELEMENTS, MODULE_KEY, SETTINGS } from './utils/constants';\n"],
5
+ "mappings": "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",
6
+ "names": ["setAccordionA11y", "trigger", "content", "isOpen", "triggerId", "ensureUniqueId", "contentId", "ARIA_ROLE_KEY", "ARIA_ROLE_VALUES", "ARIA_CONTROLS_KEY", "TABINDEX_KEY", "setAccordionAriaExpanded", "ARIA_LABELLEDBY_KEY", "ARIA_LABEL_KEY", "ARIA_EXPANDED_KEY", "setActiveClass", "accordion", "arrow", "groupActiveClass", "accordionActiveClass", "arrowActiveClass", "contentActiveClass", "triggerActiveClass", "action", "getElementHeight", "openContent", "contentHeight", "closeContent", "cancel", "addListener", "propertyName", "MODULE_KEY", "ELEMENTS", "SETTINGS", "OPTIONS", "LIST_ELEMENT_SELECTOR", "LIST_ATTRIBUTE", "getInstance", "getPresenceSelector", "getElementSelector", "getSettingSelector", "getClosestElement", "queryElement", "queryAllElements", "getAttribute", "hasAttributeValue", "generateSelectors", "getGroupSettings", "group", "options", "readOptionsFromAttributes", "single", "rawInitial", "activeClass", "initial", "isKeyOf", "extractCommaSeparatedValues", "parseNumericAttribute", "isNotEmpty", "getAccordionSettings", "groupData", "scope", "readOption", "initAccordionGroup", "groupsData", "data", "result", "initAccordion", "setInitialGroupState", "settings", "a11yEnabled", "isVisible", "ensureButtonLike", "toggleContent", "event", "accordions", "openedSingle", "isInitialNone", "isInitialIndexes", "index", "controls", "adjustedIndex", "shouldOpen", "initListAccordions", "cleanups", "waitAttributeLoaded", "list", "items", "element", "cleanup", "init", "bag", "createCleanupBag", "waitWebflowReady", "diagnostics", "runActivationPipeline", "findAccordionByTrigger", "triggerEl", "destroyDelegation", "createDelegation", "el", "isActivationKey", "listsCleanup", "version", "index_default", "defineModule", "core", "res"]
7
+ }
@@ -0,0 +1,290 @@
1
+ import {
2
+ require_just_debounce
3
+ } from "./chunk-M2KO765Q.js";
4
+ import {
5
+ Ao,
6
+ At,
7
+ Bn,
8
+ Cn,
9
+ Dn,
10
+ Hn,
11
+ Jo,
12
+ Mn,
13
+ Nn,
14
+ Nt,
15
+ Pn,
16
+ So,
17
+ Tt,
18
+ Vo,
19
+ Xo,
20
+ Xt,
21
+ __toESM,
22
+ ce,
23
+ ie,
24
+ init_live_reload,
25
+ kn,
26
+ le,
27
+ mn,
28
+ on,
29
+ rr,
30
+ vn,
31
+ wn,
32
+ xo,
33
+ yo,
34
+ zo
35
+ } from "./chunk-IEGIKJKW.js";
36
+
37
+ // ../rangeslider/dist/index.js
38
+ init_live_reload();
39
+ var import_just_debounce = __toESM(require_just_debounce(), 1);
40
+ var J = Object.defineProperty;
41
+ var Q = (i, t, e) => t in i ? J(i, t, { enumerable: true, configurable: true, writable: true, value: e }) : i[t] = e;
42
+ var l = (i, t, e) => Q(i, typeof t != "symbol" ? t + "" : t, e);
43
+ var N = (i) => i instanceof MouseEvent ? i.clientX : i.touches[0].clientX;
44
+ var y = "ad-rangeslider";
45
+ var k = ["wrapper", "track", "fill", "handle", "display-value"];
46
+ var C = { disabled: { key: "disabled", values: ["true"] }, a11y: { key: "a11y", values: ["false"] } };
47
+ var H = { min: { type: "number" }, max: { type: "number" }, start: { type: "number" }, step: { type: "number" }, update: { type: "enum", values: ["move", "release"], default: "move" }, lazy: { type: "boolean", default: false }, formatdisplay: { type: "string" }, formatcompactdisplay: { type: "string" }, formatcurrency: { type: "string" }, formatcurrencydisplay: { type: "string" }, formatcurrencysign: { type: "string" }, formatmaximumsignificantdigits: { type: "number" }, formatmaximumfractiondigits: { type: "number" }, formatminimumfractiondigits: { type: "number" }, formatminimumintegerdigits: { type: "number" }, formatminimumsignificantdigits: { type: "number" }, formatnotation: { type: "string" }, formatnumberingsystem: { type: "string" }, formatroundingpriority: { type: "string" }, formatroundingincrement: { type: "number" }, formatroundingmode: { type: "string" }, formatsigndisplay: { type: "string" }, formatstyle: { type: "string" }, formattrailingzerodisplay: { type: "string" }, formatunit: { type: "string" }, formatunitdisplay: { type: "string" }, formatusegrouping: { type: "string" }, disabled: { type: "boolean", default: false }, a11y: { type: "boolean", default: true } };
48
+ var _ = [xo, Ao];
49
+ var at = [yo, So];
50
+ var w = [..._, ...at];
51
+ var { getInstance: Pt, getPresenceSelector: $t, getElementSelector: Bt, getSettingSelector: Gt, queryElement: F, queryAllElements: M, getAttribute: zt, hasAttributeValue: Xt2 } = Jo(y, k, C);
52
+ var U = (i) => {
53
+ let t = F("track", { scope: i }), e = F("fill", { scope: i }), a = [...i.querySelectorAll("input")].filter(on), r = M("handle", { scope: i }), s = M("display-value", { scope: i }), n = zo(i, y, H, { includeGlobal: false }), o = n.formatdisplay, m = { compactDisplay: n.formatcompactdisplay, currency: n.formatcurrency, currencyDisplay: n.formatcurrencydisplay, currencySign: n.formatcurrencysign, maximumSignificantDigits: n.formatmaximumsignificantdigits, maximumFractionDigits: n.formatmaximumfractiondigits, minimumFractionDigits: n.formatminimumfractiondigits, minimumIntegerDigits: n.formatminimumintegerdigits, minimumSignificantDigits: n.formatminimumsignificantdigits, notation: n.formatnotation, numberingSystem: n.formatnumberingsystem, roundingPriority: n.formatroundingpriority, roundingIncrement: n.formatroundingincrement, roundingMode: n.formatroundingmode, signDisplay: n.formatsigndisplay, style: n.formatstyle, trailingZeroDisplay: n.formattrailingzerodisplay, unit: n.formatunit, unitDisplay: n.formatunitdisplay, useGrouping: n.formatusegrouping }, u = n.update === "release", h = n.lazy ?? false;
54
+ if (!r.length || !t) {
55
+ console.error("The rangeslider is missing a Track element or a Handle element.");
56
+ return;
57
+ }
58
+ let { left: b, right: g } = t.getBoundingClientRect(), E = t.clientWidth;
59
+ t.style.position = "relative";
60
+ let c = n.min ?? 0, p = n.max ?? c + 1, V = p - c;
61
+ if (Number.isNaN(V)) {
62
+ console.error("Please make sure min and max are numbers.");
63
+ return;
64
+ }
65
+ if (Math.sign(V) === -1) {
66
+ console.error("The min can't be greater than the max.");
67
+ return;
68
+ }
69
+ let f = n.step ?? V / 100, x = Tt(f);
70
+ return V % f > 0 && console.error(`The provided step [${f}] doesn't fit the range [${c},${p}], are you sure you want to use this value?`), { trackElement: t, fillElement: e, handleElements: r, inputElements: a, displayValueElements: s, formatValueDisplay: o, formatValueOptions: m, trackLeft: b, trackRight: g, trackWidth: E, minRange: c, maxRange: p, totalRange: V, step: f, precision: x, updateOnRelease: u, isLazy: h };
71
+ };
72
+ var P = (i, [t, e]) => {
73
+ let a = t.getValue(), r = e?.getValue(), s = mt(i, [a, r]);
74
+ if (!ie(s)) return;
75
+ let [n, o] = t.getConstraints();
76
+ if (s === a && i >= n && i <= o) return t;
77
+ if (!e || s !== r) return;
78
+ let [m, u] = e.getConstraints();
79
+ if (i >= m && i <= u) return e;
80
+ };
81
+ var mt = (i, t) => {
82
+ let e = t.filter(ce);
83
+ return e.length ? e.reduce((r, s) => Math.abs(s - i) < Math.abs(r - i) ? s : r) : void 0;
84
+ };
85
+ var T = class {
86
+ constructor(t, { minRange: e, maxRange: a, handles: r, trackWidth: s }) {
87
+ this.element = t;
88
+ l(this, "minRange");
89
+ l(this, "totalRange");
90
+ l(this, "handles");
91
+ l(this, "trackWidth");
92
+ t.style.position = "absolute", t.style.right = "unset", this.minRange = e, this.totalRange = a - e, this.handles = r, this.trackWidth = s, this.update();
93
+ }
94
+ updateTrackWidth(t) {
95
+ this.trackWidth = t;
96
+ }
97
+ update() {
98
+ let { element: t, trackWidth: e, minRange: a, totalRange: r, handles: [s, n] } = this, o, m, u = (s.getValue() - a) * e / r;
99
+ n ? (o = u, m = (n.getValue() - s.getValue()) * e / r) : (o = 0, m = u), t.style.left = `${o}px`, t.style.width = `${m}px`;
100
+ }
101
+ };
102
+ var B = (i, t) => {
103
+ i.setAttribute(Mn, Dn.slider), i.setAttribute(vn, "0"), ![Cn, Nn].some((e) => i.getAttribute(e)) && t && i.setAttribute(Cn, t.name);
104
+ };
105
+ var G = (i) => {
106
+ i.style.position = "absolute", i.style.right = "unset", i.style.top = "50%", i.style.transform = "translate(-50%, -50%)";
107
+ };
108
+ var D = class {
109
+ constructor(t, { index: e, minRange: a, maxRange: r, trackWidth: s, step: n, precision: o, startValue: m, isLazy: u, inputElement: h, displayValueElement: b, formatValueDisplay: g, formatValueOptions: E }) {
110
+ this.element = t;
111
+ l(this, "destroy");
112
+ l(this, "index");
113
+ l(this, "minRange");
114
+ l(this, "maxRange");
115
+ l(this, "totalRange");
116
+ l(this, "step");
117
+ l(this, "precision");
118
+ l(this, "inputElement");
119
+ l(this, "displayValueElement");
120
+ l(this, "formatValueDisplay");
121
+ l(this, "formatValueOptions");
122
+ l(this, "fill");
123
+ l(this, "sibling");
124
+ l(this, "trackWidth");
125
+ l(this, "currentValue");
126
+ l(this, "minValue");
127
+ l(this, "maxValue");
128
+ l(this, "updatingInput", false);
129
+ l(this, "getValue", () => this.currentValue);
130
+ l(this, "getConstraints", () => [this.minValue, this.maxValue]);
131
+ this.inputElement = h, this.displayValueElement = b, this.formatValueDisplay = g, this.formatValueOptions = E, this.index = e, this.minRange = a, this.maxRange = r, this.totalRange = r - a, this.step = n, this.precision = o, this.minValue = a, this.maxValue = r, this.trackWidth = s, G(t), B(t, h), this.setValue(h?.value ? parseFloat(h.value) : m, !u), this.destroy = this.listenEvents();
132
+ }
133
+ listenEvents() {
134
+ let { element: t, inputElement: e } = this, a = [kn(t, "keydown", (r) => this.handleKeyDown(r)), kn(e, "change", () => this.handleInputChange())];
135
+ return () => {
136
+ for (let r of a) r();
137
+ };
138
+ }
139
+ handleKeyDown(t) {
140
+ let { step: e, currentValue: a } = this, { key: r } = t;
141
+ w.includes(r) && (t.preventDefault(), _.includes(r) ? this.setValue(a + e) : this.setValue(a - e));
142
+ }
143
+ handleInputChange() {
144
+ let { inputElement: t, index: e, minRange: a, maxRange: r, step: s, precision: n, updatingInput: o } = this;
145
+ if (!t || o) return;
146
+ let { value: m } = t, u = parseFloat(m);
147
+ if (u) {
148
+ this.setValue(Xo(u, s, n, a));
149
+ return;
150
+ }
151
+ this.setValue(e === 0 ? a : r, false);
152
+ }
153
+ formatValue(t, e = this.formatValueDisplay, a = this.formatValueOptions) {
154
+ let r = e === "true" ? void 0 : e;
155
+ try {
156
+ return new Intl.NumberFormat(r, a).format(t);
157
+ } catch {
158
+ return new Intl.NumberFormat(window.navigator?.language || void 0, a).format(t);
159
+ }
160
+ }
161
+ updatePosition() {
162
+ let { currentValue: t, element: e, trackWidth: a, minRange: r, totalRange: s, fill: n } = this, o = (t - r) * a / s;
163
+ e.style.left = `${o}px`, n?.update();
164
+ }
165
+ setValue(t, e = true) {
166
+ let { currentValue: a, element: r, minValue: s, maxValue: n, displayValueElement: o, formatValueDisplay: m } = this;
167
+ if (a === t || t < s || t > n) return false;
168
+ this.currentValue = t, this.updatePosition(), this.updateSiblingConstraints();
169
+ let u = `${t}`;
170
+ return r.setAttribute(Bn, u), o && (o.textContent = m ? this.formatValue(t, m) : u), e && this.updateInputElement(), true;
171
+ }
172
+ updateInputElement() {
173
+ this.updatingInput = true;
174
+ let { currentValue: t, inputElement: e } = this;
175
+ e && (Vo(e, t.toFixed(2)), this.updatingInput = false);
176
+ }
177
+ setConstraints(t, e) {
178
+ let { element: a } = this, r = t.toFixed(2), s = e.toFixed(2);
179
+ a.setAttribute(Pn, r), a.setAttribute(Hn, s), this.minValue = Number(r), this.maxValue = Number(s);
180
+ }
181
+ updateSiblingConstraints() {
182
+ let { index: t, sibling: e, step: a, minRange: r, maxRange: s, currentValue: n } = this;
183
+ e && (t === 0 ? e.setConstraints(n + a, s) : e.setConstraints(r, n - a));
184
+ }
185
+ updateTrackWidth(t) {
186
+ this.trackWidth = t, this.fill?.updateTrackWidth(t), this.updatePosition();
187
+ }
188
+ addFill(t) {
189
+ this.fill = t;
190
+ }
191
+ addSibling(t) {
192
+ this.sibling = t, this.updateSiblingConstraints();
193
+ }
194
+ };
195
+ var X = ({ handleElements: i, inputElements: t, displayValueElements: e, formatValueDisplay: a, formatValueOptions: r, minRange: s, maxRange: n, trackWidth: o, step: m, precision: u, isLazy: h }) => {
196
+ let b = i.slice(0, 2).map((c, p) => {
197
+ let V = At(c, y, "start", H.start, { includeGlobal: false }) ?? (p === 0 ? s : n), f = Xo(V, m, u, s), x = t[p], L = e[p];
198
+ return f < s && (console.error(`The Handle start value [${f}] doesn't match the range, so it has been set to the min value [${s}].`), f = s), f > n && (console.error(`The Handle start value [${f}] doesn't match the range, so it has been set to the max value [${n}].`), f = n), new D(c, { index: p, minRange: s, maxRange: n, trackWidth: o, step: m, precision: u, startValue: f, inputElement: x, displayValueElement: L, formatValueOptions: r, formatValueDisplay: a, isLazy: h });
199
+ }).filter(ce);
200
+ if (!b.length) return;
201
+ b.length > 1 && b.sort((c, p) => c.getValue() - p.getValue());
202
+ let [g, E] = b;
203
+ return E ? (g.addSibling(E), E.addSibling(g)) : g.setConstraints(s, n), [g, E];
204
+ };
205
+ var q = ({ fillElement: i, minRange: t, maxRange: e, trackWidth: a }, r) => {
206
+ if (!i) return;
207
+ let s = new T(i, { minRange: t, maxRange: e, trackWidth: a, handles: r }), [n, o] = r;
208
+ n.addFill(s), o?.addFill(s);
209
+ };
210
+ var W = async () => {
211
+ let i = Nt();
212
+ await rr();
213
+ let t = { activeCount: 0, disabledCount: 0, guardFailedCount: 0 }, e = M("wrapper"), a = [];
214
+ for (let s of e) {
215
+ let n = await Xt({ el: s, moduleKey: y, includeGlobal: false, guardsRegistry: {}, readOptions: () => zo(s, y, H, { includeGlobal: false }), action: () => {
216
+ let o = Dt(s);
217
+ o && (i.add(o.destroy), a.push(o));
218
+ } });
219
+ n.ok ? t.activeCount++ : n.reason === "disabled" ? (t.disabledCount++, t.lastNonActivationReason = "disabled") : n.reason === "guard-failed" && (t.guardFailedCount++, t.lastNonActivationReason = "guard-failed");
220
+ }
221
+ return { result: { handles: a.map(({ handles: s }) => s), diagnostics: t }, destroy() {
222
+ i.run();
223
+ } };
224
+ };
225
+ var Dt = (i) => {
226
+ let t = Nt(), e = U(i);
227
+ if (!e) return;
228
+ let a = X(e);
229
+ if (!a) return;
230
+ q(e, a);
231
+ let { maxRange: r, minRange: s, step: n, precision: o, totalRange: m, trackElement: u, updateOnRelease: h } = e, { trackWidth: b, trackLeft: g, trackRight: E } = e, c, p = false, V = (d) => {
232
+ let v = s + (d - g) * m / b;
233
+ return Xo(v, n, o, s);
234
+ }, f = (d) => {
235
+ if (!c) return;
236
+ d instanceof MouseEvent && d.preventDefault();
237
+ let v = N(d), [A, I] = c.getConstraints(), R;
238
+ g > v ? R = A : E < v ? R = I : R = V(v);
239
+ let Z = c.setValue(R, !h);
240
+ p || (p = Z);
241
+ }, x = [], L = () => {
242
+ for (let d of x) d();
243
+ x = [];
244
+ }, O = (d) => {
245
+ d.cancelable && d.preventDefault(), L(), h && p && c?.updateInputElement(), p = false, c?.element.blur(), c = void 0;
246
+ }, K = (d) => {
247
+ d.cancelable && d.preventDefault();
248
+ let v = N(d);
249
+ x = [kn(document, "mousemove", f), kn(document, "touchmove", f, { passive: true }), kn(document, "mouseup", O), kn(document, "touchend", O)];
250
+ let A;
251
+ g > v ? A = s : E < v ? A = r : A = V(v);
252
+ let I = P(A, a);
253
+ if (!I) return;
254
+ I.element.focus(), c = I;
255
+ let R = I.setValue(A, !h);
256
+ p || (p = R);
257
+ }, Y = () => {
258
+ b = u.clientWidth, { left: g, right: E } = u.getBoundingClientRect();
259
+ for (let d of a) d && d.updateTrackWidth(b);
260
+ };
261
+ return (() => {
262
+ let d = mn(i);
263
+ if (!d) return;
264
+ let v = new MutationObserver(() => {
265
+ le(d) && Y();
266
+ });
267
+ v.observe(d, { attributes: true, attributeFilter: ["style", "class"] }), t.add(() => v.disconnect());
268
+ })(), t.add(kn(u, "mousedown", K)), t.add(kn(u, "touchstart", K, { passive: true })), t.add(kn(window, "resize", (0, import_just_debounce.default)(Y, 50))), t.add(L), { handles: a, destroy: () => {
269
+ t.run();
270
+ } };
271
+ };
272
+ var Nt2 = "0.1.0";
273
+ var De = wn({ key: y, init: async (i) => {
274
+ let t = Nt(), e = await W();
275
+ return e && typeof e.destroy == "function" && t.add(() => {
276
+ try {
277
+ e.destroy();
278
+ } catch {
279
+ }
280
+ }), { key: y, destroy: () => t.run() };
281
+ } });
282
+ export {
283
+ k as ELEMENTS,
284
+ y as MODULE_KEY,
285
+ C as SETTINGS,
286
+ De as default,
287
+ W as init,
288
+ Nt2 as version
289
+ };
290
+ //# sourceMappingURL=dist-BXD5YEF3.js.map