{
  "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+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+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+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+select@1.33.1/node_modules/@zag-js/select/dist/index.mjs", "../../assets/components/select.ts", "../../assets/hooks/select.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+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+combobox@1.33.1/node_modules/@zag-js/combobox/dist/index.mjs", "../../assets/components/combobox.ts", "../../assets/hooks/combobox.ts", "../../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+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+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+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/@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/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", "../../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 = this.el.querySelector<HTMLElement>('[data-scope=\"accordion\"][data-part=\"root\"]');\n    if (!rootEl) return;\n    this.spreadProps(rootEl, this.api.getRootProps());\n\n    const items = rootEl.querySelectorAll<HTMLElement>(\n      ':scope > [data-scope=\"accordion\"][data-part=\"item\"]'\n    );\n    \n    for (let i = 0; i < items.length; i++) {\n      const itemEl = items[i];\n      const value = itemEl.dataset.value;\n      if (!value) continue;\n\n      const disabled = itemEl.hasAttribute('data-disabled');\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 * Corex utility functions for working with Zag.js components.\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 { Direction, Orientation } from \"@zag-js/types\";\n\nimport { getString, getBoolean, getStringList } from \"../lib/util\";\n\ntype AccordionHookState = {\n  accordion?: Accordion;\n  handlers?: Array<CallbackRef>;\n  onSetValue?: (event: Event) => void;\n  wasFocused?: string | null;\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        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.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 && targetId !== el.id) return;\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    this.accordion?.updateProps({\n      id: this.el.id,\n      ...(getBoolean(this.el, \"controlled\")\n        ? { value: getStringList(this.el, \"value\") }\n        : { defaultValue: getStringList(this.el, \"defaultValue\") }),\n      collapsible: getBoolean(this.el, \"collapsible\"),\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    } as Props);\n\n    const wasFocused = this.accordion?.api?.focusedValue;\n    if (wasFocused) {\n        const triggerEl = this.el.querySelector(\n          `[data-scope=\"accordion\"][data-part=\"item\"][data-value=\"${wasFocused}\"] [data-part=\"item-trigger\"]`\n        ) as HTMLElement;\n        \n        if (triggerEl && document.activeElement !== triggerEl) {\n          triggerEl.focus();\n        }\n    }\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 { 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 { 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    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 { 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 { 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 pushEvent = this.pushEvent.bind(this);\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 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          const eventName = getString(el, \"onValueChange\");\n          if (\n            eventName &&\n            !hook.liveSocket.main.isDead &&\n            hook.liveSocket.main.isConnected()\n          ) {\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      } 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 };", "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, 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 { 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 };", "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\";\nimport type { Direction } from \"@zag-js/types\";\n\nimport { getString, getBoolean } from \"../lib/util\";\n\ntype CheckboxHookState = {\n  checkbox?: Checkbox;\n  handlers?: Array<CallbackRef>;\n  onSetChecked?: (event: Event) => void;\n  onToggleChecked?: () => void;\n  wasFocused?: boolean;\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    this.wasFocused = false;\n    \n    const indeterminateAttr = el.getAttribute(\"data-indeterminate\");\n    const indeterminate = indeterminateAttr !== null && indeterminateAttr !== \"false\";\n    \n    const checkedValue = getBoolean(el, \"checked\");\n    const defaultCheckedValue = getBoolean(el, \"defaultChecked\");\n    \n    let checkedProp: boolean | \"indeterminate\" | undefined;\n    let defaultCheckedProp: boolean | \"indeterminate\" | undefined;\n    \n    if (indeterminate) {\n      if (getBoolean(el, \"controlled\")) {\n        checkedProp = \"indeterminate\";\n      } else {\n        defaultCheckedProp = \"indeterminate\";\n      }\n    } else {\n      if (getBoolean(el, \"controlled\")) {\n        checkedProp = checkedValue;\n      } else {\n        defaultCheckedProp = defaultCheckedValue;\n      }\n    }\n    \n    const zagCheckbox = new Checkbox(el, {\n      id: el.id,\n      ...(checkedProp !== undefined ? { checked: checkedProp } : {}),\n      ...(defaultCheckedProp !== undefined ? { defaultChecked: defaultCheckedProp } : {}),\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\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  beforeUpdate() {\n    this.wasFocused = this.checkbox?.api.focused ?? false;\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: 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> & 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 { 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 }));\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, getStringList } from \"../lib/util\";\n\ntype TabsHookState = {\n  tabs?: Tabs;\n  handlers?: Array<CallbackRef>;\n  onSetValue?: (event: Event) => void;\n  wasFocused?: string | null;\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        composite: true,\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    const wasFocused = this.tabs?.api?.focusedValue;\n    if (wasFocused) {\n        const triggerEl = this.el.querySelector(\n          `[data-scope=\"tabs\"][data-part=\"list\"] [data-part=\"trigger\"][data-value=\"${wasFocused}\"]`\n        ) as HTMLElement;\n        \n        if (triggerEl && document.activeElement !== triggerEl) {\n          triggerEl.focus();\n        }\n    }\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 { 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 { 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 triggerEl = this.el.querySelector<HTMLElement>('[data-scope=\"dialog\"][data-part=\"trigger\"]');\n    if (triggerEl) {\n      this.spreadProps(triggerEl, this.api.getTriggerProps());\n    }\n\n    const backdropEl = this.el.querySelector<HTMLElement>('[data-scope=\"dialog\"][data-part=\"backdrop\"]');\n    if (backdropEl) {\n      this.spreadProps(backdropEl, this.api.getBackdropProps());\n    }\n\n    const positionerEl = this.el.querySelector<HTMLElement>('[data-scope=\"dialog\"][data-part=\"positioner\"]');\n    if (positionerEl) {\n      this.spreadProps(positionerEl, this.api.getPositionerProps());\n    }\n\n    const contentEl = this.el.querySelector<HTMLElement>('[data-scope=\"dialog\"][data-part=\"content\"]');\n    if (contentEl) {\n      this.spreadProps(contentEl, this.api.getContentProps());\n    }\n\n    const titleEl = this.el.querySelector<HTMLElement>('[data-scope=\"dialog\"][data-part=\"title\"]');\n    if (titleEl) {\n      this.spreadProps(titleEl, this.api.getTitleProps());\n    }\n\n    const descriptionEl = this.el.querySelector<HTMLElement>('[data-scope=\"dialog\"][data-part=\"description\"]');\n    if (descriptionEl) {\n      this.spreadProps(descriptionEl, this.api.getDescriptionProps());\n    }\n\n    const closeTriggerEl = this.el.querySelector<HTMLElement>('[data-scope=\"dialog\"][data-part=\"close-trigger\"]');\n    if (closeTriggerEl) {\n      this.spreadProps(closeTriggerEl, this.api.getCloseTriggerProps());\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 { 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      closeOnEscapeKeyDown: getBoolean(el, \"closeOnEscapeKeyDown\"),\n      preventScroll: getBoolean(el, \"preventScroll\"),\n      restoreFocus: getBoolean(el, \"restoreFocus\"),\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    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      closeOnEscapeKeyDown: 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", "/*\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  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  // View container helpers - these elements never get spreadProps called on them,\n  // so their data-part values remain stable across renders.\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 syncWeekDays = () => {\n    const dayView = this.getDayView();\n    if (!dayView) return;\n\n    // Use structural selector - data-part on <tr> gets overridden by spreadProps\n    const headerRow = dayView.querySelector<HTMLElement>(\"thead tr\");\n    if (!headerRow) return;\n\n    this.spreadProps(headerRow, this.api.getTableRowProps({ view: \"day\" }));\n\n    const existingCells = Array.from(headerRow.querySelectorAll(\"th\"));\n\n    while (existingCells.length > this.api.weekDays.length) {\n      const cell = existingCells.pop();\n      if (cell) headerRow.removeChild(cell);\n    }\n\n    this.api.weekDays.forEach((day, index) => {\n      let cellEl = existingCells[index];\n\n      if (!cellEl) {\n        cellEl = this.doc.createElement(\"th\");\n        cellEl.scope = \"col\";\n        headerRow.appendChild(cellEl);\n      }\n\n      cellEl.setAttribute(\"aria-label\", day.long);\n      cellEl.textContent = day.narrow;\n    });\n  };\n\n  private syncDayGrid = () => {\n    const dayView = this.getDayView();\n    if (!dayView) return;\n\n    // Use structural selector - data-part on <tbody> gets overridden by spreadProps\n    const tbody = dayView.querySelector<HTMLElement>(\"tbody\");\n    if (!tbody) return;\n\n    this.spreadProps(tbody, this.api.getTableBodyProps({ view: \"day\" }));\n\n    if (!this.api.weeks) return;\n\n    const existingRows = Array.from(tbody.querySelectorAll(\"tr\"));\n\n    while (existingRows.length > this.api.weeks.length) {\n      const row = existingRows.pop();\n      if (row) tbody.removeChild(row);\n    }\n\n    this.api.weeks.forEach((week, rowIndex) => {\n      let rowEl = existingRows[rowIndex];\n\n      if (!rowEl) {\n        rowEl = this.doc.createElement(\"tr\");\n        tbody.appendChild(rowEl);\n      }\n\n      this.spreadProps(rowEl, this.api.getTableRowProps({ view: \"day\" }));\n\n      const existingCells = Array.from(rowEl.querySelectorAll(\"td\"));\n\n      while (existingCells.length > week.length) {\n        const cell = existingCells.pop();\n        if (cell) rowEl.removeChild(cell);\n      }\n\n      week.forEach((value, cellIndex) => {\n        let cellEl = existingCells[cellIndex];\n\n        if (!cellEl) {\n          cellEl = this.doc.createElement(\"td\");\n          const triggerEl = this.doc.createElement(\"div\");\n          cellEl.appendChild(triggerEl);\n          rowEl.appendChild(cellEl);\n        }\n\n        this.spreadProps(cellEl, this.api.getDayTableCellProps({ value }));\n\n        const triggerEl = cellEl.querySelector<HTMLElement>(\"div\");\n        if (triggerEl) {\n          this.spreadProps(\n            triggerEl,\n            this.api.getDayTableCellTriggerProps({ value }),\n          );\n          triggerEl.textContent = String(value.day);\n        }\n      });\n    });\n  };\n\n  private syncMonthGrid = () => {\n    const monthView = this.getMonthView();\n    if (!monthView) return;\n\n    // Use structural selector - data-part on <tbody> gets overridden by spreadProps\n    const tbody = monthView.querySelector<HTMLElement>(\"tbody\");\n    if (!tbody) return;\n\n    this.spreadProps(tbody, this.api.getTableBodyProps({ view: \"month\" }));\n\n    const monthsGrid = this.api.getMonthsGrid({ columns: 4, format: \"short\" });\n    const existingRows = Array.from(tbody.querySelectorAll(\"tr\"));\n\n    while (existingRows.length > monthsGrid.length) {\n      const row = existingRows.pop();\n      if (row) tbody.removeChild(row);\n    }\n\n    monthsGrid.forEach((months, rowIndex) => {\n      let rowEl = existingRows[rowIndex];\n\n      if (!rowEl) {\n        rowEl = this.doc.createElement(\"tr\");\n        tbody.appendChild(rowEl);\n      }\n\n      this.spreadProps(rowEl, this.api.getTableRowProps());\n\n      const existingCells = Array.from(rowEl.querySelectorAll(\"td\"));\n\n      while (existingCells.length > months.length) {\n        const cell = existingCells.pop();\n        if (cell) rowEl.removeChild(cell);\n      }\n\n      months.forEach((month, cellIndex) => {\n        let cellEl = existingCells[cellIndex];\n\n        if (!cellEl) {\n          cellEl = this.doc.createElement(\"td\");\n          const triggerEl = this.doc.createElement(\"div\");\n          cellEl.appendChild(triggerEl);\n          rowEl.appendChild(cellEl);\n        }\n\n        this.spreadProps(\n          cellEl,\n          this.api.getMonthTableCellProps({ ...month, columns: 4 }),\n        );\n\n        const triggerEl = cellEl.querySelector<HTMLElement>(\"div\");\n        if (triggerEl) {\n          this.spreadProps(\n            triggerEl,\n            this.api.getMonthTableCellTriggerProps({ ...month, columns: 4 }),\n          );\n          triggerEl.textContent = month.label;\n        }\n      });\n    });\n  };\n\n  private syncYearGrid = () => {\n    const yearView = this.getYearView();\n    if (!yearView) return;\n\n    // Use structural selector - data-part on <tbody> gets overridden by spreadProps\n    const tbody = yearView.querySelector<HTMLElement>(\"tbody\");\n    if (!tbody) return;\n\n    this.spreadProps(tbody, this.api.getTableBodyProps());\n\n    const yearsGrid = this.api.getYearsGrid({ columns: 4 });\n    const existingRows = Array.from(tbody.querySelectorAll(\"tr\"));\n\n    while (existingRows.length > yearsGrid.length) {\n      const row = existingRows.pop();\n      if (row) tbody.removeChild(row);\n    }\n\n    yearsGrid.forEach((years, rowIndex) => {\n      let rowEl = existingRows[rowIndex];\n\n      if (!rowEl) {\n        rowEl = this.doc.createElement(\"tr\");\n        tbody.appendChild(rowEl);\n      }\n\n      this.spreadProps(rowEl, this.api.getTableRowProps({ view: \"year\" }));\n\n      const existingCells = Array.from(rowEl.querySelectorAll(\"td\"));\n\n      while (existingCells.length > years.length) {\n        const cell = existingCells.pop();\n        if (cell) rowEl.removeChild(cell);\n      }\n\n      years.forEach((year, cellIndex) => {\n        let cellEl = existingCells[cellIndex];\n\n        if (!cellEl) {\n          cellEl = this.doc.createElement(\"td\");\n          const triggerEl = this.doc.createElement(\"div\");\n          cellEl.appendChild(triggerEl);\n          rowEl.appendChild(cellEl);\n        }\n\n        this.spreadProps(\n          cellEl,\n          this.api.getYearTableCellProps({ ...year, columns: 4 }),\n        );\n\n        const triggerEl = cellEl.querySelector<HTMLElement>(\"div\");\n        if (triggerEl) {\n          this.spreadProps(\n            triggerEl,\n            this.api.getYearTableCellTriggerProps({ ...year, columns: 4 }),\n          );\n          triggerEl.textContent = year.label;\n        }\n      });\n    });\n  };\n\n  render(): void {\n    // Control\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      const inputProps = { ...this.api.getInputProps() };\n      const inputAriaLabel = this.el.dataset.inputAriaLabel;\n      if (inputAriaLabel) {\n        inputProps[\"aria-label\"] = inputAriaLabel;\n      }\n      this.spreadProps(input, inputProps);\n    }\n\n    const trigger = this.el.querySelector<HTMLElement>(\n      '[data-scope=\"date-picker\"][data-part=\"trigger\"]',\n    );\n    if (trigger) {\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(trigger, triggerProps);\n    }\n\n    // Positioner and content\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    // === Day view ===\n    const dayView = this.getDayView();\n    if (dayView) {\n      dayView.hidden = this.api.view !== \"day\";\n\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\n      const prevTrigger = dayView.querySelector<HTMLElement>(\n        '[data-part=\"prev-trigger\"]',\n      );\n      if (prevTrigger)\n        this.spreadProps(prevTrigger, this.api.getPrevTriggerProps());\n\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\n      const nextTrigger = dayView.querySelector<HTMLElement>(\n        '[data-part=\"next-trigger\"]',\n      );\n      if (nextTrigger)\n        this.spreadProps(nextTrigger, this.api.getNextTriggerProps());\n\n      // Use structural selectors for table elements (their data-part gets overridden by zag)\n      const table = dayView.querySelector<HTMLElement>(\"table\");\n      if (table)\n        this.spreadProps(table, this.api.getTableProps({ view: \"day\" }));\n\n      const thead = dayView.querySelector<HTMLElement>(\"thead\");\n      if (thead)\n        this.spreadProps(thead, this.api.getTableHeaderProps({ view: \"day\" }));\n    }\n\n    this.syncWeekDays();\n    this.syncDayGrid();\n\n    // === Month view ===\n    const monthView = this.getMonthView();\n    if (monthView) {\n      monthView.hidden = this.api.view !== \"month\";\n\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\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\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\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\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    }\n\n    this.syncMonthGrid();\n\n    // === Year view ===\n    const yearView = this.getYearView();\n    if (yearView) {\n      yearView.hidden = this.api.view !== \"year\";\n\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\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\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\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\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    }\n\n    this.syncYearGrid();\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\n/** Convert DateValue (year, month, day) to ISO date string YYYY-MM-DD for Ecto/form submission */\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      // defaultValue: initialValue,\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      defaultOpen: el.hasAttribute(\"data-default-open\") ? getBoolean(el, \"defaultOpen\") : undefined,\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    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 parseList = (v: string[] | undefined) => (v ? v.map((x) => datePicker.parse(x)) : undefined);\n\n\n    const el = this.el;\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      // id: el.id,\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      defaultOpen: el.hasAttribute(\"data-default-open\") ? getBoolean(el, \"defaultOpen\") : undefined,\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 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      const serverIso = serverValues?.join(\",\") ?? \"\";\n\n      if (serverIso && serverIso !== zagIso) {\n        this.datePicker.api.setValue(serverValues!.map((x) => datePicker.parse(x)));\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", "/**\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      Array.from(segment.querySelectorAll(\"path\")).forEach((path) => segment.removeChild(path));\n      this.imageURL = \"\";\n      this.paths = [];\n      // Update hidden input when cleared\n      const hiddenInput = this.el.querySelector<HTMLInputElement>('[data-scope=\"signature-pad\"][data-part=\"hidden-input\"]');\n      if (hiddenInput) {\n        hiddenInput.value = \"\";\n      }\n      return;\n    }\n\n    const allPathElements = Array.from(\n      segment.querySelectorAll<SVGPathElement>('[data-scope=\"signature-pad\"][data-part=\"path\"], [data-scope=\"signature-pad\"][data-part=\"current-path\"]')\n    );\n\n    const existingPaths: SVGPathElement[] = [];\n    const existingCurrentPath: SVGPathElement[] = [];\n    \n    allPathElements.forEach((path) => {\n      (path.getAttribute(\"data-part\") === \"current-path\" ? existingCurrentPath : existingPaths).push(path);\n    });\n\n    while (existingPaths.length > this.api.paths.length) {\n      const path = existingPaths.pop();\n      if (path) segment.removeChild(path);\n    }\n\n    this.api.paths.forEach((pathData, index) => {\n      let pathEl = existingPaths[index];\n      if (!pathEl) {\n        pathEl = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n        pathEl.setAttribute(\"data-scope\", \"signature-pad\");\n        pathEl.setAttribute(\"data-part\", \"path\");\n        segment.appendChild(pathEl);\n      }\n      this.spreadProps(pathEl, this.api.getSegmentPathProps({ path: pathData }));\n    });\n\n    if (this.api.currentPath) {\n      let currentPathEl = existingCurrentPath[0];\n      if (!currentPathEl) {\n        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        segment.appendChild(currentPathEl);\n      }\n      this.spreadProps(currentPathEl, this.api.getSegmentPathProps({ path: this.api.currentPath }));\n    } else {\n      existingCurrentPath.forEach((path) => segment.removeChild(path));\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    }\n\n    const hiddenInput = rootEl.querySelector<HTMLInputElement>('[data-scope=\"signature-pad\"][data-part=\"hidden-input\"]');\n    if (hiddenInput) {\n      // Store paths as JSON string in hidden input\n      const pathsValue = this.paths.length > 0 ? JSON.stringify(this.paths) : \"\";\n      this.spreadProps(hiddenInput, this.api.getHiddenInputProps({ value: pathsValue }));\n      // Set name attribute for form submission\n      if (this.name) {\n        hiddenInput.name = this.name;\n      }\n      // Ensure value is set (spreadProps might override it)\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\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: {\n        fill: getString(el, \"drawingFill\"),\n        size: getNumber(el, \"drawingSize\"),\n        simulatePressure: getBoolean(el, \"drawingSimulatePressure\"),\n      },\n      onDrawEnd: (details) => {\n        // Store paths in component\n        signaturePad.setPaths(details.paths);\n        \n        // Store paths in hidden input (as JSON string)\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        // Get URL for events if needed\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    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      // Clear the hidden input value\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        // Clear the hidden input value\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: {\n        fill: getString(this.el, \"drawingFill\") || \"black\",\n        size: getNumber(this.el, \"drawingSize\") || 2,\n        simulatePressure: getBoolean(this.el, \"drawingSimulatePressure\"),\n      },\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", "export { Accordion } from \"./accordion\";\nexport { Toast } from \"./toast\";\nexport { ToggleGroup } from \"./toggle-group\";\nexport { Select } from \"./select\";\nexport { Switch } from \"./switch\";\nexport { Combobox } from \"./combobox\";\nexport { Checkbox } from \"./checkbox\";\nexport { Tabs } from \"./tabs\";\nexport { Clipboard } from \"./clipboard\";\nexport { Collapsible } from \"./collapsible\";\nexport { Dialog } from \"./dialog\";\nexport { DatePicker } from \"./date-picker\";\nexport { SignaturePad } from \"./signature-pad\";\n\nimport { Accordion } from \"./accordion\";\nimport { Toast } from \"./toast\";\nimport { ToggleGroup } from \"./toggle-group\";\nimport { Select } from \"./select\";\nimport { Switch } from \"./switch\";\nimport { Combobox } from \"./combobox\";\nimport { Checkbox } from \"./checkbox\";\nimport { Tabs } from \"./tabs\";\nimport { Clipboard } from \"./clipboard\";\nimport { Collapsible } from \"./collapsible\";\nimport { Dialog } from \"./dialog\";\nimport { DatePicker } from \"./date-picker\";\nimport { SignaturePad } from \"./signature-pad\";\nconst Hooks = { Accordion, ToggleGroup, Toast, Select, Switch, Combobox, Checkbox, Tabs, Clipboard, Collapsible, Dialog, DatePicker, SignaturePad };\n\nexport default Hooks;"],
  "mappings": "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",
  "names": ["parts", "v", "v", "_", "getComputedStyle", "v", "e", "e", "e", "i", "first", "last", "raf2", "v", "offset", "v", "isValidKey", "e", "v", "v", "a", "b", "__defProp", "__defNormalProp", "__publicField", "v", "v", "v", "t", "v", "v", "size", "a", "b", "i", "isEqual", "v", "isObject", "v", "x", "a", "v", "noop", "a", "match", "isNaN", "v", "v", "v", "v", "props", "__publicField", "a", "m", "c", "c", "m", "props", "isEqual", "guards", "choose", "props", "getRootNode", "props", "props2", "keyMap", "bindable", "splitProps", "g", "isReactElement", "x", "isVueElement", "isObject", "isObject", "remove", "__defProp", "__defNormalProp", "__publicField", "match", "props", "e", "f", "setup", "machine", "state", "s", "t", "isEqual", "getRootNode", "props", "props", "i", "v", "i", "v", "fireCustomEvent", "v", "anatomy", "parts", "getRootId", "getRootEl", "offset", "createMachine", "and", "props", "bindable", "t", "connect", "state", "not", "machine", "i", "subscribe", "remove", "props", "machine", "connect", "g", "t", "group", "anatomy", "parts", "getRootId", "getItemId", "getRootEl", "connect", "props2", "keyMap", "not", "and", "machine", "bindable", "isEqual", "props", "splitProps", "itemProps", "splitItemProps", "props", "machine", "connect", "i", "props", "__defProp", "__defNormalProp", "__publicField", "isObject", "isEqual", "a", "b", "clamp", "i", "match", "options", "state", "query", "a", "b", "i", "min", "max", "round", "floor", "v", "clamp", "x", "y", "state", "x", "y", "platform", "i", "min", "max", "offset", "clamp", "state", "platform", "placements", "sides", "side", "nextIndex", "d", "a", "b", "placement", "overflow", "state", "platform", "x", "y", "min", "max", "clamp", "offset", "getNodeName", "isNode", "getWindow", "getDocumentElement", "isElement", "isHTMLElement", "isShadowRoot", "isOverflowElement", "getComputedStyle", "getParentNode", "getNearestOverflowAncestor", "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", "getSideAxis", "state", "arrow", "offset", "shift2", "flip", "shift", "limitShift", "size", "hide", "computePosition", "x", "y", "getComputedStyle", "noop", "v", "anatomy", "parts", "getRootId", "getItemId", "connect", "state", "collection2", "props2", "keyMap", "and", "not", "machine", "bindable", "isEqual", "v", "props", "splitProps", "itemProps", "splitItemProps", "props", "self", "machine", "connect", "group", "s", "_", "e", "props", "e", "anatomy", "parts", "getRootId", "getLabelId", "getControlId", "getRootEl", "connect", "not", "machine", "props2", "bindable", "props", "splitProps", "props", "machine", "connect", "anatomy", "parts", "collection", "getRootId", "getLabelId", "getControlId", "getContentId", "getPositionerId", "getTriggerId", "getClearTriggerId", "getItemGroupId", "getItemGroupLabelId", "getItemId", "getContentEl", "getPositionerEl", "getTriggerEl", "getClearTriggerEl", "getItemEl", "connect", "state", "collection2", "props2", "isModifierKey", "keyMap", "guards", "createMachine", "and", "not", "machine", "bindable", "isEqual", "v", "match", "props", "splitProps", "itemGroupLabelProps", "splitItemGroupLabelProps", "itemGroupProps", "splitItemGroupProps", "itemProps", "splitItemProps", "collection", "props", "self", "machine", "connect", "group", "s", "snakeToCamel", "_", "transformPositioningOptions", "props", "anatomy", "parts", "getRootId", "getLabelId", "getControlId", "getHiddenInputId", "getRootEl", "getHiddenInputEl", "connect", "not", "machine", "props2", "bindable", "props", "splitProps", "props", "machine", "connect", "anatomy", "parts", "getRootId", "getContentId", "getTriggerId", "getContentEl", "getTriggerEl", "getElements", "getFirstTriggerEl", "getLastTriggerEl", "getNextTriggerEl", "getPrevTriggerEl", "connect", "state", "props2", "keyMap", "createMachine", "machine", "bindable", "isEqual", "props", "splitProps", "props", "machine", "connect", "i", "anatomy", "parts", "getRootId", "getInputId", "getLabelId", "getInputEl", "connect", "state", "props2", "machine", "bindable", "props", "props", "machine", "connect", "inputProps", "triggerProps", "anatomy", "parts", "getRootId", "getContentId", "getTriggerId", "getContentEl", "connect", "state", "machine", "bindable", "getComputedStyle", "props", "splitProps", "props", "machine", "connect", "x", "props", "e", "getParentNode", "raf", "v", "__defProp", "__defNormalProp", "__publicField", "g", "n", "c", "options", "i", "group", "e", "getComputedStyle", "anatomy", "parts", "getPositionerId", "getContentId", "getTriggerId", "getTitleId", "getDescriptionId", "getCloseTriggerId", "getContentEl", "getPositionerEl", "getTriggerEl", "connect", "state", "machine", "props2", "bindable", "getContentEl2", "getElements", "getComputedStyle", "props", "splitProps", "props", "machine", "connect", "a", "b", "a", "b", "parts", "parts", "date", "offset", "a", "b", "min", "max", "round", "res", "ms", "m", "min", "max", "offset", "sign", "b", "b", "offset", "p", "a", "b", "min", "max", "min", "max", "d", "parts", "i", "i", "parts", "group", "delay", "anatomy", "parts", "getLabelId", "getRootId", "getContentId", "getClearTriggerId", "getControlId", "getInputId", "getTriggerId", "getPositionerId", "getContentEl", "getTriggerEl", "getControlEl", "getClearTriggerEl", "getPositionerEl", "a", "b", "match", "parts2", "state", "fallback", "connect", "min", "max", "props2", "keyMap", "and", "i", "machine", "bindable", "v", "getPositionerEl2", "getContentEl2", "props", "splitProps", "props", "machine", "connect", "triggerEl", "inputProps", "triggerProps", "d", "n", "min", "max", "v", "x", "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", "anatomy", "parts", "getRootId", "getControlId", "getLabelId", "getHiddenInputId", "getControlEl", "getDataUrl", "connect", "state", "offset", "props2", "a", "b", "c", "i", "max", "machine", "bindable", "props", "splitProps", "props", "machine", "connect"]
}
