{
  "version": 3,
  "sources": ["../../../../node_modules/.pnpm/@zag-js+anatomy@1.32.0/node_modules/@zag-js/anatomy/dist/index.mjs", "../../../../node_modules/.pnpm/@zag-js+dom-query@1.32.0/node_modules/@zag-js/dom-query/dist/index.mjs", "../../../../node_modules/.pnpm/@zag-js+aria-hidden@1.32.0/node_modules/@zag-js/aria-hidden/dist/index.mjs", "../../../../node_modules/.pnpm/@zag-js+utils@1.32.0/node_modules/@zag-js/utils/dist/index.mjs", "../../../../node_modules/.pnpm/@zag-js+core@1.32.0/node_modules/@zag-js/core/dist/index.mjs", "../../../../node_modules/.pnpm/@zag-js+interact-outside@1.32.0/node_modules/@zag-js/interact-outside/dist/index.mjs", "../../../../node_modules/.pnpm/@zag-js+dismissable@1.32.0/node_modules/@zag-js/dismissable/dist/index.mjs", "../../../../node_modules/.pnpm/@zag-js+focus-trap@1.32.0/node_modules/@zag-js/focus-trap/dist/index.mjs", "../../../../node_modules/.pnpm/@zag-js+remove-scroll@1.32.0/node_modules/@zag-js/remove-scroll/dist/index.mjs", "../../../../node_modules/.pnpm/@zag-js+types@1.32.0/node_modules/@zag-js/types/dist/index.mjs", "../../../../node_modules/.pnpm/@zag-js+dialog@1.32.0/node_modules/@zag-js/dialog/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.32.0/node_modules/@zag-js/store/dist/index.mjs", "../../../../node_modules/.pnpm/@zag-js+vanilla@1.32.0/node_modules/@zag-js/vanilla/dist/index.mjs", "../../src/lib/component.ts", "../../src/lib/util.ts", "../../src/components/dialog.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  const start = input.selectionStart ?? 0;\n  const end = input.selectionEnd ?? 0;\n  if (Math.abs(end - start) !== 0) return;\n  if (start !== 0) return;\n  input.setSelectionRange(input.value.length, input.value.length);\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  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  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  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  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}\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}\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, waitForPromise };\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", "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, getActiveElement, getDocument } 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", "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, 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  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    return this.getNestedLayers(node).some((layer) => contains(layer.node, target));\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    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 { 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 { setStyleProperty, isIos, 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", "// 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 { 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", "/* 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, 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) {\n  const oldAttrs = prevAttrsMap.get(node) || {};\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\") {\n      node.toggleAttribute(getAttributeName(node, attrName), 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  prevAttrsMap.set(node, attrs);\n  return function cleanup() {\n    attrKeys.filter(onEvents).forEach(teardown);\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}\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, \"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    const { id, ids, getRootNode } = runIfFn(userProps);\n    this.scope = createScope({ id, ids, getRootNode });\n    const prop = (key) => {\n      const __props = runIfFn(userProps);\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  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 } from \"@zag-js/vanilla\";\n\ninterface ComponentInterface<Api> {\n  el: HTMLElement;\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  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.machine = this.initMachine(props);\n    this.api = this.initApi();\n  }\n\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", "/**\n * Corex utility functions for working with Zag.js components.\n *\n * Note: `normalizeProps` is provided by @zag-js/vanilla and is imported from there.\n * `spreadProps` is wrapped to ensure ARIA boolean attributes are converted to strings\n * for accessibility compliance.\n */\nimport { spreadProps as zagSpreadProps } from \"@zag-js/vanilla\";\n\n/**\n * Wrapper around zag's spreadProps that converts boolean ARIA attributes to strings\n * (\"true\" or \"false\") for accessibility compliance. All other attributes are passed\n * through unchanged.\n *\n * The vanilla spreadProps removes boolean false attributes, but ARIA attributes\n * should always be present as strings when provided by the API.\n *\n * Exception: `aria-readonly` is omitted when false as it's invalid on certain roles\n * (e.g., role=\"button\").\n */\nexport function spreadProps(\n  node: Element,\n  attrs: Record<string, any>,\n): () => void {\n  const normalizedAttrs: Record<string, any> = {};\n\n  for (const [attrName, value] of Object.entries(attrs)) {\n    if (typeof value === \"boolean\") {\n      const lowerAttrName = attrName.toLowerCase();\n      if (lowerAttrName.startsWith(\"aria-\")) {\n        if (lowerAttrName === \"aria-readonly\" && !value) continue;\n        normalizedAttrs[attrName] = String(value);\n      } else {\n        normalizedAttrs[attrName] = value;\n      }\n    } else {\n      normalizedAttrs[attrName] = value;\n    }\n  }\n\n  return zagSpreadProps(node, normalizedAttrs);\n}\n\ntype PropertyType = \"string\" | \"boolean\" | \"number\" | \"string[]\";\ntype PropMap = Record<string, PropertyType>;\n/**\n * Renders a specific part of the UI based on the component's props.\n * If `propsToSend` is a PropMap, attributes are read from the DOM.\n * If `propsToSend` is a plain object, it is passed directly to the API.\n *\n * NOTE: This version treats the passed `root` element itself as a candidate\n * part (so you can call renderPart(li, 'item', api, { item }) for a single li).\n */\nexport const renderPart = (\n  root: HTMLElement,\n  name: string,\n  api: any,\n  propsToSend?: PropMap | Record<string, any | ((el: HTMLElement) => any)>,\n) => {\n  const camelizedName = name\n    .split(\"-\")\n    .map((word, index) =>\n      index === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1),\n    )\n    .join(\"\");\n  const getterName = `get${camelizedName.charAt(0).toUpperCase()}${camelizedName.slice(1)}Props`;\n  if (typeof api[getterName] !== \"function\") return;\n\n  // Collect parts: include root itself if it matches, plus any descendants\n  const parts: HTMLElement[] = [];\n  try {\n    if (\n      (root as Element).matches &&\n      (root as Element).matches(`[data-part='${name}']`)\n    ) {\n      parts.push(root);\n    }\n  } catch (e) {\n    console.log(e);\n  }\n  parts.push(\n    ...Array.from(root.querySelectorAll<HTMLElement>(`[data-part='${name}']`)),\n  );\n\n  // Find the component root (closest ancestor with class containing \"-js\")\n  const componentRoot = root.closest('[class*=\"-js\"]') as HTMLElement | null;\n\n  const scopedParts = componentRoot\n    ? parts.filter((part) => part.closest('[class*=\"-js\"]') === componentRoot)\n    : parts;\n\n  scopedParts.forEach((part) => {\n    let props: Record<string, any> | undefined;\n    if (propsToSend) {\n      if (isPropMap(propsToSend)) {\n        props = {};\n        for (const [prop, type] of Object.entries(propsToSend)) {\n          const getter =\n            type === \"string\"\n              ? getString\n              : type === \"boolean\"\n                ? getBoolean\n                : type === \"number\"\n                  ? getNumber\n                  : type === \"string[]\"\n                    ? getStringList\n                    : getString;\n          props[prop] = getter(part, prop);\n        }\n      } else {\n        props = {};\n        for (const [key, value] of Object.entries(propsToSend)) {\n          props[key] = typeof value === \"function\" ? value(part) : value;\n        }\n      }\n    }\n    const result = props ? api[getterName](props) : api[getterName]();\n    spreadProps(part, result);\n    if (name === \"preview\") {\n      const childrenValue = part.getAttribute(\"children\");\n      if (childrenValue !== null) part.textContent = childrenValue;\n    }\n  });\n};\nfunction isPropMap(value: any): value is PropMap {\n  if (typeof value !== \"object\" || value === null) return false;\n  return Object.values(value).every(\n    (v) =>\n      v === \"string\" || v === \"boolean\" || v === \"number\" || v === \"string[]\",\n  );\n}\n\n/**\n * Renders a list of items inside the root element. Each item is identified by the `name`, and the\n * properties for each item are retrieved from the API based on its `data-value`, `data-disabled`, and `data-index` attributes.\n * @param root - The root HTML element containing the items.\n * @param name - The name of the item part to render.\n * @param api - The API object used to retrieve the properties for each item.\n * ```\n */\nexport function renderList<T extends { value: string; label?: string }>(\n  root: HTMLElement,\n  name: string,\n  api: any,\n  items: T[],\n) {\n  const parts = root.querySelectorAll<HTMLElement>(`[data-part='${name}']`);\n  const getter = api[`get${capitalize(name)}Props`];\n  parts.forEach((el, index) => {\n    const value = el.getAttribute(\"data-value\") || items[index]?.value;\n    const item = items.find((item) => item.value === value);\n    if (!item) return;\n    const props = getter({ item });\n    spreadProps(el, props);\n  });\n}\n\nfunction capitalize(str: string): string {\n  return str.replace(/(^|-)([a-z])/g, (_m, _p, l) => l.toUpperCase());\n}\ninterface Node {\n  id: string;\n  name: string;\n  children?: Node[];\n}\n/**\n * Recursively searches for a node in a hierarchical structure based on its `id`.\n * @param tree - The tree structure to search through.\n * @param id - The ID of the node to find.\n * @returns The node if found, or `null` if no node with the specified ID exists.\n * ```\n */\nexport function findNodeById(tree: Node, id: string): Node | null {\n  if (tree.id === id) return tree;\n  if (!tree.children) return null;\n  for (const child of tree.children) {\n    const found = findNodeById(child, id);\n    if (found) return found;\n  }\n  return null;\n}\n/**\n * Tree View Component: Renders a node from the provided hierarchical tree view into the specified part in the UI.\n * The part is identified by the `name`, and the node is retrieved from the tree using its `id` attribute.\n * @param root - The root HTML element in which the node resides.\n * @param name - The name of the node part to render.\n * @param api - The API object used to retrieve the properties for the node.\n * @param tree - The hierarchical tree structure containing the nodes.\n *\n * Example:\n * ```ts\n * const root = document.getElementById('root');\n * const tree = { id: '1', name: 'root', children: [{ id: '2', name: 'child' }] };\n * renderNode(root, 'node', api, tree); // Renders the node with properties from the tree\n * ```\n */\nexport const renderNode = (\n  root: HTMLElement,\n  name: string,\n  api: any,\n  tree: Node,\n) => {\n  const parts = root.querySelectorAll<HTMLElement>(`[data-part='${name}']`);\n  // Convert part name to API method name, e.g., \"branch-control\" \u2192 \"getBranchControlProps\"\n  const camelizedName = name.replace(\n    /(^|-)([a-z])/g,\n    (_match, _prefix, letter) => letter.toUpperCase(),\n  );\n  const getterName = `get${camelizedName}Props`;\n  // Helper to recursively find node and index path\n  const findNodeById = (\n    node: Node,\n    id: string,\n    path: number[] = [],\n  ): { node: Node; indexPath: number[] } | null => {\n    if (node.id === id) return { node, indexPath: path };\n    if (node.children) {\n      for (let i = 0; i < node.children.length; i++) {\n        const found = findNodeById(node.children[i], id, [...path, i]);\n        if (found) return found;\n      }\n    }\n    return null;\n  };\n  parts.forEach((part) => {\n    const id = part.getAttribute(\"data-id\");\n    if (!id) return;\n    const found = findNodeById(tree, id);\n    if (!found) return;\n    const { node, indexPath } = found;\n    const getPropsFn =\n      typeof api[getterName] === \"function\" ? api[getterName] : api.getProps;\n    const props = getPropsFn({ indexPath, node });\n    spreadProps(part, props);\n    const label = part.getAttribute(\"children\");\n    if (label != null) {\n      part.textContent = label;\n    }\n  });\n};\n/**\n * Extract a string data attribute with validation for specific type\n * @param element - The HTML element to extract from\n * @param attrName - The data attribute name (without 'data-' prefix)\n * @param validValues - Optional array of allowed values\n * @returns Validated string value or undefined\n */\nexport const getString = <T extends string>(\n  element: HTMLElement,\n  attrName: string,\n  validValues?: readonly T[],\n): T | undefined => {\n  const value = element.dataset[attrName];\n  if (\n    value !== undefined &&\n    (!validValues || (validValues as readonly string[]).includes(value))\n  ) {\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 = (\n  element: HTMLElement,\n  attrName: string,\n): 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 * 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 or undefined\n */\nexport const getBoolean = (\n  element: HTMLElement,\n  attrName: string,\n): boolean | undefined => {\n  const value = element.dataset[attrName];\n  if (value === \"\") return true;\n  if (value === \"true\") return true;\n  if (value === \"false\") return false;\n  if (element.hasAttribute(attrName)) return true;\n  if (element.hasAttribute(`data-${attrName}`)) return true;\n\n  return undefined;\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 = (\n  element?: HTMLElement,\n  fallbackId: string = \"element\",\n): string => {\n  if (element?.id) return element.id;\n  return `${fallbackId}-${Math.random().toString(36).substring(2, 9)}`;\n};\n\nexport function valuesEqual<T>(a: T, b: T): boolean {\n  return a === b;\n}\n\nexport function arraysEqualUnordered(\n  a: string[] = [],\n  b: string[] = [],\n): boolean {\n  if (a === b) return true;\n  if (!Array.isArray(a) || !Array.isArray(b)) return false;\n  if (a.length !== b.length) return false;\n  return a.every((v) => b.includes(v));\n}\n\n/**\n * Parse element IDs from child parts with data-part and data-id attributes\n * @param root - The root element containing the parts\n * @param partNames - Array of part names to look for (e.g., ['root', 'control', 'label'])\n * @returns Object with parsed IDs or undefined if no IDs found\n *\n * Example:\n * ```html\n * <div class=\"checkbox-js\">\n *   <div data-part=\"root\" data-id=\"my-root\"></div>\n *   <div data-part=\"control\" data-id=\"my-control\"></div>\n * </div>\n * ```\n * ```ts\n * const ids = getPartIds(element, ['root', 'control', 'label']);\n * // Returns: { root: 'my-root', control: 'my-control' }\n * ```\n */\nexport const getPartIds = (\n  root: HTMLElement,\n  partNames: readonly string[],\n): Record<string, string> | undefined => {\n  const ids: Record<string, string> = {};\n  let hasAnyId = false;\n\n  for (const partName of partNames) {\n    const part = root.querySelector<HTMLElement>(`[data-part=\"${partName}\"]`);\n    const id = part?.dataset.id;\n\n    if (id) {\n      // Convert kebab-case to camelCase: hidden-input -> hiddenInput\n      const camelKey = partName.replace(/-([a-z])/g, (_, letter) =>\n        letter.toUpperCase(),\n      );\n      ids[camelKey] = id;\n      hasAnyId = true;\n    }\n  }\n\n  return hasAnyId ? ids : undefined;\n};\n", "import * as dialog from \"@zag-js/dialog\";\nimport type { Direction } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\nimport {\n  Component,\n  getString,\n  getBoolean,\n  generateId,\n  renderPart,\n  valuesEqual,\n} from \"../lib\";\nexport class Dialog extends Component<dialog.Props, dialog.Api> {\n  initMachine(props: dialog.Props): VanillaMachine<any> {\n    return new VanillaMachine(dialog.machine, props);\n  }\n  initApi(): dialog.Api {\n    return dialog.connect(this.machine.service, normalizeProps);\n  }\n  render() {\n    const parts = [\n      \"content\",\n      \"title\",\n      \"trigger\",\n      \"backdrop\",\n      \"positioner\",\n      \"description\",\n      \"close-trigger\",\n    ];\n    for (const part of parts) {\n      const node = this.el.querySelector(`[data-part=\"${part}\"]`);\n      if (node) renderPart(this.el, part, this.api);\n    }\n  }\n}\nexport function initDialog(\n  doc: HTMLElement | Document = document,\n  selector = \".dialog-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const roles = [\"dialog\", \"alertdialog\"] as const;\n    const dialog = new Dialog(rootEl, {\n      id: generateId(rootEl, \"dialog\"),\n      \"aria-label\": getString(rootEl, \"aria-label\"),\n      defaultOpen: getBoolean(rootEl, \"loopFocus\"),\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      modal: getBoolean(rootEl, \"modal\"),\n      open: getBoolean(rootEl, \"open\"),\n      preventScroll: getBoolean(rootEl, \"preventScroll\"),\n      restoreFocus: getBoolean(rootEl, \"restoreFocus\"),\n      trapFocus: getBoolean(rootEl, \"trapFocus\"),\n      closeOnInteractOutside: getBoolean(rootEl, \"closeOnInteractOutside\"),\n      closeOnEscape: getBoolean(rootEl, \"closeOnEscape\"),\n      role: getString(rootEl, \"dir\", roles),\n      onOpenChange(details: any) {\n        const eventName = getString(rootEl, \"onOpenChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n    dialog.init();\n    dialog.el.addEventListener(\"dialog:set-open\", (event) => {\n      const { value } = (event as CustomEvent<{ value: boolean }>).detail;\n      if (!valuesEqual(dialog.api.open, value)) {\n        dialog.api.setOpen(value);\n      }\n    });\n    dialog.el.addEventListener(\"dialog:open\", (event) => {\n      const detail = (\n        event as CustomEvent<{ callback: (value: boolean) => void }>\n      ).detail;\n      const callback = detail.callback;\n      if (callback && typeof callback === \"function\") {\n        callback(dialog.api.open);\n      }\n    });\n  });\n}\n"],
  "mappings": "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",
  "names": ["createAnatomy", "name", "parts", "values", "isEmpty", "part", "newName", "prev", "toKebabCase", "value", "v", "__defProp", "__defNormalProp", "obj", "key", "value", "__publicField", "noop", "isObject", "v", "ELEMENT_NODE", "DOCUMENT_NODE", "DOCUMENT_FRAGMENT_NODE", "isHTMLElement", "el", "isObject", "isDocument", "isWindow", "getNodeName", "node", "isHTMLElement", "isRootElement", "isNode", "el", "isObject", "isShadowRoot", "DOCUMENT_FRAGMENT_NODE", "isInputElement", "isElementVisible", "el", "isHTMLElement", "isActiveElement", "element", "rootNode", "getActiveElement", "TEXTAREA_SELECT_REGEX", "isEditableElement", "isInputElement", "contains", "parent", "child", "isShadowRoot", "next", "getDocument", "isDocument", "isWindow", "getDocumentElement", "getWindow", "activeElement", "getParentNode", "node", "getNodeName", "result", "getRootNode", "styleCache", "getComputedStyle", "INTERACTIVE_CONTAINER_ROLE", "isInteractiveContainerRole", "role", "getAriaControls", "isControlledElement", "container", "visitedIds", "checkElement", "searchRoot", "controllingElements", "controller", "controlledIds", "id", "controlledElement", "modal", "findControlledElements", "callback", "findRecursive", "root", "getControlledElements", "controlledElements", "isInteractiveContainerElement", "isControllerElement", "hasControllerElements", "isControlledByExpandedController", "escapedId", "selector", "isDom", "getPlatform", "pt", "v", "isDom", "getPlatform", "isTouchDevice", "isDom", "isIPhone", "pt", "isIPad", "isMac", "isIos", "isMac", "pt", "getComposedPath", "event", "getEventTarget", "isContextMenuEvent", "e", "isMac", "addDomEvent", "target", "eventName", "handler", "options", "node", "isFrame", "el", "isHTMLElement", "NATURALLY_TABBABLE_REGEX", "parseTabIndex", "attr", "hasTabIndex", "hasNegativeTabIndex", "getShadowRootForNode", "element", "getShadowRoot", "result", "collectElementsWithShadowDOM", "elements", "filterFn", "allElements", "toProcess", "processed", "positionMap", "i", "processIndex", "shadowRoot", "shadowElements", "focusableSelector", "hostIndex", "insertPosition", "getFocusables", "container", "options", "includeContainer", "isFocusable", "focusableElements", "frameBody", "isElementVisible", "getTabbables", "container", "options", "includeContainer", "getShadowRoot", "elements", "focusableSelector", "isTabbable", "tabbableElements", "element", "isFrame", "frameBody", "allElements", "collectElementsWithShadowDOM", "el", "isHTMLElement", "isFocusable", "hasNegativeTabIndex", "getTabIndex", "node", "NATURALLY_TABBABLE_REGEX", "isEditableElement", "hasTabIndex", "AnimationFrame", "_AnimationFrame", "__publicField", "fn", "raf", "frame", "getNearestOverflowAncestor", "el", "parentNode", "getParentNode", "isRootElement", "getDocument", "isHTMLElement", "isOverflowElement", "OVERFLOW_RE", "nonOverflowValues", "isOverflowElement", "el", "win", "getWindow", "overflow", "overflowX", "overflowY", "display", "setStyle", "el", "style", "noop", "prev", "acc", "key", "setStyleProperty", "prop", "value", "waitForPromise", "promise", "controller", "timeout", "signal", "resolve", "reject", "timeoutId", "result", "error", "waitForElement", "target", "options", "rootNode", "win", "getWindow", "doc", "getDocument", "el", "observer", "el2", "counterMap", "uncontrolledNodes", "markerMap", "lockCount", "unwrapHost", "node", "correctTargets", "parent", "targets", "target", "correctedTarget", "x", "ignoreableNodes", "isIgnoredNode", "walkTreeOutside", "originalTarget", "props", "parentNode", "markerName", "controlAttribute", "followControlledElements", "markerCounter", "hiddenNodes", "elementsToKeep", "elementsToStop", "keep", "el", "isHTMLElement", "findControlledElements", "controlledElement", "deep", "alreadyHidden", "counterValue", "markerValue", "e", "getParentNode", "hideOthers", "raf", "fn", "frameId", "ariaHidden", "targetsOrFn", "options", "defer", "func", "v", "cleanups", "elements", "toArray", "v", "isArrayLike", "value", "isArrayEqual", "a", "b", "i", "isEqual", "keys", "length", "key", "isObjectLike", "v", "isString", "v", "isFunction", "hasProp", "obj", "prop", "baseGetTag", "v", "fnToString", "objectCtorString", "isPlainObject", "isObjectLike", "isFrameworkElement", "proto", "Ctor", "isReactElement", "x", "isVueElement", "runIfFn", "a", "identity", "v", "callAll", "fns", "a", "fn", "floor", "abs", "round", "min", "max", "pow", "sign", "compact", "obj", "isPlainObject", "keys", "key", "filtered", "value", "splitProps", "props", "keys", "rest", "result", "keySet", "ownKeys", "key", "createSplitProps", "_tick", "_tick", "warn", "a", "m", "c", "MachineStatus", "MachineStatus2", "INIT_STATE", "createScope", "props", "getRootNode", "getDoc", "getDocument", "getActiveElement", "isActiveElement", "id", "getWindowFrames", "win", "frames", "cb", "i", "frame", "event", "listener", "options", "getParentWindow", "parent", "POINTER_OUTSIDE_EVENT", "FOCUS_OUTSIDE_EVENT", "isComposedPathFocusable", "composedPath", "node", "isHTMLElement", "isFocusable", "isPointerEvent", "isEventPointWithin", "rect", "isPointInRect", "point", "isEventWithinScrollbar", "ancestor", "isScrollableY", "onScrollbarY", "isScrollableX", "onScrollbarX", "trackInteractOutsideImpl", "exclude", "onFocusOutside", "onPointerDownOutside", "onInteractOutside", "defer", "followControlledElements", "doc", "getDocument", "getWindow", "parentWin", "isEventOutside", "target", "contains", "isControlledElement", "triggerEl", "triggerAncestor", "getNearestOverflowAncestor", "nodeAncestor", "pointerdownCleanups", "isInShadowRoot", "isShadowRoot", "onPointerDown", "handler", "clickEvent", "func", "isTouchDevice", "raf", "v", "evt", "getEventTarget", "handler2", "callAll", "fireCustomEvent", "isContextMenuEvent", "fn", "addDomEvent", "cleanups", "timer", "onFocusin", "trackInteractOutside", "nodeOrFn", "el", "type", "init", "trackEscapeKeydown", "node", "fn", "handleKeyDown", "event", "addDomEvent", "getDocument", "LAYER_REQUEST_DISMISS_EVENT", "layerStack", "layer", "index", "highestBlockingIndex", "type", "target", "contains", "branch", "nestedCount", "parent", "addListenerOnce", "fireCustomEvent", "el", "detail", "win", "callback", "originalBodyPointerEvents", "assignPointerEventToLayers", "clearPointerEvent", "disablePointerEventsOutside", "persistentElements", "doc", "cleanups", "promise", "abort", "waitForElement", "node2", "isHTMLElement", "el2", "setStyle", "trackDismissableElementImpl", "options", "warnOnMissingNode", "warn", "onDismiss", "onRequestDismiss", "pointerBlocking", "excludeContainers", "debug", "onPointerDownOutside", "getEventTarget", "onFocusOutside", "onEscapeKeyDown", "exclude", "containers", "_containers", "trackInteractOutside", "trackDismissableElement", "nodeOrFn", "defer", "func", "raf", "v", "isFunction", "__defProp", "__defNormalProp", "obj", "key", "value", "__publicField", "activeFocusTraps", "trapStack", "trap", "activeTrap", "trapIndex", "sharedTrapStack", "FocusTrap", "elements", "options", "event", "target", "getEventTarget", "targetContained", "isDocument", "nextNode", "navAcrossContainers", "getTabIndex", "mruContainerIdx", "tabbableNodes", "mruTabIdx", "node", "g", "n", "valueOrHandler", "isBackward", "destinationNode", "isTabEvent", "isEscapeEvent", "win", "mutations", "mutation", "element", "hasControllerElements", "c", "isControlledByExpandedController", "container", "portalContainer", "isFocusable", "activeElement", "getActiveElement", "firstTabbableGroup", "isSelectableInput", "deactivateOptions", "onDeactivate", "onPostDeactivate", "checkCanReturnFocus", "returnFocus", "finishDeactivation", "delay", "returnFocusNode", "pauseOptions", "onPause", "onPostPause", "unpauseOptions", "onUnpause", "onPostUnpause", "containerElements", "previousActiveElement", "configOverrideOptions", "optionName", "configOptionName", "hasFallback", "params", "optionValue", "err", "opts", "containerIndex", "containerGroup", "startOfGroupIndex", "firstTabbableNode", "isTabbable", "destinationGroupIndex", "destinationGroup", "lastOfGroupIndex", "lastTabbableNode", "config", "isKeyForward", "isKeyBackward", "getDocument", "controlledElement", "getControlledElements", "composedPath", "isControlledElement", "getTabbables", "focusableNodes", "getFocusables", "firstDomTabbableNode", "lastDomTabbableNode", "posTabIndexesFound", "i", "nextTabbableNode", "forward", "nodeIdx", "focusableIdx", "group", "addDomEvent", "cleanup", "activateOptions", "onActivate", "onPostActivate", "checkCanFocusTrap", "finishActivation", "isKeyboardEvent", "e", "fn", "trapFocus", "el", "raf", "resolvedElements", "primaryEl", "LOCK_CLASSNAME", "getPaddingProperty", "documentElement", "documentLeft", "hasStableScrollbarGutter", "element", "scrollbarGutter", "getComputedStyle", "preventBodyScroll", "_document", "doc", "win", "body", "hasStableGutter", "scrollbarWidth", "setScrollbarWidthProperty", "setStyleProperty", "paddingProperty", "setBodyStyle", "styles", "setStyle", "setBodyStyleIOS", "scrollX", "scrollY", "visualViewport", "offsetLeft", "offsetTop", "restoreStyle", "cleanups", "isIos", "fn", "createNormalizer", "fn", "_target", "key", "props", "createProps", "anatomy", "createAnatomy", "parts", "getPositionerId", "ctx", "getBackdropId", "getContentId", "getTriggerId", "getTitleId", "getDescriptionId", "getCloseTriggerId", "getContentEl", "getPositionerEl", "getBackdropEl", "getTriggerEl", "getTitleEl", "getDescriptionEl", "getCloseTriggerEl", "connect", "service", "normalize", "state", "send", "context", "prop", "scope", "ariaLabel", "open", "nextOpen", "event", "rendered", "machine", "props2", "alertDialog", "initialFocusEl", "modal", "bindable", "track", "action", "trackDismissableElement", "preventBodyScroll", "trapFocus", "el", "ariaHidden", "raf", "contentEl", "styles", "getComputedStyle", "node", "props", "createProps", "splitProps", "createSplitProps", "TRACK_MEMO_SYMBOL", "GET_ORIGINAL_SYMBOL", "getProto", "objectsToTrack", "isObjectToTrack", "obj", "getUntracked", "obj", "isObjectToTrack", "GET_ORIGINAL_SYMBOL", "markToTrack", "mark", "objectsToTrack", "glob", "globalRef", "key", "value", "g", "refSet", "isReactElement", "x", "isVueElement", "isDOMElement", "isElement", "isObject", "canProxy", "isDev", "proxyStateMap", "globalRef", "buildProxyFunction", "objectIs", "newProxy", "target", "handler", "snapCache", "createSnapshot", "version", "cache", "snap", "markToTrack", "key", "value", "refSet", "snapshot", "proxyCache", "versionHolder", "proxyFunction2", "initialObject", "isObject", "found", "listeners", "notifyUpdate", "op", "nextVersion", "listener", "checkVersion", "ensureVersion", "nextCheckVersion", "propProxyStates", "propProxyState", "propVersion", "createPropListener", "prop", "newOp", "addPropListener", "isDev", "remove", "removePropListener", "entry", "addListener", "prevRemove", "baseObject", "proxyObject", "prevValue", "deleted", "receiver", "hasPrevValue", "getUntracked", "nextValue", "canProxy", "proxy", "childProxyState", "proxyState", "desc", "proxyFunction", "subscribe", "callback", "notifyInSync", "promise", "ops", "isListenerActive", "removeListener", "__defProp", "__defNormalProp", "obj", "key", "value", "__publicField", "propMap", "caseSensitiveSvgAttrs", "toStyleString", "style", "string", "match", "normalizeProps", "createNormalizer", "props", "acc", "normalizedKey", "prevAttrsMap", "assignableProps", "caseSensitiveSvgAttrs2", "isSvgElement", "node", "getAttributeName", "attrName", "spreadProps", "attrs", "oldAttrs", "attrKeys", "addEvt", "e", "remEvt", "onEvents", "attr", "others", "setup", "teardown", "apply", "oldValue", "evt", "bindable", "initial", "eq", "store", "proxy", "controlled", "nextValue", "prev", "next", "isFunction", "prevValue", "_fn", "defaultValue", "createRefs", "refs", "ref", "VanillaMachine", "machine", "userProps", "state", "values", "tag", "args", "event", "MachineStatus", "currentState", "eventType", "transitions", "transition", "target", "changed", "keys", "strs", "fns", "s", "fn", "warn", "str", "cleanups", "cleanup", "toArray", "t", "result", "isString", "index", "deps", "dep", "isEqual", "identity", "id", "ids", "getRootNode", "runIfFn", "createScope", "prop", "__props", "compact", "context", "ctx", "computed", "item", "unsub", "subscribe", "current", "nextState", "prevState", "INIT_STATE", "cleanup2", "Component", "el", "props", "spreadProps", "node", "attrs", "normalizedAttrs", "attrName", "value", "lowerAttrName", "renderPart", "root", "name", "api", "propsToSend", "camelizedName", "word", "index", "getterName", "parts", "e", "componentRoot", "part", "props", "isPropMap", "prop", "type", "getter", "getString", "getBoolean", "getNumber", "getStringList", "key", "result", "childrenValue", "v", "getString", "element", "attrName", "validValues", "value", "getStringList", "v", "getNumber", "raw", "parsed", "getBoolean", "generateId", "fallbackId", "valuesEqual", "a", "b", "Dialog", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "parts", "part", "renderPart", "initDialog", "doc", "selector", "rootEl", "directions", "roles", "dialog", "generateId", "getString", "getBoolean", "details", "eventName", "event", "value", "valuesEqual", "callback"]
}
