@gardenerim/css 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +121 -0
- package/LICENSE +21 -0
- package/README.md +591 -0
- package/dist/components/ai-compositions.min.css +2 -0
- package/dist/components/ai-extended.min.css +2 -0
- package/dist/components/ai.min.css +2 -0
- package/dist/components/auth-compositions.min.css +2 -0
- package/dist/components/basic.min.css +2 -0
- package/dist/components/catalog.min.css +2 -0
- package/dist/components/commerce-compositions.min.css +2 -0
- package/dist/components/content-compositions.min.css +2 -0
- package/dist/components/data-compositions.min.css +2 -0
- package/dist/components/data.min.css +2 -0
- package/dist/components/desktop-compositions.min.css +2 -0
- package/dist/components/desktop.min.css +2 -0
- package/dist/components/extended.min.css +2 -0
- package/dist/components/feedback.min.css +2 -0
- package/dist/components/form-compositions.min.css +2 -0
- package/dist/components/forms.min.css +2 -0
- package/dist/components/grid.min.css +2 -0
- package/dist/components/help.min.css +2 -0
- package/dist/components/layouts.min.css +2 -0
- package/dist/components/mobile-compositions.min.css +2 -0
- package/dist/components/navigation-compositions.min.css +2 -0
- package/dist/components/navigation.min.css +2 -0
- package/dist/components/page.min.css +2 -0
- package/dist/components/primitives.min.css +2 -0
- package/dist/components/recipes.min.css +2 -0
- package/dist/components/regions.min.css +2 -0
- package/dist/components/selection-compositions.min.css +2 -0
- package/dist/components/solution-compositions.min.css +2 -0
- package/dist/gardener.ai.css +236 -0
- package/dist/gardener.ai.min.css +3 -0
- package/dist/gardener.ai.min.css.map +7 -0
- package/dist/gardener.builds.json +7491 -0
- package/dist/gardener.capabilities.json +3784 -0
- package/dist/gardener.compatibility.json +1209 -0
- package/dist/gardener.components.css +3496 -0
- package/dist/gardener.components.min.css +3 -0
- package/dist/gardener.components.min.css.map +7 -0
- package/dist/gardener.core.css +1486 -0
- package/dist/gardener.core.min.css +3 -0
- package/dist/gardener.core.min.css.map +7 -0
- package/dist/gardener.css +7153 -0
- package/dist/gardener.d.ts +42 -0
- package/dist/gardener.electron.d.ts +5 -0
- package/dist/gardener.electron.js +24 -0
- package/dist/gardener.electron.min.js +3 -0
- package/dist/gardener.electron.min.js.map +7 -0
- package/dist/gardener.manifest.json +14557 -0
- package/dist/gardener.min.css +3 -0
- package/dist/gardener.min.css.map +7 -0
- package/dist/gardener.performance.json +1628 -0
- package/dist/gardener.public-api.json +2169 -0
- package/dist/gardener.recipes.json +1444 -0
- package/dist/gardener.runtime.js +2224 -0
- package/dist/gardener.runtime.min.js +3 -0
- package/dist/gardener.runtime.min.js.map +7 -0
- package/dist/gardener.tauri.d.ts +5 -0
- package/dist/gardener.tauri.js +28 -0
- package/dist/gardener.tauri.min.js +3 -0
- package/dist/gardener.tauri.min.js.map +7 -0
- package/dist/gardener.themes.css +1415 -0
- package/dist/gardener.themes.min.css +3 -0
- package/dist/gardener.themes.min.css.map +7 -0
- package/dist/gardener.utilities.css +1940 -0
- package/dist/gardener.utilities.json +92279 -0
- package/dist/gardener.utilities.min.css +3 -0
- package/dist/gardener.utilities.min.css.map +7 -0
- package/dist/platforms/gardener.desktop.min.css +2 -0
- package/dist/platforms/gardener.electron.min.css +2 -0
- package/dist/platforms/gardener.mobile.min.css +2 -0
- package/dist/platforms/gardener.tauri.min.css +2 -0
- package/dist/platforms/gardener.web.min.css +2 -0
- package/metadata/builds.schema.json +148 -0
- package/metadata/capabilities.json +3784 -0
- package/metadata/capabilities.schema.json +61 -0
- package/metadata/compatibility.json +1209 -0
- package/metadata/compatibility.schema.json +85 -0
- package/metadata/components.json +9082 -0
- package/metadata/components.schema.json +58 -0
- package/metadata/custom-build.schema.json +46 -0
- package/metadata/manifest.schema.json +47 -0
- package/metadata/performance-budgets.schema.json +103 -0
- package/metadata/performance-report.schema.json +194 -0
- package/metadata/public-api.json +2169 -0
- package/metadata/public-api.schema.json +165 -0
- package/metadata/recipes.json +1444 -0
- package/metadata/recipes.schema.json +39 -0
- package/metadata/schema.json +7 -0
- package/metadata/utilities.schema.json +29 -0
- package/package.json +177 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["index.js"],
|
|
4
|
+
"sourcesContent": ["/** Gardener runtime v1.0.0 \u2014 framework-agnostic, accessible component behavior. */\n\nconst instanceStores = new WeakMap();\nconst registry = new Map();\nconst focusableSelector = [\n \"a[href]\", \"button:not([disabled])\", \"input:not([disabled])\", \"select:not([disabled])\",\n \"textarea:not([disabled])\", \"[tabindex]:not([tabindex='-1'])\", \"[contenteditable='true']\"\n].join(\",\");\n\nconst uid = (prefix = \"g\") => `${prefix}-${Math.random().toString(36).slice(2, 9)}`;\nconst numeric = (value, fallback) => value !== \"\" && value != null && Number.isFinite(Number(value)) ? Number(value) : fallback;\nconst targetById = (value) => value ? document.getElementById(value.replace(/^#/, \"\")) : null;\nconst visibleFocusable = (container) => [...container.querySelectorAll(focusableSelector)].filter((item) => item.getClientRects().length > 0);\n\nfunction emit(element, name, detail = {}) {\n return element.dispatchEvent(new CustomEvent(`gardener:${name}`, { bubbles: true, cancelable: true, detail }));\n}\n\nfunction storeFor(element) {\n if (!instanceStores.has(element)) instanceStores.set(element, new Map());\n return instanceStores.get(element);\n}\n\nfunction lockScroll() {\n const root = document.documentElement;\n const count = Number(root.dataset.gScrollLocks || 0) + 1;\n root.dataset.gScrollLocks = String(count);\n if (count === 1) {\n root.dataset.gPreviousOverflow = root.style.overflow;\n root.style.overflow = \"hidden\";\n }\n}\n\nfunction unlockScroll() {\n const root = document.documentElement;\n const count = Math.max(0, Number(root.dataset.gScrollLocks || 0) - 1);\n root.dataset.gScrollLocks = String(count);\n if (count === 0) {\n root.style.overflow = root.dataset.gPreviousOverflow || \"\";\n delete root.dataset.gPreviousOverflow;\n }\n}\n\nfunction createOverlay(element, type) {\n let trigger = null;\n let open = false;\n let closeTimer = null;\n let closeFinished = true;\n const panel = element.querySelector(type === \"dialog\" ? \".g-dialog\" : type === \"mobile-sheet\" ? \".g-mobile-sheet-panel\" : \".g-drawer\") || element;\n panel.tabIndex = panel.tabIndex < 0 ? -1 : panel.tabIndex;\n if (type === \"dialog\" || type === \"mobile-sheet\") {\n panel.setAttribute(\"role\", panel.getAttribute(\"role\") || \"dialog\");\n panel.setAttribute(\"aria-modal\", \"true\");\n }\n\n function onKeydown(event) {\n if (event.key === \"Escape\" && element.dataset.gDismissible !== \"false\") close(\"escape\");\n if (event.key !== \"Tab\") return;\n const items = visibleFocusable(panel);\n if (!items.length) {\n event.preventDefault();\n panel.focus();\n return;\n }\n const first = items[0];\n const last = items.at(-1);\n if (event.shiftKey && document.activeElement === first) { event.preventDefault(); last.focus(); }\n else if (!event.shiftKey && document.activeElement === last) { event.preventDefault(); first.focus(); }\n }\n\n function finishClose(reason) {\n if (open || closeFinished) return;\n closeFinished = true;\n clearTimeout(closeTimer);\n element.hidden = true;\n element.setAttribute(\"aria-hidden\", \"true\");\n trigger?.focus?.({ preventScroll: true });\n emit(element, \"close\", { reason });\n }\n\n function openOverlay(source) {\n if (open || !emit(element, \"beforeopen\", { source })) return;\n clearTimeout(closeTimer);\n open = true;\n closeFinished = false;\n trigger = source instanceof HTMLElement ? source : document.activeElement;\n element.hidden = false;\n element.setAttribute(\"aria-hidden\", \"false\");\n lockScroll();\n requestAnimationFrame(() => {\n element.classList.add(\"is-open\");\n (visibleFocusable(panel)[0] || panel).focus({ preventScroll: true });\n });\n document.addEventListener(\"keydown\", onKeydown);\n emit(element, \"open\", { source });\n }\n\n function close(reason = \"api\") {\n if (!open || !emit(element, \"beforeclose\", { reason })) return;\n open = false;\n element.classList.remove(\"is-open\");\n document.removeEventListener(\"keydown\", onKeydown);\n unlockScroll();\n const onTransitionEnd = (event) => {\n if (event.target === element) finishClose(reason);\n };\n element.addEventListener(\"transitionend\", onTransitionEnd, { once: true });\n closeTimer = window.setTimeout(() => finishClose(reason), 350);\n }\n\n function onClick(event) {\n if (event.target === element && element.dataset.gDismissible !== \"false\") close(\"backdrop\");\n if (event.target.closest(\"[data-g-close]\")) close(\"button\");\n }\n\n const startsOpen = !element.hidden;\n element.hidden = true;\n element.setAttribute(\"aria-hidden\", \"true\");\n element.addEventListener(\"click\", onClick);\n if (startsOpen) queueMicrotask(() => openOverlay());\n return { open: openOverlay, close, toggle: (source) => open ? close(\"toggle\") : openOverlay(source), isOpen: () => open, destroy: () => { clearTimeout(closeTimer); if (open) unlockScroll(); open = false; element.classList.remove(\"is-open\"); element.hidden = true; element.removeEventListener(\"click\", onClick); document.removeEventListener(\"keydown\", onKeydown); } };\n}\n\nfunction createDropdown(element) {\n const trigger = element.querySelector(\"[data-g-dropdown-trigger]\");\n const menu = element.querySelector(\"[data-g-dropdown-menu]\") || element.querySelector(\".g-dropdown-menu\");\n if (!trigger || !menu) return null;\n let search = \"\";\n let searchTimer;\n const startsOpen = !menu.hidden;\n const items = () => visibleFocusable(menu).filter((item) => item.getAttribute(\"aria-disabled\") !== \"true\");\n\n function open() {\n if (!menu.hidden) return;\n menu.hidden = false;\n trigger.setAttribute(\"aria-expanded\", \"true\");\n document.addEventListener(\"pointerdown\", outside, true);\n document.addEventListener(\"keydown\", keydown);\n emit(element, \"open\");\n }\n function close(focus = false) {\n if (menu.hidden) return;\n menu.hidden = true;\n trigger.setAttribute(\"aria-expanded\", \"false\");\n document.removeEventListener(\"pointerdown\", outside, true);\n document.removeEventListener(\"keydown\", keydown);\n if (focus) trigger.focus();\n emit(element, \"close\");\n }\n function outside(event) { if (!element.contains(event.target)) close(); }\n function keydown(event) {\n const options = items();\n const index = options.indexOf(document.activeElement);\n if (event.key === \"Escape\") return close(true);\n if (event.key === \"ArrowDown\") { event.preventDefault(); (options[index + 1] || options[0])?.focus(); }\n else if (event.key === \"ArrowUp\") { event.preventDefault(); (options[index - 1] || options.at(-1))?.focus(); }\n else if (event.key === \"Home\") { event.preventDefault(); options[0]?.focus(); }\n else if (event.key === \"End\") { event.preventDefault(); options.at(-1)?.focus(); }\n else if (event.key.length === 1 && /\\S/.test(event.key)) {\n search += event.key.toLocaleLowerCase();\n clearTimeout(searchTimer);\n searchTimer = setTimeout(() => { search = \"\"; }, 500);\n options.find((item) => item.textContent.trim().toLocaleLowerCase().startsWith(search))?.focus();\n }\n }\n function toggle() { menu.hidden ? open() : close(); }\n function menuClick(event) { if (event.target.closest(\"[role='menuitem']\") && !event.target.closest(\"[aria-haspopup='menu']\")) close(); }\n trigger.setAttribute(\"aria-haspopup\", trigger.getAttribute(\"aria-haspopup\") || \"menu\");\n menu.setAttribute(\"role\", menu.getAttribute(\"role\") || \"menu\");\n menu.hidden = true;\n trigger.setAttribute(\"aria-expanded\", \"false\");\n trigger.addEventListener(\"click\", toggle);\n menu.addEventListener(\"click\", menuClick);\n if (startsOpen) queueMicrotask(open);\n return { open, close, toggle, destroy: () => { clearTimeout(searchTimer); trigger.removeEventListener(\"click\", toggle); menu.removeEventListener(\"click\", menuClick); document.removeEventListener(\"pointerdown\", outside, true); document.removeEventListener(\"keydown\", keydown); } };\n}\n\nfunction createTabs(element) {\n const tabs = [...element.querySelectorAll(\"[role='tab']\")];\n if (!tabs.length) return null;\n const vertical = () => element.getAttribute(\"aria-orientation\") === \"vertical\";\n function select(tab, focus = false) {\n if (!tab || tab.getAttribute(\"aria-disabled\") === \"true\") return;\n tabs.forEach((item) => {\n const selected = item === tab;\n item.setAttribute(\"aria-selected\", String(selected));\n item.tabIndex = selected ? 0 : -1;\n const panel = targetById(item.getAttribute(\"aria-controls\"));\n if (panel) panel.hidden = !selected;\n });\n if (focus) tab.focus();\n emit(element, \"change\", { tab });\n }\n function click(event) { const tab = event.target.closest(\"[role='tab']\"); if (tab) select(tab); }\n function keydown(event) {\n const current = tabs.indexOf(event.target.closest(\"[role='tab']\"));\n if (current < 0) return;\n const forward = vertical() ? \"ArrowDown\" : \"ArrowRight\";\n const backward = vertical() ? \"ArrowUp\" : \"ArrowLeft\";\n const enabled = tabs.filter((tab) => tab.getAttribute(\"aria-disabled\") !== \"true\" && !tab.disabled);\n if (!enabled.length) return;\n const enabledIndex = enabled.indexOf(tabs[current]);\n let next;\n if (event.key === forward) next = enabled[(enabledIndex + 1 + enabled.length) % enabled.length];\n else if (event.key === backward) next = enabled[(enabledIndex - 1 + enabled.length) % enabled.length];\n else if (event.key === \"Home\") next = enabled[0];\n else if (event.key === \"End\") next = enabled.at(-1);\n else return;\n event.preventDefault();\n select(next, true);\n }\n element.addEventListener(\"click\", click);\n element.addEventListener(\"keydown\", keydown);\n select(tabs.find((tab) => tab.getAttribute(\"aria-selected\") === \"true\") || tabs[0]);\n return { select, destroy: () => { element.removeEventListener(\"click\", click); element.removeEventListener(\"keydown\", keydown); } };\n}\n\nfunction createAccordion(element) {\n const triggerSelector = \".g-accordion-trigger, .g-faq-question, .g-thinking-trigger, [data-g-tool-call-toggle]\";\n const triggers = [...element.querySelectorAll(triggerSelector)];\n function set(trigger, expanded) {\n trigger.setAttribute(\"aria-expanded\", String(expanded));\n const panel = targetById(trigger.getAttribute(\"aria-controls\"));\n if (panel) panel.hidden = !expanded;\n emit(element, \"change\", { trigger, expanded });\n }\n function toggle(trigger) {\n if (trigger.disabled || trigger.getAttribute(\"aria-disabled\") === \"true\") return;\n const expanded = trigger.getAttribute(\"aria-expanded\") === \"true\";\n if (!expanded && element.dataset.gMultiple !== \"true\") triggers.forEach((other) => { if (other !== trigger) set(other, false); });\n set(trigger, !expanded);\n }\n function click(event) { const trigger = event.target.closest(triggerSelector); if (trigger) toggle(trigger); }\n element.addEventListener(\"click\", click);\n triggers.forEach((trigger) => set(trigger, trigger.getAttribute(\"aria-expanded\") === \"true\"));\n return { toggle, destroy: () => element.removeEventListener(\"click\", click) };\n}\n\nfunction createAutoResize(element) {\n function resize() {\n element.style.height = \"auto\";\n element.style.height = `${Math.min(element.scrollHeight, Number(element.dataset.gMaxHeight || 224))}px`;\n }\n element.addEventListener(\"input\", resize);\n resize();\n return { resize, destroy: () => element.removeEventListener(\"input\", resize) };\n}\n\nfunction createPasswordToggle(element) {\n const input = element.querySelector(\"input\");\n const button = element.querySelector(\"[data-g-password-button]\");\n if (!input || !button) return null;\n const showLabel = button.dataset.gShowLabel || \"\u663E\u793A\u5BC6\u7801\";\n const hideLabel = button.dataset.gHideLabel || \"\u9690\u85CF\u5BC6\u7801\";\n function update() {\n const visible = input.type === \"text\";\n button.setAttribute(\"aria-pressed\", String(visible));\n button.setAttribute(\"aria-label\", visible ? hideLabel : showLabel);\n const label = button.querySelector(\"[data-g-password-label]\");\n if (label) label.textContent = visible ? hideLabel : showLabel;\n }\n function toggle() {\n const start = input.selectionStart;\n const end = input.selectionEnd;\n input.type = input.type === \"password\" ? \"text\" : \"password\";\n update();\n input.focus({ preventScroll: true });\n if (start != null && end != null) input.setSelectionRange(start, end);\n emit(element, \"change\", { visible: input.type === \"text\" });\n }\n button.addEventListener(\"click\", toggle);\n update();\n return { toggle, destroy: () => button.removeEventListener(\"click\", toggle) };\n}\n\nfunction createOtpInput(element) {\n const cells = [...element.querySelectorAll(\"[data-g-otp-cell], .g-otp-cell\")];\n const output = element.querySelector(\"[data-g-otp-output]\");\n if (!cells.length) return null;\n const digits = (value) => String(value || \"\").replace(/\\D/g, \"\");\n function sync(reason = \"api\") {\n const value = cells.map((cell) => digits(cell.value).slice(-1)).join(\"\");\n cells.forEach((cell, index) => {\n const digit = digits(cell.value).slice(-1);\n if (cell.value !== digit) cell.value = digit;\n cell.setAttribute(\"aria-label\", cell.getAttribute(\"aria-label\") || `\u9A8C\u8BC1\u7801\u7B2C ${index + 1} \u4F4D\uFF0C\u5171 ${cells.length} \u4F4D`);\n });\n element.dataset.gOtpValue = value;\n const valueOutput = element.querySelector(\"[data-g-otp-output]\") || output;\n if (valueOutput) { valueOutput.value = value; valueOutput.defaultValue = value; valueOutput.setAttribute(\"value\", value); }\n const complete = value.length === cells.length;\n element.classList.toggle(\"is-complete\", complete);\n element.setAttribute(\"aria-invalid\", String(element.classList.contains(\"is-invalid\")));\n emit(element, \"otpchange\", { value, complete, reason });\n if (complete) emit(element, \"otpcomplete\", { value, reason });\n return value;\n }\n function fill(value, start = 0, reason = \"api\") {\n const values = digits(value).slice(0, cells.length - start);\n [...values].forEach((digit, offset) => { cells[start + offset].value = digit; });\n const next = Math.min(start + values.length, cells.length - 1);\n cells[next]?.focus({ preventScroll: true });\n sync(reason);\n }\n function input(event) {\n const index = cells.indexOf(event.target);\n if (index < 0) return;\n const value = digits(event.target.value);\n if (value.length > 1) fill(value, index, \"input\");\n else { event.target.value = value.slice(-1); if (value && index < cells.length - 1) cells[index + 1].focus({ preventScroll: true }); sync(\"input\"); }\n }\n function keydown(event) {\n const index = cells.indexOf(event.target);\n if (index < 0) return;\n if (event.key === \"Backspace\" && !event.target.value && index > 0) { event.preventDefault(); cells[index - 1].value = \"\"; cells[index - 1].focus({ preventScroll: true }); sync(\"backspace\"); }\n if (event.key === \"ArrowLeft\" && index > 0) { event.preventDefault(); cells[index - 1].focus({ preventScroll: true }); }\n if (event.key === \"ArrowRight\" && index < cells.length - 1) { event.preventDefault(); cells[index + 1].focus({ preventScroll: true }); }\n if (event.key === \"Home\") { event.preventDefault(); cells[0].focus({ preventScroll: true }); }\n if (event.key === \"End\") { event.preventDefault(); cells.at(-1).focus({ preventScroll: true }); }\n }\n function paste(event) { const index = cells.indexOf(event.target); if (index >= 0) { event.preventDefault(); fill(event.clipboardData?.getData(\"text\") || \"\", index, \"paste\"); } }\n function clear() { cells.forEach((cell) => { cell.value = \"\"; }); element.classList.remove(\"is-invalid\"); cells[0].focus({ preventScroll: true }); sync(\"clear\"); }\n element.addEventListener(\"input\", input); element.addEventListener(\"keydown\", keydown); element.addEventListener(\"paste\", paste); sync(\"init\");\n return { value: () => sync(\"read\"), fill, clear, destroy: () => { element.removeEventListener(\"input\", input); element.removeEventListener(\"keydown\", keydown); element.removeEventListener(\"paste\", paste); } };\n}\n\nfunction createPasswordStrength(element) {\n const input = targetById(element.dataset.gPasswordTarget) || element.querySelector(\"input[type='password'], input\");\n const label = element.querySelector(\"[data-g-password-strength-label]\");\n const meter = element.querySelector(\"[data-g-password-strength-meter], .g-password-strength-meter\");\n const rules = [...element.querySelectorAll(\"[data-g-password-rule]\")];\n if (!input) return null;\n const tests = {\n length: (value) => value.length >= Number(element.dataset.gMinLength || input.minLength || 8),\n upper: (value) => /[A-Z]/.test(value), lower: (value) => /[a-z]/.test(value),\n number: (value) => /\\d/.test(value), symbol: (value) => /[^\\w\\s]/.test(value)\n };\n function update(reason = \"input\") {\n const value = input.value; const checks = Object.fromEntries(Object.entries(tests).map(([key, test]) => [key, test(value)]));\n const passed = Object.values(checks).filter(Boolean).length;\n const score = value ? Math.min(4, Math.max(1, Math.ceil((passed / Object.keys(checks).length) * 4))) : 0;\n const labels = [\"\u672A\u8BBE\u7F6E\", \"\u8F83\u5F31\", \"\u4E00\u822C\", \"\u826F\u597D\", \"\u5F3A\"];\n element.dataset.gStrength = String(score); element.style.setProperty(\"--g-password-strength\", `${score * 25}%`);\n if (label) label.textContent = labels[score];\n if (meter) { meter.setAttribute(\"role\", \"progressbar\"); meter.setAttribute(\"aria-label\", \"\u5BC6\u7801\u5F3A\u5EA6\"); meter.setAttribute(\"aria-valuemin\", \"0\"); meter.setAttribute(\"aria-valuemax\", \"4\"); meter.setAttribute(\"aria-valuenow\", String(score)); meter.setAttribute(\"aria-valuetext\", labels[score]); }\n rules.forEach((rule) => { const valid = Boolean(checks[rule.dataset.gPasswordRule]); rule.classList.toggle(\"is-valid\", valid); rule.setAttribute(\"aria-label\", `${rule.textContent.trim()}\uFF1A${valid ? \"\u5DF2\u6EE1\u8DB3\" : \"\u672A\u6EE1\u8DB3\"}`); });\n emit(element, \"passwordstrength\", { score, checks, reason }); return { score, checks };\n }\n input.addEventListener(\"input\", update); update(\"init\");\n return { update, destroy: () => input.removeEventListener(\"input\", update) };\n}\n\nfunction createAuthTimer(element) {\n const output = element.querySelector(\"[data-g-auth-time]\") || element;\n const resetButton = element.querySelector(\"[data-g-auth-timer-reset]\");\n const duration = Math.max(0, Number(element.dataset.gDuration || 60));\n let remaining = duration; let timer = 0;\n function format(seconds) { const minutes = Math.floor(seconds / 60); const rest = seconds % 60; return minutes ? `${minutes}:${String(rest).padStart(2, \"0\")}` : `${rest} \u79D2`; }\n function render(reason = \"tick\") { output.textContent = format(remaining); const expired = remaining <= 0; element.dataset.gTimerState = expired ? \"expired\" : \"active\"; element.setAttribute(\"aria-live\", expired ? \"polite\" : \"off\"); if (expired) { window.clearInterval(timer); timer = 0; emit(element, \"authtimerexpired\", { reason }); } }\n function start(seconds = duration, reason = \"start\") { window.clearInterval(timer); remaining = Math.max(0, Number(seconds)); render(reason); if (remaining > 0) timer = window.setInterval(() => { remaining -= 1; render(); }, 1000); emit(element, \"authtimerstart\", { remaining, reason }); }\n function reset() { start(duration, \"reset\"); }\n function click(event) { if (event.target.closest(\"[data-g-auth-timer-reset]\")) { event.preventDefault(); reset(); } }\n element.addEventListener(\"click\", click); start(duration, \"init\");\n return { start, reset, expire: () => start(0, \"api\"), remaining: () => remaining, destroy: () => { window.clearInterval(timer); element.removeEventListener(\"click\", click); } };\n}\n\nfunction createClearInput(element) {\n const input = element.querySelector(\"input, textarea\");\n const button = element.querySelector(\"[data-g-clear-button]\");\n if (!input || !button) return null;\n function update() { button.hidden = !input.value || input.disabled || input.readOnly; }\n function clear() {\n if (input.disabled || input.readOnly) return;\n input.value = \"\";\n input.dispatchEvent(new Event(\"input\", { bubbles: true }));\n input.dispatchEvent(new Event(\"change\", { bubbles: true }));\n input.focus({ preventScroll: true });\n emit(element, \"clear\", { input });\n }\n if (!button.hasAttribute(\"aria-label\")) button.setAttribute(\"aria-label\", \"\u6E05\u7A7A\u8F93\u5165\");\n input.addEventListener(\"input\", update);\n button.addEventListener(\"click\", clear);\n update();\n return { clear, update, destroy: () => { input.removeEventListener(\"input\", update); button.removeEventListener(\"click\", clear); } };\n}\n\nfunction createCharacterCount(element) {\n const input = element.querySelector(\"textarea, input\");\n const output = element.querySelector(\"[data-g-character-output], .g-character-count\");\n if (!input || !output) return null;\n const maximum = Number(element.dataset.gCharacterCount || input.maxLength || 0);\n function update() {\n const count = [...input.value].length;\n output.textContent = maximum > 0 ? `${count} / ${maximum}` : String(count);\n output.classList.toggle(\"is-near-limit\", maximum > 0 && count >= maximum * .85 && count <= maximum);\n output.classList.toggle(\"is-over-limit\", maximum > 0 && count > maximum);\n output.setAttribute(\"aria-label\", maximum > 0 ? `\u5DF2\u8F93\u5165 ${count} \u4E2A\u5B57\u7B26\uFF0C\u6700\u591A ${maximum} \u4E2A` : `\u5DF2\u8F93\u5165 ${count} \u4E2A\u5B57\u7B26`);\n emit(element, \"count\", { count, maximum });\n }\n input.addEventListener(\"input\", update);\n update();\n return { update, destroy: () => input.removeEventListener(\"input\", update) };\n}\n\nfunction createConditionalField(element) {\n const selector = element.dataset.gController;\n if (!selector) return null;\n let controllers;\n try { controllers = [...document.querySelectorAll(selector)]; }\n catch { return null; }\n if (!controllers.length) return null;\n const expected = new Set(String(element.dataset.gShowWhen ?? \"true\").split(\",\").map((value) => value.trim()));\n function value() {\n const checkedRadio = controllers.find((controller) => controller.type === \"radio\" && controller.checked);\n if (checkedRadio) return checkedRadio.value;\n const controller = controllers[0];\n if (controller.type === \"checkbox\") return controller.checked ? (controller.value || \"true\") : \"false\";\n return controller.value;\n }\n function update() {\n const visible = expected.has(String(value()));\n element.hidden = !visible;\n element.toggleAttribute(\"inert\", !visible);\n element.setAttribute(\"aria-hidden\", String(!visible));\n emit(element, \"change\", { visible, value: value() });\n }\n controllers.forEach((controller) => controller.addEventListener(\"change\", update));\n update();\n return { update, destroy: () => controllers.forEach((controller) => controller.removeEventListener(\"change\", update)) };\n}\n\nfunction createRepeatableField(element) {\n const list = element.querySelector(\"[data-g-repeatable-list], .g-repeatable-list\");\n const template = element.querySelector(\"template[data-g-repeatable-template]\");\n const addButton = element.querySelector(\"[data-g-repeatable-add]\");\n if (!list || !template || !addButton) return null;\n const minimum = Math.max(0, Number(element.dataset.gMinItems || 0));\n const maximum = Math.max(minimum, Number(element.dataset.gMaxItems || Infinity));\n const items = () => [...list.querySelectorAll(\":scope > .g-repeatable-item\")];\n function replaceIndex(node, attribute, index) {\n const current = node.getAttribute(attribute);\n if (current == null) return;\n const dataKey = `g${attribute[0].toUpperCase()}${attribute.slice(1)}Template`;\n if (current.includes(\"__INDEX__\")) node.dataset[dataKey] = current;\n const source = node.dataset[dataKey];\n if (source) node.setAttribute(attribute, source.replaceAll(\"__INDEX__\", String(index)));\n }\n function sync() {\n const currentItems = items();\n currentItems.forEach((item, index) => {\n item.dataset.gIndex = String(index);\n item.querySelectorAll(\"[data-g-item-number]\").forEach((node) => { node.textContent = String(index + 1); });\n item.querySelectorAll(\"[name], [id], [for]\").forEach((node) => { replaceIndex(node, \"name\", index); replaceIndex(node, \"id\", index); replaceIndex(node, \"for\", index); });\n item.querySelectorAll(\"[data-g-repeatable-remove]\").forEach((button) => { button.disabled = currentItems.length <= minimum; });\n });\n addButton.disabled = currentItems.length >= maximum;\n }\n function add() {\n if (items().length >= maximum) return;\n const fragment = template.content.cloneNode(true);\n list.append(fragment);\n sync();\n const item = items().at(-1);\n init(item);\n visibleFocusable(item)[0]?.focus({ preventScroll: true });\n emit(element, \"add\", { item, index: items().length - 1 });\n }\n function click(event) {\n const removeButton = event.target.closest(\"[data-g-repeatable-remove]\");\n if (!removeButton) return;\n const item = removeButton.closest(\".g-repeatable-item\");\n if (!item || items().length <= minimum) return;\n const index = items().indexOf(item);\n item.remove();\n sync();\n addButton.focus({ preventScroll: true });\n emit(element, \"remove\", { index });\n }\n addButton.addEventListener(\"click\", add);\n list.addEventListener(\"click\", click);\n sync();\n return { add, sync, destroy: () => { addButton.removeEventListener(\"click\", add); list.removeEventListener(\"click\", click); } };\n}\n\nfunction createCombobox(element) {\n const input = element.querySelector(\"[role='combobox'], input\");\n const list = element.querySelector(\"[role='listbox'], .g-combobox-list\");\n if (!input || !list) return null;\n const options = () => [...list.querySelectorAll(\"[role='option'], .g-combobox-option\")].filter((option) => !option.hidden && option.getAttribute(\"aria-disabled\") !== \"true\");\n let activeIndex = -1;\n if (!list.id) list.id = uid(\"g-listbox\");\n input.setAttribute(\"role\", \"combobox\");\n input.setAttribute(\"aria-controls\", list.id);\n input.setAttribute(\"aria-autocomplete\", input.getAttribute(\"aria-autocomplete\") || \"list\");\n\n function open() { if (!list.hidden) return; list.hidden = false; input.setAttribute(\"aria-expanded\", \"true\"); emit(element, \"open\"); }\n function close() { if (list.hidden) return; list.hidden = true; input.setAttribute(\"aria-expanded\", \"false\"); input.removeAttribute(\"aria-activedescendant\"); activeIndex = -1; emit(element, \"close\"); }\n function activate(index) {\n const items = options();\n if (!items.length) { activeIndex = -1; input.removeAttribute(\"aria-activedescendant\"); return; }\n activeIndex = (index + items.length) % items.length;\n items.forEach((option, optionIndex) => {\n if (!option.id) option.id = uid(\"g-option\");\n option.classList.toggle(\"is-active\", optionIndex === activeIndex);\n });\n input.setAttribute(\"aria-activedescendant\", items[activeIndex].id);\n items[activeIndex].scrollIntoView({ block: \"nearest\" });\n }\n function choose(option) {\n input.value = option.dataset.gValue ?? option.textContent.trim();\n options().forEach((item) => item.setAttribute(\"aria-selected\", String(item === option)));\n emit(element, \"change\", { option, value: input.value });\n close();\n }\n function filter() {\n const query = input.value.trim().toLocaleLowerCase();\n [...list.querySelectorAll(\"[role='option'], .g-combobox-option\")].forEach((option) => {\n option.hidden = Boolean(query) && !option.textContent.toLocaleLowerCase().includes(query);\n });\n open();\n activate(0);\n }\n function keydown(event) {\n if (event.key === \"ArrowDown\") { event.preventDefault(); open(); activate(activeIndex + 1); }\n else if (event.key === \"ArrowUp\") { event.preventDefault(); open(); activate(activeIndex - 1); }\n else if (event.key === \"Enter\" && activeIndex >= 0) { event.preventDefault(); choose(options()[activeIndex]); }\n else if (event.key === \"Escape\") close();\n }\n function click(event) { const option = event.target.closest(\"[role='option'], .g-combobox-option\"); if (option) choose(option); }\n function outside(event) { if (!element.contains(event.target)) close(); }\n input.addEventListener(\"input\", filter);\n input.addEventListener(\"keydown\", keydown);\n input.addEventListener(\"focus\", open);\n list.addEventListener(\"pointerdown\", click);\n document.addEventListener(\"pointerdown\", outside, true);\n list.hidden = true;\n input.setAttribute(\"aria-expanded\", \"false\");\n return { open, close, choose, destroy: () => { input.removeEventListener(\"input\", filter); input.removeEventListener(\"keydown\", keydown); input.removeEventListener(\"focus\", open); list.removeEventListener(\"pointerdown\", click); document.removeEventListener(\"pointerdown\", outside, true); } };\n}\n\nfunction positionFloating(trigger, panel, requestedPlacement = \"bottom-start\") {\n const rect = trigger.getBoundingClientRect();\n const panelRect = panel.getBoundingClientRect();\n const gap = 8;\n const rtl = getComputedStyle(trigger).direction === \"rtl\";\n const [rawSide, rawAlign = \"start\"] = String(requestedPlacement || \"bottom-start\").toLowerCase().split(\"-\");\n let side = rawSide === \"start\" ? (rtl ? \"right\" : \"left\") : rawSide === \"end\" ? (rtl ? \"left\" : \"right\") : rawSide;\n if (![\"top\", \"bottom\", \"left\", \"right\"].includes(side)) side = \"bottom\";\n const align = [\"start\", \"center\", \"end\"].includes(rawAlign) ? rawAlign : \"start\";\n\n function coordinates(candidate) {\n let top;\n let left;\n if (candidate === \"top\" || candidate === \"bottom\") {\n top = candidate === \"top\" ? rect.top - panelRect.height - gap : rect.bottom + gap;\n if (align === \"center\") left = rect.left + (rect.width - panelRect.width) / 2;\n else if (align === \"end\") left = rtl ? rect.left : rect.right - panelRect.width;\n else left = rtl ? rect.right - panelRect.width : rect.left;\n } else {\n left = candidate === \"left\" ? rect.left - panelRect.width - gap : rect.right + gap;\n if (align === \"center\") top = rect.top + (rect.height - panelRect.height) / 2;\n else if (align === \"end\") top = rect.bottom - panelRect.height;\n else top = rect.top;\n }\n return { top, left };\n }\n\n let position = coordinates(side);\n if (side === \"bottom\" && position.top + panelRect.height > window.innerHeight - gap && rect.top >= panelRect.height + gap) side = \"top\";\n else if (side === \"top\" && position.top < gap && window.innerHeight - rect.bottom >= panelRect.height + gap) side = \"bottom\";\n else if (side === \"right\" && position.left + panelRect.width > window.innerWidth - gap && rect.left >= panelRect.width + gap) side = \"left\";\n else if (side === \"left\" && position.left < gap && window.innerWidth - rect.right >= panelRect.width + gap) side = \"right\";\n position = coordinates(side);\n const top = Math.max(gap, Math.min(position.top, window.innerHeight - panelRect.height - gap));\n const left = Math.max(gap, Math.min(position.left, window.innerWidth - panelRect.width - gap));\n panel.style.position = \"fixed\";\n panel.style.inset = `${top}px auto auto ${left}px`;\n panel.dataset.gPlacement = `${side}-${align}`;\n panel.style.setProperty(\"--g-floating-arrow-inline\", `${Math.max(10, Math.min(panelRect.width - 18, rect.left + rect.width / 2 - left - 6))}px`);\n panel.style.setProperty(\"--g-floating-arrow-block\", `${Math.max(10, Math.min(panelRect.height - 18, rect.top + rect.height / 2 - top - 6))}px`);\n}\n\nfunction createFloating(element, type) {\n const trigger = element.querySelector(`[data-g-${type}-trigger]`) || element.previousElementSibling;\n const panel = element.querySelector(`[data-g-${type}-content]`) || element.querySelector(`.g-${type}, .g-${type}-rich, .g-help-${type}`) || element;\n if (!trigger || !panel) return null;\n const startsOpen = !panel.hidden;\n let open = false;\n const interactive = type === \"popover\";\n if (!panel.id) panel.id = uid(`g-${type}`);\n if (interactive) {\n trigger.setAttribute(\"aria-haspopup\", trigger.getAttribute(\"aria-haspopup\") || \"dialog\");\n trigger.setAttribute(\"aria-controls\", panel.id);\n trigger.setAttribute(\"aria-expanded\", \"false\");\n } else {\n panel.setAttribute(\"role\", \"tooltip\");\n const describedBy = new Set((trigger.getAttribute(\"aria-describedby\") || \"\").split(/\\s+/).filter(Boolean));\n describedBy.add(panel.id);\n trigger.setAttribute(\"aria-describedby\", [...describedBy].join(\" \"));\n }\n panel.hidden = true;\n const placement = () => element.dataset.gPlacement || panel.dataset.gPlacement || trigger.dataset.gPlacement || \"bottom-start\";\n function show() { if (open) return; open = true; panel.hidden = false; if (interactive) trigger.setAttribute(\"aria-expanded\", \"true\"); requestAnimationFrame(() => positionFloating(trigger, panel, placement())); emit(element, \"open\"); }\n function hide() { if (!open) return; open = false; panel.hidden = true; if (interactive) trigger.setAttribute(\"aria-expanded\", \"false\"); emit(element, \"close\"); }\n function toggle() { open ? hide() : show(); }\n function outside(event) { if (!element.contains(event.target) && !trigger.contains(event.target)) hide(); }\n function keydown(event) { if (event.key === \"Escape\") { hide(); trigger.focus(); } }\n function reposition() { if (open) positionFloating(trigger, panel, placement()); }\n if (interactive) trigger.addEventListener(\"click\", toggle);\n else {\n trigger.addEventListener(\"pointerenter\", show);\n trigger.addEventListener(\"pointerleave\", hide);\n trigger.addEventListener(\"focus\", show);\n trigger.addEventListener(\"blur\", hide);\n }\n document.addEventListener(\"pointerdown\", outside, true);\n document.addEventListener(\"keydown\", keydown);\n window.addEventListener(\"resize\", reposition);\n window.addEventListener(\"scroll\", reposition, true);\n if (startsOpen) queueMicrotask(show);\n return { open: show, close: hide, toggle, destroy: () => { trigger.removeEventListener(\"click\", toggle); trigger.removeEventListener(\"pointerenter\", show); trigger.removeEventListener(\"pointerleave\", hide); trigger.removeEventListener(\"focus\", show); trigger.removeEventListener(\"blur\", hide); document.removeEventListener(\"pointerdown\", outside, true); document.removeEventListener(\"keydown\", keydown); window.removeEventListener(\"resize\", reposition); window.removeEventListener(\"scroll\", reposition, true); } };\n}\n\nfunction createTour(element) {\n const steps = [...element.querySelectorAll(\".g-tour-step\")];\n if (!steps.length) return null;\n if (!element.id) element.id = uid(\"g-tour\");\n const startsOpen = !element.hidden || element.dataset.gStartOpen === \"true\";\n const progress = element.querySelector(\"[data-g-tour-progress], .g-tour-progress\");\n const spotlight = document.createElement(\"div\");\n spotlight.className = \"g-spotlight\";\n spotlight.hidden = true;\n spotlight.setAttribute(\"aria-hidden\", \"true\");\n document.body.append(spotlight);\n element.setAttribute(\"role\", element.getAttribute(\"role\") || \"dialog\");\n element.setAttribute(\"aria-modal\", \"false\");\n element.hidden = true;\n element.setAttribute(\"aria-hidden\", \"true\");\n let index = 0;\n let open = false;\n let trigger = null;\n\n function targetFor(step) {\n try { return step.dataset.gTarget ? document.querySelector(step.dataset.gTarget) : null; }\n catch { return null; }\n }\n\n function position() {\n if (!open) return;\n const step = steps[index];\n const target = targetFor(step);\n if (!target) {\n spotlight.hidden = true;\n element.style.position = \"fixed\";\n element.style.inset = \"50% auto auto 50%\";\n element.style.transform = \"translate(-50%, -50%)\";\n return;\n }\n const rect = target.getBoundingClientRect();\n const padding = Number(step.dataset.gSpotlightPadding || element.dataset.gSpotlightPadding || 6);\n spotlight.hidden = false;\n spotlight.style.inset = `${Math.max(0, rect.top - padding)}px auto auto ${Math.max(0, rect.left - padding)}px`;\n spotlight.style.inlineSize = `${Math.min(window.innerWidth, rect.width + padding * 2)}px`;\n spotlight.style.blockSize = `${Math.min(window.innerHeight, rect.height + padding * 2)}px`;\n element.style.transform = \"none\";\n positionFloating(target, element, step.dataset.gPlacement || element.dataset.gPlacement || \"bottom-start\");\n }\n\n function showStep(nextIndex, source = \"api\") {\n index = Math.max(0, Math.min(steps.length - 1, nextIndex));\n steps.forEach((step, stepIndex) => {\n step.hidden = stepIndex !== index;\n step.setAttribute(\"aria-hidden\", String(stepIndex !== index));\n });\n if (progress) progress.textContent = `${index + 1} / ${steps.length}`;\n element.querySelectorAll(\"[data-g-tour-prev]\").forEach((button) => { button.disabled = index === 0; });\n element.querySelectorAll(\"[data-g-tour-next]\").forEach((button) => { button.textContent = index === steps.length - 1 ? (button.dataset.gFinishLabel || \"\u5B8C\u6210\") : (button.dataset.gNextLabel || \"\u4E0B\u4E00\u6B65\"); });\n requestAnimationFrame(position);\n emit(element, \"change\", { index, step: steps[index], source });\n }\n\n function openTour(source) {\n if (open) return;\n open = true;\n trigger = source instanceof HTMLElement ? source : document.activeElement;\n element.hidden = false;\n element.setAttribute(\"aria-hidden\", \"false\");\n window.addEventListener(\"resize\", position);\n window.addEventListener(\"scroll\", position, true);\n document.addEventListener(\"keydown\", keydown);\n showStep(Number(element.dataset.gInitialStep || 0), \"open\");\n emit(element, \"open\", { source });\n }\n\n function close(reason = \"api\") {\n if (!open) return;\n open = false;\n element.hidden = true;\n element.setAttribute(\"aria-hidden\", \"true\");\n spotlight.hidden = true;\n window.removeEventListener(\"resize\", position);\n window.removeEventListener(\"scroll\", position, true);\n document.removeEventListener(\"keydown\", keydown);\n trigger?.focus?.({ preventScroll: true });\n emit(element, \"close\", { reason, index });\n }\n\n function click(event) {\n if (event.target.closest(\"[data-g-tour-prev]\")) showStep(index - 1, \"previous\");\n else if (event.target.closest(\"[data-g-tour-next]\")) index === steps.length - 1 ? close(\"complete\") : showStep(index + 1, \"next\");\n else if (event.target.closest(\"[data-g-tour-close], [data-g-tour-skip]\")) close(event.target.closest(\"[data-g-tour-skip]\") ? \"skip\" : \"close\");\n }\n function keydown(event) { if (event.key === \"Escape\" && element.dataset.gDismissible !== \"false\") close(\"escape\"); }\n element.addEventListener(\"click\", click);\n if (startsOpen) queueMicrotask(openTour);\n return { open: openTour, close, next: () => showStep(index + 1, \"api\"), previous: () => showStep(index - 1, \"api\"), go: (stepIndex) => showStep(stepIndex, \"api\"), isOpen: () => open, current: () => index, destroy: () => { close(\"destroy\"); spotlight.remove(); element.removeEventListener(\"click\", click); } };\n}\n\nfunction createCarousel(element) {\n const slides = [...element.querySelectorAll(\".g-carousel-slide, [data-g-carousel-slide]\")];\n const previous = element.querySelector(\".g-carousel-prev, [data-g-carousel-prev]\");\n const next = element.querySelector(\".g-carousel-next, [data-g-carousel-next]\");\n const dots = [...element.querySelectorAll(\".g-carousel-dot, [data-g-carousel-dot]\")];\n if (!slides.length) return null;\n let index = Math.max(0, slides.findIndex((slide) => slide.getAttribute(\"aria-hidden\") !== \"true\"));\n let timer;\n const interval = Number(element.dataset.gInterval || 0);\n const dotHandlers = dots.map((dot, dotIndex) => [dot, () => go(dotIndex, \"dot\")]);\n element.setAttribute(\"aria-roledescription\", \"carousel\");\n function go(nextIndex, source = \"api\") {\n index = (nextIndex + slides.length) % slides.length;\n element.style.setProperty(\"--g-slide-index\", index);\n slides.forEach((slide, slideIndex) => { slide.setAttribute(\"aria-hidden\", String(slideIndex !== index)); slide.inert = slideIndex !== index; });\n dots.forEach((dot, dotIndex) => dot.setAttribute(\"aria-current\", String(dotIndex === index)));\n emit(element, \"change\", { index, source });\n }\n function start() { clearInterval(timer); if (interval > 0 && !matchMedia(\"(prefers-reduced-motion: reduce)\").matches) timer = setInterval(() => go(index + 1, \"auto\"), interval); }\n function stop() { clearInterval(timer); }\n const prevClick = () => go(index - 1, \"previous\");\n const nextClick = () => go(index + 1, \"next\");\n previous?.addEventListener(\"click\", prevClick);\n next?.addEventListener(\"click\", nextClick);\n dotHandlers.forEach(([dot, handler]) => dot.addEventListener(\"click\", handler));\n const focusOut = (event) => { if (!element.contains(event.relatedTarget)) start(); };\n element.addEventListener(\"focusin\", stop);\n element.addEventListener(\"focusout\", focusOut);\n element.addEventListener(\"pointerenter\", stop);\n element.addEventListener(\"pointerleave\", start);\n go(index, \"init\");\n start();\n return { go, next: nextClick, previous: prevClick, start, stop, destroy: () => { stop(); previous?.removeEventListener(\"click\", prevClick); next?.removeEventListener(\"click\", nextClick); dotHandlers.forEach(([dot, handler]) => dot.removeEventListener(\"click\", handler)); element.removeEventListener(\"focusin\", stop); element.removeEventListener(\"focusout\", focusOut); element.removeEventListener(\"pointerenter\", stop); element.removeEventListener(\"pointerleave\", start); } };\n}\n\nfunction createSplitter(element) {\n const handle = element.querySelector(\".g-split-handle, [role='separator']\");\n const panels = [...element.querySelectorAll(\":scope > .g-split-panel\")];\n if (!handle || panels.length < 2) return null;\n const vertical = () => element.dataset.gOrientation === \"vertical\";\n handle.setAttribute(\"role\", \"separator\");\n handle.tabIndex = 0;\n handle.setAttribute(\"aria-orientation\", vertical() ? \"horizontal\" : \"vertical\");\n handle.setAttribute(\"aria-valuemin\", \"10\");\n handle.setAttribute(\"aria-valuemax\", \"90\");\n let activeMove = null;\n let activeUp = null;\n function setPercent(percent) {\n const value = Math.max(10, Math.min(90, percent));\n panels[0].style.flex = `0 0 ${value}%`;\n panels[1].style.flex = \"1 1 0\";\n handle.setAttribute(\"aria-valuenow\", String(Math.round(value)));\n emit(element, \"resize\", { value });\n }\n function pointerDown(event) {\n event.preventDefault();\n handle.setPointerCapture?.(event.pointerId);\n handle.classList.add(\"is-dragging\");\n const rect = element.getBoundingClientRect();\n activeMove = (moveEvent) => setPercent(vertical() ? (moveEvent.clientY - rect.top) / rect.height * 100 : (moveEvent.clientX - rect.left) / rect.width * 100);\n activeUp = () => { handle.classList.remove(\"is-dragging\"); window.removeEventListener(\"pointermove\", activeMove); window.removeEventListener(\"pointerup\", activeUp); window.removeEventListener(\"pointercancel\", activeUp); activeMove = null; activeUp = null; };\n window.addEventListener(\"pointermove\", activeMove);\n window.addEventListener(\"pointerup\", activeUp, { once: true });\n window.addEventListener(\"pointercancel\", activeUp, { once: true });\n }\n function keydown(event) {\n const delta = event.shiftKey ? 10 : 2;\n const current = Number(handle.getAttribute(\"aria-valuenow\") || 50);\n if (event.key === (vertical() ? \"ArrowUp\" : \"ArrowLeft\")) { event.preventDefault(); setPercent(current - delta); }\n else if (event.key === (vertical() ? \"ArrowDown\" : \"ArrowRight\")) { event.preventDefault(); setPercent(current + delta); }\n else if (event.key === \"Home\") { event.preventDefault(); setPercent(10); }\n else if (event.key === \"End\") { event.preventDefault(); setPercent(90); }\n }\n handle.addEventListener(\"pointerdown\", pointerDown);\n handle.addEventListener(\"keydown\", keydown);\n setPercent(Number(element.dataset.gSplit || 50));\n return { set: setPercent, destroy: () => { activeUp?.(); handle.removeEventListener(\"pointerdown\", pointerDown); handle.removeEventListener(\"keydown\", keydown); } };\n}\n\nfunction createTree(element) {\n const items = () => [...element.querySelectorAll(\"[role='treeitem']\")].filter((item) => item.getClientRects().length > 0);\n element.setAttribute(\"role\", \"tree\");\n function focusItem(item) { items().forEach((node) => { node.tabIndex = node === item ? 0 : -1; }); item?.focus(); }\n function keydown(event) {\n const item = event.target.closest(\"[role='treeitem']\");\n if (!item) return;\n const nodes = items();\n const index = nodes.indexOf(item);\n if (event.key === \"ArrowDown\") { event.preventDefault(); focusItem(nodes[index + 1] || nodes[0]); }\n else if (event.key === \"ArrowUp\") { event.preventDefault(); focusItem(nodes[index - 1] || nodes.at(-1)); }\n else if (event.key === \"Home\") { event.preventDefault(); focusItem(nodes[0]); }\n else if (event.key === \"End\") { event.preventDefault(); focusItem(nodes.at(-1)); }\n else if (event.key === \"ArrowRight\") {\n if (item.getAttribute(\"aria-expanded\") === \"false\") { event.preventDefault(); item.setAttribute(\"aria-expanded\", \"true\"); emit(element, \"expand\", { item }); }\n else { const child = item.querySelector(\":scope > [role='group'] [role='treeitem']\"); if (child) { event.preventDefault(); focusItem(child); } }\n }\n else if (event.key === \"ArrowLeft\") {\n if (item.getAttribute(\"aria-expanded\") === \"true\") { event.preventDefault(); item.setAttribute(\"aria-expanded\", \"false\"); emit(element, \"collapse\", { item }); }\n else { const parent = item.parentElement?.closest(\"[role='treeitem']\"); if (parent) { event.preventDefault(); focusItem(parent); } }\n }\n else if (event.key === \"Enter\" || event.key === \" \") { event.preventDefault(); item.setAttribute(\"aria-selected\", String(item.getAttribute(\"aria-selected\") !== \"true\")); emit(element, \"change\", { item }); }\n }\n const first = items()[0];\n items().forEach((item) => { item.tabIndex = item === first ? 0 : -1; });\n element.addEventListener(\"keydown\", keydown);\n return { focus: focusItem, destroy: () => element.removeEventListener(\"keydown\", keydown) };\n}\n\nfunction createDataGrid(element) {\n const cells = () => [...element.querySelectorAll(\"[role='gridcell'], [role='columnheader'], [role='rowheader']\")].filter((cell) => cell.getClientRects().length > 0);\n element.setAttribute(\"role\", \"grid\");\n function focusCell(cell) { cells().forEach((item) => { item.tabIndex = item === cell ? 0 : -1; }); cell?.focus(); }\n function keydown(event) {\n const cell = event.target.closest(\"[role='gridcell'], [role='columnheader'], [role='rowheader']\");\n if (!cell) return;\n const row = cell.closest(\"[role='row']\");\n const rowCells = [...row.querySelectorAll(\"[role='gridcell'], [role='columnheader'], [role='rowheader']\")];\n const rows = [...element.querySelectorAll(\"[role='row']\")];\n const columnIndex = rowCells.indexOf(cell);\n const rowIndex = rows.indexOf(row);\n let target;\n if (event.key === \"ArrowRight\") target = rowCells[columnIndex + 1];\n else if (event.key === \"ArrowLeft\") target = rowCells[columnIndex - 1];\n else if (event.key === \"ArrowDown\") target = rows[rowIndex + 1]?.querySelectorAll(\"[role='gridcell'], [role='columnheader'], [role='rowheader']\")[columnIndex];\n else if (event.key === \"ArrowUp\") target = rows[rowIndex - 1]?.querySelectorAll(\"[role='gridcell'], [role='columnheader'], [role='rowheader']\")[columnIndex];\n else if (event.key === \"Home\") target = event.ctrlKey ? cells()[0] : rowCells[0];\n else if (event.key === \"End\") target = event.ctrlKey ? cells().at(-1) : rowCells.at(-1);\n if (target) { event.preventDefault(); focusCell(target); }\n }\n const first = cells()[0];\n cells().forEach((cell) => { cell.tabIndex = cell === first ? 0 : -1; });\n element.addEventListener(\"keydown\", keydown);\n return { focus: focusCell, destroy: () => element.removeEventListener(\"keydown\", keydown) };\n}\n\nfunction createTableSort(element) {\n const table = element.matches(\"table\") ? element : element.querySelector(\"table\");\n const body = table?.tBodies?.[0];\n const buttons = table ? [...table.querySelectorAll(\"[data-g-sort-key]\")] : [];\n if (!body || !buttons.length) return null;\n const collator = new Intl.Collator(element.lang || document.documentElement.lang || undefined, { numeric: true, sensitivity: \"base\" });\n\n function valueFor(row, key, index, type) {\n const cell = row.querySelector(`[data-g-column=\"${CSS.escape(key)}\"]`) || row.cells[index];\n const raw = cell?.dataset.gSortValue ?? cell?.textContent?.trim() ?? \"\";\n if (type === \"number\") return Number(String(raw).replace(/[^\\d+-.]/g, \"\")) || 0;\n if (type === \"date\") return Date.parse(raw) || 0;\n return raw;\n }\n function sort(button, direction) {\n const key = button.dataset.gSortKey;\n const header = button.closest(\"th, [role='columnheader']\");\n const headers = [...table.querySelectorAll(\"th, [role='columnheader']\")];\n const index = headers.indexOf(header);\n const type = button.dataset.gSortType || \"text\";\n const rows = [...body.rows].filter((row) => !row.hasAttribute(\"data-g-detail-row\") && !row.hasAttribute(\"data-g-group-row\"));\n const details = new Map([...body.querySelectorAll(\"[data-g-detail-row]\")].map((row) => [row.dataset.gDetailRow, row]));\n const stable = rows.map((row, order) => ({ row, order, value: valueFor(row, key, index, type) }));\n stable.sort((left, right) => {\n const result = type === \"text\" ? collator.compare(String(left.value), String(right.value)) : left.value - right.value;\n return (direction === \"descending\" ? -result : result) || left.order - right.order;\n });\n stable.forEach(({ row }) => {\n body.append(row);\n const detail = details.get(row.id);\n if (detail) body.append(detail);\n });\n headers.forEach((item) => item.setAttribute(\"aria-sort\", item === header ? direction : \"none\"));\n buttons.forEach((item) => item.dataset.gSortDirection = item === button ? direction : \"none\");\n emit(element, \"sort\", { key, direction, type, button });\n }\n function click(event) {\n const button = event.target.closest(\"[data-g-sort-key]\");\n if (!button || !element.contains(button)) return;\n const current = button.dataset.gSortDirection || button.closest(\"th, [role='columnheader']\")?.getAttribute(\"aria-sort\") || \"none\";\n sort(button, current === \"ascending\" ? \"descending\" : \"ascending\");\n }\n table.querySelectorAll(\"th, [role='columnheader']\").forEach((header) => {\n if (header.querySelector(\"[data-g-sort-key]\") && !header.hasAttribute(\"aria-sort\")) header.setAttribute(\"aria-sort\", \"none\");\n });\n element.addEventListener(\"click\", click);\n return { sort, destroy: () => element.removeEventListener(\"click\", click) };\n}\n\nfunction createRowSelect(element) {\n const master = element.querySelector(\"[data-g-select-all]\");\n const boxes = () => [...element.querySelectorAll(\"[data-g-select-row]\")].filter((box) => !box.disabled);\n const outputs = () => [...element.querySelectorAll(\"[data-g-selection-count]\")];\n const totals = () => [...element.querySelectorAll(\"[data-g-selection-total]\")];\n const summaries = () => [...element.querySelectorAll(\"[data-g-selection-summary], [data-g-batch-toolbar]\")];\n let lastIndex = -1;\n\n function sync(reason = \"api\") {\n const items = boxes();\n const selected = items.filter((box) => box.checked);\n items.forEach((box) => {\n const row = box.closest(\"tr, [role='row'], .g-list-item, [data-g-selectable-row]\");\n row?.classList.toggle(\"is-selected\", box.checked);\n if (row?.matches(\"tr, [role='row'], [role='option'], [role='tab'], [role='treeitem']\")) row.setAttribute(\"aria-selected\", String(box.checked));\n else row?.removeAttribute(\"aria-selected\");\n });\n if (master) {\n master.checked = items.length > 0 && selected.length === items.length;\n master.indeterminate = selected.length > 0 && selected.length < items.length;\n }\n outputs().forEach((output) => { output.textContent = String(selected.length); });\n totals().forEach((output) => { output.textContent = String(items.length); });\n summaries().forEach((summary) => { summary.hidden = selected.length === 0; });\n element.querySelectorAll(\"[data-g-selection-requires]\").forEach((control) => { control.disabled = selected.length === 0; });\n emit(element, \"selectionchange\", { selected: selected.map((box) => box.value), count: selected.length, reason });\n }\n function change(event) {\n if (event.target === master) boxes().forEach((box) => { box.checked = master.checked; });\n if (event.target.matches?.(\"[data-g-select-row]\")) lastIndex = boxes().indexOf(event.target);\n sync(event.target === master ? \"all\" : \"item\");\n }\n function click(event) {\n const action = event.target.closest?.(\"[data-g-select-all-action], [data-g-select-visible], [data-g-invert-selection], [data-g-clear-selection]\");\n if (action) {\n event.preventDefault();\n if (action.hasAttribute(\"data-g-clear-selection\")) boxes().forEach((item) => { item.checked = false; });\n else if (action.hasAttribute(\"data-g-invert-selection\")) boxes().forEach((item) => { item.checked = !item.checked; });\n else if (action.hasAttribute(\"data-g-select-visible\")) boxes().filter((item) => !item.closest(\"[hidden]\")).forEach((item) => { item.checked = true; });\n else boxes().forEach((item) => { item.checked = true; });\n sync(action.hasAttribute(\"data-g-invert-selection\") ? \"invert\" : action.hasAttribute(\"data-g-clear-selection\") ? \"clear\" : \"all-action\");\n return;\n }\n const box = event.target.closest?.(\"[data-g-select-row]\");\n if (!box || !event.shiftKey || lastIndex < 0) return;\n const items = boxes();\n const current = items.indexOf(box);\n if (current < 0) return;\n const [start, end] = [lastIndex, current].sort((a, b) => a - b);\n items.slice(start, end + 1).forEach((item) => { item.checked = box.checked; });\n sync(\"range\");\n }\n element.addEventListener(\"change\", change);\n element.addEventListener(\"click\", click);\n sync(\"init\");\n return {\n sync,\n clear: () => { boxes().forEach((box) => { box.checked = false; }); sync(\"clear\"); },\n selectAll: () => { boxes().forEach((box) => { box.checked = true; }); sync(\"all-api\"); },\n invert: () => { boxes().forEach((box) => { box.checked = !box.checked; }); sync(\"invert-api\"); },\n selected: () => boxes().filter((box) => box.checked),\n destroy: () => { element.removeEventListener(\"change\", change); element.removeEventListener(\"click\", click); }\n };\n}\n\nfunction createTransfer(element) {\n const source = element.querySelector(\"[data-g-transfer-source]\");\n const target = element.querySelector(\"[data-g-transfer-target]\");\n if (!source || !target) return null;\n const optionSelector = \"[data-g-transfer-option]\";\n const options = (pane) => [...pane.querySelectorAll(optionSelector)];\n const checked = (pane) => options(pane).filter((option) => option.querySelector(\"input[type='checkbox']\")?.checked || option.getAttribute(\"aria-selected\") === \"true\");\n function setChecked(option, value) {\n const input = option.querySelector(\"input[type='checkbox']\");\n if (input) input.checked = value;\n if (input) option.removeAttribute(\"aria-selected\");\n else { option.setAttribute(\"role\", option.getAttribute(\"role\") || \"option\"); option.setAttribute(\"aria-selected\", String(value)); }\n }\n function sync(reason = \"api\") {\n [[source, \"source\"], [target, \"target\"]].forEach(([pane, name]) => {\n const list = options(pane);\n const count = element.querySelector(`[data-g-transfer-count=\"${name}\"]`);\n const empty = pane.querySelector(\"[data-g-transfer-empty]\");\n if (count) count.textContent = String(list.length);\n if (empty) empty.hidden = list.length !== 0;\n });\n element.querySelectorAll(\"[data-g-transfer-move]\").forEach((button) => {\n const direction = button.dataset.gTransferMove;\n const from = direction.endsWith(\"target\") ? source : target;\n button.disabled = direction.startsWith(\"all\") ? options(from).length === 0 : checked(from).length === 0;\n });\n emit(element, \"transferchange\", { source: options(source).map((item) => item.dataset.gValue), target: options(target).map((item) => item.dataset.gValue), reason });\n }\n function move(direction) {\n const toTarget = direction.endsWith(\"target\");\n const from = toTarget ? source : target;\n const to = toTarget ? target : source;\n const moving = direction.startsWith(\"all\") ? options(from) : checked(from);\n moving.forEach((option) => { setChecked(option, false); to.append(option); });\n sync(direction);\n moving[0]?.focus?.();\n }\n function click(event) {\n const button = event.target.closest(\"[data-g-transfer-move]\");\n if (button) { event.preventDefault(); move(button.dataset.gTransferMove); return; }\n const option = event.target.closest(optionSelector);\n if (option && !option.querySelector(\"input[type='checkbox']\") && !event.target.matches(\"button,a\")) { setChecked(option, option.getAttribute(\"aria-selected\") !== \"true\"); sync(\"option\"); }\n }\n function change(event) {\n const option = event.target.closest(optionSelector);\n if (option) { setChecked(option, event.target.checked); sync(\"option\"); }\n }\n function input(event) {\n const field = event.target.closest(\"[data-g-transfer-search]\");\n if (!field) return;\n const pane = field.dataset.gTransferSearch === \"target\" ? target : source;\n const query = field.value.normalize(\"NFKD\").toLocaleLowerCase().trim();\n options(pane).forEach((option) => { option.hidden = Boolean(query) && !String(option.dataset.gFilterText || option.textContent).normalize(\"NFKD\").toLocaleLowerCase().includes(query); });\n }\n function keydown(event) {\n const option = event.target.closest(optionSelector);\n if (!option || !(event.ctrlKey || event.metaKey)) return;\n if (event.key === \"ArrowRight\" && source.contains(option)) { event.preventDefault(); setChecked(option, true); move(\"selected-to-target\"); }\n if (event.key === \"ArrowLeft\" && target.contains(option)) { event.preventDefault(); setChecked(option, true); move(\"selected-to-source\"); }\n }\n element.addEventListener(\"click\", click);\n element.addEventListener(\"change\", change);\n element.addEventListener(\"input\", input);\n element.addEventListener(\"keydown\", keydown);\n sync(\"init\");\n return { move, sync, values: () => options(target).map((item) => item.dataset.gValue), destroy: () => { element.removeEventListener(\"click\", click); element.removeEventListener(\"change\", change); element.removeEventListener(\"input\", input); element.removeEventListener(\"keydown\", keydown); } };\n}\n\nfunction createPicker(element) {\n const panel = element.querySelector(\"[data-g-picker-panel]\");\n const trigger = element.querySelector(\"[data-g-picker-trigger]\");\n const input = element.querySelector(\"[data-g-picker-input]\");\n const valuesHost = element.querySelector(\"[data-g-picker-values]\");\n const output = element.querySelector(\"[data-g-picker-output]\");\n const options = () => [...element.querySelectorAll(\"[data-g-picker-option]\")];\n const multiple = element.hasAttribute(\"data-g-picker-multiple\");\n if (!panel || (!trigger && !input) || !options().length) return null;\n let open = !panel.hidden;\n function selected() { return options().filter((option) => option.getAttribute(\"aria-selected\") === \"true\"); }\n function sync(reason = \"api\") {\n const current = selected();\n options().forEach((option) => option.classList.toggle(\"is-selected\", current.includes(option)));\n if (output) {\n const value = multiple ? current.map((option) => option.dataset.gValue || option.textContent.trim()).join(\",\") : current[0]?.dataset.gValue || \"\";\n output.value = value;\n output.setAttribute(\"value\", value);\n }\n element.querySelectorAll(\"[data-g-picker-count]\").forEach((node) => { node.textContent = String(current.length); });\n if (valuesHost) {\n valuesHost.replaceChildren(...current.map((option) => {\n const chip = document.createElement(\"span\"); chip.className = \"g-picker-value\"; chip.dataset.gValue = option.dataset.gValue || option.textContent.trim();\n const label = document.createElement(\"span\"); label.className = \"g-picker-value-label\"; label.textContent = option.dataset.gLabel || option.querySelector(\".g-picker-option-title\")?.textContent || option.textContent.trim(); chip.append(label);\n const remove = document.createElement(\"button\"); remove.type = \"button\"; remove.className = \"g-picker-value-remove\"; remove.dataset.gPickerRemove = chip.dataset.gValue; remove.setAttribute(\"aria-label\", `\u79FB\u9664 ${label.textContent}`); remove.textContent = \"\u00D7\"; chip.append(remove); return chip;\n }));\n }\n emit(element, \"pickerchange\", { values: current.map((option) => option.dataset.gValue), reason });\n }\n function setOpen(value, reason = \"api\") {\n open = value; panel.hidden = !open; trigger?.setAttribute(\"aria-expanded\", String(open)); input?.setAttribute(\"aria-expanded\", String(open));\n if (open) queueMicrotask(() => input?.focus());\n emit(element, open ? \"open\" : \"close\", { reason });\n }\n function choose(option, reason = \"option\") {\n const next = option.getAttribute(\"aria-selected\") !== \"true\";\n if (!multiple) options().forEach((item) => item.setAttribute(\"aria-selected\", \"false\"));\n option.setAttribute(\"aria-selected\", String(next)); sync(reason); if (!multiple) setOpen(false, \"selection\");\n }\n function click(event) {\n const remove = event.target.closest(\"[data-g-picker-remove]\");\n if (remove) { const option = options().find((item) => (item.dataset.gValue || item.textContent.trim()) === remove.dataset.gPickerRemove); option?.setAttribute(\"aria-selected\", \"false\"); sync(\"remove\"); return; }\n const option = event.target.closest(\"[data-g-picker-option]\");\n if (option) { event.preventDefault(); choose(option); return; }\n if (event.target.closest(\"[data-g-picker-trigger]\")) { const inputTarget = event.target.closest(\"[data-g-picker-input]\"); if (!inputTarget) event.preventDefault(); setOpen(inputTarget ? true : !open, \"trigger\"); }\n }\n function filter() {\n const query = String(input?.value || \"\").normalize(\"NFKD\").toLocaleLowerCase().trim(); let visible = 0;\n options().forEach((option) => { const match = !query || String(option.dataset.gFilterText || option.textContent).normalize(\"NFKD\").toLocaleLowerCase().includes(query); option.hidden = !match; if (match) visible += 1; });\n element.querySelectorAll(\"[data-g-picker-empty]\").forEach((empty) => { empty.hidden = visible !== 0; });\n if (!open) setOpen(true, \"input\");\n }\n function keydown(event) {\n if (event.key === \"Escape\" && open) { event.preventDefault(); setOpen(false, \"escape\"); trigger?.focus(); return; }\n if (![\"ArrowDown\", \"ArrowUp\", \"Home\", \"End\", \"Enter\", \" \"].includes(event.key)) return;\n const visible = options().filter((option) => !option.hidden); if (!visible.length) return;\n const current = visible.indexOf(document.activeElement);\n if ((event.key === \"Enter\" || event.key === \" \") && current >= 0) { event.preventDefault(); choose(visible[current], \"keyboard\"); return; }\n if ([\"ArrowDown\", \"ArrowUp\", \"Home\", \"End\"].includes(event.key)) { event.preventDefault(); setOpen(true, \"keyboard\"); const index = event.key === \"Home\" ? 0 : event.key === \"End\" ? visible.length - 1 : event.key === \"ArrowDown\" ? (current + 1 + visible.length) % visible.length : (current - 1 + visible.length) % visible.length; visible[index].focus(); }\n }\n function outside(event) { if (open && !element.contains(event.target)) setOpen(false, \"outside\"); }\n element.addEventListener(\"click\", click); element.addEventListener(\"keydown\", keydown); input?.addEventListener(\"input\", filter); document.addEventListener(\"pointerdown\", outside);\n options().forEach((option) => { option.tabIndex ||= -1; option.setAttribute(\"role\", option.getAttribute(\"role\") || \"option\"); if (!option.hasAttribute(\"aria-selected\")) option.setAttribute(\"aria-selected\", \"false\"); });\n sync(\"init\"); setOpen(open, \"init\");\n return { open: () => setOpen(true), close: () => setOpen(false), selected, choose, destroy: () => { element.removeEventListener(\"click\", click); element.removeEventListener(\"keydown\", keydown); input?.removeEventListener(\"input\", filter); document.removeEventListener(\"pointerdown\", outside); } };\n}\n\nfunction createCascader(element) {\n const columns = () => [...element.querySelectorAll(\"[data-g-cascade-column]\")];\n const output = element.querySelector(\"[data-g-cascade-output]\");\n const path = element.querySelector(\"[data-g-cascade-path]\");\n if (!columns().length) return null;\n function choose(option, reason = \"option\") {\n const column = option.closest(\"[data-g-cascade-column]\"); const index = columns().indexOf(column);\n [...column.querySelectorAll(\"[data-g-cascade-option]\")].forEach((item) => { item.setAttribute(\"aria-current\", String(item === option)); });\n columns().slice(index + 1).forEach((next) => { next.hidden = next.id !== option.dataset.gCascadeNext; });\n const values = columns().filter((item) => !item.hidden).map((item) => item.querySelector('[data-g-cascade-option][aria-current=\"true\"]')).filter(Boolean);\n if (path) path.textContent = values.map((item) => item.dataset.gLabel || item.textContent.trim()).join(\" / \");\n if (output) { const value = values.at(-1)?.dataset.gValue || \"\"; output.value = value; output.setAttribute(\"value\", value); }\n emit(element, \"cascadechange\", { value: output?.value, path: values.map((item) => item.dataset.gValue), reason });\n }\n function click(event) { const option = event.target.closest(\"[data-g-cascade-option]\"); if (option) { event.preventDefault(); choose(option); } }\n function keydown(event) { const option = event.target.closest(\"[data-g-cascade-option]\"); if (!option) return; if ([\"Enter\", \" \", \"ArrowRight\"].includes(event.key)) { event.preventDefault(); choose(option, \"keyboard\"); const next = option.dataset.gCascadeNext && targetById(option.dataset.gCascadeNext); next?.querySelector(\"[data-g-cascade-option]\")?.focus(); } if (event.key === \"ArrowLeft\") { event.preventDefault(); const column = option.closest(\"[data-g-cascade-column]\"); columns()[Math.max(0, columns().indexOf(column) - 1)]?.querySelector('[data-g-cascade-option][aria-current=\"true\"], [data-g-cascade-option]')?.focus(); } }\n element.addEventListener(\"click\", click); element.addEventListener(\"keydown\", keydown);\n return { choose, destroy: () => { element.removeEventListener(\"click\", click); element.removeEventListener(\"keydown\", keydown); } };\n}\n\nfunction createSavedChoice(element) {\n const items = () => [...element.querySelectorAll(\"[data-g-saved-choice-item]\")];\n if (!items().length) return null;\n function select(item, reason = \"option\") { const multiple = element.hasAttribute(\"data-g-multiple\"); if (!multiple) items().forEach((option) => option.setAttribute(\"aria-pressed\", \"false\")); item.setAttribute(\"aria-pressed\", String(multiple ? item.getAttribute(\"aria-pressed\") !== \"true\" : true)); emit(element, \"savedchoice\", { values: items().filter((option) => option.getAttribute(\"aria-pressed\") === \"true\").map((option) => option.dataset.gValue), reason }); }\n function click(event) { const item = event.target.closest(\"[data-g-saved-choice-item]\"); if (item) { event.preventDefault(); select(item); } }\n element.addEventListener(\"click\", click); return { select, destroy: () => element.removeEventListener(\"click\", click) };\n}\n\nfunction createBuilderList(element) {\n const list = element.querySelector(\"[data-g-builder-items]\"); const template = targetById(element.dataset.gBuilderTemplate); if (!list || !template) return null;\n function sync(reason = \"api\") { [...list.children].forEach((item, index) => { item.dataset.gBuilderIndex = String(index); item.querySelectorAll(\"[data-g-builder-position]\").forEach((output) => { output.textContent = String(index + 1); }); }); emit(element, \"builderchange\", { count: list.children.length, reason }); }\n function add() { const fragment = template.content ? template.content.cloneNode(true) : template.cloneNode(true); list.append(fragment); sync(\"add\"); list.lastElementChild?.querySelector(focusableSelector)?.focus(); }\n function click(event) { const control = event.target.closest(\"[data-g-builder-add], [data-g-builder-remove], [data-g-builder-up], [data-g-builder-down]\"); if (!control) return; event.preventDefault(); if (control.hasAttribute(\"data-g-builder-add\")) { add(); return; } const item = control.closest(\"[data-g-builder-item]\"); if (!item) return; if (control.hasAttribute(\"data-g-builder-remove\")) item.remove(); else if (control.hasAttribute(\"data-g-builder-up\") && item.previousElementSibling) list.insertBefore(item, item.previousElementSibling); else if (control.hasAttribute(\"data-g-builder-down\") && item.nextElementSibling) list.insertBefore(item.nextElementSibling, item); sync(control.hasAttribute(\"data-g-builder-remove\") ? \"remove\" : \"move\"); }\n element.addEventListener(\"click\", click); sync(\"init\"); return { add, sync, destroy: () => element.removeEventListener(\"click\", click) };\n}\n\nfunction createRowDisclosure(element) {\n const triggers = [...element.querySelectorAll(\"[data-g-row-toggle]\")];\n if (!triggers.length) return null;\n function descendants(parent) { return [...element.querySelectorAll(`[data-g-parent=\"${CSS.escape(parent)}\"]`)]; }\n function set(trigger, expanded, reason = \"api\") {\n const value = trigger.dataset.gRowToggle;\n const target = targetById(value);\n const children = target ? [target] : descendants(value);\n trigger.setAttribute(\"aria-expanded\", String(expanded));\n if (target?.id) trigger.setAttribute(\"aria-controls\", target.id);\n children.forEach((child) => {\n child.hidden = !expanded;\n child.setAttribute(\"aria-hidden\", String(!expanded));\n if (!expanded && child.id) {\n descendants(child.id).forEach((nested) => { nested.hidden = true; nested.setAttribute(\"aria-hidden\", \"true\"); });\n }\n });\n emit(element, \"disclosure\", { trigger, targets: children, expanded, reason });\n }\n function click(event) {\n const trigger = event.target.closest(\"[data-g-row-toggle]\");\n if (trigger) set(trigger, trigger.getAttribute(\"aria-expanded\") !== \"true\", \"toggle\");\n }\n function keydown(event) {\n const trigger = event.target.closest(\"[data-g-row-toggle]\");\n if (trigger && event.key === \"Escape\" && trigger.getAttribute(\"aria-expanded\") === \"true\") { event.preventDefault(); set(trigger, false, \"escape\"); trigger.focus(); }\n }\n triggers.forEach((trigger) => {\n const expanded = trigger.getAttribute(\"aria-expanded\") === \"true\";\n set(trigger, expanded, \"init\");\n });\n element.addEventListener(\"click\", click);\n element.addEventListener(\"keydown\", keydown);\n return { set, destroy: () => { element.removeEventListener(\"click\", click); element.removeEventListener(\"keydown\", keydown); } };\n}\n\nfunction createColumnToggle(element) {\n const table = element.querySelector(\"table, [role='grid']\");\n const toggles = [...element.querySelectorAll(\"[data-g-toggle-column]\")];\n if (!table || !toggles.length) return null;\n function set(key, visible, source) {\n const active = toggles.filter((toggle) => toggle.dataset.gToggleColumn === key ? visible : toggle.checked);\n if (!visible && active.length === 0 && element.dataset.gAllowEmptyColumns !== \"true\") {\n if (source) source.checked = true;\n return false;\n }\n table.querySelectorAll(`[data-g-column=\"${CSS.escape(key)}\"]`).forEach((cell) => {\n cell.hidden = !visible;\n cell.setAttribute(\"aria-hidden\", String(!visible));\n });\n element.querySelectorAll(`[data-g-toggle-column=\"${CSS.escape(key)}\"]`).forEach((toggle) => { toggle.checked = visible; });\n emit(element, \"columnchange\", { key, visible });\n return true;\n }\n function change(event) { if (event.target.matches(\"[data-g-toggle-column]\")) set(event.target.dataset.gToggleColumn, event.target.checked, event.target); }\n toggles.forEach((toggle) => set(toggle.dataset.gToggleColumn, toggle.checked, toggle));\n element.addEventListener(\"change\", change);\n return { set, destroy: () => element.removeEventListener(\"change\", change) };\n}\n\nfunction createDataFilter(element) {\n const input = element.querySelector(\"[data-g-filter-input]\") || (element.matches(\"input\") ? element : null);\n const scope = targetById(element.dataset.gFilterTarget) || element;\n const items = () => [...scope.querySelectorAll(\"[data-g-filter-item]\")];\n const empty = scope.querySelector(\"[data-g-filter-empty]\");\n const output = element.querySelector(\"[data-g-filter-count]\") || scope.querySelector(\"[data-g-filter-count]\");\n if (!input || !items().length) return null;\n const normalize = (value) => String(value).normalize(\"NFKD\").toLocaleLowerCase().trim();\n function filter(value = input.value) {\n const terms = normalize(value).split(/\\s+/).filter(Boolean);\n let visible = 0;\n items().forEach((item) => {\n const haystack = normalize(item.dataset.gFilterText || item.textContent);\n const match = terms.every((term) => haystack.includes(term));\n item.hidden = !match;\n const related = item.id\n ? [...scope.querySelectorAll(`[data-g-detail-row=\"${CSS.escape(item.id)}\"], [data-g-parent=\"${CSS.escape(item.id)}\"]`)]\n : [];\n related.forEach((row) => {\n if (!match && !row.hasAttribute(\"data-g-filter-previous-hidden\")) {\n row.dataset.gFilterPreviousHidden = String(row.hidden);\n row.hidden = true;\n } else if (match && row.hasAttribute(\"data-g-filter-previous-hidden\")) {\n row.hidden = row.dataset.gFilterPreviousHidden === \"true\";\n delete row.dataset.gFilterPreviousHidden;\n }\n });\n if (match) visible += 1;\n });\n if (empty) empty.hidden = visible !== 0;\n if (output) output.textContent = String(visible);\n emit(element, \"filter\", { value, terms, count: visible });\n return visible;\n }\n const inputHandler = () => filter();\n input.addEventListener(\"input\", inputHandler);\n filter();\n return { filter, clear: () => { input.value = \"\"; filter(); }, destroy: () => input.removeEventListener(\"input\", inputHandler) };\n}\n\nfunction createDataView(element) {\n const controls = [...element.querySelectorAll(\"[data-g-view]\")];\n const panels = [...element.querySelectorAll(\"[data-g-view-panel]\")];\n if (!controls.length) return null;\n function select(view, focus = false) {\n element.dataset.gCurrentView = view;\n controls.forEach((control) => {\n const active = control.dataset.gView === view;\n control.setAttribute(\"aria-pressed\", String(active));\n control.tabIndex = active ? 0 : -1;\n if (active && focus) control.focus();\n });\n panels.forEach((panel) => { panel.hidden = panel.dataset.gViewPanel !== view; });\n emit(element, \"viewchange\", { view });\n }\n function click(event) { const control = event.target.closest(\"[data-g-view]\"); if (control) select(control.dataset.gView); }\n function keydown(event) {\n const current = event.target.closest(\"[data-g-view]\");\n if (!current) return;\n const index = controls.indexOf(current);\n let next;\n if (event.key === \"ArrowRight\" || event.key === \"ArrowDown\") next = controls[(index + 1) % controls.length];\n else if (event.key === \"ArrowLeft\" || event.key === \"ArrowUp\") next = controls[(index - 1 + controls.length) % controls.length];\n else if (event.key === \"Home\") next = controls[0];\n else if (event.key === \"End\") next = controls.at(-1);\n else return;\n event.preventDefault();\n select(next.dataset.gView, true);\n }\n element.addEventListener(\"click\", click);\n element.addEventListener(\"keydown\", keydown);\n select(element.dataset.gCurrentView || controls.find((control) => control.getAttribute(\"aria-pressed\") === \"true\")?.dataset.gView || controls[0].dataset.gView);\n return { select, destroy: () => { element.removeEventListener(\"click\", click); element.removeEventListener(\"keydown\", keydown); } };\n}\n\nfunction createToast(element) {\n let timer;\n let remaining = Number(element.dataset.gTimeout || 5000);\n let startedAt;\n const pauses = new Set();\n function dismiss(reason = \"timeout\") { clearTimeout(timer); if (emit(element, \"dismiss\", { reason })) element.remove(); }\n function schedule() { clearTimeout(timer); if (pauses.size || remaining <= 0 || element.dataset.gPersistent === \"true\") return; startedAt = Date.now(); timer = setTimeout(() => dismiss(), remaining); }\n function pause(reason = \"api\") { if (!pauses.size && startedAt) remaining = Math.max(0, remaining - (Date.now() - startedAt)); startedAt = null; pauses.add(reason); clearTimeout(timer); }\n function resume(reason = \"api\") { pauses.delete(reason); schedule(); }\n const pointerEnter = () => pause(\"pointer\");\n const pointerLeave = () => resume(\"pointer\");\n const focusIn = () => pause(\"focus\");\n const focusOut = (event) => { if (!element.contains(event.relatedTarget)) resume(\"focus\"); };\n element.addEventListener(\"pointerenter\", pointerEnter);\n element.addEventListener(\"pointerleave\", pointerLeave);\n element.addEventListener(\"focusin\", focusIn);\n element.addEventListener(\"focusout\", focusOut);\n schedule();\n return { dismiss, pause, resume, destroy: () => { clearTimeout(timer); element.removeEventListener(\"pointerenter\", pointerEnter); element.removeEventListener(\"pointerleave\", pointerLeave); element.removeEventListener(\"focusin\", focusIn); element.removeEventListener(\"focusout\", focusOut); } };\n}\n\nfunction createCopy(element) {\n async function copy() {\n const target = targetById(element.dataset.gCopy);\n const value = element.dataset.gCopyValue ?? target?.value ?? target?.textContent ?? \"\";\n try {\n const text = String(value);\n if (navigator.clipboard?.writeText) await navigator.clipboard.writeText(text);\n else {\n const fallback = document.createElement(\"textarea\");\n fallback.value = text;\n fallback.setAttribute(\"readonly\", \"\");\n fallback.style.cssText = \"position:fixed;opacity:0;pointer-events:none\";\n document.body.append(fallback);\n fallback.select();\n const copied = document.execCommand(\"copy\");\n fallback.remove();\n if (!copied) throw new Error(\"Clipboard API is unavailable.\");\n }\n element.dataset.gCopyState = \"success\";\n emit(element, \"copy\", { value: text });\n } catch (error) {\n element.dataset.gCopyState = \"error\";\n emit(element, \"error\", { action: \"copy\", error });\n }\n }\n element.addEventListener(\"click\", copy);\n return { copy, destroy: () => element.removeEventListener(\"click\", copy) };\n}\n\nfunction createFullscreen(element) {\n const target = targetById(element.dataset.gFullscreen) || document.documentElement;\n async function toggle() {\n try {\n if (document.fullscreenElement) await document.exitFullscreen?.();\n else if (target.requestFullscreen) await target.requestFullscreen();\n else throw new Error(\"Fullscreen API is unavailable.\");\n } catch (error) { emit(element, \"error\", { action: \"fullscreen\", error }); }\n }\n function change() {\n const active = document.fullscreenElement === target;\n element.setAttribute(\"aria-pressed\", String(active));\n emit(element, \"fullscreenchange\", { active, target });\n }\n element.setAttribute(\"aria-pressed\", String(document.fullscreenElement === target));\n element.addEventListener(\"click\", toggle);\n document.addEventListener(\"fullscreenchange\", change);\n return { toggle, destroy: () => { element.removeEventListener(\"click\", toggle); document.removeEventListener(\"fullscreenchange\", change); } };\n}\n\nfunction createScrollTop(element) {\n const threshold = Number(element.dataset.gScrollThreshold || 320);\n function update() { element.hidden = window.scrollY < threshold; }\n function scroll() { window.scrollTo({ top: 0, behavior: matchMedia(\"(prefers-reduced-motion: reduce)\").matches ? \"auto\" : \"smooth\" }); }\n element.addEventListener(\"click\", scroll);\n window.addEventListener(\"scroll\", update, { passive: true });\n update();\n return { update, scroll, destroy: () => { element.removeEventListener(\"click\", scroll); window.removeEventListener(\"scroll\", update); } };\n}\n\nfunction createNavToggle(element) {\n const target = targetById(element.dataset.gNavToggle);\n if (!target) return null;\n let closeTimer;\n if (!target.hasAttribute(\"data-g-nav-open\")) target.dataset.gNavOpen = String(!target.hidden || target.classList.contains(\"is-open\"));\n const isOpen = () => target.dataset.gNavOpen === \"true\";\n const syncExpanded = (value) => document.querySelectorAll(\"[data-g-nav-toggle]\").forEach((trigger) => {\n if (trigger.dataset.gNavToggle?.replace(/^#/, \"\") === target.id) trigger.setAttribute(\"aria-expanded\", String(value));\n });\n element.setAttribute(\"aria-controls\", target.id);\n syncExpanded(isOpen());\n target.setAttribute(\"aria-hidden\", String(!isOpen()));\n\n function show() {\n if (isOpen() || !emit(target, \"beforeopen\", { trigger: element })) return;\n clearTimeout(closeTimer);\n target.dataset.gNavOpen = \"true\";\n target.hidden = false;\n target.setAttribute(\"aria-hidden\", \"false\");\n syncExpanded(true);\n requestAnimationFrame(() => target.classList.add(\"is-open\"));\n document.addEventListener(\"keydown\", keydown);\n if (element.dataset.gDismissOutside === \"true\") document.addEventListener(\"pointerdown\", outside, true);\n emit(target, \"open\", { trigger: element });\n }\n function hide(reason = \"api\") {\n if (!isOpen() || !emit(target, \"beforeclose\", { reason, trigger: element })) return;\n target.dataset.gNavOpen = \"false\";\n target.classList.remove(\"is-open\");\n target.setAttribute(\"aria-hidden\", \"true\");\n syncExpanded(false);\n document.removeEventListener(\"keydown\", keydown);\n document.removeEventListener(\"pointerdown\", outside, true);\n closeTimer = window.setTimeout(() => { if (!isOpen()) target.hidden = true; }, 300);\n if (reason === \"escape\") element.focus({ preventScroll: true });\n emit(target, \"close\", { reason, trigger: element });\n }\n function toggle() { isOpen() ? hide(\"toggle\") : show(); }\n function keydown(event) { if (event.key === \"Escape\") { event.preventDefault(); hide(\"escape\"); } }\n function outside(event) { if (!target.contains(event.target) && !element.contains(event.target)) hide(\"outside\"); }\n function targetClose() {\n document.removeEventListener(\"keydown\", keydown);\n document.removeEventListener(\"pointerdown\", outside, true);\n }\n element.addEventListener(\"click\", toggle);\n target.addEventListener(\"gardener:close\", targetClose);\n return { open: show, close: hide, toggle, isOpen, destroy: () => { clearTimeout(closeTimer); element.removeEventListener(\"click\", toggle); target.removeEventListener(\"gardener:close\", targetClose); targetClose(); } };\n}\n\nfunction createRovingNav(element) {\n const selector = \".g-nav-item, .g-nav-rail-item, .g-bottom-nav-item, .g-mobile-tab-item, .g-command-nav-item, [role='menuitem']\";\n const items = () => [...element.querySelectorAll(selector)].filter((item) => !item.disabled && item.getAttribute(\"aria-disabled\") !== \"true\" && !item.hidden);\n const vertical = () => element.getAttribute(\"aria-orientation\") === \"vertical\" || element.dataset.gOrientation === \"vertical\";\n function select(item, focus = false) {\n if (!item) return;\n items().forEach((node) => { node.tabIndex = node === item ? 0 : -1; });\n if (element.dataset.gSelection === \"true\") {\n items().forEach((node) => node.setAttribute(\"aria-selected\", String(node === item)));\n emit(element, \"change\", { item });\n }\n if (focus) item.focus();\n }\n function click(event) { const item = event.target.closest(selector); if (item && element.contains(item)) select(item); }\n function keydown(event) {\n const current = event.target.closest(selector);\n if (!current) return;\n const nodes = items();\n const index = nodes.indexOf(current);\n const rtl = getComputedStyle(element).direction === \"rtl\";\n const forward = vertical() ? \"ArrowDown\" : rtl ? \"ArrowLeft\" : \"ArrowRight\";\n const backward = vertical() ? \"ArrowUp\" : rtl ? \"ArrowRight\" : \"ArrowLeft\";\n let next;\n if (event.key === forward) next = nodes[(index + 1 + nodes.length) % nodes.length];\n else if (event.key === backward) next = nodes[(index - 1 + nodes.length) % nodes.length];\n else if (event.key === \"Home\") next = nodes[0];\n else if (event.key === \"End\") next = nodes.at(-1);\n else return;\n event.preventDefault();\n select(next, true);\n }\n const initial = items().find((item) => item.matches(\"[aria-current], [aria-selected='true'], .is-active\")) || items()[0];\n select(initial);\n element.addEventListener(\"click\", click);\n element.addEventListener(\"keydown\", keydown);\n return { select, destroy: () => { element.removeEventListener(\"click\", click); element.removeEventListener(\"keydown\", keydown); } };\n}\n\nfunction createContextMenu(element) {\n const target = element.querySelector(\"[data-g-context-target]\") || element;\n const menu = element.querySelector(\"[data-g-context-menu-panel]\") || element.querySelector(\".g-context-menu\");\n if (!menu || menu === target) return null;\n let open = !menu.hidden;\n let previousFocus = null;\n const items = () => visibleFocusable(menu).filter((item) => item.getAttribute(\"aria-disabled\") !== \"true\");\n menu.setAttribute(\"role\", menu.getAttribute(\"role\") || \"menu\");\n menu.hidden = true;\n\n function position(x, y) {\n menu.style.inset = \"auto\";\n menu.style.left = `${Math.max(4, x)}px`;\n menu.style.top = `${Math.max(4, y)}px`;\n const rect = menu.getBoundingClientRect();\n menu.style.left = `${Math.max(4, Math.min(x, window.innerWidth - rect.width - 4))}px`;\n menu.style.top = `${Math.max(4, Math.min(y, window.innerHeight - rect.height - 4))}px`;\n }\n function show(x, y, source = target) {\n if (!emit(element, \"beforeopen\", { source })) return;\n open = true;\n previousFocus = document.activeElement;\n menu.hidden = false;\n menu.setAttribute(\"aria-hidden\", \"false\");\n position(x, y);\n document.addEventListener(\"pointerdown\", outside, true);\n document.addEventListener(\"keydown\", keydown);\n items()[0]?.focus();\n emit(element, \"open\", { source, x, y });\n }\n function hide(reason = \"api\", restore = false) {\n if (!open) return;\n open = false;\n menu.hidden = true;\n menu.setAttribute(\"aria-hidden\", \"true\");\n document.removeEventListener(\"pointerdown\", outside, true);\n document.removeEventListener(\"keydown\", keydown);\n if (restore) previousFocus?.focus?.({ preventScroll: true });\n emit(element, \"close\", { reason });\n }\n function context(event) { event.preventDefault(); show(event.clientX, event.clientY, event.target); }\n function targetKeydown(event) {\n if ((event.shiftKey && event.key === \"F10\") || event.key === \"ContextMenu\") {\n event.preventDefault();\n const rect = target.getBoundingClientRect();\n show(rect.left + 8, rect.top + 8, target);\n }\n }\n function outside(event) { if (!menu.contains(event.target)) hide(\"outside\"); }\n function keydown(event) {\n const nodes = items();\n const index = nodes.indexOf(document.activeElement);\n if (event.key === \"Escape\") { event.preventDefault(); hide(\"escape\", true); }\n else if (event.key === \"ArrowDown\") { event.preventDefault(); (nodes[index + 1] || nodes[0])?.focus(); }\n else if (event.key === \"ArrowUp\") { event.preventDefault(); (nodes[index - 1] || nodes.at(-1))?.focus(); }\n else if (event.key === \"Home\") { event.preventDefault(); nodes[0]?.focus(); }\n else if (event.key === \"End\") { event.preventDefault(); nodes.at(-1)?.focus(); }\n }\n function menuClick(event) { if (event.target.closest(\"[role='menuitem'], .g-menu-item\")) hide(\"select\"); }\n target.addEventListener(\"contextmenu\", context);\n target.addEventListener(\"keydown\", targetKeydown);\n menu.addEventListener(\"click\", menuClick);\n return { open: show, close: hide, isOpen: () => open, destroy: () => { target.removeEventListener(\"contextmenu\", context); target.removeEventListener(\"keydown\", targetKeydown); menu.removeEventListener(\"click\", menuClick); document.removeEventListener(\"pointerdown\", outside, true); document.removeEventListener(\"keydown\", keydown); } };\n}\n\nfunction createScrollspy(element) {\n const links = [...element.querySelectorAll(\"a[href^='#']\")];\n const entries = links.map((link) => ({ link, section: targetById(link.getAttribute(\"href\")) })).filter((entry) => entry.section);\n if (!entries.length) return null;\n const offset = Number(element.dataset.gScrollspyOffset || 96);\n const scrollRoot = targetById(element.dataset.gScrollspyRoot) || window;\n let current = null;\n let frame;\n function update() {\n frame = null;\n let active = entries[0];\n const rootTop = scrollRoot === window ? 0 : scrollRoot.getBoundingClientRect().top;\n for (const entry of entries) if (entry.section.getBoundingClientRect().top <= rootTop + offset) active = entry;\n const atEnd = scrollRoot === window\n ? window.scrollY + window.innerHeight >= document.documentElement.scrollHeight - 1\n : scrollRoot.scrollTop + scrollRoot.clientHeight >= scrollRoot.scrollHeight - 1;\n if (atEnd) active = entries.at(-1);\n entries.forEach((entry) => {\n if (entry === active) entry.link.setAttribute(\"aria-current\", \"location\");\n else entry.link.removeAttribute(\"aria-current\");\n });\n if (current !== active) {\n current = active;\n emit(element, \"change\", { link: active.link, section: active.section });\n }\n }\n function schedule() { if (!frame) frame = requestAnimationFrame(update); }\n scrollRoot.addEventListener(\"scroll\", schedule, { passive: true });\n window.addEventListener(\"resize\", schedule);\n update();\n return { update, destroy: () => { if (frame) cancelAnimationFrame(frame); scrollRoot.removeEventListener(\"scroll\", schedule); window.removeEventListener(\"resize\", schedule); } };\n}\n\nfunction createJumpNav(element) {\n const select = element.matches(\"select\") ? element : element.querySelector(\"select\");\n if (!select) return null;\n function jump() {\n const target = targetById(select.value);\n if (!target) return;\n target.scrollIntoView({ behavior: matchMedia(\"(prefers-reduced-motion: reduce)\").matches ? \"auto\" : \"smooth\", block: \"start\" });\n if (target.id && history.replaceState) history.replaceState(null, \"\", `#${target.id}`);\n emit(element, \"change\", { target, value: select.value });\n }\n select.addEventListener(\"change\", jump);\n return { jump, destroy: () => select.removeEventListener(\"change\", jump) };\n}\n\nfunction createDropzone(element) {\n let depth = 0;\n const input = element.querySelector(\"input[type='file']\");\n const nativeLabel = element.matches(\"label\") && Boolean(input);\n function enter(event) { event.preventDefault(); depth += 1; element.classList.add(\"is-dragging\"); }\n function over(event) { event.preventDefault(); if (event.dataTransfer) event.dataTransfer.dropEffect = \"copy\"; }\n function leave(event) { event.preventDefault(); depth = Math.max(0, depth - 1); if (!depth) element.classList.remove(\"is-dragging\"); }\n function drop(event) {\n event.preventDefault();\n depth = 0;\n element.classList.remove(\"is-dragging\");\n const files = [...(event.dataTransfer?.files || [])];\n emit(element, \"drop\", { files, dataTransfer: event.dataTransfer });\n }\n function choose() { const files = [...(input?.files || [])]; emit(element, \"files\", { files, input }); }\n function activate(event) {\n if (!input || event.target === input || event.target.closest(\"button, a, input, select, textarea\")) return;\n if (event.type === \"keydown\" && event.key !== \"Enter\" && event.key !== \" \") return;\n event.preventDefault();\n input.click();\n }\n if (input) {\n if (!nativeLabel && !element.hasAttribute(\"role\")) element.setAttribute(\"role\", \"button\");\n if (!nativeLabel && !element.hasAttribute(\"tabindex\")) element.tabIndex = 0;\n input.addEventListener(\"change\", choose);\n if (!nativeLabel) {\n element.addEventListener(\"click\", activate);\n element.addEventListener(\"keydown\", activate);\n }\n }\n element.addEventListener(\"dragenter\", enter);\n element.addEventListener(\"dragover\", over);\n element.addEventListener(\"dragleave\", leave);\n element.addEventListener(\"drop\", drop);\n return { destroy: () => { element.removeEventListener(\"dragenter\", enter); element.removeEventListener(\"dragover\", over); element.removeEventListener(\"dragleave\", leave); element.removeEventListener(\"drop\", drop); input?.removeEventListener(\"change\", choose); element.removeEventListener(\"click\", activate); element.removeEventListener(\"keydown\", activate); } };\n}\n\nfunction createCommandPalette(element) {\n let trigger = null;\n let open = !element.hidden;\n if (!element.id) element.id = uid(\"g-command-palette\");\n const panel = element.querySelector(\"[role='dialog'], .g-command-palette\") || element;\n const triggers = [...document.querySelectorAll(\"[data-g-command-trigger], [aria-controls]\")].filter((button) => (button.dataset.gCommandTrigger || button.getAttribute(\"aria-controls\"))?.replace(/^#/, \"\") === element.id);\n panel.setAttribute(\"role\", \"dialog\");\n panel.setAttribute(\"aria-modal\", \"true\");\n element.setAttribute(\"aria-hidden\", String(!open));\n triggers.forEach((button) => {\n button.setAttribute(\"aria-haspopup\", \"dialog\");\n button.setAttribute(\"aria-controls\", element.id);\n button.setAttribute(\"aria-expanded\", String(open));\n });\n function syncExpanded(value) { triggers.forEach((button) => button.setAttribute(\"aria-expanded\", String(value))); }\n function show(source = document.activeElement) {\n if (open || !emit(element, \"beforeopen\", { source })) return;\n open = true;\n trigger = source;\n if (trigger instanceof HTMLElement && trigger.hasAttribute(\"data-g-command-trigger\")) trigger.setAttribute(\"aria-expanded\", \"true\");\n element.hidden = false;\n element.setAttribute(\"aria-hidden\", \"false\");\n element.classList.add(\"is-open\");\n syncExpanded(true);\n (visibleFocusable(panel)[0] || panel).focus();\n emit(element, \"open\", { source });\n }\n function hide(reason = \"api\") {\n if (!open || !emit(element, \"beforeclose\", { reason })) return;\n open = false;\n element.hidden = true;\n element.setAttribute(\"aria-hidden\", \"true\");\n element.classList.remove(\"is-open\");\n syncExpanded(false);\n if (trigger instanceof HTMLElement && trigger.hasAttribute(\"data-g-command-trigger\")) trigger.setAttribute(\"aria-expanded\", \"false\");\n trigger?.focus?.();\n emit(element, \"close\", { reason });\n }\n function keydown(event) {\n if ((event.ctrlKey || event.metaKey) && event.key.toLocaleLowerCase() === \"k\") { event.preventDefault(); open ? hide(\"shortcut\") : show(document.activeElement); }\n else if (open && event.key === \"Escape\") { event.preventDefault(); hide(\"escape\"); }\n else if (open && event.key === \"Tab\") {\n const items = visibleFocusable(panel);\n if (!items.length) { event.preventDefault(); panel.focus(); return; }\n const first = items[0];\n const last = items.at(-1);\n if (event.shiftKey && document.activeElement === first) { event.preventDefault(); last.focus(); }\n else if (!event.shiftKey && document.activeElement === last) { event.preventDefault(); first.focus(); }\n }\n }\n function backdrop(event) { if (event.target === element) hide(\"backdrop\"); }\n if (open) { open = false; queueMicrotask(show); }\n document.addEventListener(\"keydown\", keydown);\n element.addEventListener(\"pointerdown\", backdrop);\n return { open: show, close: hide, toggle: (source) => open ? hide(\"toggle\") : show(source), isOpen: () => open, destroy: () => { document.removeEventListener(\"keydown\", keydown); element.removeEventListener(\"pointerdown\", backdrop); open = false; element.hidden = true; element.setAttribute(\"aria-hidden\", \"true\"); element.classList.remove(\"is-open\"); syncExpanded(false); } };\n}\n\nfunction createUploadManager(element) {\n const list = element.querySelector(\"[data-g-upload-list]\") || element;\n const input = element.querySelector(\"input[type='file'][data-g-upload-input]\");\n const template = targetById(element.dataset.gUploadTemplate);\n const items = () => [...list.querySelectorAll(\"[data-g-upload-item]\")];\n function statusText(item) {\n const state = item.dataset.gStatus || \"queued\";\n const progress = Math.max(0, Math.min(100, Number(item.dataset.gProgress || 0)));\n return state === \"success\" ? \"\u5DF2\u5B8C\u6210\" : state === \"error\" ? \"\u4E0A\u4F20\u5931\u8D25\" : state === \"paused\" ? \"\u5DF2\u6682\u505C\" : state === \"uploading\" ? `\u4E0A\u4F20\u4E2D ${progress}%` : \"\u7B49\u5F85\u4E0A\u4F20\";\n }\n function sync(reason = \"api\") {\n const current = items();\n current.forEach((item) => {\n const progress = Math.max(0, Math.min(100, Number(item.dataset.gProgress || 0)));\n item.style.setProperty(\"--g-progress\", `${progress}%`);\n const bar = item.querySelector(\"[data-g-upload-progress]\");\n if (bar) { bar.style.setProperty(\"--g-progress\", `${progress}%`); bar.setAttribute(\"aria-valuenow\", String(progress)); }\n const status = item.querySelector(\"[data-g-upload-status]\");\n if (status) status.textContent = statusText(item);\n item.querySelectorAll(\"[data-g-upload-action='pause']\").forEach((button) => { button.textContent = item.dataset.gStatus === \"paused\" ? \"\u7EE7\u7EED\" : \"\u6682\u505C\"; });\n });\n const counts = { total: current.length, success: current.filter((item) => item.dataset.gStatus === \"success\").length, error: current.filter((item) => item.dataset.gStatus === \"error\").length, active: current.filter((item) => [\"queued\", \"uploading\", \"paused\"].includes(item.dataset.gStatus || \"queued\")).length };\n Object.entries(counts).forEach(([name, value]) => element.querySelectorAll(`[data-g-upload-count=\"${name}\"]`).forEach((node) => { node.textContent = String(value); }));\n emit(element, \"uploadchange\", { items: current, counts, reason });\n }\n function addFile(file) {\n let item;\n if (template?.content) { const fragment = template.content.cloneNode(true); item = fragment.querySelector(\"[data-g-upload-item]\") || fragment.firstElementChild; list.append(fragment); }\n if (!item) { item = document.createElement(\"div\"); item.className = \"g-upload-item\"; item.dataset.gUploadItem = \"\"; item.innerHTML = '<span class=\"g-file-icon\">FILE</span><span class=\"g-file-main\"><strong class=\"g-file-name\"></strong><span class=\"g-file-meta\"></span><span class=\"g-upload-status\" data-g-upload-status></span></span><span class=\"g-upload-progress\" data-g-upload-progress role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\"><i class=\"g-upload-progress-bar\"></i></span><span class=\"g-upload-actions\"><button class=\"g-btn g-btn-ghost g-btn-sm\" type=\"button\" data-g-upload-action=\"remove\">\u79FB\u9664</button></span>'; list.append(item); }\n item.dataset.gStatus = \"queued\"; item.dataset.gProgress = \"0\"; item.querySelector(\".g-file-name\")?.replaceChildren(document.createTextNode(file.name));\n const meta = item.querySelector(\".g-file-meta\"); if (meta) meta.textContent = file.size ? `${Math.max(1, Math.round(file.size / 1024))} KB` : \"\u7B49\u5F85\u8BA1\u7B97\";\n emit(element, \"uploadadd\", { file, item });\n }\n function action(item, name) {\n if (name === \"remove\") { item.remove(); sync(\"remove\"); return; }\n if (name === \"retry\") { item.dataset.gStatus = \"queued\"; item.dataset.gProgress = \"0\"; }\n if (name === \"pause\") item.dataset.gStatus = item.dataset.gStatus === \"paused\" ? \"uploading\" : \"paused\";\n if (name === \"advance\" && item.dataset.gStatus !== \"paused\") { const progress = Math.min(100, Number(item.dataset.gProgress || 0) + 25); item.dataset.gProgress = String(progress); item.dataset.gStatus = progress >= 100 ? \"success\" : \"uploading\"; }\n sync(name);\n }\n function click(event) { const button = event.target.closest(\"[data-g-upload-action]\"); const item = button?.closest(\"[data-g-upload-item]\"); if (button && item) { event.preventDefault(); action(item, button.dataset.gUploadAction); } }\n function change() { [...(input?.files || [])].forEach(addFile); if (input) input.value = \"\"; sync(\"files\"); }\n element.addEventListener(\"click\", click); input?.addEventListener(\"change\", change); sync(\"init\");\n return { sync, addFile, items, destroy: () => { element.removeEventListener(\"click\", click); input?.removeEventListener(\"change\", change); } };\n}\n\nfunction createFileBrowser(element) {\n const items = () => [...element.querySelectorAll(\"[data-g-file-item]\")];\n const search = element.querySelector(\"[data-g-file-search]\");\n let selected = items().find((item) => item.getAttribute(\"aria-selected\") === \"true\") || null;\n function select(item, reason = \"api\") {\n items().forEach((entry) => { const active = entry === item; entry.setAttribute(\"aria-selected\", String(active)); entry.tabIndex = active ? 0 : -1; });\n selected = item;\n element.querySelectorAll(\"[data-g-file-selection]\").forEach((node) => { node.textContent = item?.dataset.gFileName || item?.querySelector(\".g-file-name, .g-media-label\")?.textContent || \"\u672A\u9009\u62E9\"; });\n emit(element, \"fileselect\", { item, value: item?.dataset.gValue, reason });\n }\n function filter() {\n const query = String(search?.value || \"\").normalize(\"NFKD\").toLocaleLowerCase().trim();\n let visible = 0;\n items().forEach((item) => { const match = !query || String(item.dataset.gFilterText || item.dataset.gFileName || item.textContent).normalize(\"NFKD\").toLocaleLowerCase().includes(query); item.hidden = !match; if (match) visible += 1; });\n element.querySelectorAll(\"[data-g-file-count]\").forEach((node) => { node.textContent = String(visible); });\n emit(element, \"filefilter\", { query, visible });\n }\n function click(event) {\n const view = event.target.closest(\"[data-g-file-view]\");\n if (view) { element.dataset.gView = view.dataset.gFileView; element.querySelectorAll(\"[data-g-file-view]\").forEach((button) => button.setAttribute(\"aria-pressed\", String(button === view))); emit(element, \"fileview\", { view: element.dataset.gView }); return; }\n const item = event.target.closest(\"[data-g-file-item]\"); if (item) select(item, \"pointer\");\n }\n function keydown(event) {\n const item = event.target.closest(\"[data-g-file-item]\"); if (!item || ![\"ArrowDown\", \"ArrowUp\", \"ArrowRight\", \"ArrowLeft\", \"Home\", \"End\", \"Enter\", \" \"].includes(event.key)) return;\n const visible = items().filter((entry) => !entry.hidden); if (!visible.length) return; event.preventDefault();\n if ([\"Enter\", \" \"].includes(event.key)) { select(item, \"keyboard\"); return; }\n const current = visible.indexOf(item); const forward = [\"ArrowDown\", \"ArrowRight\"].includes(event.key); const index = event.key === \"Home\" ? 0 : event.key === \"End\" ? visible.length - 1 : (current + (forward ? 1 : -1) + visible.length) % visible.length; visible[index].focus();\n }\n element.addEventListener(\"click\", click); element.addEventListener(\"keydown\", keydown); search?.addEventListener(\"input\", filter);\n items().forEach((item, index) => {\n item.tabIndex = item === selected || (!selected && index === 0) ? 0 : -1;\n item.setAttribute(\"role\", item.getAttribute(\"role\") || \"option\");\n if (!item.hasAttribute(\"aria-selected\")) item.setAttribute(\"aria-selected\", \"false\");\n const collection = item.parentElement;\n if (collection) {\n if (!collection.hasAttribute(\"role\")) collection.setAttribute(\"role\", \"listbox\");\n if (!collection.hasAttribute(\"aria-label\") && !collection.hasAttribute(\"aria-labelledby\")) collection.setAttribute(\"aria-label\", element.getAttribute(\"aria-label\") || \"\u6587\u4EF6\u5217\u8868\");\n }\n });\n if (selected) select(selected, \"init\"); filter();\n return { select, filter, selected: () => selected, destroy: () => { element.removeEventListener(\"click\", click); element.removeEventListener(\"keydown\", keydown); search?.removeEventListener(\"input\", filter); } };\n}\n\nfunction createEditorShell(element) {\n const surface = element.querySelector(\"[data-g-editor-surface]\");\n if (!surface) return null;\n const tools = [...element.querySelectorAll(\"[data-g-editor-command]\")];\n function counts() {\n const text = String(\"value\" in surface ? surface.value : surface.innerText || surface.textContent || \"\");\n const trimmed = text.trim(); const words = trimmed ? (trimmed.match(/[\\p{L}\\p{N}]+/gu) || []).length : 0;\n element.querySelectorAll(\"[data-g-editor-count='characters']\").forEach((node) => { node.textContent = String(text.length); });\n element.querySelectorAll(\"[data-g-editor-count='words']\").forEach((node) => { node.textContent = String(words); });\n emit(element, \"editorchange\", { text, characters: text.length, words });\n }\n function run(tool) {\n const command = tool.dataset.gEditorCommand; const value = tool.dataset.gEditorValue || null;\n surface.focus();\n if (command === \"undo\" || command === \"redo\" || surface.isContentEditable) document.execCommand?.(command, false, value);\n if (tool.hasAttribute(\"aria-pressed\")) tool.setAttribute(\"aria-pressed\", String(tool.getAttribute(\"aria-pressed\") !== \"true\"));\n counts(); emit(element, \"editorcommand\", { command, value, tool });\n }\n function click(event) { const tool = event.target.closest(\"[data-g-editor-command]\"); if (tool) { event.preventDefault(); run(tool); } }\n function keydown(event) { if ((event.ctrlKey || event.metaKey) && [\"b\", \"i\", \"u\"].includes(event.key.toLocaleLowerCase())) { event.preventDefault(); const map = { b: \"bold\", i: \"italic\", u: \"underline\" }; const tool = tools.find((item) => item.dataset.gEditorCommand === map[event.key.toLocaleLowerCase()]); if (tool) run(tool); } }\n element.addEventListener(\"click\", click); surface.addEventListener(\"input\", counts); surface.addEventListener(\"keydown\", keydown); counts();\n return { run, counts, surface, destroy: () => { element.removeEventListener(\"click\", click); surface.removeEventListener(\"input\", counts); surface.removeEventListener(\"keydown\", keydown); } };\n}\n\nfunction createRevisionCompare(element) {\n const controls = [...element.querySelectorAll(\"[data-g-revision-view]\")];\n function setView(view, reason = \"api\") { element.dataset.gRevisionView = view; controls.forEach((button) => button.setAttribute(\"aria-pressed\", String(button.dataset.gRevisionView === view))); emit(element, \"revisionview\", { view, reason }); }\n function click(event) { const button = event.target.closest(\"[data-g-revision-view]\"); if (button) { event.preventDefault(); setView(button.dataset.gRevisionView, \"pointer\"); } }\n element.addEventListener(\"click\", click); setView(element.dataset.gRevisionView || controls.find((button) => button.getAttribute(\"aria-pressed\") === \"true\")?.dataset.gRevisionView || \"split\", \"init\");\n return { setView, view: () => element.dataset.gRevisionView, destroy: () => element.removeEventListener(\"click\", click) };\n}\n\nfunction createAutosave(element) {\n const scope = targetById(element.dataset.gAutosaveScope) || element.closest(\"form, [data-g-editor-shell]\") || element.parentElement;\n const delay = Math.max(150, Number(element.dataset.gAutosaveDelay || 900));\n let timer = 0; let saveTimer = 0;\n function setState(state, reason = \"api\") { element.dataset.gAutosaveState = state; const label = element.querySelector(\"[data-g-autosave-label]\"); if (label) label.textContent = state === \"dirty\" ? \"\u6709\u672A\u4FDD\u5B58\u66F4\u6539\" : state === \"saving\" ? \"\u6B63\u5728\u4FDD\u5B58\u2026\" : state === \"error\" ? \"\u4FDD\u5B58\u5931\u8D25\" : \"\u5DF2\u4FDD\u5B58\"; emit(element, \"autosavestate\", { state, reason }); }\n function save(reason = \"api\") { clearTimeout(timer); clearTimeout(saveTimer); setState(\"saving\", reason); saveTimer = window.setTimeout(() => setState(\"saved\", \"complete\"), 260); }\n function dirty() { clearTimeout(timer); setState(\"dirty\", \"input\"); timer = window.setTimeout(() => save(\"delay\"), delay); }\n function click(event) { if (event.target.closest(\"[data-g-autosave-now]\")) { event.preventDefault(); save(\"button\"); } }\n scope?.addEventListener(\"input\", dirty); scope?.addEventListener(\"change\", dirty); element.addEventListener(\"click\", click); setState(element.dataset.gAutosaveState || \"saved\", \"init\");\n return { save, state: () => element.dataset.gAutosaveState, destroy: () => { clearTimeout(timer); clearTimeout(saveTimer); scope?.removeEventListener(\"input\", dirty); scope?.removeEventListener(\"change\", dirty); element.removeEventListener(\"click\", click); } };\n}\n\nfunction createQuantityStepper(element) {\n const input = element.querySelector(\"[data-g-quantity-input]\") || element.querySelector(\"input[type='number']\");\n const decrement = element.querySelector(\"[data-g-quantity-decrement]\");\n const increment = element.querySelector(\"[data-g-quantity-increment]\");\n if (!input) return null;\n const limits = () => ({ min: numeric(input.min, 0), max: input.max === \"\" ? Infinity : numeric(input.max, Infinity), step: Math.max(.000001, numeric(input.step, 1)) });\n function set(value, reason = \"api\") {\n const { min, max, step } = limits();\n const next = Math.min(max, Math.max(min, numeric(value, min)));\n const precision = Math.max(0, String(step).split(\".\")[1]?.length || 0);\n input.value = String(Number(next.toFixed(precision)));\n decrement?.toggleAttribute(\"disabled\", next <= min);\n increment?.toggleAttribute(\"disabled\", next >= max);\n element.dataset.gQuantityValue = input.value;\n emit(element, \"quantitychange\", { value: next, reason });\n return next;\n }\n function click(event) {\n if (event.target.closest(\"[data-g-quantity-decrement]\")) set(numeric(input.value, 0) - limits().step, \"decrement\");\n if (event.target.closest(\"[data-g-quantity-increment]\")) set(numeric(input.value, 0) + limits().step, \"increment\");\n }\n function change() { set(input.value, \"input\"); }\n element.addEventListener(\"click\", click);\n input.addEventListener(\"change\", change);\n set(input.value, \"init\");\n return { value: () => numeric(input.value, 0), set, increment: () => set(numeric(input.value, 0) + limits().step, \"api\"), decrement: () => set(numeric(input.value, 0) - limits().step, \"api\"), destroy: () => { element.removeEventListener(\"click\", click); input.removeEventListener(\"change\", change); } };\n}\n\nfunction createSkuSelector(element) {\n const groups = [...element.querySelectorAll(\"[data-g-sku-group]\")];\n const output = element.querySelector(\"[data-g-sku-output]\");\n const summary = element.querySelector(\"[data-g-sku-selection]\");\n if (!groups.length) return null;\n function options(group) { return group ? [...group.querySelectorAll(\"[data-g-sku-option]\")] : []; }\n function selection() {\n return Object.fromEntries(groups.map((group, index) => {\n const chosen = options(group).find((option) => option.getAttribute(\"aria-pressed\") === \"true\");\n return [group.dataset.gSkuGroup || `option${index + 1}`, chosen?.dataset.gValue || chosen?.textContent.trim() || \"\"];\n }));\n }\n function sync(reason = \"api\") {\n const value = selection();\n const complete = Object.values(value).every(Boolean);\n element.classList.toggle(\"is-complete\", complete);\n element.dataset.gSkuComplete = String(complete);\n if (output) output.value = JSON.stringify(value);\n if (summary) summary.textContent = Object.values(value).filter(Boolean).join(\" / \") || element.dataset.gEmptyLabel || \"\u8BF7\u9009\u62E9\u89C4\u683C\";\n emit(element, \"skuchange\", { value, complete, reason });\n return value;\n }\n function choose(option, reason = \"pointer\") {\n if (!option || option.disabled || option.getAttribute(\"aria-disabled\") === \"true\") return;\n const group = option.closest(\"[data-g-sku-group]\");\n options(group).forEach((item) => { item.setAttribute(\"aria-pressed\", String(item === option)); item.tabIndex = item === option ? 0 : -1; });\n sync(reason);\n }\n function click(event) { const option = event.target.closest(\"[data-g-sku-option]\"); if (option && element.contains(option)) choose(option); }\n function keydown(event) {\n const current = event.target.closest(\"[data-g-sku-option]\");\n if (!current) return;\n if ([\"Enter\", \" \"].includes(event.key)) { event.preventDefault(); choose(current, \"keyboard\"); return; }\n if (![\"ArrowLeft\", \"ArrowRight\", \"ArrowUp\", \"ArrowDown\", \"Home\", \"End\"].includes(event.key)) return;\n event.preventDefault();\n const enabled = options(current.closest(\"[data-g-sku-group]\")).filter((item) => !item.disabled && item.getAttribute(\"aria-disabled\") !== \"true\");\n const index = enabled.indexOf(current);\n const next = event.key === \"Home\" ? enabled[0] : event.key === \"End\" ? enabled.at(-1) : [\"ArrowRight\", \"ArrowDown\"].includes(event.key) ? enabled[index + 1] || enabled[0] : enabled[index - 1] || enabled.at(-1);\n next?.focus(); choose(next, \"keyboard\");\n }\n groups.forEach((group) => { const items = options(group); const selected = items.find((item) => item.getAttribute(\"aria-pressed\") === \"true\") || items.find((item) => !item.disabled && item.getAttribute(\"aria-disabled\") !== \"true\"); items.forEach((item) => { item.setAttribute(\"aria-pressed\", String(item === selected)); item.tabIndex = item === selected ? 0 : -1; }); });\n element.addEventListener(\"click\", click); element.addEventListener(\"keydown\", keydown); sync(\"init\");\n return { value: selection, select: (groupName, value) => { const group = groups.find((item) => item.dataset.gSkuGroup === groupName); choose(options(group).find((item) => (item.dataset.gValue || item.textContent.trim()) === value), \"api\"); }, destroy: () => { element.removeEventListener(\"click\", click); element.removeEventListener(\"keydown\", keydown); } };\n}\n\nfunction createCart(element) {\n const locale = element.dataset.gLocale || document.documentElement.lang || \"zh-CN\";\n const currency = element.dataset.gCurrency || \"CNY\";\n const formatter = new Intl.NumberFormat(locale, { style: \"currency\", currency });\n const number = (value) => Number.isFinite(Number(value)) ? Number(value) : 0;\n function update(reason = \"api\") {\n const items = [...element.querySelectorAll(\"[data-g-cart-item]\")];\n let subtotal = 0; let count = 0;\n items.forEach((item) => {\n const input = item.querySelector(\"[data-g-quantity-input]\") || item.querySelector(\"input[type='number']\");\n const quantity = Math.max(0, number(input?.value || item.dataset.gQuantity || 1));\n const total = number(item.dataset.gUnitPrice) * quantity;\n subtotal += total; count += quantity;\n const line = item.querySelector(\"[data-g-line-total]\");\n if (line) line.textContent = formatter.format(total / 100);\n });\n const discount = number(element.dataset.gDiscount);\n const shipping = number(element.dataset.gShipping);\n const tax = number(element.dataset.gTax);\n const total = Math.max(0, subtotal - discount + shipping + tax);\n const values = { \"[data-g-cart-subtotal]\": subtotal, \"[data-g-cart-discount]\": -discount, \"[data-g-cart-shipping]\": shipping, \"[data-g-cart-tax]\": tax, \"[data-g-cart-total]\": total };\n Object.entries(values).forEach(([selector, value]) => { element.querySelectorAll(selector).forEach((node) => { node.textContent = formatter.format(value / 100); }); });\n element.querySelectorAll(\"[data-g-cart-count]\").forEach((node) => { node.textContent = String(count); });\n element.querySelector(\"[data-g-cart-empty]\")?.toggleAttribute(\"hidden\", items.length > 0);\n element.classList.toggle(\"is-empty\", items.length === 0);\n emit(element, \"cartchange\", { subtotal, discount, shipping, tax, total, count, reason });\n return { subtotal, discount, shipping, tax, total, count };\n }\n function click(event) { const remove = event.target.closest(\"[data-g-cart-remove]\"); if (remove) { const item = remove.closest(\"[data-g-cart-item]\"); if (item && emit(item, \"cartremove\", { item })) { item.remove(); update(\"remove\"); } } }\n function change(event) { if (event.target.matches(\"[data-g-quantity-input], input[type='number']\")) update(\"quantity\"); }\n function quantity(event) { if (element.contains(event.target)) update(\"quantity\"); }\n element.addEventListener(\"click\", click); element.addEventListener(\"change\", change); element.addEventListener(\"gardener:quantitychange\", quantity); update(\"init\");\n return { update, summary: () => update(\"api\"), destroy: () => { element.removeEventListener(\"click\", click); element.removeEventListener(\"change\", change); element.removeEventListener(\"gardener:quantitychange\", quantity); } };\n}\n\nfunction createCoupon(element) {\n const input = element.querySelector(\"[data-g-coupon-input]\") || element.querySelector(\"input\");\n const status = element.querySelector(\"[data-g-coupon-status]\");\n if (!input) return null;\n const validCodes = (element.dataset.gValidCodes || \"\").split(\",\").map((code) => code.trim().toLocaleUpperCase()).filter(Boolean);\n function setState(state, code = \"\", reason = \"api\") {\n element.classList.toggle(\"is-applied\", state === \"applied\"); element.classList.toggle(\"is-invalid\", state === \"invalid\");\n element.dataset.gCouponState = state; input.setAttribute(\"aria-invalid\", String(state === \"invalid\"));\n if (status) { status.textContent = state === \"applied\" ? element.dataset.gAppliedMessage || `\u4F18\u60E0\u7801 ${code} \u5DF2\u4F7F\u7528` : state === \"invalid\" ? element.dataset.gInvalidMessage || \"\u4F18\u60E0\u7801\u65E0\u6548\u6216\u5DF2\u8FC7\u671F\" : element.dataset.gIdleMessage || \"\"; status.setAttribute(\"role\", state === \"invalid\" ? \"alert\" : \"status\"); }\n emit(element, \"couponchange\", { state, code, reason });\n }\n function apply(reason = \"button\") { const code = input.value.trim().toLocaleUpperCase(); if (!code || (validCodes.length && !validCodes.includes(code))) setState(\"invalid\", code, reason); else { input.value = code; setState(\"applied\", code, reason); } }\n function clear() { input.value = \"\"; setState(\"idle\", \"\", \"clear\"); input.focus(); }\n function click(event) { if (event.target.closest(\"[data-g-coupon-apply]\")) { event.preventDefault(); apply(); } if (event.target.closest(\"[data-g-coupon-clear]\")) { event.preventDefault(); clear(); } }\n function keydown(event) { if (event.key === \"Enter\") { event.preventDefault(); apply(\"keyboard\"); } }\n element.addEventListener(\"click\", click); input.addEventListener(\"keydown\", keydown); setState(\"idle\", \"\", \"init\");\n return { apply, clear, state: () => element.dataset.gCouponState, destroy: () => { element.removeEventListener(\"click\", click); input.removeEventListener(\"keydown\", keydown); } };\n}\n\nfunction register(name, factory) {\n if (!name || typeof factory !== \"function\") throw new TypeError(\"Gardener.register requires a name and factory function.\");\n registry.set(name, factory);\n}\n\nfunction createPullRefresh(element) {\n const content = element.querySelector(\".g-mobile-pull-refresh-content\") || element.firstElementChild;\n const indicator = element.querySelector(\"[data-g-pull-indicator]\");\n const threshold = numeric(element.dataset.gPullThreshold, 72);\n let startY = 0; let distance = 0; let tracking = false; let refreshing = false;\n function paint(value) { distance = Math.max(0, Math.min(value, threshold * 1.5)); element.style.setProperty(\"--g-pull-distance\", `${distance}px`); element.classList.toggle(\"is-pulling\", tracking); if (indicator) indicator.textContent = distance >= threshold ? element.dataset.gReleaseLabel || \"\u677E\u5F00\u5237\u65B0\" : element.dataset.gPullLabel || \"\u4E0B\u62C9\u5237\u65B0\"; }\n function begin(event) { if (refreshing || element.scrollTop > 0 || event.pointerType === \"mouse\" && event.button !== 0) return; startY = event.clientY; tracking = true; element.setPointerCapture?.(event.pointerId); }\n function move(event) { if (!tracking) return; const delta = event.clientY - startY; if (delta <= 0) return paint(0); if (delta > 8) event.preventDefault(); paint(Math.sqrt(delta) * 8); }\n function finish() { if (!refreshing) return; refreshing = false; element.classList.remove(\"is-refreshing\"); element.setAttribute(\"aria-busy\", \"false\"); paint(0); if (indicator) indicator.textContent = element.dataset.gPullLabel || \"\u4E0B\u62C9\u5237\u65B0\"; emit(element, \"refreshcomplete\"); }\n function refresh(reason = \"gesture\") { if (refreshing || !emit(element, \"refresh\", { reason, complete: finish })) return; refreshing = true; tracking = false; element.classList.add(\"is-refreshing\"); element.setAttribute(\"aria-busy\", \"true\"); paint(threshold / 2); if (indicator) indicator.textContent = element.dataset.gRefreshingLabel || \"\u6B63\u5728\u5237\u65B0\u2026\"; const timeout = numeric(element.dataset.gRefreshTimeout, 0); if (timeout > 0) window.setTimeout(finish, timeout); }\n function end() { if (!tracking) return; tracking = false; element.classList.remove(\"is-pulling\"); distance >= threshold ? refresh() : paint(0); }\n function click(event) { if (event.target.closest(\"[data-g-refresh]\")) refresh(\"button\"); }\n element.addEventListener(\"pointerdown\", begin); element.addEventListener(\"pointermove\", move, { passive: false }); element.addEventListener(\"pointerup\", end); element.addEventListener(\"pointercancel\", end); element.addEventListener(\"click\", click);\n return { refresh, complete: finish, isRefreshing: () => refreshing, destroy: () => { element.removeEventListener(\"pointerdown\", begin); element.removeEventListener(\"pointermove\", move); element.removeEventListener(\"pointerup\", end); element.removeEventListener(\"pointercancel\", end); element.removeEventListener(\"click\", click); content?.style.removeProperty(\"transform\"); element.style.removeProperty(\"--g-pull-distance\"); } };\n}\n\nfunction createInfiniteLoad(element) {\n const sentinel = element.querySelector(\"[data-g-infinite-sentinel]\") || element;\n let loading = false; let done = false; let observer;\n function complete(options = {}) { loading = false; done = Boolean(options.done); element.classList.toggle(\"is-loading\", false); element.classList.toggle(\"is-done\", done); element.setAttribute(\"aria-busy\", \"false\"); if (done) observer?.disconnect(); emit(element, \"loadcomplete\", { done }); }\n function load(reason = \"observer\") { if (loading || done || !emit(element, \"loadmore\", { reason, complete })) return; loading = true; element.classList.add(\"is-loading\"); element.setAttribute(\"aria-busy\", \"true\"); }\n function click(event) { if (event.target.closest(\"[data-g-infinite-load-more]\")) load(\"button\"); }\n if (typeof IntersectionObserver !== \"undefined\") { observer = new IntersectionObserver((entries) => { if (entries.some((entry) => entry.isIntersecting)) load(); }, { rootMargin: element.dataset.gRootMargin || \"200px\" }); observer.observe(sentinel); }\n element.addEventListener(\"click\", click);\n return { load, complete, isLoading: () => loading, destroy: () => { observer?.disconnect(); element.removeEventListener(\"click\", click); } };\n}\n\nfunction createSwipeActions(element) {\n let startX = 0; let startY = 0; let tracking = false;\n function set(revealed, reason = \"api\") { element.classList.toggle(\"is-revealed\", revealed); element.querySelector(\"[data-g-swipe-toggle]\")?.setAttribute(\"aria-expanded\", String(revealed)); emit(element, \"swipechange\", { revealed, reason }); }\n function begin(event) { if (event.pointerType === \"mouse\" && event.button !== 0) return; startX = event.clientX; startY = event.clientY; tracking = true; element.setPointerCapture?.(event.pointerId); }\n function end(event) { if (!tracking) return; tracking = false; const dx = event.clientX - startX; const dy = event.clientY - startY; if (Math.abs(dx) < 36 || Math.abs(dx) < Math.abs(dy)) return; const rtl = getComputedStyle(element).direction === \"rtl\"; set(rtl ? dx > 0 : dx < 0, \"gesture\"); }\n function click(event) { if (event.target.closest(\"[data-g-swipe-toggle]\")) set(!element.classList.contains(\"is-revealed\"), \"button\"); else if (event.target.closest(\"[data-g-swipe-close]\")) set(false, \"action\"); }\n function keydown(event) { if (event.key === \"Escape\") set(false, \"keyboard\"); }\n element.addEventListener(\"pointerdown\", begin); element.addEventListener(\"pointerup\", end); element.addEventListener(\"pointercancel\", () => { tracking = false; }); element.addEventListener(\"click\", click); element.addEventListener(\"keydown\", keydown);\n return { reveal: () => set(true), close: () => set(false), toggle: () => set(!element.classList.contains(\"is-revealed\")), destroy: () => { element.removeEventListener(\"pointerdown\", begin); element.removeEventListener(\"pointerup\", end); element.removeEventListener(\"click\", click); element.removeEventListener(\"keydown\", keydown); } };\n}\n\nfunction createWheelPicker(element) {\n const columns = [...element.querySelectorAll(\"[data-g-wheel-column]\")]; const output = element.querySelector(\"[data-g-wheel-output]\"); const timers = new WeakMap();\n function options(column) { return [...column.querySelectorAll(\"[data-g-wheel-option]\")]; }\n function select(option, reason = \"option\") { const column = option.closest(\"[data-g-wheel-column]\"); if (!column) return; options(column).forEach((item) => item.setAttribute(\"aria-selected\", String(item === option))); option.scrollIntoView({ block: \"center\", behavior: reason === \"scroll\" ? \"auto\" : \"smooth\" }); const values = columns.map((item) => item.querySelector('[data-g-wheel-option][aria-selected=\"true\"]')?.dataset.gValue || \"\"); if (output) output.value = JSON.stringify(values); emit(element, \"wheelchange\", { values, reason }); }\n function click(event) { const option = event.target.closest(\"[data-g-wheel-option]\"); if (option) select(option); }\n function keydown(event) { const option = event.target.closest(\"[data-g-wheel-option]\"); if (!option || ![\"ArrowUp\", \"ArrowDown\", \"Home\", \"End\"].includes(event.key)) return; event.preventDefault(); const list = options(option.closest(\"[data-g-wheel-column]\")); const index = list.indexOf(option); const next = event.key === \"Home\" ? list[0] : event.key === \"End\" ? list.at(-1) : list[index + (event.key === \"ArrowDown\" ? 1 : -1)] || option; next.focus(); select(next, \"keyboard\"); }\n function scroll(event) { const column = event.currentTarget; clearTimeout(timers.get(column)); timers.set(column, setTimeout(() => { const center = column.getBoundingClientRect().top + column.clientHeight / 2; const nearest = options(column).sort((a, b) => Math.abs(a.getBoundingClientRect().top + a.clientHeight / 2 - center) - Math.abs(b.getBoundingClientRect().top + b.clientHeight / 2 - center))[0]; if (nearest) select(nearest, \"scroll\"); }, 90)); }\n columns.forEach((column) => { column.addEventListener(\"scroll\", scroll, { passive: true }); const selected = column.querySelector('[data-g-wheel-option][aria-selected=\"true\"]') || options(column)[0]; if (selected) select(selected, \"init\"); }); element.addEventListener(\"click\", click); element.addEventListener(\"keydown\", keydown);\n return { select, values: () => columns.map((column) => column.querySelector('[data-g-wheel-option][aria-selected=\"true\"]')?.dataset.gValue || \"\"), destroy: () => { columns.forEach((column) => { clearTimeout(timers.get(column)); column.removeEventListener(\"scroll\", scroll); }); element.removeEventListener(\"click\", click); element.removeEventListener(\"keydown\", keydown); } };\n}\n\nfunction createAIComposer(element) {\n const input = element.querySelector(\"[data-g-composer-input], .g-composer-input\");\n const send = element.querySelector(\"[data-g-composer-send]\");\n const stop = element.querySelector(\"[data-g-composer-stop]\");\n const status = element.querySelector(\"[data-g-composer-status]\");\n if (!input) return null;\n let streaming = element.classList.contains(\"is-streaming\");\n function resize() { input.style.height = \"auto\"; input.style.height = `${Math.min(input.scrollHeight, Number(element.dataset.gMaxHeight || 224))}px`; }\n function sync() { const empty = !input.value.trim(); if (send) send.disabled = empty || streaming; if (stop) stop.hidden = !streaming; element.classList.toggle(\"is-empty\", empty); if (status && !streaming) status.textContent = empty ? element.dataset.gEmptyLabel || \"\u8F93\u5165\u6D88\u606F\uFF0CEnter \u53D1\u9001\uFF0CShift+Enter \u6362\u884C\" : element.dataset.gReadyLabel || \"\u5DF2\u51C6\u5907\u53D1\u9001\"; resize(); }\n function setStreaming(value, reason = \"api\") { streaming = Boolean(value); element.classList.toggle(\"is-streaming\", streaming); element.setAttribute(\"aria-busy\", String(streaming)); if (status) status.textContent = streaming ? element.dataset.gStreamingLabel || \"\u6B63\u5728\u751F\u6210\uFF1B\u53EF\u505C\u6B62\" : element.dataset.gReadyLabel || \"\u5DF2\u51C6\u5907\u53D1\u9001\"; sync(); emit(element, \"composerstate\", { streaming, reason }); }\n function submit(reason = \"api\") { const value = input.value.trim(); if (!value || streaming || !emit(element, \"beforepromptsubmit\", { value, reason, input })) return; emit(element, \"promptsubmit\", { value, reason, input }); if (element.dataset.gClearOnSend !== \"false\") input.value = \"\"; sync(); }\n function stopGeneration(reason = \"api\") { if (!streaming || !emit(element, \"beforepromptstop\", { reason })) return; setStreaming(false, reason); emit(element, \"promptstop\", { reason }); }\n function keydown(event) { if (event.key === \"Enter\" && !event.shiftKey && !event.altKey && !event.isComposing) { event.preventDefault(); submit(\"keyboard\"); } }\n function click(event) { if (event.target.closest(\"[data-g-composer-send]\")) submit(\"button\"); else if (event.target.closest(\"[data-g-composer-stop]\")) stopGeneration(\"button\"); else { const remove = event.target.closest(\"[data-g-attachment-remove]\"); if (remove) { const attachment = remove.closest(\".g-attachment\"); if (attachment && emit(element, \"attachmentremove\", { attachment })) attachment.remove(); } } }\n input.addEventListener(\"input\", sync); input.addEventListener(\"keydown\", keydown); element.addEventListener(\"click\", click); sync();\n return { submit, stop: stopGeneration, setStreaming, value: () => input.value, focus: () => input.focus(), destroy: () => { input.removeEventListener(\"input\", sync); input.removeEventListener(\"keydown\", keydown); element.removeEventListener(\"click\", click); } };\n}\n\nfunction createPromptFill(element) {\n function click(event) { const item = event.target.closest(\"[data-g-prompt-value]\"); if (!item) return; const target = targetById(item.dataset.gPromptTarget || element.dataset.gPromptTarget); if (!target) return; const value = item.dataset.gPromptValue || item.dataset.gValue || item.textContent.trim(); target.value = value; target.dispatchEvent(new Event(\"input\", { bubbles: true })); target.focus(); emit(element, \"promptfill\", { value, item, target }); }\n element.addEventListener(\"click\", click);\n return { fill: (item) => click({ target: item }), destroy: () => element.removeEventListener(\"click\", click) };\n}\n\nfunction createAIApproval(element) {\n const choices = [...element.querySelectorAll(\"[data-g-approval-choice]\")];\n function choose(choice, reason = \"api\") { if (!choice || choice.disabled) return; const value = choice.dataset.gApprovalChoice; if (!emit(element, \"beforeapproval\", { value, choice, reason })) return; element.dataset.gApprovalState = value; [\"approved\", \"rejected\", \"cancelled\"].forEach((state) => element.classList.toggle(`is-${state}`, value === state)); choices.forEach((item) => { item.setAttribute(\"aria-pressed\", String(item === choice)); if (element.dataset.gKeepEnabled !== \"true\") item.disabled = true; }); emit(element, \"approval\", { value, choice, reason }); }\n function click(event) { choose(event.target.closest(\"[data-g-approval-choice]\"), \"pointer\"); }\n element.addEventListener(\"click\", click);\n return { choose, reset: () => { delete element.dataset.gApprovalState; element.classList.remove(\"is-approved\", \"is-rejected\", \"is-cancelled\"); choices.forEach((item) => { item.disabled = false; item.setAttribute(\"aria-pressed\", \"false\"); }); }, destroy: () => element.removeEventListener(\"click\", click) };\n}\n\nfunction createAIFeedback(element) {\n const options = [...element.querySelectorAll(\"[data-g-feedback-value]\")];\n const detail = element.querySelector(\"[data-g-feedback-detail]\");\n const comment = element.querySelector(\"[data-g-feedback-comment]\");\n const output = element.querySelector(\"[data-g-feedback-output]\");\n let value = output?.value || \"\";\n function select(option, reason = \"api\") { if (!option) return; value = option.dataset.gFeedbackValue; options.forEach((item) => item.setAttribute(\"aria-pressed\", String(item === option))); if (output) output.value = value; if (detail) detail.hidden = false; emit(element, \"feedbackchange\", { value, option, reason }); }\n function submit(reason = \"api\") { if (!value) return; emit(element, \"feedbacksubmit\", { value, comment: comment?.value || \"\", reason }); element.classList.add(\"is-submitted\"); }\n function click(event) { const option = event.target.closest(\"[data-g-feedback-value]\"); if (option) select(option, \"pointer\"); else if (event.target.closest(\"[data-g-feedback-submit]\")) submit(\"button\"); }\n element.addEventListener(\"click\", click); if (value) select(options.find((item) => item.dataset.gFeedbackValue === value), \"init\");\n return { select, submit, value: () => value, destroy: () => element.removeEventListener(\"click\", click) };\n}\n\nfunction createShortcutRecorder(element) {\n const control = element.querySelector(\"[data-g-shortcut-control]\") || element;\n const output = element.querySelector(\"[data-g-shortcut-output]\");\n const display = element.querySelector(\"[data-g-shortcut-display]\");\n const status = element.querySelector(\"[data-g-shortcut-status]\");\n let recording = false; let value = output?.value || element.dataset.gValue || \"\";\n const modifierOrder = [\"Control\", \"Alt\", \"Shift\", \"Meta\"];\n function format(shortcut) { return shortcut ? shortcut.replaceAll(\"Control\", navigator.platform.includes(\"Mac\") ? \"\u2303\" : \"Ctrl\").replaceAll(\"Meta\", navigator.platform.includes(\"Mac\") ? \"\u2318\" : \"Meta\").replaceAll(\"Alt\", navigator.platform.includes(\"Mac\") ? \"\u2325\" : \"Alt\").replaceAll(\"Shift\", navigator.platform.includes(\"Mac\") ? \"\u21E7\" : \"Shift\") : element.dataset.gEmptyLabel || \"\u672A\u8BBE\u7F6E\"; }\n function sync(reason = \"api\") { if (output) output.value = value; if (display) display.textContent = format(value); element.dataset.gValue = value; emit(element, \"shortcutchange\", { value, reason }); }\n function stop(reason = \"cancel\") { recording = false; control.classList.remove(\"is-recording\"); control.setAttribute(\"aria-pressed\", \"false\"); if (status) status.textContent = reason === \"recorded\" ? element.dataset.gSavedLabel || \"\u5FEB\u6377\u952E\u5DF2\u8BB0\u5F55\" : element.dataset.gIdleLabel || \"\u70B9\u51FB\u540E\u6309\u4E0B\u7EC4\u5408\u952E\"; }\n function start() { recording = true; control.classList.add(\"is-recording\"); control.setAttribute(\"aria-pressed\", \"true\"); if (status) status.textContent = element.dataset.gRecordingLabel || \"\u8BF7\u6309\u4E0B\u5FEB\u6377\u952E\uFF1BEsc \u53D6\u6D88\"; control.focus(); }\n function keydown(event) { if (!recording) return; event.preventDefault(); event.stopPropagation(); if (event.key === \"Escape\") return stop(); if ([\"Backspace\", \"Delete\"].includes(event.key)) { value = \"\"; sync(\"clear\"); return stop(\"recorded\"); } if ([\"Control\", \"Alt\", \"Shift\", \"Meta\"].includes(event.key)) return; const pressed = { Control: event.ctrlKey, Alt: event.altKey, Shift: event.shiftKey, Meta: event.metaKey }; const modifiers = modifierOrder.filter((name) => pressed[name]); const key = event.key.length === 1 ? event.key.toLocaleUpperCase() : event.key; value = [...modifiers, key].join(\"+\"); sync(\"keyboard\"); stop(\"recorded\"); }\n function click(event) { if (event.target.closest(\"[data-g-shortcut-clear]\")) { value = \"\"; sync(\"clear\"); stop(\"recorded\"); } else start(); }\n control.addEventListener(\"click\", click); control.addEventListener(\"keydown\", keydown); sync(\"init\"); stop();\n return { start, stop, clear: () => { value = \"\"; sync(\"api\"); }, value: () => value, destroy: () => { control.removeEventListener(\"click\", click); control.removeEventListener(\"keydown\", keydown); } };\n}\n\nfunction createDesktopTabs(element) {\n const tabs = () => [...element.querySelectorAll(\"[data-g-desktop-tab]\")];\n function select(tab, reason = \"api\", focus = false) { if (!tab || tab.getAttribute(\"aria-disabled\") === \"true\") return; tabs().forEach((item) => { const active = item === tab; item.setAttribute(\"aria-selected\", String(active)); item.classList.toggle(\"is-active\", active); item.tabIndex = active ? 0 : -1; const panel = targetById(item.getAttribute(\"aria-controls\")); if (panel) panel.hidden = !active; }); if (focus) tab.focus(); emit(element, \"desktoptabchange\", { tab, reason }); }\n function close(tab, reason = \"api\") { if (!tab || !emit(element, \"beforetabclose\", { tab, reason, dirty: tab.classList.contains(\"is-dirty\") })) return; const list = tabs(); const index = list.indexOf(tab); const wasActive = tab.getAttribute(\"aria-selected\") === \"true\" || tab.classList.contains(\"is-active\"); const panel = targetById(tab.getAttribute(\"aria-controls\")); panel?.remove(); tab.remove(); const remaining = tabs(); if (wasActive) select(remaining[Math.min(index, remaining.length - 1)], \"close\", true); emit(element, \"desktoptabclose\", { reason }); }\n function click(event) { const closeButton = event.target.closest(\"[data-g-desktop-tab-close]\"); const tab = event.target.closest(\"[data-g-desktop-tab]\"); if (closeButton) { event.stopPropagation(); close(closeButton.closest(\"[data-g-desktop-tab]\"), \"button\"); } else if (tab) select(tab, \"pointer\"); }\n function pointerdown(event) { if (event.button === 1) { const tab = event.target.closest(\"[data-g-desktop-tab]\"); if (tab) { event.preventDefault(); close(tab, \"middle-click\"); } } }\n function keydown(event) { const list = tabs(); const current = event.target.closest(\"[data-g-desktop-tab]\") || list.find((tab) => tab.getAttribute(\"aria-selected\") === \"true\"); if (!current) return; const index = list.indexOf(current); if ((event.ctrlKey || event.metaKey) && event.key === \"Tab\") { event.preventDefault(); select(list[(index + (event.shiftKey ? -1 : 1) + list.length) % list.length], \"shortcut\", true); } else if ((event.ctrlKey || event.metaKey) && event.key.toLocaleLowerCase() === \"w\") { event.preventDefault(); close(current, \"shortcut\"); } else if ([\"ArrowLeft\", \"ArrowRight\", \"Home\", \"End\"].includes(event.key)) { event.preventDefault(); const next = event.key === \"Home\" ? list[0] : event.key === \"End\" ? list.at(-1) : list[(index + (event.key === \"ArrowRight\" ? 1 : -1) + list.length) % list.length]; select(next, \"keyboard\", true); } }\n element.setAttribute(\"role\", element.getAttribute(\"role\") || \"tablist\"); tabs().forEach((tab) => tab.setAttribute(\"role\", tab.getAttribute(\"role\") || \"tab\")); element.addEventListener(\"click\", click); element.addEventListener(\"pointerdown\", pointerdown); element.addEventListener(\"keydown\", keydown); const initial = tabs().find((tab) => tab.getAttribute(\"aria-selected\") === \"true\") || tabs()[0]; if (initial) select(initial, \"init\");\n return { select, close, tabs, destroy: () => { element.removeEventListener(\"click\", click); element.removeEventListener(\"pointerdown\", pointerdown); element.removeEventListener(\"keydown\", keydown); } };\n}\n\nfunction createNativeFilePicker(element) {\n const input = element.querySelector(\"input[type='file']\"); const trigger = element.querySelector(\"[data-g-native-file-trigger]\"); const value = element.querySelector(\"[data-g-native-file-value]\"); if (!input || !trigger) return null;\n function sync(reason = \"change\") { const files = [...input.files]; if (value) value.textContent = files.length ? files.map((file) => file.name).join(\", \") : element.dataset.gEmptyLabel || \"\u672A\u9009\u62E9\u6587\u4EF6\"; emit(element, \"nativefiles\", { files, input, reason }); }\n function open() { if (!emit(element, \"beforefilepicker\", { input })) return; input.click(); }\n function change() { sync(); }\n trigger.addEventListener(\"click\", open); input.addEventListener(\"change\", change); sync(\"init\");\n return { open, files: () => [...input.files], clear: () => { input.value = \"\"; sync(\"clear\"); }, destroy: () => { trigger.removeEventListener(\"click\", open); input.removeEventListener(\"change\", change); } };\n}\n\nfunction createWindowSwitcher(element) {\n const panel = element.querySelector(\".g-desktop-window-switcher-panel\") || element; const items = () => [...element.querySelectorAll(\"[data-g-window-item]\")]; let open = !element.hidden; let trigger = null;\n function select(item, reason = \"api\") { if (!item) return; items().forEach((node) => node.setAttribute(\"aria-selected\", String(node === item))); item.focus(); emit(element, \"windowselect\", { item, value: item.dataset.gValue, reason }); }\n function show(source = document.activeElement) { if (open) return; open = true; trigger = source; element.hidden = false; element.setAttribute(\"aria-hidden\", \"false\"); select(items().find((item) => item.getAttribute(\"aria-selected\") === \"true\") || items()[0], \"open\"); emit(element, \"open\", { source }); }\n function hide(reason = \"api\") { if (!open) return; open = false; element.hidden = true; element.setAttribute(\"aria-hidden\", \"true\"); trigger?.focus?.(); emit(element, \"close\", { reason }); }\n function keydown(event) { const list = items(); const current = list.indexOf(document.activeElement); if ((event.ctrlKey || event.metaKey) && event.key === \"`\") { event.preventDefault(); open ? select(list[(current + 1) % list.length], \"shortcut\") : show(); } else if (!open) return; else if (event.key === \"Escape\") { event.preventDefault(); hide(\"escape\"); } else if ([\"ArrowDown\", \"ArrowRight\", \"ArrowUp\", \"ArrowLeft\"].includes(event.key)) { event.preventDefault(); select(list[(current + ([\"ArrowDown\", \"ArrowRight\"].includes(event.key) ? 1 : -1) + list.length) % list.length], \"keyboard\"); } else if (event.key === \"Enter\") { event.preventDefault(); emit(element, \"windowactivate\", { item: document.activeElement, value: document.activeElement?.dataset.gValue }); hide(\"activate\"); } }\n function click(event) { const item = event.target.closest(\"[data-g-window-item]\"); if (item) { select(item, \"pointer\"); emit(element, \"windowactivate\", { item, value: item.dataset.gValue }); hide(\"activate\"); } else if (event.target === element) hide(\"backdrop\"); }\n if (open) { open = false; queueMicrotask(show); } else { element.hidden = true; element.setAttribute(\"aria-hidden\", \"true\"); } document.addEventListener(\"keydown\", keydown); element.addEventListener(\"click\", click); panel.tabIndex = panel.tabIndex < 0 ? -1 : panel.tabIndex;\n return { open: show, close: hide, select, isOpen: () => open, destroy: () => { document.removeEventListener(\"keydown\", keydown); element.removeEventListener(\"click\", click); element.hidden = true; } };\n}\n\n[\n [\"dialog\", (element) => createOverlay(element, \"dialog\")],\n [\"drawer\", (element) => createOverlay(element, \"drawer\")],\n [\"mobile-sheet\", (element) => createOverlay(element, \"mobile-sheet\")],\n [\"dropdown\", createDropdown], [\"tabs\", createTabs], [\"accordion\", createAccordion],\n [\"auto-resize\", createAutoResize], [\"combobox\", createCombobox],\n [\"password-toggle\", createPasswordToggle], [\"clear-input\", createClearInput],\n [\"otp-input\", createOtpInput], [\"password-strength\", createPasswordStrength], [\"auth-timer\", createAuthTimer],\n [\"quantity-stepper\", createQuantityStepper], [\"sku-selector\", createSkuSelector], [\"cart\", createCart], [\"coupon\", createCoupon],\n [\"pull-refresh\", createPullRefresh], [\"infinite-load\", createInfiniteLoad], [\"swipe-actions\", createSwipeActions], [\"wheel-picker\", createWheelPicker],\n [\"ai-composer\", createAIComposer], [\"prompt-fill\", createPromptFill], [\"ai-approval\", createAIApproval], [\"ai-feedback\", createAIFeedback],\n [\"shortcut-recorder\", createShortcutRecorder], [\"desktop-tabs\", createDesktopTabs], [\"native-file-picker\", createNativeFilePicker], [\"window-switcher\", createWindowSwitcher],\n [\"character-count\", createCharacterCount], [\"conditional-field\", createConditionalField],\n [\"repeatable-field\", createRepeatableField],\n [\"tooltip\", (element) => createFloating(element, \"tooltip\")], [\"popover\", (element) => createFloating(element, \"popover\")],\n [\"tour\", createTour],\n [\"carousel\", createCarousel], [\"split-pane\", createSplitter], [\"tree\", createTree],\n [\"data-grid\", createDataGrid], [\"table-sort\", createTableSort], [\"row-select\", createRowSelect],\n [\"row-disclosure\", createRowDisclosure], [\"column-toggle\", createColumnToggle],\n [\"data-filter\", createDataFilter], [\"data-view\", createDataView],\n [\"transfer\", createTransfer], [\"picker\", createPicker], [\"cascader\", createCascader],\n [\"saved-choice\", createSavedChoice], [\"builder-list\", createBuilderList],\n [\"toast\", createToast], [\"copy\", createCopy],\n [\"fullscreen\", createFullscreen], [\"scroll-top\", createScrollTop], [\"dropzone\", createDropzone],\n [\"nav-toggle\", createNavToggle], [\"roving-nav\", createRovingNav], [\"context-menu\", createContextMenu],\n [\"scrollspy\", createScrollspy], [\"jump-nav\", createJumpNav],\n [\"upload-manager\", createUploadManager], [\"file-browser\", createFileBrowser],\n [\"editor-shell\", createEditorShell], [\"revision-compare\", createRevisionCompare], [\"autosave\", createAutosave],\n [\"command-palette\", createCommandPalette]\n].forEach(([name, factory]) => register(name, factory));\n\nfunction initElement(element, name) {\n const store = storeFor(element);\n if (store.has(name)) return store.get(name);\n const factory = registry.get(name);\n if (!factory) return null;\n const instance = factory(element);\n if (instance) { store.set(name, instance); emit(element, \"init\", { name, instance }); }\n return instance;\n}\n\nfunction init(root = document) {\n for (const [name] of registry) {\n const selector = `[data-g-${name}]`;\n if (root instanceof Element && root.matches(selector)) initElement(root, name);\n root.querySelectorAll?.(selector).forEach((element) => initElement(element, name));\n }\n return Gardener;\n}\n\nfunction getInstance(elementOrSelector, name) {\n const element = typeof elementOrSelector === \"string\" ? document.querySelector(elementOrSelector) : elementOrSelector;\n const store = element ? instanceStores.get(element) : null;\n if (!store) return null;\n return name ? store.get(name) || null : store.size === 1 ? store.values().next().value : Object.fromEntries(store);\n}\n\nfunction destroy(root = document) {\n const candidates = [];\n if (root instanceof Element) candidates.push(root);\n root.querySelectorAll?.(\"*\").forEach((element) => candidates.push(element));\n candidates.forEach((element) => {\n const store = instanceStores.get(element);\n if (!store) return;\n store.forEach((instance) => instance?.destroy?.());\n instanceStores.delete(element);\n });\n}\n\nfunction toast(options = {}) {\n let region = document.querySelector(\".g-toast-region\");\n if (!region) {\n region = document.createElement(\"div\");\n region.className = \"g-toast-region\";\n region.setAttribute(\"aria-live\", options.tone === \"danger\" ? \"assertive\" : \"polite\");\n document.body.append(region);\n }\n const element = document.createElement(\"div\");\n element.className = `g-toast${options.tone ? ` g-toast-${options.tone}` : \"\"}`;\n element.setAttribute(\"role\", options.tone === \"danger\" ? \"alert\" : \"status\");\n element.dataset.gToast = \"\";\n if (options.timeout != null) element.dataset.gTimeout = String(options.timeout);\n element.innerHTML = `<div class=\"g-toast-content\"><div class=\"g-toast-title\"></div><div class=\"g-toast-message\"></div></div><button class=\"g-btn g-btn-ghost g-btn-icon\" data-g-dismiss aria-label=\"Close\">\u00D7</button>`;\n element.querySelector(\".g-toast-title\").textContent = options.title || \"\";\n element.querySelector(\".g-toast-message\").textContent = options.message || \"\";\n region.append(element);\n init(element);\n return element;\n}\n\nfunction delegateClick(event) {\n const commandTrigger = event.target.closest(\"[data-g-command-trigger]\");\n if (commandTrigger) {\n const target = targetById(commandTrigger.dataset.gCommandTrigger);\n if (target) {\n commandTrigger.setAttribute(\"aria-haspopup\", \"dialog\");\n commandTrigger.setAttribute(\"aria-controls\", target.id);\n init(target);\n getInstance(target, \"command-palette\")?.toggle(commandTrigger);\n }\n }\n const opener = event.target.closest(\"[data-g-dialog-open], [data-g-drawer-open], [data-g-mobile-sheet-open]\");\n if (opener) {\n const id = opener.dataset.gDialogOpen || opener.dataset.gDrawerOpen || opener.dataset.gMobileSheetOpen;\n const target = targetById(id);\n if (target) {\n init(target);\n getInstance(target, opener.dataset.gDialogOpen ? \"dialog\" : opener.dataset.gDrawerOpen ? \"drawer\" : \"mobile-sheet\")?.open(opener);\n }\n }\n const tourOpener = event.target.closest(\"[data-g-tour-open]\");\n if (tourOpener) {\n const target = targetById(tourOpener.dataset.gTourOpen);\n if (target) {\n tourOpener.setAttribute(\"aria-haspopup\", \"dialog\");\n tourOpener.setAttribute(\"aria-controls\", target.id);\n init(target);\n getInstance(target, \"tour\")?.open(tourOpener);\n }\n }\n const toggle = event.target.closest(\"[data-g-toggle]\");\n if (toggle) {\n const target = targetById(toggle.dataset.gToggle);\n if (target) {\n const expanded = toggle.getAttribute(\"aria-expanded\") !== \"true\";\n toggle.setAttribute(\"aria-expanded\", String(expanded));\n target.hidden = !expanded;\n target.classList.toggle(\"is-open\", expanded);\n emit(target, \"toggle\", { expanded, trigger: toggle });\n }\n }\n const dismiss = event.target.closest(\"[data-g-dismiss]\");\n if (dismiss) {\n const target = dismiss.closest(\".g-alert, .g-toast, .g-banner, [data-g-dismissible]\");\n const toastInstance = target ? getInstance(target, \"toast\") : null;\n if (toastInstance) toastInstance.dismiss(\"button\");\n else if (target && emit(target, \"dismiss\", { reason: \"button\" })) target.remove();\n }\n}\n\nlet observer;\nfunction observe() {\n if (observer || typeof MutationObserver === \"undefined\") return;\n observer = new MutationObserver((records) => records.forEach((record) => {\n record.addedNodes.forEach((node) => { if (node instanceof Element) init(node); });\n record.removedNodes.forEach((node) => { if (node instanceof Element) destroy(node); });\n if (record.type === \"attributes\" && record.target instanceof Element && record.attributeName?.startsWith(\"data-g-\")) {\n const name = record.attributeName.slice(7);\n if (registry.has(name) && record.target.hasAttribute(record.attributeName)) initElement(record.target, name);\n else if (registry.has(name)) {\n const store = instanceStores.get(record.target);\n store?.get(name)?.destroy?.();\n store?.delete(name);\n if (store?.size === 0) instanceStores.delete(record.target);\n }\n }\n }));\n observer.observe(document.documentElement, { childList: true, subtree: true, attributes: true });\n}\n\nconst Gardener = Object.freeze({ version: \"1.0.0\", get behaviors() { return Object.freeze([...registry.keys()]); }, init, destroy, register, getInstance, emit, toast, observe });\n\nif (typeof document !== \"undefined\") {\n document.addEventListener(\"click\", delegateClick);\n const start = () => { init(); observe(); };\n if (document.readyState === \"loading\") document.addEventListener(\"DOMContentLoaded\", start, { once: true });\n else queueMicrotask(start);\n}\n\nexport { Gardener, init, destroy, register, getInstance, emit, toast, observe };\nexport default Gardener;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["instanceStores", "registry", "focusableSelector", "uid", "prefix", "numeric", "value", "fallback", "targetById", "visibleFocusable", "container", "item", "emit", "element", "name", "detail", "storeFor", "lockScroll", "root", "count", "unlockScroll", "createOverlay", "type", "trigger", "open", "closeTimer", "closeFinished", "panel", "onKeydown", "event", "close", "items", "first", "last", "finishClose", "reason", "openOverlay", "source", "onTransitionEnd", "onClick", "startsOpen", "createDropdown", "menu", "search", "searchTimer", "outside", "keydown", "focus", "options", "index", "toggle", "menuClick", "createTabs", "tabs", "vertical", "select", "tab", "selected", "click", "current", "forward", "backward", "enabled", "enabledIndex", "next", "createAccordion", "triggerSelector", "triggers", "set", "expanded", "other", "createAutoResize", "resize", "createPasswordToggle", "input", "button", "showLabel", "hideLabel", "update", "visible", "label", "start", "end", "createOtpInput", "cells", "output", "digits", "sync", "cell", "digit", "valueOutput", "complete", "fill", "values", "offset", "paste", "clear", "createPasswordStrength", "meter", "rules", "tests", "checks", "key", "test", "passed", "score", "labels", "rule", "valid", "createAuthTimer", "resetButton", "duration", "remaining", "timer", "format", "seconds", "minutes", "rest", "render", "expired", "reset", "createClearInput", "createCharacterCount", "maximum", "createConditionalField", "selector", "controllers", "expected", "checkedRadio", "controller", "createRepeatableField", "list", "template", "addButton", "minimum", "replaceIndex", "node", "attribute", "dataKey", "currentItems", "add", "fragment", "init", "removeButton", "createCombobox", "option", "activeIndex", "activate", "optionIndex", "choose", "filter", "query", "positionFloating", "requestedPlacement", "rect", "panelRect", "gap", "rtl", "rawSide", "rawAlign", "side", "align", "coordinates", "candidate", "top", "left", "position", "createFloating", "interactive", "describedBy", "placement", "show", "hide", "reposition", "createTour", "steps", "progress", "spotlight", "targetFor", "step", "target", "padding", "showStep", "nextIndex", "stepIndex", "openTour", "createCarousel", "slides", "previous", "dots", "slide", "interval", "dotHandlers", "dot", "dotIndex", "go", "slideIndex", "stop", "prevClick", "nextClick", "handler", "focusOut", "createSplitter", "handle", "panels", "activeMove", "activeUp", "setPercent", "percent", "pointerDown", "moveEvent", "delta", "createTree", "focusItem", "nodes", "child", "parent", "createDataGrid", "focusCell", "row", "rowCells", "rows", "columnIndex", "rowIndex", "createTableSort", "table", "body", "buttons", "collator", "valueFor", "raw", "sort", "direction", "header", "headers", "details", "stable", "order", "right", "result", "createRowSelect", "master", "boxes", "box", "outputs", "totals", "summaries", "lastIndex", "summary", "control", "change", "action", "a", "b", "createTransfer", "optionSelector", "pane", "checked", "setChecked", "empty", "from", "move", "toTarget", "to", "moving", "field", "createPicker", "valuesHost", "multiple", "chip", "remove", "setOpen", "inputTarget", "match", "createCascader", "columns", "path", "column", "createSavedChoice", "createBuilderList", "createRowDisclosure", "descendants", "children", "nested", "createColumnToggle", "toggles", "active", "createDataFilter", "scope", "normalize", "terms", "haystack", "term", "inputHandler", "createDataView", "controls", "view", "createToast", "startedAt", "pauses", "dismiss", "schedule", "pause", "resume", "pointerEnter", "pointerLeave", "focusIn", "createCopy", "copy", "text", "copied", "error", "createFullscreen", "createScrollTop", "threshold", "scroll", "createNavToggle", "isOpen", "syncExpanded", "targetClose", "createRovingNav", "initial", "createContextMenu", "previousFocus", "x", "y", "restore", "context", "targetKeydown", "createScrollspy", "entries", "link", "entry", "scrollRoot", "frame", "rootTop", "createJumpNav", "jump", "createDropzone", "depth", "nativeLabel", "enter", "over", "leave", "drop", "files", "createCommandPalette", "backdrop", "createUploadManager", "statusText", "state", "bar", "status", "counts", "addFile", "file", "meta", "createFileBrowser", "collection", "createEditorShell", "surface", "tools", "trimmed", "words", "run", "tool", "command", "map", "createRevisionCompare", "setView", "createAutosave", "delay", "saveTimer", "setState", "save", "dirty", "createQuantityStepper", "decrement", "increment", "limits", "min", "max", "precision", "createSkuSelector", "groups", "group", "selection", "chosen", "groupName", "createCart", "locale", "currency", "formatter", "number", "subtotal", "quantity", "total", "line", "discount", "shipping", "tax", "createCoupon", "validCodes", "code", "apply", "register", "factory", "createPullRefresh", "content", "indicator", "startY", "distance", "tracking", "refreshing", "paint", "begin", "finish", "refresh", "timeout", "createInfiniteLoad", "sentinel", "loading", "done", "observer", "load", "createSwipeActions", "startX", "revealed", "dx", "dy", "createWheelPicker", "timers", "center", "nearest", "createAIComposer", "send", "streaming", "setStreaming", "submit", "stopGeneration", "attachment", "createPromptFill", "createAIApproval", "choices", "choice", "createAIFeedback", "comment", "createShortcutRecorder", "display", "recording", "modifierOrder", "shortcut", "pressed", "modifiers", "createDesktopTabs", "wasActive", "closeButton", "pointerdown", "createNativeFilePicker", "createWindowSwitcher", "initElement", "store", "instance", "Gardener", "getInstance", "elementOrSelector", "destroy", "candidates", "toast", "region", "delegateClick", "commandTrigger", "opener", "id", "tourOpener", "toastInstance", "observe", "records", "record", "index_default"]
|
|
7
|
+
}
|