@pure-ds/core 0.7.50 → 0.7.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/types/src/js/common/common.d.ts +16 -3
- package/dist/types/src/js/common/common.d.ts.map +1 -1
- package/dist/types/src/js/pds-core/pds-generator.d.ts.map +1 -1
- package/package.json +1 -1
- package/public/assets/js/app.js +8 -2132
- package/public/assets/js/lit.js +3 -1031
- package/public/assets/js/pds-ask.js +9 -464
- package/public/assets/js/pds-autocomplete.js +7 -639
- package/public/assets/js/pds-enhancers.js +1 -1471
- package/public/assets/js/pds-manager.js +3460 -17635
- package/public/assets/js/pds-toast.js +1 -30
- package/public/assets/js/pds.js +2 -1969
- package/public/assets/pds/core/pds-ask.js +9 -464
- package/public/assets/pds/core/pds-autocomplete.js +7 -639
- package/public/assets/pds/core/pds-enhancers.js +1 -1471
- package/public/assets/pds/core/pds-manager.js +3460 -17635
- package/public/assets/pds/core/pds-toast.js +1 -30
- package/public/assets/pds/core.js +2 -1969
- package/public/assets/pds/external/lit.js +3 -1031
- package/src/js/common/common.js +111 -23
- package/src/js/pds-core/pds-generator.js +13 -4
- package/public/assets/js/app.js.map +0 -7
- package/public/assets/js/lit.js.map +0 -7
- package/public/assets/js/pds-ask.js.map +0 -7
- package/public/assets/js/pds-autocomplete.js.map +0 -7
- package/public/assets/js/pds-enhancers.js.map +0 -7
- package/public/assets/js/pds-manager.js.map +0 -7
- package/public/assets/js/pds-toast.js.map +0 -7
- package/public/assets/js/pds.js.map +0 -7
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/js/common/common.js", "../../../src/js/pds-singleton.js", "../../../src/js/common/ask.js"],
|
|
4
|
-
"sourcesContent": ["export function isObject(item) {\n return item && typeof item === 'object' && !Array.isArray(item);\n}\n\nexport function deepMerge(target, source) {\n const output = { ...target };\n if (isObject(target) && isObject(source)) {\n Object.keys(source).forEach(key => {\n if (isObject(source[key])) {\n if (!(key in target))\n Object.assign(output, { [key]: source[key] });\n else\n output[key] = deepMerge(target[key], source[key]);\n } else {\n Object.assign(output, { [key]: source[key] });\n }\n });\n }\n return output;\n }\n\n/**\n * Build a DocumentFragment from a template-like object (strings + values)\n * @param {{strings: string[], values: unknown[]}} templateLike\n * @returns {DocumentFragment}\n */\nexport function fragmentFromTemplateLike(templateLike) {\n const strings = Array.isArray(templateLike?.strings) ? templateLike.strings : [];\n const values = Array.isArray(templateLike?.values) ? templateLike.values : [];\n const consumedValues = new Set();\n const htmlParts = [];\n\n const propBindingPattern = /(\\s)(\\.[\\w-]+)=\\s*$/;\n\n for (let i = 0; i < strings.length; i += 1) {\n let chunk = strings[i] ?? \"\";\n const match = chunk.match(propBindingPattern);\n\n if (match && i < values.length) {\n const propToken = match[2];\n const propName = propToken.slice(1);\n const marker = `pds-val-${i}`;\n chunk = chunk.replace(\n propBindingPattern,\n `$1data-pds-prop=\"${propName}:${marker}\"`\n );\n consumedValues.add(i);\n }\n\n htmlParts.push(chunk);\n\n if (i < values.length && !consumedValues.has(i)) {\n htmlParts.push(`<!--pds-val-${i}-->`);\n }\n }\n\n const tpl = document.createElement(\"template\");\n tpl.innerHTML = htmlParts.join(\"\");\n\n const replaceValueAtMarker = (markerNode, value) => {\n const parent = markerNode.parentNode;\n if (!parent) return;\n\n if (value == null) {\n parent.removeChild(markerNode);\n return;\n }\n\n const insertValue = (val) => {\n if (val == null) return;\n if (val instanceof Node) {\n parent.insertBefore(val, markerNode);\n return;\n }\n if (Array.isArray(val)) {\n val.forEach((item) => insertValue(item));\n return;\n }\n parent.insertBefore(document.createTextNode(String(val)), markerNode);\n };\n\n insertValue(value);\n parent.removeChild(markerNode);\n };\n\n const walker = document.createTreeWalker(tpl.content, NodeFilter.SHOW_COMMENT);\n const markers = [];\n while (walker.nextNode()) {\n const node = walker.currentNode;\n if (node?.nodeValue?.startsWith(\"pds-val-\")) {\n markers.push(node);\n }\n }\n\n markers.forEach((node) => {\n const index = Number(node.nodeValue.replace(\"pds-val-\", \"\"));\n replaceValueAtMarker(node, values[index]);\n });\n\n const elements = tpl.content.querySelectorAll(\"*\");\n elements.forEach((el) => {\n const propAttr = el.getAttribute(\"data-pds-prop\");\n if (!propAttr) return;\n const [propName, markerValue] = propAttr.split(\":\");\n const index = Number(String(markerValue).replace(\"pds-val-\", \"\"));\n if (propName && Number.isInteger(index)) {\n el[propName] = values[index];\n }\n el.removeAttribute(\"data-pds-prop\");\n });\n\n return tpl.content;\n}\n\n/**\n * Parses an HTML string into a NodeList\n * @param {String} html\n * @returns {NodeListOf<ChildNode>}\n */\nexport function parseHTML(html) {\n return new DOMParser().parseFromString(html, \"text/html\").body.childNodes;\n}", "export class PDSBase extends EventTarget {\r\n constructor() {\r\n super();\r\n /** @type {'live' | 'static' | null} */\r\n this.mode = null;\r\n /** @type {Record<string, any> | null} */\r\n this.compiled = null;\r\n /** @type {(level: 'log' | 'warn' | 'error' | 'debug' | 'info', message?: any, ...data: any[]) => void} */\r\n this.log = () => {};\r\n /** @type {((level: 'log' | 'warn' | 'error' | 'debug' | 'info', message?: any, ...data: any[]) => void) | null} */\r\n this.logHandler = null;\r\n }\r\n}\r\n\r\nexport const PDS_SINGLETON_KEY = \"__PURE_DS_PDS_SINGLETON__\";\r\n\r\nconst globalScope = typeof globalThis !== \"undefined\" ? globalThis : window;\r\nconst existingPDS = globalScope?.[PDS_SINGLETON_KEY];\r\n\r\nexport const PDS =\r\n existingPDS && typeof existingPDS.addEventListener === \"function\"\r\n ? existingPDS\r\n : new PDSBase();\r\n\r\nif (globalScope) {\r\n globalScope[PDS_SINGLETON_KEY] = PDS;\r\n}\r\n\r\nif (typeof PDS.log !== \"function\") {\r\n PDS.log = (level = \"log\", message, ...data) => {\r\n if (typeof console === \"undefined\") return;\r\n const method =\r\n typeof console[level] === \"function\"\r\n ? console[level].bind(console)\r\n : typeof console.log === \"function\"\r\n ? console.log.bind(console)\r\n : null;\r\n if (!method) return;\r\n if (data.length > 0) {\r\n method(message, ...data);\r\n } else {\r\n method(message);\r\n }\r\n };\r\n}\r\n\r\nif (typeof PDS.logHandler !== \"function\") {\r\n PDS.logHandler = null;\r\n}\r\n", "import { fragmentFromTemplateLike } from \"./common.js\";\r\nimport { PDS } from \"../pds-singleton.js\";\r\n\r\n/**\r\n * Get the current page title for dialogs\r\n */\r\nfunction getPageTitle() {\r\n return document.title || \r\n document.querySelector('h1')?.textContent || \r\n 'Application';\r\n}\r\n\r\n/**\r\n * Append message content using vanilla DOM APIs\r\n * @param {HTMLElement} container\r\n * @param {unknown} message\r\n */\r\nfunction appendMessageContent(container, message) {\r\n if (message == null) return;\r\n\r\n if (\r\n typeof message === \"object\" &&\r\n Array.isArray(message.strings) &&\r\n Array.isArray(message.values)\r\n ) {\r\n container.appendChild(fragmentFromTemplateLike(message));\r\n return;\r\n }\r\n\r\n if (message instanceof Node) {\r\n container.appendChild(message);\r\n return;\r\n }\r\n\r\n if (Array.isArray(message)) {\r\n message.forEach((item) => appendMessageContent(container, item));\r\n return;\r\n }\r\n\r\n const text = typeof message === \"string\" ? message : String(message);\r\n container.appendChild(document.createTextNode(text));\r\n}\r\n\r\n/**\r\n * Validate host form plus nested shadow-root forms (e.g. inside custom elements like pds-form).\r\n * @param {HTMLFormElement} form\r\n * @returns {boolean}\r\n */\r\nfunction validateDialogFormTree(form) {\r\n if (!form) return true;\r\n\r\n let valid = true;\r\n\r\n const describeElement = (el) => {\r\n if (!el || typeof el !== \"object\") return \"<unknown>\";\r\n const tag = el.tagName ? String(el.tagName).toLowerCase() : \"node\";\r\n const id = el.id ? `#${el.id}` : \"\";\r\n const name = typeof el.getAttribute === \"function\" ? el.getAttribute(\"name\") : null;\r\n const namePart = name ? `[name=\"${name}\"]` : \"\";\r\n return `${tag}${id}${namePart}`;\r\n };\r\n\r\n const reportInvalidControls = (root, scopeLabel) => {\r\n if (!root || typeof root.querySelectorAll !== \"function\") return;\r\n const invalidControls = Array.from(root.querySelectorAll(\":invalid\"));\r\n if (!invalidControls.length) return;\r\n const list = invalidControls.map((el) => {\r\n const message = typeof el.validationMessage === \"string\" ? el.validationMessage : \"\";\r\n return `${describeElement(el)}${message ? ` \u2014 ${message}` : \"\"}`;\r\n });\r\n PDS.log(\"warn\", `ask.validateDialogFormTree: invalid controls in ${scopeLabel}:`, list);\r\n };\r\n\r\n const runValidity = (target, scopeLabel) => {\r\n try {\r\n const targetValid = typeof target.reportValidity === \"function\"\r\n ? target.reportValidity()\r\n : target.checkValidity?.() ?? true;\r\n if (!targetValid) {\r\n reportInvalidControls(target, scopeLabel);\r\n }\r\n return targetValid;\r\n } catch (error) {\r\n PDS.log(\"error\", `ask.validateDialogFormTree: validation threw in ${scopeLabel}`, error);\r\n return false;\r\n }\r\n };\r\n\r\n valid = runValidity(form, \"host dialog form\") && valid;\r\n\r\n const nestedLightDomForms = Array.from(form.querySelectorAll(\"form\"));\r\n for (const nestedForm of nestedLightDomForms) {\r\n if (nestedForm === form) continue;\r\n const nestedValid = runValidity(nestedForm, `nested light DOM form ${describeElement(nestedForm)}`);\r\n valid = nestedValid && valid;\r\n }\r\n\r\n const descendants = Array.from(form.querySelectorAll(\"*\"));\r\n for (const host of descendants) {\r\n const root = host?.shadowRoot;\r\n if (!root) continue;\r\n\r\n const nestedForms = Array.from(root.querySelectorAll(\"form\"));\r\n for (const nestedForm of nestedForms) {\r\n const nestedValid = runValidity(\r\n nestedForm,\r\n `shadow form under ${describeElement(host)}`\r\n );\r\n valid = nestedValid && valid;\r\n }\r\n }\r\n\r\n return valid;\r\n}\r\n\r\nfunction isSafariBrowser() {\r\n const userAgent = navigator.userAgent;\r\n const isSafariEngine = /Safari/i.test(userAgent);\r\n const isOtherBrowser = /(Chrome|Chromium|CriOS|FxiOS|EdgiOS|OPiOS|Opera)/i.test(userAgent);\r\n return isSafariEngine && !isOtherBrowser;\r\n}\r\n\r\nfunction playDialogEnterAnimation(dialog) {\r\n if (window.matchMedia?.('(prefers-reduced-motion: reduce)').matches) {\r\n return;\r\n }\r\n\r\n const isMobile = window.matchMedia?.('(max-width: 639px)').matches;\r\n const animationName = dialog.classList.contains('dialog-no-scale-animation')\r\n ? 'pds-dialog-fade-enter'\r\n : isMobile\r\n ? 'pds-dialog-enter-mobile'\r\n : 'pds-dialog-enter';\r\n\r\n dialog.style.animation = 'none';\r\n void dialog.offsetWidth;\r\n dialog.style.animation = `${animationName} var(--transition-normal) ease`;\r\n\r\n dialog.addEventListener('animationend', () => {\r\n dialog.style.animation = '';\r\n }, { once: true });\r\n}\r\n\r\nfunction shouldUseLiquidGlass(options = {}) {\r\n return options?.liquidGlassEffects === true;\r\n}\r\n\r\n/**\r\n * Create a PDS-compliant dialog with proper semantic structure\r\n * @param {string|Node|Array} message - Message content (string or DOM nodes)\r\n * @param {Object} options - Dialog options\r\n * @returns {Promise} Resolves with result when dialog closes\r\n */\r\nexport async function ask(message, options = {}) {\r\n \r\n const defaults = {\r\n title: \"Confirm\",\r\n type: \"confirm\", // 'alert', 'confirm', 'custom'\r\n buttons: {\r\n ok: { name: \"OK\", primary: true },\r\n cancel: { name: \"Cancel\", cancel: true },\r\n },\r\n };\r\n \r\n options = { ...defaults, ...options };\r\n\r\n const buttonConfigs = options.buttons && typeof options.buttons === \"object\"\r\n ? options.buttons\r\n : defaults.buttons;\r\n\r\n const resolveActionMeta = (actionCode) => {\r\n if (actionCode == null) {\r\n return {\r\n actionCode: \"dismiss\",\r\n actionKind: \"dismiss\",\r\n button: null,\r\n };\r\n }\r\n\r\n const button = buttonConfigs?.[actionCode] ?? null;\r\n const actionKind = actionCode === \"ok\"\r\n ? \"ok\"\r\n : actionCode === \"dismiss\"\r\n ? \"dismiss\"\r\n : (button?.cancel || actionCode === \"cancel\")\r\n ? \"cancel\"\r\n : \"custom\";\r\n\r\n return {\r\n actionCode,\r\n actionKind,\r\n button,\r\n };\r\n };\r\n\r\n const normalizeBeforeCloseResult = (result) => {\r\n if (typeof result === \"undefined\" || result === null || result === true) {\r\n return { allow: true };\r\n }\r\n\r\n if (result === false) {\r\n return { allow: false };\r\n }\r\n\r\n if (typeof result === \"object\") {\r\n const hasResult = Object.prototype.hasOwnProperty.call(result, \"result\")\r\n || Object.prototype.hasOwnProperty.call(result, \"value\");\r\n\r\n return {\r\n allow: result.allow !== false,\r\n hasResult,\r\n result: Object.prototype.hasOwnProperty.call(result, \"result\")\r\n ? result.result\r\n : result.value,\r\n };\r\n }\r\n\r\n return { allow: Boolean(result) };\r\n };\r\n \r\n return new Promise((resolve) => {\r\n let settled = false;\r\n const settle = (value, dialog, { shouldClose = true } = {}) => {\r\n if (settled) return;\r\n settled = true;\r\n resolve(value);\r\n\r\n if (!shouldClose || !dialog?.open) {\r\n return;\r\n }\r\n\r\n try {\r\n dialog.close();\r\n } catch (error) {\r\n PDS.log(\"warn\", \"ask: dialog.close() failed\", error);\r\n }\r\n };\r\n\r\n const runBeforeClose = async (context) => {\r\n if (context.actionKind !== \"ok\" || typeof options.beforeClose !== \"function\") {\r\n return { allow: true };\r\n }\r\n\r\n try {\r\n const beforeCloseResult = await options.beforeClose(context);\r\n return normalizeBeforeCloseResult(beforeCloseResult);\r\n } catch (error) {\r\n PDS.log(\"error\", \"ask.beforeClose: validation failed\", error);\r\n return { allow: false };\r\n }\r\n };\r\n\r\n const resolveDefaultResult = ({ actionKind, form }) => {\r\n if (actionKind === \"ok\") {\r\n if (options.useForm && form) {\r\n return new FormData(form);\r\n }\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const attemptResolve = async ({\r\n actionCode,\r\n form,\r\n submitter,\r\n originalEvent,\r\n bypassValidation = false,\r\n shouldClose = true,\r\n }) => {\r\n if (settled) return;\r\n\r\n const { actionKind, button } = resolveActionMeta(actionCode);\r\n const activeForm = form || dialog.querySelector(\"form\") || null;\r\n\r\n if (options.useForm && actionKind === \"ok\" && activeForm && !bypassValidation) {\r\n const valid = validateDialogFormTree(activeForm);\r\n if (!valid) {\r\n return;\r\n }\r\n }\r\n\r\n const defaultResult = resolveDefaultResult({\r\n actionKind,\r\n form: activeForm,\r\n });\r\n\r\n const guard = await runBeforeClose({\r\n actionCode,\r\n actionKind,\r\n dialog,\r\n form: activeForm,\r\n formData: options.useForm && actionKind === \"ok\" && activeForm\r\n ? defaultResult\r\n : null,\r\n submitter,\r\n originalEvent,\r\n options,\r\n button,\r\n defaultResult,\r\n });\r\n\r\n if (!guard.allow) {\r\n return;\r\n }\r\n\r\n const result = guard.hasResult ? guard.result : defaultResult;\r\n settle(result, dialog, { shouldClose });\r\n };\r\n\r\n // Create native dialog element\r\n const dialog = document.createElement(\"dialog\");\r\n\r\n if (isSafariBrowser()) {\r\n dialog.classList.add(\"dialog-no-scale-animation\");\r\n }\r\n \r\n if (shouldUseLiquidGlass(options))\r\n dialog.classList.add(\"liquid-glass\");\r\n \r\n // Add optional CSS classes\r\n if (options.size) {\r\n dialog.classList.add(`dialog-${options.size}`); // dialog-sm, dialog-lg, dialog-xl\r\n }\r\n if (options.type) {\r\n dialog.classList.add(`dialog-${options.type}`);\r\n }\r\n if (options.class) {\r\n if (Array.isArray(options.class)) {\r\n dialog.classList.add(...options.class);\r\n } else {\r\n dialog.classList.add(options.class);\r\n }\r\n }\r\n \r\n // Set maxHeight via CSS custom property (constrained to 90vh by default)\r\n if (options.maxHeight) {\r\n dialog.style.setProperty('--dialog-max-height', options.maxHeight);\r\n }\r\n\r\n // Build button elements\r\n const buttons = Object.entries(buttonConfigs).map(([code, obj]) => {\r\n const btnClass = obj.primary ? \"btn-primary btn-sm\" : \"btn-outline btn-sm\";\r\n const btnType = obj.cancel ? \"button\" : \"submit\";\r\n const formNoValidate = obj.formNoValidate ? \" formnovalidate\" : \"\";\r\n return `<button type=\"${btnType}\" class=\"${btnClass}\" value=\"${code}\"${formNoValidate}>${obj.name}</button>`;\r\n });\r\n\r\n // Create PDS-compliant dialog structure\r\n // When useForm is true, don't wrap in a form - let the content provide the form\r\n if (options.useForm) {\r\n // Create a temporary container to render the message content\r\n const tempContainer = document.createElement(\"div\");\r\n appendMessageContent(tempContainer, message);\r\n \r\n // Find the form in the rendered content\r\n const form = tempContainer.querySelector(\"form\");\r\n if (form) {\r\n // Build dialog structure with form as direct child for proper flex layout\r\n dialog.innerHTML = /*html*/ `\r\n <header>\r\n <h2>${options.title}</h2>\r\n </header>\r\n `;\r\n \r\n // Create article wrapper and move form children into it (preserves DOM nodes & bindings)\r\n const article = document.createElement(\"article\");\r\n article.className = \"dialog-body\";\r\n while (form.firstChild) {\r\n article.appendChild(form.firstChild);\r\n }\r\n form.appendChild(article);\r\n \r\n // Add footer with buttons\r\n const footer = document.createElement(\"footer\");\r\n footer.innerHTML = buttons.join(\"\");\r\n form.appendChild(footer);\r\n \r\n // Append the restructured form to dialog\r\n dialog.appendChild(form);\r\n } else {\r\n // No form found, use standard article structure\r\n dialog.innerHTML = /*html*/ `\r\n <header>\r\n <h2>${options.title}</h2>\r\n </header>\r\n <article id=\"msg-container\"></article>\r\n <footer>\r\n ${buttons.join(\"\")}\r\n </footer>\r\n `;\r\n const article = dialog.querySelector(\"#msg-container\");\r\n article.appendChild(tempContainer);\r\n }\r\n } else {\r\n dialog.innerHTML = /*html*/ `\r\n <form method=\"dialog\">\r\n <header>\r\n <h2>${options.title}</h2>\r\n </header>\r\n \r\n <article id=\"msg-container\"></article>\r\n \r\n <footer>\r\n ${buttons.join(\"\")}\r\n </footer>\r\n </form>\r\n `;\r\n\r\n // Render message content\r\n const article = dialog.querySelector(\"#msg-container\");\r\n appendMessageContent(article, message);\r\n }\r\n\r\n // Handle cancel button clicks\r\n dialog.addEventListener(\"click\", (e) => {\r\n const btn = e.target.closest('button[value=\"cancel\"]');\r\n if (btn) {\r\n attemptResolve({\r\n actionCode: \"cancel\",\r\n form: dialog.querySelector(\"form\"),\r\n submitter: btn,\r\n originalEvent: e,\r\n });\r\n }\r\n });\r\n\r\n // Wait for form to exist before adding submit listener\r\n const setupFormListener = () => {\r\n const form = dialog.querySelector(\"form\");\r\n if (form) {\r\n if (form.dataset.askSubmitBound === \"true\") {\r\n return;\r\n }\r\n form.dataset.askSubmitBound = \"true\";\r\n\r\n form.addEventListener(\"submit\", (event) => {\r\n event.preventDefault();\r\n\r\n const submitValue = event.submitter?.value ?? (options.useForm ? \"ok\" : undefined);\r\n const bypassValidation = Boolean(event.submitter?.hasAttribute(\"formnovalidate\"));\r\n\r\n attemptResolve({\r\n actionCode: submitValue,\r\n form,\r\n submitter: event.submitter,\r\n originalEvent: event,\r\n bypassValidation,\r\n });\r\n });\r\n } else {\r\n // Form doesn't exist yet, wait and try again\r\n requestAnimationFrame(setupFormListener);\r\n }\r\n };\r\n\r\n dialog.addEventListener(\"cancel\", (event) => {\r\n event.preventDefault();\r\n attemptResolve({\r\n actionCode: \"dismiss\",\r\n form: dialog.querySelector(\"form\"),\r\n originalEvent: event,\r\n });\r\n });\r\n\r\n // Handle dialog close event\r\n dialog.addEventListener(\"close\", () => {\r\n if (!settled) {\r\n settle(false, dialog, { shouldClose: false });\r\n }\r\n\r\n // Small delay to allow exit animation\r\n setTimeout(() => dialog.remove(), 200);\r\n });\r\n\r\n // Append to body and show\r\n document.body.appendChild(dialog);\r\n\r\n // Bind submit behavior after element is connected so lazy-rendered forms are discoverable\r\n requestAnimationFrame(setupFormListener);\r\n\r\n // Call optional rendered callback\r\n if (typeof options.rendered === \"function\") {\r\n options.rendered(dialog);\r\n }\r\n\r\n // Show the dialog as modal\r\n dialog.showModal();\r\n\r\n requestAnimationFrame(() => playDialogEnterAnimation(dialog));\r\n });\r\n}\r\n\r\n/**\r\n * Show an alert dialog\r\n * @param {string|Node|Array} message - Alert message\r\n * @param {Object} options - Optional dialog options\r\n * @returns {Promise}\r\n */\r\nexport async function alert(message, options = {}) {\r\n const defaults = {\r\n title: getPageTitle(),\r\n type: \"alert\",\r\n buttons: {\r\n ok: { name: \"OK\", primary: true },\r\n },\r\n };\r\n\r\n return ask(message, { ...defaults, ...options });\r\n}\r\n\r\n/**\r\n * Show a confirmation dialog\r\n * @param {string|Node|Array} message - Confirmation message\r\n * @param {Object} options - Optional dialog options\r\n * @returns {Promise<boolean>}\r\n */\r\nexport async function confirm(message, options = {}) {\r\n const defaults = {\r\n title: \"Confirm Action\",\r\n type: \"confirm\",\r\n buttons: {\r\n ok: { name: \"Confirm\", primary: true },\r\n cancel: { name: \"Cancel\", cancel: true },\r\n },\r\n };\r\n\r\n return ask(message, { ...defaults, ...options });\r\n}\r\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["dialog"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../node_modules/pure-web/src/js/common.js", "../../../node_modules/pure-web/src/js/autocomplete.js", "../../../src/js/pds-autocomplete.js"],
|
|
4
|
-
"sourcesContent": ["let ctlNr = 1000;\n\n/**\n * Returns a contextual unique identifier with the given prefix\n * @param {String} prefix\n * @param {Number} radix\n * @returns { String} unique identifier\n */\nexport function getUniqueName(prefix = \"df\", radix = 16) {\n return `${prefix}${(ctlNr++).toString(radix)}`;\n}\n\n/**\n * Generates an HTML NodeList by parsing the given HTML string\n * @param {String} html\n * @returns {NodeListOf<ChildNode>} DOM element\n */\nexport function parseHTML(html) {\n return new DOMParser().parseFromString(html, \"text/html\").body.childNodes;\n}\n\n/**\n * Debounces events that occur repeatedly, such as resize and mousemove events.\n * @param {Function} fn\n */\nexport function debounce(fn) {\n // This holds the requestAnimationFrame reference, so we can cancel it if we wish\n let frame;\n\n // The debounce function returns a new function that can receive a variable number of arguments\n return (...params) => {\n // If the frame variable has been defined, clear it now, and queue for next frame\n if (frame) {\n cancelAnimationFrame(frame);\n }\n\n // Queue our function call for the next frame\n frame = requestAnimationFrame(() => {\n // Call our function and pass any params we received\n fn(...params);\n });\n };\n}\n\n/**\n * Throttles execution of any function\n * @param {Function} fn - Function to fire\n * @param {Number} timeoutMs - time in milliseconds to buffer all calls to fn.\n */\nexport function throttle(fn, timeoutMs = 100) {\n let handle;\n return function executedFunction(...args) {\n const fire = () => {\n clearTimeout(handle);\n fn(...args);\n };\n clearTimeout(handle);\n handle = setTimeout(fire, timeoutMs);\n };\n}\n\n/**\n * Queues a call for when the main thread is free.\n * @param {Function} fn - the function to call\n */\nexport function enQueue(fn) {\n setTimeout(fn, 0);\n}\n\n/**\n * Returns true if the given string is a valid URL.\n * @param {String} str\n * @returns { Boolean }\n */\nexport function isUrl(str) {\n try {\n if (typeof str !== \"string\") return false;\n if (str.indexOf(\"\\n\") !== -1 || str.indexOf(\" \") !== -1) return false;\n if (str.startsWith(\"#/\")) return false;\n const newUrl = new URL(str, window.location.origin);\n return newUrl.protocol === \"http:\" || newUrl.protocol === \"https:\";\n } catch {\n return false;\n }\n}\n\n/**\n * Opens a window and returns the handle.\n * @param {String} url\n * @param {Number} width\n * @param {Number} height\n * @returns window handle reference\n */\nexport function openCenteredWindow(url, width, height) {\n const left = window.screen.width / 2 - width / 2;\n const top = window.screen.height / 2 - height / 2;\n return window.open(\n url,\n \"\",\n `toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=${width}, height=${height}, top=${top}, left=${left}`\n );\n}\n\n/**\n * Input Template.\n * @type {string}\n */\nconst inputTemplate = /*html*/ `\n<label>\n <span data-label></span>\n <span class=\"placeholder\"></span>\n</label>`;\n\n/**\n * Enhance inputs having data-label attribute.\n *\n * @param {HTMLElement|Document|null} root On which root element we should apply it.\n */\nexport function enhanceInputWithLabel(input) {\n const labelText = input.getAttribute(\"data-label\") ?? \"\";\n if (labelText.length) {\n const label = parseHTML(inputTemplate)[0];\n const type = input.getAttribute(\"type\") || \"text\";\n input.insertAdjacentElement(\"beforebegin\", label);\n label.querySelector(\".placeholder\").replaceWith(input);\n label.querySelector(\"span[data-label]\").textContent = labelText;\n input.removeAttribute(\"data-label\");\n input.setAttribute(\"type\", type);\n }\n\n const icon = input.getAttribute(\"data-icon\") || \"\";\n if (icon) {\n const iconColor = input.getAttribute(\"data-icon-color\") || \"\";\n const iconSize = input.getAttribute(\"data-icon-size\") || \"\";\n const iconHtml = /*html*/ `<svg-icon icon=\"${icon}\" color=\"${iconColor}\" size=\"${iconSize}\"></svg-icon>`;\n input.insertAdjacentElement(\"afterend\", parseHTML(iconHtml)[0]);\n }\n}\n\nlet uniqueNavId;\n/**\n * Enhances a <nav data-dropdown><button></button><menu></menu></nav> structure\n * to become a dropdown button.\n * @param {HTMLElement} nav\n * @returns {String} return value indicating the enhancement has been applied.\n */\nexport function enhanceNavDropdownButton(nav) {\n const button = nav.querySelector(\"button\");\n if (button.textContent.trim().length === 0) {\n const span = document.createElement(\"span\");\n span.innerHTML = \" \";\n span.setAttribute(\"data-label\", \"\");\n span.setAttribute(\"hidden\", \"\");\n button.appendChild(span);\n }\n const menu = nav.querySelector(\"menu\");\n menu.setAttribute(\"role\", \"menu\");\n menu.setAttribute(\"hidden\", \"\");\n\n uniqueNavId = getUniqueName(\"nav\");\n\n nav.setAttribute(\"aria-controls\", uniqueNavId);\n nav.setAttribute(\"aria-haspopup\", \"true\");\n nav.setAttribute(\"aria-expanded\", \"false\");\n menu.setAttribute(\"id\", uniqueNavId);\n [...menu.children].forEach((li) => {\n li.setAttribute(\"role\", \"menuitem\");\n });\n\n button.addEventListener(\"click\", () => {\n const hidden = menu.hasAttribute(\"hidden\");\n if (hidden) {\n menu.removeAttribute(\"hidden\");\n\n setTimeout(() => {\n document.addEventListener(\n \"click\",\n (e) => {\n if (!nav.contains(e.target)) button.click();\n },\n {\n once: true,\n }\n );\n }, 100);\n } else menu.setAttribute(\"hidden\", \"\");\n });\n return \"nav\";\n}\n\n/**\n * Returns a string that displays the element in a CSS-type,\n * readable way, following CSS selector syntax.\n * @param {HTMLElement} element\n * @returns {String} human readable string that identifies the element.\n */\nexport function getElementSelector(element) {\n const id = element.id ? \"#\" + element.id : \"\";\n let cls = [...element.classList].join(\".\");\n if (cls) cls = \".\" + cls;\n return `${element.nodeName.toLowerCase()}${id}${cls}`;\n}\n\n/**\n * Enhances a regular grid to become a masonry grid\n * @param {HTMLElement} element\n */\nexport function enhanceMasonryGrid(element) {\n element.style.setProperty(\"grid-auto-rows\", \"20px\");\n\n addStyleSheet(/*css*/ `\n .masonry {\n opacity: 0;\n }\n\n .masonry-applied {\n opacity: 1;\n transition: opacity .2s ease\n }\n `);\n\n const resizeGridItem = (item) => {\n const rowHeight = parseInt(\n window.getComputedStyle(element).getPropertyValue(\"grid-auto-rows\")\n );\n const rowGap = parseInt(\n window.getComputedStyle(element).getPropertyValue(\"grid-row-gap\")\n );\n const content = item.querySelector(\":scope > *\") ?? item;\n const rowSpan = Math.ceil(\n (content.getBoundingClientRect().height + rowGap) / (rowHeight + rowGap)\n );\n item.style.gridRowEnd = \"span \" + rowSpan;\n };\n\n const resizeAllGridItems = () => {\n try {\n element.classList.remove(\"masonry-applied\");\n for (const item of element.children) resizeGridItem(item);\n } finally {\n element.classList.add(\"masonry-applied\");\n }\n };\n\n window.addEventListener(\"resize\", throttle(resizeAllGridItems, 100));\n waitForImages(element).then(resizeAllGridItems);\n\n return \"masonry\";\n}\n\n/**\n * Returns a Promise that resolves when all images in the given container have downloaded.\n */\nexport function waitForImages(container) {\n const imgElements = container.querySelectorAll(\"img\");\n\n const imgPromises = Array.from(imgElements).map((img) => {\n return new Promise((resolve, reject) => {\n const imgSrc = img.src;\n const image = new Image();\n image.onload = () => resolve(imgSrc);\n image.onerror = (error) => reject(error);\n image.src = imgSrc;\n });\n });\n return Promise.all(imgPromises);\n}\n\n/**\n * Creates\n * @param {String} cssText\n * @returns {String} id of the style element\n */\nexport function addStyleSheet(cssText) {\n const id = generateHash(cssText);\n let styleElement = document.getElementById(id);\n if (!styleElement) {\n styleElement = document.createElement(\"style\");\n styleElement.id = id;\n styleElement.textContent = cssText;\n document.querySelector(\"head\").appendChild(styleElement);\n }\n return id;\n}\n\n/**\n * Generates a hash that uniquely identifies a string\n * @param {String} str\n * @param {Number} seed\n * @returns {String }\n */\nexport function generateHash(str, seed = 0) {\n let h1 = 0xdeadbeef ^ seed,\n h2 = 0x41c6ce57 ^ seed;\n for (let i = 0, ch; i < str.length; i++) {\n ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n h1 =\n Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^\n Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 =\n Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^\n Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n const hashNr = 4294967296 * (2097151 & h2) + (h1 >>> 0);\n const radix = 16;\n return `h${hashNr.toString(radix)}`;\n}\n\n/**\n * Enhance buttons with [data-prepend-icon] and [data-append-icon]\n * @param {HTMLButtonElement} button\n */\nexport function enhanceButtonWithIcon(button) {\n [\"prepend\", \"append\"].forEach((position) => {\n const icon = button.getAttribute(`data-${position}-icon`) ?? \"\";\n if (icon) {\n button.removeAttribute(`data-${position}-icon`);\n button.classList.add(\"icon\", position === \"prepend\" ? \"left\" : \"right\");\n const svgIcon = parseHTML(`<svg-icon icon=\"${icon}\"></svg-icon>`)[0];\n button.insertBefore(svgIcon, button.childNodes[0]);\n }\n return \"icon-button\";\n });\n}\n\n/**\n * Progressively enhances a range input into a social rating control\n * @param {HtmlElement} range input\n */\nexport function enhanceRangeStars(range) {\n if (!(range instanceof HTMLInputElement) || range.type !== \"range\") return;\n\n const inputTemplate = /*html*/ `<span class=\"stars-rating\">\n <span class=\"placeholder\"></span>\n </span>`;\n\n range.classList.remove(\"stars-rating\");\n const surroundingSpan = parseHTML(inputTemplate)[0];\n range.insertAdjacentElement(\"beforebegin\", surroundingSpan);\n surroundingSpan.querySelector(\".placeholder\").replaceWith(range);\n range.max = range.max ?? 5;\n\n range.id = range.id ?? getUniqueName();\n surroundingSpan.style.setProperty(\"--max-value\", Number(range.max));\n\n const output = parseHTML(\n /*html*/ `<output for=\"${range.id}\" data-max=\"${range.max}\"></output>`\n )[0];\n surroundingSpan.appendChild(output);\n const update = (value) => {\n range.setAttribute(\"value\", value);\n output.value = value;\n output.setAttribute(\"data-stars\", \"\u2605\".repeat(parseInt(value)));\n };\n range.addEventListener(\"input\", (e) => {\n update(e.target.value);\n });\n\n update(range.value);\n}\n\n/**\n * Gets a boolean value from a string or number\n * @param {Object} value\n * @returns { Boolean }\n */\nexport function toBoolean(value) {\n if (typeof value === \"boolean\") return value;\n if (typeof value === \"string\") return value.toLowerCase() === \"true\";\n if (typeof value === \"number\") return value !== 0;\n return false;\n}\n\n/**\n * Converts a CamelCased string to a string with individual words separated by spaces.\n * @param { String } text\n * @returns { String } converted string\n */\nexport function toWords(text) {\n text = text.replace(/([A-Z])/g, \" $1\");\n return text.charAt(0).toUpperCase() + text.slice(1);\n}\n\n/**\n * Converts kebab-case string into PascalCase\n * @param { String } text\n * @returns { String } CamelCased version of the input string\n */\nexport function kebabToPascal(text) {\n return text\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\"\");\n}\n", "import {\n enQueue,\n throttle,\n isUrl,\n openCenteredWindow,\n parseHTML,\n} from \"./common\";\n\nconst cssClasses = {\n result: \"ac-suggestion\",\n item: \"ac-itm\",\n};\n\n/**\n * Generic Autocompletion class for enrichment of textboxes\n */\nexport class AutoComplete extends EventTarget {\n constructor(parent, textInput, settings) {\n super();\n this.settings = {\n emptyResultsText: \"\",\n ...settings,\n };\n this.container = parent;\n this.input = textInput;\n this.input.setAttribute(\"autocomplete\", \"off\");\n this.categories = settings.categories || {};\n this.caches = new Map();\n\n enQueue(this.attach.bind(this));\n }\n\n /**\n * Connector logic to call on @focus events.\n * Lit example:\n * <input type=\"search\" @focus=${(e) => {AutoComplete.connect(e, this.autoComplete); }} />\n *\n * @param {*} event focus event\n * @param {*} options AutoComplete options\n */\n static connect(event, options) {\n const input = event.target;\n if (!input._autoComplete) {\n if (!options?.categories) throw Error(\"Missing autocomplete settings\");\n input._autoComplete = new AutoComplete(input.parentNode, input, options);\n\n if (event.type === \"focus\") {\n setTimeout(() => {\n input._autoComplete.focusHandler(event);\n }, 100);\n }\n }\n return input._autoComplete;\n }\n\n on(a, b) {\n this.input.addEventListener(a, b);\n return this;\n }\n\n attach() {\n this.resultsDiv = document.createElement(\"div\");\n this.resultsDiv.title = \"\"; // block\n this.resultsDiv.classList.add(cssClasses.result);\n \n if(this.container.offsetWidth > 100)\n this.resultsDiv.style.width = this.container.offsetWidth;\n\n this.resultsDiv.addEventListener(\"mousedown\", this.resultClick.bind(this));\n this.container.classList.add(\"ac-container\");\n this.input.classList.add(\"ac-input\");\n const inputStyle = getComputedStyle(this.input);\n this.container.style.setProperty(\n \"--ac-bg-default\",\n inputStyle.backgroundColor\n );\n this.container.style.setProperty(\"--ac-color-default\", inputStyle.color);\n const acc = getComputedStyle(this.input).accentColor;\n if (acc !== \"auto\")\n this.container.style.setProperty(\"--ac-accent-color\", acc);\n\n (this.container?.shadowRoot ?? this.container).appendChild(this.resultsDiv);\n\n this.controller().clear(\"attach\");\n\n this.on(\n \"input\",\n throttle(\n this.inputHandler.bind(this),\n this.settings.throttleInputMs ?? 300\n )\n )\n .on(\"focus\", this.focusHandler.bind(this))\n .on(\"focusout\", this.blurHandler.bind(this))\n .on(\"keyup\", this.keyUpHandler.bind(this))\n .on(\"keydown\", this.keyDownHandler.bind(this));\n }\n\n controller() {\n let c = this.internalController();\n\n if (typeof this.settings.controller === \"function\")\n c = this.settings.controller(this) ?? c;\n\n return c;\n }\n\n internalController() {\n return {\n show: this.show.bind(this),\n hide: this.hide.bind(this),\n clear: this.clear.bind(this),\n empty: () => {},\n };\n }\n\n moveResult(add) {\n this.controller().show();\n let length = this.acItems.length;\n this.rowIndex = this.rowIndex + add;\n\n if (this.rowIndex <= 0) {\n this.rowIndex = 0;\n } else if (this.rowIndex > length - 1) {\n this.rowIndex = 0;\n }\n for (const r of this.acItems) {\n r.classList.remove(\"selected\");\n }\n\n let div = this.getSelectedDiv();\n if (div) {\n div.classList.add(\"selected\");\n div.scrollIntoView({\n behavior: \"smooth\",\n block: \"end\",\n inline: \"nearest\",\n });\n } else {\n this.focusHandler({\n target: this.input,\n });\n }\n }\n\n getSelectedDiv() {\n return this.resultsDiv.querySelector(`div:nth-child(${this.rowIndex + 1})`);\n }\n\n // execute action\n selectResult(div) {\n div = div || this.getSelectedDiv();\n\n if (div) {\n let index = parseInt(div.getAttribute(\"data-index\"));\n this.resultClicked = true;\n let result = this.results[index];\n\n let handlingCategory = this.categories[result.category] ?? {};\n handlingCategory.action =\n handlingCategory.action ?? this.setText.bind(this);\n\n if (handlingCategory.newTab) {\n this.tabWindow = openCenteredWindow(\"about:blank\");\n }\n\n let options = {\n ...result,\n search: this.input.value,\n };\n\n div.classList.add(\"ac-active\");\n\n setTimeout(() => {\n this.controller().hide(\"result-selected\");\n\n if (options.action) {\n options.action(options);\n } else {\n handlingCategory.action(options);\n if (handlingCategory.newTab) {\n if (options.url) {\n this.tabWindow.location.href = options.url;\n } else {\n this.tabWindow.close();\n }\n }\n }\n var event = new Event(\"change\", { bubbles: true });\n this.input.dispatchEvent(event);\n\n this.controller().clear(\"result-selected\");\n\n const ev = new Event(\"result-selected\");\n ev.detail = options;\n this.input.dispatchEvent(ev);\n }, 0);\n }\n }\n\n setText(options) {\n let valueSet = false;\n if (this.input) {\n this.input.value = options.text;\n valueSet = true;\n } else if (this.container?.autoCompleteInput) {\n this.container.autoCompleteInput.value = options.text;\n valueSet = true;\n } else if (\"value\" in this.container) {\n this.container.value = options.text;\n valueSet = true;\n }\n\n if (valueSet && this.input) {\n this.input.dispatchEvent(new Event(\"input\", { bubbles: true }));\n }\n\n this.controller().hide(\"settext\");\n }\n\n resultClick(event) {\n this.selectResult(event.target.closest(`.${cssClasses.item}`));\n }\n\n blurHandler() {\n setTimeout(() => {\n if (!this.resultClicked) this.controller().clear(\"blurred\");\n\n this.resultClicked = false;\n }, 100);\n }\n\n clear() {\n if (this.settings.debug) return;\n\n if (!this.resultsDiv) return;\n this.resultsDiv.innerHTML = \"\";\n this.controller().hide(\"clear\");\n\n if (this.cacheTmr) clearTimeout(this.cacheTmr);\n\n this.cacheTmr = setTimeout(() => {\n this.caches.clear();\n }, 60 * 1000 * 5); // 5 minutes\n }\n\n show() {\n // check dropDown/dropUp\n\n if (!this.resultsDiv.classList.contains(\"ac-active\")) {\n const viewBounds = this.getViewBounds();\n\n this.resultsDiv.style.position = \"absolute\";\n\n if(viewBounds.rect.width > 100)\n this.resultsDiv.style.width = `${viewBounds.rect.width}px`;\n\n this.settings.direction = this.settings.direction ?? viewBounds.suggestedDirection;\n this.resultsDiv.setAttribute(\"data-direction\", this.settings.direction);\n\n if (this.settings.direction === \"up\") {\n this.resultsDiv.style.top = \"unset\";\n this.resultsDiv.style.bottom = `${viewBounds.rect.height + 20}px`;\n this.rowIndex = this.acItems.length;\n } else {\n this.resultsDiv.style.bottom = \"unset\";\n this.resultsDiv.style.top = `${viewBounds.rect.height}px`;\n this.rowIndex = -1;\n }\n this.resultsDiv.style.maxWidth = \"unset\";\n this.resultsDiv.classList.toggle(\"ac-active\", true);\n }\n }\n\n getViewBounds() {\n const rect = this.input.getBoundingClientRect();\n\n return {\n rect,\n suggestedDirection:\n rect.top + rect.height + 500 > window.innerHeight ? \"up\" : \"down\",\n };\n }\n\n hide() {\n this.resultsDiv.classList.toggle(\"ac-active\", false);\n }\n\n empty() {\n this.resultsDiv.innerHTML = `<div class=\"ac-empty\">${this.settings.emptyResultsText}</div>`;\n this.controller().show();\n }\n\n inputHandler(e) {\n if (this.cacheTmr) clearTimeout(this.cacheTmr);\n\n let options = {\n search: e.target.value,\n categories: this.categories,\n };\n\n this.container.classList.add(\"search-running\");\n\n this.getItems(options, e).then((r) => {\n this.controller().clear(\"new-results\");\n this.resultsHandler(r, options);\n this.container.classList.remove(\"search-running\");\n });\n }\n\n keyDownHandler(e) {\n switch (e.key) {\n case \"Enter\":\n e.stopPropagation();\n e.preventDefault();\n break;\n case \"ArrowDown\":\n enQueue(this.moveResult(1));\n break;\n case \"ArrowUp\":\n enQueue(this.moveResult(-1));\n break;\n }\n }\n\n keyUpHandler(e) {\n switch (e.key) {\n case \"Escape\":\n this.controller().hide(\"escape\");\n break;\n case \"Enter\":\n if (this.getSelectedDiv()) {\n this.container.preventEnter = true;\n e.stopPropagation();\n e.preventDefault();\n this.selectResult();\n setTimeout(() => {\n this.container.preventEnter = false;\n }, 10);\n }\n\n break;\n default:\n //this.toggle();\n break;\n }\n }\n\n focusHandler(e) {\n this.controller().clear(\"focus\");\n let value = e.target.value;\n this.suggest(value, e);\n }\n\n /**\n * Shows suggestion box\n * @param {string} value - String to suggest results for\n */\n suggest(value, e) {\n this.input.focus();\n\n const options = {\n suggest: true,\n search: value || \"\",\n categories: this.categories,\n };\n this.getItems(options, e).then((r) => {\n this.input.dispatchEvent(\n new CustomEvent(\"show-results\", {\n detail: {\n results: r,\n },\n })\n );\n\n this.resultsHandler(r, options);\n });\n }\n\n // Sort results based on static (integer) or dynamic (function) sortIndex in category.\n sort(r, options) {\n return r.sort((a, b) => {\n const aCat = options.categories[a.category];\n const bCat = options.categories[b.category];\n const aIndex =\n typeof aCat.sortIndex === \"function\"\n ? aCat.sortIndex(options)\n : aCat.sortIndex ?? 0;\n const bIndex =\n typeof bCat.sortIndex === \"function\"\n ? bCat.sortIndex(options)\n : bCat.sortIndex ?? 0;\n return bIndex > aIndex ? 1 : -1;\n });\n }\n\n resultsHandler(r, options) {\n this.results = r;\n this.rowIndex = -1;\n let index = 0;\n\n const singleItemTemplate = (catHandler, i) => {\n return /*html*/ `\n <div title=\"${i.tooltip || \"\"}\" data-index=\"${index}\" class=\"${`${\n cssClasses.item\n } cat-${i.category} ${i.class ?? \"\"}`.trim()}\"${\n i.style ? ` style=\"${i.style}\"` : \"\"\n }>\n ${this.handleImageOrIcon(i)}\n <span class=\"text\">${this.formatResultItem(\n i,\n options,\n catHandler\n )}</span>\n ${\n !this.settings.hideCategory\n ? `<span class=\"category\">${i.category || \"\"}</span>`\n : \"\"\n }\n </div>`;\n };\n\n r.forEach((i) => {\n let catHandler = options.categories[i.category] || {};\n if (i.element) {\n this.resultsDiv.appendChild(i.element);\n } else {\n i = typeof i === \"string\" ? { text: i } : i;\n this.resultsDiv.appendChild(\n parseHTML(singleItemTemplate(catHandler, i))[0]\n );\n }\n\n index++;\n });\n if (r.length) {\n this.acItems = this.resultsDiv.querySelectorAll(\".ac-itm\");\n this.controller().show();\n } else if (options.search.length) this.controller().empty();\n }\n\n handleImageOrIcon(i) {\n if (i.image) {\n return /*html*/ `<img src=\"${i.image}\"/>`;\n }\n\n if(typeof(this.settings.iconHandler) === \"function\") \n return this.settings.iconHandler(i);\n\n return /*html*/ `<svg-icon icon=\"${i.icon}\"></svg-icon>`;\n }\n\n formatResultItem(item, options, catHandler) {\n const i = typeof item === \"string\" ? { text: item } : item;\n let result = i.text;\n\n if (options.search) {\n result = result.replace(\"%search%\", options.search);\n i.description = i.description?.replace(\"%search%\", options.search);\n }\n\n result = this.highlight(result, options.search);\n\n if (i.description) {\n result = `<div>${result}</div><small>${i.description}</small>`;\n }\n\n if (catHandler.format) {\n result = catHandler.format({\n item: i,\n result: result,\n options: options,\n });\n }\n return result;\n }\n\n highlight(str, find) {\n var reg = new RegExp(\"(\" + find + \")\", \"gi\");\n return str.replace(reg, '<span class=\"txt-hl\">$1</span>');\n }\n\n async getItems(options, e) {\n if (this.aborter) {\n this.aborter.abort();\n }\n\n let cache = this.caches.get(options.search);\n if (cache) return cache;\n\n const prop = this.settings.map;\n\n const normalizeItem = (i) => {\n if (typeof i === \"string\") i = { text: i };\n\n return i;\n };\n\n const map = (list) => {\n if (!prop) {\n return list.map((i) => {\n return normalizeItem(i);\n });\n }\n return list.map((i) => {\n return { text: i[prop] };\n });\n };\n\n const max = (list) => {\n if (this.settings.max && this.settings.max > 0) {\n list.length = this.settings.max;\n }\n return list;\n };\n\n // Create a new AbortController instance\n this.aborter = new AbortController();\n this.aborterSignal = this.aborter.signal;\n\n return new Promise((resolve) => {\n const internalResolve = (data) => {\n data = this.sort(data, options);\n\n if (this.settings.cache !== false)\n this.caches.set(options.search, data);\n\n resolve(data);\n };\n\n if (isUrl(this.items)) {\n if (this.settings.minlength > 0) {\n if (\n !options.search ||\n options.search.length < this.settings.minlength\n ) {\n internalResolve([]);\n return;\n }\n }\n let url = this.formatSearch(this.items, options);\n fetch(url).then((x) => {\n if (x.status === 200) {\n x.json().then((items) => {\n items = map(items);\n\n internalResolve(\n max(\n items.filter((i) => {\n return this.isMatch(options, i);\n })\n )\n );\n });\n return;\n }\n throw Error(`HTTP error ${x.status} - ${url}`);\n });\n } else if (Array.isArray(this.items)) {\n let simple = true;\n\n this.items = this.items.map((i) => {\n if (typeof i === \"string\") {\n return { text: i };\n }\n simple = false;\n return i;\n });\n if (simple) {\n this.container.classList.add(\"simple\");\n }\n internalResolve(max(map(this.items)));\n } else if (typeof this.items === \"function\") {\n options.control = this.container;\n let ar = Promise.resolve(this.items(options, e));\n ar.then((ar) => {\n ar = ar.map((i) => {\n return normalizeItem(i);\n });\n\n ar = map(ar);\n\n internalResolve(ar);\n });\n } else {\n return internalResolve(\n Promise.resolve(this.items.apply(this, options))\n );\n }\n });\n }\n\n async items(options) {\n let arr = [];\n options.results = [];\n options.signal = this.aborterSignal;\n\n for (var c in options.categories) {\n let catHandler = options.categories[c];\n catHandler.trigger =\n catHandler.trigger ??\n (() => {\n return true;\n });\n options.results = arr;\n\n if (catHandler.trigger(options)) {\n let catResults = [];\n try {\n catResults = await catHandler.getItems(options);\n } catch (ex) {\n console.warn(`Error loading items for omniBox category '${c}'.`, ex);\n }\n\n arr = arr.concat(\n catResults.map((i) => {\n i.category = c;\n return i;\n })\n );\n }\n }\n\n return arr;\n }\n\n formatSearch(url, options) {\n if (url.indexOf(\"%search%\")) {\n return url.replace(\"%search%\", options.search || \"\");\n }\n\n return url + \"?\" + this.createQueryParam(options);\n }\n\n createQueryParam(options) {\n let suggest = options.suggest ? \"&suggest=true\" : \"\";\n return `q=${options.text}${suggest}`;\n }\n\n isMatch(options, i) {\n if (i.text?.indexOf(\"%search%\") >= 0) return true;\n\n return options.search\n ? i.text?.toLowerCase().indexOf(options.search.toLowerCase()) >= 0\n : options.suggest;\n }\n\n static textFilter(options, propertyName) {\n return function (i) {\n if (!options.search) return true;\n\n if (i.hidden) return false;\n\n const prop = propertyName ? i[propertyName] : i;\n const isMatch = prop.match(new RegExp(options.search, \"gi\"));\n\n if (isMatch) return isMatch;\n\n if (i.config?.tags) {\n return i.config.tags.some((tag) => {\n return tag.match(new RegExp(options.search, \"gi\"));\n });\n }\n };\n }\n}\n", "import { AutoComplete } from \"pure-web/ac\";\r\n\r\nconst originalSelectResult = AutoComplete?.prototype?.selectResult;\r\n\r\nif (\r\n\ttypeof originalSelectResult === \"function\" &&\r\n\tAutoComplete?.prototype?.__pdsSelectedItemPatched !== true\r\n) {\r\n\tAutoComplete.prototype.selectResult = function patchedSelectResult(div) {\r\n const selectedItem = div || this.getSelectedDiv?.();\r\n\t\tif (!selectedItem) {\r\n\t\t\treturn originalSelectResult.call(this, div);\r\n\t\t}\r\n\r\n\t\tconst indexRaw = selectedItem.getAttribute?.(\"data-index\") ?? \"\";\r\n\t\tconst index = Number.parseInt(indexRaw, 10);\r\n\t\tconst result = Number.isInteger(index) ? this.results?.[index] : null;\r\n\t\tconst categoryConfig =\r\n\t\t\tresult && this.categories ? this.categories[result.category] : null;\r\n\t\tconst restores = [];\r\n\r\n\t\tconst wrapAction = (target, key) => {\r\n\t\t\tif (!target || typeof target[key] !== \"function\") return;\r\n\t\t\tconst originalAction = target[key];\r\n\t\t\tlet restored = false;\r\n\r\n\t\t\tconst restore = () => {\r\n\t\t\t\tif (restored) return;\r\n\t\t\t\ttarget[key] = originalAction;\r\n\t\t\t\trestored = true;\r\n\t\t\t};\r\n\r\n\t\t\ttarget[key] = function wrappedAction(options = {}, ...rest) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\toptions &&\r\n\t\t\t\t\t\ttypeof options === \"object\" &&\r\n\t\t\t\t\t\t!(\"selectedItem\" in options)\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\toptions.selectedItem = selectedItem;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn originalAction.call(this, options, ...rest);\r\n\t\t\t\t} finally {\r\n\t\t\t\t\trestore();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\trestores.push(restore);\r\n\t\t};\r\n\r\n\t\twrapAction(result, \"action\");\r\n\t\twrapAction(categoryConfig, \"action\");\r\n\r\n\t\tconst output = originalSelectResult.call(this, selectedItem);\r\n\r\n\t\t// Fallback cleanup for unexpected flows where upstream action does not run.\r\n\t\tsetTimeout(() => {\r\n\t\t\tfor (const restore of restores) {\r\n\t\t\t\trestore();\r\n\t\t\t}\r\n\t\t}, 1000);\r\n\r\n\t\treturn output;\r\n\t};\r\n\r\n\tAutoComplete.prototype.__pdsSelectedItemPatched = true;\r\n}\r\n\r\nexport { AutoComplete };\r\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["ar"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/js/common/pds-log.js", "../../../src/js/common/localization.js", "../../../src/js/pds-core/pds-enhancers.js"],
|
|
4
|
-
"sourcesContent": ["const __SUPPORTED_LOG_LEVELS = new Set([\"log\", \"warn\", \"error\", \"debug\", \"info\"]);\r\nconst __PDS_SINGLETON_KEY = \"__PURE_DS_PDS_SINGLETON__\";\r\n\r\nlet __logProvider = null;\r\nlet __contextProvider = null;\r\n\r\nfunction __resolveGlobalPDS() {\r\n try {\r\n const scope = typeof globalThis !== \"undefined\" ? globalThis : window;\r\n const candidate = scope?.[__PDS_SINGLETON_KEY];\r\n if (candidate && typeof candidate === \"object\") {\r\n return candidate;\r\n }\r\n } catch (error) {\r\n return null;\r\n }\r\n return null;\r\n}\r\n\r\nfunction __normalizeContext(context) {\r\n if (!context || typeof context !== \"object\") {\r\n return null;\r\n }\r\n return {\r\n mode: context.mode === \"live\" || context.mode === \"static\" ? context.mode : null,\r\n debug: context.debug === true,\r\n thisArg: context.thisArg,\r\n };\r\n}\r\n\r\nfunction __normalizeLevel(level) {\r\n if (typeof level !== \"string\") return \"log\";\r\n const normalized = level.toLowerCase();\r\n return __SUPPORTED_LOG_LEVELS.has(normalized) ? normalized : \"log\";\r\n}\r\n\r\nfunction __resolveContext() {\r\n if (typeof __contextProvider === \"function\") {\r\n try {\r\n const configuredContext = __normalizeContext(__contextProvider());\r\n if (configuredContext) {\r\n return configuredContext;\r\n }\r\n } catch (error) {}\r\n }\r\n\r\n const globalPDS = __resolveGlobalPDS();\r\n if (globalPDS) {\r\n const mode =\r\n globalPDS?.mode ||\r\n globalPDS?.compiled?.mode ||\r\n (globalPDS?.registry?.isLive ? \"live\" : \"static\");\r\n const debug =\r\n (globalPDS?.debug ||\r\n globalPDS?.currentConfig?.debug ||\r\n globalPDS?.currentConfig?.design?.debug ||\r\n globalPDS?.compiled?.debug ||\r\n globalPDS?.compiled?.design?.debug ||\r\n false) === true;\r\n return {\r\n mode,\r\n debug,\r\n thisArg: globalPDS,\r\n };\r\n }\r\n\r\n return { mode: null, debug: false };\r\n}\r\n\r\nfunction __resolveLogger() {\r\n if (typeof __logProvider === \"function\") {\r\n try {\r\n const logger = __logProvider();\r\n if (typeof logger === \"function\") {\r\n return logger;\r\n }\r\n } catch (error) {}\r\n }\r\n\r\n const globalPDS = __resolveGlobalPDS();\r\n if (typeof globalPDS?.logHandler === \"function\") {\r\n return globalPDS.logHandler;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction __consoleLog(level, message, ...data) {\r\n if (typeof console === \"undefined\") return;\r\n const method =\r\n typeof console[level] === \"function\"\r\n ? console[level].bind(console)\r\n : typeof console.log === \"function\"\r\n ? console.log.bind(console)\r\n : null;\r\n if (!method) return;\r\n\r\n if (data.length > 0) {\r\n method(message, ...data);\r\n } else {\r\n method(message);\r\n }\r\n}\r\n\r\nfunction __shouldUseConsoleFallback(level, context) {\r\n const debugEnabled = context?.debug === true;\r\n const staticMode = context?.mode === \"static\";\r\n\r\n if (staticMode && !debugEnabled) {\r\n return false;\r\n }\r\n\r\n if (!debugEnabled && level !== \"error\" && level !== \"warn\") {\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nexport function configurePDSLogger({ getLogger, getContext } = {}) {\r\n __logProvider = typeof getLogger === \"function\" ? getLogger : null;\r\n __contextProvider = typeof getContext === \"function\" ? getContext : null;\r\n}\r\n\r\nexport function pdsLog(level = \"log\", message, ...data) {\r\n const normalizedLevel = __normalizeLevel(level);\r\n const context = __resolveContext();\r\n const customLogger = __resolveLogger();\r\n\r\n if (customLogger) {\r\n try {\r\n customLogger.call(context?.thisArg, normalizedLevel, message, ...data);\r\n return;\r\n } catch (error) {\r\n __consoleLog(\"error\", \"Custom log handler failed:\", error);\r\n }\r\n }\r\n\r\n if (!__shouldUseConsoleFallback(normalizedLevel, context)) {\r\n return;\r\n }\r\n\r\n __consoleLog(normalizedLevel, message, ...data);\r\n}\r\n", "import { pdsLog } from \"./pds-log.js\";\r\n\r\nconst __DEFAULT_LOCALE__ = \"en\";\r\n\r\nconst __localizationState = {\r\n defaultLocale: __DEFAULT_LOCALE__,\r\n provider: null,\r\n messagesByLocale: new Map(),\r\n loadingByLocale: new Map(),\r\n observer: null,\r\n reconcileTimer: null,\r\n requestedKeys: new Set(),\r\n textNodeKeyMap: new WeakMap(),\r\n attributeKeyMap: new WeakMap(),\r\n valueToKeys: new Map(),\r\n missingWarnings: new Set(),\r\n};\r\n\r\nconst __LOCALIZABLE_ATTRIBUTES = [\r\n \"title\",\r\n \"placeholder\",\r\n \"aria-label\",\r\n \"aria-description\",\r\n \"aria-placeholder\",\r\n \"aria-roledescription\",\r\n \"alt\",\r\n \"label\",\r\n];\r\n\r\nconst __isStrTagged = (val) =>\r\n Boolean(val) && typeof val !== \"string\" && typeof val === \"object\" && \"strTag\" in val;\r\n\r\nfunction __normalizeLocale(locale) {\r\n return String(locale || \"\").trim().toLowerCase();\r\n}\r\n\r\nfunction __toBaseLocale(locale) {\r\n const normalized = __normalizeLocale(locale);\r\n if (!normalized) return \"\";\r\n return normalized.split(\"-\")[0] || normalized;\r\n}\r\n\r\nfunction __resolveLocaleCandidate(locale) {\r\n const normalized = __normalizeLocale(locale);\r\n if (!normalized) {\r\n return __localizationState.defaultLocale;\r\n }\r\n\r\n const resolveLocale = __localizationState.provider?.resolveLocale;\r\n if (typeof resolveLocale === \"function\") {\r\n const resolved = __normalizeLocale(resolveLocale(locale));\r\n if (resolved) {\r\n return resolved;\r\n }\r\n }\r\n\r\n return normalized;\r\n}\r\n\r\nfunction __collateStrings(strings) {\r\n let result = \"\";\r\n for (let index = 0; index <= strings.length - 1; index += 1) {\r\n result += strings[index];\r\n if (index < strings.length - 1) {\r\n result += `{${index}}`;\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nfunction __replacePlaceholders(input, callback) {\r\n return String(input).replace(/\\{(\\d+)\\}/g, (_match, index) => callback(Number(index)));\r\n}\r\n\r\nfunction __normalizeMessages(messages) {\r\n if (!messages || typeof messages !== \"object\") {\r\n return {};\r\n }\r\n\r\n const normalized = {};\r\n for (const [key, value] of Object.entries(messages)) {\r\n if (typeof value === \"string\") {\r\n normalized[key] = value;\r\n continue;\r\n }\r\n\r\n if (value && typeof value === \"object\" && typeof value.content === \"string\") {\r\n normalized[key] = value.content;\r\n }\r\n }\r\n\r\n return normalized;\r\n}\r\n\r\nfunction __resolveProvider(config) {\r\n const provider =\r\n config && typeof config.provider === \"object\" && config.provider\r\n ? config.provider\r\n : null;\r\n\r\n const translate =\r\n typeof config?.translate === \"function\"\r\n ? config.translate\r\n : typeof provider?.translate === \"function\"\r\n ? provider.translate\r\n : null;\r\n\r\n const loadLocale =\r\n typeof config?.loadLocale === \"function\"\r\n ? config.loadLocale\r\n : typeof provider?.loadLocale === \"function\"\r\n ? provider.loadLocale\r\n : null;\r\n\r\n const setLocale =\r\n typeof config?.setLocale === \"function\"\r\n ? config.setLocale\r\n : typeof provider?.setLocale === \"function\"\r\n ? provider.setLocale\r\n : null;\r\n\r\n const resolveLocale =\r\n typeof config?.resolveLocale === \"function\"\r\n ? config.resolveLocale\r\n : typeof provider?.resolveLocale === \"function\"\r\n ? provider.resolveLocale\r\n : null;\r\n\r\n if (!translate && !loadLocale && !setLocale && !resolveLocale) {\r\n return null;\r\n }\r\n\r\n return {\r\n translate,\r\n loadLocale,\r\n setLocale,\r\n resolveLocale,\r\n };\r\n}\r\n\r\nfunction __localeVariants(locale) {\r\n const normalized = __normalizeLocale(locale);\r\n if (!normalized) {\r\n return [__localizationState.defaultLocale];\r\n }\r\n const base = __toBaseLocale(normalized);\r\n if (!base || base === normalized) {\r\n return [normalized];\r\n }\r\n return [normalized, base];\r\n}\r\n\r\nfunction __setLocaleMessages(locale, messages) {\r\n const normalizedLocale = __resolveLocaleCandidate(locale);\r\n __localizationState.messagesByLocale.set(\r\n normalizedLocale,\r\n __normalizeMessages(messages)\r\n );\r\n}\r\n\r\nfunction __registerRequestedKey(key) {\r\n if (typeof key === \"string\" && key.length > 0) {\r\n __localizationState.requestedKeys.add(key);\r\n }\r\n}\r\n\r\nfunction __indexTranslatedValue(key, value) {\r\n if (typeof key !== \"string\" || !key.length) {\r\n return;\r\n }\r\n\r\n const translatedValue = typeof value === \"string\" ? value : String(value || \"\");\r\n if (!translatedValue.length) {\r\n return;\r\n }\r\n\r\n if (!__localizationState.valueToKeys.has(translatedValue)) {\r\n __localizationState.valueToKeys.set(translatedValue, new Set());\r\n }\r\n\r\n __localizationState.valueToKeys.get(translatedValue).add(key);\r\n}\r\n\r\nfunction __getLocaleMessages(locale) {\r\n const variants = __localeVariants(locale);\r\n for (const candidate of variants) {\r\n if (__localizationState.messagesByLocale.has(candidate)) {\r\n return {\r\n locale: candidate,\r\n messages: __localizationState.messagesByLocale.get(candidate),\r\n };\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nasync function __loadLocaleInternal(locale, reason = \"explicit\") {\r\n const targetLocale = __resolveLocaleCandidate(locale);\r\n const existing = __getLocaleMessages(targetLocale);\r\n if (existing) {\r\n return existing.messages;\r\n }\r\n\r\n const loadingKey = targetLocale;\r\n if (__localizationState.loadingByLocale.has(loadingKey)) {\r\n return __localizationState.loadingByLocale.get(loadingKey);\r\n }\r\n\r\n if (!__localizationState.provider) {\r\n return {};\r\n }\r\n\r\n const loader =\r\n __localizationState.provider.loadLocale ||\r\n __localizationState.provider.setLocale ||\r\n null;\r\n\r\n if (typeof loader !== \"function\") {\r\n return {};\r\n }\r\n\r\n const context = {\r\n locale: targetLocale,\r\n defaultLocale: __localizationState.defaultLocale,\r\n reason,\r\n loadedLocales: Array.from(__localizationState.messagesByLocale.keys()),\r\n messages: {\r\n ...(__getLocaleMessages(targetLocale)?.messages || {}),\r\n },\r\n load: reason === \"set-default\" || reason === \"explicit-load\",\r\n };\r\n\r\n let result;\r\n try {\r\n result = loader(context);\r\n } catch {\r\n return {};\r\n }\r\n\r\n if (result && typeof result.then === \"function\") {\r\n const promise = result\r\n .then((value) => {\r\n const normalized = __normalizeMessages(value);\r\n __setLocaleMessages(targetLocale, normalized);\r\n return normalized;\r\n })\r\n .catch(() => ({}))\r\n .finally(() => {\r\n __localizationState.loadingByLocale.delete(loadingKey);\r\n });\r\n\r\n __localizationState.loadingByLocale.set(loadingKey, promise);\r\n return promise;\r\n }\r\n\r\n const normalized = __normalizeMessages(result);\r\n __setLocaleMessages(targetLocale, normalized);\r\n return normalized;\r\n}\r\n\r\nfunction __resolveLocaleFromElementScope(element) {\r\n if (!element || typeof element !== \"object\") {\r\n return \"\";\r\n }\r\n\r\n const canUseElementCtor = typeof Element !== \"undefined\";\r\n const el =\r\n canUseElementCtor && element instanceof Element\r\n ? element\r\n : element?.nodeType === 1\r\n ? element\r\n : null;\r\n\r\n if (!el) {\r\n return \"\";\r\n }\r\n\r\n if (el.hasAttribute?.(\"lang\")) {\r\n return __normalizeLocale(el.getAttribute(\"lang\"));\r\n }\r\n\r\n const scoped = el.closest?.(\"[lang]\");\r\n if (scoped && scoped.getAttribute) {\r\n return __normalizeLocale(scoped.getAttribute(\"lang\"));\r\n }\r\n\r\n return \"\";\r\n}\r\n\r\nfunction __resolveContextLocale(options = {}) {\r\n if (typeof options?.lang === \"string\" && options.lang.trim()) {\r\n return __resolveLocaleCandidate(options.lang);\r\n }\r\n\r\n const scopeElement =\r\n options?.element || options?.scope || options?.host || options?.contextElement || null;\r\n const scopedLocale = __resolveLocaleFromElementScope(scopeElement);\r\n if (scopedLocale) {\r\n return __resolveLocaleCandidate(scopedLocale);\r\n }\r\n\r\n if (typeof document !== \"undefined\" && document.documentElement) {\r\n const rootLocale = __normalizeLocale(document.documentElement.getAttribute(\"lang\"));\r\n if (rootLocale) {\r\n return __resolveLocaleCandidate(rootLocale);\r\n }\r\n }\r\n\r\n return __localizationState.defaultLocale;\r\n}\r\n\r\nfunction __collectDetectedLocales() {\r\n const detected = new Set([__localizationState.defaultLocale]);\r\n\r\n if (typeof document === \"undefined\") {\r\n return detected;\r\n }\r\n\r\n const rootLang = __normalizeLocale(document.documentElement?.getAttribute?.(\"lang\"));\r\n if (rootLang) {\r\n detected.add(__resolveLocaleCandidate(rootLang));\r\n }\r\n\r\n const nodes = document.querySelectorAll?.(\"[lang]\") || [];\r\n for (const node of nodes) {\r\n const lang = __normalizeLocale(node.getAttribute(\"lang\"));\r\n if (lang) {\r\n detected.add(__resolveLocaleCandidate(lang));\r\n }\r\n }\r\n\r\n return detected;\r\n}\r\n\r\nasync function __ensureDetectedLocalesLoaded(detectedLocales) {\r\n for (const locale of detectedLocales) {\r\n await __loadLocaleInternal(locale, \"lang-detected\");\r\n }\r\n}\r\n\r\nfunction __pruneUndetectedLocales(detectedLocales) {\r\n for (const loadedLocale of Array.from(__localizationState.messagesByLocale.keys())) {\r\n if (!detectedLocales.has(loadedLocale)) {\r\n __localizationState.messagesByLocale.delete(loadedLocale);\r\n }\r\n }\r\n}\r\n\r\nfunction __splitTextWhitespace(value) {\r\n const input = String(value || \"\");\r\n const leading = (input.match(/^\\s*/) || [\"\"])[0];\r\n const trailing = (input.match(/\\s*$/) || [\"\"])[0];\r\n const start = leading.length;\r\n const end = input.length - trailing.length;\r\n const core = end >= start ? input.slice(start, end) : \"\";\r\n\r\n return { leading, core, trailing };\r\n}\r\n\r\nfunction __escapeRegExp(value) {\r\n return String(value || \"\").replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n}\r\n\r\nfunction __extractValuesFromTemplate(template, text) {\r\n const inputTemplate = typeof template === \"string\" ? template : String(template || \"\");\r\n const inputText = typeof text === \"string\" ? text : String(text || \"\");\r\n const placeholderPattern = /\\{(\\d+)\\}/g;\r\n\r\n const matches = Array.from(inputTemplate.matchAll(placeholderPattern));\r\n if (!matches.length) {\r\n return inputTemplate === inputText ? [] : null;\r\n }\r\n\r\n const placeholderOrder = [];\r\n let pattern = \"^\";\r\n let lastIndex = 0;\r\n\r\n for (const match of matches) {\r\n const matchIndex = match.index ?? 0;\r\n pattern += __escapeRegExp(inputTemplate.slice(lastIndex, matchIndex));\r\n pattern += \"([\\\\s\\\\S]*?)\";\r\n placeholderOrder.push(Number(match[1]));\r\n lastIndex = matchIndex + match[0].length;\r\n }\r\n\r\n pattern += __escapeRegExp(inputTemplate.slice(lastIndex));\r\n pattern += \"$\";\r\n\r\n const result = new RegExp(pattern).exec(inputText);\r\n if (!result) {\r\n return null;\r\n }\r\n\r\n const values = [];\r\n for (let groupIndex = 1; groupIndex < result.length; groupIndex += 1) {\r\n const placeholderIndex = placeholderOrder[groupIndex - 1];\r\n const extractedValue = result[groupIndex];\r\n\r\n if (\r\n Object.prototype.hasOwnProperty.call(values, placeholderIndex) &&\r\n values[placeholderIndex] !== extractedValue\r\n ) {\r\n return null;\r\n }\r\n\r\n values[placeholderIndex] = extractedValue;\r\n }\r\n\r\n return values;\r\n}\r\n\r\nfunction __resolveTemplateValuesForText(key, text) {\r\n if (typeof key !== \"string\" || !key.length) {\r\n return [];\r\n }\r\n\r\n const templates = [key];\r\n for (const [, messages] of __localizationState.messagesByLocale.entries()) {\r\n const candidate = messages?.[key];\r\n if (typeof candidate === \"string\" && candidate.length) {\r\n templates.push(candidate);\r\n }\r\n }\r\n\r\n for (const template of templates) {\r\n const extracted = __extractValuesFromTemplate(template, text);\r\n if (extracted) {\r\n return extracted;\r\n }\r\n }\r\n\r\n return [];\r\n}\r\n\r\nfunction __findRequestedKeyForText(coreText) {\r\n if (!coreText) {\r\n return null;\r\n }\r\n\r\n const indexedKeys = __localizationState.valueToKeys.get(coreText);\r\n if (indexedKeys && indexedKeys.size > 0) {\r\n for (const key of indexedKeys) {\r\n if (__localizationState.requestedKeys.has(key)) {\r\n return key;\r\n }\r\n }\r\n }\r\n\r\n if (__localizationState.requestedKeys.has(coreText)) {\r\n return coreText;\r\n }\r\n\r\n const loadedEntries = Array.from(__localizationState.messagesByLocale.entries());\r\n for (const key of __localizationState.requestedKeys) {\r\n for (const [, messages] of loadedEntries) {\r\n if (messages && messages[key] === coreText) {\r\n return key;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction __findRequestedSubsegmentForText(coreText) {\r\n if (!coreText) {\r\n return null;\r\n }\r\n\r\n let bestMatch = null;\r\n\r\n for (const [indexedValue, indexedKeys] of __localizationState.valueToKeys.entries()) {\r\n if (typeof indexedValue !== \"string\" || !indexedValue.length) {\r\n continue;\r\n }\r\n\r\n if (indexedValue === coreText) {\r\n continue;\r\n }\r\n\r\n const start = coreText.indexOf(indexedValue);\r\n if (start === -1) {\r\n continue;\r\n }\r\n\r\n for (const key of indexedKeys) {\r\n if (!__localizationState.requestedKeys.has(key)) {\r\n continue;\r\n }\r\n\r\n const values = __resolveTemplateValuesForText(key, indexedValue);\r\n const candidate = {\r\n key,\r\n matchedText: indexedValue,\r\n start,\r\n end: start + indexedValue.length,\r\n values,\r\n };\r\n\r\n if (!bestMatch || candidate.matchedText.length > bestMatch.matchedText.length) {\r\n bestMatch = candidate;\r\n }\r\n\r\n break;\r\n }\r\n }\r\n\r\n return bestMatch;\r\n}\r\n\r\nasync function __localizeTextNode(textNode) {\r\n if (!textNode || textNode.nodeType !== 3) {\r\n return;\r\n }\r\n\r\n const parentElement = textNode.parentElement || null;\r\n if (!parentElement) {\r\n return;\r\n }\r\n\r\n const { leading, core, trailing } = __splitTextWhitespace(textNode.nodeValue);\r\n if (!core) {\r\n return;\r\n }\r\n\r\n let key = __localizationState.textNodeKeyMap.get(textNode) || null;\r\n if (!key || !__localizationState.requestedKeys.has(key)) {\r\n key = __findRequestedKeyForText(core);\r\n }\r\n\r\n if (!key) {\r\n const segmentMatch = __findRequestedSubsegmentForText(core);\r\n if (!segmentMatch) {\r\n return;\r\n }\r\n\r\n const scopedLocale = __resolveContextLocale({ element: parentElement });\r\n await __loadLocaleInternal(scopedLocale, \"text-node\");\r\n\r\n const translated = __resolveTranslation(\r\n segmentMatch.key,\r\n segmentMatch.values,\r\n { element: parentElement },\r\n null\r\n );\r\n const translatedText = segmentMatch.values.length\r\n ? __replacePlaceholders(translated, (index) => segmentMatch.values[index])\r\n : translated;\r\n const localizedCore =\r\n core.slice(0, segmentMatch.start) +\r\n translatedText +\r\n core.slice(segmentMatch.end);\r\n const localizedText = `${leading}${localizedCore}${trailing}`;\r\n\r\n if (localizedText !== textNode.nodeValue) {\r\n textNode.nodeValue = localizedText;\r\n }\r\n return;\r\n }\r\n\r\n __localizationState.textNodeKeyMap.set(textNode, key);\r\n\r\n const scopedLocale = __resolveContextLocale({ element: parentElement });\r\n await __loadLocaleInternal(scopedLocale, \"text-node\");\r\n\r\n const values = __resolveTemplateValuesForText(key, core);\r\n const translated = __resolveTranslation(key, values, { element: parentElement }, null);\r\n const translatedText = values.length\r\n ? __replacePlaceholders(translated, (index) => values[index])\r\n : translated;\r\n const nextText = `${leading}${translatedText}${trailing}`;\r\n\r\n if (nextText !== textNode.nodeValue) {\r\n textNode.nodeValue = nextText;\r\n }\r\n}\r\n\r\nasync function __localizeRequestedTextNodes() {\r\n if (typeof document === \"undefined\" || __localizationState.requestedKeys.size === 0) {\r\n return;\r\n }\r\n\r\n const root = document.body || document.documentElement;\r\n if (!root || typeof document.createTreeWalker !== \"function\") {\r\n return;\r\n }\r\n\r\n const roots = [];\r\n const seenRoots = new Set();\r\n\r\n const addRoot = (candidateRoot) => {\r\n if (!candidateRoot || seenRoots.has(candidateRoot)) {\r\n return;\r\n }\r\n\r\n seenRoots.add(candidateRoot);\r\n roots.push(candidateRoot);\r\n };\r\n\r\n addRoot(root);\r\n\r\n for (let index = 0; index < roots.length; index += 1) {\r\n const currentRoot = roots[index];\r\n if (!currentRoot || typeof currentRoot.querySelectorAll !== \"function\") {\r\n continue;\r\n }\r\n\r\n const elements = currentRoot.querySelectorAll(\"*\");\r\n for (const element of elements) {\r\n const shadowRoot = element?.shadowRoot;\r\n if (shadowRoot) {\r\n addRoot(shadowRoot);\r\n }\r\n }\r\n }\r\n\r\n const nodes = [];\r\n\r\n for (const scanRoot of roots) {\r\n const walker = document.createTreeWalker(scanRoot, NodeFilter.SHOW_TEXT);\r\n while (walker.nextNode()) {\r\n nodes.push(walker.currentNode);\r\n }\r\n }\r\n\r\n for (const node of nodes) {\r\n await __localizeTextNode(node);\r\n }\r\n}\r\n\r\nfunction __getElementAttributeKeyMap(element) {\r\n let map = __localizationState.attributeKeyMap.get(element);\r\n if (!map) {\r\n map = new Map();\r\n __localizationState.attributeKeyMap.set(element, map);\r\n }\r\n return map;\r\n}\r\n\r\nasync function __localizeAttribute(element, attrName) {\r\n if (!element || typeof element.getAttribute !== \"function\") {\r\n return;\r\n }\r\n\r\n const rawValue = element.getAttribute(attrName);\r\n if (typeof rawValue !== \"string\" || !rawValue.length) {\r\n return;\r\n }\r\n\r\n const keyMap = __getElementAttributeKeyMap(element);\r\n let key = keyMap.get(attrName) || null;\r\n\r\n if (!key || !__localizationState.requestedKeys.has(key)) {\r\n key = __findRequestedKeyForText(rawValue);\r\n }\r\n\r\n if (!key) {\r\n const segmentMatch = __findRequestedSubsegmentForText(rawValue);\r\n if (!segmentMatch) {\r\n return;\r\n }\r\n\r\n const scopedLocale = __resolveContextLocale({ element });\r\n await __loadLocaleInternal(scopedLocale, \"attribute\");\r\n\r\n const translated = __resolveTranslation(segmentMatch.key, segmentMatch.values, { element }, null);\r\n const translatedText = segmentMatch.values.length\r\n ? __replacePlaceholders(translated, (index) => segmentMatch.values[index])\r\n : translated;\r\n\r\n const localizedValue =\r\n rawValue.slice(0, segmentMatch.start) +\r\n translatedText +\r\n rawValue.slice(segmentMatch.end);\r\n\r\n if (localizedValue !== rawValue) {\r\n element.setAttribute(attrName, localizedValue);\r\n }\r\n\r\n keyMap.set(attrName, segmentMatch.key);\r\n return;\r\n }\r\n\r\n keyMap.set(attrName, key);\r\n\r\n const scopedLocale = __resolveContextLocale({ element });\r\n await __loadLocaleInternal(scopedLocale, \"attribute\");\r\n\r\n const values = __resolveTemplateValuesForText(key, rawValue);\r\n const translated = __resolveTranslation(key, values, { element }, null);\r\n const translatedText = values.length\r\n ? __replacePlaceholders(translated, (index) => values[index])\r\n : translated;\r\n\r\n if (translatedText !== rawValue) {\r\n element.setAttribute(attrName, translatedText);\r\n }\r\n}\r\n\r\nasync function __localizeRequestedAttributes() {\r\n if (typeof document === \"undefined\" || __localizationState.requestedKeys.size === 0) {\r\n return;\r\n }\r\n\r\n const root = document.body || document.documentElement;\r\n if (!root) {\r\n return;\r\n }\r\n\r\n const roots = [];\r\n const seenRoots = new Set();\r\n\r\n const addRoot = (candidateRoot) => {\r\n if (!candidateRoot || seenRoots.has(candidateRoot)) {\r\n return;\r\n }\r\n\r\n seenRoots.add(candidateRoot);\r\n roots.push(candidateRoot);\r\n };\r\n\r\n addRoot(root);\r\n\r\n for (let index = 0; index < roots.length; index += 1) {\r\n const currentRoot = roots[index];\r\n if (!currentRoot || typeof currentRoot.querySelectorAll !== \"function\") {\r\n continue;\r\n }\r\n\r\n const elements = currentRoot.querySelectorAll(\"*\");\r\n for (const element of elements) {\r\n const shadowRoot = element?.shadowRoot;\r\n if (shadowRoot) {\r\n addRoot(shadowRoot);\r\n }\r\n }\r\n }\r\n\r\n for (const scanRoot of roots) {\r\n if (!scanRoot || typeof scanRoot.querySelectorAll !== \"function\") {\r\n continue;\r\n }\r\n\r\n const elements = scanRoot.querySelectorAll(\"*\");\r\n for (const element of elements) {\r\n for (const attrName of __LOCALIZABLE_ATTRIBUTES) {\r\n if (element.hasAttribute(attrName)) {\r\n await __localizeAttribute(element, attrName);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nasync function __reconcileLocalization() {\r\n const detectedLocales = __collectDetectedLocales();\r\n await __ensureDetectedLocalesLoaded(detectedLocales);\r\n await __localizeRequestedTextNodes();\r\n await __localizeRequestedAttributes();\r\n __pruneUndetectedLocales(detectedLocales);\r\n}\r\n\r\nfunction __scheduleReconcile() {\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n\r\n if (__localizationState.reconcileTimer) {\r\n clearTimeout(__localizationState.reconcileTimer);\r\n }\r\n\r\n __localizationState.reconcileTimer = setTimeout(() => {\r\n __localizationState.reconcileTimer = null;\r\n __reconcileLocalization();\r\n }, 16);\r\n}\r\n\r\nfunction __attachLangObserver() {\r\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\r\n return;\r\n }\r\n\r\n if (__localizationState.observer) {\r\n __localizationState.observer.disconnect();\r\n __localizationState.observer = null;\r\n }\r\n\r\n if (typeof MutationObserver !== \"function\") {\r\n return;\r\n }\r\n\r\n const observer = new MutationObserver(() => {\r\n __scheduleReconcile();\r\n });\r\n\r\n observer.observe(document.documentElement, {\r\n attributes: true,\r\n attributeFilter: [\"lang\"],\r\n childList: true,\r\n characterData: true,\r\n subtree: true,\r\n });\r\n\r\n __localizationState.observer = observer;\r\n}\r\n\r\nfunction __resolveTranslation(key, values = [], options = {}, template = null) {\r\n const requestedLocale = __resolveContextLocale(options);\r\n const resolvedMessages = __getLocaleMessages(requestedLocale);\r\n\r\n if (!resolvedMessages) {\r\n __loadLocaleInternal(requestedLocale, \"msg\");\r\n }\r\n\r\n const targetMessages = __getLocaleMessages(requestedLocale)?.messages || {};\r\n const defaultMessages =\r\n __getLocaleMessages(__localizationState.defaultLocale)?.messages || {};\r\n\r\n const context = {\r\n key,\r\n values,\r\n options,\r\n locale: requestedLocale,\r\n defaultLocale: __localizationState.defaultLocale,\r\n messages: targetMessages,\r\n messagesByLocale: Object.fromEntries(\r\n Array.from(__localizationState.messagesByLocale.entries())\r\n ),\r\n template,\r\n };\r\n\r\n let translated;\r\n const localeLoaded = Boolean(resolvedMessages);\r\n const isDefaultLocale = requestedLocale === __localizationState.defaultLocale;\r\n if (typeof __localizationState.provider?.translate === \"function\") {\r\n translated = __localizationState.provider.translate(context);\r\n }\r\n\r\n let fallbackKind = null;\r\n\r\n if (translated === undefined || translated === null) {\r\n translated = targetMessages[key];\r\n }\r\n\r\n if (translated === undefined || translated === null) {\r\n translated = defaultMessages[key];\r\n fallbackKind = translated === undefined || translated === null ? null : \"default\";\r\n }\r\n\r\n if (translated === undefined || translated === null) {\r\n translated = key;\r\n fallbackKind = \"key\";\r\n }\r\n\r\n if (localeLoaded && !isDefaultLocale && fallbackKind) {\r\n const warningKey = `${requestedLocale}::${key}`;\r\n if (!__localizationState.missingWarnings.has(warningKey)) {\r\n __localizationState.missingWarnings.add(warningKey);\r\n pdsLog(\r\n \"warn\",\r\n `[i18n] Missing translation for locale \"${requestedLocale}\" and key \"${key}\"; using ${fallbackKind} fallback.`\r\n );\r\n }\r\n }\r\n\r\n const resolved = typeof translated === \"string\" ? translated : String(translated);\r\n __indexTranslatedValue(key, resolved);\r\n\r\n if (Array.isArray(values) && values.length > 0) {\r\n const materialized = __replacePlaceholders(resolved, (index) => values[index]);\r\n if (materialized !== resolved) {\r\n __indexTranslatedValue(key, materialized);\r\n }\r\n }\r\n\r\n return resolved;\r\n}\r\n\r\nexport function getLocalizationState() {\r\n const defaultBundle = __getLocaleMessages(__localizationState.defaultLocale);\r\n return {\r\n locale: __localizationState.defaultLocale,\r\n messages: { ...(defaultBundle?.messages || {}) },\r\n loadedLocales: Array.from(__localizationState.messagesByLocale.keys()),\r\n hasProvider: Boolean(__localizationState.provider),\r\n };\r\n}\r\n\r\nexport function configureLocalization(config = null) {\r\n if (__localizationState.observer) {\r\n __localizationState.observer.disconnect();\r\n __localizationState.observer = null;\r\n }\r\n if (__localizationState.reconcileTimer) {\r\n clearTimeout(__localizationState.reconcileTimer);\r\n __localizationState.reconcileTimer = null;\r\n }\r\n\r\n __localizationState.defaultLocale = __DEFAULT_LOCALE__;\r\n __localizationState.provider = null;\r\n __localizationState.messagesByLocale.clear();\r\n __localizationState.loadingByLocale.clear();\r\n __localizationState.requestedKeys.clear();\r\n __localizationState.textNodeKeyMap = new WeakMap();\r\n __localizationState.attributeKeyMap = new WeakMap();\r\n __localizationState.valueToKeys.clear();\r\n __localizationState.missingWarnings.clear();\r\n\r\n if (!config || typeof config !== \"object\") {\r\n return getLocalizationState();\r\n }\r\n\r\n if (typeof config.locale === \"string\" && config.locale.trim()) {\r\n __localizationState.defaultLocale = __resolveLocaleCandidate(config.locale);\r\n }\r\n\r\n if (Object.prototype.hasOwnProperty.call(config, \"messages\")) {\r\n __setLocaleMessages(__localizationState.defaultLocale, config.messages);\r\n }\r\n\r\n if (\r\n Object.prototype.hasOwnProperty.call(config, \"provider\") ||\r\n Object.prototype.hasOwnProperty.call(config, \"translate\") ||\r\n Object.prototype.hasOwnProperty.call(config, \"loadLocale\") ||\r\n Object.prototype.hasOwnProperty.call(config, \"setLocale\") ||\r\n Object.prototype.hasOwnProperty.call(config, \"resolveLocale\")\r\n ) {\r\n __localizationState.provider = __resolveProvider(config);\r\n }\r\n\r\n if (__localizationState.provider?.resolveLocale) {\r\n __localizationState.defaultLocale = __resolveLocaleCandidate(\r\n __localizationState.defaultLocale\r\n );\r\n }\r\n\r\n __attachLangObserver();\r\n __scheduleReconcile();\r\n\r\n return getLocalizationState();\r\n}\r\n\r\nexport async function loadLocale(locale) {\r\n const targetLocale = __resolveLocaleCandidate(locale);\r\n await __loadLocaleInternal(targetLocale, \"explicit-load\");\r\n const bundle = __getLocaleMessages(targetLocale)?.messages || {};\r\n return { ...bundle };\r\n}\r\n\r\nexport async function setLocale(locale, { load = true } = {}) {\r\n __localizationState.defaultLocale = __resolveLocaleCandidate(locale);\r\n if (load) {\r\n await __loadLocaleInternal(__localizationState.defaultLocale, \"set-default\");\r\n }\r\n __scheduleReconcile();\r\n return __localizationState.defaultLocale;\r\n}\r\n\r\nexport const joinStringsAndValues = (strings, values, options = {}) => {\r\n const messageKey = __collateStrings(strings);\r\n __registerRequestedKey(messageKey);\r\n const translated = __resolveTranslation(messageKey, values, options, {\r\n strings,\r\n values,\r\n });\r\n\r\n return __replacePlaceholders(translated, (index) => values[index]);\r\n};\r\n\r\nexport const str = (strings, ...values) => ({\r\n strTag: true,\r\n strings: Array.from(strings),\r\n values,\r\n raw: Array.from(strings?.raw || []),\r\n});\r\n\r\nexport const msg = (template, options = {}) => {\r\n if (!template) {\r\n return \"\";\r\n }\r\n\r\n if (__isStrTagged(template)) {\r\n return joinStringsAndValues(template.strings, template.values, options);\r\n }\r\n\r\n const key = String(template);\r\n __registerRequestedKey(key);\r\n const translated = __resolveTranslation(key, [], options, null);\r\n\r\n if (\r\n !options?.element &&\r\n !options?.scope &&\r\n !options?.host &&\r\n !options?.contextElement &&\r\n !options?.lang\r\n ) {\r\n __scheduleReconcile();\r\n }\r\n\r\n return translated;\r\n};\r\n", "import { msg } from \"../common/localization.js\";\n\n/**\n * PDS Enhancers - Single Source of Truth\n *\n * This file defines all progressive enhancements for the Pure Design System.\n * Each enhancer has:\n * - selector: CSS selector to target elements\n * - run: Enhancement function (added at the end)\n */\n\n// ============================================================================\n// ENHANCEMENT RUNTIME DEFINITIONS\n// ============================================================================\n\nconst enhancerDefinitions = [\n { selector: \".accordion\" },\n { selector: \"nav[data-dropdown]\" },\n { selector: \"label[data-toggle]\" },\n { selector: \"label[data-color]\" },\n { selector: 'input[type=\"range\"]' },\n { selector: \"form[data-required]\" },\n { selector: \"fieldset[role=group][data-open]\" },\n { selector: \"[data-clip]\" },\n { selector: \"button, a[class*='btn-']\" },\n];\n\n// ============================================================================\n// ENHANCEMENT RUNTIME FUNCTIONS\n// ============================================================================\n\nfunction enhanceAccordion(elem) {\n if (elem.dataset.enhancedAccordion) return;\n elem.dataset.enhancedAccordion = \"true\";\n\n elem.addEventListener(\n \"toggle\",\n (event) => {\n // Only handle toggle events from direct child details elements\n // to avoid closing parent details when nested accordions are used\n if (event.target.open && event.target.parentElement === elem) {\n elem.querySelectorAll(\":scope > details[open]\").forEach((details) => {\n if (details !== event.target) {\n details.open = false;\n }\n });\n }\n },\n true,\n );\n}\n\nfunction enhanceDropdown(elem) {\n if (elem.dataset.enhancedDropdown) return;\n elem.dataset.enhancedDropdown = \"true\";\n const menu = elem.lastElementChild;\n\n if (!menu) return;\n\n const trigger =\n elem.querySelector(\"[data-dropdown-toggle]\") ||\n elem.querySelector(\"button\");\n\n const supportsPopover =\n typeof HTMLElement !== \"undefined\" &&\n \"showPopover\" in HTMLElement.prototype &&\n \"hidePopover\" in HTMLElement.prototype;\n\n if (trigger && !trigger.hasAttribute(\"type\")) {\n trigger.setAttribute(\"type\", \"button\");\n }\n\n if (!menu.id) {\n menu.id = `dropdown-${Math.random().toString(36).slice(2, 9)}`;\n }\n\n const isMenu = menu.tagName?.toLowerCase() === \"menu\";\n const VIEWPORT_PADDING = 8;\n if (isMenu && !menu.hasAttribute(\"role\")) {\n menu.setAttribute(\"role\", \"menu\");\n }\n if (!menu.hasAttribute(\"aria-hidden\")) {\n menu.setAttribute(\"aria-hidden\", \"true\");\n }\n\n if (trigger) {\n trigger.setAttribute(\"aria-haspopup\", \"true\");\n trigger.setAttribute(\"aria-controls\", menu.id);\n trigger.setAttribute(\"aria-expanded\", \"false\");\n }\n\n if (!supportsPopover) {\n const warnKey = \"__PDS_DROPDOWN_POPOVER_WARNED__\";\n if (!globalThis[warnKey]) {\n globalThis[warnKey] = true;\n console.warn(\n \"[PDS] nav[data-dropdown] requires the Popover API. Add a popover polyfill (recommended: @oddbird/popover-polyfill) for browsers without support.\",\n );\n }\n return;\n }\n\n menu.setAttribute(\"popover\", \"auto\");\n\n const measureMenuSize = () => {\n const previousStyle = menu.getAttribute(\"style\");\n menu.style.visibility = \"hidden\";\n menu.style.display = \"inline-block\";\n menu.style.pointerEvents = \"none\";\n\n const rect = menu.getBoundingClientRect();\n const width = Math.max(menu.offsetWidth || 0, menu.scrollWidth || 0, rect.width || 0, 1);\n const height = Math.max(\n menu.offsetHeight || 0,\n menu.scrollHeight || 0,\n rect.height || 0,\n 1,\n );\n\n if (previousStyle === null) {\n menu.removeAttribute(\"style\");\n } else {\n menu.setAttribute(\"style\", previousStyle);\n }\n\n return { width, height };\n };\n\n const isPopoverOpen = () => {\n try {\n return menu.matches(\":popover-open\");\n } catch {\n return false;\n }\n };\n\n const syncClosedState = () => {\n menu.setAttribute(\"aria-hidden\", \"true\");\n trigger?.setAttribute(\"aria-expanded\", \"false\");\n };\n\n const syncOpenState = () => {\n menu.setAttribute(\"aria-hidden\", \"false\");\n trigger?.setAttribute(\"aria-expanded\", \"true\");\n };\n\n const resolveDirection = () => {\n const mode = (\n elem.getAttribute(\"data-direction\") ||\n elem.getAttribute(\"data-dropdown-direction\") ||\n elem.getAttribute(\"data-mode\") ||\n \"auto\"\n ).toLowerCase();\n if (mode === \"up\" || mode === \"down\") return mode;\n const anchorRect = (trigger || elem).getBoundingClientRect();\n const { height: menuHeight } = measureMenuSize();\n const spaceBelow = Math.max(0, window.innerHeight - anchorRect.bottom);\n const spaceAbove = Math.max(0, anchorRect.top);\n const fitsDown = spaceBelow >= menuHeight;\n const fitsUp = spaceAbove >= menuHeight;\n if (fitsDown && !fitsUp) return \"down\";\n if (fitsUp && !fitsDown) return \"up\";\n if (fitsDown && fitsUp) return \"down\";\n return spaceAbove > spaceBelow ? \"up\" : \"down\";\n };\n\n const resolveAlign = () => {\n const align = (\n elem.getAttribute(\"data-align\") ||\n elem.getAttribute(\"data-dropdown-align\") ||\n \"auto\"\n ).toLowerCase();\n if (\n align === \"left\" ||\n align === \"right\" ||\n align === \"start\" ||\n align === \"end\"\n ) {\n return align === \"start\" ? \"left\" : align === \"end\" ? \"right\" : align;\n }\n const anchorRect = (trigger || elem).getBoundingClientRect();\n const { width: menuWidth } = measureMenuSize();\n const spaceForLeftAligned = Math.max(0, window.innerWidth - anchorRect.left);\n const spaceForRightAligned = Math.max(0, anchorRect.right);\n const fitsLeft = spaceForLeftAligned >= menuWidth;\n const fitsRight = spaceForRightAligned >= menuWidth;\n\n if (fitsLeft && !fitsRight) return \"left\";\n if (fitsRight && !fitsLeft) return \"right\";\n if (fitsLeft && fitsRight) return \"left\";\n return spaceForRightAligned > spaceForLeftAligned ? \"right\" : \"left\";\n };\n\n const readLengthToken = (tokenName, fallback = 8) => {\n const raw = getComputedStyle(elem).getPropertyValue(tokenName).trim();\n if (!raw) return fallback;\n const probe = document.createElement(\"span\");\n probe.style.position = \"fixed\";\n probe.style.visibility = \"hidden\";\n probe.style.pointerEvents = \"none\";\n probe.style.height = raw;\n document.body.appendChild(probe);\n const parsed = Number.parseFloat(getComputedStyle(probe).height);\n probe.remove();\n return Number.isFinite(parsed) ? parsed : fallback;\n };\n\n const clearFloatingMenuPosition = () => {\n [\n \"position\",\n \"left\",\n \"top\",\n \"right\",\n \"bottom\",\n \"margin-top\",\n \"margin-bottom\",\n \"max-width\",\n \"max-inline-size\",\n \"max-height\",\n \"overflow\",\n ].forEach((prop) => menu.style.removeProperty(prop));\n };\n \n const positionPopoverMenu = () => {\n if (!isPopoverOpen()) return;\n\n const anchorRect = (trigger || elem).getBoundingClientRect();\n const viewport = window.visualViewport;\n const viewportWidth =\n viewport?.width || document.documentElement?.clientWidth || window.innerWidth;\n const viewportHeight =\n viewport?.height || document.documentElement?.clientHeight || window.innerHeight;\n const viewportOffsetLeft = viewport?.offsetLeft || 0;\n const viewportOffsetTop = viewport?.offsetTop || 0;\n const maxMenuWidth = Math.max(1, viewportWidth - VIEWPORT_PADDING * 2);\n const maxMenuHeight = Math.max(1, viewportHeight - VIEWPORT_PADDING * 2);\n\n menu.style.maxWidth = `${Math.round(maxMenuWidth)}px`;\n menu.style.maxInlineSize = `${Math.round(maxMenuWidth)}px`;\n menu.style.maxHeight = `${Math.round(maxMenuHeight)}px`;\n menu.style.overflow = \"auto\";\n\n const { width: menuWidth, height: menuHeight } = measureMenuSize();\n const spacing = readLengthToken(\"--spacing-2\", 8);\n const direction = resolveDirection();\n const align = resolveAlign();\n\n elem.dataset.dropdownDirection = direction;\n elem.dataset.dropdownAlign = align;\n\n let left = align === \"right\" ? anchorRect.right - menuWidth : anchorRect.left;\n if (menuWidth >= maxMenuWidth - 1) {\n left = viewportOffsetLeft + VIEWPORT_PADDING;\n } else {\n left = Math.max(\n viewportOffsetLeft + VIEWPORT_PADDING,\n Math.min(\n left,\n viewportOffsetLeft + viewportWidth - menuWidth - VIEWPORT_PADDING,\n ),\n );\n }\n\n let top =\n direction === \"up\"\n ? anchorRect.top - spacing - menuHeight\n : anchorRect.bottom + spacing;\n top = Math.max(\n viewportOffsetTop + VIEWPORT_PADDING,\n Math.min(\n top,\n viewportOffsetTop + viewportHeight - menuHeight - VIEWPORT_PADDING,\n ),\n );\n\n Object.assign(menu.style, {\n position: \"fixed\",\n left: `${Math.round(left)}px`,\n top: `${Math.round(top)}px`,\n right: \"auto\",\n bottom: \"auto\",\n marginTop: \"0\",\n marginBottom: \"0\",\n });\n };\n\n let repositionHandler = null;\n const bindReposition = () => {\n if (repositionHandler) return;\n repositionHandler = () => positionPopoverMenu();\n window.addEventListener(\"resize\", repositionHandler);\n window.addEventListener(\"scroll\", repositionHandler, true);\n };\n\n const unbindReposition = () => {\n if (!repositionHandler) return;\n window.removeEventListener(\"resize\", repositionHandler);\n window.removeEventListener(\"scroll\", repositionHandler, true);\n repositionHandler = null;\n };\n\n let configChangedHandler = null;\n let configRepositionFrame = null;\n const bindConfigChanged = () => {\n if (configChangedHandler || typeof document === \"undefined\") return;\n configChangedHandler = () => {\n if (!isPopoverOpen()) return;\n elem.dataset.dropdownDirection = resolveDirection();\n elem.dataset.dropdownAlign = resolveAlign();\n\n if (configRepositionFrame !== null) {\n cancelAnimationFrame(configRepositionFrame);\n }\n configRepositionFrame = requestAnimationFrame(() => {\n configRepositionFrame = null;\n if (!isPopoverOpen()) return;\n positionPopoverMenu();\n });\n };\n document.addEventListener(\"pds:config-changed\", configChangedHandler);\n };\n\n const unbindConfigChanged = () => {\n if (!configChangedHandler || typeof document === \"undefined\") return;\n document.removeEventListener(\"pds:config-changed\", configChangedHandler);\n configChangedHandler = null;\n if (configRepositionFrame !== null) {\n cancelAnimationFrame(configRepositionFrame);\n configRepositionFrame = null;\n }\n };\n\n menu.addEventListener(\"toggle\", (event) => {\n const isOpen = event.newState === \"open\";\n\n if (isOpen) {\n syncOpenState();\n positionPopoverMenu();\n bindReposition();\n bindConfigChanged();\n return;\n }\n\n syncClosedState();\n unbindReposition();\n unbindConfigChanged();\n clearFloatingMenuPosition();\n });\n\n const openMenu = () => {\n if (isPopoverOpen()) return;\n elem.dataset.dropdownDirection = resolveDirection();\n elem.dataset.dropdownAlign = resolveAlign();\n menu.showPopover();\n requestAnimationFrame(() => positionPopoverMenu());\n };\n\n const closeMenu = () => {\n if (!isPopoverOpen()) return;\n menu.hidePopover();\n };\n\n const toggleMenu = () => {\n if (isPopoverOpen()) {\n closeMenu();\n } else {\n openMenu();\n }\n };\n\n syncClosedState();\n\n menu.addEventListener(\"click\", (event) => {\n const target =\n event.target instanceof Element ? event.target : event.target?.parentElement;\n if (!target) return;\n if (!target.closest(\"[data-dropdown-close]\")) return;\n closeMenu();\n });\n\n trigger?.addEventListener(\"click\", (event) => {\n event.preventDefault();\n event.stopPropagation();\n toggleMenu();\n });\n\n elem.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Escape\") {\n closeMenu();\n trigger?.focus();\n }\n });\n}\n\nfunction enhanceToggle(elem) {\n if (elem.dataset.enhancedToggle) return;\n elem.dataset.enhancedToggle = \"true\";\n const checkbox = elem.querySelector('input[type=\"checkbox\"]');\n if (!checkbox) return;\n\n if (!elem.hasAttribute(\"tabindex\")) {\n elem.setAttribute(\"tabindex\", \"0\");\n }\n\n elem.setAttribute(\"role\", \"switch\");\n elem.setAttribute(\"aria-checked\", checkbox.checked ? \"true\" : \"false\");\n\n const toggleSwitch = document.createElement(\"span\");\n toggleSwitch.className = \"toggle-switch\";\n toggleSwitch.setAttribute(\"role\", \"presentation\");\n toggleSwitch.setAttribute(\"aria-hidden\", \"true\");\n const knob = document.createElement(\"span\");\n knob.className = \"toggle-knob\";\n toggleSwitch.appendChild(knob);\n elem.insertBefore(toggleSwitch, checkbox.nextSibling);\n\n const updateAria = () => {\n elem.setAttribute(\"aria-checked\", checkbox.checked ? \"true\" : \"false\");\n };\n\n const toggle = () => {\n if (checkbox.disabled) return;\n checkbox.checked = !checkbox.checked;\n updateAria();\n checkbox.dispatchEvent(new Event(\"input\", { bubbles: true }));\n checkbox.dispatchEvent(new Event(\"change\", { bubbles: true }));\n };\n\n elem.addEventListener(\"click\", (event) => {\n event.preventDefault();\n toggle();\n });\n\n elem.addEventListener(\"keydown\", (event) => {\n if (event.key === \" \" || event.key === \"Enter\") {\n event.preventDefault();\n toggle();\n }\n });\n\n checkbox.addEventListener(\"change\", updateAria);\n}\n\nfunction enhanceColorInput(elem) {\n if (elem.dataset.enhancedColorInput) return;\n\n const input = elem.querySelector('input[type=\"color\"]');\n if (!input) return;\n\n elem.dataset.enhancedColorInput = \"true\";\n\n let control = elem.querySelector(':scope > .color-control');\n let swatch = elem.querySelector(':scope > .color-control > .color-swatch');\n let output = elem.querySelector(':scope > .color-control > output');\n\n if (!control) {\n control = document.createElement(\"span\");\n control.className = \"color-control\";\n input.before(control);\n }\n\n if (!swatch) {\n swatch = document.createElement(\"span\");\n swatch.className = \"color-swatch\";\n control.appendChild(swatch);\n }\n\n if (input.parentElement !== swatch) {\n swatch.appendChild(input);\n }\n\n if (!output) {\n output = document.createElement(\"output\");\n control.appendChild(output);\n }\n\n const sync = () => {\n const isUnset = input.dataset.colorUnset === \"1\";\n\n if (isUnset) {\n output.value = \"\";\n output.textContent = msg(\"not set\");\n control.dataset.value = \"\";\n control.dataset.unset = \"1\";\n swatch.dataset.unset = \"1\";\n return;\n }\n\n output.value = input.value;\n output.textContent = input.value;\n control.dataset.value = input.value;\n delete control.dataset.unset;\n delete swatch.dataset.unset;\n };\n\n sync();\n\n const setResolved = () => {\n if (input.dataset.colorUnset === \"1\") {\n input.dataset.colorUnset = \"0\";\n }\n sync();\n };\n\n input.addEventListener(\"input\", setResolved, { passive: true });\n input.addEventListener(\"change\", setResolved, { passive: true });\n}\n\nfunction enhanceRange(elem) {\n if (elem.dataset.enhancedRange) return;\n\n const wireProgrammaticUpdates = (updateFn) => {\n if (elem.dataset.enhancedRangeProgrammatic) return;\n elem.dataset.enhancedRangeProgrammatic = \"1\";\n\n const descriptor =\n Object.getOwnPropertyDescriptor(Object.getPrototypeOf(elem), \"value\") ||\n Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, \"value\");\n\n if (descriptor?.get && descriptor?.set) {\n Object.defineProperty(elem, \"value\", {\n configurable: true,\n enumerable: descriptor.enumerable,\n get() {\n return descriptor.get.call(this);\n },\n set(nextValue) {\n descriptor.set.call(this, nextValue);\n updateFn();\n },\n });\n }\n\n const attrObserver = new MutationObserver((mutations) => {\n const shouldUpdate = mutations.some((mutation) => {\n const attr = mutation.attributeName;\n return attr === \"value\" || attr === \"min\" || attr === \"max\";\n });\n if (shouldUpdate) updateFn();\n });\n attrObserver.observe(elem, {\n attributes: true,\n attributeFilter: [\"value\", \"min\", \"max\"],\n });\n };\n\n const label = elem.closest(\"label\");\n const hasRangeOutputClass = label?.classList.contains(\"range-output\");\n\n const inputId =\n elem.id || `range-${Math.random().toString(36).substring(2, 11)}`;\n const outputId = `${inputId}-output`;\n elem.id = inputId;\n\n if (hasRangeOutputClass) {\n const labelSpan = label.querySelector(\"span\");\n if (labelSpan && !labelSpan.classList.contains(\"range-output-wrapper\")) {\n const explicitRangeLabel =\n labelSpan.getAttribute(\"data-range-label\") ||\n label.getAttribute(\"data-range-label\") ||\n \"\";\n\n const wrapper = document.createElement(\"span\");\n wrapper.className = \"range-output-wrapper\";\n wrapper.style.display = \"flex\";\n wrapper.style.justifyContent = \"space-between\";\n wrapper.style.alignItems = \"center\";\n\n const textSpan = document.createElement(\"span\");\n textSpan.textContent = explicitRangeLabel || labelSpan.textContent;\n wrapper.appendChild(textSpan);\n\n const output = document.createElement(\"output\");\n output.id = outputId;\n output.setAttribute(\"for\", inputId);\n output.style.color =\n \"var(--surface-text-secondary, var(--color-text-secondary))\";\n output.style.fontSize = \"0.875rem\";\n output.textContent = elem.value;\n wrapper.appendChild(output);\n\n labelSpan.textContent = \"\";\n labelSpan.appendChild(wrapper);\n\n const updateOutput = () => {\n output.textContent = elem.value;\n };\n elem.addEventListener(\"input\", updateOutput);\n elem.addEventListener(\"change\", updateOutput);\n wireProgrammaticUpdates(updateOutput);\n updateOutput();\n }\n } else {\n let container = elem.closest(\".range-container\");\n if (!container) {\n container = document.createElement(\"div\");\n container.className = \"range-container\";\n elem.parentNode?.insertBefore(container, elem);\n container.appendChild(elem);\n }\n container.style.position = \"relative\";\n\n const bubble = document.createElement(\"output\");\n bubble.id = outputId;\n bubble.setAttribute(\"for\", inputId);\n bubble.className = \"range-bubble\";\n bubble.setAttribute(\"aria-live\", \"polite\");\n container.appendChild(bubble);\n\n const updateBubble = () => {\n const min = parseFloat(elem.min) || 0;\n const max = parseFloat(elem.max) || 100;\n const value = parseFloat(elem.value);\n const pct = (value - min) / (max - min);\n bubble.style.left = `calc(${pct * 100}% )`;\n bubble.textContent = String(value);\n };\n const show = () => bubble.classList.add(\"visible\");\n const hide = () => bubble.classList.remove(\"visible\");\n elem.addEventListener(\"input\", updateBubble);\n elem.addEventListener(\"pointerdown\", show);\n elem.addEventListener(\"pointerup\", hide);\n elem.addEventListener(\"pointerleave\", hide);\n elem.addEventListener(\"focus\", show);\n elem.addEventListener(\"blur\", hide);\n elem.addEventListener(\"change\", updateBubble);\n wireProgrammaticUpdates(updateBubble);\n updateBubble();\n }\n\n elem.dataset.enhancedRange = \"1\";\n}\n\nfunction enhanceRequired(elem) {\n if (elem.dataset.enhancedRequired) return;\n elem.dataset.enhancedRequired = \"true\";\n\n const enhanceRequiredField = (input) => {\n let label;\n if (input.closest(\"[role$=group]\")) {\n // Handles both radiogroup and group\n label = input.closest(\"[role$=group]\").querySelector(\"legend\");\n } else {\n label = input.closest(\"label\");\n }\n if (!label) return;\n\n if (label.querySelector(\".required-asterisk\")) return;\n\n const asterisk = document.createElement(\"span\");\n asterisk.classList.add(\"required-asterisk\");\n asterisk.textContent = \"*\";\n asterisk.style.marginLeft = \"4px\";\n\n const labelText = label.querySelector(\"span, [data-label]\");\n if (labelText) {\n labelText.appendChild(asterisk);\n } else {\n const field = label.querySelector(\"input, select, textarea\");\n if (field) {\n label.insertBefore(asterisk, field);\n } else {\n label.appendChild(asterisk);\n }\n }\n\n const form = input.closest(\"form\");\n if (form && !form.querySelector(\".required-legend\")) {\n const legend = document.createElement(\"small\");\n legend.classList.add(\"required-legend\");\n legend.textContent = msg(\"* Required fields\");\n form.insertBefore(\n legend,\n form.querySelector(\".form-actions\") || form.lastElementChild,\n );\n }\n };\n\n elem.querySelectorAll(\"[required]\").forEach((input) => {\n enhanceRequiredField(input);\n });\n}\n\nfunction enhanceOpenGroup(elem) {\n if (elem.dataset.enhancedOpenGroup) return;\n elem.dataset.enhancedOpenGroup = \"true\";\n\n elem.classList.add(\"flex\", \"flex-wrap\", \"buttons\");\n\n const addInput = document.createElement(\"input\");\n addInput.type = \"text\";\n addInput.placeholder = msg(\"Add item...\");\n addInput.classList.add(\"input-text\", \"input-sm\");\n addInput.style.width = \"auto\";\n\n const getFirstInput = () =>\n elem.querySelector('input[type=\"radio\"], input[type=\"checkbox\"]');\n\n elem.appendChild(addInput);\n addInput.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Enter\" || event.key === \"Tab\") {\n const value = addInput.value.trim();\n if (value) {\n event.preventDefault();\n\n const firstInput = getFirstInput();\n const type = firstInput?.type === \"radio\" ? \"radio\" : \"checkbox\";\n const id = `open-group-${Math.random().toString(36).substring(2, 11)}`;\n const label = document.createElement(\"label\");\n\n const span = document.createElement(\"span\");\n span.setAttribute(\"data-label\", \"\");\n span.textContent = value;\n\n const input = document.createElement(\"input\");\n input.type = type;\n input.name =\n firstInput?.name || elem.getAttribute(\"data-name\") || \"open-group\";\n input.value = value;\n input.id = id;\n\n label.appendChild(span);\n label.appendChild(input);\n\n elem.insertBefore(label, addInput);\n addInput.value = \"\";\n }\n } else if (event.key === \"Backspace\" && addInput.value === \"\") {\n event.preventDefault();\n const labels = elem.querySelectorAll(\"label\");\n if (labels.length > 0) {\n const lastLabel = labels[labels.length - 1];\n lastLabel.remove();\n }\n }\n });\n}\n\nfunction enhanceClip(elem) {\n if (elem.dataset.enhancedClip) return;\n elem.dataset.enhancedClip = \"true\";\n\n if (!elem.hasAttribute(\"tabindex\")) {\n elem.setAttribute(\"tabindex\", \"0\");\n }\n if (!elem.hasAttribute(\"role\")) {\n elem.setAttribute(\"role\", \"button\");\n }\n\n const syncAria = () => {\n const isOpen = elem.getAttribute(\"data-clip-open\") === \"true\";\n elem.setAttribute(\"aria-expanded\", isOpen ? \"true\" : \"false\");\n };\n\n const toggleOpen = () => {\n const isOpen = elem.getAttribute(\"data-clip-open\") === \"true\";\n elem.setAttribute(\"data-clip-open\", isOpen ? \"false\" : \"true\");\n syncAria();\n };\n\n elem.addEventListener(\"click\", (event) => {\n if (event.defaultPrevented) return;\n toggleOpen();\n });\n\n elem.addEventListener(\"keydown\", (event) => {\n if (event.key === \" \" || event.key === \"Enter\") {\n event.preventDefault();\n toggleOpen();\n }\n });\n\n syncAria();\n}\n\nfunction enhanceButtonWorking(elem) {\n if (elem.dataset.enhancedBtnWorking) return;\n elem.dataset.enhancedBtnWorking = \"true\";\n\n let originalIcon = null;\n let addedIcon = false;\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.attributeName === \"class\") {\n const hasWorking = elem.classList.contains(\"btn-working\");\n const icon = elem.querySelector(\"pds-icon\");\n\n if (hasWorking) {\n if (icon) {\n if (!originalIcon) {\n originalIcon = icon.getAttribute(\"icon\");\n }\n icon.setAttribute(\"icon\", \"circle-notch\");\n } else {\n const newIcon = document.createElement(\"pds-icon\");\n newIcon.setAttribute(\"icon\", \"circle-notch\");\n newIcon.setAttribute(\"size\", \"sm\");\n elem.insertBefore(newIcon, elem.firstChild);\n addedIcon = true;\n }\n } else if (mutation.oldValue?.includes(\"btn-working\")) {\n if (icon) {\n if (addedIcon) {\n icon.remove();\n addedIcon = false;\n } else if (originalIcon) {\n icon.setAttribute(\"icon\", originalIcon);\n originalIcon = null;\n }\n }\n }\n }\n });\n });\n\n observer.observe(elem, {\n attributes: true,\n attributeFilter: [\"class\"],\n attributeOldValue: true,\n });\n}\n\n// ============================================================================\n// EXPORTS\n// ============================================================================\n\n// Map selectors to their run functions\nconst enhancerRunners = new Map([\n [\".accordion\", enhanceAccordion],\n [\"nav[data-dropdown]\", enhanceDropdown],\n [\"label[data-toggle]\", enhanceToggle],\n [\"label[data-color]\", enhanceColorInput],\n ['input[type=\"range\"]', enhanceRange],\n [\"form[data-required]\", enhanceRequired],\n [\"fieldset[role=group][data-open]\", enhanceOpenGroup],\n [\"[data-clip]\", enhanceClip],\n [\"button, a[class*='btn-']\", enhanceButtonWorking],\n]);\n\n/**\n * Complete enhancers with runtime functions.\n * Used by PDS.enhancer() and AutoDefiner at runtime.\n *\n * This is the canonical runtime array of enhancer objects.\n */\nexport const defaultPDSEnhancers = enhancerDefinitions.map((meta) => ({\n ...meta,\n run: enhancerRunners.get(meta.selector) || (() => {}),\n}));\n\n// Metadata lives in pds-enhancers-meta.js (live-mode only).\n"],
|
|
5
|
-
"mappings": ";AAAA,IAAM,yBAAyB,oBAAI,IAAI,CAAC,OAAO,QAAQ,SAAS,SAAS,MAAM,CAAC;AAChF,IAAM,sBAAsB;AAE5B,IAAI,gBAAgB;AACpB,IAAI,oBAAoB;AAExB,SAAS,qBAAqB;AAC5B,MAAI;AACF,UAAM,QAAQ,OAAO,eAAe,cAAc,aAAa;AAC/D,UAAM,YAAY,QAAQ,mBAAmB;AAC7C,QAAI,aAAa,OAAO,cAAc,UAAU;AAC9C,aAAO;AAAA,IACT;AAAA,EACF,SAAS,OAAO;AACd,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,mBAAmB,SAAS;AACnC,MAAI,CAAC,WAAW,OAAO,YAAY,UAAU;AAC3C,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,MAAM,QAAQ,SAAS,UAAU,QAAQ,SAAS,WAAW,QAAQ,OAAO;AAAA,IAC5E,OAAO,QAAQ,UAAU;AAAA,IACzB,SAAS,QAAQ;AAAA,EACnB;AACF;AAEA,SAAS,iBAAiB,OAAO;AAC/B,MAAI,OAAO,UAAU;AAAU,WAAO;AACtC,QAAM,aAAa,MAAM,YAAY;AACrC,SAAO,uBAAuB,IAAI,UAAU,IAAI,aAAa;AAC/D;AAEA,SAAS,mBAAmB;AAC1B,MAAI,OAAO,sBAAsB,YAAY;AAC3C,QAAI;AACF,YAAM,oBAAoB,mBAAmB,kBAAkB,CAAC;AAChE,UAAI,mBAAmB;AACrB,eAAO;AAAA,MACT;AAAA,IACF,SAAS,OAAO;AAAA,IAAC;AAAA,EACnB;AAEA,QAAM,YAAY,mBAAmB;AACrC,MAAI,WAAW;AACb,UAAM,OACJ,WAAW,QACX,WAAW,UAAU,SACpB,WAAW,UAAU,SAAS,SAAS;AAC1C,UAAM,SACH,WAAW,SACV,WAAW,eAAe,SAC1B,WAAW,eAAe,QAAQ,SAClC,WAAW,UAAU,SACrB,WAAW,UAAU,QAAQ,SAC7B,WAAW;AACf,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,SAAS;AAAA,IACX;AAAA,EACF;AAEA,SAAO,EAAE,MAAM,MAAM,OAAO,MAAM;AACpC;AAEA,SAAS,kBAAkB;AACzB,MAAI,OAAO,kBAAkB,YAAY;AACvC,QAAI;AACF,YAAM,SAAS,cAAc;AAC7B,UAAI,OAAO,WAAW,YAAY;AAChC,eAAO;AAAA,MACT;AAAA,IACF,SAAS,OAAO;AAAA,IAAC;AAAA,EACnB;AAEA,QAAM,YAAY,mBAAmB;AACrC,MAAI,OAAO,WAAW,eAAe,YAAY;AAC/C,WAAO,UAAU;AAAA,EACnB;AAEA,SAAO;AACT;AAEA,SAAS,aAAa,OAAO,YAAY,MAAM;AAC7C,MAAI,OAAO,YAAY;AAAa;AACpC,QAAM,SACJ,OAAO,QAAQ,KAAK,MAAM,aACtB,QAAQ,KAAK,EAAE,KAAK,OAAO,IAC3B,OAAO,QAAQ,QAAQ,aACrB,QAAQ,IAAI,KAAK,OAAO,IACxB;AACR,MAAI,CAAC;AAAQ;AAEb,MAAI,KAAK,SAAS,GAAG;AACnB,WAAO,SAAS,GAAG,IAAI;AAAA,EACzB,OAAO;AACL,WAAO,OAAO;AAAA,EAChB;AACF;AAEA,SAAS,2BAA2B,OAAO,SAAS;AAClD,QAAM,eAAe,SAAS,UAAU;AACxC,QAAM,aAAa,SAAS,SAAS;AAErC,MAAI,cAAc,CAAC,cAAc;AAC/B,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,gBAAgB,UAAU,WAAW,UAAU,QAAQ;AAC1D,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAOO,SAAS,OAAO,QAAQ,OAAO,YAAY,MAAM;AACtD,QAAM,kBAAkB,iBAAiB,KAAK;AAC9C,QAAM,UAAU,iBAAiB;AACjC,QAAM,eAAe,gBAAgB;AAErC,MAAI,cAAc;AAChB,QAAI;AACF,mBAAa,KAAK,SAAS,SAAS,iBAAiB,SAAS,GAAG,IAAI;AACrE;AAAA,IACF,SAAS,OAAO;AACd,mBAAa,SAAS,8BAA8B,KAAK;AAAA,IAC3D;AAAA,EACF;AAEA,MAAI,CAAC,2BAA2B,iBAAiB,OAAO,GAAG;AACzD;AAAA,EACF;AAEA,eAAa,iBAAiB,SAAS,GAAG,IAAI;AAChD;;;AC7IA,IAAM,qBAAqB;AAE3B,IAAM,sBAAsB;AAAA,EAC1B,eAAe;AAAA,EACf,UAAU;AAAA,EACV,kBAAkB,oBAAI,IAAI;AAAA,EAC1B,iBAAiB,oBAAI,IAAI;AAAA,EACzB,UAAU;AAAA,EACV,gBAAgB;AAAA,EAChB,eAAe,oBAAI,IAAI;AAAA,EACvB,gBAAgB,oBAAI,QAAQ;AAAA,EAC5B,iBAAiB,oBAAI,QAAQ;AAAA,EAC7B,aAAa,oBAAI,IAAI;AAAA,EACrB,iBAAiB,oBAAI,IAAI;AAC3B;AAEA,IAAM,2BAA2B;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,gBAAgB,CAAC,QACrB,QAAQ,GAAG,KAAK,OAAO,QAAQ,YAAY,OAAO,QAAQ,YAAY,YAAY;AAEpF,SAAS,kBAAkB,QAAQ;AACjC,SAAO,OAAO,UAAU,EAAE,EAAE,KAAK,EAAE,YAAY;AACjD;AAEA,SAAS,eAAe,QAAQ;AAC9B,QAAM,aAAa,kBAAkB,MAAM;AAC3C,MAAI,CAAC;AAAY,WAAO;AACxB,SAAO,WAAW,MAAM,GAAG,EAAE,CAAC,KAAK;AACrC;AAEA,SAAS,yBAAyB,QAAQ;AACxC,QAAM,aAAa,kBAAkB,MAAM;AAC3C,MAAI,CAAC,YAAY;AACf,WAAO,oBAAoB;AAAA,EAC7B;AAEA,QAAM,gBAAgB,oBAAoB,UAAU;AACpD,MAAI,OAAO,kBAAkB,YAAY;AACvC,UAAM,WAAW,kBAAkB,cAAc,MAAM,CAAC;AACxD,QAAI,UAAU;AACZ,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,iBAAiB,SAAS;AACjC,MAAI,SAAS;AACb,WAAS,QAAQ,GAAG,SAAS,QAAQ,SAAS,GAAG,SAAS,GAAG;AAC3D,cAAU,QAAQ,KAAK;AACvB,QAAI,QAAQ,QAAQ,SAAS,GAAG;AAC9B,gBAAU,IAAI,KAAK;AAAA,IACrB;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,sBAAsB,OAAO,UAAU;AAC9C,SAAO,OAAO,KAAK,EAAE,QAAQ,cAAc,CAAC,QAAQ,UAAU,SAAS,OAAO,KAAK,CAAC,CAAC;AACvF;AAEA,SAAS,oBAAoB,UAAU;AACrC,MAAI,CAAC,YAAY,OAAO,aAAa,UAAU;AAC7C,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,aAAa,CAAC;AACpB,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,QAAQ,GAAG;AACnD,QAAI,OAAO,UAAU,UAAU;AAC7B,iBAAW,GAAG,IAAI;AAClB;AAAA,IACF;AAEA,QAAI,SAAS,OAAO,UAAU,YAAY,OAAO,MAAM,YAAY,UAAU;AAC3E,iBAAW,GAAG,IAAI,MAAM;AAAA,IAC1B;AAAA,EACF;AAEA,SAAO;AACT;AAgDA,SAAS,iBAAiB,QAAQ;AAChC,QAAM,aAAa,kBAAkB,MAAM;AAC3C,MAAI,CAAC,YAAY;AACf,WAAO,CAAC,oBAAoB,aAAa;AAAA,EAC3C;AACA,QAAM,OAAO,eAAe,UAAU;AACtC,MAAI,CAAC,QAAQ,SAAS,YAAY;AAChC,WAAO,CAAC,UAAU;AAAA,EACpB;AACA,SAAO,CAAC,YAAY,IAAI;AAC1B;AAEA,SAAS,oBAAoB,QAAQ,UAAU;AAC7C,QAAM,mBAAmB,yBAAyB,MAAM;AACxD,sBAAoB,iBAAiB;AAAA,IACnC;AAAA,IACA,oBAAoB,QAAQ;AAAA,EAC9B;AACF;AAEA,SAAS,uBAAuB,KAAK;AACnC,MAAI,OAAO,QAAQ,YAAY,IAAI,SAAS,GAAG;AAC7C,wBAAoB,cAAc,IAAI,GAAG;AAAA,EAC3C;AACF;AAEA,SAAS,uBAAuB,KAAK,OAAO;AAC1C,MAAI,OAAO,QAAQ,YAAY,CAAC,IAAI,QAAQ;AAC1C;AAAA,EACF;AAEA,QAAM,kBAAkB,OAAO,UAAU,WAAW,QAAQ,OAAO,SAAS,EAAE;AAC9E,MAAI,CAAC,gBAAgB,QAAQ;AAC3B;AAAA,EACF;AAEA,MAAI,CAAC,oBAAoB,YAAY,IAAI,eAAe,GAAG;AACzD,wBAAoB,YAAY,IAAI,iBAAiB,oBAAI,IAAI,CAAC;AAAA,EAChE;AAEA,sBAAoB,YAAY,IAAI,eAAe,EAAE,IAAI,GAAG;AAC9D;AAEA,SAAS,oBAAoB,QAAQ;AACnC,QAAM,WAAW,iBAAiB,MAAM;AACxC,aAAW,aAAa,UAAU;AAChC,QAAI,oBAAoB,iBAAiB,IAAI,SAAS,GAAG;AACvD,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,UAAU,oBAAoB,iBAAiB,IAAI,SAAS;AAAA,MAC9D;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,eAAe,qBAAqB,QAAQ,SAAS,YAAY;AAC/D,QAAM,eAAe,yBAAyB,MAAM;AACpD,QAAM,WAAW,oBAAoB,YAAY;AACjD,MAAI,UAAU;AACZ,WAAO,SAAS;AAAA,EAClB;AAEA,QAAM,aAAa;AACnB,MAAI,oBAAoB,gBAAgB,IAAI,UAAU,GAAG;AACvD,WAAO,oBAAoB,gBAAgB,IAAI,UAAU;AAAA,EAC3D;AAEA,MAAI,CAAC,oBAAoB,UAAU;AACjC,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,SACJ,oBAAoB,SAAS,cAC7B,oBAAoB,SAAS,aAC7B;AAEF,MAAI,OAAO,WAAW,YAAY;AAChC,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,UAAU;AAAA,IACd,QAAQ;AAAA,IACR,eAAe,oBAAoB;AAAA,IACnC;AAAA,IACA,eAAe,MAAM,KAAK,oBAAoB,iBAAiB,KAAK,CAAC;AAAA,IACrE,UAAU;AAAA,MACR,GAAI,oBAAoB,YAAY,GAAG,YAAY,CAAC;AAAA,IACtD;AAAA,IACA,MAAM,WAAW,iBAAiB,WAAW;AAAA,EAC/C;AAEA,MAAI;AACJ,MAAI;AACF,aAAS,OAAO,OAAO;AAAA,EACzB,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AAEA,MAAI,UAAU,OAAO,OAAO,SAAS,YAAY;AAC/C,UAAM,UAAU,OACb,KAAK,CAAC,UAAU;AACf,YAAMA,cAAa,oBAAoB,KAAK;AAC5C,0BAAoB,cAAcA,WAAU;AAC5C,aAAOA;AAAA,IACT,CAAC,EACA,MAAM,OAAO,CAAC,EAAE,EAChB,QAAQ,MAAM;AACb,0BAAoB,gBAAgB,OAAO,UAAU;AAAA,IACvD,CAAC;AAEH,wBAAoB,gBAAgB,IAAI,YAAY,OAAO;AAC3D,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,oBAAoB,MAAM;AAC7C,sBAAoB,cAAc,UAAU;AAC5C,SAAO;AACT;AAEA,SAAS,gCAAgC,SAAS;AAChD,MAAI,CAAC,WAAW,OAAO,YAAY,UAAU;AAC3C,WAAO;AAAA,EACT;AAEA,QAAM,oBAAoB,OAAO,YAAY;AAC7C,QAAM,KACJ,qBAAqB,mBAAmB,UACpC,UACA,SAAS,aAAa,IACpB,UACA;AAER,MAAI,CAAC,IAAI;AACP,WAAO;AAAA,EACT;AAEA,MAAI,GAAG,eAAe,MAAM,GAAG;AAC7B,WAAO,kBAAkB,GAAG,aAAa,MAAM,CAAC;AAAA,EAClD;AAEA,QAAM,SAAS,GAAG,UAAU,QAAQ;AACpC,MAAI,UAAU,OAAO,cAAc;AACjC,WAAO,kBAAkB,OAAO,aAAa,MAAM,CAAC;AAAA,EACtD;AAEA,SAAO;AACT;AAEA,SAAS,uBAAuB,UAAU,CAAC,GAAG;AAC5C,MAAI,OAAO,SAAS,SAAS,YAAY,QAAQ,KAAK,KAAK,GAAG;AAC5D,WAAO,yBAAyB,QAAQ,IAAI;AAAA,EAC9C;AAEA,QAAM,eACJ,SAAS,WAAW,SAAS,SAAS,SAAS,QAAQ,SAAS,kBAAkB;AACpF,QAAM,eAAe,gCAAgC,YAAY;AACjE,MAAI,cAAc;AAChB,WAAO,yBAAyB,YAAY;AAAA,EAC9C;AAEA,MAAI,OAAO,aAAa,eAAe,SAAS,iBAAiB;AAC/D,UAAM,aAAa,kBAAkB,SAAS,gBAAgB,aAAa,MAAM,CAAC;AAClF,QAAI,YAAY;AACd,aAAO,yBAAyB,UAAU;AAAA,IAC5C;AAAA,EACF;AAEA,SAAO,oBAAoB;AAC7B;AAEA,SAAS,2BAA2B;AAClC,QAAM,WAAW,oBAAI,IAAI,CAAC,oBAAoB,aAAa,CAAC;AAE5D,MAAI,OAAO,aAAa,aAAa;AACnC,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,kBAAkB,SAAS,iBAAiB,eAAe,MAAM,CAAC;AACnF,MAAI,UAAU;AACZ,aAAS,IAAI,yBAAyB,QAAQ,CAAC;AAAA,EACjD;AAEA,QAAM,QAAQ,SAAS,mBAAmB,QAAQ,KAAK,CAAC;AACxD,aAAW,QAAQ,OAAO;AACxB,UAAM,OAAO,kBAAkB,KAAK,aAAa,MAAM,CAAC;AACxD,QAAI,MAAM;AACR,eAAS,IAAI,yBAAyB,IAAI,CAAC;AAAA,IAC7C;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAe,8BAA8B,iBAAiB;AAC5D,aAAW,UAAU,iBAAiB;AACpC,UAAM,qBAAqB,QAAQ,eAAe;AAAA,EACpD;AACF;AAEA,SAAS,yBAAyB,iBAAiB;AACjD,aAAW,gBAAgB,MAAM,KAAK,oBAAoB,iBAAiB,KAAK,CAAC,GAAG;AAClF,QAAI,CAAC,gBAAgB,IAAI,YAAY,GAAG;AACtC,0BAAoB,iBAAiB,OAAO,YAAY;AAAA,IAC1D;AAAA,EACF;AACF;AAEA,SAAS,sBAAsB,OAAO;AACpC,QAAM,QAAQ,OAAO,SAAS,EAAE;AAChC,QAAM,WAAW,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,GAAG,CAAC;AAC/C,QAAM,YAAY,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,GAAG,CAAC;AAChD,QAAM,QAAQ,QAAQ;AACtB,QAAM,MAAM,MAAM,SAAS,SAAS;AACpC,QAAM,OAAO,OAAO,QAAQ,MAAM,MAAM,OAAO,GAAG,IAAI;AAEtD,SAAO,EAAE,SAAS,MAAM,SAAS;AACnC;AAEA,SAAS,eAAe,OAAO;AAC7B,SAAO,OAAO,SAAS,EAAE,EAAE,QAAQ,uBAAuB,MAAM;AAClE;AAEA,SAAS,4BAA4B,UAAU,MAAM;AACnD,QAAM,gBAAgB,OAAO,aAAa,WAAW,WAAW,OAAO,YAAY,EAAE;AACrF,QAAM,YAAY,OAAO,SAAS,WAAW,OAAO,OAAO,QAAQ,EAAE;AACrE,QAAM,qBAAqB;AAE3B,QAAM,UAAU,MAAM,KAAK,cAAc,SAAS,kBAAkB,CAAC;AACrE,MAAI,CAAC,QAAQ,QAAQ;AACnB,WAAO,kBAAkB,YAAY,CAAC,IAAI;AAAA,EAC5C;AAEA,QAAM,mBAAmB,CAAC;AAC1B,MAAI,UAAU;AACd,MAAI,YAAY;AAEhB,aAAW,SAAS,SAAS;AAC3B,UAAM,aAAa,MAAM,SAAS;AAClC,eAAW,eAAe,cAAc,MAAM,WAAW,UAAU,CAAC;AACpE,eAAW;AACX,qBAAiB,KAAK,OAAO,MAAM,CAAC,CAAC,CAAC;AACtC,gBAAY,aAAa,MAAM,CAAC,EAAE;AAAA,EACpC;AAEA,aAAW,eAAe,cAAc,MAAM,SAAS,CAAC;AACxD,aAAW;AAEX,QAAM,SAAS,IAAI,OAAO,OAAO,EAAE,KAAK,SAAS;AACjD,MAAI,CAAC,QAAQ;AACX,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,CAAC;AAChB,WAAS,aAAa,GAAG,aAAa,OAAO,QAAQ,cAAc,GAAG;AACpE,UAAM,mBAAmB,iBAAiB,aAAa,CAAC;AACxD,UAAM,iBAAiB,OAAO,UAAU;AAExC,QACE,OAAO,UAAU,eAAe,KAAK,QAAQ,gBAAgB,KAC7D,OAAO,gBAAgB,MAAM,gBAC7B;AACA,aAAO;AAAA,IACT;AAEA,WAAO,gBAAgB,IAAI;AAAA,EAC7B;AAEA,SAAO;AACT;AAEA,SAAS,+BAA+B,KAAK,MAAM;AACjD,MAAI,OAAO,QAAQ,YAAY,CAAC,IAAI,QAAQ;AAC1C,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,YAAY,CAAC,GAAG;AACtB,aAAW,CAAC,EAAE,QAAQ,KAAK,oBAAoB,iBAAiB,QAAQ,GAAG;AACzE,UAAM,YAAY,WAAW,GAAG;AAChC,QAAI,OAAO,cAAc,YAAY,UAAU,QAAQ;AACrD,gBAAU,KAAK,SAAS;AAAA,IAC1B;AAAA,EACF;AAEA,aAAW,YAAY,WAAW;AAChC,UAAM,YAAY,4BAA4B,UAAU,IAAI;AAC5D,QAAI,WAAW;AACb,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO,CAAC;AACV;AAEA,SAAS,0BAA0B,UAAU;AAC3C,MAAI,CAAC,UAAU;AACb,WAAO;AAAA,EACT;AAEA,QAAM,cAAc,oBAAoB,YAAY,IAAI,QAAQ;AAChE,MAAI,eAAe,YAAY,OAAO,GAAG;AACvC,eAAW,OAAO,aAAa;AAC7B,UAAI,oBAAoB,cAAc,IAAI,GAAG,GAAG;AAC9C,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,MAAI,oBAAoB,cAAc,IAAI,QAAQ,GAAG;AACnD,WAAO;AAAA,EACT;AAEA,QAAM,gBAAgB,MAAM,KAAK,oBAAoB,iBAAiB,QAAQ,CAAC;AAC/E,aAAW,OAAO,oBAAoB,eAAe;AACnD,eAAW,CAAC,EAAE,QAAQ,KAAK,eAAe;AACxC,UAAI,YAAY,SAAS,GAAG,MAAM,UAAU;AAC1C,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,iCAAiC,UAAU;AAClD,MAAI,CAAC,UAAU;AACb,WAAO;AAAA,EACT;AAEA,MAAI,YAAY;AAEhB,aAAW,CAAC,cAAc,WAAW,KAAK,oBAAoB,YAAY,QAAQ,GAAG;AACnF,QAAI,OAAO,iBAAiB,YAAY,CAAC,aAAa,QAAQ;AAC5D;AAAA,IACF;AAEA,QAAI,iBAAiB,UAAU;AAC7B;AAAA,IACF;AAEA,UAAM,QAAQ,SAAS,QAAQ,YAAY;AAC3C,QAAI,UAAU,IAAI;AAChB;AAAA,IACF;AAEA,eAAW,OAAO,aAAa;AAC7B,UAAI,CAAC,oBAAoB,cAAc,IAAI,GAAG,GAAG;AAC/C;AAAA,MACF;AAEA,YAAM,SAAS,+BAA+B,KAAK,YAAY;AAC/D,YAAM,YAAY;AAAA,QAChB;AAAA,QACA,aAAa;AAAA,QACb;AAAA,QACA,KAAK,QAAQ,aAAa;AAAA,QAC1B;AAAA,MACF;AAEA,UAAI,CAAC,aAAa,UAAU,YAAY,SAAS,UAAU,YAAY,QAAQ;AAC7E,oBAAY;AAAA,MACd;AAEA;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAe,mBAAmB,UAAU;AAC1C,MAAI,CAAC,YAAY,SAAS,aAAa,GAAG;AACxC;AAAA,EACF;AAEA,QAAM,gBAAgB,SAAS,iBAAiB;AAChD,MAAI,CAAC,eAAe;AAClB;AAAA,EACF;AAEA,QAAM,EAAE,SAAS,MAAM,SAAS,IAAI,sBAAsB,SAAS,SAAS;AAC5E,MAAI,CAAC,MAAM;AACT;AAAA,EACF;AAEA,MAAI,MAAM,oBAAoB,eAAe,IAAI,QAAQ,KAAK;AAC9D,MAAI,CAAC,OAAO,CAAC,oBAAoB,cAAc,IAAI,GAAG,GAAG;AACvD,UAAM,0BAA0B,IAAI;AAAA,EACtC;AAEA,MAAI,CAAC,KAAK;AACR,UAAM,eAAe,iCAAiC,IAAI;AAC1D,QAAI,CAAC,cAAc;AACjB;AAAA,IACF;AAEA,UAAMC,gBAAe,uBAAuB,EAAE,SAAS,cAAc,CAAC;AACtE,UAAM,qBAAqBA,eAAc,WAAW;AAEpD,UAAMC,cAAa;AAAA,MACjB,aAAa;AAAA,MACb,aAAa;AAAA,MACb,EAAE,SAAS,cAAc;AAAA,MACzB;AAAA,IACF;AACA,UAAMC,kBAAiB,aAAa,OAAO,SACvC,sBAAsBD,aAAY,CAAC,UAAU,aAAa,OAAO,KAAK,CAAC,IACvEA;AACJ,UAAM,gBACJ,KAAK,MAAM,GAAG,aAAa,KAAK,IAChCC,kBACA,KAAK,MAAM,aAAa,GAAG;AAC7B,UAAM,gBAAgB,GAAG,OAAO,GAAG,aAAa,GAAG,QAAQ;AAE3D,QAAI,kBAAkB,SAAS,WAAW;AACxC,eAAS,YAAY;AAAA,IACvB;AACA;AAAA,EACF;AAEA,sBAAoB,eAAe,IAAI,UAAU,GAAG;AAEpD,QAAM,eAAe,uBAAuB,EAAE,SAAS,cAAc,CAAC;AACtE,QAAM,qBAAqB,cAAc,WAAW;AAEpD,QAAM,SAAS,+BAA+B,KAAK,IAAI;AACvD,QAAM,aAAa,qBAAqB,KAAK,QAAQ,EAAE,SAAS,cAAc,GAAG,IAAI;AACrF,QAAM,iBAAiB,OAAO,SAC1B,sBAAsB,YAAY,CAAC,UAAU,OAAO,KAAK,CAAC,IAC1D;AACJ,QAAM,WAAW,GAAG,OAAO,GAAG,cAAc,GAAG,QAAQ;AAEvD,MAAI,aAAa,SAAS,WAAW;AACnC,aAAS,YAAY;AAAA,EACvB;AACF;AAEA,eAAe,+BAA+B;AAC5C,MAAI,OAAO,aAAa,eAAe,oBAAoB,cAAc,SAAS,GAAG;AACnF;AAAA,EACF;AAEA,QAAM,OAAO,SAAS,QAAQ,SAAS;AACvC,MAAI,CAAC,QAAQ,OAAO,SAAS,qBAAqB,YAAY;AAC5D;AAAA,EACF;AAEA,QAAM,QAAQ,CAAC;AACf,QAAM,YAAY,oBAAI,IAAI;AAE1B,QAAM,UAAU,CAAC,kBAAkB;AACjC,QAAI,CAAC,iBAAiB,UAAU,IAAI,aAAa,GAAG;AAClD;AAAA,IACF;AAEA,cAAU,IAAI,aAAa;AAC3B,UAAM,KAAK,aAAa;AAAA,EAC1B;AAEA,UAAQ,IAAI;AAEZ,WAAS,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS,GAAG;AACpD,UAAM,cAAc,MAAM,KAAK;AAC/B,QAAI,CAAC,eAAe,OAAO,YAAY,qBAAqB,YAAY;AACtE;AAAA,IACF;AAEA,UAAM,WAAW,YAAY,iBAAiB,GAAG;AACjD,eAAW,WAAW,UAAU;AAC9B,YAAM,aAAa,SAAS;AAC5B,UAAI,YAAY;AACd,gBAAQ,UAAU;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,QAAQ,CAAC;AAEf,aAAW,YAAY,OAAO;AAC5B,UAAM,SAAS,SAAS,iBAAiB,UAAU,WAAW,SAAS;AACvE,WAAO,OAAO,SAAS,GAAG;AACxB,YAAM,KAAK,OAAO,WAAW;AAAA,IAC/B;AAAA,EACF;AAEA,aAAW,QAAQ,OAAO;AACxB,UAAM,mBAAmB,IAAI;AAAA,EAC/B;AACF;AAEA,SAAS,4BAA4B,SAAS;AAC5C,MAAI,MAAM,oBAAoB,gBAAgB,IAAI,OAAO;AACzD,MAAI,CAAC,KAAK;AACR,UAAM,oBAAI,IAAI;AACd,wBAAoB,gBAAgB,IAAI,SAAS,GAAG;AAAA,EACtD;AACA,SAAO;AACT;AAEA,eAAe,oBAAoB,SAAS,UAAU;AACpD,MAAI,CAAC,WAAW,OAAO,QAAQ,iBAAiB,YAAY;AAC1D;AAAA,EACF;AAEA,QAAM,WAAW,QAAQ,aAAa,QAAQ;AAC9C,MAAI,OAAO,aAAa,YAAY,CAAC,SAAS,QAAQ;AACpD;AAAA,EACF;AAEA,QAAM,SAAS,4BAA4B,OAAO;AAClD,MAAI,MAAM,OAAO,IAAI,QAAQ,KAAK;AAElC,MAAI,CAAC,OAAO,CAAC,oBAAoB,cAAc,IAAI,GAAG,GAAG;AACvD,UAAM,0BAA0B,QAAQ;AAAA,EAC1C;AAEA,MAAI,CAAC,KAAK;AACR,UAAM,eAAe,iCAAiC,QAAQ;AAC9D,QAAI,CAAC,cAAc;AACjB;AAAA,IACF;AAEA,UAAMF,gBAAe,uBAAuB,EAAE,QAAQ,CAAC;AACvD,UAAM,qBAAqBA,eAAc,WAAW;AAEpD,UAAMC,cAAa,qBAAqB,aAAa,KAAK,aAAa,QAAQ,EAAE,QAAQ,GAAG,IAAI;AAChG,UAAMC,kBAAiB,aAAa,OAAO,SACvC,sBAAsBD,aAAY,CAAC,UAAU,aAAa,OAAO,KAAK,CAAC,IACvEA;AAEJ,UAAM,iBACJ,SAAS,MAAM,GAAG,aAAa,KAAK,IACpCC,kBACA,SAAS,MAAM,aAAa,GAAG;AAEjC,QAAI,mBAAmB,UAAU;AAC/B,cAAQ,aAAa,UAAU,cAAc;AAAA,IAC/C;AAEA,WAAO,IAAI,UAAU,aAAa,GAAG;AACrC;AAAA,EACF;AAEA,SAAO,IAAI,UAAU,GAAG;AAExB,QAAM,eAAe,uBAAuB,EAAE,QAAQ,CAAC;AACvD,QAAM,qBAAqB,cAAc,WAAW;AAEpD,QAAM,SAAS,+BAA+B,KAAK,QAAQ;AAC3D,QAAM,aAAa,qBAAqB,KAAK,QAAQ,EAAE,QAAQ,GAAG,IAAI;AACtE,QAAM,iBAAiB,OAAO,SAC1B,sBAAsB,YAAY,CAAC,UAAU,OAAO,KAAK,CAAC,IAC1D;AAEJ,MAAI,mBAAmB,UAAU;AAC/B,YAAQ,aAAa,UAAU,cAAc;AAAA,EAC/C;AACF;AAEA,eAAe,gCAAgC;AAC7C,MAAI,OAAO,aAAa,eAAe,oBAAoB,cAAc,SAAS,GAAG;AACnF;AAAA,EACF;AAEA,QAAM,OAAO,SAAS,QAAQ,SAAS;AACvC,MAAI,CAAC,MAAM;AACT;AAAA,EACF;AAEA,QAAM,QAAQ,CAAC;AACf,QAAM,YAAY,oBAAI,IAAI;AAE1B,QAAM,UAAU,CAAC,kBAAkB;AACjC,QAAI,CAAC,iBAAiB,UAAU,IAAI,aAAa,GAAG;AAClD;AAAA,IACF;AAEA,cAAU,IAAI,aAAa;AAC3B,UAAM,KAAK,aAAa;AAAA,EAC1B;AAEA,UAAQ,IAAI;AAEZ,WAAS,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS,GAAG;AACpD,UAAM,cAAc,MAAM,KAAK;AAC/B,QAAI,CAAC,eAAe,OAAO,YAAY,qBAAqB,YAAY;AACtE;AAAA,IACF;AAEA,UAAM,WAAW,YAAY,iBAAiB,GAAG;AACjD,eAAW,WAAW,UAAU;AAC9B,YAAM,aAAa,SAAS;AAC5B,UAAI,YAAY;AACd,gBAAQ,UAAU;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AAEA,aAAW,YAAY,OAAO;AAC5B,QAAI,CAAC,YAAY,OAAO,SAAS,qBAAqB,YAAY;AAChE;AAAA,IACF;AAEA,UAAM,WAAW,SAAS,iBAAiB,GAAG;AAC9C,eAAW,WAAW,UAAU;AAC9B,iBAAW,YAAY,0BAA0B;AAC/C,YAAI,QAAQ,aAAa,QAAQ,GAAG;AAClC,gBAAM,oBAAoB,SAAS,QAAQ;AAAA,QAC7C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,eAAe,0BAA0B;AACvC,QAAM,kBAAkB,yBAAyB;AACjD,QAAM,8BAA8B,eAAe;AACnD,QAAM,6BAA6B;AACnC,QAAM,8BAA8B;AACpC,2BAAyB,eAAe;AAC1C;AAEA,SAAS,sBAAsB;AAC7B,MAAI,OAAO,WAAW,aAAa;AACjC;AAAA,EACF;AAEA,MAAI,oBAAoB,gBAAgB;AACtC,iBAAa,oBAAoB,cAAc;AAAA,EACjD;AAEA,sBAAoB,iBAAiB,WAAW,MAAM;AACpD,wBAAoB,iBAAiB;AACrC,4BAAwB;AAAA,EAC1B,GAAG,EAAE;AACP;AA+BA,SAAS,qBAAqB,KAAK,SAAS,CAAC,GAAG,UAAU,CAAC,GAAG,WAAW,MAAM;AAC7E,QAAM,kBAAkB,uBAAuB,OAAO;AACtD,QAAM,mBAAmB,oBAAoB,eAAe;AAE5D,MAAI,CAAC,kBAAkB;AACrB,yBAAqB,iBAAiB,KAAK;AAAA,EAC7C;AAEA,QAAM,iBAAiB,oBAAoB,eAAe,GAAG,YAAY,CAAC;AAC1E,QAAM,kBACJ,oBAAoB,oBAAoB,aAAa,GAAG,YAAY,CAAC;AAEvE,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,eAAe,oBAAoB;AAAA,IACnC,UAAU;AAAA,IACV,kBAAkB,OAAO;AAAA,MACvB,MAAM,KAAK,oBAAoB,iBAAiB,QAAQ,CAAC;AAAA,IAC3D;AAAA,IACA;AAAA,EACF;AAEA,MAAI;AACJ,QAAM,eAAe,QAAQ,gBAAgB;AAC7C,QAAM,kBAAkB,oBAAoB,oBAAoB;AAChE,MAAI,OAAO,oBAAoB,UAAU,cAAc,YAAY;AACjE,iBAAa,oBAAoB,SAAS,UAAU,OAAO;AAAA,EAC7D;AAEA,MAAI,eAAe;AAEnB,MAAI,eAAe,UAAa,eAAe,MAAM;AACnD,iBAAa,eAAe,GAAG;AAAA,EACjC;AAEA,MAAI,eAAe,UAAa,eAAe,MAAM;AACnD,iBAAa,gBAAgB,GAAG;AAChC,mBAAe,eAAe,UAAa,eAAe,OAAO,OAAO;AAAA,EAC1E;AAEA,MAAI,eAAe,UAAa,eAAe,MAAM;AACnD,iBAAa;AACb,mBAAe;AAAA,EACjB;AAEA,MAAI,gBAAgB,CAAC,mBAAmB,cAAc;AACpD,UAAM,aAAa,GAAG,eAAe,KAAK,GAAG;AAC7C,QAAI,CAAC,oBAAoB,gBAAgB,IAAI,UAAU,GAAG;AACxD,0BAAoB,gBAAgB,IAAI,UAAU;AAClD;AAAA,QACE;AAAA,QACA,0CAA0C,eAAe,cAAc,GAAG,YAAY,YAAY;AAAA,MACpG;AAAA,IACF;AAAA,EACF;AAEA,QAAM,WAAW,OAAO,eAAe,WAAW,aAAa,OAAO,UAAU;AAChF,yBAAuB,KAAK,QAAQ;AAEpC,MAAI,MAAM,QAAQ,MAAM,KAAK,OAAO,SAAS,GAAG;AAC9C,UAAM,eAAe,sBAAsB,UAAU,CAAC,UAAU,OAAO,KAAK,CAAC;AAC7E,QAAI,iBAAiB,UAAU;AAC7B,6BAAuB,KAAK,YAAY;AAAA,IAC1C;AAAA,EACF;AAEA,SAAO;AACT;AAkFO,IAAM,uBAAuB,CAAC,SAAS,QAAQ,UAAU,CAAC,MAAM;AACrE,QAAM,aAAa,iBAAiB,OAAO;AAC3C,yBAAuB,UAAU;AACjC,QAAM,aAAa,qBAAqB,YAAY,QAAQ,SAAS;AAAA,IACnE;AAAA,IACA;AAAA,EACF,CAAC;AAED,SAAO,sBAAsB,YAAY,CAAC,UAAU,OAAO,KAAK,CAAC;AACnE;AASO,IAAM,MAAM,CAAC,UAAU,UAAU,CAAC,MAAM;AAC7C,MAAI,CAAC,UAAU;AACb,WAAO;AAAA,EACT;AAEA,MAAI,cAAc,QAAQ,GAAG;AAC3B,WAAO,qBAAqB,SAAS,SAAS,SAAS,QAAQ,OAAO;AAAA,EACxE;AAEA,QAAM,MAAM,OAAO,QAAQ;AAC3B,yBAAuB,GAAG;AAC1B,QAAM,aAAa,qBAAqB,KAAK,CAAC,GAAG,SAAS,IAAI;AAE9D,MACE,CAAC,SAAS,WACV,CAAC,SAAS,SACV,CAAC,SAAS,QACV,CAAC,SAAS,kBACV,CAAC,SAAS,MACV;AACA,wBAAoB;AAAA,EACtB;AAEA,SAAO;AACT;;;ACz9BA,IAAM,sBAAsB;AAAA,EAC1B,EAAE,UAAU,aAAa;AAAA,EACzB,EAAE,UAAU,qBAAqB;AAAA,EACjC,EAAE,UAAU,qBAAqB;AAAA,EACjC,EAAE,UAAU,oBAAoB;AAAA,EAChC,EAAE,UAAU,sBAAsB;AAAA,EAClC,EAAE,UAAU,sBAAsB;AAAA,EAClC,EAAE,UAAU,kCAAkC;AAAA,EAC9C,EAAE,UAAU,cAAc;AAAA,EAC1B,EAAE,UAAU,2BAA2B;AACzC;AAMA,SAAS,iBAAiB,MAAM;AAC9B,MAAI,KAAK,QAAQ;AAAmB;AACpC,OAAK,QAAQ,oBAAoB;AAEjC,OAAK;AAAA,IACH;AAAA,IACA,CAAC,UAAU;AAGT,UAAI,MAAM,OAAO,QAAQ,MAAM,OAAO,kBAAkB,MAAM;AAC5D,aAAK,iBAAiB,wBAAwB,EAAE,QAAQ,CAAC,YAAY;AACnE,cAAI,YAAY,MAAM,QAAQ;AAC5B,oBAAQ,OAAO;AAAA,UACjB;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,gBAAgB,MAAM;AAC7B,MAAI,KAAK,QAAQ;AAAkB;AACnC,OAAK,QAAQ,mBAAmB;AAChC,QAAM,OAAO,KAAK;AAElB,MAAI,CAAC;AAAM;AAEX,QAAM,UACJ,KAAK,cAAc,wBAAwB,KAC3C,KAAK,cAAc,QAAQ;AAE7B,QAAM,kBACJ,OAAO,gBAAgB,eACvB,iBAAiB,YAAY,aAC7B,iBAAiB,YAAY;AAE/B,MAAI,WAAW,CAAC,QAAQ,aAAa,MAAM,GAAG;AAC5C,YAAQ,aAAa,QAAQ,QAAQ;AAAA,EACvC;AAEA,MAAI,CAAC,KAAK,IAAI;AACZ,SAAK,KAAK,YAAY,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,EAC9D;AAEA,QAAM,SAAS,KAAK,SAAS,YAAY,MAAM;AAC/C,QAAM,mBAAmB;AACzB,MAAI,UAAU,CAAC,KAAK,aAAa,MAAM,GAAG;AACxC,SAAK,aAAa,QAAQ,MAAM;AAAA,EAClC;AACA,MAAI,CAAC,KAAK,aAAa,aAAa,GAAG;AACrC,SAAK,aAAa,eAAe,MAAM;AAAA,EACzC;AAEA,MAAI,SAAS;AACX,YAAQ,aAAa,iBAAiB,MAAM;AAC5C,YAAQ,aAAa,iBAAiB,KAAK,EAAE;AAC7C,YAAQ,aAAa,iBAAiB,OAAO;AAAA,EAC/C;AAEA,MAAI,CAAC,iBAAiB;AACpB,UAAM,UAAU;AAChB,QAAI,CAAC,WAAW,OAAO,GAAG;AACxB,iBAAW,OAAO,IAAI;AACtB,cAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AACA;AAAA,EACF;AAEA,OAAK,aAAa,WAAW,MAAM;AAEnC,QAAM,kBAAkB,MAAM;AAC5B,UAAM,gBAAgB,KAAK,aAAa,OAAO;AAC/C,SAAK,MAAM,aAAa;AACxB,SAAK,MAAM,UAAU;AACrB,SAAK,MAAM,gBAAgB;AAE3B,UAAM,OAAO,KAAK,sBAAsB;AACxC,UAAM,QAAQ,KAAK,IAAI,KAAK,eAAe,GAAG,KAAK,eAAe,GAAG,KAAK,SAAS,GAAG,CAAC;AACvF,UAAM,SAAS,KAAK;AAAA,MAClB,KAAK,gBAAgB;AAAA,MACrB,KAAK,gBAAgB;AAAA,MACrB,KAAK,UAAU;AAAA,MACf;AAAA,IACF;AAEA,QAAI,kBAAkB,MAAM;AAC1B,WAAK,gBAAgB,OAAO;AAAA,IAC9B,OAAO;AACL,WAAK,aAAa,SAAS,aAAa;AAAA,IAC1C;AAEA,WAAO,EAAE,OAAO,OAAO;AAAA,EACzB;AAEA,QAAM,gBAAgB,MAAM;AAC1B,QAAI;AACF,aAAO,KAAK,QAAQ,eAAe;AAAA,IACrC,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAEA,QAAM,kBAAkB,MAAM;AAC5B,SAAK,aAAa,eAAe,MAAM;AACvC,aAAS,aAAa,iBAAiB,OAAO;AAAA,EAChD;AAEA,QAAM,gBAAgB,MAAM;AAC1B,SAAK,aAAa,eAAe,OAAO;AACxC,aAAS,aAAa,iBAAiB,MAAM;AAAA,EAC/C;AAEA,QAAM,mBAAmB,MAAM;AAC7B,UAAM,QACJ,KAAK,aAAa,gBAAgB,KAClC,KAAK,aAAa,yBAAyB,KAC3C,KAAK,aAAa,WAAW,KAC7B,QACA,YAAY;AACd,QAAI,SAAS,QAAQ,SAAS;AAAQ,aAAO;AAC7C,UAAM,cAAc,WAAW,MAAM,sBAAsB;AAC3D,UAAM,EAAE,QAAQ,WAAW,IAAI,gBAAgB;AAC/C,UAAM,aAAa,KAAK,IAAI,GAAG,OAAO,cAAc,WAAW,MAAM;AACrE,UAAM,aAAa,KAAK,IAAI,GAAG,WAAW,GAAG;AAC7C,UAAM,WAAW,cAAc;AAC/B,UAAM,SAAS,cAAc;AAC7B,QAAI,YAAY,CAAC;AAAQ,aAAO;AAChC,QAAI,UAAU,CAAC;AAAU,aAAO;AAChC,QAAI,YAAY;AAAQ,aAAO;AAC/B,WAAO,aAAa,aAAa,OAAO;AAAA,EAC1C;AAEA,QAAM,eAAe,MAAM;AACzB,UAAM,SACJ,KAAK,aAAa,YAAY,KAC9B,KAAK,aAAa,qBAAqB,KACvC,QACA,YAAY;AACd,QACE,UAAU,UACV,UAAU,WACV,UAAU,WACV,UAAU,OACV;AACA,aAAO,UAAU,UAAU,SAAS,UAAU,QAAQ,UAAU;AAAA,IAClE;AACA,UAAM,cAAc,WAAW,MAAM,sBAAsB;AAC3D,UAAM,EAAE,OAAO,UAAU,IAAI,gBAAgB;AAC7C,UAAM,sBAAsB,KAAK,IAAI,GAAG,OAAO,aAAa,WAAW,IAAI;AAC3E,UAAM,uBAAuB,KAAK,IAAI,GAAG,WAAW,KAAK;AACzD,UAAM,WAAW,uBAAuB;AACxC,UAAM,YAAY,wBAAwB;AAE1C,QAAI,YAAY,CAAC;AAAW,aAAO;AACnC,QAAI,aAAa,CAAC;AAAU,aAAO;AACnC,QAAI,YAAY;AAAW,aAAO;AAClC,WAAO,uBAAuB,sBAAsB,UAAU;AAAA,EAChE;AAEA,QAAM,kBAAkB,CAAC,WAAW,WAAW,MAAM;AACnD,UAAM,MAAM,iBAAiB,IAAI,EAAE,iBAAiB,SAAS,EAAE,KAAK;AACpE,QAAI,CAAC;AAAK,aAAO;AACjB,UAAM,QAAQ,SAAS,cAAc,MAAM;AAC3C,UAAM,MAAM,WAAW;AACvB,UAAM,MAAM,aAAa;AACzB,UAAM,MAAM,gBAAgB;AAC5B,UAAM,MAAM,SAAS;AACrB,aAAS,KAAK,YAAY,KAAK;AAC/B,UAAM,SAAS,OAAO,WAAW,iBAAiB,KAAK,EAAE,MAAM;AAC/D,UAAM,OAAO;AACb,WAAO,OAAO,SAAS,MAAM,IAAI,SAAS;AAAA,EAC5C;AAEA,QAAM,4BAA4B,MAAM;AACtC;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,QAAQ,CAAC,SAAS,KAAK,MAAM,eAAe,IAAI,CAAC;AAAA,EACrD;AAEA,QAAM,sBAAsB,MAAM;AAChC,QAAI,CAAC,cAAc;AAAG;AAEtB,UAAM,cAAc,WAAW,MAAM,sBAAsB;AAC3D,UAAM,WAAW,OAAO;AACxB,UAAM,gBACJ,UAAU,SAAS,SAAS,iBAAiB,eAAe,OAAO;AACrE,UAAM,iBACJ,UAAU,UAAU,SAAS,iBAAiB,gBAAgB,OAAO;AACvE,UAAM,qBAAqB,UAAU,cAAc;AACnD,UAAM,oBAAoB,UAAU,aAAa;AACjD,UAAM,eAAe,KAAK,IAAI,GAAG,gBAAgB,mBAAmB,CAAC;AACrE,UAAM,gBAAgB,KAAK,IAAI,GAAG,iBAAiB,mBAAmB,CAAC;AAEvE,SAAK,MAAM,WAAW,GAAG,KAAK,MAAM,YAAY,CAAC;AACjD,SAAK,MAAM,gBAAgB,GAAG,KAAK,MAAM,YAAY,CAAC;AACtD,SAAK,MAAM,YAAY,GAAG,KAAK,MAAM,aAAa,CAAC;AACnD,SAAK,MAAM,WAAW;AAEtB,UAAM,EAAE,OAAO,WAAW,QAAQ,WAAW,IAAI,gBAAgB;AACjE,UAAM,UAAU,gBAAgB,eAAe,CAAC;AAChD,UAAM,YAAY,iBAAiB;AACnC,UAAM,QAAQ,aAAa;AAE3B,SAAK,QAAQ,oBAAoB;AACjC,SAAK,QAAQ,gBAAgB;AAE7B,QAAI,OAAO,UAAU,UAAU,WAAW,QAAQ,YAAY,WAAW;AACzE,QAAI,aAAa,eAAe,GAAG;AACjC,aAAO,qBAAqB;AAAA,IAC9B,OAAO;AACL,aAAO,KAAK;AAAA,QACV,qBAAqB;AAAA,QACrB,KAAK;AAAA,UACH;AAAA,UACA,qBAAqB,gBAAgB,YAAY;AAAA,QACnD;AAAA,MACF;AAAA,IACF;AAEA,QAAI,MACF,cAAc,OACV,WAAW,MAAM,UAAU,aAC3B,WAAW,SAAS;AAC1B,UAAM,KAAK;AAAA,MACT,oBAAoB;AAAA,MACpB,KAAK;AAAA,QACH;AAAA,QACA,oBAAoB,iBAAiB,aAAa;AAAA,MACpD;AAAA,IACF;AAEA,WAAO,OAAO,KAAK,OAAO;AAAA,MACxB,UAAU;AAAA,MACV,MAAM,GAAG,KAAK,MAAM,IAAI,CAAC;AAAA,MACzB,KAAK,GAAG,KAAK,MAAM,GAAG,CAAC;AAAA,MACvB,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,cAAc;AAAA,IAChB,CAAC;AAAA,EACH;AAEA,MAAI,oBAAoB;AACxB,QAAM,iBAAiB,MAAM;AAC3B,QAAI;AAAmB;AACvB,wBAAoB,MAAM,oBAAoB;AAC9C,WAAO,iBAAiB,UAAU,iBAAiB;AACnD,WAAO,iBAAiB,UAAU,mBAAmB,IAAI;AAAA,EAC3D;AAEA,QAAM,mBAAmB,MAAM;AAC7B,QAAI,CAAC;AAAmB;AACxB,WAAO,oBAAoB,UAAU,iBAAiB;AACtD,WAAO,oBAAoB,UAAU,mBAAmB,IAAI;AAC5D,wBAAoB;AAAA,EACtB;AAEA,MAAI,uBAAuB;AAC3B,MAAI,wBAAwB;AAC5B,QAAM,oBAAoB,MAAM;AAC9B,QAAI,wBAAwB,OAAO,aAAa;AAAa;AAC7D,2BAAuB,MAAM;AAC3B,UAAI,CAAC,cAAc;AAAG;AACtB,WAAK,QAAQ,oBAAoB,iBAAiB;AAClD,WAAK,QAAQ,gBAAgB,aAAa;AAE1C,UAAI,0BAA0B,MAAM;AAClC,6BAAqB,qBAAqB;AAAA,MAC5C;AACA,8BAAwB,sBAAsB,MAAM;AAClD,gCAAwB;AACxB,YAAI,CAAC,cAAc;AAAG;AACtB,4BAAoB;AAAA,MACtB,CAAC;AAAA,IACH;AACA,aAAS,iBAAiB,sBAAsB,oBAAoB;AAAA,EACtE;AAEA,QAAM,sBAAsB,MAAM;AAChC,QAAI,CAAC,wBAAwB,OAAO,aAAa;AAAa;AAC9D,aAAS,oBAAoB,sBAAsB,oBAAoB;AACvE,2BAAuB;AACvB,QAAI,0BAA0B,MAAM;AAClC,2BAAqB,qBAAqB;AAC1C,8BAAwB;AAAA,IAC1B;AAAA,EACF;AAEA,OAAK,iBAAiB,UAAU,CAAC,UAAU;AACzC,UAAM,SAAS,MAAM,aAAa;AAElC,QAAI,QAAQ;AACV,oBAAc;AACd,0BAAoB;AACpB,qBAAe;AACf,wBAAkB;AAClB;AAAA,IACF;AAEA,oBAAgB;AAChB,qBAAiB;AACjB,wBAAoB;AACpB,8BAA0B;AAAA,EAC5B,CAAC;AAED,QAAM,WAAW,MAAM;AACrB,QAAI,cAAc;AAAG;AACrB,SAAK,QAAQ,oBAAoB,iBAAiB;AAClD,SAAK,QAAQ,gBAAgB,aAAa;AAC1C,SAAK,YAAY;AACjB,0BAAsB,MAAM,oBAAoB,CAAC;AAAA,EACnD;AAEA,QAAM,YAAY,MAAM;AACtB,QAAI,CAAC,cAAc;AAAG;AACtB,SAAK,YAAY;AAAA,EACnB;AAEA,QAAM,aAAa,MAAM;AACvB,QAAI,cAAc,GAAG;AACnB,gBAAU;AAAA,IACZ,OAAO;AACL,eAAS;AAAA,IACX;AAAA,EACF;AAEA,kBAAgB;AAEhB,OAAK,iBAAiB,SAAS,CAAC,UAAU;AACxC,UAAM,SACJ,MAAM,kBAAkB,UAAU,MAAM,SAAS,MAAM,QAAQ;AACjE,QAAI,CAAC;AAAQ;AACb,QAAI,CAAC,OAAO,QAAQ,uBAAuB;AAAG;AAC9C,cAAU;AAAA,EACZ,CAAC;AAED,WAAS,iBAAiB,SAAS,CAAC,UAAU;AAC5C,UAAM,eAAe;AACrB,UAAM,gBAAgB;AACtB,eAAW;AAAA,EACb,CAAC;AAED,OAAK,iBAAiB,WAAW,CAAC,UAAU;AAC1C,QAAI,MAAM,QAAQ,UAAU;AAC1B,gBAAU;AACV,eAAS,MAAM;AAAA,IACjB;AAAA,EACF,CAAC;AACH;AAEA,SAAS,cAAc,MAAM;AAC3B,MAAI,KAAK,QAAQ;AAAgB;AACjC,OAAK,QAAQ,iBAAiB;AAC9B,QAAM,WAAW,KAAK,cAAc,wBAAwB;AAC5D,MAAI,CAAC;AAAU;AAEf,MAAI,CAAC,KAAK,aAAa,UAAU,GAAG;AAClC,SAAK,aAAa,YAAY,GAAG;AAAA,EACnC;AAEA,OAAK,aAAa,QAAQ,QAAQ;AAClC,OAAK,aAAa,gBAAgB,SAAS,UAAU,SAAS,OAAO;AAErE,QAAM,eAAe,SAAS,cAAc,MAAM;AAClD,eAAa,YAAY;AACzB,eAAa,aAAa,QAAQ,cAAc;AAChD,eAAa,aAAa,eAAe,MAAM;AAC/C,QAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,OAAK,YAAY;AACjB,eAAa,YAAY,IAAI;AAC7B,OAAK,aAAa,cAAc,SAAS,WAAW;AAEpD,QAAM,aAAa,MAAM;AACvB,SAAK,aAAa,gBAAgB,SAAS,UAAU,SAAS,OAAO;AAAA,EACvE;AAEA,QAAM,SAAS,MAAM;AACnB,QAAI,SAAS;AAAU;AACvB,aAAS,UAAU,CAAC,SAAS;AAC7B,eAAW;AACX,aAAS,cAAc,IAAI,MAAM,SAAS,EAAE,SAAS,KAAK,CAAC,CAAC;AAC5D,aAAS,cAAc,IAAI,MAAM,UAAU,EAAE,SAAS,KAAK,CAAC,CAAC;AAAA,EAC/D;AAEA,OAAK,iBAAiB,SAAS,CAAC,UAAU;AACxC,UAAM,eAAe;AACrB,WAAO;AAAA,EACT,CAAC;AAED,OAAK,iBAAiB,WAAW,CAAC,UAAU;AAC1C,QAAI,MAAM,QAAQ,OAAO,MAAM,QAAQ,SAAS;AAC9C,YAAM,eAAe;AACrB,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AAED,WAAS,iBAAiB,UAAU,UAAU;AAChD;AAEA,SAAS,kBAAkB,MAAM;AAC/B,MAAI,KAAK,QAAQ;AAAoB;AAErC,QAAM,QAAQ,KAAK,cAAc,qBAAqB;AACtD,MAAI,CAAC;AAAO;AAEZ,OAAK,QAAQ,qBAAqB;AAElC,MAAI,UAAU,KAAK,cAAc,yBAAyB;AAC1D,MAAI,SAAS,KAAK,cAAc,yCAAyC;AACzE,MAAI,SAAS,KAAK,cAAc,kCAAkC;AAElE,MAAI,CAAC,SAAS;AACZ,cAAU,SAAS,cAAc,MAAM;AACvC,YAAQ,YAAY;AACpB,UAAM,OAAO,OAAO;AAAA,EACtB;AAEA,MAAI,CAAC,QAAQ;AACX,aAAS,SAAS,cAAc,MAAM;AACtC,WAAO,YAAY;AACnB,YAAQ,YAAY,MAAM;AAAA,EAC5B;AAEA,MAAI,MAAM,kBAAkB,QAAQ;AAClC,WAAO,YAAY,KAAK;AAAA,EAC1B;AAEA,MAAI,CAAC,QAAQ;AACX,aAAS,SAAS,cAAc,QAAQ;AACxC,YAAQ,YAAY,MAAM;AAAA,EAC5B;AAEA,QAAM,OAAO,MAAM;AACjB,UAAM,UAAU,MAAM,QAAQ,eAAe;AAE7C,QAAI,SAAS;AACX,aAAO,QAAQ;AACf,aAAO,cAAc,IAAI,SAAS;AAClC,cAAQ,QAAQ,QAAQ;AACxB,cAAQ,QAAQ,QAAQ;AACxB,aAAO,QAAQ,QAAQ;AACvB;AAAA,IACF;AAEA,WAAO,QAAQ,MAAM;AACrB,WAAO,cAAc,MAAM;AAC3B,YAAQ,QAAQ,QAAQ,MAAM;AAC9B,WAAO,QAAQ,QAAQ;AACvB,WAAO,OAAO,QAAQ;AAAA,EACxB;AAEA,OAAK;AAEL,QAAM,cAAc,MAAM;AACxB,QAAI,MAAM,QAAQ,eAAe,KAAK;AACpC,YAAM,QAAQ,aAAa;AAAA,IAC7B;AACA,SAAK;AAAA,EACP;AAEA,QAAM,iBAAiB,SAAS,aAAa,EAAE,SAAS,KAAK,CAAC;AAC9D,QAAM,iBAAiB,UAAU,aAAa,EAAE,SAAS,KAAK,CAAC;AACjE;AAEA,SAAS,aAAa,MAAM;AAC1B,MAAI,KAAK,QAAQ;AAAe;AAEhC,QAAM,0BAA0B,CAAC,aAAa;AAC5C,QAAI,KAAK,QAAQ;AAA2B;AAC5C,SAAK,QAAQ,4BAA4B;AAEzC,UAAM,aACJ,OAAO,yBAAyB,OAAO,eAAe,IAAI,GAAG,OAAO,KACpE,OAAO,yBAAyB,iBAAiB,WAAW,OAAO;AAErE,QAAI,YAAY,OAAO,YAAY,KAAK;AACtC,aAAO,eAAe,MAAM,SAAS;AAAA,QACnC,cAAc;AAAA,QACd,YAAY,WAAW;AAAA,QACvB,MAAM;AACJ,iBAAO,WAAW,IAAI,KAAK,IAAI;AAAA,QACjC;AAAA,QACA,IAAI,WAAW;AACb,qBAAW,IAAI,KAAK,MAAM,SAAS;AACnC,mBAAS;AAAA,QACX;AAAA,MACF,CAAC;AAAA,IACH;AAEA,UAAM,eAAe,IAAI,iBAAiB,CAAC,cAAc;AACvD,YAAM,eAAe,UAAU,KAAK,CAAC,aAAa;AAChD,cAAM,OAAO,SAAS;AACtB,eAAO,SAAS,WAAW,SAAS,SAAS,SAAS;AAAA,MACxD,CAAC;AACD,UAAI;AAAc,iBAAS;AAAA,IAC7B,CAAC;AACD,iBAAa,QAAQ,MAAM;AAAA,MACzB,YAAY;AAAA,MACZ,iBAAiB,CAAC,SAAS,OAAO,KAAK;AAAA,IACzC,CAAC;AAAA,EACH;AAEA,QAAM,QAAQ,KAAK,QAAQ,OAAO;AAClC,QAAM,sBAAsB,OAAO,UAAU,SAAS,cAAc;AAEpE,QAAM,UACJ,KAAK,MAAM,SAAS,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,GAAG,EAAE,CAAC;AACjE,QAAM,WAAW,GAAG,OAAO;AAC3B,OAAK,KAAK;AAEV,MAAI,qBAAqB;AACvB,UAAM,YAAY,MAAM,cAAc,MAAM;AAC5C,QAAI,aAAa,CAAC,UAAU,UAAU,SAAS,sBAAsB,GAAG;AACtE,YAAM,qBACJ,UAAU,aAAa,kBAAkB,KACzC,MAAM,aAAa,kBAAkB,KACrC;AAEF,YAAM,UAAU,SAAS,cAAc,MAAM;AAC7C,cAAQ,YAAY;AACpB,cAAQ,MAAM,UAAU;AACxB,cAAQ,MAAM,iBAAiB;AAC/B,cAAQ,MAAM,aAAa;AAE3B,YAAM,WAAW,SAAS,cAAc,MAAM;AAC9C,eAAS,cAAc,sBAAsB,UAAU;AACvD,cAAQ,YAAY,QAAQ;AAE5B,YAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,aAAO,KAAK;AACZ,aAAO,aAAa,OAAO,OAAO;AAClC,aAAO,MAAM,QACX;AACF,aAAO,MAAM,WAAW;AACxB,aAAO,cAAc,KAAK;AAC1B,cAAQ,YAAY,MAAM;AAE1B,gBAAU,cAAc;AACxB,gBAAU,YAAY,OAAO;AAE7B,YAAM,eAAe,MAAM;AACzB,eAAO,cAAc,KAAK;AAAA,MAC5B;AACA,WAAK,iBAAiB,SAAS,YAAY;AAC3C,WAAK,iBAAiB,UAAU,YAAY;AAC5C,8BAAwB,YAAY;AACpC,mBAAa;AAAA,IACf;AAAA,EACF,OAAO;AACL,QAAI,YAAY,KAAK,QAAQ,kBAAkB;AAC/C,QAAI,CAAC,WAAW;AACd,kBAAY,SAAS,cAAc,KAAK;AACxC,gBAAU,YAAY;AACtB,WAAK,YAAY,aAAa,WAAW,IAAI;AAC7C,gBAAU,YAAY,IAAI;AAAA,IAC5B;AACA,cAAU,MAAM,WAAW;AAE3B,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,WAAO,KAAK;AACZ,WAAO,aAAa,OAAO,OAAO;AAClC,WAAO,YAAY;AACnB,WAAO,aAAa,aAAa,QAAQ;AACzC,cAAU,YAAY,MAAM;AAE5B,UAAM,eAAe,MAAM;AACzB,YAAM,MAAM,WAAW,KAAK,GAAG,KAAK;AACpC,YAAM,MAAM,WAAW,KAAK,GAAG,KAAK;AACpC,YAAM,QAAQ,WAAW,KAAK,KAAK;AACnC,YAAM,OAAO,QAAQ,QAAQ,MAAM;AACnC,aAAO,MAAM,OAAO,QAAQ,MAAM,GAAG;AACrC,aAAO,cAAc,OAAO,KAAK;AAAA,IACnC;AACA,UAAM,OAAO,MAAM,OAAO,UAAU,IAAI,SAAS;AACjD,UAAM,OAAO,MAAM,OAAO,UAAU,OAAO,SAAS;AACpD,SAAK,iBAAiB,SAAS,YAAY;AAC3C,SAAK,iBAAiB,eAAe,IAAI;AACzC,SAAK,iBAAiB,aAAa,IAAI;AACvC,SAAK,iBAAiB,gBAAgB,IAAI;AAC1C,SAAK,iBAAiB,SAAS,IAAI;AACnC,SAAK,iBAAiB,QAAQ,IAAI;AAClC,SAAK,iBAAiB,UAAU,YAAY;AAC5C,4BAAwB,YAAY;AACpC,iBAAa;AAAA,EACf;AAEA,OAAK,QAAQ,gBAAgB;AAC/B;AAEA,SAAS,gBAAgB,MAAM;AAC7B,MAAI,KAAK,QAAQ;AAAkB;AACnC,OAAK,QAAQ,mBAAmB;AAEhC,QAAM,uBAAuB,CAAC,UAAU;AACtC,QAAI;AACJ,QAAI,MAAM,QAAQ,eAAe,GAAG;AAElC,cAAQ,MAAM,QAAQ,eAAe,EAAE,cAAc,QAAQ;AAAA,IAC/D,OAAO;AACL,cAAQ,MAAM,QAAQ,OAAO;AAAA,IAC/B;AACA,QAAI,CAAC;AAAO;AAEZ,QAAI,MAAM,cAAc,oBAAoB;AAAG;AAE/C,UAAM,WAAW,SAAS,cAAc,MAAM;AAC9C,aAAS,UAAU,IAAI,mBAAmB;AAC1C,aAAS,cAAc;AACvB,aAAS,MAAM,aAAa;AAE5B,UAAM,YAAY,MAAM,cAAc,oBAAoB;AAC1D,QAAI,WAAW;AACb,gBAAU,YAAY,QAAQ;AAAA,IAChC,OAAO;AACL,YAAM,QAAQ,MAAM,cAAc,yBAAyB;AAC3D,UAAI,OAAO;AACT,cAAM,aAAa,UAAU,KAAK;AAAA,MACpC,OAAO;AACL,cAAM,YAAY,QAAQ;AAAA,MAC5B;AAAA,IACF;AAEA,UAAM,OAAO,MAAM,QAAQ,MAAM;AACjC,QAAI,QAAQ,CAAC,KAAK,cAAc,kBAAkB,GAAG;AACnD,YAAM,SAAS,SAAS,cAAc,OAAO;AAC7C,aAAO,UAAU,IAAI,iBAAiB;AACtC,aAAO,cAAc,IAAI,mBAAmB;AAC5C,WAAK;AAAA,QACH;AAAA,QACA,KAAK,cAAc,eAAe,KAAK,KAAK;AAAA,MAC9C;AAAA,IACF;AAAA,EACF;AAEA,OAAK,iBAAiB,YAAY,EAAE,QAAQ,CAAC,UAAU;AACrD,yBAAqB,KAAK;AAAA,EAC5B,CAAC;AACH;AAEA,SAAS,iBAAiB,MAAM;AAC9B,MAAI,KAAK,QAAQ;AAAmB;AACpC,OAAK,QAAQ,oBAAoB;AAEjC,OAAK,UAAU,IAAI,QAAQ,aAAa,SAAS;AAEjD,QAAM,WAAW,SAAS,cAAc,OAAO;AAC/C,WAAS,OAAO;AAChB,WAAS,cAAc,IAAI,aAAa;AACxC,WAAS,UAAU,IAAI,cAAc,UAAU;AAC/C,WAAS,MAAM,QAAQ;AAEvB,QAAM,gBAAgB,MACpB,KAAK,cAAc,6CAA6C;AAElE,OAAK,YAAY,QAAQ;AACzB,WAAS,iBAAiB,WAAW,CAAC,UAAU;AAC9C,QAAI,MAAM,QAAQ,WAAW,MAAM,QAAQ,OAAO;AAChD,YAAM,QAAQ,SAAS,MAAM,KAAK;AAClC,UAAI,OAAO;AACT,cAAM,eAAe;AAErB,cAAM,aAAa,cAAc;AACjC,cAAM,OAAO,YAAY,SAAS,UAAU,UAAU;AACtD,cAAM,KAAK,cAAc,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,GAAG,EAAE,CAAC;AACpE,cAAM,QAAQ,SAAS,cAAc,OAAO;AAE5C,cAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,aAAK,aAAa,cAAc,EAAE;AAClC,aAAK,cAAc;AAEnB,cAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,cAAM,OAAO;AACb,cAAM,OACJ,YAAY,QAAQ,KAAK,aAAa,WAAW,KAAK;AACxD,cAAM,QAAQ;AACd,cAAM,KAAK;AAEX,cAAM,YAAY,IAAI;AACtB,cAAM,YAAY,KAAK;AAEvB,aAAK,aAAa,OAAO,QAAQ;AACjC,iBAAS,QAAQ;AAAA,MACnB;AAAA,IACF,WAAW,MAAM,QAAQ,eAAe,SAAS,UAAU,IAAI;AAC7D,YAAM,eAAe;AACrB,YAAM,SAAS,KAAK,iBAAiB,OAAO;AAC5C,UAAI,OAAO,SAAS,GAAG;AACrB,cAAM,YAAY,OAAO,OAAO,SAAS,CAAC;AAC1C,kBAAU,OAAO;AAAA,MACnB;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEA,SAAS,YAAY,MAAM;AACzB,MAAI,KAAK,QAAQ;AAAc;AAC/B,OAAK,QAAQ,eAAe;AAE5B,MAAI,CAAC,KAAK,aAAa,UAAU,GAAG;AAClC,SAAK,aAAa,YAAY,GAAG;AAAA,EACnC;AACA,MAAI,CAAC,KAAK,aAAa,MAAM,GAAG;AAC9B,SAAK,aAAa,QAAQ,QAAQ;AAAA,EACpC;AAEA,QAAM,WAAW,MAAM;AACrB,UAAM,SAAS,KAAK,aAAa,gBAAgB,MAAM;AACvD,SAAK,aAAa,iBAAiB,SAAS,SAAS,OAAO;AAAA,EAC9D;AAEA,QAAM,aAAa,MAAM;AACvB,UAAM,SAAS,KAAK,aAAa,gBAAgB,MAAM;AACvD,SAAK,aAAa,kBAAkB,SAAS,UAAU,MAAM;AAC7D,aAAS;AAAA,EACX;AAEA,OAAK,iBAAiB,SAAS,CAAC,UAAU;AACxC,QAAI,MAAM;AAAkB;AAC5B,eAAW;AAAA,EACb,CAAC;AAED,OAAK,iBAAiB,WAAW,CAAC,UAAU;AAC1C,QAAI,MAAM,QAAQ,OAAO,MAAM,QAAQ,SAAS;AAC9C,YAAM,eAAe;AACrB,iBAAW;AAAA,IACb;AAAA,EACF,CAAC;AAED,WAAS;AACX;AAEA,SAAS,qBAAqB,MAAM;AAClC,MAAI,KAAK,QAAQ;AAAoB;AACrC,OAAK,QAAQ,qBAAqB;AAElC,MAAI,eAAe;AACnB,MAAI,YAAY;AAEhB,QAAM,WAAW,IAAI,iBAAiB,CAAC,cAAc;AACnD,cAAU,QAAQ,CAAC,aAAa;AAC9B,UAAI,SAAS,kBAAkB,SAAS;AACtC,cAAM,aAAa,KAAK,UAAU,SAAS,aAAa;AACxD,cAAM,OAAO,KAAK,cAAc,UAAU;AAE1C,YAAI,YAAY;AACd,cAAI,MAAM;AACR,gBAAI,CAAC,cAAc;AACjB,6BAAe,KAAK,aAAa,MAAM;AAAA,YACzC;AACA,iBAAK,aAAa,QAAQ,cAAc;AAAA,UAC1C,OAAO;AACL,kBAAM,UAAU,SAAS,cAAc,UAAU;AACjD,oBAAQ,aAAa,QAAQ,cAAc;AAC3C,oBAAQ,aAAa,QAAQ,IAAI;AACjC,iBAAK,aAAa,SAAS,KAAK,UAAU;AAC1C,wBAAY;AAAA,UACd;AAAA,QACF,WAAW,SAAS,UAAU,SAAS,aAAa,GAAG;AACrD,cAAI,MAAM;AACR,gBAAI,WAAW;AACb,mBAAK,OAAO;AACZ,0BAAY;AAAA,YACd,WAAW,cAAc;AACvB,mBAAK,aAAa,QAAQ,YAAY;AACtC,6BAAe;AAAA,YACjB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,WAAS,QAAQ,MAAM;AAAA,IACrB,YAAY;AAAA,IACZ,iBAAiB,CAAC,OAAO;AAAA,IACzB,mBAAmB;AAAA,EACrB,CAAC;AACH;AAOA,IAAM,kBAAkB,oBAAI,IAAI;AAAA,EAC9B,CAAC,cAAc,gBAAgB;AAAA,EAC/B,CAAC,sBAAsB,eAAe;AAAA,EACtC,CAAC,sBAAsB,aAAa;AAAA,EACpC,CAAC,qBAAqB,iBAAiB;AAAA,EACvC,CAAC,uBAAuB,YAAY;AAAA,EACpC,CAAC,uBAAuB,eAAe;AAAA,EACvC,CAAC,mCAAmC,gBAAgB;AAAA,EACpD,CAAC,eAAe,WAAW;AAAA,EAC3B,CAAC,4BAA4B,oBAAoB;AACnD,CAAC;AAQM,IAAM,sBAAsB,oBAAoB,IAAI,CAAC,UAAU;AAAA,EACpE,GAAG;AAAA,EACH,KAAK,gBAAgB,IAAI,KAAK,QAAQ,MAAM,MAAM;AAAA,EAAC;AACrD,EAAE;",
|
|
6
|
-
"names": ["normalized", "scopedLocale", "translated", "translatedText"]
|
|
7
|
-
}
|