@digdir/designsystemet-web 1.13.3 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"invoker.cjs","names":[],"sources":["../../../../../../node_modules/.pnpm/invokers-polyfill@1.0.2_patch_hash=d5677be15320f04cdc552d82cb4a79242bd1cf8b26bcbb0a13e1153e7bed3b5a/node_modules/invokers-polyfill/invoker.js"],"sourcesContent":["export function isSupported() {\n return (\n typeof HTMLButtonElement !== \"undefined\" &&\n \"command\" in HTMLButtonElement.prototype &&\n \"source\" in ((globalThis.CommandEvent || {}).prototype || {})\n );\n}\n\nexport function isPolyfilled() {\n return !/native code/i.test((globalThis.CommandEvent || {}).toString());\n}\n\nexport function apply() {\n // XXX: Invoker Buttons used to dispatch 'invoke' events instead of\n // 'command' events. We should ensure to prevent 'invoke' events being\n // fired in those browsers.\n // XXX: https://bugs.chromium.org/p/chromium/issues/detail?id=1523183\n // Chrome will dispatch invoke events even with the flag disabled; so\n // we need to capture those to prevent duplicate events.\n document.addEventListener(\n \"invoke\",\n (e) => {\n if (e.type == \"invoke\" && e.isTrusted) {\n e.stopImmediatePropagation();\n e.preventDefault();\n }\n },\n true,\n );\n document.addEventListener(\n \"command\",\n (e) => {\n if (e.type == \"command\" && e.isTrusted) {\n e.stopImmediatePropagation();\n e.preventDefault();\n }\n },\n true,\n );\n\n function enumerate(obj, key, enumerable = true) {\n Object.defineProperty(obj, key, {\n ...Object.getOwnPropertyDescriptor(obj, key),\n enumerable,\n });\n }\n\n function getRootNode(node) {\n if (node && typeof node.getRootNode === \"function\") {\n return node.getRootNode();\n }\n if (node && node.parentNode) return getRootNode(node.parentNode);\n return node;\n }\n\n const commandEventSourceElements = new WeakMap();\n const commandEventActions = new WeakMap();\n\n class CommandEvent extends Event {\n constructor(type, invokeEventInit = {}) {\n super(type, invokeEventInit);\n const { source, command } = invokeEventInit;\n if (source != null && !(source instanceof Element)) {\n throw new TypeError(`source must be an element`);\n }\n commandEventSourceElements.set(this, source || null);\n commandEventActions.set(\n this,\n command !== undefined ? String(command) : \"\",\n );\n }\n\n get [Symbol.toStringTag]() {\n return \"CommandEvent\";\n }\n\n get source() {\n if (!commandEventSourceElements.has(this)) {\n throw new TypeError(\"illegal invocation\");\n }\n const source = commandEventSourceElements.get(this);\n if (!(source instanceof Element)) return null;\n const invokerRoot = getRootNode(source);\n if (invokerRoot !== getRootNode(this.target || document)) {\n return invokerRoot.host;\n }\n return source;\n }\n\n get command() {\n if (!commandEventActions.has(this)) {\n throw new TypeError(\"illegal invocation\");\n }\n return commandEventActions.get(this);\n }\n }\n enumerate(CommandEvent.prototype, \"source\");\n enumerate(CommandEvent.prototype, \"command\");\n\n const invokerAssociatedElements = new WeakMap();\n\n function applyInvokerMixin(ElementClass) {\n Object.defineProperties(ElementClass.prototype, {\n commandForElement: {\n enumerable: true,\n configurable: true,\n set(targetElement) {\n if (targetElement === null) {\n this.removeAttribute(\"commandfor\");\n invokerAssociatedElements.delete(this);\n } else if (!(targetElement instanceof Element)) {\n throw new TypeError(`commandForElement must be an element or null`);\n } else {\n this.setAttribute(\"commandfor\", \"\");\n const targetRootNode = getRootNode(targetElement);\n const thisRootNode = getRootNode(this);\n if (\n thisRootNode === targetRootNode ||\n targetRootNode === this.ownerDocument\n ) {\n invokerAssociatedElements.set(this, targetElement);\n } else {\n invokerAssociatedElements.delete(this);\n }\n }\n },\n get() {\n if (this.localName !== \"button\") {\n return null;\n }\n if (this.disabled) {\n return null;\n }\n if (this.form && this.getAttribute(\"type\") !== \"button\") {\n console.warn(\n \"Element with `commandFor` is a form participant. \" +\n \"It should explicitly set `type=button` in order for `commandFor` to work\",\n );\n return null;\n }\n const targetElement = invokerAssociatedElements.get(this);\n if (targetElement) {\n if (targetElement.isConnected) {\n return targetElement;\n } else {\n invokerAssociatedElements.delete(this);\n return null;\n }\n }\n const root = getRootNode(this);\n const idref = this.getAttribute(\"commandfor\");\n if (\n (root instanceof Document || root instanceof ShadowRoot) &&\n idref\n ) {\n return root.getElementById(idref) || null;\n }\n return null;\n },\n },\n command: {\n enumerable: true,\n configurable: true,\n get() {\n const value = this.getAttribute(\"command\") || \"\";\n if (value.startsWith(\"--\")) return value;\n const valueLower = value.toLowerCase();\n switch (valueLower) {\n case \"show-modal\":\n case \"request-close\":\n case \"close\":\n case \"toggle-popover\":\n case \"hide-popover\":\n case \"show-popover\":\n return valueLower;\n }\n return \"\";\n },\n set(value) {\n this.setAttribute(\"command\", value);\n },\n },\n });\n }\n\n const onHandlers = new WeakMap();\n Object.defineProperties(HTMLElement.prototype, {\n oncommand: {\n enumerable: true,\n configurable: true,\n get() {\n oncommandObserver.takeRecords();\n return onHandlers.get(this) || null;\n },\n set(handler) {\n const existing = onHandlers.get(this) || null;\n if (existing) {\n this.removeEventListener(\"command\", existing);\n }\n onHandlers.set(\n this,\n typeof handler === \"object\" || typeof handler === \"function\"\n ? handler\n : null,\n );\n if (typeof handler == \"function\") {\n this.addEventListener(\"command\", handler);\n }\n },\n },\n });\n function applyOnCommandHandler(els) {\n for (const el of els) {\n el.oncommand = new Function(\"event\", el.getAttribute(\"oncommand\"));\n }\n }\n const oncommandObserver = new MutationObserver((records) => {\n for (const record of records) {\n const { target } = record;\n if (record.type === \"childList\") {\n applyOnCommandHandler(target.querySelectorAll(\"[oncommand]\"));\n } else {\n applyOnCommandHandler([target]);\n }\n }\n });\n oncommandObserver.observe(document, {\n subtree: true,\n childList: true,\n attributeFilter: [\"oncommand\"],\n });\n applyOnCommandHandler(document.querySelectorAll(\"[oncommand]\"));\n\n const processedEvents = new WeakSet();\n\n function handleInvokerActivation(event) {\n if (processedEvents.has(event)) return;\n\n processedEvents.add(event);\n\n if (event.defaultPrevented) return;\n if (event.type !== \"click\") return;\n const source = event.composedPath().find((el) => el.matches?.(\"button[commandfor], button[command]\"));\n if (!source) return;\n\n if (source.form && source.getAttribute(\"type\") !== \"button\") {\n event.preventDefault();\n throw new Error(\n \"Element with `commandFor` is a form participant. \" +\n \"It should explicitly set `type=button` in order for `commandFor` to work. \" +\n \"In order for it to act as a Submit button, it must not have command or commandfor attributes\",\n );\n }\n\n if (source.hasAttribute(\"command\") !== source.hasAttribute(\"commandfor\")) {\n const attr = source.hasAttribute(\"command\") ? \"command\" : \"commandfor\";\n const missing = source.hasAttribute(\"command\") ? \"commandfor\" : \"command\";\n throw new Error(\n `Element with ${attr} attribute must also have a ${missing} attribute to function.`,\n );\n }\n\n if (\n source.command !== \"show-popover\" &&\n source.command !== \"hide-popover\" &&\n source.command !== \"toggle-popover\" &&\n source.command !== \"show-modal\" &&\n source.command !== \"request-close\" &&\n source.command !== \"close\" &&\n !source.command.startsWith(\"--\")\n ) {\n console.warn(\n `\"${source.command}\" is not a valid command value. Custom commands must begin with --`,\n );\n return;\n }\n\n const invokee = source.commandForElement;\n if (!invokee) return;\n const invokeEvent = new CommandEvent(\"command\", {\n command: source.command,\n source,\n cancelable: true,\n });\n invokee.dispatchEvent(invokeEvent);\n if (invokeEvent.defaultPrevented) return;\n\n const command = invokeEvent.command.toLowerCase();\n\n if (invokee.popover) {\n const canShow = !invokee.matches(\":popover-open\");\n const shouldShow =\n canShow && (command === \"toggle-popover\" || command === \"show-popover\");\n const shouldHide = !canShow && command === \"hide-popover\";\n\n if (shouldShow) {\n invokee.showPopover({ source });\n } else if (shouldHide) {\n invokee.hidePopover();\n }\n } else if (invokee.localName === \"dialog\") {\n const canShow = !invokee.hasAttribute(\"open\");\n\n if (canShow && command == \"show-modal\") {\n invokee.showModal();\n } else if (!canShow && command == \"close\") {\n invokee.close(source.value ? source.value : undefined);\n } else if (!canShow && command == \"request-close\") {\n // requestClose is only supported from Safari 18.4, so we polyfill it on older browsers\n if (!HTMLDialogElement.prototype.requestClose) {\n HTMLDialogElement.prototype.requestClose = function () {\n const cancelEvent = new Event(\"cancel\", { cancelable: true });\n this.dispatchEvent(cancelEvent);\n\n if (!cancelEvent.defaultPrevented) {\n this.close();\n }\n };\n }\n\n invokee.requestClose(source.value ? source.value : undefined);\n }\n }\n }\n\n function setupInvokeListeners(target) {\n target.addEventListener(\"click\", handleInvokerActivation, true);\n }\n\n function observeShadowRoots(ElementClass, callback) {\n const attachShadow = ElementClass.prototype.attachShadow;\n ElementClass.prototype.attachShadow = function (init) {\n const shadow = attachShadow.call(this, init);\n callback(shadow);\n return shadow;\n };\n const attachInternals = ElementClass.prototype.attachInternals;\n ElementClass.prototype.attachInternals = function () {\n const internals = attachInternals.call(this);\n if (internals.shadowRoot) callback(internals.shadowRoot);\n return internals;\n };\n }\n\n applyInvokerMixin(HTMLButtonElement);\n\n observeShadowRoots(HTMLElement, (shadow) => {\n setupInvokeListeners(shadow);\n oncommandObserver.observe(shadow, { attributeFilter: [\"oncommand\"] });\n applyOnCommandHandler(shadow.querySelectorAll(\"[oncommand]\"));\n });\n\n setupInvokeListeners(document);\n\n Object.assign(globalThis, { CommandEvent });\n}\n"],"x_google_ignoreList":[0],"mappings":"AAAA,SAAgB,GAAc,CAC5B,OACE,OAAO,kBAAsB,KAC7B,YAAa,kBAAkB,WAC/B,YAAc,WAAW,cAAgB,EAAE,EAAE,WAAa,EAAE,EAQhE,SAAgB,GAAQ,CAOtB,SAAS,iBACP,SACC,GAAM,CACD,EAAE,MAAQ,UAAY,EAAE,YAC1B,EAAE,0BAA0B,CAC5B,EAAE,gBAAgB,GAGtB,GACD,CACD,SAAS,iBACP,UACC,GAAM,CACD,EAAE,MAAQ,WAAa,EAAE,YAC3B,EAAE,0BAA0B,CAC5B,EAAE,gBAAgB,GAGtB,GACD,CAED,SAAS,EAAU,EAAK,EAAK,EAAa,GAAM,CAC9C,OAAO,eAAe,EAAK,EAAK,CAC9B,GAAG,OAAO,yBAAyB,EAAK,EAAI,CAC5C,aACD,CAAC,CAGJ,SAAS,EAAY,EAAM,CAKzB,OAJI,GAAQ,OAAO,EAAK,aAAgB,WAC/B,EAAK,aAAa,CAEvB,GAAQ,EAAK,WAAmB,EAAY,EAAK,WAAW,CACzD,EAGT,IAAM,EAA6B,IAAI,QACjC,EAAsB,IAAI,QAEhC,MAAM,UAAqB,KAAM,CAC/B,YAAY,EAAM,EAAkB,EAAE,CAAE,CACtC,MAAM,EAAM,EAAgB,CAC5B,GAAM,CAAE,SAAQ,WAAY,EAC5B,GAAI,GAAU,MAAQ,EAAE,aAAkB,SACxC,MAAU,UAAU,4BAA4B,CAElD,EAA2B,IAAI,KAAM,GAAU,KAAK,CACpD,EAAoB,IAClB,KACA,IAAY,IAAA,GAA8B,GAAlB,OAAO,EAAQ,CACxC,CAGH,IAAK,OAAO,cAAe,CACzB,MAAO,eAGT,IAAI,QAAS,CACX,GAAI,CAAC,EAA2B,IAAI,KAAK,CACvC,MAAU,UAAU,qBAAqB,CAE3C,IAAM,EAAS,EAA2B,IAAI,KAAK,CACnD,GAAI,EAAE,aAAkB,SAAU,OAAO,KACzC,IAAM,EAAc,EAAY,EAAO,CAIvC,OAHI,IAAgB,EAAY,KAAK,QAAU,SAAS,CAGjD,EAFE,EAAY,KAKvB,IAAI,SAAU,CACZ,GAAI,CAAC,EAAoB,IAAI,KAAK,CAChC,MAAU,UAAU,qBAAqB,CAE3C,OAAO,EAAoB,IAAI,KAAK,EAGxC,EAAU,EAAa,UAAW,SAAS,CAC3C,EAAU,EAAa,UAAW,UAAU,CAE5C,IAAM,EAA4B,IAAI,QAEtC,SAAS,EAAkB,EAAc,CACvC,OAAO,iBAAiB,EAAa,UAAW,CAC9C,kBAAmB,CACjB,WAAY,GACZ,aAAc,GACd,IAAI,EAAe,CACjB,GAAI,IAAkB,KACpB,KAAK,gBAAgB,aAAa,CAClC,EAA0B,OAAO,KAAK,SAC3B,aAAyB,QAE/B,CACL,KAAK,aAAa,aAAc,GAAG,CACnC,IAAM,EAAiB,EAAY,EAAc,CAC5B,EAAY,KAAK,GAEnB,GACjB,IAAmB,KAAK,cAExB,EAA0B,IAAI,KAAM,EAAc,CAElD,EAA0B,OAAO,KAAK,MAXxC,MAAU,UAAU,+CAA+C,EAevE,KAAM,CAIJ,GAHI,KAAK,YAAc,UAGnB,KAAK,SACP,OAAO,KAET,GAAI,KAAK,MAAQ,KAAK,aAAa,OAAO,GAAK,SAK7C,OAJA,QAAQ,KACN,4HAED,CACM,KAET,IAAM,EAAgB,EAA0B,IAAI,KAAK,CACzD,GAAI,EAKA,OAJE,EAAc,YACT,GAEP,EAA0B,OAAO,KAAK,CAC/B,MAGX,IAAM,EAAO,EAAY,KAAK,CACxB,EAAQ,KAAK,aAAa,aAAa,CAO7C,OALG,aAAgB,UAAY,aAAgB,aAC7C,GAEO,EAAK,eAAe,EAAM,EAE5B,MAEV,CACD,QAAS,CACP,WAAY,GACZ,aAAc,GACd,KAAM,CACJ,IAAM,EAAQ,KAAK,aAAa,UAAU,EAAI,GAC9C,GAAI,EAAM,WAAW,KAAK,CAAE,OAAO,EACnC,IAAM,EAAa,EAAM,aAAa,CACtC,OAAQ,EAAR,CACE,IAAK,aACL,IAAK,gBACL,IAAK,QACL,IAAK,iBACL,IAAK,eACL,IAAK,eACH,OAAO,EAEX,MAAO,IAET,IAAI,EAAO,CACT,KAAK,aAAa,UAAW,EAAM,EAEtC,CACF,CAAC,CAGJ,IAAM,EAAa,IAAI,QACvB,OAAO,iBAAiB,YAAY,UAAW,CAC7C,UAAW,CACT,WAAY,GACZ,aAAc,GACd,KAAM,CAEJ,OADA,EAAkB,aAAa,CACxB,EAAW,IAAI,KAAK,EAAI,MAEjC,IAAI,EAAS,CACX,IAAM,EAAW,EAAW,IAAI,KAAK,EAAI,KACrC,GACF,KAAK,oBAAoB,UAAW,EAAS,CAE/C,EAAW,IACT,KACA,OAAO,GAAY,UAAY,OAAO,GAAY,WAC9C,EACA,KACL,CACG,OAAO,GAAW,YACpB,KAAK,iBAAiB,UAAW,EAAQ,EAG9C,CACF,CAAC,CACF,SAAS,EAAsB,EAAK,CAClC,IAAK,IAAM,KAAM,EACf,EAAG,UAAgB,SAAS,QAAS,EAAG,aAAa,YAAY,CAAC,CAGtE,IAAM,EAAoB,IAAI,iBAAkB,GAAY,CAC1D,IAAK,IAAM,KAAU,EAAS,CAC5B,GAAM,CAAE,UAAW,EACf,EAAO,OAAS,YAClB,EAAsB,EAAO,iBAAiB,cAAc,CAAC,CAE7D,EAAsB,CAAC,EAAO,CAAC,GAGnC,CACF,EAAkB,QAAQ,SAAU,CAClC,QAAS,GACT,UAAW,GACX,gBAAiB,CAAC,YAAY,CAC/B,CAAC,CACF,EAAsB,SAAS,iBAAiB,cAAc,CAAC,CAE/D,IAAM,EAAkB,IAAI,QAE5B,SAAS,EAAwB,EAAO,CAMtC,GALI,EAAgB,IAAI,EAAM,GAE9B,EAAgB,IAAI,EAAM,CAEtB,EAAM,mBACN,EAAM,OAAS,QAAS,OAC5B,IAAM,EAAS,EAAM,cAAc,CAAC,KAAM,GAAO,EAAG,UAAU,sCAAsC,CAAC,CACrG,GAAI,CAAC,EAAQ,OAEb,GAAI,EAAO,MAAQ,EAAO,aAAa,OAAO,GAAK,SAEjD,MADA,EAAM,gBAAgB,CACZ,MACR,0NAGD,CAGH,GAAI,EAAO,aAAa,UAAU,GAAK,EAAO,aAAa,aAAa,CAAE,CACxE,IAAM,EAAO,EAAO,aAAa,UAAU,CAAG,UAAY,aACpD,EAAU,EAAO,aAAa,UAAU,CAAG,aAAe,UAChE,MAAU,MACR,gBAAgB,EAAK,8BAA8B,EAAQ,yBAC5D,CAGH,GACE,EAAO,UAAY,gBACnB,EAAO,UAAY,gBACnB,EAAO,UAAY,kBACnB,EAAO,UAAY,cACnB,EAAO,UAAY,iBACnB,EAAO,UAAY,SACnB,CAAC,EAAO,QAAQ,WAAW,KAAK,CAChC,CACA,QAAQ,KACN,IAAI,EAAO,QAAQ,oEACpB,CACD,OAGF,IAAM,EAAU,EAAO,kBACvB,GAAI,CAAC,EAAS,OACd,IAAM,EAAc,IAAI,EAAa,UAAW,CAC9C,QAAS,EAAO,QAChB,SACA,WAAY,GACb,CAAC,CAEF,GADA,EAAQ,cAAc,EAAY,CAC9B,EAAY,iBAAkB,OAElC,IAAM,EAAU,EAAY,QAAQ,aAAa,CAEjD,GAAI,EAAQ,QAAS,CACnB,IAAM,EAAU,CAAC,EAAQ,QAAQ,gBAAgB,CAE/C,IAAY,IAAY,kBAAoB,IAAY,gBAIxD,EAAQ,YAAY,CAAE,SAAQ,CAAC,CAHd,CAAC,GAAW,IAAY,gBAKzC,EAAQ,aAAa,SAEd,EAAQ,YAAc,SAAU,CACzC,IAAM,EAAU,CAAC,EAAQ,aAAa,OAAO,CAEzC,GAAW,GAAW,aACxB,EAAQ,WAAW,CACV,CAAC,GAAW,GAAW,QAChC,EAAQ,MAAM,EAAO,MAAQ,EAAO,MAAQ,IAAA,GAAU,CAC7C,CAAC,GAAW,GAAW,kBAE3B,kBAAkB,UAAU,eAC/B,kBAAkB,UAAU,aAAe,UAAY,CACrD,IAAM,EAAc,IAAI,MAAM,SAAU,CAAE,WAAY,GAAM,CAAC,CAC7D,KAAK,cAAc,EAAY,CAE1B,EAAY,kBACf,KAAK,OAAO,GAKlB,EAAQ,aAAa,EAAO,MAAQ,EAAO,MAAQ,IAAA,GAAU,GAKnE,SAAS,EAAqB,EAAQ,CACpC,EAAO,iBAAiB,QAAS,EAAyB,GAAK,CAGjE,SAAS,EAAmB,EAAc,EAAU,CAClD,IAAM,EAAe,EAAa,UAAU,aAC5C,EAAa,UAAU,aAAe,SAAU,EAAM,CACpD,IAAM,EAAS,EAAa,KAAK,KAAM,EAAK,CAE5C,OADA,EAAS,EAAO,CACT,GAET,IAAM,EAAkB,EAAa,UAAU,gBAC/C,EAAa,UAAU,gBAAkB,UAAY,CACnD,IAAM,EAAY,EAAgB,KAAK,KAAK,CAE5C,OADI,EAAU,YAAY,EAAS,EAAU,WAAW,CACjD,GAIX,EAAkB,kBAAkB,CAEpC,EAAmB,YAAc,GAAW,CAC1C,EAAqB,EAAO,CAC5B,EAAkB,QAAQ,EAAQ,CAAE,gBAAiB,CAAC,YAAY,CAAE,CAAC,CACrE,EAAsB,EAAO,iBAAiB,cAAc,CAAC,EAC7D,CAEF,EAAqB,SAAS,CAE9B,OAAO,OAAO,WAAY,CAAE,eAAc,CAAC"}
1
+ {"version":3,"file":"invoker.cjs","names":[],"sources":["../../../../../../node_modules/.pnpm/invokers-polyfill@1.0.3/node_modules/invokers-polyfill/invoker.js"],"sourcesContent":["export function isSupported() {\n return (\n typeof HTMLButtonElement !== \"undefined\" &&\n \"command\" in HTMLButtonElement.prototype &&\n \"source\" in ((globalThis.CommandEvent || {}).prototype || {})\n );\n}\n\nexport function isPolyfilled() {\n return !/native code/i.test((globalThis.CommandEvent || {}).toString());\n}\n\nexport function apply() {\n // XXX: Invoker Buttons used to dispatch 'invoke' events instead of\n // 'command' events. We should ensure to prevent 'invoke' events being\n // fired in those browsers.\n // XXX: https://bugs.chromium.org/p/chromium/issues/detail?id=1523183\n // Chrome will dispatch invoke events even with the flag disabled; so\n // we need to capture those to prevent duplicate events.\n document.addEventListener(\n \"invoke\",\n (e) => {\n if (e.type == \"invoke\" && e.isTrusted) {\n e.stopImmediatePropagation();\n e.preventDefault();\n }\n },\n true,\n );\n document.addEventListener(\n \"command\",\n (e) => {\n if (e.type == \"command\" && e.isTrusted) {\n e.stopImmediatePropagation();\n e.preventDefault();\n }\n },\n true,\n );\n\n function enumerate(obj, key, enumerable = true) {\n Object.defineProperty(obj, key, {\n ...Object.getOwnPropertyDescriptor(obj, key),\n enumerable,\n });\n }\n\n function getRootNode(node) {\n if (node && typeof node.getRootNode === \"function\") {\n return node.getRootNode();\n }\n if (node && node.parentNode) return getRootNode(node.parentNode);\n return node;\n }\n\n const commandEventSourceElements = new WeakMap();\n const commandEventActions = new WeakMap();\n\n class CommandEvent extends Event {\n constructor(type, invokeEventInit = {}) {\n super(type, invokeEventInit);\n const { source, command } = invokeEventInit;\n if (source != null && !(source instanceof Element)) {\n throw new TypeError(`source must be an element`);\n }\n commandEventSourceElements.set(this, source || null);\n commandEventActions.set(\n this,\n command !== undefined ? String(command) : \"\",\n );\n }\n\n get [Symbol.toStringTag]() {\n return \"CommandEvent\";\n }\n\n get source() {\n if (!commandEventSourceElements.has(this)) {\n throw new TypeError(\"illegal invocation\");\n }\n const source = commandEventSourceElements.get(this);\n if (!(source instanceof Element)) return null;\n const invokerRoot = getRootNode(source);\n if (invokerRoot !== getRootNode(this.target || document)) {\n return invokerRoot.host;\n }\n return source;\n }\n\n get command() {\n if (!commandEventActions.has(this)) {\n throw new TypeError(\"illegal invocation\");\n }\n return commandEventActions.get(this);\n }\n }\n enumerate(CommandEvent.prototype, \"source\");\n enumerate(CommandEvent.prototype, \"command\");\n\n const invokerAssociatedElements = new WeakMap();\n\n function applyInvokerMixin(ElementClass) {\n Object.defineProperties(ElementClass.prototype, {\n commandForElement: {\n enumerable: true,\n configurable: true,\n set(targetElement) {\n if (targetElement === null) {\n this.removeAttribute(\"commandfor\");\n invokerAssociatedElements.delete(this);\n } else if (!(targetElement instanceof Element)) {\n throw new TypeError(`commandForElement must be an element or null`);\n } else {\n this.setAttribute(\"commandfor\", \"\");\n const targetRootNode = getRootNode(targetElement);\n const thisRootNode = getRootNode(this);\n if (\n thisRootNode === targetRootNode ||\n targetRootNode === this.ownerDocument\n ) {\n invokerAssociatedElements.set(this, targetElement);\n } else {\n invokerAssociatedElements.delete(this);\n }\n }\n },\n get() {\n if (this.localName !== \"button\") {\n return null;\n }\n if (this.disabled) {\n return null;\n }\n if (this.form && this.getAttribute(\"type\") !== \"button\") {\n console.warn(\n \"Element with `commandFor` is a form participant. \" +\n \"It should explicitly set `type=button` in order for `commandFor` to work\",\n );\n return null;\n }\n const targetElement = invokerAssociatedElements.get(this);\n if (targetElement) {\n if (targetElement.isConnected) {\n return targetElement;\n } else {\n invokerAssociatedElements.delete(this);\n return null;\n }\n }\n const root = getRootNode(this);\n const idref = this.getAttribute(\"commandfor\");\n if (\n (root instanceof Document || root instanceof ShadowRoot) &&\n idref\n ) {\n return root.getElementById(idref) || null;\n }\n return null;\n },\n },\n command: {\n enumerable: true,\n configurable: true,\n get() {\n const value = this.getAttribute(\"command\") || \"\";\n if (value.startsWith(\"--\")) return value;\n const valueLower = value.toLowerCase();\n switch (valueLower) {\n case \"show-modal\":\n case \"request-close\":\n case \"close\":\n case \"toggle-popover\":\n case \"hide-popover\":\n case \"show-popover\":\n return valueLower;\n }\n return \"\";\n },\n set(value) {\n this.setAttribute(\"command\", value);\n },\n },\n });\n }\n\n const onHandlers = new WeakMap();\n Object.defineProperties(HTMLElement.prototype, {\n oncommand: {\n enumerable: true,\n configurable: true,\n get() {\n oncommandObserver.takeRecords();\n return onHandlers.get(this) || null;\n },\n set(handler) {\n const existing = onHandlers.get(this) || null;\n if (existing) {\n this.removeEventListener(\"command\", existing);\n }\n onHandlers.set(\n this,\n typeof handler === \"object\" || typeof handler === \"function\"\n ? handler\n : null,\n );\n if (typeof handler == \"function\") {\n this.addEventListener(\"command\", handler);\n }\n },\n },\n });\n function applyOnCommandHandler(els) {\n for (const el of els) {\n el.oncommand = new Function(\"event\", el.getAttribute(\"oncommand\"));\n }\n }\n const oncommandObserver = new MutationObserver((records) => {\n for (const record of records) {\n const { target } = record;\n if (record.type === \"childList\") {\n applyOnCommandHandler(target.querySelectorAll(\"[oncommand]\"));\n } else {\n applyOnCommandHandler([target]);\n }\n }\n });\n oncommandObserver.observe(document, {\n subtree: true,\n childList: true,\n attributeFilter: [\"oncommand\"],\n });\n applyOnCommandHandler(document.querySelectorAll(\"[oncommand]\"));\n\n const processedEvents = new WeakSet();\n\n function handleInvokerActivation(event) {\n if (processedEvents.has(event)) return;\n\n processedEvents.add(event);\n\n if (event.defaultPrevented) return;\n if (event.type !== \"click\") return;\n const source = event.composedPath().find((el) => el.matches?.(\"button[commandfor], button[command]\"));\n if (!source) return;\n\n if (source.form && source.getAttribute(\"type\") !== \"button\") {\n event.preventDefault();\n throw new Error(\n \"Element with `commandFor` is a form participant. \" +\n \"It should explicitly set `type=button` in order for `commandFor` to work. \" +\n \"In order for it to act as a Submit button, it must not have command or commandfor attributes\",\n );\n }\n\n if (source.hasAttribute(\"command\") !== source.hasAttribute(\"commandfor\")) {\n const attr = source.hasAttribute(\"command\") ? \"command\" : \"commandfor\";\n const missing = source.hasAttribute(\"command\") ? \"commandfor\" : \"command\";\n throw new Error(\n `Element with ${attr} attribute must also have a ${missing} attribute to function.`,\n );\n }\n\n if (\n source.command !== \"show-popover\" &&\n source.command !== \"hide-popover\" &&\n source.command !== \"toggle-popover\" &&\n source.command !== \"show-modal\" &&\n source.command !== \"request-close\" &&\n source.command !== \"close\" &&\n !source.command.startsWith(\"--\")\n ) {\n console.warn(\n `\"${source.command}\" is not a valid command value. Custom commands must begin with --`,\n );\n return;\n }\n\n const invokee = source.commandForElement;\n if (!invokee) return;\n const invokeEvent = new CommandEvent(\"command\", {\n command: source.command,\n source,\n cancelable: true,\n });\n invokee.dispatchEvent(invokeEvent);\n if (invokeEvent.defaultPrevented) return;\n\n const command = invokeEvent.command.toLowerCase();\n\n if (invokee.popover) {\n const canShow = !invokee.matches(\":popover-open\");\n const shouldShow =\n canShow && (command === \"toggle-popover\" || command === \"show-popover\");\n const shouldHide = !canShow && command === \"hide-popover\";\n\n if (shouldShow) {\n invokee.showPopover({ source });\n } else if (shouldHide) {\n invokee.hidePopover();\n }\n } else if (invokee.localName === \"dialog\") {\n const canShow = !invokee.hasAttribute(\"open\");\n\n if (canShow && command == \"show-modal\") {\n invokee.showModal();\n } else if (!canShow && command == \"close\") {\n invokee.close(source.value ? source.value : undefined);\n } else if (!canShow && command == \"request-close\") {\n // requestClose is only supported from Safari 18.4, so we polyfill it on older browsers\n if (!HTMLDialogElement.prototype.requestClose) {\n HTMLDialogElement.prototype.requestClose = function () {\n const cancelEvent = new Event(\"cancel\", { cancelable: true });\n this.dispatchEvent(cancelEvent);\n\n if (!cancelEvent.defaultPrevented) {\n this.close();\n }\n };\n }\n\n invokee.requestClose(source.value ? source.value : undefined);\n }\n }\n }\n\n function setupInvokeListeners(target) {\n target.addEventListener(\"click\", handleInvokerActivation, true);\n }\n\n function observeShadowRoots(ElementClass, callback) {\n const attachShadow = ElementClass.prototype.attachShadow;\n ElementClass.prototype.attachShadow = function (init) {\n const shadow = attachShadow.call(this, init);\n callback(shadow);\n return shadow;\n };\n const attachInternals = ElementClass.prototype.attachInternals;\n ElementClass.prototype.attachInternals = function () {\n const internals = attachInternals.call(this);\n if (internals.shadowRoot) callback(internals.shadowRoot);\n return internals;\n };\n }\n\n applyInvokerMixin(HTMLButtonElement);\n\n observeShadowRoots(HTMLElement, (shadow) => {\n setupInvokeListeners(shadow);\n oncommandObserver.observe(shadow, { attributeFilter: [\"oncommand\"] });\n applyOnCommandHandler(shadow.querySelectorAll(\"[oncommand]\"));\n });\n\n setupInvokeListeners(document);\n\n Object.assign(globalThis, { CommandEvent });\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../utils/utils.cjs`);let t=require(`@u-elements/u-combobox`);var n=class extends t.UHTMLComboboxElement{_render;_unmutate;connectedCallback(){super.connectedCallback(),this._unmutate=e.onMutation(this,r,{childList:!0}),e.on(this,`toggle`,i,e.QUICK_EVENT)}disconnectedCallback(){super.disconnectedCallback(),this._unmutate?.(),this._unmutate=this._render=void 0,e.off(this,`toggle`,i,e.QUICK_EVENT)}};const r=({control:t,list:n})=>{t&&!t.placeholder&&e.attr(t,`placeholder`,` `),t&&e.attr(t,`popovertarget`,e.useId(n)||null),n&&e.attr(n,`popover`,`manual`)},i=e=>{let t=e.currentTarget,n=e.newState===`open`&&t.control;n&&t.list?.dispatchEvent(new CustomEvent(`ds-toggle-source`,{detail:n}))};e.customElements.define(`ds-suggestion`,n),exports.DSSuggestionElement=n;
1
+ require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../utils/utils.cjs`);let t=require(`@u-elements/u-combobox`);var n=class extends t.UHTMLComboboxElement{_unmutate;connectedCallback(){super.connectedCallback(),this._unmutate=e.onMutation(this,r,{childList:!0}),e.on(this,`toggle`,i,e.QUICK_EVENT)}disconnectedCallback(){super.disconnectedCallback(),this._unmutate?.(),this._unmutate=void 0,e.off(this,`toggle`,i,e.QUICK_EVENT)}};const r=({control:t,list:n})=>{t&&!t.placeholder&&e.attr(t,`placeholder`,` `),t&&e.attr(t,`popovertarget`,e.useId(n)||null),n&&e.attr(n,`popover`,`manual`),n&&e.attr(n,`data-is-floating`,`true`)},i=e=>{let t=e.currentTarget,n=e.newState===`open`&&t.control;n&&t.list?.dispatchEvent(new CustomEvent(`ds-toggle-source`,{detail:n}))};e.customElements.define(`ds-suggestion`,n),exports.DSSuggestionElement=n;
2
2
  //# sourceMappingURL=suggestion.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"suggestion.cjs","names":["UHTMLComboboxElement","onMutation","QUICK_EVENT","useId","customElements"],"sources":["../../../src/suggestion/suggestion.ts"],"sourcesContent":["import { UHTMLComboboxElement } from '@u-elements/u-combobox';\nimport {\n attr,\n customElements,\n off,\n on,\n onMutation,\n QUICK_EVENT,\n useId,\n} from '../utils/utils';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ds-suggestion': DSSuggestionElement;\n }\n}\n\nexport class DSSuggestionElement extends UHTMLComboboxElement {\n _render?: () => void;\n _unmutate?: ReturnType<typeof onMutation>; // Using underscore instead of private fields for backwards compatibility\n\n connectedCallback() {\n super.connectedCallback();\n this._unmutate = onMutation(this, render, { childList: true }); // .control and .list are direct children of the custom element\n on(this, 'toggle', polyfillToggleSource, QUICK_EVENT);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this._unmutate?.();\n this._unmutate = this._render = undefined;\n off(this, 'toggle', polyfillToggleSource, QUICK_EVENT);\n }\n}\n\n// A non-empty placeholder attribute is required to activate the :placeholder-shown pseudo selector used in our chevron styling\nconst render = ({ control, list }: DSSuggestionElement) => {\n if (control && !control.placeholder) attr(control, 'placeholder', ' '); // .control comes from UHTMLComboboxElement\n if (control) attr(control, 'popovertarget', useId(list) || null);\n if (list) attr(list, 'popover', 'manual'); // Ensure popover attribute is set on the list\n};\n\n// Since showPopover({ source }) is not supported in all browsers yet:\nconst polyfillToggleSource = (event: Partial<ToggleEvent>) => {\n const self = event.currentTarget as DSSuggestionElement;\n const detail = event.newState === 'open' && self.control; // .control comes from UHTMLComboboxElement\n\n if (detail)\n self.list?.dispatchEvent(new CustomEvent('ds-toggle-source', { detail }));\n};\n\ncustomElements.define('ds-suggestion', DSSuggestionElement);\n"],"mappings":"2HAiBA,IAAa,EAAb,cAAyCA,EAAAA,oBAAqB,CAC5D,QACA,UAEA,mBAAoB,CAClB,MAAM,mBAAmB,CACzB,KAAK,UAAYC,EAAAA,WAAW,KAAM,EAAQ,CAAE,UAAW,GAAM,CAAC,CAC9D,EAAA,GAAG,KAAM,SAAU,EAAsBC,EAAAA,YAAY,CAEvD,sBAAuB,CACrB,MAAM,sBAAsB,CAC5B,KAAK,aAAa,CAClB,KAAK,UAAY,KAAK,QAAU,IAAA,GAChC,EAAA,IAAI,KAAM,SAAU,EAAsBA,EAAAA,YAAY,GAK1D,MAAM,GAAU,CAAE,UAAS,UAAgC,CACrD,GAAW,CAAC,EAAQ,aAAa,EAAA,KAAK,EAAS,cAAe,IAAI,CAClE,GAAS,EAAA,KAAK,EAAS,gBAAiBC,EAAAA,MAAM,EAAK,EAAI,KAAK,CAC5D,GAAM,EAAA,KAAK,EAAM,UAAW,SAAS,EAIrC,EAAwB,GAAgC,CAC5D,IAAM,EAAO,EAAM,cACb,EAAS,EAAM,WAAa,QAAU,EAAK,QAE7C,GACF,EAAK,MAAM,cAAc,IAAI,YAAY,mBAAoB,CAAE,SAAQ,CAAC,CAAC,EAG7EC,EAAAA,eAAe,OAAO,gBAAiB,EAAoB"}
1
+ {"version":3,"file":"suggestion.cjs","names":["UHTMLComboboxElement","onMutation","QUICK_EVENT","useId","customElements"],"sources":["../../../src/suggestion/suggestion.ts"],"sourcesContent":["import { UHTMLComboboxElement } from '@u-elements/u-combobox';\nimport {\n attr,\n customElements,\n off,\n on,\n onMutation,\n QUICK_EVENT,\n useId,\n} from '../utils/utils';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ds-suggestion': DSSuggestionElement;\n }\n}\n\nexport class DSSuggestionElement extends UHTMLComboboxElement {\n _unmutate?: ReturnType<typeof onMutation>; // Using underscore instead of private fields for backwards compatibility\n\n connectedCallback() {\n super.connectedCallback();\n this._unmutate = onMutation(this, render, { childList: true }); // .control and .list are direct children of the custom element\n on(this, 'toggle', polyfillToggleSource, QUICK_EVENT);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this._unmutate?.();\n this._unmutate = undefined;\n off(this, 'toggle', polyfillToggleSource, QUICK_EVENT);\n }\n}\n\n// A non-empty placeholder attribute is required to activate the :placeholder-shown pseudo selector used in our chevron styling\nconst render = ({ control, list }: DSSuggestionElement) => {\n if (control && !control.placeholder) attr(control, 'placeholder', ' '); // .control comes from UHTMLComboboxElement\n if (control) attr(control, 'popovertarget', useId(list) || null);\n if (list) attr(list, 'popover', 'manual'); // Ensure popover attribute is set on the list\n if (list) attr(list, 'data-is-floating', 'true'); // identifier for css to toggle opacity when it is placed by floating-ui.\n};\n\n// Since showPopover({ source }) is not supported in all browsers yet:\nconst polyfillToggleSource = (event: Partial<ToggleEvent>) => {\n const self = event.currentTarget as DSSuggestionElement;\n const detail = event.newState === 'open' && self.control; // .control comes from UHTMLComboboxElement\n\n if (detail)\n self.list?.dispatchEvent(new CustomEvent('ds-toggle-source', { detail }));\n};\n\ncustomElements.define('ds-suggestion', DSSuggestionElement);\n"],"mappings":"2HAiBA,IAAa,EAAb,cAAyCA,EAAAA,oBAAqB,CAC5D,UAEA,mBAAoB,CAClB,MAAM,mBAAmB,CACzB,KAAK,UAAYC,EAAAA,WAAW,KAAM,EAAQ,CAAE,UAAW,GAAM,CAAC,CAC9D,EAAA,GAAG,KAAM,SAAU,EAAsBC,EAAAA,YAAY,CAEvD,sBAAuB,CACrB,MAAM,sBAAsB,CAC5B,KAAK,aAAa,CAClB,KAAK,UAAY,IAAA,GACjB,EAAA,IAAI,KAAM,SAAU,EAAsBA,EAAAA,YAAY,GAK1D,MAAM,GAAU,CAAE,UAAS,UAAgC,CACrD,GAAW,CAAC,EAAQ,aAAa,EAAA,KAAK,EAAS,cAAe,IAAI,CAClE,GAAS,EAAA,KAAK,EAAS,gBAAiBC,EAAAA,MAAM,EAAK,EAAI,KAAK,CAC5D,GAAM,EAAA,KAAK,EAAM,UAAW,SAAS,CACrC,GAAM,EAAA,KAAK,EAAM,mBAAoB,OAAO,EAI5C,EAAwB,GAAgC,CAC5D,IAAM,EAAO,EAAM,cACb,EAAS,EAAM,WAAa,QAAU,EAAK,QAE7C,GACF,EAAK,MAAM,cAAc,IAAI,YAAY,mBAAoB,CAAE,SAAQ,CAAC,CAAC,EAG7EC,EAAAA,eAAe,OAAO,gBAAiB,EAAoB"}
@@ -342,13 +342,6 @@
342
342
  "description": "",
343
343
  "name": "DSSuggestionElement",
344
344
  "members": [
345
- {
346
- "kind": "field",
347
- "name": "_render",
348
- "type": {
349
- "text": "() => void | undefined"
350
- }
351
- },
352
345
  {
353
346
  "kind": "field",
354
347
  "name": "_unmutate",
@@ -1 +1 @@
1
- {"version":3,"file":"invoker.js","names":[],"sources":["../../../../../../node_modules/.pnpm/invokers-polyfill@1.0.2_patch_hash=d5677be15320f04cdc552d82cb4a79242bd1cf8b26bcbb0a13e1153e7bed3b5a/node_modules/invokers-polyfill/invoker.js"],"sourcesContent":["export function isSupported() {\n return (\n typeof HTMLButtonElement !== \"undefined\" &&\n \"command\" in HTMLButtonElement.prototype &&\n \"source\" in ((globalThis.CommandEvent || {}).prototype || {})\n );\n}\n\nexport function isPolyfilled() {\n return !/native code/i.test((globalThis.CommandEvent || {}).toString());\n}\n\nexport function apply() {\n // XXX: Invoker Buttons used to dispatch 'invoke' events instead of\n // 'command' events. We should ensure to prevent 'invoke' events being\n // fired in those browsers.\n // XXX: https://bugs.chromium.org/p/chromium/issues/detail?id=1523183\n // Chrome will dispatch invoke events even with the flag disabled; so\n // we need to capture those to prevent duplicate events.\n document.addEventListener(\n \"invoke\",\n (e) => {\n if (e.type == \"invoke\" && e.isTrusted) {\n e.stopImmediatePropagation();\n e.preventDefault();\n }\n },\n true,\n );\n document.addEventListener(\n \"command\",\n (e) => {\n if (e.type == \"command\" && e.isTrusted) {\n e.stopImmediatePropagation();\n e.preventDefault();\n }\n },\n true,\n );\n\n function enumerate(obj, key, enumerable = true) {\n Object.defineProperty(obj, key, {\n ...Object.getOwnPropertyDescriptor(obj, key),\n enumerable,\n });\n }\n\n function getRootNode(node) {\n if (node && typeof node.getRootNode === \"function\") {\n return node.getRootNode();\n }\n if (node && node.parentNode) return getRootNode(node.parentNode);\n return node;\n }\n\n const commandEventSourceElements = new WeakMap();\n const commandEventActions = new WeakMap();\n\n class CommandEvent extends Event {\n constructor(type, invokeEventInit = {}) {\n super(type, invokeEventInit);\n const { source, command } = invokeEventInit;\n if (source != null && !(source instanceof Element)) {\n throw new TypeError(`source must be an element`);\n }\n commandEventSourceElements.set(this, source || null);\n commandEventActions.set(\n this,\n command !== undefined ? String(command) : \"\",\n );\n }\n\n get [Symbol.toStringTag]() {\n return \"CommandEvent\";\n }\n\n get source() {\n if (!commandEventSourceElements.has(this)) {\n throw new TypeError(\"illegal invocation\");\n }\n const source = commandEventSourceElements.get(this);\n if (!(source instanceof Element)) return null;\n const invokerRoot = getRootNode(source);\n if (invokerRoot !== getRootNode(this.target || document)) {\n return invokerRoot.host;\n }\n return source;\n }\n\n get command() {\n if (!commandEventActions.has(this)) {\n throw new TypeError(\"illegal invocation\");\n }\n return commandEventActions.get(this);\n }\n }\n enumerate(CommandEvent.prototype, \"source\");\n enumerate(CommandEvent.prototype, \"command\");\n\n const invokerAssociatedElements = new WeakMap();\n\n function applyInvokerMixin(ElementClass) {\n Object.defineProperties(ElementClass.prototype, {\n commandForElement: {\n enumerable: true,\n configurable: true,\n set(targetElement) {\n if (targetElement === null) {\n this.removeAttribute(\"commandfor\");\n invokerAssociatedElements.delete(this);\n } else if (!(targetElement instanceof Element)) {\n throw new TypeError(`commandForElement must be an element or null`);\n } else {\n this.setAttribute(\"commandfor\", \"\");\n const targetRootNode = getRootNode(targetElement);\n const thisRootNode = getRootNode(this);\n if (\n thisRootNode === targetRootNode ||\n targetRootNode === this.ownerDocument\n ) {\n invokerAssociatedElements.set(this, targetElement);\n } else {\n invokerAssociatedElements.delete(this);\n }\n }\n },\n get() {\n if (this.localName !== \"button\") {\n return null;\n }\n if (this.disabled) {\n return null;\n }\n if (this.form && this.getAttribute(\"type\") !== \"button\") {\n console.warn(\n \"Element with `commandFor` is a form participant. \" +\n \"It should explicitly set `type=button` in order for `commandFor` to work\",\n );\n return null;\n }\n const targetElement = invokerAssociatedElements.get(this);\n if (targetElement) {\n if (targetElement.isConnected) {\n return targetElement;\n } else {\n invokerAssociatedElements.delete(this);\n return null;\n }\n }\n const root = getRootNode(this);\n const idref = this.getAttribute(\"commandfor\");\n if (\n (root instanceof Document || root instanceof ShadowRoot) &&\n idref\n ) {\n return root.getElementById(idref) || null;\n }\n return null;\n },\n },\n command: {\n enumerable: true,\n configurable: true,\n get() {\n const value = this.getAttribute(\"command\") || \"\";\n if (value.startsWith(\"--\")) return value;\n const valueLower = value.toLowerCase();\n switch (valueLower) {\n case \"show-modal\":\n case \"request-close\":\n case \"close\":\n case \"toggle-popover\":\n case \"hide-popover\":\n case \"show-popover\":\n return valueLower;\n }\n return \"\";\n },\n set(value) {\n this.setAttribute(\"command\", value);\n },\n },\n });\n }\n\n const onHandlers = new WeakMap();\n Object.defineProperties(HTMLElement.prototype, {\n oncommand: {\n enumerable: true,\n configurable: true,\n get() {\n oncommandObserver.takeRecords();\n return onHandlers.get(this) || null;\n },\n set(handler) {\n const existing = onHandlers.get(this) || null;\n if (existing) {\n this.removeEventListener(\"command\", existing);\n }\n onHandlers.set(\n this,\n typeof handler === \"object\" || typeof handler === \"function\"\n ? handler\n : null,\n );\n if (typeof handler == \"function\") {\n this.addEventListener(\"command\", handler);\n }\n },\n },\n });\n function applyOnCommandHandler(els) {\n for (const el of els) {\n el.oncommand = new Function(\"event\", el.getAttribute(\"oncommand\"));\n }\n }\n const oncommandObserver = new MutationObserver((records) => {\n for (const record of records) {\n const { target } = record;\n if (record.type === \"childList\") {\n applyOnCommandHandler(target.querySelectorAll(\"[oncommand]\"));\n } else {\n applyOnCommandHandler([target]);\n }\n }\n });\n oncommandObserver.observe(document, {\n subtree: true,\n childList: true,\n attributeFilter: [\"oncommand\"],\n });\n applyOnCommandHandler(document.querySelectorAll(\"[oncommand]\"));\n\n const processedEvents = new WeakSet();\n\n function handleInvokerActivation(event) {\n if (processedEvents.has(event)) return;\n\n processedEvents.add(event);\n\n if (event.defaultPrevented) return;\n if (event.type !== \"click\") return;\n const source = event.composedPath().find((el) => el.matches?.(\"button[commandfor], button[command]\"));\n if (!source) return;\n\n if (source.form && source.getAttribute(\"type\") !== \"button\") {\n event.preventDefault();\n throw new Error(\n \"Element with `commandFor` is a form participant. \" +\n \"It should explicitly set `type=button` in order for `commandFor` to work. \" +\n \"In order for it to act as a Submit button, it must not have command or commandfor attributes\",\n );\n }\n\n if (source.hasAttribute(\"command\") !== source.hasAttribute(\"commandfor\")) {\n const attr = source.hasAttribute(\"command\") ? \"command\" : \"commandfor\";\n const missing = source.hasAttribute(\"command\") ? \"commandfor\" : \"command\";\n throw new Error(\n `Element with ${attr} attribute must also have a ${missing} attribute to function.`,\n );\n }\n\n if (\n source.command !== \"show-popover\" &&\n source.command !== \"hide-popover\" &&\n source.command !== \"toggle-popover\" &&\n source.command !== \"show-modal\" &&\n source.command !== \"request-close\" &&\n source.command !== \"close\" &&\n !source.command.startsWith(\"--\")\n ) {\n console.warn(\n `\"${source.command}\" is not a valid command value. Custom commands must begin with --`,\n );\n return;\n }\n\n const invokee = source.commandForElement;\n if (!invokee) return;\n const invokeEvent = new CommandEvent(\"command\", {\n command: source.command,\n source,\n cancelable: true,\n });\n invokee.dispatchEvent(invokeEvent);\n if (invokeEvent.defaultPrevented) return;\n\n const command = invokeEvent.command.toLowerCase();\n\n if (invokee.popover) {\n const canShow = !invokee.matches(\":popover-open\");\n const shouldShow =\n canShow && (command === \"toggle-popover\" || command === \"show-popover\");\n const shouldHide = !canShow && command === \"hide-popover\";\n\n if (shouldShow) {\n invokee.showPopover({ source });\n } else if (shouldHide) {\n invokee.hidePopover();\n }\n } else if (invokee.localName === \"dialog\") {\n const canShow = !invokee.hasAttribute(\"open\");\n\n if (canShow && command == \"show-modal\") {\n invokee.showModal();\n } else if (!canShow && command == \"close\") {\n invokee.close(source.value ? source.value : undefined);\n } else if (!canShow && command == \"request-close\") {\n // requestClose is only supported from Safari 18.4, so we polyfill it on older browsers\n if (!HTMLDialogElement.prototype.requestClose) {\n HTMLDialogElement.prototype.requestClose = function () {\n const cancelEvent = new Event(\"cancel\", { cancelable: true });\n this.dispatchEvent(cancelEvent);\n\n if (!cancelEvent.defaultPrevented) {\n this.close();\n }\n };\n }\n\n invokee.requestClose(source.value ? source.value : undefined);\n }\n }\n }\n\n function setupInvokeListeners(target) {\n target.addEventListener(\"click\", handleInvokerActivation, true);\n }\n\n function observeShadowRoots(ElementClass, callback) {\n const attachShadow = ElementClass.prototype.attachShadow;\n ElementClass.prototype.attachShadow = function (init) {\n const shadow = attachShadow.call(this, init);\n callback(shadow);\n return shadow;\n };\n const attachInternals = ElementClass.prototype.attachInternals;\n ElementClass.prototype.attachInternals = function () {\n const internals = attachInternals.call(this);\n if (internals.shadowRoot) callback(internals.shadowRoot);\n return internals;\n };\n }\n\n applyInvokerMixin(HTMLButtonElement);\n\n observeShadowRoots(HTMLElement, (shadow) => {\n setupInvokeListeners(shadow);\n oncommandObserver.observe(shadow, { attributeFilter: [\"oncommand\"] });\n applyOnCommandHandler(shadow.querySelectorAll(\"[oncommand]\"));\n });\n\n setupInvokeListeners(document);\n\n Object.assign(globalThis, { CommandEvent });\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"invoker.js","names":[],"sources":["../../../../../../node_modules/.pnpm/invokers-polyfill@1.0.3/node_modules/invokers-polyfill/invoker.js"],"sourcesContent":["export function isSupported() {\n return (\n typeof HTMLButtonElement !== \"undefined\" &&\n \"command\" in HTMLButtonElement.prototype &&\n \"source\" in ((globalThis.CommandEvent || {}).prototype || {})\n );\n}\n\nexport function isPolyfilled() {\n return !/native code/i.test((globalThis.CommandEvent || {}).toString());\n}\n\nexport function apply() {\n // XXX: Invoker Buttons used to dispatch 'invoke' events instead of\n // 'command' events. We should ensure to prevent 'invoke' events being\n // fired in those browsers.\n // XXX: https://bugs.chromium.org/p/chromium/issues/detail?id=1523183\n // Chrome will dispatch invoke events even with the flag disabled; so\n // we need to capture those to prevent duplicate events.\n document.addEventListener(\n \"invoke\",\n (e) => {\n if (e.type == \"invoke\" && e.isTrusted) {\n e.stopImmediatePropagation();\n e.preventDefault();\n }\n },\n true,\n );\n document.addEventListener(\n \"command\",\n (e) => {\n if (e.type == \"command\" && e.isTrusted) {\n e.stopImmediatePropagation();\n e.preventDefault();\n }\n },\n true,\n );\n\n function enumerate(obj, key, enumerable = true) {\n Object.defineProperty(obj, key, {\n ...Object.getOwnPropertyDescriptor(obj, key),\n enumerable,\n });\n }\n\n function getRootNode(node) {\n if (node && typeof node.getRootNode === \"function\") {\n return node.getRootNode();\n }\n if (node && node.parentNode) return getRootNode(node.parentNode);\n return node;\n }\n\n const commandEventSourceElements = new WeakMap();\n const commandEventActions = new WeakMap();\n\n class CommandEvent extends Event {\n constructor(type, invokeEventInit = {}) {\n super(type, invokeEventInit);\n const { source, command } = invokeEventInit;\n if (source != null && !(source instanceof Element)) {\n throw new TypeError(`source must be an element`);\n }\n commandEventSourceElements.set(this, source || null);\n commandEventActions.set(\n this,\n command !== undefined ? String(command) : \"\",\n );\n }\n\n get [Symbol.toStringTag]() {\n return \"CommandEvent\";\n }\n\n get source() {\n if (!commandEventSourceElements.has(this)) {\n throw new TypeError(\"illegal invocation\");\n }\n const source = commandEventSourceElements.get(this);\n if (!(source instanceof Element)) return null;\n const invokerRoot = getRootNode(source);\n if (invokerRoot !== getRootNode(this.target || document)) {\n return invokerRoot.host;\n }\n return source;\n }\n\n get command() {\n if (!commandEventActions.has(this)) {\n throw new TypeError(\"illegal invocation\");\n }\n return commandEventActions.get(this);\n }\n }\n enumerate(CommandEvent.prototype, \"source\");\n enumerate(CommandEvent.prototype, \"command\");\n\n const invokerAssociatedElements = new WeakMap();\n\n function applyInvokerMixin(ElementClass) {\n Object.defineProperties(ElementClass.prototype, {\n commandForElement: {\n enumerable: true,\n configurable: true,\n set(targetElement) {\n if (targetElement === null) {\n this.removeAttribute(\"commandfor\");\n invokerAssociatedElements.delete(this);\n } else if (!(targetElement instanceof Element)) {\n throw new TypeError(`commandForElement must be an element or null`);\n } else {\n this.setAttribute(\"commandfor\", \"\");\n const targetRootNode = getRootNode(targetElement);\n const thisRootNode = getRootNode(this);\n if (\n thisRootNode === targetRootNode ||\n targetRootNode === this.ownerDocument\n ) {\n invokerAssociatedElements.set(this, targetElement);\n } else {\n invokerAssociatedElements.delete(this);\n }\n }\n },\n get() {\n if (this.localName !== \"button\") {\n return null;\n }\n if (this.disabled) {\n return null;\n }\n if (this.form && this.getAttribute(\"type\") !== \"button\") {\n console.warn(\n \"Element with `commandFor` is a form participant. \" +\n \"It should explicitly set `type=button` in order for `commandFor` to work\",\n );\n return null;\n }\n const targetElement = invokerAssociatedElements.get(this);\n if (targetElement) {\n if (targetElement.isConnected) {\n return targetElement;\n } else {\n invokerAssociatedElements.delete(this);\n return null;\n }\n }\n const root = getRootNode(this);\n const idref = this.getAttribute(\"commandfor\");\n if (\n (root instanceof Document || root instanceof ShadowRoot) &&\n idref\n ) {\n return root.getElementById(idref) || null;\n }\n return null;\n },\n },\n command: {\n enumerable: true,\n configurable: true,\n get() {\n const value = this.getAttribute(\"command\") || \"\";\n if (value.startsWith(\"--\")) return value;\n const valueLower = value.toLowerCase();\n switch (valueLower) {\n case \"show-modal\":\n case \"request-close\":\n case \"close\":\n case \"toggle-popover\":\n case \"hide-popover\":\n case \"show-popover\":\n return valueLower;\n }\n return \"\";\n },\n set(value) {\n this.setAttribute(\"command\", value);\n },\n },\n });\n }\n\n const onHandlers = new WeakMap();\n Object.defineProperties(HTMLElement.prototype, {\n oncommand: {\n enumerable: true,\n configurable: true,\n get() {\n oncommandObserver.takeRecords();\n return onHandlers.get(this) || null;\n },\n set(handler) {\n const existing = onHandlers.get(this) || null;\n if (existing) {\n this.removeEventListener(\"command\", existing);\n }\n onHandlers.set(\n this,\n typeof handler === \"object\" || typeof handler === \"function\"\n ? handler\n : null,\n );\n if (typeof handler == \"function\") {\n this.addEventListener(\"command\", handler);\n }\n },\n },\n });\n function applyOnCommandHandler(els) {\n for (const el of els) {\n el.oncommand = new Function(\"event\", el.getAttribute(\"oncommand\"));\n }\n }\n const oncommandObserver = new MutationObserver((records) => {\n for (const record of records) {\n const { target } = record;\n if (record.type === \"childList\") {\n applyOnCommandHandler(target.querySelectorAll(\"[oncommand]\"));\n } else {\n applyOnCommandHandler([target]);\n }\n }\n });\n oncommandObserver.observe(document, {\n subtree: true,\n childList: true,\n attributeFilter: [\"oncommand\"],\n });\n applyOnCommandHandler(document.querySelectorAll(\"[oncommand]\"));\n\n const processedEvents = new WeakSet();\n\n function handleInvokerActivation(event) {\n if (processedEvents.has(event)) return;\n\n processedEvents.add(event);\n\n if (event.defaultPrevented) return;\n if (event.type !== \"click\") return;\n const source = event.composedPath().find((el) => el.matches?.(\"button[commandfor], button[command]\"));\n if (!source) return;\n\n if (source.form && source.getAttribute(\"type\") !== \"button\") {\n event.preventDefault();\n throw new Error(\n \"Element with `commandFor` is a form participant. \" +\n \"It should explicitly set `type=button` in order for `commandFor` to work. \" +\n \"In order for it to act as a Submit button, it must not have command or commandfor attributes\",\n );\n }\n\n if (source.hasAttribute(\"command\") !== source.hasAttribute(\"commandfor\")) {\n const attr = source.hasAttribute(\"command\") ? \"command\" : \"commandfor\";\n const missing = source.hasAttribute(\"command\") ? \"commandfor\" : \"command\";\n throw new Error(\n `Element with ${attr} attribute must also have a ${missing} attribute to function.`,\n );\n }\n\n if (\n source.command !== \"show-popover\" &&\n source.command !== \"hide-popover\" &&\n source.command !== \"toggle-popover\" &&\n source.command !== \"show-modal\" &&\n source.command !== \"request-close\" &&\n source.command !== \"close\" &&\n !source.command.startsWith(\"--\")\n ) {\n console.warn(\n `\"${source.command}\" is not a valid command value. Custom commands must begin with --`,\n );\n return;\n }\n\n const invokee = source.commandForElement;\n if (!invokee) return;\n const invokeEvent = new CommandEvent(\"command\", {\n command: source.command,\n source,\n cancelable: true,\n });\n invokee.dispatchEvent(invokeEvent);\n if (invokeEvent.defaultPrevented) return;\n\n const command = invokeEvent.command.toLowerCase();\n\n if (invokee.popover) {\n const canShow = !invokee.matches(\":popover-open\");\n const shouldShow =\n canShow && (command === \"toggle-popover\" || command === \"show-popover\");\n const shouldHide = !canShow && command === \"hide-popover\";\n\n if (shouldShow) {\n invokee.showPopover({ source });\n } else if (shouldHide) {\n invokee.hidePopover();\n }\n } else if (invokee.localName === \"dialog\") {\n const canShow = !invokee.hasAttribute(\"open\");\n\n if (canShow && command == \"show-modal\") {\n invokee.showModal();\n } else if (!canShow && command == \"close\") {\n invokee.close(source.value ? source.value : undefined);\n } else if (!canShow && command == \"request-close\") {\n // requestClose is only supported from Safari 18.4, so we polyfill it on older browsers\n if (!HTMLDialogElement.prototype.requestClose) {\n HTMLDialogElement.prototype.requestClose = function () {\n const cancelEvent = new Event(\"cancel\", { cancelable: true });\n this.dispatchEvent(cancelEvent);\n\n if (!cancelEvent.defaultPrevented) {\n this.close();\n }\n };\n }\n\n invokee.requestClose(source.value ? source.value : undefined);\n }\n }\n }\n\n function setupInvokeListeners(target) {\n target.addEventListener(\"click\", handleInvokerActivation, true);\n }\n\n function observeShadowRoots(ElementClass, callback) {\n const attachShadow = ElementClass.prototype.attachShadow;\n ElementClass.prototype.attachShadow = function (init) {\n const shadow = attachShadow.call(this, init);\n callback(shadow);\n return shadow;\n };\n const attachInternals = ElementClass.prototype.attachInternals;\n ElementClass.prototype.attachInternals = function () {\n const internals = attachInternals.call(this);\n if (internals.shadowRoot) callback(internals.shadowRoot);\n return internals;\n };\n }\n\n applyInvokerMixin(HTMLButtonElement);\n\n observeShadowRoots(HTMLElement, (shadow) => {\n setupInvokeListeners(shadow);\n oncommandObserver.observe(shadow, { attributeFilter: [\"oncommand\"] });\n applyOnCommandHandler(shadow.querySelectorAll(\"[oncommand]\"));\n });\n\n setupInvokeListeners(document);\n\n Object.assign(globalThis, { CommandEvent });\n}\n"],"x_google_ignoreList":[0],"mappings":"AAAA,SAAgB,GAAc,CAC5B,OACE,OAAO,kBAAsB,KAC7B,YAAa,kBAAkB,WAC/B,YAAc,WAAW,cAAgB,EAAE,EAAE,WAAa,EAAE,EAQhE,SAAgB,GAAQ,CAOtB,SAAS,iBACP,SACC,GAAM,CACD,EAAE,MAAQ,UAAY,EAAE,YAC1B,EAAE,0BAA0B,CAC5B,EAAE,gBAAgB,GAGtB,GACD,CACD,SAAS,iBACP,UACC,GAAM,CACD,EAAE,MAAQ,WAAa,EAAE,YAC3B,EAAE,0BAA0B,CAC5B,EAAE,gBAAgB,GAGtB,GACD,CAED,SAAS,EAAU,EAAK,EAAK,EAAa,GAAM,CAC9C,OAAO,eAAe,EAAK,EAAK,CAC9B,GAAG,OAAO,yBAAyB,EAAK,EAAI,CAC5C,aACD,CAAC,CAGJ,SAAS,EAAY,EAAM,CAKzB,OAJI,GAAQ,OAAO,EAAK,aAAgB,WAC/B,EAAK,aAAa,CAEvB,GAAQ,EAAK,WAAmB,EAAY,EAAK,WAAW,CACzD,EAGT,IAAM,EAA6B,IAAI,QACjC,EAAsB,IAAI,QAEhC,MAAM,UAAqB,KAAM,CAC/B,YAAY,EAAM,EAAkB,EAAE,CAAE,CACtC,MAAM,EAAM,EAAgB,CAC5B,GAAM,CAAE,SAAQ,WAAY,EAC5B,GAAI,GAAU,MAAQ,EAAE,aAAkB,SACxC,MAAU,UAAU,4BAA4B,CAElD,EAA2B,IAAI,KAAM,GAAU,KAAK,CACpD,EAAoB,IAClB,KACA,IAAY,IAAA,GAA8B,GAAlB,OAAO,EAAQ,CACxC,CAGH,IAAK,OAAO,cAAe,CACzB,MAAO,eAGT,IAAI,QAAS,CACX,GAAI,CAAC,EAA2B,IAAI,KAAK,CACvC,MAAU,UAAU,qBAAqB,CAE3C,IAAM,EAAS,EAA2B,IAAI,KAAK,CACnD,GAAI,EAAE,aAAkB,SAAU,OAAO,KACzC,IAAM,EAAc,EAAY,EAAO,CAIvC,OAHI,IAAgB,EAAY,KAAK,QAAU,SAAS,CAGjD,EAFE,EAAY,KAKvB,IAAI,SAAU,CACZ,GAAI,CAAC,EAAoB,IAAI,KAAK,CAChC,MAAU,UAAU,qBAAqB,CAE3C,OAAO,EAAoB,IAAI,KAAK,EAGxC,EAAU,EAAa,UAAW,SAAS,CAC3C,EAAU,EAAa,UAAW,UAAU,CAE5C,IAAM,EAA4B,IAAI,QAEtC,SAAS,EAAkB,EAAc,CACvC,OAAO,iBAAiB,EAAa,UAAW,CAC9C,kBAAmB,CACjB,WAAY,GACZ,aAAc,GACd,IAAI,EAAe,CACjB,GAAI,IAAkB,KACpB,KAAK,gBAAgB,aAAa,CAClC,EAA0B,OAAO,KAAK,SAC3B,aAAyB,QAE/B,CACL,KAAK,aAAa,aAAc,GAAG,CACnC,IAAM,EAAiB,EAAY,EAAc,CAC5B,EAAY,KAAK,GAEnB,GACjB,IAAmB,KAAK,cAExB,EAA0B,IAAI,KAAM,EAAc,CAElD,EAA0B,OAAO,KAAK,MAXxC,MAAU,UAAU,+CAA+C,EAevE,KAAM,CAIJ,GAHI,KAAK,YAAc,UAGnB,KAAK,SACP,OAAO,KAET,GAAI,KAAK,MAAQ,KAAK,aAAa,OAAO,GAAK,SAK7C,OAJA,QAAQ,KACN,4HAED,CACM,KAET,IAAM,EAAgB,EAA0B,IAAI,KAAK,CACzD,GAAI,EAKA,OAJE,EAAc,YACT,GAEP,EAA0B,OAAO,KAAK,CAC/B,MAGX,IAAM,EAAO,EAAY,KAAK,CACxB,EAAQ,KAAK,aAAa,aAAa,CAO7C,OALG,aAAgB,UAAY,aAAgB,aAC7C,GAEO,EAAK,eAAe,EAAM,EAE5B,MAEV,CACD,QAAS,CACP,WAAY,GACZ,aAAc,GACd,KAAM,CACJ,IAAM,EAAQ,KAAK,aAAa,UAAU,EAAI,GAC9C,GAAI,EAAM,WAAW,KAAK,CAAE,OAAO,EACnC,IAAM,EAAa,EAAM,aAAa,CACtC,OAAQ,EAAR,CACE,IAAK,aACL,IAAK,gBACL,IAAK,QACL,IAAK,iBACL,IAAK,eACL,IAAK,eACH,OAAO,EAEX,MAAO,IAET,IAAI,EAAO,CACT,KAAK,aAAa,UAAW,EAAM,EAEtC,CACF,CAAC,CAGJ,IAAM,EAAa,IAAI,QACvB,OAAO,iBAAiB,YAAY,UAAW,CAC7C,UAAW,CACT,WAAY,GACZ,aAAc,GACd,KAAM,CAEJ,OADA,EAAkB,aAAa,CACxB,EAAW,IAAI,KAAK,EAAI,MAEjC,IAAI,EAAS,CACX,IAAM,EAAW,EAAW,IAAI,KAAK,EAAI,KACrC,GACF,KAAK,oBAAoB,UAAW,EAAS,CAE/C,EAAW,IACT,KACA,OAAO,GAAY,UAAY,OAAO,GAAY,WAC9C,EACA,KACL,CACG,OAAO,GAAW,YACpB,KAAK,iBAAiB,UAAW,EAAQ,EAG9C,CACF,CAAC,CACF,SAAS,EAAsB,EAAK,CAClC,IAAK,IAAM,KAAM,EACf,EAAG,UAAgB,SAAS,QAAS,EAAG,aAAa,YAAY,CAAC,CAGtE,IAAM,EAAoB,IAAI,iBAAkB,GAAY,CAC1D,IAAK,IAAM,KAAU,EAAS,CAC5B,GAAM,CAAE,UAAW,EACf,EAAO,OAAS,YAClB,EAAsB,EAAO,iBAAiB,cAAc,CAAC,CAE7D,EAAsB,CAAC,EAAO,CAAC,GAGnC,CACF,EAAkB,QAAQ,SAAU,CAClC,QAAS,GACT,UAAW,GACX,gBAAiB,CAAC,YAAY,CAC/B,CAAC,CACF,EAAsB,SAAS,iBAAiB,cAAc,CAAC,CAE/D,IAAM,EAAkB,IAAI,QAE5B,SAAS,EAAwB,EAAO,CAMtC,GALI,EAAgB,IAAI,EAAM,GAE9B,EAAgB,IAAI,EAAM,CAEtB,EAAM,mBACN,EAAM,OAAS,QAAS,OAC5B,IAAM,EAAS,EAAM,cAAc,CAAC,KAAM,GAAO,EAAG,UAAU,sCAAsC,CAAC,CACrG,GAAI,CAAC,EAAQ,OAEb,GAAI,EAAO,MAAQ,EAAO,aAAa,OAAO,GAAK,SAEjD,MADA,EAAM,gBAAgB,CACZ,MACR,0NAGD,CAGH,GAAI,EAAO,aAAa,UAAU,GAAK,EAAO,aAAa,aAAa,CAAE,CACxE,IAAM,EAAO,EAAO,aAAa,UAAU,CAAG,UAAY,aACpD,EAAU,EAAO,aAAa,UAAU,CAAG,aAAe,UAChE,MAAU,MACR,gBAAgB,EAAK,8BAA8B,EAAQ,yBAC5D,CAGH,GACE,EAAO,UAAY,gBACnB,EAAO,UAAY,gBACnB,EAAO,UAAY,kBACnB,EAAO,UAAY,cACnB,EAAO,UAAY,iBACnB,EAAO,UAAY,SACnB,CAAC,EAAO,QAAQ,WAAW,KAAK,CAChC,CACA,QAAQ,KACN,IAAI,EAAO,QAAQ,oEACpB,CACD,OAGF,IAAM,EAAU,EAAO,kBACvB,GAAI,CAAC,EAAS,OACd,IAAM,EAAc,IAAI,EAAa,UAAW,CAC9C,QAAS,EAAO,QAChB,SACA,WAAY,GACb,CAAC,CAEF,GADA,EAAQ,cAAc,EAAY,CAC9B,EAAY,iBAAkB,OAElC,IAAM,EAAU,EAAY,QAAQ,aAAa,CAEjD,GAAI,EAAQ,QAAS,CACnB,IAAM,EAAU,CAAC,EAAQ,QAAQ,gBAAgB,CAE/C,IAAY,IAAY,kBAAoB,IAAY,gBAIxD,EAAQ,YAAY,CAAE,SAAQ,CAAC,CAHd,CAAC,GAAW,IAAY,gBAKzC,EAAQ,aAAa,SAEd,EAAQ,YAAc,SAAU,CACzC,IAAM,EAAU,CAAC,EAAQ,aAAa,OAAO,CAEzC,GAAW,GAAW,aACxB,EAAQ,WAAW,CACV,CAAC,GAAW,GAAW,QAChC,EAAQ,MAAM,EAAO,MAAQ,EAAO,MAAQ,IAAA,GAAU,CAC7C,CAAC,GAAW,GAAW,kBAE3B,kBAAkB,UAAU,eAC/B,kBAAkB,UAAU,aAAe,UAAY,CACrD,IAAM,EAAc,IAAI,MAAM,SAAU,CAAE,WAAY,GAAM,CAAC,CAC7D,KAAK,cAAc,EAAY,CAE1B,EAAY,kBACf,KAAK,OAAO,GAKlB,EAAQ,aAAa,EAAO,MAAQ,EAAO,MAAQ,IAAA,GAAU,GAKnE,SAAS,EAAqB,EAAQ,CACpC,EAAO,iBAAiB,QAAS,EAAyB,GAAK,CAGjE,SAAS,EAAmB,EAAc,EAAU,CAClD,IAAM,EAAe,EAAa,UAAU,aAC5C,EAAa,UAAU,aAAe,SAAU,EAAM,CACpD,IAAM,EAAS,EAAa,KAAK,KAAM,EAAK,CAE5C,OADA,EAAS,EAAO,CACT,GAET,IAAM,EAAkB,EAAa,UAAU,gBAC/C,EAAa,UAAU,gBAAkB,UAAY,CACnD,IAAM,EAAY,EAAgB,KAAK,KAAK,CAE5C,OADI,EAAU,YAAY,EAAS,EAAU,WAAW,CACjD,GAIX,EAAkB,kBAAkB,CAEpC,EAAmB,YAAc,GAAW,CAC1C,EAAqB,EAAO,CAC5B,EAAkB,QAAQ,EAAQ,CAAE,gBAAiB,CAAC,YAAY,CAAE,CAAC,CACrE,EAAsB,EAAO,iBAAiB,cAAc,CAAC,EAC7D,CAEF,EAAqB,SAAS,CAE9B,OAAO,OAAO,WAAY,CAAE,eAAc,CAAC"}
@@ -1,2 +1,2 @@
1
- import{QUICK_EVENT as e,attr as t,customElements as n,off as r,on as i,onMutation as a,useId as o}from"../utils/utils.js";import{UHTMLComboboxElement as s}from"@u-elements/u-combobox";var c=class extends s{_render;_unmutate;connectedCallback(){super.connectedCallback(),this._unmutate=a(this,l,{childList:!0}),i(this,`toggle`,u,e)}disconnectedCallback(){super.disconnectedCallback(),this._unmutate?.(),this._unmutate=this._render=void 0,r(this,`toggle`,u,e)}};const l=({control:e,list:n})=>{e&&!e.placeholder&&t(e,`placeholder`,` `),e&&t(e,`popovertarget`,o(n)||null),n&&t(n,`popover`,`manual`)},u=e=>{let t=e.currentTarget,n=e.newState===`open`&&t.control;n&&t.list?.dispatchEvent(new CustomEvent(`ds-toggle-source`,{detail:n}))};n.define(`ds-suggestion`,c);export{c as DSSuggestionElement};
1
+ import{QUICK_EVENT as e,attr as t,customElements as n,off as r,on as i,onMutation as a,useId as o}from"../utils/utils.js";import{UHTMLComboboxElement as s}from"@u-elements/u-combobox";var c=class extends s{_unmutate;connectedCallback(){super.connectedCallback(),this._unmutate=a(this,l,{childList:!0}),i(this,`toggle`,u,e)}disconnectedCallback(){super.disconnectedCallback(),this._unmutate?.(),this._unmutate=void 0,r(this,`toggle`,u,e)}};const l=({control:e,list:n})=>{e&&!e.placeholder&&t(e,`placeholder`,` `),e&&t(e,`popovertarget`,o(n)||null),n&&t(n,`popover`,`manual`),n&&t(n,`data-is-floating`,`true`)},u=e=>{let t=e.currentTarget,n=e.newState===`open`&&t.control;n&&t.list?.dispatchEvent(new CustomEvent(`ds-toggle-source`,{detail:n}))};n.define(`ds-suggestion`,c);export{c as DSSuggestionElement};
2
2
  //# sourceMappingURL=suggestion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"suggestion.js","names":[],"sources":["../../../src/suggestion/suggestion.ts"],"sourcesContent":["import { UHTMLComboboxElement } from '@u-elements/u-combobox';\nimport {\n attr,\n customElements,\n off,\n on,\n onMutation,\n QUICK_EVENT,\n useId,\n} from '../utils/utils';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ds-suggestion': DSSuggestionElement;\n }\n}\n\nexport class DSSuggestionElement extends UHTMLComboboxElement {\n _render?: () => void;\n _unmutate?: ReturnType<typeof onMutation>; // Using underscore instead of private fields for backwards compatibility\n\n connectedCallback() {\n super.connectedCallback();\n this._unmutate = onMutation(this, render, { childList: true }); // .control and .list are direct children of the custom element\n on(this, 'toggle', polyfillToggleSource, QUICK_EVENT);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this._unmutate?.();\n this._unmutate = this._render = undefined;\n off(this, 'toggle', polyfillToggleSource, QUICK_EVENT);\n }\n}\n\n// A non-empty placeholder attribute is required to activate the :placeholder-shown pseudo selector used in our chevron styling\nconst render = ({ control, list }: DSSuggestionElement) => {\n if (control && !control.placeholder) attr(control, 'placeholder', ' '); // .control comes from UHTMLComboboxElement\n if (control) attr(control, 'popovertarget', useId(list) || null);\n if (list) attr(list, 'popover', 'manual'); // Ensure popover attribute is set on the list\n};\n\n// Since showPopover({ source }) is not supported in all browsers yet:\nconst polyfillToggleSource = (event: Partial<ToggleEvent>) => {\n const self = event.currentTarget as DSSuggestionElement;\n const detail = event.newState === 'open' && self.control; // .control comes from UHTMLComboboxElement\n\n if (detail)\n self.list?.dispatchEvent(new CustomEvent('ds-toggle-source', { detail }));\n};\n\ncustomElements.define('ds-suggestion', DSSuggestionElement);\n"],"mappings":"wLAiBA,IAAa,EAAb,cAAyC,CAAqB,CAC5D,QACA,UAEA,mBAAoB,CAClB,MAAM,mBAAmB,CACzB,KAAK,UAAY,EAAW,KAAM,EAAQ,CAAE,UAAW,GAAM,CAAC,CAC9D,EAAG,KAAM,SAAU,EAAsB,EAAY,CAEvD,sBAAuB,CACrB,MAAM,sBAAsB,CAC5B,KAAK,aAAa,CAClB,KAAK,UAAY,KAAK,QAAU,IAAA,GAChC,EAAI,KAAM,SAAU,EAAsB,EAAY,GAK1D,MAAM,GAAU,CAAE,UAAS,UAAgC,CACrD,GAAW,CAAC,EAAQ,aAAa,EAAK,EAAS,cAAe,IAAI,CAClE,GAAS,EAAK,EAAS,gBAAiB,EAAM,EAAK,EAAI,KAAK,CAC5D,GAAM,EAAK,EAAM,UAAW,SAAS,EAIrC,EAAwB,GAAgC,CAC5D,IAAM,EAAO,EAAM,cACb,EAAS,EAAM,WAAa,QAAU,EAAK,QAE7C,GACF,EAAK,MAAM,cAAc,IAAI,YAAY,mBAAoB,CAAE,SAAQ,CAAC,CAAC,EAG7E,EAAe,OAAO,gBAAiB,EAAoB"}
1
+ {"version":3,"file":"suggestion.js","names":[],"sources":["../../../src/suggestion/suggestion.ts"],"sourcesContent":["import { UHTMLComboboxElement } from '@u-elements/u-combobox';\nimport {\n attr,\n customElements,\n off,\n on,\n onMutation,\n QUICK_EVENT,\n useId,\n} from '../utils/utils';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ds-suggestion': DSSuggestionElement;\n }\n}\n\nexport class DSSuggestionElement extends UHTMLComboboxElement {\n _unmutate?: ReturnType<typeof onMutation>; // Using underscore instead of private fields for backwards compatibility\n\n connectedCallback() {\n super.connectedCallback();\n this._unmutate = onMutation(this, render, { childList: true }); // .control and .list are direct children of the custom element\n on(this, 'toggle', polyfillToggleSource, QUICK_EVENT);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this._unmutate?.();\n this._unmutate = undefined;\n off(this, 'toggle', polyfillToggleSource, QUICK_EVENT);\n }\n}\n\n// A non-empty placeholder attribute is required to activate the :placeholder-shown pseudo selector used in our chevron styling\nconst render = ({ control, list }: DSSuggestionElement) => {\n if (control && !control.placeholder) attr(control, 'placeholder', ' '); // .control comes from UHTMLComboboxElement\n if (control) attr(control, 'popovertarget', useId(list) || null);\n if (list) attr(list, 'popover', 'manual'); // Ensure popover attribute is set on the list\n if (list) attr(list, 'data-is-floating', 'true'); // identifier for css to toggle opacity when it is placed by floating-ui.\n};\n\n// Since showPopover({ source }) is not supported in all browsers yet:\nconst polyfillToggleSource = (event: Partial<ToggleEvent>) => {\n const self = event.currentTarget as DSSuggestionElement;\n const detail = event.newState === 'open' && self.control; // .control comes from UHTMLComboboxElement\n\n if (detail)\n self.list?.dispatchEvent(new CustomEvent('ds-toggle-source', { detail }));\n};\n\ncustomElements.define('ds-suggestion', DSSuggestionElement);\n"],"mappings":"wLAiBA,IAAa,EAAb,cAAyC,CAAqB,CAC5D,UAEA,mBAAoB,CAClB,MAAM,mBAAmB,CACzB,KAAK,UAAY,EAAW,KAAM,EAAQ,CAAE,UAAW,GAAM,CAAC,CAC9D,EAAG,KAAM,SAAU,EAAsB,EAAY,CAEvD,sBAAuB,CACrB,MAAM,sBAAsB,CAC5B,KAAK,aAAa,CAClB,KAAK,UAAY,IAAA,GACjB,EAAI,KAAM,SAAU,EAAsB,EAAY,GAK1D,MAAM,GAAU,CAAE,UAAS,UAAgC,CACrD,GAAW,CAAC,EAAQ,aAAa,EAAK,EAAS,cAAe,IAAI,CAClE,GAAS,EAAK,EAAS,gBAAiB,EAAM,EAAK,EAAI,KAAK,CAC5D,GAAM,EAAK,EAAM,UAAW,SAAS,CACrC,GAAM,EAAK,EAAM,mBAAoB,OAAO,EAI5C,EAAwB,GAAgC,CAC5D,IAAM,EAAO,EAAM,cACb,EAAS,EAAM,WAAa,QAAU,EAAK,QAE7C,GACF,EAAK,MAAM,cAAc,IAAI,YAAY,mBAAoB,CAAE,SAAQ,CAAC,CAAC,EAG7E,EAAe,OAAO,gBAAiB,EAAoB"}
package/dist/index.d.ts CHANGED
@@ -139,7 +139,6 @@ declare global {
139
139
  }
140
140
  }
141
141
  declare class DSSuggestionElement extends UHTMLComboboxElement {
142
- _render?: () => void;
143
142
  _unmutate?: ReturnType<typeof onMutation>;
144
143
  connectedCallback(): void;
145
144
  disconnectedCallback(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/popover/popover.ts","../src/tooltip/tooltip.ts","../src/utils/utils.ts","../src/breadcrumbs/breadcrumbs.ts","../src/error-summary/error-summary.ts","../src/field/field.ts","../src/pagination/pagination.ts","../src/suggestion/suggestion.ts","../src/tabs/tabs.ts"],"mappings":";;;;;QAYQ,MAAA;EAAA,UACI,2BAAA;IACR,kBAAA,EAAoB,WAAA,CAAY,OAAA;EAAA;AAAA;;;;;;;;cCsBvB,iBAAA,GAAqB,EAAA,GAAK,WAAA;;;cCxB1B,SAAA;EAAA,QAGI,WAAA;aAAA,WAAA;AAAA;;;;;QAkBT,MAAA;EAAA,UACI,MAAA;IACR,UAAA;EAAA;AAAA;AAAA,QAqFI,MAAA;EAAA,UACI,MAAA;IACR,mBAAA,GAAsB,GAAA,SAAY,KAAA;EAAA;AAAA;;;;;;;;;;;cAsBzB,UAAA,aAAwB,IAAA,EACnC,EAAA,EAAI,CAAA,EACJ,QAAA,GAAW,EAAA,EAAI,CAAA,EAAG,OAAA,GAAU,cAAA,aAC5B,OAAA,EAAS,oBAAA;;;;;QA8CH,MAAA;EAAA,UACI,MAAA;IACR,OAAA;EAAA;AAAA;;;QCzLI,MAAA;EAAA,UACI,qBAAA;IACR,gBAAA,EAAkB,oBAAA;EAAA;AAAA;AAAA,cAMT,oBAAA,SAA6B,SAAA;EACxC,MAAA,GAAS,gBAAA,CAAiB,iBAAA;EAC1B,MAAA;EACA,SAAA;EACA,SAAA;EAAA,WAEW,kBAAA,CAAA;EAGX,iBAAA,CAAA;EAUA,wBAAA,CAAyB,KAAA,UAAe,KAAA,WAAgB,IAAA;EAKxD,oBAAA,CAAA;AAAA;;;QC/BM,MAAA;EAAA,UACI,qBAAA;IACR,kBAAA,EAAoB,qBAAA;EAAA;AAAA;AAAA,cAIX,qBAAA,SAA8B,SAAA;EACzC,SAAA;EAEA,iBAAA,CAAA;EASA,WAAA,CAAA;IAAc;EAAA,GAAU,KAAA;EAGxB,oBAAA,CAAA;AAAA;;;QCfM,MAAA;EAAA,UACI,qBAAA;IACR,UAAA,EAAY,cAAA;EAAA;AAAA;AAAA,cAsIH,cAAA,SAAuB,SAAA;EAClC,iBAAA,CAAA;EAIA,oBAAA,CAAA;AAAA;;;QCrJM,MAAA;EAAA,UACI,qBAAA;IACR,eAAA,EAAiB,mBAAA;EAAA;AAAA;AAAA,cAUR,UAAA;EAAc,OAAA;EAAA,KAAA;EAAA;AAAA;;;;;;;;;;;;;cAUd,mBAAA,SAA4B,SAAA;EACvC,SAAA;EACA,OAAA;EAAA,WAEW,kBAAA,CAAA;EAGX,iBAAA,CAAA;EAcA,wBAAA,CAAA;EAGA,oBAAA,CAAA;AAAA;;;QC5CM,MAAA;EAAA,UACI,qBAAA;IACR,eAAA,EAAiB,mBAAA;EAAA;AAAA;AAAA,cAIR,mBAAA,SAA4B,oBAAA;EACvC,OAAA;EACA,SAAA,GAAY,UAAA,QAAkB,UAAA;EAE9B,iBAAA,CAAA;EAKA,oBAAA,CAAA;AAAA;;;QCvBM,MAAA;EAAA,UACI,qBAAA;IACR,SAAA,EAAW,aAAA;IACX,YAAA,EAAc,gBAAA;IACd,QAAA,EAAU,YAAA;IACV,aAAA,EAAe,iBAAA;EAAA;AAAA;AAAA,cAIN,aAAA,SAAsB,KAAA,CAAM,gBAAA;AAAA,cAC5B,gBAAA,SAAyB,KAAA,CAAM,mBAAA;AAAA,cAC/B,YAAA,SAAqB,KAAA,CAAM,eAAA;AAAA,cAC3B,iBAAA,SAA0B,KAAA,CAAM,oBAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/popover/popover.ts","../src/tooltip/tooltip.ts","../src/utils/utils.ts","../src/breadcrumbs/breadcrumbs.ts","../src/error-summary/error-summary.ts","../src/field/field.ts","../src/pagination/pagination.ts","../src/suggestion/suggestion.ts","../src/tabs/tabs.ts"],"mappings":";;;;;QAYQ,MAAA;EAAA,UACI,2BAAA;IACR,kBAAA,EAAoB,WAAA,CAAY,OAAA;EAAA;AAAA;;;;;;;;cCsBvB,iBAAA,GAAqB,EAAA,GAAK,WAAA;;;cCxB1B,SAAA;EAAA,QAGI,WAAA;aAAA,WAAA;AAAA;;;;;QAkBT,MAAA;EAAA,UACI,MAAA;IACR,UAAA;EAAA;AAAA;AAAA,QAqFI,MAAA;EAAA,UACI,MAAA;IACR,mBAAA,GAAsB,GAAA,SAAY,KAAA;EAAA;AAAA;;;;;;;;;;;cAsBzB,UAAA,aAAwB,IAAA,EACnC,EAAA,EAAI,CAAA,EACJ,QAAA,GAAW,EAAA,EAAI,CAAA,EAAG,OAAA,GAAU,cAAA,aAC5B,OAAA,EAAS,oBAAA;;;;;QA8CH,MAAA;EAAA,UACI,MAAA;IACR,OAAA;EAAA;AAAA;;;QCzLI,MAAA;EAAA,UACI,qBAAA;IACR,gBAAA,EAAkB,oBAAA;EAAA;AAAA;AAAA,cAMT,oBAAA,SAA6B,SAAA;EACxC,MAAA,GAAS,gBAAA,CAAiB,iBAAA;EAC1B,MAAA;EACA,SAAA;EACA,SAAA;EAAA,WAEW,kBAAA,CAAA;EAGX,iBAAA,CAAA;EAUA,wBAAA,CAAyB,KAAA,UAAe,KAAA,WAAgB,IAAA;EAKxD,oBAAA,CAAA;AAAA;;;QC/BM,MAAA;EAAA,UACI,qBAAA;IACR,kBAAA,EAAoB,qBAAA;EAAA;AAAA;AAAA,cAIX,qBAAA,SAA8B,SAAA;EACzC,SAAA;EAEA,iBAAA,CAAA;EASA,WAAA,CAAA;IAAc;EAAA,GAAU,KAAA;EAGxB,oBAAA,CAAA;AAAA;;;QCfM,MAAA;EAAA,UACI,qBAAA;IACR,UAAA,EAAY,cAAA;EAAA;AAAA;AAAA,cAsIH,cAAA,SAAuB,SAAA;EAClC,iBAAA,CAAA;EAIA,oBAAA,CAAA;AAAA;;;QCrJM,MAAA;EAAA,UACI,qBAAA;IACR,eAAA,EAAiB,mBAAA;EAAA;AAAA;AAAA,cAUR,UAAA;EAAc,OAAA;EAAA,KAAA;EAAA;AAAA;;;;;;;;;;;;;cAUd,mBAAA,SAA4B,SAAA;EACvC,SAAA;EACA,OAAA;EAAA,WAEW,kBAAA,CAAA;EAGX,iBAAA,CAAA;EAcA,wBAAA,CAAA;EAGA,oBAAA,CAAA;AAAA;;;QC5CM,MAAA;EAAA,UACI,qBAAA;IACR,eAAA,EAAiB,mBAAA;EAAA;AAAA;AAAA,cAIR,mBAAA,SAA4B,oBAAA;EACvC,SAAA,GAAY,UAAA,QAAkB,UAAA;EAE9B,iBAAA,CAAA;EAKA,oBAAA,CAAA;AAAA;;;QCtBM,MAAA;EAAA,UACI,qBAAA;IACR,SAAA,EAAW,aAAA;IACX,YAAA,EAAc,gBAAA;IACd,QAAA,EAAU,YAAA;IACV,aAAA,EAAe,iBAAA;EAAA;AAAA;AAAA,cAIN,aAAA,SAAsB,KAAA,CAAM,gBAAA;AAAA,cAC5B,gBAAA,SAAyB,KAAA,CAAM,mBAAA;AAAA,cAC/B,YAAA,SAAqB,KAAA,CAAM,eAAA;AAAA,cAC3B,iBAAA,SAA0B,KAAA,CAAM,oBAAA"}
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ import { autoUpdate, computePosition, flip, limitShift, offset, shift, size } fr
3
3
  import { UHTMLComboboxElement } from "@u-elements/u-combobox";
4
4
  import * as UTabs from "@u-elements/u-tabs";
5
5
  export * from "@u-elements/u-datalist";
6
- //#region ../../node_modules/.pnpm/invokers-polyfill@1.0.2_patch_hash=d5677be15320f04cdc552d82cb4a79242bd1cf8b26bcbb0a13e1153e7bed3b5a/node_modules/invokers-polyfill/invoker.js
6
+ //#region ../../node_modules/.pnpm/invokers-polyfill@1.0.3/node_modules/invokers-polyfill/invoker.js
7
7
  function isSupported() {
8
8
  return typeof HTMLButtonElement !== "undefined" && "command" in HTMLButtonElement.prototype && "source" in ((globalThis.CommandEvent || {}).prototype || {});
9
9
  }
@@ -941,7 +941,6 @@ customElements.define("ds-pagination", DSPaginationElement);
941
941
  //#endregion
942
942
  //#region src/suggestion/suggestion.ts
943
943
  var DSSuggestionElement = class extends UHTMLComboboxElement {
944
- _render;
945
944
  _unmutate;
946
945
  connectedCallback() {
947
946
  super.connectedCallback();
@@ -951,7 +950,7 @@ var DSSuggestionElement = class extends UHTMLComboboxElement {
951
950
  disconnectedCallback() {
952
951
  super.disconnectedCallback();
953
952
  this._unmutate?.();
954
- this._unmutate = this._render = void 0;
953
+ this._unmutate = void 0;
955
954
  off(this, "toggle", polyfillToggleSource, QUICK_EVENT);
956
955
  }
957
956
  };
@@ -959,6 +958,7 @@ const render = ({ control, list }) => {
959
958
  if (control && !control.placeholder) attr(control, "placeholder", " ");
960
959
  if (control) attr(control, "popovertarget", useId(list) || null);
961
960
  if (list) attr(list, "popover", "manual");
961
+ if (list) attr(list, "data-is-floating", "true");
962
962
  };
963
963
  const polyfillToggleSource = (event) => {
964
964
  const self = event.currentTarget;