{
  "version": 3,
  "sources": ["../../node_modules/.pnpm/@zag-js+anatomy@1.33.1/node_modules/@zag-js/anatomy/dist/index.mjs", "../../node_modules/.pnpm/@zag-js+dom-query@1.33.1/node_modules/@zag-js/dom-query/dist/index.mjs", "../../node_modules/.pnpm/@zag-js+utils@1.33.1/node_modules/@zag-js/utils/dist/index.mjs", "../../node_modules/.pnpm/@zag-js+core@1.33.1/node_modules/@zag-js/core/dist/index.mjs", "../../node_modules/.pnpm/@zag-js+types@1.33.1/node_modules/@zag-js/types/dist/index.mjs", "../../node_modules/.pnpm/@zag-js+accordion@1.33.1/node_modules/@zag-js/accordion/dist/index.mjs", "../../node_modules/.pnpm/proxy-compare@3.0.1/node_modules/proxy-compare/dist/index.js", "../../node_modules/.pnpm/@zag-js+store@1.33.1/node_modules/@zag-js/store/dist/index.mjs", "../../node_modules/.pnpm/@zag-js+vanilla@1.33.1/node_modules/@zag-js/vanilla/dist/index.mjs", "../../assets/lib/core.ts", "../../assets/components/accordion.ts", "../../assets/lib/util.ts", "../../assets/hooks/accordion.ts", "../../node_modules/.pnpm/@zag-js+focus-visible@1.33.1/node_modules/@zag-js/focus-visible/dist/index.mjs", "../../node_modules/.pnpm/@zag-js+checkbox@1.33.1/node_modules/@zag-js/checkbox/dist/index.mjs", "../../assets/components/checkbox.ts", "../../assets/hooks/checkbox.ts", "../../node_modules/.pnpm/@zag-js+clipboard@1.33.1/node_modules/@zag-js/clipboard/dist/index.mjs", "../../assets/components/clipboard.ts", "../../assets/hooks/clipboard.ts", "../../node_modules/.pnpm/@zag-js+collapsible@1.33.1/node_modules/@zag-js/collapsible/dist/index.mjs", "../../assets/components/collapsible.ts", "../../assets/hooks/collapsible.ts", "../../node_modules/.pnpm/@zag-js+collection@1.33.1/node_modules/@zag-js/collection/dist/index.mjs", "../../node_modules/.pnpm/@floating-ui+utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs", "../../node_modules/.pnpm/@floating-ui+core@1.7.4/node_modules/@floating-ui/core/dist/floating-ui.core.mjs", "../../node_modules/.pnpm/@floating-ui+utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs", "../../node_modules/.pnpm/@floating-ui+dom@1.7.5/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs", "../../node_modules/.pnpm/@zag-js+popper@1.33.1/node_modules/@zag-js/popper/dist/index.mjs", "../../node_modules/.pnpm/@zag-js+interact-outside@1.33.1/node_modules/@zag-js/interact-outside/dist/index.mjs", "../../node_modules/.pnpm/@zag-js+dismissable@1.33.1/node_modules/@zag-js/dismissable/dist/index.mjs", "../../node_modules/.pnpm/@zag-js+combobox@1.33.1/node_modules/@zag-js/combobox/dist/index.mjs", "../../assets/components/combobox.ts", "../../assets/hooks/combobox.ts", "../../node_modules/.pnpm/@internationalized+date@3.11.0/node_modules/@internationalized/date/dist/packages/@internationalized/date/src/utils.ts", "../../node_modules/.pnpm/@internationalized+date@3.11.0/node_modules/@internationalized/date/dist/packages/@internationalized/date/src/calendars/GregorianCalendar.ts", "../../node_modules/.pnpm/@internationalized+date@3.11.0/node_modules/@internationalized/date/dist/packages/@internationalized/date/src/weekStartData.ts", "../../node_modules/.pnpm/@internationalized+date@3.11.0/node_modules/@internationalized/date/dist/packages/@internationalized/date/src/queries.ts", "../../node_modules/.pnpm/@internationalized+date@3.11.0/node_modules/@internationalized/date/dist/packages/@internationalized/date/src/conversion.ts", "../../node_modules/.pnpm/@internationalized+date@3.11.0/node_modules/@internationalized/date/dist/packages/@internationalized/date/src/manipulation.ts", "../../node_modules/.pnpm/@internationalized+date@3.11.0/node_modules/@internationalized/date/dist/packages/@internationalized/date/src/string.ts", "../../node_modules/.pnpm/@swc+helpers@0.5.18/node_modules/@swc/helpers/esm/_check_private_redeclaration.js", "../../node_modules/.pnpm/@swc+helpers@0.5.18/node_modules/@swc/helpers/esm/_class_private_field_init.js", "../../node_modules/.pnpm/@internationalized+date@3.11.0/node_modules/@internationalized/date/dist/packages/@internationalized/date/src/CalendarDate.ts", "../../node_modules/.pnpm/@internationalized+date@3.11.0/node_modules/@internationalized/date/dist/packages/@internationalized/date/src/DateFormatter.ts", "../../node_modules/.pnpm/@zag-js+date-utils@1.33.1_@internationalized+date@3.11.0/node_modules/@zag-js/date-utils/dist/index.mjs", "../../node_modules/.pnpm/@zag-js+live-region@1.33.1/node_modules/@zag-js/live-region/dist/index.mjs", "../../node_modules/.pnpm/@zag-js+date-picker@1.33.1_@internationalized+date@3.11.0/node_modules/@zag-js/date-picker/dist/index.mjs", "../../assets/components/date-picker.ts", "../../assets/hooks/date-picker.ts", "../../node_modules/.pnpm/@zag-js+aria-hidden@1.33.1/node_modules/@zag-js/aria-hidden/dist/index.mjs", "../../node_modules/.pnpm/@zag-js+focus-trap@1.33.1/node_modules/@zag-js/focus-trap/dist/index.mjs", "../../node_modules/.pnpm/@zag-js+remove-scroll@1.33.1/node_modules/@zag-js/remove-scroll/dist/index.mjs", "../../node_modules/.pnpm/@zag-js+dialog@1.33.1/node_modules/@zag-js/dialog/dist/index.mjs", "../../assets/components/dialog.ts", "../../assets/hooks/dialog.ts", "../../node_modules/.pnpm/@zag-js+rect-utils@1.33.1/node_modules/@zag-js/rect-utils/dist/index.mjs", "../../node_modules/.pnpm/@zag-js+menu@1.33.1/node_modules/@zag-js/menu/dist/index.mjs", "../../assets/components/menu.ts", "../../assets/hooks/menu.ts", "../../node_modules/.pnpm/@zag-js+select@1.33.1/node_modules/@zag-js/select/dist/index.mjs", "../../assets/components/select.ts", "../../assets/hooks/select.ts", "../../node_modules/.pnpm/perfect-freehand@1.2.3/node_modules/perfect-freehand/src/constants.ts", "../../node_modules/.pnpm/perfect-freehand@1.2.3/node_modules/perfect-freehand/src/getStrokeRadius.ts", "../../node_modules/.pnpm/perfect-freehand@1.2.3/node_modules/perfect-freehand/src/simulatePressure.ts", "../../node_modules/.pnpm/perfect-freehand@1.2.3/node_modules/perfect-freehand/src/vec.ts", "../../node_modules/.pnpm/perfect-freehand@1.2.3/node_modules/perfect-freehand/src/getStrokeOutlinePoints.ts", "../../node_modules/.pnpm/perfect-freehand@1.2.3/node_modules/perfect-freehand/src/getStrokePoints.ts", "../../node_modules/.pnpm/perfect-freehand@1.2.3/node_modules/perfect-freehand/src/getStroke.ts", "../../node_modules/.pnpm/perfect-freehand@1.2.3/node_modules/perfect-freehand/src/index.ts", "../../node_modules/.pnpm/@zag-js+signature-pad@1.33.1/node_modules/@zag-js/signature-pad/dist/index.mjs", "../../assets/components/signature-pad.ts", "../../assets/hooks/signature-pad.ts", "../../node_modules/.pnpm/@zag-js+switch@1.33.1/node_modules/@zag-js/switch/dist/index.mjs", "../../assets/components/switch.ts", "../../assets/hooks/switch.ts", "../../node_modules/.pnpm/@zag-js+tabs@1.33.1/node_modules/@zag-js/tabs/dist/index.mjs", "../../assets/components/tabs.ts", "../../assets/hooks/tabs.ts", "../../node_modules/.pnpm/@zag-js+toast@1.33.1/node_modules/@zag-js/toast/dist/index.mjs", "../../assets/components/toast.ts", "../../assets/hooks/toast.ts", "../../node_modules/.pnpm/@zag-js+toggle-group@1.33.1/node_modules/@zag-js/toggle-group/dist/index.mjs", "../../assets/components/toggle-group.ts", "../../assets/hooks/toggle-group.ts", "../../node_modules/.pnpm/@zag-js+tree-view@1.33.1/node_modules/@zag-js/tree-view/dist/index.mjs", "../../assets/components/tree-view.ts", "../../assets/hooks/tree-view.ts", "../../assets/hooks/corex.ts"],
  "sourcesContent": ["// src/create-anatomy.ts\nvar createAnatomy = (name, parts = []) => ({\n  parts: (...values) => {\n    if (isEmpty(parts)) {\n      return createAnatomy(name, values);\n    }\n    throw new Error(\"createAnatomy().parts(...) should only be called once. Did you mean to use .extendWith(...) ?\");\n  },\n  extendWith: (...values) => createAnatomy(name, [...parts, ...values]),\n  omit: (...values) => createAnatomy(name, parts.filter((part) => !values.includes(part))),\n  rename: (newName) => createAnatomy(newName, parts),\n  keys: () => parts,\n  build: () => [...new Set(parts)].reduce(\n    (prev, part) => Object.assign(prev, {\n      [part]: {\n        selector: [\n          `&[data-scope=\"${toKebabCase(name)}\"][data-part=\"${toKebabCase(part)}\"]`,\n          `& [data-scope=\"${toKebabCase(name)}\"][data-part=\"${toKebabCase(part)}\"]`\n        ].join(\", \"),\n        attrs: { \"data-scope\": toKebabCase(name), \"data-part\": toKebabCase(part) }\n      }\n    }),\n    {}\n  )\n});\nvar toKebabCase = (value) => value.replace(/([A-Z])([A-Z])/g, \"$1-$2\").replace(/([a-z])([A-Z])/g, \"$1-$2\").replace(/[\\s_]+/g, \"-\").toLowerCase();\nvar isEmpty = (v) => v.length === 0;\n\nexport { createAnatomy };\n", "var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n\n// src/caret.ts\nfunction isCaretAtStart(input) {\n  if (!input) return false;\n  try {\n    return input.selectionStart === 0 && input.selectionEnd === 0;\n  } catch {\n    return input.value === \"\";\n  }\n}\nfunction setCaretToEnd(input) {\n  if (!input) return;\n  try {\n    if (input.ownerDocument.activeElement !== input) return;\n    const len = input.value.length;\n    input.setSelectionRange(len, len);\n  } catch {\n  }\n}\n\n// src/shared.ts\nvar clamp = (value) => Math.max(0, Math.min(1, value));\nvar wrap = (v, idx) => {\n  return v.map((_, index) => v[(Math.max(idx, 0) + index) % v.length]);\n};\nvar pipe = (...fns) => (arg) => fns.reduce((acc, fn) => fn(acc), arg);\nvar noop = () => void 0;\nvar isObject = (v) => typeof v === \"object\" && v !== null;\nvar MAX_Z_INDEX = 2147483647;\nvar dataAttr = (guard) => guard ? \"\" : void 0;\nvar ariaAttr = (guard) => guard ? \"true\" : void 0;\n\n// src/node.ts\nvar ELEMENT_NODE = 1;\nvar DOCUMENT_NODE = 9;\nvar DOCUMENT_FRAGMENT_NODE = 11;\nvar isHTMLElement = (el) => isObject(el) && el.nodeType === ELEMENT_NODE && typeof el.nodeName === \"string\";\nvar isDocument = (el) => isObject(el) && el.nodeType === DOCUMENT_NODE;\nvar isWindow = (el) => isObject(el) && el === el.window;\nvar isVisualViewport = (el) => isObject(el) && el.constructor.name === \"VisualViewport\";\nvar getNodeName = (node) => {\n  if (isHTMLElement(node)) return node.localName || \"\";\n  return \"#document\";\n};\nfunction isRootElement(node) {\n  return [\"html\", \"body\", \"#document\"].includes(getNodeName(node));\n}\nvar isNode = (el) => isObject(el) && el.nodeType !== void 0;\nvar isShadowRoot = (el) => isNode(el) && el.nodeType === DOCUMENT_FRAGMENT_NODE && \"host\" in el;\nvar isInputElement = (el) => isHTMLElement(el) && el.localName === \"input\";\nvar isAnchorElement = (el) => !!el?.matches(\"a[href]\");\nvar isElementVisible = (el) => {\n  if (!isHTMLElement(el)) return false;\n  return el.offsetWidth > 0 || el.offsetHeight > 0 || el.getClientRects().length > 0;\n};\nfunction isActiveElement(element) {\n  if (!element) return false;\n  const rootNode = element.getRootNode();\n  return getActiveElement(rootNode) === element;\n}\nvar TEXTAREA_SELECT_REGEX = /(textarea|select)/;\nfunction isEditableElement(el) {\n  if (el == null || !isHTMLElement(el)) return false;\n  try {\n    return isInputElement(el) && el.selectionStart != null || TEXTAREA_SELECT_REGEX.test(el.localName) || el.isContentEditable || el.getAttribute(\"contenteditable\") === \"true\" || el.getAttribute(\"contenteditable\") === \"\";\n  } catch {\n    return false;\n  }\n}\nfunction contains(parent, child) {\n  if (!parent || !child) return false;\n  if (!isHTMLElement(parent) || !isHTMLElement(child)) return false;\n  const rootNode = child.getRootNode?.();\n  if (parent === child) return true;\n  if (parent.contains(child)) return true;\n  if (rootNode && isShadowRoot(rootNode)) {\n    let next = child;\n    while (next) {\n      if (parent === next) return true;\n      next = next.parentNode || next.host;\n    }\n  }\n  return false;\n}\nfunction getDocument(el) {\n  if (isDocument(el)) return el;\n  if (isWindow(el)) return el.document;\n  return el?.ownerDocument ?? document;\n}\nfunction getDocumentElement(el) {\n  return getDocument(el).documentElement;\n}\nfunction getWindow(el) {\n  if (isShadowRoot(el)) return getWindow(el.host);\n  if (isDocument(el)) return el.defaultView ?? window;\n  if (isHTMLElement(el)) return el.ownerDocument?.defaultView ?? window;\n  return window;\n}\nfunction getActiveElement(rootNode) {\n  let activeElement = rootNode.activeElement;\n  while (activeElement?.shadowRoot) {\n    const el = activeElement.shadowRoot.activeElement;\n    if (!el || el === activeElement) break;\n    else activeElement = el;\n  }\n  return activeElement;\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === \"html\") return node;\n  const result = node.assignedSlot || node.parentNode || isShadowRoot(node) && node.host || getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getRootNode(node) {\n  let result;\n  try {\n    result = node.getRootNode({ composed: true });\n    if (isDocument(result) || isShadowRoot(result)) return result;\n  } catch {\n  }\n  return node.ownerDocument ?? document;\n}\n\n// src/computed-style.ts\nvar styleCache = /* @__PURE__ */ new WeakMap();\nfunction getComputedStyle(el) {\n  if (!styleCache.has(el)) {\n    styleCache.set(el, getWindow(el).getComputedStyle(el));\n  }\n  return styleCache.get(el);\n}\n\n// src/controller.ts\nvar INTERACTIVE_CONTAINER_ROLE = /* @__PURE__ */ new Set([\"menu\", \"listbox\", \"dialog\", \"grid\", \"tree\", \"region\"]);\nvar isInteractiveContainerRole = (role) => INTERACTIVE_CONTAINER_ROLE.has(role);\nvar getAriaControls = (element) => element.getAttribute(\"aria-controls\")?.split(\" \") || [];\nfunction isControlledElement(container, element) {\n  const visitedIds = /* @__PURE__ */ new Set();\n  const rootNode = getRootNode(container);\n  const checkElement = (searchRoot) => {\n    const controllingElements = searchRoot.querySelectorAll(\"[aria-controls]\");\n    for (const controller of controllingElements) {\n      if (controller.getAttribute(\"aria-expanded\") !== \"true\") continue;\n      const controlledIds = getAriaControls(controller);\n      for (const id of controlledIds) {\n        if (!id || visitedIds.has(id)) continue;\n        visitedIds.add(id);\n        const controlledElement = rootNode.getElementById(id);\n        if (controlledElement) {\n          const role = controlledElement.getAttribute(\"role\");\n          const modal = controlledElement.getAttribute(\"aria-modal\") === \"true\";\n          if (role && isInteractiveContainerRole(role) && !modal) {\n            if (controlledElement === element || controlledElement.contains(element)) {\n              return true;\n            }\n            if (checkElement(controlledElement)) {\n              return true;\n            }\n          }\n        }\n      }\n    }\n    return false;\n  };\n  return checkElement(container);\n}\nfunction findControlledElements(searchRoot, callback) {\n  const rootNode = getRootNode(searchRoot);\n  const visitedIds = /* @__PURE__ */ new Set();\n  const findRecursive = (root) => {\n    const controllingElements = root.querySelectorAll(\"[aria-controls]\");\n    for (const controller of controllingElements) {\n      if (controller.getAttribute(\"aria-expanded\") !== \"true\") continue;\n      const controlledIds = getAriaControls(controller);\n      for (const id of controlledIds) {\n        if (!id || visitedIds.has(id)) continue;\n        visitedIds.add(id);\n        const controlledElement = rootNode.getElementById(id);\n        if (controlledElement) {\n          const role = controlledElement.getAttribute(\"role\");\n          const modal = controlledElement.getAttribute(\"aria-modal\") === \"true\";\n          if (role && INTERACTIVE_CONTAINER_ROLE.has(role) && !modal) {\n            callback(controlledElement);\n            findRecursive(controlledElement);\n          }\n        }\n      }\n    }\n  };\n  findRecursive(searchRoot);\n}\nfunction getControlledElements(container) {\n  const controlledElements = /* @__PURE__ */ new Set();\n  findControlledElements(container, (controlledElement) => {\n    if (!container.contains(controlledElement)) {\n      controlledElements.add(controlledElement);\n    }\n  });\n  return Array.from(controlledElements);\n}\nfunction isInteractiveContainerElement(element) {\n  const role = element.getAttribute(\"role\");\n  return Boolean(role && INTERACTIVE_CONTAINER_ROLE.has(role));\n}\nfunction isControllerElement(element) {\n  return element.hasAttribute(\"aria-controls\") && element.getAttribute(\"aria-expanded\") === \"true\";\n}\nfunction hasControllerElements(element) {\n  if (isControllerElement(element)) return true;\n  return Boolean(element.querySelector?.('[aria-controls][aria-expanded=\"true\"]'));\n}\nfunction isControlledByExpandedController(element) {\n  if (!element.id) return false;\n  const rootNode = getRootNode(element);\n  const escapedId = CSS.escape(element.id);\n  const selector = `[aria-controls~=\"${escapedId}\"][aria-expanded=\"true\"], [aria-controls=\"${escapedId}\"][aria-expanded=\"true\"]`;\n  const controller = rootNode.querySelector(selector);\n  return Boolean(controller && isInteractiveContainerElement(element));\n}\n\n// src/data-url.ts\nfunction getDataUrl(svg, opts) {\n  const { type, quality = 0.92, background } = opts;\n  if (!svg) throw new Error(\"[zag-js > getDataUrl]: Could not find the svg element\");\n  const win = getWindow(svg);\n  const doc = win.document;\n  const svgBounds = svg.getBoundingClientRect();\n  const svgClone = svg.cloneNode(true);\n  if (!svgClone.hasAttribute(\"viewBox\")) {\n    svgClone.setAttribute(\"viewBox\", `0 0 ${svgBounds.width} ${svgBounds.height}`);\n  }\n  const serializer = new win.XMLSerializer();\n  const source = '<?xml version=\"1.0\" standalone=\"no\"?>\\r\\n' + serializer.serializeToString(svgClone);\n  const svgString = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(source);\n  if (type === \"image/svg+xml\") {\n    return Promise.resolve(svgString).then((str) => {\n      svgClone.remove();\n      return str;\n    });\n  }\n  const dpr = win.devicePixelRatio || 1;\n  const canvas = doc.createElement(\"canvas\");\n  const image = new win.Image();\n  image.src = svgString;\n  canvas.width = svgBounds.width * dpr;\n  canvas.height = svgBounds.height * dpr;\n  const context = canvas.getContext(\"2d\");\n  if (type === \"image/jpeg\" || background) {\n    context.fillStyle = background || \"white\";\n    context.fillRect(0, 0, canvas.width, canvas.height);\n  }\n  return new Promise((resolve) => {\n    image.onload = () => {\n      context?.drawImage(image, 0, 0, canvas.width, canvas.height);\n      resolve(canvas.toDataURL(type, quality));\n      svgClone.remove();\n    };\n  });\n}\n\n// src/platform.ts\nvar isDom = () => typeof document !== \"undefined\";\nfunction getPlatform() {\n  const agent = navigator.userAgentData;\n  return agent?.platform ?? navigator.platform;\n}\nfunction getUserAgent() {\n  const ua2 = navigator.userAgentData;\n  if (ua2 && Array.isArray(ua2.brands)) {\n    return ua2.brands.map(({ brand, version }) => `${brand}/${version}`).join(\" \");\n  }\n  return navigator.userAgent;\n}\nvar pt = (v) => isDom() && v.test(getPlatform());\nvar ua = (v) => isDom() && v.test(getUserAgent());\nvar vn = (v) => isDom() && v.test(navigator.vendor);\nvar isTouchDevice = () => isDom() && !!navigator.maxTouchPoints;\nvar isIPhone = () => pt(/^iPhone/i);\nvar isIPad = () => pt(/^iPad/i) || isMac() && navigator.maxTouchPoints > 1;\nvar isIos = () => isIPhone() || isIPad();\nvar isApple = () => isMac() || isIos();\nvar isMac = () => pt(/^Mac/i);\nvar isSafari = () => isApple() && vn(/apple/i);\nvar isFirefox = () => ua(/Firefox/i);\nvar isChrome = () => ua(/Chrome/i);\nvar isWebKit = () => ua(/AppleWebKit/i) && !isChrome();\nvar isAndroid = () => ua(/Android/i);\n\n// src/event.ts\nfunction getBeforeInputValue(event) {\n  const { selectionStart, selectionEnd, value } = event.currentTarget;\n  const data = event.data;\n  return value.slice(0, selectionStart) + (data ?? \"\") + value.slice(selectionEnd);\n}\nfunction getComposedPath(event) {\n  return event.composedPath?.() ?? event.nativeEvent?.composedPath?.();\n}\nfunction getEventTarget(event) {\n  const composedPath = getComposedPath(event);\n  return composedPath?.[0] ?? event.target;\n}\nfunction isOpeningInNewTab(event) {\n  const element = event.currentTarget;\n  if (!element) return false;\n  const validElement = element.matches(\"a[href], button[type='submit'], input[type='submit']\");\n  if (!validElement) return false;\n  const isMiddleClick = event.button === 1;\n  const isModKeyClick = isCtrlOrMetaKey(event);\n  return isMiddleClick || isModKeyClick;\n}\nfunction isDownloadingEvent(event) {\n  const element = event.currentTarget;\n  if (!element) return false;\n  const localName = element.localName;\n  if (!event.altKey) return false;\n  if (localName === \"a\") return true;\n  if (localName === \"button\" && element.type === \"submit\") return true;\n  if (localName === \"input\" && element.type === \"submit\") return true;\n  return false;\n}\nfunction isComposingEvent(event) {\n  return getNativeEvent(event).isComposing || event.keyCode === 229;\n}\nfunction isKeyboardClick(e) {\n  return e.detail === 0 || e.clientX === 0 && e.clientY === 0;\n}\nfunction isCtrlOrMetaKey(e) {\n  if (isMac()) return e.metaKey;\n  return e.ctrlKey;\n}\nfunction isPrintableKey(e) {\n  return e.key.length === 1 && !e.ctrlKey && !e.metaKey;\n}\nfunction isVirtualPointerEvent(e) {\n  return e.width === 0 && e.height === 0 || e.width === 1 && e.height === 1 && e.pressure === 0 && e.detail === 0 && e.pointerType === \"mouse\";\n}\nfunction isVirtualClick(e) {\n  if (e.pointerType === \"\" && e.isTrusted) return true;\n  if (isAndroid() && e.pointerType) {\n    return e.type === \"click\" && e.buttons === 1;\n  }\n  return e.detail === 0 && !e.pointerType;\n}\nvar isLeftClick = (e) => e.button === 0;\nvar isContextMenuEvent = (e) => {\n  return e.button === 2 || isMac() && e.ctrlKey && e.button === 0;\n};\nvar isModifierKey = (e) => e.ctrlKey || e.altKey || e.metaKey;\nvar isTouchEvent = (event) => \"touches\" in event && event.touches.length > 0;\nvar keyMap = {\n  Up: \"ArrowUp\",\n  Down: \"ArrowDown\",\n  Esc: \"Escape\",\n  \" \": \"Space\",\n  \",\": \"Comma\",\n  Left: \"ArrowLeft\",\n  Right: \"ArrowRight\"\n};\nvar rtlKeyMap = {\n  ArrowLeft: \"ArrowRight\",\n  ArrowRight: \"ArrowLeft\"\n};\nfunction getEventKey(event, options = {}) {\n  const { dir = \"ltr\", orientation = \"horizontal\" } = options;\n  let key = event.key;\n  key = keyMap[key] ?? key;\n  const isRtl = dir === \"rtl\" && orientation === \"horizontal\";\n  if (isRtl && key in rtlKeyMap) key = rtlKeyMap[key];\n  return key;\n}\nfunction getNativeEvent(event) {\n  return event.nativeEvent ?? event;\n}\nvar pageKeys = /* @__PURE__ */ new Set([\"PageUp\", \"PageDown\"]);\nvar arrowKeys = /* @__PURE__ */ new Set([\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"]);\nfunction getEventStep(event) {\n  if (event.ctrlKey || event.metaKey) {\n    return 0.1;\n  } else {\n    const isPageKey = pageKeys.has(event.key);\n    const isSkipKey = isPageKey || event.shiftKey && arrowKeys.has(event.key);\n    return isSkipKey ? 10 : 1;\n  }\n}\nfunction getEventPoint(event, type = \"client\") {\n  const point = isTouchEvent(event) ? event.touches[0] || event.changedTouches[0] : event;\n  return { x: point[`${type}X`], y: point[`${type}Y`] };\n}\nvar addDomEvent = (target, eventName, handler, options) => {\n  const node = typeof target === \"function\" ? target() : target;\n  node?.addEventListener(eventName, handler, options);\n  return () => {\n    node?.removeEventListener(eventName, handler, options);\n  };\n};\nvar isSelfTarget = (event) => {\n  const composedPath = getComposedPath(event);\n  const target = composedPath?.[0] ?? event.target;\n  return event.currentTarget === target;\n};\n\n// src/form.ts\nfunction getDescriptor(el, options) {\n  const { type = \"HTMLInputElement\", property = \"value\" } = options;\n  const proto = getWindow(el)[type].prototype;\n  return Object.getOwnPropertyDescriptor(proto, property) ?? {};\n}\nfunction getElementType(el) {\n  if (el.localName === \"input\") return \"HTMLInputElement\";\n  if (el.localName === \"textarea\") return \"HTMLTextAreaElement\";\n  if (el.localName === \"select\") return \"HTMLSelectElement\";\n}\nfunction setElementValue(el, value, property = \"value\") {\n  if (!el) return;\n  const type = getElementType(el);\n  if (type) {\n    const descriptor = getDescriptor(el, { type, property });\n    descriptor.set?.call(el, value);\n  }\n  el.setAttribute(property, value);\n}\nfunction setElementChecked(el, checked) {\n  if (!el) return;\n  const descriptor = getDescriptor(el, { type: \"HTMLInputElement\", property: \"checked\" });\n  descriptor.set?.call(el, checked);\n  if (checked) el.setAttribute(\"checked\", \"\");\n  else el.removeAttribute(\"checked\");\n}\nfunction dispatchInputValueEvent(el, options) {\n  const { value, bubbles = true } = options;\n  if (!el) return;\n  const win = getWindow(el);\n  if (!(el instanceof win.HTMLInputElement)) return;\n  setElementValue(el, `${value}`);\n  el.dispatchEvent(new win.Event(\"input\", { bubbles }));\n}\nfunction dispatchInputCheckedEvent(el, options) {\n  const { checked, bubbles = true } = options;\n  if (!el) return;\n  const win = getWindow(el);\n  if (!(el instanceof win.HTMLInputElement)) return;\n  setElementChecked(el, checked);\n  el.dispatchEvent(new win.Event(\"click\", { bubbles }));\n}\nfunction getClosestForm(el) {\n  return isFormElement(el) ? el.form : el.closest(\"form\");\n}\nfunction isFormElement(el) {\n  return el.matches(\"textarea, input, select, button\");\n}\nfunction trackFormReset(el, callback) {\n  if (!el) return;\n  const form = getClosestForm(el);\n  const onReset = (e) => {\n    if (e.defaultPrevented) return;\n    callback();\n  };\n  form?.addEventListener(\"reset\", onReset, { passive: true });\n  return () => form?.removeEventListener(\"reset\", onReset);\n}\nfunction trackFieldsetDisabled(el, callback) {\n  const fieldset = el?.closest(\"fieldset\");\n  if (!fieldset) return;\n  callback(fieldset.disabled);\n  const win = getWindow(fieldset);\n  const obs = new win.MutationObserver(() => callback(fieldset.disabled));\n  obs.observe(fieldset, {\n    attributes: true,\n    attributeFilter: [\"disabled\"]\n  });\n  return () => obs.disconnect();\n}\nfunction trackFormControl(el, options) {\n  if (!el) return;\n  const { onFieldsetDisabledChange, onFormReset } = options;\n  const cleanups = [trackFormReset(el, onFormReset), trackFieldsetDisabled(el, onFieldsetDisabledChange)];\n  return () => cleanups.forEach((cleanup) => cleanup?.());\n}\n\n// src/tabbable.ts\nvar isFrame = (el) => isHTMLElement(el) && el.tagName === \"IFRAME\";\nvar NATURALLY_TABBABLE_REGEX = /^(audio|video|details)$/;\nfunction parseTabIndex(el) {\n  const attr = el.getAttribute(\"tabindex\");\n  if (!attr) return NaN;\n  return parseInt(attr, 10);\n}\nvar hasTabIndex = (el) => !Number.isNaN(parseTabIndex(el));\nvar hasNegativeTabIndex = (el) => parseTabIndex(el) < 0;\nfunction getShadowRootForNode(element, getShadowRoot) {\n  if (!getShadowRoot) return null;\n  if (getShadowRoot === true) {\n    return element.shadowRoot || null;\n  }\n  const result = getShadowRoot(element);\n  return (result === true ? element.shadowRoot : result) || null;\n}\nfunction collectElementsWithShadowDOM(elements, getShadowRoot, filterFn) {\n  const allElements = [...elements];\n  const toProcess = [...elements];\n  const processed = /* @__PURE__ */ new Set();\n  const positionMap = /* @__PURE__ */ new Map();\n  elements.forEach((el, i) => positionMap.set(el, i));\n  let processIndex = 0;\n  while (processIndex < toProcess.length) {\n    const element = toProcess[processIndex++];\n    if (!element || processed.has(element)) continue;\n    processed.add(element);\n    const shadowRoot = getShadowRootForNode(element, getShadowRoot);\n    if (shadowRoot) {\n      const shadowElements = Array.from(shadowRoot.querySelectorAll(focusableSelector)).filter(filterFn);\n      const hostIndex = positionMap.get(element);\n      if (hostIndex !== void 0) {\n        const insertPosition = hostIndex + 1;\n        allElements.splice(insertPosition, 0, ...shadowElements);\n        shadowElements.forEach((el, i) => {\n          positionMap.set(el, insertPosition + i);\n        });\n        for (let i = insertPosition + shadowElements.length; i < allElements.length; i++) {\n          positionMap.set(allElements[i], i);\n        }\n      } else {\n        const insertPosition = allElements.length;\n        allElements.push(...shadowElements);\n        shadowElements.forEach((el, i) => {\n          positionMap.set(el, insertPosition + i);\n        });\n      }\n      toProcess.push(...shadowElements);\n    }\n  }\n  return allElements;\n}\nvar focusableSelector = \"input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false']), details > summary:first-of-type\";\nvar getFocusables = (container, options = {}) => {\n  if (!container) return [];\n  const { includeContainer = false, getShadowRoot } = options;\n  const elements = Array.from(container.querySelectorAll(focusableSelector));\n  const include = includeContainer == true || includeContainer == \"if-empty\" && elements.length === 0;\n  if (include && isHTMLElement(container) && isFocusable(container)) {\n    elements.unshift(container);\n  }\n  const focusableElements = [];\n  for (const element of elements) {\n    if (!isFocusable(element)) continue;\n    if (isFrame(element) && element.contentDocument) {\n      const frameBody = element.contentDocument.body;\n      focusableElements.push(...getFocusables(frameBody, { getShadowRoot }));\n      continue;\n    }\n    focusableElements.push(element);\n  }\n  if (getShadowRoot) {\n    return collectElementsWithShadowDOM(focusableElements, getShadowRoot, isFocusable);\n  }\n  return focusableElements;\n};\nfunction isFocusable(element) {\n  if (!isHTMLElement(element) || element.closest(\"[inert]\")) return false;\n  return element.matches(focusableSelector) && isElementVisible(element);\n}\nfunction getFirstFocusable(container, options = {}) {\n  const [first] = getFocusables(container, options);\n  return first || null;\n}\nfunction getTabbables(container, options = {}) {\n  if (!container) return [];\n  const { includeContainer, getShadowRoot } = options;\n  const elements = Array.from(container.querySelectorAll(focusableSelector));\n  if (includeContainer && isTabbable(container)) {\n    elements.unshift(container);\n  }\n  const tabbableElements = [];\n  for (const element of elements) {\n    if (!isTabbable(element)) continue;\n    if (isFrame(element) && element.contentDocument) {\n      const frameBody = element.contentDocument.body;\n      tabbableElements.push(...getTabbables(frameBody, { getShadowRoot }));\n      continue;\n    }\n    tabbableElements.push(element);\n  }\n  if (getShadowRoot) {\n    const allElements = collectElementsWithShadowDOM(tabbableElements, getShadowRoot, isTabbable);\n    if (!allElements.length && includeContainer) {\n      return elements;\n    }\n    return allElements;\n  }\n  if (!tabbableElements.length && includeContainer) {\n    return elements;\n  }\n  return tabbableElements;\n}\nfunction isTabbable(el) {\n  if (isHTMLElement(el) && el.tabIndex > 0) return true;\n  return isFocusable(el) && !hasNegativeTabIndex(el);\n}\nfunction getFirstTabbable(container, options = {}) {\n  const [first] = getTabbables(container, options);\n  return first || null;\n}\nfunction getLastTabbable(container, options = {}) {\n  const elements = getTabbables(container, options);\n  return elements[elements.length - 1] || null;\n}\nfunction getTabbableEdges(container, options = {}) {\n  const elements = getTabbables(container, options);\n  const first = elements[0] || null;\n  const last = elements[elements.length - 1] || null;\n  return [first, last];\n}\nfunction getNextTabbable(container, options = {}) {\n  const { current, getShadowRoot } = options;\n  const tabbables = getTabbables(container, { getShadowRoot });\n  const doc = container?.ownerDocument || document;\n  const currentElement = current ?? getActiveElement(doc);\n  if (!currentElement) return null;\n  const index = tabbables.indexOf(currentElement);\n  return tabbables[index + 1] || null;\n}\nfunction getTabIndex(node) {\n  if (node.tabIndex < 0) {\n    if ((NATURALLY_TABBABLE_REGEX.test(node.localName) || isEditableElement(node)) && !hasTabIndex(node)) {\n      return 0;\n    }\n  }\n  return node.tabIndex;\n}\n\n// src/initial-focus.ts\nfunction getInitialFocus(options) {\n  const { root, getInitialEl, filter, enabled = true } = options;\n  if (!enabled) return;\n  let node = null;\n  node || (node = typeof getInitialEl === \"function\" ? getInitialEl() : getInitialEl);\n  node || (node = root?.querySelector(\"[data-autofocus],[autofocus]\"));\n  if (!node) {\n    const tabbables = getTabbables(root);\n    node = filter ? tabbables.filter(filter)[0] : tabbables[0];\n  }\n  return node || root || void 0;\n}\nfunction isValidTabEvent(event) {\n  const container = event.currentTarget;\n  if (!container) return false;\n  const [firstTabbable, lastTabbable] = getTabbableEdges(container);\n  if (isActiveElement(firstTabbable) && event.shiftKey) return false;\n  if (isActiveElement(lastTabbable) && !event.shiftKey) return false;\n  if (!firstTabbable && !lastTabbable) return false;\n  return true;\n}\n\n// src/raf.ts\nvar AnimationFrame = class _AnimationFrame {\n  constructor() {\n    __publicField(this, \"id\", null);\n    __publicField(this, \"fn_cleanup\");\n    __publicField(this, \"cleanup\", () => {\n      this.cancel();\n    });\n  }\n  static create() {\n    return new _AnimationFrame();\n  }\n  request(fn) {\n    this.cancel();\n    this.id = globalThis.requestAnimationFrame(() => {\n      this.id = null;\n      this.fn_cleanup = fn?.();\n    });\n  }\n  cancel() {\n    if (this.id !== null) {\n      globalThis.cancelAnimationFrame(this.id);\n      this.id = null;\n    }\n    this.fn_cleanup?.();\n    this.fn_cleanup = void 0;\n  }\n  isActive() {\n    return this.id !== null;\n  }\n};\nfunction raf(fn) {\n  const frame = AnimationFrame.create();\n  frame.request(fn);\n  return frame.cleanup;\n}\nfunction nextTick(fn) {\n  const set = /* @__PURE__ */ new Set();\n  function raf2(fn2) {\n    const id = globalThis.requestAnimationFrame(fn2);\n    set.add(() => globalThis.cancelAnimationFrame(id));\n  }\n  raf2(() => raf2(fn));\n  return function cleanup() {\n    set.forEach((fn2) => fn2());\n  };\n}\nfunction queueBeforeEvent(el, type, cb) {\n  const cancelTimer = raf(() => {\n    el.removeEventListener(type, exec, true);\n    cb();\n  });\n  const exec = () => {\n    cancelTimer();\n    cb();\n  };\n  el.addEventListener(type, exec, { once: true, capture: true });\n  return cancelTimer;\n}\n\n// src/mutation-observer.ts\nfunction observeAttributesImpl(node, options) {\n  if (!node) return;\n  const { attributes, callback: fn } = options;\n  const win = node.ownerDocument.defaultView || window;\n  const obs = new win.MutationObserver((changes) => {\n    for (const change of changes) {\n      if (change.type === \"attributes\" && change.attributeName && attributes.includes(change.attributeName)) {\n        fn(change);\n      }\n    }\n  });\n  obs.observe(node, { attributes: true, attributeFilter: attributes });\n  return () => obs.disconnect();\n}\nfunction observeAttributes(nodeOrFn, options) {\n  const { defer } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n      cleanups.push(observeAttributesImpl(node, options));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\nfunction observeChildrenImpl(node, options) {\n  const { callback: fn } = options;\n  if (!node) return;\n  const win = node.ownerDocument.defaultView || window;\n  const obs = new win.MutationObserver(fn);\n  obs.observe(node, { childList: true, subtree: true });\n  return () => obs.disconnect();\n}\nfunction observeChildren(nodeOrFn, options) {\n  const { defer } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n      cleanups.push(observeChildrenImpl(node, options));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\n\n// src/navigate.ts\nfunction navigate(items, current, options = {}) {\n  if (!current) return null;\n  const { orientation = \"both\", loop = true, dir = \"ltr\", key } = options;\n  if (!items.length || !key) return null;\n  const isVertical = key === \"ArrowUp\" || key === \"ArrowDown\";\n  const isHorizontal = key === \"ArrowLeft\" || key === \"ArrowRight\";\n  if (!isVertical && !isHorizontal && key !== \"Home\" && key !== \"End\") return null;\n  if (orientation === \"vertical\" && isHorizontal || orientation === \"horizontal\" && isVertical) return null;\n  if (key === \"Home\") return items[0] || null;\n  if (key === \"End\") return items[items.length - 1] || null;\n  const idx = items.indexOf(current);\n  if (idx === -1) return null;\n  let isForward;\n  if (orientation === \"both\") {\n    isForward = key === \"ArrowDown\" || (dir === \"ltr\" ? key === \"ArrowRight\" : key === \"ArrowLeft\");\n  } else {\n    isForward = isVertical ? key === \"ArrowDown\" : dir === \"ltr\" ? key === \"ArrowRight\" : key === \"ArrowLeft\";\n  }\n  const nextIdx = isForward ? loop ? (idx + 1) % items.length : Math.min(idx + 1, items.length - 1) : loop ? (idx - 1 + items.length) % items.length : Math.max(0, idx - 1);\n  return items[nextIdx] || null;\n}\nfunction clickIfLink(el) {\n  const click = () => {\n    const win = getWindow(el);\n    el.dispatchEvent(new win.MouseEvent(\"click\"));\n  };\n  if (isFirefox()) {\n    queueBeforeEvent(el, \"keyup\", click);\n  } else {\n    queueMicrotask(click);\n  }\n}\n\n// src/overflow.ts\nfunction getNearestOverflowAncestor(el) {\n  const parentNode = getParentNode(el);\n  if (isRootElement(parentNode)) return getDocument(parentNode).body;\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) return parentNode;\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(el, list = []) {\n  const scrollableAncestor = getNearestOverflowAncestor(el);\n  const isBody = scrollableAncestor === el.ownerDocument.body;\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, []));\n}\nvar getElementRect = (el) => {\n  if (isHTMLElement(el)) return el.getBoundingClientRect();\n  if (isVisualViewport(el)) return { top: 0, left: 0, bottom: el.height, right: el.width };\n  return { top: 0, left: 0, bottom: el.innerHeight, right: el.innerWidth };\n};\nfunction isInView(el, ancestor) {\n  if (!isHTMLElement(el)) return true;\n  const ancestorRect = getElementRect(ancestor);\n  const elRect = el.getBoundingClientRect();\n  return elRect.top >= ancestorRect.top && elRect.left >= ancestorRect.left && elRect.bottom <= ancestorRect.bottom && elRect.right <= ancestorRect.right;\n}\nvar OVERFLOW_RE = /auto|scroll|overlay|hidden|clip/;\nvar nonOverflowValues = /* @__PURE__ */ new Set([\"inline\", \"contents\"]);\nfunction isOverflowElement(el) {\n  const win = getWindow(el);\n  const { overflow, overflowX, overflowY, display } = win.getComputedStyle(el);\n  return OVERFLOW_RE.test(overflow + overflowY + overflowX) && !nonOverflowValues.has(display);\n}\nfunction isScrollable(el) {\n  return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;\n}\nfunction scrollIntoView(el, options) {\n  const { rootEl, ...scrollOptions } = options || {};\n  if (!el || !rootEl) return;\n  if (!isOverflowElement(rootEl) || !isScrollable(rootEl)) return;\n  el.scrollIntoView(scrollOptions);\n}\nfunction getScrollPosition(element) {\n  if (isHTMLElement(element)) {\n    return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop };\n  }\n  return { scrollLeft: element.scrollX, scrollTop: element.scrollY };\n}\n\n// src/point.ts\nfunction getRelativePoint(point, element) {\n  const { left, top, width, height } = element.getBoundingClientRect();\n  const offset = { x: point.x - left, y: point.y - top };\n  const percent = { x: clamp(offset.x / width), y: clamp(offset.y / height) };\n  function getPercentValue(options = {}) {\n    const { dir = \"ltr\", orientation = \"horizontal\", inverted } = options;\n    const invertX = typeof inverted === \"object\" ? inverted.x : inverted;\n    const invertY = typeof inverted === \"object\" ? inverted.y : inverted;\n    if (orientation === \"horizontal\") {\n      return dir === \"rtl\" || invertX ? 1 - percent.x : percent.x;\n    }\n    return invertY ? 1 - percent.y : percent.y;\n  }\n  return { offset, percent, getPercentValue };\n}\n\n// src/pointer-lock.ts\nfunction requestPointerLock(doc, fn) {\n  const body = doc.body;\n  const supported = \"pointerLockElement\" in doc || \"mozPointerLockElement\" in doc;\n  const isLocked = () => !!doc.pointerLockElement;\n  function onPointerChange() {\n    fn?.(isLocked());\n  }\n  function onPointerError(event) {\n    if (isLocked()) fn?.(false);\n    console.error(\"PointerLock error occurred:\", event);\n    doc.exitPointerLock();\n  }\n  if (!supported) return;\n  try {\n    body.requestPointerLock();\n  } catch {\n  }\n  const cleanup = [\n    addDomEvent(doc, \"pointerlockchange\", onPointerChange, false),\n    addDomEvent(doc, \"pointerlockerror\", onPointerError, false)\n  ];\n  return () => {\n    cleanup.forEach((cleanup2) => cleanup2());\n    doc.exitPointerLock();\n  };\n}\n\n// src/text-selection.ts\nvar state = \"default\";\nvar userSelect = \"\";\nvar elementMap = /* @__PURE__ */ new WeakMap();\nfunction disableTextSelectionImpl(options = {}) {\n  const { target, doc } = options;\n  const docNode = doc ?? document;\n  const rootEl = docNode.documentElement;\n  if (isIos()) {\n    if (state === \"default\") {\n      userSelect = rootEl.style.webkitUserSelect;\n      rootEl.style.webkitUserSelect = \"none\";\n    }\n    state = \"disabled\";\n  } else if (target) {\n    elementMap.set(target, target.style.userSelect);\n    target.style.userSelect = \"none\";\n  }\n  return () => restoreTextSelection({ target, doc: docNode });\n}\nfunction restoreTextSelection(options = {}) {\n  const { target, doc } = options;\n  const docNode = doc ?? document;\n  const rootEl = docNode.documentElement;\n  if (isIos()) {\n    if (state !== \"disabled\") return;\n    state = \"restoring\";\n    setTimeout(() => {\n      nextTick(() => {\n        if (state === \"restoring\") {\n          if (rootEl.style.webkitUserSelect === \"none\") {\n            rootEl.style.webkitUserSelect = userSelect || \"\";\n          }\n          userSelect = \"\";\n          state = \"default\";\n        }\n      });\n    }, 300);\n  } else {\n    if (target && elementMap.has(target)) {\n      const prevUserSelect = elementMap.get(target);\n      if (target.style.userSelect === \"none\") {\n        target.style.userSelect = prevUserSelect ?? \"\";\n      }\n      if (target.getAttribute(\"style\") === \"\") {\n        target.removeAttribute(\"style\");\n      }\n      elementMap.delete(target);\n    }\n  }\n}\nfunction disableTextSelection(options = {}) {\n  const { defer, target, ...restOptions } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const node = typeof target === \"function\" ? target() : target;\n      cleanups.push(disableTextSelectionImpl({ ...restOptions, target: node }));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\n\n// src/pointer-move.ts\nfunction trackPointerMove(doc, handlers) {\n  const { onPointerMove, onPointerUp } = handlers;\n  const handleMove = (event) => {\n    const point = getEventPoint(event);\n    const distance = Math.sqrt(point.x ** 2 + point.y ** 2);\n    const moveBuffer = event.pointerType === \"touch\" ? 10 : 5;\n    if (distance < moveBuffer) return;\n    if (event.pointerType === \"mouse\" && event.buttons === 0) {\n      handleUp(event);\n      return;\n    }\n    onPointerMove({ point, event });\n  };\n  const handleUp = (event) => {\n    const point = getEventPoint(event);\n    onPointerUp({ point, event });\n  };\n  const cleanups = [\n    addDomEvent(doc, \"pointermove\", handleMove, false),\n    addDomEvent(doc, \"pointerup\", handleUp, false),\n    addDomEvent(doc, \"pointercancel\", handleUp, false),\n    addDomEvent(doc, \"contextmenu\", handleUp, false),\n    disableTextSelection({ doc })\n  ];\n  return () => {\n    cleanups.forEach((cleanup) => cleanup());\n  };\n}\n\n// src/press.ts\nfunction trackPress(options) {\n  const {\n    pointerNode,\n    keyboardNode = pointerNode,\n    onPress,\n    onPressStart,\n    onPressEnd,\n    isValidKey = (e) => e.key === \"Enter\"\n  } = options;\n  if (!pointerNode) return noop;\n  const win = getWindow(pointerNode);\n  let removeStartListeners = noop;\n  let removeEndListeners = noop;\n  let removeAccessibleListeners = noop;\n  const getInfo = (event) => ({\n    point: getEventPoint(event),\n    event\n  });\n  function startPress(event) {\n    onPressStart?.(getInfo(event));\n  }\n  function cancelPress(event) {\n    onPressEnd?.(getInfo(event));\n  }\n  const startPointerPress = (startEvent) => {\n    removeEndListeners();\n    const endPointerPress = (endEvent) => {\n      const target = getEventTarget(endEvent);\n      if (contains(pointerNode, target)) {\n        onPress?.(getInfo(endEvent));\n      } else {\n        onPressEnd?.(getInfo(endEvent));\n      }\n    };\n    const removePointerUpListener = addDomEvent(win, \"pointerup\", endPointerPress, { passive: !onPress, once: true });\n    const removePointerCancelListener = addDomEvent(win, \"pointercancel\", cancelPress, {\n      passive: !onPressEnd,\n      once: true\n    });\n    removeEndListeners = pipe(removePointerUpListener, removePointerCancelListener);\n    if (isActiveElement(keyboardNode) && startEvent.pointerType === \"mouse\") {\n      startEvent.preventDefault();\n    }\n    startPress(startEvent);\n  };\n  const removePointerListener = addDomEvent(pointerNode, \"pointerdown\", startPointerPress, { passive: !onPressStart });\n  const removeFocusListener = addDomEvent(keyboardNode, \"focus\", startAccessiblePress);\n  removeStartListeners = pipe(removePointerListener, removeFocusListener);\n  function startAccessiblePress() {\n    const handleKeydown = (keydownEvent) => {\n      if (!isValidKey(keydownEvent)) return;\n      const handleKeyup = (keyupEvent) => {\n        if (!isValidKey(keyupEvent)) return;\n        const evt2 = new win.PointerEvent(\"pointerup\");\n        const info = getInfo(evt2);\n        onPress?.(info);\n        onPressEnd?.(info);\n      };\n      removeEndListeners();\n      removeEndListeners = addDomEvent(keyboardNode, \"keyup\", handleKeyup);\n      const evt = new win.PointerEvent(\"pointerdown\");\n      startPress(evt);\n    };\n    const handleBlur = () => {\n      const evt = new win.PointerEvent(\"pointercancel\");\n      cancelPress(evt);\n    };\n    const removeKeydownListener = addDomEvent(keyboardNode, \"keydown\", handleKeydown);\n    const removeBlurListener = addDomEvent(keyboardNode, \"blur\", handleBlur);\n    removeAccessibleListeners = pipe(removeKeydownListener, removeBlurListener);\n  }\n  return () => {\n    removeStartListeners();\n    removeEndListeners();\n    removeAccessibleListeners();\n  };\n}\n\n// src/proxy-tab-focus.ts\nfunction proxyTabFocusImpl(container, options = {}) {\n  const { triggerElement, onFocus, onFocusEnter, getShadowRoot } = options;\n  const doc = container?.ownerDocument || document;\n  const body = doc.body;\n  function onKeyDown(event) {\n    if (event.key !== \"Tab\") return;\n    let elementToFocus = null;\n    const [firstTabbable, lastTabbable] = getTabbableEdges(container, { includeContainer: true, getShadowRoot });\n    const nextTabbableAfterTrigger = getNextTabbable(body, { current: triggerElement, getShadowRoot });\n    const noTabbableElements = !firstTabbable && !lastTabbable;\n    if (event.shiftKey && isActiveElement(nextTabbableAfterTrigger)) {\n      onFocusEnter?.();\n      elementToFocus = lastTabbable;\n    } else if (event.shiftKey && (isActiveElement(firstTabbable) || noTabbableElements)) {\n      elementToFocus = triggerElement;\n    } else if (!event.shiftKey && isActiveElement(triggerElement)) {\n      onFocusEnter?.();\n      elementToFocus = firstTabbable;\n    } else if (!event.shiftKey && (isActiveElement(lastTabbable) || noTabbableElements)) {\n      elementToFocus = nextTabbableAfterTrigger;\n    }\n    if (!elementToFocus) return;\n    event.preventDefault();\n    if (typeof onFocus === \"function\") {\n      onFocus(elementToFocus);\n    } else {\n      elementToFocus.focus();\n    }\n  }\n  return addDomEvent(doc, \"keydown\", onKeyDown, true);\n}\nfunction proxyTabFocus(container, options) {\n  const { defer, triggerElement, ...restOptions } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const node = typeof container === \"function\" ? container() : container;\n      const trigger = typeof triggerElement === \"function\" ? triggerElement() : triggerElement;\n      cleanups.push(proxyTabFocusImpl(node, { triggerElement: trigger, ...restOptions }));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\n\n// src/query.ts\nfunction queryAll(root, selector) {\n  return Array.from(root?.querySelectorAll(selector) ?? []);\n}\nfunction query(root, selector) {\n  return root?.querySelector(selector) ?? null;\n}\nvar defaultItemToId = (v) => v.id;\nfunction itemById(v, id, itemToId = defaultItemToId) {\n  return v.find((item) => itemToId(item) === id);\n}\nfunction indexOfId(v, id, itemToId = defaultItemToId) {\n  const item = itemById(v, id, itemToId);\n  return item ? v.indexOf(item) : -1;\n}\nfunction nextById(v, id, loop = true) {\n  let idx = indexOfId(v, id);\n  idx = loop ? (idx + 1) % v.length : Math.min(idx + 1, v.length - 1);\n  return v[idx];\n}\nfunction prevById(v, id, loop = true) {\n  let idx = indexOfId(v, id);\n  if (idx === -1) return loop ? v[v.length - 1] : null;\n  idx = loop ? (idx - 1 + v.length) % v.length : Math.max(0, idx - 1);\n  return v[idx];\n}\n\n// src/resize-observer.ts\nfunction createSharedResizeObserver(options) {\n  const listeners = /* @__PURE__ */ new WeakMap();\n  let observer;\n  const entries = /* @__PURE__ */ new WeakMap();\n  const getObserver = (win) => {\n    if (observer) return observer;\n    observer = new win.ResizeObserver((observedEntries) => {\n      for (const entry of observedEntries) {\n        entries.set(entry.target, entry);\n        const elementListeners = listeners.get(entry.target);\n        if (elementListeners) {\n          for (const listener of elementListeners) {\n            listener(entry);\n          }\n        }\n      }\n    });\n    return observer;\n  };\n  const observe = (element, listener) => {\n    let elementListeners = listeners.get(element) || /* @__PURE__ */ new Set();\n    elementListeners.add(listener);\n    listeners.set(element, elementListeners);\n    const win = getWindow(element);\n    getObserver(win).observe(element, options);\n    return () => {\n      const elementListeners2 = listeners.get(element);\n      if (!elementListeners2) return;\n      elementListeners2.delete(listener);\n      if (elementListeners2.size === 0) {\n        listeners.delete(element);\n        getObserver(win).unobserve(element);\n      }\n    };\n  };\n  const unobserve = (element) => {\n    listeners.delete(element);\n    observer?.unobserve(element);\n  };\n  return {\n    observe,\n    unobserve\n  };\n}\nvar resizeObserverContentBox = /* @__PURE__ */ createSharedResizeObserver({\n  box: \"content-box\"\n});\nvar resizeObserverBorderBox = /* @__PURE__ */ createSharedResizeObserver({\n  box: \"border-box\"\n});\nvar resizeObserverDevicePixelContentBox = /* @__PURE__ */ createSharedResizeObserver({\n  box: \"device-pixel-content-box\"\n});\n\n// src/scope.ts\nfunction createScope(methods) {\n  const dom = {\n    getRootNode: (ctx) => ctx.getRootNode?.() ?? document,\n    getDoc: (ctx) => getDocument(dom.getRootNode(ctx)),\n    getWin: (ctx) => dom.getDoc(ctx).defaultView ?? window,\n    getActiveElement: (ctx) => getActiveElement(dom.getRootNode(ctx)),\n    isActiveElement,\n    getById: (ctx, id) => dom.getRootNode(ctx).getElementById(id),\n    setValue: (elem, value) => {\n      if (elem == null || value == null) return;\n      setElementValue(elem, value.toString());\n    }\n  };\n  return { ...dom, ...methods };\n}\n\n// src/searchable.ts\nvar sanitize = (str) => str.split(\"\").map((char) => {\n  const code = char.charCodeAt(0);\n  if (code > 0 && code < 128) return char;\n  if (code >= 128 && code <= 255) return `/x${code.toString(16)}`.replace(\"/\", \"\\\\\");\n  return \"\";\n}).join(\"\").trim();\nvar getValueText = (el) => {\n  return sanitize(el.dataset?.valuetext ?? el.textContent ?? \"\");\n};\nvar match = (valueText, query2) => {\n  return valueText.trim().toLowerCase().startsWith(query2.toLowerCase());\n};\nfunction getByText(v, text, currentId, itemToId = defaultItemToId) {\n  const index = currentId ? indexOfId(v, currentId, itemToId) : -1;\n  let items = currentId ? wrap(v, index) : v;\n  const isSingleKey = text.length === 1;\n  if (isSingleKey) {\n    items = items.filter((item) => itemToId(item) !== currentId);\n  }\n  return items.find((item) => match(getValueText(item), text));\n}\n\n// src/set.ts\nfunction setAttribute(el, attr, v) {\n  const prev = el.getAttribute(attr);\n  const exists = prev != null;\n  if (prev === v) return noop;\n  el.setAttribute(attr, v);\n  return () => {\n    if (!exists) {\n      el.removeAttribute(attr);\n    } else {\n      el.setAttribute(attr, prev);\n    }\n  };\n}\nfunction setProperty(el, prop, v) {\n  const exists = prop in el;\n  const prev = el[prop];\n  if (prev === v) return noop;\n  el[prop] = v;\n  return () => {\n    if (!exists) {\n      delete el[prop];\n    } else {\n      el[prop] = prev;\n    }\n  };\n}\nfunction setStyle(el, style) {\n  if (!el) return noop;\n  const prev = Object.keys(style).reduce((acc, key) => {\n    acc[key] = el.style.getPropertyValue(key);\n    return acc;\n  }, {});\n  if (isEqual(prev, style)) return noop;\n  Object.assign(el.style, style);\n  return () => {\n    Object.assign(el.style, prev);\n    if (el.style.length === 0) {\n      el.removeAttribute(\"style\");\n    }\n  };\n}\nfunction setStyleProperty(el, prop, value) {\n  if (!el) return noop;\n  const prev = el.style.getPropertyValue(prop);\n  if (prev === value) return noop;\n  el.style.setProperty(prop, value);\n  return () => {\n    el.style.setProperty(prop, prev);\n    if (el.style.length === 0) {\n      el.removeAttribute(\"style\");\n    }\n  };\n}\nfunction isEqual(a, b) {\n  return Object.keys(a).every((key) => a[key] === b[key]);\n}\n\n// src/typeahead.ts\nfunction getByTypeaheadImpl(baseItems, options) {\n  const { state: state2, activeId, key, timeout = 350, itemToId } = options;\n  const search = state2.keysSoFar + key;\n  const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n  const query2 = isRepeated ? search[0] : search;\n  let items = baseItems.slice();\n  const next = getByText(items, query2, activeId, itemToId);\n  function cleanup() {\n    clearTimeout(state2.timer);\n    state2.timer = -1;\n  }\n  function update(value) {\n    state2.keysSoFar = value;\n    cleanup();\n    if (value !== \"\") {\n      state2.timer = +setTimeout(() => {\n        update(\"\");\n        cleanup();\n      }, timeout);\n    }\n  }\n  update(search);\n  return next;\n}\nvar getByTypeahead = /* @__PURE__ */ Object.assign(getByTypeaheadImpl, {\n  defaultOptions: { keysSoFar: \"\", timer: -1 },\n  isValidEvent: isValidTypeaheadEvent\n});\nfunction isValidTypeaheadEvent(event) {\n  return event.key.length === 1 && !event.ctrlKey && !event.metaKey;\n}\n\n// src/visual-viewport.ts\nfunction trackVisualViewport(doc, fn) {\n  const win = doc?.defaultView || window;\n  const onResize = () => {\n    fn?.(getViewportSize(win));\n  };\n  onResize();\n  return addDomEvent(win.visualViewport ?? win, \"resize\", onResize);\n}\nfunction getViewportSize(win) {\n  return {\n    width: win.visualViewport?.width || win.innerWidth,\n    height: win.visualViewport?.height || win.innerHeight\n  };\n}\n\n// src/visually-hidden.ts\nvar visuallyHiddenStyle = {\n  border: \"0\",\n  clip: \"rect(0 0 0 0)\",\n  height: \"1px\",\n  margin: \"-1px\",\n  overflow: \"hidden\",\n  padding: \"0\",\n  position: \"absolute\",\n  width: \"1px\",\n  whiteSpace: \"nowrap\",\n  wordWrap: \"normal\"\n};\nfunction setVisuallyHidden(el) {\n  Object.assign(el.style, visuallyHiddenStyle);\n}\n\n// src/wait-for.ts\nfunction waitForPromise(promise, controller, timeout) {\n  const { signal } = controller;\n  const wrappedPromise = new Promise((resolve, reject) => {\n    const timeoutId = setTimeout(() => {\n      reject(new Error(`Timeout of ${timeout}ms exceeded`));\n    }, timeout);\n    signal.addEventListener(\"abort\", () => {\n      clearTimeout(timeoutId);\n      reject(new Error(\"Promise aborted\"));\n    });\n    promise.then((result) => {\n      if (!signal.aborted) {\n        clearTimeout(timeoutId);\n        resolve(result);\n      }\n    }).catch((error) => {\n      if (!signal.aborted) {\n        clearTimeout(timeoutId);\n        reject(error);\n      }\n    });\n  });\n  const abort = () => controller.abort();\n  return [wrappedPromise, abort];\n}\nfunction waitForElement(target, options) {\n  const { timeout, rootNode } = options;\n  const win = getWindow(rootNode);\n  const doc = getDocument(rootNode);\n  const controller = new win.AbortController();\n  return waitForPromise(\n    new Promise((resolve) => {\n      const el = target();\n      if (el) {\n        resolve(el);\n        return;\n      }\n      const observer = new win.MutationObserver(() => {\n        const el2 = target();\n        if (el2 && el2.isConnected) {\n          observer.disconnect();\n          resolve(el2);\n        }\n      });\n      observer.observe(doc.body, {\n        childList: true,\n        subtree: true\n      });\n    }),\n    controller,\n    timeout\n  );\n}\nfunction waitForEvent(target, event, options) {\n  let cleanup;\n  const { predicate, ...listenerOptions } = options ?? {};\n  const promise = new Promise((resolve) => {\n    const element = target?.();\n    if (!element) {\n      return;\n    }\n    const handler = (e) => {\n      if (!predicate || predicate(element)) {\n        resolve(e);\n        cleanup?.();\n      }\n    };\n    element.addEventListener(event, handler, listenerOptions);\n    cleanup = () => element.removeEventListener(event, handler, listenerOptions);\n  });\n  return [promise, () => cleanup?.()];\n}\n\nexport { AnimationFrame, MAX_Z_INDEX, addDomEvent, ariaAttr, clickIfLink, contains, createScope, dataAttr, defaultItemToId, disableTextSelection, dispatchInputCheckedEvent, dispatchInputValueEvent, findControlledElements, getActiveElement, getBeforeInputValue, getByText, getByTypeahead, getComputedStyle, getControlledElements, getDataUrl, getDocument, getDocumentElement, getEventKey, getEventPoint, getEventStep, getEventTarget, getFirstFocusable, getFirstTabbable, getFocusables, getInitialFocus, getLastTabbable, getNativeEvent, getNearestOverflowAncestor, getNextTabbable, getNodeName, getOverflowAncestors, getParentNode, getPlatform, getRelativePoint, getRootNode, getScrollPosition, getTabIndex, getTabbableEdges, getTabbables, getUserAgent, getWindow, hasControllerElements, indexOfId, isActiveElement, isAnchorElement, isAndroid, isApple, isCaretAtStart, isChrome, isComposingEvent, isContextMenuEvent, isControlledByExpandedController, isControlledElement, isControllerElement, isCtrlOrMetaKey, isDocument, isDom, isDownloadingEvent, isEditableElement, isElementVisible, isFirefox, isFocusable, isHTMLElement, isIPad, isIPhone, isInView, isInputElement, isInteractiveContainerElement, isIos, isKeyboardClick, isLeftClick, isMac, isModifierKey, isNode, isOpeningInNewTab, isOverflowElement, isPrintableKey, isRootElement, isSafari, isSelfTarget, isShadowRoot, isTabbable, isTouchDevice, isTouchEvent, isValidTabEvent, isVirtualClick, isVirtualPointerEvent, isVisualViewport, isWebKit, isWindow, itemById, navigate, nextById, nextTick, observeAttributes, observeChildren, prevById, proxyTabFocus, query, queryAll, queueBeforeEvent, raf, requestPointerLock, resizeObserverBorderBox, resizeObserverContentBox, resizeObserverDevicePixelContentBox, restoreTextSelection, scrollIntoView, setAttribute, setCaretToEnd, setElementChecked, setElementValue, setProperty, setStyle, setStyleProperty, setVisuallyHidden, trackFormControl, trackPointerMove, trackPress, trackVisualViewport, visuallyHiddenStyle, waitForElement, waitForEvent, waitForPromise };\n", "var __defProp = Object.defineProperty;\nvar __typeError = (msg) => {\n  throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n\n// src/array.ts\nfunction toArray(v) {\n  if (v == null) return [];\n  return Array.isArray(v) ? v : [v];\n}\nvar fromLength = (length) => Array.from(Array(length).keys());\nvar first = (v) => v[0];\nvar last = (v) => v[v.length - 1];\nvar isEmpty = (v) => v.length === 0;\nvar has = (v, t) => v.indexOf(t) !== -1;\nvar add = (v, ...items) => v.concat(items);\nvar remove = (v, ...items) => v.filter((t) => !items.includes(t));\nvar removeAt = (v, i) => v.filter((_, idx) => idx !== i);\nvar insertAt = (v, i, ...items) => [...v.slice(0, i), ...items, ...v.slice(i)];\nvar uniq = (v) => Array.from(new Set(v));\nvar diff = (a, b) => {\n  const set = new Set(b);\n  return a.filter((t) => !set.has(t));\n};\nvar addOrRemove = (v, item) => has(v, item) ? remove(v, item) : add(v, item);\nfunction clear(v) {\n  while (v.length > 0) v.pop();\n  return v;\n}\nfunction nextIndex(v, idx, opts = {}) {\n  const { step = 1, loop = true } = opts;\n  const next2 = idx + step;\n  const len = v.length;\n  const last2 = len - 1;\n  if (idx === -1) return step > 0 ? 0 : last2;\n  if (next2 < 0) return loop ? last2 : 0;\n  if (next2 >= len) return loop ? 0 : idx > len ? len : idx;\n  return next2;\n}\nfunction next(v, idx, opts = {}) {\n  return v[nextIndex(v, idx, opts)];\n}\nfunction prevIndex(v, idx, opts = {}) {\n  const { step = 1, loop = true } = opts;\n  return nextIndex(v, idx, { step: -step, loop });\n}\nfunction prev(v, index, opts = {}) {\n  return v[prevIndex(v, index, opts)];\n}\nfunction chunk(v, size) {\n  return v.reduce((rows, value, index) => {\n    if (index % size === 0) rows.push([value]);\n    else last(rows)?.push(value);\n    return rows;\n  }, []);\n}\nfunction flatArray(arr) {\n  return arr.reduce((flat, item) => {\n    if (Array.isArray(item)) {\n      return flat.concat(flatArray(item));\n    }\n    return flat.concat(item);\n  }, []);\n}\nfunction partition(arr, fn) {\n  return arr.reduce(\n    ([pass, fail], value) => {\n      if (fn(value)) pass.push(value);\n      else fail.push(value);\n      return [pass, fail];\n    },\n    [[], []]\n  );\n}\n\n// src/equal.ts\nvar isArrayLike = (value) => value?.constructor.name === \"Array\";\nvar isArrayEqual = (a, b) => {\n  if (a.length !== b.length) return false;\n  for (let i = 0; i < a.length; i++) {\n    if (!isEqual(a[i], b[i])) return false;\n  }\n  return true;\n};\nvar isEqual = (a, b) => {\n  if (Object.is(a, b)) return true;\n  if (a == null && b != null || a != null && b == null) return false;\n  if (typeof a?.isEqual === \"function\" && typeof b?.isEqual === \"function\") {\n    return a.isEqual(b);\n  }\n  if (typeof a === \"function\" && typeof b === \"function\") {\n    return a.toString() === b.toString();\n  }\n  if (isArrayLike(a) && isArrayLike(b)) {\n    return isArrayEqual(Array.from(a), Array.from(b));\n  }\n  if (!(typeof a === \"object\") || !(typeof b === \"object\")) return false;\n  const keys = Object.keys(b ?? /* @__PURE__ */ Object.create(null));\n  const length = keys.length;\n  for (let i = 0; i < length; i++) {\n    const hasKey = Reflect.has(a, keys[i]);\n    if (!hasKey) return false;\n  }\n  for (let i = 0; i < length; i++) {\n    const key = keys[i];\n    if (!isEqual(a[key], b[key])) return false;\n  }\n  return true;\n};\n\n// src/guard.ts\nvar isDev = () => process.env.NODE_ENV !== \"production\";\nvar isArray = (v) => Array.isArray(v);\nvar isBoolean = (v) => v === true || v === false;\nvar isObjectLike = (v) => v != null && typeof v === \"object\";\nvar isObject = (v) => isObjectLike(v) && !isArray(v);\nvar isNumber = (v) => typeof v === \"number\" && !Number.isNaN(v);\nvar isString = (v) => typeof v === \"string\";\nvar isFunction = (v) => typeof v === \"function\";\nvar isNull = (v) => v == null;\nvar hasProp = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nvar baseGetTag = (v) => Object.prototype.toString.call(v);\nvar fnToString = Function.prototype.toString;\nvar objectCtorString = fnToString.call(Object);\nvar isPlainObject = (v) => {\n  if (!isObjectLike(v) || baseGetTag(v) != \"[object Object]\" || isFrameworkElement(v)) return false;\n  const proto = Object.getPrototypeOf(v);\n  if (proto === null) return true;\n  const Ctor = hasProp(proto, \"constructor\") && proto.constructor;\n  return typeof Ctor == \"function\" && Ctor instanceof Ctor && fnToString.call(Ctor) == objectCtorString;\n};\nvar isReactElement = (x) => typeof x === \"object\" && x !== null && \"$$typeof\" in x && \"props\" in x;\nvar isVueElement = (x) => typeof x === \"object\" && x !== null && \"__v_isVNode\" in x;\nvar isFrameworkElement = (x) => isReactElement(x) || isVueElement(x);\n\n// src/functions.ts\nvar runIfFn = (v, ...a) => {\n  const res = typeof v === \"function\" ? v(...a) : v;\n  return res ?? void 0;\n};\nvar cast = (v) => v;\nvar identity = (v) => v();\nvar noop = () => {\n};\nvar callAll = (...fns) => (...a) => {\n  fns.forEach(function(fn) {\n    fn?.(...a);\n  });\n};\nvar uuid = /* @__PURE__ */ (() => {\n  let id = 0;\n  return () => {\n    id++;\n    return id.toString(36);\n  };\n})();\nfunction match(key, record, ...args) {\n  if (key in record) {\n    const fn = record[key];\n    return isFunction(fn) ? fn(...args) : fn;\n  }\n  const error = new Error(`No matching key: ${JSON.stringify(key)} in ${JSON.stringify(Object.keys(record))}`);\n  Error.captureStackTrace?.(error, match);\n  throw error;\n}\nvar tryCatch = (fn, fallback) => {\n  try {\n    return fn();\n  } catch (error) {\n    if (error instanceof Error) {\n      Error.captureStackTrace?.(error, tryCatch);\n    }\n    return fallback?.();\n  }\n};\nfunction throttle(fn, wait = 0) {\n  let lastCall = 0;\n  let timeout = null;\n  return ((...args) => {\n    const now = Date.now();\n    const timeSinceLastCall = now - lastCall;\n    if (timeSinceLastCall >= wait) {\n      if (timeout) {\n        clearTimeout(timeout);\n        timeout = null;\n      }\n      fn(...args);\n      lastCall = now;\n    } else if (!timeout) {\n      timeout = setTimeout(() => {\n        fn(...args);\n        lastCall = Date.now();\n        timeout = null;\n      }, wait - timeSinceLastCall);\n    }\n  });\n}\nfunction debounce(fn, wait = 0) {\n  let timeout = null;\n  return ((...args) => {\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = null;\n    }\n    timeout = setTimeout(() => {\n      fn(...args);\n    }, wait);\n  });\n}\nvar toChar = (code) => String.fromCharCode(code + (code > 25 ? 39 : 97));\nfunction toName(code) {\n  let name = \"\";\n  let x;\n  for (x = Math.abs(code); x > 52; x = x / 52 | 0) name = toChar(x % 52) + name;\n  return toChar(x % 52) + name;\n}\nfunction toPhash(h, x) {\n  let i = x.length;\n  while (i) h = h * 33 ^ x.charCodeAt(--i);\n  return h;\n}\nvar hash = (value) => toName(toPhash(5381, value) >>> 0);\n\n// src/number.ts\nvar { floor, abs, round, min, max, pow, sign } = Math;\nvar isNaN = (v) => Number.isNaN(v);\nvar nan = (v) => isNaN(v) ? 0 : v;\nvar mod = (v, m) => (v % m + m) % m;\nvar wrap = (v, vmax) => (v % vmax + vmax) % vmax;\nvar getMinValueAtIndex = (i, v, vmin) => i === 0 ? vmin : v[i - 1];\nvar getMaxValueAtIndex = (i, v, vmax) => i === v.length - 1 ? vmax : v[i + 1];\nvar isValueAtMax = (v, vmax) => nan(v) >= vmax;\nvar isValueAtMin = (v, vmin) => nan(v) <= vmin;\nvar isValueWithinRange = (v, vmin, vmax) => {\n  const value = nan(v);\n  const minCheck = vmin == null || value >= vmin;\n  const maxCheck = vmax == null || value <= vmax;\n  return minCheck && maxCheck;\n};\nvar roundValue = (v, vmin, step) => round((nan(v) - vmin) / step) * step + vmin;\nvar clampValue = (v, vmin, vmax) => min(max(nan(v), vmin), vmax);\nvar clampPercent = (v) => clampValue(v, 0, 1);\nvar getValuePercent = (v, vmin, vmax) => (nan(v) - vmin) / (vmax - vmin);\nvar getPercentValue = (p, vmin, vmax, step) => clampValue(roundValue(p * (vmax - vmin) + vmin, vmin, step), vmin, vmax);\nvar roundToStepPrecision = (v, step) => {\n  let rv = v;\n  let ss = step.toString();\n  let pi = ss.indexOf(\".\");\n  let p = pi >= 0 ? ss.length - pi : 0;\n  if (p > 0) {\n    let pw = pow(10, p);\n    rv = round(rv * pw) / pw;\n  }\n  return rv;\n};\nvar roundToDpr = (v, dpr) => typeof dpr === \"number\" ? floor(v * dpr + 0.5) / dpr : round(v);\nvar snapValueToStep = (v, vmin, vmax, step) => {\n  const min2 = vmin != null ? Number(vmin) : 0;\n  const max2 = Number(vmax);\n  const remainder = (v - min2) % step;\n  let snapped = abs(remainder) * 2 >= step ? v + sign(remainder) * (step - abs(remainder)) : v - remainder;\n  snapped = roundToStepPrecision(snapped, step);\n  if (!isNaN(min2) && snapped < min2) {\n    snapped = min2;\n  } else if (!isNaN(max2) && snapped > max2) {\n    const stepsInRange = floor((max2 - min2) / step);\n    const largestValidStep = min2 + stepsInRange * step;\n    snapped = stepsInRange <= 0 || largestValidStep < min2 ? max2 : largestValidStep;\n  }\n  return roundToStepPrecision(snapped, step);\n};\nvar setValueAtIndex = (vs, i, v) => {\n  if (vs[i] === v) return vs;\n  return [...vs.slice(0, i), v, ...vs.slice(i + 1)];\n};\nfunction getValueSetterAtIndex(index, ctx) {\n  const minValueAtIndex = getMinValueAtIndex(index, ctx.values, ctx.min);\n  const maxValueAtIndex = getMaxValueAtIndex(index, ctx.values, ctx.max);\n  let nextValues = ctx.values.slice();\n  return function setValue(value) {\n    let nextValue = snapValueToStep(value, minValueAtIndex, maxValueAtIndex, ctx.step);\n    nextValues = setValueAtIndex(nextValues, index, value);\n    nextValues[index] = nextValue;\n    return nextValues;\n  };\n}\nfunction getNextStepValue(index, ctx) {\n  const nextValue = ctx.values[index] + ctx.step;\n  return getValueSetterAtIndex(index, ctx)(nextValue);\n}\nfunction getPreviousStepValue(index, ctx) {\n  const nextValue = ctx.values[index] - ctx.step;\n  return getValueSetterAtIndex(index, ctx)(nextValue);\n}\nvar getClosestValueIndex = (vs, t) => {\n  let i = vs.findIndex((v) => t - v < 0);\n  if (i === 0) return i;\n  if (i === -1) return vs.length - 1;\n  let vLeft = vs[i - 1];\n  let vRight = vs[i];\n  if (abs(vLeft - t) < abs(vRight - t)) return i - 1;\n  return i;\n};\nvar getClosestValue = (vs, t) => vs[getClosestValueIndex(vs, t)];\nvar getValueRanges = (vs, vmin, vmax, gap) => vs.map((v, i) => ({\n  min: i === 0 ? vmin : vs[i - 1] + gap,\n  max: i === vs.length - 1 ? vmax : vs[i + 1] - gap,\n  value: v\n}));\nvar getValueTransformer = (va, vb) => {\n  const [a, b] = va;\n  const [c, d] = vb;\n  return (v) => a === b || c === d ? c : c + (d - c) / (b - a) * (v - a);\n};\nvar toFixedNumber = (v, d = 0, b = 10) => {\n  const pow2 = Math.pow(b, d);\n  return round(v * pow2) / pow2;\n};\nvar countDecimals = (value) => {\n  if (!Number.isFinite(value)) return 0;\n  let e = 1, p = 0;\n  while (Math.round(value * e) / e !== value) {\n    e *= 10;\n    p += 1;\n  }\n  return p;\n};\nvar decimalOp = (a, op, b) => {\n  let result = op === \"+\" ? a + b : a - b;\n  if (a % 1 !== 0 || b % 1 !== 0) {\n    const multiplier = 10 ** Math.max(countDecimals(a), countDecimals(b));\n    a = Math.round(a * multiplier);\n    b = Math.round(b * multiplier);\n    result = op === \"+\" ? a + b : a - b;\n    result /= multiplier;\n  }\n  return result;\n};\nvar incrementValue = (v, s) => decimalOp(nan(v), \"+\", s);\nvar decrementValue = (v, s) => decimalOp(nan(v), \"-\", s);\nvar toPx = (v) => typeof v === \"number\" ? `${v}px` : v;\n\n// src/object.ts\nfunction compact(obj) {\n  if (!isPlainObject(obj) || obj === void 0) return obj;\n  const keys = Reflect.ownKeys(obj).filter((key) => typeof key === \"string\");\n  const filtered = {};\n  for (const key of keys) {\n    const value = obj[key];\n    if (value !== void 0) {\n      filtered[key] = compact(value);\n    }\n  }\n  return filtered;\n}\nvar json = (v) => JSON.parse(JSON.stringify(v));\nfunction pick(obj, keys) {\n  const filtered = {};\n  for (const key of keys) {\n    const value = obj[key];\n    if (value !== void 0) {\n      filtered[key] = value;\n    }\n  }\n  return filtered;\n}\nfunction splitProps(props, keys) {\n  const rest = {};\n  const result = {};\n  const keySet = new Set(keys);\n  const ownKeys = Reflect.ownKeys(props);\n  for (const key of ownKeys) {\n    if (keySet.has(key)) {\n      result[key] = props[key];\n    } else {\n      rest[key] = props[key];\n    }\n  }\n  return [result, rest];\n}\nvar createSplitProps = (keys) => {\n  return function split(props) {\n    return splitProps(props, keys);\n  };\n};\nfunction omit(obj, keys) {\n  return createSplitProps(keys)(obj)[1];\n}\n\n// src/store.ts\nfunction createStore(initialState, compare = Object.is) {\n  let state = { ...initialState };\n  const listeners = /* @__PURE__ */ new Set();\n  const subscribe = (listener) => {\n    listeners.add(listener);\n    return () => listeners.delete(listener);\n  };\n  const publish = () => {\n    listeners.forEach((listener) => listener());\n  };\n  const get = (key) => {\n    return state[key];\n  };\n  const set = (key, value) => {\n    if (!compare(state[key], value)) {\n      state[key] = value;\n      publish();\n    }\n  };\n  const update = (updates) => {\n    let hasChanges = false;\n    for (const key in updates) {\n      const value = updates[key];\n      if (value !== void 0 && !compare(state[key], value)) {\n        state[key] = value;\n        hasChanges = true;\n      }\n    }\n    if (hasChanges) {\n      publish();\n    }\n  };\n  const snapshot = () => ({ ...state });\n  return {\n    subscribe,\n    get,\n    set,\n    update,\n    snapshot\n  };\n}\n\n// src/timers.ts\nvar currentTime = () => performance.now();\nvar _tick;\nvar Timer = class {\n  constructor(onTick) {\n    this.onTick = onTick;\n    __publicField(this, \"frameId\", null);\n    __publicField(this, \"pausedAtMs\", null);\n    __publicField(this, \"context\");\n    __publicField(this, \"cancelFrame\", () => {\n      if (this.frameId === null) return;\n      cancelAnimationFrame(this.frameId);\n      this.frameId = null;\n    });\n    __publicField(this, \"setStartMs\", (startMs) => {\n      this.context.startMs = startMs;\n    });\n    __publicField(this, \"start\", () => {\n      if (this.frameId !== null) return;\n      const now = currentTime();\n      if (this.pausedAtMs !== null) {\n        this.context.startMs += now - this.pausedAtMs;\n        this.pausedAtMs = null;\n      } else {\n        this.context.startMs = now;\n      }\n      this.frameId = requestAnimationFrame(__privateGet(this, _tick));\n    });\n    __publicField(this, \"pause\", () => {\n      if (this.frameId === null) return;\n      this.cancelFrame();\n      this.pausedAtMs = currentTime();\n    });\n    __publicField(this, \"stop\", () => {\n      if (this.frameId === null) return;\n      this.cancelFrame();\n      this.pausedAtMs = null;\n    });\n    __privateAdd(this, _tick, (now) => {\n      this.context.now = now;\n      this.context.deltaMs = now - this.context.startMs;\n      const shouldContinue = this.onTick(this.context);\n      if (shouldContinue === false) {\n        this.stop();\n        return;\n      }\n      this.frameId = requestAnimationFrame(__privateGet(this, _tick));\n    });\n    this.context = { now: 0, startMs: currentTime(), deltaMs: 0 };\n  }\n  get elapsedMs() {\n    if (this.pausedAtMs !== null) {\n      return this.pausedAtMs - this.context.startMs;\n    }\n    return currentTime() - this.context.startMs;\n  }\n};\n_tick = new WeakMap();\nfunction setRafInterval(fn, intervalMs) {\n  const timer = new Timer(({ now, deltaMs }) => {\n    if (deltaMs >= intervalMs) {\n      const startMs = intervalMs > 0 ? now - deltaMs % intervalMs : now;\n      timer.setStartMs(startMs);\n      fn({ startMs, deltaMs });\n    }\n  });\n  timer.start();\n  return () => timer.stop();\n}\nfunction setRafTimeout(fn, delayMs) {\n  const timer = new Timer(({ deltaMs }) => {\n    if (deltaMs >= delayMs) {\n      fn();\n      return false;\n    }\n  });\n  timer.start();\n  return () => timer.stop();\n}\n\n// src/warning.ts\nfunction warn(...a) {\n  const m = a.length === 1 ? a[0] : a[1];\n  const c = a.length === 2 ? a[0] : true;\n  if (c && process.env.NODE_ENV !== \"production\") {\n    console.warn(m);\n  }\n}\nfunction invariant(...a) {\n  const m = a.length === 1 ? a[0] : a[1];\n  const c = a.length === 2 ? a[0] : true;\n  if (c && process.env.NODE_ENV !== \"production\") {\n    throw new Error(m);\n  }\n}\nfunction ensure(c, m) {\n  if (c == null) throw new Error(m());\n}\nfunction ensureProps(props, keys, scope) {\n  let missingKeys = [];\n  for (const key of keys) {\n    if (props[key] == null) missingKeys.push(key);\n  }\n  if (missingKeys.length > 0)\n    throw new Error(`[zag-js${scope ? ` > ${scope}` : \"\"}] missing required props: ${missingKeys.join(\", \")}`);\n}\n\nexport { Timer, add, addOrRemove, callAll, cast, chunk, clampPercent, clampValue, clear, compact, createSplitProps, createStore, debounce, decrementValue, diff, ensure, ensureProps, first, flatArray, fromLength, getClosestValue, getClosestValueIndex, getMaxValueAtIndex, getMinValueAtIndex, getNextStepValue, getPercentValue, getPreviousStepValue, getValuePercent, getValueRanges, getValueSetterAtIndex, getValueTransformer, has, hasProp, hash, identity, incrementValue, insertAt, invariant, isArray, isBoolean, isDev, isEmpty, isEqual, isFunction, isNaN, isNull, isNumber, isObject, isObjectLike, isPlainObject, isString, isValueAtMax, isValueAtMin, isValueWithinRange, json, last, match, mod, nan, next, nextIndex, noop, omit, partition, pick, prev, prevIndex, remove, removeAt, roundToDpr, roundToStepPrecision, roundValue, runIfFn, setRafInterval, setRafTimeout, setValueAtIndex, snapValueToStep, splitProps, throttle, toArray, toFixedNumber, toPx, tryCatch, uniq, uuid, warn, wrap };\n", "import { callAll, isEqual, isString } from '@zag-js/utils';\nimport { isActiveElement, getDocument, getActiveElement } from '@zag-js/dom-query';\n\n// src/merge-props.ts\nvar clsx = (...args) => args.map((str) => str?.trim?.()).filter(Boolean).join(\" \");\nvar CSS_REGEX = /((?:--)?(?:\\w+-?)+)\\s*:\\s*([^;]*)/g;\nvar serialize = (style) => {\n  const res = {};\n  let match;\n  while (match = CSS_REGEX.exec(style)) {\n    res[match[1]] = match[2];\n  }\n  return res;\n};\nvar css = (a, b) => {\n  if (isString(a)) {\n    if (isString(b)) return `${a};${b}`;\n    a = serialize(a);\n  } else if (isString(b)) {\n    b = serialize(b);\n  }\n  return Object.assign({}, a ?? {}, b ?? {});\n};\nfunction mergeProps(...args) {\n  let result = {};\n  for (let props of args) {\n    if (!props) continue;\n    for (let key in result) {\n      if (key.startsWith(\"on\") && typeof result[key] === \"function\" && typeof props[key] === \"function\") {\n        result[key] = callAll(props[key], result[key]);\n        continue;\n      }\n      if (key === \"className\" || key === \"class\") {\n        result[key] = clsx(result[key], props[key]);\n        continue;\n      }\n      if (key === \"style\") {\n        result[key] = css(result[key], props[key]);\n        continue;\n      }\n      result[key] = props[key] !== void 0 ? props[key] : result[key];\n    }\n    for (let key in props) {\n      if (result[key] === void 0) {\n        result[key] = props[key];\n      }\n    }\n    const symbols = Object.getOwnPropertySymbols(props);\n    for (let symbol of symbols) {\n      result[symbol] = props[symbol];\n    }\n  }\n  return result;\n}\nfunction memo(getDeps, fn, opts) {\n  let deps = [];\n  let result;\n  return (depArgs) => {\n    const newDeps = getDeps(depArgs);\n    const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => !isEqual(deps[index], dep));\n    if (!depsChanged) return result;\n    deps = newDeps;\n    result = fn(newDeps, depArgs);\n    opts?.onChange?.(result);\n    return result;\n  };\n}\n\n// src/create-machine.ts\nfunction createGuards() {\n  return {\n    and: (...guards) => {\n      return function andGuard(params) {\n        return guards.every((str) => params.guard(str));\n      };\n    },\n    or: (...guards) => {\n      return function orGuard(params) {\n        return guards.some((str) => params.guard(str));\n      };\n    },\n    not: (guard) => {\n      return function notGuard(params) {\n        return !params.guard(guard);\n      };\n    }\n  };\n}\nfunction createMachine(config) {\n  return config;\n}\nfunction setup() {\n  return {\n    guards: createGuards(),\n    createMachine: (config) => {\n      return createMachine(config);\n    },\n    choose: (transitions) => {\n      return function chooseFn({ choose }) {\n        return choose(transitions)?.actions;\n      };\n    }\n  };\n}\n\n// src/types.ts\nvar MachineStatus = /* @__PURE__ */ ((MachineStatus2) => {\n  MachineStatus2[\"NotStarted\"] = \"Not Started\";\n  MachineStatus2[\"Started\"] = \"Started\";\n  MachineStatus2[\"Stopped\"] = \"Stopped\";\n  return MachineStatus2;\n})(MachineStatus || {});\nvar INIT_STATE = \"__init__\";\nfunction createScope(props) {\n  const getRootNode = () => props.getRootNode?.() ?? document;\n  const getDoc = () => getDocument(getRootNode());\n  const getWin = () => getDoc().defaultView ?? window;\n  const getActiveElementFn = () => getActiveElement(getRootNode());\n  const getById = (id) => getRootNode().getElementById(id);\n  return {\n    ...props,\n    getRootNode,\n    getDoc,\n    getWin,\n    getActiveElement: getActiveElementFn,\n    isActiveElement,\n    getById\n  };\n}\n\nexport { INIT_STATE, MachineStatus, createGuards, createMachine, createScope, memo, mergeProps, setup };\n", "// src/prop-types.ts\nfunction createNormalizer(fn) {\n  return new Proxy({}, {\n    get(_target, key) {\n      if (key === \"style\")\n        return (props) => {\n          return fn({ style: props }).style;\n        };\n      return fn;\n    }\n  });\n}\n\n// src/create-props.ts\nvar createProps = () => (props) => Array.from(new Set(props));\n\nexport { createNormalizer, createProps };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { prevById, nextById, queryAll, getEventKey, isSafari, dataAttr } from '@zag-js/dom-query';\nimport { warn, add, remove, createSplitProps, last, first } from '@zag-js/utils';\nimport { createGuards, createMachine } from '@zag-js/core';\nimport { createProps } from '@zag-js/types';\n\n// src/accordion.anatomy.ts\nvar anatomy = createAnatomy(\"accordion\").parts(\"root\", \"item\", \"itemTrigger\", \"itemContent\", \"itemIndicator\");\nvar parts = anatomy.build();\nvar getRootId = (ctx) => ctx.ids?.root ?? `accordion:${ctx.id}`;\nvar getItemId = (ctx, value) => ctx.ids?.item?.(value) ?? `accordion:${ctx.id}:item:${value}`;\nvar getItemContentId = (ctx, value) => ctx.ids?.itemContent?.(value) ?? `accordion:${ctx.id}:content:${value}`;\nvar getItemTriggerId = (ctx, value) => ctx.ids?.itemTrigger?.(value) ?? `accordion:${ctx.id}:trigger:${value}`;\nvar getRootEl = (ctx) => ctx.getById(getRootId(ctx));\nvar getTriggerEls = (ctx) => {\n  const ownerId = CSS.escape(getRootId(ctx));\n  const selector = `[data-controls][data-ownedby='${ownerId}']:not([disabled])`;\n  return queryAll(getRootEl(ctx), selector);\n};\nvar getFirstTriggerEl = (ctx) => first(getTriggerEls(ctx));\nvar getLastTriggerEl = (ctx) => last(getTriggerEls(ctx));\nvar getNextTriggerEl = (ctx, id) => nextById(getTriggerEls(ctx), getItemTriggerId(ctx, id));\nvar getPrevTriggerEl = (ctx, id) => prevById(getTriggerEls(ctx), getItemTriggerId(ctx, id));\n\n// src/accordion.connect.ts\nfunction connect(service, normalize) {\n  const { send, context, prop, scope, computed } = service;\n  const focusedValue = context.get(\"focusedValue\");\n  const value = context.get(\"value\");\n  const multiple = prop(\"multiple\");\n  function setValue(value2) {\n    let nextValue = value2;\n    if (!multiple && nextValue.length > 1) {\n      nextValue = [nextValue[0]];\n    }\n    send({ type: \"VALUE.SET\", value: nextValue });\n  }\n  function getItemState(props2) {\n    return {\n      expanded: value.includes(props2.value),\n      focused: focusedValue === props2.value,\n      disabled: Boolean(props2.disabled ?? prop(\"disabled\"))\n    };\n  }\n  return {\n    focusedValue,\n    value,\n    setValue,\n    getItemState,\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        dir: prop(\"dir\"),\n        id: getRootId(scope),\n        \"data-orientation\": prop(\"orientation\")\n      });\n    },\n    getItemProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        ...parts.item.attrs,\n        dir: prop(\"dir\"),\n        id: getItemId(scope, props2.value),\n        \"data-state\": itemState.expanded ? \"open\" : \"closed\",\n        \"data-focus\": dataAttr(itemState.focused),\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-orientation\": prop(\"orientation\")\n      });\n    },\n    getItemContentProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        ...parts.itemContent.attrs,\n        dir: prop(\"dir\"),\n        role: \"region\",\n        id: getItemContentId(scope, props2.value),\n        \"aria-labelledby\": getItemTriggerId(scope, props2.value),\n        hidden: !itemState.expanded,\n        \"data-state\": itemState.expanded ? \"open\" : \"closed\",\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-focus\": dataAttr(itemState.focused),\n        \"data-orientation\": prop(\"orientation\")\n      });\n    },\n    getItemIndicatorProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        ...parts.itemIndicator.attrs,\n        dir: prop(\"dir\"),\n        \"aria-hidden\": true,\n        \"data-state\": itemState.expanded ? \"open\" : \"closed\",\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-focus\": dataAttr(itemState.focused),\n        \"data-orientation\": prop(\"orientation\")\n      });\n    },\n    getItemTriggerProps(props2) {\n      const { value: value2 } = props2;\n      const itemState = getItemState(props2);\n      return normalize.button({\n        ...parts.itemTrigger.attrs,\n        type: \"button\",\n        dir: prop(\"dir\"),\n        id: getItemTriggerId(scope, value2),\n        \"aria-controls\": getItemContentId(scope, value2),\n        \"data-controls\": getItemContentId(scope, value2),\n        \"aria-expanded\": itemState.expanded,\n        disabled: itemState.disabled,\n        \"data-orientation\": prop(\"orientation\"),\n        \"aria-disabled\": itemState.disabled,\n        \"data-state\": itemState.expanded ? \"open\" : \"closed\",\n        \"data-ownedby\": getRootId(scope),\n        onFocus() {\n          if (itemState.disabled) return;\n          send({ type: \"TRIGGER.FOCUS\", value: value2 });\n        },\n        onBlur() {\n          if (itemState.disabled) return;\n          send({ type: \"TRIGGER.BLUR\" });\n        },\n        onClick(event) {\n          if (itemState.disabled) return;\n          if (isSafari()) {\n            event.currentTarget.focus();\n          }\n          send({ type: \"TRIGGER.CLICK\", value: value2 });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (itemState.disabled) return;\n          const keyMap = {\n            ArrowDown() {\n              if (computed(\"isHorizontal\")) return;\n              send({ type: \"GOTO.NEXT\", value: value2 });\n            },\n            ArrowUp() {\n              if (computed(\"isHorizontal\")) return;\n              send({ type: \"GOTO.PREV\", value: value2 });\n            },\n            ArrowRight() {\n              if (!computed(\"isHorizontal\")) return;\n              send({ type: \"GOTO.NEXT\", value: value2 });\n            },\n            ArrowLeft() {\n              if (!computed(\"isHorizontal\")) return;\n              send({ type: \"GOTO.PREV\", value: value2 });\n            },\n            Home() {\n              send({ type: \"GOTO.FIRST\", value: value2 });\n            },\n            End() {\n              send({ type: \"GOTO.LAST\", value: value2 });\n            }\n          };\n          const key = getEventKey(event, {\n            dir: prop(\"dir\"),\n            orientation: prop(\"orientation\")\n          });\n          const exec = keyMap[key];\n          if (exec) {\n            exec(event);\n            event.preventDefault();\n          }\n        }\n      });\n    }\n  };\n}\nvar { and, not } = createGuards();\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      collapsible: false,\n      multiple: false,\n      orientation: \"vertical\",\n      defaultValue: [],\n      ...props2\n    };\n  },\n  initialState() {\n    return \"idle\";\n  },\n  context({ prop, bindable }) {\n    return {\n      focusedValue: bindable(() => ({\n        defaultValue: null,\n        sync: true,\n        onChange(value) {\n          prop(\"onFocusChange\")?.({ value });\n        }\n      })),\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        onChange(value) {\n          prop(\"onValueChange\")?.({ value });\n        }\n      }))\n    };\n  },\n  computed: {\n    isHorizontal: ({ prop }) => prop(\"orientation\") === \"horizontal\"\n  },\n  on: {\n    \"VALUE.SET\": {\n      actions: [\"setValue\"]\n    }\n  },\n  states: {\n    idle: {\n      on: {\n        \"TRIGGER.FOCUS\": {\n          target: \"focused\",\n          actions: [\"setFocusedValue\"]\n        }\n      }\n    },\n    focused: {\n      on: {\n        \"GOTO.NEXT\": {\n          actions: [\"focusNextTrigger\"]\n        },\n        \"GOTO.PREV\": {\n          actions: [\"focusPrevTrigger\"]\n        },\n        \"TRIGGER.CLICK\": [\n          {\n            guard: and(\"isExpanded\", \"canToggle\"),\n            actions: [\"collapse\"]\n          },\n          {\n            guard: not(\"isExpanded\"),\n            actions: [\"expand\"]\n          }\n        ],\n        \"GOTO.FIRST\": {\n          actions: [\"focusFirstTrigger\"]\n        },\n        \"GOTO.LAST\": {\n          actions: [\"focusLastTrigger\"]\n        },\n        \"TRIGGER.BLUR\": {\n          target: \"idle\",\n          actions: [\"clearFocusedValue\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      canToggle: ({ prop }) => !!prop(\"collapsible\") || !!prop(\"multiple\"),\n      isExpanded: ({ context, event }) => context.get(\"value\").includes(event.value)\n    },\n    actions: {\n      collapse({ context, prop, event }) {\n        const next = prop(\"multiple\") ? remove(context.get(\"value\"), event.value) : [];\n        context.set(\"value\", next);\n      },\n      expand({ context, prop, event }) {\n        const next = prop(\"multiple\") ? add(context.get(\"value\"), event.value) : [event.value];\n        context.set(\"value\", next);\n      },\n      focusFirstTrigger({ scope }) {\n        getFirstTriggerEl(scope)?.focus();\n      },\n      focusLastTrigger({ scope }) {\n        getLastTriggerEl(scope)?.focus();\n      },\n      focusNextTrigger({ context, scope }) {\n        const focusedValue = context.get(\"focusedValue\");\n        if (!focusedValue) return;\n        const triggerEl = getNextTriggerEl(scope, focusedValue);\n        triggerEl?.focus();\n      },\n      focusPrevTrigger({ context, scope }) {\n        const focusedValue = context.get(\"focusedValue\");\n        if (!focusedValue) return;\n        const triggerEl = getPrevTriggerEl(scope, focusedValue);\n        triggerEl?.focus();\n      },\n      setFocusedValue({ context, event }) {\n        context.set(\"focusedValue\", event.value);\n      },\n      clearFocusedValue({ context }) {\n        context.set(\"focusedValue\", null);\n      },\n      setValue({ context, event }) {\n        context.set(\"value\", event.value);\n      },\n      coarseValue({ context, prop }) {\n        if (!prop(\"multiple\") && context.get(\"value\").length > 1) {\n          warn(`The value of accordion should be a single value when multiple is false.`);\n          context.set(\"value\", [context.get(\"value\")[0]]);\n        }\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"collapsible\",\n  \"dir\",\n  \"disabled\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"multiple\",\n  \"onFocusChange\",\n  \"onValueChange\",\n  \"orientation\",\n  \"value\",\n  \"defaultValue\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemProps = createProps()([\"value\", \"disabled\"]);\nvar splitItemProps = createSplitProps(itemProps);\n\nexport { anatomy, connect, itemProps, machine, props, splitItemProps, splitProps };\n", "/* eslint @typescript-eslint/no-explicit-any: off */\n// symbols\nconst TRACK_MEMO_SYMBOL = Symbol();\nconst GET_ORIGINAL_SYMBOL = Symbol();\n// properties\nconst AFFECTED_PROPERTY = 'a';\nconst IS_TARGET_COPIED_PROPERTY = 'f';\nconst PROXY_PROPERTY = 'p';\nconst PROXY_CACHE_PROPERTY = 'c';\nconst TARGET_CACHE_PROPERTY = 't';\nconst HAS_KEY_PROPERTY = 'h';\nconst ALL_OWN_KEYS_PROPERTY = 'w';\nconst HAS_OWN_KEY_PROPERTY = 'o';\nconst KEYS_PROPERTY = 'k';\n// function to create a new bare proxy\nlet newProxy = (target, handler) => new Proxy(target, handler);\n// get object prototype\nconst getProto = Object.getPrototypeOf;\nconst objectsToTrack = new WeakMap();\n// check if obj is a plain object or an array\nconst isObjectToTrack = (obj) => obj &&\n    (objectsToTrack.has(obj)\n        ? objectsToTrack.get(obj)\n        : getProto(obj) === Object.prototype || getProto(obj) === Array.prototype);\n// check if it is object\nconst isObject = (x) => typeof x === 'object' && x !== null;\n// Properties that are both non-configurable and non-writable will break\n// the proxy get trap when we try to return a recursive/child compare proxy\n// from them. We can avoid this by making a copy of the target object with\n// all descriptors marked as configurable, see `copyTargetObject`.\n// See: https://github.com/dai-shi/proxy-compare/pull/8\nconst needsToCopyTargetObject = (obj) => Object.values(Object.getOwnPropertyDescriptors(obj)).some((descriptor) => !descriptor.configurable && !descriptor.writable);\n// Make a copy with all descriptors marked as configurable.\nconst copyTargetObject = (obj) => {\n    if (Array.isArray(obj)) {\n        // Arrays need a special way to copy\n        return Array.from(obj);\n    }\n    // For non-array objects, we create a new object keeping the prototype\n    // with changing all configurable options (otherwise, proxies will complain)\n    const descriptors = Object.getOwnPropertyDescriptors(obj);\n    Object.values(descriptors).forEach((desc) => {\n        desc.configurable = true;\n    });\n    return Object.create(getProto(obj), descriptors);\n};\nconst createProxyHandler = (origObj, isTargetCopied) => {\n    const state = {\n        [IS_TARGET_COPIED_PROPERTY]: isTargetCopied,\n    };\n    let trackObject = false; // for trackMemo\n    const recordUsage = (type, key) => {\n        if (!trackObject) {\n            let used = state[AFFECTED_PROPERTY].get(origObj);\n            if (!used) {\n                used = {};\n                state[AFFECTED_PROPERTY].set(origObj, used);\n            }\n            if (type === ALL_OWN_KEYS_PROPERTY) {\n                used[ALL_OWN_KEYS_PROPERTY] = true;\n            }\n            else {\n                let set = used[type];\n                if (!set) {\n                    set = new Set();\n                    used[type] = set;\n                }\n                set.add(key);\n            }\n        }\n    };\n    const recordObjectAsUsed = () => {\n        trackObject = true;\n        state[AFFECTED_PROPERTY].delete(origObj);\n    };\n    const handler = {\n        get(target, key) {\n            if (key === GET_ORIGINAL_SYMBOL) {\n                return origObj;\n            }\n            recordUsage(KEYS_PROPERTY, key);\n            return createProxy(Reflect.get(target, key), state[AFFECTED_PROPERTY], state[PROXY_CACHE_PROPERTY], state[TARGET_CACHE_PROPERTY]);\n        },\n        has(target, key) {\n            if (key === TRACK_MEMO_SYMBOL) {\n                recordObjectAsUsed();\n                return true;\n            }\n            recordUsage(HAS_KEY_PROPERTY, key);\n            return Reflect.has(target, key);\n        },\n        getOwnPropertyDescriptor(target, key) {\n            recordUsage(HAS_OWN_KEY_PROPERTY, key);\n            return Reflect.getOwnPropertyDescriptor(target, key);\n        },\n        ownKeys(target) {\n            recordUsage(ALL_OWN_KEYS_PROPERTY);\n            return Reflect.ownKeys(target);\n        },\n    };\n    if (isTargetCopied) {\n        handler.set = handler.deleteProperty = () => false;\n    }\n    return [handler, state];\n};\nconst getOriginalObject = (obj) => \n// unwrap proxy\nobj[GET_ORIGINAL_SYMBOL] ||\n    // otherwise\n    obj;\n/**\n * Create a proxy.\n *\n * This function will create a proxy at top level and proxy nested objects as you access them,\n * in order to keep track of which properties were accessed via get/has proxy handlers:\n *\n * NOTE: Printing of WeakMap is hard to inspect and not very readable\n * for this purpose you can use the `affectedToPathList` helper.\n *\n * @param {object} obj - Object that will be wrapped on the proxy.\n * @param {WeakMap<object, unknown>} affected -\n * WeakMap that will hold the tracking of which properties in the proxied object were accessed.\n * @param {WeakMap<object, unknown>} [proxyCache] -\n * WeakMap that will help keep referential identity for proxies.\n * @returns {Proxy<object>} - Object wrapped in a proxy.\n *\n * @example\n * import { createProxy } from 'proxy-compare';\n *\n * const original = { a: \"1\", c: \"2\", d: { e: \"3\" } };\n * const affected = new WeakMap();\n * const proxy = createProxy(original, affected);\n *\n * proxy.a // Will mark as used and track its value.\n * // This will update the affected WeakMap with original as key\n * // and a Set with \"a\"\n *\n * proxy.d // Will mark \"d\" as accessed to track and proxy itself ({ e: \"3\" }).\n * // This will update the affected WeakMap with original as key\n * // and a Set with \"d\"\n */\nexport const createProxy = (obj, affected, proxyCache, targetCache) => {\n    if (!isObjectToTrack(obj))\n        return obj;\n    let targetAndCopied = targetCache && targetCache.get(obj);\n    if (!targetAndCopied) {\n        const target = getOriginalObject(obj);\n        if (needsToCopyTargetObject(target)) {\n            targetAndCopied = [target, copyTargetObject(target)];\n        }\n        else {\n            targetAndCopied = [target];\n        }\n        targetCache === null || targetCache === void 0 ? void 0 : targetCache.set(obj, targetAndCopied);\n    }\n    const [target, copiedTarget] = targetAndCopied;\n    let handlerAndState = proxyCache && proxyCache.get(target);\n    if (!handlerAndState ||\n        handlerAndState[1][IS_TARGET_COPIED_PROPERTY] !== !!copiedTarget) {\n        handlerAndState = createProxyHandler(target, !!copiedTarget);\n        handlerAndState[1][PROXY_PROPERTY] = newProxy(copiedTarget || target, handlerAndState[0]);\n        if (proxyCache) {\n            proxyCache.set(target, handlerAndState);\n        }\n    }\n    handlerAndState[1][AFFECTED_PROPERTY] = affected;\n    handlerAndState[1][PROXY_CACHE_PROPERTY] = proxyCache;\n    handlerAndState[1][TARGET_CACHE_PROPERTY] = targetCache;\n    return handlerAndState[1][PROXY_PROPERTY];\n};\nconst isAllOwnKeysChanged = (prevObj, nextObj) => {\n    const prevKeys = Reflect.ownKeys(prevObj);\n    const nextKeys = Reflect.ownKeys(nextObj);\n    return (prevKeys.length !== nextKeys.length ||\n        prevKeys.some((k, i) => k !== nextKeys[i]));\n};\n/**\n * Compare changes on objects.\n *\n * This will compare the affected properties on tracked objects inside the proxy\n * to check if there were any changes made to it,\n * by default if no property was accessed on the proxy it will attempt to do a\n * reference equality check for the objects provided (Object.is(a, b)). If you access a property\n * on the proxy, then isChanged will only compare the affected properties.\n *\n * @param {object} prevObj - The previous object to compare.\n * @param {object} nextObj - Object to compare with the previous one.\n * @param {WeakMap<object, unknown>} affected -\n * WeakMap that holds the tracking of which properties in the proxied object were accessed.\n * @param {WeakMap<object, unknown>} [cache] -\n * WeakMap that holds a cache of the comparisons for better performance with repetitive comparisons,\n * and to avoid infinite loop with circular structures.\n * @returns {boolean} - Boolean indicating if the affected property on the object has changed.\n *\n * @example\n * import { createProxy, isChanged } from 'proxy-compare';\n *\n * const obj = { a: \"1\", c: \"2\", d: { e: \"3\" } };\n * const affected = new WeakMap();\n *\n * const proxy = createProxy(obj, affected);\n *\n * proxy.a\n *\n * isChanged(obj, { a: \"1\" }, affected) // false\n *\n * proxy.a = \"2\"\n *\n * isChanged(obj, { a: \"1\" }, affected) // true\n */\nexport const isChanged = (prevObj, nextObj, affected, cache, // for object with cycles\nisEqual = Object.is) => {\n    if (isEqual(prevObj, nextObj)) {\n        return false;\n    }\n    if (!isObject(prevObj) || !isObject(nextObj))\n        return true;\n    const used = affected.get(getOriginalObject(prevObj));\n    if (!used)\n        return true;\n    if (cache) {\n        const hit = cache.get(prevObj);\n        if (hit === nextObj) {\n            return false;\n        }\n        // for object with cycles\n        cache.set(prevObj, nextObj);\n    }\n    let changed = null;\n    for (const key of used[HAS_KEY_PROPERTY] || []) {\n        changed = Reflect.has(prevObj, key) !== Reflect.has(nextObj, key);\n        if (changed)\n            return changed;\n    }\n    if (used[ALL_OWN_KEYS_PROPERTY] === true) {\n        changed = isAllOwnKeysChanged(prevObj, nextObj);\n        if (changed)\n            return changed;\n    }\n    else {\n        for (const key of used[HAS_OWN_KEY_PROPERTY] || []) {\n            const hasPrev = !!Reflect.getOwnPropertyDescriptor(prevObj, key);\n            const hasNext = !!Reflect.getOwnPropertyDescriptor(nextObj, key);\n            changed = hasPrev !== hasNext;\n            if (changed)\n                return changed;\n        }\n    }\n    for (const key of used[KEYS_PROPERTY] || []) {\n        changed = isChanged(prevObj[key], nextObj[key], affected, cache, isEqual);\n        if (changed)\n            return changed;\n    }\n    if (changed === null)\n        throw new Error('invalid used');\n    return changed;\n};\n// explicitly track object with memo\nexport const trackMemo = (obj) => {\n    if (isObjectToTrack(obj)) {\n        return TRACK_MEMO_SYMBOL in obj;\n    }\n    return false;\n};\n/**\n * Unwrap proxy to get the original object.\n *\n * Used to retrieve the original object used to create the proxy instance with `createProxy`.\n *\n * @param {Proxy<object>} obj -  The proxy wrapper of the originial object.\n * @returns {object | null} - Return either the unwrapped object if exists.\n *\n * @example\n * import { createProxy, getUntracked } from 'proxy-compare';\n *\n * const original = { a: \"1\", c: \"2\", d: { e: \"3\" } };\n * const affected = new WeakMap();\n *\n * const proxy = createProxy(original, affected);\n * const originalFromProxy = getUntracked(proxy)\n *\n * Object.is(original, originalFromProxy) // true\n * isChanged(original, originalFromProxy, affected) // false\n */\nexport const getUntracked = (obj) => {\n    if (isObjectToTrack(obj)) {\n        return obj[GET_ORIGINAL_SYMBOL] || null;\n    }\n    return null;\n};\n/**\n * Mark object to be tracked.\n *\n * This function marks an object that will be passed into `createProxy`\n * as marked to track or not. By default only Array and Object are marked to track,\n * so this is useful for example to mark a class instance to track or to mark a object\n * to be untracked when creating your proxy.\n *\n * @param obj - Object to mark as tracked or not.\n * @param mark - Boolean indicating whether you want to track this object or not.\n * @returns - No return.\n *\n * @example\n * import { createProxy, markToTrack, isChanged } from 'proxy-compare';\n *\n * const nested = { e: \"3\" }\n *\n * markToTrack(nested, false)\n *\n * const original = { a: \"1\", c: \"2\", d: nested };\n * const affected = new WeakMap();\n *\n * const proxy = createProxy(original, affected);\n *\n * proxy.d.e\n *\n * isChanged(original, { d: { e: \"3\" } }, affected) // true\n */\nexport const markToTrack = (obj, mark = true) => {\n    objectsToTrack.set(obj, mark);\n};\n/**\n * Convert `affected` to path list\n *\n * `affected` is a weak map which is not printable.\n * This function is can convert it to printable path list.\n * It's for debugging purpose.\n *\n * @param obj - An object that is used with `createProxy`.\n * @param affected - A weak map that is used with `createProxy`.\n * @param onlyWithValues - An optional boolean to exclude object getters.\n * @returns - An array of paths.\n */\nexport const affectedToPathList = (obj, affected, onlyWithValues) => {\n    const list = [];\n    const seen = new WeakSet();\n    const walk = (x, path) => {\n        var _a, _b, _c;\n        if (seen.has(x)) {\n            // for object with cycles\n            return;\n        }\n        if (isObject(x)) {\n            seen.add(x);\n        }\n        const used = isObject(x) && affected.get(getOriginalObject(x));\n        if (used) {\n            (_a = used[HAS_KEY_PROPERTY]) === null || _a === void 0 ? void 0 : _a.forEach((key) => {\n                const segment = `:has(${String(key)})`;\n                list.push(path ? [...path, segment] : [segment]);\n            });\n            if (used[ALL_OWN_KEYS_PROPERTY] === true) {\n                const segment = ':ownKeys';\n                list.push(path ? [...path, segment] : [segment]);\n            }\n            else {\n                (_b = used[HAS_OWN_KEY_PROPERTY]) === null || _b === void 0 ? void 0 : _b.forEach((key) => {\n                    const segment = `:hasOwn(${String(key)})`;\n                    list.push(path ? [...path, segment] : [segment]);\n                });\n            }\n            (_c = used[KEYS_PROPERTY]) === null || _c === void 0 ? void 0 : _c.forEach((key) => {\n                if (!onlyWithValues ||\n                    'value' in (Object.getOwnPropertyDescriptor(x, key) || {})) {\n                    walk(x[key], path ? [...path, key] : [key]);\n                }\n            });\n        }\n        else if (path) {\n            list.push(path);\n        }\n    };\n    walk(obj);\n    return list;\n};\n/**\n * replace newProxy function.\n *\n * This can be used if you want to use proxy-polyfill.\n * Note that proxy-polyfill can't polyfill everything.\n * Use it at your own risk.\n */\nexport const replaceNewProxy = (fn) => {\n    newProxy = fn;\n};\n", "import { markToTrack, getUntracked } from 'proxy-compare';\n\n// src/global.ts\nfunction glob() {\n  if (typeof globalThis !== \"undefined\") return globalThis;\n  if (typeof self !== \"undefined\") return self;\n  if (typeof window !== \"undefined\") return window;\n  if (typeof global !== \"undefined\") return global;\n}\nfunction globalRef(key, value) {\n  const g = glob();\n  if (!g) return value();\n  g[key] || (g[key] = value());\n  return g[key];\n}\nvar refSet = globalRef(\"__zag__refSet\", () => /* @__PURE__ */ new WeakSet());\n\n// src/utils.ts\nvar isReactElement = (x) => typeof x === \"object\" && x !== null && \"$$typeof\" in x && \"props\" in x;\nvar isVueElement = (x) => typeof x === \"object\" && x !== null && \"__v_isVNode\" in x;\nvar isDOMElement = (x) => typeof x === \"object\" && x !== null && \"nodeType\" in x && typeof x.nodeName === \"string\";\nvar isElement = (x) => isReactElement(x) || isVueElement(x) || isDOMElement(x);\nvar isObject = (x) => x !== null && typeof x === \"object\";\nvar canProxy = (x) => isObject(x) && !refSet.has(x) && (Array.isArray(x) || !(Symbol.iterator in x)) && !isElement(x) && !(x instanceof WeakMap) && !(x instanceof WeakSet) && !(x instanceof Error) && !(x instanceof Number) && !(x instanceof Date) && !(x instanceof String) && !(x instanceof RegExp) && !(x instanceof ArrayBuffer) && !(x instanceof Promise) && !(x instanceof File) && !(x instanceof Blob) && !(x instanceof AbortController);\nvar isDev = () => process.env.NODE_ENV !== \"production\";\n\n// src/clone.ts\nfunction set(obj, key, val) {\n  if (typeof val.value === \"object\" && !canProxy(val.value)) val.value = clone(val.value);\n  if (!val.enumerable || val.get || val.set || !val.configurable || !val.writable || key === \"__proto__\") {\n    Object.defineProperty(obj, key, val);\n  } else obj[key] = val.value;\n}\nfunction clone(x) {\n  if (typeof x !== \"object\") return x;\n  var i = 0, k, list, tmp, str = Object.prototype.toString.call(x);\n  if (str === \"[object Object]\") {\n    tmp = Object.create(Object.getPrototypeOf(x) || null);\n  } else if (str === \"[object Array]\") {\n    tmp = Array(x.length);\n  } else if (str === \"[object Set]\") {\n    tmp = /* @__PURE__ */ new Set();\n    x.forEach(function(val) {\n      tmp.add(clone(val));\n    });\n  } else if (str === \"[object Map]\") {\n    tmp = /* @__PURE__ */ new Map();\n    x.forEach(function(val, key) {\n      tmp.set(clone(key), clone(val));\n    });\n  } else if (str === \"[object Date]\") {\n    tmp = /* @__PURE__ */ new Date(+x);\n  } else if (str === \"[object RegExp]\") {\n    tmp = new RegExp(x.source, x.flags);\n  } else if (str === \"[object DataView]\") {\n    tmp = new x.constructor(clone(x.buffer));\n  } else if (str === \"[object ArrayBuffer]\") {\n    tmp = x.slice(0);\n  } else if (str === \"[object Blob]\") {\n    tmp = x.slice();\n  } else if (str.slice(-6) === \"Array]\") {\n    tmp = new x.constructor(x);\n  }\n  if (tmp) {\n    for (list = Object.getOwnPropertySymbols(x); i < list.length; i++) {\n      set(tmp, list[i], Object.getOwnPropertyDescriptor(x, list[i]));\n    }\n    for (i = 0, list = Object.getOwnPropertyNames(x); i < list.length; i++) {\n      if (Object.hasOwnProperty.call(tmp, k = list[i]) && tmp[k] === x[k]) continue;\n      set(tmp, k, Object.getOwnPropertyDescriptor(x, k));\n    }\n  }\n  return tmp || x;\n}\nvar proxyStateMap = globalRef(\"__zag__proxyStateMap\", () => /* @__PURE__ */ new WeakMap());\nvar buildProxyFunction = (objectIs = Object.is, newProxy = (target, handler) => new Proxy(target, handler), snapCache = /* @__PURE__ */ new WeakMap(), createSnapshot = (target, version) => {\n  const cache = snapCache.get(target);\n  if (cache?.[0] === version) {\n    return cache[1];\n  }\n  const snap = Array.isArray(target) ? [] : Object.create(Object.getPrototypeOf(target));\n  markToTrack(snap, true);\n  snapCache.set(target, [version, snap]);\n  Reflect.ownKeys(target).forEach((key) => {\n    const value = Reflect.get(target, key);\n    if (refSet.has(value)) {\n      markToTrack(value, false);\n      snap[key] = value;\n    } else if (proxyStateMap.has(value)) {\n      snap[key] = snapshot(value);\n    } else {\n      snap[key] = value;\n    }\n  });\n  return Object.freeze(snap);\n}, proxyCache = /* @__PURE__ */ new WeakMap(), versionHolder = [1, 1], proxyFunction2 = (initialObject) => {\n  if (!isObject(initialObject)) {\n    throw new Error(\"object required\");\n  }\n  const found = proxyCache.get(initialObject);\n  if (found) {\n    return found;\n  }\n  let version = versionHolder[0];\n  const listeners = /* @__PURE__ */ new Set();\n  const notifyUpdate = (op, nextVersion = ++versionHolder[0]) => {\n    if (version !== nextVersion) {\n      version = nextVersion;\n      listeners.forEach((listener) => listener(op, nextVersion));\n    }\n  };\n  let checkVersion = versionHolder[1];\n  const ensureVersion = (nextCheckVersion = ++versionHolder[1]) => {\n    if (checkVersion !== nextCheckVersion && !listeners.size) {\n      checkVersion = nextCheckVersion;\n      propProxyStates.forEach(([propProxyState]) => {\n        const propVersion = propProxyState[1](nextCheckVersion);\n        if (propVersion > version) {\n          version = propVersion;\n        }\n      });\n    }\n    return version;\n  };\n  const createPropListener = (prop) => (op, nextVersion) => {\n    const newOp = [...op];\n    newOp[1] = [prop, ...newOp[1]];\n    notifyUpdate(newOp, nextVersion);\n  };\n  const propProxyStates = /* @__PURE__ */ new Map();\n  const addPropListener = (prop, propProxyState) => {\n    if (isDev() && propProxyStates.has(prop)) {\n      throw new Error(\"prop listener already exists\");\n    }\n    if (listeners.size) {\n      const remove = propProxyState[3](createPropListener(prop));\n      propProxyStates.set(prop, [propProxyState, remove]);\n    } else {\n      propProxyStates.set(prop, [propProxyState]);\n    }\n  };\n  const removePropListener = (prop) => {\n    const entry = propProxyStates.get(prop);\n    if (entry) {\n      propProxyStates.delete(prop);\n      entry[1]?.();\n    }\n  };\n  const addListener = (listener) => {\n    listeners.add(listener);\n    if (listeners.size === 1) {\n      propProxyStates.forEach(([propProxyState, prevRemove], prop) => {\n        if (isDev() && prevRemove) {\n          throw new Error(\"remove already exists\");\n        }\n        const remove = propProxyState[3](createPropListener(prop));\n        propProxyStates.set(prop, [propProxyState, remove]);\n      });\n    }\n    const removeListener = () => {\n      listeners.delete(listener);\n      if (listeners.size === 0) {\n        propProxyStates.forEach(([propProxyState, remove], prop) => {\n          if (remove) {\n            remove();\n            propProxyStates.set(prop, [propProxyState]);\n          }\n        });\n      }\n    };\n    return removeListener;\n  };\n  const baseObject = Array.isArray(initialObject) ? [] : Object.create(Object.getPrototypeOf(initialObject));\n  const handler = {\n    deleteProperty(target, prop) {\n      const prevValue = Reflect.get(target, prop);\n      removePropListener(prop);\n      const deleted = Reflect.deleteProperty(target, prop);\n      if (deleted) {\n        notifyUpdate([\"delete\", [prop], prevValue]);\n      }\n      return deleted;\n    },\n    set(target, prop, value, receiver) {\n      const hasPrevValue = Reflect.has(target, prop);\n      const prevValue = Reflect.get(target, prop, receiver);\n      if (hasPrevValue && (objectIs(prevValue, value) || proxyCache.has(value) && objectIs(prevValue, proxyCache.get(value)))) {\n        return true;\n      }\n      removePropListener(prop);\n      if (isObject(value)) {\n        value = getUntracked(value) || value;\n      }\n      let nextValue = value;\n      if (Object.getOwnPropertyDescriptor(target, prop)?.set) ; else {\n        if (!proxyStateMap.has(value) && canProxy(value)) {\n          nextValue = proxy(value);\n        }\n        const childProxyState = !refSet.has(nextValue) && proxyStateMap.get(nextValue);\n        if (childProxyState) {\n          addPropListener(prop, childProxyState);\n        }\n      }\n      Reflect.set(target, prop, nextValue, receiver);\n      notifyUpdate([\"set\", [prop], value, prevValue]);\n      return true;\n    }\n  };\n  const proxyObject = newProxy(baseObject, handler);\n  proxyCache.set(initialObject, proxyObject);\n  const proxyState = [baseObject, ensureVersion, createSnapshot, addListener];\n  proxyStateMap.set(proxyObject, proxyState);\n  Reflect.ownKeys(initialObject).forEach((key) => {\n    const desc = Object.getOwnPropertyDescriptor(initialObject, key);\n    if (desc.get || desc.set) {\n      Object.defineProperty(baseObject, key, desc);\n    } else {\n      proxyObject[key] = initialObject[key];\n    }\n  });\n  return proxyObject;\n}) => [\n  // public functions\n  proxyFunction2,\n  // shared state\n  proxyStateMap,\n  refSet,\n  // internal things\n  objectIs,\n  newProxy,\n  canProxy,\n  snapCache,\n  createSnapshot,\n  proxyCache,\n  versionHolder\n];\nvar [proxyFunction] = buildProxyFunction();\nfunction proxy(initialObject = {}) {\n  return proxyFunction(initialObject);\n}\nfunction subscribe(proxyObject, callback, notifyInSync) {\n  const proxyState = proxyStateMap.get(proxyObject);\n  if (isDev() && !proxyState) {\n    console.warn(\"Please use proxy object\");\n  }\n  let promise;\n  const ops = [];\n  const addListener = proxyState[3];\n  let isListenerActive = false;\n  const listener = (op) => {\n    ops.push(op);\n    if (notifyInSync) {\n      callback(ops.splice(0));\n      return;\n    }\n    if (!promise) {\n      promise = Promise.resolve().then(() => {\n        promise = void 0;\n        if (isListenerActive) {\n          callback(ops.splice(0));\n        }\n      });\n    }\n  };\n  const removeListener = addListener(listener);\n  isListenerActive = true;\n  return () => {\n    isListenerActive = false;\n    removeListener();\n  };\n}\nfunction snapshot(proxyObject) {\n  const proxyState = proxyStateMap.get(proxyObject);\n  if (isDev() && !proxyState) {\n    console.warn(\"Please use proxy object\");\n  }\n  const [target, ensureVersion, createSnapshot] = proxyState;\n  return createSnapshot(target, ensureVersion());\n}\nfunction ref(obj) {\n  refSet.add(obj);\n  return obj;\n}\n\n// src/proxy-computed.ts\nfunction proxyWithComputed(initialObject, computedFns) {\n  const keys = Object.keys(computedFns);\n  keys.forEach((key) => {\n    if (Object.getOwnPropertyDescriptor(initialObject, key)) {\n      throw new Error(\"object property already defined\");\n    }\n    const computedFn = computedFns[key];\n    const { get, set: set2 } = typeof computedFn === \"function\" ? { get: computedFn } : computedFn;\n    const desc = {};\n    desc.get = () => get(snapshot(proxyObject));\n    if (set2) {\n      desc.set = (newValue) => set2(proxyObject, newValue);\n    }\n    Object.defineProperty(initialObject, key, desc);\n  });\n  const proxyObject = proxy(initialObject);\n  return proxyObject;\n}\n\nexport { clone, globalRef, proxy, proxyWithComputed, ref, snapshot, subscribe };\n", "import { createScope, MachineStatus, INIT_STATE } from '@zag-js/core';\nexport { mergeProps } from '@zag-js/core';\nimport { createNormalizer } from '@zag-js/types';\nimport { subscribe, proxy } from '@zag-js/store';\nimport { runIfFn, compact, isFunction, isPlainObject, warn, toArray, isString, isEqual, identity } from '@zag-js/utils';\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar propMap = {\n  onFocus: \"onFocusin\",\n  onBlur: \"onFocusout\",\n  onChange: \"onInput\",\n  onDoubleClick: \"onDblclick\",\n  htmlFor: \"for\",\n  className: \"class\",\n  defaultValue: \"value\",\n  defaultChecked: \"checked\"\n};\nvar caseSensitiveSvgAttrs = /* @__PURE__ */ new Set([\"viewBox\", \"preserveAspectRatio\"]);\nvar toStyleString = (style) => {\n  let string = \"\";\n  for (let key in style) {\n    const value = style[key];\n    if (value === null || value === void 0) continue;\n    if (!key.startsWith(\"--\")) key = key.replace(/[A-Z]/g, (match) => `-${match.toLowerCase()}`);\n    string += `${key}:${value};`;\n  }\n  return string;\n};\nvar normalizeProps = createNormalizer((props) => {\n  return Object.entries(props).reduce((acc, [key, value]) => {\n    if (value === void 0) return acc;\n    if (key in propMap) {\n      key = propMap[key];\n    }\n    if (key === \"style\" && typeof value === \"object\") {\n      acc.style = toStyleString(value);\n      return acc;\n    }\n    const normalizedKey = caseSensitiveSvgAttrs.has(key) ? key : key.toLowerCase();\n    acc[normalizedKey] = value;\n    return acc;\n  }, {});\n});\n\n// src/spread-props.ts\nvar prevAttrsMap = /* @__PURE__ */ new WeakMap();\nvar assignableProps = /* @__PURE__ */ new Set([\"value\", \"checked\", \"selected\"]);\nvar caseSensitiveSvgAttrs2 = /* @__PURE__ */ new Set([\n  \"viewBox\",\n  \"preserveAspectRatio\",\n  \"clipPath\",\n  \"clipRule\",\n  \"fillRule\",\n  \"strokeWidth\",\n  \"strokeLinecap\",\n  \"strokeLinejoin\",\n  \"strokeDasharray\",\n  \"strokeDashoffset\",\n  \"strokeMiterlimit\"\n]);\nvar isSvgElement = (node) => {\n  return node.tagName === \"svg\" || node.namespaceURI === \"http://www.w3.org/2000/svg\";\n};\nvar getAttributeName = (node, attrName) => {\n  const shouldPreserveCase = isSvgElement(node) && caseSensitiveSvgAttrs2.has(attrName);\n  return shouldPreserveCase ? attrName : attrName.toLowerCase();\n};\nfunction spreadProps(node, attrs, machineId) {\n  const scopeKey = machineId || \"default\";\n  let machineMap = prevAttrsMap.get(node);\n  if (!machineMap) {\n    machineMap = /* @__PURE__ */ new Map();\n    prevAttrsMap.set(node, machineMap);\n  }\n  const oldAttrs = machineMap.get(scopeKey) || {};\n  const attrKeys = Object.keys(attrs);\n  const addEvt = (e, f) => {\n    node.addEventListener(e.toLowerCase(), f);\n  };\n  const remEvt = (e, f) => {\n    node.removeEventListener(e.toLowerCase(), f);\n  };\n  const onEvents = (attr) => attr.startsWith(\"on\");\n  const others = (attr) => !attr.startsWith(\"on\");\n  const setup = (attr) => addEvt(attr.substring(2), attrs[attr]);\n  const teardown = (attr) => remEvt(attr.substring(2), attrs[attr]);\n  const apply = (attrName) => {\n    const value = attrs[attrName];\n    const oldValue = oldAttrs[attrName];\n    if (value === oldValue) return;\n    if (attrName === \"class\") {\n      node.className = value ?? \"\";\n      return;\n    }\n    if (assignableProps.has(attrName)) {\n      node[attrName] = value ?? \"\";\n      return;\n    }\n    if (typeof value === \"boolean\" && !attrName.includes(\"aria-\")) {\n      node.toggleAttribute(getAttributeName(node, attrName), value);\n      return;\n    }\n    if (attrName === \"children\") {\n      node.innerHTML = value;\n      return;\n    }\n    if (value != null) {\n      node.setAttribute(getAttributeName(node, attrName), value);\n      return;\n    }\n    node.removeAttribute(getAttributeName(node, attrName));\n  };\n  for (const key in oldAttrs) {\n    if (attrs[key] == null) {\n      if (key === \"class\") {\n        node.className = \"\";\n      } else if (assignableProps.has(key)) {\n        node[key] = \"\";\n      } else {\n        node.removeAttribute(getAttributeName(node, key));\n      }\n    }\n  }\n  const oldEvents = Object.keys(oldAttrs).filter(onEvents);\n  oldEvents.forEach((evt) => {\n    remEvt(evt.substring(2), oldAttrs[evt]);\n  });\n  attrKeys.filter(onEvents).forEach(setup);\n  attrKeys.filter(others).forEach(apply);\n  machineMap.set(scopeKey, attrs);\n  return function cleanup() {\n    attrKeys.filter(onEvents).forEach(teardown);\n    const currentMachineMap = prevAttrsMap.get(node);\n    if (currentMachineMap) {\n      currentMachineMap.delete(scopeKey);\n      if (currentMachineMap.size === 0) {\n        prevAttrsMap.delete(node);\n      }\n    }\n  };\n}\nfunction bindable(props) {\n  const initial = props().value ?? props().defaultValue;\n  if (props().debug) {\n    console.log(`[bindable > ${props().debug}] initial`, initial);\n  }\n  const eq = props().isEqual ?? Object.is;\n  const store = proxy({ value: initial });\n  const controlled = () => props().value !== void 0;\n  return {\n    initial,\n    ref: store,\n    get() {\n      return controlled() ? props().value : store.value;\n    },\n    set(nextValue) {\n      const prev = store.value;\n      const next = isFunction(nextValue) ? nextValue(prev) : nextValue;\n      if (props().debug) {\n        console.log(`[bindable > ${props().debug}] setValue`, { next, prev });\n      }\n      if (!controlled()) store.value = next;\n      if (!eq(next, prev)) {\n        props().onChange?.(next, prev);\n      }\n    },\n    invoke(nextValue, prevValue) {\n      props().onChange?.(nextValue, prevValue);\n    },\n    hash(value) {\n      return props().hash?.(value) ?? String(value);\n    }\n  };\n}\nbindable.cleanup = (_fn) => {\n};\nbindable.ref = (defaultValue) => {\n  let value = defaultValue;\n  return {\n    get: () => value,\n    set: (next) => {\n      value = next;\n    }\n  };\n};\n\n// src/refs.ts\nfunction createRefs(refs) {\n  const ref = { current: refs };\n  return {\n    get(key) {\n      return ref.current[key];\n    },\n    set(key, value) {\n      ref.current[key] = value;\n    }\n  };\n}\nfunction mergeMachineProps(prev, next) {\n  if (!isPlainObject(prev) || !isPlainObject(next)) {\n    return next === void 0 ? prev : next;\n  }\n  const result = { ...prev };\n  for (const key of Object.keys(next)) {\n    const nextValue = next[key];\n    const prevValue = prev[key];\n    if (nextValue === void 0) {\n      continue;\n    }\n    if (isPlainObject(prevValue) && isPlainObject(nextValue)) {\n      result[key] = mergeMachineProps(prevValue, nextValue);\n    } else {\n      result[key] = nextValue;\n    }\n  }\n  return result;\n}\n\n// src/machine.ts\nvar VanillaMachine = class {\n  constructor(machine, userProps = {}) {\n    this.machine = machine;\n    __publicField(this, \"scope\");\n    __publicField(this, \"context\");\n    __publicField(this, \"prop\");\n    __publicField(this, \"state\");\n    __publicField(this, \"refs\");\n    __publicField(this, \"computed\");\n    __publicField(this, \"event\", { type: \"\" });\n    __publicField(this, \"previousEvent\", { type: \"\" });\n    __publicField(this, \"effects\", /* @__PURE__ */ new Map());\n    __publicField(this, \"transition\", null);\n    __publicField(this, \"cleanups\", []);\n    __publicField(this, \"subscriptions\", []);\n    __publicField(this, \"userPropsRef\");\n    __publicField(this, \"getEvent\", () => ({\n      ...this.event,\n      current: () => this.event,\n      previous: () => this.previousEvent\n    }));\n    __publicField(this, \"getStateConfig\", (state) => {\n      return this.machine.states[state];\n    });\n    __publicField(this, \"getState\", () => ({\n      ...this.state,\n      matches: (...values) => values.includes(this.state.get()),\n      hasTag: (tag) => !!this.getStateConfig(this.state.get())?.tags?.includes(tag)\n    }));\n    __publicField(this, \"debug\", (...args) => {\n      if (this.machine.debug) console.log(...args);\n    });\n    __publicField(this, \"notify\", () => {\n      this.publish();\n    });\n    __publicField(this, \"send\", (event) => {\n      if (this.status !== MachineStatus.Started) return;\n      queueMicrotask(() => {\n        if (!event) return;\n        this.previousEvent = this.event;\n        this.event = event;\n        this.debug(\"send\", event);\n        let currentState = this.state.get();\n        const eventType = event.type;\n        const transitions = this.getStateConfig(currentState)?.on?.[eventType] ?? this.machine.on?.[eventType];\n        const transition = this.choose(transitions);\n        if (!transition) return;\n        this.transition = transition;\n        const target = transition.target ?? currentState;\n        this.debug(\"transition\", transition);\n        const changed = target !== currentState;\n        if (changed) {\n          this.state.set(target);\n        } else if (transition.reenter && !changed) {\n          this.state.invoke(currentState, currentState);\n        } else {\n          this.action(transition.actions);\n        }\n      });\n    });\n    __publicField(this, \"action\", (keys) => {\n      const strs = isFunction(keys) ? keys(this.getParams()) : keys;\n      if (!strs) return;\n      const fns = strs.map((s) => {\n        const fn = this.machine.implementations?.actions?.[s];\n        if (!fn) warn(`[zag-js] No implementation found for action \"${JSON.stringify(s)}\"`);\n        return fn;\n      });\n      for (const fn of fns) {\n        fn?.(this.getParams());\n      }\n    });\n    __publicField(this, \"guard\", (str) => {\n      if (isFunction(str)) return str(this.getParams());\n      return this.machine.implementations?.guards?.[str](this.getParams());\n    });\n    __publicField(this, \"effect\", (keys) => {\n      const strs = isFunction(keys) ? keys(this.getParams()) : keys;\n      if (!strs) return;\n      const fns = strs.map((s) => {\n        const fn = this.machine.implementations?.effects?.[s];\n        if (!fn) warn(`[zag-js] No implementation found for effect \"${JSON.stringify(s)}\"`);\n        return fn;\n      });\n      const cleanups = [];\n      for (const fn of fns) {\n        const cleanup = fn?.(this.getParams());\n        if (cleanup) cleanups.push(cleanup);\n      }\n      return () => cleanups.forEach((fn) => fn?.());\n    });\n    __publicField(this, \"choose\", (transitions) => {\n      return toArray(transitions).find((t) => {\n        let result = !t.guard;\n        if (isString(t.guard)) result = !!this.guard(t.guard);\n        else if (isFunction(t.guard)) result = t.guard(this.getParams());\n        return result;\n      });\n    });\n    __publicField(this, \"subscribe\", (fn) => {\n      this.subscriptions.push(fn);\n      return () => {\n        const index = this.subscriptions.indexOf(fn);\n        if (index > -1) this.subscriptions.splice(index, 1);\n      };\n    });\n    __publicField(this, \"status\", MachineStatus.NotStarted);\n    __publicField(this, \"publish\", () => {\n      this.callTrackers();\n      this.subscriptions.forEach((fn) => fn(this.service));\n    });\n    __publicField(this, \"trackers\", []);\n    __publicField(this, \"setupTrackers\", () => {\n      this.machine.watch?.(this.getParams());\n    });\n    __publicField(this, \"callTrackers\", () => {\n      this.trackers.forEach(({ deps, fn }) => {\n        const next = deps.map((dep) => dep());\n        if (!isEqual(fn.prev, next)) {\n          fn();\n          fn.prev = next;\n        }\n      });\n    });\n    __publicField(this, \"getParams\", () => ({\n      state: this.getState(),\n      context: this.context,\n      event: this.getEvent(),\n      prop: this.prop,\n      send: this.send,\n      action: this.action,\n      guard: this.guard,\n      track: (deps, fn) => {\n        fn.prev = deps.map((dep) => dep());\n        this.trackers.push({ deps, fn });\n      },\n      refs: this.refs,\n      computed: this.computed,\n      flush: identity,\n      scope: this.scope,\n      choose: this.choose\n    }));\n    this.userPropsRef = { current: userProps };\n    const { id, ids, getRootNode } = runIfFn(userProps);\n    this.scope = createScope({ id, ids, getRootNode });\n    const prop = (key) => {\n      const __props = runIfFn(this.userPropsRef.current);\n      const props = machine.props?.({ props: compact(__props), scope: this.scope }) ?? __props;\n      return props[key];\n    };\n    this.prop = prop;\n    const context = machine.context?.({\n      prop,\n      bindable,\n      scope: this.scope,\n      flush(fn) {\n        queueMicrotask(fn);\n      },\n      getContext() {\n        return ctx;\n      },\n      getComputed() {\n        return computed;\n      },\n      getRefs() {\n        return refs;\n      },\n      getEvent: this.getEvent.bind(this)\n    });\n    if (context) {\n      Object.values(context).forEach((item) => {\n        const unsub = subscribe(item.ref, () => this.notify());\n        this.cleanups.push(unsub);\n      });\n    }\n    const ctx = {\n      get(key) {\n        return context?.[key].get();\n      },\n      set(key, value) {\n        context?.[key].set(value);\n      },\n      initial(key) {\n        return context?.[key].initial;\n      },\n      hash(key) {\n        const current = context?.[key].get();\n        return context?.[key].hash(current);\n      }\n    };\n    this.context = ctx;\n    const computed = (key) => {\n      return machine.computed?.[key]({\n        context: ctx,\n        event: this.getEvent(),\n        prop,\n        refs: this.refs,\n        scope: this.scope,\n        computed\n      }) ?? {};\n    };\n    this.computed = computed;\n    const refs = createRefs(machine.refs?.({ prop, context: ctx }) ?? {});\n    this.refs = refs;\n    const state = bindable(() => ({\n      defaultValue: machine.initialState({ prop }),\n      onChange: (nextState, prevState) => {\n        if (prevState) {\n          const exitEffects = this.effects.get(prevState);\n          exitEffects?.();\n          this.effects.delete(prevState);\n        }\n        if (prevState) {\n          this.action(this.getStateConfig(prevState)?.exit);\n        }\n        this.action(this.transition?.actions);\n        const cleanup = this.effect(this.getStateConfig(nextState)?.effects);\n        if (cleanup) this.effects.set(nextState, cleanup);\n        if (prevState === INIT_STATE) {\n          this.action(machine.entry);\n          const cleanup2 = this.effect(machine.effects);\n          if (cleanup2) this.effects.set(INIT_STATE, cleanup2);\n        }\n        this.action(this.getStateConfig(nextState)?.entry);\n      }\n    }));\n    this.state = state;\n    this.cleanups.push(subscribe(this.state.ref, () => this.notify()));\n  }\n  updateProps(newProps) {\n    const prevSource = this.userPropsRef.current;\n    this.userPropsRef.current = () => {\n      const prev = runIfFn(prevSource);\n      const next = runIfFn(newProps);\n      return mergeMachineProps(prev, next);\n    };\n    this.notify();\n  }\n  start() {\n    this.status = MachineStatus.Started;\n    this.debug(\"initializing...\");\n    this.state.invoke(this.state.initial, INIT_STATE);\n    this.setupTrackers();\n  }\n  stop() {\n    this.effects.forEach((fn) => fn?.());\n    this.effects.clear();\n    this.transition = null;\n    this.action(this.machine.exit);\n    this.cleanups.forEach((unsub) => unsub());\n    this.cleanups = [];\n    this.subscriptions = [];\n    this.status = MachineStatus.Stopped;\n    this.debug(\"unmounting...\");\n  }\n  get service() {\n    return {\n      state: this.getState(),\n      send: this.send,\n      context: this.context,\n      prop: this.prop,\n      scope: this.scope,\n      refs: this.refs,\n      computed: this.computed,\n      event: this.getEvent(),\n      getStatus: () => this.status\n    };\n  }\n};\n\nexport { VanillaMachine, normalizeProps, spreadProps };\n", "import { VanillaMachine, spreadProps } from \"@zag-js/vanilla\";\nimport type { Attrs } from \"@zag-js/vanilla\";\n\ninterface ComponentInterface<Api> {\n  el: HTMLElement;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  machine: VanillaMachine<any>;\n  api: Api;\n\n  init(): void;\n  destroy(): void;\n  render(): void;\n}\n\nexport abstract class Component<Props, Api> implements ComponentInterface<Api> {\n  el: HTMLElement;\n  protected doc: Document;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  machine: VanillaMachine<any>;\n  api: Api;\n\n  constructor(el: HTMLElement | null, props: Props) {\n    if (!el) throw new Error(\"Root element not found\");\n    this.el = el;\n    this.doc = document;\n    this.machine = this.initMachine(props);\n    this.api = this.initApi();\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  abstract initMachine(props: Props): VanillaMachine<any>;\n  abstract initApi(): Api;\n  abstract render(): void;\n\n  init = () => {\n    this.render();\n    this.machine.subscribe(() => {\n      this.api = this.initApi();\n      this.render();\n    });\n    this.machine.start();\n  };\n\n  destroy = () => {\n    this.machine.stop();\n  };\n\n  spreadProps = (el: HTMLElement | Element, props: Attrs) => {\n    spreadProps(el, props, this.machine.scope.id);\n  };\n\n  updateProps = (props: Attrs) => {\n    this.machine.updateProps(props);\n  };\n}\n", "import {connect, machine, type Props, type Api}  from \"@zag-js/accordion\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport { Component } from \"../lib/core\";\n\nexport class Accordion extends Component<Props, Api> {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  initMachine(props: Props): VanillaMachine<any> {\n    return new VanillaMachine(machine, props);\n  }\n\n  initApi(): Api {\n    return connect(this.machine.service, normalizeProps);\n  }\n\n  render(): void {\n    const rootEl =\n      this.el.querySelector<HTMLElement>('[data-scope=\"accordion\"][data-part=\"root\"]') ?? this.el;\n    this.spreadProps(rootEl, this.api.getRootProps());\n\n    const itemsList = this.getItemsList();\n    const itemEls = rootEl.querySelectorAll<HTMLElement>(\n      '[data-scope=\"accordion\"][data-part=\"item\"]'\n    );\n\n    for (let i = 0; i < itemEls.length; i++) {\n      const itemEl = itemEls[i];\n      const itemData = itemsList[i];\n      if (!itemData?.value) continue;\n\n      const { value, disabled } = itemData;\n      this.spreadProps(itemEl, this.api.getItemProps({ value, disabled }));\n\n      const triggerEl = itemEl.querySelector<HTMLElement>('[data-scope=\"accordion\"][data-part=\"item-trigger\"]');\n      if (triggerEl) {\n        this.spreadProps(triggerEl, this.api.getItemTriggerProps({ value, disabled }));\n      }\n\n      const indicatorEl = itemEl.querySelector<HTMLElement>('[data-scope=\"accordion\"][data-part=\"item-indicator\"]');\n      if (indicatorEl) {\n        this.spreadProps(indicatorEl, this.api.getItemIndicatorProps({ value, disabled }));\n      }\n\n      const contentEl = itemEl.querySelector<HTMLElement>('[data-scope=\"accordion\"][data-part=\"item-content\"]');\n      if (contentEl) {\n        this.spreadProps(contentEl, this.api.getItemContentProps({ value, disabled }));\n      }\n    }\n  }\n\n  private getItemsList(): Array<{ value: string; disabled: boolean }> {\n    const raw = this.el.getAttribute(\"data-items\");\n    if (!raw) return [];\n    try {\n      return JSON.parse(raw) as Array<{ value: string; disabled: boolean }>;\n    } catch {\n      return [];\n    }\n  }\n}", "/**\n * Corex utility functions for working with Zag.js components.\n */\n\nimport type { Direction } from \"@zag-js/types\";\n\nconst DIR_VALUES: Direction[] = [\"ltr\", \"rtl\"];\n\n/**\n * Read dir for a component: element data-dir, else <html dir=\"...\">, else \"ltr\".\n * Dir is set server-side; JS only reads the attribute.\n */\nexport function getDir(element: HTMLElement): Direction {\n  const fromEl = element.dataset.dir;\n  if (fromEl !== undefined && DIR_VALUES.includes(fromEl as Direction)) {\n    return fromEl as Direction;\n  }\n  const fromDoc = document.documentElement.getAttribute(\"dir\");\n  if (fromDoc === \"ltr\" || fromDoc === \"rtl\") return fromDoc as Direction;\n  return \"ltr\";\n}\n\n/**\n * Extract a string data attribute with validation for specific type\n * @param element - The HTML element to extract from\n * @param attrName - The data attribute name (without 'data-' prefix)\n * @param validValues - Optional array of allowed values\n * @returns Validated string value or undefined\n */\nexport const getString = <T extends string>(\n  element: HTMLElement,\n  attrName: string,\n  validValues?: readonly T[]\n): T | undefined => {\n  const value = element.dataset[attrName];\n  if (value !== undefined && (!validValues || (validValues as readonly string[]).includes(value))) {\n    return value as T;\n  }\n  return undefined;\n};\n/**\n * Extract a list of string values from a data attribute\n * @param element - The HTML element to extract from\n * @param attrName - The data attribute name (without 'data-' prefix)\n * @returns Array of strings or undefined\n */\nexport const getStringList = (element: HTMLElement, attrName: string): string[] | undefined => {\n  const value = element.dataset[attrName];\n  if (typeof value === \"string\") {\n    return value\n      .split(\",\")\n      .map((v) => v.trim())\n      .filter((v) => v.length > 0);\n  }\n  return undefined;\n};\n/**\n * Extract a number data attribute with optional validation\n * @param element - The HTML element to extract from\n * @param attrName - The data attribute name (without 'data-' prefix)\n * @param validValues - Optional array of allowed numeric values\n * @returns Parsed number value or undefined\n */\nexport const getNumber = (\n  element: HTMLElement,\n  attrName: string,\n  validValues?: readonly number[]\n): number | undefined => {\n  const raw = element.dataset[attrName];\n  if (raw === undefined) return undefined;\n  const parsed = Number(raw);\n  if (Number.isNaN(parsed)) return undefined;\n  if (validValues && !validValues.includes(parsed)) return 0;\n  return parsed;\n};\n\n/**\n * Extract a boolean data attribute\n * @param element - The HTML element to extract from\n * @param attrName - The data attribute name (without 'data-' prefix)\n * @returns Boolean value (true if attribute exists, false otherwise)\n */\n\nexport const getBoolean = (element: HTMLElement, attrName: string): boolean => {\n  const dashName = attrName.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n  return element.hasAttribute(`data-${dashName}`);\n};\n/**\n * Generate a random ID if none is provided\n * @param element - Optional HTML element to get an existing id\n * @param fallbackId - Optional fallback base string (e.g. \"checkbox\")\n * @returns ID string (existing or generated)\n */\nexport const generateId = (element?: HTMLElement, fallbackId: string = \"element\"): string => {\n  if (element?.id) return element.id;\n  return `${fallbackId}-${Math.random().toString(36).substring(2, 9)}`;\n};\n\n", "import type { Hook } from \"phoenix_live_view\";\nimport type { HookInterface, CallbackRef } from \"phoenix_live_view/assets/js/types/view_hook\";\nimport { Accordion } from \"../components/accordion\";\nimport type { ValueChangeDetails, FocusChangeDetails, Props } from \"@zag-js/accordion\";\nimport type { Orientation } from \"@zag-js/types\";\n\nimport { getString, getBoolean, getStringList, getDir } from \"../lib/util\";\n\ntype AccordionHookState = {\n  accordion?: Accordion;\n  handlers?: Array<CallbackRef>;\n  onSetValue?: (event: Event) => void;\n};\n\nconst AccordionHook: Hook<object & AccordionHookState, HTMLElement> = {\n  mounted(this: object & HookInterface<HTMLElement> & AccordionHookState) {\n\n    const el = this.el;\n    const pushEvent = this.pushEvent.bind(this);\n\n    const accordion = new Accordion(el, \n      {\n        id: el.id,\n        ...(getBoolean(el, \"controlled\")\n          ? { value: getStringList(el, \"value\") }\n          : { defaultValue: getStringList(el, \"defaultValue\") }),\n        collapsible: getBoolean(el, \"collapsible\"),\n        multiple: getBoolean(el, \"multiple\"),\n        orientation: getString<Orientation>(el, \"orientation\", [\"horizontal\", \"vertical\"]),\n        dir: getDir(el),\n        onValueChange: (details: ValueChangeDetails) => {\n          const eventName = getString(el, \"onValueChange\");\n          if (eventName && this.liveSocket.main.isConnected()) {\n            pushEvent(eventName, {\n              id: el.id,\n              value: details.value ?? null,\n            });\n          }\n          \n          const eventNameClient = getString(el, \"onValueChangeClient\");\n          if (eventNameClient) {\n            el.dispatchEvent(\n              new CustomEvent(eventNameClient, {\n                bubbles: true,\n                detail: {\n                  id: el.id,\n                  value: details.value ?? null,\n                },\n              })\n            );\n          }\n        },\n        \n        onFocusChange: (details: FocusChangeDetails) => {\n          const eventName = getString(el, \"onFocusChange\");\n          if (eventName && this.liveSocket.main.isConnected()) {\n            pushEvent(eventName, {\n              id: el.id,\n              value: details.value ?? null,\n            });\n          }\n  \n          const eventNameClient = getString(el, \"onFocusChangeClient\");\n          if (eventNameClient) {\n            el.dispatchEvent(\n              new CustomEvent(eventNameClient, {\n                bubbles: true,\n                detail: {\n                  id: el.id,\n                  value: details.value ?? null,\n                },\n              })\n            );\n          }\n        },\n      }\n    );\n    accordion.init();\n    this.accordion = accordion;\n\n    this.onSetValue = (event: Event) => {\n      const { value } = (event as CustomEvent<{ value: string[] }>).detail;\n      accordion.api.setValue(value);\n    };\n    el.addEventListener(\"phx:accordion:set-value\", this.onSetValue);\n\n    this.handlers = [];\n\n    this.handlers.push(\n      this.handleEvent(\n        \"accordion_set_value\",\n        (payload: { accordion_id?: string; value: string[] }) => {\n          const targetId = payload.accordion_id;\n          if (targetId) {\n            const matches = el.id === targetId || el.id === `accordion:${targetId}`;\n            if (!matches) return;\n          }\n          accordion.api.setValue(payload.value);\n        }\n      )\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"accordion_value\", () => {\n        this.pushEvent(\"accordion_value_response\", {\n          value: accordion.api.value,\n        });\n      })\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"accordion_focused_value\", () => {\n        this.pushEvent(\"accordion_focused_value_response\", {\n          value: accordion.api.focusedValue,\n        });\n      })\n    );\n  },\n\n  updated(this: object & HookInterface<HTMLElement> & AccordionHookState) {\n    const controlled = getBoolean(this.el, \"controlled\");\n    this.accordion?.updateProps({\n      id: this.el.id,\n      ...(controlled\n        ? { value: getStringList(this.el, \"value\") }\n        : {\n            defaultValue:\n              this.accordion?.api?.value ?? getStringList(this.el, \"defaultValue\"),\n          }),\n      collapsible: getBoolean(this.el, \"collapsible\"),\n      multiple: getBoolean(this.el, \"multiple\"),\n      orientation: getString<Orientation>(this.el, \"orientation\", [\"horizontal\", \"vertical\"]),\n      dir: getDir(this.el)\n    } as Props);\n  },\n\n\n  \n  destroyed(this: object & HookInterface<HTMLElement> & AccordionHookState) {\n    if (this.onSetValue) {\n      this.el.removeEventListener(\"phx:accordion:set-value\", this.onSetValue);\n    }\n\n    if (this.handlers) {\n      for (const handler of this.handlers) {\n        this.removeHandleEvent(handler);\n      }\n    }\n\n    this.accordion?.destroy();\n  },\n};\n\nexport { AccordionHook as Accordion };\n", "import { getWindow, getDocument, getEventTarget, isVirtualClick, isMac } from '@zag-js/dom-query';\n\n// src/index.ts\nfunction isValidKey(e) {\n  return !(e.metaKey || !isMac() && e.altKey || e.ctrlKey || e.key === \"Control\" || e.key === \"Shift\" || e.key === \"Meta\");\n}\nvar nonTextInputTypes = /* @__PURE__ */ new Set([\"checkbox\", \"radio\", \"range\", \"color\", \"file\", \"image\", \"button\", \"submit\", \"reset\"]);\nfunction isKeyboardFocusEvent(isTextInput, modality, e) {\n  const target = e ? getEventTarget(e) : null;\n  const win = getWindow(target);\n  isTextInput = isTextInput || target instanceof win.HTMLInputElement && !nonTextInputTypes.has(target?.type) || target instanceof win.HTMLTextAreaElement || target instanceof win.HTMLElement && target.isContentEditable;\n  return !(isTextInput && modality === \"keyboard\" && e instanceof win.KeyboardEvent && !Reflect.has(FOCUS_VISIBLE_INPUT_KEYS, e.key));\n}\nvar currentModality = null;\nvar changeHandlers = /* @__PURE__ */ new Set();\nvar listenerMap = /* @__PURE__ */ new Map();\nvar hasEventBeforeFocus = false;\nvar hasBlurredWindowRecently = false;\nvar FOCUS_VISIBLE_INPUT_KEYS = {\n  Tab: true,\n  Escape: true\n};\nfunction triggerChangeHandlers(modality, e) {\n  for (let handler of changeHandlers) {\n    handler(modality, e);\n  }\n}\nfunction handleKeyboardEvent(e) {\n  hasEventBeforeFocus = true;\n  if (isValidKey(e)) {\n    currentModality = \"keyboard\";\n    triggerChangeHandlers(\"keyboard\", e);\n  }\n}\nfunction handlePointerEvent(e) {\n  currentModality = \"pointer\";\n  if (e.type === \"mousedown\" || e.type === \"pointerdown\") {\n    hasEventBeforeFocus = true;\n    triggerChangeHandlers(\"pointer\", e);\n  }\n}\nfunction handleClickEvent(e) {\n  if (isVirtualClick(e)) {\n    hasEventBeforeFocus = true;\n    currentModality = \"virtual\";\n  }\n}\nfunction handleFocusEvent(e) {\n  const target = getEventTarget(e);\n  if (target === getWindow(target) || target === getDocument(target)) {\n    return;\n  }\n  if (!hasEventBeforeFocus && !hasBlurredWindowRecently) {\n    currentModality = \"virtual\";\n    triggerChangeHandlers(\"virtual\", e);\n  }\n  hasEventBeforeFocus = false;\n  hasBlurredWindowRecently = false;\n}\nfunction handleWindowBlur() {\n  hasEventBeforeFocus = false;\n  hasBlurredWindowRecently = true;\n}\nfunction setupGlobalFocusEvents(root) {\n  if (typeof window === \"undefined\" || listenerMap.get(getWindow(root))) {\n    return;\n  }\n  const win = getWindow(root);\n  const doc = getDocument(root);\n  let focus = win.HTMLElement.prototype.focus;\n  function patchedFocus() {\n    currentModality = \"virtual\";\n    triggerChangeHandlers(\"virtual\", null);\n    hasEventBeforeFocus = true;\n    focus.apply(this, arguments);\n  }\n  try {\n    Object.defineProperty(win.HTMLElement.prototype, \"focus\", {\n      configurable: true,\n      value: patchedFocus\n    });\n  } catch {\n  }\n  doc.addEventListener(\"keydown\", handleKeyboardEvent, true);\n  doc.addEventListener(\"keyup\", handleKeyboardEvent, true);\n  doc.addEventListener(\"click\", handleClickEvent, true);\n  win.addEventListener(\"focus\", handleFocusEvent, true);\n  win.addEventListener(\"blur\", handleWindowBlur, false);\n  if (typeof win.PointerEvent !== \"undefined\") {\n    doc.addEventListener(\"pointerdown\", handlePointerEvent, true);\n    doc.addEventListener(\"pointermove\", handlePointerEvent, true);\n    doc.addEventListener(\"pointerup\", handlePointerEvent, true);\n  } else {\n    doc.addEventListener(\"mousedown\", handlePointerEvent, true);\n    doc.addEventListener(\"mousemove\", handlePointerEvent, true);\n    doc.addEventListener(\"mouseup\", handlePointerEvent, true);\n  }\n  win.addEventListener(\n    \"beforeunload\",\n    () => {\n      tearDownWindowFocusTracking(root);\n    },\n    { once: true }\n  );\n  listenerMap.set(win, { focus });\n}\nvar tearDownWindowFocusTracking = (root, loadListener) => {\n  const win = getWindow(root);\n  const doc = getDocument(root);\n  const listenerData = listenerMap.get(win);\n  if (!listenerData) {\n    return;\n  }\n  try {\n    Object.defineProperty(win.HTMLElement.prototype, \"focus\", {\n      configurable: true,\n      value: listenerData.focus\n    });\n  } catch {\n  }\n  doc.removeEventListener(\"keydown\", handleKeyboardEvent, true);\n  doc.removeEventListener(\"keyup\", handleKeyboardEvent, true);\n  doc.removeEventListener(\"click\", handleClickEvent, true);\n  win.removeEventListener(\"focus\", handleFocusEvent, true);\n  win.removeEventListener(\"blur\", handleWindowBlur, false);\n  if (typeof win.PointerEvent !== \"undefined\") {\n    doc.removeEventListener(\"pointerdown\", handlePointerEvent, true);\n    doc.removeEventListener(\"pointermove\", handlePointerEvent, true);\n    doc.removeEventListener(\"pointerup\", handlePointerEvent, true);\n  } else {\n    doc.removeEventListener(\"mousedown\", handlePointerEvent, true);\n    doc.removeEventListener(\"mousemove\", handlePointerEvent, true);\n    doc.removeEventListener(\"mouseup\", handlePointerEvent, true);\n  }\n  listenerMap.delete(win);\n};\nfunction getInteractionModality() {\n  return currentModality;\n}\nfunction setInteractionModality(modality) {\n  currentModality = modality;\n  triggerChangeHandlers(modality, null);\n}\nfunction trackInteractionModality(props) {\n  const { onChange, root } = props;\n  setupGlobalFocusEvents(root);\n  onChange({ modality: currentModality });\n  const handler = () => onChange({ modality: currentModality });\n  changeHandlers.add(handler);\n  return () => {\n    changeHandlers.delete(handler);\n  };\n}\nfunction isFocusVisible() {\n  return currentModality === \"keyboard\";\n}\nfunction trackFocusVisible(props = {}) {\n  const { isTextInput, autoFocus, onChange, root } = props;\n  setupGlobalFocusEvents(root);\n  onChange?.({ isFocusVisible: autoFocus || isFocusVisible(), modality: currentModality });\n  const handler = (modality, e) => {\n    if (!isKeyboardFocusEvent(!!isTextInput, modality, e)) return;\n    onChange?.({ isFocusVisible: isFocusVisible(), modality });\n  };\n  changeHandlers.add(handler);\n  return () => {\n    changeHandlers.delete(handler);\n  };\n}\n\nexport { getInteractionModality, isFocusVisible, listenerMap, setInteractionModality, trackFocusVisible, trackInteractionModality };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { dispatchInputCheckedEvent, setElementChecked, trackFormControl, trackPress, dataAttr, visuallyHiddenStyle, getEventTarget } from '@zag-js/dom-query';\nimport { trackFocusVisible, isFocusVisible } from '@zag-js/focus-visible';\nimport { createGuards, createMachine } from '@zag-js/core';\nimport { createProps } from '@zag-js/types';\nimport { createSplitProps } from '@zag-js/utils';\n\n// src/checkbox.anatomy.ts\nvar anatomy = createAnatomy(\"checkbox\").parts(\"root\", \"label\", \"control\", \"indicator\");\nvar parts = anatomy.build();\n\n// src/checkbox.dom.ts\nvar getRootId = (ctx) => ctx.ids?.root ?? `checkbox:${ctx.id}`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `checkbox:${ctx.id}:label`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `checkbox:${ctx.id}:control`;\nvar getHiddenInputId = (ctx) => ctx.ids?.hiddenInput ?? `checkbox:${ctx.id}:input`;\nvar getRootEl = (ctx) => ctx.getById(getRootId(ctx));\nvar getHiddenInputEl = (ctx) => ctx.getById(getHiddenInputId(ctx));\n\n// src/checkbox.connect.ts\nfunction connect(service, normalize) {\n  const { send, context, prop, computed, scope } = service;\n  const disabled = !!prop(\"disabled\");\n  const readOnly = !!prop(\"readOnly\");\n  const required = !!prop(\"required\");\n  const invalid = !!prop(\"invalid\");\n  const focused = !disabled && context.get(\"focused\");\n  const focusVisible = !disabled && context.get(\"focusVisible\");\n  const checked = computed(\"checked\");\n  const indeterminate = computed(\"indeterminate\");\n  const checkedState = context.get(\"checked\");\n  const dataAttrs = {\n    \"data-active\": dataAttr(context.get(\"active\")),\n    \"data-focus\": dataAttr(focused),\n    \"data-focus-visible\": dataAttr(focusVisible),\n    \"data-readonly\": dataAttr(readOnly),\n    \"data-hover\": dataAttr(context.get(\"hovered\")),\n    \"data-disabled\": dataAttr(disabled),\n    \"data-state\": indeterminate ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\",\n    \"data-invalid\": dataAttr(invalid),\n    \"data-required\": dataAttr(required)\n  };\n  return {\n    checked,\n    disabled,\n    indeterminate,\n    focused,\n    checkedState,\n    setChecked(checked2) {\n      send({ type: \"CHECKED.SET\", checked: checked2, isTrusted: false });\n    },\n    toggleChecked() {\n      send({ type: \"CHECKED.TOGGLE\", checked, isTrusted: false });\n    },\n    getRootProps() {\n      return normalize.label({\n        ...parts.root.attrs,\n        ...dataAttrs,\n        dir: prop(\"dir\"),\n        id: getRootId(scope),\n        htmlFor: getHiddenInputId(scope),\n        onPointerMove() {\n          if (disabled) return;\n          send({ type: \"CONTEXT.SET\", context: { hovered: true } });\n        },\n        onPointerLeave() {\n          if (disabled) return;\n          send({ type: \"CONTEXT.SET\", context: { hovered: false } });\n        },\n        onClick(event) {\n          const target = getEventTarget(event);\n          if (target === getHiddenInputEl(scope)) {\n            event.stopPropagation();\n          }\n        }\n      });\n    },\n    getLabelProps() {\n      return normalize.element({\n        ...parts.label.attrs,\n        ...dataAttrs,\n        dir: prop(\"dir\"),\n        id: getLabelId(scope)\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        ...dataAttrs,\n        dir: prop(\"dir\"),\n        id: getControlId(scope),\n        \"aria-hidden\": true\n      });\n    },\n    getIndicatorProps() {\n      return normalize.element({\n        ...parts.indicator.attrs,\n        ...dataAttrs,\n        dir: prop(\"dir\"),\n        hidden: !indeterminate && !checked\n      });\n    },\n    getHiddenInputProps() {\n      return normalize.input({\n        id: getHiddenInputId(scope),\n        type: \"checkbox\",\n        required: prop(\"required\"),\n        defaultChecked: checked,\n        disabled,\n        \"aria-labelledby\": getLabelId(scope),\n        \"aria-invalid\": invalid,\n        name: prop(\"name\"),\n        form: prop(\"form\"),\n        value: prop(\"value\"),\n        style: visuallyHiddenStyle,\n        onFocus() {\n          const focusVisible2 = isFocusVisible();\n          send({ type: \"CONTEXT.SET\", context: { focused: true, focusVisible: focusVisible2 } });\n        },\n        onBlur() {\n          send({ type: \"CONTEXT.SET\", context: { focused: false, focusVisible: false } });\n        },\n        onClick(event) {\n          if (readOnly) {\n            event.preventDefault();\n            return;\n          }\n          const checked2 = event.currentTarget.checked;\n          send({ type: \"CHECKED.SET\", checked: checked2, isTrusted: true });\n        }\n      });\n    }\n  };\n}\nvar { not } = createGuards();\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      value: \"on\",\n      ...props2,\n      defaultChecked: props2.defaultChecked ?? false\n    };\n  },\n  initialState() {\n    return \"ready\";\n  },\n  context({ prop, bindable }) {\n    return {\n      checked: bindable(() => ({\n        defaultValue: prop(\"defaultChecked\"),\n        value: prop(\"checked\"),\n        onChange(checked) {\n          prop(\"onCheckedChange\")?.({ checked });\n        }\n      })),\n      fieldsetDisabled: bindable(() => ({ defaultValue: false })),\n      focusVisible: bindable(() => ({ defaultValue: false })),\n      active: bindable(() => ({ defaultValue: false })),\n      focused: bindable(() => ({ defaultValue: false })),\n      hovered: bindable(() => ({ defaultValue: false }))\n    };\n  },\n  watch({ track, context, prop, action }) {\n    track([() => prop(\"disabled\")], () => {\n      action([\"removeFocusIfNeeded\"]);\n    });\n    track([() => context.get(\"checked\")], () => {\n      action([\"syncInputElement\"]);\n    });\n  },\n  effects: [\"trackFormControlState\", \"trackPressEvent\", \"trackFocusVisible\"],\n  on: {\n    \"CHECKED.TOGGLE\": [\n      {\n        guard: not(\"isTrusted\"),\n        actions: [\"toggleChecked\", \"dispatchChangeEvent\"]\n      },\n      {\n        actions: [\"toggleChecked\"]\n      }\n    ],\n    \"CHECKED.SET\": [\n      {\n        guard: not(\"isTrusted\"),\n        actions: [\"setChecked\", \"dispatchChangeEvent\"]\n      },\n      {\n        actions: [\"setChecked\"]\n      }\n    ],\n    \"CONTEXT.SET\": {\n      actions: [\"setContext\"]\n    }\n  },\n  computed: {\n    indeterminate: ({ context }) => isIndeterminate(context.get(\"checked\")),\n    checked: ({ context }) => isChecked(context.get(\"checked\")),\n    disabled: ({ context, prop }) => !!prop(\"disabled\") || context.get(\"fieldsetDisabled\")\n  },\n  states: {\n    ready: {}\n  },\n  implementations: {\n    guards: {\n      isTrusted: ({ event }) => !!event.isTrusted\n    },\n    effects: {\n      trackPressEvent({ context, computed, scope }) {\n        if (computed(\"disabled\")) return;\n        return trackPress({\n          pointerNode: getRootEl(scope),\n          keyboardNode: getHiddenInputEl(scope),\n          isValidKey: (event) => event.key === \" \",\n          onPress: () => context.set(\"active\", false),\n          onPressStart: () => context.set(\"active\", true),\n          onPressEnd: () => context.set(\"active\", false)\n        });\n      },\n      trackFocusVisible({ computed, scope }) {\n        if (computed(\"disabled\")) return;\n        return trackFocusVisible({ root: scope.getRootNode?.() });\n      },\n      trackFormControlState({ context, scope }) {\n        return trackFormControl(getHiddenInputEl(scope), {\n          onFieldsetDisabledChange(disabled) {\n            context.set(\"fieldsetDisabled\", disabled);\n          },\n          onFormReset() {\n            context.set(\"checked\", context.initial(\"checked\"));\n          }\n        });\n      }\n    },\n    actions: {\n      setContext({ context, event }) {\n        for (const key in event.context) {\n          context.set(key, event.context[key]);\n        }\n      },\n      syncInputElement({ context, computed, scope }) {\n        const inputEl = getHiddenInputEl(scope);\n        if (!inputEl) return;\n        setElementChecked(inputEl, computed(\"checked\"));\n        inputEl.indeterminate = isIndeterminate(context.get(\"checked\"));\n      },\n      removeFocusIfNeeded({ context, prop }) {\n        if (prop(\"disabled\") && context.get(\"focused\")) {\n          context.set(\"focused\", false);\n          context.set(\"focusVisible\", false);\n        }\n      },\n      setChecked({ context, event }) {\n        context.set(\"checked\", event.checked);\n      },\n      toggleChecked({ context, computed }) {\n        const checked = isIndeterminate(computed(\"checked\")) ? true : !computed(\"checked\");\n        context.set(\"checked\", checked);\n      },\n      dispatchChangeEvent({ computed, scope }) {\n        queueMicrotask(() => {\n          const inputEl = getHiddenInputEl(scope);\n          dispatchInputCheckedEvent(inputEl, { checked: computed(\"checked\") });\n        });\n      }\n    }\n  }\n});\nfunction isIndeterminate(checked) {\n  return checked === \"indeterminate\";\n}\nfunction isChecked(checked) {\n  return isIndeterminate(checked) ? false : !!checked;\n}\nvar props = createProps()([\n  \"defaultChecked\",\n  \"checked\",\n  \"dir\",\n  \"disabled\",\n  \"form\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"invalid\",\n  \"name\",\n  \"onCheckedChange\",\n  \"readOnly\",\n  \"required\",\n  \"value\"\n]);\nvar splitProps = createSplitProps(props);\n\nexport { anatomy, connect, machine, props, splitProps };\n", "import {connect, machine, type Props, type Api} from \"@zag-js/checkbox\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport { Component } from \"../lib/core\";\n\nexport class Checkbox extends Component<Props, Api> {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  initMachine(props: Props): VanillaMachine<any> {\n    return new VanillaMachine(machine, props);\n  }\n\n  initApi(): Api {\n    return connect(this.machine.service, normalizeProps);\n  }\n\n  render(): void {\n    const rootEl = this.el.querySelector<HTMLElement>('[data-scope=\"checkbox\"][data-part=\"root\"]');\n    if (!rootEl) return;\n    this.spreadProps(rootEl, this.api.getRootProps());\n\n    const inputEl = rootEl.querySelector<HTMLElement>(':scope > [data-scope=\"checkbox\"][data-part=\"hidden-input\"]');\n    if (inputEl) {\n      this.spreadProps(inputEl, this.api.getHiddenInputProps());\n    }\n\n    const labelEl = rootEl.querySelector<HTMLElement>(':scope > [data-scope=\"checkbox\"][data-part=\"label\"]');\n    if (labelEl) {\n      this.spreadProps(labelEl, this.api.getLabelProps());\n    }\n\n    const controlEl = rootEl.querySelector<HTMLElement>(':scope > [data-scope=\"checkbox\"][data-part=\"control\"]');\n    if (controlEl) {\n      this.spreadProps(controlEl, this.api.getControlProps());\n      \n      const indicatorEl = controlEl.querySelector<HTMLElement>(':scope > [data-scope=\"checkbox\"][data-part=\"indicator\"]');\n      if (indicatorEl) {\n        this.spreadProps(indicatorEl, this.api.getIndicatorProps());\n      }\n    }\n  }\n}", "import type { Hook } from \"phoenix_live_view\";\nimport type { HookInterface, CallbackRef } from \"phoenix_live_view/assets/js/types/view_hook\";\nimport { Checkbox } from \"../components/checkbox\";\nimport type { CheckedChangeDetails } from \"@zag-js/checkbox\";\n\nimport { getString, getBoolean, getDir } from \"../lib/util\";\n\ntype CheckboxHookState = {\n  checkbox?: Checkbox;\n  handlers?: Array<CallbackRef>;\n  onSetChecked?: (event: Event) => void;\n  onToggleChecked?: () => void;\n};\n\nconst CheckboxHook: Hook<object & CheckboxHookState, HTMLElement> = {\n  mounted(this: object & HookInterface<HTMLElement> & CheckboxHookState) {\n    const el = this.el;\n    const pushEvent = this.pushEvent.bind(this);\n    \n    const zagCheckbox = new Checkbox(el, {\n      id: el.id,\n      ...(getBoolean(el, \"controlled\")\n      ? { checked: getBoolean(el, \"checked\") }\n      : { defaultChecked: getBoolean(el, \"defaultChecked\") }),\n      disabled: getBoolean(el, \"disabled\"),\n      name: getString(el, \"name\"),\n      form: getString(el, \"form\"),\n      value: getString(el, \"value\"),\n      dir: getDir(el),\n      invalid: getBoolean(el, \"invalid\"),\n      required: getBoolean(el, \"required\"),\n      readOnly: getBoolean(el, \"readOnly\"),\n\n      onCheckedChange: (details: CheckedChangeDetails) => {\n        const eventName = getString(el, \"onCheckedChange\");\n        if (eventName && !this.liveSocket.main.isDead && this.liveSocket.main.isConnected()) {\n          pushEvent(eventName, {\n            checked: details.checked,\n            id: el.id,\n          });\n        }\n\n        const eventNameClient = getString(el, \"onCheckedChangeClient\");\n        if (eventNameClient) {\n          el.dispatchEvent(\n            new CustomEvent(eventNameClient, {\n              bubbles: true,\n              detail: {\n                value: details,\n                id: el.id,\n              },\n            })\n          );\n        }\n      },\n    });\n\n    zagCheckbox.init();\n    this.checkbox = zagCheckbox;\n\n    this.onSetChecked = (event: Event) => {\n      const { checked } = (event as CustomEvent<{ checked: boolean }>).detail;\n      zagCheckbox.api.setChecked(checked);\n    };\n    el.addEventListener(\"phx:checkbox:set-checked\", this.onSetChecked);\n\n    this.onToggleChecked = () => {\n      zagCheckbox.api.toggleChecked();\n    };\n    el.addEventListener(\"phx:checkbox:toggle-checked\", this.onToggleChecked);\n\n    this.handlers = [];\n\n    this.handlers.push(\n      this.handleEvent(\"checkbox_set_checked\", (payload: { id?: string; checked: boolean }) => {\n        const targetId = payload.id;\n        if (targetId && targetId !== el.id) return;\n        zagCheckbox.api.setChecked(payload.checked);\n      })\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"checkbox_toggle_checked\", (payload: { id?: string }) => {\n        const targetId = payload.id;\n        if (targetId && targetId !== el.id) return;\n        zagCheckbox.api.toggleChecked();\n      })\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"checkbox_checked\", () => {\n        this.pushEvent(\"checkbox_checked_response\", {\n          value: zagCheckbox.api.checked,\n        });\n      })\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"checkbox_focused\", () => {\n        this.pushEvent(\"checkbox_focused_response\", {\n          value: zagCheckbox.api.focused,\n        });\n      })\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"checkbox_disabled\", () => {\n        this.pushEvent(\"checkbox_disabled_response\", {\n          value: zagCheckbox.api.disabled,\n        });\n      })\n    );\n  },\n\n  updated(this: object & HookInterface<HTMLElement> & CheckboxHookState) {\n \n    this.checkbox?.updateProps({\n      id: this.el.id,\n      ...(getBoolean(this.el, \"controlled\")\n        ? { checked: getBoolean(this.el, \"checked\") }\n        : { defaultChecked: getBoolean(this.el, \"defaultChecked\") }),\n      disabled: getBoolean(this.el, \"disabled\"),\n      name: getString(this.el, \"name\"),\n      form: getString(this.el, \"form\"),\n      value: getString(this.el, \"value\"),\n      dir: getDir(this.el),\n      invalid: getBoolean(this.el, \"invalid\"),\n      required: getBoolean(this.el, \"required\"),\n      readOnly: getBoolean(this.el, \"readOnly\"),\n      label: getString(this.el, \"label\"),\n    });\n  },\n\n  destroyed(this: object & HookInterface<HTMLElement> & CheckboxHookState) {\n    if (this.onSetChecked) {\n      this.el.removeEventListener(\"phx:checkbox:set-checked\", this.onSetChecked);\n    }\n\n    if (this.onToggleChecked) {\n      this.el.removeEventListener(\"phx:checkbox:toggle-checked\", this.onToggleChecked);\n    }\n\n    if (this.handlers) {\n      for (const handler of this.handlers) {\n        this.removeHandleEvent(handler);\n      }\n    }\n\n    this.checkbox?.destroy();\n  },\n};\n\nexport { CheckboxHook as Checkbox };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { setElementValue, getWindow, dataAttr } from '@zag-js/dom-query';\nimport { createMachine } from '@zag-js/core';\nimport { setRafTimeout, createSplitProps } from '@zag-js/utils';\nimport { createProps } from '@zag-js/types';\n\n// src/clipboard.anatomy.ts\nvar anatomy = createAnatomy(\"clipboard\").parts(\"root\", \"control\", \"trigger\", \"indicator\", \"input\", \"label\");\nvar parts = anatomy.build();\nvar getRootId = (ctx) => ctx.ids?.root ?? `clip:${ctx.id}`;\nvar getInputId = (ctx) => ctx.ids?.input ?? `clip:${ctx.id}:input`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `clip:${ctx.id}:label`;\nvar getInputEl = (ctx) => ctx.getById(getInputId(ctx));\nvar writeToClipboard = (ctx, value) => copyText(ctx.getDoc(), value);\nfunction createNode(doc, text) {\n  const node = doc.createElement(\"pre\");\n  Object.assign(node.style, {\n    width: \"1px\",\n    height: \"1px\",\n    position: \"fixed\",\n    top: \"5px\"\n  });\n  node.textContent = text;\n  return node;\n}\nfunction copyNode(node) {\n  const win = getWindow(node);\n  const selection = win.getSelection();\n  if (selection == null) {\n    return Promise.reject(new Error());\n  }\n  selection.removeAllRanges();\n  const doc = node.ownerDocument;\n  const range = doc.createRange();\n  range.selectNodeContents(node);\n  selection.addRange(range);\n  doc.execCommand(\"copy\");\n  selection.removeAllRanges();\n  return Promise.resolve();\n}\nfunction copyText(doc, text) {\n  const win = doc.defaultView || window;\n  if (win.navigator.clipboard?.writeText !== void 0) {\n    return win.navigator.clipboard.writeText(text);\n  }\n  if (!doc.body) {\n    return Promise.reject(new Error());\n  }\n  const node = createNode(doc, text);\n  doc.body.appendChild(node);\n  copyNode(node);\n  doc.body.removeChild(node);\n  return Promise.resolve();\n}\n\n// src/clipboard.connect.ts\nfunction connect(service, normalize) {\n  const { state, send, context, scope } = service;\n  const copied = state.matches(\"copied\");\n  return {\n    copied,\n    value: context.get(\"value\"),\n    setValue(value) {\n      send({ type: \"VALUE.SET\", value });\n    },\n    copy() {\n      send({ type: \"COPY\" });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        \"data-copied\": dataAttr(copied),\n        id: getRootId(scope)\n      });\n    },\n    getLabelProps() {\n      return normalize.label({\n        ...parts.label.attrs,\n        htmlFor: getInputId(scope),\n        \"data-copied\": dataAttr(copied),\n        id: getLabelId(scope)\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        \"data-copied\": dataAttr(copied)\n      });\n    },\n    getInputProps() {\n      return normalize.input({\n        ...parts.input.attrs,\n        defaultValue: context.get(\"value\"),\n        \"data-copied\": dataAttr(copied),\n        readOnly: true,\n        \"data-readonly\": \"true\",\n        id: getInputId(scope),\n        onFocus(event) {\n          event.currentTarget.select();\n        },\n        onCopy() {\n          send({ type: \"INPUT.COPY\" });\n        }\n      });\n    },\n    getTriggerProps() {\n      return normalize.button({\n        ...parts.trigger.attrs,\n        type: \"button\",\n        \"aria-label\": copied ? \"Copied to clipboard\" : \"Copy to clipboard\",\n        \"data-copied\": dataAttr(copied),\n        onClick() {\n          send({ type: \"COPY\" });\n        }\n      });\n    },\n    getIndicatorProps(props2) {\n      return normalize.element({\n        ...parts.indicator.attrs,\n        hidden: props2.copied !== copied\n      });\n    }\n  };\n}\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      timeout: 3e3,\n      defaultValue: \"\",\n      ...props2\n    };\n  },\n  initialState() {\n    return \"idle\";\n  },\n  context({ prop, bindable }) {\n    return {\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        onChange(value) {\n          prop(\"onValueChange\")?.({ value });\n        }\n      }))\n    };\n  },\n  watch({ track, context, action }) {\n    track([() => context.get(\"value\")], () => {\n      action([\"syncInputElement\"]);\n    });\n  },\n  on: {\n    \"VALUE.SET\": {\n      actions: [\"setValue\"]\n    },\n    COPY: {\n      target: \"copied\",\n      actions: [\"copyToClipboard\", \"invokeOnCopy\"]\n    }\n  },\n  states: {\n    idle: {\n      on: {\n        \"INPUT.COPY\": {\n          target: \"copied\",\n          actions: [\"invokeOnCopy\"]\n        }\n      }\n    },\n    copied: {\n      effects: [\"waitForTimeout\"],\n      on: {\n        \"COPY.DONE\": {\n          target: \"idle\"\n        },\n        COPY: {\n          target: \"copied\",\n          actions: [\"copyToClipboard\", \"invokeOnCopy\"]\n        },\n        \"INPUT.COPY\": {\n          actions: [\"invokeOnCopy\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    effects: {\n      waitForTimeout({ prop, send }) {\n        return setRafTimeout(() => {\n          send({ type: \"COPY.DONE\" });\n        }, prop(\"timeout\"));\n      }\n    },\n    actions: {\n      setValue({ context, event }) {\n        context.set(\"value\", event.value);\n      },\n      copyToClipboard({ context, scope }) {\n        writeToClipboard(scope, context.get(\"value\"));\n      },\n      invokeOnCopy({ prop }) {\n        prop(\"onStatusChange\")?.({ copied: true });\n      },\n      syncInputElement({ context, scope }) {\n        const inputEl = getInputEl(scope);\n        if (!inputEl) return;\n        setElementValue(inputEl, context.get(\"value\"));\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"value\",\n  \"defaultValue\",\n  \"timeout\",\n  \"onStatusChange\",\n  \"onValueChange\"\n]);\nvar contextProps = createSplitProps(props);\nvar indicatorProps = createProps()([\"copied\"]);\nvar splitIndicatorProps = createSplitProps(indicatorProps);\n\nexport { anatomy, connect, contextProps, indicatorProps, machine, props, splitIndicatorProps };\n", "import {connect, machine, type Props, type Api}  from \"@zag-js/clipboard\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport { Component } from \"../lib/core\";\n\nexport class Clipboard extends Component<Props, Api> {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  initMachine(props: Props): VanillaMachine<any> {\n    return new VanillaMachine(machine, props);\n  }\n\n  initApi(): Api {\n    return connect(this.machine.service, normalizeProps);\n  }\n\n  render(): void {\n    const rootEl = this.el.querySelector<HTMLElement>('[data-scope=\"clipboard\"][data-part=\"root\"]');\n    if (rootEl) {\n      this.spreadProps(rootEl, this.api.getRootProps());\n\n      const labelEl = rootEl.querySelector<HTMLElement>('[data-scope=\"clipboard\"][data-part=\"label\"]');\n      if (labelEl) {\n        this.spreadProps(labelEl, this.api.getLabelProps());\n      }\n\n      const controlEl = rootEl.querySelector<HTMLElement>('[data-scope=\"clipboard\"][data-part=\"control\"]');\n      if (controlEl) {\n        this.spreadProps(controlEl, this.api.getControlProps());\n\n        const inputEl = controlEl.querySelector<HTMLElement>('[data-scope=\"clipboard\"][data-part=\"input\"]');\n        if (inputEl) {\n          const inputProps = { ...this.api.getInputProps() };\n          const inputAriaLabel = this.el.dataset.inputAriaLabel;\n          if (inputAriaLabel) {\n            inputProps[\"aria-label\"] = inputAriaLabel;\n          }\n          this.spreadProps(inputEl, inputProps);\n        }\n\n        const triggerEl = controlEl.querySelector<HTMLElement>('[data-scope=\"clipboard\"][data-part=\"trigger\"]');\n        if (triggerEl) {\n          const triggerProps = { ...this.api.getTriggerProps() };\n          const ariaLabel = this.el.dataset.triggerAriaLabel;\n          if (ariaLabel) {\n            triggerProps[\"aria-label\"] = ariaLabel;\n          }\n          this.spreadProps(triggerEl, triggerProps);\n        }\n      }\n    }\n\n  }\n}", "import type { Hook } from \"phoenix_live_view\";\nimport type { HookInterface, CallbackRef } from \"phoenix_live_view/assets/js/types/view_hook\";\nimport { Clipboard } from \"../components/clipboard\";\nimport type { ValueChangeDetails } from \"@zag-js/clipboard\";\nimport type { Direction } from \"@zag-js/types\";\n\nimport { getString, getNumber, getBoolean } from \"../lib/util\";\n\ntype ClipboardHookState = {\n  clipboard?: Clipboard;\n  handlers?: Array<CallbackRef>;\n  onCopy?: (event: Event) => void;\n  onSetValue?: (event: Event) => void;\n};\n\nconst ClipboardHook: Hook<object & ClipboardHookState, HTMLElement> = {\n  mounted(this: object & HookInterface<HTMLElement> & ClipboardHookState) {\n    const el = this.el;\n    const pushEvent = this.pushEvent.bind(this);\n    const liveSocket = this.liveSocket;\n\n    const clipboard = new Clipboard(el, {\n      id: el.id,\n      timeout: getNumber(el, \"timeout\"),\n      ...(getBoolean(el, \"controlled\")\n      ? { value: getString(el, \"value\") }\n      : { defaultValue: getString(el, \"defaultValue\") }),\n\n      onValueChange: (details: ValueChangeDetails) => {\n        const eventName = getString(el, \"onValueChange\");\n        if (eventName && liveSocket.main.isConnected()) {\n          pushEvent(eventName, {\n            id: el.id,\n            value: details.value ?? null,\n          });\n        }\n      },\n      onStatusChange: (details) => {\n        const eventName = getString(el, \"onStatusChange\");\n        if (eventName && liveSocket.main.isConnected()) {\n          pushEvent(eventName, {\n            id: el.id,\n            copied: details.copied,\n          });\n        }\n        const eventNameClient = getString(el, \"onStatusChangeClient\");\n        if (eventNameClient) {\n          el.dispatchEvent(\n            new CustomEvent(eventNameClient, {\n              bubbles: true,\n            })\n          );\n        }\n      },\n    });\n\n    clipboard.init();\n    this.clipboard = clipboard;\n\n    this.onCopy = () => {\n      clipboard.api.copy();\n    };\n    el.addEventListener(\"phx:clipboard:copy\", this.onCopy);\n\n    this.onSetValue = (event: Event) => {\n      const { value } = (event as CustomEvent<{ value: string }>).detail;\n      clipboard.api.setValue(value);\n    };\n    el.addEventListener(\"phx:clipboard:set-value\", this.onSetValue);\n\n    this.handlers = [];\n\n    this.handlers.push(\n      this.handleEvent(\"clipboard_copy\", (payload: { clipboard_id?: string }) => {\n        const targetId = payload.clipboard_id;\n        if (targetId && targetId !== el.id) return;\n        clipboard.api.copy();\n      })\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"clipboard_set_value\", (payload: { clipboard_id?: string; value: string }) => {\n        const targetId = payload.clipboard_id;\n        if (targetId && targetId !== el.id) return;\n        clipboard.api.setValue(payload.value);\n      })\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"clipboard_copied\", () => {\n        this.pushEvent(\"clipboard_copied_response\", {\n          value: clipboard.api.copied,\n        });\n      })\n    );\n  },\n\n  updated(this: object & HookInterface<HTMLElement> & ClipboardHookState) {\n    this.clipboard?.updateProps({\n      id: this.el.id,\n      timeout: getNumber(this.el, \"timeout\"),\n      ...(getBoolean(this.el, \"controlled\")\n        ? { value: getString(this.el, \"value\") }\n        : { defaultValue: getString(this.el, \"value\") }),\n      dir: getString<Direction>(this.el, \"dir\", [\"ltr\", \"rtl\"]),\n    });\n  },\n\n  destroyed(this: object & HookInterface<HTMLElement> & ClipboardHookState) {\n    if (this.onCopy) {\n      this.el.removeEventListener(\"phx:clipboard:copy\", this.onCopy);\n    }\n\n    if (this.onSetValue) {\n      this.el.removeEventListener(\"phx:clipboard:set-value\", this.onSetValue);\n    }\n\n    if (this.handlers) {\n      for (const handler of this.handlers) {\n        this.removeHandleEvent(handler);\n      }\n    }\n\n    this.clipboard?.destroy();\n  },\n};\n\nexport { ClipboardHook as Clipboard };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { raf, observeChildren, getComputedStyle, setStyle, getTabbables, setAttribute, getEventTarget, nextTick, dataAttr } from '@zag-js/dom-query';\nimport { createSplitProps, toPx } from '@zag-js/utils';\nimport { createMachine } from '@zag-js/core';\nimport { createProps } from '@zag-js/types';\n\n// src/collapsible.anatomy.ts\nvar anatomy = createAnatomy(\"collapsible\").parts(\"root\", \"trigger\", \"content\", \"indicator\");\nvar parts = anatomy.build();\n\n// src/collapsible.dom.ts\nvar getRootId = (ctx) => ctx.ids?.root ?? `collapsible:${ctx.id}`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `collapsible:${ctx.id}:content`;\nvar getTriggerId = (ctx) => ctx.ids?.trigger ?? `collapsible:${ctx.id}:trigger`;\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nfunction connect(service, normalize) {\n  const { state, send, context, scope, prop } = service;\n  const visible = state.matches(\"open\") || state.matches(\"closing\");\n  const open = state.matches(\"open\");\n  const closed = state.matches(\"closed\");\n  const { width, height } = context.get(\"size\");\n  const disabled = !!prop(\"disabled\");\n  const collapsedHeight = prop(\"collapsedHeight\");\n  const collapsedWidth = prop(\"collapsedWidth\");\n  const hasCollapsedHeight = collapsedHeight != null;\n  const hasCollapsedWidth = collapsedWidth != null;\n  const hasCollapsedSize = hasCollapsedHeight || hasCollapsedWidth;\n  const skip = !context.get(\"initial\") && open;\n  return {\n    disabled,\n    visible,\n    open,\n    measureSize() {\n      send({ type: \"size.measure\" });\n    },\n    setOpen(nextOpen) {\n      const open2 = state.matches(\"open\");\n      if (open2 === nextOpen) return;\n      send({ type: nextOpen ? \"open\" : \"close\" });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        \"data-state\": open ? \"open\" : \"closed\",\n        dir: prop(\"dir\"),\n        id: getRootId(scope)\n      });\n    },\n    getContentProps() {\n      return normalize.element({\n        ...parts.content.attrs,\n        id: getContentId(scope),\n        \"data-collapsible\": \"\",\n        \"data-state\": skip ? void 0 : open ? \"open\" : \"closed\",\n        \"data-disabled\": dataAttr(disabled),\n        \"data-has-collapsed-size\": dataAttr(hasCollapsedSize),\n        hidden: !visible && !hasCollapsedSize,\n        dir: prop(\"dir\"),\n        style: {\n          \"--height\": toPx(height),\n          \"--width\": toPx(width),\n          \"--collapsed-height\": toPx(collapsedHeight),\n          \"--collapsed-width\": toPx(collapsedWidth),\n          ...closed && hasCollapsedHeight && {\n            overflow: \"hidden\",\n            minHeight: toPx(collapsedHeight),\n            maxHeight: toPx(collapsedHeight)\n          },\n          ...closed && hasCollapsedWidth && {\n            overflow: \"hidden\",\n            minWidth: toPx(collapsedWidth),\n            maxWidth: toPx(collapsedWidth)\n          }\n        }\n      });\n    },\n    getTriggerProps() {\n      return normalize.element({\n        ...parts.trigger.attrs,\n        id: getTriggerId(scope),\n        dir: prop(\"dir\"),\n        type: \"button\",\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-disabled\": dataAttr(disabled),\n        \"aria-controls\": getContentId(scope),\n        \"aria-expanded\": visible || false,\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (disabled) return;\n          send({ type: open ? \"close\" : \"open\" });\n        }\n      });\n    },\n    getIndicatorProps() {\n      return normalize.element({\n        ...parts.indicator.attrs,\n        dir: prop(\"dir\"),\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-disabled\": dataAttr(disabled)\n      });\n    }\n  };\n}\nvar machine = createMachine({\n  initialState({ prop }) {\n    const open = prop(\"open\") || prop(\"defaultOpen\");\n    return open ? \"open\" : \"closed\";\n  },\n  context({ bindable }) {\n    return {\n      size: bindable(() => ({\n        defaultValue: { height: 0, width: 0 },\n        sync: true\n      })),\n      initial: bindable(() => ({\n        defaultValue: false\n      }))\n    };\n  },\n  refs() {\n    return {\n      cleanup: void 0,\n      stylesRef: void 0\n    };\n  },\n  watch({ track, prop, action }) {\n    track([() => prop(\"open\")], () => {\n      action([\"setInitial\", \"computeSize\", \"toggleVisibility\"]);\n    });\n  },\n  exit: [\"cleanupNode\"],\n  states: {\n    closed: {\n      effects: [\"trackTabbableElements\"],\n      on: {\n        \"controlled.open\": {\n          target: \"open\"\n        },\n        open: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitial\", \"computeSize\", \"invokeOnOpen\"]\n          }\n        ]\n      }\n    },\n    closing: {\n      effects: [\"trackExitAnimation\"],\n      on: {\n        \"controlled.close\": {\n          target: \"closed\"\n        },\n        \"controlled.open\": {\n          target: \"open\"\n        },\n        open: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitial\", \"invokeOnOpen\"]\n          }\n        ],\n        close: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnExitComplete\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"setInitial\", \"computeSize\", \"invokeOnExitComplete\"]\n          }\n        ],\n        \"animation.end\": {\n          target: \"closed\",\n          actions: [\"invokeOnExitComplete\", \"clearInitial\"]\n        }\n      }\n    },\n    open: {\n      effects: [\"trackEnterAnimation\"],\n      on: {\n        \"controlled.close\": {\n          target: \"closing\"\n        },\n        close: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"closing\",\n            actions: [\"setInitial\", \"computeSize\", \"invokeOnClose\"]\n          }\n        ],\n        \"size.measure\": {\n          actions: [\"measureSize\"]\n        },\n        \"animation.end\": {\n          actions: [\"clearInitial\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      isOpenControlled: ({ prop }) => prop(\"open\") != void 0\n    },\n    effects: {\n      trackEnterAnimation: ({ send, scope }) => {\n        let cleanup;\n        const rafCleanup = raf(() => {\n          const contentEl = getContentEl(scope);\n          if (!contentEl) return;\n          const animationName = getComputedStyle(contentEl).animationName;\n          const hasNoAnimation = !animationName || animationName === \"none\";\n          if (hasNoAnimation) {\n            send({ type: \"animation.end\" });\n            return;\n          }\n          const onEnd = (event) => {\n            const target = getEventTarget(event);\n            if (target === contentEl) {\n              send({ type: \"animation.end\" });\n            }\n          };\n          contentEl.addEventListener(\"animationend\", onEnd);\n          cleanup = () => {\n            contentEl.removeEventListener(\"animationend\", onEnd);\n          };\n        });\n        return () => {\n          rafCleanup();\n          cleanup?.();\n        };\n      },\n      trackExitAnimation: ({ send, scope }) => {\n        let cleanup;\n        const rafCleanup = raf(() => {\n          const contentEl = getContentEl(scope);\n          if (!contentEl) return;\n          const animationName = getComputedStyle(contentEl).animationName;\n          const hasNoAnimation = !animationName || animationName === \"none\";\n          if (hasNoAnimation) {\n            send({ type: \"animation.end\" });\n            return;\n          }\n          const onEnd = (event) => {\n            const target = getEventTarget(event);\n            if (target === contentEl) {\n              send({ type: \"animation.end\" });\n            }\n          };\n          contentEl.addEventListener(\"animationend\", onEnd);\n          const restoreStyles = setStyle(contentEl, {\n            animationFillMode: \"forwards\"\n          });\n          cleanup = () => {\n            contentEl.removeEventListener(\"animationend\", onEnd);\n            nextTick(() => restoreStyles());\n          };\n        });\n        return () => {\n          rafCleanup();\n          cleanup?.();\n        };\n      },\n      trackTabbableElements: ({ scope, prop }) => {\n        if (!prop(\"collapsedHeight\") && !prop(\"collapsedWidth\")) return;\n        const contentEl = getContentEl(scope);\n        if (!contentEl) return;\n        const applyInertToTabbables = () => {\n          const tabbables = getTabbables(contentEl);\n          const restoreAttrs = tabbables.map((tabbable) => setAttribute(tabbable, \"inert\", \"\"));\n          return () => {\n            restoreAttrs.forEach((attr) => attr());\n          };\n        };\n        let restoreInert = applyInertToTabbables();\n        const observerCleanup = observeChildren(contentEl, {\n          callback() {\n            restoreInert();\n            restoreInert = applyInertToTabbables();\n          }\n        });\n        return () => {\n          restoreInert();\n          observerCleanup();\n        };\n      }\n    },\n    actions: {\n      setInitial: ({ context, flush }) => {\n        flush(() => {\n          context.set(\"initial\", true);\n        });\n      },\n      clearInitial: ({ context }) => {\n        context.set(\"initial\", false);\n      },\n      cleanupNode: ({ refs }) => {\n        refs.set(\"stylesRef\", null);\n      },\n      measureSize: ({ context, scope }) => {\n        const contentEl = getContentEl(scope);\n        if (!contentEl) return;\n        const { height, width } = contentEl.getBoundingClientRect();\n        context.set(\"size\", { height, width });\n      },\n      computeSize: ({ refs, scope, context }) => {\n        refs.get(\"cleanup\")?.();\n        const rafCleanup = raf(() => {\n          const contentEl = getContentEl(scope);\n          if (!contentEl) return;\n          const hidden = contentEl.hidden;\n          contentEl.style.animationName = \"none\";\n          contentEl.style.animationDuration = \"0s\";\n          contentEl.hidden = false;\n          const rect = contentEl.getBoundingClientRect();\n          context.set(\"size\", { height: rect.height, width: rect.width });\n          if (context.get(\"initial\")) {\n            contentEl.style.animationName = \"\";\n            contentEl.style.animationDuration = \"\";\n          }\n          contentEl.hidden = hidden;\n        });\n        refs.set(\"cleanup\", rafCleanup);\n      },\n      invokeOnOpen: ({ prop }) => {\n        prop(\"onOpenChange\")?.({ open: true });\n      },\n      invokeOnClose: ({ prop }) => {\n        prop(\"onOpenChange\")?.({ open: false });\n      },\n      invokeOnExitComplete: ({ prop }) => {\n        prop(\"onExitComplete\")?.();\n      },\n      toggleVisibility: ({ prop, send }) => {\n        send({ type: prop(\"open\") ? \"controlled.open\" : \"controlled.close\" });\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"dir\",\n  \"disabled\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"collapsedHeight\",\n  \"collapsedWidth\",\n  \"onExitComplete\",\n  \"onOpenChange\",\n  \"defaultOpen\",\n  \"open\"\n]);\nvar splitProps = createSplitProps(props);\n\nexport { anatomy, connect, machine, props, splitProps };\n", "import {connect, machine, type Props, type Api}  from \"@zag-js/collapsible\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport { Component } from \"../lib/core\";\n\nexport class Collapsible extends Component<Props, Api> {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  initMachine(props: Props): VanillaMachine<any> {\n    return new VanillaMachine(machine, props);\n  }\n\n  initApi(): Api {\n    return connect(this.machine.service, normalizeProps);\n  }\n\n  render(): void {\n    const rootEl = this.el.querySelector<HTMLElement>('[data-scope=\"collapsible\"][data-part=\"root\"]');\n    if (rootEl) {\n      this.spreadProps(rootEl, this.api.getRootProps());\n\n      const triggerEl = rootEl.querySelector<HTMLElement>('[data-scope=\"collapsible\"][data-part=\"trigger\"]');\n      if (triggerEl) {\n        this.spreadProps(triggerEl, this.api.getTriggerProps());\n      }\n\n      const contentEl = rootEl.querySelector<HTMLElement>('[data-scope=\"collapsible\"][data-part=\"content\"]');\n      if (contentEl) {\n        this.spreadProps(contentEl, this.api.getContentProps());\n      }\n    }\n\n  }\n}", "import type { Hook } from \"phoenix_live_view\";\nimport type { HookInterface, CallbackRef } from \"phoenix_live_view/assets/js/types/view_hook\";\nimport { Collapsible } from \"../components/collapsible\";\nimport type { OpenChangeDetails } from \"@zag-js/collapsible\";\nimport type { Direction } from \"@zag-js/types\";\n\nimport { getString, getBoolean } from \"../lib/util\";\n\ntype CollapsibleHookState = {\n  collapsible?: Collapsible;\n  handlers?: Array<CallbackRef>;\n  onSetOpen?: (event: Event) => void;\n};\n\nconst CollapsibleHook: Hook<object & CollapsibleHookState, HTMLElement> = {\n  mounted(this: object & HookInterface<HTMLElement> & CollapsibleHookState) {\n    const el = this.el;\n    const pushEvent = this.pushEvent.bind(this);\n\n    const collapsible = new Collapsible(el, {\n      id: el.id,\n      ...(getBoolean(el, \"controlled\")\n        ? { open: getBoolean(el, \"open\") }\n        : { defaultOpen: getBoolean(el, \"defaultOpen\") }),\n      disabled: getBoolean(el, \"disabled\"),\n      dir: getString<Direction>(el, \"dir\", [\"ltr\", \"rtl\"]),\n      onOpenChange: (details: OpenChangeDetails) => {\n        const eventName = getString(el, \"onOpenChange\");\n        if (eventName && this.liveSocket.main.isConnected()) {\n          pushEvent(eventName, {\n            id: el.id,\n            open: details.open,\n          });\n        }\n\n        const eventNameClient = getString(el, \"onOpenChangeClient\");\n        if (eventNameClient) {\n          el.dispatchEvent(\n            new CustomEvent(eventNameClient, {\n              bubbles: true,\n              detail: {\n                id: el.id,\n                open: details.open,\n              },\n            })\n          );\n        }\n      },\n    });\n\n    collapsible.init();\n    this.collapsible = collapsible;\n\n    this.onSetOpen = (event: Event) => {\n      const { open } = (event as CustomEvent<{ open: boolean }>).detail;\n      collapsible.api.setOpen(open);\n    };\n    el.addEventListener(\"phx:collapsible:set-open\", this.onSetOpen);\n\n    this.handlers = [];\n\n    this.handlers.push(\n      this.handleEvent(\"collapsible_set_open\", (payload: { collapsible_id?: string; open: boolean }) => {\n        const targetId = payload.collapsible_id;\n        if (targetId && targetId !== el.id) return;\n        collapsible.api.setOpen(payload.open);\n      })\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"collapsible_open\", () => {\n        this.pushEvent(\"collapsible_open_response\", {\n          value: collapsible.api.open,\n        });\n      })\n    );\n  },\n\n  updated(this: object & HookInterface<HTMLElement> & CollapsibleHookState) {\n    this.collapsible?.updateProps({\n      id: this.el.id,\n      ...(getBoolean(this.el, \"controlled\")\n        ? { open: getBoolean(this.el, \"open\") }\n        : { defaultOpen: getBoolean(this.el, \"defaultOpen\") }),\n      disabled: getBoolean(this.el, \"disabled\"),\n      dir: getString<Direction>(this.el, \"dir\", [\"ltr\", \"rtl\"]),\n    });\n  },\n\n  destroyed(this: object & HookInterface<HTMLElement> & CollapsibleHookState) {\n    if (this.onSetOpen) {\n      this.el.removeEventListener(\"phx:collapsible:set-open\", this.onSetOpen);\n    }\n\n    if (this.handlers) {\n      for (const handler of this.handlers) {\n        this.removeHandleEvent(handler);\n      }\n    }\n\n    this.collapsible?.destroy();\n  },\n};\n\nexport { CollapsibleHook as Collapsible };\n", "import { hasProp, isObject, isEqual, chunk, prevIndex, nextIndex } from '@zag-js/utils';\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar fallback = {\n  itemToValue(item) {\n    if (typeof item === \"string\") return item;\n    if (isObject(item) && hasProp(item, \"value\")) return item.value;\n    return \"\";\n  },\n  itemToString(item) {\n    if (typeof item === \"string\") return item;\n    if (isObject(item) && hasProp(item, \"label\")) return item.label;\n    return fallback.itemToValue(item);\n  },\n  isItemDisabled(item) {\n    if (isObject(item) && hasProp(item, \"disabled\")) return !!item.disabled;\n    return false;\n  }\n};\nvar ListCollection = class _ListCollection {\n  constructor(options) {\n    this.options = options;\n    /**\n     * The items in the collection\n     */\n    __publicField(this, \"items\");\n    __publicField(this, \"indexMap\", null);\n    /**\n     * Copy the collection\n     */\n    __publicField(this, \"copy\", (items) => {\n      return new _ListCollection({ ...this.options, items: items ?? [...this.items] });\n    });\n    /**\n     * Check if the collection is equal to another collection\n     */\n    __publicField(this, \"isEqual\", (other) => {\n      return isEqual(this.items, other.items);\n    });\n    /**\n     * Function to update the collection items\n     */\n    __publicField(this, \"setItems\", (items) => {\n      return this.copy(items);\n    });\n    /**\n     * Returns all the values in the collection\n     */\n    __publicField(this, \"getValues\", (items = this.items) => {\n      const values = [];\n      for (const item of items) {\n        const value = this.getItemValue(item);\n        if (value != null) values.push(value);\n      }\n      return values;\n    });\n    /**\n     * Get the item based on its value\n     */\n    __publicField(this, \"find\", (value) => {\n      if (value == null) return null;\n      const index = this.indexOf(value);\n      return index !== -1 ? this.at(index) : null;\n    });\n    /**\n     * Get the items based on its values\n     */\n    __publicField(this, \"findMany\", (values) => {\n      const result = [];\n      for (const value of values) {\n        const item = this.find(value);\n        if (item != null) result.push(item);\n      }\n      return result;\n    });\n    /**\n     * Get the item based on its index\n     */\n    __publicField(this, \"at\", (index) => {\n      if (!this.options.groupBy && !this.options.groupSort) {\n        return this.items[index] ?? null;\n      }\n      let idx = 0;\n      const groups = this.group();\n      for (const [, items] of groups) {\n        for (const item of items) {\n          if (idx === index) return item;\n          idx++;\n        }\n      }\n      return null;\n    });\n    __publicField(this, \"sortFn\", (valueA, valueB) => {\n      const indexA = this.indexOf(valueA);\n      const indexB = this.indexOf(valueB);\n      return (indexA ?? 0) - (indexB ?? 0);\n    });\n    /**\n     * Sort the values based on their index\n     */\n    __publicField(this, \"sort\", (values) => {\n      return [...values].sort(this.sortFn.bind(this));\n    });\n    /**\n     * Convert an item to a value\n     */\n    __publicField(this, \"getItemValue\", (item) => {\n      if (item == null) return null;\n      return this.options.itemToValue?.(item) ?? fallback.itemToValue(item);\n    });\n    /**\n     * Whether an item is disabled\n     */\n    __publicField(this, \"getItemDisabled\", (item) => {\n      if (item == null) return false;\n      return this.options.isItemDisabled?.(item) ?? fallback.isItemDisabled(item);\n    });\n    /**\n     * Convert an item to a string\n     */\n    __publicField(this, \"stringifyItem\", (item) => {\n      if (item == null) return null;\n      return this.options.itemToString?.(item) ?? fallback.itemToString(item);\n    });\n    /**\n     * Convert a value to a string\n     */\n    __publicField(this, \"stringify\", (value) => {\n      if (value == null) return null;\n      return this.stringifyItem(this.find(value));\n    });\n    /**\n     * Convert an array of items to a string\n     */\n    __publicField(this, \"stringifyItems\", (items, separator = \", \") => {\n      const strs = [];\n      for (const item of items) {\n        const str = this.stringifyItem(item);\n        if (str != null) strs.push(str);\n      }\n      return strs.join(separator);\n    });\n    /**\n     * Convert an array of items to a string\n     */\n    __publicField(this, \"stringifyMany\", (value, separator) => {\n      return this.stringifyItems(this.findMany(value), separator);\n    });\n    /**\n     * Whether the collection has a value\n     */\n    __publicField(this, \"has\", (value) => {\n      return this.indexOf(value) !== -1;\n    });\n    /**\n     * Whether the collection has an item\n     */\n    __publicField(this, \"hasItem\", (item) => {\n      if (item == null) return false;\n      return this.has(this.getItemValue(item));\n    });\n    /**\n     * Group items by the groupBy function provided in options\n     * Returns an array of [groupKey, items] tuples\n     */\n    __publicField(this, \"group\", () => {\n      const { groupBy, groupSort } = this.options;\n      if (!groupBy) return [[\"\", [...this.items]]];\n      const groups = /* @__PURE__ */ new Map();\n      this.items.forEach((item, index) => {\n        const groupKey = groupBy(item, index);\n        if (!groups.has(groupKey)) {\n          groups.set(groupKey, []);\n        }\n        groups.get(groupKey).push(item);\n      });\n      let entries = Array.from(groups.entries());\n      if (groupSort) {\n        entries.sort(([a], [b]) => {\n          if (typeof groupSort === \"function\") return groupSort(a, b);\n          if (Array.isArray(groupSort)) {\n            const indexA = groupSort.indexOf(a);\n            const indexB = groupSort.indexOf(b);\n            if (indexA === -1) return 1;\n            if (indexB === -1) return -1;\n            return indexA - indexB;\n          }\n          if (groupSort === \"asc\") return a.localeCompare(b);\n          if (groupSort === \"desc\") return b.localeCompare(a);\n          return 0;\n        });\n      }\n      return entries;\n    });\n    /**\n     * Returns the next value in the collection\n     */\n    __publicField(this, \"getNextValue\", (value, step = 1, clamp = false) => {\n      let index = this.indexOf(value);\n      if (index === -1) return null;\n      index = clamp ? Math.min(index + step, this.size - 1) : index + step;\n      while (index <= this.size && this.getItemDisabled(this.at(index))) index++;\n      return this.getItemValue(this.at(index));\n    });\n    /**\n     * Returns the previous value in the collection\n     */\n    __publicField(this, \"getPreviousValue\", (value, step = 1, clamp = false) => {\n      let index = this.indexOf(value);\n      if (index === -1) return null;\n      index = clamp ? Math.max(index - step, 0) : index - step;\n      while (index >= 0 && this.getItemDisabled(this.at(index))) index--;\n      return this.getItemValue(this.at(index));\n    });\n    /**\n     * Get the index of an item based on its key\n     */\n    __publicField(this, \"indexOf\", (value) => {\n      if (value == null) return -1;\n      if (!this.options.groupBy && !this.options.groupSort) {\n        return this.items.findIndex((item) => this.getItemValue(item) === value);\n      }\n      if (!this.indexMap) {\n        this.indexMap = /* @__PURE__ */ new Map();\n        let idx = 0;\n        const groups = this.group();\n        for (const [, items] of groups) {\n          for (const item of items) {\n            const itemValue = this.getItemValue(item);\n            if (itemValue != null) {\n              this.indexMap.set(itemValue, idx);\n            }\n            idx++;\n          }\n        }\n      }\n      return this.indexMap.get(value) ?? -1;\n    });\n    __publicField(this, \"getByText\", (text, current) => {\n      const currentIndex = current != null ? this.indexOf(current) : -1;\n      const isSingleKey = text.length === 1;\n      for (let i = 0; i < this.items.length; i++) {\n        const item = this.items[(currentIndex + i + 1) % this.items.length];\n        if (isSingleKey && this.getItemValue(item) === current) continue;\n        if (this.getItemDisabled(item)) continue;\n        if (match(this.stringifyItem(item), text)) return item;\n      }\n      return void 0;\n    });\n    /**\n     * Search for a value based on a query\n     */\n    __publicField(this, \"search\", (queryString, options) => {\n      const { state, currentValue, timeout = 350 } = options;\n      const search = state.keysSoFar + queryString;\n      const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n      const query = isRepeated ? search[0] : search;\n      const item = this.getByText(query, currentValue);\n      const value = this.getItemValue(item);\n      function cleanup() {\n        clearTimeout(state.timer);\n        state.timer = -1;\n      }\n      function update(value2) {\n        state.keysSoFar = value2;\n        cleanup();\n        if (value2 !== \"\") {\n          state.timer = +setTimeout(() => {\n            update(\"\");\n            cleanup();\n          }, timeout);\n        }\n      }\n      update(search);\n      return value;\n    });\n    /**\n     * Update an item in the collection\n     */\n    __publicField(this, \"update\", (value, item) => {\n      let index = this.indexOf(value);\n      if (index === -1) return this;\n      return this.copy([...this.items.slice(0, index), item, ...this.items.slice(index + 1)]);\n    });\n    /**\n     * Update an item in the collection if it exists, otherwise append it\n     */\n    __publicField(this, \"upsert\", (value, item, mode = \"append\") => {\n      let index = this.indexOf(value);\n      if (index === -1) {\n        const fn = mode === \"append\" ? this.append : this.prepend;\n        return fn(item);\n      }\n      return this.copy([...this.items.slice(0, index), item, ...this.items.slice(index + 1)]);\n    });\n    /**\n     * Insert items at a specific index\n     */\n    __publicField(this, \"insert\", (index, ...items) => {\n      return this.copy(insert(this.items, index, ...items));\n    });\n    /**\n     * Insert items before a specific value\n     */\n    __publicField(this, \"insertBefore\", (value, ...items) => {\n      let toIndex = this.indexOf(value);\n      if (toIndex === -1) {\n        if (this.items.length === 0) toIndex = 0;\n        else return this;\n      }\n      return this.copy(insert(this.items, toIndex, ...items));\n    });\n    /**\n     * Insert items after a specific value\n     */\n    __publicField(this, \"insertAfter\", (value, ...items) => {\n      let toIndex = this.indexOf(value);\n      if (toIndex === -1) {\n        if (this.items.length === 0) toIndex = 0;\n        else return this;\n      }\n      return this.copy(insert(this.items, toIndex + 1, ...items));\n    });\n    /**\n     * Prepend items to the collection\n     */\n    __publicField(this, \"prepend\", (...items) => {\n      return this.copy(insert(this.items, 0, ...items));\n    });\n    /**\n     * Append items to the collection\n     */\n    __publicField(this, \"append\", (...items) => {\n      return this.copy(insert(this.items, this.items.length, ...items));\n    });\n    /**\n     * Filter the collection\n     */\n    __publicField(this, \"filter\", (fn) => {\n      const filteredItems = this.items.filter((item, index) => fn(this.stringifyItem(item), index, item));\n      return this.copy(filteredItems);\n    });\n    /**\n     * Remove items from the collection\n     */\n    __publicField(this, \"remove\", (...itemsOrValues) => {\n      const values = itemsOrValues.map(\n        (itemOrValue) => typeof itemOrValue === \"string\" ? itemOrValue : this.getItemValue(itemOrValue)\n      );\n      return this.copy(\n        this.items.filter((item) => {\n          const value = this.getItemValue(item);\n          if (value == null) return false;\n          return !values.includes(value);\n        })\n      );\n    });\n    /**\n     * Move an item to a specific index\n     */\n    __publicField(this, \"move\", (value, toIndex) => {\n      const fromIndex = this.indexOf(value);\n      if (fromIndex === -1) return this;\n      return this.copy(move(this.items, [fromIndex], toIndex));\n    });\n    /**\n     * Move items before a specific value\n     */\n    __publicField(this, \"moveBefore\", (value, ...values) => {\n      let toIndex = this.items.findIndex((item) => this.getItemValue(item) === value);\n      if (toIndex === -1) return this;\n      let indices = values.map((value2) => this.items.findIndex((item) => this.getItemValue(item) === value2)).sort((a, b) => a - b);\n      return this.copy(move(this.items, indices, toIndex));\n    });\n    /**\n     * Move items after a specific value\n     */\n    __publicField(this, \"moveAfter\", (value, ...values) => {\n      let toIndex = this.items.findIndex((item) => this.getItemValue(item) === value);\n      if (toIndex === -1) return this;\n      let indices = values.map((value2) => this.items.findIndex((item) => this.getItemValue(item) === value2)).sort((a, b) => a - b);\n      return this.copy(move(this.items, indices, toIndex + 1));\n    });\n    /**\n     * Reorder items\n     */\n    __publicField(this, \"reorder\", (fromIndex, toIndex) => {\n      return this.copy(move(this.items, [fromIndex], toIndex));\n    });\n    /**\n     * Compare two values\n     */\n    __publicField(this, \"compareValue\", (a, b) => {\n      const indexA = this.indexOf(a);\n      const indexB = this.indexOf(b);\n      if (indexA < indexB) return -1;\n      if (indexA > indexB) return 1;\n      return 0;\n    });\n    /**\n     * Get the range of values between two values\n     */\n    __publicField(this, \"range\", (from, to) => {\n      let keys = [];\n      let key = from;\n      while (key != null) {\n        let item = this.find(key);\n        if (item) keys.push(key);\n        if (key === to) return keys;\n        key = this.getNextValue(key);\n      }\n      return [];\n    });\n    /**\n     * Get the range of values between two values\n     */\n    __publicField(this, \"getValueRange\", (from, to) => {\n      if (from && to) {\n        if (this.compareValue(from, to) <= 0) {\n          return this.range(from, to);\n        }\n        return this.range(to, from);\n      }\n      return [];\n    });\n    /**\n     * Convert the collection to a string\n     */\n    __publicField(this, \"toString\", () => {\n      let result = \"\";\n      for (const item of this.items) {\n        const value = this.getItemValue(item);\n        const label = this.stringifyItem(item);\n        const disabled = this.getItemDisabled(item);\n        const itemString = [value, label, disabled].filter(Boolean).join(\":\");\n        result += itemString + \",\";\n      }\n      return result;\n    });\n    /**\n     * Convert the collection to a JSON object\n     */\n    __publicField(this, \"toJSON\", () => {\n      return {\n        size: this.size,\n        first: this.firstValue,\n        last: this.lastValue\n      };\n    });\n    this.items = [...options.items];\n  }\n  /**\n   * Returns the number of items in the collection\n   */\n  get size() {\n    return this.items.length;\n  }\n  /**\n   * Returns the first value in the collection\n   */\n  get firstValue() {\n    let index = 0;\n    while (this.getItemDisabled(this.at(index))) index++;\n    return this.getItemValue(this.at(index));\n  }\n  /**\n   * Returns the last value in the collection\n   */\n  get lastValue() {\n    let index = this.size - 1;\n    while (this.getItemDisabled(this.at(index))) index--;\n    return this.getItemValue(this.at(index));\n  }\n  *[Symbol.iterator]() {\n    yield* this.items;\n  }\n};\nvar match = (label, query) => {\n  return !!label?.toLowerCase().startsWith(query.toLowerCase());\n};\nfunction isListCollection(v) {\n  return v instanceof ListCollection;\n}\nfunction insert(items, index, ...values) {\n  return [...items.slice(0, index), ...values, ...items.slice(index)];\n}\nfunction move(items, indices, toIndex) {\n  indices = [...indices].sort((a, b) => a - b);\n  const itemsToMove = indices.map((i) => items[i]);\n  for (let i = indices.length - 1; i >= 0; i--) {\n    items = [...items.slice(0, indices[i]), ...items.slice(indices[i] + 1)];\n  }\n  toIndex = Math.max(0, toIndex - indices.filter((i) => i < toIndex).length);\n  return [...items.slice(0, toIndex), ...itemsToMove, ...items.slice(toIndex)];\n}\n\n// src/grid-collection.ts\nvar GridCollection = class extends ListCollection {\n  constructor(options) {\n    const { columnCount } = options;\n    super(options);\n    __publicField(this, \"columnCount\");\n    __publicField(this, \"rows\", null);\n    /**\n     * Returns the row data in the grid\n     */\n    __publicField(this, \"getRows\", () => {\n      if (!this.rows) {\n        this.rows = chunk([...this.items], this.columnCount);\n      }\n      return this.rows;\n    });\n    /**\n     * Returns the number of rows in the grid\n     */\n    __publicField(this, \"getRowCount\", () => {\n      return Math.ceil(this.items.length / this.columnCount);\n    });\n    /**\n     * Returns the index of the specified row and column in the grid\n     */\n    __publicField(this, \"getCellIndex\", (row, column) => {\n      return row * this.columnCount + column;\n    });\n    /**\n     * Returns the item at the specified row and column in the grid\n     */\n    __publicField(this, \"getCell\", (row, column) => {\n      return this.at(this.getCellIndex(row, column));\n    });\n    /**\n     * Returns the row and column index for a given value\n     */\n    __publicField(this, \"getValueCell\", (value) => {\n      const index = this.indexOf(value);\n      if (index === -1) return null;\n      const row = Math.floor(index / this.columnCount);\n      const column = index % this.columnCount;\n      return { row, column };\n    });\n    /**\n     * Returns the value of the last enabled column in a row\n     */\n    __publicField(this, \"getLastEnabledColumnIndex\", (row) => {\n      for (let col = this.columnCount - 1; col >= 0; col--) {\n        const cell = this.getCell(row, col);\n        if (cell && !this.getItemDisabled(cell)) {\n          return col;\n        }\n      }\n      return null;\n    });\n    /**\n     * Returns the index of the first enabled column in a row\n     */\n    __publicField(this, \"getFirstEnabledColumnIndex\", (row) => {\n      for (let col = 0; col < this.columnCount; col++) {\n        const cell = this.getCell(row, col);\n        if (cell && !this.getItemDisabled(cell)) {\n          return col;\n        }\n      }\n      return null;\n    });\n    /**\n     * Returns the value of the previous row in the grid, based on the current value\n     */\n    __publicField(this, \"getPreviousRowValue\", (value, loop = false) => {\n      const currentCell = this.getValueCell(value);\n      if (currentCell === null) return null;\n      const rows = this.getRows();\n      const rowCount = rows.length;\n      let prevRowIndex = currentCell.row;\n      let prevColumnIndex = currentCell.column;\n      for (let i = 1; i <= rowCount; i++) {\n        prevRowIndex = prevIndex(rows, prevRowIndex, { loop });\n        const prevRow = rows[prevRowIndex];\n        if (!prevRow) continue;\n        const prevCell = prevRow[prevColumnIndex];\n        if (!prevCell) {\n          const lastColumnIndex = this.getLastEnabledColumnIndex(prevRowIndex);\n          if (lastColumnIndex != null) {\n            prevColumnIndex = lastColumnIndex;\n          }\n        }\n        const cell = this.getCell(prevRowIndex, prevColumnIndex);\n        if (!this.getItemDisabled(cell)) {\n          return this.getItemValue(cell);\n        }\n      }\n      return this.firstValue;\n    });\n    /**\n     * Returns the value of the next row in the grid, based on the current value\n     */\n    __publicField(this, \"getNextRowValue\", (value, loop = false) => {\n      const currentCell = this.getValueCell(value);\n      if (currentCell === null) return null;\n      const rows = this.getRows();\n      const rowCount = rows.length;\n      let nextRowIndex = currentCell.row;\n      let nextColumnIndex = currentCell.column;\n      for (let i = 1; i <= rowCount; i++) {\n        nextRowIndex = nextIndex(rows, nextRowIndex, { loop });\n        const nextRow = rows[nextRowIndex];\n        if (!nextRow) continue;\n        const nextCell = nextRow[nextColumnIndex];\n        if (!nextCell) {\n          const lastColumnIndex = this.getLastEnabledColumnIndex(nextRowIndex);\n          if (lastColumnIndex != null) {\n            nextColumnIndex = lastColumnIndex;\n          }\n        }\n        const cell = this.getCell(nextRowIndex, nextColumnIndex);\n        if (!this.getItemDisabled(cell)) {\n          return this.getItemValue(cell);\n        }\n      }\n      return this.lastValue;\n    });\n    this.columnCount = columnCount;\n  }\n};\nfunction isGridCollection(v) {\n  return hasProp(v, \"columnCount\") && hasProp(v, \"getRows\");\n}\nvar Selection = class _Selection extends Set {\n  constructor(values = []) {\n    super(values);\n    __publicField(this, \"selectionMode\", \"single\");\n    __publicField(this, \"deselectable\", true);\n    __publicField(this, \"copy\", () => {\n      const clone = new _Selection([...this]);\n      return this.sync(clone);\n    });\n    __publicField(this, \"sync\", (other) => {\n      other.selectionMode = this.selectionMode;\n      other.deselectable = this.deselectable;\n      return other;\n    });\n    __publicField(this, \"isEmpty\", () => {\n      return this.size === 0;\n    });\n    __publicField(this, \"isSelected\", (value) => {\n      if (this.selectionMode === \"none\" || value == null) {\n        return false;\n      }\n      return this.has(value);\n    });\n    __publicField(this, \"canSelect\", (collection, value) => {\n      return this.selectionMode !== \"none\" || !collection.getItemDisabled(collection.find(value));\n    });\n    __publicField(this, \"firstSelectedValue\", (collection) => {\n      let firstValue = null;\n      for (let value of this) {\n        if (!firstValue || collection.compareValue(value, firstValue) < 0) {\n          firstValue = value;\n        }\n      }\n      return firstValue;\n    });\n    __publicField(this, \"lastSelectedValue\", (collection) => {\n      let lastValue = null;\n      for (let value of this) {\n        if (!lastValue || collection.compareValue(value, lastValue) > 0) {\n          lastValue = value;\n        }\n      }\n      return lastValue;\n    });\n    __publicField(this, \"extendSelection\", (collection, anchorValue, targetValue) => {\n      if (this.selectionMode === \"none\") {\n        return this;\n      }\n      if (this.selectionMode === \"single\") {\n        return this.replaceSelection(collection, targetValue);\n      }\n      const selection = this.copy();\n      const lastSelected = Array.from(this).pop();\n      for (let key of collection.getValueRange(anchorValue, lastSelected ?? targetValue)) {\n        selection.delete(key);\n      }\n      for (let key of collection.getValueRange(targetValue, anchorValue)) {\n        if (this.canSelect(collection, key)) {\n          selection.add(key);\n        }\n      }\n      return selection;\n    });\n    __publicField(this, \"toggleSelection\", (collection, value) => {\n      if (this.selectionMode === \"none\") {\n        return this;\n      }\n      if (this.selectionMode === \"single\" && !this.isSelected(value)) {\n        return this.replaceSelection(collection, value);\n      }\n      const selection = this.copy();\n      if (selection.has(value)) {\n        selection.delete(value);\n      } else if (selection.canSelect(collection, value)) {\n        selection.add(value);\n      }\n      return selection;\n    });\n    __publicField(this, \"replaceSelection\", (collection, value) => {\n      if (this.selectionMode === \"none\") {\n        return this;\n      }\n      if (value == null) {\n        return this;\n      }\n      if (!this.canSelect(collection, value)) {\n        return this;\n      }\n      const selection = new _Selection([value]);\n      return this.sync(selection);\n    });\n    __publicField(this, \"setSelection\", (values) => {\n      if (this.selectionMode === \"none\") {\n        return this;\n      }\n      let selection = new _Selection();\n      for (let value of values) {\n        if (value != null) {\n          selection.add(value);\n          if (this.selectionMode === \"single\") {\n            break;\n          }\n        }\n      }\n      return this.sync(selection);\n    });\n    __publicField(this, \"clearSelection\", () => {\n      const selection = this.copy();\n      if (selection.deselectable && selection.size > 0) {\n        selection.clear();\n      }\n      return selection;\n    });\n    __publicField(this, \"select\", (collection, value, forceToggle) => {\n      if (this.selectionMode === \"none\") {\n        return this;\n      }\n      if (this.selectionMode === \"single\") {\n        if (this.isSelected(value) && this.deselectable) {\n          return this.toggleSelection(collection, value);\n        } else {\n          return this.replaceSelection(collection, value);\n        }\n      } else if (this.selectionMode === \"multiple\" || forceToggle) {\n        return this.toggleSelection(collection, value);\n      } else {\n        return this.replaceSelection(collection, value);\n      }\n    });\n    __publicField(this, \"deselect\", (value) => {\n      const selection = this.copy();\n      selection.delete(value);\n      return selection;\n    });\n    __publicField(this, \"isEqual\", (other) => {\n      return isEqual(Array.from(this), Array.from(other));\n    });\n  }\n};\n\n// src/tree-visit.ts\nfunction access(node, indexPath, options) {\n  for (let i = 0; i < indexPath.length; i++) node = options.getChildren(node, indexPath.slice(i + 1))[indexPath[i]];\n  return node;\n}\nfunction ancestorIndexPaths(indexPaths) {\n  const sortedPaths = sortIndexPaths(indexPaths);\n  const result = [];\n  const seen = /* @__PURE__ */ new Set();\n  for (const indexPath of sortedPaths) {\n    const key = indexPath.join();\n    if (!seen.has(key)) {\n      seen.add(key);\n      result.push(indexPath);\n    }\n  }\n  return result;\n}\nfunction compareIndexPaths(a, b) {\n  for (let i = 0; i < Math.min(a.length, b.length); i++) {\n    if (a[i] < b[i]) return -1;\n    if (a[i] > b[i]) return 1;\n  }\n  return a.length - b.length;\n}\nfunction sortIndexPaths(indexPaths) {\n  return indexPaths.sort(compareIndexPaths);\n}\nfunction find(node, options) {\n  let found;\n  visit(node, {\n    ...options,\n    onEnter: (child, indexPath) => {\n      if (options.predicate(child, indexPath)) {\n        found = child;\n        return \"stop\";\n      }\n    }\n  });\n  return found;\n}\nfunction findAll(node, options) {\n  const found = [];\n  visit(node, {\n    onEnter: (child, indexPath) => {\n      if (options.predicate(child, indexPath)) found.push(child);\n    },\n    getChildren: options.getChildren\n  });\n  return found;\n}\nfunction findIndexPath(node, options) {\n  let found;\n  visit(node, {\n    onEnter: (child, indexPath) => {\n      if (options.predicate(child, indexPath)) {\n        found = [...indexPath];\n        return \"stop\";\n      }\n    },\n    getChildren: options.getChildren\n  });\n  return found;\n}\nfunction reduce(node, options) {\n  let result = options.initialResult;\n  visit(node, {\n    ...options,\n    onEnter: (child, indexPath) => {\n      result = options.nextResult(result, child, indexPath);\n    }\n  });\n  return result;\n}\nfunction flatMap(node, options) {\n  return reduce(node, {\n    ...options,\n    initialResult: [],\n    nextResult: (result, child, indexPath) => {\n      result.push(...options.transform(child, indexPath));\n      return result;\n    }\n  });\n}\nfunction filter(node, options) {\n  const { predicate, create, getChildren } = options;\n  const filterRecursive = (node2, indexPath) => {\n    const children = getChildren(node2, indexPath);\n    const filteredChildren = [];\n    children.forEach((child, index) => {\n      const childIndexPath = [...indexPath, index];\n      const filteredChild = filterRecursive(child, childIndexPath);\n      if (filteredChild) filteredChildren.push(filteredChild);\n    });\n    const isRoot = indexPath.length === 0;\n    const nodeMatches = predicate(node2, indexPath);\n    const hasFilteredChildren = filteredChildren.length > 0;\n    if (isRoot || nodeMatches || hasFilteredChildren) {\n      return create(node2, filteredChildren, indexPath);\n    }\n    return null;\n  };\n  return filterRecursive(node, []) || create(node, [], []);\n}\nfunction flatten(rootNode, options) {\n  const nodes = [];\n  let idx = 0;\n  const idxMap = /* @__PURE__ */ new Map();\n  const parentMap = /* @__PURE__ */ new Map();\n  visit(rootNode, {\n    getChildren: options.getChildren,\n    onEnter: (node, indexPath) => {\n      if (!idxMap.has(node)) {\n        idxMap.set(node, idx++);\n      }\n      const children = options.getChildren(node, indexPath);\n      children.forEach((child) => {\n        if (!parentMap.has(child)) {\n          parentMap.set(child, node);\n        }\n        if (!idxMap.has(child)) {\n          idxMap.set(child, idx++);\n        }\n      });\n      const _children = children.length > 0 ? children.map((child) => idxMap.get(child)) : void 0;\n      const parent = parentMap.get(node);\n      const _parent = parent ? idxMap.get(parent) : void 0;\n      const _index = idxMap.get(node);\n      nodes.push({ ...node, _children, _parent, _index });\n    }\n  });\n  return nodes;\n}\nfunction insertOperation(index, nodes) {\n  return { type: \"insert\", index, nodes };\n}\nfunction removeOperation(indexes) {\n  return { type: \"remove\", indexes };\n}\nfunction replaceOperation() {\n  return { type: \"replace\" };\n}\nfunction splitIndexPath(indexPath) {\n  return [indexPath.slice(0, -1), indexPath[indexPath.length - 1]];\n}\nfunction getInsertionOperations(indexPath, nodes, operations = /* @__PURE__ */ new Map()) {\n  const [parentIndexPath, index] = splitIndexPath(indexPath);\n  for (let i = parentIndexPath.length - 1; i >= 0; i--) {\n    const parentKey = parentIndexPath.slice(0, i).join();\n    switch (operations.get(parentKey)?.type) {\n      case \"remove\":\n        continue;\n    }\n    operations.set(parentKey, replaceOperation());\n  }\n  const operation = operations.get(parentIndexPath.join());\n  switch (operation?.type) {\n    case \"remove\":\n      operations.set(parentIndexPath.join(), {\n        type: \"removeThenInsert\",\n        removeIndexes: operation.indexes,\n        insertIndex: index,\n        insertNodes: nodes\n      });\n      break;\n    default:\n      operations.set(parentIndexPath.join(), insertOperation(index, nodes));\n  }\n  return operations;\n}\nfunction getRemovalOperations(indexPaths) {\n  const operations = /* @__PURE__ */ new Map();\n  const indexesToRemove = /* @__PURE__ */ new Map();\n  for (const indexPath of indexPaths) {\n    const parentKey = indexPath.slice(0, -1).join();\n    const value = indexesToRemove.get(parentKey) ?? [];\n    value.push(indexPath[indexPath.length - 1]);\n    indexesToRemove.set(\n      parentKey,\n      value.sort((a, b) => a - b)\n    );\n  }\n  for (const indexPath of indexPaths) {\n    for (let i = indexPath.length - 2; i >= 0; i--) {\n      const parentKey = indexPath.slice(0, i).join();\n      if (!operations.has(parentKey)) {\n        operations.set(parentKey, replaceOperation());\n      }\n    }\n  }\n  for (const [parentKey, indexes] of indexesToRemove) {\n    operations.set(parentKey, removeOperation(indexes));\n  }\n  return operations;\n}\nfunction getReplaceOperations(indexPath, node) {\n  const operations = /* @__PURE__ */ new Map();\n  const [parentIndexPath, index] = splitIndexPath(indexPath);\n  for (let i = parentIndexPath.length - 1; i >= 0; i--) {\n    const parentKey = parentIndexPath.slice(0, i).join();\n    operations.set(parentKey, replaceOperation());\n  }\n  operations.set(parentIndexPath.join(), {\n    type: \"removeThenInsert\",\n    removeIndexes: [index],\n    insertIndex: index,\n    insertNodes: [node]\n  });\n  return operations;\n}\nfunction mutate(node, operations, options) {\n  return map(node, {\n    ...options,\n    getChildren: (node2, indexPath) => {\n      const key = indexPath.join();\n      const operation = operations.get(key);\n      switch (operation?.type) {\n        case \"replace\":\n        case \"remove\":\n        case \"removeThenInsert\":\n        case \"insert\":\n          return options.getChildren(node2, indexPath);\n        default:\n          return [];\n      }\n    },\n    transform: (node2, children, indexPath) => {\n      const key = indexPath.join();\n      const operation = operations.get(key);\n      switch (operation?.type) {\n        case \"remove\":\n          return options.create(\n            node2,\n            children.filter((_, index) => !operation.indexes.includes(index)),\n            indexPath\n          );\n        case \"removeThenInsert\":\n          const updatedChildren = children.filter((_, index) => !operation.removeIndexes.includes(index));\n          const adjustedIndex = operation.removeIndexes.reduce(\n            (index, removedIndex) => removedIndex < index ? index - 1 : index,\n            operation.insertIndex\n          );\n          return options.create(node2, splice(updatedChildren, adjustedIndex, 0, ...operation.insertNodes), indexPath);\n        case \"insert\":\n          return options.create(node2, splice(children, operation.index, 0, ...operation.nodes), indexPath);\n        case \"replace\":\n          return options.create(node2, children, indexPath);\n        default:\n          return node2;\n      }\n    }\n  });\n}\nfunction splice(array, start, deleteCount, ...items) {\n  return [...array.slice(0, start), ...items, ...array.slice(start + deleteCount)];\n}\nfunction map(node, options) {\n  const childrenMap = {};\n  visit(node, {\n    ...options,\n    onLeave: (child, indexPath) => {\n      const keyIndexPath = [0, ...indexPath];\n      const key = keyIndexPath.join();\n      const transformed = options.transform(child, childrenMap[key] ?? [], indexPath);\n      const parentKey = keyIndexPath.slice(0, -1).join();\n      const parentChildren = childrenMap[parentKey] ?? [];\n      parentChildren.push(transformed);\n      childrenMap[parentKey] = parentChildren;\n    }\n  });\n  return childrenMap[\"\"][0];\n}\nfunction insert2(node, options) {\n  const { nodes, at } = options;\n  if (at.length === 0) throw new Error(`Can't insert nodes at the root`);\n  const state = getInsertionOperations(at, nodes);\n  return mutate(node, state, options);\n}\nfunction replace(node, options) {\n  if (options.at.length === 0) return options.node;\n  const operations = getReplaceOperations(options.at, options.node);\n  return mutate(node, operations, options);\n}\nfunction remove(node, options) {\n  if (options.indexPaths.length === 0) return node;\n  for (const indexPath of options.indexPaths) {\n    if (indexPath.length === 0) throw new Error(`Can't remove the root node`);\n  }\n  const operations = getRemovalOperations(options.indexPaths);\n  return mutate(node, operations, options);\n}\nfunction move2(node, options) {\n  if (options.indexPaths.length === 0) return node;\n  for (const indexPath of options.indexPaths) {\n    if (indexPath.length === 0) throw new Error(`Can't move the root node`);\n  }\n  if (options.to.length === 0) throw new Error(`Can't move nodes to the root`);\n  const _ancestorIndexPaths = ancestorIndexPaths(options.indexPaths);\n  const nodesToInsert = _ancestorIndexPaths.map((indexPath) => access(node, indexPath, options));\n  const operations = getInsertionOperations(options.to, nodesToInsert, getRemovalOperations(_ancestorIndexPaths));\n  return mutate(node, operations, options);\n}\nfunction visit(node, options) {\n  const { onEnter, onLeave, getChildren } = options;\n  let indexPath = [];\n  let stack = [{ node }];\n  const getIndexPath = options.reuseIndexPath ? () => indexPath : () => indexPath.slice();\n  while (stack.length > 0) {\n    let wrapper = stack[stack.length - 1];\n    if (wrapper.state === void 0) {\n      const enterResult = onEnter?.(wrapper.node, getIndexPath());\n      if (enterResult === \"stop\") return;\n      wrapper.state = enterResult === \"skip\" ? -1 : 0;\n    }\n    const children = wrapper.children || getChildren(wrapper.node, getIndexPath());\n    wrapper.children || (wrapper.children = children);\n    if (wrapper.state !== -1) {\n      if (wrapper.state < children.length) {\n        let currentIndex = wrapper.state;\n        indexPath.push(currentIndex);\n        stack.push({ node: children[currentIndex] });\n        wrapper.state = currentIndex + 1;\n        continue;\n      }\n      const leaveResult = onLeave?.(wrapper.node, getIndexPath());\n      if (leaveResult === \"stop\") return;\n    }\n    indexPath.pop();\n    stack.pop();\n  }\n}\n\n// src/tree-collection.ts\nvar TreeCollection = class _TreeCollection {\n  constructor(options) {\n    this.options = options;\n    __publicField(this, \"rootNode\");\n    __publicField(this, \"isEqual\", (other) => {\n      return isEqual(this.rootNode, other.rootNode);\n    });\n    __publicField(this, \"getNodeChildren\", (node) => {\n      return this.options.nodeToChildren?.(node) ?? fallbackMethods.nodeToChildren(node) ?? [];\n    });\n    __publicField(this, \"resolveIndexPath\", (valueOrIndexPath) => {\n      return typeof valueOrIndexPath === \"string\" ? this.getIndexPath(valueOrIndexPath) : valueOrIndexPath;\n    });\n    __publicField(this, \"resolveNode\", (valueOrIndexPath) => {\n      const indexPath = this.resolveIndexPath(valueOrIndexPath);\n      return indexPath ? this.at(indexPath) : void 0;\n    });\n    __publicField(this, \"getNodeChildrenCount\", (node) => {\n      return this.options.nodeToChildrenCount?.(node) ?? fallbackMethods.nodeToChildrenCount(node);\n    });\n    __publicField(this, \"getNodeValue\", (node) => {\n      return this.options.nodeToValue?.(node) ?? fallbackMethods.nodeToValue(node);\n    });\n    __publicField(this, \"getNodeDisabled\", (node) => {\n      return this.options.isNodeDisabled?.(node) ?? fallbackMethods.isNodeDisabled(node);\n    });\n    __publicField(this, \"stringify\", (value) => {\n      const node = this.findNode(value);\n      if (!node) return null;\n      return this.stringifyNode(node);\n    });\n    __publicField(this, \"stringifyNode\", (node) => {\n      return this.options.nodeToString?.(node) ?? fallbackMethods.nodeToString(node);\n    });\n    __publicField(this, \"getFirstNode\", (rootNode = this.rootNode, opts = {}) => {\n      let firstChild;\n      visit(rootNode, {\n        getChildren: this.getNodeChildren,\n        onEnter: (node, indexPath) => {\n          if (this.isSameNode(node, rootNode)) return;\n          if (opts.skip?.({ value: this.getNodeValue(node), node, indexPath })) return \"skip\";\n          if (!firstChild && indexPath.length > 0 && !this.getNodeDisabled(node)) {\n            firstChild = node;\n            return \"stop\";\n          }\n        }\n      });\n      return firstChild;\n    });\n    __publicField(this, \"getLastNode\", (rootNode = this.rootNode, opts = {}) => {\n      let lastChild;\n      visit(rootNode, {\n        getChildren: this.getNodeChildren,\n        onEnter: (node, indexPath) => {\n          if (this.isSameNode(node, rootNode)) return;\n          if (opts.skip?.({ value: this.getNodeValue(node), node, indexPath })) return \"skip\";\n          if (indexPath.length > 0 && !this.getNodeDisabled(node)) {\n            lastChild = node;\n          }\n        }\n      });\n      return lastChild;\n    });\n    __publicField(this, \"at\", (indexPath) => {\n      return access(this.rootNode, indexPath, {\n        getChildren: this.getNodeChildren\n      });\n    });\n    __publicField(this, \"findNode\", (value, rootNode = this.rootNode) => {\n      return find(rootNode, {\n        getChildren: this.getNodeChildren,\n        predicate: (node) => this.getNodeValue(node) === value\n      });\n    });\n    __publicField(this, \"findNodes\", (values, rootNode = this.rootNode) => {\n      const v = new Set(values.filter((v2) => v2 != null));\n      return findAll(rootNode, {\n        getChildren: this.getNodeChildren,\n        predicate: (node) => v.has(this.getNodeValue(node))\n      });\n    });\n    __publicField(this, \"sort\", (values) => {\n      return values.reduce((acc, value) => {\n        const indexPath = this.getIndexPath(value);\n        if (indexPath) acc.push({ value, indexPath });\n        return acc;\n      }, []).sort((a, b) => compareIndexPaths(a.indexPath, b.indexPath)).map(({ value }) => value);\n    });\n    __publicField(this, \"getIndexPath\", (value) => {\n      return findIndexPath(this.rootNode, {\n        getChildren: this.getNodeChildren,\n        predicate: (node) => this.getNodeValue(node) === value\n      });\n    });\n    __publicField(this, \"getValue\", (indexPath) => {\n      const node = this.at(indexPath);\n      return node ? this.getNodeValue(node) : void 0;\n    });\n    __publicField(this, \"getValuePath\", (indexPath) => {\n      if (!indexPath) return [];\n      const valuePath = [];\n      let currentPath = [...indexPath];\n      while (currentPath.length > 0) {\n        const node = this.at(currentPath);\n        if (node) valuePath.unshift(this.getNodeValue(node));\n        currentPath.pop();\n      }\n      return valuePath;\n    });\n    __publicField(this, \"getDepth\", (value) => {\n      const indexPath = findIndexPath(this.rootNode, {\n        getChildren: this.getNodeChildren,\n        predicate: (node) => this.getNodeValue(node) === value\n      });\n      return indexPath?.length ?? 0;\n    });\n    __publicField(this, \"isSameNode\", (node, other) => {\n      return this.getNodeValue(node) === this.getNodeValue(other);\n    });\n    __publicField(this, \"isRootNode\", (node) => {\n      return this.isSameNode(node, this.rootNode);\n    });\n    __publicField(this, \"contains\", (parentIndexPath, valueIndexPath) => {\n      if (!parentIndexPath || !valueIndexPath) return false;\n      return valueIndexPath.slice(0, parentIndexPath.length).every((_, i) => parentIndexPath[i] === valueIndexPath[i]);\n    });\n    __publicField(this, \"getNextNode\", (value, opts = {}) => {\n      let found = false;\n      let nextNode;\n      visit(this.rootNode, {\n        getChildren: this.getNodeChildren,\n        onEnter: (node, indexPath) => {\n          if (this.isRootNode(node)) return;\n          const nodeValue = this.getNodeValue(node);\n          if (opts.skip?.({ value: nodeValue, node, indexPath })) {\n            if (nodeValue === value) {\n              found = true;\n            }\n            return \"skip\";\n          }\n          if (found && !this.getNodeDisabled(node)) {\n            nextNode = node;\n            return \"stop\";\n          }\n          if (nodeValue === value) {\n            found = true;\n          }\n        }\n      });\n      return nextNode;\n    });\n    __publicField(this, \"getPreviousNode\", (value, opts = {}) => {\n      let previousNode;\n      let found = false;\n      visit(this.rootNode, {\n        getChildren: this.getNodeChildren,\n        onEnter: (node, indexPath) => {\n          if (this.isRootNode(node)) return;\n          const nodeValue = this.getNodeValue(node);\n          if (opts.skip?.({ value: nodeValue, node, indexPath })) {\n            return \"skip\";\n          }\n          if (nodeValue === value) {\n            found = true;\n            return \"stop\";\n          }\n          if (!this.getNodeDisabled(node)) {\n            previousNode = node;\n          }\n        }\n      });\n      return found ? previousNode : void 0;\n    });\n    __publicField(this, \"getParentNodes\", (valueOrIndexPath) => {\n      const indexPath = this.resolveIndexPath(valueOrIndexPath)?.slice();\n      if (!indexPath) return [];\n      const result = [];\n      while (indexPath.length > 0) {\n        indexPath.pop();\n        const parentNode = this.at(indexPath);\n        if (parentNode && !this.isRootNode(parentNode)) {\n          result.unshift(parentNode);\n        }\n      }\n      return result;\n    });\n    __publicField(this, \"getDescendantNodes\", (valueOrIndexPath, options) => {\n      const parentNode = this.resolveNode(valueOrIndexPath);\n      if (!parentNode) return [];\n      const result = [];\n      visit(parentNode, {\n        getChildren: this.getNodeChildren,\n        onEnter: (node, nodeIndexPath) => {\n          if (nodeIndexPath.length === 0) return;\n          if (!options?.withBranch && this.isBranchNode(node)) return;\n          result.push(node);\n        }\n      });\n      return result;\n    });\n    __publicField(this, \"getDescendantValues\", (valueOrIndexPath, options) => {\n      const children = this.getDescendantNodes(valueOrIndexPath, options);\n      return children.map((child) => this.getNodeValue(child));\n    });\n    __publicField(this, \"getParentIndexPath\", (indexPath) => {\n      return indexPath.slice(0, -1);\n    });\n    __publicField(this, \"getParentNode\", (valueOrIndexPath) => {\n      const indexPath = this.resolveIndexPath(valueOrIndexPath);\n      return indexPath ? this.at(this.getParentIndexPath(indexPath)) : void 0;\n    });\n    __publicField(this, \"visit\", (opts) => {\n      const { skip, ...rest } = opts;\n      visit(this.rootNode, {\n        ...rest,\n        getChildren: this.getNodeChildren,\n        onEnter: (node, indexPath) => {\n          if (this.isRootNode(node)) return;\n          if (skip?.({ value: this.getNodeValue(node), node, indexPath })) return \"skip\";\n          return rest.onEnter?.(node, indexPath);\n        }\n      });\n    });\n    __publicField(this, \"getPreviousSibling\", (indexPath) => {\n      const parentNode = this.getParentNode(indexPath);\n      if (!parentNode) return;\n      const siblings = this.getNodeChildren(parentNode);\n      let idx = indexPath[indexPath.length - 1];\n      while (--idx >= 0) {\n        const sibling = siblings[idx];\n        if (!this.getNodeDisabled(sibling)) return sibling;\n      }\n      return;\n    });\n    __publicField(this, \"getNextSibling\", (indexPath) => {\n      const parentNode = this.getParentNode(indexPath);\n      if (!parentNode) return;\n      const siblings = this.getNodeChildren(parentNode);\n      let idx = indexPath[indexPath.length - 1];\n      while (++idx < siblings.length) {\n        const sibling = siblings[idx];\n        if (!this.getNodeDisabled(sibling)) return sibling;\n      }\n      return;\n    });\n    __publicField(this, \"getSiblingNodes\", (indexPath) => {\n      const parentNode = this.getParentNode(indexPath);\n      return parentNode ? this.getNodeChildren(parentNode) : [];\n    });\n    __publicField(this, \"getValues\", (rootNode = this.rootNode) => {\n      const values = flatMap(rootNode, {\n        getChildren: this.getNodeChildren,\n        transform: (node) => [this.getNodeValue(node)]\n      });\n      return values.slice(1);\n    });\n    __publicField(this, \"isValidDepth\", (indexPath, depth) => {\n      if (depth == null) return true;\n      if (typeof depth === \"function\") return depth(indexPath.length);\n      return indexPath.length === depth;\n    });\n    __publicField(this, \"isBranchNode\", (node) => {\n      return this.getNodeChildren(node).length > 0 || this.getNodeChildrenCount(node) != null;\n    });\n    __publicField(this, \"getBranchValues\", (rootNode = this.rootNode, opts = {}) => {\n      let values = [];\n      visit(rootNode, {\n        getChildren: this.getNodeChildren,\n        onEnter: (node, indexPath) => {\n          if (indexPath.length === 0) return;\n          const nodeValue = this.getNodeValue(node);\n          if (opts.skip?.({ value: nodeValue, node, indexPath })) return \"skip\";\n          if (this.isBranchNode(node) && this.isValidDepth(indexPath, opts.depth)) {\n            values.push(this.getNodeValue(node));\n          }\n        }\n      });\n      return values;\n    });\n    __publicField(this, \"flatten\", (rootNode = this.rootNode) => {\n      return flatten(rootNode, { getChildren: this.getNodeChildren });\n    });\n    __publicField(this, \"_create\", (node, children) => {\n      if (this.getNodeChildren(node).length > 0 || children.length > 0) {\n        return { ...node, children };\n      }\n      return { ...node };\n    });\n    __publicField(this, \"_insert\", (rootNode, indexPath, nodes) => {\n      return this.copy(\n        insert2(rootNode, { at: indexPath, nodes, getChildren: this.getNodeChildren, create: this._create })\n      );\n    });\n    __publicField(this, \"copy\", (rootNode) => {\n      return new _TreeCollection({ ...this.options, rootNode });\n    });\n    __publicField(this, \"_replace\", (rootNode, indexPath, node) => {\n      return this.copy(\n        replace(rootNode, { at: indexPath, node, getChildren: this.getNodeChildren, create: this._create })\n      );\n    });\n    __publicField(this, \"_move\", (rootNode, indexPaths, to) => {\n      return this.copy(move2(rootNode, { indexPaths, to, getChildren: this.getNodeChildren, create: this._create }));\n    });\n    __publicField(this, \"_remove\", (rootNode, indexPaths) => {\n      return this.copy(remove(rootNode, { indexPaths, getChildren: this.getNodeChildren, create: this._create }));\n    });\n    __publicField(this, \"replace\", (indexPath, node) => {\n      return this._replace(this.rootNode, indexPath, node);\n    });\n    __publicField(this, \"remove\", (indexPaths) => {\n      return this._remove(this.rootNode, indexPaths);\n    });\n    __publicField(this, \"insertBefore\", (indexPath, nodes) => {\n      const parentNode = this.getParentNode(indexPath);\n      return parentNode ? this._insert(this.rootNode, indexPath, nodes) : void 0;\n    });\n    __publicField(this, \"insertAfter\", (indexPath, nodes) => {\n      const parentNode = this.getParentNode(indexPath);\n      if (!parentNode) return;\n      const nextIndex2 = [...indexPath.slice(0, -1), indexPath[indexPath.length - 1] + 1];\n      return this._insert(this.rootNode, nextIndex2, nodes);\n    });\n    __publicField(this, \"move\", (fromIndexPaths, toIndexPath) => {\n      return this._move(this.rootNode, fromIndexPaths, toIndexPath);\n    });\n    __publicField(this, \"filter\", (predicate) => {\n      const filteredRoot = filter(this.rootNode, {\n        predicate,\n        getChildren: this.getNodeChildren,\n        create: this._create\n      });\n      return this.copy(filteredRoot);\n    });\n    __publicField(this, \"toJSON\", () => {\n      return this.getValues(this.rootNode);\n    });\n    this.rootNode = options.rootNode;\n  }\n};\nfunction flattenedToTree(nodes, options = fallbackMethods) {\n  if (nodes.length === 0) {\n    throw new Error(\"[zag-js/tree] Cannot create tree from empty flattened array\");\n  }\n  const rootFlatNode = nodes.find((node) => node._parent === void 0);\n  if (!rootFlatNode) {\n    throw new Error(\"[zag-js/tree] No root node found in flattened data\");\n  }\n  const nodeMap = /* @__PURE__ */ new Map();\n  nodes.forEach((node) => {\n    nodeMap.set(node._index, node);\n  });\n  const buildNode = (idx) => {\n    const flatNode = nodeMap.get(idx);\n    if (!flatNode) return {};\n    const { _children, _parent, _index, ...cleanNode } = flatNode;\n    const children = [];\n    _children?.forEach((childIndex) => {\n      children.push(buildNode(childIndex));\n    });\n    return {\n      ...cleanNode,\n      ...children.length > 0 && { children }\n    };\n  };\n  const rootNode = buildNode(rootFlatNode._index);\n  return new TreeCollection({ ...options, rootNode });\n}\nfunction filePathToTree(paths) {\n  const rootNode = {\n    label: \"\",\n    value: \"ROOT\",\n    children: []\n  };\n  paths.forEach((path) => {\n    const parts = path.split(\"/\");\n    let currentNode = rootNode;\n    parts.forEach((part, index) => {\n      let childNode = currentNode.children?.find((child) => child.label === part);\n      if (!childNode) {\n        childNode = {\n          value: parts.slice(0, index + 1).join(\"/\"),\n          label: part\n        };\n        currentNode.children || (currentNode.children = []);\n        currentNode.children.push(childNode);\n      }\n      currentNode = childNode;\n    });\n  });\n  return new TreeCollection({ rootNode });\n}\nvar fallbackMethods = {\n  nodeToValue(node) {\n    if (typeof node === \"string\") return node;\n    if (isObject(node) && hasProp(node, \"value\")) return node.value;\n    return \"\";\n  },\n  nodeToString(node) {\n    if (typeof node === \"string\") return node;\n    if (isObject(node) && hasProp(node, \"label\")) return node.label;\n    return fallbackMethods.nodeToValue(node);\n  },\n  isNodeDisabled(node) {\n    if (isObject(node) && hasProp(node, \"disabled\")) return !!node.disabled;\n    return false;\n  },\n  nodeToChildren(node) {\n    return node.children;\n  },\n  nodeToChildrenCount(node) {\n    if (isObject(node) && hasProp(node, \"childrenCount\")) return node.childrenCount;\n  }\n};\n\nexport { GridCollection, ListCollection, Selection, TreeCollection, filePathToTree, flattenedToTree, isGridCollection, isListCollection };\n", "/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n  return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rlPlacement : lrPlacement;\n      return isStart ? lrPlacement : rlPlacement;\n    case 'left':\n    case 'right':\n      return isStart ? tbPlacement : btPlacement;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n", "import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    var _platform$detectOverf;\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform: {\n        ...platform,\n        detectOverflow: (_platform$detectOverf = platform.detectOverflow) != null ? _platform$detectOverf : detectOverflow\n      },\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n          if (!ignoreCrossAxisOverflow ||\n          // We leave the current main axis only if every placement on that axis\n          // overflows the main axis.\n          overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n            // Try next placement and re-run the lifecycle.\n            return {\n              data: {\n                index: nextIndex,\n                overflows: overflowsData\n              },\n              reset: {\n                placement: nextPlacement\n              }\n            };\n          }\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects,\n        platform\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await platform.detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await platform.detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = originSides.has(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        platform\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = originSides.has(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element \u2014\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n", "function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n  return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n  return topLayerSelectors.some(selector => {\n    try {\n      return element.matches(selector);\n    } catch (_e) {\n      return false;\n    }\n  });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n  const webkit = isWebKit();\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n  return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n", "import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle$1(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  const windowScrollbarX = getWindowScrollBarX(html);\n  // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n  // visual width of the <html> but this is not considered in the size\n  // of `html.clientWidth`.\n  if (windowScrollbarX <= 0) {\n    const doc = html.ownerDocument;\n    const body = doc.body;\n    const bodyStyles = getComputedStyle(body);\n    const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n    const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n    if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n      width -= clippingStableScrollbarWidth;\n    }\n  } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n    // If the <body> scrollbar is on the left, the width needs to be extended\n    // by the scrollbar amount so there isn't extra space on the right.\n    width += windowScrollbarX;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n\n  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n  // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n  function setLeftRTLScrollbarOffset() {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      setLeftRTLScrollbarOffset();\n    }\n  }\n  if (isFixed && !isOffsetParentAnElement && documentElement) {\n    setLeftRTLScrollbarOffset();\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        // It's possible that even though the ratio is reported as 1, the\n        // element is not actually fully within the IntersectionObserver's root\n        // area anymore. This can happen under performance constraints. This may\n        // be a bug in the browser's IntersectionObserver implementation. To\n        // work around this, we compare the element's bounding rect now with\n        // what it was at the time we created the IntersectionObserver. If they\n        // are not equal then the element moved, so we refresh.\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element \u2014\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n", "import { autoUpdate, offset, flip, shift, limitShift, arrow, size, hide, computePosition } from '@floating-ui/dom';\nimport { raf, isHTMLElement, getWindow, getComputedStyle } from '@zag-js/dom-query';\nimport { noop, isNull, compact } from '@zag-js/utils';\n\n// src/get-placement.ts\nfunction createDOMRect(x = 0, y = 0, width = 0, height = 0) {\n  if (typeof DOMRect === \"function\") {\n    return new DOMRect(x, y, width, height);\n  }\n  const rect = {\n    x,\n    y,\n    width,\n    height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x\n  };\n  return { ...rect, toJSON: () => rect };\n}\nfunction getDOMRect(anchorRect) {\n  if (!anchorRect) return createDOMRect();\n  const { x, y, width, height } = anchorRect;\n  return createDOMRect(x, y, width, height);\n}\nfunction getAnchorElement(anchorElement, getAnchorRect) {\n  return {\n    contextElement: isHTMLElement(anchorElement) ? anchorElement : anchorElement?.contextElement,\n    getBoundingClientRect: () => {\n      const anchor = anchorElement;\n      const anchorRect = getAnchorRect?.(anchor);\n      if (anchorRect || !anchor) {\n        return getDOMRect(anchorRect);\n      }\n      return anchor.getBoundingClientRect();\n    }\n  };\n}\n\n// src/middleware.ts\nvar toVar = (value) => ({ variable: value, reference: `var(${value})` });\nvar cssVars = {\n  arrowSize: toVar(\"--arrow-size\"),\n  arrowSizeHalf: toVar(\"--arrow-size-half\"),\n  arrowBg: toVar(\"--arrow-background\"),\n  transformOrigin: toVar(\"--transform-origin\"),\n  arrowOffset: toVar(\"--arrow-offset\")\n};\nvar getSideAxis = (side) => side === \"top\" || side === \"bottom\" ? \"y\" : \"x\";\nfunction createTransformOriginMiddleware(opts, arrowEl) {\n  return {\n    name: \"transformOrigin\",\n    fn(state) {\n      const { elements, middlewareData, placement, rects, y } = state;\n      const side = placement.split(\"-\")[0];\n      const axis = getSideAxis(side);\n      const arrowX = middlewareData.arrow?.x || 0;\n      const arrowY = middlewareData.arrow?.y || 0;\n      const arrowWidth = arrowEl?.clientWidth || 0;\n      const arrowHeight = arrowEl?.clientHeight || 0;\n      const transformX = arrowX + arrowWidth / 2;\n      const transformY = arrowY + arrowHeight / 2;\n      const shiftY = Math.abs(middlewareData.shift?.y || 0);\n      const halfAnchorHeight = rects.reference.height / 2;\n      const arrowOffset = arrowHeight / 2;\n      const gutter = opts.offset?.mainAxis ?? opts.gutter;\n      const sideOffsetValue = typeof gutter === \"number\" ? gutter + arrowOffset : gutter ?? arrowOffset;\n      const isOverlappingAnchor = shiftY > sideOffsetValue;\n      const adjacentTransformOrigin = {\n        top: `${transformX}px calc(100% + ${sideOffsetValue}px)`,\n        bottom: `${transformX}px ${-sideOffsetValue}px`,\n        left: `calc(100% + ${sideOffsetValue}px) ${transformY}px`,\n        right: `${-sideOffsetValue}px ${transformY}px`\n      }[side];\n      const overlapTransformOrigin = `${transformX}px ${rects.reference.y + halfAnchorHeight - y}px`;\n      const useOverlap = Boolean(opts.overlap) && axis === \"y\" && isOverlappingAnchor;\n      elements.floating.style.setProperty(\n        cssVars.transformOrigin.variable,\n        useOverlap ? overlapTransformOrigin : adjacentTransformOrigin\n      );\n      return {\n        data: {\n          transformOrigin: useOverlap ? overlapTransformOrigin : adjacentTransformOrigin\n        }\n      };\n    }\n  };\n}\nvar rectMiddleware = {\n  name: \"rects\",\n  fn({ rects }) {\n    return {\n      data: rects\n    };\n  }\n};\nvar shiftArrowMiddleware = (arrowEl) => {\n  if (!arrowEl) return;\n  return {\n    name: \"shiftArrow\",\n    fn({ placement, middlewareData }) {\n      if (!middlewareData.arrow) return {};\n      const { x, y } = middlewareData.arrow;\n      const dir = placement.split(\"-\")[0];\n      Object.assign(arrowEl.style, {\n        left: x != null ? `${x}px` : \"\",\n        top: y != null ? `${y}px` : \"\",\n        [dir]: `calc(100% + ${cssVars.arrowOffset.reference})`\n      });\n      return {};\n    }\n  };\n};\n\n// src/placement.ts\nfunction isValidPlacement(v) {\n  return /^(?:top|bottom|left|right)(?:-(?:start|end))?$/.test(v);\n}\nfunction getPlacementDetails(placement) {\n  const [side, align] = placement.split(\"-\");\n  return { side, align, hasAlign: align != null };\n}\nfunction getPlacementSide(placement) {\n  return placement.split(\"-\")[0];\n}\n\n// src/get-placement.ts\nvar defaultOptions = {\n  strategy: \"absolute\",\n  placement: \"bottom\",\n  listeners: true,\n  gutter: 8,\n  flip: true,\n  slide: true,\n  overlap: false,\n  sameWidth: false,\n  fitViewport: false,\n  overflowPadding: 8,\n  arrowPadding: 4\n};\nfunction roundByDpr(win, value) {\n  const dpr = win.devicePixelRatio || 1;\n  return Math.round(value * dpr) / dpr;\n}\nfunction resolveBoundaryOption(boundary) {\n  if (typeof boundary === \"function\") return boundary();\n  if (boundary === \"clipping-ancestors\") return \"clippingAncestors\";\n  return boundary;\n}\nfunction getArrowMiddleware(arrowElement, doc, opts) {\n  const element = arrowElement || doc.createElement(\"div\");\n  return arrow({ element, padding: opts.arrowPadding });\n}\nfunction getOffsetMiddleware(arrowElement, opts) {\n  if (isNull(opts.offset ?? opts.gutter)) return;\n  return offset(({ placement }) => {\n    const arrowOffset = (arrowElement?.clientHeight || 0) / 2;\n    const gutter = opts.offset?.mainAxis ?? opts.gutter;\n    const mainAxis = typeof gutter === \"number\" ? gutter + arrowOffset : gutter ?? arrowOffset;\n    const { hasAlign } = getPlacementDetails(placement);\n    const shift2 = !hasAlign ? opts.shift : void 0;\n    const crossAxis = opts.offset?.crossAxis ?? shift2;\n    return compact({\n      crossAxis,\n      mainAxis,\n      alignmentAxis: opts.shift\n    });\n  });\n}\nfunction getFlipMiddleware(opts) {\n  if (!opts.flip) return;\n  const boundary = resolveBoundaryOption(opts.boundary);\n  return flip({\n    ...boundary ? { boundary } : void 0,\n    padding: opts.overflowPadding,\n    fallbackPlacements: opts.flip === true ? void 0 : opts.flip\n  });\n}\nfunction getShiftMiddleware(opts) {\n  if (!opts.slide && !opts.overlap) return;\n  const boundary = resolveBoundaryOption(opts.boundary);\n  return shift({\n    ...boundary ? { boundary } : void 0,\n    mainAxis: opts.slide,\n    crossAxis: opts.overlap,\n    padding: opts.overflowPadding,\n    limiter: limitShift()\n  });\n}\nfunction getSizeMiddleware(opts) {\n  return size({\n    padding: opts.overflowPadding,\n    apply({ elements, rects, availableHeight, availableWidth }) {\n      const floating = elements.floating;\n      const referenceWidth = Math.round(rects.reference.width);\n      const referenceHeight = Math.round(rects.reference.height);\n      availableWidth = Math.floor(availableWidth);\n      availableHeight = Math.floor(availableHeight);\n      floating.style.setProperty(\"--reference-width\", `${referenceWidth}px`);\n      floating.style.setProperty(\"--reference-height\", `${referenceHeight}px`);\n      floating.style.setProperty(\"--available-width\", `${availableWidth}px`);\n      floating.style.setProperty(\"--available-height\", `${availableHeight}px`);\n    }\n  });\n}\nfunction hideWhenDetachedMiddleware(opts) {\n  if (!opts.hideWhenDetached) return;\n  return hide({ strategy: \"referenceHidden\", boundary: resolveBoundaryOption(opts.boundary) ?? \"clippingAncestors\" });\n}\nfunction getAutoUpdateOptions(opts) {\n  if (!opts) return {};\n  if (opts === true) {\n    return { ancestorResize: true, ancestorScroll: true, elementResize: true, layoutShift: true };\n  }\n  return opts;\n}\nfunction getPlacementImpl(referenceOrVirtual, floating, opts = {}) {\n  const anchor = opts.getAnchorElement?.() ?? referenceOrVirtual;\n  const reference = getAnchorElement(anchor, opts.getAnchorRect);\n  if (!floating || !reference) return;\n  const options = Object.assign({}, defaultOptions, opts);\n  const arrowEl = floating.querySelector(\"[data-part=arrow]\");\n  const middleware = [\n    getOffsetMiddleware(arrowEl, options),\n    getFlipMiddleware(options),\n    getShiftMiddleware(options),\n    getArrowMiddleware(arrowEl, floating.ownerDocument, options),\n    shiftArrowMiddleware(arrowEl),\n    createTransformOriginMiddleware(\n      { gutter: options.gutter, offset: options.offset, overlap: options.overlap },\n      arrowEl\n    ),\n    getSizeMiddleware(options),\n    hideWhenDetachedMiddleware(options),\n    rectMiddleware\n  ];\n  const { placement, strategy, onComplete, onPositioned } = options;\n  const updatePosition = async () => {\n    if (!reference || !floating) return;\n    const pos = await computePosition(reference, floating, {\n      placement,\n      middleware,\n      strategy\n    });\n    onComplete?.(pos);\n    onPositioned?.({ placed: true });\n    const win = getWindow(floating);\n    const x = roundByDpr(win, pos.x);\n    const y = roundByDpr(win, pos.y);\n    floating.style.setProperty(\"--x\", `${x}px`);\n    floating.style.setProperty(\"--y\", `${y}px`);\n    if (options.hideWhenDetached) {\n      const isHidden = pos.middlewareData.hide?.referenceHidden;\n      if (isHidden) {\n        floating.style.setProperty(\"visibility\", \"hidden\");\n        floating.style.setProperty(\"pointer-events\", \"none\");\n      } else {\n        floating.style.removeProperty(\"visibility\");\n        floating.style.removeProperty(\"pointer-events\");\n      }\n    }\n    const contentEl = floating.firstElementChild;\n    if (contentEl) {\n      const styles = getComputedStyle(contentEl);\n      floating.style.setProperty(\"--z-index\", styles.zIndex);\n    }\n  };\n  const update = async () => {\n    if (opts.updatePosition) {\n      await opts.updatePosition({ updatePosition, floatingElement: floating });\n      onPositioned?.({ placed: true });\n    } else {\n      await updatePosition();\n    }\n  };\n  const autoUpdateOptions = getAutoUpdateOptions(options.listeners);\n  const cancelAutoUpdate = options.listeners ? autoUpdate(reference, floating, update, autoUpdateOptions) : noop;\n  update();\n  return () => {\n    cancelAutoUpdate?.();\n    onPositioned?.({ placed: false });\n  };\n}\nfunction getPlacement(referenceOrFn, floatingOrFn, opts = {}) {\n  const { defer, ...options } = opts;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const reference = typeof referenceOrFn === \"function\" ? referenceOrFn() : referenceOrFn;\n      const floating = typeof floatingOrFn === \"function\" ? floatingOrFn() : floatingOrFn;\n      cleanups.push(getPlacementImpl(reference, floating, options));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\n\n// src/get-styles.ts\nvar ARROW_FLOATING_STYLE = {\n  bottom: \"rotate(45deg)\",\n  left: \"rotate(135deg)\",\n  top: \"rotate(225deg)\",\n  right: \"rotate(315deg)\"\n};\nfunction getPlacementStyles(options = {}) {\n  const { placement, sameWidth, fitViewport, strategy = \"absolute\" } = options;\n  return {\n    arrow: {\n      position: \"absolute\",\n      width: cssVars.arrowSize.reference,\n      height: cssVars.arrowSize.reference,\n      [cssVars.arrowSizeHalf.variable]: `calc(${cssVars.arrowSize.reference} / 2)`,\n      [cssVars.arrowOffset.variable]: `calc(${cssVars.arrowSizeHalf.reference} * -1)`\n    },\n    arrowTip: {\n      // @ts-expect-error - Fix this\n      transform: placement ? ARROW_FLOATING_STYLE[placement.split(\"-\")[0]] : void 0,\n      background: cssVars.arrowBg.reference,\n      top: \"0\",\n      left: \"0\",\n      width: \"100%\",\n      height: \"100%\",\n      position: \"absolute\",\n      zIndex: \"inherit\"\n    },\n    floating: {\n      position: strategy,\n      isolation: \"isolate\",\n      minWidth: sameWidth ? void 0 : \"max-content\",\n      width: sameWidth ? \"var(--reference-width)\" : void 0,\n      maxWidth: fitViewport ? \"var(--available-width)\" : void 0,\n      maxHeight: fitViewport ? \"var(--available-height)\" : void 0,\n      pointerEvents: !placement ? \"none\" : void 0,\n      top: \"0px\",\n      left: \"0px\",\n      // move off-screen if placement is not defined\n      transform: placement ? \"translate3d(var(--x), var(--y), 0)\" : \"translate3d(0, -100vh, 0)\",\n      zIndex: \"var(--z-index)\"\n    }\n  };\n}\n\nexport { getPlacement, getPlacementSide, getPlacementStyles, isValidPlacement };\n", "import { raf, getDocument, getWindow, isShadowRoot, addDomEvent, isTouchDevice, getEventTarget, isFocusable, isContextMenuEvent, isHTMLElement, contains, isControlledElement, getNearestOverflowAncestor } from '@zag-js/dom-query';\nimport { callAll } from '@zag-js/utils';\n\n// src/index.ts\n\n// src/frame-utils.ts\nfunction getWindowFrames(win) {\n  const frames = {\n    each(cb) {\n      for (let i = 0; i < win.frames?.length; i += 1) {\n        const frame = win.frames[i];\n        if (frame) cb(frame);\n      }\n    },\n    addEventListener(event, listener, options) {\n      frames.each((frame) => {\n        try {\n          frame.document.addEventListener(event, listener, options);\n        } catch {\n        }\n      });\n      return () => {\n        try {\n          frames.removeEventListener(event, listener, options);\n        } catch {\n        }\n      };\n    },\n    removeEventListener(event, listener, options) {\n      frames.each((frame) => {\n        try {\n          frame.document.removeEventListener(event, listener, options);\n        } catch {\n        }\n      });\n    }\n  };\n  return frames;\n}\nfunction getParentWindow(win) {\n  const parent = win.frameElement != null ? win.parent : null;\n  return {\n    addEventListener: (event, listener, options) => {\n      try {\n        parent?.addEventListener(event, listener, options);\n      } catch {\n      }\n      return () => {\n        try {\n          parent?.removeEventListener(event, listener, options);\n        } catch {\n        }\n      };\n    },\n    removeEventListener: (event, listener, options) => {\n      try {\n        parent?.removeEventListener(event, listener, options);\n      } catch {\n      }\n    }\n  };\n}\n\n// src/index.ts\nvar POINTER_OUTSIDE_EVENT = \"pointerdown.outside\";\nvar FOCUS_OUTSIDE_EVENT = \"focus.outside\";\nfunction isComposedPathFocusable(composedPath) {\n  for (const node of composedPath) {\n    if (isHTMLElement(node) && isFocusable(node)) return true;\n  }\n  return false;\n}\nvar isPointerEvent = (event) => \"clientY\" in event;\nfunction isEventPointWithin(node, event) {\n  if (!isPointerEvent(event) || !node) return false;\n  const rect = node.getBoundingClientRect();\n  if (rect.width === 0 || rect.height === 0) return false;\n  return rect.top <= event.clientY && event.clientY <= rect.top + rect.height && rect.left <= event.clientX && event.clientX <= rect.left + rect.width;\n}\nfunction isPointInRect(rect, point) {\n  return rect.y <= point.y && point.y <= rect.y + rect.height && rect.x <= point.x && point.x <= rect.x + rect.width;\n}\nfunction isEventWithinScrollbar(event, ancestor) {\n  if (!ancestor || !isPointerEvent(event)) return false;\n  const isScrollableY = ancestor.scrollHeight > ancestor.clientHeight;\n  const onScrollbarY = isScrollableY && event.clientX > ancestor.offsetLeft + ancestor.clientWidth;\n  const isScrollableX = ancestor.scrollWidth > ancestor.clientWidth;\n  const onScrollbarX = isScrollableX && event.clientY > ancestor.offsetTop + ancestor.clientHeight;\n  const rect = {\n    x: ancestor.offsetLeft,\n    y: ancestor.offsetTop,\n    width: ancestor.clientWidth + (isScrollableY ? 16 : 0),\n    height: ancestor.clientHeight + (isScrollableX ? 16 : 0)\n  };\n  const point = {\n    x: event.clientX,\n    y: event.clientY\n  };\n  if (!isPointInRect(rect, point)) return false;\n  return onScrollbarY || onScrollbarX;\n}\nfunction trackInteractOutsideImpl(node, options) {\n  const {\n    exclude,\n    onFocusOutside,\n    onPointerDownOutside,\n    onInteractOutside,\n    defer,\n    followControlledElements = true\n  } = options;\n  if (!node) return;\n  const doc = getDocument(node);\n  const win = getWindow(node);\n  const frames = getWindowFrames(win);\n  const parentWin = getParentWindow(win);\n  function isEventOutside(event, target) {\n    if (!isHTMLElement(target)) return false;\n    if (!target.isConnected) return false;\n    if (contains(node, target)) return false;\n    if (isEventPointWithin(node, event)) return false;\n    if (followControlledElements && isControlledElement(node, target)) return false;\n    const triggerEl = doc.querySelector(`[aria-controls=\"${node.id}\"]`);\n    if (triggerEl) {\n      const triggerAncestor = getNearestOverflowAncestor(triggerEl);\n      if (isEventWithinScrollbar(event, triggerAncestor)) return false;\n    }\n    const nodeAncestor = getNearestOverflowAncestor(node);\n    if (isEventWithinScrollbar(event, nodeAncestor)) return false;\n    return !exclude?.(target);\n  }\n  const pointerdownCleanups = /* @__PURE__ */ new Set();\n  const isInShadowRoot = isShadowRoot(node?.getRootNode());\n  function onPointerDown(event) {\n    function handler(clickEvent) {\n      const func = defer && !isTouchDevice() ? raf : (v) => v();\n      const evt = clickEvent ?? event;\n      const composedPath = evt?.composedPath?.() ?? [evt?.target];\n      func(() => {\n        const target = isInShadowRoot ? composedPath[0] : getEventTarget(event);\n        if (!node || !isEventOutside(event, target)) return;\n        if (onPointerDownOutside || onInteractOutside) {\n          const handler2 = callAll(onPointerDownOutside, onInteractOutside);\n          node.addEventListener(POINTER_OUTSIDE_EVENT, handler2, { once: true });\n        }\n        fireCustomEvent(node, POINTER_OUTSIDE_EVENT, {\n          bubbles: false,\n          cancelable: true,\n          detail: {\n            originalEvent: evt,\n            contextmenu: isContextMenuEvent(evt),\n            focusable: isComposedPathFocusable(composedPath),\n            target\n          }\n        });\n      });\n    }\n    if (event.pointerType === \"touch\") {\n      pointerdownCleanups.forEach((fn) => fn());\n      pointerdownCleanups.add(addDomEvent(doc, \"click\", handler, { once: true }));\n      pointerdownCleanups.add(parentWin.addEventListener(\"click\", handler, { once: true }));\n      pointerdownCleanups.add(frames.addEventListener(\"click\", handler, { once: true }));\n    } else {\n      handler();\n    }\n  }\n  const cleanups = /* @__PURE__ */ new Set();\n  const timer = setTimeout(() => {\n    cleanups.add(addDomEvent(doc, \"pointerdown\", onPointerDown, true));\n    cleanups.add(parentWin.addEventListener(\"pointerdown\", onPointerDown, true));\n    cleanups.add(frames.addEventListener(\"pointerdown\", onPointerDown, true));\n  }, 0);\n  function onFocusin(event) {\n    const func = defer ? raf : (v) => v();\n    func(() => {\n      const composedPath = event?.composedPath?.() ?? [event?.target];\n      const target = isInShadowRoot ? composedPath[0] : getEventTarget(event);\n      if (!node || !isEventOutside(event, target)) return;\n      if (onFocusOutside || onInteractOutside) {\n        const handler = callAll(onFocusOutside, onInteractOutside);\n        node.addEventListener(FOCUS_OUTSIDE_EVENT, handler, { once: true });\n      }\n      fireCustomEvent(node, FOCUS_OUTSIDE_EVENT, {\n        bubbles: false,\n        cancelable: true,\n        detail: {\n          originalEvent: event,\n          contextmenu: false,\n          focusable: isFocusable(target),\n          target\n        }\n      });\n    });\n  }\n  if (!isTouchDevice()) {\n    cleanups.add(addDomEvent(doc, \"focusin\", onFocusin, true));\n    cleanups.add(parentWin.addEventListener(\"focusin\", onFocusin, true));\n    cleanups.add(frames.addEventListener(\"focusin\", onFocusin, true));\n  }\n  return () => {\n    clearTimeout(timer);\n    pointerdownCleanups.forEach((fn) => fn());\n    cleanups.forEach((fn) => fn());\n  };\n}\nfunction trackInteractOutside(nodeOrFn, options) {\n  const { defer } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n      cleanups.push(trackInteractOutsideImpl(node, options));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\nfunction fireCustomEvent(el, type, init) {\n  const win = el.ownerDocument.defaultView || window;\n  const event = new win.CustomEvent(type, init);\n  return el.dispatchEvent(event);\n}\n\nexport { trackInteractOutside };\n", "import { raf, nextTick, contains, getDocument, waitForElement, isHTMLElement, setStyle, addDomEvent, getEventTarget } from '@zag-js/dom-query';\nimport { trackInteractOutside } from '@zag-js/interact-outside';\nimport { isFunction, warn } from '@zag-js/utils';\n\n// src/dismissable-layer.ts\nfunction trackEscapeKeydown(node, fn) {\n  const handleKeyDown = (event) => {\n    if (event.key !== \"Escape\") return;\n    if (event.isComposing) return;\n    fn?.(event);\n  };\n  return addDomEvent(getDocument(node), \"keydown\", handleKeyDown, { capture: true });\n}\nvar LAYER_REQUEST_DISMISS_EVENT = \"layer:request-dismiss\";\nvar layerStack = {\n  layers: [],\n  branches: [],\n  recentlyRemoved: /* @__PURE__ */ new Set(),\n  count() {\n    return this.layers.length;\n  },\n  pointerBlockingLayers() {\n    return this.layers.filter((layer) => layer.pointerBlocking);\n  },\n  topMostPointerBlockingLayer() {\n    return [...this.pointerBlockingLayers()].slice(-1)[0];\n  },\n  hasPointerBlockingLayer() {\n    return this.pointerBlockingLayers().length > 0;\n  },\n  isBelowPointerBlockingLayer(node) {\n    const index = this.indexOf(node);\n    const highestBlockingIndex = this.topMostPointerBlockingLayer() ? this.indexOf(this.topMostPointerBlockingLayer()?.node) : -1;\n    return index < highestBlockingIndex;\n  },\n  isTopMost(node) {\n    const layer = this.layers[this.count() - 1];\n    return layer?.node === node;\n  },\n  getNestedLayers(node) {\n    return Array.from(this.layers).slice(this.indexOf(node) + 1);\n  },\n  getLayersByType(type) {\n    return this.layers.filter((layer) => layer.type === type);\n  },\n  getNestedLayersByType(node, type) {\n    const index = this.indexOf(node);\n    if (index === -1) return [];\n    return this.layers.slice(index + 1).filter((layer) => layer.type === type);\n  },\n  getParentLayerOfType(node, type) {\n    const index = this.indexOf(node);\n    if (index <= 0) return void 0;\n    return this.layers.slice(0, index).reverse().find((layer) => layer.type === type);\n  },\n  countNestedLayersOfType(node, type) {\n    return this.getNestedLayersByType(node, type).length;\n  },\n  isInNestedLayer(node, target) {\n    const inNested = this.getNestedLayers(node).some((layer) => contains(layer.node, target));\n    if (inNested) return true;\n    if (this.recentlyRemoved.size > 0) return true;\n    return false;\n  },\n  isInBranch(target) {\n    return Array.from(this.branches).some((branch) => contains(branch, target));\n  },\n  add(layer) {\n    this.layers.push(layer);\n    this.syncLayers();\n  },\n  addBranch(node) {\n    this.branches.push(node);\n  },\n  remove(node) {\n    const index = this.indexOf(node);\n    if (index < 0) return;\n    this.recentlyRemoved.add(node);\n    nextTick(() => this.recentlyRemoved.delete(node));\n    if (index < this.count() - 1) {\n      const _layers = this.getNestedLayers(node);\n      _layers.forEach((layer) => layerStack.dismiss(layer.node, node));\n    }\n    this.layers.splice(index, 1);\n    this.syncLayers();\n  },\n  removeBranch(node) {\n    const index = this.branches.indexOf(node);\n    if (index >= 0) this.branches.splice(index, 1);\n  },\n  syncLayers() {\n    this.layers.forEach((layer, index) => {\n      layer.node.style.setProperty(\"--layer-index\", `${index}`);\n      layer.node.removeAttribute(\"data-nested\");\n      layer.node.removeAttribute(\"data-has-nested\");\n      const parentOfSameType = this.getParentLayerOfType(layer.node, layer.type);\n      if (parentOfSameType) {\n        layer.node.setAttribute(\"data-nested\", layer.type);\n      }\n      const nestedCount = this.countNestedLayersOfType(layer.node, layer.type);\n      if (nestedCount > 0) {\n        layer.node.setAttribute(\"data-has-nested\", layer.type);\n      }\n      layer.node.style.setProperty(\"--nested-layer-count\", `${nestedCount}`);\n    });\n  },\n  indexOf(node) {\n    return this.layers.findIndex((layer) => layer.node === node);\n  },\n  dismiss(node, parent) {\n    const index = this.indexOf(node);\n    if (index === -1) return;\n    const layer = this.layers[index];\n    addListenerOnce(node, LAYER_REQUEST_DISMISS_EVENT, (event) => {\n      layer.requestDismiss?.(event);\n      if (!event.defaultPrevented) {\n        layer?.dismiss();\n      }\n    });\n    fireCustomEvent(node, LAYER_REQUEST_DISMISS_EVENT, {\n      originalLayer: node,\n      targetLayer: parent,\n      originalIndex: index,\n      targetIndex: parent ? this.indexOf(parent) : -1\n    });\n    this.syncLayers();\n  },\n  clear() {\n    this.remove(this.layers[0].node);\n  }\n};\nfunction fireCustomEvent(el, type, detail) {\n  const win = el.ownerDocument.defaultView || window;\n  const event = new win.CustomEvent(type, { cancelable: true, bubbles: true, detail });\n  return el.dispatchEvent(event);\n}\nfunction addListenerOnce(el, type, callback) {\n  el.addEventListener(type, callback, { once: true });\n}\nvar originalBodyPointerEvents;\nfunction assignPointerEventToLayers() {\n  layerStack.layers.forEach(({ node }) => {\n    node.style.pointerEvents = layerStack.isBelowPointerBlockingLayer(node) ? \"none\" : \"auto\";\n  });\n}\nfunction clearPointerEvent(node) {\n  node.style.pointerEvents = \"\";\n}\nfunction disablePointerEventsOutside(node, persistentElements) {\n  const doc = getDocument(node);\n  const cleanups = [];\n  if (layerStack.hasPointerBlockingLayer() && !doc.body.hasAttribute(\"data-inert\")) {\n    originalBodyPointerEvents = document.body.style.pointerEvents;\n    queueMicrotask(() => {\n      doc.body.style.pointerEvents = \"none\";\n      doc.body.setAttribute(\"data-inert\", \"\");\n    });\n  }\n  persistentElements?.forEach((el) => {\n    const [promise, abort] = waitForElement(\n      () => {\n        const node2 = el();\n        return isHTMLElement(node2) ? node2 : null;\n      },\n      { timeout: 1e3 }\n    );\n    promise.then((el2) => cleanups.push(setStyle(el2, { pointerEvents: \"auto\" })));\n    cleanups.push(abort);\n  });\n  return () => {\n    if (layerStack.hasPointerBlockingLayer()) return;\n    queueMicrotask(() => {\n      doc.body.style.pointerEvents = originalBodyPointerEvents;\n      doc.body.removeAttribute(\"data-inert\");\n      if (doc.body.style.length === 0) doc.body.removeAttribute(\"style\");\n    });\n    cleanups.forEach((fn) => fn());\n  };\n}\n\n// src/dismissable-layer.ts\nfunction trackDismissableElementImpl(node, options) {\n  const { warnOnMissingNode = true } = options;\n  if (warnOnMissingNode && !node) {\n    warn(\"[@zag-js/dismissable] node is `null` or `undefined`\");\n    return;\n  }\n  if (!node) {\n    return;\n  }\n  const { onDismiss, onRequestDismiss, pointerBlocking, exclude: excludeContainers, debug, type = \"dialog\" } = options;\n  const layer = { dismiss: onDismiss, node, type, pointerBlocking, requestDismiss: onRequestDismiss };\n  layerStack.add(layer);\n  assignPointerEventToLayers();\n  function onPointerDownOutside(event) {\n    const target = getEventTarget(event.detail.originalEvent);\n    if (layerStack.isBelowPointerBlockingLayer(node) || layerStack.isInBranch(target)) return;\n    options.onPointerDownOutside?.(event);\n    options.onInteractOutside?.(event);\n    if (event.defaultPrevented) return;\n    if (debug) {\n      console.log(\"onPointerDownOutside:\", event.detail.originalEvent);\n    }\n    onDismiss?.();\n  }\n  function onFocusOutside(event) {\n    const target = getEventTarget(event.detail.originalEvent);\n    if (layerStack.isInBranch(target)) return;\n    options.onFocusOutside?.(event);\n    options.onInteractOutside?.(event);\n    if (event.defaultPrevented) return;\n    if (debug) {\n      console.log(\"onFocusOutside:\", event.detail.originalEvent);\n    }\n    onDismiss?.();\n  }\n  function onEscapeKeyDown(event) {\n    if (!layerStack.isTopMost(node)) return;\n    options.onEscapeKeyDown?.(event);\n    if (!event.defaultPrevented && onDismiss) {\n      event.preventDefault();\n      onDismiss();\n    }\n  }\n  function exclude(target) {\n    if (!node) return false;\n    const containers = typeof excludeContainers === \"function\" ? excludeContainers() : excludeContainers;\n    const _containers = Array.isArray(containers) ? containers : [containers];\n    const persistentElements = options.persistentElements?.map((fn) => fn()).filter(isHTMLElement);\n    if (persistentElements) _containers.push(...persistentElements);\n    return _containers.some((node2) => contains(node2, target)) || layerStack.isInNestedLayer(node, target);\n  }\n  const cleanups = [\n    pointerBlocking ? disablePointerEventsOutside(node, options.persistentElements) : void 0,\n    trackEscapeKeydown(node, onEscapeKeyDown),\n    trackInteractOutside(node, { exclude, onFocusOutside, onPointerDownOutside, defer: options.defer })\n  ];\n  return () => {\n    layerStack.remove(node);\n    assignPointerEventToLayers();\n    clearPointerEvent(node);\n    cleanups.forEach((fn) => fn?.());\n  };\n}\nfunction trackDismissableElement(nodeOrFn, options) {\n  const { defer } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const node = isFunction(nodeOrFn) ? nodeOrFn() : nodeOrFn;\n      cleanups.push(trackDismissableElementImpl(node, options));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\nfunction trackDismissableBranch(nodeOrFn, options = {}) {\n  const { defer } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const node = isFunction(nodeOrFn) ? nodeOrFn() : nodeOrFn;\n      if (!node) {\n        warn(\"[@zag-js/dismissable] branch node is `null` or `undefined`\");\n        return;\n      }\n      layerStack.addBranch(node);\n      cleanups.push(() => {\n        layerStack.removeBranch(node);\n      });\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\n\nexport { trackDismissableBranch, trackDismissableElement };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { ListCollection } from '@zag-js/collection';\nimport { raf, setCaretToEnd, nextTick, scrollIntoView, observeAttributes, clickIfLink, query, dataAttr, isDownloadingEvent, isOpeningInNewTab, isContextMenuEvent, ariaAttr, isLeftClick, getEventKey, isComposingEvent, isAnchorElement } from '@zag-js/dom-query';\nimport { getPlacement, getPlacementStyles } from '@zag-js/popper';\nimport { match, remove, addOrRemove, isBoolean, isEqual, createSplitProps, ensure } from '@zag-js/utils';\nimport { setup } from '@zag-js/core';\nimport { trackDismissableElement } from '@zag-js/dismissable';\nimport { createProps } from '@zag-js/types';\n\n// src/combobox.anatomy.ts\nvar anatomy = createAnatomy(\"combobox\").parts(\n  \"root\",\n  \"clearTrigger\",\n  \"content\",\n  \"control\",\n  \"input\",\n  \"item\",\n  \"itemGroup\",\n  \"itemGroupLabel\",\n  \"itemIndicator\",\n  \"itemText\",\n  \"label\",\n  \"list\",\n  \"positioner\",\n  \"trigger\"\n);\nvar parts = anatomy.build();\nvar collection = (options) => {\n  return new ListCollection(options);\n};\ncollection.empty = () => {\n  return new ListCollection({ items: [] });\n};\nvar getRootId = (ctx) => ctx.ids?.root ?? `combobox:${ctx.id}`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `combobox:${ctx.id}:label`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `combobox:${ctx.id}:control`;\nvar getInputId = (ctx) => ctx.ids?.input ?? `combobox:${ctx.id}:input`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `combobox:${ctx.id}:content`;\nvar getPositionerId = (ctx) => ctx.ids?.positioner ?? `combobox:${ctx.id}:popper`;\nvar getTriggerId = (ctx) => ctx.ids?.trigger ?? `combobox:${ctx.id}:toggle-btn`;\nvar getClearTriggerId = (ctx) => ctx.ids?.clearTrigger ?? `combobox:${ctx.id}:clear-btn`;\nvar getItemGroupId = (ctx, id) => ctx.ids?.itemGroup?.(id) ?? `combobox:${ctx.id}:optgroup:${id}`;\nvar getItemGroupLabelId = (ctx, id) => ctx.ids?.itemGroupLabel?.(id) ?? `combobox:${ctx.id}:optgroup-label:${id}`;\nvar getItemId = (ctx, id) => ctx.ids?.item?.(id) ?? `combobox:${ctx.id}:option:${id}`;\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nvar getInputEl = (ctx) => ctx.getById(getInputId(ctx));\nvar getPositionerEl = (ctx) => ctx.getById(getPositionerId(ctx));\nvar getControlEl = (ctx) => ctx.getById(getControlId(ctx));\nvar getTriggerEl = (ctx) => ctx.getById(getTriggerId(ctx));\nvar getClearTriggerEl = (ctx) => ctx.getById(getClearTriggerId(ctx));\nvar getItemEl = (ctx, value) => {\n  if (value == null) return null;\n  const selector = `[role=option][data-value=\"${CSS.escape(value)}\"]`;\n  return query(getContentEl(ctx), selector);\n};\nvar focusInputEl = (ctx) => {\n  const inputEl = getInputEl(ctx);\n  if (ctx.isActiveElement(inputEl)) return;\n  inputEl?.focus({ preventScroll: true });\n};\nvar focusTriggerEl = (ctx) => {\n  const triggerEl = getTriggerEl(ctx);\n  if (ctx.isActiveElement(triggerEl)) return;\n  triggerEl?.focus({ preventScroll: true });\n};\n\n// src/combobox.connect.ts\nfunction connect(service, normalize) {\n  const { context, prop, state, send, scope, computed, event } = service;\n  const translations = prop(\"translations\");\n  const collection2 = prop(\"collection\");\n  const disabled = !!prop(\"disabled\");\n  const interactive = computed(\"isInteractive\");\n  const invalid = !!prop(\"invalid\");\n  const required = !!prop(\"required\");\n  const readOnly = !!prop(\"readOnly\");\n  const open = state.hasTag(\"open\");\n  const focused = state.hasTag(\"focused\");\n  const composite = prop(\"composite\");\n  const highlightedValue = context.get(\"highlightedValue\");\n  const popperStyles = getPlacementStyles({\n    ...prop(\"positioning\"),\n    placement: context.get(\"currentPlacement\")\n  });\n  function getItemState(props2) {\n    const disabled2 = collection2.getItemDisabled(props2.item);\n    const value = collection2.getItemValue(props2.item);\n    ensure(value, () => `[zag-js] No value found for item ${JSON.stringify(props2.item)}`);\n    return {\n      value,\n      disabled: Boolean(disabled2 || disabled2),\n      highlighted: highlightedValue === value,\n      selected: context.get(\"value\").includes(value)\n    };\n  }\n  return {\n    focused,\n    open,\n    inputValue: context.get(\"inputValue\"),\n    highlightedValue,\n    highlightedItem: context.get(\"highlightedItem\"),\n    value: context.get(\"value\"),\n    valueAsString: computed(\"valueAsString\"),\n    hasSelectedItems: computed(\"hasSelectedItems\"),\n    selectedItems: context.get(\"selectedItems\"),\n    collection: prop(\"collection\"),\n    multiple: !!prop(\"multiple\"),\n    disabled: !!disabled,\n    syncSelectedItems() {\n      send({ type: \"SELECTED_ITEMS.SYNC\" });\n    },\n    reposition(options = {}) {\n      send({ type: \"POSITIONING.SET\", options });\n    },\n    setHighlightValue(value) {\n      send({ type: \"HIGHLIGHTED_VALUE.SET\", value });\n    },\n    clearHighlightValue() {\n      send({ type: \"HIGHLIGHTED_VALUE.CLEAR\" });\n    },\n    selectValue(value) {\n      send({ type: \"ITEM.SELECT\", value });\n    },\n    setValue(value) {\n      send({ type: \"VALUE.SET\", value });\n    },\n    setInputValue(value, reason = \"script\") {\n      send({ type: \"INPUT_VALUE.SET\", value, src: reason });\n    },\n    clearValue(value) {\n      if (value != null) {\n        send({ type: \"ITEM.CLEAR\", value });\n      } else {\n        send({ type: \"VALUE.CLEAR\" });\n      }\n    },\n    focus() {\n      getInputEl(scope)?.focus();\n    },\n    setOpen(nextOpen, reason = \"script\") {\n      const open2 = state.hasTag(\"open\");\n      if (open2 === nextOpen) return;\n      send({ type: nextOpen ? \"OPEN\" : \"CLOSE\", src: reason });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        dir: prop(\"dir\"),\n        id: getRootId(scope),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly)\n      });\n    },\n    getLabelProps() {\n      return normalize.label({\n        ...parts.label.attrs,\n        dir: prop(\"dir\"),\n        htmlFor: getInputId(scope),\n        id: getLabelId(scope),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-required\": dataAttr(required),\n        \"data-focus\": dataAttr(focused),\n        onClick(event2) {\n          if (composite) return;\n          event2.preventDefault();\n          getTriggerEl(scope)?.focus({ preventScroll: true });\n        }\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        dir: prop(\"dir\"),\n        id: getControlId(scope),\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-focus\": dataAttr(focused),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid)\n      });\n    },\n    getPositionerProps() {\n      return normalize.element({\n        ...parts.positioner.attrs,\n        dir: prop(\"dir\"),\n        id: getPositionerId(scope),\n        style: popperStyles.floating\n      });\n    },\n    getInputProps() {\n      return normalize.input({\n        ...parts.input.attrs,\n        dir: prop(\"dir\"),\n        \"aria-invalid\": ariaAttr(invalid),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-autofocus\": dataAttr(prop(\"autoFocus\")),\n        name: prop(\"name\"),\n        form: prop(\"form\"),\n        disabled,\n        required: prop(\"required\"),\n        autoComplete: \"off\",\n        autoCorrect: \"off\",\n        autoCapitalize: \"none\",\n        spellCheck: \"false\",\n        readOnly,\n        placeholder: prop(\"placeholder\"),\n        id: getInputId(scope),\n        type: \"text\",\n        role: \"combobox\",\n        defaultValue: context.get(\"inputValue\"),\n        \"aria-autocomplete\": computed(\"autoComplete\") ? \"both\" : \"list\",\n        \"aria-controls\": getContentId(scope),\n        \"aria-expanded\": open,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"aria-activedescendant\": highlightedValue ? getItemId(scope, highlightedValue) : void 0,\n        onClick(event2) {\n          if (event2.defaultPrevented) return;\n          if (!prop(\"openOnClick\")) return;\n          if (!interactive) return;\n          send({ type: \"INPUT.CLICK\", src: \"input-click\" });\n        },\n        onFocus() {\n          if (disabled) return;\n          send({ type: \"INPUT.FOCUS\" });\n        },\n        onBlur() {\n          if (disabled) return;\n          send({ type: \"INPUT.BLUR\" });\n        },\n        onChange(event2) {\n          send({ type: \"INPUT.CHANGE\", value: event2.currentTarget.value, src: \"input-change\" });\n        },\n        onKeyDown(event2) {\n          if (event2.defaultPrevented) return;\n          if (!interactive) return;\n          if (event2.ctrlKey || event2.shiftKey || isComposingEvent(event2)) return;\n          const openOnKeyPress = prop(\"openOnKeyPress\");\n          const isModifierKey = event2.ctrlKey || event2.metaKey || event2.shiftKey;\n          const keypress = true;\n          const keymap = {\n            ArrowDown(event3) {\n              if (!openOnKeyPress && !open) return;\n              send({ type: event3.altKey ? \"OPEN\" : \"INPUT.ARROW_DOWN\", keypress, src: \"arrow-key\" });\n              event3.preventDefault();\n            },\n            ArrowUp() {\n              if (!openOnKeyPress && !open) return;\n              send({ type: event2.altKey ? \"CLOSE\" : \"INPUT.ARROW_UP\", keypress, src: \"arrow-key\" });\n              event2.preventDefault();\n            },\n            Home(event3) {\n              if (isModifierKey) return;\n              send({ type: \"INPUT.HOME\", keypress });\n              if (open) {\n                event3.preventDefault();\n              }\n            },\n            End(event3) {\n              if (isModifierKey) return;\n              send({ type: \"INPUT.END\", keypress });\n              if (open) {\n                event3.preventDefault();\n              }\n            },\n            Enter(event3) {\n              send({ type: \"INPUT.ENTER\", keypress, src: \"item-select\" });\n              const submittable = computed(\"isCustomValue\") && prop(\"allowCustomValue\");\n              const hasHighlight = highlightedValue != null;\n              const alwaysSubmit = prop(\"alwaysSubmitOnEnter\");\n              if (open && !submittable && !alwaysSubmit && hasHighlight) {\n                event3.preventDefault();\n              }\n              if (highlightedValue == null) return;\n              const itemEl = getItemEl(scope, highlightedValue);\n              if (isAnchorElement(itemEl)) {\n                prop(\"navigate\")?.({ value: highlightedValue, node: itemEl, href: itemEl.href });\n              }\n            },\n            Escape() {\n              send({ type: \"INPUT.ESCAPE\", keypress, src: \"escape-key\" });\n              event2.preventDefault();\n            }\n          };\n          const key = getEventKey(event2, { dir: prop(\"dir\") });\n          const exec = keymap[key];\n          exec?.(event2);\n        }\n      });\n    },\n    getTriggerProps(props2 = {}) {\n      return normalize.button({\n        ...parts.trigger.attrs,\n        dir: prop(\"dir\"),\n        id: getTriggerId(scope),\n        \"aria-haspopup\": composite ? \"listbox\" : \"dialog\",\n        type: \"button\",\n        tabIndex: props2.focusable ? void 0 : -1,\n        \"aria-label\": translations.triggerLabel,\n        \"aria-expanded\": open,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"aria-controls\": open ? getContentId(scope) : void 0,\n        disabled,\n        \"data-invalid\": dataAttr(invalid),\n        \"data-focusable\": dataAttr(props2.focusable),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-disabled\": dataAttr(disabled),\n        onFocus() {\n          if (!props2.focusable) return;\n          send({ type: \"INPUT.FOCUS\", src: \"trigger\" });\n        },\n        onClick(event2) {\n          if (event2.defaultPrevented) return;\n          if (!interactive) return;\n          if (!isLeftClick(event2)) return;\n          send({ type: \"TRIGGER.CLICK\", src: \"trigger-click\" });\n        },\n        onPointerDown(event2) {\n          if (!interactive) return;\n          if (event2.pointerType === \"touch\") return;\n          if (!isLeftClick(event2)) return;\n          event2.preventDefault();\n          queueMicrotask(() => {\n            getInputEl(scope)?.focus({ preventScroll: true });\n          });\n        },\n        onKeyDown(event2) {\n          if (event2.defaultPrevented) return;\n          if (composite) return;\n          const keyMap = {\n            ArrowDown() {\n              send({ type: \"INPUT.ARROW_DOWN\", src: \"arrow-key\" });\n            },\n            ArrowUp() {\n              send({ type: \"INPUT.ARROW_UP\", src: \"arrow-key\" });\n            }\n          };\n          const key = getEventKey(event2, { dir: prop(\"dir\") });\n          const exec = keyMap[key];\n          if (exec) {\n            exec(event2);\n            event2.preventDefault();\n          }\n        }\n      });\n    },\n    getContentProps() {\n      return normalize.element({\n        ...parts.content.attrs,\n        dir: prop(\"dir\"),\n        id: getContentId(scope),\n        role: !composite ? \"dialog\" : \"listbox\",\n        tabIndex: -1,\n        hidden: !open,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-placement\": context.get(\"currentPlacement\"),\n        \"aria-labelledby\": getLabelId(scope),\n        \"aria-multiselectable\": prop(\"multiple\") && composite ? true : void 0,\n        \"data-empty\": dataAttr(collection2.size === 0),\n        onPointerDown(event2) {\n          if (!isLeftClick(event2)) return;\n          event2.preventDefault();\n        }\n      });\n    },\n    getListProps() {\n      return normalize.element({\n        ...parts.list.attrs,\n        role: !composite ? \"listbox\" : void 0,\n        \"data-empty\": dataAttr(collection2.size === 0),\n        \"aria-labelledby\": getLabelId(scope),\n        \"aria-multiselectable\": prop(\"multiple\") && !composite ? true : void 0\n      });\n    },\n    getClearTriggerProps() {\n      return normalize.button({\n        ...parts.clearTrigger.attrs,\n        dir: prop(\"dir\"),\n        id: getClearTriggerId(scope),\n        type: \"button\",\n        tabIndex: -1,\n        disabled,\n        \"data-invalid\": dataAttr(invalid),\n        \"aria-label\": translations.clearTriggerLabel,\n        \"aria-controls\": getInputId(scope),\n        hidden: !context.get(\"value\").length,\n        onPointerDown(event2) {\n          if (!isLeftClick(event2)) return;\n          event2.preventDefault();\n        },\n        onClick(event2) {\n          if (event2.defaultPrevented) return;\n          if (!interactive) return;\n          send({ type: \"VALUE.CLEAR\", src: \"clear-trigger\" });\n        }\n      });\n    },\n    getItemState,\n    getItemProps(props2) {\n      const itemState = getItemState(props2);\n      const value = itemState.value;\n      return normalize.element({\n        ...parts.item.attrs,\n        dir: prop(\"dir\"),\n        id: getItemId(scope, value),\n        role: \"option\",\n        tabIndex: -1,\n        \"data-highlighted\": dataAttr(itemState.highlighted),\n        \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n        \"aria-selected\": ariaAttr(itemState.highlighted),\n        \"aria-disabled\": ariaAttr(itemState.disabled),\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-value\": itemState.value,\n        onPointerMove() {\n          if (itemState.disabled) return;\n          if (itemState.highlighted) return;\n          send({ type: \"ITEM.POINTER_MOVE\", value });\n        },\n        onPointerLeave() {\n          if (props2.persistFocus) return;\n          if (itemState.disabled) return;\n          const prev = event.previous();\n          const mouseMoved = prev?.type.includes(\"POINTER\");\n          if (!mouseMoved) return;\n          send({ type: \"ITEM.POINTER_LEAVE\", value });\n        },\n        onClick(event2) {\n          if (isDownloadingEvent(event2)) return;\n          if (isOpeningInNewTab(event2)) return;\n          if (isContextMenuEvent(event2)) return;\n          if (itemState.disabled) return;\n          send({ type: \"ITEM.CLICK\", src: \"item-select\", value });\n        }\n      });\n    },\n    getItemTextProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        ...parts.itemText.attrs,\n        dir: prop(\"dir\"),\n        \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-highlighted\": dataAttr(itemState.highlighted)\n      });\n    },\n    getItemIndicatorProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        \"aria-hidden\": true,\n        ...parts.itemIndicator.attrs,\n        dir: prop(\"dir\"),\n        \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n        hidden: !itemState.selected\n      });\n    },\n    getItemGroupProps(props2) {\n      const { id } = props2;\n      return normalize.element({\n        ...parts.itemGroup.attrs,\n        dir: prop(\"dir\"),\n        id: getItemGroupId(scope, id),\n        \"aria-labelledby\": getItemGroupLabelId(scope, id),\n        \"data-empty\": dataAttr(collection2.size === 0),\n        role: \"group\"\n      });\n    },\n    getItemGroupLabelProps(props2) {\n      const { htmlFor } = props2;\n      return normalize.element({\n        ...parts.itemGroupLabel.attrs,\n        dir: prop(\"dir\"),\n        id: getItemGroupLabelId(scope, htmlFor),\n        role: \"presentation\"\n      });\n    }\n  };\n}\nvar { guards, createMachine, choose } = setup();\nvar { and, not } = guards;\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      loopFocus: true,\n      openOnClick: false,\n      defaultValue: [],\n      defaultInputValue: \"\",\n      closeOnSelect: !props2.multiple,\n      allowCustomValue: false,\n      alwaysSubmitOnEnter: false,\n      inputBehavior: \"none\",\n      selectionBehavior: props2.multiple ? \"clear\" : \"replace\",\n      openOnKeyPress: true,\n      openOnChange: true,\n      composite: true,\n      navigate({ node }) {\n        clickIfLink(node);\n      },\n      collection: collection.empty(),\n      ...props2,\n      positioning: {\n        placement: \"bottom\",\n        sameWidth: true,\n        ...props2.positioning\n      },\n      translations: {\n        triggerLabel: \"Toggle suggestions\",\n        clearTriggerLabel: \"Clear value\",\n        ...props2.translations\n      }\n    };\n  },\n  initialState({ prop }) {\n    const open = prop(\"open\") || prop(\"defaultOpen\");\n    return open ? \"suggesting\" : \"idle\";\n  },\n  context({ prop, bindable, getContext, getEvent }) {\n    return {\n      currentPlacement: bindable(() => ({\n        defaultValue: void 0\n      })),\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        isEqual,\n        hash(value) {\n          return value.join(\",\");\n        },\n        onChange(value) {\n          const context = getContext();\n          const prevSelectedItems = context.get(\"selectedItems\");\n          const collection2 = prop(\"collection\");\n          const nextItems = value.map((v) => {\n            const item = prevSelectedItems.find((item2) => collection2.getItemValue(item2) === v);\n            return item || collection2.find(v);\n          });\n          context.set(\"selectedItems\", nextItems);\n          prop(\"onValueChange\")?.({ value, items: nextItems });\n        }\n      })),\n      highlightedValue: bindable(() => ({\n        defaultValue: prop(\"defaultHighlightedValue\") || null,\n        value: prop(\"highlightedValue\"),\n        onChange(value) {\n          const item = prop(\"collection\").find(value);\n          prop(\"onHighlightChange\")?.({ highlightedValue: value, highlightedItem: item });\n        }\n      })),\n      inputValue: bindable(() => {\n        let inputValue = prop(\"inputValue\") || prop(\"defaultInputValue\");\n        const value = prop(\"value\") || prop(\"defaultValue\");\n        if (!inputValue.trim() && !prop(\"multiple\")) {\n          const valueAsString = prop(\"collection\").stringifyMany(value);\n          inputValue = match(prop(\"selectionBehavior\"), {\n            preserve: inputValue || valueAsString,\n            replace: valueAsString,\n            clear: \"\"\n          });\n        }\n        return {\n          defaultValue: inputValue,\n          value: prop(\"inputValue\"),\n          onChange(value2) {\n            const event = getEvent();\n            const reason = (event.previousEvent || event).src;\n            prop(\"onInputValueChange\")?.({ inputValue: value2, reason });\n          }\n        };\n      }),\n      highlightedItem: bindable(() => {\n        const highlightedValue = prop(\"highlightedValue\");\n        const highlightedItem = prop(\"collection\").find(highlightedValue);\n        return { defaultValue: highlightedItem };\n      }),\n      selectedItems: bindable(() => {\n        const value = prop(\"value\") || prop(\"defaultValue\") || [];\n        const selectedItems = prop(\"collection\").findMany(value);\n        return { defaultValue: selectedItems };\n      })\n    };\n  },\n  computed: {\n    isInputValueEmpty: ({ context }) => context.get(\"inputValue\").length === 0,\n    isInteractive: ({ prop }) => !(prop(\"readOnly\") || prop(\"disabled\")),\n    autoComplete: ({ prop }) => prop(\"inputBehavior\") === \"autocomplete\",\n    autoHighlight: ({ prop }) => prop(\"inputBehavior\") === \"autohighlight\",\n    hasSelectedItems: ({ context }) => context.get(\"value\").length > 0,\n    valueAsString: ({ context, prop }) => prop(\"collection\").stringifyItems(context.get(\"selectedItems\")),\n    isCustomValue: ({ context, computed }) => context.get(\"inputValue\") !== computed(\"valueAsString\")\n  },\n  watch({ context, prop, track, action, send }) {\n    track([() => context.hash(\"value\")], () => {\n      action([\"syncSelectedItems\"]);\n    });\n    track([() => context.get(\"inputValue\")], () => {\n      action([\"syncInputValue\"]);\n    });\n    track([() => context.get(\"highlightedValue\")], () => {\n      action([\"syncHighlightedItem\", \"autofillInputValue\"]);\n    });\n    track([() => prop(\"open\")], () => {\n      action([\"toggleVisibility\"]);\n    });\n    track([() => prop(\"collection\").toString()], () => {\n      send({ type: \"CHILDREN_CHANGE\" });\n    });\n  },\n  on: {\n    \"SELECTED_ITEMS.SYNC\": {\n      actions: [\"syncSelectedItems\"]\n    },\n    \"HIGHLIGHTED_VALUE.SET\": {\n      actions: [\"setHighlightedValue\"]\n    },\n    \"HIGHLIGHTED_VALUE.CLEAR\": {\n      actions: [\"clearHighlightedValue\"]\n    },\n    \"ITEM.SELECT\": {\n      actions: [\"selectItem\"]\n    },\n    \"ITEM.CLEAR\": {\n      actions: [\"clearItem\"]\n    },\n    \"VALUE.SET\": {\n      actions: [\"setValue\"]\n    },\n    \"INPUT_VALUE.SET\": {\n      actions: [\"setInputValue\"]\n    },\n    \"POSITIONING.SET\": {\n      actions: [\"reposition\"]\n    }\n  },\n  entry: choose([\n    {\n      guard: \"autoFocus\",\n      actions: [\"setInitialFocus\"]\n    }\n  ]),\n  states: {\n    idle: {\n      tags: [\"idle\", \"closed\"],\n      entry: [\"scrollContentToTop\", \"clearHighlightedValue\"],\n      on: {\n        \"CONTROLLED.OPEN\": {\n          target: \"interacting\"\n        },\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n          },\n          {\n            target: \"interacting\",\n            actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n          }\n        ],\n        \"INPUT.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n          },\n          {\n            target: \"interacting\",\n            actions: [\"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n          }\n        ],\n        \"INPUT.FOCUS\": {\n          target: \"focused\"\n        },\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"interacting\",\n            actions: [\"invokeOnOpen\"]\n          }\n        ],\n        \"VALUE.CLEAR\": {\n          target: \"focused\",\n          actions: [\"clearInputValue\", \"clearSelectedItems\", \"setInitialFocus\"]\n        }\n      }\n    },\n    focused: {\n      tags: [\"focused\", \"closed\"],\n      entry: [\"scrollContentToTop\", \"clearHighlightedValue\"],\n      on: {\n        \"CONTROLLED.OPEN\": [\n          {\n            guard: \"isChangeEvent\",\n            target: \"suggesting\"\n          },\n          {\n            target: \"interacting\"\n          }\n        ],\n        \"INPUT.CHANGE\": [\n          {\n            guard: and(\"isOpenControlled\", \"openOnChange\"),\n            actions: [\"setInputValue\", \"invokeOnOpen\", \"highlightFirstItemIfNeeded\"]\n          },\n          {\n            guard: \"openOnChange\",\n            target: \"suggesting\",\n            actions: [\"setInputValue\", \"invokeOnOpen\", \"highlightFirstItemIfNeeded\"]\n          },\n          {\n            actions: [\"setInputValue\"]\n          }\n        ],\n        \"LAYER.INTERACT_OUTSIDE\": {\n          target: \"idle\"\n        },\n        \"INPUT.ESCAPE\": {\n          guard: and(\"isCustomValue\", not(\"allowCustomValue\")),\n          actions: [\"revertInputValue\"]\n        },\n        \"INPUT.BLUR\": {\n          target: \"idle\"\n        },\n        \"INPUT.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n          },\n          {\n            target: \"interacting\",\n            actions: [\"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n          },\n          {\n            target: \"interacting\",\n            actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n          }\n        ],\n        \"INPUT.ARROW_DOWN\": [\n          // == group 1 ==\n          {\n            guard: and(\"isOpenControlled\", \"autoComplete\"),\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            guard: \"autoComplete\",\n            target: \"interacting\",\n            actions: [\"invokeOnOpen\"]\n          },\n          // == group 2 ==\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"highlightFirstOrSelectedItem\", \"invokeOnOpen\"]\n          },\n          {\n            target: \"interacting\",\n            actions: [\"highlightFirstOrSelectedItem\", \"invokeOnOpen\"]\n          }\n        ],\n        \"INPUT.ARROW_UP\": [\n          // == group 1 ==\n          {\n            guard: \"autoComplete\",\n            target: \"interacting\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            guard: \"autoComplete\",\n            target: \"interacting\",\n            actions: [\"invokeOnOpen\"]\n          },\n          // == group 2 ==\n          {\n            target: \"interacting\",\n            actions: [\"highlightLastOrSelectedItem\", \"invokeOnOpen\"]\n          },\n          {\n            target: \"interacting\",\n            actions: [\"highlightLastOrSelectedItem\", \"invokeOnOpen\"]\n          }\n        ],\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"interacting\",\n            actions: [\"invokeOnOpen\"]\n          }\n        ],\n        \"VALUE.CLEAR\": {\n          actions: [\"clearInputValue\", \"clearSelectedItems\"]\n        }\n      }\n    },\n    interacting: {\n      tags: [\"open\", \"focused\"],\n      entry: [\"setInitialFocus\"],\n      effects: [\"scrollToHighlightedItem\", \"trackDismissableLayer\", \"trackPlacement\"],\n      on: {\n        \"CONTROLLED.CLOSE\": [\n          {\n            guard: \"restoreFocus\",\n            target: \"focused\",\n            actions: [\"setFinalFocus\"]\n          },\n          {\n            target: \"idle\"\n          }\n        ],\n        CHILDREN_CHANGE: [\n          {\n            guard: \"isHighlightedItemRemoved\",\n            actions: [\"clearHighlightedValue\"]\n          },\n          {\n            actions: [\"scrollToHighlightedItem\"]\n          }\n        ],\n        \"INPUT.HOME\": {\n          actions: [\"highlightFirstItem\"]\n        },\n        \"INPUT.END\": {\n          actions: [\"highlightLastItem\"]\n        },\n        \"INPUT.ARROW_DOWN\": [\n          {\n            guard: and(\"autoComplete\", \"isLastItemHighlighted\"),\n            actions: [\"clearHighlightedValue\", \"scrollContentToTop\"]\n          },\n          {\n            actions: [\"highlightNextItem\"]\n          }\n        ],\n        \"INPUT.ARROW_UP\": [\n          {\n            guard: and(\"autoComplete\", \"isFirstItemHighlighted\"),\n            actions: [\"clearHighlightedValue\"]\n          },\n          {\n            actions: [\"highlightPrevItem\"]\n          }\n        ],\n        \"INPUT.ENTER\": [\n          // == group 1 ==\n          {\n            guard: and(\"isOpenControlled\", \"isCustomValue\", not(\"hasHighlightedItem\"), not(\"allowCustomValue\")),\n            actions: [\"revertInputValue\", \"invokeOnClose\"]\n          },\n          {\n            guard: and(\"isCustomValue\", not(\"hasHighlightedItem\"), not(\"allowCustomValue\")),\n            target: \"focused\",\n            actions: [\"revertInputValue\", \"invokeOnClose\"]\n          },\n          // == group 2 ==\n          {\n            guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n            actions: [\"selectHighlightedItem\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"closeOnSelect\",\n            target: \"focused\",\n            actions: [\"selectHighlightedItem\", \"invokeOnClose\", \"setFinalFocus\"]\n          },\n          {\n            actions: [\"selectHighlightedItem\"]\n          }\n        ],\n        \"INPUT.CHANGE\": [\n          {\n            guard: \"autoComplete\",\n            target: \"suggesting\",\n            actions: [\"setInputValue\"]\n          },\n          {\n            target: \"suggesting\",\n            actions: [\"clearHighlightedValue\", \"setInputValue\"]\n          }\n        ],\n        \"ITEM.POINTER_MOVE\": {\n          actions: [\"setHighlightedValue\"]\n        },\n        \"ITEM.POINTER_LEAVE\": {\n          actions: [\"clearHighlightedValue\"]\n        },\n        \"ITEM.CLICK\": [\n          {\n            guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n            actions: [\"selectItem\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"closeOnSelect\",\n            target: \"focused\",\n            actions: [\"selectItem\", \"invokeOnClose\", \"setFinalFocus\"]\n          },\n          {\n            actions: [\"selectItem\"]\n          }\n        ],\n        \"LAYER.ESCAPE\": [\n          {\n            guard: and(\"isOpenControlled\", \"autoComplete\"),\n            actions: [\"syncInputValue\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"autoComplete\",\n            target: \"focused\",\n            actions: [\"syncInputValue\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"invokeOnClose\", \"setFinalFocus\"]\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        \"LAYER.INTERACT_OUTSIDE\": [\n          // == group 1 ==\n          {\n            guard: and(\"isOpenControlled\", \"isCustomValue\", not(\"allowCustomValue\")),\n            actions: [\"revertInputValue\", \"invokeOnClose\"]\n          },\n          {\n            guard: and(\"isCustomValue\", not(\"allowCustomValue\")),\n            target: \"idle\",\n            actions: [\"revertInputValue\", \"invokeOnClose\"]\n          },\n          // == group 2 ==\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        CLOSE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"invokeOnClose\", \"setFinalFocus\"]\n          }\n        ],\n        \"VALUE.CLEAR\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"clearInputValue\", \"clearSelectedItems\", \"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"clearInputValue\", \"clearSelectedItems\", \"invokeOnClose\", \"setFinalFocus\"]\n          }\n        ]\n      }\n    },\n    suggesting: {\n      tags: [\"open\", \"focused\"],\n      effects: [\"trackDismissableLayer\", \"scrollToHighlightedItem\", \"trackPlacement\"],\n      entry: [\"setInitialFocus\"],\n      on: {\n        \"CONTROLLED.CLOSE\": [\n          {\n            guard: \"restoreFocus\",\n            target: \"focused\",\n            actions: [\"setFinalFocus\"]\n          },\n          {\n            target: \"idle\"\n          }\n        ],\n        CHILDREN_CHANGE: [\n          {\n            guard: and(\"isHighlightedItemRemoved\", \"hasCollectionItems\", \"autoHighlight\"),\n            actions: [\"clearHighlightedValue\", \"highlightFirstItem\"]\n          },\n          {\n            guard: \"isHighlightedItemRemoved\",\n            actions: [\"clearHighlightedValue\"]\n          },\n          {\n            guard: \"autoHighlight\",\n            actions: [\"highlightFirstItem\"]\n          }\n        ],\n        \"INPUT.ARROW_DOWN\": {\n          target: \"interacting\",\n          actions: [\"highlightNextItem\"]\n        },\n        \"INPUT.ARROW_UP\": {\n          target: \"interacting\",\n          actions: [\"highlightPrevItem\"]\n        },\n        \"INPUT.HOME\": {\n          target: \"interacting\",\n          actions: [\"highlightFirstItem\"]\n        },\n        \"INPUT.END\": {\n          target: \"interacting\",\n          actions: [\"highlightLastItem\"]\n        },\n        \"INPUT.ENTER\": [\n          // == group 1 ==\n          {\n            guard: and(\"isOpenControlled\", \"isCustomValue\", not(\"hasHighlightedItem\"), not(\"allowCustomValue\")),\n            actions: [\"revertInputValue\", \"invokeOnClose\"]\n          },\n          {\n            guard: and(\"isCustomValue\", not(\"hasHighlightedItem\"), not(\"allowCustomValue\")),\n            target: \"focused\",\n            actions: [\"revertInputValue\", \"invokeOnClose\"]\n          },\n          // == group 2 ==\n          {\n            guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n            actions: [\"selectHighlightedItem\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"closeOnSelect\",\n            target: \"focused\",\n            actions: [\"selectHighlightedItem\", \"invokeOnClose\", \"setFinalFocus\"]\n          },\n          {\n            actions: [\"selectHighlightedItem\"]\n          }\n        ],\n        \"INPUT.CHANGE\": {\n          actions: [\"setInputValue\"]\n        },\n        \"LAYER.ESCAPE\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        \"ITEM.POINTER_MOVE\": {\n          target: \"interacting\",\n          actions: [\"setHighlightedValue\"]\n        },\n        \"ITEM.POINTER_LEAVE\": {\n          actions: [\"clearHighlightedValue\"]\n        },\n        \"LAYER.INTERACT_OUTSIDE\": [\n          // == group 1 ==\n          {\n            guard: and(\"isOpenControlled\", \"isCustomValue\", not(\"allowCustomValue\")),\n            actions: [\"revertInputValue\", \"invokeOnClose\"]\n          },\n          {\n            guard: and(\"isCustomValue\", not(\"allowCustomValue\")),\n            target: \"idle\",\n            actions: [\"revertInputValue\", \"invokeOnClose\"]\n          },\n          // == group 2 ==\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        \"ITEM.CLICK\": [\n          {\n            guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n            actions: [\"selectItem\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"closeOnSelect\",\n            target: \"focused\",\n            actions: [\"selectItem\", \"invokeOnClose\", \"setFinalFocus\"]\n          },\n          {\n            actions: [\"selectItem\"]\n          }\n        ],\n        CLOSE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"invokeOnClose\", \"setFinalFocus\"]\n          }\n        ],\n        \"VALUE.CLEAR\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"clearInputValue\", \"clearSelectedItems\", \"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"clearInputValue\", \"clearSelectedItems\", \"invokeOnClose\", \"setFinalFocus\"]\n          }\n        ]\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      isInputValueEmpty: ({ computed }) => computed(\"isInputValueEmpty\"),\n      autoComplete: ({ computed, prop }) => computed(\"autoComplete\") && !prop(\"multiple\"),\n      autoHighlight: ({ computed }) => computed(\"autoHighlight\"),\n      isFirstItemHighlighted: ({ prop, context }) => prop(\"collection\").firstValue === context.get(\"highlightedValue\"),\n      isLastItemHighlighted: ({ prop, context }) => prop(\"collection\").lastValue === context.get(\"highlightedValue\"),\n      isCustomValue: ({ computed }) => computed(\"isCustomValue\"),\n      allowCustomValue: ({ prop }) => !!prop(\"allowCustomValue\"),\n      hasHighlightedItem: ({ context }) => context.get(\"highlightedValue\") != null,\n      closeOnSelect: ({ prop }) => !!prop(\"closeOnSelect\"),\n      isOpenControlled: ({ prop }) => prop(\"open\") != null,\n      openOnChange: ({ prop, context }) => {\n        const openOnChange = prop(\"openOnChange\");\n        if (isBoolean(openOnChange)) return openOnChange;\n        return !!openOnChange?.({ inputValue: context.get(\"inputValue\") });\n      },\n      restoreFocus: ({ event }) => {\n        const restoreFocus = event.restoreFocus ?? event.previousEvent?.restoreFocus;\n        return restoreFocus == null ? true : !!restoreFocus;\n      },\n      isChangeEvent: ({ event }) => event.previousEvent?.type === \"INPUT.CHANGE\",\n      autoFocus: ({ prop }) => !!prop(\"autoFocus\"),\n      isHighlightedItemRemoved: ({ prop, context }) => !prop(\"collection\").has(context.get(\"highlightedValue\")),\n      hasCollectionItems: ({ prop }) => prop(\"collection\").size > 0\n    },\n    effects: {\n      trackDismissableLayer({ send, prop, scope }) {\n        if (prop(\"disableLayer\")) return;\n        const contentEl = () => getContentEl(scope);\n        return trackDismissableElement(contentEl, {\n          type: \"listbox\",\n          defer: true,\n          exclude: () => [getInputEl(scope), getTriggerEl(scope), getClearTriggerEl(scope)],\n          onFocusOutside: prop(\"onFocusOutside\"),\n          onPointerDownOutside: prop(\"onPointerDownOutside\"),\n          onInteractOutside: prop(\"onInteractOutside\"),\n          onEscapeKeyDown(event) {\n            event.preventDefault();\n            event.stopPropagation();\n            send({ type: \"LAYER.ESCAPE\", src: \"escape-key\" });\n          },\n          onDismiss() {\n            send({ type: \"LAYER.INTERACT_OUTSIDE\", src: \"interact-outside\", restoreFocus: false });\n          }\n        });\n      },\n      trackPlacement({ context, prop, scope }) {\n        const anchorEl = () => getControlEl(scope) || getTriggerEl(scope);\n        const positionerEl = () => getPositionerEl(scope);\n        context.set(\"currentPlacement\", prop(\"positioning\").placement);\n        return getPlacement(anchorEl, positionerEl, {\n          ...prop(\"positioning\"),\n          defer: true,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      scrollToHighlightedItem({ context, prop, scope, event }) {\n        const inputEl = getInputEl(scope);\n        let cleanups = [];\n        const exec = (immediate) => {\n          const pointer = event.current().type.includes(\"POINTER\");\n          const highlightedValue = context.get(\"highlightedValue\");\n          if (pointer || !highlightedValue) return;\n          const contentEl = getContentEl(scope);\n          const scrollToIndexFn = prop(\"scrollToIndexFn\");\n          if (scrollToIndexFn) {\n            const highlightedIndex = prop(\"collection\").indexOf(highlightedValue);\n            scrollToIndexFn({\n              index: highlightedIndex,\n              immediate,\n              getElement: () => getItemEl(scope, highlightedValue)\n            });\n            return;\n          }\n          const itemEl = getItemEl(scope, highlightedValue);\n          const raf_cleanup = raf(() => {\n            scrollIntoView(itemEl, { rootEl: contentEl, block: \"nearest\" });\n          });\n          cleanups.push(raf_cleanup);\n        };\n        const rafCleanup = raf(() => exec(true));\n        cleanups.push(rafCleanup);\n        const observerCleanup = observeAttributes(inputEl, {\n          attributes: [\"aria-activedescendant\"],\n          callback: () => exec(false)\n        });\n        cleanups.push(observerCleanup);\n        return () => {\n          cleanups.forEach((cleanup) => cleanup());\n        };\n      }\n    },\n    actions: {\n      reposition({ context, prop, scope, event }) {\n        const controlEl = () => getControlEl(scope);\n        const positionerEl = () => getPositionerEl(scope);\n        getPlacement(controlEl, positionerEl, {\n          ...prop(\"positioning\"),\n          ...event.options,\n          defer: true,\n          listeners: false,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      setHighlightedValue({ context, event }) {\n        if (event.value == null) return;\n        context.set(\"highlightedValue\", event.value);\n      },\n      clearHighlightedValue({ context }) {\n        context.set(\"highlightedValue\", null);\n      },\n      selectHighlightedItem(params) {\n        const { context, prop } = params;\n        const collection2 = prop(\"collection\");\n        const highlightedValue = context.get(\"highlightedValue\");\n        if (!highlightedValue || !collection2.has(highlightedValue)) return;\n        const nextValue = prop(\"multiple\") ? addOrRemove(context.get(\"value\"), highlightedValue) : [highlightedValue];\n        prop(\"onSelect\")?.({ value: nextValue, itemValue: highlightedValue });\n        context.set(\"value\", nextValue);\n        const inputValue = match(prop(\"selectionBehavior\"), {\n          preserve: context.get(\"inputValue\"),\n          replace: collection2.stringifyMany(nextValue),\n          clear: \"\"\n        });\n        context.set(\"inputValue\", inputValue);\n      },\n      scrollToHighlightedItem({ context, prop, scope }) {\n        nextTick(() => {\n          const highlightedValue = context.get(\"highlightedValue\");\n          if (highlightedValue == null) return;\n          const itemEl = getItemEl(scope, highlightedValue);\n          const contentEl = getContentEl(scope);\n          const scrollToIndexFn = prop(\"scrollToIndexFn\");\n          if (scrollToIndexFn) {\n            const highlightedIndex = prop(\"collection\").indexOf(highlightedValue);\n            scrollToIndexFn({\n              index: highlightedIndex,\n              immediate: true,\n              getElement: () => getItemEl(scope, highlightedValue)\n            });\n            return;\n          }\n          scrollIntoView(itemEl, { rootEl: contentEl, block: \"nearest\" });\n        });\n      },\n      selectItem(params) {\n        const { context, event, flush, prop } = params;\n        if (event.value == null) return;\n        flush(() => {\n          const nextValue = prop(\"multiple\") ? addOrRemove(context.get(\"value\"), event.value) : [event.value];\n          prop(\"onSelect\")?.({ value: nextValue, itemValue: event.value });\n          context.set(\"value\", nextValue);\n          const inputValue = match(prop(\"selectionBehavior\"), {\n            preserve: context.get(\"inputValue\"),\n            replace: prop(\"collection\").stringifyMany(nextValue),\n            clear: \"\"\n          });\n          context.set(\"inputValue\", inputValue);\n        });\n      },\n      clearItem(params) {\n        const { context, event, flush, prop } = params;\n        if (event.value == null) return;\n        flush(() => {\n          const nextValue = remove(context.get(\"value\"), event.value);\n          context.set(\"value\", nextValue);\n          const inputValue = match(prop(\"selectionBehavior\"), {\n            preserve: context.get(\"inputValue\"),\n            replace: prop(\"collection\").stringifyMany(nextValue),\n            clear: \"\"\n          });\n          context.set(\"inputValue\", inputValue);\n        });\n      },\n      setInitialFocus({ scope }) {\n        raf(() => {\n          focusInputEl(scope);\n        });\n      },\n      setFinalFocus({ scope }) {\n        raf(() => {\n          const triggerEl = getTriggerEl(scope);\n          if (triggerEl?.dataset.focusable == null) {\n            focusInputEl(scope);\n          } else {\n            focusTriggerEl(scope);\n          }\n        });\n      },\n      syncInputValue({ context, scope, event }) {\n        const inputEl = getInputEl(scope);\n        if (!inputEl) return;\n        inputEl.value = context.get(\"inputValue\");\n        queueMicrotask(() => {\n          if (event.current().type === \"INPUT.CHANGE\") return;\n          setCaretToEnd(inputEl);\n        });\n      },\n      setInputValue({ context, event }) {\n        context.set(\"inputValue\", event.value);\n      },\n      clearInputValue({ context }) {\n        context.set(\"inputValue\", \"\");\n      },\n      revertInputValue({ context, prop, computed }) {\n        const selectionBehavior = prop(\"selectionBehavior\");\n        const inputValue = match(selectionBehavior, {\n          replace: computed(\"hasSelectedItems\") ? computed(\"valueAsString\") : \"\",\n          preserve: context.get(\"inputValue\"),\n          clear: \"\"\n        });\n        context.set(\"inputValue\", inputValue);\n      },\n      setValue(params) {\n        const { context, flush, event, prop } = params;\n        flush(() => {\n          context.set(\"value\", event.value);\n          const inputValue = match(prop(\"selectionBehavior\"), {\n            preserve: context.get(\"inputValue\"),\n            replace: prop(\"collection\").stringifyMany(event.value),\n            clear: \"\"\n          });\n          context.set(\"inputValue\", inputValue);\n        });\n      },\n      clearSelectedItems(params) {\n        const { context, flush, prop } = params;\n        flush(() => {\n          context.set(\"value\", []);\n          const inputValue = match(prop(\"selectionBehavior\"), {\n            preserve: context.get(\"inputValue\"),\n            replace: prop(\"collection\").stringifyMany([]),\n            clear: \"\"\n          });\n          context.set(\"inputValue\", inputValue);\n        });\n      },\n      scrollContentToTop({ prop, scope }) {\n        const scrollToIndexFn = prop(\"scrollToIndexFn\");\n        if (scrollToIndexFn) {\n          const firstValue = prop(\"collection\").firstValue;\n          scrollToIndexFn({\n            index: 0,\n            immediate: true,\n            getElement: () => getItemEl(scope, firstValue)\n          });\n        } else {\n          const contentEl = getContentEl(scope);\n          if (!contentEl) return;\n          contentEl.scrollTop = 0;\n        }\n      },\n      invokeOnOpen({ prop, event, context }) {\n        const reason = getOpenChangeReason(event);\n        prop(\"onOpenChange\")?.({ open: true, reason, value: context.get(\"value\") });\n      },\n      invokeOnClose({ prop, event, context }) {\n        const reason = getOpenChangeReason(event);\n        prop(\"onOpenChange\")?.({ open: false, reason, value: context.get(\"value\") });\n      },\n      highlightFirstItem({ context, prop, scope }) {\n        const exec = getContentEl(scope) ? queueMicrotask : raf;\n        exec(() => {\n          const value = prop(\"collection\").firstValue;\n          if (value) context.set(\"highlightedValue\", value);\n        });\n      },\n      highlightFirstItemIfNeeded({ computed, action }) {\n        if (!computed(\"autoHighlight\")) return;\n        action([\"highlightFirstItem\"]);\n      },\n      highlightLastItem({ context, prop, scope }) {\n        const exec = getContentEl(scope) ? queueMicrotask : raf;\n        exec(() => {\n          const value = prop(\"collection\").lastValue;\n          if (value) context.set(\"highlightedValue\", value);\n        });\n      },\n      highlightNextItem({ context, prop }) {\n        let value = null;\n        const highlightedValue = context.get(\"highlightedValue\");\n        const collection2 = prop(\"collection\");\n        if (highlightedValue) {\n          value = collection2.getNextValue(highlightedValue);\n          if (!value && prop(\"loopFocus\")) value = collection2.firstValue;\n        } else {\n          value = collection2.firstValue;\n        }\n        if (value) context.set(\"highlightedValue\", value);\n      },\n      highlightPrevItem({ context, prop }) {\n        let value = null;\n        const highlightedValue = context.get(\"highlightedValue\");\n        const collection2 = prop(\"collection\");\n        if (highlightedValue) {\n          value = collection2.getPreviousValue(highlightedValue);\n          if (!value && prop(\"loopFocus\")) value = collection2.lastValue;\n        } else {\n          value = collection2.lastValue;\n        }\n        if (value) context.set(\"highlightedValue\", value);\n      },\n      highlightFirstSelectedItem({ context, prop }) {\n        raf(() => {\n          const [value] = prop(\"collection\").sort(context.get(\"value\"));\n          if (value) context.set(\"highlightedValue\", value);\n        });\n      },\n      highlightFirstOrSelectedItem({ context, prop, computed }) {\n        raf(() => {\n          let value = null;\n          if (computed(\"hasSelectedItems\")) {\n            value = prop(\"collection\").sort(context.get(\"value\"))[0];\n          } else {\n            value = prop(\"collection\").firstValue;\n          }\n          if (value) context.set(\"highlightedValue\", value);\n        });\n      },\n      highlightLastOrSelectedItem({ context, prop, computed }) {\n        raf(() => {\n          const collection2 = prop(\"collection\");\n          let value = null;\n          if (computed(\"hasSelectedItems\")) {\n            value = collection2.sort(context.get(\"value\"))[0];\n          } else {\n            value = collection2.lastValue;\n          }\n          if (value) context.set(\"highlightedValue\", value);\n        });\n      },\n      autofillInputValue({ context, computed, prop, event, scope }) {\n        const inputEl = getInputEl(scope);\n        const collection2 = prop(\"collection\");\n        if (!computed(\"autoComplete\") || !inputEl || !event.keypress) return;\n        const valueText = collection2.stringify(context.get(\"highlightedValue\"));\n        raf(() => {\n          inputEl.value = valueText || context.get(\"inputValue\");\n        });\n      },\n      syncSelectedItems(params) {\n        queueMicrotask(() => {\n          const { context, prop } = params;\n          const collection2 = prop(\"collection\");\n          const value = context.get(\"value\");\n          const selectedItems = value.map((v) => {\n            const item = context.get(\"selectedItems\").find((item2) => collection2.getItemValue(item2) === v);\n            return item || collection2.find(v);\n          });\n          context.set(\"selectedItems\", selectedItems);\n          const inputValue = match(prop(\"selectionBehavior\"), {\n            preserve: context.get(\"inputValue\"),\n            replace: collection2.stringifyMany(value),\n            clear: \"\"\n          });\n          context.set(\"inputValue\", inputValue);\n        });\n      },\n      syncHighlightedItem({ context, prop }) {\n        const item = prop(\"collection\").find(context.get(\"highlightedValue\"));\n        context.set(\"highlightedItem\", item);\n      },\n      toggleVisibility({ event, send, prop }) {\n        send({ type: prop(\"open\") ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\", previousEvent: event });\n      }\n    }\n  }\n});\nfunction getOpenChangeReason(event) {\n  return (event.previousEvent || event).src;\n}\nvar props = createProps()([\n  \"allowCustomValue\",\n  \"autoFocus\",\n  \"closeOnSelect\",\n  \"collection\",\n  \"composite\",\n  \"defaultHighlightedValue\",\n  \"defaultInputValue\",\n  \"defaultOpen\",\n  \"defaultValue\",\n  \"dir\",\n  \"disabled\",\n  \"disableLayer\",\n  \"form\",\n  \"getRootNode\",\n  \"highlightedValue\",\n  \"id\",\n  \"ids\",\n  \"inputBehavior\",\n  \"inputValue\",\n  \"invalid\",\n  \"loopFocus\",\n  \"multiple\",\n  \"name\",\n  \"navigate\",\n  \"onFocusOutside\",\n  \"onHighlightChange\",\n  \"onInputValueChange\",\n  \"onInteractOutside\",\n  \"onOpenChange\",\n  \"onOpenChange\",\n  \"onPointerDownOutside\",\n  \"onSelect\",\n  \"onValueChange\",\n  \"open\",\n  \"openOnChange\",\n  \"openOnClick\",\n  \"openOnKeyPress\",\n  \"placeholder\",\n  \"positioning\",\n  \"readOnly\",\n  \"required\",\n  \"scrollToIndexFn\",\n  \"selectionBehavior\",\n  \"translations\",\n  \"value\",\n  \"alwaysSubmitOnEnter\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemGroupLabelProps = createProps()([\"htmlFor\"]);\nvar splitItemGroupLabelProps = createSplitProps(itemGroupLabelProps);\nvar itemGroupProps = createProps()([\"id\"]);\nvar splitItemGroupProps = createSplitProps(itemGroupProps);\nvar itemProps = createProps()([\"item\", \"persistFocus\"]);\nvar splitItemProps = createSplitProps(itemProps);\n\nexport { anatomy, collection, connect, itemGroupLabelProps, itemGroupProps, itemProps, machine, props, splitItemGroupLabelProps, splitItemGroupProps, splitItemProps, splitProps };\n", "import * as combobox from \"@zag-js/combobox\";\nimport { collection } from \"@zag-js/combobox\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport { Component } from \"../lib/core\";\nimport { OpenChangeDetails, InputValueChangeDetails } from \"@zag-js/combobox\";\n\nexport class Combobox extends Component<combobox.Props, combobox.Api> {\n  options: any[] = [];\n  allOptions: any[] = [];\n  hasGroups: boolean = false;\n\n  setAllOptions(options: any[]) {\n    this.allOptions = options;\n    this.options = options;\n  }\n\n  private getCollection() {\n    const items = this.options || this.allOptions || [];\n    \n    if (this.hasGroups) {\n      return collection({\n        items: items,\n        itemToValue: (item: any) => item.id,\n        itemToString: (item: any) => item.label,\n        isItemDisabled: (item: any) => item.disabled,\n        groupBy: (item: any) => item.group,\n      });\n    }\n\n    return collection({\n      items: items,\n      itemToValue: (item: any) => item.id,\n      itemToString: (item: any) => item.label,\n      isItemDisabled: (item: any) => item.disabled,\n    });\n  }\n\n  initMachine(props: combobox.Props): VanillaMachine<any> {\n    const self = this;\n    \n    return new VanillaMachine(combobox.machine, {\n      ...props,\n      get collection() {\n        return self.getCollection();\n      },\n      onOpenChange: (details: OpenChangeDetails) => {\n        if (details.open) {\n          self.options = self.allOptions;\n        }\n        if (props.onOpenChange) {\n          props.onOpenChange(details);\n        }\n      },\n      onInputValueChange: (details: InputValueChangeDetails) => {\n        const filtered = self.allOptions.filter((item: any) =>\n          item.label.toLowerCase().includes(details.inputValue.toLowerCase())\n        );\n        self.options = filtered.length > 0 ? filtered : self.allOptions;\n        \n        if (props.onInputValueChange) {\n          props.onInputValueChange(details);\n        }\n      },\n    });\n  }\n\n  initApi(): combobox.Api {\n    return combobox.connect(this.machine.service, normalizeProps);\n  }\n\n  renderItems(): void {\n    const contentEl = this.el.querySelector<HTMLElement>('[data-scope=\"combobox\"][data-part=\"content\"]');\n    if (!contentEl) return;\n\n    const templatesContainer =\n      this.el.querySelector<HTMLElement>('[data-templates=\"combobox\"]');\n    if (!templatesContainer) return;\n\n    contentEl\n      .querySelectorAll('[data-scope=\"combobox\"][data-part=\"item\"]:not([data-template])')\n      .forEach(el => el.remove());\n\n    contentEl\n      .querySelectorAll('[data-scope=\"combobox\"][data-part=\"item-group\"]:not([data-template])')\n      .forEach(el => el.remove());\n\n    const items = this.api.collection.items;\n\n    const groups = this.api.collection.group?.() ?? [];\n    const hasGroupsInCollection = groups.some(([group]) => group != null);\n\n    if (hasGroupsInCollection) {\n      this.renderGroupedItems(contentEl, templatesContainer, groups);\n    } else {\n      this.renderFlatItems(contentEl, templatesContainer, items);\n    }\n  }\n\n  renderGroupedItems(\n    contentEl: HTMLElement,\n    templatesContainer: HTMLElement,\n    groups: [string | null, any[]][]\n  ): void {\n    for (const [groupId, groupItems] of groups) {\n      if (groupId == null) continue;\n  \n      const groupTemplate = templatesContainer.querySelector<HTMLElement>(\n        `[data-scope=\"combobox\"][data-part=\"item-group\"][data-id=\"${groupId}\"][data-template]`\n      );\n      if (!groupTemplate) continue;\n  \n      const groupEl = groupTemplate.cloneNode(true) as HTMLElement;\n      groupEl.removeAttribute(\"data-template\");\n  \n      this.spreadProps(groupEl, this.api.getItemGroupProps({ id: groupId }));\n  \n      const labelEl = groupEl.querySelector<HTMLElement>(\n        '[data-scope=\"combobox\"][data-part=\"item-group-label\"]'\n      );\n      if (labelEl) {\n        this.spreadProps(\n          labelEl,\n          this.api.getItemGroupLabelProps({ htmlFor: groupId })\n        );\n      }\n  \n      const groupContentEl = groupEl.querySelector<HTMLElement>(\n        '[data-scope=\"combobox\"][data-part=\"item-group-content\"]'\n      );\n      if (!groupContentEl) continue;\n\n      groupContentEl.innerHTML = \"\";\n\n      for (const item of groupItems) {\n        const itemEl = this.cloneItem(templatesContainer, item);\n        if (itemEl) groupContentEl.appendChild(itemEl);\n      }\n  \n      contentEl.appendChild(groupEl);\n    }\n  }\n  \n\n  renderFlatItems(\n    contentEl: HTMLElement,\n    templatesContainer: HTMLElement,\n    items: any[]\n  ): void {\n    for (const item of items) {\n      const itemEl = this.cloneItem(templatesContainer, item);\n      if (itemEl) contentEl.appendChild(itemEl);\n    }\n  }\n\n  cloneItem(\n    templatesContainer: HTMLElement,\n    item: any\n  ): HTMLElement | null {\n    const value = this.api.collection.getItemValue(item);\n\n    // Find template by data-value (templates are rendered per item in Elixir when custom slots are used)\n    const template = templatesContainer.querySelector<HTMLElement>(\n      `[data-scope=\"combobox\"][data-part=\"item\"][data-value=\"${value}\"][data-template]`\n    );\n    if (!template) return null;\n\n    const el = template.cloneNode(true) as HTMLElement;\n    el.removeAttribute(\"data-template\");\n\n    this.spreadProps(el, this.api.getItemProps({ item }));\n\n    const textEl = el.querySelector<HTMLElement>('[data-scope=\"combobox\"][data-part=\"item-text\"]');\n    if (textEl) {\n      this.spreadProps(textEl, this.api.getItemTextProps({ item }));\n      // Only set textContent if there are no child elements (custom HTML slots preserve their structure)\n      if (textEl.children.length === 0) {\n        textEl.textContent = item.label || \"\";\n      }\n    }\n\n    const indicatorEl =\n      el.querySelector<HTMLElement>('[data-scope=\"combobox\"][data-part=\"item-indicator\"]');\n    if (indicatorEl) {\n      this.spreadProps(\n        indicatorEl,\n        this.api.getItemIndicatorProps({ item })\n      );\n    }\n\n    return el;\n  }\n\n  render(): void {\n    const root =\n      this.el.querySelector<HTMLElement>('[data-scope=\"combobox\"][data-part=\"root\"]');\n    if (!root) return;\n    this.spreadProps(root, this.api.getRootProps());\n\n    [\n      \"label\",\n      \"control\",\n      \"input\",\n      \"trigger\",\n      \"clear-trigger\",\n      \"positioner\",\n    ].forEach(part => {\n      const el = this.el.querySelector<HTMLElement>(`[data-scope=\"combobox\"][data-part=\"${part}\"]`);\n      if (!el) return;\n\n      const apiMethod =\n        \"get\" +\n        part\n          .split(\"-\")\n          .map(s => s[0].toUpperCase() + s.slice(1))\n          .join(\"\") +\n        \"Props\";\n\n      // @ts-expect-error dynamic\n      this.spreadProps(el, this.api[apiMethod]());\n    });\n\n    const contentEl =\n      this.el.querySelector<HTMLElement>('[data-scope=\"combobox\"][data-part=\"content\"]');\n    if (contentEl) {\n      this.spreadProps(contentEl, this.api.getContentProps());\n      this.renderItems();\n    }\n  }\n}", "import type { Hook } from \"phoenix_live_view\";\nimport type { HookInterface, CallbackRef } from \"phoenix_live_view/assets/js/types/view_hook\";\nimport { Combobox } from \"../components/combobox\";\nimport type { Props, InputValueChangeDetails, OpenChangeDetails, ValueChangeDetails, PositioningOptions } from \"@zag-js/combobox\";\nimport type { Direction } from \"@zag-js/types\";\n\nimport { getString, getBoolean, getStringList } from \"../lib/util\";\n\ntype ComboboxHookState = {\n  combobox?: Combobox;\n  handlers?: Array<CallbackRef>;\n};\n\nfunction snakeToCamel(str: string): string {\n  return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n\nfunction transformPositioningOptions(obj: any): PositioningOptions {\n  const result: any = {};\n  for (const [key, value] of Object.entries(obj)) {\n    const camelKey = snakeToCamel(key);\n    result[camelKey] = value;\n  }\n  return result as PositioningOptions;\n}\n\nconst ComboboxHook: Hook<object & ComboboxHookState, HTMLElement> = {\n  mounted(this: object & HookInterface<HTMLElement> & ComboboxHookState) {\n    const el = this.el;\n    const pushEvent = this.pushEvent.bind(this);\n\n    const allItems = JSON.parse(el.dataset.collection || \"[]\");\n    const hasGroups = allItems.some((item: any) => item.group !== undefined);\n\n    const props: Props = {\n      id: el.id,\n      ...(getBoolean(el, \"controlled\")\n        ? { value: getStringList(el, \"value\") }\n        : { defaultValue: getStringList(el, \"defaultValue\") }),\n      disabled: getBoolean(el, \"disabled\"),\n      placeholder: getString(el, \"placeholder\"),\n      alwaysSubmitOnEnter: getBoolean(el, \"alwaysSubmitOnEnter\"),\n      autoFocus: getBoolean(el, \"autoFocus\"),\n      closeOnSelect: getBoolean(el, \"closeOnSelect\"),\n      dir: getString<Direction>(el, \"dir\", [\"ltr\", \"rtl\"]),\n      inputBehavior: getString(el, \"inputBehavior\", [\"autohighlight\", \"autocomplete\", \"none\"]),\n      loopFocus: getBoolean(el, \"loopFocus\"),\n      multiple: getBoolean(el, \"multiple\"),\n      invalid: getBoolean(el, \"invalid\"),\n      allowCustomValue: false,\n      selectionBehavior: \"replace\",\n      name: getString(el, \"name\"),\n      form: getString(el, \"form\"),\n      readOnly: getBoolean(el, \"readOnly\"),\n      required: getBoolean(el, \"required\"),\n      positioning: (() => {\n        const positioningJson = el.dataset.positioning;\n        if (positioningJson) {\n          try {\n            const parsed = JSON.parse(positioningJson);\n            return transformPositioningOptions(parsed);\n          } catch {\n            return undefined;\n          }\n        }\n        return undefined;\n      })(),\n      onOpenChange: (details: OpenChangeDetails) => {\n        const eventName = getString(el, \"onOpenChange\");\n        if (eventName && !this.liveSocket.main.isDead && this.liveSocket.main.isConnected()) {\n          pushEvent(eventName, {\n            open: details.open,\n            reason: details.reason,\n            value: details.value,\n            id: el.id,\n          });\n        }\n\n        const eventNameClient = getString(el, \"onOpenChangeClient\");\n        if (eventNameClient) {\n          el.dispatchEvent(\n            new CustomEvent(eventNameClient, {\n              bubbles: getBoolean(el, \"bubble\"),\n              detail: {\n                open: details.open,\n                reason: details.reason,\n                value: details.value,\n                id: el.id,\n              },\n            })\n          );\n        }\n      },\n      onInputValueChange: (details: InputValueChangeDetails) => {\n    \n        const eventName = getString(el, \"onInputValueChange\");\n        if (eventName && !this.liveSocket.main.isDead && this.liveSocket.main.isConnected()) {\n          pushEvent(eventName, {\n            value: details.inputValue,\n            reason: details.reason,\n            id: el.id,\n          });\n        }\n\n        const eventNameClient = getString(el, \"onInputValueChangeClient\");\n        if (eventNameClient) {\n          el.dispatchEvent(\n            new CustomEvent(eventNameClient, {\n              bubbles: getBoolean(el, \"bubble\"),\n              detail: {\n                value: details.inputValue,\n                reason: details.reason,\n                id: el.id,\n              },\n            })\n          );\n        }\n      },\n      onValueChange: (details: ValueChangeDetails) => {\n      \n        const valueInput = el.querySelector<HTMLInputElement>(\n          '[data-scope=\"combobox\"][data-part=\"value-input\"]'\n        );\n        if (valueInput) {\n          const idValue = details.value.length === 0\n            ? \"\"\n            : details.value.length === 1\n              ? String(details.value[0])\n              : details.value.map(String).join(\",\");\n          valueInput.value = idValue;\n          \n          const formId = valueInput.getAttribute(\"form\");\n          let form: HTMLFormElement | null = null;\n          \n          if (formId) {\n            form = document.getElementById(formId) as HTMLFormElement;\n          } else {\n            form = valueInput.closest(\"form\");\n          }\n          \n          const changeEvent = new Event(\"change\", { \n            bubbles: true, \n            cancelable: true \n          });\n          valueInput.dispatchEvent(changeEvent);\n          \n          const inputEvent = new Event(\"input\", { \n            bubbles: true, \n            cancelable: true \n          });\n          valueInput.dispatchEvent(inputEvent);\n          \n           if (form && form.hasAttribute(\"phx-change\")) {\n            requestAnimationFrame(() => {\n              const formElement = form.querySelector('input, select, textarea') as HTMLElement;\n              if (formElement) {\n                const formChangeEvent = new Event(\"change\", { \n                  bubbles: true, \n                  cancelable: true \n                });\n                formElement.dispatchEvent(formChangeEvent);\n              } else {\n                const formChangeEvent = new Event(\"change\", { \n                  bubbles: true, \n                  cancelable: true \n                });\n                form.dispatchEvent(formChangeEvent);\n              }\n            });\n          }\n          \n        }\n\n        const eventName = getString(el, \"onValueChange\");\n        if (eventName && !this.liveSocket.main.isDead && this.liveSocket.main.isConnected()) {\n          pushEvent(eventName, {\n            value: details.value,\n            items: details.items,\n            id: el.id,\n          });\n        }\n\n        const eventNameClient = getString(el, \"onValueChangeClient\");\n        if (eventNameClient) {\n          el.dispatchEvent(\n            new CustomEvent(eventNameClient, {\n              bubbles: getBoolean(el, \"bubble\"),\n              detail: {\n                value: details.value,\n                items: details.items,\n                id: el.id,\n              },\n            })\n          );\n        }\n      },\n    };\n\n    const combobox = new Combobox(el, props);\n    combobox.hasGroups = hasGroups;\n    combobox.setAllOptions(allItems);\n    combobox.init();\n\n    const initialValue = getBoolean(el, \"controlled\")\n      ? getStringList(el, \"value\")\n      : getStringList(el, \"defaultValue\");\n    \n    if (initialValue && initialValue.length > 0) {\n      const selectedItems = allItems.filter((item: any) =>\n        initialValue.includes(item.id)\n      );\n      if (selectedItems.length > 0) {\n        const inputValue = selectedItems.map((item: any) => item.label).join(\", \");\n        if (combobox.api && typeof combobox.api.setInputValue === \"function\") {\n          combobox.api.setInputValue(inputValue);\n        } else {\n          const inputEl = el.querySelector<HTMLInputElement>(\n            '[data-scope=\"combobox\"][data-part=\"input\"]'\n          );\n          if (inputEl) {\n            inputEl.value = inputValue;\n          }\n        }\n      }\n    }\n\n    this.combobox = combobox;\n    this.handlers = [];\n  },\n\n  updated(this: object & HookInterface<HTMLElement> & ComboboxHookState) {\n    const newCollection = JSON.parse(this.el.dataset.collection || \"[]\");\n    const hasGroups = newCollection.some((item: any) => item.group !== undefined);\n    \n    if (this.combobox) {\n      this.combobox.hasGroups = hasGroups;\n      this.combobox.setAllOptions(newCollection);\n      this.combobox.updateProps({\n        ...(getBoolean(this.el, \"controlled\")\n          ? { value: getStringList(this.el, \"value\") }\n          : { defaultValue: getStringList(this.el, \"defaultValue\") }),\n        name: getString(this.el, \"name\"),\n        form: getString(this.el, \"form\"),\n        disabled: getBoolean(this.el, \"disabled\"),\n        multiple: getBoolean(this.el, \"multiple\"),\n        dir: getString<Direction>(this.el, \"dir\", [\"ltr\", \"rtl\"]),\n        invalid: getBoolean(this.el, \"invalid\"),\n        required: getBoolean(this.el, \"required\"),\n        readOnly: getBoolean(this.el, \"readOnly\"),\n      });\n      \n      const inputEl = this.el.querySelector<HTMLInputElement>(\n        '[data-scope=\"combobox\"][data-part=\"input\"]'\n      );\n      if (inputEl) {\n        inputEl.removeAttribute(\"name\");\n        inputEl.removeAttribute(\"form\");\n        inputEl.name = \"\";\n      }\n    }\n  },\n\n  destroyed(this: object & HookInterface<HTMLElement> & ComboboxHookState) {\n    if (this.handlers) {\n      for (const handler of this.handlers) {\n        this.removeHandleEvent(handler);\n      }\n    }\n\n    this.combobox?.destroy();\n  },\n};\n\nexport { ComboboxHook as Combobox };", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport type Mutable<T> = {\n  -readonly[P in keyof T]: T[P]\n};\n\nexport function mod(amount: number, numerator: number): number {\n  return amount - numerator * Math.floor(amount / numerator);\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from ICU.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate, Calendar, CalendarIdentifier} from '../types';\nimport {CalendarDate} from '../CalendarDate';\nimport {mod, Mutable} from '../utils';\n\nconst EPOCH = 1721426; // 001/01/03 Julian C.E.\nexport function gregorianToJulianDay(era: string, year: number, month: number, day: number): number {\n  year = getExtendedYear(era, year);\n\n  let y1 = year - 1;\n  let monthOffset = -2;\n  if (month <= 2) {\n    monthOffset = 0;\n  } else if (isLeapYear(year)) {\n    monthOffset = -1;\n  }\n\n  return (\n    EPOCH -\n    1 +\n    365 * y1 +\n    Math.floor(y1 / 4) -\n    Math.floor(y1 / 100) +\n    Math.floor(y1 / 400) +\n    Math.floor((367 * month - 362) / 12 + monthOffset + day)\n  );\n}\n\nexport function isLeapYear(year: number): boolean {\n  return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nexport function getExtendedYear(era: string, year: number): number {\n  return era === 'BC' ? 1 - year : year;\n}\n\nexport function fromExtendedYear(year: number): [string, number] {\n  let era = 'AD';\n  if (year <= 0) {\n    era = 'BC';\n    year = 1 - year;\n  }\n\n  return [era, year];\n}\n\nconst daysInMonth = {\n  standard: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n  leapyear: [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n};\n\n/**\n * The Gregorian calendar is the most commonly used calendar system in the world. It supports two eras: BC, and AD.\n * Years always contain 12 months, and 365 or 366 days depending on whether it is a leap year.\n */\nexport class GregorianCalendar implements Calendar {\n  identifier: CalendarIdentifier = 'gregory';\n\n  fromJulianDay(jd: number): CalendarDate {\n    let jd0 = jd;\n    let depoch = jd0 - EPOCH;\n    let quadricent = Math.floor(depoch / 146097);\n    let dqc = mod(depoch, 146097);\n    let cent = Math.floor(dqc / 36524);\n    let dcent = mod(dqc, 36524);\n    let quad = Math.floor(dcent / 1461);\n    let dquad = mod(dcent, 1461);\n    let yindex = Math.floor(dquad / 365);\n\n    let extendedYear = quadricent * 400 + cent * 100 + quad * 4 + yindex + (cent !== 4 && yindex !== 4 ? 1 : 0);\n    let [era, year] = fromExtendedYear(extendedYear);\n    let yearDay = jd0 - gregorianToJulianDay(era, year, 1, 1);\n    let leapAdj = 2;\n    if (jd0 < gregorianToJulianDay(era, year, 3, 1)) {\n      leapAdj = 0;\n    } else if (isLeapYear(year)) {\n      leapAdj = 1;\n    }\n    let month = Math.floor(((yearDay + leapAdj) * 12 + 373) / 367);\n    let day = jd0 - gregorianToJulianDay(era, year, month, 1) + 1;\n\n    return new CalendarDate(era, year, month, day);\n  }\n\n  toJulianDay(date: AnyCalendarDate): number {\n    return gregorianToJulianDay(date.era, date.year, date.month, date.day);\n  }\n\n  getDaysInMonth(date: AnyCalendarDate): number {\n    return daysInMonth[isLeapYear(date.year) ? 'leapyear' : 'standard'][date.month - 1];\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  getMonthsInYear(date: AnyCalendarDate): number {\n    return 12;\n  }\n\n  getDaysInYear(date: AnyCalendarDate): number {\n    return isLeapYear(date.year) ? 366 : 365;\n  }\n\n  getMaximumMonthsInYear(): number {\n    return 12;\n  }\n\n  getMaximumDaysInMonth(): number {\n    return 31;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  getYearsInEra(date: AnyCalendarDate): number {\n    return 9999;\n  }\n\n  getEras(): string[] {\n    return ['BC', 'AD'];\n  }\n\n  isInverseEra(date: AnyCalendarDate): boolean {\n    return date.era === 'BC';\n  }\n\n  balanceDate(date: Mutable<AnyCalendarDate>): void {\n    if (date.year <= 0) {\n      date.era = date.era === 'BC' ? 'AD' : 'BC';\n      date.year = 1 - date.year;\n    }\n  }\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Data from https://github.com/unicode-cldr/cldr-core/blob/master/supplemental/weekData.json\n// Locales starting on Sunday have been removed for compression.\nexport const weekStartData = {\n  '001': 1,\n  AD: 1,\n  AE: 6,\n  AF: 6,\n  AI: 1,\n  AL: 1,\n  AM: 1,\n  AN: 1,\n  AR: 1,\n  AT: 1,\n  AU: 1,\n  AX: 1,\n  AZ: 1,\n  BA: 1,\n  BE: 1,\n  BG: 1,\n  BH: 6,\n  BM: 1,\n  BN: 1,\n  BY: 1,\n  CH: 1,\n  CL: 1,\n  CM: 1,\n  CN: 1,\n  CR: 1,\n  CY: 1,\n  CZ: 1,\n  DE: 1,\n  DJ: 6,\n  DK: 1,\n  DZ: 6,\n  EC: 1,\n  EE: 1,\n  EG: 6,\n  ES: 1,\n  FI: 1,\n  FJ: 1,\n  FO: 1,\n  FR: 1,\n  GB: 1,\n  GE: 1,\n  GF: 1,\n  GP: 1,\n  GR: 1,\n  HR: 1,\n  HU: 1,\n  IE: 1,\n  IQ: 6,\n  IR: 6,\n  IS: 1,\n  IT: 1,\n  JO: 6,\n  KG: 1,\n  KW: 6,\n  KZ: 1,\n  LB: 1,\n  LI: 1,\n  LK: 1,\n  LT: 1,\n  LU: 1,\n  LV: 1,\n  LY: 6,\n  MC: 1,\n  MD: 1,\n  ME: 1,\n  MK: 1,\n  MN: 1,\n  MQ: 1,\n  MV: 5,\n  MY: 1,\n  NL: 1,\n  NO: 1,\n  NZ: 1,\n  OM: 6,\n  PL: 1,\n  QA: 6,\n  RE: 1,\n  RO: 1,\n  RS: 1,\n  RU: 1,\n  SD: 6,\n  SE: 1,\n  SI: 1,\n  SK: 1,\n  SM: 1,\n  SY: 6,\n  TJ: 1,\n  TM: 1,\n  TR: 1,\n  UA: 1,\n  UY: 1,\n  UZ: 1,\n  VA: 1,\n  VN: 1,\n  XK: 1\n};\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AnyCalendarDate, AnyTime, Calendar} from './types';\nimport {CalendarDate, CalendarDateTime, ZonedDateTime} from './CalendarDate';\nimport {fromAbsolute, toAbsolute, toCalendar, toCalendarDate} from './conversion';\nimport {weekStartData} from './weekStartData';\n\ntype DateValue = CalendarDate | CalendarDateTime | ZonedDateTime;\n\n/** Returns whether the given dates occur on the same day, regardless of the time or calendar system. */\nexport function isSameDay(a: DateValue, b: DateValue): boolean {\n  b = toCalendar(b, a.calendar);\n  return a.era === b.era && a.year === b.year && a.month === b.month && a.day === b.day;\n}\n\n/** Returns whether the given dates occur in the same month, using the calendar system of the first date. */\nexport function isSameMonth(a: DateValue, b: DateValue): boolean {\n  b = toCalendar(b, a.calendar);\n  // In the Japanese calendar, months can span multiple eras/years, so only compare the first of the month.\n  a = startOfMonth(a);\n  b = startOfMonth(b);\n  return a.era === b.era && a.year === b.year && a.month === b.month;\n}\n\n/** Returns whether the given dates occur in the same year, using the calendar system of the first date. */\nexport function isSameYear(a: DateValue, b: DateValue): boolean {\n  b = toCalendar(b, a.calendar);\n  a = startOfYear(a);\n  b = startOfYear(b);\n  return a.era === b.era && a.year === b.year;\n}\n\n/** Returns whether the given dates occur on the same day, and are of the same calendar system. */\nexport function isEqualDay(a: DateValue, b: DateValue): boolean {\n  return isEqualCalendar(a.calendar, b.calendar) && isSameDay(a, b);\n}\n\n/** Returns whether the given dates occur in the same month, and are of the same calendar system. */\nexport function isEqualMonth(a: DateValue, b: DateValue): boolean {\n  return isEqualCalendar(a.calendar, b.calendar) && isSameMonth(a, b);\n}\n\n/** Returns whether the given dates occur in the same year, and are of the same calendar system. */\nexport function isEqualYear(a: DateValue, b: DateValue): boolean {\n  return isEqualCalendar(a.calendar, b.calendar) && isSameYear(a, b);\n}\n\n/** Returns whether two calendars are the same. */\nexport function isEqualCalendar(a: Calendar, b: Calendar): boolean {\n  return a.isEqual?.(b) ?? b.isEqual?.(a) ?? a.identifier === b.identifier;\n}\n\n/** Returns whether the date is today in the given time zone. */\nexport function isToday(date: DateValue, timeZone: string): boolean {\n  return isSameDay(date, today(timeZone));\n}\n\nconst DAY_MAP = {\n  sun: 0,\n  mon: 1,\n  tue: 2,\n  wed: 3,\n  thu: 4,\n  fri: 5,\n  sat: 6\n};\n\ntype DayOfWeek = 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat';\n\n/**\n * Returns the day of week for the given date and locale. Days are numbered from zero to six,\n * where zero is the first day of the week in the given locale. For example, in the United States,\n * the first day of the week is Sunday, but in France it is Monday.\n */\nexport function getDayOfWeek(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): number {\n  let julian = date.calendar.toJulianDay(date);\n\n  // If julian is negative, then julian % 7 will be negative, so we adjust\n  // accordingly.  Julian day 0 is Monday.\n  let weekStart = firstDayOfWeek ? DAY_MAP[firstDayOfWeek] : getWeekStart(locale);\n  let dayOfWeek = Math.ceil(julian + 1 - weekStart) % 7;\n  if (dayOfWeek < 0) {\n    dayOfWeek += 7;\n  }\n\n  return dayOfWeek;\n}\n\n/** Returns the current time in the given time zone. */\nexport function now(timeZone: string): ZonedDateTime {\n  return fromAbsolute(Date.now(), timeZone);\n}\n\n/** Returns today's date in the given time zone. */\nexport function today(timeZone: string): CalendarDate {\n  return toCalendarDate(now(timeZone));\n}\n\nexport function compareDate(a: AnyCalendarDate, b: AnyCalendarDate): number {\n  return a.calendar.toJulianDay(a) - b.calendar.toJulianDay(b);\n}\n\nexport function compareTime(a: AnyTime, b: AnyTime): number {\n  return timeToMs(a) - timeToMs(b);\n}\n\nfunction timeToMs(a: AnyTime): number {\n  return a.hour * 60 * 60 * 1000 + a.minute * 60 * 1000 + a.second * 1000 + a.millisecond;\n}\n\n/**\n * Returns the number of hours in the given date and time zone.\n * Usually this is 24, but it could be 23 or 25 if the date is on a daylight saving transition.\n */\nexport function getHoursInDay(a: CalendarDate, timeZone: string): number {\n  let ms = toAbsolute(a, timeZone);\n  let tomorrow = a.add({days: 1});\n  let tomorrowMs = toAbsolute(tomorrow, timeZone);\n  return (tomorrowMs - ms) / 3600000;\n}\n\nlet localTimeZone: string | null = null;\n\n/** Returns the time zone identifier for the current user. */\nexport function getLocalTimeZone(): string {\n  if (localTimeZone == null) {\n    localTimeZone = new Intl.DateTimeFormat().resolvedOptions().timeZone;\n  }\n\n  return localTimeZone!;\n}\n\n/** Sets the time zone identifier for the current user. */\nexport function setLocalTimeZone(timeZone: string): void {\n  localTimeZone = timeZone;\n}\n\n/** Resets the time zone identifier for the current user. */\nexport function resetLocalTimeZone(): void {\n  localTimeZone = null;\n}\n\n/** Returns the first date of the month for the given date. */\nexport function startOfMonth(date: ZonedDateTime): ZonedDateTime;\nexport function startOfMonth(date: CalendarDateTime): CalendarDateTime;\nexport function startOfMonth(date: CalendarDate): CalendarDate;\nexport function startOfMonth(date: DateValue): DateValue;\nexport function startOfMonth(date: DateValue): DateValue {\n  // Use `subtract` instead of `set` so we don't get constrained in an era.\n  return date.subtract({days: date.day - 1});\n}\n\n/** Returns the last date of the month for the given date. */\nexport function endOfMonth(date: ZonedDateTime): ZonedDateTime;\nexport function endOfMonth(date: CalendarDateTime): CalendarDateTime;\nexport function endOfMonth(date: CalendarDate): CalendarDate;\nexport function endOfMonth(date: DateValue): DateValue;\nexport function endOfMonth(date: DateValue): DateValue {\n  return date.add({days: date.calendar.getDaysInMonth(date) - date.day});\n}\n\n/** Returns the first day of the year for the given date. */\nexport function startOfYear(date: ZonedDateTime): ZonedDateTime;\nexport function startOfYear(date: CalendarDateTime): CalendarDateTime;\nexport function startOfYear(date: CalendarDate): CalendarDate;\nexport function startOfYear(date: DateValue): DateValue;\nexport function startOfYear(date: DateValue): DateValue {\n  return startOfMonth(date.subtract({months: date.month - 1}));\n}\n\n/** Returns the last day of the year for the given date. */\nexport function endOfYear(date: ZonedDateTime): ZonedDateTime;\nexport function endOfYear(date: CalendarDateTime): CalendarDateTime;\nexport function endOfYear(date: CalendarDate): CalendarDate;\nexport function endOfYear(date: DateValue): DateValue;\nexport function endOfYear(date: DateValue): DateValue {\n  return endOfMonth(date.add({months: date.calendar.getMonthsInYear(date) - date.month}));\n}\n\nexport function getMinimumMonthInYear(date: AnyCalendarDate): number {\n  if (date.calendar.getMinimumMonthInYear) {\n    return date.calendar.getMinimumMonthInYear(date);\n  }\n\n  return 1;\n}\n\nexport function getMinimumDayInMonth(date: AnyCalendarDate): number {\n  if (date.calendar.getMinimumDayInMonth) {\n    return date.calendar.getMinimumDayInMonth(date);\n  }\n\n  return 1;\n}\n\n/** Returns the first date of the week for the given date and locale. */\nexport function startOfWeek(date: ZonedDateTime, locale: string, firstDayOfWeek?: DayOfWeek): ZonedDateTime;\nexport function startOfWeek(date: CalendarDateTime, locale: string, firstDayOfWeek?: DayOfWeek): CalendarDateTime;\nexport function startOfWeek(date: CalendarDate, locale: string, firstDayOfWeek?: DayOfWeek): CalendarDate;\nexport function startOfWeek(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): DateValue;\nexport function startOfWeek(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): DateValue {\n  let dayOfWeek = getDayOfWeek(date, locale, firstDayOfWeek);\n  return date.subtract({days: dayOfWeek});\n}\n\n/** Returns the last date of the week for the given date and locale. */\nexport function endOfWeek(date: ZonedDateTime, locale: string, firstDayOfWeek?: DayOfWeek): ZonedDateTime;\nexport function endOfWeek(date: CalendarDateTime, locale: string, firstDayOfWeek?: DayOfWeek): CalendarDateTime;\nexport function endOfWeek(date: CalendarDate, locale: string, firstDayOfWeek?: DayOfWeek): CalendarDate;\nexport function endOfWeek(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): DateValue;\nexport function endOfWeek(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): DateValue {\n  return startOfWeek(date, locale, firstDayOfWeek).add({days: 6});\n}\n\nconst cachedRegions = new Map<string, string>();\nconst cachedWeekInfo = new Map<string, {firstDay: number}>();\n\nfunction getRegion(locale: string): string | undefined {\n  // If the Intl.Locale API is available, use it to get the region for the locale.\n  // @ts-ignore\n  if (Intl.Locale) {\n    // Constructing an Intl.Locale is expensive, so cache the result.\n    let region = cachedRegions.get(locale);\n    if (!region) {\n      // @ts-ignore\n      region = new Intl.Locale(locale).maximize().region;\n      if (region) {\n        cachedRegions.set(locale, region);\n      }\n    }\n    return region;\n  }\n\n  // If not, just try splitting the string.\n  // If the second part of the locale string is 'u',\n  // then this is a unicode extension, so ignore it.\n  // Otherwise, it should be the region.\n  let part = locale.split('-')[1];\n  return part === 'u' ? undefined : part;\n}\n\nfunction getWeekStart(locale: string): number {\n  // TODO: use Intl.Locale for this once browsers support the weekInfo property\n  // https://github.com/tc39/proposal-intl-locale-info\n  let weekInfo = cachedWeekInfo.get(locale);\n  if (!weekInfo) {\n    if (Intl.Locale) {\n      // @ts-ignore\n      let localeInst = new Intl.Locale(locale);\n      if ('getWeekInfo' in localeInst) {\n        // @ts-expect-error\n        weekInfo = localeInst.getWeekInfo();\n        if (weekInfo) {\n          cachedWeekInfo.set(locale, weekInfo);\n          return weekInfo.firstDay;\n        }\n      }\n    }\n    let region = getRegion(locale);\n    if (locale.includes('-fw-')) {\n      // pull the value for the attribute fw from strings such as en-US-u-ca-iso8601-fw-tue or en-US-u-ca-iso8601-fw-mon-nu-thai\n      // where the fw attribute could be followed by another unicode locale extension or not\n      let day = locale.split('-fw-')[1].split('-')[0];\n      if (day === 'mon') {\n        weekInfo = {firstDay: 1};\n      } else if (day === 'tue') {\n        weekInfo = {firstDay: 2};\n      } else if (day === 'wed') {\n        weekInfo = {firstDay: 3};\n      } else if (day === 'thu') {\n        weekInfo = {firstDay: 4};\n      } else if (day === 'fri') {\n        weekInfo = {firstDay: 5};\n      } else if (day === 'sat') {\n        weekInfo = {firstDay: 6};\n      } else {\n        weekInfo = {firstDay: 0};\n      }\n    } else if (locale.includes('-ca-iso8601')) {\n      weekInfo = {firstDay: 1};\n    } else {\n      weekInfo = {firstDay: region ? weekStartData[region] || 0 : 0};\n    }\n    cachedWeekInfo.set(locale, weekInfo);\n  }\n\n  return weekInfo.firstDay;\n}\n\n/** Returns the number of weeks in the given month and locale. */\nexport function getWeeksInMonth(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): number {\n  let days = date.calendar.getDaysInMonth(date);\n  return Math.ceil((getDayOfWeek(startOfMonth(date), locale, firstDayOfWeek) + days) / 7);\n}\n\n/** Returns the lesser of the two provider dates. */\nexport function minDate<A extends DateValue, B extends DateValue>(a?: A | null, b?: B | null): A | B | null | undefined {\n  if (a && b) {\n    return a.compare(b) <= 0 ? a : b;\n  }\n\n  return a || b;\n}\n\n/** Returns the greater of the two provider dates. */\nexport function maxDate<A extends DateValue, B extends DateValue>(a?: A | null, b?: B | null): A | B | null | undefined {\n  if (a && b) {\n    return a.compare(b) >= 0 ? a : b;\n  }\n\n  return a || b;\n}\n\nconst WEEKEND_DATA = {\n  AF: [4, 5],\n  AE: [5, 6],\n  BH: [5, 6],\n  DZ: [5, 6],\n  EG: [5, 6],\n  IL: [5, 6],\n  IQ: [5, 6],\n  IR: [5, 5],\n  JO: [5, 6],\n  KW: [5, 6],\n  LY: [5, 6],\n  OM: [5, 6],\n  QA: [5, 6],\n  SA: [5, 6],\n  SD: [5, 6],\n  SY: [5, 6],\n  YE: [5, 6]\n};\n\n/** Returns whether the given date is on a weekend in the given locale. */\nexport function isWeekend(date: DateValue, locale: string): boolean {\n  let julian = date.calendar.toJulianDay(date);\n\n  // If julian is negative, then julian % 7 will be negative, so we adjust\n  // accordingly.  Julian day 0 is Monday.\n  let dayOfWeek = Math.ceil(julian + 1) % 7;\n  if (dayOfWeek < 0) {\n    dayOfWeek += 7;\n  }\n\n  let region = getRegion(locale);\n  // Use Intl.Locale for this once weekInfo is supported.\n  // https://github.com/tc39/proposal-intl-locale-info\n  let [start, end] = WEEKEND_DATA[region!] || [6, 0];\n  return dayOfWeek === start || dayOfWeek === end;\n}\n\n/** Returns whether the given date is on a weekday in the given locale. */\nexport function isWeekday(date: DateValue, locale: string): boolean {\n  return !isWeekend(date, locale);\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from the TC39 Temporal proposal.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate, AnyDateTime, AnyTime, Calendar, DateFields, Disambiguation, TimeFields} from './types';\nimport {CalendarDate, CalendarDateTime, Time, ZonedDateTime} from './CalendarDate';\nimport {constrain} from './manipulation';\nimport {getExtendedYear, GregorianCalendar} from './calendars/GregorianCalendar';\nimport {getLocalTimeZone, isEqualCalendar} from './queries';\nimport {Mutable} from './utils';\n\nexport function epochFromDate(date: AnyDateTime): number {\n  date = toCalendar(date, new GregorianCalendar());\n  let year = getExtendedYear(date.era, date.year);\n  return epochFromParts(year, date.month, date.day, date.hour, date.minute, date.second, date.millisecond);\n}\n\nfunction epochFromParts(year: number, month: number, day: number, hour: number, minute: number, second: number, millisecond: number): number {\n  // Note: Date.UTC() interprets one and two-digit years as being in the\n  // 20th century, so don't use it\n  let date = new Date();\n  date.setUTCHours(hour, minute, second, millisecond);\n  date.setUTCFullYear(year, month - 1, day);\n  return date.getTime();\n}\n\nexport function getTimeZoneOffset(ms: number, timeZone: string): number {\n  // Fast path for UTC.\n  if (timeZone === 'UTC') {\n    return 0;\n  }\n\n  // Fast path: for local timezone after 1970, use native Date.\n  if (ms > 0 && timeZone === getLocalTimeZone()) {\n    return new Date(ms).getTimezoneOffset() * -60 * 1000;\n  }\n\n  let {year, month, day, hour, minute, second} = getTimeZoneParts(ms, timeZone);\n  let utc = epochFromParts(year, month, day, hour, minute, second, 0);\n  return utc - Math.floor(ms / 1000) * 1000;\n}\n\nconst formattersByTimeZone = new Map<string, Intl.DateTimeFormat>();\n\nfunction getTimeZoneParts(ms: number, timeZone: string) {\n  let formatter = formattersByTimeZone.get(timeZone);\n  if (!formatter) {\n    formatter = new Intl.DateTimeFormat('en-US', {\n      timeZone,\n      hour12: false,\n      era: 'short',\n      year: 'numeric',\n      month: 'numeric',\n      day: 'numeric',\n      hour: 'numeric',\n      minute: 'numeric',\n      second: 'numeric'\n    });\n\n    formattersByTimeZone.set(timeZone, formatter);\n  }\n\n  let parts = formatter.formatToParts(new Date(ms));\n  let namedParts: {[name: string]: string} = {};\n  for (let part of parts) {\n    if (part.type !== 'literal') {\n      namedParts[part.type] = part.value;\n    }\n  }\n\n\n  return {\n    // Firefox returns B instead of BC... https://bugzilla.mozilla.org/show_bug.cgi?id=1752253\n    year: namedParts.era === 'BC' || namedParts.era === 'B' ? -namedParts.year + 1 : +namedParts.year,\n    month: +namedParts.month,\n    day: +namedParts.day,\n    hour: namedParts.hour === '24' ? 0 : +namedParts.hour, // bugs.chromium.org/p/chromium/issues/detail?id=1045791\n    minute: +namedParts.minute,\n    second: +namedParts.second\n  };\n}\n\nconst DAYMILLIS = 86400000;\n\nexport function possibleAbsolutes(date: CalendarDateTime, timeZone: string): number[] {\n  let ms = epochFromDate(date);\n  let earlier = ms - getTimeZoneOffset(ms - DAYMILLIS, timeZone);\n  let later = ms - getTimeZoneOffset(ms + DAYMILLIS, timeZone);\n  return getValidWallTimes(date, timeZone, earlier, later);\n}\n\nfunction getValidWallTimes(date: CalendarDateTime, timeZone: string, earlier: number, later: number): number[] {\n  let found = earlier === later ? [earlier] : [earlier, later];\n  return found.filter(absolute => isValidWallTime(date, timeZone, absolute));\n}\n\nfunction isValidWallTime(date: CalendarDateTime, timeZone: string, absolute: number) {\n  let parts = getTimeZoneParts(absolute, timeZone);\n  return date.year === parts.year\n    && date.month === parts.month\n    && date.day === parts.day\n    && date.hour === parts.hour\n    && date.minute === parts.minute\n    && date.second === parts.second;\n}\n\nexport function toAbsolute(date: CalendarDate | CalendarDateTime, timeZone: string, disambiguation: Disambiguation = 'compatible'): number {\n  let dateTime = toCalendarDateTime(date);\n\n  // Fast path: if the time zone is UTC, use native Date.\n  if (timeZone === 'UTC') {\n    return epochFromDate(dateTime);\n  }\n\n  // Fast path: if the time zone is the local timezone and disambiguation is compatible, use native Date.\n  if (timeZone === getLocalTimeZone() && disambiguation === 'compatible') {\n    dateTime = toCalendar(dateTime, new GregorianCalendar());\n\n    // Don't use Date constructor here because two-digit years are interpreted in the 20th century.\n    let date = new Date();\n    let year = getExtendedYear(dateTime.era, dateTime.year);\n    date.setFullYear(year, dateTime.month - 1, dateTime.day);\n    date.setHours(dateTime.hour, dateTime.minute, dateTime.second, dateTime.millisecond);\n    return date.getTime();\n  }\n\n  let ms = epochFromDate(dateTime);\n  let offsetBefore = getTimeZoneOffset(ms - DAYMILLIS, timeZone);\n  let offsetAfter = getTimeZoneOffset(ms + DAYMILLIS, timeZone);\n  let valid = getValidWallTimes(dateTime, timeZone, ms - offsetBefore, ms - offsetAfter);\n\n  if (valid.length === 1) {\n    return valid[0];\n  }\n\n  if (valid.length > 1) {\n    switch (disambiguation) {\n      // 'compatible' means 'earlier' for \"fall back\" transitions\n      case 'compatible':\n      case 'earlier':\n        return valid[0];\n      case 'later':\n        return valid[valid.length - 1];\n      case 'reject':\n        throw new RangeError('Multiple possible absolute times found');\n    }\n  }\n\n  switch (disambiguation) {\n    case 'earlier':\n      return Math.min(ms - offsetBefore, ms - offsetAfter);\n    // 'compatible' means 'later' for \"spring forward\" transitions\n    case 'compatible':\n    case 'later':\n      return Math.max(ms - offsetBefore, ms - offsetAfter);\n    case 'reject':\n      throw new RangeError('No such absolute time found');\n  }\n}\n\nexport function toDate(dateTime: CalendarDate | CalendarDateTime, timeZone: string, disambiguation: Disambiguation = 'compatible'): Date {\n  return new Date(toAbsolute(dateTime, timeZone, disambiguation));\n}\n\n/**\n * Takes a Unix epoch (milliseconds since 1970) and converts it to the provided time zone.\n */\nexport function fromAbsolute(ms: number, timeZone: string): ZonedDateTime {\n  let offset = getTimeZoneOffset(ms, timeZone);\n  let date = new Date(ms + offset);\n  let year = date.getUTCFullYear();\n  let month = date.getUTCMonth() + 1;\n  let day = date.getUTCDate();\n  let hour = date.getUTCHours();\n  let minute = date.getUTCMinutes();\n  let second = date.getUTCSeconds();\n  let millisecond = date.getUTCMilliseconds();\n\n  return new ZonedDateTime(year < 1 ? 'BC' : 'AD', year < 1 ? -year + 1 : year, month, day, timeZone, offset, hour, minute, second, millisecond);\n}\n\n/**\n * Takes a `Date` object and converts it to the provided time zone.\n */\nexport function fromDate(date: Date, timeZone: string): ZonedDateTime {\n  return fromAbsolute(date.getTime(), timeZone);\n}\n\nexport function fromDateToLocal(date: Date): ZonedDateTime {\n  return fromDate(date, getLocalTimeZone());\n}\n\n/** Converts a value with date components such as a `CalendarDateTime` or `ZonedDateTime` into a `CalendarDate`. */\nexport function toCalendarDate(dateTime: AnyCalendarDate): CalendarDate {\n  return new CalendarDate(dateTime.calendar, dateTime.era, dateTime.year, dateTime.month, dateTime.day);\n}\n\nexport function toDateFields(date: AnyCalendarDate): DateFields {\n  return {\n    era: date.era,\n    year: date.year,\n    month: date.month,\n    day: date.day\n  };\n}\n\nexport function toTimeFields(date: AnyTime): TimeFields {\n  return {\n    hour: date.hour,\n    minute: date.minute,\n    second: date.second,\n    millisecond: date.millisecond\n  };\n}\n\n/**\n * Converts a date value to a `CalendarDateTime`. An optional `Time` value can be passed to set the time\n * of the resulting value, otherwise it will default to midnight.\n */\nexport function toCalendarDateTime(date: CalendarDate | CalendarDateTime | ZonedDateTime, time?: AnyTime): CalendarDateTime {\n  let hour = 0, minute = 0, second = 0, millisecond = 0;\n  if ('timeZone' in date) {\n    ({hour, minute, second, millisecond} = date);\n  } else if ('hour' in date && !time) {\n    return date;\n  }\n\n  if (time) {\n    ({hour, minute, second, millisecond} = time);\n  }\n\n  return new CalendarDateTime(\n    date.calendar,\n    date.era,\n    date.year,\n    date.month,\n    date.day,\n    hour,\n    minute,\n    second,\n    millisecond\n  );\n}\n\n/** Extracts the time components from a value containing a date and time. */\nexport function toTime(dateTime: CalendarDateTime | ZonedDateTime): Time {\n  return new Time(dateTime.hour, dateTime.minute, dateTime.second, dateTime.millisecond);\n}\n\n/** Converts a date from one calendar system to another. */\nexport function toCalendar<T extends AnyCalendarDate>(date: T, calendar: Calendar): T {\n  if (isEqualCalendar(date.calendar, calendar)) {\n    return date;\n  }\n\n  let calendarDate = calendar.fromJulianDay(date.calendar.toJulianDay(date));\n  let copy: Mutable<T> = date.copy();\n  copy.calendar = calendar;\n  copy.era = calendarDate.era;\n  copy.year = calendarDate.year;\n  copy.month = calendarDate.month;\n  copy.day = calendarDate.day;\n  constrain(copy);\n  return copy;\n}\n\n/**\n * Converts a date value to a `ZonedDateTime` in the provided time zone. The `disambiguation` option can be set\n * to control how values that fall on daylight saving time changes are interpreted.\n */\nexport function toZoned(date: CalendarDate | CalendarDateTime | ZonedDateTime, timeZone: string, disambiguation?: Disambiguation): ZonedDateTime {\n  if (date instanceof ZonedDateTime) {\n    if (date.timeZone === timeZone) {\n      return date;\n    }\n\n    return toTimeZone(date, timeZone);\n  }\n\n  let ms = toAbsolute(date, timeZone, disambiguation);\n  return fromAbsolute(ms, timeZone);\n}\n\nexport function zonedToDate(date: ZonedDateTime): Date {\n  let ms = epochFromDate(date) - date.offset;\n  return new Date(ms);\n}\n\n/** Converts a `ZonedDateTime` from one time zone to another. */\nexport function toTimeZone(date: ZonedDateTime, timeZone: string): ZonedDateTime {\n  let ms = epochFromDate(date) - date.offset;\n  return toCalendar(fromAbsolute(ms, timeZone), date.calendar);\n}\n\n/** Converts the given `ZonedDateTime` into the user's local time zone. */\nexport function toLocalTimeZone(date: ZonedDateTime): ZonedDateTime {\n  return toTimeZone(date, getLocalTimeZone());\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AnyCalendarDate, AnyDateTime, AnyTime, CycleOptions, CycleTimeOptions, DateDuration, DateField, DateFields, DateTimeDuration, Disambiguation, TimeDuration, TimeField, TimeFields} from './types';\nimport {CalendarDate, CalendarDateTime, Time, ZonedDateTime} from './CalendarDate';\nimport {epochFromDate, fromAbsolute, toAbsolute, toCalendar, toCalendarDateTime} from './conversion';\nimport {GregorianCalendar} from './calendars/GregorianCalendar';\nimport {Mutable} from './utils';\n\nconst ONE_HOUR = 3600000;\n\nexport function add(date: CalendarDateTime, duration: DateTimeDuration): CalendarDateTime;\nexport function add(date: CalendarDate, duration: DateDuration): CalendarDate;\nexport function add(date: CalendarDate | CalendarDateTime, duration: DateTimeDuration): CalendarDate | CalendarDateTime;\nexport function add(date: CalendarDate | CalendarDateTime, duration: DateTimeDuration): Mutable<AnyCalendarDate | AnyDateTime> {\n  let mutableDate: Mutable<AnyCalendarDate | AnyDateTime> = date.copy();\n  let days = 'hour' in mutableDate ? addTimeFields(mutableDate, duration) : 0;\n\n  addYears(mutableDate, duration.years || 0);\n  if (mutableDate.calendar.balanceYearMonth) {\n    mutableDate.calendar.balanceYearMonth(mutableDate, date);\n  }\n\n  mutableDate.month += duration.months || 0;\n\n  balanceYearMonth(mutableDate);\n  constrainMonthDay(mutableDate);\n\n  mutableDate.day += (duration.weeks || 0) * 7;\n  mutableDate.day += duration.days || 0;\n  mutableDate.day += days;\n\n  balanceDay(mutableDate);\n\n  if (mutableDate.calendar.balanceDate) {\n    mutableDate.calendar.balanceDate(mutableDate);\n  }\n\n  // Constrain in case adding ended up with a date outside the valid range for the calendar system.\n  // The behavior here is slightly different than when constraining in the `set` function in that\n  // we adjust smaller fields to their minimum/maximum values rather than constraining each field\n  // individually. This matches the general behavior of `add` vs `set` regarding how fields are balanced.\n  if (mutableDate.year < 1) {\n    mutableDate.year = 1;\n    mutableDate.month = 1;\n    mutableDate.day = 1;\n  }\n\n  let maxYear = mutableDate.calendar.getYearsInEra(mutableDate);\n  if (mutableDate.year > maxYear) {\n    let isInverseEra = mutableDate.calendar.isInverseEra?.(mutableDate);\n    mutableDate.year = maxYear;\n    mutableDate.month = isInverseEra ? 1 : mutableDate.calendar.getMonthsInYear(mutableDate);\n    mutableDate.day = isInverseEra ? 1 : mutableDate.calendar.getDaysInMonth(mutableDate);\n  }\n\n  if (mutableDate.month < 1) {\n    mutableDate.month = 1;\n    mutableDate.day = 1;\n  }\n\n  let maxMonth = mutableDate.calendar.getMonthsInYear(mutableDate);\n  if (mutableDate.month > maxMonth) {\n    mutableDate.month = maxMonth;\n    mutableDate.day = mutableDate.calendar.getDaysInMonth(mutableDate);\n  }\n\n  mutableDate.day = Math.max(1, Math.min(mutableDate.calendar.getDaysInMonth(mutableDate), mutableDate.day));\n  return mutableDate;\n}\n\nfunction addYears(date: Mutable<AnyCalendarDate>, years: number) {\n  if (date.calendar.isInverseEra?.(date)) {\n    years = -years;\n  }\n\n  date.year += years;\n}\n\nfunction balanceYearMonth(date: Mutable<AnyCalendarDate>) {\n  while (date.month < 1) {\n    addYears(date, -1);\n    date.month += date.calendar.getMonthsInYear(date);\n  }\n\n  let monthsInYear = 0;\n  while (date.month > (monthsInYear = date.calendar.getMonthsInYear(date))) {\n    date.month -= monthsInYear;\n    addYears(date, 1);\n  }\n}\n\nfunction balanceDay(date: Mutable<AnyCalendarDate>) {\n  while (date.day < 1) {\n    date.month--;\n    balanceYearMonth(date);\n    date.day += date.calendar.getDaysInMonth(date);\n  }\n\n  while (date.day > date.calendar.getDaysInMonth(date)) {\n    date.day -= date.calendar.getDaysInMonth(date);\n    date.month++;\n    balanceYearMonth(date);\n  }\n}\n\nfunction constrainMonthDay(date: Mutable<AnyCalendarDate>) {\n  date.month = Math.max(1, Math.min(date.calendar.getMonthsInYear(date), date.month));\n  date.day = Math.max(1, Math.min(date.calendar.getDaysInMonth(date), date.day));\n}\n\nexport function constrain(date: Mutable<AnyCalendarDate>): void {\n  if (date.calendar.constrainDate) {\n    date.calendar.constrainDate(date);\n  }\n\n  date.year = Math.max(1, Math.min(date.calendar.getYearsInEra(date), date.year));\n  constrainMonthDay(date);\n}\n\nexport function invertDuration(duration: DateTimeDuration): DateTimeDuration {\n  let inverseDuration = {};\n  for (let key in duration) {\n    if (typeof duration[key] === 'number') {\n      inverseDuration[key] = -duration[key];\n    }\n  }\n\n  return inverseDuration;\n}\n\nexport function subtract(date: CalendarDateTime, duration: DateTimeDuration): CalendarDateTime;\nexport function subtract(date: CalendarDate, duration: DateDuration): CalendarDate;\nexport function subtract(date: CalendarDate | CalendarDateTime, duration: DateTimeDuration): CalendarDate | CalendarDateTime {\n  return add(date, invertDuration(duration));\n}\n\nexport function set(date: CalendarDateTime, fields: DateFields): CalendarDateTime;\nexport function set(date: CalendarDate, fields: DateFields): CalendarDate;\nexport function set(date: CalendarDate | CalendarDateTime, fields: DateFields): Mutable<AnyCalendarDate> {\n  let mutableDate: Mutable<AnyCalendarDate> = date.copy();\n\n  if (fields.era != null) {\n    mutableDate.era = fields.era;\n  }\n\n  if (fields.year != null) {\n    mutableDate.year = fields.year;\n  }\n\n  if (fields.month != null) {\n    mutableDate.month = fields.month;\n  }\n\n  if (fields.day != null) {\n    mutableDate.day = fields.day;\n  }\n\n  constrain(mutableDate);\n  return mutableDate;\n}\n\nexport function setTime(value: CalendarDateTime, fields: TimeFields): CalendarDateTime;\nexport function setTime(value: Time, fields: TimeFields): Time;\nexport function setTime(value: Time | CalendarDateTime, fields: TimeFields): Mutable<Time | CalendarDateTime> {\n  let mutableValue: Mutable<Time | CalendarDateTime> = value.copy();\n\n  if (fields.hour != null) {\n    mutableValue.hour = fields.hour;\n  }\n\n  if (fields.minute != null) {\n    mutableValue.minute = fields.minute;\n  }\n\n  if (fields.second != null) {\n    mutableValue.second = fields.second;\n  }\n\n  if (fields.millisecond != null) {\n    mutableValue.millisecond = fields.millisecond;\n  }\n\n  constrainTime(mutableValue);\n  return mutableValue;\n}\n\nfunction balanceTime(time: Mutable<AnyTime>): number {\n  time.second += Math.floor(time.millisecond / 1000);\n  time.millisecond = nonNegativeMod(time.millisecond, 1000);\n\n  time.minute += Math.floor(time.second / 60);\n  time.second = nonNegativeMod(time.second, 60);\n\n  time.hour += Math.floor(time.minute / 60);\n  time.minute = nonNegativeMod(time.minute, 60);\n\n  let days = Math.floor(time.hour / 24);\n  time.hour = nonNegativeMod(time.hour, 24);\n\n  return days;\n}\n\nexport function constrainTime(time: Mutable<AnyTime>): void {\n  time.millisecond = Math.max(0, Math.min(time.millisecond, 1000));\n  time.second = Math.max(0, Math.min(time.second, 59));\n  time.minute = Math.max(0, Math.min(time.minute, 59));\n  time.hour = Math.max(0, Math.min(time.hour, 23));\n}\n\nfunction nonNegativeMod(a: number, b: number) {\n  let result = a % b;\n  if (result < 0) {\n    result += b;\n  }\n  return result;\n}\n\nfunction addTimeFields(time: Mutable<AnyTime>, duration: TimeDuration): number {\n  time.hour += duration.hours || 0;\n  time.minute += duration.minutes || 0;\n  time.second += duration.seconds || 0;\n  time.millisecond += duration.milliseconds || 0;\n  return balanceTime(time);\n}\n\nexport function addTime(time: Time, duration: TimeDuration): Time {\n  let res = time.copy();\n  addTimeFields(res, duration);\n  return res;\n}\n\nexport function subtractTime(time: Time, duration: TimeDuration): Time {\n  return addTime(time, invertDuration(duration));\n}\n\nexport function cycleDate(value: CalendarDateTime, field: DateField, amount: number, options?: CycleOptions): CalendarDateTime;\nexport function cycleDate(value: CalendarDate, field: DateField, amount: number, options?: CycleOptions): CalendarDate;\nexport function cycleDate(value: CalendarDate | CalendarDateTime, field: DateField, amount: number, options?: CycleOptions): Mutable<CalendarDate | CalendarDateTime> {\n  let mutable: Mutable<CalendarDate | CalendarDateTime> = value.copy();\n\n  switch (field) {\n    case 'era': {\n      let eras = value.calendar.getEras();\n      let eraIndex = eras.indexOf(value.era);\n      if (eraIndex < 0) {\n        throw new Error('Invalid era: ' + value.era);\n      }\n      eraIndex = cycleValue(eraIndex, amount, 0, eras.length - 1, options?.round);\n      mutable.era = eras[eraIndex];\n\n      // Constrain the year and other fields within the era, so the era doesn't change when we balance below.\n      constrain(mutable);\n      break;\n    }\n    case 'year': {\n      if (mutable.calendar.isInverseEra?.(mutable)) {\n        amount = -amount;\n      }\n\n      // The year field should not cycle within the era as that can cause weird behavior affecting other fields.\n      // We need to also allow values < 1 so that decrementing goes to the previous era. If we get -Infinity back\n      // we know we wrapped around after reaching 9999 (the maximum), so set the year back to 1.\n      mutable.year = cycleValue(value.year, amount, -Infinity, 9999, options?.round);\n      if (mutable.year === -Infinity) {\n        mutable.year = 1;\n      }\n\n      if (mutable.calendar.balanceYearMonth) {\n        mutable.calendar.balanceYearMonth(mutable, value);\n      }\n      break;\n    }\n    case 'month':\n      mutable.month = cycleValue(value.month, amount, 1, value.calendar.getMonthsInYear(value), options?.round);\n      break;\n    case 'day':\n      mutable.day = cycleValue(value.day, amount, 1, value.calendar.getDaysInMonth(value), options?.round);\n      break;\n    default:\n      throw new Error('Unsupported field ' + field);\n  }\n\n  if (value.calendar.balanceDate) {\n    value.calendar.balanceDate(mutable);\n  }\n\n  constrain(mutable);\n  return mutable;\n}\n\nexport function cycleTime(value: CalendarDateTime, field: TimeField, amount: number, options?: CycleTimeOptions): CalendarDateTime;\nexport function cycleTime(value: Time, field: TimeField, amount: number, options?: CycleTimeOptions): Time;\nexport function cycleTime(value: Time | CalendarDateTime, field: TimeField, amount: number, options?: CycleTimeOptions): Mutable<Time | CalendarDateTime> {\n  let mutable: Mutable<Time | CalendarDateTime> = value.copy();\n\n  switch (field) {\n    case 'hour': {\n      let hours = value.hour;\n      let min = 0;\n      let max = 23;\n      if (options?.hourCycle === 12) {\n        let isPM = hours >= 12;\n        min = isPM ? 12 : 0;\n        max = isPM ? 23 : 11;\n      }\n      mutable.hour = cycleValue(hours, amount, min, max, options?.round);\n      break;\n    }\n    case 'minute':\n      mutable.minute = cycleValue(value.minute, amount, 0, 59, options?.round);\n      break;\n    case 'second':\n      mutable.second = cycleValue(value.second, amount, 0, 59, options?.round);\n      break;\n    case 'millisecond':\n      mutable.millisecond = cycleValue(value.millisecond, amount, 0, 999, options?.round);\n      break;\n    default:\n      throw new Error('Unsupported field ' + field);\n  }\n\n  return mutable;\n}\n\nfunction cycleValue(value: number, amount: number, min: number, max: number, round = false) {\n  if (round) {\n    value += Math.sign(amount);\n\n    if (value < min) {\n      value = max;\n    }\n\n    let div = Math.abs(amount);\n    if (amount > 0) {\n      value = Math.ceil(value / div) * div;\n    } else {\n      value = Math.floor(value / div) * div;\n    }\n\n    if (value > max) {\n      value = min;\n    }\n  } else {\n    value += amount;\n    if (value < min) {\n      value = max - (min - value - 1);\n    } else if (value > max) {\n      value = min + (value - max - 1);\n    }\n  }\n\n  return value;\n}\n\nexport function addZoned(dateTime: ZonedDateTime, duration: DateTimeDuration): ZonedDateTime {\n  let ms: number;\n  if ((duration.years != null && duration.years !== 0) || (duration.months != null && duration.months !== 0) || (duration.weeks != null && duration.weeks !== 0) || (duration.days != null && duration.days !== 0)) {\n    let res = add(toCalendarDateTime(dateTime), {\n      years: duration.years,\n      months: duration.months,\n      weeks: duration.weeks,\n      days: duration.days\n    });\n\n    // Changing the date may change the timezone offset, so we need to recompute\n    // using the 'compatible' disambiguation.\n    ms = toAbsolute(res, dateTime.timeZone);\n  } else {\n    // Otherwise, preserve the offset of the original date.\n    ms = epochFromDate(dateTime) - dateTime.offset;\n  }\n\n  // Perform time manipulation in milliseconds rather than on the original time fields to account for DST.\n  // For example, adding one hour during a DST transition may result in the hour field staying the same or\n  // skipping an hour. This results in the offset field changing value instead of the specified field.\n  ms += duration.milliseconds || 0;\n  ms += (duration.seconds || 0) * 1000;\n  ms += (duration.minutes || 0) * 60 * 1000;\n  ms += (duration.hours || 0) * 60 * 60 * 1000;\n\n  let res = fromAbsolute(ms, dateTime.timeZone);\n  return toCalendar(res, dateTime.calendar);\n}\n\nexport function subtractZoned(dateTime: ZonedDateTime, duration: DateTimeDuration): ZonedDateTime {\n  return addZoned(dateTime, invertDuration(duration));\n}\n\nexport function cycleZoned(dateTime: ZonedDateTime, field: DateField | TimeField, amount: number, options?: CycleTimeOptions): ZonedDateTime {\n  // For date fields, we want the time to remain consistent and the UTC offset to potentially change to account for DST changes.\n  // For time fields, we want the time to change by the amount given. This may result in the hour field staying the same, but the UTC\n  // offset changing in the case of a backward DST transition, or skipping an hour in the case of a forward DST transition.\n  switch (field) {\n    case 'hour': {\n      let min = 0;\n      let max = 23;\n      if (options?.hourCycle === 12) {\n        let isPM = dateTime.hour >= 12;\n        min = isPM ? 12 : 0;\n        max = isPM ? 23 : 11;\n      }\n\n      // The minimum and maximum hour may be affected by daylight saving time.\n      // For example, it might jump forward at midnight, and skip 1am.\n      // Or it might end at midnight and repeat the 11pm hour. To handle this, we get\n      // the possible absolute times for the min and max, and find the maximum range\n      // that is within the current day.\n      let plainDateTime = toCalendarDateTime(dateTime);\n      let minDate = toCalendar(setTime(plainDateTime, {hour: min}), new GregorianCalendar());\n      let minAbsolute = [toAbsolute(minDate, dateTime.timeZone, 'earlier'), toAbsolute(minDate, dateTime.timeZone, 'later')]\n        .filter(ms => fromAbsolute(ms, dateTime.timeZone).day === minDate.day)[0];\n\n      let maxDate = toCalendar(setTime(plainDateTime, {hour: max}), new GregorianCalendar());\n      let maxAbsolute = [toAbsolute(maxDate, dateTime.timeZone, 'earlier'), toAbsolute(maxDate, dateTime.timeZone, 'later')]\n        .filter(ms => fromAbsolute(ms, dateTime.timeZone).day === maxDate.day).pop()!;\n\n      // Since hours may repeat, we need to operate on the absolute time in milliseconds.\n      // This is done in hours from the Unix epoch so that cycleValue works correctly,\n      // and then converted back to milliseconds.\n      let ms = epochFromDate(dateTime) - dateTime.offset;\n      let hours = Math.floor(ms / ONE_HOUR);\n      let remainder = ms % ONE_HOUR;\n      ms = cycleValue(\n        hours,\n        amount,\n        Math.floor(minAbsolute / ONE_HOUR),\n        Math.floor(maxAbsolute / ONE_HOUR),\n        options?.round\n      ) * ONE_HOUR + remainder;\n\n      // Now compute the new timezone offset, and convert the absolute time back to local time.\n      return toCalendar(fromAbsolute(ms, dateTime.timeZone), dateTime.calendar);\n    }\n    case 'minute':\n    case 'second':\n    case 'millisecond':\n      // @ts-ignore\n      return cycleTime(dateTime, field, amount, options);\n    case 'era':\n    case 'year':\n    case 'month':\n    case 'day': {\n      let res = cycleDate(toCalendarDateTime(dateTime), field, amount, options);\n      let ms = toAbsolute(res, dateTime.timeZone);\n      return toCalendar(fromAbsolute(ms, dateTime.timeZone), dateTime.calendar);\n    }\n    default:\n      throw new Error('Unsupported field ' + field);\n  }\n}\n\nexport function setZoned(dateTime: ZonedDateTime, fields: DateFields & TimeFields, disambiguation?: Disambiguation): ZonedDateTime {\n  // Set the date/time fields, and recompute the UTC offset to account for DST changes.\n  // We also need to validate by converting back to a local time in case hours are skipped during forward DST transitions.\n  let plainDateTime = toCalendarDateTime(dateTime);\n  let res = setTime(set(plainDateTime, fields), fields);\n\n  // If the resulting plain date time values are equal, return the original time.\n  // We don't want to change the offset when setting the time to the same value.\n  if (res.compare(plainDateTime) === 0) {\n    return dateTime;\n  }\n\n  let ms = toAbsolute(res, dateTime.timeZone, disambiguation);\n  return toCalendar(fromAbsolute(ms, dateTime.timeZone), dateTime.calendar);\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AnyDateTime, DateTimeDuration, Disambiguation} from './types';\nimport {CalendarDate, CalendarDateTime, Time, ZonedDateTime} from './CalendarDate';\nimport {epochFromDate, fromAbsolute, possibleAbsolutes, toAbsolute, toCalendar, toCalendarDateTime, toTimeZone} from './conversion';\nimport {getLocalTimeZone} from './queries';\nimport {GregorianCalendar} from './calendars/GregorianCalendar';\nimport {Mutable} from './utils';\n\nconst TIME_RE = /^(\\d{2})(?::(\\d{2}))?(?::(\\d{2}))?(\\.\\d+)?$/;\nconst DATE_RE = /^([+-]\\d{6}|\\d{4})-(\\d{2})-(\\d{2})$/;\nconst DATE_TIME_RE = /^([+-]\\d{6}|\\d{4})-(\\d{2})-(\\d{2})(?:T(\\d{2}))?(?::(\\d{2}))?(?::(\\d{2}))?(\\.\\d+)?$/;\nconst ZONED_DATE_TIME_RE = /^([+-]\\d{6}|\\d{4})-(\\d{2})-(\\d{2})(?:T(\\d{2}))?(?::(\\d{2}))?(?::(\\d{2}))?(\\.\\d+)?(?:([+-]\\d{2})(?::?(\\d{2}))?(?::?(\\d{2}))?)?\\[(.*?)\\]$/;\nconst ABSOLUTE_RE = /^([+-]\\d{6}|\\d{4})-(\\d{2})-(\\d{2})(?:T(\\d{2}))?(?::(\\d{2}))?(?::(\\d{2}))?(\\.\\d+)?(?:(?:([+-]\\d{2})(?::?(\\d{2}))?)|Z)$/;\nconst DATE_TIME_DURATION_RE =\n    /^((?<negative>-)|\\+)?P((?<years>\\d*)Y)?((?<months>\\d*)M)?((?<weeks>\\d*)W)?((?<days>\\d*)D)?((?<time>T)((?<hours>\\d*[.,]?\\d{1,9})H)?((?<minutes>\\d*[.,]?\\d{1,9})M)?((?<seconds>\\d*[.,]?\\d{1,9})S)?)?$/;\nconst requiredDurationTimeGroups = ['hours', 'minutes', 'seconds'];\nconst requiredDurationGroups = ['years', 'months', 'weeks', 'days', ...requiredDurationTimeGroups];\n\n/** Parses an ISO 8601 time string. */\nexport function parseTime(value: string): Time {\n  let m = value.match(TIME_RE);\n  if (!m) {\n    throw new Error('Invalid ISO 8601 time string: ' + value);\n  }\n\n  return new Time(\n    parseNumber(m[1], 0, 23),\n    m[2] ? parseNumber(m[2], 0, 59) : 0,\n    m[3] ? parseNumber(m[3], 0, 59) : 0,\n    m[4] ? parseNumber(m[4], 0, Infinity) * 1000 : 0\n  );\n}\n\n/** Parses an ISO 8601 date string, with no time components. */\nexport function parseDate(value: string): CalendarDate {\n  let m = value.match(DATE_RE);\n  if (!m) {\n    if (ABSOLUTE_RE.test(value)) {\n      throw new Error(`Invalid ISO 8601 date string: ${value}. Use parseAbsolute() instead.`);\n    }\n    throw new Error('Invalid ISO 8601 date string: ' + value);\n  }\n\n  let date: Mutable<CalendarDate> = new CalendarDate(\n    parseNumber(m[1], 0, 9999),\n    parseNumber(m[2], 1, 12),\n    1\n  );\n\n  date.day = parseNumber(m[3], 1, date.calendar.getDaysInMonth(date));\n  return date as CalendarDate;\n}\n\n/** Parses an ISO 8601 date and time string, with no time zone. */\nexport function parseDateTime(value: string): CalendarDateTime {\n  let m = value.match(DATE_TIME_RE);\n  if (!m) {\n    if (ABSOLUTE_RE.test(value)) {\n      throw new Error(`Invalid ISO 8601 date time string: ${value}. Use parseAbsolute() instead.`);\n    }\n    throw new Error('Invalid ISO 8601 date time string: ' + value);\n  }\n\n  let year = parseNumber(m[1], -9999, 9999);\n  let era = year < 1 ? 'BC' : 'AD';\n\n  let date: Mutable<CalendarDateTime> = new CalendarDateTime(\n    era,\n    year < 1 ? -year + 1 : year,\n    parseNumber(m[2], 1, 12),\n    1,\n    m[4] ? parseNumber(m[4], 0, 23) : 0,\n    m[5] ? parseNumber(m[5], 0, 59) : 0,\n    m[6] ? parseNumber(m[6], 0, 59) : 0,\n    m[7] ? parseNumber(m[7], 0, Infinity) * 1000 : 0\n  );\n\n  date.day = parseNumber(m[3], 0, date.calendar.getDaysInMonth(date));\n  return date as CalendarDateTime;\n}\n\n/**\n * Parses an ISO 8601 date and time string with a time zone extension and optional UTC offset\n * (e.g. \"2021-11-07T00:45[America/Los_Angeles]\" or \"2021-11-07T00:45-07:00[America/Los_Angeles]\").\n * Ambiguous times due to daylight saving time transitions are resolved according to the `disambiguation`\n * parameter.\n */\nexport function parseZonedDateTime(value: string, disambiguation?: Disambiguation): ZonedDateTime {\n  let m = value.match(ZONED_DATE_TIME_RE);\n  if (!m) {\n    throw new Error('Invalid ISO 8601 date time string: ' + value);\n  }\n\n  let year = parseNumber(m[1], -9999, 9999);\n  let era = year < 1 ? 'BC' : 'AD';\n\n  let date: Mutable<ZonedDateTime> = new ZonedDateTime(\n    era,\n    year < 1 ? -year + 1 : year,\n    parseNumber(m[2], 1, 12),\n    1,\n    m[11],\n    0,\n    m[4] ? parseNumber(m[4], 0, 23) : 0,\n    m[5] ? parseNumber(m[5], 0, 59) : 0,\n    m[6] ? parseNumber(m[6], 0, 59) : 0,\n    m[7] ? parseNumber(m[7], 0, Infinity) * 1000 : 0\n  );\n\n  date.day = parseNumber(m[3], 0, date.calendar.getDaysInMonth(date));\n\n  let plainDateTime = toCalendarDateTime(date as ZonedDateTime);\n\n  let ms: number;\n  if (m[8]) {\n    let hourOffset = parseNumber(m[8], -23, 23);\n    date.offset = Math.sign(hourOffset) * (Math.abs(hourOffset) * 60 * 60 * 1000 + parseNumber(m[9] ?? '0', 0, 59) * 60 * 1000 + parseNumber(m[10] ?? '0', 0, 59) * 1000);\n    ms = epochFromDate(date as ZonedDateTime) - date.offset;\n\n    // Validate offset against parsed date.\n    let absolutes = possibleAbsolutes(plainDateTime, date.timeZone);\n    if (!absolutes.includes(ms)) {\n      throw new Error(`Offset ${offsetToString(date.offset)} is invalid for ${dateTimeToString(date)} in ${date.timeZone}`);\n    }\n  } else {\n    // Convert to absolute and back to fix invalid times due to DST.\n    ms = toAbsolute(toCalendarDateTime(plainDateTime), date.timeZone, disambiguation);\n  }\n\n  return fromAbsolute(ms, date.timeZone);\n}\n\n/**\n * Parses an ISO 8601 date and time string with a UTC offset (e.g. \"2021-11-07T07:45:00Z\"\n * or \"2021-11-07T07:45:00-07:00\"). The result is converted to the provided time zone.\n */\nexport function parseAbsolute(value: string, timeZone: string): ZonedDateTime {\n  let m = value.match(ABSOLUTE_RE);\n  if (!m) {\n    throw new Error('Invalid ISO 8601 date time string: ' + value);\n  }\n\n  let year = parseNumber(m[1], -9999, 9999);\n  let era = year < 1 ? 'BC' : 'AD';\n\n  let date: Mutable<ZonedDateTime> = new ZonedDateTime(\n    era,\n    year < 1 ? -year + 1 : year,\n    parseNumber(m[2], 1, 12),\n    1,\n    timeZone,\n    0,\n    m[4] ? parseNumber(m[4], 0, 23) : 0,\n    m[5] ? parseNumber(m[5], 0, 59) : 0,\n    m[6] ? parseNumber(m[6], 0, 59) : 0,\n    m[7] ? parseNumber(m[7], 0, Infinity) * 1000 : 0\n  );\n\n  date.day = parseNumber(m[3], 0, date.calendar.getDaysInMonth(date));\n\n  if (m[8]) {\n    date.offset = parseNumber(m[8], -23, 23) * 60 * 60 * 1000 + parseNumber(m[9] ?? '0', 0, 59) * 60 * 1000;\n  }\n\n  return toTimeZone(date as ZonedDateTime, timeZone);\n}\n\n/**\n * Parses an ISO 8601 date and time string with a UTC offset (e.g. \"2021-11-07T07:45:00Z\"\n * or \"2021-11-07T07:45:00-07:00\"). The result is converted to the user's local time zone.\n */\nexport function parseAbsoluteToLocal(value: string): ZonedDateTime {\n  return parseAbsolute(value, getLocalTimeZone());\n}\n\nfunction parseNumber(value: string, min: number, max: number) {\n  let val = Number(value);\n  if (val < min || val > max) {\n    throw new RangeError(`Value out of range: ${min} <= ${val} <= ${max}`);\n  }\n\n  return val;\n}\n\nexport function timeToString(time: Time): string {\n  return `${String(time.hour).padStart(2, '0')}:${String(time.minute).padStart(2, '0')}:${String(time.second).padStart(2, '0')}${time.millisecond ? String(time.millisecond / 1000).slice(1) : ''}`;\n}\n\nexport function dateToString(date: CalendarDate): string {\n  let gregorianDate = toCalendar(date, new GregorianCalendar());\n  let year: string;\n  if (gregorianDate.era === 'BC') {\n    year = gregorianDate.year === 1\n      ? '0000'\n      : '-' + String(Math.abs(1 - gregorianDate.year)).padStart(6, '00');\n  } else {\n    year = String(gregorianDate.year).padStart(4, '0');\n  }\n  return `${year}-${String(gregorianDate.month).padStart(2, '0')}-${String(gregorianDate.day).padStart(2, '0')}`;\n}\n\nexport function dateTimeToString(date: AnyDateTime): string {\n  // @ts-ignore\n  return `${dateToString(date)}T${timeToString(date)}`;\n}\n\nfunction offsetToString(offset: number) {\n  let sign = Math.sign(offset) < 0 ? '-' : '+';\n  offset = Math.abs(offset);\n  let offsetHours = Math.floor(offset / (60 * 60 * 1000));\n  let offsetMinutes = Math.floor((offset % (60 * 60 * 1000)) / (60 * 1000));\n  let offsetSeconds = Math.floor((offset % (60 * 60 * 1000)) % (60 * 1000) / 1000);\n  let stringOffset = `${sign}${String(offsetHours).padStart(2, '0')}:${String(offsetMinutes).padStart(2, '0')}`;\n  if (offsetSeconds !== 0) {\n    stringOffset += `:${String(offsetSeconds).padStart(2, '0')}`;\n  }\n\n  return stringOffset;\n}\n\nexport function zonedDateTimeToString(date: ZonedDateTime): string {\n  return `${dateTimeToString(date)}${offsetToString(date.offset)}[${date.timeZone}]`;\n}\n\n/**\n * Parses an ISO 8601 duration string (e.g. \"P3Y6M6W4DT12H30M5S\").\n * @param value An ISO 8601 duration string.\n * @returns A DateTimeDuration object.\n */\nexport function parseDuration(value: string): Required<DateTimeDuration> {\n  const match = value.match(DATE_TIME_DURATION_RE);\n\n  if (!match) {\n    throw new Error(`Invalid ISO 8601 Duration string: ${value}`);\n  }\n\n  const parseDurationGroup = (\n    group: string | undefined,\n    isNegative: boolean\n  ): number => {\n    if (!group) {\n      return 0;\n    }\n    try {\n      const sign = isNegative ? -1 : 1;\n      return sign * Number(group.replace(',', '.'));\n    } catch {\n      throw new Error(`Invalid ISO 8601 Duration string: ${value}`);\n    }\n  };\n\n  const isNegative = !!match.groups?.negative;\n\n  const hasRequiredGroups = requiredDurationGroups.some(group => match.groups?.[group]);\n\n  if (!hasRequiredGroups) {\n    throw new Error(`Invalid ISO 8601 Duration string: ${value}`);\n  }\n\n  const durationStringIncludesTime = match.groups?.time;\n\n  if (durationStringIncludesTime) {\n    const hasRequiredDurationTimeGroups = requiredDurationTimeGroups.some(group => match.groups?.[group]);\n    if (!hasRequiredDurationTimeGroups) {\n      throw new Error(`Invalid ISO 8601 Duration string: ${value}`);\n    }\n  }\n\n  const duration: Mutable<DateTimeDuration> = {\n    years: parseDurationGroup(match.groups?.years, isNegative),\n    months: parseDurationGroup(match.groups?.months, isNegative),\n    weeks: parseDurationGroup(match.groups?.weeks, isNegative),\n    days: parseDurationGroup(match.groups?.days, isNegative),\n    hours: parseDurationGroup(match.groups?.hours, isNegative),\n    minutes: parseDurationGroup(match.groups?.minutes, isNegative),\n    seconds: parseDurationGroup(match.groups?.seconds, isNegative)\n  };\n\n  if (duration.hours !== undefined && ((duration.hours % 1) !== 0) && (duration.minutes || duration.seconds)) {\n    throw new Error(`Invalid ISO 8601 Duration string: ${value} - only the smallest unit can be fractional`);\n  }\n\n  if (duration.minutes !== undefined && ((duration.minutes % 1) !== 0) && duration.seconds) {\n    throw new Error(`Invalid ISO 8601 Duration string: ${value} - only the smallest unit can be fractional`);\n  }\n\n  return duration as Required<DateTimeDuration>;\n}\n", "function _check_private_redeclaration(obj, privateCollection) {\n    if (privateCollection.has(obj)) {\n        throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n    }\n}\nexport { _check_private_redeclaration as _ };\n", "import { _ as _check_private_redeclaration } from \"./_check_private_redeclaration.js\";\n\nfunction _class_private_field_init(obj, privateMap, value) {\n    _check_private_redeclaration(obj, privateMap);\n    privateMap.set(obj, value);\n}\nexport { _class_private_field_init as _ };\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {add, addTime, addZoned, constrain, constrainTime, cycleDate, cycleTime, cycleZoned, set, setTime, setZoned, subtract, subtractTime, subtractZoned} from './manipulation';\nimport {AnyCalendarDate, AnyTime, Calendar, CycleOptions, CycleTimeOptions, DateDuration, DateField, DateFields, DateTimeDuration, Disambiguation, TimeDuration, TimeField, TimeFields} from './types';\nimport {compareDate, compareTime} from './queries';\nimport {dateTimeToString, dateToString, timeToString, zonedDateTimeToString} from './string';\nimport {GregorianCalendar} from './calendars/GregorianCalendar';\nimport {toCalendarDateTime, toDate, toZoned, zonedToDate} from './conversion';\n\nfunction shiftArgs(args: any[]) {\n  let calendar: Calendar = typeof args[0] === 'object'\n    ? args.shift()\n    : new GregorianCalendar();\n\n  let era: string;\n  if (typeof args[0] === 'string') {\n    era = args.shift();\n  } else {\n    let eras = calendar.getEras();\n    era = eras[eras.length - 1];\n  }\n\n  let year = args.shift();\n  let month = args.shift();\n  let day = args.shift();\n\n  return [calendar, era, year, month, day];\n}\n\n/** A CalendarDate represents a date without any time components in a specific calendar system. */\nexport class CalendarDate {\n  // This prevents TypeScript from allowing other types with the same fields to match.\n  // i.e. a ZonedDateTime should not be be passable to a parameter that expects CalendarDate.\n  // If that behavior is desired, use the AnyCalendarDate interface instead.\n  // @ts-ignore\n  #type;\n  /** The calendar system associated with this date, e.g. Gregorian. */\n  public readonly calendar: Calendar;\n  /** The calendar era for this date, e.g. \"BC\" or \"AD\". */\n  public readonly era: string;\n  /** The year of this date within the era. */\n  public readonly year: number;\n  /**\n   * The month number within the year. Note that some calendar systems such as Hebrew\n   * may have a variable number of months per year. Therefore, month numbers may not\n   * always correspond to the same month names in different years.\n   */\n  public readonly month: number;\n  /** The day number within the month. */\n  public readonly day: number;\n\n  constructor(year: number, month: number, day: number);\n  constructor(era: string, year: number, month: number, day: number);\n  constructor(calendar: Calendar, year: number, month: number, day: number);\n  constructor(calendar: Calendar, era: string, year: number, month: number, day: number);\n  constructor(...args: any[]) {\n    let [calendar, era, year, month, day] = shiftArgs(args);\n    this.calendar = calendar;\n    this.era = era;\n    this.year = year;\n    this.month = month;\n    this.day = day;\n\n    constrain(this);\n  }\n\n  /** Returns a copy of this date. */\n  copy(): CalendarDate {\n    if (this.era) {\n      return new CalendarDate(this.calendar, this.era, this.year, this.month, this.day);\n    } else {\n      return new CalendarDate(this.calendar, this.year, this.month, this.day);\n    }\n  }\n\n  /** Returns a new `CalendarDate` with the given duration added to it. */\n  add(duration: DateDuration): CalendarDate {\n    return add(this, duration);\n  }\n\n  /** Returns a new `CalendarDate` with the given duration subtracted from it. */\n  subtract(duration: DateDuration): CalendarDate {\n    return subtract(this, duration);\n  }\n\n  /** Returns a new `CalendarDate` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n  set(fields: DateFields): CalendarDate {\n    return set(this, fields);\n  }\n\n  /**\n   * Returns a new `CalendarDate` with the given field adjusted by a specified amount.\n   * When the resulting value reaches the limits of the field, it wraps around.\n   */\n  cycle(field: DateField, amount: number, options?: CycleOptions): CalendarDate {\n    return cycleDate(this, field, amount, options);\n  }\n\n  /** Converts the date to a native JavaScript Date object, with the time set to midnight in the given time zone. */\n  toDate(timeZone: string): Date {\n    return toDate(this, timeZone);\n  }\n\n  /** Converts the date to an ISO 8601 formatted string. */\n  toString(): string {\n    return dateToString(this);\n  }\n\n  /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */\n  compare(b: AnyCalendarDate): number {\n    return compareDate(this, b);\n  }\n}\n\n/** A Time represents a clock time without any date components. */\nexport class Time {\n  // This prevents TypeScript from allowing other types with the same fields to match.\n  // @ts-ignore\n  #type;\n  /** The hour, numbered from 0 to 23. */\n  public readonly hour: number;\n  /** The minute in the hour. */\n  public readonly minute: number;\n  /** The second in the minute. */\n  public readonly second: number;\n  /** The millisecond in the second. */\n  public readonly millisecond: number;\n\n  constructor(\n    hour: number = 0,\n    minute: number = 0,\n    second: number = 0,\n    millisecond: number = 0\n  ) {\n    this.hour = hour;\n    this.minute = minute;\n    this.second = second;\n    this.millisecond = millisecond;\n    constrainTime(this);\n  }\n\n  /** Returns a copy of this time. */\n  copy(): Time {\n    return new Time(this.hour, this.minute, this.second, this.millisecond);\n  }\n\n  /** Returns a new `Time` with the given duration added to it. */\n  add(duration: TimeDuration): Time {\n    return addTime(this, duration);\n  }\n\n  /** Returns a new `Time` with the given duration subtracted from it. */\n  subtract(duration: TimeDuration): Time {\n    return subtractTime(this, duration);\n  }\n\n  /** Returns a new `Time` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n  set(fields: TimeFields): Time {\n    return setTime(this, fields);\n  }\n\n  /**\n   * Returns a new `Time` with the given field adjusted by a specified amount.\n   * When the resulting value reaches the limits of the field, it wraps around.\n   */\n  cycle(field: TimeField, amount: number, options?: CycleTimeOptions): Time {\n    return cycleTime(this, field, amount, options);\n  }\n\n  /** Converts the time to an ISO 8601 formatted string. */\n  toString(): string {\n    return timeToString(this);\n  }\n\n  /** Compares this time with another. A negative result indicates that this time is before the given one, and a positive time indicates that it is after. */\n  compare(b: AnyTime): number {\n    return compareTime(this, b);\n  }\n}\n\n/** A CalendarDateTime represents a date and time without a time zone, in a specific calendar system. */\nexport class CalendarDateTime {\n  // This prevents TypeScript from allowing other types with the same fields to match.\n  // @ts-ignore\n  #type;\n  /** The calendar system associated with this date, e.g. Gregorian. */\n  public readonly calendar: Calendar;\n  /** The calendar era for this date, e.g. \"BC\" or \"AD\". */\n  public readonly era: string;\n  /** The year of this date within the era. */\n  public readonly year: number;\n  /**\n   * The month number within the year. Note that some calendar systems such as Hebrew\n   * may have a variable number of months per year. Therefore, month numbers may not\n   * always correspond to the same month names in different years.\n   */\n  public readonly month: number;\n  /** The day number within the month. */\n  public readonly day: number;\n  /** The hour in the day, numbered from 0 to 23. */\n  public readonly hour: number;\n  /** The minute in the hour. */\n  public readonly minute: number;\n  /** The second in the minute. */\n  public readonly second: number;\n  /** The millisecond in the second. */\n  public readonly millisecond: number;\n\n  constructor(year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(era: string, year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(calendar: Calendar, year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(calendar: Calendar, era: string, year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(...args: any[]) {\n    let [calendar, era, year, month, day] = shiftArgs(args);\n    this.calendar = calendar;\n    this.era = era;\n    this.year = year;\n    this.month = month;\n    this.day = day;\n    this.hour = args.shift() || 0;\n    this.minute = args.shift() || 0;\n    this.second = args.shift() || 0;\n    this.millisecond = args.shift() || 0;\n\n    constrain(this);\n  }\n\n  /** Returns a copy of this date. */\n  copy(): CalendarDateTime {\n    if (this.era) {\n      return new CalendarDateTime(this.calendar, this.era, this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond);\n    } else {\n      return new CalendarDateTime(this.calendar, this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond);\n    }\n  }\n\n  /** Returns a new `CalendarDateTime` with the given duration added to it. */\n  add(duration: DateTimeDuration): CalendarDateTime {\n    return add(this, duration);\n  }\n\n  /** Returns a new `CalendarDateTime` with the given duration subtracted from it. */\n  subtract(duration: DateTimeDuration): CalendarDateTime {\n    return subtract(this, duration);\n  }\n\n  /** Returns a new `CalendarDateTime` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n  set(fields: DateFields & TimeFields): CalendarDateTime {\n    return set(setTime(this, fields), fields);\n  }\n\n  /**\n   * Returns a new `CalendarDateTime` with the given field adjusted by a specified amount.\n   * When the resulting value reaches the limits of the field, it wraps around.\n   */\n  cycle(field: DateField | TimeField, amount: number, options?: CycleTimeOptions): CalendarDateTime {\n    switch (field) {\n      case 'era':\n      case 'year':\n      case 'month':\n      case 'day':\n        return cycleDate(this, field, amount, options);\n      default:\n        return cycleTime(this, field, amount, options);\n    }\n  }\n\n  /** Converts the date to a native JavaScript Date object in the given time zone. */\n  toDate(timeZone: string, disambiguation?: Disambiguation): Date {\n    return toDate(this, timeZone, disambiguation);\n  }\n\n  /** Converts the date to an ISO 8601 formatted string. */\n  toString(): string {\n    return dateTimeToString(this);\n  }\n\n  /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */\n  compare(b: CalendarDate | CalendarDateTime | ZonedDateTime): number {\n    let res = compareDate(this, b);\n    if (res === 0) {\n      return compareTime(this, toCalendarDateTime(b));\n    }\n\n    return res;\n  }\n}\n\n/** A ZonedDateTime represents a date and time in a specific time zone and calendar system. */\nexport class ZonedDateTime {\n  // This prevents TypeScript from allowing other types with the same fields to match.\n  // @ts-ignore\n  #type;\n  /** The calendar system associated with this date, e.g. Gregorian. */\n  public readonly calendar: Calendar;\n  /** The calendar era for this date, e.g. \"BC\" or \"AD\". */\n  public readonly era: string;\n  /** The year of this date within the era. */\n  public readonly year: number;\n  /**\n   * The month number within the year. Note that some calendar systems such as Hebrew\n   * may have a variable number of months per year. Therefore, month numbers may not\n   * always correspond to the same month names in different years.\n   */\n  public readonly month: number;\n  /** The day number within the month. */\n  public readonly day: number;\n  /** The hour in the day, numbered from 0 to 23. */\n  public readonly hour: number;\n  /** The minute in the hour. */\n  public readonly minute: number;\n  /** The second in the minute. */\n  public readonly second: number;\n  /** The millisecond in the second. */\n  public readonly millisecond: number;\n  /** The IANA time zone identifier that this date and time is represented in. */\n  public readonly timeZone: string;\n  /** The UTC offset for this time, in milliseconds. */\n  public readonly offset: number;\n\n  constructor(year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(era: string, year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(calendar: Calendar, year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(calendar: Calendar, era: string, year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(...args: any[]) {\n    let [calendar, era, year, month, day] = shiftArgs(args);\n    let timeZone = args.shift();\n    let offset = args.shift();\n    this.calendar = calendar;\n    this.era = era;\n    this.year = year;\n    this.month = month;\n    this.day = day;\n    this.timeZone = timeZone;\n    this.offset = offset;\n    this.hour = args.shift() || 0;\n    this.minute = args.shift() || 0;\n    this.second = args.shift() || 0;\n    this.millisecond = args.shift() || 0;\n\n    constrain(this);\n  }\n\n  /** Returns a copy of this date. */\n  copy(): ZonedDateTime {\n    if (this.era) {\n      return new ZonedDateTime(this.calendar, this.era, this.year, this.month, this.day, this.timeZone, this.offset, this.hour, this.minute, this.second, this.millisecond);\n    } else {\n      return new ZonedDateTime(this.calendar, this.year, this.month, this.day, this.timeZone, this.offset, this.hour, this.minute, this.second, this.millisecond);\n    }\n  }\n\n  /** Returns a new `ZonedDateTime` with the given duration added to it. */\n  add(duration: DateTimeDuration): ZonedDateTime {\n    return addZoned(this, duration);\n  }\n\n  /** Returns a new `ZonedDateTime` with the given duration subtracted from it. */\n  subtract(duration: DateTimeDuration): ZonedDateTime {\n    return subtractZoned(this, duration);\n  }\n\n  /** Returns a new `ZonedDateTime` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n  set(fields: DateFields & TimeFields, disambiguation?: Disambiguation): ZonedDateTime {\n    return setZoned(this, fields, disambiguation);\n  }\n\n  /**\n   * Returns a new `ZonedDateTime` with the given field adjusted by a specified amount.\n   * When the resulting value reaches the limits of the field, it wraps around.\n   */\n  cycle(field: DateField | TimeField, amount: number, options?: CycleTimeOptions): ZonedDateTime {\n    return cycleZoned(this, field, amount, options);\n  }\n\n  /** Converts the date to a native JavaScript Date object. */\n  toDate(): Date {\n    return zonedToDate(this);\n  }\n\n   /** Converts the date to an ISO 8601 formatted string, including the UTC offset and time zone identifier. */\n  toString(): string {\n    return zonedDateTimeToString(this);\n  }\n\n   /** Converts the date to an ISO 8601 formatted string in UTC. */\n  toAbsoluteString(): string {\n    return this.toDate().toISOString();\n  }\n\n  /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */\n  compare(b: CalendarDate | CalendarDateTime | ZonedDateTime): number {\n    // TODO: Is this a bad idea??\n    return this.toDate().getTime() - toZoned(b, this.timeZone).toDate().getTime();\n  }\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nlet formatterCache = new Map<string, Intl.DateTimeFormat>();\n\ninterface DateRangeFormatPart extends Intl.DateTimeFormatPart {\n  source: 'startRange' | 'endRange' | 'shared'\n}\n\n/** A wrapper around Intl.DateTimeFormat that fixes various browser bugs, and polyfills new features. */\nexport class DateFormatter implements Intl.DateTimeFormat {\n  private formatter: Intl.DateTimeFormat;\n  private options: Intl.DateTimeFormatOptions;\n  private resolvedHourCycle: Intl.DateTimeFormatOptions['hourCycle'];\n\n  constructor(locale: string, options: Intl.DateTimeFormatOptions = {}) {\n    this.formatter = getCachedDateFormatter(locale, options);\n    this.options = options;\n  }\n\n  /** Formats a date as a string according to the locale and format options passed to the constructor. */\n  format(value: Date): string {\n    return this.formatter.format(value);\n  }\n\n  /** Formats a date to an array of parts such as separators, numbers, punctuation, and more. */\n  formatToParts(value: Date): Intl.DateTimeFormatPart[] {\n    return this.formatter.formatToParts(value);\n  }\n\n  /** Formats a date range as a string. */\n  formatRange(start: Date, end: Date): string {\n    // @ts-ignore\n    if (typeof this.formatter.formatRange === 'function') {\n      // @ts-ignore\n      return this.formatter.formatRange(start, end);\n    }\n\n    if (end < start) {\n      throw new RangeError('End date must be >= start date');\n    }\n\n    // Very basic fallback for old browsers.\n    return `${this.formatter.format(start)} – ${this.formatter.format(end)}`;\n  }\n\n  /** Formats a date range as an array of parts. */\n  formatRangeToParts(start: Date, end: Date): DateRangeFormatPart[] {\n    // @ts-ignore\n    if (typeof this.formatter.formatRangeToParts === 'function') {\n      // @ts-ignore\n      return this.formatter.formatRangeToParts(start, end);\n    }\n\n    if (end < start) {\n      throw new RangeError('End date must be >= start date');\n    }\n\n    let startParts = this.formatter.formatToParts(start);\n    let endParts = this.formatter.formatToParts(end);\n    return [\n      ...startParts.map(p => ({...p, source: 'startRange'} as DateRangeFormatPart)),\n      {type: 'literal', value: ' – ', source: 'shared'},\n      ...endParts.map(p => ({...p, source: 'endRange'} as DateRangeFormatPart))\n    ];\n  }\n\n  /** Returns the resolved formatting options based on the values passed to the constructor. */\n  resolvedOptions(): Intl.ResolvedDateTimeFormatOptions {\n    let resolvedOptions = this.formatter.resolvedOptions();\n    if (hasBuggyResolvedHourCycle()) {\n      if (!this.resolvedHourCycle) {\n        this.resolvedHourCycle = getResolvedHourCycle(resolvedOptions.locale, this.options);\n      }\n      resolvedOptions.hourCycle = this.resolvedHourCycle;\n      resolvedOptions.hour12 = this.resolvedHourCycle === 'h11' || this.resolvedHourCycle === 'h12';\n    }\n\n    // Safari uses a different name for the Ethiopic (Amete Alem) calendar.\n    // https://bugs.webkit.org/show_bug.cgi?id=241564\n    if (resolvedOptions.calendar === 'ethiopic-amete-alem') {\n      resolvedOptions.calendar = 'ethioaa';\n    }\n\n    return resolvedOptions;\n  }\n}\n\n// There are multiple bugs involving the hour12 and hourCycle options in various browser engines.\n//   - Chrome [1] (and the ECMA 402 spec [2]) resolve hour12: false in English and other locales to h24 (24:00 - 23:59)\n//     rather than h23 (00:00 - 23:59). Same can happen with hour12: true in French, which Chrome resolves to h11 (00:00 - 11:59)\n//     rather than h12 (12:00 - 11:59).\n//   - WebKit returns an incorrect hourCycle resolved option in the French locale due to incorrect parsing of 'h' literal\n//     in the resolved pattern. It also formats incorrectly when specifying the hourCycle option for the same reason. [3]\n// [1] https://bugs.chromium.org/p/chromium/issues/detail?id=1045791\n// [2] https://github.com/tc39/ecma402/issues/402\n// [3] https://bugs.webkit.org/show_bug.cgi?id=229313\n\n// https://github.com/unicode-org/cldr/blob/018b55eff7ceb389c7e3fc44e2f657eae3b10b38/common/supplemental/supplementalData.xml#L4774-L4802\nconst hour12Preferences = {\n  true: {\n    // Only Japanese uses the h11 style for 12 hour time. All others use h12.\n    ja: 'h11'\n  },\n  false: {\n    // All locales use h23 for 24 hour time. None use h24.\n  }\n};\n\nfunction getCachedDateFormatter(locale: string, options: Intl.DateTimeFormatOptions = {}): Intl.DateTimeFormat {\n  // Work around buggy hour12 behavior in Chrome / ECMA 402 spec by using hourCycle instead.\n  // Only apply the workaround if the issue is detected, because the hourCycle option is buggy in Safari.\n  if (typeof options.hour12 === 'boolean' && hasBuggyHour12Behavior()) {\n    options = {...options};\n    let pref = hour12Preferences[String(options.hour12)][locale.split('-')[0]];\n    let defaultHourCycle = options.hour12 ? 'h12' : 'h23';\n    options.hourCycle = pref ?? defaultHourCycle;\n    delete options.hour12;\n  }\n\n  let cacheKey = locale + (options ? Object.entries(options).sort((a, b) => a[0] < b[0] ? -1 : 1).join() : '');\n  if (formatterCache.has(cacheKey)) {\n    return formatterCache.get(cacheKey)!;\n  }\n\n  let numberFormatter = new Intl.DateTimeFormat(locale, options);\n  formatterCache.set(cacheKey, numberFormatter);\n  return numberFormatter;\n}\n\nlet _hasBuggyHour12Behavior: boolean | null = null;\nfunction hasBuggyHour12Behavior() {\n  if (_hasBuggyHour12Behavior == null) {\n    _hasBuggyHour12Behavior = new Intl.DateTimeFormat('en-US', {\n      hour: 'numeric',\n      hour12: false\n    }).format(new Date(2020, 2, 3, 0)) === '24';\n  }\n\n  return _hasBuggyHour12Behavior;\n}\n\nlet _hasBuggyResolvedHourCycle: boolean | null = null;\nfunction hasBuggyResolvedHourCycle() {\n  if (_hasBuggyResolvedHourCycle == null) {\n    _hasBuggyResolvedHourCycle = new Intl.DateTimeFormat('fr', {\n      hour: 'numeric',\n      hour12: false\n    }).resolvedOptions().hourCycle === 'h12';\n  }\n\n  return _hasBuggyResolvedHourCycle;\n}\n\nfunction getResolvedHourCycle(locale: string, options: Intl.DateTimeFormatOptions) {\n  if (!options.timeStyle && !options.hour) {\n    return undefined;\n  }\n\n  // Work around buggy results in resolved hourCycle and hour12 options in WebKit.\n  // Format the minimum possible hour and maximum possible hour in a day and parse the results.\n  locale = locale.replace(/(-u-)?-nu-[a-zA-Z0-9]+/, '');\n  locale += (locale.includes('-u-') ? '' : '-u') + '-nu-latn';\n  let formatter = getCachedDateFormatter(locale, {\n    ...options,\n    timeZone: undefined // use local timezone\n  });\n\n  let min = parseInt(formatter.formatToParts(new Date(2020, 2, 3, 0)).find(p => p.type === 'hour')!.value, 10);\n  let max = parseInt(formatter.formatToParts(new Date(2020, 2, 3, 23)).find(p => p.type === 'hour')!.value, 10);\n\n  if (min === 0 && max === 23) {\n    return 'h23';\n  }\n\n  if (min === 24 && max === 23) {\n    return 'h24';\n  }\n\n  if (min === 0 && max === 11) {\n    return 'h11';\n  }\n\n  if (min === 12 && max === 11) {\n    return 'h12';\n  }\n\n  throw new Error('Unexpected hour cycle result');\n}\n", "import { startOfYear, startOfMonth, startOfWeek, maxDate, toCalendarDate, minDate, isSameDay, toCalendarDateTime, today, DateFormatter, endOfMonth, endOfWeek, getWeeksInMonth, getLocalTimeZone, toCalendar, CalendarDate, now, endOfYear } from '@internationalized/date';\n\n// src/constrain.ts\nfunction alignCenter(date, duration, locale, min, max) {\n  const halfDuration = {};\n  for (let prop in duration) {\n    const key = prop;\n    const value = duration[key];\n    if (value == null) continue;\n    halfDuration[key] = Math.floor(value / 2);\n    if (halfDuration[key] > 0 && value % 2 === 0) {\n      halfDuration[key]--;\n    }\n  }\n  const aligned = alignStart(date, duration, locale).subtract(halfDuration);\n  return constrainStart(date, aligned, duration, locale, min, max);\n}\nfunction alignStart(date, duration, locale, min, max) {\n  let aligned = date;\n  if (duration.years) {\n    aligned = startOfYear(date);\n  } else if (duration.months) {\n    aligned = startOfMonth(date);\n  } else if (duration.weeks) {\n    aligned = startOfWeek(date, locale);\n  }\n  return constrainStart(date, aligned, duration, locale, min, max);\n}\nfunction alignEnd(date, duration, locale, min, max) {\n  let d = { ...duration };\n  if (d.days) {\n    d.days--;\n  } else if (d.weeks) {\n    d.weeks--;\n  } else if (d.months) {\n    d.months--;\n  } else if (d.years) {\n    d.years--;\n  }\n  let aligned = alignStart(date, duration, locale).subtract(d);\n  return constrainStart(date, aligned, duration, locale, min, max);\n}\nfunction constrainStart(date, aligned, duration, locale, min, max) {\n  if (min && date.compare(min) >= 0) {\n    aligned = maxDate(aligned, alignStart(toCalendarDate(min), duration, locale));\n  }\n  if (max && date.compare(max) <= 0) {\n    aligned = minDate(aligned, alignEnd(toCalendarDate(max), duration, locale));\n  }\n  return aligned;\n}\nfunction constrainValue(date, minValue, maxValue) {\n  let constrainedDate = toCalendarDate(date);\n  if (minValue) {\n    constrainedDate = maxDate(constrainedDate, toCalendarDate(minValue));\n  }\n  if (maxValue) {\n    constrainedDate = minDate(constrainedDate, toCalendarDate(maxValue));\n  }\n  return constrainedDate;\n}\n\n// src/align.ts\nfunction alignDate(date, alignment, duration, locale, min, max) {\n  switch (alignment) {\n    case \"start\":\n      return alignStart(date, duration, locale, min, max);\n    case \"end\":\n      return alignEnd(date, duration, locale, min, max);\n    case \"center\":\n    default:\n      return alignCenter(date, duration, locale, min, max);\n  }\n}\nfunction alignStartDate(date, startDate, endDate, duration, locale, min, max) {\n  if (date.compare(startDate) < 0) {\n    return alignEnd(date, duration, locale, min, max);\n  }\n  if (date.compare(endDate) > 0) {\n    return alignStart(date, duration, locale, min, max);\n  }\n  return startDate;\n}\nfunction isDateEqual(dateA, dateB) {\n  if (dateA == null || dateB == null) return dateA === dateB;\n  return isSameDay(dateA, dateB);\n}\nfunction isDateUnavailable(date, isUnavailable, locale, minValue, maxValue) {\n  if (!date) return false;\n  if (isUnavailable?.(date, locale)) return true;\n  return isDateOutsideRange(date, minValue, maxValue);\n}\nfunction isDateOutsideRange(date, startDate, endDate) {\n  return startDate != null && date.compare(startDate) < 0 || endDate != null && date.compare(endDate) > 0;\n}\nfunction isPreviousRangeInvalid(startDate, minValue, maxValue) {\n  const prevDate = startDate.subtract({ days: 1 });\n  return isSameDay(prevDate, startDate) || isDateOutsideRange(prevDate, minValue, maxValue);\n}\nfunction isNextRangeInvalid(endDate, minValue, maxValue) {\n  const nextDate = endDate.add({ days: 1 });\n  return isSameDay(nextDate, endDate) || isDateOutsideRange(nextDate, minValue, maxValue);\n}\n\n// src/duration.ts\nfunction getUnitDuration(duration) {\n  let clone = { ...duration };\n  for (let key in clone) clone[key] = 1;\n  return clone;\n}\nfunction getEndDate(startDate, duration) {\n  let clone = { ...duration };\n  if (clone.days) clone.days--;\n  else clone.days = -1;\n  return startDate.add(clone);\n}\n\n// src/get-era-format.ts\nfunction getEraFormat(date) {\n  return date?.calendar.identifier === \"gregory\" && date.era === \"BC\" ? \"short\" : void 0;\n}\n\n// src/formatter.ts\nfunction getDayFormatter(locale, timeZone) {\n  const date = toCalendarDateTime(today(timeZone));\n  return new DateFormatter(locale, {\n    weekday: \"long\",\n    month: \"long\",\n    year: \"numeric\",\n    day: \"numeric\",\n    era: getEraFormat(date),\n    timeZone\n  });\n}\nfunction getMonthFormatter(locale, timeZone) {\n  const date = today(timeZone);\n  return new DateFormatter(locale, {\n    month: \"long\",\n    year: \"numeric\",\n    era: getEraFormat(date),\n    calendar: date?.calendar.identifier,\n    timeZone\n  });\n}\n\n// src/format.ts\nfunction formatRange(startDate, endDate, formatter, toString, timeZone) {\n  let parts = formatter.formatRangeToParts(startDate.toDate(timeZone), endDate.toDate(timeZone));\n  let separatorIndex = -1;\n  for (let i = 0; i < parts.length; i++) {\n    let part = parts[i];\n    if (part.source === \"shared\" && part.type === \"literal\") {\n      separatorIndex = i;\n    } else if (part.source === \"endRange\") {\n      break;\n    }\n  }\n  let start = \"\";\n  let end = \"\";\n  for (let i = 0; i < parts.length; i++) {\n    if (i < separatorIndex) {\n      start += parts[i].value;\n    } else if (i > separatorIndex) {\n      end += parts[i].value;\n    }\n  }\n  return toString(start, end);\n}\nfunction formatSelectedDate(startDate, endDate, locale, timeZone) {\n  if (!startDate) return \"\";\n  let start = startDate;\n  let end = endDate ?? startDate;\n  let formatter = getDayFormatter(locale, timeZone);\n  if (isSameDay(start, end)) {\n    return formatter.format(start.toDate(timeZone));\n  }\n  return formatRange(start, end, formatter, (start2, end2) => `${start2} \\u2013 ${end2}`, timeZone);\n}\nfunction formatVisibleRange(startDate, endDate, locale, timeZone) {\n  const start = startDate;\n  const end = endDate ?? startDate;\n  const dayFormatter = getDayFormatter(locale, timeZone);\n  if (!isSameDay(start, startOfMonth(start))) {\n    return dayFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone));\n  }\n  const monthFormatter = getMonthFormatter(locale, timeZone);\n  if (isSameDay(end, endOfMonth(start))) {\n    return monthFormatter.format(start.toDate(timeZone));\n  }\n  if (isSameDay(end, endOfMonth(end))) {\n    return monthFormatter.formatRange(start.toDate(timeZone), end.toDate(timeZone));\n  }\n  return \"\";\n}\nvar daysOfTheWeek = [\"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\"];\nfunction normalizeFirstDayOfWeek(firstDayOfWeek) {\n  return firstDayOfWeek != null ? daysOfTheWeek[firstDayOfWeek] : void 0;\n}\nfunction getStartOfWeek(date, locale, firstDayOfWeek) {\n  const firstDay = normalizeFirstDayOfWeek(firstDayOfWeek);\n  return startOfWeek(date, locale, firstDay);\n}\nfunction getEndOfWeek(date, locale, firstDayOfWeek = 0) {\n  const firstDay = normalizeFirstDayOfWeek(firstDayOfWeek);\n  return endOfWeek(date, locale, firstDay);\n}\nfunction getDaysInWeek(weekIndex, from, locale, firstDayOfWeek) {\n  const weekDate = from.add({ weeks: weekIndex });\n  const dates = [];\n  let date = getStartOfWeek(weekDate, locale, firstDayOfWeek);\n  while (dates.length < 7) {\n    dates.push(date);\n    let nextDate = date.add({ days: 1 });\n    if (isSameDay(date, nextDate)) break;\n    date = nextDate;\n  }\n  return dates;\n}\nfunction getMonthDays(from, locale, numOfWeeks, firstDayOfWeek) {\n  const firstDay = normalizeFirstDayOfWeek(firstDayOfWeek);\n  const monthWeeks = numOfWeeks ?? getWeeksInMonth(from, locale, firstDay);\n  const weeks = [...new Array(monthWeeks).keys()];\n  return weeks.map((week) => getDaysInWeek(week, from, locale, firstDayOfWeek));\n}\nfunction getWeekdayFormats(locale, timeZone) {\n  const longFormat = new DateFormatter(locale, { weekday: \"long\", timeZone });\n  const shortFormat = new DateFormatter(locale, { weekday: \"short\", timeZone });\n  const narrowFormat = new DateFormatter(locale, { weekday: \"narrow\", timeZone });\n  return (value) => {\n    const date = value instanceof Date ? value : value.toDate(timeZone);\n    return {\n      value,\n      short: shortFormat.format(date),\n      long: longFormat.format(date),\n      narrow: narrowFormat.format(date)\n    };\n  };\n}\nfunction getWeekDays(date, startOfWeekProp, timeZone, locale) {\n  const firstDayOfWeek = getStartOfWeek(date, locale, startOfWeekProp);\n  const weeks = [...new Array(7).keys()];\n  const format = getWeekdayFormats(locale, timeZone);\n  return weeks.map((index) => format(firstDayOfWeek.add({ days: index })));\n}\nfunction getMonthNames(locale, format = \"long\") {\n  const date = new Date(2021, 0, 1);\n  const monthNames = [];\n  for (let i = 0; i < 12; i++) {\n    monthNames.push(date.toLocaleString(locale, { month: format }));\n    date.setMonth(date.getMonth() + 1);\n  }\n  return monthNames;\n}\n\n// src/date-year.ts\nfunction getYearsRange(range) {\n  const years = [];\n  for (let year = range.from; year <= range.to; year += 1) years.push(year);\n  return years;\n}\nvar FUTURE_YEAR_COERCION = 10;\nfunction normalizeYear(year) {\n  if (!year) return;\n  if (year.length === 3) return year.padEnd(4, \"0\");\n  if (year.length === 2) {\n    const currentYear = (/* @__PURE__ */ new Date()).getFullYear();\n    const currentCentury = Math.floor(currentYear / 100) * 100;\n    const twoDigitYear = parseInt(year.slice(-2), 10);\n    const fullYear = currentCentury + twoDigitYear;\n    return fullYear > currentYear + FUTURE_YEAR_COERCION ? (fullYear - 100).toString() : fullYear.toString();\n  }\n  return year;\n}\nfunction getDecadeRange(year, opts) {\n  const chunkSize = opts?.strict ? 10 : 12;\n  const computedYear = year - year % 10;\n  const years = [];\n  for (let i = 0; i < chunkSize; i += 1) {\n    const value = computedYear + i;\n    years.push(value);\n  }\n  return years;\n}\nfunction getTodayDate(timeZone) {\n  return today(timeZone ?? getLocalTimeZone());\n}\nfunction setCalendar(date, calendar) {\n  return toCalendar(toCalendarDateTime(date), calendar);\n}\nfunction setDate(date, startDate, isDateUnavailable2, locale, minValue, maxValue) {\n  let result;\n  result = constrainValue(date, minValue, maxValue);\n  result = getPreviousAvailableDate(date, startDate, locale, isDateUnavailable2);\n  return result;\n}\nfunction getPreviousAvailableDate(date, minValue, locale, isDateUnavailable2) {\n  if (!isDateUnavailable2) {\n    return date;\n  }\n  while (date.compare(minValue) >= 0 && isDateUnavailable2(date, locale)) {\n    date = date.subtract({ days: 1 });\n  }\n  if (date.compare(minValue) >= 0) {\n    return date;\n  }\n}\nfunction getAdjustedDateFn(visibleDuration, locale, minValue, maxValue) {\n  return function getDate(options) {\n    const { startDate, focusedDate } = options;\n    const endDate = getEndDate(startDate, visibleDuration);\n    if (isDateOutsideRange(focusedDate, minValue, maxValue)) {\n      return {\n        startDate,\n        focusedDate: constrainValue(focusedDate, minValue, maxValue),\n        endDate\n      };\n    }\n    if (focusedDate.compare(startDate) < 0) {\n      return {\n        startDate: alignEnd(focusedDate, visibleDuration, locale, minValue, maxValue),\n        focusedDate: constrainValue(focusedDate, minValue, maxValue),\n        endDate\n      };\n    }\n    if (focusedDate.compare(endDate) > 0) {\n      return {\n        startDate: alignStart(focusedDate, visibleDuration, locale, minValue, maxValue),\n        endDate,\n        focusedDate: constrainValue(focusedDate, minValue, maxValue)\n      };\n    }\n    return {\n      startDate,\n      endDate,\n      focusedDate: constrainValue(focusedDate, minValue, maxValue)\n    };\n  };\n}\nfunction getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue) {\n  const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue);\n  const start = startDate.add(visibleDuration);\n  return adjust({\n    focusedDate: focusedDate.add(visibleDuration),\n    startDate: alignStart(\n      constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n      visibleDuration,\n      locale\n    )\n  });\n}\nfunction getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue) {\n  const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue);\n  let start = startDate.subtract(visibleDuration);\n  return adjust({\n    focusedDate: focusedDate.subtract(visibleDuration),\n    startDate: alignStart(\n      constrainStart(focusedDate, start, visibleDuration, locale, minValue, maxValue),\n      visibleDuration,\n      locale\n    )\n  });\n}\nfunction getNextRow(focusedDate, startDate, visibleDuration, locale, minValue, maxValue) {\n  const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue);\n  if (visibleDuration.days) {\n    return getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue);\n  }\n  if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n    return adjust({\n      focusedDate: focusedDate.add({ weeks: 1 }),\n      startDate\n    });\n  }\n}\nfunction getPreviousRow(focusedDate, startDate, visibleDuration, locale, minValue, maxValue) {\n  const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue);\n  if (visibleDuration.days) {\n    return getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue);\n  }\n  if (visibleDuration.weeks || visibleDuration.months || visibleDuration.years) {\n    return adjust({\n      focusedDate: focusedDate.subtract({ weeks: 1 }),\n      startDate\n    });\n  }\n}\nfunction getSectionStart(focusedDate, startDate, visibleDuration, locale, minValue, maxValue) {\n  const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue);\n  if (visibleDuration.days) {\n    return adjust({\n      focusedDate: startDate,\n      startDate\n    });\n  }\n  if (visibleDuration.weeks) {\n    return adjust({\n      focusedDate: startOfWeek(focusedDate, locale),\n      startDate\n    });\n  }\n  if (visibleDuration.months || visibleDuration.years) {\n    return adjust({\n      focusedDate: startOfMonth(focusedDate),\n      startDate\n    });\n  }\n}\nfunction getSectionEnd(focusedDate, startDate, visibleDuration, locale, minValue, maxValue) {\n  const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue);\n  const endDate = getEndDate(startDate, visibleDuration);\n  if (visibleDuration.days) {\n    return adjust({\n      focusedDate: endDate,\n      startDate\n    });\n  }\n  if (visibleDuration.weeks) {\n    return adjust({\n      focusedDate: endOfWeek(focusedDate, locale),\n      startDate\n    });\n  }\n  if (visibleDuration.months || visibleDuration.years) {\n    return adjust({\n      focusedDate: endOfMonth(focusedDate),\n      startDate\n    });\n  }\n}\nfunction getNextSection(focusedDate, startDate, larger, visibleDuration, locale, minValue, maxValue) {\n  const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue);\n  if (!larger && !visibleDuration.days) {\n    return adjust({\n      focusedDate: focusedDate.add(getUnitDuration(visibleDuration)),\n      startDate\n    });\n  }\n  if (visibleDuration.days) {\n    return getNextPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue);\n  }\n  if (visibleDuration.weeks) {\n    return adjust({\n      focusedDate: focusedDate.add({ months: 1 }),\n      startDate\n    });\n  }\n  if (visibleDuration.months || visibleDuration.years) {\n    return adjust({\n      focusedDate: focusedDate.add({ years: 1 }),\n      startDate\n    });\n  }\n}\nfunction getPreviousSection(focusedDate, startDate, larger, visibleDuration, locale, minValue, maxValue) {\n  const adjust = getAdjustedDateFn(visibleDuration, locale, minValue, maxValue);\n  if (!larger && !visibleDuration.days) {\n    return adjust({\n      focusedDate: focusedDate.subtract(getUnitDuration(visibleDuration)),\n      startDate\n    });\n  }\n  if (visibleDuration.days) {\n    return getPreviousPage(focusedDate, startDate, visibleDuration, locale, minValue, maxValue);\n  }\n  if (visibleDuration.weeks) {\n    return adjust({\n      focusedDate: focusedDate.subtract({ months: 1 }),\n      startDate\n    });\n  }\n  if (visibleDuration.months || visibleDuration.years) {\n    return adjust({\n      focusedDate: focusedDate.subtract({ years: 1 }),\n      startDate\n    });\n  }\n}\nvar isValidYear = (year) => year != null && year.length === 4;\nvar isValidMonth = (month) => month != null && parseFloat(month) <= 12;\nvar isValidDay = (day) => day != null && parseFloat(day) <= 31;\nfunction parseDateString(date, locale, timeZone) {\n  const regex = createRegex(locale, timeZone);\n  let { year, month, day } = extract(regex, date) ?? {};\n  const hasMatch = year != null || month != null || day != null;\n  if (hasMatch) {\n    const curr = /* @__PURE__ */ new Date();\n    year || (year = curr.getFullYear().toString());\n    month || (month = (curr.getMonth() + 1).toString());\n    day || (day = curr.getDate().toString());\n  }\n  if (!isValidYear(year)) {\n    year = normalizeYear(year);\n  }\n  if (isValidYear(year) && isValidMonth(month) && isValidDay(day)) {\n    return new CalendarDate(+year, +month, +day);\n  }\n  const time = Date.parse(date);\n  if (!isNaN(time)) {\n    const date2 = new Date(time);\n    return new CalendarDate(date2.getFullYear(), date2.getMonth() + 1, date2.getDate());\n  }\n}\nfunction createRegex(locale, timeZone) {\n  const formatter = new DateFormatter(locale, { day: \"numeric\", month: \"numeric\", year: \"numeric\", timeZone });\n  const parts = formatter.formatToParts(new Date(2e3, 11, 25));\n  return parts.map(({ type, value }) => type === \"literal\" ? `${value}?` : `((?!=<${type}>)\\\\d+)?`).join(\"\");\n}\nfunction extract(pattern, str) {\n  const matches = str.match(pattern);\n  return pattern.toString().match(/<(.+?)>/g)?.map((group) => {\n    const groupMatches = group.match(/<(.+)>/);\n    if (!groupMatches || groupMatches.length <= 0) {\n      return null;\n    }\n    return group.match(/<(.+)>/)?.[1];\n  }).reduce((acc, curr, index) => {\n    if (!curr) return acc;\n    if (matches && matches.length > index) {\n      acc[curr] = matches[index + 1];\n    } else {\n      acc[curr] = null;\n    }\n    return acc;\n  }, {});\n}\nfunction getDateRangePreset(preset, locale, timeZone) {\n  const today3 = toCalendarDate(now(timeZone));\n  switch (preset) {\n    case \"thisWeek\":\n      return [startOfWeek(today3, locale), endOfWeek(today3, locale)];\n    case \"thisMonth\":\n      return [startOfMonth(today3), today3];\n    case \"thisQuarter\":\n      return [startOfMonth(today3).add({ months: -((today3.month - 1) % 3) }), today3];\n    case \"thisYear\":\n      return [startOfYear(today3), today3];\n    case \"last3Days\":\n      return [today3.add({ days: -2 }), today3];\n    case \"last7Days\":\n      return [today3.add({ days: -6 }), today3];\n    case \"last14Days\":\n      return [today3.add({ days: -13 }), today3];\n    case \"last30Days\":\n      return [today3.add({ days: -29 }), today3];\n    case \"last90Days\":\n      return [today3.add({ days: -89 }), today3];\n    case \"lastMonth\":\n      return [startOfMonth(today3.add({ months: -1 })), endOfMonth(today3.add({ months: -1 }))];\n    case \"lastQuarter\":\n      return [\n        startOfMonth(today3.add({ months: -((today3.month - 1) % 3) - 3 })),\n        endOfMonth(today3.add({ months: -((today3.month - 1) % 3) - 1 }))\n      ];\n    case \"lastWeek\":\n      return [startOfWeek(today3, locale).add({ weeks: -1 }), endOfWeek(today3, locale).add({ weeks: -1 })];\n    case \"lastYear\":\n      return [startOfYear(today3.add({ years: -1 })), endOfYear(today3.add({ years: -1 }))];\n    default:\n      throw new Error(`Invalid date range preset: ${preset}`);\n  }\n}\n\nexport { alignCenter, alignDate, alignEnd, alignStart, alignStartDate, constrainStart, constrainValue, formatRange, formatSelectedDate, formatVisibleRange, getAdjustedDateFn, getDateRangePreset, getDayFormatter, getDaysInWeek, getDecadeRange, getEndDate, getEndOfWeek, getMonthDays, getMonthFormatter, getMonthNames, getNextPage, getNextRow, getNextSection, getPreviousAvailableDate, getPreviousPage, getPreviousRow, getPreviousSection, getSectionEnd, getSectionStart, getStartOfWeek, getTodayDate, getUnitDuration, getWeekDays, getWeekdayFormats, getYearsRange, isDateEqual, isDateOutsideRange, isDateUnavailable, isNextRangeInvalid, isPreviousRangeInvalid, normalizeYear, parseDateString, setCalendar, setDate };\n", "// src/index.ts\nvar ID = \"__live-region__\";\nfunction createLiveRegion(opts = {}) {\n  const { level = \"polite\", document: doc = document, root, delay: _delay = 0 } = opts;\n  const win = doc.defaultView ?? window;\n  const parent = root ?? doc.body;\n  function announce(message, delay) {\n    const oldRegion = doc.getElementById(ID);\n    oldRegion?.remove();\n    delay = delay ?? _delay;\n    const region = doc.createElement(\"span\");\n    region.id = ID;\n    region.dataset.liveAnnouncer = \"true\";\n    const role = level !== \"assertive\" ? \"status\" : \"alert\";\n    region.setAttribute(\"aria-live\", level);\n    region.setAttribute(\"role\", role);\n    Object.assign(region.style, {\n      border: \"0\",\n      clip: \"rect(0 0 0 0)\",\n      height: \"1px\",\n      margin: \"-1px\",\n      overflow: \"hidden\",\n      padding: \"0\",\n      position: \"absolute\",\n      width: \"1px\",\n      whiteSpace: \"nowrap\",\n      wordWrap: \"normal\"\n    });\n    parent.appendChild(region);\n    win.setTimeout(() => {\n      region.textContent = message;\n    }, delay);\n  }\n  function destroy() {\n    const oldRegion = doc.getElementById(ID);\n    oldRegion?.remove();\n  }\n  return {\n    announce,\n    destroy,\n    toJSON() {\n      return ID;\n    }\n  };\n}\n\nexport { createLiveRegion };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { DateFormatter, isEqualYear, isEqualMonth, isEqualDay, CalendarDate, parseDate, isWeekend, isToday } from '@internationalized/date';\nimport { getDecadeRange, isDateOutsideRange, alignDate, constrainValue, getTodayDate, getPreviousSection, getNextSection, getPreviousPage, getNextPage, isDateEqual, formatSelectedDate, isNextRangeInvalid, isPreviousRangeInvalid, getEndDate, parseDateString, getAdjustedDateFn, getDateRangePreset, getWeekDays, getMonthFormatter, getDaysInWeek, getMonthDays, getMonthNames, getYearsRange, isDateUnavailable, getDayFormatter, getUnitDuration } from '@zag-js/date-utils';\nimport { setElementValue, raf, restoreTextSelection, disableTextSelection, queryAll, query, getNativeEvent, dataAttr, ariaAttr, getEventKey, isComposingEvent } from '@zag-js/dom-query';\nimport { getPlacement, getPlacementStyles } from '@zag-js/popper';\nimport { createSplitProps, clampValue, chunk, isValueWithinRange, match } from '@zag-js/utils';\nimport { memo, createGuards, createMachine } from '@zag-js/core';\nimport { trackDismissableElement } from '@zag-js/dismissable';\nimport { createLiveRegion } from '@zag-js/live-region';\nimport { createProps } from '@zag-js/types';\n\n// src/date-picker.anatomy.ts\nvar anatomy = createAnatomy(\"date-picker\").parts(\n  \"clearTrigger\",\n  \"content\",\n  \"control\",\n  \"input\",\n  \"label\",\n  \"monthSelect\",\n  \"nextTrigger\",\n  \"positioner\",\n  \"presetTrigger\",\n  \"prevTrigger\",\n  \"rangeText\",\n  \"root\",\n  \"table\",\n  \"tableBody\",\n  \"tableCell\",\n  \"tableCellTrigger\",\n  \"tableHead\",\n  \"tableHeader\",\n  \"tableRow\",\n  \"trigger\",\n  \"view\",\n  \"viewControl\",\n  \"viewTrigger\",\n  \"yearSelect\"\n);\nvar parts = anatomy.build();\nvar getLabelId = (ctx, index) => ctx.ids?.label?.(index) ?? `datepicker:${ctx.id}:label:${index}`;\nvar getRootId = (ctx) => ctx.ids?.root ?? `datepicker:${ctx.id}`;\nvar getTableId = (ctx, id) => ctx.ids?.table?.(id) ?? `datepicker:${ctx.id}:table:${id}`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `datepicker:${ctx.id}:content`;\nvar getCellTriggerId = (ctx, id) => ctx.ids?.cellTrigger?.(id) ?? `datepicker:${ctx.id}:cell-trigger:${id}`;\nvar getPrevTriggerId = (ctx, view) => ctx.ids?.prevTrigger?.(view) ?? `datepicker:${ctx.id}:prev:${view}`;\nvar getNextTriggerId = (ctx, view) => ctx.ids?.nextTrigger?.(view) ?? `datepicker:${ctx.id}:next:${view}`;\nvar getViewTriggerId = (ctx, view) => ctx.ids?.viewTrigger?.(view) ?? `datepicker:${ctx.id}:view:${view}`;\nvar getClearTriggerId = (ctx) => ctx.ids?.clearTrigger ?? `datepicker:${ctx.id}:clear`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `datepicker:${ctx.id}:control`;\nvar getInputId = (ctx, index) => ctx.ids?.input?.(index) ?? `datepicker:${ctx.id}:input:${index}`;\nvar getTriggerId = (ctx) => ctx.ids?.trigger ?? `datepicker:${ctx.id}:trigger`;\nvar getPositionerId = (ctx) => ctx.ids?.positioner ?? `datepicker:${ctx.id}:positioner`;\nvar getMonthSelectId = (ctx) => ctx.ids?.monthSelect ?? `datepicker:${ctx.id}:month-select`;\nvar getYearSelectId = (ctx) => ctx.ids?.yearSelect ?? `datepicker:${ctx.id}:year-select`;\nvar getFocusedCell = (ctx, view) => query(getContentEl(ctx), `[data-part=table-cell-trigger][data-view=${view}][data-focus]:not([data-outside-range])`);\nvar getTriggerEl = (ctx) => ctx.getById(getTriggerId(ctx));\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nvar getInputEls = (ctx) => queryAll(getControlEl(ctx), `[data-part=input]`);\nvar getYearSelectEl = (ctx) => ctx.getById(getYearSelectId(ctx));\nvar getMonthSelectEl = (ctx) => ctx.getById(getMonthSelectId(ctx));\nvar getClearTriggerEl = (ctx) => ctx.getById(getClearTriggerId(ctx));\nvar getPositionerEl = (ctx) => ctx.getById(getPositionerId(ctx));\nvar getControlEl = (ctx) => ctx.getById(getControlId(ctx));\nfunction adjustStartAndEndDate(value) {\n  const [startDate, endDate] = value;\n  let result;\n  if (!startDate || !endDate) result = value;\n  else result = startDate.compare(endDate) <= 0 ? value : [endDate, startDate];\n  return result;\n}\nfunction isDateWithinRange(date, value) {\n  const [startDate, endDate] = value;\n  if (!startDate || !endDate) return false;\n  return startDate.compare(date) <= 0 && endDate.compare(date) >= 0;\n}\nfunction sortDates(values) {\n  return values.slice().filter((date) => date != null).sort((a, b) => a.compare(b));\n}\nfunction getRoleDescription(view) {\n  return match(view, {\n    year: \"calendar decade\",\n    month: \"calendar year\",\n    day: \"calendar month\"\n  });\n}\nvar PLACEHOLDERS = {\n  day: \"dd\",\n  month: \"mm\",\n  year: \"yyyy\"\n};\nfunction getInputPlaceholder(locale) {\n  return new DateFormatter(locale).formatToParts(/* @__PURE__ */ new Date()).map((item) => PLACEHOLDERS[item.type] ?? item.value).join(\"\");\n}\nvar isValidCharacter = (char, separator) => {\n  if (!char) return true;\n  return /\\d/.test(char) || char === separator || char.length !== 1;\n};\nvar isValidDate = (value) => {\n  return !Number.isNaN(value.day) && !Number.isNaN(value.month) && !Number.isNaN(value.year);\n};\nvar ensureValidCharacters = (value, separator) => {\n  return value.split(\"\").filter((char) => isValidCharacter(char, separator)).join(\"\");\n};\nfunction getLocaleSeparator(locale) {\n  const dateFormatter = new Intl.DateTimeFormat(locale);\n  const parts2 = dateFormatter.formatToParts(/* @__PURE__ */ new Date());\n  const literalPart = parts2.find((part) => part.type === \"literal\");\n  return literalPart ? literalPart.value : \"/\";\n}\nvar defaultTranslations = {\n  dayCell(state) {\n    if (state.unavailable) return `Not available. ${state.formattedDate}`;\n    if (state.selected) return `Selected date. ${state.formattedDate}`;\n    return `Choose ${state.formattedDate}`;\n  },\n  trigger(open) {\n    return open ? \"Close calendar\" : \"Open calendar\";\n  },\n  viewTrigger(view) {\n    return match(view, {\n      year: \"Switch to month view\",\n      month: \"Switch to day view\",\n      day: \"Switch to year view\"\n    });\n  },\n  presetTrigger(value) {\n    const [start = \"\", end = \"\"] = value;\n    return `select ${start} to ${end}`;\n  },\n  prevTrigger(view) {\n    return match(view, {\n      year: \"Switch to previous decade\",\n      month: \"Switch to previous year\",\n      day: \"Switch to previous month\"\n    });\n  },\n  nextTrigger(view) {\n    return match(view, {\n      year: \"Switch to next decade\",\n      month: \"Switch to next year\",\n      day: \"Switch to next month\"\n    });\n  },\n  // TODO: Revisit this\n  placeholder() {\n    return { day: \"dd\", month: \"mm\", year: \"yyyy\" };\n  },\n  content: \"calendar\",\n  monthSelect: \"Select month\",\n  yearSelect: \"Select year\",\n  clearTrigger: \"Clear selected dates\"\n};\nfunction viewToNumber(view, fallback) {\n  if (!view) return fallback || 0;\n  return view === \"day\" ? 0 : view === \"month\" ? 1 : 2;\n}\nfunction viewNumberToView(viewNumber) {\n  return viewNumber === 0 ? \"day\" : viewNumber === 1 ? \"month\" : \"year\";\n}\nfunction clampView(view, minView, maxView) {\n  return viewNumberToView(\n    clampValue(viewToNumber(view, 0), viewToNumber(minView, 0), viewToNumber(maxView, 2))\n  );\n}\nfunction isAboveMinView(view, minView) {\n  return viewToNumber(view, 0) > viewToNumber(minView, 0);\n}\nfunction isBelowMinView(view, minView) {\n  return viewToNumber(view, 0) < viewToNumber(minView, 0);\n}\nfunction getNextView(view, minView, maxView) {\n  const nextViewNumber = viewToNumber(view, 0) + 1;\n  return clampView(viewNumberToView(nextViewNumber), minView, maxView);\n}\nfunction getPreviousView(view, minView, maxView) {\n  const prevViewNumber = viewToNumber(view, 0) - 1;\n  return clampView(viewNumberToView(prevViewNumber), minView, maxView);\n}\nvar views = [\"day\", \"month\", \"year\"];\nfunction eachView(cb) {\n  views.forEach((view) => cb(view));\n}\nvar getVisibleRangeText = memo(\n  (opts) => [opts.view, opts.startValue.toString(), opts.endValue.toString(), opts.locale],\n  ([view], opts) => {\n    const { startValue, endValue, locale, timeZone, selectionMode } = opts;\n    if (view === \"year\") {\n      const years = getDecadeRange(startValue.year, { strict: true });\n      const start2 = years.at(0).toString();\n      const end2 = years.at(-1).toString();\n      return { start: start2, end: end2, formatted: `${start2} - ${end2}` };\n    }\n    if (view === \"month\") {\n      const formatter2 = new DateFormatter(locale, { year: \"numeric\", timeZone });\n      const start2 = formatter2.format(startValue.toDate(timeZone));\n      const end2 = formatter2.format(endValue.toDate(timeZone));\n      const formatted2 = selectionMode === \"range\" ? `${start2} - ${end2}` : start2;\n      return { start: start2, end: end2, formatted: formatted2 };\n    }\n    const formatter = new DateFormatter(locale, { month: \"long\", year: \"numeric\", timeZone });\n    const start = formatter.format(startValue.toDate(timeZone));\n    const end = formatter.format(endValue.toDate(timeZone));\n    const formatted = selectionMode === \"range\" ? `${start} - ${end}` : start;\n    return { start, end, formatted };\n  }\n);\n\n// src/date-picker.connect.ts\nfunction connect(service, normalize) {\n  const { state, context, prop, send, computed, scope } = service;\n  const startValue = context.get(\"startValue\");\n  const endValue = computed(\"endValue\");\n  const selectedValue = context.get(\"value\");\n  const focusedValue = context.get(\"focusedValue\");\n  const hoveredValue = context.get(\"hoveredValue\");\n  const hoveredRangeValue = hoveredValue ? adjustStartAndEndDate([selectedValue[0], hoveredValue]) : [];\n  const disabled = Boolean(prop(\"disabled\"));\n  const readOnly = Boolean(prop(\"readOnly\"));\n  const invalid = Boolean(prop(\"invalid\"));\n  const interactive = computed(\"isInteractive\");\n  const empty = selectedValue.length === 0;\n  const min = prop(\"min\");\n  const max = prop(\"max\");\n  const locale = prop(\"locale\");\n  const timeZone = prop(\"timeZone\");\n  const startOfWeek = prop(\"startOfWeek\");\n  const focused = state.matches(\"focused\");\n  const open = state.matches(\"open\");\n  const isRangePicker = prop(\"selectionMode\") === \"range\";\n  const isDateUnavailableFn = prop(\"isDateUnavailable\");\n  const currentPlacement = context.get(\"currentPlacement\");\n  const popperStyles = getPlacementStyles({\n    ...prop(\"positioning\"),\n    placement: currentPlacement\n  });\n  const separator = getLocaleSeparator(locale);\n  const translations = { ...defaultTranslations, ...prop(\"translations\") };\n  function getMonthWeeks(from = startValue) {\n    const numOfWeeks = prop(\"fixedWeeks\") ? 6 : void 0;\n    return getMonthDays(from, locale, numOfWeeks, startOfWeek);\n  }\n  function getMonths(props2 = {}) {\n    const { format } = props2;\n    return getMonthNames(locale, format).map((label, index) => {\n      const value = index + 1;\n      const dateValue = focusedValue.set({ month: value });\n      const disabled2 = isDateOutsideRange(dateValue, min, max);\n      return { label, value, disabled: disabled2 };\n    });\n  }\n  function getYears() {\n    const range = getYearsRange({ from: min?.year ?? 1900, to: max?.year ?? 2100 });\n    return range.map((year) => ({\n      label: year.toString(),\n      value: year,\n      disabled: !isValueWithinRange(year, min?.year, max?.year)\n    }));\n  }\n  function isUnavailable(date) {\n    return isDateUnavailable(date, isDateUnavailableFn, locale, min, max);\n  }\n  function focusMonth(month) {\n    const date = startValue ?? getTodayDate(timeZone);\n    send({ type: \"FOCUS.SET\", value: date.set({ month }) });\n  }\n  function focusYear(year) {\n    const date = startValue ?? getTodayDate(timeZone);\n    send({ type: \"FOCUS.SET\", value: date.set({ year }) });\n  }\n  function getYearTableCellState(props2) {\n    const { value, disabled: disabled2 } = props2;\n    const dateValue = focusedValue.set({ year: value });\n    const decadeYears = getDecadeRange(startValue.year, { strict: true });\n    const isOutsideVisibleRange = !decadeYears.includes(value);\n    const isOutsideRange = isValueWithinRange(value, min?.year, max?.year);\n    const cellState = {\n      focused: focusedValue.year === props2.value,\n      selectable: isOutsideVisibleRange || isOutsideRange,\n      outsideRange: isOutsideVisibleRange,\n      selected: !!selectedValue.find((date) => date && date.year === value),\n      valueText: value.toString(),\n      inRange: isRangePicker && (isDateWithinRange(dateValue, selectedValue) || isDateWithinRange(dateValue, hoveredRangeValue)),\n      value: dateValue,\n      get disabled() {\n        return disabled2 || !cellState.selectable;\n      }\n    };\n    return cellState;\n  }\n  function getMonthTableCellState(props2) {\n    const { value, disabled: disabled2 } = props2;\n    const dateValue = focusedValue.set({ month: value });\n    const formatter = getMonthFormatter(locale, timeZone);\n    const cellState = {\n      focused: focusedValue.month === props2.value,\n      selectable: !isDateOutsideRange(dateValue, min, max),\n      selected: !!selectedValue.find((date) => date && date.month === value && date.year === focusedValue.year),\n      valueText: formatter.format(dateValue.toDate(timeZone)),\n      inRange: isRangePicker && (isDateWithinRange(dateValue, selectedValue) || isDateWithinRange(dateValue, hoveredRangeValue)),\n      value: dateValue,\n      get disabled() {\n        return disabled2 || !cellState.selectable;\n      }\n    };\n    return cellState;\n  }\n  function getDayTableCellState(props2) {\n    const { value, disabled: disabled2, visibleRange = computed(\"visibleRange\") } = props2;\n    const formatter = getDayFormatter(locale, timeZone);\n    const unitDuration = getUnitDuration(computed(\"visibleDuration\"));\n    const outsideDaySelectable = prop(\"outsideDaySelectable\");\n    const end = visibleRange.start.add(unitDuration).subtract({ days: 1 });\n    const isOutsideRange = isDateOutsideRange(value, visibleRange.start, end);\n    const isInSelectedRange = isRangePicker && isDateWithinRange(value, selectedValue);\n    const isFirstInSelectedRange = isRangePicker && isDateEqual(value, selectedValue[0]);\n    const isLastInSelectedRange = isRangePicker && isDateEqual(value, selectedValue[1]);\n    const hasHoveredRange = isRangePicker && hoveredRangeValue.length > 0;\n    const isInHoveredRange = hasHoveredRange && isDateWithinRange(value, hoveredRangeValue);\n    const isFirstInHoveredRange = hasHoveredRange && isDateEqual(value, hoveredRangeValue[0]);\n    const isLastInHoveredRange = hasHoveredRange && isDateEqual(value, hoveredRangeValue[1]);\n    const cellState = {\n      invalid: isDateOutsideRange(value, min, max),\n      disabled: disabled2 || !outsideDaySelectable && isOutsideRange || isDateOutsideRange(value, min, max),\n      selected: selectedValue.some((date) => isDateEqual(value, date)),\n      unavailable: isDateUnavailable(value, isDateUnavailableFn, locale, min, max) && !disabled2,\n      outsideRange: isOutsideRange,\n      today: isToday(value, timeZone),\n      weekend: isWeekend(value, locale),\n      formattedDate: formatter.format(value.toDate(timeZone)),\n      get focused() {\n        return isDateEqual(value, focusedValue) && (!cellState.outsideRange || outsideDaySelectable);\n      },\n      get ariaLabel() {\n        return translations.dayCell(cellState);\n      },\n      get selectable() {\n        return !cellState.disabled && !cellState.unavailable;\n      },\n      // Range states\n      inRange: isInSelectedRange || isInHoveredRange,\n      firstInRange: isFirstInSelectedRange,\n      lastInRange: isLastInSelectedRange,\n      // Preview range states\n      inHoveredRange: isInHoveredRange,\n      firstInHoveredRange: isFirstInHoveredRange,\n      lastInHoveredRange: isLastInHoveredRange\n    };\n    return cellState;\n  }\n  function getTableId2(props2) {\n    const { view = \"day\", id } = props2;\n    return [view, id].filter(Boolean).join(\" \");\n  }\n  return {\n    focused,\n    open,\n    disabled,\n    invalid,\n    readOnly,\n    inline: !!prop(\"inline\"),\n    numOfMonths: prop(\"numOfMonths\"),\n    selectionMode: prop(\"selectionMode\"),\n    view: context.get(\"view\"),\n    getRangePresetValue(preset) {\n      return getDateRangePreset(preset, locale, timeZone);\n    },\n    getDaysInWeek(week, from = startValue) {\n      return getDaysInWeek(week, from, locale, startOfWeek);\n    },\n    getOffset(duration) {\n      const from = startValue.add(duration);\n      const end = endValue.add(duration);\n      const formatter = getMonthFormatter(locale, timeZone);\n      return {\n        visibleRange: { start: from, end },\n        weeks: getMonthWeeks(from),\n        visibleRangeText: {\n          start: formatter.format(from.toDate(timeZone)),\n          end: formatter.format(end.toDate(timeZone))\n        }\n      };\n    },\n    getMonthWeeks,\n    isUnavailable,\n    weeks: getMonthWeeks(),\n    weekDays: getWeekDays(getTodayDate(timeZone), startOfWeek, timeZone, locale),\n    visibleRangeText: computed(\"visibleRangeText\"),\n    value: selectedValue,\n    valueAsDate: selectedValue.filter((date) => date != null).map((date) => date.toDate(timeZone)),\n    valueAsString: computed(\"valueAsString\"),\n    focusedValue,\n    focusedValueAsDate: focusedValue?.toDate(timeZone),\n    focusedValueAsString: prop(\"format\")(focusedValue, { locale, timeZone }),\n    visibleRange: computed(\"visibleRange\"),\n    selectToday() {\n      const value = constrainValue(getTodayDate(timeZone), min, max);\n      send({ type: \"VALUE.SET\", value });\n    },\n    setValue(values) {\n      const computedValue = values.map((date) => constrainValue(date, min, max));\n      send({ type: \"VALUE.SET\", value: computedValue });\n    },\n    clearValue() {\n      send({ type: \"VALUE.CLEAR\" });\n    },\n    setFocusedValue(value) {\n      send({ type: \"FOCUS.SET\", value });\n    },\n    setOpen(nextOpen) {\n      if (prop(\"inline\")) return;\n      const open2 = state.matches(\"open\");\n      if (open2 === nextOpen) return;\n      send({ type: nextOpen ? \"OPEN\" : \"CLOSE\" });\n    },\n    focusMonth,\n    focusYear,\n    getYears,\n    getMonths,\n    getYearsGrid(props2 = {}) {\n      const { columns = 1 } = props2;\n      const years = getDecadeRange(startValue.year, { strict: true }).map((year) => ({\n        label: year.toString(),\n        value: year,\n        disabled: !isValueWithinRange(year, min?.year, max?.year)\n      }));\n      return chunk(years, columns);\n    },\n    getDecade() {\n      const years = getDecadeRange(startValue.year, { strict: true });\n      return { start: years.at(0), end: years.at(-1) };\n    },\n    getMonthsGrid(props2 = {}) {\n      const { columns = 1, format } = props2;\n      return chunk(getMonths({ format }), columns);\n    },\n    format(value, opts = { month: \"long\", year: \"numeric\" }) {\n      return new DateFormatter(locale, opts).format(value.toDate(timeZone));\n    },\n    setView(view) {\n      send({ type: \"VIEW.SET\", view });\n    },\n    goToNext() {\n      send({ type: \"GOTO.NEXT\", view: context.get(\"view\") });\n    },\n    goToPrev() {\n      send({ type: \"GOTO.PREV\", view: context.get(\"view\") });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        dir: prop(\"dir\"),\n        id: getRootId(scope),\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-disabled\": dataAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-empty\": dataAttr(empty)\n      });\n    },\n    getLabelProps(props2 = {}) {\n      const { index = 0 } = props2;\n      return normalize.label({\n        ...parts.label.attrs,\n        id: getLabelId(scope, index),\n        dir: prop(\"dir\"),\n        htmlFor: getInputId(scope, index),\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-index\": index,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly)\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        dir: prop(\"dir\"),\n        id: getControlId(scope),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-placeholder-shown\": dataAttr(empty)\n      });\n    },\n    getRangeTextProps() {\n      return normalize.element({\n        ...parts.rangeText.attrs,\n        dir: prop(\"dir\")\n      });\n    },\n    getContentProps() {\n      return normalize.element({\n        ...parts.content.attrs,\n        hidden: !open,\n        dir: prop(\"dir\"),\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-placement\": currentPlacement,\n        \"data-inline\": dataAttr(prop(\"inline\")),\n        id: getContentId(scope),\n        tabIndex: -1,\n        role: \"application\",\n        \"aria-roledescription\": \"datepicker\",\n        \"aria-label\": translations.content\n      });\n    },\n    getTableProps(props2 = {}) {\n      const { view = \"day\", columns = view === \"day\" ? 7 : 4 } = props2;\n      const uid = getTableId2(props2);\n      return normalize.element({\n        ...parts.table.attrs,\n        role: \"grid\",\n        \"data-columns\": columns,\n        \"aria-roledescription\": getRoleDescription(view),\n        id: getTableId(scope, uid),\n        \"aria-readonly\": ariaAttr(readOnly),\n        \"aria-disabled\": ariaAttr(disabled),\n        \"aria-multiselectable\": ariaAttr(prop(\"selectionMode\") !== \"single\"),\n        \"data-view\": view,\n        dir: prop(\"dir\"),\n        tabIndex: -1,\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          const keyMap = {\n            Enter() {\n              if (view === \"day\" && isUnavailable(focusedValue)) return;\n              if (view === \"month\") {\n                const cellState = getMonthTableCellState({ value: focusedValue.month });\n                if (!cellState.selectable) return;\n              }\n              if (view === \"year\") {\n                const cellState = getYearTableCellState({ value: focusedValue.year });\n                if (!cellState.selectable) return;\n              }\n              send({ type: \"TABLE.ENTER\", view, columns, focus: true });\n            },\n            ArrowLeft() {\n              send({ type: \"TABLE.ARROW_LEFT\", view, columns, focus: true });\n            },\n            ArrowRight() {\n              send({ type: \"TABLE.ARROW_RIGHT\", view, columns, focus: true });\n            },\n            ArrowUp() {\n              send({ type: \"TABLE.ARROW_UP\", view, columns, focus: true });\n            },\n            ArrowDown() {\n              send({ type: \"TABLE.ARROW_DOWN\", view, columns, focus: true });\n            },\n            PageUp(event2) {\n              send({ type: \"TABLE.PAGE_UP\", larger: event2.shiftKey, view, columns, focus: true });\n            },\n            PageDown(event2) {\n              send({ type: \"TABLE.PAGE_DOWN\", larger: event2.shiftKey, view, columns, focus: true });\n            },\n            Home() {\n              send({ type: \"TABLE.HOME\", view, columns, focus: true });\n            },\n            End() {\n              send({ type: \"TABLE.END\", view, columns, focus: true });\n            }\n          };\n          const exec = keyMap[getEventKey(event, {\n            dir: prop(\"dir\")\n          })];\n          if (exec) {\n            exec(event);\n            event.preventDefault();\n            event.stopPropagation();\n          }\n        },\n        onPointerLeave() {\n          send({ type: \"TABLE.POINTER_LEAVE\" });\n        },\n        onPointerDown() {\n          send({ type: \"TABLE.POINTER_DOWN\", view });\n        },\n        onPointerUp() {\n          send({ type: \"TABLE.POINTER_UP\", view });\n        }\n      });\n    },\n    getTableHeadProps(props2 = {}) {\n      const { view = \"day\" } = props2;\n      return normalize.element({\n        ...parts.tableHead.attrs,\n        \"aria-hidden\": true,\n        dir: prop(\"dir\"),\n        \"data-view\": view,\n        \"data-disabled\": dataAttr(disabled)\n      });\n    },\n    getTableHeaderProps(props2 = {}) {\n      const { view = \"day\" } = props2;\n      return normalize.element({\n        ...parts.tableHeader.attrs,\n        dir: prop(\"dir\"),\n        \"data-view\": view,\n        \"data-disabled\": dataAttr(disabled)\n      });\n    },\n    getTableBodyProps(props2 = {}) {\n      const { view = \"day\" } = props2;\n      return normalize.element({\n        ...parts.tableBody.attrs,\n        \"data-view\": view,\n        \"data-disabled\": dataAttr(disabled)\n      });\n    },\n    getTableRowProps(props2 = {}) {\n      const { view = \"day\" } = props2;\n      return normalize.element({\n        ...parts.tableRow.attrs,\n        \"aria-disabled\": ariaAttr(disabled),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-view\": view\n      });\n    },\n    getDayTableCellState,\n    getDayTableCellProps(props2) {\n      const { value } = props2;\n      const cellState = getDayTableCellState(props2);\n      return normalize.element({\n        ...parts.tableCell.attrs,\n        role: \"gridcell\",\n        \"aria-disabled\": ariaAttr(!cellState.selectable),\n        \"aria-selected\": cellState.selected || cellState.inRange,\n        \"aria-invalid\": ariaAttr(cellState.invalid),\n        \"aria-current\": cellState.today ? \"date\" : void 0,\n        \"data-value\": value.toString()\n      });\n    },\n    getDayTableCellTriggerProps(props2) {\n      const { value } = props2;\n      const cellState = getDayTableCellState(props2);\n      return normalize.element({\n        ...parts.tableCellTrigger.attrs,\n        id: getCellTriggerId(scope, value.toString()),\n        role: \"button\",\n        dir: prop(\"dir\"),\n        tabIndex: cellState.focused ? 0 : -1,\n        \"aria-label\": cellState.ariaLabel,\n        \"aria-disabled\": ariaAttr(!cellState.selectable),\n        \"aria-invalid\": ariaAttr(cellState.invalid),\n        \"data-disabled\": dataAttr(!cellState.selectable),\n        \"data-selected\": dataAttr(cellState.selected),\n        \"data-value\": value.toString(),\n        \"data-view\": \"day\",\n        \"data-today\": dataAttr(cellState.today),\n        \"data-focus\": dataAttr(cellState.focused),\n        \"data-unavailable\": dataAttr(cellState.unavailable),\n        \"data-range-start\": dataAttr(cellState.firstInRange),\n        \"data-range-end\": dataAttr(cellState.lastInRange),\n        \"data-in-range\": dataAttr(cellState.inRange),\n        \"data-outside-range\": dataAttr(cellState.outsideRange),\n        \"data-weekend\": dataAttr(cellState.weekend),\n        \"data-in-hover-range\": dataAttr(cellState.inHoveredRange),\n        \"data-hover-range-start\": dataAttr(cellState.firstInHoveredRange),\n        \"data-hover-range-end\": dataAttr(cellState.lastInHoveredRange),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (!cellState.selectable) return;\n          send({ type: \"CELL.CLICK\", cell: \"day\", value });\n        },\n        onPointerMove: isRangePicker ? (event) => {\n          if (event.pointerType === \"touch\") return;\n          if (!cellState.selectable) return;\n          const focus = !scope.isActiveElement(event.currentTarget);\n          if (hoveredValue && isEqualDay(value, hoveredValue)) return;\n          send({ type: \"CELL.POINTER_MOVE\", cell: \"day\", value, focus });\n        } : void 0\n      });\n    },\n    getMonthTableCellState,\n    getMonthTableCellProps(props2) {\n      const { value, columns } = props2;\n      const cellState = getMonthTableCellState(props2);\n      return normalize.element({\n        ...parts.tableCell.attrs,\n        dir: prop(\"dir\"),\n        colSpan: columns,\n        role: \"gridcell\",\n        \"aria-selected\": ariaAttr(cellState.selected || cellState.inRange),\n        \"data-selected\": dataAttr(cellState.selected),\n        \"aria-disabled\": ariaAttr(!cellState.selectable),\n        \"data-value\": value\n      });\n    },\n    getMonthTableCellTriggerProps(props2) {\n      const { value } = props2;\n      const cellState = getMonthTableCellState(props2);\n      return normalize.element({\n        ...parts.tableCellTrigger.attrs,\n        dir: prop(\"dir\"),\n        role: \"button\",\n        id: getCellTriggerId(scope, value.toString()),\n        \"data-selected\": dataAttr(cellState.selected),\n        \"aria-disabled\": ariaAttr(!cellState.selectable),\n        \"data-disabled\": dataAttr(!cellState.selectable),\n        \"data-focus\": dataAttr(cellState.focused),\n        \"data-in-range\": dataAttr(cellState.inRange),\n        \"data-outside-range\": dataAttr(cellState.outsideRange),\n        \"aria-label\": cellState.valueText,\n        \"data-view\": \"month\",\n        \"data-value\": value,\n        tabIndex: cellState.focused ? 0 : -1,\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (!cellState.selectable) return;\n          send({ type: \"CELL.CLICK\", cell: \"month\", value });\n        },\n        onPointerMove: isRangePicker ? (event) => {\n          if (event.pointerType === \"touch\") return;\n          if (!cellState.selectable) return;\n          const focus = !scope.isActiveElement(event.currentTarget);\n          if (hoveredValue && cellState.value && isEqualMonth(cellState.value, hoveredValue)) return;\n          send({ type: \"CELL.POINTER_MOVE\", cell: \"month\", value: cellState.value, focus });\n        } : void 0\n      });\n    },\n    getYearTableCellState,\n    getYearTableCellProps(props2) {\n      const { value, columns } = props2;\n      const cellState = getYearTableCellState(props2);\n      return normalize.element({\n        ...parts.tableCell.attrs,\n        dir: prop(\"dir\"),\n        colSpan: columns,\n        role: \"gridcell\",\n        \"aria-selected\": ariaAttr(cellState.selected),\n        \"data-selected\": dataAttr(cellState.selected),\n        \"aria-disabled\": ariaAttr(!cellState.selectable),\n        \"data-value\": value\n      });\n    },\n    getYearTableCellTriggerProps(props2) {\n      const { value } = props2;\n      const cellState = getYearTableCellState(props2);\n      return normalize.element({\n        ...parts.tableCellTrigger.attrs,\n        dir: prop(\"dir\"),\n        role: \"button\",\n        id: getCellTriggerId(scope, value.toString()),\n        \"data-selected\": dataAttr(cellState.selected),\n        \"data-focus\": dataAttr(cellState.focused),\n        \"data-in-range\": dataAttr(cellState.inRange),\n        \"aria-disabled\": ariaAttr(!cellState.selectable),\n        \"data-disabled\": dataAttr(!cellState.selectable),\n        \"aria-label\": cellState.valueText,\n        \"data-outside-range\": dataAttr(cellState.outsideRange),\n        \"data-value\": value,\n        \"data-view\": \"year\",\n        tabIndex: cellState.focused ? 0 : -1,\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (!cellState.selectable) return;\n          send({ type: \"CELL.CLICK\", cell: \"year\", value });\n        },\n        onPointerMove: isRangePicker ? (event) => {\n          if (event.pointerType === \"touch\") return;\n          if (!cellState.selectable) return;\n          const focus = !scope.isActiveElement(event.currentTarget);\n          if (hoveredValue && cellState.value && isEqualYear(cellState.value, hoveredValue)) return;\n          send({ type: \"CELL.POINTER_MOVE\", cell: \"year\", value: cellState.value, focus });\n        } : void 0\n      });\n    },\n    getNextTriggerProps(props2 = {}) {\n      const { view = \"day\" } = props2;\n      const isDisabled = disabled || !computed(\"isNextVisibleRangeValid\");\n      return normalize.button({\n        ...parts.nextTrigger.attrs,\n        dir: prop(\"dir\"),\n        id: getNextTriggerId(scope, view),\n        type: \"button\",\n        \"aria-label\": translations.nextTrigger(view),\n        disabled: isDisabled,\n        \"data-disabled\": dataAttr(isDisabled),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: \"GOTO.NEXT\", view });\n        }\n      });\n    },\n    getPrevTriggerProps(props2 = {}) {\n      const { view = \"day\" } = props2;\n      const isDisabled = disabled || !computed(\"isPrevVisibleRangeValid\");\n      return normalize.button({\n        ...parts.prevTrigger.attrs,\n        dir: prop(\"dir\"),\n        id: getPrevTriggerId(scope, view),\n        type: \"button\",\n        \"aria-label\": translations.prevTrigger(view),\n        disabled: isDisabled,\n        \"data-disabled\": dataAttr(isDisabled),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: \"GOTO.PREV\", view });\n        }\n      });\n    },\n    getClearTriggerProps() {\n      return normalize.button({\n        ...parts.clearTrigger.attrs,\n        id: getClearTriggerId(scope),\n        dir: prop(\"dir\"),\n        type: \"button\",\n        \"aria-label\": translations.clearTrigger,\n        hidden: !selectedValue.length,\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: \"VALUE.CLEAR\" });\n        }\n      });\n    },\n    getTriggerProps() {\n      return normalize.button({\n        ...parts.trigger.attrs,\n        id: getTriggerId(scope),\n        dir: prop(\"dir\"),\n        type: \"button\",\n        \"data-placement\": currentPlacement,\n        \"aria-label\": translations.trigger(open),\n        \"aria-controls\": getContentId(scope),\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-placeholder-shown\": dataAttr(empty),\n        \"aria-haspopup\": \"grid\",\n        disabled,\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (!interactive) return;\n          send({ type: \"TRIGGER.CLICK\" });\n        }\n      });\n    },\n    getViewProps(props2 = {}) {\n      const { view = \"day\" } = props2;\n      return normalize.element({\n        ...parts.view.attrs,\n        \"data-view\": view,\n        hidden: context.get(\"view\") !== view\n      });\n    },\n    getViewTriggerProps(props2 = {}) {\n      const { view = \"day\" } = props2;\n      return normalize.button({\n        ...parts.viewTrigger.attrs,\n        \"data-view\": view,\n        dir: prop(\"dir\"),\n        id: getViewTriggerId(scope, view),\n        type: \"button\",\n        disabled,\n        \"aria-label\": translations.viewTrigger(view),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (!interactive) return;\n          send({ type: \"VIEW.TOGGLE\", src: \"viewTrigger\" });\n        }\n      });\n    },\n    getViewControlProps(props2 = {}) {\n      const { view = \"day\" } = props2;\n      return normalize.element({\n        ...parts.viewControl.attrs,\n        \"data-view\": view,\n        dir: prop(\"dir\")\n      });\n    },\n    getInputProps(props2 = {}) {\n      const { index = 0, fixOnBlur = true } = props2;\n      return normalize.input({\n        ...parts.input.attrs,\n        id: getInputId(scope, index),\n        autoComplete: \"off\",\n        autoCorrect: \"off\",\n        spellCheck: \"false\",\n        dir: prop(\"dir\"),\n        name: prop(\"name\"),\n        \"data-index\": index,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-placeholder-shown\": dataAttr(empty),\n        readOnly,\n        disabled,\n        required: prop(\"required\"),\n        \"aria-invalid\": ariaAttr(invalid),\n        \"data-invalid\": dataAttr(invalid),\n        placeholder: prop(\"placeholder\") || getInputPlaceholder(locale),\n        defaultValue: computed(\"valueAsString\")[index],\n        onBeforeInput(event) {\n          const { data } = getNativeEvent(event);\n          if (!isValidCharacter(data, separator)) {\n            event.preventDefault();\n          }\n        },\n        onFocus() {\n          send({ type: \"INPUT.FOCUS\", index });\n        },\n        onBlur(event) {\n          const value = event.currentTarget.value.trim();\n          send({ type: \"INPUT.BLUR\", value, index, fixOnBlur });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (!interactive) return;\n          const keyMap = {\n            Enter(event2) {\n              if (isComposingEvent(event2)) return;\n              if (isUnavailable(focusedValue)) return;\n              if (event2.currentTarget.value.trim() === \"\") return;\n              send({ type: \"INPUT.ENTER\", value: event2.currentTarget.value, index });\n            }\n          };\n          const exec = keyMap[event.key];\n          if (exec) {\n            exec(event);\n            event.preventDefault();\n          }\n        },\n        onInput(event) {\n          const value = event.currentTarget.value;\n          send({ type: \"INPUT.CHANGE\", value: ensureValidCharacters(value, separator), index });\n        }\n      });\n    },\n    getMonthSelectProps() {\n      return normalize.select({\n        ...parts.monthSelect.attrs,\n        id: getMonthSelectId(scope),\n        \"aria-label\": translations.monthSelect,\n        disabled,\n        dir: prop(\"dir\"),\n        defaultValue: startValue.month,\n        onChange(event) {\n          focusMonth(Number(event.currentTarget.value));\n        }\n      });\n    },\n    getYearSelectProps() {\n      return normalize.select({\n        ...parts.yearSelect.attrs,\n        id: getYearSelectId(scope),\n        disabled,\n        \"aria-label\": translations.yearSelect,\n        dir: prop(\"dir\"),\n        defaultValue: startValue.year,\n        onChange(event) {\n          focusYear(Number(event.currentTarget.value));\n        }\n      });\n    },\n    getPositionerProps() {\n      return normalize.element({\n        id: getPositionerId(scope),\n        ...parts.positioner.attrs,\n        dir: prop(\"dir\"),\n        style: popperStyles.floating\n      });\n    },\n    getPresetTriggerProps(props2) {\n      const value = Array.isArray(props2.value) ? props2.value : getDateRangePreset(props2.value, locale, timeZone);\n      const valueAsString = value.filter((item) => item != null).map((item) => item.toDate(timeZone).toDateString());\n      return normalize.button({\n        ...parts.presetTrigger.attrs,\n        \"aria-label\": translations.presetTrigger(valueAsString),\n        type: \"button\",\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: \"PRESET.CLICK\", value });\n        }\n      });\n    }\n  };\n}\nvar { and } = createGuards();\nfunction isDateArrayEqual(a, b) {\n  if (a?.length !== b?.length) return false;\n  const len = Math.max(a.length, b.length);\n  for (let i = 0; i < len; i++) {\n    if (!isDateEqual(a[i], b[i])) return false;\n  }\n  return true;\n}\nfunction getValueAsString(value, prop) {\n  return value.map((date) => {\n    if (date == null) return \"\";\n    return prop(\"format\")(date, { locale: prop(\"locale\"), timeZone: prop(\"timeZone\") });\n  });\n}\nvar machine = createMachine({\n  props({ props: props2 }) {\n    const locale = props2.locale || \"en-US\";\n    const timeZone = props2.timeZone || \"UTC\";\n    const selectionMode = props2.selectionMode || \"single\";\n    const numOfMonths = props2.numOfMonths || 1;\n    const defaultValue = props2.defaultValue ? sortDates(props2.defaultValue).map((date) => constrainValue(date, props2.min, props2.max)) : void 0;\n    const value = props2.value ? sortDates(props2.value).map((date) => constrainValue(date, props2.min, props2.max)) : void 0;\n    let focusedValue = props2.focusedValue || props2.defaultFocusedValue || value?.[0] || defaultValue?.[0] || getTodayDate(timeZone);\n    focusedValue = constrainValue(focusedValue, props2.min, props2.max);\n    const minView = \"day\";\n    const maxView = \"year\";\n    const defaultView = clampView(props2.view || minView, minView, maxView);\n    return {\n      locale,\n      numOfMonths,\n      timeZone,\n      selectionMode,\n      defaultView,\n      minView,\n      maxView,\n      outsideDaySelectable: false,\n      closeOnSelect: true,\n      format(date, { locale: locale2, timeZone: timeZone2 }) {\n        const formatter = new DateFormatter(locale2, { timeZone: timeZone2, day: \"2-digit\", month: \"2-digit\", year: \"numeric\" });\n        return formatter.format(date.toDate(timeZone2));\n      },\n      parse(value2, { locale: locale2, timeZone: timeZone2 }) {\n        return parseDateString(value2, locale2, timeZone2);\n      },\n      ...props2,\n      focusedValue: typeof props2.focusedValue === \"undefined\" ? void 0 : focusedValue,\n      defaultFocusedValue: focusedValue,\n      value,\n      defaultValue: defaultValue ?? [],\n      positioning: {\n        placement: \"bottom\",\n        ...props2.positioning\n      }\n    };\n  },\n  initialState({ prop }) {\n    const open = prop(\"open\") || prop(\"defaultOpen\") || prop(\"inline\");\n    return open ? \"open\" : \"idle\";\n  },\n  refs() {\n    return {\n      announcer: void 0\n    };\n  },\n  context({ prop, bindable, getContext }) {\n    return {\n      focusedValue: bindable(() => ({\n        defaultValue: prop(\"defaultFocusedValue\"),\n        value: prop(\"focusedValue\"),\n        isEqual: isDateEqual,\n        hash: (v) => v.toString(),\n        sync: true,\n        onChange(focusedValue) {\n          const context = getContext();\n          const view = context.get(\"view\");\n          const value = context.get(\"value\");\n          const valueAsString = getValueAsString(value, prop);\n          prop(\"onFocusChange\")?.({ value, valueAsString, view, focusedValue });\n        }\n      })),\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        isEqual: isDateArrayEqual,\n        hash: (v) => v.map((date) => date?.toString() ?? \"\").join(\",\"),\n        onChange(value) {\n          const context = getContext();\n          const valueAsString = getValueAsString(value, prop);\n          prop(\"onValueChange\")?.({ value, valueAsString, view: context.get(\"view\") });\n        }\n      })),\n      inputValue: bindable(() => ({\n        defaultValue: \"\"\n      })),\n      activeIndex: bindable(() => ({\n        defaultValue: 0,\n        sync: true\n      })),\n      hoveredValue: bindable(() => ({\n        defaultValue: null,\n        isEqual: isDateEqual\n      })),\n      view: bindable(() => ({\n        defaultValue: prop(\"defaultView\"),\n        value: prop(\"view\"),\n        onChange(value) {\n          prop(\"onViewChange\")?.({ view: value });\n        }\n      })),\n      startValue: bindable(() => {\n        const focusedValue = prop(\"focusedValue\") || prop(\"defaultFocusedValue\");\n        return {\n          defaultValue: alignDate(focusedValue, \"start\", { months: prop(\"numOfMonths\") }, prop(\"locale\")),\n          isEqual: isDateEqual,\n          hash: (v) => v.toString()\n        };\n      }),\n      currentPlacement: bindable(() => ({\n        defaultValue: void 0\n      })),\n      restoreFocus: bindable(() => ({\n        defaultValue: false\n      }))\n    };\n  },\n  computed: {\n    isInteractive: ({ prop }) => !prop(\"disabled\") && !prop(\"readOnly\"),\n    visibleDuration: ({ prop }) => ({ months: prop(\"numOfMonths\") }),\n    endValue: ({ context, computed }) => getEndDate(context.get(\"startValue\"), computed(\"visibleDuration\")),\n    visibleRange: ({ context, computed }) => ({ start: context.get(\"startValue\"), end: computed(\"endValue\") }),\n    visibleRangeText: ({ context, prop, computed }) => getVisibleRangeText({\n      view: context.get(\"view\"),\n      startValue: context.get(\"startValue\"),\n      endValue: computed(\"endValue\"),\n      locale: prop(\"locale\"),\n      timeZone: prop(\"timeZone\"),\n      selectionMode: prop(\"selectionMode\")\n    }),\n    isPrevVisibleRangeValid: ({ context, prop }) => !isPreviousRangeInvalid(context.get(\"startValue\"), prop(\"min\"), prop(\"max\")),\n    isNextVisibleRangeValid: ({ prop, computed }) => !isNextRangeInvalid(computed(\"endValue\"), prop(\"min\"), prop(\"max\")),\n    valueAsString: ({ context, prop }) => getValueAsString(context.get(\"value\"), prop)\n  },\n  effects: [\"setupLiveRegion\"],\n  watch({ track, prop, context, action, computed }) {\n    track([() => prop(\"locale\")], () => {\n      action([\"setStartValue\", \"syncInputElement\"]);\n    });\n    track([() => context.hash(\"focusedValue\")], () => {\n      action([\"setStartValue\", \"focusActiveCellIfNeeded\", \"setHoveredValueIfKeyboard\"]);\n    });\n    track([() => context.hash(\"startValue\")], () => {\n      action([\"syncMonthSelectElement\", \"syncYearSelectElement\", \"invokeOnVisibleRangeChange\"]);\n    });\n    track([() => context.get(\"inputValue\")], () => {\n      action([\"syncInputValue\"]);\n    });\n    track([() => context.hash(\"value\")], () => {\n      action([\"syncInputElement\"]);\n    });\n    track([() => computed(\"valueAsString\").toString()], () => {\n      action([\"announceValueText\"]);\n    });\n    track([() => context.get(\"view\")], () => {\n      action([\"focusActiveCell\"]);\n    });\n    track([() => prop(\"open\")], () => {\n      action([\"toggleVisibility\"]);\n    });\n  },\n  on: {\n    \"VALUE.SET\": {\n      actions: [\"setDateValue\", \"setFocusedDate\"]\n    },\n    \"VIEW.SET\": {\n      actions: [\"setView\"]\n    },\n    \"FOCUS.SET\": {\n      actions: [\"setFocusedDate\"]\n    },\n    \"VALUE.CLEAR\": {\n      actions: [\"clearDateValue\", \"clearFocusedDate\", \"focusFirstInputElement\"]\n    },\n    \"INPUT.CHANGE\": [\n      {\n        guard: \"isInputValueEmpty\",\n        actions: [\"setInputValue\", \"clearDateValue\", \"clearFocusedDate\"]\n      },\n      {\n        actions: [\"setInputValue\", \"focusParsedDate\"]\n      }\n    ],\n    \"INPUT.ENTER\": {\n      actions: [\"focusParsedDate\", \"selectFocusedDate\"]\n    },\n    \"INPUT.FOCUS\": {\n      actions: [\"setActiveIndex\"]\n    },\n    \"INPUT.BLUR\": [\n      {\n        guard: \"shouldFixOnBlur\",\n        actions: [\"setActiveIndexToStart\", \"selectParsedDate\"]\n      },\n      {\n        actions: [\"setActiveIndexToStart\"]\n      }\n    ],\n    \"PRESET.CLICK\": [\n      {\n        guard: \"isOpenControlled\",\n        actions: [\"setDateValue\", \"setFocusedDate\", \"invokeOnClose\"]\n      },\n      {\n        target: \"focused\",\n        actions: [\"setDateValue\", \"setFocusedDate\", \"focusInputElement\"]\n      }\n    ],\n    \"GOTO.NEXT\": [\n      {\n        guard: \"isYearView\",\n        actions: [\"focusNextDecade\", \"announceVisibleRange\"]\n      },\n      {\n        guard: \"isMonthView\",\n        actions: [\"focusNextYear\", \"announceVisibleRange\"]\n      },\n      {\n        actions: [\"focusNextPage\"]\n      }\n    ],\n    \"GOTO.PREV\": [\n      {\n        guard: \"isYearView\",\n        actions: [\"focusPreviousDecade\", \"announceVisibleRange\"]\n      },\n      {\n        guard: \"isMonthView\",\n        actions: [\"focusPreviousYear\", \"announceVisibleRange\"]\n      },\n      {\n        actions: [\"focusPreviousPage\"]\n      }\n    ]\n  },\n  states: {\n    idle: {\n      tags: [\"closed\"],\n      on: {\n        \"CONTROLLED.OPEN\": {\n          target: \"open\",\n          actions: [\"focusFirstSelectedDate\", \"focusActiveCell\"]\n        },\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"focusFirstSelectedDate\", \"focusActiveCell\", \"invokeOnOpen\"]\n          }\n        ],\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"focusFirstSelectedDate\", \"focusActiveCell\", \"invokeOnOpen\"]\n          }\n        ]\n      }\n    },\n    focused: {\n      tags: [\"closed\"],\n      on: {\n        \"CONTROLLED.OPEN\": {\n          target: \"open\",\n          actions: [\"focusFirstSelectedDate\", \"focusActiveCell\"]\n        },\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"focusFirstSelectedDate\", \"focusActiveCell\", \"invokeOnOpen\"]\n          }\n        ],\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"focusFirstSelectedDate\", \"focusActiveCell\", \"invokeOnOpen\"]\n          }\n        ]\n      }\n    },\n    open: {\n      tags: [\"open\"],\n      effects: [\"trackDismissableElement\", \"trackPositioning\"],\n      exit: [\"clearHoveredDate\", \"resetView\"],\n      on: {\n        \"CONTROLLED.CLOSE\": [\n          {\n            guard: and(\"shouldRestoreFocus\", \"isInteractOutsideEvent\"),\n            target: \"focused\",\n            actions: [\"focusTriggerElement\"]\n          },\n          {\n            guard: \"shouldRestoreFocus\",\n            target: \"focused\",\n            actions: [\"focusInputElement\"]\n          },\n          {\n            target: \"idle\"\n          }\n        ],\n        \"CELL.CLICK\": [\n          {\n            guard: \"isAboveMinView\",\n            actions: [\"setFocusedValueForView\", \"setPreviousView\"]\n          },\n          {\n            guard: and(\"isRangePicker\", \"hasSelectedRange\"),\n            actions: [\"setActiveIndexToStart\", \"resetSelection\", \"setActiveIndexToEnd\"]\n          },\n          // === Grouped transitions (based on `closeOnSelect` and `isOpenControlled`) ===\n          {\n            guard: and(\"isRangePicker\", \"isSelectingEndDate\", \"closeOnSelect\", \"isOpenControlled\"),\n            actions: [\n              \"setFocusedDate\",\n              \"setSelectedDate\",\n              \"setActiveIndexToStart\",\n              \"clearHoveredDate\",\n              \"invokeOnClose\",\n              \"setRestoreFocus\"\n            ]\n          },\n          {\n            guard: and(\"isRangePicker\", \"isSelectingEndDate\", \"closeOnSelect\"),\n            target: \"focused\",\n            actions: [\n              \"setFocusedDate\",\n              \"setSelectedDate\",\n              \"setActiveIndexToStart\",\n              \"clearHoveredDate\",\n              \"invokeOnClose\",\n              \"focusInputElement\"\n            ]\n          },\n          {\n            guard: and(\"isRangePicker\", \"isSelectingEndDate\"),\n            actions: [\"setFocusedDate\", \"setSelectedDate\", \"setActiveIndexToStart\", \"clearHoveredDate\"]\n          },\n          // ===\n          {\n            guard: \"isRangePicker\",\n            actions: [\"setFocusedDate\", \"setSelectedDate\", \"setActiveIndexToEnd\"]\n          },\n          {\n            guard: \"isMultiPicker\",\n            actions: [\"setFocusedDate\", \"toggleSelectedDate\"]\n          },\n          // === Grouped transitions (based on `closeOnSelect` and `isOpenControlled`) ===\n          {\n            guard: and(\"closeOnSelect\", \"isOpenControlled\"),\n            actions: [\"setFocusedDate\", \"setSelectedDate\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"closeOnSelect\",\n            target: \"focused\",\n            actions: [\"setFocusedDate\", \"setSelectedDate\", \"invokeOnClose\", \"focusInputElement\"]\n          },\n          {\n            actions: [\"setFocusedDate\", \"setSelectedDate\"]\n          }\n          // ===\n        ],\n        \"CELL.POINTER_MOVE\": {\n          guard: and(\"isRangePicker\", \"isSelectingEndDate\"),\n          actions: [\"setHoveredDate\", \"setFocusedDate\"]\n        },\n        \"TABLE.POINTER_LEAVE\": {\n          guard: \"isRangePicker\",\n          actions: [\"clearHoveredDate\"]\n        },\n        \"TABLE.POINTER_DOWN\": {\n          actions: [\"disableTextSelection\"]\n        },\n        \"TABLE.POINTER_UP\": {\n          actions: [\"enableTextSelection\"]\n        },\n        \"TABLE.ESCAPE\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"focusFirstSelectedDate\", \"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"focusFirstSelectedDate\", \"invokeOnClose\", \"focusTriggerElement\"]\n          }\n        ],\n        \"TABLE.ENTER\": [\n          {\n            guard: \"isAboveMinView\",\n            actions: [\"setPreviousView\"]\n          },\n          {\n            guard: and(\"isRangePicker\", \"hasSelectedRange\"),\n            actions: [\"setActiveIndexToStart\", \"clearDateValue\", \"setSelectedDate\", \"setActiveIndexToEnd\"]\n          },\n          // === Grouped transitions (based on `closeOnSelect` and `isOpenControlled`) ===\n          {\n            guard: and(\"isRangePicker\", \"isSelectingEndDate\", \"closeOnSelect\", \"isOpenControlled\"),\n            actions: [\"setSelectedDate\", \"setActiveIndexToStart\", \"clearHoveredDate\", \"invokeOnClose\"]\n          },\n          {\n            guard: and(\"isRangePicker\", \"isSelectingEndDate\", \"closeOnSelect\"),\n            target: \"focused\",\n            actions: [\n              \"setSelectedDate\",\n              \"setActiveIndexToStart\",\n              \"clearHoveredDate\",\n              \"invokeOnClose\",\n              \"focusInputElement\"\n            ]\n          },\n          {\n            guard: and(\"isRangePicker\", \"isSelectingEndDate\"),\n            actions: [\"setSelectedDate\", \"setActiveIndexToStart\", \"clearHoveredDate\"]\n          },\n          // ===\n          {\n            guard: \"isRangePicker\",\n            actions: [\"setSelectedDate\", \"setActiveIndexToEnd\", \"focusNextDay\"]\n          },\n          {\n            guard: \"isMultiPicker\",\n            actions: [\"toggleSelectedDate\"]\n          },\n          // === Grouped transitions (based on `closeOnSelect` and `isOpenControlled`) ===\n          {\n            guard: and(\"closeOnSelect\", \"isOpenControlled\"),\n            actions: [\"selectFocusedDate\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"closeOnSelect\",\n            target: \"focused\",\n            actions: [\"selectFocusedDate\", \"invokeOnClose\", \"focusInputElement\"]\n          },\n          {\n            actions: [\"selectFocusedDate\"]\n          }\n          // ===\n        ],\n        \"TABLE.ARROW_RIGHT\": [\n          {\n            guard: \"isMonthView\",\n            actions: [\"focusNextMonth\"]\n          },\n          {\n            guard: \"isYearView\",\n            actions: [\"focusNextYear\"]\n          },\n          {\n            actions: [\"focusNextDay\", \"setHoveredDate\"]\n          }\n        ],\n        \"TABLE.ARROW_LEFT\": [\n          {\n            guard: \"isMonthView\",\n            actions: [\"focusPreviousMonth\"]\n          },\n          {\n            guard: \"isYearView\",\n            actions: [\"focusPreviousYear\"]\n          },\n          {\n            actions: [\"focusPreviousDay\"]\n          }\n        ],\n        \"TABLE.ARROW_UP\": [\n          {\n            guard: \"isMonthView\",\n            actions: [\"focusPreviousMonthColumn\"]\n          },\n          {\n            guard: \"isYearView\",\n            actions: [\"focusPreviousYearColumn\"]\n          },\n          {\n            actions: [\"focusPreviousWeek\"]\n          }\n        ],\n        \"TABLE.ARROW_DOWN\": [\n          {\n            guard: \"isMonthView\",\n            actions: [\"focusNextMonthColumn\"]\n          },\n          {\n            guard: \"isYearView\",\n            actions: [\"focusNextYearColumn\"]\n          },\n          {\n            actions: [\"focusNextWeek\"]\n          }\n        ],\n        \"TABLE.PAGE_UP\": {\n          actions: [\"focusPreviousSection\"]\n        },\n        \"TABLE.PAGE_DOWN\": {\n          actions: [\"focusNextSection\"]\n        },\n        \"TABLE.HOME\": [\n          {\n            guard: \"isMonthView\",\n            actions: [\"focusFirstMonth\"]\n          },\n          {\n            guard: \"isYearView\",\n            actions: [\"focusFirstYear\"]\n          },\n          {\n            actions: [\"focusSectionStart\"]\n          }\n        ],\n        \"TABLE.END\": [\n          {\n            guard: \"isMonthView\",\n            actions: [\"focusLastMonth\"]\n          },\n          {\n            guard: \"isYearView\",\n            actions: [\"focusLastYear\"]\n          },\n          {\n            actions: [\"focusSectionEnd\"]\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        \"VIEW.TOGGLE\": {\n          actions: [\"setNextView\"]\n        },\n        INTERACT_OUTSIDE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"setActiveIndexToStart\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"shouldRestoreFocus\",\n            target: \"focused\",\n            actions: [\"setActiveIndexToStart\", \"invokeOnClose\", \"focusTriggerElement\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"setActiveIndexToStart\", \"invokeOnClose\"]\n          }\n        ],\n        CLOSE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"setActiveIndexToStart\", \"invokeOnClose\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"setActiveIndexToStart\", \"invokeOnClose\"]\n          }\n        ]\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      isAboveMinView: ({ context, prop }) => isAboveMinView(context.get(\"view\"), prop(\"minView\")),\n      isDayView: ({ context, event }) => (event.view || context.get(\"view\")) === \"day\",\n      isMonthView: ({ context, event }) => (event.view || context.get(\"view\")) === \"month\",\n      isYearView: ({ context, event }) => (event.view || context.get(\"view\")) === \"year\",\n      isRangePicker: ({ prop }) => prop(\"selectionMode\") === \"range\",\n      hasSelectedRange: ({ context }) => context.get(\"value\").length === 2,\n      isMultiPicker: ({ prop }) => prop(\"selectionMode\") === \"multiple\",\n      shouldRestoreFocus: ({ context }) => !!context.get(\"restoreFocus\"),\n      isSelectingEndDate: ({ context }) => context.get(\"activeIndex\") === 1,\n      closeOnSelect: ({ prop }) => !!prop(\"closeOnSelect\"),\n      isOpenControlled: ({ prop }) => prop(\"open\") != void 0 || !!prop(\"inline\"),\n      isInteractOutsideEvent: ({ event }) => event.previousEvent?.type === \"INTERACT_OUTSIDE\",\n      isInputValueEmpty: ({ event }) => event.value.trim() === \"\",\n      shouldFixOnBlur: ({ event }) => !!event.fixOnBlur\n    },\n    effects: {\n      trackPositioning({ context, prop, scope }) {\n        if (prop(\"inline\")) return;\n        if (!context.get(\"currentPlacement\")) {\n          context.set(\"currentPlacement\", prop(\"positioning\").placement);\n        }\n        const anchorEl = getControlEl(scope);\n        const getPositionerEl2 = () => getPositionerEl(scope);\n        return getPlacement(anchorEl, getPositionerEl2, {\n          ...prop(\"positioning\"),\n          defer: true,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      setupLiveRegion({ scope, refs }) {\n        const doc = scope.getDoc();\n        refs.set(\"announcer\", createLiveRegion({ level: \"assertive\", document: doc }));\n        return () => refs.get(\"announcer\")?.destroy?.();\n      },\n      trackDismissableElement({ scope, send, context, prop }) {\n        if (prop(\"inline\")) return;\n        const getContentEl2 = () => getContentEl(scope);\n        return trackDismissableElement(getContentEl2, {\n          type: \"popover\",\n          defer: true,\n          exclude: [...getInputEls(scope), getTriggerEl(scope), getClearTriggerEl(scope)],\n          onInteractOutside(event) {\n            context.set(\"restoreFocus\", !event.detail.focusable);\n          },\n          onDismiss() {\n            send({ type: \"INTERACT_OUTSIDE\" });\n          },\n          onEscapeKeyDown(event) {\n            event.preventDefault();\n            send({ type: \"TABLE.ESCAPE\", src: \"dismissable\" });\n          }\n        });\n      }\n    },\n    actions: {\n      setNextView({ context, prop }) {\n        const nextView = getNextView(context.get(\"view\"), prop(\"minView\"), prop(\"maxView\"));\n        context.set(\"view\", nextView);\n      },\n      setPreviousView({ context, prop }) {\n        const prevView = getPreviousView(context.get(\"view\"), prop(\"minView\"), prop(\"maxView\"));\n        context.set(\"view\", prevView);\n      },\n      setView({ context, event }) {\n        context.set(\"view\", event.view);\n      },\n      setRestoreFocus({ context }) {\n        context.set(\"restoreFocus\", true);\n      },\n      announceValueText({ context, prop, refs }) {\n        const value = context.get(\"value\");\n        const locale = prop(\"locale\");\n        const timeZone = prop(\"timeZone\");\n        let announceText;\n        if (prop(\"selectionMode\") === \"range\") {\n          const [startDate, endDate] = value;\n          if (startDate && endDate) {\n            announceText = formatSelectedDate(startDate, endDate, locale, timeZone);\n          } else if (startDate) {\n            announceText = formatSelectedDate(startDate, null, locale, timeZone);\n          } else if (endDate) {\n            announceText = formatSelectedDate(endDate, null, locale, timeZone);\n          } else {\n            announceText = \"\";\n          }\n        } else {\n          announceText = value.map((date) => formatSelectedDate(date, null, locale, timeZone)).filter(Boolean).join(\",\");\n        }\n        refs.get(\"announcer\")?.announce(announceText, 3e3);\n      },\n      announceVisibleRange({ computed, refs }) {\n        const { formatted } = computed(\"visibleRangeText\");\n        refs.get(\"announcer\")?.announce(formatted);\n      },\n      disableTextSelection({ scope }) {\n        disableTextSelection({ target: getContentEl(scope), doc: scope.getDoc() });\n      },\n      enableTextSelection({ scope }) {\n        restoreTextSelection({ doc: scope.getDoc(), target: getContentEl(scope) });\n      },\n      focusFirstSelectedDate(params) {\n        const { context } = params;\n        if (!context.get(\"value\").length) return;\n        setFocusedValue(params, context.get(\"value\")[0]);\n      },\n      syncInputElement({ scope, computed }) {\n        raf(() => {\n          const inputEls = getInputEls(scope);\n          inputEls.forEach((inputEl, index) => {\n            setElementValue(inputEl, computed(\"valueAsString\")[index] || \"\");\n          });\n        });\n      },\n      setFocusedDate(params) {\n        const { event } = params;\n        const value = Array.isArray(event.value) ? event.value[0] : event.value;\n        setFocusedValue(params, value);\n      },\n      setFocusedValueForView(params) {\n        const { context, event } = params;\n        setFocusedValue(params, context.get(\"focusedValue\").set({ [context.get(\"view\")]: event.value }));\n      },\n      focusNextMonth(params) {\n        const { context } = params;\n        setFocusedValue(params, context.get(\"focusedValue\").add({ months: 1 }));\n      },\n      focusPreviousMonth(params) {\n        const { context } = params;\n        setFocusedValue(params, context.get(\"focusedValue\").subtract({ months: 1 }));\n      },\n      setDateValue({ context, event, prop }) {\n        if (!Array.isArray(event.value)) return;\n        const value = event.value.map((date) => constrainValue(date, prop(\"min\"), prop(\"max\")));\n        context.set(\"value\", value);\n      },\n      clearDateValue({ context }) {\n        context.set(\"value\", []);\n      },\n      setSelectedDate(params) {\n        const { context, event } = params;\n        const values = Array.from(context.get(\"value\"));\n        values[context.get(\"activeIndex\")] = normalizeValue(params, event.value ?? context.get(\"focusedValue\"));\n        context.set(\"value\", adjustStartAndEndDate(values));\n      },\n      resetSelection(params) {\n        const { context, event } = params;\n        const value = normalizeValue(params, event.value ?? context.get(\"focusedValue\"));\n        context.set(\"value\", [value]);\n      },\n      toggleSelectedDate(params) {\n        const { context, event } = params;\n        const currentValue = normalizeValue(params, event.value ?? context.get(\"focusedValue\"));\n        const index = context.get(\"value\").findIndex((date) => isDateEqual(date, currentValue));\n        if (index === -1) {\n          const values = [...context.get(\"value\"), currentValue];\n          context.set(\"value\", sortDates(values));\n        } else {\n          const values = Array.from(context.get(\"value\"));\n          values.splice(index, 1);\n          context.set(\"value\", sortDates(values));\n        }\n      },\n      setHoveredDate({ context, event }) {\n        context.set(\"hoveredValue\", event.value);\n      },\n      clearHoveredDate({ context }) {\n        context.set(\"hoveredValue\", null);\n      },\n      selectFocusedDate({ context, computed }) {\n        const values = Array.from(context.get(\"value\"));\n        const activeIndex = context.get(\"activeIndex\");\n        values[activeIndex] = context.get(\"focusedValue\").copy();\n        context.set(\"value\", adjustStartAndEndDate(values));\n        const valueAsString = computed(\"valueAsString\");\n        context.set(\"inputValue\", valueAsString[activeIndex]);\n      },\n      focusPreviousDay(params) {\n        const { context } = params;\n        const nextValue = context.get(\"focusedValue\").subtract({ days: 1 });\n        setFocusedValue(params, nextValue);\n      },\n      focusNextDay(params) {\n        const { context } = params;\n        const nextValue = context.get(\"focusedValue\").add({ days: 1 });\n        setFocusedValue(params, nextValue);\n      },\n      focusPreviousWeek(params) {\n        const { context } = params;\n        const nextValue = context.get(\"focusedValue\").subtract({ weeks: 1 });\n        setFocusedValue(params, nextValue);\n      },\n      focusNextWeek(params) {\n        const { context } = params;\n        const nextValue = context.get(\"focusedValue\").add({ weeks: 1 });\n        setFocusedValue(params, nextValue);\n      },\n      focusNextPage(params) {\n        const { context, computed, prop } = params;\n        const nextPage = getNextPage(\n          context.get(\"focusedValue\"),\n          context.get(\"startValue\"),\n          computed(\"visibleDuration\"),\n          prop(\"locale\"),\n          prop(\"min\"),\n          prop(\"max\")\n        );\n        setAdjustedValue(params, nextPage);\n      },\n      focusPreviousPage(params) {\n        const { context, computed, prop } = params;\n        const previousPage = getPreviousPage(\n          context.get(\"focusedValue\"),\n          context.get(\"startValue\"),\n          computed(\"visibleDuration\"),\n          prop(\"locale\"),\n          prop(\"min\"),\n          prop(\"max\")\n        );\n        setAdjustedValue(params, previousPage);\n      },\n      focusSectionStart(params) {\n        const { context } = params;\n        setFocusedValue(params, context.get(\"startValue\").copy());\n      },\n      focusSectionEnd(params) {\n        const { computed } = params;\n        setFocusedValue(params, computed(\"endValue\").copy());\n      },\n      focusNextSection(params) {\n        const { context, event, computed, prop } = params;\n        const nextSection = getNextSection(\n          context.get(\"focusedValue\"),\n          context.get(\"startValue\"),\n          event.larger,\n          computed(\"visibleDuration\"),\n          prop(\"locale\"),\n          prop(\"min\"),\n          prop(\"max\")\n        );\n        if (!nextSection) return;\n        setAdjustedValue(params, nextSection);\n      },\n      focusPreviousSection(params) {\n        const { context, event, computed, prop } = params;\n        const previousSection = getPreviousSection(\n          context.get(\"focusedValue\"),\n          context.get(\"startValue\"),\n          event.larger,\n          computed(\"visibleDuration\"),\n          prop(\"locale\"),\n          prop(\"min\"),\n          prop(\"max\")\n        );\n        if (!previousSection) return;\n        setAdjustedValue(params, previousSection);\n      },\n      focusNextYear(params) {\n        const { context } = params;\n        const nextValue = context.get(\"focusedValue\").add({ years: 1 });\n        setFocusedValue(params, nextValue);\n      },\n      focusPreviousYear(params) {\n        const { context } = params;\n        const nextValue = context.get(\"focusedValue\").subtract({ years: 1 });\n        setFocusedValue(params, nextValue);\n      },\n      focusNextDecade(params) {\n        const { context } = params;\n        const nextValue = context.get(\"focusedValue\").add({ years: 10 });\n        setFocusedValue(params, nextValue);\n      },\n      focusPreviousDecade(params) {\n        const { context } = params;\n        const nextValue = context.get(\"focusedValue\").subtract({ years: 10 });\n        setFocusedValue(params, nextValue);\n      },\n      clearFocusedDate(params) {\n        const { prop } = params;\n        setFocusedValue(params, getTodayDate(prop(\"timeZone\")));\n      },\n      focusPreviousMonthColumn(params) {\n        const { context, event } = params;\n        const nextValue = context.get(\"focusedValue\").subtract({ months: event.columns });\n        setFocusedValue(params, nextValue);\n      },\n      focusNextMonthColumn(params) {\n        const { context, event } = params;\n        const nextValue = context.get(\"focusedValue\").add({ months: event.columns });\n        setFocusedValue(params, nextValue);\n      },\n      focusPreviousYearColumn(params) {\n        const { context, event } = params;\n        const nextValue = context.get(\"focusedValue\").subtract({ years: event.columns });\n        setFocusedValue(params, nextValue);\n      },\n      focusNextYearColumn(params) {\n        const { context, event } = params;\n        const nextValue = context.get(\"focusedValue\").add({ years: event.columns });\n        setFocusedValue(params, nextValue);\n      },\n      focusFirstMonth(params) {\n        const { context } = params;\n        const nextValue = context.get(\"focusedValue\").set({ month: 1 });\n        setFocusedValue(params, nextValue);\n      },\n      focusLastMonth(params) {\n        const { context } = params;\n        const nextValue = context.get(\"focusedValue\").set({ month: 12 });\n        setFocusedValue(params, nextValue);\n      },\n      focusFirstYear(params) {\n        const { context } = params;\n        const range = getDecadeRange(context.get(\"focusedValue\").year);\n        const nextValue = context.get(\"focusedValue\").set({ year: range[0] });\n        setFocusedValue(params, nextValue);\n      },\n      focusLastYear(params) {\n        const { context } = params;\n        const range = getDecadeRange(context.get(\"focusedValue\").year);\n        const nextValue = context.get(\"focusedValue\").set({ year: range[range.length - 1] });\n        setFocusedValue(params, nextValue);\n      },\n      setActiveIndex({ context, event }) {\n        context.set(\"activeIndex\", event.index);\n      },\n      setActiveIndexToEnd({ context }) {\n        context.set(\"activeIndex\", 1);\n      },\n      setActiveIndexToStart({ context }) {\n        context.set(\"activeIndex\", 0);\n      },\n      focusActiveCell({ scope, context }) {\n        raf(() => {\n          const view = context.get(\"view\");\n          getFocusedCell(scope, view)?.focus({ preventScroll: true });\n        });\n      },\n      focusActiveCellIfNeeded({ scope, context, event }) {\n        if (!event.focus) return;\n        raf(() => {\n          const view = context.get(\"view\");\n          getFocusedCell(scope, view)?.focus({ preventScroll: true });\n        });\n      },\n      setHoveredValueIfKeyboard({ context, event, prop }) {\n        if (!event.type.startsWith(\"TABLE.ARROW\") || prop(\"selectionMode\") !== \"range\" || context.get(\"activeIndex\") === 0)\n          return;\n        context.set(\"hoveredValue\", context.get(\"focusedValue\").copy());\n      },\n      focusTriggerElement({ scope }) {\n        raf(() => {\n          getTriggerEl(scope)?.focus({ preventScroll: true });\n        });\n      },\n      focusFirstInputElement({ scope }) {\n        raf(() => {\n          const [inputEl] = getInputEls(scope);\n          inputEl?.focus({ preventScroll: true });\n        });\n      },\n      focusInputElement({ scope }) {\n        raf(() => {\n          const inputEls = getInputEls(scope);\n          const lastIndexWithValue = inputEls.findLastIndex((inputEl2) => inputEl2.value !== \"\");\n          const indexToFocus = Math.max(lastIndexWithValue, 0);\n          const inputEl = inputEls[indexToFocus];\n          inputEl?.focus({ preventScroll: true });\n          inputEl?.setSelectionRange(inputEl.value.length, inputEl.value.length);\n        });\n      },\n      syncMonthSelectElement({ scope, context }) {\n        const monthSelectEl = getMonthSelectEl(scope);\n        setElementValue(monthSelectEl, context.get(\"startValue\").month.toString());\n      },\n      syncYearSelectElement({ scope, context }) {\n        const yearSelectEl = getYearSelectEl(scope);\n        setElementValue(yearSelectEl, context.get(\"startValue\").year.toString());\n      },\n      setInputValue({ context, event }) {\n        if (context.get(\"activeIndex\") !== event.index) return;\n        context.set(\"inputValue\", event.value);\n      },\n      syncInputValue({ scope, context, event }) {\n        queueMicrotask(() => {\n          const inputEls = getInputEls(scope);\n          const idx = event.index ?? context.get(\"activeIndex\");\n          setElementValue(inputEls[idx], context.get(\"inputValue\"));\n        });\n      },\n      focusParsedDate(params) {\n        const { event, prop } = params;\n        if (event.index == null) return;\n        const parse2 = prop(\"parse\");\n        const date = parse2(event.value, { locale: prop(\"locale\"), timeZone: prop(\"timeZone\") });\n        if (!date || !isValidDate(date)) return;\n        setFocusedValue(params, date);\n      },\n      selectParsedDate({ context, event, prop }) {\n        if (event.index == null) return;\n        const parse2 = prop(\"parse\");\n        let date = parse2(event.value, { locale: prop(\"locale\"), timeZone: prop(\"timeZone\") });\n        if (!date || !isValidDate(date)) {\n          if (event.value) {\n            date = context.get(\"focusedValue\").copy();\n          }\n        }\n        if (!date) return;\n        date = constrainValue(date, prop(\"min\"), prop(\"max\"));\n        const values = Array.from(context.get(\"value\"));\n        values[event.index] = date;\n        context.set(\"value\", values);\n        const valueAsString = getValueAsString(values, prop);\n        context.set(\"inputValue\", valueAsString[event.index]);\n      },\n      resetView({ context }) {\n        context.set(\"view\", context.initial(\"view\"));\n      },\n      setStartValue({ context, computed, prop }) {\n        const focusedValue = context.get(\"focusedValue\");\n        const outside = isDateOutsideRange(focusedValue, context.get(\"startValue\"), computed(\"endValue\"));\n        if (!outside) return;\n        const startValue = alignDate(focusedValue, \"start\", { months: prop(\"numOfMonths\") }, prop(\"locale\"));\n        context.set(\"startValue\", startValue);\n      },\n      invokeOnOpen({ prop, context }) {\n        if (prop(\"inline\")) return;\n        prop(\"onOpenChange\")?.({ open: true, value: context.get(\"value\") });\n      },\n      invokeOnClose({ prop, context }) {\n        if (prop(\"inline\")) return;\n        prop(\"onOpenChange\")?.({ open: false, value: context.get(\"value\") });\n      },\n      invokeOnVisibleRangeChange({ prop, context, computed }) {\n        prop(\"onVisibleRangeChange\")?.({\n          view: context.get(\"view\"),\n          visibleRange: computed(\"visibleRange\")\n        });\n      },\n      toggleVisibility({ event, send, prop }) {\n        send({ type: prop(\"open\") ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\", previousEvent: event });\n      }\n    }\n  }\n});\nvar normalizeValue = (ctx, value) => {\n  const { context, prop } = ctx;\n  const view = context.get(\"view\");\n  let dateValue = typeof value === \"number\" ? context.get(\"focusedValue\").set({ [view]: value }) : value;\n  eachView((view2) => {\n    if (isBelowMinView(view2, prop(\"minView\"))) {\n      dateValue = dateValue.set({ [view2]: view2 === \"day\" ? 1 : 0 });\n    }\n  });\n  return dateValue;\n};\nfunction setFocusedValue(ctx, mixedValue) {\n  const { context, prop, computed } = ctx;\n  if (!mixedValue) return;\n  const value = normalizeValue(ctx, mixedValue);\n  if (isDateEqual(context.get(\"focusedValue\"), value)) return;\n  const adjustFn = getAdjustedDateFn(computed(\"visibleDuration\"), prop(\"locale\"), prop(\"min\"), prop(\"max\"));\n  const adjustedValue = adjustFn({\n    focusedDate: value,\n    startDate: context.get(\"startValue\")\n  });\n  context.set(\"startValue\", adjustedValue.startDate);\n  context.set(\"focusedValue\", adjustedValue.focusedDate);\n}\nfunction setAdjustedValue(ctx, value) {\n  const { context } = ctx;\n  context.set(\"startValue\", value.startDate);\n  const focusedValue = context.get(\"focusedValue\");\n  if (isDateEqual(focusedValue, value.focusedDate)) return;\n  context.set(\"focusedValue\", value.focusedDate);\n}\nfunction parse(value) {\n  if (Array.isArray(value)) {\n    return value.map((v) => parse(v));\n  }\n  if (value instanceof Date) {\n    return new CalendarDate(value.getFullYear(), value.getMonth() + 1, value.getDate());\n  }\n  return parseDate(value);\n}\nvar props = createProps()([\n  \"closeOnSelect\",\n  \"dir\",\n  \"disabled\",\n  \"fixedWeeks\",\n  \"focusedValue\",\n  \"format\",\n  \"parse\",\n  \"placeholder\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"inline\",\n  \"invalid\",\n  \"isDateUnavailable\",\n  \"locale\",\n  \"max\",\n  \"min\",\n  \"name\",\n  \"numOfMonths\",\n  \"onFocusChange\",\n  \"onOpenChange\",\n  \"onValueChange\",\n  \"onViewChange\",\n  \"onVisibleRangeChange\",\n  \"open\",\n  \"defaultOpen\",\n  \"positioning\",\n  \"readOnly\",\n  \"required\",\n  \"selectionMode\",\n  \"startOfWeek\",\n  \"timeZone\",\n  \"translations\",\n  \"value\",\n  \"defaultView\",\n  \"defaultValue\",\n  \"view\",\n  \"defaultFocusedValue\",\n  \"outsideDaySelectable\",\n  \"minView\",\n  \"maxView\"\n]);\nvar splitProps = createSplitProps(props);\nvar inputProps = createProps()([\"index\", \"fixOnBlur\"]);\nvar splitInputProps = createSplitProps(inputProps);\nvar presetTriggerProps = createProps()([\"value\"]);\nvar splitPresetTriggerProps = createSplitProps(presetTriggerProps);\nvar tableProps = createProps()([\"columns\", \"id\", \"view\"]);\nvar splitTableProps = createSplitProps(tableProps);\nvar tableCellProps = createProps()([\"disabled\", \"value\", \"columns\"]);\nvar splitTableCellProps = createSplitProps(tableCellProps);\nvar viewProps = createProps()([\"view\"]);\nvar splitViewProps = createSplitProps(viewProps);\n\nexport { anatomy, connect, inputProps, machine, parse, presetTriggerProps, props, splitInputProps, splitPresetTriggerProps, splitProps, splitTableCellProps, splitTableProps, splitViewProps, tableCellProps, tableProps, viewProps };\n", "import * as datePicker from \"@zag-js/date-picker\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport { Component } from \"../lib/core\";\n\nexport class DatePicker extends Component<datePicker.Props, datePicker.Api> {\n\n  initMachine(props: datePicker.Props): VanillaMachine<any> {\n    return new VanillaMachine(datePicker.machine, {\n      ...props,\n    });\n  }\n\n  initApi(): datePicker.Api {\n    return datePicker.connect(this.machine.service, normalizeProps);\n  }\n\n  private getDayView = () =>\n    this.el.querySelector<HTMLElement>('[data-part=\"day-view\"]');\n  private getMonthView = () =>\n    this.el.querySelector<HTMLElement>('[data-part=\"month-view\"]');\n  private getYearView = () =>\n    this.el.querySelector<HTMLElement>('[data-part=\"year-view\"]');\n\n  private renderDayTableHeader = () => {\n    const dayView = this.getDayView();\n    const thead = dayView?.querySelector<HTMLElement>(\"thead\");\n    if (!thead || !this.api.weekDays) return;\n    const tr = this.doc.createElement(\"tr\");\n    this.spreadProps(tr, this.api.getTableRowProps({ view: \"day\" }));\n    this.api.weekDays.forEach((day) => {\n      const th = this.doc.createElement(\"th\");\n      th.scope = \"col\";\n      th.setAttribute(\"aria-label\", day.long);\n      th.textContent = day.narrow;\n      tr.appendChild(th);\n    });\n    thead.innerHTML = \"\";\n    thead.appendChild(tr);\n  };\n\n  private renderDayTableBody = () => {\n    const dayView = this.getDayView();\n    const tbody = dayView?.querySelector<HTMLElement>(\"tbody\");\n    if (!tbody) return;\n    this.spreadProps(tbody, this.api.getTableBodyProps({ view: \"day\" }));\n    if (!this.api.weeks) return;\n    tbody.innerHTML = \"\";\n    this.api.weeks.forEach((week) => {\n      const tr = this.doc.createElement(\"tr\");\n      this.spreadProps(tr, this.api.getTableRowProps({ view: \"day\" }));\n      week.forEach((value) => {\n        const td = this.doc.createElement(\"td\");\n        this.spreadProps(td, this.api.getDayTableCellProps({ value }));\n        const trigger = this.doc.createElement(\"div\");\n        this.spreadProps(\n          trigger,\n          this.api.getDayTableCellTriggerProps({ value }),\n        );\n        trigger.textContent = String(value.day);\n        td.appendChild(trigger);\n        tr.appendChild(td);\n      });\n      tbody.appendChild(tr);\n    });\n  };\n\n  private renderMonthTableBody = () => {\n    const monthView = this.getMonthView();\n    const tbody = monthView?.querySelector<HTMLElement>(\"tbody\");\n    if (!tbody) return;\n    this.spreadProps(tbody, this.api.getTableBodyProps({ view: \"month\" }));\n    const monthsGrid = this.api.getMonthsGrid({ columns: 4, format: \"short\" });\n    tbody.innerHTML = \"\";\n    monthsGrid.forEach((months) => {\n      const tr = this.doc.createElement(\"tr\");\n      this.spreadProps(tr, this.api.getTableRowProps());\n      months.forEach((month) => {\n        const td = this.doc.createElement(\"td\");\n        this.spreadProps(\n          td,\n          this.api.getMonthTableCellProps({ ...month, columns: 4 }),\n        );\n        const trigger = this.doc.createElement(\"div\");\n        this.spreadProps(\n          trigger,\n          this.api.getMonthTableCellTriggerProps({ ...month, columns: 4 }),\n        );\n        trigger.textContent = month.label;\n        td.appendChild(trigger);\n        tr.appendChild(td);\n      });\n      tbody.appendChild(tr);\n    });\n  };\n\n  private renderYearTableBody = () => {\n    const yearView = this.getYearView();\n    const tbody = yearView?.querySelector<HTMLElement>(\"tbody\");\n    if (!tbody) return;\n    this.spreadProps(tbody, this.api.getTableBodyProps());\n    const yearsGrid = this.api.getYearsGrid({ columns: 4 });\n    tbody.innerHTML = \"\";\n    yearsGrid.forEach((years) => {\n      const tr = this.doc.createElement(\"tr\");\n      this.spreadProps(tr, this.api.getTableRowProps({ view: \"year\" }));\n      years.forEach((year) => {\n        const td = this.doc.createElement(\"td\");\n        this.spreadProps(\n          td,\n          this.api.getYearTableCellProps({ ...year, columns: 4 }),\n        );\n        const trigger = this.doc.createElement(\"div\");\n        this.spreadProps(\n          trigger,\n          this.api.getYearTableCellTriggerProps({ ...year, columns: 4 }),\n        );\n        trigger.textContent = year.label;\n        td.appendChild(trigger);\n        tr.appendChild(td);\n      });\n      tbody.appendChild(tr);\n    });\n  };\n\n  render(): void {\n    const root = this.el.querySelector<HTMLElement>(\n      '[data-scope=\"date-picker\"][data-part=\"root\"]',\n    );\n    if (root) this.spreadProps(root, this.api.getRootProps());\n\n    const label = this.el.querySelector<HTMLElement>(\n      '[data-scope=\"date-picker\"][data-part=\"label\"]',\n    );\n    if (label) this.spreadProps(label, this.api.getLabelProps());\n\n    const control = this.el.querySelector<HTMLElement>(\n      '[data-scope=\"date-picker\"][data-part=\"control\"]',\n    );\n    if (control) this.spreadProps(control, this.api.getControlProps());\n\n    const input = this.el.querySelector<HTMLInputElement>(\n      '[data-scope=\"date-picker\"][data-part=\"input\"]',\n    );\n    if (input) {\n      this.spreadProps(input, this.api.getInputProps());\n    }\n\n    const trigger = this.el.querySelector<HTMLElement>(\n      '[data-scope=\"date-picker\"][data-part=\"trigger\"]',\n    );\n    if (trigger) {\n      this.spreadProps(trigger, this.api.getTriggerProps());\n    }\n\n    const positioner = this.el.querySelector<HTMLElement>(\n      '[data-scope=\"date-picker\"][data-part=\"positioner\"]',\n    );\n    if (positioner) this.spreadProps(positioner, this.api.getPositionerProps());\n\n    const content = this.el.querySelector<HTMLElement>(\n      '[data-scope=\"date-picker\"][data-part=\"content\"]',\n    );\n    if (content) this.spreadProps(content, this.api.getContentProps());\n\n    if (this.api.open) {\n      const dayView = this.getDayView();\n      const monthView = this.getMonthView();\n      const yearView = this.getYearView();\n      if (dayView) dayView.hidden = this.api.view !== \"day\";\n      if (monthView) monthView.hidden = this.api.view !== \"month\";\n      if (yearView) yearView.hidden = this.api.view !== \"year\";\n\n      if (this.api.view === \"day\" && dayView) {\n        const viewControl = dayView.querySelector<HTMLElement>(\n          '[data-part=\"view-control\"]',\n        );\n        if (viewControl)\n          this.spreadProps(\n            viewControl,\n            this.api.getViewControlProps({ view: \"year\" }),\n          );\n        const prevTrigger = dayView.querySelector<HTMLElement>(\n          '[data-part=\"prev-trigger\"]',\n        );\n        if (prevTrigger)\n          this.spreadProps(prevTrigger, this.api.getPrevTriggerProps());\n        const viewTrigger = dayView.querySelector<HTMLElement>(\n          '[data-part=\"view-trigger\"]',\n        );\n        if (viewTrigger) {\n          this.spreadProps(viewTrigger, this.api.getViewTriggerProps());\n          viewTrigger.textContent = this.api.visibleRangeText.start;\n        }\n        const nextTrigger = dayView.querySelector<HTMLElement>(\n          '[data-part=\"next-trigger\"]',\n        );\n        if (nextTrigger)\n          this.spreadProps(nextTrigger, this.api.getNextTriggerProps());\n        const table = dayView.querySelector<HTMLElement>(\"table\");\n        if (table)\n          this.spreadProps(table, this.api.getTableProps({ view: \"day\" }));\n        const thead = dayView.querySelector<HTMLElement>(\"thead\");\n        if (thead)\n          this.spreadProps(\n            thead,\n            this.api.getTableHeaderProps({ view: \"day\" }),\n          );\n        this.renderDayTableHeader();\n        this.renderDayTableBody();\n      } else if (this.api.view === \"month\" && monthView) {\n        const viewControl = monthView.querySelector<HTMLElement>(\n          '[data-part=\"view-control\"]',\n        );\n        if (viewControl)\n          this.spreadProps(\n            viewControl,\n            this.api.getViewControlProps({ view: \"month\" }),\n          );\n        const prevTrigger = monthView.querySelector<HTMLElement>(\n          '[data-part=\"prev-trigger\"]',\n        );\n        if (prevTrigger)\n          this.spreadProps(\n            prevTrigger,\n            this.api.getPrevTriggerProps({ view: \"month\" }),\n          );\n        const viewTrigger = monthView.querySelector<HTMLElement>(\n          '[data-part=\"view-trigger\"]',\n        );\n        if (viewTrigger) {\n          this.spreadProps(\n            viewTrigger,\n            this.api.getViewTriggerProps({ view: \"month\" }),\n          );\n          viewTrigger.textContent = String(this.api.visibleRange.start.year);\n        }\n        const nextTrigger = monthView.querySelector<HTMLElement>(\n          '[data-part=\"next-trigger\"]',\n        );\n        if (nextTrigger)\n          this.spreadProps(\n            nextTrigger,\n            this.api.getNextTriggerProps({ view: \"month\" }),\n          );\n        const table = monthView.querySelector<HTMLElement>(\"table\");\n        if (table)\n          this.spreadProps(\n            table,\n            this.api.getTableProps({ view: \"month\", columns: 4 }),\n          );\n        this.renderMonthTableBody();\n      } else if (this.api.view === \"year\" && yearView) {\n        const viewControl = yearView.querySelector<HTMLElement>(\n          '[data-part=\"view-control\"]',\n        );\n        if (viewControl)\n          this.spreadProps(\n            viewControl,\n            this.api.getViewControlProps({ view: \"year\" }),\n          );\n        const prevTrigger = yearView.querySelector<HTMLElement>(\n          '[data-part=\"prev-trigger\"]',\n        );\n        if (prevTrigger)\n          this.spreadProps(\n            prevTrigger,\n            this.api.getPrevTriggerProps({ view: \"year\" }),\n          );\n        const decadeText = yearView.querySelector<HTMLElement>(\n          '[data-part=\"decade\"]',\n        );\n        if (decadeText) {\n          const decade = this.api.getDecade();\n          decadeText.textContent = `${decade.start} - ${decade.end}`;\n        }\n        const nextTrigger = yearView.querySelector<HTMLElement>(\n          '[data-part=\"next-trigger\"]',\n        );\n        if (nextTrigger)\n          this.spreadProps(\n            nextTrigger,\n            this.api.getNextTriggerProps({ view: \"year\" }),\n          );\n        const table = yearView.querySelector<HTMLElement>(\"table\");\n        if (table)\n          this.spreadProps(\n            table,\n            this.api.getTableProps({ view: \"year\", columns: 4 }),\n          );\n        this.renderYearTableBody();\n      }\n    }\n  }\n}\n", "import type { Hook } from \"phoenix_live_view\";\nimport type { HookInterface, CallbackRef } from \"phoenix_live_view/assets/js/types/view_hook\";\nimport { DatePicker } from \"../components/date-picker\";\n\nimport type { ValueChangeDetails, Props } from \"@zag-js/date-picker\";\nimport type { Direction } from \"@zag-js/types\";\nimport * as datePicker from \"@zag-js/date-picker\";\n\nimport { getString, getBoolean, getStringList, getNumber } from \"../lib/util\";\n\nfunction toISOString(d: { year: number; month: number; day: number }): string {\n  const pad = (n: number) => String(n).padStart(2, \"0\");\n  return `${d.year}-${pad(d.month)}-${pad(d.day)}`;\n}\n\ntype DatePickerHookState = {\n  datePicker?: DatePicker;\n  handlers?: Array<CallbackRef>;\n  onSetValue?: (event: Event) => void;\n};\n\nconst DatePickerHook: Hook<object & DatePickerHookState, HTMLElement> = {\n  mounted(this: object & HookInterface<HTMLElement> & DatePickerHookState) {\n    const el = this.el;\n    const pushEvent = this.pushEvent.bind(this);\n    const liveSocket = this.liveSocket;\n\n    const min = getString(el, \"min\");\n    const max = getString(el, \"max\");\n    const positioningJson = getString(el, \"positioning\");\n    const parseList = (v: string[] | undefined) => (v ? v.map((x) => datePicker.parse(x)) : undefined);\n    const parseOne = (v: string | undefined) => (v ? datePicker.parse(v) : undefined);\n\n\n    const datePickerInstance = new DatePicker(el, {\n      id: el.id,\n      ...(getBoolean(el, \"controlled\")\n      ? { value: parseList(getStringList(el, \"value\") ) }\n      : { defaultValue: parseList(getStringList(el, \"defaultValue\") )}),\n      defaultFocusedValue: parseOne(getString(el, \"focusedValue\")),\n      defaultView: getString<\"day\" | \"month\" | \"year\">(el, \"defaultView\", [\"day\", \"month\", \"year\"]),\n      dir: getString<Direction>(el, \"dir\", [\"ltr\", \"rtl\"]),\n      locale: getString(el, \"locale\"),\n      timeZone: getString(el, \"timeZone\"),\n      disabled: getBoolean(el, \"disabled\"),\n      readOnly: getBoolean(el, \"readOnly\"),\n      required: getBoolean(el, \"required\"),\n      invalid: getBoolean(el, \"invalid\"),\n      outsideDaySelectable: getBoolean(el, \"outsideDaySelectable\"),\n      closeOnSelect: getBoolean(el, \"closeOnSelect\"),\n      min: min ? datePicker.parse(min) : undefined,\n      max: max ? datePicker.parse(max) : undefined,\n      numOfMonths: getNumber(el, \"numOfMonths\"),\n      startOfWeek: getNumber(el, \"startOfWeek\"),\n      fixedWeeks: getBoolean(el, \"fixedWeeks\"),\n      selectionMode: getString<\"single\" | \"multiple\" | \"range\">(el, \"selectionMode\", [\"single\", \"multiple\", \"range\"]),\n      placeholder: getString(el, \"placeholder\"),\n      minView: getString<\"day\" | \"month\" | \"year\">(el, \"minView\", [\"day\", \"month\", \"year\"]),\n      maxView: getString<\"day\" | \"month\" | \"year\">(el, \"maxView\", [\"day\", \"month\", \"year\"]),\n      inline: getBoolean(el, \"inline\"),\n      positioning: positioningJson ? JSON.parse(positioningJson) : undefined,\n\n      onValueChange: (details: ValueChangeDetails) => {\n        const isoStr = details.value?.length\n          ? details.value\n              .map((d: { year: number; month: number; day: number }) => toISOString(d))\n              .join(\",\")\n          : \"\";\n\n        const hiddenInput = el.querySelector<HTMLInputElement>(\n          `#${el.id}-value`\n        );\n        if (hiddenInput && hiddenInput.value !== isoStr) {\n          hiddenInput.value = isoStr;\n          hiddenInput.dispatchEvent(new Event(\"input\", { bubbles: true }));\n          hiddenInput.dispatchEvent(new Event(\"change\", { bubbles: true }));\n        }\n\n        const eventName = getString(el, \"onValueChange\");\n        if (eventName && liveSocket.main.isConnected()) {\n          pushEvent(eventName, {\n            id: el.id,\n            value: isoStr || null,\n          });\n        }\n      },\n      onFocusChange: (details: any) => {\n        const eventName = getString(el, \"onFocusChange\");\n        if (eventName && liveSocket.main.isConnected()) {\n          pushEvent(eventName, {\n            id: el.id,\n            focused: details.focused ?? false,\n          });\n        }\n      },\n      onViewChange: (details) => {\n        const eventName = getString(el, \"onViewChange\");\n        if (eventName && liveSocket.main.isConnected()) {\n          pushEvent(eventName, {\n            id: el.id,\n            view: details.view,\n          });\n        }\n      },\n      onVisibleRangeChange: (details: any) => {\n        const eventName = getString(el, \"onVisibleRangeChange\");\n        if (eventName && liveSocket.main.isConnected()) {\n          pushEvent(eventName, {\n            id: el.id,\n            start: details.start,\n            end: details.end,\n          });\n        }\n      },\n      onOpenChange: (details: any) => {\n        const eventName = getString(el, \"onOpenChange\");\n        if (eventName && liveSocket.main.isConnected()) {\n          pushEvent(eventName, {\n            id: el.id,\n            open: details.open,\n          });\n        }\n      },\n    } as Props);\n\n    datePickerInstance.init();\n    this.datePicker = datePickerInstance;\n\n    const inputWrapper = el.querySelector<HTMLElement>(\n      '[data-scope=\"date-picker\"][data-part=\"input-wrapper\"]',\n    );\n    if (inputWrapper) inputWrapper.removeAttribute(\"data-loading\");\n\n    this.handlers = [];\n\n    this.handlers.push(\n      this.handleEvent(\"date_picker_set_value\", (payload: { date_picker_id?: string; value: string }) => {\n        const targetId = payload.date_picker_id;\n        if (targetId && targetId !== el.id) return;\n        datePickerInstance.api.setValue([datePicker.parse(payload.value)]);\n      })\n    );\n\n    this.onSetValue = (event: Event) => {\n      const value = (event as CustomEvent<{ value: string }>).detail?.value;\n      if (typeof value === \"string\") {\n        datePickerInstance.api.setValue([datePicker.parse(value)]);\n      }\n    };\n    el.addEventListener(\"phx:date-picker:set-value\", this.onSetValue);\n  },\n\n  updated(this: object & HookInterface<HTMLElement> & DatePickerHookState) {\n    const el = this.el;\n    const inputWrapper = el.querySelector<HTMLElement>(\n      '[data-scope=\"date-picker\"][data-part=\"input-wrapper\"]',\n    );\n    if (inputWrapper) inputWrapper.removeAttribute(\"data-loading\");\n\n    const parseList = (v: string[] | undefined) => (v ? v.map((x) => datePicker.parse(x)) : undefined);\n    const min = getString(el, \"min\");\n    const max = getString(el, \"max\");\n    const positioningJson = getString(el, \"positioning\");\n    const isControlled = getBoolean(el, \"controlled\");\n    const focusedStr = getString(el, \"focusedValue\");\n\n    this.datePicker?.updateProps({\n      ...(getBoolean(el, \"controlled\")\n      ? { value: parseList(getStringList(el, \"value\") ) }\n      : { defaultValue: parseList(getStringList(el, \"defaultValue\") )}),\n      defaultFocusedValue: focusedStr ? datePicker.parse(focusedStr) : undefined,\n      defaultView: getString<\"day\" | \"month\" | \"year\">(el, \"defaultView\", [\"day\", \"month\", \"year\"]),\n      dir: getString<Direction>(this.el, \"dir\", [\"ltr\", \"rtl\"]),\n      locale: getString(this.el, \"locale\"),\n      timeZone: getString(this.el, \"timeZone\"),\n      disabled: getBoolean(this.el, \"disabled\"),\n      readOnly: getBoolean(this.el, \"readOnly\"),\n      required: getBoolean(this.el, \"required\"),\n      invalid: getBoolean(this.el, \"invalid\"),\n      outsideDaySelectable: getBoolean(this.el, \"outsideDaySelectable\"),\n      closeOnSelect: getBoolean(this.el, \"closeOnSelect\"),\n      min: min ? datePicker.parse(min) : undefined,\n      max: max ? datePicker.parse(max) : undefined,\n      numOfMonths: getNumber(this.el, \"numOfMonths\"),\n      startOfWeek: getNumber(this.el, \"startOfWeek\"),\n      fixedWeeks: getBoolean(this.el, \"fixedWeeks\"),\n      selectionMode: getString<\"single\" | \"multiple\" | \"range\">(this.el, \"selectionMode\", [\"single\", \"multiple\", \"range\"]),\n      placeholder: getString(this.el, \"placeholder\"),\n      minView: getString<\"day\" | \"month\" | \"year\">(this.el, \"minView\", [\"day\", \"month\", \"year\"]),\n      maxView: getString<\"day\" | \"month\" | \"year\">(this.el, \"maxView\", [\"day\", \"month\", \"year\"]),\n      inline: getBoolean(this.el, \"inline\"),\n      positioning: positioningJson ? JSON.parse(positioningJson) : undefined,\n    });\n\n    if (isControlled && this.datePicker) {\n      const serverValues = getStringList(el, \"value\");\n      const serverIso = serverValues?.join(\",\") ?? \"\";\n      const zagValue = this.datePicker.api.value;\n      const zagIso = zagValue?.length\n        ? zagValue.map((d: { year: number; month: number; day: number }) => toISOString(d)).join(\",\")\n        : \"\";\n      if (serverIso !== zagIso) {\n        const parsed = serverValues?.length\n          ? serverValues.map((x) => datePicker.parse(x))\n          : [];\n        this.datePicker.api.setValue(parsed);\n      }\n    }\n  },\n\n  destroyed(this: object & HookInterface<HTMLElement> & DatePickerHookState) {\n    if (this.onSetValue) {\n      this.el.removeEventListener(\"phx:date-picker:set-value\", this.onSetValue);\n    }\n    if (this.handlers) {\n      for (const handler of this.handlers) {\n        this.removeHandleEvent(handler);\n      }\n    }\n\n    this.datePicker?.destroy();\n  },\n};\n\nexport { DatePickerHook as DatePicker };\n", "import { isHTMLElement, findControlledElements } from '@zag-js/dom-query';\n\n// src/walk-tree-outside.ts\nvar counterMap = /* @__PURE__ */ new WeakMap();\nvar uncontrolledNodes = /* @__PURE__ */ new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = (node) => node && (node.host || unwrapHost(node.parentNode));\nvar correctTargets = (parent, targets) => targets.map((target) => {\n  if (parent.contains(target)) return target;\n  const correctedTarget = unwrapHost(target);\n  if (correctedTarget && parent.contains(correctedTarget)) {\n    return correctedTarget;\n  }\n  console.error(\"[zag-js > ariaHidden] target\", target, \"in not contained inside\", parent, \". Doing nothing\");\n  return null;\n}).filter((x) => Boolean(x));\nvar ignoreableNodes = /* @__PURE__ */ new Set([\"script\", \"output\", \"status\", \"next-route-announcer\"]);\nvar isIgnoredNode = (node) => {\n  if (ignoreableNodes.has(node.localName)) return true;\n  if (node.role === \"status\") return true;\n  if (node.hasAttribute(\"aria-live\")) return true;\n  return node.matches(\"[data-live-announcer]\");\n};\nvar walkTreeOutside = (originalTarget, props) => {\n  const { parentNode, markerName, controlAttribute, followControlledElements = true } = props;\n  const targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n  markerMap[markerName] || (markerMap[markerName] = /* @__PURE__ */ new WeakMap());\n  const markerCounter = markerMap[markerName];\n  const hiddenNodes = [];\n  const elementsToKeep = /* @__PURE__ */ new Set();\n  const elementsToStop = new Set(targets);\n  const keep = (el) => {\n    if (!el || elementsToKeep.has(el)) return;\n    elementsToKeep.add(el);\n    keep(el.parentNode);\n  };\n  targets.forEach((target) => {\n    keep(target);\n    if (followControlledElements && isHTMLElement(target)) {\n      findControlledElements(target, (controlledElement) => {\n        keep(controlledElement);\n      });\n    }\n  });\n  const deep = (parent) => {\n    if (!parent || elementsToStop.has(parent)) {\n      return;\n    }\n    Array.prototype.forEach.call(parent.children, (node) => {\n      if (elementsToKeep.has(node)) {\n        deep(node);\n      } else {\n        try {\n          if (isIgnoredNode(node)) return;\n          const attr = node.getAttribute(controlAttribute);\n          const alreadyHidden = attr === \"true\" ;\n          const counterValue = (counterMap.get(node) || 0) + 1;\n          const markerValue = (markerCounter.get(node) || 0) + 1;\n          counterMap.set(node, counterValue);\n          markerCounter.set(node, markerValue);\n          hiddenNodes.push(node);\n          if (counterValue === 1 && alreadyHidden) {\n            uncontrolledNodes.set(node, true);\n          }\n          if (markerValue === 1) {\n            node.setAttribute(markerName, \"\");\n          }\n          if (!alreadyHidden) {\n            node.setAttribute(controlAttribute, \"true\" );\n          }\n        } catch (e) {\n          console.error(\"[zag-js > ariaHidden] cannot operate on \", node, e);\n        }\n      }\n    });\n  };\n  deep(parentNode);\n  elementsToKeep.clear();\n  lockCount++;\n  return () => {\n    hiddenNodes.forEach((node) => {\n      const counterValue = counterMap.get(node) - 1;\n      const markerValue = markerCounter.get(node) - 1;\n      counterMap.set(node, counterValue);\n      markerCounter.set(node, markerValue);\n      if (!counterValue) {\n        if (!uncontrolledNodes.has(node)) {\n          node.removeAttribute(controlAttribute);\n        }\n        uncontrolledNodes.delete(node);\n      }\n      if (!markerValue) {\n        node.removeAttribute(markerName);\n      }\n    });\n    lockCount--;\n    if (!lockCount) {\n      counterMap = /* @__PURE__ */ new WeakMap();\n      counterMap = /* @__PURE__ */ new WeakMap();\n      uncontrolledNodes = /* @__PURE__ */ new WeakMap();\n      markerMap = {};\n    }\n  };\n};\n\n// src/aria-hidden.ts\nvar getParentNode = (originalTarget) => {\n  const target = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n  return target.ownerDocument.body;\n};\nvar hideOthers = (originalTarget, parentNode = getParentNode(originalTarget), markerName = \"data-aria-hidden\", followControlledElements = true) => {\n  if (!parentNode) return;\n  return walkTreeOutside(originalTarget, {\n    parentNode,\n    markerName,\n    controlAttribute: \"aria-hidden\",\n    followControlledElements\n  });\n};\n\n// src/index.ts\nvar raf = (fn) => {\n  const frameId = requestAnimationFrame(() => fn());\n  return () => cancelAnimationFrame(frameId);\n};\nfunction ariaHidden(targetsOrFn, options = {}) {\n  const { defer = true } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const targets = typeof targetsOrFn === \"function\" ? targetsOrFn() : targetsOrFn;\n      const elements = targets.filter(Boolean);\n      if (elements.length === 0) return;\n      cleanups.push(hideOthers(elements));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\n\nexport { ariaHidden };\n", "import { getDocument, getControlledElements, isControlledElement, getTabbables, getFocusables, getTabIndex, addDomEvent, getActiveElement, raf, isTabbable, getEventTarget, isDocument, hasControllerElements, isControlledByExpandedController, isFocusable } from '@zag-js/dom-query';\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar activeFocusTraps = {\n  activateTrap(trapStack, trap) {\n    if (trapStack.length > 0) {\n      const activeTrap = trapStack[trapStack.length - 1];\n      if (activeTrap !== trap) {\n        activeTrap.pause();\n      }\n    }\n    const trapIndex = trapStack.indexOf(trap);\n    if (trapIndex === -1) {\n      trapStack.push(trap);\n    } else {\n      trapStack.splice(trapIndex, 1);\n      trapStack.push(trap);\n    }\n  },\n  deactivateTrap(trapStack, trap) {\n    const trapIndex = trapStack.indexOf(trap);\n    if (trapIndex !== -1) {\n      trapStack.splice(trapIndex, 1);\n    }\n    if (trapStack.length > 0) {\n      trapStack[trapStack.length - 1].unpause();\n    }\n  }\n};\nvar sharedTrapStack = [];\nvar FocusTrap = class {\n  constructor(elements, options) {\n    __publicField(this, \"trapStack\");\n    __publicField(this, \"config\");\n    __publicField(this, \"doc\");\n    __publicField(this, \"state\", {\n      containers: [],\n      containerGroups: [],\n      tabbableGroups: [],\n      nodeFocusedBeforeActivation: null,\n      mostRecentlyFocusedNode: null,\n      active: false,\n      paused: false,\n      delayInitialFocusTimer: void 0,\n      recentNavEvent: void 0\n    });\n    // Track portal containers that contain controlled elements\n    __publicField(this, \"portalContainers\", /* @__PURE__ */ new Set());\n    __publicField(this, \"listenerCleanups\", []);\n    __publicField(this, \"handleFocus\", (event) => {\n      const target = getEventTarget(event);\n      const targetContained = this.findContainerIndex(target, event) >= 0;\n      if (targetContained || isDocument(target)) {\n        if (targetContained) {\n          this.state.mostRecentlyFocusedNode = target;\n        }\n      } else {\n        event.stopImmediatePropagation();\n        let nextNode;\n        let navAcrossContainers = true;\n        if (this.state.mostRecentlyFocusedNode) {\n          if (getTabIndex(this.state.mostRecentlyFocusedNode) > 0) {\n            const mruContainerIdx = this.findContainerIndex(this.state.mostRecentlyFocusedNode);\n            const { tabbableNodes } = this.state.containerGroups[mruContainerIdx];\n            if (tabbableNodes.length > 0) {\n              const mruTabIdx = tabbableNodes.findIndex((node) => node === this.state.mostRecentlyFocusedNode);\n              if (mruTabIdx >= 0) {\n                if (this.config.isKeyForward(this.state.recentNavEvent)) {\n                  if (mruTabIdx + 1 < tabbableNodes.length) {\n                    nextNode = tabbableNodes[mruTabIdx + 1];\n                    navAcrossContainers = false;\n                  }\n                } else {\n                  if (mruTabIdx - 1 >= 0) {\n                    nextNode = tabbableNodes[mruTabIdx - 1];\n                    navAcrossContainers = false;\n                  }\n                }\n              }\n            }\n          } else {\n            if (!this.state.containerGroups.some((g) => g.tabbableNodes.some((n) => getTabIndex(n) > 0))) {\n              navAcrossContainers = false;\n            }\n          }\n        } else {\n          navAcrossContainers = false;\n        }\n        if (navAcrossContainers) {\n          nextNode = this.findNextNavNode({\n            // move FROM the MRU node, not event-related node (which will be the node that is\n            //  outside the trap causing the focus escape we're trying to fix)\n            target: this.state.mostRecentlyFocusedNode,\n            isBackward: this.config.isKeyBackward(this.state.recentNavEvent)\n          });\n        }\n        if (nextNode) {\n          this.tryFocus(nextNode);\n        } else {\n          this.tryFocus(this.state.mostRecentlyFocusedNode || this.getInitialFocusNode());\n        }\n      }\n      this.state.recentNavEvent = void 0;\n    });\n    __publicField(this, \"handlePointerDown\", (event) => {\n      const target = getEventTarget(event);\n      if (this.findContainerIndex(target, event) >= 0) {\n        return;\n      }\n      if (valueOrHandler(this.config.clickOutsideDeactivates, event)) {\n        this.deactivate({ returnFocus: this.config.returnFocusOnDeactivate });\n        return;\n      }\n      if (valueOrHandler(this.config.allowOutsideClick, event)) {\n        return;\n      }\n      event.preventDefault();\n    });\n    __publicField(this, \"handleClick\", (event) => {\n      const target = getEventTarget(event);\n      if (this.findContainerIndex(target, event) >= 0) {\n        return;\n      }\n      if (valueOrHandler(this.config.clickOutsideDeactivates, event)) {\n        return;\n      }\n      if (valueOrHandler(this.config.allowOutsideClick, event)) {\n        return;\n      }\n      event.preventDefault();\n      event.stopImmediatePropagation();\n    });\n    __publicField(this, \"handleTabKey\", (event) => {\n      if (this.config.isKeyForward(event) || this.config.isKeyBackward(event)) {\n        this.state.recentNavEvent = event;\n        const isBackward = this.config.isKeyBackward(event);\n        const destinationNode = this.findNextNavNode({ event, isBackward });\n        if (!destinationNode) return;\n        if (isTabEvent(event)) {\n          event.preventDefault();\n        }\n        this.tryFocus(destinationNode);\n      }\n    });\n    __publicField(this, \"handleEscapeKey\", (event) => {\n      if (isEscapeEvent(event) && valueOrHandler(this.config.escapeDeactivates, event) !== false) {\n        event.preventDefault();\n        this.deactivate();\n      }\n    });\n    __publicField(this, \"_mutationObserver\");\n    __publicField(this, \"setupMutationObserver\", () => {\n      const win = this.doc.defaultView || window;\n      this._mutationObserver = new win.MutationObserver((mutations) => {\n        const isFocusedNodeRemoved = mutations.some((mutation) => {\n          const removedNodes = Array.from(mutation.removedNodes);\n          return removedNodes.some((node) => node === this.state.mostRecentlyFocusedNode);\n        });\n        if (isFocusedNodeRemoved) {\n          this.tryFocus(this.getInitialFocusNode());\n        }\n        const hasControlledChanges = mutations.some((mutation) => {\n          if (mutation.type === \"attributes\" && (mutation.attributeName === \"aria-controls\" || mutation.attributeName === \"aria-expanded\")) {\n            return true;\n          }\n          if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n            return Array.from(mutation.addedNodes).some((node) => {\n              if (node.nodeType !== Node.ELEMENT_NODE) return false;\n              const element = node;\n              if (hasControllerElements(element)) {\n                return true;\n              }\n              if (element.id && !this.state.containers.some((c) => c.contains(element))) {\n                return isControlledByExpandedController(element);\n              }\n              return false;\n            });\n          }\n          return false;\n        });\n        if (hasControlledChanges && this.state.active && !this.state.paused) {\n          this.updateTabbableNodes();\n          this.updatePortalContainers();\n        }\n      });\n    });\n    __publicField(this, \"updateObservedNodes\", () => {\n      this._mutationObserver?.disconnect();\n      if (this.state.active && !this.state.paused) {\n        this.state.containers.map((container) => {\n          this._mutationObserver?.observe(container, {\n            subtree: true,\n            childList: true,\n            attributes: true,\n            attributeFilter: [\"aria-controls\", \"aria-expanded\"]\n          });\n        });\n        this.portalContainers.forEach((portalContainer) => {\n          this.observePortalContainer(portalContainer);\n        });\n      }\n    });\n    __publicField(this, \"getInitialFocusNode\", () => {\n      let node = this.getNodeForOption(\"initialFocus\", { hasFallback: true });\n      if (node === false) {\n        return false;\n      }\n      if (node === void 0 || node && !isFocusable(node)) {\n        const activeElement = getActiveElement(this.doc);\n        if (activeElement && this.findContainerIndex(activeElement) >= 0) {\n          node = activeElement;\n        } else {\n          const firstTabbableGroup = this.state.tabbableGroups[0];\n          const firstTabbableNode = firstTabbableGroup && firstTabbableGroup.firstTabbableNode;\n          node = firstTabbableNode || this.getNodeForOption(\"fallbackFocus\");\n        }\n      } else if (node === null) {\n        node = this.getNodeForOption(\"fallbackFocus\");\n      }\n      if (!node) {\n        throw new Error(\"Your focus-trap needs to have at least one focusable element\");\n      }\n      if (!node.isConnected) {\n        node = this.getNodeForOption(\"fallbackFocus\");\n      }\n      return node;\n    });\n    __publicField(this, \"tryFocus\", (node) => {\n      if (node === false) return;\n      if (node === getActiveElement(this.doc)) return;\n      if (!node || !node.focus) {\n        this.tryFocus(this.getInitialFocusNode());\n        return;\n      }\n      node.focus({ preventScroll: !!this.config.preventScroll });\n      this.state.mostRecentlyFocusedNode = node;\n      if (isSelectableInput(node)) {\n        node.select();\n      }\n    });\n    __publicField(this, \"deactivate\", (deactivateOptions) => {\n      if (!this.state.active) return this;\n      const options = {\n        onDeactivate: this.config.onDeactivate,\n        onPostDeactivate: this.config.onPostDeactivate,\n        checkCanReturnFocus: this.config.checkCanReturnFocus,\n        ...deactivateOptions\n      };\n      clearTimeout(this.state.delayInitialFocusTimer);\n      this.state.delayInitialFocusTimer = void 0;\n      this.removeListeners();\n      this.state.active = false;\n      this.state.paused = false;\n      this.updateObservedNodes();\n      activeFocusTraps.deactivateTrap(this.trapStack, this);\n      this.portalContainers.clear();\n      const onDeactivate = this.getOption(options, \"onDeactivate\");\n      const onPostDeactivate = this.getOption(options, \"onPostDeactivate\");\n      const checkCanReturnFocus = this.getOption(options, \"checkCanReturnFocus\");\n      const returnFocus = this.getOption(options, \"returnFocus\", \"returnFocusOnDeactivate\");\n      onDeactivate?.();\n      const finishDeactivation = () => {\n        delay(() => {\n          if (returnFocus) {\n            const returnFocusNode = this.getReturnFocusNode(this.state.nodeFocusedBeforeActivation);\n            this.tryFocus(returnFocusNode);\n          }\n          onPostDeactivate?.();\n        });\n      };\n      if (returnFocus && checkCanReturnFocus) {\n        const returnFocusNode = this.getReturnFocusNode(this.state.nodeFocusedBeforeActivation);\n        checkCanReturnFocus(returnFocusNode).then(finishDeactivation, finishDeactivation);\n        return this;\n      }\n      finishDeactivation();\n      return this;\n    });\n    __publicField(this, \"pause\", (pauseOptions) => {\n      if (this.state.paused || !this.state.active) {\n        return this;\n      }\n      const onPause = this.getOption(pauseOptions, \"onPause\");\n      const onPostPause = this.getOption(pauseOptions, \"onPostPause\");\n      this.state.paused = true;\n      onPause?.();\n      this.removeListeners();\n      this.updateObservedNodes();\n      onPostPause?.();\n      return this;\n    });\n    __publicField(this, \"unpause\", (unpauseOptions) => {\n      if (!this.state.paused || !this.state.active) {\n        return this;\n      }\n      const onUnpause = this.getOption(unpauseOptions, \"onUnpause\");\n      const onPostUnpause = this.getOption(unpauseOptions, \"onPostUnpause\");\n      this.state.paused = false;\n      onUnpause?.();\n      this.updateTabbableNodes();\n      this.addListeners();\n      this.updateObservedNodes();\n      onPostUnpause?.();\n      return this;\n    });\n    __publicField(this, \"updateContainerElements\", (containerElements) => {\n      this.state.containers = Array.isArray(containerElements) ? containerElements.filter(Boolean) : [containerElements].filter(Boolean);\n      if (this.state.active) {\n        this.updateTabbableNodes();\n      }\n      this.updateObservedNodes();\n      return this;\n    });\n    __publicField(this, \"getReturnFocusNode\", (previousActiveElement) => {\n      const node = this.getNodeForOption(\"setReturnFocus\", {\n        params: [previousActiveElement]\n      });\n      return node ? node : node === false ? false : previousActiveElement;\n    });\n    __publicField(this, \"getOption\", (configOverrideOptions, optionName, configOptionName) => {\n      return configOverrideOptions && configOverrideOptions[optionName] !== void 0 ? configOverrideOptions[optionName] : (\n        // @ts-expect-error\n        this.config[configOptionName || optionName]\n      );\n    });\n    __publicField(this, \"getNodeForOption\", (optionName, { hasFallback = false, params = [] } = {}) => {\n      let optionValue = this.config[optionName];\n      if (typeof optionValue === \"function\") optionValue = optionValue(...params);\n      if (optionValue === true) optionValue = void 0;\n      if (!optionValue) {\n        if (optionValue === void 0 || optionValue === false) {\n          return optionValue;\n        }\n        throw new Error(`\\`${optionName}\\` was specified but was not a node, or did not return a node`);\n      }\n      let node = optionValue;\n      if (typeof optionValue === \"string\") {\n        try {\n          node = this.doc.querySelector(optionValue);\n        } catch (err) {\n          throw new Error(`\\`${optionName}\\` appears to be an invalid selector; error=\"${err.message}\"`);\n        }\n        if (!node) {\n          if (!hasFallback) {\n            throw new Error(`\\`${optionName}\\` as selector refers to no known node`);\n          }\n        }\n      }\n      return node;\n    });\n    __publicField(this, \"findNextNavNode\", (opts) => {\n      const { event, isBackward = false } = opts;\n      const target = opts.target || getEventTarget(event);\n      this.updateTabbableNodes();\n      let destinationNode = null;\n      if (this.state.tabbableGroups.length > 0) {\n        const containerIndex = this.findContainerIndex(target, event);\n        const containerGroup = containerIndex >= 0 ? this.state.containerGroups[containerIndex] : void 0;\n        if (containerIndex < 0) {\n          if (isBackward) {\n            destinationNode = this.state.tabbableGroups[this.state.tabbableGroups.length - 1].lastTabbableNode;\n          } else {\n            destinationNode = this.state.tabbableGroups[0].firstTabbableNode;\n          }\n        } else if (isBackward) {\n          let startOfGroupIndex = this.state.tabbableGroups.findIndex(\n            ({ firstTabbableNode }) => target === firstTabbableNode\n          );\n          if (startOfGroupIndex < 0 && (containerGroup?.container === target || isFocusable(target) && !isTabbable(target) && !containerGroup?.nextTabbableNode(target, false))) {\n            startOfGroupIndex = containerIndex;\n          }\n          if (startOfGroupIndex >= 0) {\n            const destinationGroupIndex = startOfGroupIndex === 0 ? this.state.tabbableGroups.length - 1 : startOfGroupIndex - 1;\n            const destinationGroup = this.state.tabbableGroups[destinationGroupIndex];\n            destinationNode = getTabIndex(target) >= 0 ? destinationGroup.lastTabbableNode : destinationGroup.lastDomTabbableNode;\n          } else if (!isTabEvent(event)) {\n            destinationNode = containerGroup?.nextTabbableNode(target, false);\n          }\n        } else {\n          let lastOfGroupIndex = this.state.tabbableGroups.findIndex(\n            ({ lastTabbableNode }) => target === lastTabbableNode\n          );\n          if (lastOfGroupIndex < 0 && (containerGroup?.container === target || isFocusable(target) && !isTabbable(target) && !containerGroup?.nextTabbableNode(target))) {\n            lastOfGroupIndex = containerIndex;\n          }\n          if (lastOfGroupIndex >= 0) {\n            const destinationGroupIndex = lastOfGroupIndex === this.state.tabbableGroups.length - 1 ? 0 : lastOfGroupIndex + 1;\n            const destinationGroup = this.state.tabbableGroups[destinationGroupIndex];\n            destinationNode = getTabIndex(target) >= 0 ? destinationGroup.firstTabbableNode : destinationGroup.firstDomTabbableNode;\n          } else if (!isTabEvent(event)) {\n            destinationNode = containerGroup?.nextTabbableNode(target);\n          }\n        }\n      } else {\n        destinationNode = this.getNodeForOption(\"fallbackFocus\");\n      }\n      return destinationNode;\n    });\n    this.trapStack = options.trapStack || sharedTrapStack;\n    const config = {\n      returnFocusOnDeactivate: true,\n      escapeDeactivates: true,\n      delayInitialFocus: true,\n      followControlledElements: true,\n      isKeyForward,\n      isKeyBackward,\n      ...options\n    };\n    this.doc = config.document || getDocument(Array.isArray(elements) ? elements[0] : elements);\n    this.config = config;\n    this.updateContainerElements(elements);\n    this.setupMutationObserver();\n  }\n  addPortalContainer(controlledElement) {\n    const portalContainer = controlledElement.parentElement;\n    if (portalContainer && !this.portalContainers.has(portalContainer)) {\n      this.portalContainers.add(portalContainer);\n      if (this.state.active && !this.state.paused) {\n        this.observePortalContainer(portalContainer);\n      }\n    }\n  }\n  observePortalContainer(portalContainer) {\n    this._mutationObserver?.observe(portalContainer, {\n      subtree: true,\n      childList: true,\n      attributes: true,\n      attributeFilter: [\"aria-controls\", \"aria-expanded\"]\n    });\n  }\n  updatePortalContainers() {\n    if (!this.config.followControlledElements) return;\n    this.state.containers.forEach((container) => {\n      const controlledElements = getControlledElements(container);\n      controlledElements.forEach((controlledElement) => {\n        this.addPortalContainer(controlledElement);\n      });\n    });\n  }\n  get active() {\n    return this.state.active;\n  }\n  get paused() {\n    return this.state.paused;\n  }\n  findContainerIndex(element, event) {\n    const composedPath = typeof event?.composedPath === \"function\" ? event.composedPath() : void 0;\n    return this.state.containerGroups.findIndex(\n      ({ container, tabbableNodes }) => container.contains(element) || composedPath?.includes(container) || tabbableNodes.find((node) => node === element) || this.isControlledElement(container, element)\n    );\n  }\n  isControlledElement(container, element) {\n    if (!this.config.followControlledElements) return false;\n    return isControlledElement(container, element);\n  }\n  updateTabbableNodes() {\n    this.state.containerGroups = this.state.containers.map((container) => {\n      const tabbableNodes = getTabbables(container, { getShadowRoot: this.config.getShadowRoot });\n      const focusableNodes = getFocusables(container, { getShadowRoot: this.config.getShadowRoot });\n      const firstTabbableNode = tabbableNodes[0];\n      const lastTabbableNode = tabbableNodes[tabbableNodes.length - 1];\n      const firstDomTabbableNode = firstTabbableNode;\n      const lastDomTabbableNode = lastTabbableNode;\n      let posTabIndexesFound = false;\n      for (let i = 0; i < tabbableNodes.length; i++) {\n        if (getTabIndex(tabbableNodes[i]) > 0) {\n          posTabIndexesFound = true;\n          break;\n        }\n      }\n      function nextTabbableNode(node, forward = true) {\n        const nodeIdx = tabbableNodes.indexOf(node);\n        if (nodeIdx >= 0) {\n          return tabbableNodes[nodeIdx + (forward ? 1 : -1)];\n        }\n        const focusableIdx = focusableNodes.indexOf(node);\n        if (focusableIdx < 0) return void 0;\n        if (forward) {\n          for (let i = focusableIdx + 1; i < focusableNodes.length; i++) {\n            if (isTabbable(focusableNodes[i])) return focusableNodes[i];\n          }\n        } else {\n          for (let i = focusableIdx - 1; i >= 0; i--) {\n            if (isTabbable(focusableNodes[i])) return focusableNodes[i];\n          }\n        }\n        return void 0;\n      }\n      return {\n        container,\n        tabbableNodes,\n        focusableNodes,\n        posTabIndexesFound,\n        firstTabbableNode,\n        lastTabbableNode,\n        firstDomTabbableNode,\n        lastDomTabbableNode,\n        nextTabbableNode\n      };\n    });\n    this.state.tabbableGroups = this.state.containerGroups.filter((group) => group.tabbableNodes.length > 0);\n    if (this.state.tabbableGroups.length <= 0 && !this.getNodeForOption(\"fallbackFocus\")) {\n      throw new Error(\n        \"Your focus-trap must have at least one container with at least one tabbable node in it at all times\"\n      );\n    }\n    if (this.state.containerGroups.find((g) => g.posTabIndexesFound) && this.state.containerGroups.length > 1) {\n      throw new Error(\n        \"At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.\"\n      );\n    }\n  }\n  addListeners() {\n    if (!this.state.active) return;\n    activeFocusTraps.activateTrap(this.trapStack, this);\n    this.state.delayInitialFocusTimer = this.config.delayInitialFocus ? delay(() => {\n      this.tryFocus(this.getInitialFocusNode());\n    }) : this.tryFocus(this.getInitialFocusNode());\n    this.listenerCleanups.push(\n      addDomEvent(this.doc, \"focusin\", this.handleFocus, true),\n      addDomEvent(this.doc, \"mousedown\", this.handlePointerDown, { capture: true, passive: false }),\n      addDomEvent(this.doc, \"touchstart\", this.handlePointerDown, { capture: true, passive: false }),\n      addDomEvent(this.doc, \"click\", this.handleClick, { capture: true, passive: false }),\n      addDomEvent(this.doc, \"keydown\", this.handleTabKey, { capture: true, passive: false }),\n      addDomEvent(this.doc, \"keydown\", this.handleEscapeKey)\n    );\n    return this;\n  }\n  removeListeners() {\n    if (!this.state.active) return;\n    this.listenerCleanups.forEach((cleanup) => cleanup());\n    this.listenerCleanups = [];\n    return this;\n  }\n  activate(activateOptions) {\n    if (this.state.active) {\n      return this;\n    }\n    const onActivate = this.getOption(activateOptions, \"onActivate\");\n    const onPostActivate = this.getOption(activateOptions, \"onPostActivate\");\n    const checkCanFocusTrap = this.getOption(activateOptions, \"checkCanFocusTrap\");\n    if (!checkCanFocusTrap) {\n      this.updateTabbableNodes();\n    }\n    this.state.active = true;\n    this.state.paused = false;\n    this.state.nodeFocusedBeforeActivation = getActiveElement(this.doc);\n    onActivate?.();\n    const finishActivation = () => {\n      if (checkCanFocusTrap) {\n        this.updateTabbableNodes();\n      }\n      this.addListeners();\n      this.updateObservedNodes();\n      onPostActivate?.();\n    };\n    if (checkCanFocusTrap) {\n      checkCanFocusTrap(this.state.containers.concat()).then(finishActivation, finishActivation);\n      return this;\n    }\n    finishActivation();\n    return this;\n  }\n};\nvar isKeyboardEvent = (event) => event.type === \"keydown\";\nvar isTabEvent = (event) => isKeyboardEvent(event) && event?.key === \"Tab\";\nvar isKeyForward = (e) => isKeyboardEvent(e) && e.key === \"Tab\" && !e?.shiftKey;\nvar isKeyBackward = (e) => isKeyboardEvent(e) && e.key === \"Tab\" && e?.shiftKey;\nvar valueOrHandler = (value, ...params) => typeof value === \"function\" ? value(...params) : value;\nvar isEscapeEvent = (event) => !event.isComposing && event.key === \"Escape\";\nvar delay = (fn) => setTimeout(fn, 0);\nvar isSelectableInput = (node) => node.localName === \"input\" && \"select\" in node && typeof node.select === \"function\";\n\n// src/index.ts\nfunction trapFocus(el, options = {}) {\n  let trap;\n  const cleanup = raf(() => {\n    const elements = Array.isArray(el) ? el : [el];\n    const resolvedElements = elements.map((e) => typeof e === \"function\" ? e() : e).filter((e) => e != null);\n    if (resolvedElements.length === 0) return;\n    const primaryEl = resolvedElements[0];\n    trap = new FocusTrap(resolvedElements, {\n      escapeDeactivates: false,\n      allowOutsideClick: true,\n      preventScroll: true,\n      returnFocusOnDeactivate: true,\n      delayInitialFocus: false,\n      fallbackFocus: primaryEl,\n      ...options,\n      document: getDocument(primaryEl)\n    });\n    try {\n      trap.activate();\n    } catch {\n    }\n  });\n  return function destroy() {\n    trap?.deactivate();\n    cleanup();\n  };\n}\n\nexport { FocusTrap, trapFocus };\n", "import { isIos, setStyleProperty, setStyle, getComputedStyle } from '@zag-js/dom-query';\n\n// src/index.ts\nvar LOCK_CLASSNAME = \"data-scroll-lock\";\nfunction getPaddingProperty(documentElement) {\n  const documentLeft = documentElement.getBoundingClientRect().left;\n  const scrollbarX = Math.round(documentLeft) + documentElement.scrollLeft;\n  return scrollbarX ? \"paddingLeft\" : \"paddingRight\";\n}\nfunction hasStableScrollbarGutter(element) {\n  const styles = getComputedStyle(element);\n  const scrollbarGutter = styles?.scrollbarGutter;\n  return scrollbarGutter === \"stable\" || scrollbarGutter?.startsWith(\"stable \") === true;\n}\nfunction preventBodyScroll(_document) {\n  const doc = _document ?? document;\n  const win = doc.defaultView ?? window;\n  const { documentElement, body } = doc;\n  const locked = body.hasAttribute(LOCK_CLASSNAME);\n  if (locked) return;\n  const hasStableGutter = hasStableScrollbarGutter(documentElement) || hasStableScrollbarGutter(body);\n  const scrollbarWidth = win.innerWidth - documentElement.clientWidth;\n  body.setAttribute(LOCK_CLASSNAME, \"\");\n  const setScrollbarWidthProperty = () => setStyleProperty(documentElement, \"--scrollbar-width\", `${scrollbarWidth}px`);\n  const paddingProperty = getPaddingProperty(documentElement);\n  const setBodyStyle = () => {\n    const styles = {\n      overflow: \"hidden\"\n    };\n    if (!hasStableGutter && scrollbarWidth > 0) {\n      styles[paddingProperty] = `${scrollbarWidth}px`;\n    }\n    return setStyle(body, styles);\n  };\n  const setBodyStyleIOS = () => {\n    const { scrollX, scrollY, visualViewport } = win;\n    const offsetLeft = visualViewport?.offsetLeft ?? 0;\n    const offsetTop = visualViewport?.offsetTop ?? 0;\n    const styles = {\n      position: \"fixed\",\n      overflow: \"hidden\",\n      top: `${-(scrollY - Math.floor(offsetTop))}px`,\n      left: `${-(scrollX - Math.floor(offsetLeft))}px`,\n      right: \"0\"\n    };\n    if (!hasStableGutter && scrollbarWidth > 0) {\n      styles[paddingProperty] = `${scrollbarWidth}px`;\n    }\n    const restoreStyle = setStyle(body, styles);\n    return () => {\n      restoreStyle?.();\n      win.scrollTo({ left: scrollX, top: scrollY, behavior: \"instant\" });\n    };\n  };\n  const cleanups = [setScrollbarWidthProperty(), isIos() ? setBodyStyleIOS() : setBodyStyle()];\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n    body.removeAttribute(LOCK_CLASSNAME);\n  };\n}\n\nexport { preventBodyScroll };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { ariaHidden } from '@zag-js/aria-hidden';\nimport { createMachine } from '@zag-js/core';\nimport { trackDismissableElement } from '@zag-js/dismissable';\nimport { raf, getComputedStyle } from '@zag-js/dom-query';\nimport { trapFocus } from '@zag-js/focus-trap';\nimport { preventBodyScroll } from '@zag-js/remove-scroll';\nimport { createProps } from '@zag-js/types';\nimport { createSplitProps } from '@zag-js/utils';\n\n// src/dialog.anatomy.ts\nvar anatomy = createAnatomy(\"dialog\").parts(\n  \"trigger\",\n  \"backdrop\",\n  \"positioner\",\n  \"content\",\n  \"title\",\n  \"description\",\n  \"closeTrigger\"\n);\nvar parts = anatomy.build();\n\n// src/dialog.dom.ts\nvar getPositionerId = (ctx) => ctx.ids?.positioner ?? `dialog:${ctx.id}:positioner`;\nvar getBackdropId = (ctx) => ctx.ids?.backdrop ?? `dialog:${ctx.id}:backdrop`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `dialog:${ctx.id}:content`;\nvar getTriggerId = (ctx) => ctx.ids?.trigger ?? `dialog:${ctx.id}:trigger`;\nvar getTitleId = (ctx) => ctx.ids?.title ?? `dialog:${ctx.id}:title`;\nvar getDescriptionId = (ctx) => ctx.ids?.description ?? `dialog:${ctx.id}:description`;\nvar getCloseTriggerId = (ctx) => ctx.ids?.closeTrigger ?? `dialog:${ctx.id}:close`;\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nvar getPositionerEl = (ctx) => ctx.getById(getPositionerId(ctx));\nvar getBackdropEl = (ctx) => ctx.getById(getBackdropId(ctx));\nvar getTriggerEl = (ctx) => ctx.getById(getTriggerId(ctx));\nvar getTitleEl = (ctx) => ctx.getById(getTitleId(ctx));\nvar getDescriptionEl = (ctx) => ctx.getById(getDescriptionId(ctx));\nvar getCloseTriggerEl = (ctx) => ctx.getById(getCloseTriggerId(ctx));\n\n// src/dialog.connect.ts\nfunction connect(service, normalize) {\n  const { state, send, context, prop, scope } = service;\n  const ariaLabel = prop(\"aria-label\");\n  const open = state.matches(\"open\");\n  return {\n    open,\n    setOpen(nextOpen) {\n      const open2 = state.matches(\"open\");\n      if (open2 === nextOpen) return;\n      send({ type: nextOpen ? \"OPEN\" : \"CLOSE\" });\n    },\n    getTriggerProps() {\n      return normalize.button({\n        ...parts.trigger.attrs,\n        dir: prop(\"dir\"),\n        id: getTriggerId(scope),\n        \"aria-haspopup\": \"dialog\",\n        type: \"button\",\n        \"aria-expanded\": open,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"aria-controls\": getContentId(scope),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: \"TOGGLE\" });\n        }\n      });\n    },\n    getBackdropProps() {\n      return normalize.element({\n        ...parts.backdrop.attrs,\n        dir: prop(\"dir\"),\n        hidden: !open,\n        id: getBackdropId(scope),\n        \"data-state\": open ? \"open\" : \"closed\"\n      });\n    },\n    getPositionerProps() {\n      return normalize.element({\n        ...parts.positioner.attrs,\n        dir: prop(\"dir\"),\n        id: getPositionerId(scope),\n        style: {\n          pointerEvents: open ? void 0 : \"none\"\n        }\n      });\n    },\n    getContentProps() {\n      const rendered = context.get(\"rendered\");\n      return normalize.element({\n        ...parts.content.attrs,\n        dir: prop(\"dir\"),\n        role: prop(\"role\"),\n        hidden: !open,\n        id: getContentId(scope),\n        tabIndex: -1,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"aria-modal\": true,\n        \"aria-label\": ariaLabel || void 0,\n        \"aria-labelledby\": ariaLabel || !rendered.title ? void 0 : getTitleId(scope),\n        \"aria-describedby\": rendered.description ? getDescriptionId(scope) : void 0\n      });\n    },\n    getTitleProps() {\n      return normalize.element({\n        ...parts.title.attrs,\n        dir: prop(\"dir\"),\n        id: getTitleId(scope)\n      });\n    },\n    getDescriptionProps() {\n      return normalize.element({\n        ...parts.description.attrs,\n        dir: prop(\"dir\"),\n        id: getDescriptionId(scope)\n      });\n    },\n    getCloseTriggerProps() {\n      return normalize.button({\n        ...parts.closeTrigger.attrs,\n        dir: prop(\"dir\"),\n        id: getCloseTriggerId(scope),\n        type: \"button\",\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          event.stopPropagation();\n          send({ type: \"CLOSE\" });\n        }\n      });\n    }\n  };\n}\nvar machine = createMachine({\n  props({ props: props2, scope }) {\n    const alertDialog = props2.role === \"alertdialog\";\n    const initialFocusEl = alertDialog ? () => getCloseTriggerEl(scope) : void 0;\n    const modal = typeof props2.modal === \"boolean\" ? props2.modal : true;\n    return {\n      role: \"dialog\",\n      modal,\n      trapFocus: modal,\n      preventScroll: modal,\n      closeOnInteractOutside: !alertDialog,\n      closeOnEscape: true,\n      restoreFocus: true,\n      initialFocusEl,\n      ...props2\n    };\n  },\n  initialState({ prop }) {\n    const open = prop(\"open\") || prop(\"defaultOpen\");\n    return open ? \"open\" : \"closed\";\n  },\n  context({ bindable }) {\n    return {\n      rendered: bindable(() => ({\n        defaultValue: { title: true, description: true }\n      }))\n    };\n  },\n  watch({ track, action, prop }) {\n    track([() => prop(\"open\")], () => {\n      action([\"toggleVisibility\"]);\n    });\n  },\n  states: {\n    open: {\n      entry: [\"checkRenderedElements\", \"syncZIndex\"],\n      effects: [\"trackDismissableElement\", \"trapFocus\", \"preventScroll\", \"hideContentBelow\"],\n      on: {\n        \"CONTROLLED.CLOSE\": {\n          target: \"closed\"\n        },\n        CLOSE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        TOGGLE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"invokeOnClose\"]\n          }\n        ]\n      }\n    },\n    closed: {\n      on: {\n        \"CONTROLLED.OPEN\": {\n          target: \"open\"\n        },\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\"]\n          }\n        ],\n        TOGGLE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\"]\n          }\n        ]\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      isOpenControlled: ({ prop }) => prop(\"open\") != void 0\n    },\n    effects: {\n      trackDismissableElement({ scope, send, prop }) {\n        const getContentEl2 = () => getContentEl(scope);\n        return trackDismissableElement(getContentEl2, {\n          type: \"dialog\",\n          defer: true,\n          pointerBlocking: prop(\"modal\"),\n          exclude: [getTriggerEl(scope)],\n          onInteractOutside(event) {\n            prop(\"onInteractOutside\")?.(event);\n            if (!prop(\"closeOnInteractOutside\")) {\n              event.preventDefault();\n            }\n          },\n          persistentElements: prop(\"persistentElements\"),\n          onFocusOutside: prop(\"onFocusOutside\"),\n          onPointerDownOutside: prop(\"onPointerDownOutside\"),\n          onRequestDismiss: prop(\"onRequestDismiss\"),\n          onEscapeKeyDown(event) {\n            prop(\"onEscapeKeyDown\")?.(event);\n            if (!prop(\"closeOnEscape\")) {\n              event.preventDefault();\n            }\n          },\n          onDismiss() {\n            send({ type: \"CLOSE\", src: \"interact-outside\" });\n          }\n        });\n      },\n      preventScroll({ scope, prop }) {\n        if (!prop(\"preventScroll\")) return;\n        return preventBodyScroll(scope.getDoc());\n      },\n      trapFocus({ scope, prop }) {\n        if (!prop(\"trapFocus\")) return;\n        const contentEl = () => getContentEl(scope);\n        return trapFocus(contentEl, {\n          preventScroll: true,\n          returnFocusOnDeactivate: !!prop(\"restoreFocus\"),\n          initialFocus: prop(\"initialFocusEl\"),\n          setReturnFocus: (el) => prop(\"finalFocusEl\")?.() ?? el,\n          getShadowRoot: true\n        });\n      },\n      hideContentBelow({ scope, prop }) {\n        if (!prop(\"modal\")) return;\n        const getElements = () => [getContentEl(scope)];\n        return ariaHidden(getElements, { defer: true });\n      }\n    },\n    actions: {\n      checkRenderedElements({ context, scope }) {\n        raf(() => {\n          context.set(\"rendered\", {\n            title: !!getTitleEl(scope),\n            description: !!getDescriptionEl(scope)\n          });\n        });\n      },\n      syncZIndex({ scope }) {\n        raf(() => {\n          const contentEl = getContentEl(scope);\n          if (!contentEl) return;\n          const styles = getComputedStyle(contentEl);\n          const elems = [getPositionerEl(scope), getBackdropEl(scope)];\n          elems.forEach((node) => {\n            node?.style.setProperty(\"--z-index\", styles.zIndex);\n            node?.style.setProperty(\"--layer-index\", styles.getPropertyValue(\"--layer-index\"));\n          });\n        });\n      },\n      invokeOnClose({ prop }) {\n        prop(\"onOpenChange\")?.({ open: false });\n      },\n      invokeOnOpen({ prop }) {\n        prop(\"onOpenChange\")?.({ open: true });\n      },\n      toggleVisibility({ prop, send, event }) {\n        send({\n          type: prop(\"open\") ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\",\n          previousEvent: event\n        });\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"aria-label\",\n  \"closeOnEscape\",\n  \"closeOnInteractOutside\",\n  \"dir\",\n  \"finalFocusEl\",\n  \"getRootNode\",\n  \"getRootNode\",\n  \"id\",\n  \"id\",\n  \"ids\",\n  \"initialFocusEl\",\n  \"modal\",\n  \"onEscapeKeyDown\",\n  \"onFocusOutside\",\n  \"onInteractOutside\",\n  \"onOpenChange\",\n  \"onPointerDownOutside\",\n  \"onRequestDismiss\",\n  \"defaultOpen\",\n  \"open\",\n  \"persistentElements\",\n  \"preventScroll\",\n  \"restoreFocus\",\n  \"role\",\n  \"trapFocus\"\n]);\nvar splitProps = createSplitProps(props);\n\nexport { anatomy, connect, machine, props, splitProps };\n", "import {connect, machine, type Props, type Api}  from \"@zag-js/dialog\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport { Component } from \"../lib/core\";\n\nexport class Dialog extends Component<Props, Api> {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  initMachine(props: Props): VanillaMachine<any> {\n    return new VanillaMachine(machine, props);\n  }\n\n  initApi(): Api {\n    return connect(this.machine.service, normalizeProps);\n  }\n\n  render(): void {\n    const rootEl = this.el;\n\n    const triggerEl = rootEl.querySelector<HTMLElement>('[data-scope=\"dialog\"][data-part=\"trigger\"]');\n    if (triggerEl) this.spreadProps(triggerEl, this.api.getTriggerProps());\n\n    const backdropEl = rootEl.querySelector<HTMLElement>('[data-scope=\"dialog\"][data-part=\"backdrop\"]');\n    if (backdropEl) this.spreadProps(backdropEl, this.api.getBackdropProps());\n\n    const positionerEl = rootEl.querySelector<HTMLElement>('[data-scope=\"dialog\"][data-part=\"positioner\"]');\n    if (positionerEl) this.spreadProps(positionerEl, this.api.getPositionerProps());\n\n    const contentEl = rootEl.querySelector<HTMLElement>('[data-scope=\"dialog\"][data-part=\"content\"]');\n    if (contentEl) this.spreadProps(contentEl, this.api.getContentProps());\n\n    const titleEl = rootEl.querySelector<HTMLElement>('[data-scope=\"dialog\"][data-part=\"title\"]');\n    if (titleEl) this.spreadProps(titleEl, this.api.getTitleProps());\n\n    const descriptionEl = rootEl.querySelector<HTMLElement>('[data-scope=\"dialog\"][data-part=\"description\"]');\n    if (descriptionEl) this.spreadProps(descriptionEl, this.api.getDescriptionProps());\n\n    const closeTriggerEl = rootEl.querySelector<HTMLElement>('[data-scope=\"dialog\"][data-part=\"close-trigger\"]');\n    if (closeTriggerEl) this.spreadProps(closeTriggerEl, this.api.getCloseTriggerProps());\n  }\n}", "import type { Hook } from \"phoenix_live_view\";\nimport type { HookInterface, CallbackRef } from \"phoenix_live_view/assets/js/types/view_hook\";\nimport { Dialog } from \"../components/dialog\";\nimport type { OpenChangeDetails } from \"@zag-js/dialog\";\nimport type { Direction } from \"@zag-js/types\";\n\nimport { getString, getBoolean } from \"../lib/util\";\n\ntype DialogHookState = {\n  dialog?: Dialog;\n  handlers?: Array<CallbackRef>;\n  onSetOpen?: (event: Event) => void;\n};\n\nconst DialogHook: Hook<object & DialogHookState, HTMLElement> = {\n  mounted(this: object & HookInterface<HTMLElement> & DialogHookState) {\n    const el = this.el;\n    const pushEvent = this.pushEvent.bind(this);\n\n    const dialog = new Dialog(el, {\n      id: el.id,\n      ...(getBoolean(el, \"controlled\")\n        ? { open: getBoolean(el, \"open\") }\n        : { defaultOpen: getBoolean(el, \"defaultOpen\") }),\n      modal: getBoolean(el, \"modal\"),\n      closeOnInteractOutside: getBoolean(el, \"closeOnInteractOutside\"),\n      closeOnEscape: getBoolean(el, \"closeOnEscapeKeyDown\"),\n      preventScroll: getBoolean(el, \"preventScroll\"),\n      restoreFocus: getBoolean(el, \"restoreFocus\"),\n      dir: getString<Direction>(el, \"dir\", [\"ltr\", \"rtl\"]),\n      \n      onOpenChange: (details: OpenChangeDetails) => {\n        const eventName = getString(el, \"onOpenChange\");\n        if (eventName && this.liveSocket.main.isConnected()) {\n          pushEvent(eventName, {\n            id: el.id,\n            open: details.open,\n          });\n        }\n\n        const eventNameClient = getString(el, \"onOpenChangeClient\");\n        if (eventNameClient) {\n          el.dispatchEvent(\n            new CustomEvent(eventNameClient, {\n              bubbles: true,\n              detail: {\n                id: el.id,\n                open: details.open,\n              },\n            })\n          );\n        }\n      },\n    });\n\n    dialog.init();\n    this.dialog = dialog;\n\n    this.onSetOpen = (event: Event) => {\n      const { open } = (event as CustomEvent<{ open: boolean }>).detail;\n      dialog.api.setOpen(open);\n    };\n    el.addEventListener(\"phx:dialog:set-open\", this.onSetOpen);\n\n    this.handlers = [];\n\n    this.handlers.push(\n      this.handleEvent(\"dialog_set_open\", (payload: { dialog_id?: string; open: boolean }) => {\n        const targetId = payload.dialog_id;\n        if (targetId && targetId !== el.id) return;\n        dialog.api.setOpen(payload.open);\n      })\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"dialog_open\", () => {\n        this.pushEvent(\"dialog_open_response\", {\n          value: dialog.api.open,\n        });\n      })\n    );\n  },\n\n  updated(this: object & HookInterface<HTMLElement> & DialogHookState) {\n    this.dialog?.updateProps({\n      id: this.el.id,\n      ...(getBoolean(this.el, \"controlled\")\n        ? { open: getBoolean(this.el, \"open\") }\n        : { defaultOpen: getBoolean(this.el, \"defaultOpen\") }),\n      modal: getBoolean(this.el, \"modal\"),\n      closeOnInteractOutside: getBoolean(this.el, \"closeOnInteractOutside\"),\n      closeOnEscape: getBoolean(this.el, \"closeOnEscapeKeyDown\"),\n      preventScroll: getBoolean(this.el, \"preventScroll\"),\n      restoreFocus: getBoolean(this.el, \"restoreFocus\"),\n      dir: getString<Direction>(this.el, \"dir\", [\"ltr\", \"rtl\"]),\n    });\n  },\n\n  destroyed(this: object & HookInterface<HTMLElement> & DialogHookState) {\n    if (this.onSetOpen) {\n      this.el.removeEventListener(\"phx:dialog:set-open\", this.onSetOpen);\n    }\n\n    if (this.handlers) {\n      for (const handler of this.handlers) {\n        this.removeHandleEvent(handler);\n      }\n    }\n\n    this.dialog?.destroy();\n  },\n};\n\nexport { DialogHook as Dialog };\n", "var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n\n// src/affine-transform.ts\nvar AffineTransform = class _AffineTransform {\n  constructor([m00, m01, m02, m10, m11, m12] = [0, 0, 0, 0, 0, 0]) {\n    __publicField(this, \"m00\");\n    __publicField(this, \"m01\");\n    __publicField(this, \"m02\");\n    __publicField(this, \"m10\");\n    __publicField(this, \"m11\");\n    __publicField(this, \"m12\");\n    __publicField(this, \"rotate\", (...args) => {\n      return this.prepend(_AffineTransform.rotate(...args));\n    });\n    __publicField(this, \"scale\", (...args) => {\n      return this.prepend(_AffineTransform.scale(...args));\n    });\n    __publicField(this, \"translate\", (...args) => {\n      return this.prepend(_AffineTransform.translate(...args));\n    });\n    this.m00 = m00;\n    this.m01 = m01;\n    this.m02 = m02;\n    this.m10 = m10;\n    this.m11 = m11;\n    this.m12 = m12;\n  }\n  applyTo(point) {\n    const { x, y } = point;\n    const { m00, m01, m02, m10, m11, m12 } = this;\n    return {\n      x: m00 * x + m01 * y + m02,\n      y: m10 * x + m11 * y + m12\n    };\n  }\n  prepend(other) {\n    return new _AffineTransform([\n      this.m00 * other.m00 + this.m01 * other.m10,\n      // m00\n      this.m00 * other.m01 + this.m01 * other.m11,\n      // m01\n      this.m00 * other.m02 + this.m01 * other.m12 + this.m02,\n      // m02\n      this.m10 * other.m00 + this.m11 * other.m10,\n      // m10\n      this.m10 * other.m01 + this.m11 * other.m11,\n      // m11\n      this.m10 * other.m02 + this.m11 * other.m12 + this.m12\n      // m12\n    ]);\n  }\n  append(other) {\n    return new _AffineTransform([\n      other.m00 * this.m00 + other.m01 * this.m10,\n      // m00\n      other.m00 * this.m01 + other.m01 * this.m11,\n      // m01\n      other.m00 * this.m02 + other.m01 * this.m12 + other.m02,\n      // m02\n      other.m10 * this.m00 + other.m11 * this.m10,\n      // m10\n      other.m10 * this.m01 + other.m11 * this.m11,\n      // m11\n      other.m10 * this.m02 + other.m11 * this.m12 + other.m12\n      // m12\n    ]);\n  }\n  get determinant() {\n    return this.m00 * this.m11 - this.m01 * this.m10;\n  }\n  get isInvertible() {\n    const det = this.determinant;\n    return isFinite(det) && isFinite(this.m02) && isFinite(this.m12) && det !== 0;\n  }\n  invert() {\n    const det = this.determinant;\n    return new _AffineTransform([\n      this.m11 / det,\n      // m00\n      -this.m01 / det,\n      // m01\n      (this.m01 * this.m12 - this.m11 * this.m02) / det,\n      // m02\n      -this.m10 / det,\n      // m10\n      this.m00 / det,\n      // m11\n      (this.m10 * this.m02 - this.m00 * this.m12) / det\n      // m12\n    ]);\n  }\n  get array() {\n    return [this.m00, this.m01, this.m02, this.m10, this.m11, this.m12, 0, 0, 1];\n  }\n  get float32Array() {\n    return new Float32Array(this.array);\n  }\n  // Static\n  static get identity() {\n    return new _AffineTransform([1, 0, 0, 0, 1, 0]);\n  }\n  static rotate(theta, origin) {\n    const rotation = new _AffineTransform([Math.cos(theta), -Math.sin(theta), 0, Math.sin(theta), Math.cos(theta), 0]);\n    if (origin && (origin.x !== 0 || origin.y !== 0)) {\n      return _AffineTransform.multiply(\n        _AffineTransform.translate(origin.x, origin.y),\n        rotation,\n        _AffineTransform.translate(-origin.x, -origin.y)\n      );\n    }\n    return rotation;\n  }\n  static scale(sx, sy = sx, origin = { x: 0, y: 0 }) {\n    const scale = new _AffineTransform([sx, 0, 0, 0, sy, 0]);\n    if (origin.x !== 0 || origin.y !== 0) {\n      return _AffineTransform.multiply(\n        _AffineTransform.translate(origin.x, origin.y),\n        scale,\n        _AffineTransform.translate(-origin.x, -origin.y)\n      );\n    }\n    return scale;\n  }\n  static translate(tx, ty) {\n    return new _AffineTransform([1, 0, tx, 0, 1, ty]);\n  }\n  static multiply(...[first, ...rest]) {\n    if (!first) return _AffineTransform.identity;\n    return rest.reduce((result, item) => result.prepend(item), first);\n  }\n  get a() {\n    return this.m00;\n  }\n  get b() {\n    return this.m10;\n  }\n  get c() {\n    return this.m01;\n  }\n  get d() {\n    return this.m11;\n  }\n  get tx() {\n    return this.m02;\n  }\n  get ty() {\n    return this.m12;\n  }\n  get scaleComponents() {\n    return { x: this.a, y: this.d };\n  }\n  get translationComponents() {\n    return { x: this.tx, y: this.ty };\n  }\n  get skewComponents() {\n    return { x: this.c, y: this.b };\n  }\n  toString() {\n    return `matrix(${this.a}, ${this.b}, ${this.c}, ${this.d}, ${this.tx}, ${this.ty})`;\n  }\n};\n\n// src/align.ts\nfunction hAlign(a, ref, h) {\n  let x = ref.minX;\n  if (h === \"left-inside\") x = ref.minX;\n  if (h === \"left-outside\") x = ref.minX - ref.width;\n  if (h === \"right-inside\") x = ref.maxX - ref.width;\n  if (h === \"right-outside\") x = ref.maxX;\n  if (h === \"center\") x = ref.midX - ref.width / 2;\n  return { ...a, x };\n}\nfunction vAlign(a, ref, v) {\n  let y = ref.minY;\n  if (v === \"top-inside\") y = ref.minY;\n  if (v === \"top-outside\") y = ref.minY - a.height;\n  if (v === \"bottom-inside\") y = ref.maxY - a.height;\n  if (v === \"bottom-outside\") y = ref.maxY;\n  if (v === \"center\") y = ref.midY - a.height / 2;\n  return { ...a, y };\n}\nfunction alignRect(a, ref, options) {\n  const { h, v } = options;\n  return vAlign(hAlign(a, ref, h), ref, v);\n}\n\n// src/angle.ts\nfunction getPointAngle(rect, point, reference = rect.center) {\n  const x = point.x - reference.x;\n  const y = point.y - reference.y;\n  const deg = Math.atan2(x, y) * (180 / Math.PI) + 180;\n  return 360 - deg;\n}\n\n// src/clamp.ts\nvar clamp = (value, min3, max2) => Math.min(Math.max(value, min3), max2);\nvar clampPoint = (position, size, boundaryRect) => {\n  const x = clamp(position.x, boundaryRect.x, boundaryRect.x + boundaryRect.width - size.width);\n  const y = clamp(position.y, boundaryRect.y, boundaryRect.y + boundaryRect.height - size.height);\n  return { x, y };\n};\nvar defaultMinSize = {\n  width: 0,\n  height: 0\n};\nvar defaultMaxSize = {\n  width: Infinity,\n  height: Infinity\n};\nvar clampSize = (size, minSize = defaultMinSize, maxSize = defaultMaxSize) => {\n  return {\n    width: Math.min(Math.max(size.width, minSize.width), maxSize.width),\n    height: Math.min(Math.max(size.height, minSize.height), maxSize.height)\n  };\n};\n\n// src/rect.ts\nvar createPoint = (x, y) => ({ x, y });\nvar subtractPoints = (a, b) => {\n  if (!b) return a;\n  return createPoint(a.x - b.x, a.y - b.y);\n};\nvar addPoints = (a, b) => createPoint(a.x + b.x, a.y + b.y);\nfunction isPoint(v) {\n  return Reflect.has(v, \"x\") && Reflect.has(v, \"y\");\n}\nfunction createRect(r) {\n  const { x, y, width, height } = r;\n  const midX = x + width / 2;\n  const midY = y + height / 2;\n  return {\n    x,\n    y,\n    width,\n    height,\n    minX: x,\n    minY: y,\n    maxX: x + width,\n    maxY: y + height,\n    midX,\n    midY,\n    center: createPoint(midX, midY)\n  };\n}\nfunction isRect(v) {\n  return Reflect.has(v, \"x\") && Reflect.has(v, \"y\") && Reflect.has(v, \"width\") && Reflect.has(v, \"height\");\n}\nfunction getRectCenters(v) {\n  const top = createPoint(v.midX, v.minY);\n  const right = createPoint(v.maxX, v.midY);\n  const bottom = createPoint(v.midX, v.maxY);\n  const left = createPoint(v.minX, v.midY);\n  return { top, right, bottom, left };\n}\nfunction getRectCorners(v) {\n  const top = createPoint(v.minX, v.minY);\n  const right = createPoint(v.maxX, v.minY);\n  const bottom = createPoint(v.maxX, v.maxY);\n  const left = createPoint(v.minX, v.maxY);\n  return { top, right, bottom, left };\n}\nfunction getRectEdges(v) {\n  const c = getRectCorners(v);\n  const top = [c.top, c.right];\n  const right = [c.right, c.bottom];\n  const bottom = [c.left, c.bottom];\n  const left = [c.top, c.left];\n  return { top, right, bottom, left };\n}\n\n// src/intersection.ts\nfunction intersects(a, b) {\n  return a.x < b.maxX && a.y < b.maxY && a.maxX > b.x && a.maxY > b.y;\n}\nfunction intersection(a, b) {\n  const x = Math.max(a.x, b.x);\n  const y = Math.max(a.y, b.y);\n  const x2 = Math.min(a.x + a.width, b.x + b.width);\n  const y2 = Math.min(a.y + a.height, b.y + b.height);\n  return createRect({ x, y, width: x2 - x, height: y2 - y });\n}\nfunction collisions(a, b) {\n  return {\n    top: a.minY <= b.minY,\n    right: a.maxX >= b.maxX,\n    bottom: a.maxY >= b.maxY,\n    left: a.minX <= b.minX\n  };\n}\n\n// src/distance.ts\nfunction distance(a, b = { x: 0, y: 0 }) {\n  return Math.sqrt(Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2));\n}\nfunction distanceFromPoint(r, p) {\n  let x = 0;\n  let y = 0;\n  if (p.x < r.x) x = r.x - p.x;\n  else if (p.x > r.maxX) x = p.x - r.maxX;\n  if (p.y < r.y) y = r.y - p.y;\n  else if (p.y > r.maxY) y = p.y - r.maxY;\n  return { x, y, value: distance({ x, y }) };\n}\nfunction distanceFromRect(a, b) {\n  if (intersects(a, b)) return { x: 0, y: 0, value: 0 };\n  const left = a.x < b.x ? a : b;\n  const right = b.x < a.x ? a : b;\n  const upper = a.y < b.y ? a : b;\n  const lower = b.y < a.y ? a : b;\n  let x = left.x === right.x ? 0 : right.x - left.maxX;\n  x = Math.max(0, x);\n  let y = upper.y === lower.y ? 0 : lower.y - upper.maxY;\n  y = Math.max(0, y);\n  return { x, y, value: distance({ x, y }) };\n}\nfunction distanceBtwEdges(a, b) {\n  return {\n    left: b.x - a.x,\n    top: b.y - a.y,\n    right: a.maxX - b.maxX,\n    bottom: a.maxY - b.maxY\n  };\n}\n\n// src/closest.ts\nfunction closest(...pts) {\n  return (a) => {\n    const ds = pts.map((b) => distance(b, a));\n    const c = Math.min.apply(Math, ds);\n    return pts[ds.indexOf(c)];\n  };\n}\nfunction closestSideToRect(ref, r) {\n  if (r.maxX <= ref.minX) return \"left\";\n  if (r.minX >= ref.maxX) return \"right\";\n  if (r.maxY <= ref.minY) return \"top\";\n  if (r.minY >= ref.maxY) return \"bottom\";\n  return \"left\";\n}\nfunction closestSideToPoint(ref, p) {\n  const { x, y } = p;\n  const dl = x - ref.minX;\n  const dr = ref.maxX - x;\n  const dt = y - ref.minY;\n  const db = ref.maxY - y;\n  let closest2 = dl;\n  let side = \"left\";\n  if (dr < closest2) {\n    closest2 = dr;\n    side = \"right\";\n  }\n  if (dt < closest2) {\n    closest2 = dt;\n    side = \"top\";\n  }\n  if (db < closest2) {\n    side = \"bottom\";\n  }\n  return side;\n}\n\n// src/constrain.ts\nvar constrainRect = (rect, boundary) => {\n  const left = Math.max(boundary.x, Math.min(rect.x, boundary.x + boundary.width - rect.width));\n  const top = Math.max(boundary.y, Math.min(rect.y, boundary.y + boundary.height - rect.height));\n  return {\n    x: left,\n    y: top,\n    width: Math.min(rect.width, boundary.width),\n    height: Math.min(rect.height, boundary.height)\n  };\n};\n\n// src/contains.ts\nfunction containsPoint(r, p) {\n  return r.minX <= p.x && p.x <= r.maxX && r.minY <= p.y && p.y <= r.maxY;\n}\nfunction containsRect(a, b) {\n  return Object.values(getRectCorners(b)).every((c) => containsPoint(a, c));\n}\nfunction contains(r, v) {\n  return isRect(v) ? containsRect(r, v) : containsPoint(r, v);\n}\n\n// src/equality.ts\nvar isSizeEqual = (a, b) => {\n  return a.width === b?.width && a.height === b?.height;\n};\nvar isPointEqual = (a, b) => {\n  return a.x === b?.x && a.y === b?.y;\n};\nvar isRectEqual = (a, b) => {\n  return isPointEqual(a, b) && isSizeEqual(a, b);\n};\n\n// src/from-element.ts\nvar styleCache = /* @__PURE__ */ new WeakMap();\nfunction getCacheComputedStyle(el) {\n  if (!styleCache.has(el)) {\n    const win = el.ownerDocument.defaultView || window;\n    styleCache.set(el, win.getComputedStyle(el));\n  }\n  return styleCache.get(el);\n}\nfunction getElementRect(el, opts = {}) {\n  return createRect(getClientRect(el, opts));\n}\nfunction getClientRect(el, opts = {}) {\n  const { excludeScrollbar = false, excludeBorders = false } = opts;\n  const { x, y, width, height } = el.getBoundingClientRect();\n  const r = { x, y, width, height };\n  const style = getCacheComputedStyle(el);\n  const { borderLeftWidth, borderTopWidth, borderRightWidth, borderBottomWidth } = style;\n  const borderXWidth = sum(borderLeftWidth, borderRightWidth);\n  const borderYWidth = sum(borderTopWidth, borderBottomWidth);\n  if (excludeBorders) {\n    r.width -= borderXWidth;\n    r.height -= borderYWidth;\n    r.x += px(borderLeftWidth);\n    r.y += px(borderTopWidth);\n  }\n  if (excludeScrollbar) {\n    const scrollbarWidth = el.offsetWidth - el.clientWidth - borderXWidth;\n    const scrollbarHeight = el.offsetHeight - el.clientHeight - borderYWidth;\n    r.width -= scrollbarWidth;\n    r.height -= scrollbarHeight;\n  }\n  return r;\n}\nvar px = (v) => parseFloat(v.replace(\"px\", \"\"));\nvar sum = (...vals) => vals.reduce((sum2, v) => sum2 + (v ? px(v) : 0), 0);\n\n// src/from-points.ts\nfunction getRectFromPoints(...pts) {\n  const xs = pts.map((p) => p.x);\n  const ys = pts.map((p) => p.y);\n  const x = Math.min(...xs);\n  const y = Math.min(...ys);\n  const width = Math.max(...xs) - x;\n  const height = Math.max(...ys) - y;\n  return createRect({ x, y, width, height });\n}\n\n// src/union.ts\nvar { min, max } = Math;\nfunction union(...rs) {\n  const pMin = {\n    x: min(...rs.map((r) => r.minX)),\n    y: min(...rs.map((r) => r.minY))\n  };\n  const pMax = {\n    x: max(...rs.map((r) => r.maxX)),\n    y: max(...rs.map((r) => r.maxY))\n  };\n  return getRectFromPoints(pMin, pMax);\n}\n\n// src/from-range.ts\nfunction fromRange(range) {\n  let rs = [];\n  const rects = Array.from(range.getClientRects());\n  if (rects.length) {\n    rs = rs.concat(rects.map(createRect));\n    return union.apply(void 0, rs);\n  }\n  let start = range.startContainer;\n  if (start.nodeType === Node.TEXT_NODE) {\n    start = start.parentNode;\n  }\n  if (start instanceof HTMLElement) {\n    const r = getElementRect(start);\n    rs.push({ ...r, x: r.maxX, width: 0 });\n  }\n  return union.apply(void 0, rs);\n}\n\n// src/from-rotation.ts\nfunction toRad(d) {\n  return d % 360 * Math.PI / 180;\n}\nfunction rotate(a, d, c) {\n  const r = toRad(d);\n  const sin = Math.sin(r);\n  const cos = Math.cos(r);\n  const x = a.x - c.x;\n  const y = a.y - c.y;\n  return {\n    x: c.x + x * cos - y * sin,\n    y: c.y + x * sin + y * cos\n  };\n}\nfunction getRotationRect(r, deg) {\n  const rr = Object.values(getRectCorners(r)).map((p) => rotate(p, deg, r.center));\n  const xs = rr.map((p) => p.x);\n  const ys = rr.map((p) => p.y);\n  const minX = Math.min(...xs);\n  const minY = Math.min(...ys);\n  const maxX = Math.max(...xs);\n  const maxY = Math.max(...ys);\n  return createRect({\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  });\n}\n\n// src/from-window.ts\nfunction getWindowRect(win, opts = {}) {\n  return createRect(getViewportRect(win, opts));\n}\nfunction getViewportRect(win, opts) {\n  const { excludeScrollbar = false } = opts;\n  const { innerWidth, innerHeight, document: doc, visualViewport } = win;\n  const width = visualViewport?.width || innerWidth;\n  const height = visualViewport?.height || innerHeight;\n  const rect = { x: 0, y: 0, width, height };\n  if (excludeScrollbar) {\n    const scrollbarWidth = innerWidth - doc.documentElement.clientWidth;\n    const scrollbarHeight = innerHeight - doc.documentElement.clientHeight;\n    rect.width -= scrollbarWidth;\n    rect.height -= scrollbarHeight;\n  }\n  return rect;\n}\n\n// src/operations.ts\nvar isSymmetric = (v) => \"dx\" in v || \"dy\" in v;\nfunction inset(r, i) {\n  const v = isSymmetric(i) ? { left: i.dx, right: i.dx, top: i.dy, bottom: i.dy } : i;\n  const { top = 0, right = 0, bottom = 0, left = 0 } = v;\n  return createRect({\n    x: r.x + left,\n    y: r.y + top,\n    width: r.width - left - right,\n    height: r.height - top - bottom\n  });\n}\nfunction expand(r, v) {\n  const value = typeof v === \"number\" ? { dx: -v, dy: -v } : v;\n  return inset(r, value);\n}\nfunction shrink(r, v) {\n  const value = typeof v === \"number\" ? { dx: -v, dy: -v } : v;\n  return inset(r, value);\n}\nfunction shift(r, o) {\n  const { x = 0, y = 0 } = o;\n  return createRect({\n    x: r.x + x,\n    y: r.y + y,\n    width: r.width,\n    height: r.height\n  });\n}\n\n// src/polygon.ts\nfunction getElementPolygon(rectValue, placement) {\n  const rect = createRect(rectValue);\n  const { top, right, left, bottom } = getRectCorners(rect);\n  const [base] = placement.split(\"-\");\n  return {\n    top: [left, top, right, bottom],\n    right: [top, right, bottom, left],\n    bottom: [top, left, bottom, right],\n    left: [right, top, left, bottom]\n  }[base];\n}\nfunction isPointInPolygon(polygon, point) {\n  const { x, y } = point;\n  let c = false;\n  for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n    const xi = polygon[i].x;\n    const yi = polygon[i].y;\n    const xj = polygon[j].x;\n    const yj = polygon[j].y;\n    if (yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi) {\n      c = !c;\n    }\n  }\n  return c;\n}\nfunction createPolygonElement() {\n  const id = \"debug-polygon\";\n  const existingPolygon = document.getElementById(id);\n  if (existingPolygon) {\n    return existingPolygon;\n  }\n  const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n  Object.assign(svg.style, {\n    top: \"0\",\n    left: \"0\",\n    width: \"100%\",\n    height: \"100%\",\n    opacity: \"0.15\",\n    position: \"fixed\",\n    pointerEvents: \"none\",\n    fill: \"red\"\n  });\n  const polygon = document.createElementNS(\"http://www.w3.org/2000/svg\", \"polygon\");\n  polygon.setAttribute(\"id\", id);\n  polygon.setAttribute(\"points\", \"0,0 0,0\");\n  svg.appendChild(polygon);\n  document.body.appendChild(svg);\n  return polygon;\n}\nfunction debugPolygon(polygon) {\n  const el = createPolygonElement();\n  const points = polygon.map((point) => `${point.x},${point.y}`).join(\" \");\n  el.setAttribute(\"points\", points);\n  return () => {\n    el.remove();\n  };\n}\n\n// src/compass.ts\nvar compassDirectionMap = {\n  n: { x: 0.5, y: 0 },\n  ne: { x: 1, y: 0 },\n  e: { x: 1, y: 0.5 },\n  se: { x: 1, y: 1 },\n  s: { x: 0.5, y: 1 },\n  sw: { x: 0, y: 1 },\n  w: { x: 0, y: 0.5 },\n  nw: { x: 0, y: 0 }\n};\nvar oppositeDirectionMap = {\n  n: \"s\",\n  ne: \"sw\",\n  e: \"w\",\n  se: \"nw\",\n  s: \"n\",\n  sw: \"ne\",\n  w: \"e\",\n  nw: \"se\"\n};\n\n// src/resize.ts\nvar { sign, abs, min: min2 } = Math;\nfunction getRectExtentPoint(rect, direction) {\n  const { minX, minY, maxX, maxY, midX, midY } = rect;\n  const x = direction.includes(\"w\") ? minX : direction.includes(\"e\") ? maxX : midX;\n  const y = direction.includes(\"n\") ? minY : direction.includes(\"s\") ? maxY : midY;\n  return { x, y };\n}\nfunction getOppositeDirection(direction) {\n  return oppositeDirectionMap[direction];\n}\nfunction resizeRect(rect, offset, direction, opts) {\n  const { scalingOriginMode, lockAspectRatio } = opts;\n  const extent = getRectExtentPoint(rect, direction);\n  const oppositeDirection = getOppositeDirection(direction);\n  const oppositeExtent = getRectExtentPoint(rect, oppositeDirection);\n  if (scalingOriginMode === \"center\") {\n    offset = { x: offset.x * 2, y: offset.y * 2 };\n  }\n  const newExtent = {\n    x: extent.x + offset.x,\n    y: extent.y + offset.y\n  };\n  const multiplier = {\n    x: compassDirectionMap[direction].x * 2 - 1,\n    y: compassDirectionMap[direction].y * 2 - 1\n  };\n  const newSize = {\n    width: newExtent.x - oppositeExtent.x,\n    height: newExtent.y - oppositeExtent.y\n  };\n  const scaleX = multiplier.x * newSize.width / rect.width;\n  const scaleY = multiplier.y * newSize.height / rect.height;\n  const largestMagnitude = abs(scaleX) > abs(scaleY) ? scaleX : scaleY;\n  const scale = lockAspectRatio ? { x: largestMagnitude, y: largestMagnitude } : {\n    x: extent.x === oppositeExtent.x ? 1 : scaleX,\n    y: extent.y === oppositeExtent.y ? 1 : scaleY\n  };\n  if (extent.y === oppositeExtent.y) {\n    scale.y = abs(scale.y);\n  } else if (sign(scale.y) !== sign(scaleY)) {\n    scale.y *= -1;\n  }\n  if (extent.x === oppositeExtent.x) {\n    scale.x = abs(scale.x);\n  } else if (sign(scale.x) !== sign(scaleX)) {\n    scale.x *= -1;\n  }\n  switch (scalingOriginMode) {\n    case \"extent\":\n      return transformRect(rect, AffineTransform.scale(scale.x, scale.y, oppositeExtent), false);\n    case \"center\":\n      return transformRect(\n        rect,\n        AffineTransform.scale(scale.x, scale.y, {\n          x: rect.midX,\n          y: rect.midY\n        }),\n        false\n      );\n  }\n}\nfunction createRectFromPoints(initialPoint, finalPoint, normalized = true) {\n  if (normalized) {\n    return {\n      x: min2(finalPoint.x, initialPoint.x),\n      y: min2(finalPoint.y, initialPoint.y),\n      width: abs(finalPoint.x - initialPoint.x),\n      height: abs(finalPoint.y - initialPoint.y)\n    };\n  }\n  return {\n    x: initialPoint.x,\n    y: initialPoint.y,\n    width: finalPoint.x - initialPoint.x,\n    height: finalPoint.y - initialPoint.y\n  };\n}\nfunction transformRect(rect, transform, normalized = true) {\n  const p1 = transform.applyTo({ x: rect.minX, y: rect.minY });\n  const p2 = transform.applyTo({ x: rect.maxX, y: rect.maxY });\n  return createRectFromPoints(p1, p2, normalized);\n}\n\nexport { AffineTransform, addPoints, alignRect, clampPoint, clampSize, closest, closestSideToPoint, closestSideToRect, collisions, constrainRect, contains, containsPoint, containsRect, createPoint, createRect, debugPolygon, distance, distanceBtwEdges, distanceFromPoint, distanceFromRect, expand, fromRange, getElementPolygon, getElementRect, getPointAngle, getRectCenters, getRectCorners, getRectEdges, getRectFromPoints, getRotationRect, getViewportRect, getWindowRect, inset, intersection, intersects, isPoint, isPointEqual, isPointInPolygon, isRect, isRectEqual, isSizeEqual, isSymmetric, resizeRect, rotate, shift, shrink, subtractPoints, toRad, union };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { createGuards, createMachine, mergeProps } from '@zag-js/core';\nimport { raf, getInitialFocus, contains, isAnchorElement, observeAttributes, addDomEvent, getEventTarget, isEditableElement, getByTypeahead, clickIfLink, getWindow, scrollIntoView, queryAll, dataAttr, isDownloadingEvent, isOpeningInNewTab, isValidTabEvent, getEventKey, isPrintableKey, isModifierKey, isContextMenuEvent, getEventPoint, ariaAttr, isHTMLElement } from '@zag-js/dom-query';\nimport { getPlacementSide, getPlacement, getPlacementStyles } from '@zag-js/popper';\nimport { isEqual, createSplitProps, prev, next, last, first, cast, hasProp } from '@zag-js/utils';\nimport { trackDismissableElement } from '@zag-js/dismissable';\nimport { isPointInPolygon, getElementPolygon } from '@zag-js/rect-utils';\nimport { createProps } from '@zag-js/types';\n\n// src/menu.anatomy.ts\nvar anatomy = createAnatomy(\"menu\").parts(\n  \"arrow\",\n  \"arrowTip\",\n  \"content\",\n  \"contextTrigger\",\n  \"indicator\",\n  \"item\",\n  \"itemGroup\",\n  \"itemGroupLabel\",\n  \"itemIndicator\",\n  \"itemText\",\n  \"positioner\",\n  \"separator\",\n  \"trigger\",\n  \"triggerItem\"\n);\nvar parts = anatomy.build();\nvar getTriggerId = (ctx) => ctx.ids?.trigger ?? `menu:${ctx.id}:trigger`;\nvar getContextTriggerId = (ctx) => ctx.ids?.contextTrigger ?? `menu:${ctx.id}:ctx-trigger`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `menu:${ctx.id}:content`;\nvar getArrowId = (ctx) => ctx.ids?.arrow ?? `menu:${ctx.id}:arrow`;\nvar getPositionerId = (ctx) => ctx.ids?.positioner ?? `menu:${ctx.id}:popper`;\nvar getGroupId = (ctx, id) => ctx.ids?.group?.(id) ?? `menu:${ctx.id}:group:${id}`;\nvar getItemId = (ctx, id) => `${ctx.id}/${id}`;\nvar getItemValue = (el) => el?.dataset.value ?? null;\nvar getGroupLabelId = (ctx, id) => ctx.ids?.groupLabel?.(id) ?? `menu:${ctx.id}:group-label:${id}`;\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nvar getPositionerEl = (ctx) => ctx.getById(getPositionerId(ctx));\nvar getTriggerEl = (ctx) => ctx.getById(getTriggerId(ctx));\nvar getItemEl = (ctx, value) => value ? ctx.getById(getItemId(ctx, value)) : null;\nvar getContextTriggerEl = (ctx) => ctx.getById(getContextTriggerId(ctx));\nvar getElements = (ctx) => {\n  const ownerId = CSS.escape(getContentId(ctx));\n  const selector = `[role^=\"menuitem\"][data-ownedby=${ownerId}]:not([data-disabled])`;\n  return queryAll(getContentEl(ctx), selector);\n};\nvar getFirstEl = (ctx) => first(getElements(ctx));\nvar getLastEl = (ctx) => last(getElements(ctx));\nvar isMatch = (el, value) => {\n  if (!value) return false;\n  return el.id === value || el.dataset.value === value;\n};\nvar getNextEl = (ctx, opts) => {\n  const items = getElements(ctx);\n  const index = items.findIndex((el) => isMatch(el, opts.value));\n  return next(items, index, { loop: opts.loop ?? opts.loopFocus });\n};\nvar getPrevEl = (ctx, opts) => {\n  const items = getElements(ctx);\n  const index = items.findIndex((el) => isMatch(el, opts.value));\n  return prev(items, index, { loop: opts.loop ?? opts.loopFocus });\n};\nvar getElemByKey = (ctx, opts) => {\n  const items = getElements(ctx);\n  const item = items.find((el) => isMatch(el, opts.value));\n  return getByTypeahead(items, { state: opts.typeaheadState, key: opts.key, activeId: item?.id ?? null });\n};\nvar isTargetDisabled = (v) => {\n  return isHTMLElement(v) && (v.dataset.disabled === \"\" || v.hasAttribute(\"disabled\"));\n};\nvar isTriggerItem = (el) => {\n  return !!el?.getAttribute(\"role\")?.startsWith(\"menuitem\") && !!el?.hasAttribute(\"data-controls\");\n};\nvar itemSelectEvent = \"menu:select\";\nfunction dispatchSelectionEvent(el, value) {\n  if (!el) return;\n  const win = getWindow(el);\n  const event = new win.CustomEvent(itemSelectEvent, { detail: { value } });\n  el.dispatchEvent(event);\n}\n\n// src/menu.connect.ts\nfunction connect(service, normalize) {\n  const { context, send, state, computed, prop, scope } = service;\n  const open = state.hasTag(\"open\");\n  const isSubmenu = context.get(\"isSubmenu\");\n  const isTypingAhead = computed(\"isTypingAhead\");\n  const composite = prop(\"composite\");\n  const currentPlacement = context.get(\"currentPlacement\");\n  const anchorPoint = context.get(\"anchorPoint\");\n  const highlightedValue = context.get(\"highlightedValue\");\n  const popperStyles = getPlacementStyles({\n    ...prop(\"positioning\"),\n    placement: anchorPoint ? \"bottom\" : currentPlacement\n  });\n  function getItemState(props2) {\n    return {\n      id: getItemId(scope, props2.value),\n      disabled: !!props2.disabled,\n      highlighted: highlightedValue === props2.value\n    };\n  }\n  function getOptionItemProps(props2) {\n    const valueText = props2.valueText ?? props2.value;\n    return { ...props2, id: props2.value, valueText };\n  }\n  function getOptionItemState(props2) {\n    const itemState = getItemState(getOptionItemProps(props2));\n    return {\n      ...itemState,\n      checked: !!props2.checked\n    };\n  }\n  function getItemProps(props2) {\n    const { closeOnSelect, valueText, value } = props2;\n    const itemState = getItemState(props2);\n    const id = getItemId(scope, value);\n    return normalize.element({\n      ...parts.item.attrs,\n      id,\n      role: \"menuitem\",\n      \"aria-disabled\": ariaAttr(itemState.disabled),\n      \"data-disabled\": dataAttr(itemState.disabled),\n      \"data-ownedby\": getContentId(scope),\n      \"data-highlighted\": dataAttr(itemState.highlighted),\n      \"data-value\": value,\n      \"data-valuetext\": valueText,\n      onDragStart(event) {\n        const isLink = event.currentTarget.matches(\"a[href]\");\n        if (isLink) event.preventDefault();\n      },\n      onPointerMove(event) {\n        if (itemState.disabled) return;\n        if (event.pointerType !== \"mouse\") return;\n        const target = event.currentTarget;\n        if (itemState.highlighted) return;\n        const point = getEventPoint(event);\n        send({ type: \"ITEM_POINTERMOVE\", id, target, closeOnSelect, point });\n      },\n      onPointerLeave(event) {\n        if (itemState.disabled) return;\n        if (event.pointerType !== \"mouse\") return;\n        const pointerMoved = service.event.previous()?.type.includes(\"POINTER\");\n        if (!pointerMoved) return;\n        const target = event.currentTarget;\n        send({ type: \"ITEM_POINTERLEAVE\", id, target, closeOnSelect });\n      },\n      onPointerDown(event) {\n        if (itemState.disabled) return;\n        const target = event.currentTarget;\n        send({ type: \"ITEM_POINTERDOWN\", target, id, closeOnSelect });\n      },\n      onClick(event) {\n        if (isDownloadingEvent(event)) return;\n        if (isOpeningInNewTab(event)) return;\n        if (itemState.disabled) return;\n        const target = event.currentTarget;\n        send({ type: \"ITEM_CLICK\", target, id, closeOnSelect });\n      }\n    });\n  }\n  return {\n    highlightedValue,\n    open,\n    setOpen(nextOpen) {\n      const open2 = state.hasTag(\"open\");\n      if (open2 === nextOpen) return;\n      send({ type: nextOpen ? \"OPEN\" : \"CLOSE\" });\n    },\n    setHighlightedValue(value) {\n      send({ type: \"HIGHLIGHTED.SET\", value });\n    },\n    setParent(parent) {\n      send({ type: \"PARENT.SET\", value: parent, id: parent.prop(\"id\") });\n    },\n    setChild(child) {\n      send({ type: \"CHILD.SET\", value: child, id: child.prop(\"id\") });\n    },\n    reposition(options = {}) {\n      send({ type: \"POSITIONING.SET\", options });\n    },\n    addItemListener(props2) {\n      const node = scope.getById(props2.id);\n      if (!node) return;\n      const listener = () => props2.onSelect?.();\n      node.addEventListener(itemSelectEvent, listener);\n      return () => node.removeEventListener(itemSelectEvent, listener);\n    },\n    getContextTriggerProps() {\n      return normalize.element({\n        ...parts.contextTrigger.attrs,\n        dir: prop(\"dir\"),\n        id: getContextTriggerId(scope),\n        \"data-state\": open ? \"open\" : \"closed\",\n        onPointerDown(event) {\n          if (event.pointerType === \"mouse\") return;\n          const point = getEventPoint(event);\n          send({ type: \"CONTEXT_MENU_START\", point });\n        },\n        onPointerCancel(event) {\n          if (event.pointerType === \"mouse\") return;\n          send({ type: \"CONTEXT_MENU_CANCEL\" });\n        },\n        onPointerMove(event) {\n          if (event.pointerType === \"mouse\") return;\n          send({ type: \"CONTEXT_MENU_CANCEL\" });\n        },\n        onPointerUp(event) {\n          if (event.pointerType === \"mouse\") return;\n          send({ type: \"CONTEXT_MENU_CANCEL\" });\n        },\n        onContextMenu(event) {\n          const point = getEventPoint(event);\n          send({ type: \"CONTEXT_MENU\", point });\n          event.preventDefault();\n        },\n        style: {\n          WebkitTouchCallout: \"none\",\n          WebkitUserSelect: \"none\",\n          userSelect: \"none\"\n        }\n      });\n    },\n    getTriggerItemProps(childApi) {\n      const triggerProps = childApi.getTriggerProps();\n      return mergeProps(getItemProps({ value: triggerProps.id }), triggerProps);\n    },\n    getTriggerProps() {\n      return normalize.button({\n        ...isSubmenu ? parts.triggerItem.attrs : parts.trigger.attrs,\n        \"data-placement\": context.get(\"currentPlacement\"),\n        type: \"button\",\n        dir: prop(\"dir\"),\n        id: getTriggerId(scope),\n        \"data-uid\": prop(\"id\"),\n        \"aria-haspopup\": composite ? \"menu\" : \"dialog\",\n        \"aria-controls\": getContentId(scope),\n        \"data-controls\": getContentId(scope),\n        \"aria-expanded\": open || void 0,\n        \"data-state\": open ? \"open\" : \"closed\",\n        onPointerMove(event) {\n          if (event.pointerType !== \"mouse\") return;\n          const disabled = isTargetDisabled(event.currentTarget);\n          if (disabled || !isSubmenu) return;\n          const point = getEventPoint(event);\n          send({ type: \"TRIGGER_POINTERMOVE\", target: event.currentTarget, point });\n        },\n        onPointerLeave(event) {\n          if (isTargetDisabled(event.currentTarget)) return;\n          if (event.pointerType !== \"mouse\") return;\n          if (!isSubmenu) return;\n          const point = getEventPoint(event);\n          send({\n            type: \"TRIGGER_POINTERLEAVE\",\n            target: event.currentTarget,\n            point\n          });\n        },\n        onPointerDown(event) {\n          if (isTargetDisabled(event.currentTarget)) return;\n          if (isContextMenuEvent(event)) return;\n          event.preventDefault();\n        },\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (isTargetDisabled(event.currentTarget)) return;\n          send({ type: \"TRIGGER_CLICK\", target: event.currentTarget });\n        },\n        onBlur() {\n          send({ type: \"TRIGGER_BLUR\" });\n        },\n        onFocus() {\n          send({ type: \"TRIGGER_FOCUS\" });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          const keyMap = {\n            ArrowDown() {\n              send({ type: \"ARROW_DOWN\" });\n            },\n            ArrowUp() {\n              send({ type: \"ARROW_UP\" });\n            },\n            Enter() {\n              send({ type: \"ARROW_DOWN\", src: \"enter\" });\n            },\n            Space() {\n              send({ type: \"ARROW_DOWN\", src: \"space\" });\n            }\n          };\n          const key = getEventKey(event, {\n            orientation: \"vertical\",\n            dir: prop(\"dir\")\n          });\n          const exec = keyMap[key];\n          if (exec) {\n            event.preventDefault();\n            exec(event);\n          }\n        }\n      });\n    },\n    getIndicatorProps() {\n      return normalize.element({\n        ...parts.indicator.attrs,\n        dir: prop(\"dir\"),\n        \"data-state\": open ? \"open\" : \"closed\"\n      });\n    },\n    getPositionerProps() {\n      return normalize.element({\n        ...parts.positioner.attrs,\n        dir: prop(\"dir\"),\n        id: getPositionerId(scope),\n        style: popperStyles.floating\n      });\n    },\n    getArrowProps() {\n      return normalize.element({\n        id: getArrowId(scope),\n        ...parts.arrow.attrs,\n        dir: prop(\"dir\"),\n        style: popperStyles.arrow\n      });\n    },\n    getArrowTipProps() {\n      return normalize.element({\n        ...parts.arrowTip.attrs,\n        dir: prop(\"dir\"),\n        style: popperStyles.arrowTip\n      });\n    },\n    getContentProps() {\n      return normalize.element({\n        ...parts.content.attrs,\n        id: getContentId(scope),\n        \"aria-label\": prop(\"aria-label\"),\n        hidden: !open,\n        \"data-state\": open ? \"open\" : \"closed\",\n        role: composite ? \"menu\" : \"dialog\",\n        tabIndex: 0,\n        dir: prop(\"dir\"),\n        \"aria-activedescendant\": computed(\"highlightedId\") || void 0,\n        \"aria-labelledby\": getTriggerId(scope),\n        \"data-placement\": currentPlacement,\n        onPointerEnter(event) {\n          if (event.pointerType !== \"mouse\") return;\n          send({ type: \"MENU_POINTERENTER\" });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (!contains(event.currentTarget, getEventTarget(event))) return;\n          const target = getEventTarget(event);\n          const sameMenu = target?.closest(\"[role=menu]\") === event.currentTarget || target === event.currentTarget;\n          if (!sameMenu) return;\n          if (event.key === \"Tab\") {\n            const valid = isValidTabEvent(event);\n            if (!valid) {\n              event.preventDefault();\n              return;\n            }\n          }\n          const keyMap = {\n            ArrowDown() {\n              send({ type: \"ARROW_DOWN\" });\n            },\n            ArrowUp() {\n              send({ type: \"ARROW_UP\" });\n            },\n            ArrowLeft() {\n              send({ type: \"ARROW_LEFT\" });\n            },\n            ArrowRight() {\n              send({ type: \"ARROW_RIGHT\" });\n            },\n            Enter() {\n              send({ type: \"ENTER\" });\n            },\n            Space(event2) {\n              if (isTypingAhead) {\n                send({ type: \"TYPEAHEAD\", key: event2.key });\n              } else {\n                keyMap.Enter?.(event2);\n              }\n            },\n            Home() {\n              send({ type: \"HOME\" });\n            },\n            End() {\n              send({ type: \"END\" });\n            }\n          };\n          const key = getEventKey(event, { dir: prop(\"dir\") });\n          const exec = keyMap[key];\n          if (exec) {\n            exec(event);\n            event.stopPropagation();\n            event.preventDefault();\n            return;\n          }\n          if (!prop(\"typeahead\")) return;\n          if (!isPrintableKey(event)) return;\n          if (isModifierKey(event)) return;\n          if (isEditableElement(target)) return;\n          send({ type: \"TYPEAHEAD\", key: event.key });\n          event.preventDefault();\n        }\n      });\n    },\n    getSeparatorProps() {\n      return normalize.element({\n        ...parts.separator.attrs,\n        role: \"separator\",\n        dir: prop(\"dir\"),\n        \"aria-orientation\": \"horizontal\"\n      });\n    },\n    getItemState,\n    getItemProps,\n    getOptionItemState,\n    getOptionItemProps(props2) {\n      const { type, disabled, closeOnSelect } = props2;\n      const option = getOptionItemProps(props2);\n      const itemState = getOptionItemState(props2);\n      return {\n        ...getItemProps(option),\n        ...normalize.element({\n          \"data-type\": type,\n          ...parts.item.attrs,\n          dir: prop(\"dir\"),\n          \"data-value\": option.value,\n          role: `menuitem${type}`,\n          \"aria-checked\": !!itemState.checked,\n          \"data-state\": itemState.checked ? \"checked\" : \"unchecked\",\n          onClick(event) {\n            if (disabled) return;\n            if (isDownloadingEvent(event)) return;\n            if (isOpeningInNewTab(event)) return;\n            const target = event.currentTarget;\n            send({ type: \"ITEM_CLICK\", target, option, closeOnSelect });\n          }\n        })\n      };\n    },\n    getItemIndicatorProps(props2) {\n      const itemState = getOptionItemState(cast(props2));\n      const dataState = itemState.checked ? \"checked\" : \"unchecked\";\n      return normalize.element({\n        ...parts.itemIndicator.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-highlighted\": dataAttr(itemState.highlighted),\n        \"data-state\": hasProp(props2, \"checked\") ? dataState : void 0,\n        hidden: hasProp(props2, \"checked\") ? !itemState.checked : void 0\n      });\n    },\n    getItemTextProps(props2) {\n      const itemState = getOptionItemState(cast(props2));\n      const dataState = itemState.checked ? \"checked\" : \"unchecked\";\n      return normalize.element({\n        ...parts.itemText.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-highlighted\": dataAttr(itemState.highlighted),\n        \"data-state\": hasProp(props2, \"checked\") ? dataState : void 0\n      });\n    },\n    getItemGroupLabelProps(props2) {\n      return normalize.element({\n        ...parts.itemGroupLabel.attrs,\n        id: getGroupLabelId(scope, props2.htmlFor),\n        dir: prop(\"dir\")\n      });\n    },\n    getItemGroupProps(props2) {\n      return normalize.element({\n        id: getGroupId(scope, props2.id),\n        ...parts.itemGroup.attrs,\n        dir: prop(\"dir\"),\n        \"aria-labelledby\": getGroupLabelId(scope, props2.id),\n        role: \"group\"\n      });\n    }\n  };\n}\nvar { not, and, or } = createGuards();\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      closeOnSelect: true,\n      typeahead: true,\n      composite: true,\n      loopFocus: false,\n      navigate(details) {\n        clickIfLink(details.node);\n      },\n      ...props2,\n      positioning: {\n        placement: \"bottom-start\",\n        gutter: 8,\n        ...props2.positioning\n      }\n    };\n  },\n  initialState({ prop }) {\n    const open = prop(\"open\") || prop(\"defaultOpen\");\n    return open ? \"open\" : \"idle\";\n  },\n  context({ bindable, prop }) {\n    return {\n      suspendPointer: bindable(() => ({\n        defaultValue: false\n      })),\n      highlightedValue: bindable(() => ({\n        defaultValue: prop(\"defaultHighlightedValue\") || null,\n        value: prop(\"highlightedValue\"),\n        onChange(value) {\n          prop(\"onHighlightChange\")?.({ highlightedValue: value });\n        }\n      })),\n      lastHighlightedValue: bindable(() => ({\n        defaultValue: null\n      })),\n      currentPlacement: bindable(() => ({\n        defaultValue: void 0\n      })),\n      intentPolygon: bindable(() => ({\n        defaultValue: null\n      })),\n      anchorPoint: bindable(() => ({\n        defaultValue: null,\n        hash(value) {\n          return `x: ${value?.x}, y: ${value?.y}`;\n        }\n      })),\n      isSubmenu: bindable(() => ({\n        defaultValue: false\n      }))\n    };\n  },\n  refs() {\n    return {\n      parent: null,\n      children: {},\n      typeaheadState: { ...getByTypeahead.defaultOptions },\n      positioningOverride: {}\n    };\n  },\n  computed: {\n    isRtl: ({ prop }) => prop(\"dir\") === \"rtl\",\n    isTypingAhead: ({ refs }) => refs.get(\"typeaheadState\").keysSoFar !== \"\",\n    highlightedId: ({ context, scope, refs }) => resolveItemId(refs.get(\"children\"), context.get(\"highlightedValue\"), scope)\n  },\n  watch({ track, action, context, prop }) {\n    track([() => context.get(\"isSubmenu\")], () => {\n      action([\"setSubmenuPlacement\"]);\n    });\n    track([() => context.hash(\"anchorPoint\")], () => {\n      if (!context.get(\"anchorPoint\")) return;\n      action([\"reposition\"]);\n    });\n    track([() => prop(\"open\")], () => {\n      action([\"toggleVisibility\"]);\n    });\n  },\n  on: {\n    \"PARENT.SET\": {\n      actions: [\"setParentMenu\"]\n    },\n    \"CHILD.SET\": {\n      actions: [\"setChildMenu\"]\n    },\n    OPEN: [\n      {\n        guard: \"isOpenControlled\",\n        actions: [\"invokeOnOpen\"]\n      },\n      {\n        target: \"open\",\n        actions: [\"invokeOnOpen\"]\n      }\n    ],\n    OPEN_AUTOFOCUS: [\n      {\n        guard: \"isOpenControlled\",\n        actions: [\"invokeOnOpen\"]\n      },\n      {\n        // internal: true,\n        target: \"open\",\n        actions: [\"highlightFirstItem\", \"invokeOnOpen\"]\n      }\n    ],\n    CLOSE: [\n      {\n        guard: \"isOpenControlled\",\n        actions: [\"invokeOnClose\"]\n      },\n      {\n        target: \"closed\",\n        actions: [\"invokeOnClose\"]\n      }\n    ],\n    \"HIGHLIGHTED.RESTORE\": {\n      actions: [\"restoreHighlightedItem\"]\n    },\n    \"HIGHLIGHTED.SET\": {\n      actions: [\"setHighlightedItem\"]\n    }\n  },\n  states: {\n    idle: {\n      tags: [\"closed\"],\n      on: {\n        \"CONTROLLED.OPEN\": {\n          target: \"open\"\n        },\n        \"CONTROLLED.CLOSE\": {\n          target: \"closed\"\n        },\n        CONTEXT_MENU_START: {\n          target: \"opening:contextmenu\",\n          actions: [\"setAnchorPoint\"]\n        },\n        CONTEXT_MENU: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"setAnchorPoint\", \"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setAnchorPoint\", \"invokeOnOpen\"]\n          }\n        ],\n        TRIGGER_CLICK: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\"]\n          }\n        ],\n        TRIGGER_FOCUS: {\n          guard: not(\"isSubmenu\"),\n          target: \"closed\"\n        },\n        TRIGGER_POINTERMOVE: {\n          guard: \"isSubmenu\",\n          target: \"opening\"\n        }\n      }\n    },\n    \"opening:contextmenu\": {\n      tags: [\"closed\"],\n      effects: [\"waitForLongPress\"],\n      on: {\n        \"CONTROLLED.OPEN\": { target: \"open\" },\n        \"CONTROLLED.CLOSE\": { target: \"closed\" },\n        CONTEXT_MENU_CANCEL: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        \"LONG_PRESS.OPEN\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\"]\n          }\n        ]\n      }\n    },\n    opening: {\n      tags: [\"closed\"],\n      effects: [\"waitForOpenDelay\"],\n      on: {\n        \"CONTROLLED.OPEN\": {\n          target: \"open\"\n        },\n        \"CONTROLLED.CLOSE\": {\n          target: \"closed\"\n        },\n        BLUR: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        TRIGGER_POINTERLEAVE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        \"DELAY.OPEN\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\"]\n          }\n        ]\n      }\n    },\n    closing: {\n      tags: [\"open\"],\n      effects: [\"trackPointerMove\", \"trackInteractOutside\", \"waitForCloseDelay\"],\n      on: {\n        \"CONTROLLED.OPEN\": {\n          target: \"open\"\n        },\n        \"CONTROLLED.CLOSE\": {\n          target: \"closed\",\n          actions: [\"focusParentMenu\", \"restoreParentHighlightedItem\"]\n        },\n        // don't invoke on open here since the menu is still open (we're only keeping it open)\n        MENU_POINTERENTER: {\n          target: \"open\",\n          actions: [\"clearIntentPolygon\"]\n        },\n        POINTER_MOVED_AWAY_FROM_SUBMENU: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"focusParentMenu\", \"restoreParentHighlightedItem\"]\n          }\n        ],\n        \"DELAY.CLOSE\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"focusParentMenu\", \"restoreParentHighlightedItem\", \"invokeOnClose\"]\n          }\n        ]\n      }\n    },\n    closed: {\n      tags: [\"closed\"],\n      entry: [\"clearHighlightedItem\", \"focusTrigger\", \"resumePointer\", \"clearAnchorPoint\"],\n      on: {\n        \"CONTROLLED.OPEN\": [\n          {\n            guard: or(\"isOpenAutoFocusEvent\", \"isArrowDownEvent\"),\n            target: \"open\",\n            actions: [\"highlightFirstItem\"]\n          },\n          {\n            guard: \"isArrowUpEvent\",\n            target: \"open\",\n            actions: [\"highlightLastItem\"]\n          },\n          {\n            target: \"open\"\n          }\n        ],\n        CONTEXT_MENU_START: {\n          target: \"opening:contextmenu\",\n          actions: [\"setAnchorPoint\"]\n        },\n        CONTEXT_MENU: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"setAnchorPoint\", \"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setAnchorPoint\", \"invokeOnOpen\"]\n          }\n        ],\n        TRIGGER_CLICK: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\"]\n          }\n        ],\n        TRIGGER_POINTERMOVE: {\n          guard: \"isTriggerItem\",\n          target: \"opening\"\n        },\n        TRIGGER_BLUR: { target: \"idle\" },\n        ARROW_DOWN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"highlightFirstItem\", \"invokeOnOpen\"]\n          }\n        ],\n        ARROW_UP: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"highlightLastItem\", \"invokeOnOpen\"]\n          }\n        ]\n      }\n    },\n    open: {\n      tags: [\"open\"],\n      effects: [\"trackInteractOutside\", \"trackPositioning\", \"scrollToHighlightedItem\"],\n      entry: [\"focusMenu\", \"resumePointer\"],\n      on: {\n        \"CONTROLLED.CLOSE\": [\n          {\n            target: \"closed\",\n            guard: \"isArrowLeftEvent\",\n            actions: [\"focusParentMenu\"]\n          },\n          {\n            target: \"closed\"\n          }\n        ],\n        TRIGGER_CLICK: [\n          {\n            guard: and(not(\"isTriggerItem\"), \"isOpenControlled\"),\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            guard: not(\"isTriggerItem\"),\n            target: \"closed\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        CONTEXT_MENU: {\n          actions: [\"setAnchorPoint\", \"focusMenu\"]\n        },\n        ARROW_UP: {\n          actions: [\"highlightPrevItem\", \"focusMenu\"]\n        },\n        ARROW_DOWN: {\n          actions: [\"highlightNextItem\", \"focusMenu\"]\n        },\n        ARROW_LEFT: [\n          {\n            guard: and(\"isSubmenu\", \"isOpenControlled\"),\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            guard: \"isSubmenu\",\n            target: \"closed\",\n            actions: [\"focusParentMenu\", \"invokeOnClose\"]\n          }\n        ],\n        HOME: {\n          actions: [\"highlightFirstItem\", \"focusMenu\"]\n        },\n        END: {\n          actions: [\"highlightLastItem\", \"focusMenu\"]\n        },\n        ARROW_RIGHT: {\n          guard: \"isTriggerItemHighlighted\",\n          actions: [\"openSubmenu\"]\n        },\n        ENTER: [\n          {\n            guard: \"isTriggerItemHighlighted\",\n            actions: [\"openSubmenu\"]\n          },\n          {\n            actions: [\"clickHighlightedItem\"]\n          }\n        ],\n        ITEM_POINTERMOVE: [\n          {\n            guard: not(\"isPointerSuspended\"),\n            actions: [\"setHighlightedItem\", \"focusMenu\", \"closeSiblingMenus\"]\n          },\n          {\n            actions: [\"setLastHighlightedItem\", \"closeSiblingMenus\"]\n          }\n        ],\n        ITEM_POINTERLEAVE: {\n          guard: and(not(\"isPointerSuspended\"), not(\"isTriggerItem\")),\n          actions: [\"clearHighlightedItem\"]\n        },\n        ITEM_CLICK: [\n          // == grouped ==\n          {\n            guard: and(\n              not(\"isTriggerItemHighlighted\"),\n              not(\"isHighlightedItemEditable\"),\n              \"closeOnSelect\",\n              \"isOpenControlled\"\n            ),\n            actions: [\"invokeOnSelect\", \"setOptionState\", \"closeRootMenu\", \"invokeOnClose\"]\n          },\n          {\n            guard: and(not(\"isTriggerItemHighlighted\"), not(\"isHighlightedItemEditable\"), \"closeOnSelect\"),\n            target: \"closed\",\n            actions: [\"invokeOnSelect\", \"setOptionState\", \"closeRootMenu\", \"invokeOnClose\"]\n          },\n          //\n          {\n            guard: and(not(\"isTriggerItemHighlighted\"), not(\"isHighlightedItemEditable\")),\n            actions: [\"invokeOnSelect\", \"setOptionState\"]\n          },\n          { actions: [\"setHighlightedItem\"] }\n        ],\n        TRIGGER_POINTERMOVE: {\n          guard: \"isTriggerItem\",\n          actions: [\"setIntentPolygon\"]\n        },\n        TRIGGER_POINTERLEAVE: {\n          target: \"closing\",\n          actions: [\"setIntentPolygon\"]\n        },\n        ITEM_POINTERDOWN: {\n          actions: [\"setHighlightedItem\"]\n        },\n        TYPEAHEAD: {\n          actions: [\"highlightMatchedItem\"]\n        },\n        FOCUS_MENU: {\n          actions: [\"focusMenu\"]\n        },\n        \"POSITIONING.SET\": {\n          actions: [\"reposition\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      closeOnSelect: ({ prop, event }) => !!(event?.closeOnSelect ?? prop(\"closeOnSelect\")),\n      // whether the trigger is also a menu item\n      isTriggerItem: ({ event }) => isTriggerItem(event.target),\n      // whether the trigger item is the active item\n      isTriggerItemHighlighted: ({ event, scope, computed }) => {\n        const target = event.target ?? scope.getById(computed(\"highlightedId\"));\n        return !!target?.hasAttribute(\"data-controls\");\n      },\n      isSubmenu: ({ context }) => context.get(\"isSubmenu\"),\n      isPointerSuspended: ({ context }) => context.get(\"suspendPointer\"),\n      isHighlightedItemEditable: ({ scope, computed }) => isEditableElement(scope.getById(computed(\"highlightedId\"))),\n      // guard assertions (for controlled mode)\n      isOpenControlled: ({ prop }) => prop(\"open\") !== void 0,\n      isArrowLeftEvent: ({ event }) => event.previousEvent?.type === \"ARROW_LEFT\",\n      isArrowUpEvent: ({ event }) => event.previousEvent?.type === \"ARROW_UP\",\n      isArrowDownEvent: ({ event }) => event.previousEvent?.type === \"ARROW_DOWN\",\n      isOpenAutoFocusEvent: ({ event }) => event.previousEvent?.type === \"OPEN_AUTOFOCUS\"\n    },\n    effects: {\n      waitForOpenDelay({ send }) {\n        const timer = setTimeout(() => {\n          send({ type: \"DELAY.OPEN\" });\n        }, 200);\n        return () => clearTimeout(timer);\n      },\n      waitForCloseDelay({ send }) {\n        const timer = setTimeout(() => {\n          send({ type: \"DELAY.CLOSE\" });\n        }, 100);\n        return () => clearTimeout(timer);\n      },\n      waitForLongPress({ send }) {\n        const timer = setTimeout(() => {\n          send({ type: \"LONG_PRESS.OPEN\" });\n        }, 700);\n        return () => clearTimeout(timer);\n      },\n      trackPositioning({ context, prop, scope, refs }) {\n        if (!!getContextTriggerEl(scope)) return;\n        const positioning = {\n          ...prop(\"positioning\"),\n          ...refs.get(\"positioningOverride\")\n        };\n        context.set(\"currentPlacement\", positioning.placement);\n        const getPositionerEl2 = () => getPositionerEl(scope);\n        return getPlacement(getTriggerEl(scope), getPositionerEl2, {\n          ...positioning,\n          defer: true,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      trackInteractOutside({ refs, scope, prop, context, send }) {\n        const getContentEl2 = () => getContentEl(scope);\n        let restoreFocus = true;\n        return trackDismissableElement(getContentEl2, {\n          type: \"menu\",\n          defer: true,\n          exclude: [getTriggerEl(scope)],\n          onInteractOutside: prop(\"onInteractOutside\"),\n          onRequestDismiss: prop(\"onRequestDismiss\"),\n          onFocusOutside(event) {\n            prop(\"onFocusOutside\")?.(event);\n            const target = getEventTarget(event.detail.originalEvent);\n            const isWithinContextTrigger = contains(getContextTriggerEl(scope), target);\n            if (isWithinContextTrigger) {\n              event.preventDefault();\n              return;\n            }\n          },\n          onEscapeKeyDown(event) {\n            prop(\"onEscapeKeyDown\")?.(event);\n            if (context.get(\"isSubmenu\")) event.preventDefault();\n            closeRootMenu({ parent: refs.get(\"parent\") });\n          },\n          onPointerDownOutside(event) {\n            prop(\"onPointerDownOutside\")?.(event);\n            const target = getEventTarget(event.detail.originalEvent);\n            const isWithinContextTrigger = contains(getContextTriggerEl(scope), target);\n            if (isWithinContextTrigger && event.detail.contextmenu) {\n              event.preventDefault();\n              return;\n            }\n            restoreFocus = !event.detail.focusable;\n          },\n          onDismiss() {\n            send({ type: \"CLOSE\", src: \"interact-outside\", restoreFocus });\n          }\n        });\n      },\n      trackPointerMove({ context, scope, send, refs, flush }) {\n        const parent = refs.get(\"parent\");\n        flush(() => {\n          parent.context.set(\"suspendPointer\", true);\n        });\n        const doc = scope.getDoc();\n        return addDomEvent(doc, \"pointermove\", (e) => {\n          const isMovingToSubmenu = isWithinPolygon(context.get(\"intentPolygon\"), {\n            x: e.clientX,\n            y: e.clientY\n          });\n          if (!isMovingToSubmenu) {\n            send({ type: \"POINTER_MOVED_AWAY_FROM_SUBMENU\" });\n            parent.context.set(\"suspendPointer\", false);\n          }\n        });\n      },\n      scrollToHighlightedItem({ event, scope, computed }) {\n        const exec = () => {\n          if (event.current().type.startsWith(\"ITEM_POINTER\")) return;\n          const itemEl = scope.getById(computed(\"highlightedId\"));\n          const contentEl2 = getContentEl(scope);\n          scrollIntoView(itemEl, { rootEl: contentEl2, block: \"nearest\" });\n        };\n        raf(() => exec());\n        const contentEl = () => getContentEl(scope);\n        return observeAttributes(contentEl, {\n          defer: true,\n          attributes: [\"aria-activedescendant\"],\n          callback: exec\n        });\n      }\n    },\n    actions: {\n      setAnchorPoint({ context, event }) {\n        context.set(\"anchorPoint\", (prev2) => isEqual(prev2, event.point) ? prev2 : event.point);\n      },\n      setSubmenuPlacement({ context, computed, refs }) {\n        if (!context.get(\"isSubmenu\")) return;\n        const placement = computed(\"isRtl\") ? \"left-start\" : \"right-start\";\n        refs.set(\"positioningOverride\", { placement, gutter: 0 });\n      },\n      reposition({ context, scope, prop, event, refs }) {\n        const getPositionerEl2 = () => getPositionerEl(scope);\n        const anchorPoint = context.get(\"anchorPoint\");\n        const getAnchorRect = anchorPoint ? () => ({ width: 0, height: 0, ...anchorPoint }) : void 0;\n        const positioning = {\n          ...prop(\"positioning\"),\n          ...refs.get(\"positioningOverride\")\n        };\n        getPlacement(getTriggerEl(scope), getPositionerEl2, {\n          ...positioning,\n          defer: true,\n          getAnchorRect,\n          ...event.options ?? {},\n          listeners: false,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      setOptionState({ event }) {\n        if (!event.option) return;\n        const { checked, onCheckedChange, type } = event.option;\n        if (type === \"radio\") {\n          onCheckedChange?.(true);\n        } else if (type === \"checkbox\") {\n          onCheckedChange?.(!checked);\n        }\n      },\n      clickHighlightedItem({ scope, computed, prop, context }) {\n        const itemEl = scope.getById(computed(\"highlightedId\"));\n        if (!itemEl || itemEl.dataset.disabled) return;\n        const highlightedValue = context.get(\"highlightedValue\");\n        if (isAnchorElement(itemEl)) {\n          prop(\"navigate\")?.({ value: highlightedValue, node: itemEl, href: itemEl.href });\n        } else {\n          queueMicrotask(() => itemEl.click());\n        }\n      },\n      setIntentPolygon({ context, scope, event }) {\n        const menu = getContentEl(scope);\n        const placement = context.get(\"currentPlacement\");\n        if (!menu || !placement) return;\n        const rect = menu.getBoundingClientRect();\n        const polygon = getElementPolygon(rect, placement);\n        if (!polygon) return;\n        const rightSide = getPlacementSide(placement) === \"right\";\n        const bleed = rightSide ? -5 : 5;\n        context.set(\"intentPolygon\", [{ ...event.point, x: event.point.x + bleed }, ...polygon]);\n      },\n      clearIntentPolygon({ context }) {\n        context.set(\"intentPolygon\", null);\n      },\n      clearAnchorPoint({ context }) {\n        context.set(\"anchorPoint\", null);\n      },\n      resumePointer({ refs, flush }) {\n        const parent = refs.get(\"parent\");\n        if (!parent) return;\n        flush(() => {\n          parent.context.set(\"suspendPointer\", false);\n        });\n      },\n      setHighlightedItem({ context, event }) {\n        const value = event.value || getItemValue(event.target);\n        context.set(\"highlightedValue\", value);\n      },\n      clearHighlightedItem({ context }) {\n        context.set(\"highlightedValue\", null);\n      },\n      focusMenu({ scope }) {\n        raf(() => {\n          const contentEl = getContentEl(scope);\n          const initialFocusEl = getInitialFocus({\n            root: contentEl,\n            enabled: !contains(contentEl, scope.getActiveElement()),\n            filter(node) {\n              return !node.role?.startsWith(\"menuitem\");\n            }\n          });\n          initialFocusEl?.focus({ preventScroll: true });\n        });\n      },\n      highlightFirstItem({ context, scope }) {\n        const fn = getContentEl(scope) ? queueMicrotask : raf;\n        fn(() => {\n          const first2 = getFirstEl(scope);\n          if (!first2) return;\n          context.set(\"highlightedValue\", getItemValue(first2));\n        });\n      },\n      highlightLastItem({ context, scope }) {\n        const fn = getContentEl(scope) ? queueMicrotask : raf;\n        fn(() => {\n          const last2 = getLastEl(scope);\n          if (!last2) return;\n          context.set(\"highlightedValue\", getItemValue(last2));\n        });\n      },\n      highlightNextItem({ context, scope, event, prop }) {\n        const next2 = getNextEl(scope, {\n          loop: event.loop,\n          value: context.get(\"highlightedValue\"),\n          loopFocus: prop(\"loopFocus\")\n        });\n        context.set(\"highlightedValue\", getItemValue(next2));\n      },\n      highlightPrevItem({ context, scope, event, prop }) {\n        const prev2 = getPrevEl(scope, {\n          loop: event.loop,\n          value: context.get(\"highlightedValue\"),\n          loopFocus: prop(\"loopFocus\")\n        });\n        context.set(\"highlightedValue\", getItemValue(prev2));\n      },\n      invokeOnSelect({ context, prop, scope }) {\n        const value = context.get(\"highlightedValue\");\n        if (value == null) return;\n        const node = getItemEl(scope, value);\n        dispatchSelectionEvent(node, value);\n        prop(\"onSelect\")?.({ value });\n      },\n      focusTrigger({ scope, context, event }) {\n        if (context.get(\"isSubmenu\") || context.get(\"anchorPoint\") || event.restoreFocus === false) return;\n        queueMicrotask(() => getTriggerEl(scope)?.focus({ preventScroll: true }));\n      },\n      highlightMatchedItem({ scope, context, event, refs }) {\n        const node = getElemByKey(scope, {\n          key: event.key,\n          value: context.get(\"highlightedValue\"),\n          typeaheadState: refs.get(\"typeaheadState\")\n        });\n        if (!node) return;\n        context.set(\"highlightedValue\", getItemValue(node));\n      },\n      setParentMenu({ refs, event, context }) {\n        refs.set(\"parent\", event.value);\n        context.set(\"isSubmenu\", true);\n      },\n      setChildMenu({ refs, event }) {\n        const children = refs.get(\"children\");\n        children[event.id] = event.value;\n        refs.set(\"children\", children);\n      },\n      closeSiblingMenus({ refs, event, scope }) {\n        const target = event.target;\n        if (!isTriggerItem(target)) return;\n        const hoveredChildId = target?.getAttribute(\"data-uid\");\n        const children = refs.get(\"children\");\n        for (const id in children) {\n          if (id === hoveredChildId) continue;\n          const child = children[id];\n          const intentPolygon = child.context.get(\"intentPolygon\");\n          if (intentPolygon && event.point && isPointInPolygon(intentPolygon, event.point)) {\n            continue;\n          }\n          getContentEl(scope)?.focus({ preventScroll: true });\n          child.send({ type: \"CLOSE\" });\n        }\n      },\n      closeRootMenu({ refs }) {\n        closeRootMenu({ parent: refs.get(\"parent\") });\n      },\n      openSubmenu({ refs, scope, computed }) {\n        const item = scope.getById(computed(\"highlightedId\"));\n        const id = item?.getAttribute(\"data-uid\");\n        const children = refs.get(\"children\");\n        const child = id ? children[id] : null;\n        child?.send({ type: \"OPEN_AUTOFOCUS\" });\n      },\n      focusParentMenu({ refs }) {\n        refs.get(\"parent\")?.send({ type: \"FOCUS_MENU\" });\n      },\n      setLastHighlightedItem({ context, event }) {\n        context.set(\"lastHighlightedValue\", getItemValue(event.target));\n      },\n      restoreHighlightedItem({ context }) {\n        if (!context.get(\"lastHighlightedValue\")) return;\n        context.set(\"highlightedValue\", context.get(\"lastHighlightedValue\"));\n        context.set(\"lastHighlightedValue\", null);\n      },\n      restoreParentHighlightedItem({ refs }) {\n        refs.get(\"parent\")?.send({ type: \"HIGHLIGHTED.RESTORE\" });\n      },\n      invokeOnOpen({ prop }) {\n        prop(\"onOpenChange\")?.({ open: true });\n      },\n      invokeOnClose({ prop }) {\n        prop(\"onOpenChange\")?.({ open: false });\n      },\n      toggleVisibility({ prop, event, send }) {\n        send({\n          type: prop(\"open\") ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\",\n          previousEvent: event\n        });\n      }\n    }\n  }\n});\nfunction closeRootMenu(ctx) {\n  let parent = ctx.parent;\n  while (parent && parent.context.get(\"isSubmenu\")) {\n    parent = parent.refs.get(\"parent\");\n  }\n  parent?.send({ type: \"CLOSE\" });\n}\nfunction isWithinPolygon(polygon, point) {\n  if (!polygon) return false;\n  return isPointInPolygon(polygon, point);\n}\nfunction resolveItemId(children, value, scope) {\n  const hasChildren = Object.keys(children).length > 0;\n  if (!value) return null;\n  if (!hasChildren) {\n    return getItemId(scope, value);\n  }\n  for (const id in children) {\n    const childMenu = children[id];\n    const childTriggerId = getTriggerId(childMenu.scope);\n    if (childTriggerId === value) {\n      return childTriggerId;\n    }\n  }\n  return getItemId(scope, value);\n}\nvar props = createProps()([\n  \"anchorPoint\",\n  \"aria-label\",\n  \"closeOnSelect\",\n  \"composite\",\n  \"defaultHighlightedValue\",\n  \"defaultOpen\",\n  \"dir\",\n  \"getRootNode\",\n  \"highlightedValue\",\n  \"id\",\n  \"ids\",\n  \"loopFocus\",\n  \"navigate\",\n  \"onEscapeKeyDown\",\n  \"onFocusOutside\",\n  \"onHighlightChange\",\n  \"onInteractOutside\",\n  \"onOpenChange\",\n  \"onPointerDownOutside\",\n  \"onRequestDismiss\",\n  \"onSelect\",\n  \"open\",\n  \"positioning\",\n  \"typeahead\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemProps = createProps()([\"closeOnSelect\", \"disabled\", \"value\", \"valueText\"]);\nvar splitItemProps = createSplitProps(itemProps);\nvar itemGroupLabelProps = createProps()([\"htmlFor\"]);\nvar splitItemGroupLabelProps = createSplitProps(itemGroupLabelProps);\nvar itemGroupProps = createProps()([\"id\"]);\nvar splitItemGroupProps = createSplitProps(itemGroupProps);\nvar optionItemProps = createProps()([\n  \"checked\",\n  \"closeOnSelect\",\n  \"disabled\",\n  \"onCheckedChange\",\n  \"type\",\n  \"value\",\n  \"valueText\"\n]);\nvar splitOptionItemProps = createSplitProps(optionItemProps);\n\nexport { anatomy, connect, itemGroupLabelProps, itemGroupProps, itemProps, machine, optionItemProps, props, splitItemGroupLabelProps, splitItemGroupProps, splitItemProps, splitOptionItemProps, splitProps };\n", "import { connect, machine, type Props, type Api } from \"@zag-js/menu\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport { Component } from \"../lib/core\";\n\nexport class Menu extends Component<Props, Api> {\n  children: Menu[] = [];\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  initMachine(props: Props): VanillaMachine<any> {\n    return new VanillaMachine(machine, props);\n  }\n\n  initApi(): Api {\n    return connect(this.machine.service, normalizeProps);\n  }\n\n  setChild(child: Menu) {\n    this.api.setChild(child.machine.service);\n    if (!this.children.includes(child)) {\n      this.children.push(child);\n    }\n  }\n\n  setParent(parent: Menu) {\n    this.api.setParent(parent.machine.service);\n  }\n\n  /**\n   * Check if an element belongs to THIS menu instance.\n   * Uses the nearest phx-hook=\"Menu\" ancestor to determine ownership.\n   */\n  private isOwnElement(el: HTMLElement): boolean {\n    const nearestHook = el.closest('[phx-hook=\"Menu\"]');\n    return nearestHook === this.el;\n  }\n\n  renderSubmenuTriggers() {\n    const contentEl = this.el.querySelector<HTMLElement>(\n      '[data-scope=\"menu\"][data-part=\"content\"]'\n    );\n    if (!contentEl) return;\n\n    const triggerItems = contentEl.querySelectorAll<HTMLElement>(\n      '[data-scope=\"menu\"][data-nested-menu]'\n    );\n\n    for (const triggerEl of triggerItems) {\n      if (!this.isOwnElement(triggerEl)) continue;\n\n      const nestedMenuId = triggerEl.dataset.nestedMenu;\n      if (!nestedMenuId) continue;\n\n      const childMenu = this.children.find(\n        (child) => child.el.id === `menu:${nestedMenuId}`\n      );\n      if (!childMenu) continue;\n\n      const applyProps = () => {\n        const triggerProps = this.api.getTriggerItemProps(childMenu.api);\n        this.spreadProps(triggerEl, triggerProps);\n      };\n\n      applyProps();\n      this.machine.subscribe(applyProps);\n      childMenu.machine.subscribe(applyProps);\n    }\n  }\n\n  render(): void {\n    const triggerEl = this.el.querySelector<HTMLElement>(\n      '[data-scope=\"menu\"][data-part=\"trigger\"]'\n    );\n    if (triggerEl) {\n      this.spreadProps(triggerEl, this.api.getTriggerProps());\n    }\n\n    const positionerEl = this.el.querySelector<HTMLElement>(\n      '[data-scope=\"menu\"][data-part=\"positioner\"]'\n    );\n    const contentEl = this.el.querySelector<HTMLElement>(\n      '[data-scope=\"menu\"][data-part=\"content\"]'\n    );\n\n    if (positionerEl && contentEl) {\n      // Always apply positioner and content props so Zag can manage visibility,\n      // keyboard handlers, aria-activedescendant, etc. across state transitions.\n      // getContentProps() includes hidden: !open which controls content visibility.\n      this.spreadProps(positionerEl, this.api.getPositionerProps());\n      this.spreadProps(contentEl, this.api.getContentProps());\n\n      // Also manage positioner hidden state for rendering optimization\n      positionerEl.hidden = !this.api.open;\n\n      if (this.api.open) {\n        // Handle menu items - only process items belonging to THIS menu\n        const items = contentEl.querySelectorAll<HTMLElement>(\n          '[data-scope=\"menu\"][data-part=\"item\"]'\n        );\n        items.forEach((itemEl) => {\n          if (!this.isOwnElement(itemEl)) return;\n\n          const value = itemEl.dataset.value;\n          if (value) {\n            const disabled = itemEl.hasAttribute(\"data-disabled\");\n            this.spreadProps(\n              itemEl,\n              this.api.getItemProps({ value, disabled: disabled || undefined })\n            );\n          }\n        });\n\n        // Handle option items (checkbox/radio)\n        const optionItems = contentEl.querySelectorAll<HTMLElement>(\n          '[data-scope=\"menu\"][data-part=\"option-item\"]'\n        );\n        optionItems.forEach((optionItemEl) => {\n          if (!this.isOwnElement(optionItemEl)) return;\n\n          const value = optionItemEl.dataset.value;\n          const type = optionItemEl.dataset.type as \"checkbox\" | \"radio\" | undefined;\n          if (value && type) {\n            const checked = optionItemEl.hasAttribute(\"data-checked\");\n            const disabled = optionItemEl.hasAttribute(\"data-disabled\");\n            this.spreadProps(\n              optionItemEl,\n              this.api.getOptionItemProps({\n                value,\n                type,\n                checked: checked,\n                disabled: disabled || undefined,\n              })\n            );\n          }\n        });\n\n        // Handle item groups\n        const itemGroups = contentEl.querySelectorAll<HTMLElement>(\n          '[data-scope=\"menu\"][data-part=\"item-group\"]'\n        );\n        itemGroups.forEach((groupEl) => {\n          if (!this.isOwnElement(groupEl)) return;\n\n          const groupId = groupEl.id;\n          if (groupId) {\n            this.spreadProps(groupEl, this.api.getItemGroupProps({ id: groupId }));\n          }\n        });\n\n        // Handle separators\n        const separators = contentEl.querySelectorAll<HTMLElement>(\n          '[data-scope=\"menu\"][data-part=\"separator\"]'\n        );\n        separators.forEach((separatorEl) => {\n          if (!this.isOwnElement(separatorEl)) return;\n          this.spreadProps(separatorEl, this.api.getSeparatorProps());\n        });\n      }\n    }\n\n    const indicatorEl = this.el.querySelector<HTMLElement>(\n      '[data-scope=\"menu\"][data-part=\"indicator\"]'\n    );\n    if (indicatorEl) {\n      this.spreadProps(indicatorEl, this.api.getIndicatorProps());\n    }\n  }\n}\n", "import type { Hook } from \"phoenix_live_view\";\nimport type { HookInterface, CallbackRef } from \"phoenix_live_view/assets/js/types/view_hook\";\nimport { Menu } from \"../components/menu\";\nimport type { SelectionDetails, OpenChangeDetails, Props } from \"@zag-js/menu\";\nimport type { Direction } from \"@zag-js/types\";\n\nimport { getString, getBoolean } from \"../lib/util\";\n\ntype MenuHookState = {\n  menu?: Menu;\n  handlers?: Array<CallbackRef>;\n  onSetOpen?: (event: Event) => void;\n  nestedMenus?: Map<string, Menu>;\n};\n\nconst MenuHook: Hook<object & MenuHookState, HTMLElement> = {\n  mounted(this: object & HookInterface<HTMLElement> & MenuHookState) {\n    const el = this.el;\n\n    if (el.hasAttribute(\"data-nested\")) {\n      return;\n    }\n\n    const menu = new Menu(\n      el,\n      {\n        id: el.id.replace(\"menu:\", \"\"),\n        ...(getBoolean(el, \"controlled\")\n          ? { open: getBoolean(el, \"open\") }\n          : { defaultOpen: getBoolean(el, \"defaultOpen\") }),\n        closeOnSelect: getBoolean(el, \"closeOnSelect\"),\n        loopFocus: getBoolean(el, \"loopFocus\"),\n        typeahead: getBoolean(el, \"typeahead\"),\n        composite: getBoolean(el, \"composite\"),\n        dir: getString<Direction>(el, \"dir\", [\"ltr\", \"rtl\"]),\n        onSelect: (details: SelectionDetails) => {\n          const redirect = getBoolean(el, \"redirect\");\n          const itemEl = [...el.querySelectorAll<HTMLElement>('[data-scope=\"menu\"][data-part=\"item\"]')].find(\n            (node) => node.getAttribute(\"data-value\") === details.value\n          );\n          const itemRedirect = itemEl?.getAttribute(\"data-redirect\");\n          const itemNewTab = itemEl?.hasAttribute(\"data-new-tab\");\n          const doRedirect =\n            redirect &&\n            details.value &&\n            !this.liveSocket.main.isConnected() &&\n            itemRedirect !== \"false\";\n          if (doRedirect) {\n            if (itemNewTab) {\n              window.open(details.value, \"_blank\", \"noopener,noreferrer\");\n            } else {\n              window.location.href = details.value;\n            }\n          }\n          const eventName = getString(el, \"onSelect\");\n          if (eventName && this.liveSocket.main.isConnected()) {\n            this.pushEvent(eventName, {\n              id: el.id,\n              value: details.value ?? null,\n            });\n          }\n\n          const eventNameClient = getString(el, \"onSelectClient\");\n          if (eventNameClient) {\n            el.dispatchEvent(\n              new CustomEvent(eventNameClient, {\n                bubbles: true,\n                detail: {\n                  id: el.id,\n                  value: details.value ?? null,\n                },\n              })\n            );\n          }\n        },\n        onOpenChange: (details: OpenChangeDetails) => {\n          const eventName = getString(el, \"onOpenChange\");\n          if (eventName && this.liveSocket.main.isConnected()) {\n            this.pushEvent(eventName, {\n              id: el.id,\n              open: details.open ?? false,\n            });\n          }\n\n          const eventNameClient = getString(el, \"onOpenChangeClient\");\n          if (eventNameClient) {\n            el.dispatchEvent(\n              new CustomEvent(eventNameClient, {\n                bubbles: true,\n                detail: {\n                  id: el.id,\n                  open: details.open ?? false,\n                },\n              })\n            );\n          }\n        },\n      }\n    );\n    menu.init();\n    this.menu = menu;\n\n    this.nestedMenus = new Map();\n    const nestedMenuElements = el.querySelectorAll<HTMLElement>(\n      '[data-scope=\"menu\"][data-nested=\"menu\"]'\n    );\n    \n    const nestedMenuInstances: Menu[] = [];\n    nestedMenuElements.forEach((nestedEl) => {\n      const nestedId = nestedEl.id;\n      if (nestedId) {\n        const nestedMenuId = nestedId.replace(\"menu:\", \"\");\n        const nestedMenu = new Menu(nestedEl, {\n          id: nestedMenuId,\n          dir: getString<Direction>(nestedEl, \"dir\", [\"ltr\", \"rtl\"]),\n          closeOnSelect: getBoolean(nestedEl, \"closeOnSelect\"),\n          loopFocus: getBoolean(nestedEl, \"loopFocus\"),\n          typeahead: getBoolean(nestedEl, \"typeahead\"),\n          composite: getBoolean(nestedEl, \"composite\"),\n        });\n        \n        nestedMenu.init();\n        this.nestedMenus?.set(nestedId, nestedMenu);\n        nestedMenuInstances.push(nestedMenu);\n      }\n    });\n    \n    setTimeout(() => {\n      nestedMenuInstances.forEach((nestedMenu) => {\n        if (this.menu) {\n          this.menu.setChild(nestedMenu);\n          nestedMenu.setParent(this.menu);\n        }\n      });\n\n      if (this.menu) {\n        this.menu.api = this.menu.initApi();\n        this.menu.render();\n      }\n      nestedMenuInstances.forEach((nestedMenu) => {\n        nestedMenu.api = nestedMenu.initApi();\n        nestedMenu.render();\n      });\n\n      if (this.menu && this.menu.children.length > 0) {\n        this.menu.renderSubmenuTriggers();\n      }\n    }, 0);\n\n    this.onSetOpen = (event: Event) => {\n      const { open } = (event as CustomEvent<{ open: boolean }>).detail;\n      menu.api.setOpen(open);\n    };\n    el.addEventListener(\"phx:menu:set-open\", this.onSetOpen);\n\n    this.handlers = [];\n\n    this.handlers.push(\n      this.handleEvent(\"menu_set_open\", (payload: { menu_id?: string; open: boolean }) => {\n        const targetId = payload.menu_id;\n        if (targetId && targetId !== el.id) return;\n        menu.api.setOpen(payload.open);\n      })\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"menu_open\", () => {\n        this.pushEvent(\"menu_open_response\", {\n          open: menu.api.open,\n        });\n      })\n    );\n  },\n\n  updated(this: object & HookInterface<HTMLElement> & MenuHookState) {\n    if (this.el.hasAttribute(\"data-nested\")) return;\n\n    this.menu?.updateProps({\n      id: this.el.id,\n      ...(getBoolean(this.el, \"controlled\")\n        ? { open: getBoolean(this.el, \"open\") }\n        : { defaultOpen: getBoolean(this.el, \"defaultOpen\") }),\n      closeOnSelect: getBoolean(this.el, \"closeOnSelect\"),\n      loopFocus: getBoolean(this.el, \"loopFocus\"),\n      typeahead: getBoolean(this.el, \"typeahead\"),\n      composite: getBoolean(this.el, \"composite\"),\n      dir: getString<Direction>(this.el, \"dir\", [\"ltr\", \"rtl\"]),\n    } as Props);\n  },\n\n  destroyed(this: object & HookInterface<HTMLElement> & MenuHookState) {\n    if (this.el.hasAttribute(\"data-nested\")) return;\n\n    if (this.onSetOpen) {\n      this.el.removeEventListener(\"phx:menu:set-open\", this.onSetOpen);\n    }\n\n    if (this.handlers) {\n      for (const handler of this.handlers) {\n        this.removeHandleEvent(handler);\n      }\n    }\n\n    if (this.nestedMenus) {\n      for (const [, nestedMenu] of this.nestedMenus) {\n        nestedMenu.destroy();\n      }\n    }\n\n    this.menu?.destroy();\n  },\n};\n\nexport { MenuHook as Menu };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { ListCollection } from '@zag-js/collection';\nimport { raf, getInitialFocus, observeAttributes, trackFormControl, getByTypeahead, scrollIntoView, contains, getEventTarget, isValidTabEvent, getEventKey, isEditableElement, visuallyHiddenStyle, dataAttr, ariaAttr } from '@zag-js/dom-query';\nimport { getPlacement, getPlacementStyles } from '@zag-js/popper';\nimport { addOrRemove, isEqual, createSplitProps, ensure } from '@zag-js/utils';\nimport { createGuards, createMachine } from '@zag-js/core';\nimport { trackDismissableElement } from '@zag-js/dismissable';\nimport { createProps } from '@zag-js/types';\n\n// src/select.anatomy.ts\nvar anatomy = createAnatomy(\"select\").parts(\n  \"label\",\n  \"positioner\",\n  \"trigger\",\n  \"indicator\",\n  \"clearTrigger\",\n  \"item\",\n  \"itemText\",\n  \"itemIndicator\",\n  \"itemGroup\",\n  \"itemGroupLabel\",\n  \"list\",\n  \"content\",\n  \"root\",\n  \"control\",\n  \"valueText\"\n);\nvar parts = anatomy.build();\nvar collection = (options) => {\n  return new ListCollection(options);\n};\ncollection.empty = () => {\n  return new ListCollection({ items: [] });\n};\n\n// src/select.dom.ts\nvar getRootId = (ctx) => ctx.ids?.root ?? `select:${ctx.id}`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `select:${ctx.id}:content`;\nvar getTriggerId = (ctx) => ctx.ids?.trigger ?? `select:${ctx.id}:trigger`;\nvar getClearTriggerId = (ctx) => ctx.ids?.clearTrigger ?? `select:${ctx.id}:clear-trigger`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `select:${ctx.id}:label`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `select:${ctx.id}:control`;\nvar getItemId = (ctx, id) => ctx.ids?.item?.(id) ?? `select:${ctx.id}:option:${id}`;\nvar getHiddenSelectId = (ctx) => ctx.ids?.hiddenSelect ?? `select:${ctx.id}:select`;\nvar getPositionerId = (ctx) => ctx.ids?.positioner ?? `select:${ctx.id}:positioner`;\nvar getItemGroupId = (ctx, id) => ctx.ids?.itemGroup?.(id) ?? `select:${ctx.id}:optgroup:${id}`;\nvar getItemGroupLabelId = (ctx, id) => ctx.ids?.itemGroupLabel?.(id) ?? `select:${ctx.id}:optgroup-label:${id}`;\nvar getHiddenSelectEl = (ctx) => ctx.getById(getHiddenSelectId(ctx));\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nvar getTriggerEl = (ctx) => ctx.getById(getTriggerId(ctx));\nvar getClearTriggerEl = (ctx) => ctx.getById(getClearTriggerId(ctx));\nvar getPositionerEl = (ctx) => ctx.getById(getPositionerId(ctx));\nvar getItemEl = (ctx, id) => {\n  if (id == null) return null;\n  return ctx.getById(getItemId(ctx, id));\n};\n\n// src/select.connect.ts\nfunction connect(service, normalize) {\n  const { context, prop, scope, state, computed, send } = service;\n  const disabled = prop(\"disabled\") || context.get(\"fieldsetDisabled\");\n  const invalid = !!prop(\"invalid\");\n  const required = !!prop(\"required\");\n  const readOnly = !!prop(\"readOnly\");\n  const composite = prop(\"composite\");\n  const collection2 = prop(\"collection\");\n  const open = state.hasTag(\"open\");\n  const focused = state.matches(\"focused\");\n  const highlightedValue = context.get(\"highlightedValue\");\n  const highlightedItem = context.get(\"highlightedItem\");\n  const selectedItems = context.get(\"selectedItems\");\n  const currentPlacement = context.get(\"currentPlacement\");\n  const isTypingAhead = computed(\"isTypingAhead\");\n  const interactive = computed(\"isInteractive\");\n  const ariaActiveDescendant = highlightedValue ? getItemId(scope, highlightedValue) : void 0;\n  function getItemState(props2) {\n    const _disabled = collection2.getItemDisabled(props2.item);\n    const value = collection2.getItemValue(props2.item);\n    ensure(value, () => `[zag-js] No value found for item ${JSON.stringify(props2.item)}`);\n    return {\n      value,\n      disabled: Boolean(disabled || _disabled),\n      highlighted: highlightedValue === value,\n      selected: context.get(\"value\").includes(value)\n    };\n  }\n  const popperStyles = getPlacementStyles({\n    ...prop(\"positioning\"),\n    placement: currentPlacement\n  });\n  return {\n    open,\n    focused,\n    empty: context.get(\"value\").length === 0,\n    highlightedItem,\n    highlightedValue,\n    selectedItems,\n    hasSelectedItems: computed(\"hasSelectedItems\"),\n    value: context.get(\"value\"),\n    valueAsString: computed(\"valueAsString\"),\n    collection: collection2,\n    multiple: !!prop(\"multiple\"),\n    disabled: !!disabled,\n    reposition(options = {}) {\n      send({ type: \"POSITIONING.SET\", options });\n    },\n    focus() {\n      getTriggerEl(scope)?.focus({ preventScroll: true });\n    },\n    setOpen(nextOpen) {\n      const open2 = state.hasTag(\"open\");\n      if (open2 === nextOpen) return;\n      send({ type: nextOpen ? \"OPEN\" : \"CLOSE\" });\n    },\n    selectValue(value) {\n      send({ type: \"ITEM.SELECT\", value });\n    },\n    setValue(value) {\n      send({ type: \"VALUE.SET\", value });\n    },\n    selectAll() {\n      send({ type: \"VALUE.SET\", value: collection2.getValues() });\n    },\n    setHighlightValue(value) {\n      send({ type: \"HIGHLIGHTED_VALUE.SET\", value });\n    },\n    clearHighlightValue() {\n      send({ type: \"HIGHLIGHTED_VALUE.CLEAR\" });\n    },\n    clearValue(value) {\n      if (value) {\n        send({ type: \"ITEM.CLEAR\", value });\n      } else {\n        send({ type: \"VALUE.CLEAR\" });\n      }\n    },\n    getItemState,\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        dir: prop(\"dir\"),\n        id: getRootId(scope),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly)\n      });\n    },\n    getLabelProps() {\n      return normalize.label({\n        dir: prop(\"dir\"),\n        id: getLabelId(scope),\n        ...parts.label.attrs,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-required\": dataAttr(required),\n        htmlFor: getHiddenSelectId(scope),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (disabled) return;\n          getTriggerEl(scope)?.focus({ preventScroll: true });\n        }\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        dir: prop(\"dir\"),\n        id: getControlId(scope),\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-focus\": dataAttr(focused),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid)\n      });\n    },\n    getValueTextProps() {\n      return normalize.element({\n        ...parts.valueText.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-focus\": dataAttr(focused)\n      });\n    },\n    getTriggerProps() {\n      return normalize.button({\n        id: getTriggerId(scope),\n        disabled,\n        dir: prop(\"dir\"),\n        type: \"button\",\n        role: \"combobox\",\n        \"aria-controls\": getContentId(scope),\n        \"aria-expanded\": open,\n        \"aria-haspopup\": \"listbox\",\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"aria-invalid\": invalid,\n        \"aria-required\": required,\n        \"aria-labelledby\": getLabelId(scope),\n        ...parts.trigger.attrs,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-placement\": currentPlacement,\n        \"data-placeholder-shown\": dataAttr(!computed(\"hasSelectedItems\")),\n        onClick(event) {\n          if (!interactive) return;\n          if (event.defaultPrevented) return;\n          send({ type: \"TRIGGER.CLICK\" });\n        },\n        onFocus() {\n          send({ type: \"TRIGGER.FOCUS\" });\n        },\n        onBlur() {\n          send({ type: \"TRIGGER.BLUR\" });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (!interactive) return;\n          const keyMap = {\n            ArrowUp() {\n              send({ type: \"TRIGGER.ARROW_UP\" });\n            },\n            ArrowDown(event2) {\n              send({ type: event2.altKey ? \"OPEN\" : \"TRIGGER.ARROW_DOWN\" });\n            },\n            ArrowLeft() {\n              send({ type: \"TRIGGER.ARROW_LEFT\" });\n            },\n            ArrowRight() {\n              send({ type: \"TRIGGER.ARROW_RIGHT\" });\n            },\n            Home() {\n              send({ type: \"TRIGGER.HOME\" });\n            },\n            End() {\n              send({ type: \"TRIGGER.END\" });\n            },\n            Enter() {\n              send({ type: \"TRIGGER.ENTER\" });\n            },\n            Space(event2) {\n              if (isTypingAhead) {\n                send({ type: \"TRIGGER.TYPEAHEAD\", key: event2.key });\n              } else {\n                send({ type: \"TRIGGER.ENTER\" });\n              }\n            }\n          };\n          const exec = keyMap[getEventKey(event, {\n            dir: prop(\"dir\"),\n            orientation: \"vertical\"\n          })];\n          if (exec) {\n            exec(event);\n            event.preventDefault();\n            return;\n          }\n          if (getByTypeahead.isValidEvent(event)) {\n            send({ type: \"TRIGGER.TYPEAHEAD\", key: event.key });\n            event.preventDefault();\n          }\n        }\n      });\n    },\n    getIndicatorProps() {\n      return normalize.element({\n        ...parts.indicator.attrs,\n        dir: prop(\"dir\"),\n        \"aria-hidden\": true,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly)\n      });\n    },\n    getItemProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        id: getItemId(scope, itemState.value),\n        role: \"option\",\n        ...parts.item.attrs,\n        dir: prop(\"dir\"),\n        \"data-value\": itemState.value,\n        \"aria-selected\": itemState.selected,\n        \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n        \"data-highlighted\": dataAttr(itemState.highlighted),\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"aria-disabled\": ariaAttr(itemState.disabled),\n        onPointerMove(event) {\n          if (itemState.disabled || event.pointerType !== \"mouse\") return;\n          if (itemState.value === highlightedValue) return;\n          send({ type: \"ITEM.POINTER_MOVE\", value: itemState.value });\n        },\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (itemState.disabled) return;\n          send({ type: \"ITEM.CLICK\", src: \"pointerup\", value: itemState.value });\n        },\n        onPointerLeave(event) {\n          if (itemState.disabled) return;\n          if (props2.persistFocus) return;\n          if (event.pointerType !== \"mouse\") return;\n          const pointerMoved = service.event.previous()?.type.includes(\"POINTER\");\n          if (!pointerMoved) return;\n          send({ type: \"ITEM.POINTER_LEAVE\" });\n        }\n      });\n    },\n    getItemTextProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        ...parts.itemText.attrs,\n        \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-highlighted\": dataAttr(itemState.highlighted)\n      });\n    },\n    getItemIndicatorProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        \"aria-hidden\": true,\n        ...parts.itemIndicator.attrs,\n        \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n        hidden: !itemState.selected\n      });\n    },\n    getItemGroupLabelProps(props2) {\n      const { htmlFor } = props2;\n      return normalize.element({\n        ...parts.itemGroupLabel.attrs,\n        id: getItemGroupLabelId(scope, htmlFor),\n        dir: prop(\"dir\"),\n        role: \"presentation\"\n      });\n    },\n    getItemGroupProps(props2) {\n      const { id } = props2;\n      return normalize.element({\n        ...parts.itemGroup.attrs,\n        \"data-disabled\": dataAttr(disabled),\n        id: getItemGroupId(scope, id),\n        \"aria-labelledby\": getItemGroupLabelId(scope, id),\n        role: \"group\",\n        dir: prop(\"dir\")\n      });\n    },\n    getClearTriggerProps() {\n      return normalize.button({\n        ...parts.clearTrigger.attrs,\n        id: getClearTriggerId(scope),\n        type: \"button\",\n        \"aria-label\": \"Clear value\",\n        \"data-invalid\": dataAttr(invalid),\n        disabled,\n        hidden: !computed(\"hasSelectedItems\"),\n        dir: prop(\"dir\"),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: \"CLEAR.CLICK\" });\n        }\n      });\n    },\n    getHiddenSelectProps() {\n      const value = context.get(\"value\");\n      const defaultValue = prop(\"multiple\") ? value : value?.[0];\n      return normalize.select({\n        name: prop(\"name\"),\n        form: prop(\"form\"),\n        disabled,\n        multiple: prop(\"multiple\"),\n        required: prop(\"required\"),\n        \"aria-hidden\": true,\n        id: getHiddenSelectId(scope),\n        defaultValue,\n        style: visuallyHiddenStyle,\n        tabIndex: -1,\n        // Some browser extensions will focus the hidden select.\n        // Let's forward the focus to the trigger.\n        onFocus() {\n          getTriggerEl(scope)?.focus({ preventScroll: true });\n        },\n        \"aria-labelledby\": getLabelId(scope)\n      });\n    },\n    getPositionerProps() {\n      return normalize.element({\n        ...parts.positioner.attrs,\n        dir: prop(\"dir\"),\n        id: getPositionerId(scope),\n        style: popperStyles.floating\n      });\n    },\n    getContentProps() {\n      return normalize.element({\n        hidden: !open,\n        dir: prop(\"dir\"),\n        id: getContentId(scope),\n        role: composite ? \"listbox\" : \"dialog\",\n        ...parts.content.attrs,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-placement\": currentPlacement,\n        \"data-activedescendant\": ariaActiveDescendant,\n        \"aria-activedescendant\": composite ? ariaActiveDescendant : void 0,\n        \"aria-multiselectable\": prop(\"multiple\") && composite ? true : void 0,\n        \"aria-labelledby\": getLabelId(scope),\n        tabIndex: 0,\n        onKeyDown(event) {\n          if (!interactive) return;\n          if (!contains(event.currentTarget, getEventTarget(event))) return;\n          if (event.key === \"Tab\") {\n            const valid = isValidTabEvent(event);\n            if (!valid) {\n              event.preventDefault();\n              return;\n            }\n          }\n          const keyMap = {\n            ArrowUp() {\n              send({ type: \"CONTENT.ARROW_UP\" });\n            },\n            ArrowDown() {\n              send({ type: \"CONTENT.ARROW_DOWN\" });\n            },\n            Home() {\n              send({ type: \"CONTENT.HOME\" });\n            },\n            End() {\n              send({ type: \"CONTENT.END\" });\n            },\n            Enter() {\n              send({ type: \"ITEM.CLICK\", src: \"keydown.enter\" });\n            },\n            Space(event2) {\n              if (isTypingAhead) {\n                send({ type: \"CONTENT.TYPEAHEAD\", key: event2.key });\n              } else {\n                keyMap.Enter?.(event2);\n              }\n            }\n          };\n          const exec = keyMap[getEventKey(event)];\n          if (exec) {\n            exec(event);\n            event.preventDefault();\n            return;\n          }\n          const target = getEventTarget(event);\n          if (isEditableElement(target)) {\n            return;\n          }\n          if (getByTypeahead.isValidEvent(event)) {\n            send({ type: \"CONTENT.TYPEAHEAD\", key: event.key });\n            event.preventDefault();\n          }\n        }\n      });\n    },\n    getListProps() {\n      return normalize.element({\n        ...parts.list.attrs,\n        tabIndex: 0,\n        role: !composite ? \"listbox\" : void 0,\n        \"aria-labelledby\": getTriggerId(scope),\n        \"aria-activedescendant\": !composite ? ariaActiveDescendant : void 0,\n        \"aria-multiselectable\": !composite && prop(\"multiple\") ? true : void 0\n      });\n    }\n  };\n}\nvar { and, not, or } = createGuards();\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      loopFocus: false,\n      closeOnSelect: !props2.multiple,\n      composite: true,\n      defaultValue: [],\n      ...props2,\n      collection: props2.collection ?? collection.empty(),\n      positioning: {\n        placement: \"bottom-start\",\n        gutter: 8,\n        ...props2.positioning\n      }\n    };\n  },\n  context({ prop, bindable }) {\n    return {\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        isEqual,\n        onChange(value) {\n          const items = prop(\"collection\").findMany(value);\n          return prop(\"onValueChange\")?.({ value, items });\n        }\n      })),\n      highlightedValue: bindable(() => ({\n        defaultValue: prop(\"defaultHighlightedValue\") || null,\n        value: prop(\"highlightedValue\"),\n        onChange(value) {\n          prop(\"onHighlightChange\")?.({\n            highlightedValue: value,\n            highlightedItem: prop(\"collection\").find(value),\n            highlightedIndex: prop(\"collection\").indexOf(value)\n          });\n        }\n      })),\n      currentPlacement: bindable(() => ({\n        defaultValue: void 0\n      })),\n      fieldsetDisabled: bindable(() => ({\n        defaultValue: false\n      })),\n      highlightedItem: bindable(() => ({\n        defaultValue: null\n      })),\n      selectedItems: bindable(() => {\n        const value = prop(\"value\") ?? prop(\"defaultValue\") ?? [];\n        const items = prop(\"collection\").findMany(value);\n        return { defaultValue: items };\n      })\n    };\n  },\n  refs() {\n    return {\n      typeahead: { ...getByTypeahead.defaultOptions }\n    };\n  },\n  computed: {\n    hasSelectedItems: ({ context }) => context.get(\"value\").length > 0,\n    isTypingAhead: ({ refs }) => refs.get(\"typeahead\").keysSoFar !== \"\",\n    isDisabled: ({ prop, context }) => !!prop(\"disabled\") || !!context.get(\"fieldsetDisabled\"),\n    isInteractive: ({ prop }) => !(prop(\"disabled\") || prop(\"readOnly\")),\n    valueAsString: ({ context, prop }) => prop(\"collection\").stringifyItems(context.get(\"selectedItems\"))\n  },\n  initialState({ prop }) {\n    const open = prop(\"open\") || prop(\"defaultOpen\");\n    return open ? \"open\" : \"idle\";\n  },\n  entry: [\"syncSelectElement\"],\n  watch({ context, prop, track, action }) {\n    track([() => context.get(\"value\").toString()], () => {\n      action([\"syncSelectedItems\", \"syncSelectElement\", \"dispatchChangeEvent\"]);\n    });\n    track([() => prop(\"open\")], () => {\n      action([\"toggleVisibility\"]);\n    });\n    track([() => context.get(\"highlightedValue\")], () => {\n      action([\"syncHighlightedItem\"]);\n    });\n    track([() => prop(\"collection\").toString()], () => {\n      action([\"syncCollection\"]);\n    });\n  },\n  on: {\n    \"HIGHLIGHTED_VALUE.SET\": {\n      actions: [\"setHighlightedItem\"]\n    },\n    \"HIGHLIGHTED_VALUE.CLEAR\": {\n      actions: [\"clearHighlightedItem\"]\n    },\n    \"ITEM.SELECT\": {\n      actions: [\"selectItem\"]\n    },\n    \"ITEM.CLEAR\": {\n      actions: [\"clearItem\"]\n    },\n    \"VALUE.SET\": {\n      actions: [\"setSelectedItems\"]\n    },\n    \"VALUE.CLEAR\": {\n      actions: [\"clearSelectedItems\"]\n    },\n    \"CLEAR.CLICK\": {\n      actions: [\"clearSelectedItems\", \"focusTriggerEl\"]\n    }\n  },\n  effects: [\"trackFormControlState\"],\n  states: {\n    idle: {\n      tags: [\"closed\"],\n      on: {\n        \"CONTROLLED.OPEN\": [\n          {\n            guard: \"isTriggerClickEvent\",\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\"]\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\", \"setInitialFocus\", \"highlightFirstSelectedItem\"]\n          }\n        ],\n        \"TRIGGER.FOCUS\": {\n          target: \"focused\"\n        },\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\"]\n          }\n        ]\n      }\n    },\n    focused: {\n      tags: [\"closed\"],\n      on: {\n        \"CONTROLLED.OPEN\": [\n          {\n            guard: \"isTriggerClickEvent\",\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\"]\n          },\n          {\n            guard: \"isTriggerArrowUpEvent\",\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"highlightComputedLastItem\"]\n          },\n          {\n            guard: or(\"isTriggerArrowDownEvent\", \"isTriggerEnterEvent\"),\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"highlightComputedFirstItem\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\"]\n          }\n        ],\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\"]\n          }\n        ],\n        \"TRIGGER.BLUR\": {\n          target: \"idle\"\n        },\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\", \"highlightFirstSelectedItem\"]\n          }\n        ],\n        \"TRIGGER.ENTER\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\", \"highlightComputedFirstItem\"]\n          }\n        ],\n        \"TRIGGER.ARROW_UP\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\", \"highlightComputedLastItem\"]\n          }\n        ],\n        \"TRIGGER.ARROW_DOWN\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\", \"highlightComputedFirstItem\"]\n          }\n        ],\n        \"TRIGGER.ARROW_LEFT\": [\n          {\n            guard: and(not(\"multiple\"), \"hasSelectedItems\"),\n            actions: [\"selectPreviousItem\"]\n          },\n          {\n            guard: not(\"multiple\"),\n            actions: [\"selectLastItem\"]\n          }\n        ],\n        \"TRIGGER.ARROW_RIGHT\": [\n          {\n            guard: and(not(\"multiple\"), \"hasSelectedItems\"),\n            actions: [\"selectNextItem\"]\n          },\n          {\n            guard: not(\"multiple\"),\n            actions: [\"selectFirstItem\"]\n          }\n        ],\n        \"TRIGGER.HOME\": {\n          guard: not(\"multiple\"),\n          actions: [\"selectFirstItem\"]\n        },\n        \"TRIGGER.END\": {\n          guard: not(\"multiple\"),\n          actions: [\"selectLastItem\"]\n        },\n        \"TRIGGER.TYPEAHEAD\": {\n          guard: not(\"multiple\"),\n          actions: [\"selectMatchingItem\"]\n        }\n      }\n    },\n    open: {\n      tags: [\"open\"],\n      exit: [\"scrollContentToTop\"],\n      effects: [\"trackDismissableElement\", \"computePlacement\", \"scrollToHighlightedItem\"],\n      on: {\n        \"CONTROLLED.CLOSE\": [\n          {\n            guard: \"restoreFocus\",\n            target: \"focused\",\n            actions: [\"focusTriggerEl\", \"clearHighlightedItem\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"clearHighlightedItem\"]\n          }\n        ],\n        CLOSE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            guard: \"restoreFocus\",\n            target: \"focused\",\n            actions: [\"invokeOnClose\", \"focusTriggerEl\", \"clearHighlightedItem\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"invokeOnClose\", \"clearHighlightedItem\"]\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"invokeOnClose\", \"clearHighlightedItem\"]\n          }\n        ],\n        \"ITEM.CLICK\": [\n          {\n            guard: and(\"closeOnSelect\", \"isOpenControlled\"),\n            actions: [\"selectHighlightedItem\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"closeOnSelect\",\n            target: \"focused\",\n            actions: [\"selectHighlightedItem\", \"invokeOnClose\", \"focusTriggerEl\", \"clearHighlightedItem\"]\n          },\n          {\n            actions: [\"selectHighlightedItem\"]\n          }\n        ],\n        \"CONTENT.HOME\": {\n          actions: [\"highlightFirstItem\"]\n        },\n        \"CONTENT.END\": {\n          actions: [\"highlightLastItem\"]\n        },\n        \"CONTENT.ARROW_DOWN\": [\n          {\n            guard: and(\"hasHighlightedItem\", \"loop\", \"isLastItemHighlighted\"),\n            actions: [\"highlightFirstItem\"]\n          },\n          {\n            guard: \"hasHighlightedItem\",\n            actions: [\"highlightNextItem\"]\n          },\n          {\n            actions: [\"highlightFirstItem\"]\n          }\n        ],\n        \"CONTENT.ARROW_UP\": [\n          {\n            guard: and(\"hasHighlightedItem\", \"loop\", \"isFirstItemHighlighted\"),\n            actions: [\"highlightLastItem\"]\n          },\n          {\n            guard: \"hasHighlightedItem\",\n            actions: [\"highlightPreviousItem\"]\n          },\n          {\n            actions: [\"highlightLastItem\"]\n          }\n        ],\n        \"CONTENT.TYPEAHEAD\": {\n          actions: [\"highlightMatchingItem\"]\n        },\n        \"ITEM.POINTER_MOVE\": {\n          actions: [\"highlightItem\"]\n        },\n        \"ITEM.POINTER_LEAVE\": {\n          actions: [\"clearHighlightedItem\"]\n        },\n        \"POSITIONING.SET\": {\n          actions: [\"reposition\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      loop: ({ prop }) => !!prop(\"loopFocus\"),\n      multiple: ({ prop }) => !!prop(\"multiple\"),\n      hasSelectedItems: ({ computed }) => !!computed(\"hasSelectedItems\"),\n      hasHighlightedItem: ({ context }) => context.get(\"highlightedValue\") != null,\n      isFirstItemHighlighted: ({ context, prop }) => context.get(\"highlightedValue\") === prop(\"collection\").firstValue,\n      isLastItemHighlighted: ({ context, prop }) => context.get(\"highlightedValue\") === prop(\"collection\").lastValue,\n      closeOnSelect: ({ prop, event }) => !!(event.closeOnSelect ?? prop(\"closeOnSelect\")),\n      restoreFocus: ({ event }) => restoreFocusFn(event),\n      // guard assertions (for controlled mode)\n      isOpenControlled: ({ prop }) => prop(\"open\") !== void 0,\n      isTriggerClickEvent: ({ event }) => event.previousEvent?.type === \"TRIGGER.CLICK\",\n      isTriggerEnterEvent: ({ event }) => event.previousEvent?.type === \"TRIGGER.ENTER\",\n      isTriggerArrowUpEvent: ({ event }) => event.previousEvent?.type === \"TRIGGER.ARROW_UP\",\n      isTriggerArrowDownEvent: ({ event }) => event.previousEvent?.type === \"TRIGGER.ARROW_DOWN\"\n    },\n    effects: {\n      trackFormControlState({ context, scope }) {\n        return trackFormControl(getHiddenSelectEl(scope), {\n          onFieldsetDisabledChange(disabled) {\n            context.set(\"fieldsetDisabled\", disabled);\n          },\n          onFormReset() {\n            const value = context.initial(\"value\");\n            context.set(\"value\", value);\n          }\n        });\n      },\n      trackDismissableElement({ scope, send, prop }) {\n        const contentEl = () => getContentEl(scope);\n        let restoreFocus = true;\n        return trackDismissableElement(contentEl, {\n          type: \"listbox\",\n          defer: true,\n          exclude: [getTriggerEl(scope), getClearTriggerEl(scope)],\n          onFocusOutside: prop(\"onFocusOutside\"),\n          onPointerDownOutside: prop(\"onPointerDownOutside\"),\n          onInteractOutside(event) {\n            prop(\"onInteractOutside\")?.(event);\n            restoreFocus = !(event.detail.focusable || event.detail.contextmenu);\n          },\n          onDismiss() {\n            send({ type: \"CLOSE\", src: \"interact-outside\", restoreFocus });\n          }\n        });\n      },\n      computePlacement({ context, prop, scope }) {\n        const positioning = prop(\"positioning\");\n        context.set(\"currentPlacement\", positioning.placement);\n        const triggerEl = () => getTriggerEl(scope);\n        const positionerEl = () => getPositionerEl(scope);\n        return getPlacement(triggerEl, positionerEl, {\n          defer: true,\n          ...positioning,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      scrollToHighlightedItem({ context, prop, scope, event }) {\n        const exec = (immediate) => {\n          const highlightedValue = context.get(\"highlightedValue\");\n          if (highlightedValue == null) return;\n          if (event.current().type.includes(\"POINTER\")) return;\n          const contentEl2 = getContentEl(scope);\n          const scrollToIndexFn = prop(\"scrollToIndexFn\");\n          if (scrollToIndexFn) {\n            const highlightedIndex = prop(\"collection\").indexOf(highlightedValue);\n            scrollToIndexFn?.({\n              index: highlightedIndex,\n              immediate,\n              getElement: () => getItemEl(scope, highlightedValue)\n            });\n            return;\n          }\n          const itemEl = getItemEl(scope, highlightedValue);\n          scrollIntoView(itemEl, { rootEl: contentEl2, block: \"nearest\" });\n        };\n        raf(() => exec(true));\n        const contentEl = () => getContentEl(scope);\n        return observeAttributes(contentEl, {\n          defer: true,\n          attributes: [\"data-activedescendant\"],\n          callback() {\n            exec(false);\n          }\n        });\n      }\n    },\n    actions: {\n      reposition({ context, prop, scope, event }) {\n        const positionerEl = () => getPositionerEl(scope);\n        getPlacement(getTriggerEl(scope), positionerEl, {\n          ...prop(\"positioning\"),\n          ...event.options,\n          defer: true,\n          listeners: false,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      toggleVisibility({ send, prop, event }) {\n        send({ type: prop(\"open\") ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\", previousEvent: event });\n      },\n      highlightPreviousItem({ context, prop }) {\n        const highlightedValue = context.get(\"highlightedValue\");\n        if (highlightedValue == null) return;\n        const value = prop(\"collection\").getPreviousValue(highlightedValue, 1, prop(\"loopFocus\"));\n        if (value == null) return;\n        context.set(\"highlightedValue\", value);\n      },\n      highlightNextItem({ context, prop }) {\n        const highlightedValue = context.get(\"highlightedValue\");\n        if (highlightedValue == null) return;\n        const value = prop(\"collection\").getNextValue(highlightedValue, 1, prop(\"loopFocus\"));\n        if (value == null) return;\n        context.set(\"highlightedValue\", value);\n      },\n      highlightFirstItem({ context, prop }) {\n        const value = prop(\"collection\").firstValue;\n        context.set(\"highlightedValue\", value);\n      },\n      highlightLastItem({ context, prop }) {\n        const value = prop(\"collection\").lastValue;\n        context.set(\"highlightedValue\", value);\n      },\n      setInitialFocus({ scope }) {\n        raf(() => {\n          const element = getInitialFocus({\n            root: getContentEl(scope)\n          });\n          element?.focus({ preventScroll: true });\n        });\n      },\n      focusTriggerEl({ event, scope }) {\n        if (!restoreFocusFn(event)) return;\n        raf(() => {\n          const element = getTriggerEl(scope);\n          element?.focus({ preventScroll: true });\n        });\n      },\n      selectHighlightedItem({ context, prop, event }) {\n        let value = event.value ?? context.get(\"highlightedValue\");\n        if (value == null || !prop(\"collection\").has(value)) return;\n        prop(\"onSelect\")?.({ value });\n        const nullable = prop(\"deselectable\") && !prop(\"multiple\") && context.get(\"value\").includes(value);\n        value = nullable ? null : value;\n        context.set(\"value\", (prev) => {\n          if (value == null) return [];\n          if (prop(\"multiple\")) return addOrRemove(prev, value);\n          return [value];\n        });\n      },\n      highlightComputedFirstItem({ context, prop, computed }) {\n        const collection2 = prop(\"collection\");\n        const value = computed(\"hasSelectedItems\") ? collection2.sort(context.get(\"value\"))[0] : collection2.firstValue;\n        context.set(\"highlightedValue\", value);\n      },\n      highlightComputedLastItem({ context, prop, computed }) {\n        const collection2 = prop(\"collection\");\n        const value = computed(\"hasSelectedItems\") ? collection2.sort(context.get(\"value\"))[0] : collection2.lastValue;\n        context.set(\"highlightedValue\", value);\n      },\n      highlightFirstSelectedItem({ context, prop, computed }) {\n        if (!computed(\"hasSelectedItems\")) return;\n        const value = prop(\"collection\").sort(context.get(\"value\"))[0];\n        context.set(\"highlightedValue\", value);\n      },\n      highlightItem({ context, event }) {\n        context.set(\"highlightedValue\", event.value);\n      },\n      highlightMatchingItem({ context, prop, event, refs }) {\n        const value = prop(\"collection\").search(event.key, {\n          state: refs.get(\"typeahead\"),\n          currentValue: context.get(\"highlightedValue\")\n        });\n        if (value == null) return;\n        context.set(\"highlightedValue\", value);\n      },\n      setHighlightedItem({ context, event }) {\n        context.set(\"highlightedValue\", event.value);\n      },\n      clearHighlightedItem({ context }) {\n        context.set(\"highlightedValue\", null);\n      },\n      selectItem({ context, prop, event }) {\n        prop(\"onSelect\")?.({ value: event.value });\n        const nullable = prop(\"deselectable\") && !prop(\"multiple\") && context.get(\"value\").includes(event.value);\n        const value = nullable ? null : event.value;\n        context.set(\"value\", (prev) => {\n          if (value == null) return [];\n          if (prop(\"multiple\")) return addOrRemove(prev, value);\n          return [value];\n        });\n      },\n      clearItem({ context, event }) {\n        context.set(\"value\", (prev) => prev.filter((v) => v !== event.value));\n      },\n      setSelectedItems({ context, event }) {\n        context.set(\"value\", event.value);\n      },\n      clearSelectedItems({ context }) {\n        context.set(\"value\", []);\n      },\n      selectPreviousItem({ context, prop }) {\n        const [firstItem] = context.get(\"value\");\n        const value = prop(\"collection\").getPreviousValue(firstItem);\n        if (value) context.set(\"value\", [value]);\n      },\n      selectNextItem({ context, prop }) {\n        const [firstItem] = context.get(\"value\");\n        const value = prop(\"collection\").getNextValue(firstItem);\n        if (value) context.set(\"value\", [value]);\n      },\n      selectFirstItem({ context, prop }) {\n        const value = prop(\"collection\").firstValue;\n        if (value) context.set(\"value\", [value]);\n      },\n      selectLastItem({ context, prop }) {\n        const value = prop(\"collection\").lastValue;\n        if (value) context.set(\"value\", [value]);\n      },\n      selectMatchingItem({ context, prop, event, refs }) {\n        const value = prop(\"collection\").search(event.key, {\n          state: refs.get(\"typeahead\"),\n          currentValue: context.get(\"value\")[0]\n        });\n        if (value == null) return;\n        context.set(\"value\", [value]);\n      },\n      scrollContentToTop({ prop, scope }) {\n        if (prop(\"scrollToIndexFn\")) {\n          const firstValue = prop(\"collection\").firstValue;\n          prop(\"scrollToIndexFn\")?.({\n            index: 0,\n            immediate: true,\n            getElement: () => getItemEl(scope, firstValue)\n          });\n        } else {\n          getContentEl(scope)?.scrollTo(0, 0);\n        }\n      },\n      invokeOnOpen({ prop, context }) {\n        prop(\"onOpenChange\")?.({ open: true, value: context.get(\"value\") });\n      },\n      invokeOnClose({ prop, context }) {\n        prop(\"onOpenChange\")?.({ open: false, value: context.get(\"value\") });\n      },\n      syncSelectElement({ context, prop, scope }) {\n        const selectEl = getHiddenSelectEl(scope);\n        if (!selectEl) return;\n        if (context.get(\"value\").length === 0 && !prop(\"multiple\")) {\n          selectEl.selectedIndex = -1;\n          return;\n        }\n        for (const option of selectEl.options) {\n          option.selected = context.get(\"value\").includes(option.value);\n        }\n      },\n      syncCollection({ context, prop }) {\n        const collection2 = prop(\"collection\");\n        const highlightedItem = collection2.find(context.get(\"highlightedValue\"));\n        if (highlightedItem) context.set(\"highlightedItem\", highlightedItem);\n        const selectedItems = collection2.findMany(context.get(\"value\"));\n        context.set(\"selectedItems\", selectedItems);\n      },\n      syncSelectedItems({ context, prop }) {\n        const collection2 = prop(\"collection\");\n        const prevSelectedItems = context.get(\"selectedItems\");\n        const value = context.get(\"value\");\n        const selectedItems = value.map((value2) => {\n          const item = prevSelectedItems.find((item2) => collection2.getItemValue(item2) === value2);\n          return item || collection2.find(value2);\n        });\n        context.set(\"selectedItems\", selectedItems);\n      },\n      syncHighlightedItem({ context, prop }) {\n        const collection2 = prop(\"collection\");\n        const highlightedValue = context.get(\"highlightedValue\");\n        const highlightedItem = highlightedValue ? collection2.find(highlightedValue) : null;\n        context.set(\"highlightedItem\", highlightedItem);\n      },\n      dispatchChangeEvent({ scope }) {\n        queueMicrotask(() => {\n          const node = getHiddenSelectEl(scope);\n          if (!node) return;\n          const win = scope.getWin();\n          const changeEvent = new win.Event(\"change\", { bubbles: true, composed: true });\n          node.dispatchEvent(changeEvent);\n        });\n      }\n    }\n  }\n});\nfunction restoreFocusFn(event) {\n  const v = event.restoreFocus ?? event.previousEvent?.restoreFocus;\n  return v == null || !!v;\n}\nvar props = createProps()([\n  \"closeOnSelect\",\n  \"collection\",\n  \"composite\",\n  \"defaultHighlightedValue\",\n  \"defaultOpen\",\n  \"defaultValue\",\n  \"deselectable\",\n  \"dir\",\n  \"disabled\",\n  \"form\",\n  \"getRootNode\",\n  \"highlightedValue\",\n  \"id\",\n  \"ids\",\n  \"invalid\",\n  \"loopFocus\",\n  \"multiple\",\n  \"name\",\n  \"onFocusOutside\",\n  \"onHighlightChange\",\n  \"onInteractOutside\",\n  \"onOpenChange\",\n  \"onPointerDownOutside\",\n  \"onSelect\",\n  \"onValueChange\",\n  \"open\",\n  \"positioning\",\n  \"readOnly\",\n  \"required\",\n  \"scrollToIndexFn\",\n  \"value\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemProps = createProps()([\"item\", \"persistFocus\"]);\nvar splitItemProps = createSplitProps(itemProps);\nvar itemGroupProps = createProps()([\"id\"]);\nvar splitItemGroupProps = createSplitProps(itemGroupProps);\nvar itemGroupLabelProps = createProps()([\"htmlFor\"]);\nvar splitItemGroupLabelProps = createSplitProps(itemGroupLabelProps);\n\nexport { anatomy, collection, connect, itemGroupLabelProps, itemGroupProps, itemProps, machine, props, splitItemGroupLabelProps, splitItemGroupProps, splitItemProps, splitProps };\n", "import * as select from \"@zag-js/select\";\nimport { collection } from \"@zag-js/select\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport { Component } from \"../lib/core\";\nimport { getString } from \"../lib/util\";\n\ntype Item = {\n  id?: string;\n  value?: string;\n  label: string;\n  disabled?: boolean;\n};\n\nexport class Select extends Component<select.Props, select.Api> {\n  private _options: Item[] = [];\n  hasGroups: boolean = false;\n  private placeholder: string = \"\";\n\n  constructor(el: HTMLElement | null, props: select.Props) {\n    super(el, props);\n    this.placeholder = getString(this.el, \"placeholder\") || \"\";\n  }\n\n  get options(): Item[] {\n    return Array.isArray(this._options) ? this._options : [];\n  }\n\n  setOptions(options: Item[]) {\n    this._options = Array.isArray(options) ? options : [];\n  }\n\n  getCollection(): any {\n    const items = this.options;\n\n    if (this.hasGroups) {\n      return collection({\n        items: items,\n        itemToValue: (item) => item.id ?? item.value ?? \"\",\n        itemToString: (item) => item.label,\n        isItemDisabled: (item) => !!item.disabled,\n        groupBy: (item: any) => item.group,\n      });\n    }\n\n    return collection({\n      items: items,\n      itemToValue: (item) => item.id ?? item.value ?? \"\",\n      itemToString: (item) => item.label,\n      isItemDisabled: (item) => !!item.disabled,\n    });\n  }\n\n  initMachine(props: select.Props): VanillaMachine<any> {\n    const self = this;\n\n    return new VanillaMachine(select.machine, {\n      ...props,\n      get collection() {\n        return self.getCollection();\n      },\n    });\n  }\n\n  initApi(): select.Api {\n    return select.connect(this.machine.service, normalizeProps);\n  }\n\n  renderItems(): void {\n    const contentEl = this.el.querySelector<HTMLElement>(\n      '[data-scope=\"select\"][data-part=\"content\"]'\n    );\n    if (!contentEl) return;\n\n    const templatesContainer =\n      this.el.querySelector<HTMLElement>('[data-templates=\"select\"]');\n    if (!templatesContainer) return;\n\n    contentEl\n      .querySelectorAll('[data-scope=\"select\"][data-part=\"item\"]:not([data-template])')\n      .forEach((el) => el.remove());\n\n    contentEl\n      .querySelectorAll('[data-scope=\"select\"][data-part=\"item-group\"]:not([data-template])')\n      .forEach((el) => el.remove());\n\n    const items = this.api.collection.items;\n\n    const groups = this.api.collection.group?.() ?? [];\n    const hasGroupsInCollection = groups.some(([group]) => group != null);\n\n    if (hasGroupsInCollection) {\n      this.renderGroupedItems(contentEl, templatesContainer, groups);\n    } else {\n      this.renderFlatItems(contentEl, templatesContainer, items);\n    }\n  }\n\n  renderGroupedItems(\n    contentEl: HTMLElement,\n    templatesContainer: HTMLElement,\n    groups: [string | null, any[]][]\n  ): void {\n    for (const [groupId, groupItems] of groups) {\n      if (groupId == null) continue;\n\n      const groupTemplate = templatesContainer.querySelector<HTMLElement>(\n        `[data-scope=\"select\"][data-part=\"item-group\"][data-id=\"${groupId}\"][data-template]`\n      );\n      if (!groupTemplate) continue;\n\n      const groupEl = groupTemplate.cloneNode(true) as HTMLElement;\n      groupEl.removeAttribute(\"data-template\");\n\n      this.spreadProps(groupEl, this.api.getItemGroupProps({ id: groupId }));\n\n      const labelEl = groupEl.querySelector<HTMLElement>(\n        '[data-scope=\"select\"][data-part=\"item-group-label\"]'\n      );\n      if (labelEl) {\n        this.spreadProps(\n          labelEl,\n          this.api.getItemGroupLabelProps({ htmlFor: groupId })\n        );\n      }\n\n      const templateItems = groupEl.querySelectorAll<HTMLElement>(\n        '[data-scope=\"select\"][data-part=\"item\"][data-template]'\n      );\n      templateItems.forEach((item) => item.remove());\n\n      for (const item of groupItems) {\n        const itemEl = this.cloneItem(templatesContainer, item);\n        if (itemEl) groupEl.appendChild(itemEl);\n      }\n\n      contentEl.appendChild(groupEl);\n    }\n  }\n\n  renderFlatItems(\n    contentEl: HTMLElement,\n    templatesContainer: HTMLElement,\n    items: any[]\n  ): void {\n    for (const item of items) {\n      const itemEl = this.cloneItem(templatesContainer, item);\n      if (itemEl) contentEl.appendChild(itemEl);\n    }\n  }\n\n  cloneItem(\n    templatesContainer: HTMLElement,\n    item: Item\n  ): HTMLElement | null {\n    const value = this.api.collection.getItemValue(item);\n    const template = templatesContainer.querySelector<HTMLElement>(\n      `[data-scope=\"select\"][data-part=\"item\"][data-value=\"${value}\"][data-template]`\n    );\n    if (!template) return null;\n\n    const el = template.cloneNode(true) as HTMLElement;\n    el.removeAttribute(\"data-template\");\n\n    this.spreadProps(el, this.api.getItemProps({ item }));\n\n    const textEl = el.querySelector<HTMLElement>(\n      '[data-scope=\"select\"][data-part=\"item-text\"]'\n    );\n    if (textEl) {\n      this.spreadProps(textEl, this.api.getItemTextProps({ item }));\n    }\n\n    const indicatorEl = el.querySelector<HTMLElement>(\n      '[data-scope=\"select\"][data-part=\"item-indicator\"]'\n    );\n    if (indicatorEl) {\n      this.spreadProps(\n        indicatorEl,\n        this.api.getItemIndicatorProps({ item })\n      );\n    }\n\n    return el;\n  }\n\n  render(): void {\n    const root =\n    this.el.querySelector<HTMLElement>('[data-scope=\"select\"][data-part=\"root\"]');\n    if (!root) return;\n    this.spreadProps(root, this.api.getRootProps());\n  \n  const hiddenSelect = this.el.querySelector<HTMLSelectElement>(\n    '[data-scope=\"select\"][data-part=\"hidden-select\"]'\n  );\n\n  const valueInput = this.el.querySelector<HTMLInputElement>(\n    '[data-scope=\"select\"][data-part=\"value-input\"]'\n  );\n  if (valueInput) {\n    if (!this.api.value || this.api.value.length === 0) {\n      valueInput.value = \"\";\n    } else if (this.api.value.length === 1) {\n      valueInput.value = String(this.api.value[0]);\n    } else {\n      valueInput.value = this.api.value.map(String).join(\",\");\n    }\n  }\n\n  if (hiddenSelect) {\n    this.spreadProps(hiddenSelect, this.api.getHiddenSelectProps());\n  }\n\n    [\n      \"label\",\n      \"control\",\n      \"trigger\",\n      \"indicator\",\n      \"clear-trigger\",\n      \"positioner\",\n    ].forEach((part) => {\n      const el = this.el.querySelector<HTMLElement>(\n        `[data-scope=\"select\"][data-part=\"${part}\"]`\n      );\n      if (!el) return;\n\n      const method =\n        \"get\" +\n        part\n          .split(\"-\")\n          .map((s) => s[0].toUpperCase() + s.slice(1))\n          .join(\"\") +\n        \"Props\";\n\n      // @ts-expect-error zag dynamic api\n      this.spreadProps(el, this.api[method]());\n    });\n\n    const valueText = this.el.querySelector<HTMLElement>(\n      '[data-scope=\"select\"][data-part=\"item-text\"]'\n    );\n    if (valueText) {\n      const valueAsString = this.api.valueAsString;\n      if (this.api.value && this.api.value.length > 0 && !valueAsString) {\n        const selectedValue = this.api.value[0];\n        const selectedItem = this.options.find((item: any) => {\n          const itemValue = item.id ?? item.value ?? \"\";\n          return String(itemValue) === String(selectedValue);\n        });\n        if (selectedItem) {\n          valueText.textContent = selectedItem.label;\n        } else {\n          valueText.textContent = this.placeholder || \"\";\n        }\n      } else {\n        valueText.textContent = valueAsString || this.placeholder || \"\";\n      }\n    }\n\n    const contentEl = this.el.querySelector<HTMLElement>(\n      '[data-scope=\"select\"][data-part=\"content\"]'\n    );\n    if (contentEl) {\n      this.spreadProps(contentEl, this.api.getContentProps());\n      this.renderItems();\n    }\n  }\n}\n\n", "import type { Hook } from \"phoenix_live_view\";\nimport type { HookInterface, CallbackRef } from \"phoenix_live_view/assets/js/types/view_hook\";\nimport { Select } from \"../components/select\";\nimport type { Props, ValueChangeDetails } from \"@zag-js/select\";\nimport type { Direction } from \"@zag-js/types\";\nimport type { PositioningOptions } from \"@zag-js/popper\";\n\nimport { getString, getBoolean, getStringList } from \"../lib/util\";\n\ntype SelectHookState = {\n  select?: Select;\n  handlers?: Array<CallbackRef>;\n  wasFocused?: boolean;\n};\n\nfunction snakeToCamel(str: string): string {\n  return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n\nfunction transformPositioningOptions(obj: any): PositioningOptions {\n  const result: any = {};\n  for (const [key, value] of Object.entries(obj)) {\n    const camelKey = snakeToCamel(key);\n    result[camelKey] = value;\n  }\n  return result as PositioningOptions;\n}\n\nconst SelectHook: Hook<object & SelectHookState, HTMLElement> = {\n  mounted(this: object & HookInterface<HTMLElement> & SelectHookState) {\n    const el = this.el;\n    const allItems = JSON.parse(el.dataset.collection || \"[]\");\n    const hasGroups = allItems.some((item: any) => item.group !== undefined);\n    let selectComponent: Select | undefined;\n    const hook = this;\n    this.wasFocused = false;\n\n    \n\n    selectComponent = new Select(el, \n      {\n        id: el.id,\n        ...(getBoolean(el, \"controlled\")\n          ? { value: getStringList(el, \"value\") }\n          : { defaultValue: getStringList(el, \"defaultValue\") }),\n        disabled: getBoolean(el, \"disabled\"),\n        closeOnSelect: getBoolean(el, \"closeOnSelect\"),\n        dir: getString<Direction>(el, \"dir\", [\"ltr\", \"rtl\"]),\n        loopFocus: getBoolean(el, \"loopFocus\"),\n        multiple: getBoolean(el, \"multiple\"),\n        invalid: getBoolean(el, \"invalid\"),\n        name: getString(el, \"name\"),\n        form: getString(el, \"form\"),\n        readOnly: getBoolean(el, \"readOnly\"),\n        required: getBoolean(el, \"required\"),\n        positioning: (() => {\n          const positioningJson = el.dataset.positioning;\n          if (positioningJson) {\n            try {\n              const parsed = JSON.parse(positioningJson);\n              return transformPositioningOptions(parsed);\n            } catch {\n              return undefined;\n            }\n          }\n          return undefined;\n        })(),\n        onValueChange: (details: ValueChangeDetails) => {\n          const redirect = getBoolean(el, \"redirect\");\n          const firstValue =\n            details.value.length > 0 ? String(details.value[0]) : null;\n          const firstItem = details.items?.length ? details.items[0] : null;\n          const itemRedirect = firstItem && typeof firstItem === \"object\" && firstItem !== null && \"redirect\" in firstItem ? (firstItem as { redirect?: boolean }).redirect : undefined;\n          const itemNewTab = firstItem && typeof firstItem === \"object\" && firstItem !== null && \"new_tab\" in firstItem ? (firstItem as { new_tab?: boolean }).new_tab : undefined;\n          const doRedirect = redirect && firstValue && hook.liveSocket.main.isDead && itemRedirect !== false;\n          const openInNewTab = itemNewTab === true;\n          if (doRedirect) {\n            if (openInNewTab) {\n              window.open(firstValue, \"_blank\", \"noopener,noreferrer\");\n            } else {\n              window.location.href = firstValue;\n            }\n          }\n          const valueInput = el.querySelector<HTMLInputElement>(\n            '[data-scope=\"select\"][data-part=\"value-input\"]'\n          );\n          if (valueInput) {\n            valueInput.value =\n              details.value.length === 0\n                ? \"\"\n                : details.value.length === 1\n                  ? String(details.value[0])\n                  : details.value.map(String).join(\",\");\n            valueInput.dispatchEvent(new Event(\"input\", { bubbles: true }));\n            valueInput.dispatchEvent(new Event(\"change\", { bubbles: true }));\n          }\n\n       \n\n          const payload: Record<string, unknown> = {\n            value: details.value,\n            items: details.items,\n            id: el.id,\n          };\n\n          const encodedJS = el.getAttribute(\"data-on-value-change-js\");\n          if (encodedJS) {\n            let js = encodedJS;\n            const indexMatches = [...js.matchAll(/__VALUE_(\\d+)__/g)].map((m) => parseInt(m[1], 10));\n            const uniqueIndices = [...new Set(indexMatches)].sort((a, b) => b - a);\n            for (const i of uniqueIndices) {\n              const val = details.value[i];\n              const str = val !== undefined && val !== null ? String(val) : \"\";\n              const escaped = JSON.stringify(str).slice(1, -1);\n              js = js.split(`__VALUE_${i}__`).join(escaped);\n            }\n            js = js.split(\"__VALUE__\").join(JSON.stringify(details.value));\n            hook.liveSocket.execJS(el, js);\n          }\n\n          const clientEventName = getString(el, \"onValueChangeClient\");\n          if (clientEventName) {\n            el.dispatchEvent(\n              new CustomEvent(clientEventName, { bubbles: true, detail: payload })\n            );\n          }\n\n          const serverEventName = getString(el, \"onValueChange\");\n          if (\n            serverEventName &&\n            !hook.liveSocket.main.isDead &&\n            hook.liveSocket.main.isConnected()\n          ) {\n            this.pushEvent(serverEventName, payload);\n          }\n        },\n      } as Props\n    );\n    selectComponent.hasGroups = hasGroups;\n    selectComponent.setOptions(allItems);\n    selectComponent.init();\n\n    this.select = selectComponent;\n    this.handlers = [];\n  },\n\n  beforeUpdate(this: object & HookInterface<HTMLElement> & SelectHookState) {\n    this.wasFocused = this.select?.api?.focused ?? false;\n  },\n\n  updated(this: object & HookInterface<HTMLElement> & SelectHookState) {\n    const newCollection = JSON.parse(this.el.dataset.collection || \"[]\");\n    const hasGroups = newCollection.some((item: any) => item.group !== undefined);\n\n    if (this.select) {\n      this.select.hasGroups = hasGroups;\n      this.select.setOptions(newCollection);\n\n      this.select.updateProps({\n        id: this.el.id,\n        ...(getBoolean(this.el, \"controlled\")\n          ? { value: getStringList(this.el, \"value\") }\n          : { defaultValue: getStringList(this.el, \"defaultValue\") }),\n        name: getString(this.el, \"name\"),\n        form: getString(this.el, \"form\"),\n        disabled: getBoolean(this.el, \"disabled\"),\n        multiple: getBoolean(this.el, \"multiple\"),\n        dir: getString<Direction>(this.el, \"dir\", [\"ltr\", \"rtl\"]),\n        invalid: getBoolean(this.el, \"invalid\"),\n        required: getBoolean(this.el, \"required\"),\n        readOnly: getBoolean(this.el, \"readOnly\"),\n      } as Props);\n      \n      if (getBoolean(this.el, \"controlled\")) {\n        if (this.wasFocused) {\n          const trigger = this.el.querySelector('[data-scope=\"select\"][data-part=\"trigger\"]') as HTMLElement;\n          if (trigger && document.activeElement !== trigger) {\n            trigger.focus();\n          }\n        }\n      }\n    }\n  },\n\n\n\n  destroyed(this: object & HookInterface<HTMLElement> & SelectHookState) {\n    if (this.handlers) {\n      for (const handler of this.handlers) {\n        this.removeHandleEvent(handler);\n      }\n    }\n\n    this.select?.destroy();\n  },\n};\n\nexport { SelectHook as Select };", "/**\n * Constants used throughout the stroke generation algorithm.\n * @internal\n */\n\nconst { PI } = Math\n\n/**\n * Rate of change for simulated pressure.\n * Controls how quickly pressure changes based on drawing velocity.\n * Higher values make pressure more responsive to speed changes.\n */\nexport const RATE_OF_PRESSURE_CHANGE = 0.275\n\n/**\n * PI with a tiny offset to fix browser rendering artifacts.\n * Some browsers render strokes incorrectly when using exact PI.\n */\nexport const FIXED_PI = PI + 0.0001\n\n/**\n * Number of segments for rounded start caps.\n */\nexport const START_CAP_SEGMENTS = 13\n\n/**\n * Number of segments for rounded end caps.\n * Higher than start caps for smoother appearance at stroke endings.\n */\nexport const END_CAP_SEGMENTS = 29\n\n/**\n * Number of segments for sharp corner caps.\n */\nexport const CORNER_CAP_SEGMENTS = 13\n\n/**\n * Pixels to skip at the end of a stroke to reduce noise.\n */\nexport const END_NOISE_THRESHOLD = 3\n\n/**\n * Minimum interpolation factor for streamline.\n * Used when streamline is at maximum (1.0).\n */\nexport const MIN_STREAMLINE_T = 0.15\n\n/**\n * Range for interpolation factor calculation.\n * Added to MIN_STREAMLINE_T based on (1 - streamline).\n */\nexport const STREAMLINE_T_RANGE = 0.85\n\n/**\n * Minimum stroke radius to prevent invisible strokes.\n */\nexport const MIN_RADIUS = 0.01\n\n/**\n * Default pressure for the first point of a stroke.\n * Lower than subsequent points to prevent fat starts,\n * since drawn lines almost always start slow.\n */\nexport const DEFAULT_FIRST_PRESSURE = 0.25\n\n/**\n * Default pressure for subsequent points when no pressure is provided.\n */\nexport const DEFAULT_PRESSURE = 0.5\n\n/**\n * Unit offset vector used as placeholder for initial vector\n * and for creating a second point when only one point is provided.\n */\nexport const UNIT_OFFSET: [number, number] = [1, 1]\n", "/**\n * Compute a radius based on the pressure.\n * @param size\n * @param thinning\n * @param pressure\n * @param easing\n * @internal\n */\nexport function getStrokeRadius(\n  size: number,\n  thinning: number,\n  pressure: number,\n  easing: (t: number) => number = (t) => t\n) {\n  return size * easing(0.5 - thinning * (0.5 - pressure))\n}\n", "import { RATE_OF_PRESSURE_CHANGE } from './constants'\n\nconst { min } = Math\n\n/**\n * Simulate pressure based on the distance between points and stroke size.\n * This creates a natural-looking pressure effect based on drawing velocity.\n *\n * @param prevPressure The previous pressure value\n * @param distance The distance from the previous point\n * @param size The base stroke size\n * @returns The simulated pressure value (0-1)\n * @internal\n */\nexport function simulatePressure(\n  prevPressure: number,\n  distance: number,\n  size: number\n): number {\n  // Speed of change - how fast should the pressure be changing?\n  const sp = min(1, distance / size)\n  // Rate of change - how much of a change is there?\n  const rp = min(1, 1 - sp)\n  // Accelerate the pressure\n  return min(\n    1,\n    prevPressure + (rp - prevPressure) * (sp * RATE_OF_PRESSURE_CHANGE)\n  )\n}\n", "import type { Vec2 } from './types'\n\n/**\n * Negate a vector.\n * @param A\n * @internal\n */\nexport function neg(A: Vec2): Vec2 {\n  return [-A[0], -A[1]]\n}\n\n/**\n * Add vectors.\n * @param A\n * @param B\n * @internal\n */\nexport function add(A: Vec2, B: Vec2): Vec2 {\n  return [A[0] + B[0], A[1] + B[1]]\n}\n\n/**\n * Add vectors into an existing output vector (allocation-free).\n * @param out Output vector to mutate\n * @param A\n * @param B\n * @internal\n */\nexport function addInto(out: Vec2, A: Vec2, B: Vec2): Vec2 {\n  out[0] = A[0] + B[0]\n  out[1] = A[1] + B[1]\n  return out\n}\n\n/**\n * Subtract vectors.\n * @param A\n * @param B\n * @internal\n */\nexport function sub(A: Vec2, B: Vec2): Vec2 {\n  return [A[0] - B[0], A[1] - B[1]]\n}\n\n/**\n * Subtract vectors into an existing output vector (allocation-free).\n * @param out Output vector to mutate\n * @param A\n * @param B\n * @internal\n */\nexport function subInto(out: Vec2, A: Vec2, B: Vec2): Vec2 {\n  out[0] = A[0] - B[0]\n  out[1] = A[1] - B[1]\n  return out\n}\n\n/**\n * Vector multiplication by scalar\n * @param A\n * @param n\n * @internal\n */\nexport function mul(A: Vec2, n: number): Vec2 {\n  return [A[0] * n, A[1] * n]\n}\n\n/**\n * Vector multiplication by scalar into an existing output vector (allocation-free).\n * @param out Output vector to mutate\n * @param A\n * @param n\n * @internal\n */\nexport function mulInto(out: Vec2, A: Vec2, n: number): Vec2 {\n  out[0] = A[0] * n\n  out[1] = A[1] * n\n  return out\n}\n\n/**\n * Vector division by scalar.\n * @param A\n * @param n\n * @internal\n */\nexport function div(A: Vec2, n: number): Vec2 {\n  return [A[0] / n, A[1] / n]\n}\n\n/**\n * Perpendicular rotation of a vector A\n * @param A\n * @internal\n */\nexport function per(A: Vec2): Vec2 {\n  return [A[1], -A[0]]\n}\n\n/**\n * Perpendicular rotation into an existing output vector (allocation-free).\n * @param out Output vector to mutate\n * @param A\n * @internal\n */\nexport function perInto(out: Vec2, A: Vec2): Vec2 {\n  const temp = A[0]\n  out[0] = A[1]\n  out[1] = -temp\n  return out\n}\n\n/**\n * Dot product\n * @param A\n * @param B\n * @internal\n */\nexport function dpr(A: Vec2, B: Vec2): number {\n  return A[0] * B[0] + A[1] * B[1]\n}\n\n/**\n * Get whether two vectors are equal.\n * @param A\n * @param B\n * @internal\n */\nexport function isEqual(A: Vec2, B: Vec2): boolean {\n  return A[0] === B[0] && A[1] === B[1]\n}\n\n/**\n * Length of the vector\n * @param A\n * @internal\n */\nexport function len(A: Vec2): number {\n  return Math.hypot(A[0], A[1])\n}\n\n/**\n * Length of the vector squared\n * @param A\n * @internal\n */\nexport function len2(A: Vec2): number {\n  return A[0] * A[0] + A[1] * A[1]\n}\n\n/**\n * Dist length from A to B squared (inlined for performance).\n * @param A\n * @param B\n * @internal\n */\nexport function dist2(A: Vec2, B: Vec2): number {\n  const dx = A[0] - B[0]\n  const dy = A[1] - B[1]\n  return dx * dx + dy * dy\n}\n\n/**\n * Get normalized / unit vector.\n * @param A\n * @internal\n */\nexport function uni(A: Vec2): Vec2 {\n  return div(A, len(A))\n}\n\n/**\n * Dist length from A to B\n * @param A\n * @param B\n * @internal\n */\nexport function dist(A: Vec2, B: Vec2): number {\n  return Math.hypot(A[1] - B[1], A[0] - B[0])\n}\n\n/**\n * Mean between two vectors or mid vector between two vectors\n * @param A\n * @param B\n * @internal\n */\nexport function med(A: Vec2, B: Vec2): Vec2 {\n  return mul(add(A, B), 0.5)\n}\n\n/**\n * Rotate a vector around another vector by r (radians)\n * @param A vector\n * @param C center\n * @param r rotation in radians\n * @internal\n */\nexport function rotAround(A: Vec2, C: Vec2, r: number): Vec2 {\n  const s = Math.sin(r)\n  const c = Math.cos(r)\n\n  const px = A[0] - C[0]\n  const py = A[1] - C[1]\n\n  const nx = px * c - py * s\n  const ny = px * s + py * c\n\n  return [nx + C[0], ny + C[1]]\n}\n\n/**\n * Rotate a vector around another vector by r (radians) into an existing output vector (allocation-free).\n * @param out Output vector to mutate\n * @param A vector\n * @param C center\n * @param r rotation in radians\n * @internal\n */\nexport function rotAroundInto(out: Vec2, A: Vec2, C: Vec2, r: number): Vec2 {\n  const s = Math.sin(r)\n  const c = Math.cos(r)\n\n  const px = A[0] - C[0]\n  const py = A[1] - C[1]\n\n  const nx = px * c - py * s\n  const ny = px * s + py * c\n\n  out[0] = nx + C[0]\n  out[1] = ny + C[1]\n  return out\n}\n\n/**\n * Interpolate vector A to B with a scalar t\n * @param A\n * @param B\n * @param t scalar\n * @internal\n */\nexport function lrp(A: Vec2, B: Vec2, t: number): Vec2 {\n  return add(A, mul(sub(B, A), t))\n}\n\n/**\n * Interpolate vector A to B with a scalar t into an existing output vector (allocation-free).\n * @param out Output vector to mutate\n * @param A\n * @param B\n * @param t scalar\n * @internal\n */\nexport function lrpInto(out: Vec2, A: Vec2, B: Vec2, t: number): Vec2 {\n  const dx = B[0] - A[0]\n  const dy = B[1] - A[1]\n  out[0] = A[0] + dx * t\n  out[1] = A[1] + dy * t\n  return out\n}\n\n/**\n * Project a point A in the direction B by a scalar c\n * @param A\n * @param B\n * @param c\n * @internal\n */\nexport function prj(A: Vec2, B: Vec2, c: number): Vec2 {\n  return add(A, mul(B, c))\n}\n\n/**\n * Project a point A in the direction B by a scalar c into an existing output vector (allocation-free).\n * @param out Output vector to mutate\n * @param A\n * @param B\n * @param c\n * @internal\n */\nexport function prjInto(out: Vec2, A: Vec2, B: Vec2, c: number): Vec2 {\n  out[0] = A[0] + B[0] * c\n  out[1] = A[1] + B[1] * c\n  return out\n}\n", "import {\n  CORNER_CAP_SEGMENTS,\n  END_CAP_SEGMENTS,\n  END_NOISE_THRESHOLD,\n  FIXED_PI,\n  MIN_RADIUS,\n  START_CAP_SEGMENTS,\n} from './constants'\nimport { getStrokeRadius } from './getStrokeRadius'\nimport { simulatePressure } from './simulatePressure'\nimport type { StrokeOptions, StrokePoint, Vec2 } from './types'\nimport {\n  add,\n  addInto,\n  dist2,\n  dpr,\n  lrpInto,\n  mul,\n  mulInto,\n  neg,\n  per,\n  perInto,\n  prj,\n  rotAround,\n  rotAroundInto,\n  sub,\n  subInto,\n  uni,\n} from './vec'\n\n// Scratch buffers for allocation-free hot loop calculations\nconst _offset: Vec2 = [0, 0]\nconst _tl: Vec2 = [0, 0]\nconst _tr: Vec2 = [0, 0]\n\n/**\n * Draw a dot (circle) for very short strokes.\n */\nfunction drawDot(center: Vec2, radius: number): Vec2[] {\n  const offsetPoint = add(center, [1, 1])\n  const start = prj(center, uni(per(sub(center, offsetPoint))), -radius)\n  const dotPts: Vec2[] = []\n  const step = 1 / START_CAP_SEGMENTS\n  for (let t = step; t <= 1; t += step) {\n    dotPts.push(rotAround(start, center, FIXED_PI * 2 * t))\n  }\n  return dotPts\n}\n\n/**\n * Draw a rounded start cap by rotating points from right to left around the start point.\n */\nfunction drawRoundStartCap(\n  center: Vec2,\n  rightPoint: Vec2,\n  segments: number\n): Vec2[] {\n  const cap: Vec2[] = []\n  const step = 1 / segments\n  for (let t = step; t <= 1; t += step) {\n    cap.push(rotAround(rightPoint, center, FIXED_PI * t))\n  }\n  return cap\n}\n\n/**\n * Draw a flat start cap with squared-off edges.\n */\nfunction drawFlatStartCap(\n  center: Vec2,\n  leftPoint: Vec2,\n  rightPoint: Vec2\n): Vec2[] {\n  const cornersVector = sub(leftPoint, rightPoint)\n  const offsetA = mul(cornersVector, 0.5)\n  const offsetB = mul(cornersVector, 0.51)\n  return [\n    sub(center, offsetA),\n    sub(center, offsetB),\n    add(center, offsetB),\n    add(center, offsetA),\n  ]\n}\n\n/**\n * Draw a rounded end cap (1.5 turns to handle sharp end turns correctly).\n */\nfunction drawRoundEndCap(\n  center: Vec2,\n  direction: Vec2,\n  radius: number,\n  segments: number\n): Vec2[] {\n  const cap: Vec2[] = []\n  const start = prj(center, direction, radius)\n  const step = 1 / segments\n  for (let t = step; t < 1; t += step) {\n    cap.push(rotAround(start, center, FIXED_PI * 3 * t))\n  }\n  return cap\n}\n\n/**\n * Draw a flat end cap with squared-off edges.\n */\nfunction drawFlatEndCap(center: Vec2, direction: Vec2, radius: number): Vec2[] {\n  return [\n    add(center, mul(direction, radius)),\n    add(center, mul(direction, radius * 0.99)),\n    sub(center, mul(direction, radius * 0.99)),\n    sub(center, mul(direction, radius)),\n  ]\n}\n\n/**\n * Compute the taper distance from a taper option value.\n * - false or undefined: no taper (0)\n * - true: taper the full length (max of size and totalLength)\n * - number: use that exact taper distance\n */\nfunction computeTaperDistance(\n  taper: boolean | number | undefined,\n  size: number,\n  totalLength: number\n): number {\n  if (taper === false || taper === undefined) return 0\n  if (taper === true) return Math.max(size, totalLength)\n  return taper\n}\n\n/**\n * Compute the initial pressure by averaging the first few points.\n * This prevents \"fat starts\" since drawn lines almost always start slow.\n */\nfunction computeInitialPressure(\n  points: StrokePoint[],\n  shouldSimulatePressure: boolean,\n  size: number\n): number {\n  return points.slice(0, 10).reduce((acc, curr) => {\n    let pressure = curr.pressure\n    if (shouldSimulatePressure) {\n      pressure = simulatePressure(acc, curr.distance, size)\n    }\n    return (acc + pressure) / 2\n  }, points[0].pressure)\n}\n\n/**\n * ## getStrokeOutlinePoints\n * @description Get an array of points (as `[x, y]`) representing the outline of a stroke.\n * @param points An array of StrokePoints as returned from `getStrokePoints`.\n * @param options (optional) An object with options.\n * @param options.size\tThe base size (diameter) of the stroke.\n * @param options.thinning The effect of pressure on the stroke's size.\n * @param options.smoothing\tHow much to soften the stroke's edges.\n * @param options.easing\tAn easing function to apply to each point's pressure.\n * @param options.simulatePressure Whether to simulate pressure based on velocity.\n * @param options.start Cap, taper and easing for the start of the line.\n * @param options.end Cap, taper and easing for the end of the line.\n * @param options.last Whether to handle the points as a completed stroke.\n */\nexport function getStrokeOutlinePoints(\n  points: StrokePoint[],\n  options: Partial<StrokeOptions> = {} as Partial<StrokeOptions>\n): Vec2[] {\n  const {\n    size = 16,\n    smoothing = 0.5,\n    thinning = 0.5,\n    simulatePressure: shouldSimulatePressure = true,\n    easing = (t) => t,\n    start = {},\n    end = {},\n    last: isComplete = false,\n  } = options\n\n  const { cap: capStart = true, easing: taperStartEase = (t) => t * (2 - t) } =\n    start\n\n  const { cap: capEnd = true, easing: taperEndEase = (t) => --t * t * t + 1 } =\n    end\n\n  // We can't do anything with an empty array or a stroke with negative size.\n  if (points.length === 0 || size <= 0) {\n    return []\n  }\n\n  // The total length of the line\n  const totalLength = points[points.length - 1].runningLength\n\n  const taperStart = computeTaperDistance(start.taper, size, totalLength)\n  const taperEnd = computeTaperDistance(end.taper, size, totalLength)\n\n  // The minimum allowed distance between points (squared)\n  const minDistance = Math.pow(size * smoothing, 2)\n\n  // Our collected left and right points\n  const leftPts: Vec2[] = []\n  const rightPts: Vec2[] = []\n\n  // Previous pressure (averaged from first few points to prevent fat starts)\n  let prevPressure = computeInitialPressure(\n    points,\n    shouldSimulatePressure,\n    size\n  )\n\n  // The current radius\n  let radius = getStrokeRadius(\n    size,\n    thinning,\n    points[points.length - 1].pressure,\n    easing\n  )\n\n  // The radius of the first saved point\n  let firstRadius: number | undefined = undefined\n\n  // Previous vector\n  let prevVector = points[0].vector\n\n  // Previous left and right points\n  let prevLeftPoint = points[0].point\n  let prevRightPoint = prevLeftPoint\n\n  // Temporary left and right points\n  let tempLeftPoint: Vec2 = prevLeftPoint\n  let tempRightPoint: Vec2 = prevRightPoint\n\n  // Keep track of whether the previous point is a sharp corner\n  // ... so that we don't detect the same corner twice\n  let isPrevPointSharpCorner = false\n\n  /*\n    Find the outline's left and right points\n\n    Iterating through the points and populate the rightPts and leftPts arrays,\n    skipping the first and last pointsm, which will get caps later on.\n  */\n\n  for (let i = 0; i < points.length; i++) {\n    let { pressure } = points[i]\n    const { point, vector, distance, runningLength } = points[i]\n    const isLastPoint = i === points.length - 1\n\n    // Removes noise from the end of the line\n    if (!isLastPoint && totalLength - runningLength < END_NOISE_THRESHOLD) {\n      continue\n    }\n\n    /*\n      Calculate the radius\n\n      If not thinning, the current point's radius will be half the size; or\n      otherwise, the size will be based on the current (real or simulated)\n      pressure.\n    */\n\n    if (thinning) {\n      if (shouldSimulatePressure) {\n        // If we're simulating pressure, then do so based on the distance\n        // between the current point and the previous point, and the size\n        // of the stroke. Otherwise, use the input pressure.\n        pressure = simulatePressure(prevPressure, distance, size)\n      }\n\n      radius = getStrokeRadius(size, thinning, pressure, easing)\n    } else {\n      radius = size / 2\n    }\n\n    if (firstRadius === undefined) {\n      firstRadius = radius\n    }\n\n    /*\n      Apply tapering\n\n      If the current length is within the taper distance at either the\n      start or the end, calculate the taper strengths. Apply the smaller\n      of the two taper strengths to the radius.\n    */\n\n    const taperStartStrength =\n      runningLength < taperStart\n        ? taperStartEase(runningLength / taperStart)\n        : 1\n\n    const taperEndStrength =\n      totalLength - runningLength < taperEnd\n        ? taperEndEase((totalLength - runningLength) / taperEnd)\n        : 1\n\n    radius = Math.max(\n      MIN_RADIUS,\n      radius * Math.min(taperStartStrength, taperEndStrength)\n    )\n\n    /* Add points to left and right */\n\n    /*\n      Handle sharp corners\n\n      Find the difference (dot product) between the current and next vector.\n      If the next vector is at more than a right angle to the current vector,\n      draw a cap at the current point.\n    */\n\n    const nextVector = (!isLastPoint ? points[i + 1] : points[i]).vector\n    const nextDpr = !isLastPoint ? dpr(vector, nextVector) : 1.0\n    const prevDpr = dpr(vector, prevVector)\n\n    const isPointSharpCorner = prevDpr < 0 && !isPrevPointSharpCorner\n    const isNextPointSharpCorner = nextDpr !== null && nextDpr < 0\n\n    if (isPointSharpCorner || isNextPointSharpCorner) {\n      // It's a sharp corner. Draw a rounded cap and move on to the next point\n      // Considering saving these and drawing them later? So that we can avoid\n      // crossing future points.\n\n      // Use mutable operations for the offset calculation\n      perInto(_offset, prevVector)\n      mulInto(_offset, _offset, radius)\n\n      const step = 1 / CORNER_CAP_SEGMENTS\n      for (let t = 0; t <= 1; t += step) {\n        // Calculate left point: rotate (point - offset) around point\n        subInto(_tl, point, _offset)\n        rotAroundInto(_tl, _tl, point, FIXED_PI * t)\n        tempLeftPoint = [_tl[0], _tl[1]]\n        leftPts.push(tempLeftPoint)\n\n        // Calculate right point: rotate (point + offset) around point\n        addInto(_tr, point, _offset)\n        rotAroundInto(_tr, _tr, point, FIXED_PI * -t)\n        tempRightPoint = [_tr[0], _tr[1]]\n        rightPts.push(tempRightPoint)\n      }\n\n      prevLeftPoint = tempLeftPoint\n      prevRightPoint = tempRightPoint\n\n      if (isNextPointSharpCorner) {\n        isPrevPointSharpCorner = true\n      }\n      continue\n    }\n\n    isPrevPointSharpCorner = false\n\n    // Handle the last point\n    if (isLastPoint) {\n      perInto(_offset, vector)\n      mulInto(_offset, _offset, radius)\n      leftPts.push(sub(point, _offset))\n      rightPts.push(add(point, _offset))\n      continue\n    }\n\n    /*\n      Add regular points\n\n      Project points to either side of the current point, using the\n      calculated size as a distance. If a point's distance to the\n      previous point on that side greater than the minimum distance\n      (or if the corner is kinda sharp), add the points to the side's\n      points array.\n    */\n\n    // Use mutable operations for offset calculation\n    lrpInto(_offset, nextVector, vector, nextDpr)\n    perInto(_offset, _offset)\n    mulInto(_offset, _offset, radius)\n\n    subInto(_tl, point, _offset)\n    tempLeftPoint = [_tl[0], _tl[1]]\n\n    if (i <= 1 || dist2(prevLeftPoint, tempLeftPoint) > minDistance) {\n      leftPts.push(tempLeftPoint)\n      prevLeftPoint = tempLeftPoint\n    }\n\n    addInto(_tr, point, _offset)\n    tempRightPoint = [_tr[0], _tr[1]]\n\n    if (i <= 1 || dist2(prevRightPoint, tempRightPoint) > minDistance) {\n      rightPts.push(tempRightPoint)\n      prevRightPoint = tempRightPoint\n    }\n\n    // Set variables for next iteration\n    prevPressure = pressure\n    prevVector = vector\n  }\n\n  /*\n    Drawing caps\n\n    Now that we have our points on either side of the line, we need to\n    draw caps at the start and end. Tapered lines don't have caps, but\n    may have dots for very short lines.\n  */\n\n  const firstPoint: Vec2 = [points[0].point[0], points[0].point[1]]\n\n  const lastPoint: Vec2 =\n    points.length > 1\n      ? [points[points.length - 1].point[0], points[points.length - 1].point[1]]\n      : add(points[0].point, [1, 1])\n\n  const startCap: Vec2[] = []\n\n  const endCap: Vec2[] = []\n\n  // Draw a dot for very short or completed strokes\n  if (points.length === 1) {\n    if (!(taperStart || taperEnd) || isComplete) {\n      return drawDot(firstPoint, firstRadius || radius)\n    }\n  } else {\n    // Draw start cap (unless tapered)\n    if (taperStart || (taperEnd && points.length === 1)) {\n      // The start point is tapered, noop\n    } else if (capStart) {\n      startCap.push(\n        ...drawRoundStartCap(firstPoint, rightPts[0], START_CAP_SEGMENTS)\n      )\n    } else {\n      startCap.push(...drawFlatStartCap(firstPoint, leftPts[0], rightPts[0]))\n    }\n\n    // Draw end cap (unless tapered)\n    const direction = per(neg(points[points.length - 1].vector))\n\n    if (taperEnd || (taperStart && points.length === 1)) {\n      // Tapered end - push the last point to the line\n      endCap.push(lastPoint)\n    } else if (capEnd) {\n      endCap.push(\n        ...drawRoundEndCap(lastPoint, direction, radius, END_CAP_SEGMENTS)\n      )\n    } else {\n      endCap.push(...drawFlatEndCap(lastPoint, direction, radius))\n    }\n  }\n\n  /*\n    Return the points in the correct winding order: begin on the left side, then\n    continue around the end cap, then come back along the right side, and finally\n    complete the start cap.\n  */\n\n  return leftPts.concat(endCap, rightPts.reverse(), startCap)\n}\n", "import {\n  DEFAULT_FIRST_PRESSURE,\n  DEFAULT_PRESSURE,\n  MIN_STREAMLINE_T,\n  STREAMLINE_T_RANGE,\n  UNIT_OFFSET,\n} from './constants'\nimport type { StrokeOptions, StrokePoint, Vec2 } from './types'\nimport { add, dist, isEqual, lrp, subInto, uni } from './vec'\n\n// Scratch buffer for allocation-free vector calculation in hot loop\nconst _vectorDiff: Vec2 = [0, 0]\n\n/**\n * Check if a pressure value is valid (defined and non-negative).\n * Returns false for undefined, NaN, and negative values.\n */\nfunction isValidPressure(pressure: number | undefined): pressure is number {\n  return pressure != null && pressure >= 0\n}\n\n/**\n * ## getStrokePoints\n * @description Get an array of points as objects with an adjusted point, pressure, vector, distance, and runningLength.\n * @param points An array of points (as `[x, y, pressure]` or `{x, y, pressure}`). Pressure is optional in both cases.\n * @param options (optional) An object with options.\n * @param options.size\tThe base size (diameter) of the stroke.\n * @param options.thinning The effect of pressure on the stroke's size.\n * @param options.smoothing\tHow much to soften the stroke's edges.\n * @param options.easing\tAn easing function to apply to each point's pressure.\n * @param options.simulatePressure Whether to simulate pressure based on velocity.\n * @param options.start Cap, taper and easing for the start of the line.\n * @param options.end Cap, taper and easing for the end of the line.\n * @param options.last Whether to handle the points as a completed stroke.\n */\nexport function getStrokePoints<\n  T extends number[],\n  K extends { x: number; y: number; pressure?: number },\n>(points: (T | K)[], options = {} as StrokeOptions): StrokePoint[] {\n  const { streamline = 0.5, size = 16, last: isComplete = false } = options\n\n  // If we don't have any points, return an empty array.\n  if (points.length === 0) return []\n\n  // Find the interpolation level between points.\n  const t = MIN_STREAMLINE_T + (1 - streamline) * STREAMLINE_T_RANGE\n\n  // Whatever the input is, make sure that the points are in number[][].\n  let pts = Array.isArray(points[0])\n    ? (points as T[])\n    : (points as K[]).map(({ x, y, pressure = DEFAULT_PRESSURE }) => [\n        x,\n        y,\n        pressure,\n      ])\n\n  // Add extra points between the two, to help avoid \"dash\" lines\n  // for strokes with tapered start and ends. Don't mutate the\n  // input array!\n  if (pts.length === 2) {\n    const last = pts[1]\n    pts = pts.slice(0, -1)\n    for (let i = 1; i < 5; i++) {\n      pts.push(lrp(pts[0] as Vec2, last as Vec2, i / 4))\n    }\n  }\n\n  // If there's only one point, add another point at a 1pt offset.\n  // Don't mutate the input array!\n  if (pts.length === 1) {\n    pts = [...pts, [...add(pts[0] as Vec2, UNIT_OFFSET), ...pts[0].slice(2)]]\n  }\n\n  // The strokePoints array will hold the points for the stroke.\n  // Start it out with the first point, which needs no adjustment.\n  const strokePoints: StrokePoint[] = [\n    {\n      point: [pts[0][0], pts[0][1]],\n      pressure: isValidPressure(pts[0][2]) ? pts[0][2] : DEFAULT_FIRST_PRESSURE,\n      vector: [...UNIT_OFFSET],\n      distance: 0,\n      runningLength: 0,\n    },\n  ]\n\n  // A flag to see whether we've already reached out minimum length\n  let hasReachedMinimumLength = false\n\n  // We use the runningLength to keep track of the total distance\n  let runningLength = 0\n\n  // We're set this to the latest point, so we can use it to calculate\n  // the distance and vector of the next point.\n  let prev = strokePoints[0]\n\n  const max = pts.length - 1\n\n  // Iterate through all of the points, creating StrokePoints.\n  for (let i = 1; i < pts.length; i++) {\n    const point: Vec2 =\n      isComplete && i === max\n        ? // If we're at the last point, and `options.last` is true,\n          // then add the actual input point.\n          [pts[i][0], pts[i][1]]\n        : // Otherwise, using the t calculated from the streamline\n          // option, interpolate a new point between the previous\n          // point the current point.\n          lrp(prev.point, pts[i] as Vec2, t)\n\n    // If the new point is the same as the previous point, skip ahead.\n    if (isEqual(prev.point, point)) continue\n\n    // How far is the new point from the previous point?\n    const distance = dist(point, prev.point)\n\n    // Add this distance to the total \"running length\" of the line.\n    runningLength += distance\n\n    // At the start of the line, we wait until the new point is a\n    // certain distance away from the original point, to avoid noise\n    if (i < max && !hasReachedMinimumLength) {\n      if (runningLength < size) continue\n      hasReachedMinimumLength = true\n      // TODO: Backfill the missing points so that tapering works correctly.\n    }\n    // Create a new strokepoint (it will be the new \"previous\" one).\n    // Use scratch buffer for vector difference to reduce allocations\n    subInto(_vectorDiff, prev.point, point)\n    prev = {\n      // The adjusted point\n      point,\n      // The input pressure (or default if not specified)\n      pressure: isValidPressure(pts[i][2]) ? pts[i][2] : DEFAULT_PRESSURE,\n      // The vector from the current point to the previous point\n      vector: uni(_vectorDiff),\n      // The distance between the current point and the previous point\n      distance,\n      // The total distance so far\n      runningLength,\n    }\n\n    // Push it to the strokePoints array.\n    strokePoints.push(prev)\n  }\n\n  // Set the vector of the first point to be the same as the second point.\n  strokePoints[0].vector = strokePoints[1]?.vector || [0, 0]\n\n  return strokePoints\n}\n", "import type { StrokeOptions, Vec2 } from './types'\nimport { getStrokeOutlinePoints } from './getStrokeOutlinePoints'\nimport { getStrokePoints } from './getStrokePoints'\n\n/**\n * ## getStroke\n * @description Get an array of points describing a polygon that surrounds the input points.\n * @param points An array of points (as `[x, y, pressure]` or `{x, y, pressure}`). Pressure is optional in both cases.\n * @param options (optional) An object with options.\n * @param options.size\tThe base size (diameter) of the stroke.\n * @param options.thinning The effect of pressure on the stroke's size.\n * @param options.smoothing\tHow much to soften the stroke's edges.\n * @param options.easing\tAn easing function to apply to each point's pressure.\n * @param options.simulatePressure Whether to simulate pressure based on velocity.\n * @param options.start Cap, taper and easing for the start of the line.\n * @param options.end Cap, taper and easing for the end of the line.\n * @param options.last Whether to handle the points as a completed stroke.\n */\n\nexport function getStroke(\n  points: (number[] | { x: number; y: number; pressure?: number })[],\n  options: StrokeOptions = {} as StrokeOptions\n): Vec2[] {\n  return getStrokeOutlinePoints(getStrokePoints(points, options), options)\n}\n", "import { getStroke } from './getStroke'\n\nexport default getStroke\n\nexport * from './getStrokeOutlinePoints'\nexport * from './getStrokePoints'\nexport * from './getStroke'\nexport * from './types'\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { trackPointerMove, getRelativePoint, getDataUrl as getDataUrl$1, query, dataAttr, isLeftClick, isModifierKey, getEventTarget } from '@zag-js/dom-query';\nimport { createMachine } from '@zag-js/core';\nimport getStroke from 'perfect-freehand';\nimport { createProps } from '@zag-js/types';\nimport { createSplitProps } from '@zag-js/utils';\n\n// src/signature-pad.anatomy.ts\nvar anatomy = createAnatomy(\"signature-pad\").parts(\n  \"root\",\n  \"control\",\n  \"segment\",\n  \"segmentPath\",\n  \"guide\",\n  \"clearTrigger\",\n  \"label\"\n);\nvar parts = anatomy.build();\nvar getRootId = (ctx) => ctx.ids?.root ?? `signature-${ctx.id}`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `signature-control-${ctx.id}`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `signature-label-${ctx.id}`;\nvar getHiddenInputId = (ctx) => ctx.ids?.hiddenInput ?? `signature-input-${ctx.id}`;\nvar getControlEl = (ctx) => ctx.getById(getControlId(ctx));\nvar getSegmentEl = (ctx) => query(getControlEl(ctx), \"[data-part=segment]\");\nvar getDataUrl = (ctx, options) => {\n  return getDataUrl$1(getSegmentEl(ctx), options);\n};\n\n// src/signature-pad.connect.ts\nfunction connect(service, normalize) {\n  const { state, send, prop, computed, context, scope } = service;\n  const drawing = state.matches(\"drawing\");\n  const empty = computed(\"isEmpty\");\n  const interactive = computed(\"isInteractive\");\n  const disabled = !!prop(\"disabled\");\n  const required = !!prop(\"required\");\n  const translations = prop(\"translations\");\n  return {\n    empty,\n    drawing,\n    currentPath: context.get(\"currentPath\"),\n    paths: context.get(\"paths\"),\n    clear() {\n      send({ type: \"CLEAR\" });\n    },\n    getDataUrl(type, quality) {\n      if (computed(\"isEmpty\")) return Promise.resolve(\"\");\n      return getDataUrl(scope, { type, quality });\n    },\n    getLabelProps() {\n      return normalize.label({\n        ...parts.label.attrs,\n        id: getLabelId(scope),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-required\": dataAttr(required),\n        htmlFor: getHiddenInputId(scope),\n        onClick(event) {\n          if (!interactive) return;\n          if (event.defaultPrevented) return;\n          const controlEl = getControlEl(scope);\n          controlEl?.focus({ preventScroll: true });\n        }\n      });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        \"data-disabled\": dataAttr(disabled),\n        id: getRootId(scope)\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        tabIndex: disabled ? void 0 : 0,\n        id: getControlId(scope),\n        role: \"application\",\n        \"aria-roledescription\": \"signature pad\",\n        \"aria-label\": translations.control,\n        \"aria-disabled\": disabled,\n        \"data-disabled\": dataAttr(disabled),\n        onPointerDown(event) {\n          if (!isLeftClick(event)) return;\n          if (isModifierKey(event)) return;\n          if (!interactive) return;\n          const target = getEventTarget(event);\n          if (target?.closest(\"[data-part=clear-trigger]\")) return;\n          event.currentTarget.setPointerCapture(event.pointerId);\n          const point = { x: event.clientX, y: event.clientY };\n          const controlEl = getControlEl(scope);\n          if (!controlEl) return;\n          const { offset } = getRelativePoint(point, controlEl);\n          send({ type: \"POINTER_DOWN\", point: offset, pressure: event.pressure });\n        },\n        onPointerUp(event) {\n          if (!interactive) return;\n          if (event.currentTarget.hasPointerCapture(event.pointerId)) {\n            event.currentTarget.releasePointerCapture(event.pointerId);\n          }\n        },\n        style: {\n          position: \"relative\",\n          touchAction: \"none\",\n          userSelect: \"none\",\n          WebkitUserSelect: \"none\"\n        }\n      });\n    },\n    getSegmentProps() {\n      return normalize.svg({\n        ...parts.segment.attrs,\n        style: {\n          position: \"absolute\",\n          top: 0,\n          left: 0,\n          width: \"100%\",\n          height: \"100%\",\n          pointerEvents: \"none\",\n          fill: prop(\"drawing\").fill\n        }\n      });\n    },\n    getSegmentPathProps(props2) {\n      return normalize.path({\n        ...parts.segmentPath.attrs,\n        d: props2.path\n      });\n    },\n    getGuideProps() {\n      return normalize.element({\n        ...parts.guide.attrs,\n        \"data-disabled\": dataAttr(disabled)\n      });\n    },\n    getClearTriggerProps() {\n      return normalize.button({\n        ...parts.clearTrigger.attrs,\n        type: \"button\",\n        \"aria-label\": translations.clearTrigger,\n        hidden: !context.get(\"paths\").length || drawing,\n        disabled,\n        onClick() {\n          send({ type: \"CLEAR\" });\n        }\n      });\n    },\n    getHiddenInputProps(props2) {\n      return normalize.input({\n        id: getHiddenInputId(scope),\n        type: \"text\",\n        hidden: true,\n        disabled,\n        required: prop(\"required\"),\n        readOnly: true,\n        name: prop(\"name\"),\n        value: props2.value\n      });\n    }\n  };\n}\n\n// src/get-svg-path.ts\nvar average = (a, b) => (a + b) / 2;\nfunction getSvgPathFromStroke(points, closed = true) {\n  const len = points.length;\n  if (len < 4) {\n    return \"\";\n  }\n  let a = points[0];\n  let b = points[1];\n  const c = points[2];\n  let result = `M${a[0].toFixed(2)},${a[1].toFixed(2)} Q${b[0].toFixed(2)},${b[1].toFixed(2)} ${average(b[0], c[0]).toFixed(2)},${average(\n    b[1],\n    c[1]\n  ).toFixed(2)} T`;\n  for (let i = 2, max = len - 1; i < max; i++) {\n    a = points[i];\n    b = points[i + 1];\n    result += `${average(a[0], b[0]).toFixed(2)},${average(a[1], b[1]).toFixed(2)} `;\n  }\n  if (closed) {\n    result += \"Z\";\n  }\n  return result;\n}\n\n// src/signature-pad.machine.ts\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      defaultPaths: [],\n      ...props2,\n      drawing: {\n        size: 2,\n        simulatePressure: false,\n        thinning: 0.7,\n        smoothing: 0.4,\n        streamline: 0.6,\n        ...props2.drawing\n      },\n      translations: {\n        control: \"signature pad\",\n        clearTrigger: \"clear signature\",\n        ...props2.translations\n      }\n    };\n  },\n  initialState() {\n    return \"idle\";\n  },\n  context({ prop, bindable }) {\n    return {\n      paths: bindable(() => ({\n        defaultValue: prop(\"defaultPaths\"),\n        value: prop(\"paths\"),\n        sync: true,\n        onChange(value) {\n          prop(\"onDraw\")?.({ paths: value });\n        }\n      })),\n      currentPoints: bindable(() => ({\n        defaultValue: []\n      })),\n      currentPath: bindable(() => ({\n        defaultValue: null\n      }))\n    };\n  },\n  computed: {\n    isInteractive: ({ prop }) => !(prop(\"disabled\") || prop(\"readOnly\")),\n    isEmpty: ({ context }) => context.get(\"paths\").length === 0\n  },\n  on: {\n    CLEAR: {\n      actions: [\"clearPoints\", \"invokeOnDrawEnd\", \"focusCanvasEl\"]\n    }\n  },\n  states: {\n    idle: {\n      on: {\n        POINTER_DOWN: {\n          target: \"drawing\",\n          actions: [\"addPoint\"]\n        }\n      }\n    },\n    drawing: {\n      effects: [\"trackPointerMove\"],\n      on: {\n        POINTER_MOVE: {\n          actions: [\"addPoint\", \"invokeOnDraw\"]\n        },\n        POINTER_UP: {\n          target: \"idle\",\n          actions: [\"endStroke\", \"invokeOnDrawEnd\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    effects: {\n      trackPointerMove({ scope, send }) {\n        const doc = scope.getDoc();\n        return trackPointerMove(doc, {\n          onPointerMove({ event, point }) {\n            const controlEl = getControlEl(scope);\n            if (!controlEl) return;\n            const { offset } = getRelativePoint(point, controlEl);\n            send({ type: \"POINTER_MOVE\", point: offset, pressure: event.pressure });\n          },\n          onPointerUp() {\n            send({ type: \"POINTER_UP\" });\n          }\n        });\n      }\n    },\n    actions: {\n      addPoint({ context, event, prop }) {\n        const nextPoints = [...context.get(\"currentPoints\"), event.point];\n        context.set(\"currentPoints\", nextPoints);\n        const stroke = getStroke(nextPoints, prop(\"drawing\"));\n        context.set(\"currentPath\", getSvgPathFromStroke(stroke));\n      },\n      endStroke({ context }) {\n        const nextPaths = [...context.get(\"paths\"), context.get(\"currentPath\")];\n        context.set(\"paths\", nextPaths);\n        context.set(\"currentPoints\", []);\n        context.set(\"currentPath\", null);\n      },\n      clearPoints({ context }) {\n        context.set(\"currentPoints\", []);\n        context.set(\"paths\", []);\n        context.set(\"currentPath\", null);\n      },\n      focusCanvasEl({ scope }) {\n        queueMicrotask(() => {\n          scope.getActiveElement()?.focus({ preventScroll: true });\n        });\n      },\n      invokeOnDraw({ context, prop }) {\n        prop(\"onDraw\")?.({\n          paths: [...context.get(\"paths\"), context.get(\"currentPath\")]\n        });\n      },\n      invokeOnDrawEnd({ context, prop, scope, computed }) {\n        prop(\"onDrawEnd\")?.({\n          paths: [...context.get(\"paths\")],\n          getDataUrl(type, quality = 0.92) {\n            if (computed(\"isEmpty\")) return Promise.resolve(\"\");\n            return getDataUrl(scope, { type, quality });\n          }\n        });\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"defaultPaths\",\n  \"dir\",\n  \"disabled\",\n  \"drawing\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"name\",\n  \"onDraw\",\n  \"onDrawEnd\",\n  \"paths\",\n  \"readOnly\",\n  \"required\",\n  \"translations\"\n]);\nvar splitProps = createSplitProps(props);\n\nexport { anatomy, connect, machine, props, splitProps };\n", "import { connect, machine } from \"@zag-js/signature-pad\";\n\nimport type { Props, Api } from \"@zag-js/signature-pad\";\n\nimport { Component } from \"../lib/core\";\nimport { normalizeProps, VanillaMachine } from \"@zag-js/vanilla\";\n\nexport class SignaturePad extends Component<Props, Api> {\n  imageURL: string = \"\";\n  paths: any[] = [];\n  name?: string;\n\n  initMachine(props: Props): VanillaMachine<any> {\n    this.name = (props as any).name;\n    return new VanillaMachine(machine, props);\n  }\n\n  setName(name: string) {\n    this.name = name;\n  }\n\n  setPaths(paths: any[]) {\n    this.paths = paths;\n  }\n\n  initApi() {\n    return connect(this.machine.service, normalizeProps);\n  }\n\n  syncPaths = () => {\n    const segment = this.el.querySelector<SVGSVGElement>('[data-scope=\"signature-pad\"][data-part=\"segment\"]');\n    if (!segment) return;\n\n    const totalPaths = this.api.paths.length + (this.api.currentPath ? 1 : 0);\n\n    if (totalPaths === 0) {\n      segment.innerHTML = \"\";\n      this.imageURL = \"\";\n      this.paths = [];\n      const hiddenInput = this.el.querySelector<HTMLInputElement>('[data-scope=\"signature-pad\"][data-part=\"hidden-input\"]');\n      if (hiddenInput) hiddenInput.value = \"\";\n      return;\n    }\n\n    segment.innerHTML = \"\";\n\n    this.api.paths.forEach((pathData) => {\n      const pathEl = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n      pathEl.setAttribute(\"data-scope\", \"signature-pad\");\n      pathEl.setAttribute(\"data-part\", \"path\");\n      this.spreadProps(pathEl, this.api.getSegmentPathProps({ path: pathData }));\n      segment.appendChild(pathEl);\n    });\n\n    if (this.api.currentPath) {\n      const currentPathEl = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n      currentPathEl.setAttribute(\"data-scope\", \"signature-pad\");\n      currentPathEl.setAttribute(\"data-part\", \"current-path\");\n      this.spreadProps(currentPathEl, this.api.getSegmentPathProps({ path: this.api.currentPath }));\n      segment.appendChild(currentPathEl);\n    }\n  };\n\n  render() {\n    const rootEl = this.el.querySelector<HTMLElement>('[data-scope=\"signature-pad\"][data-part=\"root\"]');\n    if (!rootEl) return;\n    this.spreadProps(rootEl, this.api.getRootProps());\n\n    const label = rootEl.querySelector<HTMLElement>('[data-scope=\"signature-pad\"][data-part=\"label\"]');\n    if (label) this.spreadProps(label, this.api.getLabelProps());\n\n    const control = rootEl.querySelector<HTMLElement>('[data-scope=\"signature-pad\"][data-part=\"control\"]');\n    if (control) this.spreadProps(control, this.api.getControlProps());\n\n    const segment = rootEl.querySelector<SVGSVGElement>('[data-scope=\"signature-pad\"][data-part=\"segment\"]');\n    if (segment) this.spreadProps(segment, this.api.getSegmentProps());\n\n    const guide = rootEl.querySelector<SVGRectElement | HTMLElement>('[data-scope=\"signature-pad\"][data-part=\"guide\"]');\n    if (guide) this.spreadProps(guide, this.api.getGuideProps());\n\n    const clearBtn = rootEl.querySelector<HTMLElement>('[data-scope=\"signature-pad\"][data-part=\"clear-trigger\"]');\n    if (clearBtn) {\n      this.spreadProps(clearBtn, this.api.getClearTriggerProps());\n      const hasPaths = this.api.paths.length > 0 || !!this.api.currentPath;\n      clearBtn.hidden = !hasPaths;\n    }\n\n    const hiddenInput = rootEl.querySelector<HTMLInputElement>('[data-scope=\"signature-pad\"][data-part=\"hidden-input\"]');\n    if (hiddenInput) {\n      const pathsForValue = this.paths.length > 0 ? this.paths : this.api.paths;\n      if (this.paths.length === 0 && this.api.paths.length > 0) {\n        this.paths = [...this.api.paths];\n      }\n      const pathsValue = pathsForValue.length > 0 ? JSON.stringify(pathsForValue) : \"\";\n      this.spreadProps(hiddenInput, this.api.getHiddenInputProps({ value: pathsValue }));\n      if (this.name) {\n        hiddenInput.name = this.name;\n      }\n      hiddenInput.value = pathsValue;\n    }\n\n    this.syncPaths();\n  }\n}\n", "import type { Hook } from \"phoenix_live_view\";\nimport type { HookInterface, CallbackRef } from \"phoenix_live_view/assets/js/types/view_hook\";\nimport { SignaturePad } from \"../components/signature-pad\";\nimport type { Props } from \"@zag-js/signature-pad\";\n\nimport { getString, getBoolean, getNumber } from \"../lib/util\";\n\nfunction getPaths(el: HTMLElement, attr: string): any[] {\n  const value = el.dataset[attr];\n  if (!value) return [];\n  try {\n    return JSON.parse(value);\n  } catch {\n    return [];\n  }\n}\n\nfunction buildDrawingOptions(el: HTMLElement): Props[\"drawing\"] {\n  return {\n    fill: getString(el, \"drawingFill\") || \"black\",\n    size: getNumber(el, \"drawingSize\") ?? 2,\n    simulatePressure: getBoolean(el, \"drawingSimulatePressure\"),\n    smoothing: getNumber(el, \"drawingSmoothing\") ?? 0.5,\n    thinning: getNumber(el, \"drawingThinning\") ?? 0.7,\n    streamline: getNumber(el, \"drawingStreamline\") ?? 0.65,\n  };\n}\n\ntype SignaturePadHookState = {\n  signaturePad?: SignaturePad;\n  handlers?: Array<CallbackRef>;\n  onClear?: (event: Event) => void;\n};\n\nconst SignaturePadHook: Hook<object & SignaturePadHookState, HTMLElement> = {\n  mounted(this: object & HookInterface<HTMLElement> & SignaturePadHookState) {\n    const el = this.el;\n    const pushEvent = this.pushEvent.bind(this);\n\n    const controlled = getBoolean(el, \"controlled\");\n    const paths = getPaths(el, \"paths\");\n    const defaultPaths = getPaths(el, \"defaultPaths\");\n\n    const signaturePad = new SignaturePad(el, {\n      id: el.id,\n      name: getString(el, \"name\"),\n      ...(controlled && paths.length > 0 ? { paths: paths } : undefined),\n      ...(!controlled && defaultPaths.length > 0 ? { defaultPaths: defaultPaths } : undefined),\n      drawing: buildDrawingOptions(el),\n      onDrawEnd: (details) => {\n        signaturePad.setPaths(details.paths);\n        const hiddenInput = el.querySelector<HTMLInputElement>('[data-scope=\"signature-pad\"][data-part=\"hidden-input\"]');\n        if (hiddenInput) {\n          hiddenInput.value = JSON.stringify(details.paths);\n        }\n\n        details.getDataUrl(\"image/png\").then((url) => {\n          signaturePad.imageURL = url;\n\n          const eventName = getString(el, \"onDrawEnd\");\n          if (eventName && this.liveSocket.main.isConnected()) {\n            pushEvent(eventName, {\n              id: el.id,\n              paths: details.paths,\n              url: url,\n            });\n          }\n\n          const eventNameClient = getString(el, \"onDrawEndClient\");\n          if (eventNameClient) {\n            el.dispatchEvent(\n              new CustomEvent(eventNameClient, {\n                bubbles: true,\n                detail: {\n                  id: el.id,\n                  paths: details.paths,\n                  url: url,\n                },\n              })\n            );\n          }\n        });\n      },\n    } as Props);\n    signaturePad.init();\n    this.signaturePad = signaturePad;\n\n    const initialPaths = controlled ? paths : defaultPaths;\n    if (initialPaths.length > 0) {\n      const hiddenInput = el.querySelector<HTMLInputElement>('[data-scope=\"signature-pad\"][data-part=\"hidden-input\"]');\n      if (hiddenInput) {\n        hiddenInput.dispatchEvent(new Event(\"input\", { bubbles: true }));\n        hiddenInput.dispatchEvent(new Event(\"change\", { bubbles: true }));\n      }\n    }\n\n    this.onClear = (event: Event) => {\n      const { id: targetId } = (event as CustomEvent<{ id: string }>).detail;\n      if (targetId && targetId !== el.id) return;\n      signaturePad.api.clear();\n      signaturePad.imageURL = \"\";\n      signaturePad.setPaths([]);\n      const hiddenInput = el.querySelector<HTMLInputElement>('[data-scope=\"signature-pad\"][data-part=\"hidden-input\"]');\n      if (hiddenInput) {\n        hiddenInput.value = \"\";\n      }\n    };\n    el.addEventListener(\"phx:signature-pad:clear\", this.onClear);\n\n    this.handlers = [];\n\n    this.handlers.push(\n      this.handleEvent(\"signature_pad_clear\", (payload: { signature_pad_id?: string }) => {\n        const targetId = payload.signature_pad_id;\n        if (targetId && targetId !== el.id) return;\n        signaturePad.api.clear();\n        signaturePad.imageURL = \"\";\n        signaturePad.setPaths([]);\n        const hiddenInput = el.querySelector<HTMLInputElement>('[data-scope=\"signature-pad\"][data-part=\"hidden-input\"]');\n        if (hiddenInput) {\n          hiddenInput.value = \"\";\n        }\n      })\n    );\n\n  },\n\n  updated(this: object & HookInterface<HTMLElement> & SignaturePadHookState) {\n    const controlled = getBoolean(this.el, \"controlled\");\n    const paths = getPaths(this.el, \"paths\");\n    const defaultPaths = getPaths(this.el, \"defaultPaths\");\n    const name = getString(this.el, \"name\");\n    \n    if (name) {\n      this.signaturePad?.setName(name);\n    }\n    \n    this.signaturePad?.updateProps({\n      id: this.el.id,\n      name: name,\n      ...(controlled && paths.length > 0 ? { paths: paths } : {}),\n      ...(!controlled && defaultPaths.length > 0 ? { defaultPaths: defaultPaths } : {}),\n      drawing: buildDrawingOptions(this.el),\n    } as Props);\n  },\n\n  destroyed(this: object & HookInterface<HTMLElement> & SignaturePadHookState) {\n    if (this.onClear) {\n      this.el.removeEventListener(\"phx:signature-pad:clear\", this.onClear);\n    }\n\n    if (this.handlers) {\n      for (const handler of this.handlers) {\n        this.removeHandleEvent(handler);\n      }\n    }\n\n    this.signaturePad?.destroy();\n  },\n};\n\nexport { SignaturePadHook as SignaturePad };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { dispatchInputCheckedEvent, setElementChecked, trackFormControl, trackPress, dataAttr, visuallyHiddenStyle, getEventTarget, isSafari } from '@zag-js/dom-query';\nimport { trackFocusVisible, isFocusVisible } from '@zag-js/focus-visible';\nimport { createGuards, createMachine } from '@zag-js/core';\nimport { createProps } from '@zag-js/types';\nimport { createSplitProps } from '@zag-js/utils';\n\n// src/switch.anatomy.ts\nvar anatomy = createAnatomy(\"switch\").parts(\"root\", \"label\", \"control\", \"thumb\");\nvar parts = anatomy.build();\n\n// src/switch.dom.ts\nvar getRootId = (ctx) => ctx.ids?.root ?? `switch:${ctx.id}`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `switch:${ctx.id}:label`;\nvar getThumbId = (ctx) => ctx.ids?.thumb ?? `switch:${ctx.id}:thumb`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `switch:${ctx.id}:control`;\nvar getHiddenInputId = (ctx) => ctx.ids?.hiddenInput ?? `switch:${ctx.id}:input`;\nvar getRootEl = (ctx) => ctx.getById(getRootId(ctx));\nvar getHiddenInputEl = (ctx) => ctx.getById(getHiddenInputId(ctx));\n\n// src/switch.connect.ts\nfunction connect(service, normalize) {\n  const { context, send, prop, scope } = service;\n  const disabled = !!prop(\"disabled\");\n  const readOnly = !!prop(\"readOnly\");\n  const required = !!prop(\"required\");\n  const checked = !!context.get(\"checked\");\n  const focused = !disabled && context.get(\"focused\");\n  const focusVisible = !disabled && context.get(\"focusVisible\");\n  const active = !disabled && context.get(\"active\");\n  const dataAttrs = {\n    \"data-active\": dataAttr(active),\n    \"data-focus\": dataAttr(focused),\n    \"data-focus-visible\": dataAttr(focusVisible),\n    \"data-readonly\": dataAttr(readOnly),\n    \"data-hover\": dataAttr(context.get(\"hovered\")),\n    \"data-disabled\": dataAttr(disabled),\n    \"data-state\": checked ? \"checked\" : \"unchecked\",\n    \"data-invalid\": dataAttr(prop(\"invalid\")),\n    \"data-required\": dataAttr(required)\n  };\n  return {\n    checked,\n    disabled,\n    focused,\n    setChecked(checked2) {\n      send({ type: \"CHECKED.SET\", checked: checked2, isTrusted: false });\n    },\n    toggleChecked() {\n      send({ type: \"CHECKED.TOGGLE\", checked, isTrusted: false });\n    },\n    getRootProps() {\n      return normalize.label({\n        ...parts.root.attrs,\n        ...dataAttrs,\n        dir: prop(\"dir\"),\n        id: getRootId(scope),\n        htmlFor: getHiddenInputId(scope),\n        onPointerMove() {\n          if (disabled) return;\n          send({ type: \"CONTEXT.SET\", context: { hovered: true } });\n        },\n        onPointerLeave() {\n          if (disabled) return;\n          send({ type: \"CONTEXT.SET\", context: { hovered: false } });\n        },\n        onClick(event) {\n          if (disabled) return;\n          const target = getEventTarget(event);\n          if (target === getHiddenInputEl(scope)) {\n            event.stopPropagation();\n          }\n          if (isSafari()) {\n            getHiddenInputEl(scope)?.focus();\n          }\n        }\n      });\n    },\n    getLabelProps() {\n      return normalize.element({\n        ...parts.label.attrs,\n        ...dataAttrs,\n        dir: prop(\"dir\"),\n        id: getLabelId(scope)\n      });\n    },\n    getThumbProps() {\n      return normalize.element({\n        ...parts.thumb.attrs,\n        ...dataAttrs,\n        dir: prop(\"dir\"),\n        id: getThumbId(scope),\n        \"aria-hidden\": true\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        ...dataAttrs,\n        dir: prop(\"dir\"),\n        id: getControlId(scope),\n        \"aria-hidden\": true\n      });\n    },\n    getHiddenInputProps() {\n      return normalize.input({\n        id: getHiddenInputId(scope),\n        type: \"checkbox\",\n        required: prop(\"required\"),\n        defaultChecked: checked,\n        disabled,\n        \"aria-labelledby\": getLabelId(scope),\n        \"aria-invalid\": prop(\"invalid\"),\n        name: prop(\"name\"),\n        form: prop(\"form\"),\n        value: prop(\"value\"),\n        style: visuallyHiddenStyle,\n        onFocus() {\n          const focusVisible2 = isFocusVisible();\n          send({ type: \"CONTEXT.SET\", context: { focused: true, focusVisible: focusVisible2 } });\n        },\n        onBlur() {\n          send({ type: \"CONTEXT.SET\", context: { focused: false, focusVisible: false } });\n        },\n        onClick(event) {\n          if (readOnly) {\n            event.preventDefault();\n            return;\n          }\n          const checked2 = event.currentTarget.checked;\n          send({ type: \"CHECKED.SET\", checked: checked2, isTrusted: true });\n        }\n      });\n    }\n  };\n}\nvar { not } = createGuards();\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      defaultChecked: false,\n      label: \"switch\",\n      value: \"on\",\n      ...props2\n    };\n  },\n  initialState() {\n    return \"ready\";\n  },\n  context({ prop, bindable }) {\n    return {\n      checked: bindable(() => ({\n        defaultValue: prop(\"defaultChecked\"),\n        value: prop(\"checked\"),\n        onChange(value) {\n          prop(\"onCheckedChange\")?.({ checked: value });\n        }\n      })),\n      fieldsetDisabled: bindable(() => ({\n        defaultValue: false\n      })),\n      focusVisible: bindable(() => ({\n        defaultValue: false\n      })),\n      active: bindable(() => ({\n        defaultValue: false\n      })),\n      focused: bindable(() => ({\n        defaultValue: false\n      })),\n      hovered: bindable(() => ({\n        defaultValue: false\n      }))\n    };\n  },\n  computed: {\n    isDisabled: ({ context, prop }) => prop(\"disabled\") || context.get(\"fieldsetDisabled\")\n  },\n  watch({ track, prop, context, action }) {\n    track([() => prop(\"disabled\")], () => {\n      action([\"removeFocusIfNeeded\"]);\n    });\n    track([() => context.get(\"checked\")], () => {\n      action([\"syncInputElement\"]);\n    });\n  },\n  effects: [\"trackFormControlState\", \"trackPressEvent\", \"trackFocusVisible\"],\n  on: {\n    \"CHECKED.TOGGLE\": [\n      {\n        guard: not(\"isTrusted\"),\n        actions: [\"toggleChecked\", \"dispatchChangeEvent\"]\n      },\n      {\n        actions: [\"toggleChecked\"]\n      }\n    ],\n    \"CHECKED.SET\": [\n      {\n        guard: not(\"isTrusted\"),\n        actions: [\"setChecked\", \"dispatchChangeEvent\"]\n      },\n      {\n        actions: [\"setChecked\"]\n      }\n    ],\n    \"CONTEXT.SET\": {\n      actions: [\"setContext\"]\n    }\n  },\n  states: {\n    ready: {}\n  },\n  implementations: {\n    guards: {\n      isTrusted: ({ event }) => !!event.isTrusted\n    },\n    effects: {\n      trackPressEvent({ computed, scope, context }) {\n        if (computed(\"isDisabled\")) return;\n        return trackPress({\n          pointerNode: getRootEl(scope),\n          keyboardNode: getHiddenInputEl(scope),\n          isValidKey: (event) => event.key === \" \",\n          onPress: () => context.set(\"active\", false),\n          onPressStart: () => context.set(\"active\", true),\n          onPressEnd: () => context.set(\"active\", false)\n        });\n      },\n      trackFocusVisible({ computed, scope }) {\n        if (computed(\"isDisabled\")) return;\n        return trackFocusVisible({ root: scope.getRootNode() });\n      },\n      trackFormControlState({ context, send, scope }) {\n        return trackFormControl(getHiddenInputEl(scope), {\n          onFieldsetDisabledChange(disabled) {\n            context.set(\"fieldsetDisabled\", disabled);\n          },\n          onFormReset() {\n            const checked = context.initial(\"checked\");\n            send({ type: \"CHECKED.SET\", checked: !!checked, src: \"form-reset\" });\n          }\n        });\n      }\n    },\n    actions: {\n      setContext({ context, event }) {\n        for (const key in event.context) {\n          context.set(key, event.context[key]);\n        }\n      },\n      syncInputElement({ context, scope }) {\n        const inputEl = getHiddenInputEl(scope);\n        if (!inputEl) return;\n        setElementChecked(inputEl, !!context.get(\"checked\"));\n      },\n      removeFocusIfNeeded({ context, prop }) {\n        if (prop(\"disabled\")) {\n          context.set(\"focused\", false);\n        }\n      },\n      setChecked({ context, event }) {\n        context.set(\"checked\", event.checked);\n      },\n      toggleChecked({ context }) {\n        context.set(\"checked\", !context.get(\"checked\"));\n      },\n      dispatchChangeEvent({ context, scope }) {\n        queueMicrotask(() => {\n          const inputEl = getHiddenInputEl(scope);\n          dispatchInputCheckedEvent(inputEl, { checked: context.get(\"checked\") });\n        });\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"checked\",\n  \"defaultChecked\",\n  \"dir\",\n  \"disabled\",\n  \"form\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"invalid\",\n  \"label\",\n  \"name\",\n  \"onCheckedChange\",\n  \"readOnly\",\n  \"required\",\n  \"value\"\n]);\nvar splitProps = createSplitProps(props);\n\nexport { anatomy, connect, machine, props, splitProps };\n", "import * as zagSwitch from \"@zag-js/switch\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport { Component } from \"../lib/core\";\n\nexport class Switch extends Component<zagSwitch.Props, zagSwitch.Api> {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  initMachine(props: zagSwitch.Props): VanillaMachine<any> {\n    return new VanillaMachine(zagSwitch.machine, props);\n  }\n\n  initApi(): zagSwitch.Api {\n    return zagSwitch.connect(this.machine.service, normalizeProps);\n  }\n\n  render(): void {\n    const rootEl = this.el.querySelector<HTMLElement>('[data-scope=\"switch\"][data-part=\"root\"]');\n    if (!rootEl) return;\n    this.spreadProps(rootEl, this.api.getRootProps());\n\n    const inputEl = this.el.querySelector<HTMLElement>('[data-scope=\"switch\"][data-part=\"hidden-input\"]');\n    if (inputEl) {\n      this.spreadProps(inputEl, this.api.getHiddenInputProps());\n    }\n\n    const labelEl = this.el.querySelector<HTMLElement>('[data-scope=\"switch\"][data-part=\"label\"]');\n    if (labelEl) {\n      this.spreadProps(labelEl, this.api.getLabelProps());\n    }\n\n    const controlEl = this.el.querySelector<HTMLElement>('[data-scope=\"switch\"][data-part=\"control\"]');\n    if (controlEl) {\n      this.spreadProps(controlEl, this.api.getControlProps());\n    }\n\n    const thumbEl = this.el.querySelector<HTMLElement>('[data-scope=\"switch\"][data-part=\"thumb\"]');\n    if (thumbEl) {\n      this.spreadProps(thumbEl, this.api.getThumbProps());\n    }\n  }\n}\n", "import type { Hook } from \"phoenix_live_view\";\nimport type { HookInterface, CallbackRef } from \"phoenix_live_view/assets/js/types/view_hook\";\nimport { Switch } from \"../components/switch\";\nimport type { CheckedChangeDetails } from \"@zag-js/switch\";\nimport type { Direction } from \"@zag-js/types\";\n\nimport { getString, getBoolean } from \"../lib/util\";\n\ntype SwitchHookState = {\n  switch?: Switch;\n  handlers?: Array<CallbackRef>;\n  onSetChecked?: (event: Event) => void;\n  wasFocused?: boolean;\n};\n\nconst SwitchHook: Hook<object & SwitchHookState, HTMLElement> = {\n  mounted(this: object & HookInterface<HTMLElement> & SwitchHookState) {\n    const el = this.el;\n    const pushEvent = this.pushEvent.bind(this);\n    this.wasFocused = false;\n    const zagSwitch = new Switch(el, {\n      id: el.id,\n      ...(getBoolean(el, \"controlled\")\n        ? { checked: getBoolean(el, \"checked\") }\n        : { defaultChecked: getBoolean(el, \"defaultChecked\") }),\n      disabled: getBoolean(el, \"disabled\"),\n      name: getString(el, \"name\"),\n      form: getString(el, \"form\"),\n      value: getString(el, \"value\"),\n      dir: getString<Direction>(el, \"dir\", [\"ltr\", \"rtl\"]),\n      invalid: getBoolean(el, \"invalid\"),\n      required: getBoolean(el, \"required\"),\n      readOnly: getBoolean(el, \"readOnly\"),\n      label: getString(el, \"label\"),\n\n      onCheckedChange: (details: CheckedChangeDetails) => {\n        const eventName = getString(el, \"onCheckedChange\");\n        if (eventName && !this.liveSocket.main.isDead && this.liveSocket.main.isConnected()) {\n          pushEvent(eventName, {\n            checked: details.checked,\n            id: el.id,\n          });\n        }\n\n        const eventNameClient = getString(el, \"onCheckedChangeClient\");\n        if (eventNameClient) {\n          el.dispatchEvent(\n            new CustomEvent(eventNameClient, {\n              bubbles: true,\n              detail: {\n                value: details,\n                id: el.id,\n              },\n            })\n          );\n        }\n      },\n    });\n\n    zagSwitch.init();\n    this.zagSwitch = zagSwitch;\n\n    this.onSetChecked = (event: Event) => {\n      const { value } = (event as CustomEvent<{ value: boolean }>).detail;\n      zagSwitch.api.setChecked(value);\n    };\n    el.addEventListener(\"phx:switch:set-checked\", this.onSetChecked);\n\n    this.handlers = [];\n\n    this.handlers.push(\n      this.handleEvent(\"switch_set_checked\", (payload: { id?: string; value: boolean }) => {\n        const targetId = payload.id;\n        if (targetId && targetId !== el.id) return;\n        zagSwitch.api.setChecked(payload.value);\n      })\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"switch_toggle_checked\", (payload: { id?: string }) => {\n        const targetId = payload.id;\n        if (targetId && targetId !== el.id) return;\n        zagSwitch.api.toggleChecked();\n      })\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"switch_checked\", () => {\n        this.pushEvent(\"switch_checked_response\", {\n          value: zagSwitch.api.checked,\n        });\n      })\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"switch_focused\", () => {\n        this.pushEvent(\"switch_focused_response\", {\n          value: zagSwitch.api.focused,\n        });\n      })\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"switch_disabled\", () => {\n        this.pushEvent(\"switch_disabled_response\", {\n          value: zagSwitch.api.disabled,\n        });\n      })\n    );\n  },\n\n  beforeUpdate() {\n    this.wasFocused = this.zagSwitch?.api.focused ?? false;\n  },\n  updated(this: object & HookInterface<HTMLElement> & SwitchHookState) {\n    this.zagSwitch?.updateProps({\n      id: this.el.id,\n      ...(getBoolean(this.el, \"controlled\")\n        ? { checked: getBoolean(this.el, \"checked\") }\n        : { defaultChecked: getBoolean(this.el, \"defaultChecked\") }),\n      disabled: getBoolean(this.el, \"disabled\"),\n      name: getString(this.el, \"name\"),\n      form: getString(this.el, \"form\"),\n      value: getString(this.el, \"value\"),\n      dir: getString<Direction>(this.el, \"dir\", [\"ltr\", \"rtl\"]),\n      invalid: getBoolean(this.el, \"invalid\"),\n      required: getBoolean(this.el, \"required\"),\n      readOnly: getBoolean(this.el, \"readOnly\"),\n      label: getString(this.el, \"label\"),\n    });\n    if (getBoolean(this.el, \"controlled\")) {\n      if (this.wasFocused) {\n        const hiddenInput = this.el.querySelector('[data-part=\"hidden-input\"]') as HTMLInputElement;\n        hiddenInput?.focus();\n      }\n    }\n  },\n\n  destroyed(this: object & HookInterface<HTMLElement> & SwitchHookState) {\n    if (this.onSetChecked) {\n      this.el.removeEventListener(\"phx:switch:set-checked\", this.onSetChecked);\n    }\n\n    if (this.handlers) {\n      for (const handler of this.handlers) {\n        this.removeHandleEvent(handler);\n      }\n    }\n\n    this.zagSwitch?.destroy();\n  },\n};\n\nexport { SwitchHook as Switch };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { isAnchorElement, resizeObserverBorderBox, raf, getFocusables, clickIfLink, queryAll, itemById, prevById, nextById, dataAttr, isOpeningInNewTab, isSafari, isComposingEvent, contains, getEventTarget, getEventKey } from '@zag-js/dom-query';\nimport { callAll, createSplitProps, isEqual, last, first, toPx } from '@zag-js/utils';\nimport { setup } from '@zag-js/core';\nimport { createProps } from '@zag-js/types';\n\n// src/tabs.anatomy.ts\nvar anatomy = createAnatomy(\"tabs\").parts(\"root\", \"list\", \"trigger\", \"content\", \"indicator\");\nvar parts = anatomy.build();\nvar getRootId = (ctx) => ctx.ids?.root ?? `tabs:${ctx.id}`;\nvar getListId = (ctx) => ctx.ids?.list ?? `tabs:${ctx.id}:list`;\nvar getContentId = (ctx, value) => ctx.ids?.content?.(value) ?? `tabs:${ctx.id}:content-${value}`;\nvar getTriggerId = (ctx, value) => ctx.ids?.trigger?.(value) ?? `tabs:${ctx.id}:trigger-${value}`;\nvar getIndicatorId = (ctx) => ctx.ids?.indicator ?? `tabs:${ctx.id}:indicator`;\nvar getListEl = (ctx) => ctx.getById(getListId(ctx));\nvar getContentEl = (ctx, value) => ctx.getById(getContentId(ctx, value));\nvar getTriggerEl = (ctx, value) => value != null ? ctx.getById(getTriggerId(ctx, value)) : null;\nvar getIndicatorEl = (ctx) => ctx.getById(getIndicatorId(ctx));\nvar getElements = (ctx) => {\n  const ownerId = CSS.escape(getListId(ctx));\n  const selector = `[role=tab][data-ownedby='${ownerId}']:not([disabled])`;\n  return queryAll(getListEl(ctx), selector);\n};\nvar getFirstTriggerEl = (ctx) => first(getElements(ctx));\nvar getLastTriggerEl = (ctx) => last(getElements(ctx));\nvar getNextTriggerEl = (ctx, opts) => nextById(getElements(ctx), getTriggerId(ctx, opts.value), opts.loopFocus);\nvar getPrevTriggerEl = (ctx, opts) => prevById(getElements(ctx), getTriggerId(ctx, opts.value), opts.loopFocus);\nvar getOffsetRect = (el) => ({\n  x: el?.offsetLeft ?? 0,\n  y: el?.offsetTop ?? 0,\n  width: el?.offsetWidth ?? 0,\n  height: el?.offsetHeight ?? 0\n});\nvar getRectByValue = (ctx, value) => {\n  const tab = itemById(getElements(ctx), getTriggerId(ctx, value));\n  return getOffsetRect(tab);\n};\n\n// src/tabs.connect.ts\nfunction connect(service, normalize) {\n  const { state, send, context, prop, scope } = service;\n  const translations = prop(\"translations\");\n  const focused = state.matches(\"focused\");\n  const isVertical = prop(\"orientation\") === \"vertical\";\n  const isHorizontal = prop(\"orientation\") === \"horizontal\";\n  const composite = prop(\"composite\");\n  function getTriggerState(props2) {\n    return {\n      selected: context.get(\"value\") === props2.value,\n      focused: context.get(\"focusedValue\") === props2.value,\n      disabled: !!props2.disabled\n    };\n  }\n  return {\n    value: context.get(\"value\"),\n    focusedValue: context.get(\"focusedValue\"),\n    setValue(value) {\n      send({ type: \"SET_VALUE\", value });\n    },\n    clearValue() {\n      send({ type: \"CLEAR_VALUE\" });\n    },\n    setIndicatorRect(value) {\n      const id = getTriggerId(scope, value);\n      send({ type: \"SET_INDICATOR_RECT\", id });\n    },\n    syncTabIndex() {\n      send({ type: \"SYNC_TAB_INDEX\" });\n    },\n    selectNext(fromValue) {\n      send({ type: \"TAB_FOCUS\", value: fromValue, src: \"selectNext\" });\n      send({ type: \"ARROW_NEXT\", src: \"selectNext\" });\n    },\n    selectPrev(fromValue) {\n      send({ type: \"TAB_FOCUS\", value: fromValue, src: \"selectPrev\" });\n      send({ type: \"ARROW_PREV\", src: \"selectPrev\" });\n    },\n    focus() {\n      const value = context.get(\"value\");\n      if (!value) return;\n      getTriggerEl(scope, value)?.focus();\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        id: getRootId(scope),\n        \"data-orientation\": prop(\"orientation\"),\n        \"data-focus\": dataAttr(focused),\n        dir: prop(\"dir\")\n      });\n    },\n    getListProps() {\n      return normalize.element({\n        ...parts.list.attrs,\n        id: getListId(scope),\n        role: \"tablist\",\n        dir: prop(\"dir\"),\n        \"data-focus\": dataAttr(focused),\n        \"aria-orientation\": prop(\"orientation\"),\n        \"data-orientation\": prop(\"orientation\"),\n        \"aria-label\": translations?.listLabel,\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (isComposingEvent(event)) return;\n          if (!contains(event.currentTarget, getEventTarget(event))) return;\n          const keyMap = {\n            ArrowDown() {\n              if (isHorizontal) return;\n              send({ type: \"ARROW_NEXT\", key: \"ArrowDown\" });\n            },\n            ArrowUp() {\n              if (isHorizontal) return;\n              send({ type: \"ARROW_PREV\", key: \"ArrowUp\" });\n            },\n            ArrowLeft() {\n              if (isVertical) return;\n              send({ type: \"ARROW_PREV\", key: \"ArrowLeft\" });\n            },\n            ArrowRight() {\n              if (isVertical) return;\n              send({ type: \"ARROW_NEXT\", key: \"ArrowRight\" });\n            },\n            Home() {\n              send({ type: \"HOME\" });\n            },\n            End() {\n              send({ type: \"END\" });\n            }\n          };\n          let key = getEventKey(event, {\n            dir: prop(\"dir\"),\n            orientation: prop(\"orientation\")\n          });\n          const exec = keyMap[key];\n          if (exec) {\n            event.preventDefault();\n            exec(event);\n            return;\n          }\n        }\n      });\n    },\n    getTriggerState,\n    getTriggerProps(props2) {\n      const { value, disabled } = props2;\n      const triggerState = getTriggerState(props2);\n      return normalize.button({\n        ...parts.trigger.attrs,\n        role: \"tab\",\n        type: \"button\",\n        disabled,\n        dir: prop(\"dir\"),\n        \"data-orientation\": prop(\"orientation\"),\n        \"data-disabled\": dataAttr(disabled),\n        \"aria-disabled\": disabled,\n        \"data-value\": value,\n        \"aria-selected\": triggerState.selected,\n        \"data-selected\": dataAttr(triggerState.selected),\n        \"data-focus\": dataAttr(triggerState.focused),\n        \"aria-controls\": triggerState.selected ? getContentId(scope, value) : void 0,\n        \"data-ownedby\": getListId(scope),\n        \"data-ssr\": dataAttr(context.get(\"ssr\")),\n        id: getTriggerId(scope, value),\n        tabIndex: triggerState.selected && composite ? 0 : -1,\n        onFocus() {\n          send({ type: \"TAB_FOCUS\", value });\n        },\n        onBlur(event) {\n          const target = event.relatedTarget;\n          if (target?.getAttribute(\"role\") !== \"tab\") {\n            send({ type: \"TAB_BLUR\" });\n          }\n        },\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (isOpeningInNewTab(event)) return;\n          if (disabled) return;\n          if (isSafari()) {\n            event.currentTarget.focus();\n          }\n          send({ type: \"TAB_CLICK\", value });\n        }\n      });\n    },\n    getContentProps(props2) {\n      const { value } = props2;\n      const selected = context.get(\"value\") === value;\n      return normalize.element({\n        ...parts.content.attrs,\n        dir: prop(\"dir\"),\n        id: getContentId(scope, value),\n        tabIndex: composite ? 0 : -1,\n        \"aria-labelledby\": getTriggerId(scope, value),\n        role: \"tabpanel\",\n        \"data-ownedby\": getListId(scope),\n        \"data-selected\": dataAttr(selected),\n        \"data-orientation\": prop(\"orientation\"),\n        hidden: !selected\n      });\n    },\n    getIndicatorProps() {\n      const rect = context.get(\"indicatorRect\");\n      const rectIsEmpty = rect == null || rect.width === 0 && rect.height === 0 && rect.x === 0 && rect.y === 0;\n      return normalize.element({\n        id: getIndicatorId(scope),\n        ...parts.indicator.attrs,\n        dir: prop(\"dir\"),\n        \"data-orientation\": prop(\"orientation\"),\n        hidden: rectIsEmpty,\n        style: {\n          \"--transition-property\": \"left, right, top, bottom, width, height\",\n          \"--left\": toPx(rect?.x),\n          \"--top\": toPx(rect?.y),\n          \"--width\": toPx(rect?.width),\n          \"--height\": toPx(rect?.height),\n          position: \"absolute\",\n          willChange: \"var(--transition-property)\",\n          transitionProperty: \"var(--transition-property)\",\n          transitionDuration: \"var(--transition-duration, 150ms)\",\n          transitionTimingFunction: \"var(--transition-timing-function)\",\n          [isHorizontal ? \"left\" : \"top\"]: isHorizontal ? \"var(--left)\" : \"var(--top)\"\n        }\n      });\n    }\n  };\n}\nvar { createMachine } = setup();\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      dir: \"ltr\",\n      orientation: \"horizontal\",\n      activationMode: \"automatic\",\n      loopFocus: true,\n      composite: true,\n      navigate(details) {\n        clickIfLink(details.node);\n      },\n      defaultValue: null,\n      ...props2\n    };\n  },\n  initialState() {\n    return \"idle\";\n  },\n  context({ prop, bindable }) {\n    return {\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        onChange(value) {\n          prop(\"onValueChange\")?.({ value });\n        }\n      })),\n      focusedValue: bindable(() => ({\n        defaultValue: prop(\"value\") || prop(\"defaultValue\"),\n        sync: true,\n        onChange(value) {\n          prop(\"onFocusChange\")?.({ focusedValue: value });\n        }\n      })),\n      ssr: bindable(() => ({ defaultValue: true })),\n      indicatorRect: bindable(() => ({\n        defaultValue: null\n      }))\n    };\n  },\n  watch({ context, prop, track, action }) {\n    track([() => context.get(\"value\")], () => {\n      action([\"syncIndicatorRect\", \"syncTabIndex\", \"navigateIfNeeded\"]);\n    });\n    track([() => prop(\"dir\"), () => prop(\"orientation\")], () => {\n      action([\"syncIndicatorRect\"]);\n    });\n  },\n  on: {\n    SET_VALUE: {\n      actions: [\"setValue\"]\n    },\n    CLEAR_VALUE: {\n      actions: [\"clearValue\"]\n    },\n    SET_INDICATOR_RECT: {\n      actions: [\"setIndicatorRect\"]\n    },\n    SYNC_TAB_INDEX: {\n      actions: [\"syncTabIndex\"]\n    }\n  },\n  entry: [\"syncIndicatorRect\", \"syncTabIndex\", \"syncSsr\"],\n  exit: [\"cleanupObserver\"],\n  states: {\n    idle: {\n      on: {\n        TAB_FOCUS: {\n          target: \"focused\",\n          actions: [\"setFocusedValue\"]\n        },\n        TAB_CLICK: {\n          target: \"focused\",\n          actions: [\"setFocusedValue\", \"setValue\"]\n        }\n      }\n    },\n    focused: {\n      on: {\n        TAB_CLICK: {\n          actions: [\"setFocusedValue\", \"setValue\"]\n        },\n        ARROW_PREV: [\n          {\n            guard: \"selectOnFocus\",\n            actions: [\"focusPrevTab\", \"selectFocusedTab\"]\n          },\n          {\n            actions: [\"focusPrevTab\"]\n          }\n        ],\n        ARROW_NEXT: [\n          {\n            guard: \"selectOnFocus\",\n            actions: [\"focusNextTab\", \"selectFocusedTab\"]\n          },\n          {\n            actions: [\"focusNextTab\"]\n          }\n        ],\n        HOME: [\n          {\n            guard: \"selectOnFocus\",\n            actions: [\"focusFirstTab\", \"selectFocusedTab\"]\n          },\n          {\n            actions: [\"focusFirstTab\"]\n          }\n        ],\n        END: [\n          {\n            guard: \"selectOnFocus\",\n            actions: [\"focusLastTab\", \"selectFocusedTab\"]\n          },\n          {\n            actions: [\"focusLastTab\"]\n          }\n        ],\n        TAB_FOCUS: {\n          actions: [\"setFocusedValue\"]\n        },\n        TAB_BLUR: {\n          target: \"idle\",\n          actions: [\"clearFocusedValue\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      selectOnFocus: ({ prop }) => prop(\"activationMode\") === \"automatic\"\n    },\n    actions: {\n      selectFocusedTab({ context, prop }) {\n        raf(() => {\n          const focusedValue = context.get(\"focusedValue\");\n          if (!focusedValue) return;\n          const nullable = prop(\"deselectable\") && context.get(\"value\") === focusedValue;\n          const value = nullable ? null : focusedValue;\n          context.set(\"value\", value);\n        });\n      },\n      setFocusedValue({ context, event, flush }) {\n        if (event.value == null) return;\n        flush(() => {\n          context.set(\"focusedValue\", event.value);\n        });\n      },\n      clearFocusedValue({ context }) {\n        context.set(\"focusedValue\", null);\n      },\n      setValue({ context, event, prop }) {\n        const nullable = prop(\"deselectable\") && context.get(\"value\") === context.get(\"focusedValue\");\n        context.set(\"value\", nullable ? null : event.value);\n      },\n      clearValue({ context }) {\n        context.set(\"value\", null);\n      },\n      focusFirstTab({ scope }) {\n        raf(() => {\n          getFirstTriggerEl(scope)?.focus();\n        });\n      },\n      focusLastTab({ scope }) {\n        raf(() => {\n          getLastTriggerEl(scope)?.focus();\n        });\n      },\n      focusNextTab({ context, prop, scope, event }) {\n        const focusedValue = event.value ?? context.get(\"focusedValue\");\n        if (!focusedValue) return;\n        const triggerEl = getNextTriggerEl(scope, {\n          value: focusedValue,\n          loopFocus: prop(\"loopFocus\")\n        });\n        raf(() => {\n          if (prop(\"composite\")) {\n            triggerEl?.focus();\n          } else if (triggerEl?.dataset.value != null) {\n            context.set(\"focusedValue\", triggerEl.dataset.value);\n          }\n        });\n      },\n      focusPrevTab({ context, prop, scope, event }) {\n        const focusedValue = event.value ?? context.get(\"focusedValue\");\n        if (!focusedValue) return;\n        const triggerEl = getPrevTriggerEl(scope, {\n          value: focusedValue,\n          loopFocus: prop(\"loopFocus\")\n        });\n        raf(() => {\n          if (prop(\"composite\")) {\n            triggerEl?.focus();\n          } else if (triggerEl?.dataset.value != null) {\n            context.set(\"focusedValue\", triggerEl.dataset.value);\n          }\n        });\n      },\n      syncTabIndex({ context, scope }) {\n        raf(() => {\n          const value = context.get(\"value\");\n          if (!value) return;\n          const contentEl = getContentEl(scope, value);\n          if (!contentEl) return;\n          const focusables = getFocusables(contentEl);\n          if (focusables.length > 0) {\n            contentEl.removeAttribute(\"tabindex\");\n          } else {\n            contentEl.setAttribute(\"tabindex\", \"0\");\n          }\n        });\n      },\n      cleanupObserver({ refs }) {\n        const cleanup = refs.get(\"indicatorCleanup\");\n        if (cleanup) cleanup();\n      },\n      setIndicatorRect({ context, event, scope }) {\n        const value = event.id ?? context.get(\"value\");\n        const indicatorEl = getIndicatorEl(scope);\n        if (!indicatorEl) return;\n        if (!value) return;\n        const triggerEl = getTriggerEl(scope, value);\n        if (!triggerEl) return;\n        context.set(\"indicatorRect\", getRectByValue(scope, value));\n      },\n      syncSsr({ context }) {\n        context.set(\"ssr\", false);\n      },\n      syncIndicatorRect({ context, refs, scope }) {\n        const cleanup = refs.get(\"indicatorCleanup\");\n        if (cleanup) cleanup();\n        const indicatorEl = getIndicatorEl(scope);\n        if (!indicatorEl) return;\n        const exec = () => {\n          const triggerEl = getTriggerEl(scope, context.get(\"value\"));\n          if (!triggerEl) return;\n          const rect = getOffsetRect(triggerEl);\n          context.set(\"indicatorRect\", (prev) => isEqual(prev, rect) ? prev : rect);\n        };\n        exec();\n        const triggerEls = getElements(scope);\n        const indicatorCleanup = callAll(...triggerEls.map((el) => resizeObserverBorderBox.observe(el, exec)));\n        refs.set(\"indicatorCleanup\", indicatorCleanup);\n      },\n      navigateIfNeeded({ context, prop, scope }) {\n        const value = context.get(\"value\");\n        if (!value) return;\n        const triggerEl = getTriggerEl(scope, value);\n        if (isAnchorElement(triggerEl)) {\n          prop(\"navigate\")?.({ value, node: triggerEl, href: triggerEl.href });\n        }\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"activationMode\",\n  \"composite\",\n  \"deselectable\",\n  \"dir\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"loopFocus\",\n  \"navigate\",\n  \"onFocusChange\",\n  \"onValueChange\",\n  \"orientation\",\n  \"translations\",\n  \"value\",\n  \"defaultValue\"\n]);\nvar splitProps = createSplitProps(props);\nvar triggerProps = createProps()([\"disabled\", \"value\"]);\nvar splitTriggerProps = createSplitProps(triggerProps);\nvar contentProps = createProps()([\"value\"]);\nvar splitContentProps = createSplitProps(contentProps);\n\nexport { anatomy, connect, contentProps, machine, props, splitContentProps, splitProps, splitTriggerProps, triggerProps };\n", "import {connect, machine, type Props, type Api}  from \"@zag-js/tabs\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport { Component } from \"../lib/core\";\n\nexport class Tabs extends Component<Props, Api> {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  initMachine(props: Props): VanillaMachine<any> {\n    return new VanillaMachine(machine, props);\n  }\n\n  initApi(): Api {\n    return connect(this.machine.service, normalizeProps);\n  }\n\n  render(): void {\n    const rootEl = this.el.querySelector<HTMLElement>('[data-scope=\"tabs\"][data-part=\"root\"]');\n    if (!rootEl) return;\n    this.spreadProps(rootEl, this.api.getRootProps());\n\n    const listEl = rootEl.querySelector<HTMLElement>('[data-scope=\"tabs\"][data-part=\"list\"]');\n    if (!listEl) return;\n    this.spreadProps(listEl, this.api.getListProps());\n\n    const itemsData = this.el.getAttribute('data-items');\n    const items: Array<{value: string, disabled: boolean}> = itemsData \n      ? JSON.parse(itemsData)\n      : [];\n\n    const triggers = listEl.querySelectorAll<HTMLElement>(\n      '[data-scope=\"tabs\"][data-part=\"trigger\"]'\n    );\n    \n    for (let i = 0; i < triggers.length && i < items.length; i++) {\n      const triggerEl = triggers[i];\n      const item = items[i];\n      this.spreadProps(triggerEl, this.api.getTriggerProps({ value: item.value, disabled: item.disabled }));\n    }\n\n    const contents = rootEl.querySelectorAll<HTMLElement>(\n      '[data-scope=\"tabs\"][data-part=\"content\"]'\n    );\n\n    for (let i = 0; i < contents.length && i < items.length; i++) {\n      const contentEl = contents[i];\n      const item = items[i];\n      this.spreadProps(contentEl, this.api.getContentProps({ value: item.value }));\n    }\n  }\n}", "import type { Hook } from \"phoenix_live_view\";\nimport type { HookInterface, CallbackRef } from \"phoenix_live_view/assets/js/types/view_hook\";\nimport { Tabs } from \"../components/tabs\";\nimport type { ValueChangeDetails, FocusChangeDetails, Props } from \"@zag-js/tabs\";\nimport type { Direction, Orientation } from \"@zag-js/types\";\n\nimport { getString, getBoolean } from \"../lib/util\";\n\ntype TabsHookState = {\n  tabs?: Tabs;\n  handlers?: Array<CallbackRef>;\n  onSetValue?: (event: Event) => void;\n};\n\nconst TabsHook: Hook<object & TabsHookState, HTMLElement> = {\n  mounted(this: object & HookInterface<HTMLElement> & TabsHookState) {\n\n    const el = this.el;\n    const pushEvent = this.pushEvent.bind(this);\n\n    const tabs = new Tabs(el, \n      {\n        id: el.id,\n        ...(getBoolean(el, \"controlled\")\n          ? { value: getString(el, \"value\") }\n          : { defaultValue: getString(el, \"defaultValue\") }),\n        orientation: getString<Orientation>(el, \"orientation\", [\"horizontal\", \"vertical\"]),\n        dir: getString<Direction>(el, \"dir\", [\"ltr\", \"rtl\"]),\n        onValueChange: (details: ValueChangeDetails) => {\n          const eventName = getString(el, \"onValueChange\");\n          if (eventName && this.liveSocket.main.isConnected()) {\n            pushEvent(eventName, {\n              id: el.id,\n              value: details.value ?? null,\n            });\n          }\n          \n          const eventNameClient = getString(el, \"onValueChangeClient\");\n          if (eventNameClient) {\n            el.dispatchEvent(\n              new CustomEvent(eventNameClient, {\n                bubbles: true,\n                detail: {\n                  id: el.id,\n                  value: details.value ?? null,\n                },\n              })\n            );\n          }\n        },\n        \n        onFocusChange: (details: FocusChangeDetails) => {\n          const eventName = getString(el, \"onFocusChange\");\n          if (eventName && this.liveSocket.main.isConnected()) {\n            pushEvent(eventName, {\n              id: el.id,\n              value: details.focusedValue ?? null,\n            });\n          }\n  \n          const eventNameClient = getString(el, \"onFocusChangeClient\");\n          if (eventNameClient) {\n            el.dispatchEvent(\n              new CustomEvent(eventNameClient, {\n                bubbles: true,\n                detail: {\n                  id: el.id,\n                  value: details.focusedValue ?? null,\n                },\n              })\n            );\n          }\n        },\n      }\n    );\n    tabs.init();\n    this.tabs = tabs;\n\n    this.onSetValue = (event: Event) => {\n      const { value } = (event as CustomEvent<{ value: string }>).detail;\n      tabs.api.setValue(value);\n    };\n    el.addEventListener(\"phx:tabs:set-value\", this.onSetValue);\n\n    this.handlers = [];\n\n    this.handlers.push(\n      this.handleEvent(\n        \"tabs_set_value\",\n        (payload: { tabs_id?: string; value: string }) => {\n          const targetId = payload.tabs_id;\n          if (targetId && targetId !== el.id) return;\n          tabs.api.setValue(payload.value);\n        }\n      )\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"tabs_value\", () => {\n        this.pushEvent(\"tabs_value_response\", {\n          value: tabs.api.value,\n        });\n      })\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"tabs_focused_value\", () => {\n        this.pushEvent(\"tabs_focused_value_response\", {\n          value: tabs.api.focusedValue,\n        });\n      })\n    );\n  },\n\n  updated(this: object & HookInterface<HTMLElement> & TabsHookState) {\n    this.tabs?.updateProps({\n      id: this.el.id,\n      ...(getBoolean(this.el, \"controlled\")\n        ? { value: getString(this.el, \"value\") }\n        : { defaultValue: getString(this.el, \"defaultValue\") }),\n      orientation: getString<Orientation>(this.el, \"orientation\", [\"horizontal\", \"vertical\"]),\n      dir: getString<Direction>(this.el, \"dir\", [\"ltr\", \"rtl\"])\n    } as Props);\n  },\n\n\n  \n  destroyed(this: object & HookInterface<HTMLElement> & TabsHookState) {\n    if (this.onSetValue) {\n      this.el.removeEventListener(\"phx:tabs:set-value\", this.onSetValue);\n    }\n\n    if (this.handlers) {\n      for (const handler of this.handlers) {\n        this.removeHandleEvent(handler);\n      }\n    }\n\n    this.tabs?.destroy();\n  },\n};\n\nexport { TabsHook as Tabs };\n", "import { addDomEvent, AnimationFrame, raf, contains, dataAttr, MAX_Z_INDEX } from '@zag-js/dom-query';\nimport { createAnatomy } from '@zag-js/anatomy';\nimport { setup, createGuards, createMachine as createMachine$1 } from '@zag-js/core';\nimport { trackDismissableBranch } from '@zag-js/dismissable';\nimport { uuid, setRafTimeout, ensureProps, warn, runIfFn, compact } from '@zag-js/utils';\n\n// src/toast-group.connect.ts\nvar anatomy = createAnatomy(\"toast\").parts(\n  \"group\",\n  \"root\",\n  \"title\",\n  \"description\",\n  \"actionTrigger\",\n  \"closeTrigger\"\n);\nvar parts = anatomy.build();\n\n// src/toast.dom.ts\nvar getRegionId = (placement) => `toast-group:${placement}`;\nvar getRegionEl = (ctx, placement) => ctx.getById(`toast-group:${placement}`);\nvar getRootId = (ctx) => `toast:${ctx.id}`;\nvar getRootEl = (ctx) => ctx.getById(getRootId(ctx));\nvar getTitleId = (ctx) => `toast:${ctx.id}:title`;\nvar getDescriptionId = (ctx) => `toast:${ctx.id}:description`;\nvar getCloseTriggerId = (ctx) => `toast${ctx.id}:close`;\nvar defaultTimeouts = {\n  info: 5e3,\n  error: 5e3,\n  success: 2e3,\n  loading: Infinity,\n  DEFAULT: 5e3\n};\nfunction getToastDuration(duration, type) {\n  return duration ?? defaultTimeouts[type] ?? defaultTimeouts.DEFAULT;\n}\nvar getOffsets = (offsets) => typeof offsets === \"string\" ? { left: offsets, right: offsets, bottom: offsets, top: offsets } : offsets;\nfunction getGroupPlacementStyle(service, placement) {\n  const { prop, computed, context } = service;\n  const { offsets, gap } = prop(\"store\").attrs;\n  const heights = context.get(\"heights\");\n  const computedOffset = getOffsets(offsets);\n  const rtl = prop(\"dir\") === \"rtl\";\n  const computedPlacement = placement.replace(\"-start\", rtl ? \"-right\" : \"-left\").replace(\"-end\", rtl ? \"-left\" : \"-right\");\n  const isRighty = computedPlacement.includes(\"right\");\n  const isLefty = computedPlacement.includes(\"left\");\n  const styles = {\n    position: \"fixed\",\n    pointerEvents: computed(\"count\") > 0 ? void 0 : \"none\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    \"--gap\": `${gap}px`,\n    \"--first-height\": `${heights[0]?.height || 0}px`,\n    \"--viewport-offset-left\": computedOffset.left,\n    \"--viewport-offset-right\": computedOffset.right,\n    \"--viewport-offset-top\": computedOffset.top,\n    \"--viewport-offset-bottom\": computedOffset.bottom,\n    zIndex: MAX_Z_INDEX\n  };\n  let alignItems = \"center\";\n  if (isRighty) alignItems = \"flex-end\";\n  if (isLefty) alignItems = \"flex-start\";\n  styles.alignItems = alignItems;\n  if (computedPlacement.includes(\"top\")) {\n    const offset = computedOffset.top;\n    styles.top = `max(env(safe-area-inset-top, 0px), ${offset})`;\n  }\n  if (computedPlacement.includes(\"bottom\")) {\n    const offset = computedOffset.bottom;\n    styles.bottom = `max(env(safe-area-inset-bottom, 0px), ${offset})`;\n  }\n  if (!computedPlacement.includes(\"left\")) {\n    const offset = computedOffset.right;\n    styles.insetInlineEnd = `calc(env(safe-area-inset-right, 0px) + ${offset})`;\n  }\n  if (!computedPlacement.includes(\"right\")) {\n    const offset = computedOffset.left;\n    styles.insetInlineStart = `calc(env(safe-area-inset-left, 0px) + ${offset})`;\n  }\n  return styles;\n}\nfunction getPlacementStyle(service, visible) {\n  const { prop, context, computed } = service;\n  const parent = prop(\"parent\");\n  const placement = parent.computed(\"placement\");\n  const { gap } = parent.prop(\"store\").attrs;\n  const [side] = placement.split(\"-\");\n  const mounted = context.get(\"mounted\");\n  const remainingTime = context.get(\"remainingTime\");\n  const height = computed(\"height\");\n  const frontmost = computed(\"frontmost\");\n  const sibling = !frontmost;\n  const overlap = !prop(\"stacked\");\n  const stacked = prop(\"stacked\");\n  const type = prop(\"type\");\n  const duration = type === \"loading\" ? Number.MAX_SAFE_INTEGER : remainingTime;\n  const offset = computed(\"heightIndex\") * gap + computed(\"heightBefore\");\n  const styles = {\n    position: \"absolute\",\n    pointerEvents: \"auto\",\n    \"--opacity\": \"0\",\n    \"--remove-delay\": `${prop(\"removeDelay\")}ms`,\n    \"--duration\": `${duration}ms`,\n    \"--initial-height\": `${height}px`,\n    \"--offset\": `${offset}px`,\n    \"--index\": prop(\"index\"),\n    \"--z-index\": computed(\"zIndex\"),\n    \"--lift-amount\": \"calc(var(--lift) * var(--gap))\",\n    \"--y\": \"100%\",\n    \"--x\": \"0\"\n  };\n  const assign = (overrides) => Object.assign(styles, overrides);\n  if (side === \"top\") {\n    assign({\n      top: \"0\",\n      \"--sign\": \"-1\",\n      \"--y\": \"-100%\",\n      \"--lift\": \"1\"\n    });\n  } else if (side === \"bottom\") {\n    assign({\n      bottom: \"0\",\n      \"--sign\": \"1\",\n      \"--y\": \"100%\",\n      \"--lift\": \"-1\"\n    });\n  }\n  if (mounted) {\n    assign({\n      \"--y\": \"0\",\n      \"--opacity\": \"1\"\n    });\n    if (stacked) {\n      assign({\n        \"--y\": \"calc(var(--lift) * var(--offset))\",\n        \"--height\": \"var(--initial-height)\"\n      });\n    }\n  }\n  if (!visible) {\n    assign({\n      \"--opacity\": \"0\",\n      pointerEvents: \"none\"\n    });\n  }\n  if (sibling && overlap) {\n    assign({\n      \"--base-scale\": \"var(--index) * 0.05 + 1\",\n      \"--y\": \"calc(var(--lift-amount) * var(--index))\",\n      \"--scale\": \"calc(-1 * var(--base-scale))\",\n      \"--height\": \"var(--first-height)\"\n    });\n    if (!visible) {\n      assign({\n        \"--y\": \"calc(var(--sign) * 40%)\"\n      });\n    }\n  }\n  if (sibling && stacked && !visible) {\n    assign({\n      \"--y\": \"calc(var(--lift) * var(--offset) + var(--lift) * -100%)\"\n    });\n  }\n  if (frontmost && !visible) {\n    assign({\n      \"--y\": \"calc(var(--lift) * -100%)\"\n    });\n  }\n  return styles;\n}\nfunction getGhostBeforeStyle(service, visible) {\n  const { computed } = service;\n  const styles = {\n    position: \"absolute\",\n    inset: \"0\",\n    scale: \"1 2\",\n    pointerEvents: visible ? \"none\" : \"auto\"\n  };\n  const assign = (overrides) => Object.assign(styles, overrides);\n  if (computed(\"frontmost\") && !visible) {\n    assign({\n      height: \"calc(var(--initial-height) + 80%)\"\n    });\n  }\n  return styles;\n}\nfunction getGhostAfterStyle() {\n  return {\n    position: \"absolute\",\n    left: \"0\",\n    height: \"calc(var(--gap) + 2px)\",\n    bottom: \"100%\",\n    width: \"100%\"\n  };\n}\n\n// src/toast-group.connect.ts\nfunction groupConnect(service, normalize) {\n  const { context, prop, send, refs, computed } = service;\n  return {\n    getCount() {\n      return context.get(\"toasts\").length;\n    },\n    getToasts() {\n      return context.get(\"toasts\");\n    },\n    getGroupProps(options = {}) {\n      const { label = \"Notifications\" } = options;\n      const { hotkey } = prop(\"store\").attrs;\n      const hotkeyLabel = hotkey.join(\"+\").replace(/Key/g, \"\").replace(/Digit/g, \"\");\n      const placement = computed(\"placement\");\n      const [side, align = \"center\"] = placement.split(\"-\");\n      return normalize.element({\n        ...parts.group.attrs,\n        dir: prop(\"dir\"),\n        tabIndex: -1,\n        \"aria-label\": `${placement} ${label} ${hotkeyLabel}`,\n        id: getRegionId(placement),\n        \"data-placement\": placement,\n        \"data-side\": side,\n        \"data-align\": align,\n        \"aria-live\": \"polite\",\n        role: \"region\",\n        style: getGroupPlacementStyle(service, placement),\n        onMouseEnter() {\n          if (refs.get(\"ignoreMouseTimer\").isActive()) return;\n          send({ type: \"REGION.POINTER_ENTER\", placement });\n        },\n        onMouseMove() {\n          if (refs.get(\"ignoreMouseTimer\").isActive()) return;\n          send({ type: \"REGION.POINTER_ENTER\", placement });\n        },\n        onMouseLeave() {\n          if (refs.get(\"ignoreMouseTimer\").isActive()) return;\n          send({ type: \"REGION.POINTER_LEAVE\", placement });\n        },\n        onFocus(event) {\n          send({ type: \"REGION.FOCUS\", target: event.relatedTarget });\n        },\n        onBlur(event) {\n          if (refs.get(\"isFocusWithin\") && !contains(event.currentTarget, event.relatedTarget)) {\n            queueMicrotask(() => send({ type: \"REGION.BLUR\" }));\n          }\n        }\n      });\n    },\n    subscribe(fn) {\n      const store = prop(\"store\");\n      return store.subscribe(() => fn(context.get(\"toasts\")));\n    }\n  };\n}\nvar { guards, createMachine } = setup();\nvar { and } = guards;\nvar groupMachine = createMachine({\n  props({ props }) {\n    return {\n      dir: \"ltr\",\n      id: uuid(),\n      ...props,\n      store: props.store\n    };\n  },\n  initialState({ prop }) {\n    return prop(\"store\").attrs.overlap ? \"overlap\" : \"stack\";\n  },\n  refs() {\n    return {\n      lastFocusedEl: null,\n      isFocusWithin: false,\n      isPointerWithin: false,\n      ignoreMouseTimer: AnimationFrame.create(),\n      dismissableCleanup: void 0\n    };\n  },\n  context({ bindable }) {\n    return {\n      toasts: bindable(() => ({\n        defaultValue: [],\n        sync: true,\n        hash: (toasts) => toasts.map((t) => t.id).join(\",\")\n      })),\n      heights: bindable(() => ({\n        defaultValue: [],\n        sync: true\n      }))\n    };\n  },\n  computed: {\n    count: ({ context }) => context.get(\"toasts\").length,\n    overlap: ({ prop }) => prop(\"store\").attrs.overlap,\n    placement: ({ prop }) => prop(\"store\").attrs.placement\n  },\n  effects: [\"subscribeToStore\", \"trackDocumentVisibility\", \"trackHotKeyPress\"],\n  watch({ track, context, action }) {\n    track([() => context.hash(\"toasts\")], () => {\n      queueMicrotask(() => {\n        action([\"collapsedIfEmpty\", \"setDismissableBranch\"]);\n      });\n    });\n  },\n  exit: [\"clearDismissableBranch\", \"clearLastFocusedEl\", \"clearMouseEventTimer\"],\n  on: {\n    \"DOC.HOTKEY\": {\n      actions: [\"focusRegionEl\"]\n    },\n    \"REGION.BLUR\": [\n      {\n        guard: and(\"isOverlapping\", \"isPointerOut\"),\n        target: \"overlap\",\n        actions: [\"collapseToasts\", \"resumeToasts\", \"restoreFocusIfPointerOut\"]\n      },\n      {\n        guard: \"isPointerOut\",\n        target: \"stack\",\n        actions: [\"resumeToasts\", \"restoreFocusIfPointerOut\"]\n      },\n      {\n        actions: [\"clearFocusWithin\"]\n      }\n    ],\n    \"TOAST.REMOVE\": {\n      actions: [\"removeToast\", \"removeHeight\", \"ignoreMouseEventsTemporarily\"]\n    },\n    \"TOAST.PAUSE\": {\n      actions: [\"pauseToasts\"]\n    }\n  },\n  states: {\n    stack: {\n      on: {\n        \"REGION.POINTER_LEAVE\": [\n          {\n            guard: \"isOverlapping\",\n            target: \"overlap\",\n            actions: [\"clearPointerWithin\", \"resumeToasts\", \"collapseToasts\"]\n          },\n          {\n            actions: [\"clearPointerWithin\", \"resumeToasts\"]\n          }\n        ],\n        \"REGION.OVERLAP\": {\n          target: \"overlap\",\n          actions: [\"collapseToasts\"]\n        },\n        \"REGION.FOCUS\": {\n          actions: [\"setLastFocusedEl\", \"pauseToasts\"]\n        },\n        \"REGION.POINTER_ENTER\": {\n          actions: [\"setPointerWithin\", \"pauseToasts\"]\n        }\n      }\n    },\n    overlap: {\n      on: {\n        \"REGION.STACK\": {\n          target: \"stack\",\n          actions: [\"expandToasts\"]\n        },\n        \"REGION.POINTER_ENTER\": {\n          target: \"stack\",\n          actions: [\"setPointerWithin\", \"pauseToasts\", \"expandToasts\"]\n        },\n        \"REGION.FOCUS\": {\n          target: \"stack\",\n          actions: [\"setLastFocusedEl\", \"pauseToasts\", \"expandToasts\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      isOverlapping: ({ computed }) => computed(\"overlap\"),\n      isPointerOut: ({ refs }) => !refs.get(\"isPointerWithin\")\n    },\n    effects: {\n      subscribeToStore({ context, prop }) {\n        const store = prop(\"store\");\n        context.set(\"toasts\", store.getVisibleToasts());\n        return store.subscribe((toast) => {\n          if (toast.dismiss) {\n            context.set(\"toasts\", (prev) => prev.filter((t) => t.id !== toast.id));\n            return;\n          }\n          context.set(\"toasts\", (prev) => {\n            const index = prev.findIndex((t) => t.id === toast.id);\n            if (index !== -1) {\n              return [...prev.slice(0, index), { ...prev[index], ...toast }, ...prev.slice(index + 1)];\n            }\n            return [toast, ...prev];\n          });\n        });\n      },\n      trackHotKeyPress({ prop, send }) {\n        const handleKeyDown = (event) => {\n          const { hotkey } = prop(\"store\").attrs;\n          const isHotkeyPressed = hotkey.every((key) => event[key] || event.code === key);\n          if (!isHotkeyPressed) return;\n          send({ type: \"DOC.HOTKEY\" });\n        };\n        return addDomEvent(document, \"keydown\", handleKeyDown, { capture: true });\n      },\n      trackDocumentVisibility({ prop, send, scope }) {\n        const { pauseOnPageIdle } = prop(\"store\").attrs;\n        if (!pauseOnPageIdle) return;\n        const doc = scope.getDoc();\n        return addDomEvent(doc, \"visibilitychange\", () => {\n          const isHidden = doc.visibilityState === \"hidden\";\n          send({ type: isHidden ? \"PAUSE_ALL\" : \"RESUME_ALL\" });\n        });\n      }\n    },\n    actions: {\n      setDismissableBranch({ refs, context, computed, scope }) {\n        const toasts = context.get(\"toasts\");\n        const placement = computed(\"placement\");\n        const hasToasts = toasts.length > 0;\n        if (!hasToasts) {\n          refs.get(\"dismissableCleanup\")?.();\n          return;\n        }\n        if (hasToasts && refs.get(\"dismissableCleanup\")) {\n          return;\n        }\n        const groupEl = () => getRegionEl(scope, placement);\n        const cleanup = trackDismissableBranch(groupEl, { defer: true });\n        refs.set(\"dismissableCleanup\", cleanup);\n      },\n      clearDismissableBranch({ refs }) {\n        refs.get(\"dismissableCleanup\")?.();\n      },\n      focusRegionEl({ scope, computed }) {\n        queueMicrotask(() => {\n          getRegionEl(scope, computed(\"placement\"))?.focus();\n        });\n      },\n      pauseToasts({ prop }) {\n        prop(\"store\").pause();\n      },\n      resumeToasts({ prop }) {\n        prop(\"store\").resume();\n      },\n      expandToasts({ prop }) {\n        prop(\"store\").expand();\n      },\n      collapseToasts({ prop }) {\n        prop(\"store\").collapse();\n      },\n      removeToast({ prop, event }) {\n        prop(\"store\").remove(event.id);\n      },\n      removeHeight({ event, context }) {\n        if (event?.id == null) return;\n        queueMicrotask(() => {\n          context.set(\"heights\", (heights) => heights.filter((height) => height.id !== event.id));\n        });\n      },\n      collapsedIfEmpty({ send, computed }) {\n        if (!computed(\"overlap\") || computed(\"count\") > 1) return;\n        send({ type: \"REGION.OVERLAP\" });\n      },\n      setLastFocusedEl({ refs, event }) {\n        if (refs.get(\"isFocusWithin\") || !event.target) return;\n        refs.set(\"isFocusWithin\", true);\n        refs.set(\"lastFocusedEl\", event.target);\n      },\n      restoreFocusIfPointerOut({ refs }) {\n        if (!refs.get(\"lastFocusedEl\") || refs.get(\"isPointerWithin\")) return;\n        refs.get(\"lastFocusedEl\")?.focus({ preventScroll: true });\n        refs.set(\"lastFocusedEl\", null);\n        refs.set(\"isFocusWithin\", false);\n      },\n      setPointerWithin({ refs }) {\n        refs.set(\"isPointerWithin\", true);\n      },\n      clearPointerWithin({ refs }) {\n        refs.set(\"isPointerWithin\", false);\n        if (refs.get(\"lastFocusedEl\") && !refs.get(\"isFocusWithin\")) {\n          refs.get(\"lastFocusedEl\")?.focus({ preventScroll: true });\n          refs.set(\"lastFocusedEl\", null);\n        }\n      },\n      clearFocusWithin({ refs }) {\n        refs.set(\"isFocusWithin\", false);\n      },\n      clearLastFocusedEl({ refs }) {\n        if (!refs.get(\"lastFocusedEl\")) return;\n        refs.get(\"lastFocusedEl\")?.focus({ preventScroll: true });\n        refs.set(\"lastFocusedEl\", null);\n        refs.set(\"isFocusWithin\", false);\n      },\n      ignoreMouseEventsTemporarily({ refs }) {\n        refs.get(\"ignoreMouseTimer\").request();\n      },\n      clearMouseEventTimer({ refs }) {\n        refs.get(\"ignoreMouseTimer\").cancel();\n      }\n    }\n  }\n});\nfunction connect(service, normalize) {\n  const { state, send, prop, scope, context, computed } = service;\n  const visible = state.hasTag(\"visible\");\n  const paused = state.hasTag(\"paused\");\n  const mounted = context.get(\"mounted\");\n  const frontmost = computed(\"frontmost\");\n  const placement = prop(\"parent\").computed(\"placement\");\n  const type = prop(\"type\");\n  const stacked = prop(\"stacked\");\n  const title = prop(\"title\");\n  const description = prop(\"description\");\n  const action = prop(\"action\");\n  const [side, align = \"center\"] = placement.split(\"-\");\n  return {\n    type,\n    title,\n    description,\n    placement,\n    visible,\n    paused,\n    closable: !!prop(\"closable\"),\n    pause() {\n      send({ type: \"PAUSE\" });\n    },\n    resume() {\n      send({ type: \"RESUME\" });\n    },\n    dismiss() {\n      send({ type: \"DISMISS\", src: \"programmatic\" });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        dir: prop(\"dir\"),\n        id: getRootId(scope),\n        \"data-state\": visible ? \"open\" : \"closed\",\n        \"data-type\": type,\n        \"data-placement\": placement,\n        \"data-align\": align,\n        \"data-side\": side,\n        \"data-mounted\": dataAttr(mounted),\n        \"data-paused\": dataAttr(paused),\n        \"data-first\": dataAttr(frontmost),\n        \"data-sibling\": dataAttr(!frontmost),\n        \"data-stack\": dataAttr(stacked),\n        \"data-overlap\": dataAttr(!stacked),\n        role: \"status\",\n        \"aria-atomic\": \"true\",\n        \"aria-describedby\": description ? getDescriptionId(scope) : void 0,\n        \"aria-labelledby\": title ? getTitleId(scope) : void 0,\n        tabIndex: 0,\n        style: getPlacementStyle(service, visible),\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (event.key == \"Escape\") {\n            send({ type: \"DISMISS\", src: \"keyboard\" });\n            event.preventDefault();\n          }\n        }\n      });\n    },\n    /* Leave a ghost div to avoid setting hover to false when transitioning out */\n    getGhostBeforeProps() {\n      return normalize.element({\n        \"data-ghost\": \"before\",\n        style: getGhostBeforeStyle(service, visible)\n      });\n    },\n    /* Needed to avoid setting hover to false when in between toasts */\n    getGhostAfterProps() {\n      return normalize.element({\n        \"data-ghost\": \"after\",\n        style: getGhostAfterStyle()\n      });\n    },\n    getTitleProps() {\n      return normalize.element({\n        ...parts.title.attrs,\n        id: getTitleId(scope)\n      });\n    },\n    getDescriptionProps() {\n      return normalize.element({\n        ...parts.description.attrs,\n        id: getDescriptionId(scope)\n      });\n    },\n    getActionTriggerProps() {\n      return normalize.button({\n        ...parts.actionTrigger.attrs,\n        type: \"button\",\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          action?.onClick?.();\n          send({ type: \"DISMISS\", src: \"user\" });\n        }\n      });\n    },\n    getCloseTriggerProps() {\n      return normalize.button({\n        id: getCloseTriggerId(scope),\n        ...parts.closeTrigger.attrs,\n        type: \"button\",\n        \"aria-label\": \"Dismiss notification\",\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: \"DISMISS\", src: \"user\" });\n        }\n      });\n    }\n  };\n}\nvar { not } = createGuards();\nvar machine = createMachine$1({\n  props({ props }) {\n    ensureProps(props, [\"id\", \"type\", \"parent\", \"removeDelay\"], \"toast\");\n    return {\n      closable: true,\n      ...props,\n      duration: getToastDuration(props.duration, props.type)\n    };\n  },\n  initialState({ prop }) {\n    const persist = prop(\"type\") === \"loading\" || prop(\"duration\") === Infinity;\n    return persist ? \"visible:persist\" : \"visible\";\n  },\n  context({ prop, bindable }) {\n    return {\n      remainingTime: bindable(() => ({\n        defaultValue: getToastDuration(prop(\"duration\"), prop(\"type\"))\n      })),\n      createdAt: bindable(() => ({\n        defaultValue: Date.now()\n      })),\n      mounted: bindable(() => ({\n        defaultValue: false\n      })),\n      initialHeight: bindable(() => ({\n        defaultValue: 0\n      }))\n    };\n  },\n  refs() {\n    return {\n      closeTimerStartTime: Date.now(),\n      lastCloseStartTimerStartTime: 0\n    };\n  },\n  computed: {\n    zIndex: ({ prop }) => {\n      const toasts = prop(\"parent\").context.get(\"toasts\");\n      const index = toasts.findIndex((toast) => toast.id === prop(\"id\"));\n      return toasts.length - index;\n    },\n    height: ({ prop }) => {\n      const heights = prop(\"parent\").context.get(\"heights\");\n      const height = heights.find((height2) => height2.id === prop(\"id\"));\n      return height?.height ?? 0;\n    },\n    heightIndex: ({ prop }) => {\n      const heights = prop(\"parent\").context.get(\"heights\");\n      return heights.findIndex((height) => height.id === prop(\"id\"));\n    },\n    frontmost: ({ prop }) => prop(\"index\") === 0,\n    heightBefore: ({ prop }) => {\n      const heights = prop(\"parent\").context.get(\"heights\");\n      const heightIndex = heights.findIndex((height) => height.id === prop(\"id\"));\n      return heights.reduce((prev, curr, reducerIndex) => {\n        if (reducerIndex >= heightIndex) return prev;\n        return prev + curr.height;\n      }, 0);\n    },\n    shouldPersist: ({ prop }) => prop(\"type\") === \"loading\" || prop(\"duration\") === Infinity\n  },\n  watch({ track, prop, send }) {\n    track([() => prop(\"message\")], () => {\n      const message = prop(\"message\");\n      if (message) send({ type: message, src: \"programmatic\" });\n    });\n    track([() => prop(\"type\"), () => prop(\"duration\")], () => {\n      send({ type: \"UPDATE\" });\n    });\n  },\n  on: {\n    UPDATE: [\n      {\n        guard: \"shouldPersist\",\n        target: \"visible:persist\",\n        actions: [\"resetCloseTimer\"]\n      },\n      {\n        target: \"visible:updating\",\n        actions: [\"resetCloseTimer\"]\n      }\n    ],\n    MEASURE: {\n      actions: [\"measureHeight\"]\n    }\n  },\n  entry: [\"setMounted\", \"measureHeight\", \"invokeOnVisible\"],\n  effects: [\"trackHeight\"],\n  states: {\n    \"visible:updating\": {\n      tags: [\"visible\", \"updating\"],\n      effects: [\"waitForNextTick\"],\n      on: {\n        SHOW: {\n          target: \"visible\"\n        }\n      }\n    },\n    \"visible:persist\": {\n      tags: [\"visible\", \"paused\"],\n      on: {\n        RESUME: {\n          guard: not(\"isLoadingType\"),\n          target: \"visible\",\n          actions: [\"setCloseTimer\"]\n        },\n        DISMISS: {\n          target: \"dismissing\"\n        }\n      }\n    },\n    visible: {\n      tags: [\"visible\"],\n      effects: [\"waitForDuration\"],\n      on: {\n        DISMISS: {\n          target: \"dismissing\"\n        },\n        PAUSE: {\n          target: \"visible:persist\",\n          actions: [\"syncRemainingTime\"]\n        }\n      }\n    },\n    dismissing: {\n      entry: [\"invokeOnDismiss\"],\n      effects: [\"waitForRemoveDelay\"],\n      on: {\n        REMOVE: {\n          target: \"unmounted\",\n          actions: [\"notifyParentToRemove\"]\n        }\n      }\n    },\n    unmounted: {\n      entry: [\"invokeOnUnmount\"]\n    }\n  },\n  implementations: {\n    effects: {\n      waitForRemoveDelay({ prop, send }) {\n        return setRafTimeout(() => {\n          send({ type: \"REMOVE\", src: \"timer\" });\n        }, prop(\"removeDelay\"));\n      },\n      waitForDuration({ send, context, computed }) {\n        if (computed(\"shouldPersist\")) return;\n        return setRafTimeout(() => {\n          send({ type: \"DISMISS\", src: \"timer\" });\n        }, context.get(\"remainingTime\"));\n      },\n      waitForNextTick({ send }) {\n        return setRafTimeout(() => {\n          send({ type: \"SHOW\", src: \"timer\" });\n        }, 0);\n      },\n      trackHeight({ scope, prop }) {\n        let cleanup;\n        raf(() => {\n          const rootEl = getRootEl(scope);\n          if (!rootEl) return;\n          const syncHeight = () => {\n            const originalHeight = rootEl.style.height;\n            rootEl.style.height = \"auto\";\n            const height = rootEl.getBoundingClientRect().height;\n            rootEl.style.height = originalHeight;\n            const item = { id: prop(\"id\"), height };\n            setHeight(prop(\"parent\"), item);\n          };\n          const win = scope.getWin();\n          const observer = new win.MutationObserver(syncHeight);\n          observer.observe(rootEl, {\n            childList: true,\n            subtree: true,\n            characterData: true\n          });\n          cleanup = () => observer.disconnect();\n        });\n        return () => cleanup?.();\n      }\n    },\n    guards: {\n      isLoadingType: ({ prop }) => prop(\"type\") === \"loading\",\n      shouldPersist: ({ computed }) => computed(\"shouldPersist\")\n    },\n    actions: {\n      setMounted({ context }) {\n        raf(() => {\n          context.set(\"mounted\", true);\n        });\n      },\n      measureHeight({ scope, prop, context }) {\n        queueMicrotask(() => {\n          const rootEl = getRootEl(scope);\n          if (!rootEl) return;\n          const originalHeight = rootEl.style.height;\n          rootEl.style.height = \"auto\";\n          const height = rootEl.getBoundingClientRect().height;\n          rootEl.style.height = originalHeight;\n          context.set(\"initialHeight\", height);\n          const item = { id: prop(\"id\"), height };\n          setHeight(prop(\"parent\"), item);\n        });\n      },\n      setCloseTimer({ refs }) {\n        refs.set(\"closeTimerStartTime\", Date.now());\n      },\n      resetCloseTimer({ context, refs, prop }) {\n        refs.set(\"closeTimerStartTime\", Date.now());\n        context.set(\"remainingTime\", getToastDuration(prop(\"duration\"), prop(\"type\")));\n      },\n      syncRemainingTime({ context, refs }) {\n        context.set(\"remainingTime\", (prev) => {\n          const closeTimerStartTime = refs.get(\"closeTimerStartTime\");\n          const elapsedTime = Date.now() - closeTimerStartTime;\n          refs.set(\"lastCloseStartTimerStartTime\", Date.now());\n          return prev - elapsedTime;\n        });\n      },\n      notifyParentToRemove({ prop }) {\n        const parent = prop(\"parent\");\n        parent.send({ type: \"TOAST.REMOVE\", id: prop(\"id\") });\n      },\n      invokeOnDismiss({ prop, event }) {\n        prop(\"onStatusChange\")?.({ status: \"dismissing\", src: event.src });\n      },\n      invokeOnUnmount({ prop }) {\n        prop(\"onStatusChange\")?.({ status: \"unmounted\" });\n      },\n      invokeOnVisible({ prop }) {\n        prop(\"onStatusChange\")?.({ status: \"visible\" });\n      }\n    }\n  }\n});\nfunction setHeight(parent, item) {\n  const { id, height } = item;\n  parent.context.set(\"heights\", (prev) => {\n    const alreadyExists = prev.find((i) => i.id === id);\n    if (!alreadyExists) {\n      return [{ id, height }, ...prev];\n    } else {\n      return prev.map((i) => i.id === id ? { ...i, height } : i);\n    }\n  });\n}\nvar withDefaults = (options, defaults) => {\n  return { ...defaults, ...compact(options) };\n};\nfunction createToastStore(props = {}) {\n  const attrs = withDefaults(props, {\n    placement: \"bottom\",\n    overlap: false,\n    max: 24,\n    gap: 16,\n    offsets: \"1rem\",\n    hotkey: [\"altKey\", \"KeyT\"],\n    removeDelay: 200,\n    pauseOnPageIdle: true\n  });\n  let subscribers = [];\n  let toasts = [];\n  let dismissedToasts = /* @__PURE__ */ new Set();\n  let toastQueue = [];\n  const subscribe = (subscriber) => {\n    subscribers.push(subscriber);\n    return () => {\n      const index = subscribers.indexOf(subscriber);\n      subscribers.splice(index, 1);\n    };\n  };\n  const publish = (data) => {\n    subscribers.forEach((subscriber) => subscriber(data));\n    return data;\n  };\n  const addToast = (data) => {\n    if (toasts.length >= attrs.max) {\n      toastQueue.push(data);\n      return;\n    }\n    publish(data);\n    toasts.unshift(data);\n  };\n  const processQueue = () => {\n    while (toastQueue.length > 0 && toasts.length < attrs.max) {\n      const nextToast = toastQueue.shift();\n      if (nextToast) {\n        publish(nextToast);\n        toasts.unshift(nextToast);\n      }\n    }\n  };\n  const create = (data) => {\n    const id = data.id ?? `toast:${uuid()}`;\n    const exists = toasts.find((toast) => toast.id === id);\n    if (dismissedToasts.has(id)) dismissedToasts.delete(id);\n    if (exists) {\n      toasts = toasts.map((toast) => {\n        if (toast.id === id) {\n          return publish({ ...toast, ...data, id });\n        }\n        return toast;\n      });\n    } else {\n      addToast({\n        id,\n        duration: attrs.duration,\n        removeDelay: attrs.removeDelay,\n        type: \"info\",\n        ...data,\n        stacked: !attrs.overlap,\n        gap: attrs.gap\n      });\n    }\n    return id;\n  };\n  const remove = (id) => {\n    dismissedToasts.add(id);\n    if (!id) {\n      toasts.forEach((toast) => {\n        subscribers.forEach((subscriber) => subscriber({ id: toast.id, dismiss: true }));\n      });\n      toasts = [];\n      toastQueue = [];\n    } else {\n      subscribers.forEach((subscriber) => subscriber({ id, dismiss: true }));\n      toasts = toasts.filter((toast) => toast.id !== id);\n      processQueue();\n    }\n    return id;\n  };\n  const error = (data) => {\n    return create({ ...data, type: \"error\" });\n  };\n  const success = (data) => {\n    return create({ ...data, type: \"success\" });\n  };\n  const info = (data) => {\n    return create({ ...data, type: \"info\" });\n  };\n  const warning = (data) => {\n    return create({ ...data, type: \"warning\" });\n  };\n  const loading = (data) => {\n    return create({ ...data, type: \"loading\" });\n  };\n  const getVisibleToasts = () => {\n    return toasts.filter((toast) => !dismissedToasts.has(toast.id));\n  };\n  const getCount = () => {\n    return toasts.length;\n  };\n  const promise = (promise2, options, shared = {}) => {\n    if (!options || !options.loading) {\n      warn(\"[zag-js > toast] toaster.promise() requires at least a 'loading' option to be specified\");\n      return;\n    }\n    const id = create({\n      ...shared,\n      ...options.loading,\n      promise: promise2,\n      type: \"loading\"\n    });\n    let removable = true;\n    let result;\n    const prom = runIfFn(promise2).then(async (response) => {\n      result = [\"resolve\", response];\n      if (isHttpResponse(response) && !response.ok) {\n        removable = false;\n        const errorOptions = runIfFn(options.error, `HTTP Error! status: ${response.status}`);\n        create({ ...shared, ...errorOptions, id, type: \"error\" });\n      } else if (options.success !== void 0) {\n        removable = false;\n        const successOptions = runIfFn(options.success, response);\n        create({ ...shared, ...successOptions, id, type: \"success\" });\n      }\n    }).catch(async (error2) => {\n      result = [\"reject\", error2];\n      if (options.error !== void 0) {\n        removable = false;\n        const errorOptions = runIfFn(options.error, error2);\n        create({ ...shared, ...errorOptions, id, type: \"error\" });\n      }\n    }).finally(() => {\n      if (removable) {\n        remove(id);\n      }\n      options.finally?.();\n    });\n    const unwrap = () => new Promise(\n      (resolve, reject) => prom.then(() => result[0] === \"reject\" ? reject(result[1]) : resolve(result[1])).catch(reject)\n    );\n    return { id, unwrap };\n  };\n  const update = (id, data) => {\n    return create({ id, ...data });\n  };\n  const pause = (id) => {\n    if (id != null) {\n      toasts = toasts.map((toast) => {\n        if (toast.id === id) return publish({ ...toast, message: \"PAUSE\" });\n        return toast;\n      });\n    } else {\n      toasts = toasts.map((toast) => publish({ ...toast, message: \"PAUSE\" }));\n    }\n  };\n  const resume = (id) => {\n    if (id != null) {\n      toasts = toasts.map((toast) => {\n        if (toast.id === id) return publish({ ...toast, message: \"RESUME\" });\n        return toast;\n      });\n    } else {\n      toasts = toasts.map((toast) => publish({ ...toast, message: \"RESUME\" }));\n    }\n  };\n  const dismiss = (id) => {\n    if (id != null) {\n      toasts = toasts.map((toast) => {\n        if (toast.id === id) return publish({ ...toast, message: \"DISMISS\" });\n        return toast;\n      });\n    } else {\n      toasts = toasts.map((toast) => publish({ ...toast, message: \"DISMISS\" }));\n    }\n  };\n  const isVisible = (id) => {\n    return !dismissedToasts.has(id) && !!toasts.find((toast) => toast.id === id);\n  };\n  const isDismissed = (id) => {\n    return dismissedToasts.has(id);\n  };\n  const expand = () => {\n    toasts = toasts.map((toast) => publish({ ...toast, stacked: true }));\n  };\n  const collapse = () => {\n    toasts = toasts.map((toast) => publish({ ...toast, stacked: false }));\n  };\n  return {\n    attrs,\n    subscribe,\n    create,\n    update,\n    remove,\n    dismiss,\n    error,\n    success,\n    info,\n    warning,\n    loading,\n    getVisibleToasts,\n    getCount,\n    promise,\n    pause,\n    resume,\n    isVisible,\n    isDismissed,\n    expand,\n    collapse\n  };\n}\nvar isHttpResponse = (data) => {\n  return data && typeof data === \"object\" && \"ok\" in data && typeof data.ok === \"boolean\" && \"status\" in data && typeof data.status === \"number\";\n};\n\n// src/index.ts\nvar group = {\n  connect: groupConnect,\n  machine: groupMachine\n};\n\nexport { anatomy, connect, createToastStore as createStore, group, machine };\n", "import * as toast from \"@zag-js/toast\";\nimport type { Store } from \"@zag-js/toast\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport { Component } from \"../lib/core\";\nimport { generateId } from \"../lib/util\";\n\nexport const toastGroups = new Map<string, ToastGroup>();\nexport const toastStores = new Map<string, Store>();\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ToastItemProps<T = any> = toast.Props<T> & {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  parent: any;\n  index: number;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class ToastItem<T = any> extends Component<ToastItemProps<T>, toast.Api> {\n  private parts!: {\n    title: HTMLElement;\n    description: HTMLElement;\n    close: HTMLElement;\n    ghostBefore: HTMLElement;\n    ghostAfter: HTMLElement;\n    progressbar: HTMLElement;\n    loadingSpinner: HTMLElement;\n  };\n  duration?: number | string;\n\n  constructor(el: HTMLElement, props: ToastItemProps<T>) {\n    super(el, props);\n\n    this.duration = props.duration;\n\n    this.el.setAttribute(\"data-scope\", \"toast\");\n    this.el.setAttribute(\"data-part\", \"root\");\n\n    this.el.innerHTML = `\n      <span data-scope=\"toast\" data-part=\"ghost-before\"></span>\n      <div data-scope=\"toast\" data-part=\"progressbar\"></div>\n      <div data-scope=\"toast\" data-part=\"loading-spinner\" style=\"display: none;\"></div>\n\n      <div data-scope=\"toast\" data-part=\"content\">\n        <div data-scope=\"toast\" data-part=\"title\"></div>\n        <div data-scope=\"toast\" data-part=\"description\"></div>\n      </div>\n\n      <button data-scope=\"toast\" data-part=\"close-trigger\">\n        <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\n          <path d=\"M4.293 4.293 10 8.586l5.707-5.707 1.414 1.414L11.414 10l5.707 5.707-1.414 1.414L10 11.414l-5.707 5.707-1.414-1.414L8.586 10 2.879 4.293z\"/>\n        </svg>\n      </button>\n\n      <span data-scope=\"toast\" data-part=\"ghost-after\"></span>\n    `;\n\n    this.parts = {\n      title: this.el.querySelector('[data-scope=\"toast\"][data-part=\"title\"]')!,\n      description: this.el.querySelector('[data-scope=\"toast\"][data-part=\"description\"]')!,\n      close: this.el.querySelector('[data-scope=\"toast\"][data-part=\"close-trigger\"]')!,\n      ghostBefore: this.el.querySelector('[data-scope=\"toast\"][data-part=\"ghost-before\"]')!,\n      ghostAfter: this.el.querySelector('[data-scope=\"toast\"][data-part=\"ghost-after\"]')!,\n      progressbar: this.el.querySelector('[data-scope=\"toast\"][data-part=\"progressbar\"]')!,\n      loadingSpinner: this.el.querySelector('[data-scope=\"toast\"][data-part=\"loading-spinner\"]')!,\n    };\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  initMachine(props: toast.Props<T>): VanillaMachine<any> {\n    return new VanillaMachine(toast.machine, props);\n  }\n\n  initApi(): toast.Api {\n    return toast.connect(this.machine.service, normalizeProps);\n  }\n\n  render() {\n    this.spreadProps(this.el, this.api.getRootProps());\n    this.spreadProps(this.parts.close, this.api.getCloseTriggerProps());\n\n    this.spreadProps(this.parts.ghostBefore, this.api.getGhostBeforeProps());\n    this.spreadProps(this.parts.ghostAfter, this.api.getGhostAfterProps());\n\n    if (this.parts.title.textContent !== this.api.title) {\n      this.parts.title.textContent = this.api.title ?? \"\";\n    }\n\n    if (this.parts.description.textContent !== this.api.description) {\n      this.parts.description.textContent = this.api.description ?? \"\";\n    }\n\n    this.spreadProps(this.parts.title, this.api.getTitleProps());\n    this.spreadProps(this.parts.description, this.api.getDescriptionProps());\n\n    const duration = this.duration;\n    const isInfinity = duration === \"Infinity\" || duration === Infinity || duration === Number.POSITIVE_INFINITY;\n    const toastGroup = this.el.closest('[phx-hook=\"Toast\"]') as HTMLElement;\n    const loadingIconTemplate = toastGroup?.querySelector('[data-loading-icon-template]') as HTMLElement;\n    const loadingIcon = loadingIconTemplate?.innerHTML;\n\n    if (isInfinity) {\n      this.parts.progressbar.style.display = \"none\";\n      this.parts.loadingSpinner.style.display = \"flex\";\n      this.el.setAttribute(\"data-duration-infinity\", \"true\");\n      if (loadingIcon && this.parts.loadingSpinner.innerHTML !== loadingIcon) {\n        this.parts.loadingSpinner.innerHTML = loadingIcon;\n      }\n    } else {\n      this.parts.progressbar.style.display = \"block\";\n      this.parts.loadingSpinner.style.display = \"none\";\n      this.el.removeAttribute(\"data-duration-infinity\");\n    }\n  }\n\n  destroy = () => {\n    this.machine.stop();\n    this.el.remove();\n  };\n}\n\nexport class ToastGroup extends Component<toast.GroupProps, toast.GroupApi> {\n  private toastComponents = new Map<string, ToastItem>();\n  private groupEl: HTMLElement;\n  public store: Store;\n\n  constructor(el: HTMLElement, props: toast.GroupProps) {\n    super(el, props);\n\n    this.store = props.store;\n\n    this.groupEl =\n      el.querySelector('[data-part=\"group\"]') ??\n      (() => {\n        const g = document.createElement(\"div\");\n        g.setAttribute(\"data-scope\", \"toast\");\n        g.setAttribute(\"data-part\", \"group\");\n        el.appendChild(g);\n        return g;\n      })();\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  initMachine(props: toast.GroupProps): VanillaMachine<any> {\n    return new VanillaMachine(toast.group.machine, props);\n  }\n\n  initApi(): toast.GroupApi {\n    return toast.group.connect(this.machine.service, normalizeProps);\n  }\n\n  render() {\n    this.spreadProps(this.groupEl, this.api.getGroupProps());\n\n    const toasts = this.api\n      .getToasts()\n      .filter((t): t is toast.Props & { id: string } => typeof t.id === \"string\");\n\n    const nextIds = new Set(toasts.map((t) => t.id));\n\n    toasts.forEach((toastData, index) => {\n      let item = this.toastComponents.get(toastData.id);\n\n      if (!item) {\n        const el = document.createElement(\"div\");\n        el.setAttribute(\"data-scope\", \"toast\");\n        el.setAttribute(\"data-part\", \"root\");\n        this.groupEl.appendChild(el);\n\n        item = new ToastItem(el, {\n          ...toastData,\n          parent: this.machine.service,\n          index,\n        });\n\n        item.init();\n        this.toastComponents.set(toastData.id, item);\n      } else {\n        item.duration = toastData.duration;\n        item.updateProps({\n          ...toastData,\n          parent: this.machine.service,\n          index,\n        });\n      }\n    });\n\n    for (const [id, comp] of this.toastComponents) {\n      if (!nextIds.has(id)) {\n        comp.destroy();\n        this.toastComponents.delete(id);\n      }\n    }\n  }\n\n  destroy = () => {\n    for (const comp of this.toastComponents.values()) {\n      comp.destroy();\n    }\n    this.toastComponents.clear();\n    this.machine.stop();\n  };\n}\n\n\nexport function createToastGroup(\n  container: HTMLElement,\n  options?: Partial<toast.StoreProps> & {\n    id?: string;\n    store?: Store;\n  }\n) {\n  const groupId = options?.id ?? generateId(container, \"toast\");\n\n  const store =\n    options?.store ??\n    toast.createStore({\n      placement: options?.placement ?? \"bottom\",\n      overlap: options?.overlap,\n      max: options?.max,\n      gap: options?.gap,\n      offsets: options?.offsets,\n      pauseOnPageIdle: options?.pauseOnPageIdle,\n    });\n\n  const group = new ToastGroup(container, { id: groupId, store });\n  group.init();\n\n  toastGroups.set(groupId, group);\n  toastStores.set(groupId, store);\n\n  container.dataset.toastGroup = \"true\";\n  container.dataset.toastGroupId = groupId;\n\n  return { group, store };\n}\n\nexport function getToastStore(groupId?: string): Store | undefined {\n  if (groupId) return toastStores.get(groupId);\n\n  const el = document.querySelector<HTMLElement>(\"[data-toast-group]\");\n  if (!el) return;\n\n  const id = el.dataset.toastGroupId || el.id;\n  return id ? toastStores.get(id) : undefined;\n}\n\nexport function createToast(options: toast.Options & { groupId?: string }) {\n  const store = getToastStore(options.groupId);\n  if (!store) throw new Error(\"No toast store found\");\n\n  store.create({\n    ...options,\n    id: options.id ?? generateId(undefined, \"toast\"),\n  });\n}\n\nexport function updateToast(id: string, options: Partial<toast.Props>, groupId?: string) {\n  getToastStore(groupId)?.update(id, options);\n}\n\nexport function dismissToast(id: string, groupId?: string) {\n  getToastStore(groupId)?.dismiss(id);\n}\n", "import type { Hook } from \"phoenix_live_view\";\nimport type { HookInterface, CallbackRef } from \"phoenix_live_view/assets/js/types/view_hook\";\n\nimport { createToastGroup, getToastStore } from \"../components/toast\";\nimport type { Placement } from \"@zag-js/toast\";\n\nimport { getString, getBoolean, getNumber, generateId } from \"../lib/util\";\n\ntype ToastPayload = {\n  title: string;\n  description?: string;\n  type?: \"info\" | \"success\" | \"error\";\n  id?: string;\n  duration?: number | string;\n  groupId?: string;\n};\n\ntype ToastHookState = {\n  groupId: string;\n  handlers?: Array<CallbackRef>;\n};\n\nconst ToastHook: Hook<object & ToastHookState, HTMLElement> = {\n  mounted(this: object & HookInterface<HTMLElement> & ToastHookState) {\n    const el = this.el;\n\n    if (!el.id) {\n      el.id = generateId(el, \"toast\");\n    }\n    this.groupId = el.id;\n\n    const parseOffsets = (offsetsString?: string) => {\n      if (!offsetsString) return undefined;\n      try {\n        return offsetsString.includes(\"{\") ? JSON.parse(offsetsString) : offsetsString;\n      } catch {\n        return offsetsString;\n      }\n    };\n\n    const parseDuration = (duration?: number | string): number | undefined => {\n      if (duration === \"Infinity\" || duration === Infinity) {\n        return Infinity;\n      }\n      if (typeof duration === \"string\") {\n        return parseInt(duration, 10) || undefined;\n      }\n      return duration;\n    };\n\n    const placement = getString<Placement>(el, \"placement\", [\n      \"top-start\", \"top\", \"top-end\",\n      \"bottom-start\", \"bottom\", \"bottom-end\",\n    ]) ?? \"bottom-end\";\n\n    createToastGroup(el, {\n      id: this.groupId,\n      placement,\n      overlap: getBoolean(el, \"overlap\"),\n      max: getNumber(el, \"max\"),\n      gap: getNumber(el, \"gap\"),\n      offsets: parseOffsets(getString(el, \"offset\")),\n      pauseOnPageIdle: getBoolean(el, \"pauseOnPageIdle\"),\n    });\n\n    const store = getToastStore(this.groupId);\n    const flashInfo = el.getAttribute(\"data-flash-info\");\n    const flashInfoTitle = el.getAttribute(\"data-flash-info-title\");\n    const flashError = el.getAttribute(\"data-flash-error\");\n    const flashErrorTitle = el.getAttribute(\"data-flash-error-title\");\n    const flashInfoDuration = el.getAttribute(\"data-flash-info-duration\");\n    const flashErrorDuration = el.getAttribute(\"data-flash-error-duration\");\n\n    if (store && flashInfo) {\n      try {\n        store.create({\n          title: flashInfoTitle || \"Success\",\n          description: flashInfo,\n          type: \"info\",\n          id: generateId(undefined, \"toast\"),\n          duration: parseDuration(flashInfoDuration ?? undefined),\n        });\n      } catch (error) {\n        console.error(\"Failed to create flash info toast:\", error);\n      }\n    }\n\n    if (store && flashError) {\n      try {\n        store.create({\n          title: flashErrorTitle || \"Error\",\n          description: flashError,\n          type: \"error\",\n          id: generateId(undefined, \"toast\"),\n          duration: parseDuration(flashErrorDuration ?? undefined),\n        });\n      } catch (error) {\n        console.error(\"Failed to create flash error toast:\", error);\n      }\n    }\n\n    this.handlers = [];\n\n    this.handlers.push(\n      this.handleEvent(\"toast-create\", (payload: ToastPayload) => {\n        const store = getToastStore(payload.groupId || this.groupId);\n        if (!store) return;\n\n        try {\n          store.create({\n            title: payload.title,\n            description: payload.description,\n            type: payload.type || \"info\",\n            id: payload.id || generateId(undefined, \"toast\"),\n            duration: parseDuration(payload.duration),\n          });\n        } catch (error) {\n          console.error(\"Failed to create toast:\", error);\n        }\n      })\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"toast-update\", (payload: Omit<ToastPayload, \"duration\">) => {\n        const store = getToastStore(payload.groupId || this.groupId);\n        if (!store) return;\n\n        try {\n          store.update(payload.id!, {\n            title: payload.title,\n            description: payload.description,\n            type: payload.type,\n          });\n        } catch (error) {\n          console.error(\"Failed to update toast:\", error);\n        }\n      })\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"toast-dismiss\", (payload: { id: string; groupId?: string }) => {\n        const store = getToastStore(payload.groupId || this.groupId);\n        if (!store) return;\n\n        try {\n          store.dismiss(payload.id);\n        } catch (error) {\n          console.error(\"Failed to dismiss toast:\", error);\n        }\n      })\n    );\n\n    el.addEventListener(\"toast:create\", ((event: CustomEvent<ToastPayload>) => {\n      const { detail } = event;\n      const store = getToastStore(detail.groupId || this.groupId);\n      if (!store) return;\n\n      try {\n        store.create({\n          title: detail.title,\n          description: detail.description,\n          type: detail.type || \"info\",\n          id: detail.id || generateId(undefined, \"toast\"),\n          duration: parseDuration(detail.duration),\n        });\n      } catch (error) {\n        console.error(\"Failed to create toast:\", error);\n      }\n    }) as EventListener);\n\n  },\n\n  destroyed(this: object & HookInterface<HTMLElement> & ToastHookState) {\n    if (this.handlers) {\n      for (const handler of this.handlers) {\n        this.removeHandleEvent(handler);\n      }\n    }\n  },\n};\n\nexport { ToastHook as Toast };", "import { createAnatomy } from '@zag-js/anatomy';\nimport { raf, prevById, nextById, queryAll, contains, getEventTarget, getEventKey, isSafari, dataAttr } from '@zag-js/dom-query';\nimport { ensureProps, isArray, addOrRemove, isEqual, createSplitProps, last, first } from '@zag-js/utils';\nimport { createGuards, createMachine } from '@zag-js/core';\nimport { createProps } from '@zag-js/types';\n\n// src/toggle-group.anatomy.ts\nvar anatomy = createAnatomy(\"toggle-group\").parts(\"root\", \"item\");\nvar parts = anatomy.build();\nvar getRootId = (ctx) => ctx.ids?.root ?? `toggle-group:${ctx.id}`;\nvar getItemId = (ctx, value) => ctx.ids?.item?.(value) ?? `toggle-group:${ctx.id}:${value}`;\nvar getRootEl = (ctx) => ctx.getById(getRootId(ctx));\nvar getElements = (ctx) => {\n  const ownerId = CSS.escape(getRootId(ctx));\n  const selector = `[data-ownedby='${ownerId}']:not([data-disabled])`;\n  return queryAll(getRootEl(ctx), selector);\n};\nvar getFirstEl = (ctx) => first(getElements(ctx));\nvar getLastEl = (ctx) => last(getElements(ctx));\nvar getNextEl = (ctx, id, loopFocus) => nextById(getElements(ctx), id, loopFocus);\nvar getPrevEl = (ctx, id, loopFocus) => prevById(getElements(ctx), id, loopFocus);\n\n// src/toggle-group.connect.ts\nfunction connect(service, normalize) {\n  const { context, send, prop, scope } = service;\n  const value = context.get(\"value\");\n  const disabled = prop(\"disabled\");\n  const isSingle = !prop(\"multiple\");\n  const rovingFocus = prop(\"rovingFocus\");\n  const isHorizontal = prop(\"orientation\") === \"horizontal\";\n  function getItemState(props2) {\n    const id = getItemId(scope, props2.value);\n    return {\n      id,\n      disabled: Boolean(props2.disabled || disabled),\n      pressed: !!value.includes(props2.value),\n      focused: context.get(\"focusedId\") === id\n    };\n  }\n  return {\n    value,\n    setValue(value2) {\n      send({ type: \"VALUE.SET\", value: value2 });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        id: getRootId(scope),\n        dir: prop(\"dir\"),\n        role: isSingle ? \"radiogroup\" : \"group\",\n        tabIndex: context.get(\"isTabbingBackward\") ? -1 : 0,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-orientation\": prop(\"orientation\"),\n        \"data-focus\": dataAttr(context.get(\"focusedId\") != null),\n        style: { outline: \"none\" },\n        onMouseDown() {\n          if (disabled) return;\n          send({ type: \"ROOT.MOUSE_DOWN\" });\n        },\n        onFocus(event) {\n          if (disabled) return;\n          if (event.currentTarget !== getEventTarget(event)) return;\n          if (context.get(\"isClickFocus\")) return;\n          if (context.get(\"isTabbingBackward\")) return;\n          send({ type: \"ROOT.FOCUS\" });\n        },\n        onBlur(event) {\n          const target = event.relatedTarget;\n          if (contains(event.currentTarget, target)) return;\n          if (disabled) return;\n          send({ type: \"ROOT.BLUR\" });\n        }\n      });\n    },\n    getItemState,\n    getItemProps(props2) {\n      const itemState = getItemState(props2);\n      const rovingTabIndex = itemState.focused ? 0 : -1;\n      return normalize.button({\n        ...parts.item.attrs,\n        id: itemState.id,\n        type: \"button\",\n        \"data-ownedby\": getRootId(scope),\n        \"data-focus\": dataAttr(itemState.focused),\n        disabled: itemState.disabled,\n        tabIndex: rovingFocus ? rovingTabIndex : void 0,\n        // radio\n        role: isSingle ? \"radio\" : void 0,\n        \"aria-checked\": isSingle ? itemState.pressed : void 0,\n        \"aria-pressed\": isSingle ? void 0 : itemState.pressed,\n        //\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-orientation\": prop(\"orientation\"),\n        dir: prop(\"dir\"),\n        \"data-state\": itemState.pressed ? \"on\" : \"off\",\n        onFocus() {\n          if (itemState.disabled) return;\n          send({ type: \"TOGGLE.FOCUS\", id: itemState.id });\n        },\n        onClick(event) {\n          if (itemState.disabled) return;\n          send({ type: \"TOGGLE.CLICK\", id: itemState.id, value: props2.value });\n          if (isSafari()) {\n            event.currentTarget.focus({ preventScroll: true });\n          }\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (!contains(event.currentTarget, getEventTarget(event))) return;\n          if (itemState.disabled) return;\n          const keyMap = {\n            Tab(event2) {\n              const isShiftTab = event2.shiftKey;\n              send({ type: \"TOGGLE.SHIFT_TAB\", isShiftTab });\n            },\n            ArrowLeft() {\n              if (!rovingFocus || !isHorizontal) return;\n              send({ type: \"TOGGLE.FOCUS_PREV\" });\n            },\n            ArrowRight() {\n              if (!rovingFocus || !isHorizontal) return;\n              send({ type: \"TOGGLE.FOCUS_NEXT\" });\n            },\n            ArrowUp() {\n              if (!rovingFocus || isHorizontal) return;\n              send({ type: \"TOGGLE.FOCUS_PREV\" });\n            },\n            ArrowDown() {\n              if (!rovingFocus || isHorizontal) return;\n              send({ type: \"TOGGLE.FOCUS_NEXT\" });\n            },\n            Home() {\n              if (!rovingFocus) return;\n              send({ type: \"TOGGLE.FOCUS_FIRST\" });\n            },\n            End() {\n              if (!rovingFocus) return;\n              send({ type: \"TOGGLE.FOCUS_LAST\" });\n            }\n          };\n          const exec = keyMap[getEventKey(event)];\n          if (exec) {\n            exec(event);\n            if (event.key !== \"Tab\") event.preventDefault();\n          }\n        }\n      });\n    }\n  };\n}\nvar { not, and } = createGuards();\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      defaultValue: [],\n      orientation: \"horizontal\",\n      rovingFocus: true,\n      loopFocus: true,\n      deselectable: true,\n      ...props2\n    };\n  },\n  initialState() {\n    return \"idle\";\n  },\n  context({ prop, bindable }) {\n    return {\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        onChange(value) {\n          prop(\"onValueChange\")?.({ value });\n        }\n      })),\n      focusedId: bindable(() => ({\n        defaultValue: null\n      })),\n      isTabbingBackward: bindable(() => ({\n        defaultValue: false\n      })),\n      isClickFocus: bindable(() => ({\n        defaultValue: false\n      })),\n      isWithinToolbar: bindable(() => ({\n        defaultValue: false\n      }))\n    };\n  },\n  computed: {\n    currentLoopFocus: ({ context, prop }) => prop(\"loopFocus\") && !context.get(\"isWithinToolbar\")\n  },\n  entry: [\"checkIfWithinToolbar\"],\n  on: {\n    \"VALUE.SET\": {\n      actions: [\"setValue\"]\n    },\n    \"TOGGLE.CLICK\": {\n      actions: [\"setValue\"]\n    },\n    \"ROOT.MOUSE_DOWN\": {\n      actions: [\"setClickFocus\"]\n    }\n  },\n  states: {\n    idle: {\n      on: {\n        \"ROOT.FOCUS\": {\n          target: \"focused\",\n          guard: not(and(\"isClickFocus\", \"isTabbingBackward\")),\n          actions: [\"focusFirstToggle\", \"clearClickFocus\"]\n        },\n        \"TOGGLE.FOCUS\": {\n          target: \"focused\",\n          actions: [\"setFocusedId\"]\n        }\n      }\n    },\n    focused: {\n      on: {\n        \"ROOT.BLUR\": {\n          target: \"idle\",\n          actions: [\"clearIsTabbingBackward\", \"clearFocusedId\", \"clearClickFocus\"]\n        },\n        \"TOGGLE.FOCUS\": {\n          actions: [\"setFocusedId\"]\n        },\n        \"TOGGLE.FOCUS_NEXT\": {\n          actions: [\"focusNextToggle\"]\n        },\n        \"TOGGLE.FOCUS_PREV\": {\n          actions: [\"focusPrevToggle\"]\n        },\n        \"TOGGLE.FOCUS_FIRST\": {\n          actions: [\"focusFirstToggle\"]\n        },\n        \"TOGGLE.FOCUS_LAST\": {\n          actions: [\"focusLastToggle\"]\n        },\n        \"TOGGLE.SHIFT_TAB\": [\n          {\n            guard: not(\"isFirstToggleFocused\"),\n            target: \"idle\",\n            actions: [\"setIsTabbingBackward\"]\n          },\n          {\n            actions: [\"setIsTabbingBackward\"]\n          }\n        ]\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      isClickFocus: ({ context }) => context.get(\"isClickFocus\"),\n      isTabbingBackward: ({ context }) => context.get(\"isTabbingBackward\"),\n      isFirstToggleFocused: ({ context, scope }) => context.get(\"focusedId\") === getFirstEl(scope)?.id\n    },\n    actions: {\n      setIsTabbingBackward({ context }) {\n        context.set(\"isTabbingBackward\", true);\n      },\n      clearIsTabbingBackward({ context }) {\n        context.set(\"isTabbingBackward\", false);\n      },\n      setClickFocus({ context }) {\n        context.set(\"isClickFocus\", true);\n      },\n      clearClickFocus({ context }) {\n        context.set(\"isClickFocus\", false);\n      },\n      checkIfWithinToolbar({ context, scope }) {\n        const closestToolbar = getRootEl(scope)?.closest(\"[role=toolbar]\");\n        context.set(\"isWithinToolbar\", !!closestToolbar);\n      },\n      setFocusedId({ context, event }) {\n        context.set(\"focusedId\", event.id);\n      },\n      clearFocusedId({ context }) {\n        context.set(\"focusedId\", null);\n      },\n      setValue({ context, event, prop }) {\n        ensureProps(event, [\"value\"]);\n        let next = context.get(\"value\");\n        if (isArray(event.value)) {\n          next = event.value;\n        } else if (prop(\"multiple\")) {\n          next = addOrRemove(next, event.value);\n        } else {\n          const isSelected = isEqual(next, [event.value]);\n          next = isSelected && prop(\"deselectable\") ? [] : [event.value];\n        }\n        context.set(\"value\", next);\n      },\n      focusNextToggle({ context, scope, prop }) {\n        raf(() => {\n          const focusedId = context.get(\"focusedId\");\n          if (!focusedId) return;\n          getNextEl(scope, focusedId, prop(\"loopFocus\"))?.focus({ preventScroll: true });\n        });\n      },\n      focusPrevToggle({ context, scope, prop }) {\n        raf(() => {\n          const focusedId = context.get(\"focusedId\");\n          if (!focusedId) return;\n          getPrevEl(scope, focusedId, prop(\"loopFocus\"))?.focus({ preventScroll: true });\n        });\n      },\n      focusFirstToggle({ scope }) {\n        raf(() => {\n          getFirstEl(scope)?.focus({ preventScroll: true });\n        });\n      },\n      focusLastToggle({ scope }) {\n        raf(() => {\n          getLastEl(scope)?.focus({ preventScroll: true });\n        });\n      }\n    }\n  }\n});\nvar props = createProps()([\n  \"dir\",\n  \"disabled\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"loopFocus\",\n  \"multiple\",\n  \"onValueChange\",\n  \"orientation\",\n  \"rovingFocus\",\n  \"value\",\n  \"defaultValue\",\n  \"deselectable\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemProps = createProps()([\"value\", \"disabled\"]);\nvar splitItemProps = createSplitProps(itemProps);\n\nexport { anatomy, connect, itemProps, machine, props, splitItemProps, splitProps };\n", "import * as toggleGroup from \"@zag-js/toggle-group\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport { Component } from \"../lib/core\";\nimport { getString, getBoolean } from \"../lib/util\";\n\nexport class ToggleGroup extends Component<toggleGroup.Props, toggleGroup.Api> {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  initMachine(props: toggleGroup.Props): VanillaMachine<any> {\n    return new VanillaMachine(toggleGroup.machine, props);\n  }\n\n  initApi(): toggleGroup.Api {\n    return toggleGroup.connect(this.machine.service, normalizeProps);\n  }\n\n  render(): void {\n    const rootEl = this.el.querySelector<HTMLElement>('[data-scope=\"toggle-group\"][data-part=\"root\"]');\n    if (!rootEl) return;\n    this.spreadProps(rootEl, this.api.getRootProps());\n\n    const items = this.el.querySelectorAll<HTMLElement>('[data-scope=\"toggle-group\"][data-part=\"item\"]');\n\n    for (let i = 0; i < items.length; i++) {\n      const itemEl = items[i];\n      const value = getString(itemEl, \"value\");\n      if (!value) continue;\n\n      const disabled = getBoolean(itemEl, \"disabled\");\n      this.spreadProps(itemEl, this.api.getItemProps({ value, disabled }));\n\n    }\n  }\n}\n", "import type { Hook } from \"phoenix_live_view\";\nimport type { HookInterface, CallbackRef } from \"phoenix_live_view/assets/js/types/view_hook\";\nimport { ToggleGroup } from \"../components/toggle-group\";\nimport type { ValueChangeDetails, Props } from \"@zag-js/toggle-group\";\nimport type { Direction, Orientation } from \"@zag-js/types\";\n\nimport { getString, getBoolean, getStringList } from \"../lib/util\";\n\ntype ToggleGroupHookState = {\n  toggleGroup?: ToggleGroup;\n  handlers?: Array<CallbackRef>;\n  onSetValue?: (event: Event) => void;\n};\n\nconst ToggleGroupHook: Hook<object & ToggleGroupHookState, HTMLElement> = {\n  mounted(this: object & HookInterface<HTMLElement> & ToggleGroupHookState) {\n    const el = this.el;\n    const pushEvent = this.pushEvent.bind(this);\n    const props: Props = {\n      id: el.id,\n      ...(getBoolean(el, \"controlled\")\n      ? { value: getStringList(el, \"value\") }\n      : { defaultValue: getStringList(el, \"defaultValue\") }),\n      defaultValue: getStringList(el, \"defaultValue\"),\n      deselectable: getBoolean(el, \"deselectable\"),\n      loopFocus: getBoolean(el, \"loopFocus\"),\n      rovingFocus: getBoolean(el, \"rovingFocus\"),\n      disabled: getBoolean(el, \"disabled\"),\n      multiple: getBoolean(el, \"multiple\"),\n      orientation: getString<Orientation>(el, \"orientation\", [\"horizontal\", \"vertical\"]),\n      dir: getString<Direction>(el, \"dir\", [\"ltr\", \"rtl\"]),\n      onValueChange: (details: ValueChangeDetails) => {\n        const eventName = getString(el, \"onValueChange\");\n        if (eventName && !this.liveSocket.main.isDead && this.liveSocket.main.isConnected()) {\n          pushEvent(eventName, {\n            value: details.value,\n            id: el.id,\n          });\n        }\n\n        const eventNameClient = getString(el, \"onValueChangeClient\");\n        if (eventNameClient) {\n          el.dispatchEvent(\n            new CustomEvent(eventNameClient, {\n              bubbles: true,\n              detail: {\n                value: details.value,\n                id: el.id,\n              },\n            })\n          );\n        }\n      },\n    };\n\n    const toggleGroup = new ToggleGroup(el, props);\n    toggleGroup.init();\n    this.toggleGroup = toggleGroup;\n\n    this.onSetValue = (event: Event) => {\n      const { value } = (event as CustomEvent<{ value: string[] }>).detail;\n      toggleGroup.api.setValue(value);\n    };\n    el.addEventListener(\"phx:toggle-group:set-value\", this.onSetValue);\n\n    this.handlers = [];\n\n    this.handlers.push(\n      this.handleEvent(\n        \"toggle-group_set_value\",\n        (payload: { id?: string; value: string[] }) => {\n          const targetId = payload.id;\n          if (targetId && targetId !== el.id) return;\n          toggleGroup.api.setValue(payload.value);\n        }\n      )\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"toggle-group:value\", () => {\n        this.pushEvent(\"toggle-group:value_response\", {\n          value: toggleGroup.api.value,\n        });\n      })\n    );\n  },\n\n  updated(this: object & HookInterface<HTMLElement> & ToggleGroupHookState) {\n    this.toggleGroup?.updateProps({\n      ...(getBoolean(this.el, \"controlled\")\n      ? { value: getStringList(this.el, \"value\") }\n      : { defaultValue: getStringList(this.el, \"defaultValue\") }),\n      deselectable: getBoolean(this.el, \"deselectable\"),\n      loopFocus: getBoolean(this.el, \"loopFocus\"),\n      rovingFocus: getBoolean(this.el, \"rovingFocus\"),\n      disabled: getBoolean(this.el, \"disabled\"),\n      multiple: getBoolean(this.el, \"multiple\"),\n      orientation: getString<Orientation>(this.el, \"orientation\", [\"horizontal\", \"vertical\"]),\n      dir: getString<Direction>(this.el, \"dir\", [\"ltr\", \"rtl\"]),\n    });\n  },\n\n  destroyed(this: object & HookInterface<HTMLElement> & ToggleGroupHookState) {\n    if (this.onSetValue) {\n      this.el.removeEventListener(\"phx:toggle-group:set-value\", this.onSetValue);\n    }\n\n    if (this.handlers) {\n      for (const handler of this.handlers) {\n        this.removeHandleEvent(handler);\n      }\n    }\n\n    this.toggleGroup?.destroy();\n  },\n};\n\nexport { ToggleGroupHook as ToggleGroup };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { TreeCollection, filePathToTree } from '@zag-js/collection';\nimport { setElementValue, getByTypeahead, raf, isComposingEvent, isLeftClick, dataAttr, isAnchorElement, isModifierKey, ariaAttr, getEventTarget, isEditableElement, getEventKey } from '@zag-js/dom-query';\nimport { addOrRemove, first, uniq, diff, isArray, toArray, remove, last, isEqual, createSplitProps, add, partition, ensure } from '@zag-js/utils';\nimport { createGuards, createMachine } from '@zag-js/core';\nimport { createProps } from '@zag-js/types';\n\n// src/tree-view.anatomy.ts\nvar anatomy = createAnatomy(\"tree-view\").parts(\n  \"branch\",\n  \"branchContent\",\n  \"branchControl\",\n  \"branchIndentGuide\",\n  \"branchIndicator\",\n  \"branchText\",\n  \"branchTrigger\",\n  \"item\",\n  \"itemIndicator\",\n  \"itemText\",\n  \"label\",\n  \"nodeCheckbox\",\n  \"nodeRenameInput\",\n  \"root\",\n  \"tree\"\n);\nvar parts = anatomy.build();\nvar collection = (options) => {\n  return new TreeCollection(options);\n};\ncollection.empty = () => {\n  return new TreeCollection({ rootNode: { children: [] } });\n};\nfunction filePathCollection(paths) {\n  return filePathToTree(paths);\n}\n\n// src/tree-view.dom.ts\nvar getRootId = (ctx) => ctx.ids?.root ?? `tree:${ctx.id}:root`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `tree:${ctx.id}:label`;\nvar getNodeId = (ctx, value) => ctx.ids?.node?.(value) ?? `tree:${ctx.id}:node:${value}`;\nvar getTreeId = (ctx) => ctx.ids?.tree ?? `tree:${ctx.id}:tree`;\nvar focusNode = (ctx, value) => {\n  if (value == null) return;\n  ctx.getById(getNodeId(ctx, value))?.focus();\n};\nvar getRenameInputId = (ctx, value) => `tree:${ctx.id}:rename-input:${value}`;\nvar getRenameInputEl = (ctx, value) => {\n  return ctx.getById(getRenameInputId(ctx, value));\n};\nfunction getCheckedState(collection2, node, checkedValue) {\n  const value = collection2.getNodeValue(node);\n  if (!collection2.isBranchNode(node)) {\n    return checkedValue.includes(value);\n  }\n  const childValues = collection2.getDescendantValues(value);\n  const allChecked = childValues.every((v) => checkedValue.includes(v));\n  const someChecked = childValues.some((v) => checkedValue.includes(v));\n  return allChecked ? true : someChecked ? \"indeterminate\" : false;\n}\nfunction toggleBranchChecked(collection2, value, checkedValue) {\n  const childValues = collection2.getDescendantValues(value);\n  const allChecked = childValues.every((child) => checkedValue.includes(child));\n  return uniq(allChecked ? remove(checkedValue, ...childValues) : add(checkedValue, ...childValues));\n}\nfunction getCheckedValueMap(collection2, checkedValue) {\n  const map = /* @__PURE__ */ new Map();\n  collection2.visit({\n    onEnter: (node) => {\n      const value = collection2.getNodeValue(node);\n      const isBranch = collection2.isBranchNode(node);\n      const checked = getCheckedState(collection2, node, checkedValue);\n      map.set(value, {\n        type: isBranch ? \"branch\" : \"leaf\",\n        checked\n      });\n    }\n  });\n  return map;\n}\n\n// src/tree-view.connect.ts\nfunction connect(service, normalize) {\n  const { context, scope, computed, prop, send } = service;\n  const collection2 = prop(\"collection\");\n  const expandedValue = Array.from(context.get(\"expandedValue\"));\n  const selectedValue = Array.from(context.get(\"selectedValue\"));\n  const checkedValue = Array.from(context.get(\"checkedValue\"));\n  const isTypingAhead = computed(\"isTypingAhead\");\n  const focusedValue = context.get(\"focusedValue\");\n  const loadingStatus = context.get(\"loadingStatus\");\n  const renamingValue = context.get(\"renamingValue\");\n  const skip = ({ indexPath }) => {\n    const paths = collection2.getValuePath(indexPath).slice(0, -1);\n    return paths.some((value) => !expandedValue.includes(value));\n  };\n  const firstNode = collection2.getFirstNode(void 0, { skip });\n  const firstNodeValue = firstNode ? collection2.getNodeValue(firstNode) : null;\n  function getNodeState(props2) {\n    const { node, indexPath } = props2;\n    const value = collection2.getNodeValue(node);\n    return {\n      id: getNodeId(scope, value),\n      value,\n      indexPath,\n      valuePath: collection2.getValuePath(indexPath),\n      disabled: Boolean(node.disabled),\n      focused: focusedValue == null ? firstNodeValue === value : focusedValue === value,\n      selected: selectedValue.includes(value),\n      expanded: expandedValue.includes(value),\n      loading: loadingStatus[value] === \"loading\",\n      depth: indexPath.length,\n      isBranch: collection2.isBranchNode(node),\n      renaming: renamingValue === value,\n      get checked() {\n        return getCheckedState(collection2, node, checkedValue);\n      }\n    };\n  }\n  return {\n    collection: collection2,\n    expandedValue,\n    selectedValue,\n    checkedValue,\n    toggleChecked(value, isBranch) {\n      send({ type: \"CHECKED.TOGGLE\", value, isBranch });\n    },\n    setChecked(value) {\n      send({ type: \"CHECKED.SET\", value });\n    },\n    clearChecked() {\n      send({ type: \"CHECKED.CLEAR\" });\n    },\n    getCheckedMap() {\n      return getCheckedValueMap(collection2, checkedValue);\n    },\n    expand(value) {\n      send({ type: value ? \"BRANCH.EXPAND\" : \"EXPANDED.ALL\", value });\n    },\n    collapse(value) {\n      send({ type: value ? \"BRANCH.COLLAPSE\" : \"EXPANDED.CLEAR\", value });\n    },\n    deselect(value) {\n      send({ type: value ? \"NODE.DESELECT\" : \"SELECTED.CLEAR\", value });\n    },\n    select(value) {\n      send({ type: value ? \"NODE.SELECT\" : \"SELECTED.ALL\", value, isTrusted: false });\n    },\n    getVisibleNodes() {\n      return computed(\"visibleNodes\");\n    },\n    focus(value) {\n      focusNode(scope, value);\n    },\n    selectParent(value) {\n      const parentNode = collection2.getParentNode(value);\n      if (!parentNode) return;\n      const _selectedValue = add(selectedValue, collection2.getNodeValue(parentNode));\n      send({ type: \"SELECTED.SET\", value: _selectedValue, src: \"select.parent\" });\n    },\n    expandParent(value) {\n      const parentNode = collection2.getParentNode(value);\n      if (!parentNode) return;\n      const _expandedValue = add(expandedValue, collection2.getNodeValue(parentNode));\n      send({ type: \"EXPANDED.SET\", value: _expandedValue, src: \"expand.parent\" });\n    },\n    setExpandedValue(value) {\n      const _expandedValue = uniq(value);\n      send({ type: \"EXPANDED.SET\", value: _expandedValue });\n    },\n    setSelectedValue(value) {\n      const _selectedValue = uniq(value);\n      send({ type: \"SELECTED.SET\", value: _selectedValue });\n    },\n    startRenaming(value) {\n      send({ type: \"NODE.RENAME\", value });\n    },\n    submitRenaming(value, label) {\n      send({ type: \"RENAME.SUBMIT\", value, label });\n    },\n    cancelRenaming() {\n      send({ type: \"RENAME.CANCEL\" });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        id: getRootId(scope),\n        dir: prop(\"dir\")\n      });\n    },\n    getLabelProps() {\n      return normalize.element({\n        ...parts.label.attrs,\n        id: getLabelId(scope),\n        dir: prop(\"dir\")\n      });\n    },\n    getTreeProps() {\n      return normalize.element({\n        ...parts.tree.attrs,\n        id: getTreeId(scope),\n        dir: prop(\"dir\"),\n        role: \"tree\",\n        \"aria-label\": \"Tree View\",\n        \"aria-labelledby\": getLabelId(scope),\n        \"aria-multiselectable\": prop(\"selectionMode\") === \"multiple\" || void 0,\n        tabIndex: -1,\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (isComposingEvent(event)) return;\n          const target = getEventTarget(event);\n          if (isEditableElement(target)) return;\n          const node = target?.closest(\"[data-part=branch-control], [data-part=item]\");\n          if (!node) return;\n          const nodeId = node.dataset.value;\n          if (nodeId == null) {\n            console.warn(`[zag-js/tree-view] Node id not found for node`, node);\n            return;\n          }\n          const isBranchNode = node.matches(\"[data-part=branch-control]\");\n          const keyMap = {\n            ArrowDown(event2) {\n              if (isModifierKey(event2)) return;\n              event2.preventDefault();\n              send({ type: \"NODE.ARROW_DOWN\", id: nodeId, shiftKey: event2.shiftKey });\n            },\n            ArrowUp(event2) {\n              if (isModifierKey(event2)) return;\n              event2.preventDefault();\n              send({ type: \"NODE.ARROW_UP\", id: nodeId, shiftKey: event2.shiftKey });\n            },\n            ArrowLeft(event2) {\n              if (isModifierKey(event2) || node.dataset.disabled) return;\n              event2.preventDefault();\n              send({ type: isBranchNode ? \"BRANCH_NODE.ARROW_LEFT\" : \"NODE.ARROW_LEFT\", id: nodeId });\n            },\n            ArrowRight(event2) {\n              if (!isBranchNode || node.dataset.disabled) return;\n              event2.preventDefault();\n              send({ type: \"BRANCH_NODE.ARROW_RIGHT\", id: nodeId });\n            },\n            Home(event2) {\n              if (isModifierKey(event2)) return;\n              event2.preventDefault();\n              send({ type: \"NODE.HOME\", id: nodeId, shiftKey: event2.shiftKey });\n            },\n            End(event2) {\n              if (isModifierKey(event2)) return;\n              event2.preventDefault();\n              send({ type: \"NODE.END\", id: nodeId, shiftKey: event2.shiftKey });\n            },\n            Space(event2) {\n              if (node.dataset.disabled) return;\n              if (isTypingAhead) {\n                send({ type: \"TREE.TYPEAHEAD\", key: event2.key });\n              } else {\n                keyMap.Enter?.(event2);\n              }\n            },\n            Enter(event2) {\n              if (node.dataset.disabled) return;\n              if (isAnchorElement(target) && isModifierKey(event2)) return;\n              send({ type: isBranchNode ? \"BRANCH_NODE.CLICK\" : \"NODE.CLICK\", id: nodeId, src: \"keyboard\" });\n              if (!isAnchorElement(target)) {\n                event2.preventDefault();\n              }\n            },\n            \"*\"(event2) {\n              if (node.dataset.disabled) return;\n              event2.preventDefault();\n              send({ type: \"SIBLINGS.EXPAND\", id: nodeId });\n            },\n            a(event2) {\n              if (!event2.metaKey || node.dataset.disabled) return;\n              event2.preventDefault();\n              send({ type: \"SELECTED.ALL\", moveFocus: true });\n            },\n            F2(event2) {\n              if (node.dataset.disabled) return;\n              const canRenameFn = prop(\"canRename\");\n              if (!canRenameFn) return;\n              const indexPath = collection2.getIndexPath(nodeId);\n              if (indexPath) {\n                const node2 = collection2.at(indexPath);\n                if (node2 && !canRenameFn(node2, indexPath)) {\n                  return;\n                }\n              }\n              event2.preventDefault();\n              send({ type: \"NODE.RENAME\", value: nodeId });\n            }\n          };\n          const key = getEventKey(event, { dir: prop(\"dir\") });\n          const exec = keyMap[key];\n          if (exec) {\n            exec(event);\n            return;\n          }\n          if (!getByTypeahead.isValidEvent(event)) return;\n          send({ type: \"TREE.TYPEAHEAD\", key: event.key, id: nodeId });\n          event.preventDefault();\n        }\n      });\n    },\n    getNodeState,\n    getItemProps(props2) {\n      const nodeState = getNodeState(props2);\n      return normalize.element({\n        ...parts.item.attrs,\n        id: nodeState.id,\n        dir: prop(\"dir\"),\n        \"data-ownedby\": getTreeId(scope),\n        \"data-path\": props2.indexPath.join(\"/\"),\n        \"data-value\": nodeState.value,\n        tabIndex: nodeState.focused ? 0 : -1,\n        \"data-focus\": dataAttr(nodeState.focused),\n        role: \"treeitem\",\n        \"aria-current\": nodeState.selected ? \"true\" : void 0,\n        \"aria-selected\": nodeState.disabled ? void 0 : nodeState.selected,\n        \"data-selected\": dataAttr(nodeState.selected),\n        \"aria-disabled\": ariaAttr(nodeState.disabled),\n        \"data-disabled\": dataAttr(nodeState.disabled),\n        \"data-renaming\": dataAttr(nodeState.renaming),\n        \"aria-level\": nodeState.depth,\n        \"data-depth\": nodeState.depth,\n        style: {\n          \"--depth\": nodeState.depth\n        },\n        onFocus(event) {\n          event.stopPropagation();\n          send({ type: \"NODE.FOCUS\", id: nodeState.value });\n        },\n        onClick(event) {\n          if (nodeState.disabled) return;\n          if (!isLeftClick(event)) return;\n          if (isAnchorElement(event.currentTarget) && isModifierKey(event)) return;\n          const isMetaKey = event.metaKey || event.ctrlKey;\n          send({ type: \"NODE.CLICK\", id: nodeState.value, shiftKey: event.shiftKey, ctrlKey: isMetaKey });\n          event.stopPropagation();\n          if (!isAnchorElement(event.currentTarget)) {\n            event.preventDefault();\n          }\n        }\n      });\n    },\n    getItemTextProps(props2) {\n      const itemState = getNodeState(props2);\n      return normalize.element({\n        ...parts.itemText.attrs,\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-selected\": dataAttr(itemState.selected),\n        \"data-focus\": dataAttr(itemState.focused)\n      });\n    },\n    getItemIndicatorProps(props2) {\n      const itemState = getNodeState(props2);\n      return normalize.element({\n        ...parts.itemIndicator.attrs,\n        \"aria-hidden\": true,\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-selected\": dataAttr(itemState.selected),\n        \"data-focus\": dataAttr(itemState.focused),\n        hidden: !itemState.selected\n      });\n    },\n    getBranchProps(props2) {\n      const nodeState = getNodeState(props2);\n      return normalize.element({\n        ...parts.branch.attrs,\n        \"data-depth\": nodeState.depth,\n        dir: prop(\"dir\"),\n        \"data-branch\": nodeState.value,\n        role: \"treeitem\",\n        \"data-ownedby\": getTreeId(scope),\n        \"data-value\": nodeState.value,\n        \"aria-level\": nodeState.depth,\n        \"aria-selected\": nodeState.disabled ? void 0 : nodeState.selected,\n        \"data-path\": props2.indexPath.join(\"/\"),\n        \"data-selected\": dataAttr(nodeState.selected),\n        \"aria-expanded\": nodeState.expanded,\n        \"data-state\": nodeState.expanded ? \"open\" : \"closed\",\n        \"aria-disabled\": ariaAttr(nodeState.disabled),\n        \"data-disabled\": dataAttr(nodeState.disabled),\n        \"data-loading\": dataAttr(nodeState.loading),\n        \"aria-busy\": ariaAttr(nodeState.loading),\n        style: {\n          \"--depth\": nodeState.depth\n        }\n      });\n    },\n    getBranchIndicatorProps(props2) {\n      const nodeState = getNodeState(props2);\n      return normalize.element({\n        ...parts.branchIndicator.attrs,\n        \"aria-hidden\": true,\n        \"data-state\": nodeState.expanded ? \"open\" : \"closed\",\n        \"data-disabled\": dataAttr(nodeState.disabled),\n        \"data-selected\": dataAttr(nodeState.selected),\n        \"data-focus\": dataAttr(nodeState.focused),\n        \"data-loading\": dataAttr(nodeState.loading)\n      });\n    },\n    getBranchTriggerProps(props2) {\n      const nodeState = getNodeState(props2);\n      return normalize.element({\n        ...parts.branchTrigger.attrs,\n        role: \"button\",\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(nodeState.disabled),\n        \"data-state\": nodeState.expanded ? \"open\" : \"closed\",\n        \"data-value\": nodeState.value,\n        \"data-loading\": dataAttr(nodeState.loading),\n        disabled: nodeState.loading,\n        onClick(event) {\n          if (nodeState.disabled || nodeState.loading) return;\n          send({ type: \"BRANCH_TOGGLE.CLICK\", id: nodeState.value });\n          event.stopPropagation();\n        }\n      });\n    },\n    getBranchControlProps(props2) {\n      const nodeState = getNodeState(props2);\n      return normalize.element({\n        ...parts.branchControl.attrs,\n        role: \"button\",\n        id: nodeState.id,\n        dir: prop(\"dir\"),\n        tabIndex: nodeState.focused ? 0 : -1,\n        \"data-path\": props2.indexPath.join(\"/\"),\n        \"data-state\": nodeState.expanded ? \"open\" : \"closed\",\n        \"data-disabled\": dataAttr(nodeState.disabled),\n        \"data-selected\": dataAttr(nodeState.selected),\n        \"data-focus\": dataAttr(nodeState.focused),\n        \"data-renaming\": dataAttr(nodeState.renaming),\n        \"data-value\": nodeState.value,\n        \"data-depth\": nodeState.depth,\n        \"data-loading\": dataAttr(nodeState.loading),\n        \"aria-busy\": ariaAttr(nodeState.loading),\n        onFocus(event) {\n          send({ type: \"NODE.FOCUS\", id: nodeState.value });\n          event.stopPropagation();\n        },\n        onClick(event) {\n          if (nodeState.disabled) return;\n          if (nodeState.loading) return;\n          if (!isLeftClick(event)) return;\n          if (isAnchorElement(event.currentTarget) && isModifierKey(event)) return;\n          const isMetaKey = event.metaKey || event.ctrlKey;\n          send({ type: \"BRANCH_NODE.CLICK\", id: nodeState.value, shiftKey: event.shiftKey, ctrlKey: isMetaKey });\n          event.stopPropagation();\n        }\n      });\n    },\n    getBranchTextProps(props2) {\n      const nodeState = getNodeState(props2);\n      return normalize.element({\n        ...parts.branchText.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(nodeState.disabled),\n        \"data-state\": nodeState.expanded ? \"open\" : \"closed\",\n        \"data-loading\": dataAttr(nodeState.loading)\n      });\n    },\n    getBranchContentProps(props2) {\n      const nodeState = getNodeState(props2);\n      return normalize.element({\n        ...parts.branchContent.attrs,\n        role: \"group\",\n        dir: prop(\"dir\"),\n        \"data-state\": nodeState.expanded ? \"open\" : \"closed\",\n        \"data-depth\": nodeState.depth,\n        \"data-path\": props2.indexPath.join(\"/\"),\n        \"data-value\": nodeState.value,\n        hidden: !nodeState.expanded\n      });\n    },\n    getBranchIndentGuideProps(props2) {\n      const nodeState = getNodeState(props2);\n      return normalize.element({\n        ...parts.branchIndentGuide.attrs,\n        \"data-depth\": nodeState.depth\n      });\n    },\n    getNodeCheckboxProps(props2) {\n      const nodeState = getNodeState(props2);\n      const checkedState = nodeState.checked;\n      return normalize.element({\n        ...parts.nodeCheckbox.attrs,\n        tabIndex: -1,\n        role: \"checkbox\",\n        \"data-state\": checkedState === true ? \"checked\" : checkedState === false ? \"unchecked\" : \"indeterminate\",\n        \"aria-checked\": checkedState === true ? \"true\" : checkedState === false ? \"false\" : \"mixed\",\n        \"data-disabled\": dataAttr(nodeState.disabled),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (nodeState.disabled) return;\n          if (!isLeftClick(event)) return;\n          send({ type: \"CHECKED.TOGGLE\", value: nodeState.value, isBranch: nodeState.isBranch });\n          event.stopPropagation();\n          const node = event.currentTarget.closest(\"[role=treeitem]\");\n          node?.focus({ preventScroll: true });\n        }\n      });\n    },\n    getNodeRenameInputProps(props2) {\n      const nodeState = getNodeState(props2);\n      return normalize.input({\n        ...parts.nodeRenameInput.attrs,\n        id: getRenameInputId(scope, nodeState.value),\n        type: \"text\",\n        \"aria-label\": \"Rename tree item\",\n        hidden: !nodeState.renaming,\n        onKeyDown(event) {\n          if (isComposingEvent(event)) return;\n          if (event.key === \"Escape\") {\n            send({ type: \"RENAME.CANCEL\" });\n            event.preventDefault();\n          }\n          if (event.key === \"Enter\") {\n            send({ type: \"RENAME.SUBMIT\", label: event.currentTarget.value });\n            event.preventDefault();\n          }\n          event.stopPropagation();\n        },\n        onBlur(event) {\n          send({ type: \"RENAME.SUBMIT\", label: event.currentTarget.value });\n        }\n      });\n    }\n  };\n}\nfunction expandBranches(params, values) {\n  const { context, prop, refs } = params;\n  if (!prop(\"loadChildren\")) {\n    context.set(\"expandedValue\", (prev) => uniq(add(prev, ...values)));\n    return;\n  }\n  const loadingStatus = context.get(\"loadingStatus\");\n  const [loadedValues, loadingValues] = partition(values, (value) => loadingStatus[value] === \"loaded\");\n  if (loadedValues.length > 0) {\n    context.set(\"expandedValue\", (prev) => uniq(add(prev, ...loadedValues)));\n  }\n  if (loadingValues.length === 0) return;\n  const collection2 = prop(\"collection\");\n  const [nodeWithChildren, nodeWithoutChildren] = partition(loadingValues, (id) => {\n    const node = collection2.findNode(id);\n    return collection2.getNodeChildren(node).length > 0;\n  });\n  if (nodeWithChildren.length > 0) {\n    context.set(\"expandedValue\", (prev) => uniq(add(prev, ...nodeWithChildren)));\n  }\n  if (nodeWithoutChildren.length === 0) return;\n  context.set(\"loadingStatus\", (prev) => ({\n    ...prev,\n    ...nodeWithoutChildren.reduce((acc, id) => ({ ...acc, [id]: \"loading\" }), {})\n  }));\n  const nodesToLoad = nodeWithoutChildren.map((id) => {\n    const indexPath = collection2.getIndexPath(id);\n    const valuePath = collection2.getValuePath(indexPath);\n    const node = collection2.findNode(id);\n    return { id, indexPath, valuePath, node };\n  });\n  const pendingAborts = refs.get(\"pendingAborts\");\n  const loadChildren = prop(\"loadChildren\");\n  ensure(loadChildren, () => \"[zag-js/tree-view] `loadChildren` is required for async expansion\");\n  const proms = nodesToLoad.map(({ id, indexPath, valuePath, node }) => {\n    const existingAbort = pendingAborts.get(id);\n    if (existingAbort) {\n      existingAbort.abort();\n      pendingAborts.delete(id);\n    }\n    const abortController = new AbortController();\n    pendingAborts.set(id, abortController);\n    return loadChildren({\n      valuePath,\n      indexPath,\n      node,\n      signal: abortController.signal\n    });\n  });\n  Promise.allSettled(proms).then((results) => {\n    const loadedValues2 = [];\n    const nodeWithErrors = [];\n    const nextLoadingStatus = context.get(\"loadingStatus\");\n    let collection3 = prop(\"collection\");\n    results.forEach((result, index) => {\n      const { id, indexPath, node, valuePath } = nodesToLoad[index];\n      if (result.status === \"fulfilled\") {\n        nextLoadingStatus[id] = \"loaded\";\n        loadedValues2.push(id);\n        collection3 = collection3.replace(indexPath, { ...node, children: result.value });\n      } else {\n        pendingAborts.delete(id);\n        Reflect.deleteProperty(nextLoadingStatus, id);\n        nodeWithErrors.push({ node, error: result.reason, indexPath, valuePath });\n      }\n    });\n    context.set(\"loadingStatus\", nextLoadingStatus);\n    if (loadedValues2.length) {\n      context.set(\"expandedValue\", (prev) => uniq(add(prev, ...loadedValues2)));\n      prop(\"onLoadChildrenComplete\")?.({ collection: collection3 });\n    }\n    if (nodeWithErrors.length) {\n      prop(\"onLoadChildrenError\")?.({ nodes: nodeWithErrors });\n    }\n  });\n}\n\n// src/utils/visit-skip.ts\nfunction skipFn(params) {\n  const { prop, context } = params;\n  return function skip({ indexPath }) {\n    const paths = prop(\"collection\").getValuePath(indexPath).slice(0, -1);\n    return paths.some((value) => !context.get(\"expandedValue\").includes(value));\n  };\n}\n\n// src/tree-view.machine.ts\nvar { and } = createGuards();\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      selectionMode: \"single\",\n      collection: collection.empty(),\n      typeahead: true,\n      expandOnClick: true,\n      defaultExpandedValue: [],\n      defaultSelectedValue: [],\n      ...props2\n    };\n  },\n  initialState() {\n    return \"idle\";\n  },\n  context({ prop, bindable, getContext }) {\n    return {\n      expandedValue: bindable(() => ({\n        defaultValue: prop(\"defaultExpandedValue\"),\n        value: prop(\"expandedValue\"),\n        isEqual,\n        onChange(expandedValue) {\n          const ctx = getContext();\n          const focusedValue = ctx.get(\"focusedValue\");\n          prop(\"onExpandedChange\")?.({\n            expandedValue,\n            focusedValue,\n            get expandedNodes() {\n              return prop(\"collection\").findNodes(expandedValue);\n            }\n          });\n        }\n      })),\n      selectedValue: bindable(() => ({\n        defaultValue: prop(\"defaultSelectedValue\"),\n        value: prop(\"selectedValue\"),\n        isEqual,\n        onChange(selectedValue) {\n          const ctx = getContext();\n          const focusedValue = ctx.get(\"focusedValue\");\n          prop(\"onSelectionChange\")?.({\n            selectedValue,\n            focusedValue,\n            get selectedNodes() {\n              return prop(\"collection\").findNodes(selectedValue);\n            }\n          });\n        }\n      })),\n      focusedValue: bindable(() => ({\n        defaultValue: prop(\"defaultFocusedValue\") || null,\n        value: prop(\"focusedValue\"),\n        onChange(focusedValue) {\n          prop(\"onFocusChange\")?.({\n            focusedValue,\n            get focusedNode() {\n              return focusedValue ? prop(\"collection\").findNode(focusedValue) : null;\n            }\n          });\n        }\n      })),\n      loadingStatus: bindable(() => ({\n        defaultValue: {}\n      })),\n      checkedValue: bindable(() => ({\n        defaultValue: prop(\"defaultCheckedValue\") || [],\n        value: prop(\"checkedValue\"),\n        isEqual,\n        onChange(value) {\n          prop(\"onCheckedChange\")?.({ checkedValue: value });\n        }\n      })),\n      renamingValue: bindable(() => ({\n        sync: true,\n        defaultValue: null\n      }))\n    };\n  },\n  refs() {\n    return {\n      typeaheadState: { ...getByTypeahead.defaultOptions },\n      pendingAborts: /* @__PURE__ */ new Map()\n    };\n  },\n  computed: {\n    isMultipleSelection: ({ prop }) => prop(\"selectionMode\") === \"multiple\",\n    isTypingAhead: ({ refs }) => refs.get(\"typeaheadState\").keysSoFar.length > 0,\n    visibleNodes: ({ prop, context }) => {\n      const nodes = [];\n      prop(\"collection\").visit({\n        skip: skipFn({ prop, context }),\n        onEnter: (node, indexPath) => {\n          nodes.push({ node, indexPath });\n        }\n      });\n      return nodes;\n    }\n  },\n  on: {\n    \"EXPANDED.SET\": {\n      actions: [\"setExpanded\"]\n    },\n    \"EXPANDED.CLEAR\": {\n      actions: [\"clearExpanded\"]\n    },\n    \"EXPANDED.ALL\": {\n      actions: [\"expandAllBranches\"]\n    },\n    \"BRANCH.EXPAND\": {\n      actions: [\"expandBranches\"]\n    },\n    \"BRANCH.COLLAPSE\": {\n      actions: [\"collapseBranches\"]\n    },\n    \"SELECTED.SET\": {\n      actions: [\"setSelected\"]\n    },\n    \"SELECTED.ALL\": [\n      {\n        guard: and(\"isMultipleSelection\", \"moveFocus\"),\n        actions: [\"selectAllNodes\", \"focusTreeLastNode\"]\n      },\n      {\n        guard: \"isMultipleSelection\",\n        actions: [\"selectAllNodes\"]\n      }\n    ],\n    \"SELECTED.CLEAR\": {\n      actions: [\"clearSelected\"]\n    },\n    \"NODE.SELECT\": {\n      actions: [\"selectNode\"]\n    },\n    \"NODE.DESELECT\": {\n      actions: [\"deselectNode\"]\n    },\n    \"CHECKED.TOGGLE\": {\n      actions: [\"toggleChecked\"]\n    },\n    \"CHECKED.SET\": {\n      actions: [\"setChecked\"]\n    },\n    \"CHECKED.CLEAR\": {\n      actions: [\"clearChecked\"]\n    },\n    \"NODE.FOCUS\": {\n      actions: [\"setFocusedNode\"]\n    },\n    \"NODE.ARROW_DOWN\": [\n      {\n        guard: and(\"isShiftKey\", \"isMultipleSelection\"),\n        actions: [\"focusTreeNextNode\", \"extendSelectionToNextNode\"]\n      },\n      {\n        actions: [\"focusTreeNextNode\"]\n      }\n    ],\n    \"NODE.ARROW_UP\": [\n      {\n        guard: and(\"isShiftKey\", \"isMultipleSelection\"),\n        actions: [\"focusTreePrevNode\", \"extendSelectionToPrevNode\"]\n      },\n      {\n        actions: [\"focusTreePrevNode\"]\n      }\n    ],\n    \"NODE.ARROW_LEFT\": {\n      actions: [\"focusBranchNode\"]\n    },\n    \"BRANCH_NODE.ARROW_LEFT\": [\n      {\n        guard: \"isBranchExpanded\",\n        actions: [\"collapseBranch\"]\n      },\n      {\n        actions: [\"focusBranchNode\"]\n      }\n    ],\n    \"BRANCH_NODE.ARROW_RIGHT\": [\n      {\n        guard: and(\"isBranchFocused\", \"isBranchExpanded\"),\n        actions: [\"focusBranchFirstNode\"]\n      },\n      {\n        actions: [\"expandBranch\"]\n      }\n    ],\n    \"SIBLINGS.EXPAND\": {\n      actions: [\"expandSiblingBranches\"]\n    },\n    \"NODE.HOME\": [\n      {\n        guard: and(\"isShiftKey\", \"isMultipleSelection\"),\n        actions: [\"extendSelectionToFirstNode\", \"focusTreeFirstNode\"]\n      },\n      {\n        actions: [\"focusTreeFirstNode\"]\n      }\n    ],\n    \"NODE.END\": [\n      {\n        guard: and(\"isShiftKey\", \"isMultipleSelection\"),\n        actions: [\"extendSelectionToLastNode\", \"focusTreeLastNode\"]\n      },\n      {\n        actions: [\"focusTreeLastNode\"]\n      }\n    ],\n    \"NODE.CLICK\": [\n      {\n        guard: and(\"isCtrlKey\", \"isMultipleSelection\"),\n        actions: [\"toggleNodeSelection\"]\n      },\n      {\n        guard: and(\"isShiftKey\", \"isMultipleSelection\"),\n        actions: [\"extendSelectionToNode\"]\n      },\n      {\n        actions: [\"selectNode\"]\n      }\n    ],\n    \"BRANCH_NODE.CLICK\": [\n      {\n        guard: and(\"isCtrlKey\", \"isMultipleSelection\"),\n        actions: [\"toggleNodeSelection\"]\n      },\n      {\n        guard: and(\"isShiftKey\", \"isMultipleSelection\"),\n        actions: [\"extendSelectionToNode\"]\n      },\n      {\n        guard: \"expandOnClick\",\n        actions: [\"selectNode\", \"toggleBranchNode\"]\n      },\n      {\n        actions: [\"selectNode\"]\n      }\n    ],\n    \"BRANCH_TOGGLE.CLICK\": {\n      actions: [\"toggleBranchNode\"]\n    },\n    \"TREE.TYPEAHEAD\": {\n      actions: [\"focusMatchedNode\"]\n    }\n  },\n  exit: [\"clearPendingAborts\"],\n  states: {\n    idle: {\n      on: {\n        \"NODE.RENAME\": {\n          target: \"renaming\",\n          actions: [\"setRenamingValue\"]\n        }\n      }\n    },\n    renaming: {\n      entry: [\"syncRenameInput\", \"focusRenameInput\"],\n      on: {\n        \"RENAME.SUBMIT\": {\n          guard: \"isRenameLabelValid\",\n          target: \"idle\",\n          actions: [\"submitRenaming\"]\n        },\n        \"RENAME.CANCEL\": {\n          target: \"idle\",\n          actions: [\"cancelRenaming\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      isBranchFocused: ({ context, event }) => context.get(\"focusedValue\") === event.id,\n      isBranchExpanded: ({ context, event }) => context.get(\"expandedValue\").includes(event.id),\n      isShiftKey: ({ event }) => event.shiftKey,\n      isCtrlKey: ({ event }) => event.ctrlKey,\n      hasSelectedItems: ({ context }) => context.get(\"selectedValue\").length > 0,\n      isMultipleSelection: ({ prop }) => prop(\"selectionMode\") === \"multiple\",\n      moveFocus: ({ event }) => !!event.moveFocus,\n      expandOnClick: ({ prop }) => !!prop(\"expandOnClick\"),\n      isRenameLabelValid: ({ event }) => event.label.trim() !== \"\"\n    },\n    actions: {\n      selectNode({ context, event }) {\n        const value = event.id || event.value;\n        context.set(\"selectedValue\", (prev) => {\n          if (value == null) return prev;\n          if (!event.isTrusted && isArray(value)) return prev.concat(...value);\n          return [isArray(value) ? last(value) : value].filter(Boolean);\n        });\n      },\n      deselectNode({ context, event }) {\n        const value = toArray(event.id || event.value);\n        context.set(\"selectedValue\", (prev) => remove(prev, ...value));\n      },\n      setFocusedNode({ context, event }) {\n        context.set(\"focusedValue\", event.id);\n      },\n      clearFocusedNode({ context }) {\n        context.set(\"focusedValue\", null);\n      },\n      clearSelectedItem({ context }) {\n        context.set(\"selectedValue\", []);\n      },\n      toggleBranchNode({ context, event, action }) {\n        const isExpanded = context.get(\"expandedValue\").includes(event.id);\n        action(isExpanded ? [\"collapseBranch\"] : [\"expandBranch\"]);\n      },\n      expandBranch(params) {\n        const { event } = params;\n        expandBranches(params, [event.id]);\n      },\n      expandBranches(params) {\n        const { context, event } = params;\n        const valuesToExpand = toArray(event.value);\n        expandBranches(params, diff(valuesToExpand, context.get(\"expandedValue\")));\n      },\n      collapseBranch({ context, event }) {\n        context.set(\"expandedValue\", (prev) => remove(prev, event.id));\n      },\n      collapseBranches(params) {\n        const { context, event } = params;\n        const value = toArray(event.value);\n        context.set(\"expandedValue\", (prev) => remove(prev, ...value));\n      },\n      setExpanded({ context, event }) {\n        if (!isArray(event.value)) return;\n        context.set(\"expandedValue\", event.value);\n      },\n      clearExpanded({ context }) {\n        context.set(\"expandedValue\", []);\n      },\n      setSelected({ context, event }) {\n        if (!isArray(event.value)) return;\n        context.set(\"selectedValue\", event.value);\n      },\n      clearSelected({ context }) {\n        context.set(\"selectedValue\", []);\n      },\n      focusTreeFirstNode(params) {\n        const { prop, scope } = params;\n        const collection2 = prop(\"collection\");\n        const firstNode = collection2.getFirstNode(void 0, { skip: skipFn(params) });\n        if (!firstNode) return;\n        const firstValue = collection2.getNodeValue(firstNode);\n        const scrolled = scrollToNode(params, firstValue);\n        if (scrolled) raf(() => focusNode(scope, firstValue));\n        else focusNode(scope, firstValue);\n      },\n      focusTreeLastNode(params) {\n        const { prop, scope } = params;\n        const collection2 = prop(\"collection\");\n        const lastNode = collection2.getLastNode(void 0, { skip: skipFn(params) });\n        const lastValue = collection2.getNodeValue(lastNode);\n        const scrolled = scrollToNode(params, lastValue);\n        if (scrolled) raf(() => focusNode(scope, lastValue));\n        else focusNode(scope, lastValue);\n      },\n      focusBranchFirstNode(params) {\n        const { event, prop, scope } = params;\n        const collection2 = prop(\"collection\");\n        const branchNode = collection2.findNode(event.id);\n        const firstNode = collection2.getFirstNode(branchNode, { skip: skipFn(params) });\n        if (!firstNode) return;\n        const firstValue = collection2.getNodeValue(firstNode);\n        const scrolled = scrollToNode(params, firstValue);\n        if (scrolled) raf(() => focusNode(scope, firstValue));\n        else focusNode(scope, firstValue);\n      },\n      focusTreeNextNode(params) {\n        const { event, prop, scope } = params;\n        const collection2 = prop(\"collection\");\n        const nextNode = collection2.getNextNode(event.id, { skip: skipFn(params) });\n        if (!nextNode) return;\n        const nextValue = collection2.getNodeValue(nextNode);\n        const scrolled = scrollToNode(params, nextValue);\n        if (scrolled) raf(() => focusNode(scope, nextValue));\n        else focusNode(scope, nextValue);\n      },\n      focusTreePrevNode(params) {\n        const { event, prop, scope } = params;\n        const collection2 = prop(\"collection\");\n        const prevNode = collection2.getPreviousNode(event.id, { skip: skipFn(params) });\n        if (!prevNode) return;\n        const prevValue = collection2.getNodeValue(prevNode);\n        const scrolled = scrollToNode(params, prevValue);\n        if (scrolled) raf(() => focusNode(scope, prevValue));\n        else focusNode(scope, prevValue);\n      },\n      focusBranchNode(params) {\n        const { event, prop, scope } = params;\n        const collection2 = prop(\"collection\");\n        const parentNode = collection2.getParentNode(event.id);\n        const parentValue = parentNode ? collection2.getNodeValue(parentNode) : void 0;\n        if (!parentValue) return;\n        const scrolled = scrollToNode(params, parentValue);\n        if (scrolled) raf(() => focusNode(scope, parentValue));\n        else focusNode(scope, parentValue);\n      },\n      selectAllNodes({ context, prop }) {\n        context.set(\"selectedValue\", prop(\"collection\").getValues());\n      },\n      focusMatchedNode(params) {\n        const { context, prop, refs, event, scope, computed } = params;\n        const nodes = computed(\"visibleNodes\");\n        const elements = nodes.map(({ node: node2 }) => ({\n          textContent: prop(\"collection\").stringifyNode(node2),\n          id: prop(\"collection\").getNodeValue(node2)\n        }));\n        const node = getByTypeahead(elements, {\n          state: refs.get(\"typeaheadState\"),\n          activeId: context.get(\"focusedValue\"),\n          key: event.key\n        });\n        if (!node?.id) return;\n        const scrolled = scrollToNode(params, node.id);\n        if (scrolled) raf(() => focusNode(scope, node.id));\n        else focusNode(scope, node.id);\n      },\n      toggleNodeSelection({ context, event }) {\n        const selectedValue = addOrRemove(context.get(\"selectedValue\"), event.id);\n        context.set(\"selectedValue\", selectedValue);\n      },\n      expandAllBranches(params) {\n        const { context, prop } = params;\n        const branchValues = prop(\"collection\").getBranchValues();\n        const valuesToExpand = diff(branchValues, context.get(\"expandedValue\"));\n        expandBranches(params, valuesToExpand);\n      },\n      expandSiblingBranches(params) {\n        const { context, event, prop } = params;\n        const collection2 = prop(\"collection\");\n        const indexPath = collection2.getIndexPath(event.id);\n        if (!indexPath) return;\n        const nodes = collection2.getSiblingNodes(indexPath);\n        const values = nodes.map((node) => collection2.getNodeValue(node));\n        const valuesToExpand = diff(values, context.get(\"expandedValue\"));\n        expandBranches(params, valuesToExpand);\n      },\n      extendSelectionToNode(params) {\n        const { context, event, prop, computed } = params;\n        const collection2 = prop(\"collection\");\n        const anchorValue = first(context.get(\"selectedValue\")) || collection2.getNodeValue(collection2.getFirstNode());\n        const targetValue = event.id;\n        let values = [anchorValue, targetValue];\n        let hits = 0;\n        const visibleNodes = computed(\"visibleNodes\");\n        visibleNodes.forEach(({ node }) => {\n          const nodeValue = collection2.getNodeValue(node);\n          if (hits === 1) values.push(nodeValue);\n          if (nodeValue === anchorValue || nodeValue === targetValue) hits++;\n        });\n        context.set(\"selectedValue\", uniq(values));\n      },\n      extendSelectionToNextNode(params) {\n        const { context, event, prop } = params;\n        const collection2 = prop(\"collection\");\n        const nextNode = collection2.getNextNode(event.id, { skip: skipFn(params) });\n        if (!nextNode) return;\n        const values = new Set(context.get(\"selectedValue\"));\n        const nextValue = collection2.getNodeValue(nextNode);\n        if (nextValue == null) return;\n        if (values.has(event.id) && values.has(nextValue)) {\n          values.delete(event.id);\n        } else if (!values.has(nextValue)) {\n          values.add(nextValue);\n        }\n        context.set(\"selectedValue\", Array.from(values));\n      },\n      extendSelectionToPrevNode(params) {\n        const { context, event, prop } = params;\n        const collection2 = prop(\"collection\");\n        const prevNode = collection2.getPreviousNode(event.id, { skip: skipFn(params) });\n        if (!prevNode) return;\n        const values = new Set(context.get(\"selectedValue\"));\n        const prevValue = collection2.getNodeValue(prevNode);\n        if (prevValue == null) return;\n        if (values.has(event.id) && values.has(prevValue)) {\n          values.delete(event.id);\n        } else if (!values.has(prevValue)) {\n          values.add(prevValue);\n        }\n        context.set(\"selectedValue\", Array.from(values));\n      },\n      extendSelectionToFirstNode(params) {\n        const { context, prop } = params;\n        const collection2 = prop(\"collection\");\n        const currentSelection = first(context.get(\"selectedValue\"));\n        const values = [];\n        collection2.visit({\n          skip: skipFn(params),\n          onEnter: (node) => {\n            const nodeValue = collection2.getNodeValue(node);\n            values.push(nodeValue);\n            if (nodeValue === currentSelection) {\n              return \"stop\";\n            }\n          }\n        });\n        context.set(\"selectedValue\", values);\n      },\n      extendSelectionToLastNode(params) {\n        const { context, prop } = params;\n        const collection2 = prop(\"collection\");\n        const currentSelection = first(context.get(\"selectedValue\"));\n        const values = [];\n        let current = false;\n        collection2.visit({\n          skip: skipFn(params),\n          onEnter: (node) => {\n            const nodeValue = collection2.getNodeValue(node);\n            if (nodeValue === currentSelection) current = true;\n            if (current) values.push(nodeValue);\n          }\n        });\n        context.set(\"selectedValue\", values);\n      },\n      clearPendingAborts({ refs }) {\n        const aborts = refs.get(\"pendingAborts\");\n        aborts.forEach((abort) => abort.abort());\n        aborts.clear();\n      },\n      toggleChecked({ context, event, prop }) {\n        const collection2 = prop(\"collection\");\n        context.set(\n          \"checkedValue\",\n          (prev) => event.isBranch ? toggleBranchChecked(collection2, event.value, prev) : addOrRemove(prev, event.value)\n        );\n      },\n      setChecked({ context, event }) {\n        context.set(\"checkedValue\", event.value);\n      },\n      clearChecked({ context }) {\n        context.set(\"checkedValue\", []);\n      },\n      setRenamingValue({ context, event, prop }) {\n        context.set(\"renamingValue\", event.value);\n        const onRenameStartFn = prop(\"onRenameStart\");\n        if (onRenameStartFn) {\n          const collection2 = prop(\"collection\");\n          const indexPath = collection2.getIndexPath(event.value);\n          if (indexPath) {\n            const node = collection2.at(indexPath);\n            if (node) {\n              onRenameStartFn({\n                value: event.value,\n                node,\n                indexPath\n              });\n            }\n          }\n        }\n      },\n      submitRenaming({ context, event, prop, scope }) {\n        const renamingValue = context.get(\"renamingValue\");\n        if (!renamingValue) return;\n        const collection2 = prop(\"collection\");\n        const indexPath = collection2.getIndexPath(renamingValue);\n        if (!indexPath) return;\n        const trimmedLabel = event.label.trim();\n        const onBeforeRenameFn = prop(\"onBeforeRename\");\n        if (onBeforeRenameFn) {\n          const details = {\n            value: renamingValue,\n            label: trimmedLabel,\n            indexPath\n          };\n          const shouldRename = onBeforeRenameFn(details);\n          if (!shouldRename) {\n            context.set(\"renamingValue\", null);\n            focusNode(scope, renamingValue);\n            return;\n          }\n        }\n        prop(\"onRenameComplete\")?.({\n          value: renamingValue,\n          label: trimmedLabel,\n          indexPath\n        });\n        context.set(\"renamingValue\", null);\n        focusNode(scope, renamingValue);\n      },\n      cancelRenaming({ context, scope }) {\n        const renamingValue = context.get(\"renamingValue\");\n        context.set(\"renamingValue\", null);\n        if (renamingValue) {\n          focusNode(scope, renamingValue);\n        }\n      },\n      syncRenameInput({ context, scope, prop }) {\n        const renamingValue = context.get(\"renamingValue\");\n        if (!renamingValue) return;\n        const collection2 = prop(\"collection\");\n        const node = collection2.findNode(renamingValue);\n        if (!node) return;\n        const label = collection2.stringifyNode(node);\n        const inputEl = getRenameInputEl(scope, renamingValue);\n        setElementValue(inputEl, label);\n      },\n      focusRenameInput({ context, scope }) {\n        const renamingValue = context.get(\"renamingValue\");\n        if (!renamingValue) return;\n        const inputEl = getRenameInputEl(scope, renamingValue);\n        if (!inputEl) return;\n        inputEl.focus();\n        inputEl.select();\n      }\n    }\n  }\n});\nfunction scrollToNode(params, value) {\n  const { prop, scope, computed } = params;\n  const scrollToIndexFn = prop(\"scrollToIndexFn\");\n  if (!scrollToIndexFn) return false;\n  const collection2 = prop(\"collection\");\n  const visibleNodes = computed(\"visibleNodes\");\n  for (let i = 0; i < visibleNodes.length; i++) {\n    const { node, indexPath } = visibleNodes[i];\n    if (collection2.getNodeValue(node) !== value) continue;\n    scrollToIndexFn({\n      index: i,\n      node,\n      indexPath,\n      getElement: () => scope.getById(getNodeId(scope, value))\n    });\n    return true;\n  }\n  return false;\n}\nvar props = createProps()([\n  \"ids\",\n  \"collection\",\n  \"dir\",\n  \"expandedValue\",\n  \"expandOnClick\",\n  \"defaultFocusedValue\",\n  \"focusedValue\",\n  \"getRootNode\",\n  \"id\",\n  \"onExpandedChange\",\n  \"onFocusChange\",\n  \"onSelectionChange\",\n  \"checkedValue\",\n  \"selectedValue\",\n  \"selectionMode\",\n  \"typeahead\",\n  \"defaultExpandedValue\",\n  \"defaultSelectedValue\",\n  \"defaultCheckedValue\",\n  \"onCheckedChange\",\n  \"onLoadChildrenComplete\",\n  \"onLoadChildrenError\",\n  \"loadChildren\",\n  \"canRename\",\n  \"onRenameStart\",\n  \"onBeforeRename\",\n  \"onRenameComplete\",\n  \"scrollToIndexFn\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemProps = createProps()([\"node\", \"indexPath\"]);\nvar splitItemProps = createSplitProps(itemProps);\n\nexport { anatomy, collection, connect, filePathCollection, itemProps, machine, props, splitItemProps, splitProps };\n", "import * as tree from \"@zag-js/tree-view\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport { Component } from \"../lib/core\";\n\nexport interface TreeNode {\n  id: string;\n  name: string;\n  children?: TreeNode[];\n  redirect?: boolean;\n  new_tab?: boolean;\n}\n\nfunction buildTreeFromDOM(rootEl: HTMLElement): TreeNode {\n  const selector =\n    '[data-scope=\"tree-view\"][data-part=\"branch\"], [data-scope=\"tree-view\"][data-part=\"item\"]';\n  const elements = rootEl.querySelectorAll<HTMLElement>(selector);\n  const nodes: Array<{\n    pathArr: number[];\n    id: string;\n    name: string;\n    isBranch: boolean;\n  }> = [];\n  for (const el of elements) {\n    const pathRaw = el.getAttribute(\"data-path\");\n    const value = el.getAttribute(\"data-value\");\n    if (pathRaw == null || value == null) continue;\n    const pathArr = pathRaw.split(\"/\").map((s) => parseInt(s, 10));\n    if (pathArr.some(Number.isNaN)) continue;\n    const name = el.getAttribute(\"data-name\") ?? value;\n    const isBranch = el.getAttribute(\"data-part\") === \"branch\";\n    nodes.push({ pathArr, id: value, name, isBranch });\n  }\n  nodes.sort((a, b) => {\n    const len = Math.min(a.pathArr.length, b.pathArr.length);\n    for (let i = 0; i < len; i++) {\n      if (a.pathArr[i] !== b.pathArr[i]) return a.pathArr[i] - b.pathArr[i];\n    }\n    return a.pathArr.length - b.pathArr.length;\n  });\n  const root: TreeNode = { id: \"ROOT\", name: \"\", children: [] };\n  for (const { pathArr, id, name, isBranch } of nodes) {\n    let parent: TreeNode = root;\n    for (let i = 0; i < pathArr.length - 1; i++) {\n      const idx = pathArr[i];\n      if (!parent.children) parent.children = [];\n      parent = parent.children[idx] as TreeNode;\n    }\n    const lastIdx = pathArr[pathArr.length - 1]!;\n    if (!parent.children) parent.children = [];\n    parent.children[lastIdx] = isBranch\n      ? { id, name, children: [] }\n      : { id, name };\n  }\n  return root;\n}\n\nexport class TreeView extends Component<tree.Props, tree.Api> {\n  private collection: ReturnType<typeof tree.collection<TreeNode>>;\n\n  constructor(\n    el: HTMLElement | null,\n    props: Omit<tree.Props, \"collection\"> & { treeData?: TreeNode }\n  ) {\n    const treeData = props.treeData ?? buildTreeFromDOM(el as HTMLElement);\n    const collection = tree.collection<TreeNode>({\n      nodeToValue: (node) => node.id,\n      nodeToString: (node) => node.name,\n      rootNode: treeData,\n    });\n    super(el, { ...props, collection } as tree.Props);\n    this.collection = collection;\n  }\n\n  initMachine(props: tree.Props): VanillaMachine<any> {\n    return new VanillaMachine(tree.machine, { ...props });\n  }\n\n  initApi(): tree.Api {\n    return tree.connect(this.machine.service, normalizeProps);\n  }\n\n  private getNodeAt(indexPath: number[]): TreeNode | undefined {\n    if (indexPath.length === 0) return undefined;\n    let current: TreeNode | undefined = this.collection.rootNode as TreeNode;\n    for (const i of indexPath) {\n      current = current?.children?.[i];\n      if (!current) return undefined;\n    }\n    return current;\n  }\n\n  private updateExistingTree(treeEl: HTMLElement) {\n    this.spreadProps(treeEl, this.api.getTreeProps());\n\n    const branches = treeEl.querySelectorAll<HTMLElement>(\n      '[data-scope=\"tree-view\"][data-part=\"branch\"]'\n    );\n    for (const branchEl of branches) {\n      const pathRaw = branchEl.getAttribute(\"data-path\");\n      if (pathRaw == null) continue;\n      const indexPath = pathRaw.split(\"/\").map((s) => parseInt(s, 10));\n      const node = this.getNodeAt(indexPath);\n      if (!node) continue;\n      const nodeProps = { indexPath, node };\n\n      this.spreadProps(branchEl, this.api.getBranchProps(nodeProps));\n\n      const controlEl = branchEl.querySelector<HTMLElement>(\n        '[data-scope=\"tree-view\"][data-part=\"branch-control\"]'\n      );\n      if (controlEl) this.spreadProps(controlEl, this.api.getBranchControlProps(nodeProps));\n\n      const textEl = branchEl.querySelector<HTMLElement>(\n        '[data-scope=\"tree-view\"][data-part=\"branch-text\"]'\n      );\n      if (textEl) this.spreadProps(textEl, this.api.getBranchTextProps(nodeProps));\n\n      const indicatorEl = branchEl.querySelector<HTMLElement>(\n        '[data-scope=\"tree-view\"][data-part=\"branch-indicator\"]'\n      );\n      if (indicatorEl)\n        this.spreadProps(indicatorEl, this.api.getBranchIndicatorProps(nodeProps));\n\n      const contentEl = branchEl.querySelector<HTMLElement>(\n        '[data-scope=\"tree-view\"][data-part=\"branch-content\"]'\n      );\n      if (contentEl) this.spreadProps(contentEl, this.api.getBranchContentProps(nodeProps));\n\n      const indentGuideEl = branchEl.querySelector<HTMLElement>(\n        '[data-scope=\"tree-view\"][data-part=\"branch-indent-guide\"]'\n      );\n      if (indentGuideEl)\n        this.spreadProps(indentGuideEl, this.api.getBranchIndentGuideProps(nodeProps));\n    }\n\n    const items = treeEl.querySelectorAll<HTMLElement>(\n      '[data-scope=\"tree-view\"][data-part=\"item\"]'\n    );\n    for (const itemEl of items) {\n      const pathRaw = itemEl.getAttribute(\"data-path\");\n      if (pathRaw == null) continue;\n      const indexPath = pathRaw.split(\"/\").map((s) => parseInt(s, 10));\n      const node = this.getNodeAt(indexPath);\n      if (!node) continue;\n      const nodeProps = { indexPath, node };\n      this.spreadProps(itemEl, this.api.getItemProps(nodeProps));\n    }\n  }\n\n  private syncTree = () => {\n    const treeEl = this.el.querySelector<HTMLElement>(\n      '[data-scope=\"tree-view\"][data-part=\"tree\"]'\n    );\n    if (!treeEl) return;\n\n    this.spreadProps(treeEl, this.api.getTreeProps());\n    this.updateExistingTree(treeEl);\n  };\n\n  render(): void {\n    const rootEl =\n      this.el.querySelector<HTMLElement>(\n        '[data-scope=\"tree-view\"][data-part=\"root\"]'\n      ) ?? this.el;\n    this.spreadProps(rootEl, this.api.getRootProps());\n\n    const label = this.el.querySelector<HTMLElement>(\n      '[data-scope=\"tree-view\"][data-part=\"label\"]'\n    );\n    if (label) this.spreadProps(label, this.api.getLabelProps());\n\n    this.syncTree();\n  }\n}\n", "import type { Hook } from \"phoenix_live_view\";\nimport type { HookInterface, CallbackRef } from \"phoenix_live_view/assets/js/types/view_hook\";\nimport { TreeView } from \"../components/tree-view\";\nimport { getString, getBoolean, getStringList, getDir } from \"../lib/util\";\n\ntype TreeViewHookState = {\n  treeView?: TreeView;\n  handlers?: Array<CallbackRef>;\n  onSetExpandedValue?: (event: Event) => void;\n  onSetSelectedValue?: (event: Event) => void;\n};\n\nconst TreeViewHook: Hook<object & TreeViewHookState, HTMLElement> = {\n  mounted(this: object & HookInterface<HTMLElement> & TreeViewHookState) {\n    const el = this.el;\n    const pushEvent = this.pushEvent.bind(this);\n\n    const treeView = new TreeView(el, {\n      id: el.id,\n      ...(getBoolean(el, \"controlled\")\n        ? {\n            expandedValue: getStringList(el, \"expandedValue\"),\n            selectedValue: getStringList(el, \"selectedValue\"),\n          }\n        : {\n            defaultExpandedValue: getStringList(el, \"defaultExpandedValue\"),\n            defaultSelectedValue: getStringList(el, \"defaultSelectedValue\"),\n          }),\n      selectionMode: getString<\n        \"single\" | \"multiple\"\n      >(el, \"selectionMode\", [\"single\", \"multiple\"]) ?? \"single\",\n      dir: getDir(el),\n      onSelectionChange: (details) => {\n        const redirect = getBoolean(el, \"redirect\");\n        const value = details.selectedValue?.length\n          ? details.selectedValue[0]\n          : undefined;\n        const itemEl = [\n          ...el.querySelectorAll<HTMLElement>(\n            '[data-scope=\"tree-view\"][data-part=\"item\"], [data-scope=\"tree-view\"][data-part=\"branch\"]'\n          ),\n        ].find((node) => node.getAttribute(\"data-value\") === value);\n        const isItem = itemEl?.getAttribute(\"data-part\") === \"item\";\n        const itemRedirect = itemEl?.getAttribute(\"data-redirect\");\n        const itemNewTab = itemEl?.hasAttribute(\"data-new-tab\");\n        const doRedirect =\n          redirect &&\n          value &&\n          isItem &&\n          this.liveSocket.main.isDead &&\n          itemRedirect !== \"false\";\n        if (doRedirect) {\n          if (itemNewTab) {\n            window.open(value, \"_blank\", \"noopener,noreferrer\");\n          } else {\n            window.location.href = value;\n          }\n        }\n        const eventName = getString(el, \"onSelectionChange\");\n        if (eventName && this.liveSocket.main.isConnected()) {\n          pushEvent(eventName, {\n            id: el.id,\n            value: { ...details, isItem: isItem ?? false },\n          });\n        }\n      },\n      onExpandedChange: (details) => {\n        const eventName = getString(el, \"onExpandedChange\");\n        if (eventName && this.liveSocket.main.isConnected()) {\n          pushEvent(eventName, {\n            id: el.id,\n            value: details,\n          });\n        }\n      },\n    });\n    treeView.init();\n    this.treeView = treeView;\n\n    this.onSetExpandedValue = (event: Event) => {\n      const { value } = (event as CustomEvent<{ value: string[] }>).detail;\n      treeView.api.setExpandedValue(value);\n    };\n    el.addEventListener(\"phx:tree-view:set-expanded-value\", this.onSetExpandedValue);\n\n    this.onSetSelectedValue = (event: Event) => {\n      const { value } = (event as CustomEvent<{ value: string[] }>).detail;\n      treeView.api.setSelectedValue(value);\n    };\n    el.addEventListener(\"phx:tree-view:set-selected-value\", this.onSetSelectedValue);\n\n    this.handlers = [];\n\n    this.handlers.push(\n      this.handleEvent(\n        \"tree_view_set_expanded_value\",\n        (payload: { tree_view_id?: string; value: string[] }) => {\n          const targetId = payload.tree_view_id;\n          if (targetId && el.id !== targetId && el.id !== `tree-view:${targetId}`) return;\n          treeView.api.setExpandedValue(payload.value);\n        }\n      )\n    );\n\n    this.handlers.push(\n      this.handleEvent(\n        \"tree_view_set_selected_value\",\n        (payload: { tree_view_id?: string; value: string[] }) => {\n          const targetId = payload.tree_view_id;\n          if (targetId && el.id !== targetId && el.id !== `tree-view:${targetId}`) return;\n          treeView.api.setSelectedValue(payload.value);\n        }\n      )\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"tree_view_expanded_value\", () => {\n        pushEvent(\"tree_view_expanded_value_response\", {\n          value: treeView.api.expandedValue,\n        });\n      })\n    );\n\n    this.handlers.push(\n      this.handleEvent(\"tree_view_selected_value\", () => {\n        pushEvent(\"tree_view_selected_value_response\", {\n          value: treeView.api.selectedValue,\n        });\n      })\n    );\n  },\n\n  updated(this: object & HookInterface<HTMLElement> & TreeViewHookState) {\n    if (!getBoolean(this.el, \"controlled\")) return;\n    this.treeView?.updateProps({\n      expandedValue: getStringList(this.el, \"expandedValue\"),\n      selectedValue: getStringList(this.el, \"selectedValue\"),\n    });\n  },\n\n  destroyed(this: object & HookInterface<HTMLElement> & TreeViewHookState) {\n    if (this.onSetExpandedValue) {\n      this.el.removeEventListener(\"phx:tree-view:set-expanded-value\", this.onSetExpandedValue);\n    }\n    if (this.onSetSelectedValue) {\n      this.el.removeEventListener(\"phx:tree-view:set-selected-value\", this.onSetSelectedValue);\n    }\n    if (this.handlers) {\n      for (const handler of this.handlers) {\n        this.removeHandleEvent(handler);\n      }\n    }\n    this.treeView?.destroy();\n  },\n};\n\nexport { TreeViewHook as TreeView };\n", "import type { Hook } from \"phoenix_live_view\";\n\ntype HookModule = Record<string, Hook<any, any> | undefined>;\n\nfunction hooks(\n  importFn: () => Promise<HookModule>,\n  exportName: string\n): Hook {\n  return {\n    async mounted() {\n      const mod = await importFn();\n      const real = mod[exportName];\n      (this as { _realHook?: Hook })._realHook = real;\n      if (real?.mounted) return real.mounted.call(this);\n    },\n    updated() {\n      (this as { _realHook?: Hook })._realHook?.updated?.call(this);\n    },\n    destroyed() {\n      (this as { _realHook?: Hook })._realHook?.destroyed?.call(this);\n    },\n    disconnected() {\n      (this as { _realHook?: Hook })._realHook?.disconnected?.call(this);\n    },\n    reconnected() {\n      (this as { _realHook?: Hook })._realHook?.reconnected?.call(this);\n    },\n    beforeUpdate() {\n      (this as { _realHook?: Hook })._realHook?.beforeUpdate?.call(this);\n    },\n  };\n}\n\nexport const Hooks = {\n  Accordion: hooks(() => import(\"./accordion\"), \"Accordion\"),\n  Checkbox: hooks(() => import(\"./checkbox\"), \"Checkbox\"),\n  Clipboard: hooks(() => import(\"./clipboard\"), \"Clipboard\"),\n  Collapsible: hooks(() => import(\"./collapsible\"), \"Collapsible\"),\n  Combobox: hooks(() => import(\"./combobox\"), \"Combobox\"),\n  DatePicker: hooks(() => import(\"./date-picker\"), \"DatePicker\"),\n  Dialog: hooks(() => import(\"./dialog\"), \"Dialog\"),\n  Menu: hooks(() => import(\"./menu\"), \"Menu\"),\n  Select: hooks(() => import(\"./select\"), \"Select\"),\n  SignaturePad: hooks(() => import(\"./signature-pad\"), \"SignaturePad\"),\n  Switch: hooks(() => import(\"./switch\"), \"Switch\"),\n  Tabs: hooks(() => import(\"./tabs\"), \"Tabs\"),\n  Toast: hooks(() => import(\"./toast\"), \"Toast\"),\n  ToggleGroup: hooks(() => import(\"./toggle-group\"), \"ToggleGroup\"),\n  TreeView: hooks(() => import(\"./tree-view\"), \"TreeView\"),\n};\n\nexport { hooks };\n\nexport default Hooks;\n"],
  "mappings": "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",
  "names": ["parts", "prev", "v", "next", "getComputedStyle", "e", "i", "first", "last", "filter", "raf2", "v", "offset", "isValidKey", "prev", "a", "b", "__defProp", "init_dist", "_", "v", "size", "match", "props", "a", "m", "c", "__defProp", "__defNormalProp", "__publicField", "isEqual", "isObject", "noop", "isNaN", "init_dist", "t", "b", "i", "x", "props", "isEqual", "guards", "choose", "getRootNode", "init_dist", "match", "a", "b", "props", "init_dist", "props2", "keyMap", "splitProps", "init_dist", "bindable", "next", "init_dist", "g", "isReactElement", "isVueElement", "isObject", "init_dist", "x", "remove", "e", "f", "setup", "props", "prev", "next", "__defProp", "__defNormalProp", "__publicField", "init_dist", "match", "machine", "state", "s", "t", "isEqual", "getRootNode", "init_dist", "props", "init_dist", "props", "i", "v", "init_accordion", "e", "props", "init_dist", "connect", "parts", "getRootId", "anatomy", "getRootEl", "not", "machine", "props", "splitProps", "init_dist", "props2", "bindable", "init_dist", "props", "machine", "connect", "init_checkbox", "connect", "state", "parts", "getRootId", "getLabelId", "props2", "anatomy", "machine", "props", "init_dist", "bindable", "init_dist", "props", "machine", "connect", "inputProps", "triggerProps", "init_clipboard", "connect", "state", "parts", "getRootId", "anatomy", "machine", "props", "splitProps", "init_dist", "bindable", "getComputedStyle", "init_dist", "props", "machine", "connect", "init_collapsible", "a", "b", "i", "_", "state", "remove", "__defProp", "__defNormalProp", "__publicField", "match", "init_dist", "isObject", "isEqual", "clamp", "options", "query", "v", "v2", "clamp", "max", "min", "x", "y", "round", "floor", "v", "state", "x", "y", "platform", "i", "min", "max", "offset", "clamp", "placements", "sides", "side", "nextIndex", "d", "a", "b", "placement", "overflow", "getNodeName", "isNode", "getWindow", "getDocumentElement", "isElement", "isHTMLElement", "isShadowRoot", "isOverflowElement", "getComputedStyle", "css", "getParentNode", "getNearestOverflowAncestor", "css", "getComputedStyle", "isHTMLElement", "round", "isElement", "x", "y", "getWindow", "getDocumentElement", "getNodeName", "isOverflowElement", "max", "getParentNode", "min", "a", "b", "floor", "offset", "shift", "flip", "size", "hide", "arrow", "limitShift", "computePosition", "x", "y", "state", "getSideAxis", "arrow", "offset", "shift2", "flip", "shift", "limitShift", "size", "hide", "computePosition", "getComputedStyle", "noop", "v", "init_dist", "i", "v", "init_dist", "fireCustomEvent", "v", "init_dist", "connect", "state", "collection2", "props2", "getInputEl", "parts", "getRootId", "getInputId", "getLabelId", "getControlId", "getContentId", "getItemId", "isModifierKey", "getTriggerId", "keyMap", "prev", "anatomy", "getContentEl", "createMachine", "and", "not", "machine", "props", "splitProps", "itemProps", "splitItemProps", "init_dist", "bindable", "isEqual", "v", "match", "init_dist", "props", "self", "machine", "connect", "group", "s", "_", "init_combobox", "props", "a", "b", "parts", "date", "offset", "a", "b", "min", "max", "round", "res", "ms", "m", "min", "max", "offset", "sign", "b", "offset", "a", "b", "min", "p", "max", "min", "max", "d", "parts", "i", "group", "init_dist", "delay", "init_dist", "a", "b", "match", "parts2", "fallback", "connect", "state", "min", "max", "props2", "parts", "getRootId", "getLabelId", "getInputId", "getControlId", "getContentId", "keyMap", "getClearTriggerId", "getTriggerId", "getPositionerId", "i", "v", "anatomy", "getTriggerEl", "getContentEl", "getClearTriggerEl", "getPositionerEl", "getControlEl", "and", "machine", "props", "splitProps", "init_dist", "bindable", "getPositionerEl2", "getContentEl2", "init_dist", "props", "machine", "connect", "d", "n", "init_date_picker", "init_dist", "min", "max", "v", "x", "raf", "v", "getParentNode", "init_dist", "x", "props", "e", "e", "__defProp", "__defNormalProp", "__publicField", "init_dist", "g", "n", "c", "options", "i", "group", "getComputedStyle", "init_dist", "connect", "state", "parts", "getTriggerId", "getContentId", "getPositionerId", "anatomy", "getContentEl", "getPositionerEl", "getTriggerEl", "machine", "props", "splitProps", "init_dist", "props2", "bindable", "getContentEl2", "getElements", "getComputedStyle", "init_dist", "props", "machine", "connect", "init_dialog", "r", "x", "y", "v", "c", "i", "j", "min", "max", "sign", "abs", "min2", "init_dist", "connect", "state", "props2", "getItemId", "parts", "getContentId", "triggerProps", "getTriggerId", "keyMap", "getPositionerId", "anatomy", "getContentEl", "getPositionerEl", "getTriggerEl", "getItemEl", "not", "and", "machine", "props", "splitProps", "itemProps", "splitItemProps", "itemGroupLabelProps", "splitItemGroupLabelProps", "itemGroupProps", "splitItemGroupProps", "init_dist", "v", "bindable", "getPositionerEl2", "getContentEl2", "e", "isEqual", "init_dist", "props", "machine", "connect", "triggerProps", "init_menu", "connect", "state", "collection2", "getItemId", "props2", "getTriggerEl", "parts", "getRootId", "getLabelId", "getControlId", "getTriggerId", "getContentId", "keyMap", "getItemGroupLabelId", "getItemGroupId", "getClearTriggerId", "getPositionerId", "v", "anatomy", "collection", "getContentEl", "getClearTriggerEl", "getPositionerEl", "getItemEl", "and", "not", "or", "machine", "props", "splitProps", "itemProps", "splitItemProps", "itemGroupProps", "splitItemGroupProps", "itemGroupLabelProps", "splitItemGroupLabelProps", "init_dist", "bindable", "isEqual", "prev", "init_dist", "props", "collection", "self", "machine", "connect", "group", "s", "snakeToCamel", "_", "transformPositioningOptions", "init_select", "m", "a", "b", "i", "e", "t", "n", "r", "i", "a", "o", "s", "c", "l", "f", "m", "_", "v", "b", "x", "S", "w", "T", "P", "F", "I", "L", "R", "z", "h", "k", "A", "j", "M", "u", "p", "connect", "state", "getDataUrl", "parts", "getLabelId", "getHiddenInputId", "getControlEl", "getRootId", "getControlId", "offset", "props2", "a", "b", "c", "i", "max", "anatomy", "machine", "props", "splitProps", "init_dist", "bindable", "init_dist", "props", "machine", "connect", "init_signature_pad", "connect", "parts", "getRootId", "getHiddenInputId", "getHiddenInputEl", "getLabelId", "getControlId", "anatomy", "getRootEl", "not", "machine", "props", "splitProps", "init_dist", "props2", "bindable", "init_dist", "props", "machine", "connect", "init_switch", "connect", "state", "props2", "getTriggerId", "getTriggerEl", "parts", "getRootId", "keyMap", "getContentId", "anatomy", "getContentEl", "getElements", "getFirstTriggerEl", "getLastTriggerEl", "getNextTriggerEl", "getPrevTriggerEl", "createMachine", "machine", "props", "splitProps", "init_dist", "bindable", "prev", "isEqual", "init_dist", "props", "machine", "connect", "i", "init_tabs", "offset", "parts", "connect", "state", "getRootId", "getDescriptionId", "getTitleId", "getCloseTriggerId", "prev", "i", "props", "subscribe", "remove", "anatomy", "getRootEl", "guards", "createMachine", "and", "not", "machine", "init_dist", "bindable", "t", "group", "init_dist", "props", "machine", "connect", "g", "t", "init_toast", "store", "connect", "props2", "getItemId", "parts", "getRootId", "keyMap", "anatomy", "getRootEl", "getElements", "getFirstEl", "getLastEl", "getNextEl", "getPrevEl", "not", "and", "machine", "props", "splitProps", "itemProps", "splitItemProps", "init_dist", "bindable", "next", "isEqual", "init_dist", "props", "machine", "connect", "i", "init_toggle_group", "props", "collection2", "v", "map", "connect", "props2", "parts", "getRootId", "getLabelId", "keyMap", "prev", "collection3", "i", "anatomy", "collection", "and", "machine", "props", "splitProps", "itemProps", "splitItemProps", "init_dist", "bindable", "isEqual", "s", "a", "b", "i", "init_dist", "props", "collection", "machine", "connect", "init_tree_view"]
}
