@ecopages/radiant-ui 0.1.0-beta.3 → 0.1.0-beta.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.
- package/dist/components/ui/autocomplete/autocomplete.css +135 -0
- package/dist/components/ui/autocomplete/autocomplete.d.ts +21 -0
- package/dist/components/ui/autocomplete/autocomplete.script.d.ts +42 -0
- package/dist/components/ui/autocomplete/index.d.ts +2 -0
- package/dist/components/ui/autocomplete/index.js +2 -0
- package/dist/components/ui/autocomplete/index.js.map +7 -0
- package/dist/components/ui/avatar/avatar.css +58 -0
- package/dist/components/ui/avatar/avatar.d.ts +13 -0
- package/dist/components/ui/avatar/index.d.ts +1 -0
- package/dist/components/ui/avatar/index.js +2 -0
- package/dist/components/ui/avatar/index.js.map +7 -0
- package/dist/components/ui/button-group/button-group.css +16 -0
- package/dist/components/ui/button-group/button-group.d.ts +10 -0
- package/dist/components/ui/button-group/index.d.ts +1 -0
- package/dist/components/ui/button-group/index.js +2 -0
- package/dist/components/ui/button-group/index.js.map +7 -0
- package/dist/components/ui/calendar/calendar.css +318 -0
- package/dist/components/ui/calendar/calendar.d.ts +5 -0
- package/dist/components/ui/calendar/calendar.script.d.ts +89 -0
- package/dist/components/ui/calendar/index.d.ts +2 -0
- package/dist/components/ui/calendar/index.js +2 -0
- package/dist/components/ui/calendar/index.js.map +7 -0
- package/dist/components/ui/chip/chip.css +47 -0
- package/dist/components/ui/chip/chip.d.ts +11 -0
- package/dist/components/ui/chip/index.d.ts +1 -0
- package/dist/components/ui/chip/index.js +2 -0
- package/dist/components/ui/chip/index.js.map +7 -0
- package/dist/components/ui/chip-list/chip-list.css +15 -0
- package/dist/components/ui/chip-list/chip-list.d.ts +10 -0
- package/dist/components/ui/chip-list/index.d.ts +1 -0
- package/dist/components/ui/chip-list/index.js +2 -0
- package/dist/components/ui/chip-list/index.js.map +7 -0
- package/dist/components/ui/combobox/combobox.css +42 -80
- package/dist/components/ui/combobox/combobox.d.ts +12 -20
- package/dist/components/ui/combobox/combobox.script.d.ts +15 -14
- package/dist/components/ui/combobox/index.d.ts +2 -1
- package/dist/components/ui/combobox/index.js +1 -1
- package/dist/components/ui/combobox/index.js.map +4 -4
- package/dist/components/ui/date-field/date-field.css +184 -0
- package/dist/components/ui/date-field/date-field.d.ts +10 -0
- package/dist/components/ui/date-field/date-field.script.d.ts +108 -0
- package/dist/components/ui/date-field/index.d.ts +2 -0
- package/dist/components/ui/date-field/index.js +2 -0
- package/dist/components/ui/date-field/index.js.map +7 -0
- package/dist/components/ui/date-range-picker/date-range-picker.css +194 -0
- package/dist/components/ui/date-range-picker/date-range-picker.d.ts +10 -0
- package/dist/components/ui/date-range-picker/date-range-picker.script.d.ts +99 -0
- package/dist/components/ui/date-range-picker/index.d.ts +2 -0
- package/dist/components/ui/date-range-picker/index.js +2 -0
- package/dist/components/ui/date-range-picker/index.js.map +7 -0
- package/dist/components/ui/dialog/dialog.css +1 -1
- package/dist/components/ui/feed/feed.css +169 -5
- package/dist/components/ui/feed/feed.d.ts +54 -11
- package/dist/components/ui/feed/index.d.ts +1 -2
- package/dist/components/ui/feed/index.js +1 -1
- package/dist/components/ui/feed/index.js.map +4 -4
- package/dist/components/ui/field/index.js +1 -1
- package/dist/components/ui/field/index.js.map +3 -3
- package/dist/components/ui/form/form-field.test.d.ts +1 -0
- package/dist/components/ui/form/index.js +1 -1
- package/dist/components/ui/form/index.js.map +3 -3
- package/dist/components/ui/heading/heading.css +107 -0
- package/dist/components/ui/heading/heading.d.ts +30 -0
- package/dist/components/ui/heading/index.d.ts +1 -0
- package/dist/components/ui/heading/index.js +2 -0
- package/dist/components/ui/heading/index.js.map +7 -0
- package/dist/components/ui/headline/headline.css +43 -0
- package/dist/components/ui/headline/headline.d.ts +16 -0
- package/dist/components/ui/headline/index.d.ts +1 -0
- package/dist/components/ui/headline/index.js +2 -0
- package/dist/components/ui/headline/index.js.map +7 -0
- package/dist/components/ui/input/index.js +1 -1
- package/dist/components/ui/input/index.js.map +4 -4
- package/dist/components/ui/input/input.d.ts +8 -1
- package/dist/components/ui/label/index.js +1 -1
- package/dist/components/ui/label/index.js.map +2 -2
- package/dist/components/ui/listbox/index.d.ts +1 -1
- package/dist/components/ui/listbox/index.js +1 -1
- package/dist/components/ui/listbox/index.js.map +4 -4
- package/dist/components/ui/listbox/listbox.css +34 -10
- package/dist/components/ui/listbox/listbox.d.ts +12 -4
- package/dist/components/ui/listbox/listbox.script.d.ts +12 -0
- package/dist/components/ui/menu-button/index.js +1 -1
- package/dist/components/ui/menu-button/index.js.map +4 -4
- package/dist/components/ui/menu-button/menu-button.css +24 -8
- package/dist/components/ui/menu-button/menu-button.script.d.ts +3 -4
- package/dist/components/ui/menubar/index.js +1 -1
- package/dist/components/ui/menubar/index.js.map +4 -4
- package/dist/components/ui/menubar/menubar.css +40 -22
- package/dist/components/ui/menubar/menubar.script.d.ts +6 -1
- package/dist/components/ui/number-field/index.d.ts +2 -0
- package/dist/components/ui/number-field/index.js +2 -0
- package/dist/components/ui/number-field/index.js.map +7 -0
- package/dist/components/ui/number-field/number-field.css +185 -0
- package/dist/components/ui/number-field/number-field.d.ts +43 -0
- package/dist/components/ui/number-field/number-field.script.d.ts +104 -0
- package/dist/components/ui/popover/index.d.ts +4 -0
- package/dist/components/ui/popover/index.js +2 -0
- package/dist/components/ui/popover/index.js.map +7 -0
- package/dist/components/ui/popover/popover.css +132 -0
- package/dist/components/ui/popover/popover.d.ts +15 -0
- package/dist/components/ui/popover/popover.script.d.ts +85 -0
- package/dist/components/ui/select/index.d.ts +3 -0
- package/dist/components/ui/select/index.js +2 -0
- package/dist/components/ui/select/index.js.map +7 -0
- package/dist/components/ui/select/select.css +216 -0
- package/dist/components/ui/select/select.d.ts +54 -0
- package/dist/components/ui/select/select.script.d.ts +106 -0
- package/dist/components/ui/shared/collection-navigation.d.ts +8 -0
- package/dist/components/ui/shared/collection-navigation.test.d.ts +1 -0
- package/dist/components/ui/shared/control-toggle.css +132 -0
- package/dist/components/ui/shared/field-label.d.ts +9 -0
- package/dist/components/ui/shared/floating-position.d.ts +13 -2
- package/dist/components/ui/shared/listbox-popover-behavior.d.ts +47 -0
- package/dist/components/ui/shared/listbox-popover-behavior.test.d.ts +1 -0
- package/dist/components/ui/shared/multi-value.d.ts +4 -0
- package/dist/components/ui/shared/popover-controller.d.ts +35 -0
- package/dist/components/ui/shared/popover-controller.test.d.ts +1 -0
- package/dist/components/ui/shared/popover.css +123 -0
- package/dist/components/ui/shared/portal.d.ts +7 -0
- package/dist/components/ui/shared/portal.test.d.ts +1 -0
- package/dist/components/ui/sidebar/index.js +1 -1
- package/dist/components/ui/sidebar/index.js.map +3 -3
- package/dist/components/ui/slider/index.js +1 -1
- package/dist/components/ui/slider/index.js.map +3 -3
- package/dist/components/ui/slider/slider.script.d.ts +5 -12
- package/dist/components/ui/tag-group/index.d.ts +2 -0
- package/dist/components/ui/tag-group/index.js +2 -0
- package/dist/components/ui/tag-group/index.js.map +7 -0
- package/dist/components/ui/tag-group/tag-group.css +184 -0
- package/dist/components/ui/tag-group/tag-group.d.ts +28 -0
- package/dist/components/ui/tag-group/tag-group.script.d.ts +65 -0
- package/dist/components/ui/textarea/index.js +1 -1
- package/dist/components/ui/textarea/index.js.map +2 -2
- package/dist/components/ui/toc/index.js +1 -1
- package/dist/components/ui/toc/index.js.map +3 -3
- package/dist/components/ui/toc/toc.css +1 -1
- package/dist/components/ui/toc/toc.ssr.test.d.ts +1 -0
- package/dist/components/ui/toc/toc.test.d.ts +1 -0
- package/dist/components/ui/tooltip/index.js +1 -1
- package/dist/components/ui/tooltip/index.js.map +3 -3
- package/dist/index.d.ts +14 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +4 -4
- package/dist/lib/icons/calendar.d.ts +3 -0
- package/dist/lib/icons/chevron-down.d.ts +3 -0
- package/dist/lib/icons/index.d.ts +3 -0
- package/dist/lib/icons/types.d.ts +4 -0
- package/dist/lib/intl/locale.d.ts +3 -0
- package/dist/lib/intl-date/calendar.d.ts +25 -0
- package/dist/lib/intl-date/formatters.d.ts +13 -0
- package/dist/lib/intl-date/index.d.ts +12 -0
- package/dist/lib/intl-date/iso.d.ts +6 -0
- package/dist/lib/intl-date/months.d.ts +12 -0
- package/dist/lib/intl-date/parts.d.ts +15 -0
- package/dist/lib/intl-date/parts.test.d.ts +1 -0
- package/dist/lib/intl-date/segments.d.ts +32 -0
- package/dist/lib/intl-date/segments.test.d.ts +1 -0
- package/dist/lib/intl-date/selection.d.ts +39 -0
- package/dist/lib/intl-date/selection.test.d.ts +1 -0
- package/dist/lib/intl-date/types.d.ts +17 -0
- package/dist/lib/intl-number/format.d.ts +9 -0
- package/dist/lib/intl-number/index.d.ts +2 -0
- package/dist/lib/intl-number/range.d.ts +3 -0
- package/dist/lib/intrinsic.d.ts +13 -0
- package/dist/lib/mask/date-mask.d.ts +29 -0
- package/dist/lib/mask/date-mask.test.d.ts +1 -0
- package/dist/lib/mask/index.d.ts +4 -0
- package/dist/lib/mask/input-mask.d.ts +52 -0
- package/dist/lib/mask/input-mask.test.d.ts +1 -0
- package/dist/lib/text-filter.d.ts +7 -0
- package/dist/lib/text-filter.test.d.ts +1 -0
- package/dist/styles/radiant-ui-core.css +131 -1
- package/dist/styles/radiant-ui.css +142 -1
- package/dist/styles/styles.css +4504 -2395
- package/dist/styles/tailwind.css +142 -1
- package/dist/styles/tokens/typography/default.css +8 -0
- package/package.json +106 -15
- package/dist/components/ui/feed/feed.script.d.ts +0 -22
- package/dist/components/ui/spinbutton/index.d.ts +0 -2
- package/dist/components/ui/spinbutton/index.js +0 -2
- package/dist/components/ui/spinbutton/index.js.map +0 -7
- package/dist/components/ui/spinbutton/spinbutton.css +0 -69
- package/dist/components/ui/spinbutton/spinbutton.d.ts +0 -5
- package/dist/components/ui/spinbutton/spinbutton.script.d.ts +0 -64
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { RadiantElement } from '@ecopages/radiant';
|
|
2
|
+
import type { EventEmitter } from '@ecopages/radiant/tools/event-emitter';
|
|
3
|
+
export type RuiTagGroupSelectionMode = 'single' | 'multiple';
|
|
4
|
+
export type RuiTagGroupItem = {
|
|
5
|
+
value: string;
|
|
6
|
+
label: string;
|
|
7
|
+
};
|
|
8
|
+
export type RuiTagGroupProps = {
|
|
9
|
+
value?: string;
|
|
10
|
+
label?: string;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
selectionMode?: RuiTagGroupSelectionMode;
|
|
13
|
+
/** Disables selection when the parent component owns the selected values. */
|
|
14
|
+
embedded?: boolean;
|
|
15
|
+
};
|
|
16
|
+
export type RuiTagGroupChangeDetail = {
|
|
17
|
+
value: string;
|
|
18
|
+
};
|
|
19
|
+
export type RuiTagGroupRemoveDetail = {
|
|
20
|
+
value: string;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* `<rui-tag-group>` — a focusable list of tags with optional selection and removal.
|
|
24
|
+
*
|
|
25
|
+
* Compose with `data-tag` items and optional `data-tag-remove` buttons inside each tag.
|
|
26
|
+
* Use inside `RuiSelectValue` to display multi-select chips.
|
|
27
|
+
*
|
|
28
|
+
* @see https://react-aria.adobe.com/TagGroup
|
|
29
|
+
* @element rui-tag-group
|
|
30
|
+
* @fires rui-change
|
|
31
|
+
* @fires rui-remove
|
|
32
|
+
*/
|
|
33
|
+
export declare class RuiTagGroup extends RadiantElement {
|
|
34
|
+
value: string;
|
|
35
|
+
label: string;
|
|
36
|
+
disabled: boolean;
|
|
37
|
+
selectionMode: RuiTagGroupSelectionMode;
|
|
38
|
+
embedded: boolean;
|
|
39
|
+
changeEvent: EventEmitter<RuiTagGroupChangeDetail>;
|
|
40
|
+
removeEvent: EventEmitter<RuiTagGroupRemoveDetail>;
|
|
41
|
+
private readonly uid;
|
|
42
|
+
private managedItems;
|
|
43
|
+
private isMultiple;
|
|
44
|
+
private getSelectedValues;
|
|
45
|
+
private setSelectedValues;
|
|
46
|
+
private getList;
|
|
47
|
+
private getTags;
|
|
48
|
+
private getVisibleTags;
|
|
49
|
+
private getTagValue;
|
|
50
|
+
private getTagLabel;
|
|
51
|
+
private ensureTagIds;
|
|
52
|
+
private syncList;
|
|
53
|
+
private syncTags;
|
|
54
|
+
private selectTag;
|
|
55
|
+
private removeTag;
|
|
56
|
+
private initialize;
|
|
57
|
+
connectedCallback(): void;
|
|
58
|
+
onPropsUpdated(): void;
|
|
59
|
+
resync(): void;
|
|
60
|
+
setItems(items: RuiTagGroupItem[]): void;
|
|
61
|
+
onTagClick(event: Event): void;
|
|
62
|
+
onRemoveClick(event: Event): void;
|
|
63
|
+
onTagKeydown(event: KeyboardEvent): void;
|
|
64
|
+
render(): import("@ecopages/jsx").JsxRenderable;
|
|
65
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as c}from"@ecopages/jsx/jsx-runtime";function u(...e){return e.filter(Boolean).join(" ")}var f=Symbol.for("@ecopages/storybook-radiant.viewModule");function a(e,n,t){let r=e;return r[f]=t,e}var i="data-rui-control";var s=new Set(["rui-combobox","rui-date-field","rui-date-range-picker","rui-select","rui-tag-group","rui-checkbox","rui-switch","rui-radio-group","rui-slider","rui-number-field","rui-listbox"]),p=`[${i}], ${Array.from(s).join(", ")}, input, textarea`;function o(e){let{size:n="md",class:t,rows:r=3,...l}=e;return c("textarea",{...l,rows:r,[i]:"","data-rui-control-type":"text",class:u("rui-textarea",`rui-textarea--${n}`,t)})}a(o,["./textarea.css"],import.meta.url);export{o as RuiTextarea};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/components/ui/textarea/textarea.tsx", "../../../../src/lib/cx.ts", "../../../../src/lib/radiant-view.ts", "../../../../src/components/ui/form/control-protocol.ts"],
|
|
4
|
-
"sourcesContent": ["import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nimport { attachRadiantStylesheets } from \"@/lib/radiant-view\";\nimport { RUI_CONTROL_ATTR } from \"../form/control-protocol\";\nexport function RuiTextarea(props) {\n const {\n size = \"md\",\n class: className,\n rows = 3,\n ...host\n } = props;\n return /* @__PURE__ */jsx(\"textarea\", {\n ...host,\n rows,\n ...{\n [RUI_CONTROL_ATTR]: \"\"\n },\n \"data-rui-control-type\": \"text\",\n class: cx(\"rui-textarea\", `rui-textarea--${size}`, className)\n });\n}\nattachRadiantStylesheets(RuiTextarea, [\"./textarea.css\"], import.meta.url);", "export function cx(...parts) {\n return parts.filter(Boolean).join(\" \");\n}", "const RADIANT_VIEW_ELEMENT = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.viewElement\");\nconst RADIANT_SCRIPT_MODULE = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.scriptModule\");\nconst RADIANT_SCRIPT_EXPORT = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.scriptExport\");\nconst RADIANT_VIEW_MODULE = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.viewModule\");\nfunction linkViewToElement(view, element) {\n view[RADIANT_VIEW_ELEMENT] = element;\n const ssrModule = element[RADIANT_SCRIPT_MODULE];\n if (ssrModule) {\n view[RADIANT_SCRIPT_MODULE] = ssrModule;\n view[RADIANT_SCRIPT_EXPORT] = element[RADIANT_SCRIPT_EXPORT] ?? element.name;\n }\n}\nexport function defineRadiantView(element, render, _options) {\n const view = args => render(args);\n linkViewToElement(view, element);\n return view;\n}\nexport function attachRadiantStylesheets(target, _stylesheets, moduleUrl) {\n const view = target;\n view[RADIANT_VIEW_MODULE] = moduleUrl;\n return target;\n}\nexport function syncRadiantViewMetadata(view) {\n const element = view[RADIANT_VIEW_ELEMENT];\n if (element) {\n linkViewToElement(view, element);\n }\n}", "export const RUI_CONTROL_ATTR = \"data-rui-control\";\nexport const RUI_FIELD_MANAGED_ATTR = \"data-rui-field-managed\";\nexport const RUI_FIELD_LABEL_ATTR = \"data-rui-field-label\";\nexport const RUI_FIELD_DESCRIPTION_ATTR = \"data-rui-field-description\";\nexport const RUI_FIELD_ERROR_ATTR = \"data-rui-field-error\";\nexport const RUI_FIELD_DEFAULT_VALUE_ATTR = \"data-default-value\";\nexport const RUI_FORM_DEFAULT_VALUES_ATTR = \"data-default-values\";\nconst HOST_CONTROL_TAGS = /* @__PURE__ */new Set([\"rui-combobox\", \"rui-checkbox\", \"rui-switch\", \"rui-radio-group\", \"rui-slider\", \"rui-spinbutton\", \"rui-listbox\"]);\nconst CONTROL_SELECTOR = `[${RUI_CONTROL_ATTR}], ${Array.from(HOST_CONTROL_TAGS).join(\", \")}, input, textarea`;\nfunction forEachFieldContentNode(root, visit) {\n const slotHost = root;\n const visited = /* @__PURE__ */new Set();\n const safeVisit = node => {\n if (visited.has(node)) {\n return;\n }\n visited.add(node);\n visit(node);\n };\n if (typeof slotHost.getSlotElements === \"function\") {\n for (const node of slotHost.getSlotElements()) {\n safeVisit(node);\n }\n }\n const renderRoot = root.querySelector(\".rui-field\") ?? root;\n for (const child of Array.from(renderRoot.children)) {\n safeVisit(child);\n }\n for (const node of renderRoot.querySelectorAll(\"*\")) {\n safeVisit(node);\n }\n for (const child of Array.from(root.children)) {\n safeVisit(child);\n }\n const shadow = root.shadowRoot;\n if (shadow) {\n for (const child of Array.from(shadow.children)) {\n safeVisit(child);\n }\n }\n}\nfunction queryFieldContent(root, selector) {\n let found = null;\n forEachFieldContentNode(root, node => {\n if (found || !(node instanceof HTMLElement)) {\n return;\n }\n if (node.matches(selector)) {\n found = node;\n return;\n }\n found = node.querySelector(selector);\n });\n return found;\n}\nfunction pickPrimaryFieldControl(candidates) {\n if (candidates.length === 0) {\n return null;\n }\n if (candidates.length === 1) {\n return candidates[0];\n }\n const active = document.activeElement;\n if (active instanceof HTMLElement) {\n for (const candidate of candidates) {\n if (candidate === active || candidate.contains(active)) {\n return candidate;\n }\n }\n }\n const visible = candidates.filter(el => el.isConnected && el.getClientRects().length > 0 && !el.closest('[hidden],[aria-hidden=\"true\"]'));\n const pool = visible.length > 0 ? visible : candidates.filter(el => el.isConnected);\n return pool[pool.length - 1] ?? candidates[candidates.length - 1];\n}\nfunction listFieldControlsInRenderTree(root) {\n const renderRoot = root.querySelector(\".rui-field\");\n if (!(renderRoot instanceof HTMLElement)) {\n return [];\n }\n return Array.from(renderRoot.querySelectorAll(CONTROL_SELECTOR)).filter(el => root.contains(el));\n}\nexport function findFieldControl(root) {\n const fromRenderTree = pickPrimaryFieldControl(listFieldControlsInRenderTree(root));\n if (fromRenderTree) {\n return fromRenderTree;\n }\n let found = null;\n forEachFieldContentNode(root, node => {\n if (found) {\n return;\n }\n const match = findControlInSubtree(node);\n if (match) {\n found = match;\n }\n });\n if (found) {\n return found;\n }\n const renderRoot = root.querySelector(\".rui-field\") ?? root;\n return findControlInSubtree(renderRoot);\n}\nfunction findControlInSubtree(node) {\n if (!(node instanceof HTMLElement)) {\n return null;\n }\n if (node.matches(`[${RUI_CONTROL_ATTR}]`)) {\n return node;\n }\n if (HOST_CONTROL_TAGS.has(node.localName)) {\n return node;\n }\n if (node instanceof HTMLInputElement || node instanceof HTMLTextAreaElement) {\n return node;\n }\n const nested = node.querySelector(CONTROL_SELECTOR);\n return nested;\n}\nexport function readControlValue(control) {\n if (control instanceof HTMLInputElement) {\n if (control.type === \"checkbox\") {\n return control.checked;\n }\n if (control.type === \"number\" || control.type === \"range\") {\n return control.value === \"\" ? \"\" : Number(control.value);\n }\n return control.value;\n }\n if (control instanceof HTMLTextAreaElement) {\n return control.value;\n }\n const host = resolveControlHost(control);\n if (host.localName === \"rui-checkbox\" || host.localName === \"rui-switch\") {\n const input = host.querySelector('input[type=\"checkbox\"]');\n if (input) {\n return input.checked;\n }\n return host.hasAttribute(\"checked\");\n }\n if (host.localName === \"rui-combobox\" || host.localName === \"rui-radio-group\" || host.localName === \"rui-listbox\") {\n return host.value ?? host.getAttribute(\"value\") ?? \"\";\n }\n if (host.localName === \"rui-slider\" || host.localName === \"rui-spinbutton\") {\n const propValue = host.value;\n if (typeof propValue === \"number\") {\n return propValue;\n }\n const raw = host.getAttribute(\"value\");\n return raw == null || raw === \"\" ? \"\" : Number(raw);\n }\n return host.getAttribute(\"value\") ?? \"\";\n}\nexport function writeControlValue(control, value) {\n if (control instanceof HTMLInputElement) {\n if (control.type === \"checkbox\") {\n control.checked = Boolean(value);\n const ce = control.closest(\"rui-checkbox, rui-switch\");\n if (ce) {\n if (value) {\n ce.setAttribute(\"checked\", \"\");\n } else {\n ce.removeAttribute(\"checked\");\n }\n }\n return;\n }\n control.value = value == null ? \"\" : String(value);\n return;\n }\n if (control instanceof HTMLTextAreaElement) {\n control.value = value == null ? \"\" : String(value);\n return;\n }\n const host = resolveControlHost(control);\n if (host.localName === \"rui-checkbox\" || host.localName === \"rui-switch\") {\n if (value) {\n host.setAttribute(\"checked\", \"\");\n } else {\n host.removeAttribute(\"checked\");\n }\n return;\n }\n host.setAttribute(\"value\", value == null ? \"\" : String(value));\n}\nfunction resolveControlHost(control) {\n if (control.hasAttribute(RUI_CONTROL_ATTR)) {\n const host = control.closest(Array.from(HOST_CONTROL_TAGS).join(\",\"));\n return host ?? control;\n }\n return control;\n}\nexport function findFieldLabel(root) {\n return queryFieldContent(root, `[${RUI_FIELD_LABEL_ATTR}], label.rui-label`);\n}\nexport function findFieldDescription(root) {\n return queryFieldContent(root, `[${RUI_FIELD_DESCRIPTION_ATTR}]`);\n}\nexport function findFieldError(root) {\n const all = findFieldErrorElements(root);\n return all[0] ?? null;\n}\nexport function findFieldErrorElements(root) {\n const renderRoot = root.querySelector(\".rui-field\");\n if (renderRoot instanceof HTMLElement) {\n const inRender = Array.from(renderRoot.querySelectorAll(`[${RUI_FIELD_ERROR_ATTR}]`));\n const visible = inRender.filter(el => el.getClientRects().length > 0);\n if (visible.length > 0) {\n return visible;\n }\n if (inRender.length > 0) {\n return inRender;\n }\n }\n const fromDom = Array.from(root.querySelectorAll(`[${RUI_FIELD_ERROR_ATTR}]`));\n if (fromDom.length > 0) {\n return fromDom;\n }\n const single = queryFieldContent(root, `[${RUI_FIELD_ERROR_ATTR}]`);\n return single ? [single] : [];\n}\nexport function wireFieldControlName(controlHost, ariaTarget, name) {\n if (!name) {\n return;\n }\n if (ariaTarget instanceof HTMLInputElement || ariaTarget instanceof HTMLTextAreaElement) {\n ariaTarget.name = name;\n }\n if (!controlHost) {\n return;\n }\n if (controlHost === ariaTarget) {\n return;\n }\n if (HOST_CONTROL_TAGS.has(controlHost.localName)) {\n controlHost.setAttribute(\"name\", name);\n }\n}\nexport function getAriaControlTarget(control) {\n if (control instanceof HTMLInputElement || control instanceof HTMLTextAreaElement) {\n return control;\n }\n if (control.hasAttribute(RUI_CONTROL_ATTR)) {\n return control;\n }\n const marked = control.querySelector(`[${RUI_CONTROL_ATTR}]`);\n if (marked) {\n return marked;\n }\n if (control.localName === \"rui-combobox\") {\n return control.querySelector(\"[data-combobox-input]\") ?? control;\n }\n if (control.localName === \"rui-spinbutton\") {\n return control.querySelector(\"[data-spinbutton-input], input\") ?? control;\n }\n if (control.localName === \"rui-slider\") {\n return control.querySelector('input[type=\"range\"]') ?? control;\n }\n if (control.localName === \"rui-checkbox\" || control.localName === \"rui-switch\") {\n return control.querySelector(\"input\") ?? control;\n }\n if (control.localName === \"rui-radio-group\") {\n const checked = control.querySelector('input[type=\"radio\"]:checked');\n const first = control.querySelector('input[type=\"radio\"]');\n return checked ?? first ?? control;\n }\n return control;\n}"],
|
|
5
|
-
"mappings": "AAAA,OAAS,OAAAA,MAAW,4BCAb,SAASC,KAAMC,EAAO,CAC3B,OAAOA,EAAM,OAAO,OAAO,EAAE,KAAK,GAAG,CACvC,CCCA,IAAMC,EAAqC,OAAO,IAAI,wCAAwC,EAcvF,SAASC,EAAyBC,EAAQC,EAAcC,EAAW,CACxE,IAAMC,EAAOH,EACb,OAAAG,EAAKC,CAAmB,EAAIF,EACrBF,CACT,CCrBO,IAAMK,EAAmB,mBAOhC,IAAMC,EAAmC,IAAI,IAAI,CAAC,eAAgB,eAAgB,aAAc,kBAAmB,aAAc,
|
|
4
|
+
"sourcesContent": ["import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nimport { attachRadiantStylesheets } from \"@/lib/radiant-view\";\nimport { RUI_CONTROL_ATTR } from \"../form/control-protocol\";\nexport function RuiTextarea(props) {\n const {\n size = \"md\",\n class: className,\n rows = 3,\n ...host\n } = props;\n return /* @__PURE__ */jsx(\"textarea\", {\n ...host,\n rows,\n ...{\n [RUI_CONTROL_ATTR]: \"\"\n },\n \"data-rui-control-type\": \"text\",\n class: cx(\"rui-textarea\", `rui-textarea--${size}`, className)\n });\n}\nattachRadiantStylesheets(RuiTextarea, [\"./textarea.css\"], import.meta.url);", "export function cx(...parts) {\n return parts.filter(Boolean).join(\" \");\n}", "const RADIANT_VIEW_ELEMENT = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.viewElement\");\nconst RADIANT_SCRIPT_MODULE = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.scriptModule\");\nconst RADIANT_SCRIPT_EXPORT = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.scriptExport\");\nconst RADIANT_VIEW_MODULE = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.viewModule\");\nfunction linkViewToElement(view, element) {\n view[RADIANT_VIEW_ELEMENT] = element;\n const ssrModule = element[RADIANT_SCRIPT_MODULE];\n if (ssrModule) {\n view[RADIANT_SCRIPT_MODULE] = ssrModule;\n view[RADIANT_SCRIPT_EXPORT] = element[RADIANT_SCRIPT_EXPORT] ?? element.name;\n }\n}\nexport function defineRadiantView(element, render, _options) {\n const view = args => render(args);\n linkViewToElement(view, element);\n return view;\n}\nexport function attachRadiantStylesheets(target, _stylesheets, moduleUrl) {\n const view = target;\n view[RADIANT_VIEW_MODULE] = moduleUrl;\n return target;\n}\nexport function syncRadiantViewMetadata(view) {\n const element = view[RADIANT_VIEW_ELEMENT];\n if (element) {\n linkViewToElement(view, element);\n }\n}", "export const RUI_CONTROL_ATTR = \"data-rui-control\";\nexport const RUI_FIELD_MANAGED_ATTR = \"data-rui-field-managed\";\nexport const RUI_FIELD_LABEL_ATTR = \"data-rui-field-label\";\nexport const RUI_FIELD_DESCRIPTION_ATTR = \"data-rui-field-description\";\nexport const RUI_FIELD_ERROR_ATTR = \"data-rui-field-error\";\nexport const RUI_FIELD_DEFAULT_VALUE_ATTR = \"data-default-value\";\nexport const RUI_FORM_DEFAULT_VALUES_ATTR = \"data-default-values\";\nconst HOST_CONTROL_TAGS = /* @__PURE__ */new Set([\"rui-combobox\", \"rui-date-field\", \"rui-date-range-picker\", \"rui-select\", \"rui-tag-group\", \"rui-checkbox\", \"rui-switch\", \"rui-radio-group\", \"rui-slider\", \"rui-number-field\", \"rui-listbox\"]);\nconst CONTROL_SELECTOR = `[${RUI_CONTROL_ATTR}], ${Array.from(HOST_CONTROL_TAGS).join(\", \")}, input, textarea`;\nconst stringValueAdapter = {\n read: host => {\n const value = Reflect.get(host, \"value\");\n return typeof value === \"string\" ? value : host.getAttribute(\"value\") ?? \"\";\n },\n write: (host, value) => {\n const next = value == null ? \"\" : String(value);\n host.setAttribute(\"value\", next);\n if (\"value\" in host) {\n Reflect.set(host, \"value\", next);\n }\n }\n};\nconst numberValueAdapter = {\n read: host => {\n const value = Reflect.get(host, \"value\");\n if (typeof value === \"number\") {\n return value;\n }\n const raw = host.getAttribute(\"value\");\n return raw == null || raw === \"\" ? \"\" : Number(raw);\n },\n write: (host, value) => {\n const next = value == null ? \"\" : String(value);\n host.setAttribute(\"value\", next);\n if (\"value\" in host) {\n Reflect.set(host, \"value\", value);\n }\n }\n};\nconst booleanValueAdapter = {\n read: host => {\n const input = host.querySelector('input[type=\"checkbox\"]');\n return input?.checked ?? host.hasAttribute(\"checked\");\n },\n write: (host, value) => {\n if (value) {\n host.setAttribute(\"checked\", \"\");\n } else {\n host.removeAttribute(\"checked\");\n }\n }\n};\nconst CONTROL_VALUE_ADAPTERS = /* @__PURE__ */new Map([[\"rui-checkbox\", booleanValueAdapter], [\"rui-switch\", booleanValueAdapter], [\"rui-combobox\", stringValueAdapter], [\"rui-date-field\", stringValueAdapter], [\"rui-date-range-picker\", stringValueAdapter], [\"rui-select\", stringValueAdapter], [\"rui-radio-group\", stringValueAdapter], [\"rui-listbox\", stringValueAdapter], [\"rui-tag-group\", stringValueAdapter], [\"rui-slider\", numberValueAdapter], [\"rui-number-field\", numberValueAdapter]]);\nfunction forEachFieldContentNode(root, visit) {\n const slotHost = root;\n const visited = /* @__PURE__ */new Set();\n const safeVisit = node => {\n if (visited.has(node)) {\n return;\n }\n visited.add(node);\n visit(node);\n };\n if (typeof slotHost.getSlotElements === \"function\") {\n for (const node of slotHost.getSlotElements()) {\n safeVisit(node);\n }\n }\n const renderRoot = root.querySelector(\".rui-field\") ?? root;\n for (const child of Array.from(renderRoot.children)) {\n safeVisit(child);\n }\n for (const node of renderRoot.querySelectorAll(\"*\")) {\n safeVisit(node);\n }\n for (const child of Array.from(root.children)) {\n safeVisit(child);\n }\n const shadow = root.shadowRoot;\n if (shadow) {\n for (const child of Array.from(shadow.children)) {\n safeVisit(child);\n }\n }\n}\nfunction queryFieldContent(root, selector) {\n let found = null;\n forEachFieldContentNode(root, node => {\n if (found || !(node instanceof HTMLElement)) {\n return;\n }\n if (node.matches(selector)) {\n found = node;\n return;\n }\n found = node.querySelector(selector);\n });\n return found;\n}\nfunction pickPrimaryFieldControl(candidates) {\n if (candidates.length === 0) {\n return null;\n }\n if (candidates.length === 1) {\n return candidates[0];\n }\n const hostControl = candidates.find(candidate => HOST_CONTROL_TAGS.has(candidate.localName));\n const markedControl = candidates.find(candidate => candidate.hasAttribute(RUI_CONTROL_ATTR));\n if (markedControl) {\n return markedControl;\n }\n if (hostControl) {\n return hostControl;\n }\n const active = document.activeElement;\n if (active instanceof HTMLElement) {\n for (const candidate of candidates) {\n if (candidate === active || candidate.contains(active)) {\n return candidate;\n }\n }\n }\n const visible = candidates.filter(el => el.isConnected && el.getClientRects().length > 0 && !el.closest('[hidden],[aria-hidden=\"true\"]'));\n const pool = visible.length > 0 ? visible : candidates.filter(el => el.isConnected);\n return pool[pool.length - 1] ?? candidates[candidates.length - 1];\n}\nfunction listFieldControlsInRenderTree(root) {\n const renderRoot = root.querySelector(\".rui-field\");\n if (!(renderRoot instanceof HTMLElement)) {\n return [];\n }\n return Array.from(renderRoot.querySelectorAll(CONTROL_SELECTOR)).filter(el => root.contains(el));\n}\nexport function findFieldControl(root) {\n const fromRenderTree = pickPrimaryFieldControl(listFieldControlsInRenderTree(root));\n if (fromRenderTree) {\n return fromRenderTree;\n }\n let found = null;\n forEachFieldContentNode(root, node => {\n if (found) {\n return;\n }\n const match = findControlInSubtree(node);\n if (match) {\n found = match;\n }\n });\n if (found) {\n return found;\n }\n const renderRoot = root.querySelector(\".rui-field\") ?? root;\n return findControlInSubtree(renderRoot);\n}\nfunction findControlInSubtree(node) {\n if (!(node instanceof HTMLElement)) {\n return null;\n }\n if (node.matches(`[${RUI_CONTROL_ATTR}]`)) {\n return node;\n }\n if (HOST_CONTROL_TAGS.has(node.localName)) {\n return node;\n }\n if (node instanceof HTMLInputElement || node instanceof HTMLTextAreaElement) {\n return node;\n }\n const nested = node.querySelector(CONTROL_SELECTOR);\n return nested;\n}\nexport function readControlValue(control) {\n if (control instanceof HTMLInputElement) {\n const host2 = resolveControlHost(control);\n const adapter = host2 === control ? void 0 : CONTROL_VALUE_ADAPTERS.get(host2.localName);\n if (adapter) {\n return adapter.read(host2);\n }\n if (control.type === \"checkbox\") {\n return control.checked;\n }\n if (control.type === \"number\" || control.type === \"range\") {\n return control.value === \"\" ? \"\" : Number(control.value);\n }\n return control.value;\n }\n if (control instanceof HTMLTextAreaElement) {\n return control.value;\n }\n const host = resolveControlHost(control);\n return CONTROL_VALUE_ADAPTERS.get(host.localName)?.read(host) ?? host.getAttribute(\"value\") ?? \"\";\n}\nexport function writeControlValue(control, value) {\n if (control instanceof HTMLInputElement) {\n const host2 = resolveControlHost(control);\n const adapter = host2 === control ? void 0 : CONTROL_VALUE_ADAPTERS.get(host2.localName);\n if (adapter) {\n adapter.write(host2, value);\n return;\n }\n if (control.type === \"checkbox\") {\n control.checked = Boolean(value);\n const ce = control.closest(\"rui-checkbox, rui-switch\");\n if (ce) {\n if (value) {\n ce.setAttribute(\"checked\", \"\");\n } else {\n ce.removeAttribute(\"checked\");\n }\n }\n return;\n }\n control.value = value == null ? \"\" : String(value);\n return;\n }\n if (control instanceof HTMLTextAreaElement) {\n control.value = value == null ? \"\" : String(value);\n return;\n }\n const host = resolveControlHost(control);\n CONTROL_VALUE_ADAPTERS.get(host.localName)?.write(host, value);\n}\nfunction resolveControlHost(control) {\n if (control.hasAttribute(RUI_CONTROL_ATTR)) {\n const host = control.closest(Array.from(HOST_CONTROL_TAGS).join(\",\"));\n return host ?? control;\n }\n return control;\n}\nexport function findFieldLabel(root) {\n return queryFieldContent(root, `[${RUI_FIELD_LABEL_ATTR}], label.rui-label`);\n}\nexport function findFieldDescription(root) {\n return queryFieldContent(root, `[${RUI_FIELD_DESCRIPTION_ATTR}]`);\n}\nexport function findFieldError(root) {\n const all = findFieldErrorElements(root);\n return all[0] ?? null;\n}\nexport function findFieldErrorElements(root) {\n const renderRoot = root.querySelector(\".rui-field\");\n if (renderRoot instanceof HTMLElement) {\n const inRender = Array.from(renderRoot.querySelectorAll(`[${RUI_FIELD_ERROR_ATTR}]`));\n const visible = inRender.filter(el => el.getClientRects().length > 0);\n if (visible.length > 0) {\n return visible;\n }\n if (inRender.length > 0) {\n return inRender;\n }\n }\n const fromDom = Array.from(root.querySelectorAll(`[${RUI_FIELD_ERROR_ATTR}]`));\n if (fromDom.length > 0) {\n return fromDom;\n }\n const single = queryFieldContent(root, `[${RUI_FIELD_ERROR_ATTR}]`);\n return single ? [single] : [];\n}\nexport function wireFieldControlName(controlHost, ariaTarget, name) {\n if (!name) {\n return;\n }\n if (ariaTarget instanceof HTMLInputElement || ariaTarget instanceof HTMLTextAreaElement) {\n ariaTarget.name = name;\n }\n if (!controlHost) {\n return;\n }\n if (controlHost === ariaTarget) {\n return;\n }\n if (HOST_CONTROL_TAGS.has(controlHost.localName)) {\n controlHost.setAttribute(\"name\", name);\n }\n}\nexport function getAriaControlTarget(control) {\n if (control instanceof HTMLInputElement || control instanceof HTMLTextAreaElement) {\n return control;\n }\n if (control.hasAttribute(RUI_CONTROL_ATTR)) {\n return control;\n }\n const marked = control.querySelector(`[${RUI_CONTROL_ATTR}]`);\n if (marked) {\n return marked;\n }\n if (control.localName === \"rui-combobox\") {\n return control.querySelector(\"[data-combobox-input]\") ?? control;\n }\n if (control.localName === \"rui-date-field\") {\n return control.querySelector(\"[data-date-field-input]\") ?? control;\n }\n if (control.localName === \"rui-date-range-picker\") {\n return control.querySelector(\"[data-range-start]\") ?? control;\n }\n if (control.localName === \"rui-select\") {\n return control.querySelector(\"[data-select-trigger]\") ?? control;\n }\n if (control.localName === \"rui-tag-group\") {\n return control.querySelector(\"[data-tag-list]\") ?? control;\n }\n if (control.localName === \"rui-number-field\") {\n return control.querySelector(\"[data-number-field-input], input\") ?? control;\n }\n if (control.localName === \"rui-slider\") {\n return control.querySelector('input[type=\"range\"]') ?? control;\n }\n if (control.localName === \"rui-checkbox\" || control.localName === \"rui-switch\") {\n return control.querySelector(\"input\") ?? control;\n }\n if (control.localName === \"rui-radio-group\") {\n const checked = control.querySelector('input[type=\"radio\"]:checked');\n const first = control.querySelector('input[type=\"radio\"]');\n return checked ?? first ?? control;\n }\n return control;\n}"],
|
|
5
|
+
"mappings": "AAAA,OAAS,OAAAA,MAAW,4BCAb,SAASC,KAAMC,EAAO,CAC3B,OAAOA,EAAM,OAAO,OAAO,EAAE,KAAK,GAAG,CACvC,CCCA,IAAMC,EAAqC,OAAO,IAAI,wCAAwC,EAcvF,SAASC,EAAyBC,EAAQC,EAAcC,EAAW,CACxE,IAAMC,EAAOH,EACb,OAAAG,EAAKC,CAAmB,EAAIF,EACrBF,CACT,CCrBO,IAAMK,EAAmB,mBAOhC,IAAMC,EAAmC,IAAI,IAAI,CAAC,eAAgB,iBAAkB,wBAAyB,aAAc,gBAAiB,eAAgB,aAAc,kBAAmB,aAAc,mBAAoB,aAAa,CAAC,EACvOC,EAAmB,IAAIC,CAAgB,MAAM,MAAM,KAAKF,CAAiB,EAAE,KAAK,IAAI,CAAC,oBHJpF,SAASG,EAAYC,EAAO,CACjC,GAAM,CACJ,KAAAC,EAAO,KACP,MAAOC,EACP,KAAAC,EAAO,EACP,GAAGC,CACL,EAAIJ,EACJ,OAAsBK,EAAI,WAAY,CACpC,GAAGD,EACH,KAAAD,EAEE,CAACG,CAAgB,EAAG,GAEtB,wBAAyB,OACzB,MAAOC,EAAG,eAAgB,iBAAiBN,CAAI,GAAIC,CAAS,CAC9D,CAAC,CACH,CACAM,EAAyBT,EAAa,CAAC,gBAAgB,EAAG,YAAY,GAAG",
|
|
6
6
|
"names": ["jsx", "cx", "parts", "RADIANT_VIEW_MODULE", "attachRadiantStylesheets", "target", "_stylesheets", "moduleUrl", "view", "RADIANT_VIEW_MODULE", "RUI_CONTROL_ATTR", "HOST_CONTROL_TAGS", "CONTROL_SELECTOR", "RUI_CONTROL_ATTR", "RuiTextarea", "props", "size", "className", "rows", "host", "jsx", "RUI_CONTROL_ATTR", "cx", "attachRadiantStylesheets"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as j,jsxs as Yt}from"@ecopages/jsx/jsx-runtime";import{RadiantElement as Ct,bound as qt,customElement as Ut,onUpdated as Nt,prop as L,state as xt}from"@ecopages/radiant";function ot(i){return i.split(",").map(t=>t.trim()).filter(t=>t.length>0)}function st(i,t){try{return i.querySelector(t)}catch{return null}}function lt(i,t){try{return Array.from(i.querySelectorAll(t))}catch{return[]}}function jt(i){return i.trim().toLowerCase().replace(/\s+/g,"-").replace(/[^\w-]/g,"")}function at(i,t,e=n=>document.getElementById(n)!==null){if(i.id)return t.add(i.id),i.id;let n=jt(i.textContent||"")||"section",s=n,d=2;for(;t.has(s)||e(s);)s=`${n}-${d}`,d+=1;return i.id=s,t.add(s),s}function ct(i,t){return i instanceof HTMLElement?i.getBoundingClientRect().top+t:t}function ut(i,t,e,n){if(t instanceof HTMLElement){let s=t.getBoundingClientRect(),d=i.getBoundingClientRect();t.scrollTo({top:t.scrollTop+(d.top-s.top)-e,behavior:n});return}window.scrollTo({top:window.scrollY+i.getBoundingClientRect().top-e,behavior:n})}var dt,ht,ft,gt,pt,mt,vt,_t,wt,bt,yt,St,Tt,Et,It,Rt;function Dt(i,t,e,n,s,d){var y,a,V,B,C,M,E,z=Symbol.metadata||Symbol.for("Symbol.metadata"),P=Object.defineProperty,Y=Object.create,W=[Y(null),Y(null)],X=t.length;function x(r,p,f){return function(o,l){p&&(l=o,o=i);for(var m=0;m<r.length;m++)l=r[m].apply(o,f?[l]:[]);return f?l:o}}function w(r,p,f,o){if(typeof r!="function"&&(o||r!==void 0))throw new TypeError(p+" must "+(f||"be")+" a function"+(o?"":" or undefined"));return r}function G(r,p,f,o,l,m,S,g,v,_,Q){function q(u){if(!Q(u))throw new TypeError("Attempted to access private element on non-instance")}var U=[].concat(p[0]),Z=p[3],N=!S,I=l===1,F=l===3,tt=l===4,A=l===2;function k(u,T,nt){return function(O,rt){return T&&(rt=O,O=r),nt&&nt(O),c[u].call(O,rt)}}if(!N){var c={},$=[],b=F?"get":tt||I?"set":"value";if(v?(_||I?c={get:Lt(function(){return Z(this)},o,"get"),set:function(u){p[4](this,u)}}:c[b]=Z,_||Lt(c[b],o,A?"":b)):_||(c=Object.getOwnPropertyDescriptor(r,o)),!_&&!v){if((a=W[+g][o])&&(a^l)!==7)throw Error("Decorating two elements with the same name ("+c[b].name+") is not supported yet");W[+g][o]=l<3?1:l}}for(var h=r,H=U.length-1;H>=0;H-=f?2:1){var et=w(U[H],"A decorator","be",!0),it=f?U[H-1]:void 0,K={},R={kind:["field","accessor","method","getter","setter","class"][l],name:o,metadata:y,addInitializer:function(u,T){if(u.v)throw new TypeError("attempted to call addInitializer after decoration was finished");w(T,"An initializer","be",!0),m.push(T)}.bind(null,K)};if(N)a=et.call(it,h,R),K.v=1,w(a,"class decorators","return")&&(h=a);else if(R.static=g,R.private=v,a=R.access={has:v?Q.bind():function(u){return o in u}},tt||(a.get=v?A?function(u){return q(u),c.value}:k("get",0,q):function(u){return u[o]}),A||F||(a.set=v?k("set",0,q):function(u,T){u[o]=T}),h=et.call(it,I?{get:c.get,set:c.set}:c[b],R),K.v=1,I){if(typeof h=="object"&&h)(a=w(h.get,"accessor.get"))&&(c.get=a),(a=w(h.set,"accessor.set"))&&(c.set=a),(a=w(h.init,"accessor.init"))&&$.unshift(a);else if(h!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else w(h,(_?"field":"method")+" decorators","return")&&(_?$.unshift(h):c[b]=h)}return l<2&&S.push(x($,g,1),x(m,g,0)),_||N||(v?I?S.splice(-1,0,k("get",g),k("set",g)):S.push(A?c[b]:w.call.bind(c[b])):P(r,o,c)),h}function J(r){return P(r,z,{configurable:!0,enumerable:!0,value:y})}return d!==void 0&&(y=d[z]),y=Y(y??null),C=[],M=function(r){r&&C.push(x(r))},E=function(r,p){for(var f=0;f<e.length;f++){var o=e[f],l=o[1],m=7&l;if((8&l)==r&&!m==p){var S=o[2],g=!!o[3],v=16&l;G(r?i:i.prototype,o,v,g?"#"+S:Vt(S),m,m<2?[]:r?B=B||[]:V=V||[],C,!!r,g,p,r&&g?function(_){return Mt(_)===i}:s)}}},E(8,0),E(0,0),E(8,1),E(0,1),M(V),M(B),a=C,X||J(i),{e:a,get c(){var r=[];return X&&[J(i=G(i,[t],n,i.name,5,r)),x(r,1)]}}}function Vt(i){var t=Bt(i,"string");return typeof t=="symbol"?t:t+""}function Bt(i,t){if(typeof i!="object"||!i)return i;var e=i[Symbol.toPrimitive];if(e!==void 0){var n=e.call(i,t||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(i)}function Lt(i,t,e){typeof t=="symbol"&&(t=(t=t.description)?"["+t+"]":"");try{Object.defineProperty(i,"name",{configurable:!0,value:e?e+" "+t:t})}catch{}return i}function Mt(i){if(Object(i)!==i)throw TypeError("right-hand side of 'in' should be an object, got "+(i!==null?typeof i:"null"));return i}var D,At=class extends Ct{static{({e:[ft,gt,pt,mt,vt,_t,wt,bt,yt,St,Tt,Et,It,Rt,dt],c:[D,ht]}=Dt(this,[Ut("rui-toc")],[[L({type:String,defaultValue:""}),0,"target"],[L({type:String,attribute:"heading-selector",defaultValue:"h2,h3"}),0,"headingSelector"],[L({type:String,defaultValue:"On this page"}),0,"label"],[L({type:Number,attribute:"scroll-offset",defaultValue:120}),0,"scrollOffset"],[L({type:String,attribute:"navigation-events",defaultValue:""}),0,"navigationEvents"],[xt,0,"entries"],[xt,0,"activeId"],[Nt(["target","headingSelector","scrollOffset","navigationEvents"]),2,"onScanSettingsUpdated"],[qt,2,"onLinkClick"]],0,void 0,Ct))}target=(dt(this),ft(this,""));headingSelector=(gt(this),pt(this,"h2,h3"));label=(mt(this),vt(this,"On this page"));scrollOffset=(_t(this),wt(this,120));navigationEvents=(bt(this),yt(this,""));entries=(St(this),Tt(this,[]));activeId=(Et(this),It(this,null));headings=(Rt(this),[]);scrollRoot=null;scrollCleanup=null;navigationCleanups=[];pendingScrollTargetId=null;scrollRafPending=!1;scrollOffsetTolerance=4;connectedCallback(){super.connectedCallback(),this.rebuild(),this.attachNavigationListeners()}disconnectedCallback(){this.detachScrollListener(),this.detachNavigationListeners(),super.disconnectedCallback()}onScanSettingsUpdated(){this.detachNavigationListeners(),this.attachNavigationListeners(),this.rebuild()}rebuild(){this.detachScrollListener(),this.headings=[],this.entries=[],this.activeId=null,this.pendingScrollTargetId=null,this.scrollRoot=null;let t=this.resolveTarget();if(!t)return;let e=lt(t,this.headingSelector);if(e.length===0)return;let n=new Set,s=e.map(d=>({id:at(d,n),label:(d.textContent||"").trim(),depth:this.headingDepth(d)}));this.headings=e,this.entries=s,this.scrollRoot=this.resolveScrollRoot(t),this.attachScrollListener(),this.updateActiveHeading()}resolveTarget(){let t=this.target.trim();return t?st(document,t):this.parentElement}resolveScrollRoot(t){let e=t;for(;e&&e!==document.documentElement&&e!==document.body;){let n=getComputedStyle(e).overflowY;if(n==="auto"||n==="scroll"||n==="overlay")return e;e=e.parentElement}return window}headingDepth(t){let e=Number.parseInt(t.tagName.slice(1),10);return Number.isFinite(e)?e:2}attachNavigationListeners(){let t=()=>this.rebuild();for(let e of ot(this.navigationEvents))document.addEventListener(e,t),this.navigationCleanups.push(()=>document.removeEventListener(e,t))}detachNavigationListeners(){for(let t of this.navigationCleanups)t();this.navigationCleanups=[]}attachScrollListener(){let t=()=>{this.scrollRafPending||(this.scrollRafPending=!0,requestAnimationFrame(()=>{this.updateActiveHeading(),this.scrollRafPending=!1}))},e=this.scrollRoot??window;if(e===window){window.addEventListener("scroll",t,{passive:!0}),this.scrollCleanup=()=>window.removeEventListener("scroll",t);return}e.addEventListener("scroll",t,{passive:!0}),this.scrollCleanup=()=>e.removeEventListener("scroll",t)}detachScrollListener(){this.scrollCleanup?.(),this.scrollCleanup=null}isScrollAtBottom(){let t=this.scrollRoot??window;if(!(t instanceof HTMLElement)){let e=document.documentElement.scrollHeight,n=window.innerHeight;return e<=n+1?!1:window.scrollY+n>=e-10}return t.scrollHeight<=t.clientHeight+1?!1:t.scrollTop+t.clientHeight>=t.scrollHeight-10}activeLineY(){return ct(this.scrollRoot??window,this.scrollOffset+this.scrollOffsetTolerance)}updateActiveHeading(){if(this.headings.length===0)return;if(this.isScrollAtBottom()){this.pendingScrollTargetId=null;let n=this.headings[this.headings.length-1]?.id;n&&this.setActiveId(n);return}if(this.pendingScrollTargetId){let n=this.findHeadingById(this.pendingScrollTargetId);if(!n)this.pendingScrollTargetId=null;else if(this.hasPendingScrollReachedTarget(n))this.pendingScrollTargetId=null;else{this.setActiveId(this.pendingScrollTargetId);return}}let t=this.activeLineY(),e=null;for(let n of this.headings)if(n.getBoundingClientRect().top<=t)e=n.id;else break;this.setActiveId(e??this.headings[0].id)}setActiveId(t){this.activeId!==t&&(this.activeId=t)}findHeadingById(t){return this.headings.find(e=>e.id===t)??null}hasPendingScrollReachedTarget(t){return t.getBoundingClientRect().top<=this.activeLineY()}onLinkClick(t,e){let n=t;if(n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.button!==0)return;let s=this.findHeadingById(e);s&&(t.preventDefault(),this.pendingScrollTargetId=e,this.setActiveId(e),this.scrollToHeading(e,s))}scrollToHeading(t,e){let n=window.matchMedia("(prefers-reduced-motion: reduce)").matches?"auto":"smooth";window.history.replaceState(window.history.state,"",`${window.location.pathname}${window.location.search}#${t}`),ut(e,this.scrollRoot??window,this.scrollOffset,n)}render(){return this.entries.length===0?null:Yt("nav",{class:"rui-toc","aria-label":this.label,children:[this.label?j("p",{class:"rui-toc__label",children:this.label}):null,j("ul",{class:"rui-toc__list",children:this.entries.map(t=>j("li",{class:t.depth>=3?"rui-toc__item rui-toc__item--depth-3":"rui-toc__item",children:j("a",{href:`#${t.id}`,class:t.id===this.activeId?"rui-toc__link rui-toc__link--active":"rui-toc__link","on:click":e=>this.onLinkClick(e,t.id),children:t.label})}))})]})}static{ht()}};import{jsx as zt}from"@ecopages/jsx/jsx-runtime";var $t=Symbol.for("@ecopages/storybook-radiant.viewElement"),kt=Symbol.for("@ecopages/storybook-radiant.scriptModule"),Ht=Symbol.for("@ecopages/storybook-radiant.scriptExport");function Kt(i,t){i[$t]=t;let e=t[kt];e&&(i[kt]=e,i[Ht]=t[Ht]??t.name)}function Ot(i,t,e){let n=s=>t(s);return Kt(n,i),n}var Pt=Ot(D,({target:i,headingSelector:t,label:e,scrollOffset:n,navigationEvents:s,...d})=>zt("rui-toc",{...d,"prop:target":i,"prop:headingSelector":t,"prop:label":e,"prop:scrollOffset":n,"prop:navigationEvents":s}),{stylesheets:["./toc.css"]});export{Pt as RuiToc,D as RuiTocElement};
|
|
1
|
+
import{jsx as j,jsxs as qt}from"@ecopages/jsx/jsx-runtime";import{RadiantElement as Lt,bound as Ut,customElement as Nt,onUpdated as $t,prop as C,state as xt}from"@ecopages/radiant";import{isServer as At}from"@ecopages/radiant/is-server";function ot(i){return i.split(",").map(t=>t.trim()).filter(t=>t.length>0)}function st(i,t){try{return i.querySelector(t)}catch{return null}}function lt(i,t){try{return Array.from(i.querySelectorAll(t))}catch{return[]}}function Dt(i){return i.trim().toLowerCase().replace(/\s+/g,"-").replace(/[^\w-]/g,"")}function at(i,t,e=n=>document.getElementById(n)!==null){if(i.id)return t.add(i.id),i.id;let n=Dt(i.textContent||"")||"section",s=n,d=2;for(;t.has(s)||e(s);)s=`${n}-${d}`,d+=1;return i.id=s,t.add(s),s}function ct(i,t){return i instanceof HTMLElement?i.getBoundingClientRect().top+t:t}function ut(i,t,e,n){if(t instanceof HTMLElement){let s=t.getBoundingClientRect(),d=i.getBoundingClientRect();t.scrollTo({top:t.scrollTop+(d.top-s.top)-e,behavior:n});return}window.scrollTo({top:window.scrollY+i.getBoundingClientRect().top-e,behavior:n})}var dt,ht,ft,gt,pt,mt,vt,_t,wt,bt,yt,St,Tt,Et,It,Rt;function Vt(i,t,e,n,s,d){var y,a,V,B,L,M,E,z=Symbol.metadata||Symbol.for("Symbol.metadata"),P=Object.defineProperty,Y=Object.create,W=[Y(null),Y(null)],X=t.length;function x(r,p,f){return function(o,l){p&&(l=o,o=i);for(var m=0;m<r.length;m++)l=r[m].apply(o,f?[l]:[]);return f?l:o}}function w(r,p,f,o){if(typeof r!="function"&&(o||r!==void 0))throw new TypeError(p+" must "+(f||"be")+" a function"+(o?"":" or undefined"));return r}function G(r,p,f,o,l,m,S,g,v,_,Q){function q(u){if(!Q(u))throw new TypeError("Attempted to access private element on non-instance")}var U=[].concat(p[0]),Z=p[3],N=!S,I=l===1,F=l===3,tt=l===4,A=l===2;function k(u,T,nt){return function(O,rt){return T&&(rt=O,O=r),nt&&nt(O),c[u].call(O,rt)}}if(!N){var c={},$=[],b=F?"get":tt||I?"set":"value";if(v?(_||I?c={get:Ct(function(){return Z(this)},o,"get"),set:function(u){p[4](this,u)}}:c[b]=Z,_||Ct(c[b],o,A?"":b)):_||(c=Object.getOwnPropertyDescriptor(r,o)),!_&&!v){if((a=W[+g][o])&&(a^l)!==7)throw Error("Decorating two elements with the same name ("+c[b].name+") is not supported yet");W[+g][o]=l<3?1:l}}for(var h=r,H=U.length-1;H>=0;H-=f?2:1){var et=w(U[H],"A decorator","be",!0),it=f?U[H-1]:void 0,K={},R={kind:["field","accessor","method","getter","setter","class"][l],name:o,metadata:y,addInitializer:function(u,T){if(u.v)throw new TypeError("attempted to call addInitializer after decoration was finished");w(T,"An initializer","be",!0),m.push(T)}.bind(null,K)};if(N)a=et.call(it,h,R),K.v=1,w(a,"class decorators","return")&&(h=a);else if(R.static=g,R.private=v,a=R.access={has:v?Q.bind():function(u){return o in u}},tt||(a.get=v?A?function(u){return q(u),c.value}:k("get",0,q):function(u){return u[o]}),A||F||(a.set=v?k("set",0,q):function(u,T){u[o]=T}),h=et.call(it,I?{get:c.get,set:c.set}:c[b],R),K.v=1,I){if(typeof h=="object"&&h)(a=w(h.get,"accessor.get"))&&(c.get=a),(a=w(h.set,"accessor.set"))&&(c.set=a),(a=w(h.init,"accessor.init"))&&$.unshift(a);else if(h!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else w(h,(_?"field":"method")+" decorators","return")&&(_?$.unshift(h):c[b]=h)}return l<2&&S.push(x($,g,1),x(m,g,0)),_||N||(v?I?S.splice(-1,0,k("get",g),k("set",g)):S.push(A?c[b]:w.call.bind(c[b])):P(r,o,c)),h}function J(r){return P(r,z,{configurable:!0,enumerable:!0,value:y})}return d!==void 0&&(y=d[z]),y=Y(y??null),L=[],M=function(r){r&&L.push(x(r))},E=function(r,p){for(var f=0;f<e.length;f++){var o=e[f],l=o[1],m=7&l;if((8&l)==r&&!m==p){var S=o[2],g=!!o[3],v=16&l;G(r?i:i.prototype,o,v,g?"#"+S:Bt(S),m,m<2?[]:r?B=B||[]:V=V||[],L,!!r,g,p,r&&g?function(_){return Yt(_)===i}:s)}}},E(8,0),E(0,0),E(8,1),E(0,1),M(V),M(B),a=L,X||J(i),{e:a,get c(){var r=[];return X&&[J(i=G(i,[t],n,i.name,5,r)),x(r,1)]}}}function Bt(i){var t=Mt(i,"string");return typeof t=="symbol"?t:t+""}function Mt(i,t){if(typeof i!="object"||!i)return i;var e=i[Symbol.toPrimitive];if(e!==void 0){var n=e.call(i,t||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(i)}function Ct(i,t,e){typeof t=="symbol"&&(t=(t=t.description)?"["+t+"]":"");try{Object.defineProperty(i,"name",{configurable:!0,value:e?e+" "+t:t})}catch{}return i}function Yt(i){if(Object(i)!==i)throw TypeError("right-hand side of 'in' should be an object, got "+(i!==null?typeof i:"null"));return i}var D,kt=class extends Lt{static{({e:[ft,gt,pt,mt,vt,_t,wt,bt,yt,St,Tt,Et,It,Rt,dt],c:[D,ht]}=Vt(this,[Nt("rui-toc")],[[C({type:String,defaultValue:""}),0,"target"],[C({type:String,attribute:"heading-selector",defaultValue:"h2,h3"}),0,"headingSelector"],[C({type:String,defaultValue:"On this page"}),0,"label"],[C({type:Number,attribute:"scroll-offset",defaultValue:120}),0,"scrollOffset"],[C({type:String,attribute:"navigation-events",defaultValue:""}),0,"navigationEvents"],[xt,0,"entries"],[xt,0,"activeId"],[$t(["target","headingSelector","scrollOffset","navigationEvents"]),2,"onScanSettingsUpdated"],[Ut,2,"onLinkClick"]],0,void 0,Lt))}target=(dt(this),ft(this,""));headingSelector=(gt(this),pt(this,"h2,h3"));label=(mt(this),vt(this,"On this page"));scrollOffset=(_t(this),wt(this,120));navigationEvents=(bt(this),yt(this,""));entries=(St(this),Tt(this,[]));activeId=(Et(this),It(this,null));headings=(Rt(this),[]);scrollRoot=null;scrollCleanup=null;navigationCleanups=[];pendingScrollTargetId=null;scrollRafPending=!1;scrollOffsetTolerance=4;connectedCallback(){super.connectedCallback(),this.rebuild(),this.attachNavigationListeners()}disconnectedCallback(){this.detachScrollListener(),this.detachNavigationListeners(),super.disconnectedCallback()}onScanSettingsUpdated(){this.detachNavigationListeners(),this.attachNavigationListeners(),this.rebuild()}rebuild(){this.detachScrollListener(),this.headings=[],this.entries=[],this.activeId=null,this.pendingScrollTargetId=null,this.scrollRoot=null;let t=this.resolveTarget();if(!t)return;let e=lt(t,this.headingSelector);if(e.length===0)return;let n=new Set,s=e.map(d=>({id:at(d,n),label:(d.textContent||"").trim(),depth:this.headingDepth(d)}));this.headings=e,this.entries=s,this.scrollRoot=this.resolveScrollRoot(t),this.attachScrollListener(),this.updateActiveHeading()}resolveTarget(){let t=this.target.trim();return t?st(document,t):this.parentElement}resolveScrollRoot(t){let e=t;for(;e&&e!==document.documentElement&&e!==document.body;){let n=getComputedStyle(e).overflowY;if(n==="auto"||n==="scroll"||n==="overlay")return e;e=e.parentElement}return window}headingDepth(t){let e=Number.parseInt(t.tagName.slice(1),10);return Number.isFinite(e)?e:2}attachNavigationListeners(){if(At||!this.isConnected)return;let t=()=>this.rebuild();for(let e of ot(this.navigationEvents))document.addEventListener(e,t),this.navigationCleanups.push(()=>document.removeEventListener(e,t))}detachNavigationListeners(){for(let t of this.navigationCleanups)t();this.navigationCleanups=[]}attachScrollListener(){if(At||!this.isConnected)return;let t=()=>{this.scrollRafPending||(this.scrollRafPending=!0,requestAnimationFrame(()=>{this.updateActiveHeading(),this.scrollRafPending=!1}))},e=this.scrollRoot??window;if(e===window){window.addEventListener("scroll",t,{passive:!0}),this.scrollCleanup=()=>window.removeEventListener("scroll",t);return}e.addEventListener("scroll",t,{passive:!0}),this.scrollCleanup=()=>e.removeEventListener("scroll",t)}detachScrollListener(){this.scrollCleanup?.(),this.scrollCleanup=null}isScrollAtBottom(){let t=this.scrollRoot??window;if(!(t instanceof HTMLElement)){let e=document.documentElement.scrollHeight,n=window.innerHeight;return e<=n+1?!1:window.scrollY+n>=e-10}return t.scrollHeight<=t.clientHeight+1?!1:t.scrollTop+t.clientHeight>=t.scrollHeight-10}activeLineY(){return ct(this.scrollRoot??window,this.scrollOffset+this.scrollOffsetTolerance)}updateActiveHeading(){if(this.headings.length===0)return;if(this.isScrollAtBottom()){this.pendingScrollTargetId=null;let n=this.headings[this.headings.length-1]?.id;n&&this.setActiveId(n);return}if(this.pendingScrollTargetId){let n=this.findHeadingById(this.pendingScrollTargetId);if(!n)this.pendingScrollTargetId=null;else if(this.hasPendingScrollReachedTarget(n))this.pendingScrollTargetId=null;else{this.setActiveId(this.pendingScrollTargetId);return}}let t=this.activeLineY(),e=null;for(let n of this.headings)if(n.getBoundingClientRect().top<=t)e=n.id;else break;this.setActiveId(e??this.headings[0].id)}setActiveId(t){this.activeId!==t&&(this.activeId=t)}findHeadingById(t){return this.headings.find(e=>e.id===t)??null}hasPendingScrollReachedTarget(t){return t.getBoundingClientRect().top<=this.activeLineY()}onLinkClick(t,e){let n=t;if(n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.button!==0)return;let s=this.findHeadingById(e);s&&(t.preventDefault(),this.pendingScrollTargetId=e,this.setActiveId(e),this.scrollToHeading(e,s))}scrollToHeading(t,e){let n=window.matchMedia("(prefers-reduced-motion: reduce)").matches?"auto":"smooth";window.history.replaceState(window.history.state,"",`${window.location.pathname}${window.location.search}#${t}`),ut(e,this.scrollRoot??window,this.scrollOffset,n)}render(){return this.entries.length===0?null:qt("nav",{class:"rui-toc","aria-label":this.label,children:[this.label?j("p",{class:"rui-toc__label",children:this.label}):null,j("ul",{class:"rui-toc__list",children:this.entries.map(t=>j("li",{class:t.depth>=3?"rui-toc__item rui-toc__item--depth-3":"rui-toc__item",children:j("a",{href:`#${t.id}`,class:t.id===this.activeId?"rui-toc__link rui-toc__link--active":"rui-toc__link","on:click":e=>this.onLinkClick(e,t.id),children:t.label})}))})]})}static{ht()}};import{jsx as Pt}from"@ecopages/jsx/jsx-runtime";var Kt=Symbol.for("@ecopages/storybook-radiant.viewElement"),Ht=Symbol.for("@ecopages/storybook-radiant.scriptModule"),Ot=Symbol.for("@ecopages/storybook-radiant.scriptExport");function zt(i,t){i[Kt]=t;let e=t[Ht];e&&(i[Ht]=e,i[Ot]=t[Ot]??t.name)}function jt(i,t,e){let n=s=>t(s);return zt(n,i),n}var Wt=jt(D,({target:i,headingSelector:t,label:e,scrollOffset:n,navigationEvents:s,...d})=>Pt("rui-toc",{...d,"prop:target":i,"prop:headingSelector":t,"prop:label":e,"prop:scrollOffset":n,"prop:navigationEvents":s}),{stylesheets:["./toc.css"]});export{Wt as RuiToc,D as RuiTocElement};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/components/ui/toc/toc.script.tsx", "../../../../src/lib/comma-separated.ts", "../../../../src/components/ui/toc/toc-helpers.ts", "../../../../src/components/ui/toc/toc.tsx", "../../../../src/lib/radiant-view.ts"],
|
|
4
|
-
"sourcesContent": ["let _initProto, _initClass, _init_target, _init_extra_target, _init_headingSelector, _init_extra_headingSelector, _init_label, _init_extra_label, _init_scrollOffset, _init_extra_scrollOffset, _init_navigationEvents, _init_extra_navigationEvents, _init_entries, _init_extra_entries, _init_activeId, _init_extra_activeId;\nfunction _applyDecs(e, t, n, r, o, i) { var a, c, u, s, f, l, p, d = Symbol.metadata || Symbol.for(\"Symbol.metadata\"), m = Object.defineProperty, h = Object.create, y = [h(null), h(null)], v = t.length; function g(t, n, r) { return function (o, i) { n && (i = o, o = e); for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []); return r ? i : o; }; } function b(e, t, n, r) { if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\")); return e; } function applyDec(e, t, n, r, o, i, u, s, f, l, p) { function d(e) { if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\"); } var h = [].concat(t[0]), v = t[3], w = !u, D = 1 === o, S = 3 === o, j = 4 === o, E = 2 === o; function I(t, n, r) { return function (o, i) { return n && (i = o, o = e), r && r(o), P[t].call(o, i); }; } if (!w) { var P = {}, k = [], F = S ? \"get\" : j || D ? \"set\" : \"value\"; if (f ? (l || D ? P = { get: _setFunctionName(function () { return v(this); }, r, \"get\"), set: function (e) { t[4](this, e); } } : P[F] = v, l || _setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) { if ((c = y[+s][r]) && 7 !== (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\"); y[+s][r] = o < 3 ? 1 : o; } } for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) { var T = b(h[O], \"A decorator\", \"be\", !0), z = n ? h[O - 1] : void 0, A = {}, H = { kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o], name: r, metadata: a, addInitializer: function (e, t) { if (e.v) throw new TypeError(\"attempted to call addInitializer after decoration was finished\"); b(t, \"An initializer\", \"be\", !0), i.push(t); }.bind(null, A) }; if (w) c = T.call(z, N, H), A.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (H.static = s, H.private = f, c = H.access = { has: f ? p.bind() : function (e) { return r in e; } }, j || (c.get = f ? E ? function (e) { return d(e), P.value; } : I(\"get\", 0, d) : function (e) { return e[r]; }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) { e[r] = t; }), N = T.call(z, D ? { get: P.get, set: P.set } : P[F], H), A.v = 1, D) { if (\"object\" == typeof N && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\"); } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N); } return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N; } function w(e) { return m(e, d, { configurable: !0, enumerable: !0, value: a }); } return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function (e) { e && f.push(g(e)); }, p = function (t, r) { for (var i = 0; i < n.length; i++) { var a = n[i], c = a[1], l = 7 & c; if ((8 & c) == t && !l == r) { var p = a[2], d = !!a[3], m = 16 & c; applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : _toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) { return _checkInRHS(t) === e; } : o); } } }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), { e: c, get c() { var n = []; return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)]; } }; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _setFunctionName(e, t, n) { \"symbol\" == typeof t && (t = (t = t.description) ? \"[\" + t + \"]\" : \"\"); try { Object.defineProperty(e, \"name\", { configurable: !0, value: n ? n + \" \" + t : t }); } catch (e) {} return e; }\nfunction _checkInRHS(e) { if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? typeof e : \"null\")); return e; }\nimport { jsx, jsxs } from \"@ecopages/jsx/jsx-runtime\";\nimport { RadiantElement, bound, customElement, onUpdated, prop, state } from \"@ecopages/radiant\";\nimport { parseCommaSeparated } from \"@/lib/comma-separated\";\nimport { ensureUniqueHeadingId, querySelectorAllSafe, querySelectorSafe, scrollHeadingIntoView, trackingLineY } from \"./toc-helpers\";\nlet _RuiToc;\nclass RuiToc extends RadiantElement {\n static {\n ({\n e: [_init_target, _init_extra_target, _init_headingSelector, _init_extra_headingSelector, _init_label, _init_extra_label, _init_scrollOffset, _init_extra_scrollOffset, _init_navigationEvents, _init_extra_navigationEvents, _init_entries, _init_extra_entries, _init_activeId, _init_extra_activeId, _initProto],\n c: [_RuiToc, _initClass]\n } = _applyDecs(this, [customElement(\"rui-toc\")], [[prop({\n type: String,\n defaultValue: \"\"\n }), 0, \"target\"], [prop({\n type: String,\n attribute: \"heading-selector\",\n defaultValue: \"h2,h3\"\n }), 0, \"headingSelector\"], [prop({\n type: String,\n defaultValue: \"On this page\"\n }), 0, \"label\"], [prop({\n type: Number,\n attribute: \"scroll-offset\",\n defaultValue: 120\n }), 0, \"scrollOffset\"], [prop({\n type: String,\n attribute: \"navigation-events\",\n defaultValue: \"\"\n }), 0, \"navigationEvents\"], [state, 0, \"entries\"], [state, 0, \"activeId\"], [onUpdated([\"target\", \"headingSelector\", \"scrollOffset\", \"navigationEvents\"]), 2, \"onScanSettingsUpdated\"], [bound, 2, \"onLinkClick\"]], 0, void 0, RadiantElement));\n }\n target = (_initProto(this), _init_target(this, \"\"));\n headingSelector = (_init_extra_target(this), _init_headingSelector(this, \"h2,h3\"));\n label = (_init_extra_headingSelector(this), _init_label(this, \"On this page\"));\n scrollOffset = (_init_extra_label(this), _init_scrollOffset(this, 120));\n navigationEvents = (_init_extra_scrollOffset(this), _init_navigationEvents(this, \"\"));\n entries = (_init_extra_navigationEvents(this), _init_entries(this, []));\n activeId = (_init_extra_entries(this), _init_activeId(this, null));\n headings = (_init_extra_activeId(this), []);\n scrollRoot = null;\n scrollCleanup = null;\n navigationCleanups = [];\n pendingScrollTargetId = null;\n scrollRafPending = false;\n scrollOffsetTolerance = 4;\n connectedCallback() {\n super.connectedCallback();\n this.rebuild();\n this.attachNavigationListeners();\n }\n disconnectedCallback() {\n this.detachScrollListener();\n this.detachNavigationListeners();\n super.disconnectedCallback();\n }\n onScanSettingsUpdated() {\n this.detachNavigationListeners();\n this.attachNavigationListeners();\n this.rebuild();\n }\n rebuild() {\n this.detachScrollListener();\n this.headings = [];\n this.entries = [];\n this.activeId = null;\n this.pendingScrollTargetId = null;\n this.scrollRoot = null;\n const root = this.resolveTarget();\n if (!root) {\n return;\n }\n const headings = querySelectorAllSafe(root, this.headingSelector);\n if (headings.length === 0) {\n return;\n }\n const usedIds = /* @__PURE__ */new Set();\n const entries = headings.map(heading => {\n const id = ensureUniqueHeadingId(heading, usedIds);\n return {\n id,\n label: (heading.textContent || \"\").trim(),\n depth: this.headingDepth(heading)\n };\n });\n this.headings = headings;\n this.entries = entries;\n this.scrollRoot = this.resolveScrollRoot(root);\n this.attachScrollListener();\n this.updateActiveHeading();\n }\n resolveTarget() {\n const selector = this.target.trim();\n if (selector) {\n return querySelectorSafe(document, selector);\n }\n return this.parentElement;\n }\n /**\n * Nearest ancestor (including the target) that scrolls vertically, else `window`.\n */\n resolveScrollRoot(from) {\n let node = from;\n while (node && node !== document.documentElement && node !== document.body) {\n const overflowY = getComputedStyle(node).overflowY;\n if (overflowY === \"auto\" || overflowY === \"scroll\" || overflowY === \"overlay\") {\n return node;\n }\n node = node.parentElement;\n }\n return window;\n }\n headingDepth(heading) {\n const level = Number.parseInt(heading.tagName.slice(1), 10);\n return Number.isFinite(level) ? level : 2;\n }\n attachNavigationListeners() {\n const handler = () => this.rebuild();\n for (const eventName of parseCommaSeparated(this.navigationEvents)) {\n document.addEventListener(eventName, handler);\n this.navigationCleanups.push(() => document.removeEventListener(eventName, handler));\n }\n }\n detachNavigationListeners() {\n for (const cleanup of this.navigationCleanups) {\n cleanup();\n }\n this.navigationCleanups = [];\n }\n attachScrollListener() {\n const onScroll = () => {\n if (this.scrollRafPending) {\n return;\n }\n this.scrollRafPending = true;\n requestAnimationFrame(() => {\n this.updateActiveHeading();\n this.scrollRafPending = false;\n });\n };\n const root = this.scrollRoot ?? window;\n if (root === window) {\n window.addEventListener(\"scroll\", onScroll, {\n passive: true\n });\n this.scrollCleanup = () => window.removeEventListener(\"scroll\", onScroll);\n return;\n }\n root.addEventListener(\"scroll\", onScroll, {\n passive: true\n });\n this.scrollCleanup = () => root.removeEventListener(\"scroll\", onScroll);\n }\n detachScrollListener() {\n this.scrollCleanup?.();\n this.scrollCleanup = null;\n }\n isScrollAtBottom() {\n const root = this.scrollRoot ?? window;\n if (!(root instanceof HTMLElement)) {\n const scrollHeight = document.documentElement.scrollHeight;\n const viewport = window.innerHeight;\n if (scrollHeight <= viewport + 1) {\n return false;\n }\n return window.scrollY + viewport >= scrollHeight - 10;\n }\n if (root.scrollHeight <= root.clientHeight + 1) {\n return false;\n }\n return root.scrollTop + root.clientHeight >= root.scrollHeight - 10;\n }\n activeLineY() {\n return trackingLineY(this.scrollRoot ?? window, this.scrollOffset + this.scrollOffsetTolerance);\n }\n updateActiveHeading() {\n if (this.headings.length === 0) {\n return;\n }\n if (this.isScrollAtBottom()) {\n this.pendingScrollTargetId = null;\n const lastId = this.headings[this.headings.length - 1]?.id;\n if (lastId) {\n this.setActiveId(lastId);\n }\n return;\n }\n if (this.pendingScrollTargetId) {\n const pendingHeading = this.findHeadingById(this.pendingScrollTargetId);\n if (!pendingHeading) {\n this.pendingScrollTargetId = null;\n } else if (!this.hasPendingScrollReachedTarget(pendingHeading)) {\n this.setActiveId(this.pendingScrollTargetId);\n return;\n } else {\n this.pendingScrollTargetId = null;\n }\n }\n const lineY = this.activeLineY();\n let activeId = null;\n for (const heading of this.headings) {\n if (heading.getBoundingClientRect().top <= lineY) {\n activeId = heading.id;\n } else {\n break;\n }\n }\n this.setActiveId(activeId ?? this.headings[0].id);\n }\n setActiveId(id) {\n if (this.activeId === id) {\n return;\n }\n this.activeId = id;\n }\n findHeadingById(id) {\n return this.headings.find(heading => heading.id === id) ?? null;\n }\n hasPendingScrollReachedTarget(heading) {\n return heading.getBoundingClientRect().top <= this.activeLineY();\n }\n onLinkClick(event, id) {\n const mouseEvent = event;\n if (mouseEvent.metaKey || mouseEvent.ctrlKey || mouseEvent.shiftKey || mouseEvent.altKey || mouseEvent.button !== 0) {\n return;\n }\n const heading = this.findHeadingById(id);\n if (!heading) {\n return;\n }\n event.preventDefault();\n this.pendingScrollTargetId = id;\n this.setActiveId(id);\n this.scrollToHeading(id, heading);\n }\n scrollToHeading(id, heading) {\n const behavior = window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches ? \"auto\" : \"smooth\";\n window.history.replaceState(window.history.state, \"\", `${window.location.pathname}${window.location.search}#${id}`);\n scrollHeadingIntoView(heading, this.scrollRoot ?? window, this.scrollOffset, behavior);\n }\n render() {\n if (this.entries.length === 0) {\n return null;\n }\n return /* @__PURE__ */jsxs(\"nav\", {\n class: \"rui-toc\",\n \"aria-label\": this.label,\n children: [this.label ? /* @__PURE__ */jsx(\"p\", {\n class: \"rui-toc__label\",\n children: this.label\n }) : null, /* @__PURE__ */jsx(\"ul\", {\n class: \"rui-toc__list\",\n children: this.entries.map(entry => /* @__PURE__ */jsx(\"li\", {\n class: entry.depth >= 3 ? \"rui-toc__item rui-toc__item--depth-3\" : \"rui-toc__item\",\n children: /* @__PURE__ */jsx(\"a\", {\n href: `#${entry.id}`,\n class: entry.id === this.activeId ? \"rui-toc__link rui-toc__link--active\" : \"rui-toc__link\",\n \"on:click\": event => this.onLinkClick(event, entry.id),\n children: entry.label\n })\n }))\n })]\n });\n }\n static {\n _initClass();\n }\n}\nexport { _RuiToc as RuiToc };", "export function parseCommaSeparated(value) {\n return value.split(\",\").map(name => name.trim()).filter(name => name.length > 0);\n}", "export function querySelectorSafe(root, selector) {\n try {\n return root.querySelector(selector);\n } catch {\n return null;\n }\n}\nexport function querySelectorAllSafe(root, selector) {\n try {\n return Array.from(root.querySelectorAll(selector));\n } catch {\n return [];\n }\n}\nexport function slugifyHeadingText(text) {\n return text.trim().toLowerCase().replace(/\\s+/g, \"-\").replace(/[^\\w-]/g, \"\");\n}\nexport function ensureUniqueHeadingId(heading, usedIds, isTaken = id => document.getElementById(id) !== null) {\n if (heading.id) {\n usedIds.add(heading.id);\n return heading.id;\n }\n const base = slugifyHeadingText(heading.textContent || \"\") || \"section\";\n let id = base;\n let suffix = 2;\n while (usedIds.has(id) || isTaken(id)) {\n id = `${base}-${suffix}`;\n suffix += 1;\n }\n heading.id = id;\n usedIds.add(id);\n return id;\n}\nexport function trackingLineY(scrollRoot, scrollOffset) {\n if (scrollRoot instanceof HTMLElement) {\n return scrollRoot.getBoundingClientRect().top + scrollOffset;\n }\n return scrollOffset;\n}\nexport function scrollHeadingIntoView(heading, scrollRoot, scrollOffset, behavior) {\n if (scrollRoot instanceof HTMLElement) {\n const rootRect = scrollRoot.getBoundingClientRect();\n const headingRect = heading.getBoundingClientRect();\n scrollRoot.scrollTo({\n top: scrollRoot.scrollTop + (headingRect.top - rootRect.top) - scrollOffset,\n behavior\n });\n return;\n }\n window.scrollTo({\n top: window.scrollY + heading.getBoundingClientRect().top - scrollOffset,\n behavior\n });\n}", "import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { defineRadiantView } from \"@/lib/radiant-view\";\nimport { RuiToc as RuiTocElement } from \"./toc.script\";\nexport const RuiToc = defineRadiantView(RuiTocElement, ({\n target,\n headingSelector,\n label,\n scrollOffset,\n navigationEvents,\n ...props\n}) => /* @__PURE__ */jsx(\"rui-toc\", {\n ...props,\n \"prop:target\": target,\n \"prop:headingSelector\": headingSelector,\n \"prop:label\": label,\n \"prop:scrollOffset\": scrollOffset,\n \"prop:navigationEvents\": navigationEvents\n}), {\n stylesheets: [\"./toc.css\"]\n});", "const RADIANT_VIEW_ELEMENT = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.viewElement\");\nconst RADIANT_SCRIPT_MODULE = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.scriptModule\");\nconst RADIANT_SCRIPT_EXPORT = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.scriptExport\");\nconst RADIANT_VIEW_MODULE = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.viewModule\");\nfunction linkViewToElement(view, element) {\n view[RADIANT_VIEW_ELEMENT] = element;\n const ssrModule = element[RADIANT_SCRIPT_MODULE];\n if (ssrModule) {\n view[RADIANT_SCRIPT_MODULE] = ssrModule;\n view[RADIANT_SCRIPT_EXPORT] = element[RADIANT_SCRIPT_EXPORT] ?? element.name;\n }\n}\nexport function defineRadiantView(element, render, _options) {\n const view = args => render(args);\n linkViewToElement(view, element);\n return view;\n}\nexport function attachRadiantStylesheets(target, _stylesheets, moduleUrl) {\n const view = target;\n view[RADIANT_VIEW_MODULE] = moduleUrl;\n return target;\n}\nexport function syncRadiantViewMetadata(view) {\n const element = view[RADIANT_VIEW_ELEMENT];\n if (element) {\n linkViewToElement(view, element);\n }\n}"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["jsx", "jsxs", "RadiantElement", "bound", "customElement", "onUpdated", "prop", "state", "parseCommaSeparated", "value", "name", "querySelectorSafe", "root", "selector", "querySelectorAllSafe", "slugifyHeadingText", "text", "ensureUniqueHeadingId", "heading", "usedIds", "isTaken", "id", "base", "suffix", "trackingLineY", "scrollRoot", "scrollOffset", "scrollHeadingIntoView", "behavior", "rootRect", "headingRect", "_initProto", "_initClass", "_init_target", "_init_extra_target", "_init_headingSelector", "_init_extra_headingSelector", "_init_label", "_init_extra_label", "_init_scrollOffset", "_init_extra_scrollOffset", "_init_navigationEvents", "_init_extra_navigationEvents", "_init_entries", "_init_extra_entries", "_init_activeId", "_init_extra_activeId", "_applyDecs", "e", "n", "r", "o", "i", "a", "c", "u", "s", "f", "l", "p", "d", "m", "h", "y", "v", "g", "t", "b", "applyDec", "w", "D", "S", "j", "E", "I", "P", "k", "F", "_setFunctionName", "N", "O", "T", "z", "A", "H", "_toPropertyKey", "_checkInRHS", "_toPrimitive", "_RuiToc", "RuiToc", "RadiantElement", "customElement", "prop", "state", "onUpdated", "bound", "root", "headings", "querySelectorAllSafe", "usedIds", "entries", "heading", "ensureUniqueHeadingId", "selector", "querySelectorSafe", "from", "node", "overflowY", "level", "handler", "eventName", "parseCommaSeparated", "cleanup", "onScroll", "scrollHeight", "viewport", "trackingLineY", "lastId", "pendingHeading", "lineY", "activeId", "id", "event", "mouseEvent", "behavior", "scrollHeadingIntoView", "jsxs", "jsx", "entry", "jsx", "RADIANT_VIEW_ELEMENT", "RADIANT_SCRIPT_MODULE", "RADIANT_SCRIPT_EXPORT", "linkViewToElement", "view", "element", "RADIANT_VIEW_ELEMENT", "ssrModule", "RADIANT_SCRIPT_MODULE", "RADIANT_SCRIPT_EXPORT", "defineRadiantView", "render", "_options", "args", "RuiToc", "defineRadiantView", "_RuiToc", "target", "headingSelector", "label", "scrollOffset", "navigationEvents", "props", "jsx"]
|
|
4
|
+
"sourcesContent": ["let _initProto, _initClass, _init_target, _init_extra_target, _init_headingSelector, _init_extra_headingSelector, _init_label, _init_extra_label, _init_scrollOffset, _init_extra_scrollOffset, _init_navigationEvents, _init_extra_navigationEvents, _init_entries, _init_extra_entries, _init_activeId, _init_extra_activeId;\nfunction _applyDecs(e, t, n, r, o, i) { var a, c, u, s, f, l, p, d = Symbol.metadata || Symbol.for(\"Symbol.metadata\"), m = Object.defineProperty, h = Object.create, y = [h(null), h(null)], v = t.length; function g(t, n, r) { return function (o, i) { n && (i = o, o = e); for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []); return r ? i : o; }; } function b(e, t, n, r) { if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\")); return e; } function applyDec(e, t, n, r, o, i, u, s, f, l, p) { function d(e) { if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\"); } var h = [].concat(t[0]), v = t[3], w = !u, D = 1 === o, S = 3 === o, j = 4 === o, E = 2 === o; function I(t, n, r) { return function (o, i) { return n && (i = o, o = e), r && r(o), P[t].call(o, i); }; } if (!w) { var P = {}, k = [], F = S ? \"get\" : j || D ? \"set\" : \"value\"; if (f ? (l || D ? P = { get: _setFunctionName(function () { return v(this); }, r, \"get\"), set: function (e) { t[4](this, e); } } : P[F] = v, l || _setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) { if ((c = y[+s][r]) && 7 !== (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\"); y[+s][r] = o < 3 ? 1 : o; } } for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) { var T = b(h[O], \"A decorator\", \"be\", !0), z = n ? h[O - 1] : void 0, A = {}, H = { kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o], name: r, metadata: a, addInitializer: function (e, t) { if (e.v) throw new TypeError(\"attempted to call addInitializer after decoration was finished\"); b(t, \"An initializer\", \"be\", !0), i.push(t); }.bind(null, A) }; if (w) c = T.call(z, N, H), A.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (H.static = s, H.private = f, c = H.access = { has: f ? p.bind() : function (e) { return r in e; } }, j || (c.get = f ? E ? function (e) { return d(e), P.value; } : I(\"get\", 0, d) : function (e) { return e[r]; }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) { e[r] = t; }), N = T.call(z, D ? { get: P.get, set: P.set } : P[F], H), A.v = 1, D) { if (\"object\" == typeof N && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\"); } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N); } return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N; } function w(e) { return m(e, d, { configurable: !0, enumerable: !0, value: a }); } return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function (e) { e && f.push(g(e)); }, p = function (t, r) { for (var i = 0; i < n.length; i++) { var a = n[i], c = a[1], l = 7 & c; if ((8 & c) == t && !l == r) { var p = a[2], d = !!a[3], m = 16 & c; applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : _toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) { return _checkInRHS(t) === e; } : o); } } }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), { e: c, get c() { var n = []; return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)]; } }; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _setFunctionName(e, t, n) { \"symbol\" == typeof t && (t = (t = t.description) ? \"[\" + t + \"]\" : \"\"); try { Object.defineProperty(e, \"name\", { configurable: !0, value: n ? n + \" \" + t : t }); } catch (e) {} return e; }\nfunction _checkInRHS(e) { if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? typeof e : \"null\")); return e; }\nimport { jsx, jsxs } from \"@ecopages/jsx/jsx-runtime\";\nimport { RadiantElement, bound, customElement, onUpdated, prop, state } from \"@ecopages/radiant\";\nimport { isServer } from \"@ecopages/radiant/is-server\";\nimport { parseCommaSeparated } from \"@/lib/comma-separated\";\nimport { ensureUniqueHeadingId, querySelectorAllSafe, querySelectorSafe, scrollHeadingIntoView, trackingLineY } from \"./toc-helpers\";\nlet _RuiToc;\nclass RuiToc extends RadiantElement {\n static {\n ({\n e: [_init_target, _init_extra_target, _init_headingSelector, _init_extra_headingSelector, _init_label, _init_extra_label, _init_scrollOffset, _init_extra_scrollOffset, _init_navigationEvents, _init_extra_navigationEvents, _init_entries, _init_extra_entries, _init_activeId, _init_extra_activeId, _initProto],\n c: [_RuiToc, _initClass]\n } = _applyDecs(this, [customElement(\"rui-toc\")], [[prop({\n type: String,\n defaultValue: \"\"\n }), 0, \"target\"], [prop({\n type: String,\n attribute: \"heading-selector\",\n defaultValue: \"h2,h3\"\n }), 0, \"headingSelector\"], [prop({\n type: String,\n defaultValue: \"On this page\"\n }), 0, \"label\"], [prop({\n type: Number,\n attribute: \"scroll-offset\",\n defaultValue: 120\n }), 0, \"scrollOffset\"], [prop({\n type: String,\n attribute: \"navigation-events\",\n defaultValue: \"\"\n }), 0, \"navigationEvents\"], [state, 0, \"entries\"], [state, 0, \"activeId\"], [onUpdated([\"target\", \"headingSelector\", \"scrollOffset\", \"navigationEvents\"]), 2, \"onScanSettingsUpdated\"], [bound, 2, \"onLinkClick\"]], 0, void 0, RadiantElement));\n }\n target = (_initProto(this), _init_target(this, \"\"));\n headingSelector = (_init_extra_target(this), _init_headingSelector(this, \"h2,h3\"));\n label = (_init_extra_headingSelector(this), _init_label(this, \"On this page\"));\n scrollOffset = (_init_extra_label(this), _init_scrollOffset(this, 120));\n navigationEvents = (_init_extra_scrollOffset(this), _init_navigationEvents(this, \"\"));\n entries = (_init_extra_navigationEvents(this), _init_entries(this, []));\n activeId = (_init_extra_entries(this), _init_activeId(this, null));\n headings = (_init_extra_activeId(this), []);\n scrollRoot = null;\n scrollCleanup = null;\n navigationCleanups = [];\n pendingScrollTargetId = null;\n scrollRafPending = false;\n scrollOffsetTolerance = 4;\n connectedCallback() {\n super.connectedCallback();\n this.rebuild();\n this.attachNavigationListeners();\n }\n disconnectedCallback() {\n this.detachScrollListener();\n this.detachNavigationListeners();\n super.disconnectedCallback();\n }\n onScanSettingsUpdated() {\n this.detachNavigationListeners();\n this.attachNavigationListeners();\n this.rebuild();\n }\n rebuild() {\n this.detachScrollListener();\n this.headings = [];\n this.entries = [];\n this.activeId = null;\n this.pendingScrollTargetId = null;\n this.scrollRoot = null;\n const root = this.resolveTarget();\n if (!root) {\n return;\n }\n const headings = querySelectorAllSafe(root, this.headingSelector);\n if (headings.length === 0) {\n return;\n }\n const usedIds = /* @__PURE__ */new Set();\n const entries = headings.map(heading => {\n const id = ensureUniqueHeadingId(heading, usedIds);\n return {\n id,\n label: (heading.textContent || \"\").trim(),\n depth: this.headingDepth(heading)\n };\n });\n this.headings = headings;\n this.entries = entries;\n this.scrollRoot = this.resolveScrollRoot(root);\n this.attachScrollListener();\n this.updateActiveHeading();\n }\n resolveTarget() {\n const selector = this.target.trim();\n if (selector) {\n return querySelectorSafe(document, selector);\n }\n return this.parentElement;\n }\n /**\n * Nearest ancestor (including the target) that scrolls vertically, else `window`.\n */\n resolveScrollRoot(from) {\n let node = from;\n while (node && node !== document.documentElement && node !== document.body) {\n const overflowY = getComputedStyle(node).overflowY;\n if (overflowY === \"auto\" || overflowY === \"scroll\" || overflowY === \"overlay\") {\n return node;\n }\n node = node.parentElement;\n }\n return window;\n }\n headingDepth(heading) {\n const level = Number.parseInt(heading.tagName.slice(1), 10);\n return Number.isFinite(level) ? level : 2;\n }\n attachNavigationListeners() {\n if (isServer || !this.isConnected) {\n return;\n }\n const handler = () => this.rebuild();\n for (const eventName of parseCommaSeparated(this.navigationEvents)) {\n document.addEventListener(eventName, handler);\n this.navigationCleanups.push(() => document.removeEventListener(eventName, handler));\n }\n }\n detachNavigationListeners() {\n for (const cleanup of this.navigationCleanups) {\n cleanup();\n }\n this.navigationCleanups = [];\n }\n attachScrollListener() {\n if (isServer || !this.isConnected) {\n return;\n }\n const onScroll = () => {\n if (this.scrollRafPending) {\n return;\n }\n this.scrollRafPending = true;\n requestAnimationFrame(() => {\n this.updateActiveHeading();\n this.scrollRafPending = false;\n });\n };\n const root = this.scrollRoot ?? window;\n if (root === window) {\n window.addEventListener(\"scroll\", onScroll, {\n passive: true\n });\n this.scrollCleanup = () => window.removeEventListener(\"scroll\", onScroll);\n return;\n }\n root.addEventListener(\"scroll\", onScroll, {\n passive: true\n });\n this.scrollCleanup = () => root.removeEventListener(\"scroll\", onScroll);\n }\n detachScrollListener() {\n this.scrollCleanup?.();\n this.scrollCleanup = null;\n }\n isScrollAtBottom() {\n const root = this.scrollRoot ?? window;\n if (!(root instanceof HTMLElement)) {\n const scrollHeight = document.documentElement.scrollHeight;\n const viewport = window.innerHeight;\n if (scrollHeight <= viewport + 1) {\n return false;\n }\n return window.scrollY + viewport >= scrollHeight - 10;\n }\n if (root.scrollHeight <= root.clientHeight + 1) {\n return false;\n }\n return root.scrollTop + root.clientHeight >= root.scrollHeight - 10;\n }\n activeLineY() {\n return trackingLineY(this.scrollRoot ?? window, this.scrollOffset + this.scrollOffsetTolerance);\n }\n updateActiveHeading() {\n if (this.headings.length === 0) {\n return;\n }\n if (this.isScrollAtBottom()) {\n this.pendingScrollTargetId = null;\n const lastId = this.headings[this.headings.length - 1]?.id;\n if (lastId) {\n this.setActiveId(lastId);\n }\n return;\n }\n if (this.pendingScrollTargetId) {\n const pendingHeading = this.findHeadingById(this.pendingScrollTargetId);\n if (!pendingHeading) {\n this.pendingScrollTargetId = null;\n } else if (!this.hasPendingScrollReachedTarget(pendingHeading)) {\n this.setActiveId(this.pendingScrollTargetId);\n return;\n } else {\n this.pendingScrollTargetId = null;\n }\n }\n const lineY = this.activeLineY();\n let activeId = null;\n for (const heading of this.headings) {\n if (heading.getBoundingClientRect().top <= lineY) {\n activeId = heading.id;\n } else {\n break;\n }\n }\n this.setActiveId(activeId ?? this.headings[0].id);\n }\n setActiveId(id) {\n if (this.activeId === id) {\n return;\n }\n this.activeId = id;\n }\n findHeadingById(id) {\n return this.headings.find(heading => heading.id === id) ?? null;\n }\n hasPendingScrollReachedTarget(heading) {\n return heading.getBoundingClientRect().top <= this.activeLineY();\n }\n onLinkClick(event, id) {\n const mouseEvent = event;\n if (mouseEvent.metaKey || mouseEvent.ctrlKey || mouseEvent.shiftKey || mouseEvent.altKey || mouseEvent.button !== 0) {\n return;\n }\n const heading = this.findHeadingById(id);\n if (!heading) {\n return;\n }\n event.preventDefault();\n this.pendingScrollTargetId = id;\n this.setActiveId(id);\n this.scrollToHeading(id, heading);\n }\n scrollToHeading(id, heading) {\n const behavior = window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches ? \"auto\" : \"smooth\";\n window.history.replaceState(window.history.state, \"\", `${window.location.pathname}${window.location.search}#${id}`);\n scrollHeadingIntoView(heading, this.scrollRoot ?? window, this.scrollOffset, behavior);\n }\n render() {\n if (this.entries.length === 0) {\n return null;\n }\n return /* @__PURE__ */jsxs(\"nav\", {\n class: \"rui-toc\",\n \"aria-label\": this.label,\n children: [this.label ? /* @__PURE__ */jsx(\"p\", {\n class: \"rui-toc__label\",\n children: this.label\n }) : null, /* @__PURE__ */jsx(\"ul\", {\n class: \"rui-toc__list\",\n children: this.entries.map(entry => /* @__PURE__ */jsx(\"li\", {\n class: entry.depth >= 3 ? \"rui-toc__item rui-toc__item--depth-3\" : \"rui-toc__item\",\n children: /* @__PURE__ */jsx(\"a\", {\n href: `#${entry.id}`,\n class: entry.id === this.activeId ? \"rui-toc__link rui-toc__link--active\" : \"rui-toc__link\",\n \"on:click\": event => this.onLinkClick(event, entry.id),\n children: entry.label\n })\n }))\n })]\n });\n }\n static {\n _initClass();\n }\n}\nexport { _RuiToc as RuiToc };", "export function parseCommaSeparated(value) {\n return value.split(\",\").map(name => name.trim()).filter(name => name.length > 0);\n}", "export function querySelectorSafe(root, selector) {\n try {\n return root.querySelector(selector);\n } catch {\n return null;\n }\n}\nexport function querySelectorAllSafe(root, selector) {\n try {\n return Array.from(root.querySelectorAll(selector));\n } catch {\n return [];\n }\n}\nexport function slugifyHeadingText(text) {\n return text.trim().toLowerCase().replace(/\\s+/g, \"-\").replace(/[^\\w-]/g, \"\");\n}\nexport function ensureUniqueHeadingId(heading, usedIds, isTaken = id => document.getElementById(id) !== null) {\n if (heading.id) {\n usedIds.add(heading.id);\n return heading.id;\n }\n const base = slugifyHeadingText(heading.textContent || \"\") || \"section\";\n let id = base;\n let suffix = 2;\n while (usedIds.has(id) || isTaken(id)) {\n id = `${base}-${suffix}`;\n suffix += 1;\n }\n heading.id = id;\n usedIds.add(id);\n return id;\n}\nexport function trackingLineY(scrollRoot, scrollOffset) {\n if (scrollRoot instanceof HTMLElement) {\n return scrollRoot.getBoundingClientRect().top + scrollOffset;\n }\n return scrollOffset;\n}\nexport function scrollHeadingIntoView(heading, scrollRoot, scrollOffset, behavior) {\n if (scrollRoot instanceof HTMLElement) {\n const rootRect = scrollRoot.getBoundingClientRect();\n const headingRect = heading.getBoundingClientRect();\n scrollRoot.scrollTo({\n top: scrollRoot.scrollTop + (headingRect.top - rootRect.top) - scrollOffset,\n behavior\n });\n return;\n }\n window.scrollTo({\n top: window.scrollY + heading.getBoundingClientRect().top - scrollOffset,\n behavior\n });\n}", "import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { defineRadiantView } from \"@/lib/radiant-view\";\nimport { RuiToc as RuiTocElement } from \"./toc.script\";\nexport const RuiToc = defineRadiantView(RuiTocElement, ({\n target,\n headingSelector,\n label,\n scrollOffset,\n navigationEvents,\n ...props\n}) => /* @__PURE__ */jsx(\"rui-toc\", {\n ...props,\n \"prop:target\": target,\n \"prop:headingSelector\": headingSelector,\n \"prop:label\": label,\n \"prop:scrollOffset\": scrollOffset,\n \"prop:navigationEvents\": navigationEvents\n}), {\n stylesheets: [\"./toc.css\"]\n});", "const RADIANT_VIEW_ELEMENT = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.viewElement\");\nconst RADIANT_SCRIPT_MODULE = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.scriptModule\");\nconst RADIANT_SCRIPT_EXPORT = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.scriptExport\");\nconst RADIANT_VIEW_MODULE = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.viewModule\");\nfunction linkViewToElement(view, element) {\n view[RADIANT_VIEW_ELEMENT] = element;\n const ssrModule = element[RADIANT_SCRIPT_MODULE];\n if (ssrModule) {\n view[RADIANT_SCRIPT_MODULE] = ssrModule;\n view[RADIANT_SCRIPT_EXPORT] = element[RADIANT_SCRIPT_EXPORT] ?? element.name;\n }\n}\nexport function defineRadiantView(element, render, _options) {\n const view = args => render(args);\n linkViewToElement(view, element);\n return view;\n}\nexport function attachRadiantStylesheets(target, _stylesheets, moduleUrl) {\n const view = target;\n view[RADIANT_VIEW_MODULE] = moduleUrl;\n return target;\n}\nexport function syncRadiantViewMetadata(view) {\n const element = view[RADIANT_VIEW_ELEMENT];\n if (element) {\n linkViewToElement(view, element);\n }\n}"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["jsx", "jsxs", "RadiantElement", "bound", "customElement", "onUpdated", "prop", "state", "isServer", "parseCommaSeparated", "value", "name", "querySelectorSafe", "root", "selector", "querySelectorAllSafe", "slugifyHeadingText", "text", "ensureUniqueHeadingId", "heading", "usedIds", "isTaken", "id", "base", "suffix", "trackingLineY", "scrollRoot", "scrollOffset", "scrollHeadingIntoView", "behavior", "rootRect", "headingRect", "_initProto", "_initClass", "_init_target", "_init_extra_target", "_init_headingSelector", "_init_extra_headingSelector", "_init_label", "_init_extra_label", "_init_scrollOffset", "_init_extra_scrollOffset", "_init_navigationEvents", "_init_extra_navigationEvents", "_init_entries", "_init_extra_entries", "_init_activeId", "_init_extra_activeId", "_applyDecs", "e", "n", "r", "o", "i", "a", "c", "u", "s", "f", "l", "p", "d", "m", "h", "y", "v", "g", "t", "b", "applyDec", "w", "D", "S", "j", "E", "I", "P", "k", "F", "_setFunctionName", "N", "O", "T", "z", "A", "H", "_toPropertyKey", "_checkInRHS", "_toPrimitive", "_RuiToc", "RuiToc", "RadiantElement", "customElement", "prop", "state", "onUpdated", "bound", "root", "headings", "querySelectorAllSafe", "usedIds", "entries", "heading", "ensureUniqueHeadingId", "selector", "querySelectorSafe", "from", "node", "overflowY", "level", "isServer", "handler", "eventName", "parseCommaSeparated", "cleanup", "onScroll", "scrollHeight", "viewport", "trackingLineY", "lastId", "pendingHeading", "lineY", "activeId", "id", "event", "mouseEvent", "behavior", "scrollHeadingIntoView", "jsxs", "jsx", "entry", "jsx", "RADIANT_VIEW_ELEMENT", "RADIANT_SCRIPT_MODULE", "RADIANT_SCRIPT_EXPORT", "linkViewToElement", "view", "element", "RADIANT_VIEW_ELEMENT", "ssrModule", "RADIANT_SCRIPT_MODULE", "RADIANT_SCRIPT_EXPORT", "defineRadiantView", "render", "_options", "args", "RuiToc", "defineRadiantView", "_RuiToc", "target", "headingSelector", "label", "scrollOffset", "navigationEvents", "props", "jsx"]
|
|
7
7
|
}
|
|
@@ -64,7 +64,7 @@ rui-toc {
|
|
|
64
64
|
content: '';
|
|
65
65
|
position: absolute;
|
|
66
66
|
top: calc(1 / 2 * 100%);
|
|
67
|
-
left:
|
|
67
|
+
left: -13px;
|
|
68
68
|
height: var(--spacing-3, var(--space-3));
|
|
69
69
|
width: calc(var(--spacing, 0.25rem) * 0.5);
|
|
70
70
|
--tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@ecopages/radiant/server/install-ssr-runtime';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as G,jsxs as Kt}from"@ecopages/jsx/jsx-runtime";import{RadiantElement as _t,bound as Et,customElement as Bt,onEvent as X,onUpdated as Gt,prop as Y,query as Xt}from"@ecopages/radiant";var It="a[href], button, input, select, textarea, [tabindex]";function Ct(t){return!t.hasAttribute("disabled")&&t.getAttribute("tabindex")!=="-1"}function Dt(t){return Array.from(t.querySelectorAll(It)).filter(Ct)}function at(t){return Dt(t)[0]}var Lt={top:"bottom",bottom:"top",left:"right",right:"left"},Mt=8;function Pt(t){let e=t.indexOf("-");if(e===-1)return{side:t,align:"center"};let i=t.slice(0,e),o=t.slice(e+1);return{side:i,align:o==="start"||o==="end"?o:"center"}}function ut(t){return t==="top"||t==="bottom"?"y":"x"}function lt(t,e,i,o,n){let{width:r,height:a}=e,s=0,p=0;switch(i){case"top":p=t.top-a-n;break;case"bottom":p=t.bottom+n;break;case"left":s=t.left-r-n;break;case"right":s=t.right+n;break}return ut(i)==="y"?o==="start"?s=t.left:o==="end"?s=t.right-r:s=t.left+(t.width-r)/2:o==="start"?p=t.top:o==="end"?p=t.bottom-a:p=t.top+(t.height-a)/2,{x:s,y:p}}function kt(t,e,i,o){let{padding:n,width:r,height:a}=o;return i==="top"?Math.max(0,n-t.y):i==="bottom"?Math.max(0,t.y+e.height-(a-n)):i==="left"?Math.max(0,n-t.x):Math.max(0,t.x+e.width-(r-n))}function ct(t,e,i,o){let{padding:n,width:r,height:a}=o;return i==="top"?t.top-n-e.height:i==="bottom"?a-n-e.height-t.bottom:i==="left"?t.left-n-e.width:r-n-e.width-t.right}function jt(t,e){return e==="center"?t:`${t}-${e}`}function Vt(t,e,i,o){let{padding:n,width:r,height:a}=o;if(ut(i)==="y"){let p=Math.max(n,r-n-e.width);return{x:Math.min(Math.max(t.x,n),p),y:t.y}}let s=Math.max(n,a-n-e.height);return{x:t.x,y:Math.min(Math.max(t.y,n),s)}}function Wt(t,e,i,o,n={width:typeof window>"u"?0:window.innerWidth,height:typeof window>"u"?0:window.innerHeight,padding:Mt}){let{side:r,align:a}=Pt(i),s=lt(t,e,r,a,o),p=kt(s,e,r,n),_=r,E=s;if(p>0){let A=Lt[r],F=lt(t,e,A,a,o),C=ct(t,e,r,n);ct(t,e,A,n)>C&&(_=A,E=F)}return{coords:Vt(E,e,_,n),placement:jt(_,a)}}function B(t,e,i,o,n={}){let{coords:r,placement:a}=Wt(t.getBoundingClientRect(),{width:e.offsetWidth,height:e.offsetHeight},i,o);return Object.assign(e.style,{position:"fixed",left:`${r.x}px`,top:`${r.y}px`,right:"auto",bottom:"auto",visibility:"visible"}),n.matchAnchorWidth&&(e.style.width=`${t.offsetWidth}px`),e.setAttribute("data-placement",a),a}function dt({anchor:t,floating:e,getPlacement:i,gap:o,matchAnchorWidth:n}){let r=()=>{e.hidden||B(t,e,i(),o,{matchAnchorWidth:n})};r(),window.addEventListener("resize",r),window.addEventListener("scroll",r,!0);let a=new ResizeObserver(r);return a.observe(t),a.observe(e),()=>{window.removeEventListener("resize",r),window.removeEventListener("scroll",r,!0),a.disconnect()}}var ht,pt,ft,mt,gt,bt,yt,wt,vt,Tt;function Ut(t,e,i,o,n,r){var a,s,p,_,E,A,F,C=Symbol.metadata||Symbol.for("Symbol.metadata"),V=Object.defineProperty,W=Object.create,J=[W(null),W(null)],Q=e.length;function D(l,b,m){return function(c,u){b&&(u=c,c=t);for(var y=0;y<l.length;y++)u=l[y].apply(c,m?[u]:[]);return m?u:c}}function T(l,b,m,c){if(typeof l!="function"&&(c||l!==void 0))throw new TypeError(b+" must "+(m||"be")+" a function"+(c?"":" or undefined"));return l}function Z(l,b,m,c,u,y,S,g,w,v,z){function U(h){if(!z(h))throw new TypeError("Attempted to access private element on non-instance")}var $=[].concat(b[0]),tt=b[3],q=!S,R=u===1,et=u===3,it=u===4,L=u===2;function M(h,O,rt){return function(k,st){return O&&(st=k,k=l),rt&&rt(k),d[h].call(k,st)}}if(!q){var d={},H=[],x=et?"get":it||R?"set":"value";if(w?(v||R?d={get:xt(function(){return tt(this)},c,"get"),set:function(h){b[4](this,h)}}:d[x]=tt,v||xt(d[x],c,L?"":x)):v||(d=Object.getOwnPropertyDescriptor(l,c)),!v&&!w){if((s=J[+g][c])&&(s^u)!==7)throw Error("Decorating two elements with the same name ("+d[x].name+") is not supported yet");J[+g][c]=u<3?1:u}}for(var f=l,P=$.length-1;P>=0;P-=m?2:1){var nt=T($[P],"A decorator","be",!0),ot=m?$[P-1]:void 0,K={},I={kind:["field","accessor","method","getter","setter","class"][u],name:c,metadata:a,addInitializer:function(h,O){if(h.v)throw new TypeError("attempted to call addInitializer after decoration was finished");T(O,"An initializer","be",!0),y.push(O)}.bind(null,K)};if(q)s=nt.call(ot,f,I),K.v=1,T(s,"class decorators","return")&&(f=s);else if(I.static=g,I.private=w,s=I.access={has:w?z.bind():function(h){return c in h}},it||(s.get=w?L?function(h){return U(h),d.value}:M("get",0,U):function(h){return h[c]}),L||et||(s.set=w?M("set",0,U):function(h,O){h[c]=O}),f=nt.call(ot,R?{get:d.get,set:d.set}:d[x],I),K.v=1,R){if(typeof f=="object"&&f)(s=T(f.get,"accessor.get"))&&(d.get=s),(s=T(f.set,"accessor.set"))&&(d.set=s),(s=T(f.init,"accessor.init"))&&H.unshift(s);else if(f!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else T(f,(v?"field":"method")+" decorators","return")&&(v?H.unshift(f):d[x]=f)}return u<2&&S.push(D(H,g,1),D(y,g,0)),v||q||(w?R?S.splice(-1,0,M("get",g),M("set",g)):S.push(L?d[x]:T.call.bind(d[x])):V(l,c,d)),f}function N(l){return V(l,C,{configurable:!0,enumerable:!0,value:a})}return r!==void 0&&(a=r[C]),a=W(a??null),E=[],A=function(l){l&&E.push(D(l))},F=function(l,b){for(var m=0;m<i.length;m++){var c=i[m],u=c[1],y=7&u;if((8&u)==l&&!y==b){var S=c[2],g=!!c[3],w=16&u;Z(l?t:t.prototype,c,w,g?"#"+S:$t(S),y,y<2?[]:l?_=_||[]:p=p||[],E,!!l,g,b,l&&g?function(v){return Ht(v)===t}:n)}}},F(8,0),F(0,0),F(8,1),F(0,1),A(p),A(_),s=E,Q||N(t),{e:s,get c(){var l=[];return Q&&[N(t=Z(t,[e],o,t.name,5,l)),D(l,1)]}}}function $t(t){var e=qt(t,"string");return typeof e=="symbol"?e:e+""}function qt(t,e){if(typeof t!="object"||!t)return t;var i=t[Symbol.toPrimitive];if(i!==void 0){var o=i.call(t,e||"default");if(typeof o!="object")return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function xt(t,e,i){typeof e=="symbol"&&(e=(e=e.description)?"["+e+"]":"");try{Object.defineProperty(t,"name",{configurable:!0,value:i?i+" "+e:e})}catch{}return t}function Ht(t){if(Object(t)!==t)throw TypeError("right-hand side of 'in' should be an object, got "+(t!==null?typeof t:"null"));return t}var At=8,j,Ft=class extends _t{static{({e:[ft,mt,gt,bt,yt,wt,vt,Tt,ht],c:[j,pt]}=Ut(this,[Bt("rui-tooltip")],[[Y({type:String,defaultValue:""}),0,"content"],[Y({type:String,defaultValue:"top"}),0,"placement"],[Y({type:Number,defaultValue:200}),0,"delay"],[Xt({ref:"tooltip"}),0,"tooltipTarget"],[Gt(["content","placement"]),2,"onDescribedPropsUpdated"],[X({document:!0,type:"keydown"}),2,"onDocumentKeydown"],[X({type:"focusin",selector:".rui-tooltip__trigger"}),2,"onFocusIn"],[X({type:"focusout",selector:".rui-tooltip__trigger"}),2,"onFocusOut"],[Et,2,"onPointerEnter"],[Et,2,"onPointerLeave"]],0,void 0,_t))}content=(ht(this),ft(this));placement=(mt(this),gt(this));delay=(bt(this),yt(this));tooltipTarget=(wt(this),vt(this));open=(Tt(this),!1);showTimer=null;hideTimer=null;tooltipId=`rui-tooltip-${Math.random().toString(36).slice(2,9)}`;describedEl=null;cleanupFloating=null;connectedCallback(){super.connectedCallback(),this.addEventListener("pointerenter",this.onPointerEnter),this.addEventListener("pointerleave",this.onPointerLeave),queueMicrotask(()=>this.wireTrigger())}disconnectedCallback(){this.clearTimers(),this.teardownFloating(),this.removeEventListener("pointerenter",this.onPointerEnter),this.removeEventListener("pointerleave",this.onPointerLeave),this.describedEl?.removeAttribute("aria-describedby"),super.disconnectedCallback()}clearTimers(){this.showTimer&&clearTimeout(this.showTimer),this.hideTimer&&clearTimeout(this.hideTimer),this.showTimer=null,this.hideTimer=null}teardownFloating(){this.cleanupFloating?.(),this.cleanupFloating=null}getAnchor(){return at(this)??this}wireTrigger(){this.describedEl?.removeAttribute("aria-describedby"),this.describedEl=this.getAnchor(),this.describedEl.setAttribute("aria-describedby",this.tooltipId)}attachFloating(){this.tooltipTarget&&(this.teardownFloating(),this.cleanupFloating=dt({anchor:this.getAnchor(),floating:this.tooltipTarget,getPlacement:()=>this.placement,gap:At}))}onDescribedPropsUpdated(){this.wireTrigger(),this.open&&this.tooltipTarget&&B(this.getAnchor(),this.tooltipTarget,this.placement,At)}setOpen(e){this.clearTimers(),this.open=e,this.tooltipTarget&&(this.tooltipTarget.hidden=!e,e?this.attachFloating():this.teardownFloating())}scheduleShow(){if(this.clearTimers(),this.delay<=0){this.setOpen(!0);return}this.showTimer=setTimeout(()=>this.setOpen(!0),this.delay)}scheduleHide(){this.clearTimers(),this.hideTimer=setTimeout(()=>this.setOpen(!1),80)}onDocumentKeydown(e){!this.open||e.key!=="Escape"||this.setOpen(!1)}onFocusIn(){this.scheduleShow()}onFocusOut(e){let i=e.relatedTarget;i&&this.contains(i)||this.scheduleHide()}onPointerEnter(){this.scheduleShow()}onPointerLeave(){this.scheduleHide()}render(){return Kt("span",{class:"rui-tooltip",children:[G("span",{class:"rui-tooltip__trigger",children:G("slot",{})}),G("span",{"data-ref":"tooltip",id:this.tooltipId,class:"rui-tooltip__content rui-floating",role:"tooltip",hidden:!0,children:this.$.content})]})}static{pt()}};import{jsx as Qt}from"@ecopages/jsx/jsx-runtime";var Yt=Symbol.for("@ecopages/storybook-radiant.viewElement"),St=Symbol.for("@ecopages/storybook-radiant.scriptModule"),Ot=Symbol.for("@ecopages/storybook-radiant.scriptExport");function Jt(t,e){t[Yt]=e;let i=e[St];i&&(t[St]=i,t[Ot]=e[Ot]??e.name)}function Rt(t,e,i){let o=n=>e(n);return Jt(o,t),o}var Zt=Rt(j,({children:t,...e})=>Qt("rui-tooltip",{...e,children:t}),{stylesheets:["./tooltip.css"]});export{Zt as RuiTooltip,j as RuiTooltipElement};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|