@pure-ds/core 0.7.48 → 0.7.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/types/pds.d.ts +7 -5
  2. package/dist/types/public/assets/pds/components/pds-toaster.d.ts +4 -1
  3. package/dist/types/public/assets/pds/components/pds-toaster.d.ts.map +1 -1
  4. package/dist/types/src/js/common/toast.d.ts +9 -0
  5. package/dist/types/src/js/common/toast.d.ts.map +1 -1
  6. package/package.json +1 -1
  7. package/public/assets/js/app.js +2131 -5
  8. package/public/assets/js/app.js.map +7 -0
  9. package/public/assets/js/lit.js +1031 -3
  10. package/public/assets/js/lit.js.map +7 -0
  11. package/public/assets/js/pds-ask.js +464 -9
  12. package/public/assets/js/pds-ask.js.map +7 -0
  13. package/public/assets/js/pds-autocomplete.js +639 -7
  14. package/public/assets/js/pds-autocomplete.js.map +7 -0
  15. package/public/assets/js/pds-enhancers.js +1471 -1
  16. package/public/assets/js/pds-enhancers.js.map +7 -0
  17. package/public/assets/js/pds-manager.js +17568 -3384
  18. package/public/assets/js/pds-manager.js.map +7 -0
  19. package/public/assets/js/pds-toast.js +30 -1
  20. package/public/assets/js/pds-toast.js.map +7 -0
  21. package/public/assets/js/pds.js +1969 -2
  22. package/public/assets/js/pds.js.map +7 -0
  23. package/public/assets/pds/components/pds-toaster.js +25 -7
  24. package/public/assets/pds/core/pds-ask.js +464 -9
  25. package/public/assets/pds/core/pds-autocomplete.js +639 -7
  26. package/public/assets/pds/core/pds-enhancers.js +1471 -1
  27. package/public/assets/pds/core/pds-manager.js +17568 -3384
  28. package/public/assets/pds/core/pds-toast.js +30 -1
  29. package/public/assets/pds/core.js +1969 -2
  30. package/public/assets/pds/external/lit.js +1031 -3
  31. package/src/js/common/toast.js +8 -0
  32. package/src/js/pds-core/pds-generator.js +1 -1
  33. package/src/js/pds.d.ts +7 -5
@@ -0,0 +1,7 @@
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": "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",
6
+ "names": ["normalized", "scopedLocale", "translated", "translatedText"]
7
+ }