{"version":3,"file":"@zag-js-41a0fc52.js","sources":["../../node_modules/@zag-js/dom-query/dist/index.mjs","../../node_modules/@zag-js/focus-visible/dist/index.mjs","../../node_modules/@zag-js/element-size/dist/track-size.mjs"],"sourcesContent":["// src/attrs.ts\nvar dataAttr = (guard) => {\n return guard ? \"\" : void 0;\n};\nvar ariaAttr = (guard) => {\n return guard ? \"true\" : void 0;\n};\n\n// src/is-html-element.ts\nfunction isHTMLElement(value) {\n return typeof value === \"object\" && value?.nodeType === Node.ELEMENT_NODE && typeof value?.nodeName === \"string\";\n}\n\n// src/contains.ts\nfunction contains(parent, child) {\n if (!parent || !child)\n return false;\n if (!isHTMLElement(parent) || !isHTMLElement(child))\n return false;\n return parent === child || parent.contains(child);\n}\nvar isSelfEvent = (event) => contains(event.currentTarget, event.target);\n\n// src/create-scope.ts\nvar getDocument = (node) => {\n if (node.nodeType === Node.DOCUMENT_NODE)\n return node;\n return node.ownerDocument ?? document;\n};\nfunction createScope(methods) {\n const screen = {\n getRootNode: (ctx) => ctx.getRootNode?.() ?? document,\n getDoc: (ctx) => getDocument(screen.getRootNode(ctx)),\n getWin: (ctx) => screen.getDoc(ctx).defaultView ?? window,\n getActiveElement: (ctx) => screen.getDoc(ctx).activeElement,\n getById: (ctx, id) => screen.getRootNode(ctx).getElementById(id)\n };\n return { ...screen, ...methods };\n}\n\n// src/env.ts\nvar isDocument = (el) => el.nodeType === Node.DOCUMENT_NODE;\nfunction getDocument2(el) {\n if (isDocument(el))\n return el;\n return el?.ownerDocument ?? document;\n}\nfunction getWindow(el) {\n return el?.ownerDocument.defaultView ?? window;\n}\n\n// src/get-active-element.ts\nfunction getActiveElement(el) {\n let activeElement = el.ownerDocument.activeElement;\n while (activeElement?.shadowRoot) {\n const el2 = activeElement.shadowRoot.activeElement;\n if (el2 === activeElement)\n break;\n else\n activeElement = el2;\n }\n return activeElement;\n}\n\n// src/get-by-id.ts\nfunction itemById(v, id) {\n return v.find((node) => node.id === id);\n}\nfunction indexOfId(v, id) {\n const item = itemById(v, id);\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)\n 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/get-by-text.ts\nvar getValueText = (item) => item.dataset.valuetext ?? item.textContent ?? \"\";\nvar match = (valueText, query2) => valueText.toLowerCase().startsWith(query2.toLowerCase());\nvar wrap = (v, idx) => {\n return v.map((_, index) => v[(Math.max(idx, 0) + index) % v.length]);\n};\nfunction getByText(v, text, currentId) {\n const index = currentId ? indexOfId(v, currentId) : -1;\n let items = currentId ? wrap(v, index) : v;\n const isSingleKey = text.length === 1;\n if (isSingleKey) {\n items = items.filter((item) => item.id !== currentId);\n }\n return items.find((item) => match(getValueText(item), text));\n}\n\n// src/get-by-typeahead.ts\nfunction getByTypeaheadImpl(_items, options) {\n const { state, activeId, key, timeout = 350 } = options;\n const search = state.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 = _items.slice();\n const next = getByText(items, query2, activeId);\n function cleanup() {\n clearTimeout(state.timer);\n state.timer = -1;\n }\n function update(value) {\n state.keysSoFar = value;\n cleanup();\n if (value !== \"\") {\n state.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/get-computed-style.ts\nvar styleCache = /* @__PURE__ */ new WeakMap();\nfunction getComputedStyle(el) {\n if (!styleCache.has(el)) {\n const win = el.ownerDocument.defaultView || window;\n styleCache.set(el, win.getComputedStyle(el));\n }\n return styleCache.get(el);\n}\n\n// src/get-event-target.ts\nfunction getEventTarget(event) {\n return event.composedPath?.()[0] ?? event.target;\n}\n\n// src/get-scroll-parent.ts\nfunction isScrollParent(el) {\n const win = el.ownerDocument.defaultView || window;\n const { overflow, overflowX, overflowY } = win.getComputedStyle(el);\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}\nfunction getParent(el) {\n if (el.localName === \"html\")\n return el;\n return el.assignedSlot || el.parentElement || el.ownerDocument.documentElement;\n}\nfunction getScrollParent(el) {\n if ([\"html\", \"body\", \"#document\"].includes(el.localName)) {\n return el.ownerDocument.body;\n }\n if (isHTMLElement(el) && isScrollParent(el)) {\n return el;\n }\n return getScrollParent(getParent(el));\n}\nfunction getScrollParents(el, list = []) {\n const parent = getScrollParent(el);\n const isBody = parent === el.ownerDocument.body;\n const win = parent.ownerDocument.defaultView || window;\n const target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(parent) ? parent : []) : parent;\n const parents = list.concat(target);\n return isBody ? parents : parents.concat(getScrollParents(getParent(target)));\n}\n\n// src/is-editable-element.ts\nfunction isEditableElement(el) {\n if (el == null || !isHTMLElement(el)) {\n return false;\n }\n try {\n const win = el.ownerDocument.defaultView || window;\n return el instanceof win.HTMLInputElement && el.selectionStart != null || /(textarea|select)/.test(el.localName) || el.isContentEditable;\n } catch {\n return false;\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}\nvar pt = (v) => isDom() && v.test(getPlatform());\nvar ua = (v) => isDom() && v.test(navigator.userAgent);\nvar vn = (v) => isDom() && v.test(navigator.vendor);\nvar isTouchDevice = () => isDom() && !!navigator.maxTouchPoints;\nvar isMac = () => pt(/^Mac/) && !isTouchDevice();\nvar isIPhone = () => pt(/^iPhone/);\nvar isSafari = () => isApple() && vn(/apple/i);\nvar isFirefox = () => ua(/firefox\\//i);\nvar isApple = () => pt(/mac|iphone|ipad|ipod/i);\nvar isIos = () => isApple() && !isMac();\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);\n}\n\n// src/raf.ts\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 raf(fn) {\n const id = globalThis.requestAnimationFrame(fn);\n return () => {\n globalThis.cancelAnimationFrame(id);\n };\n}\n\n// src/index.ts\nvar MAX_Z_INDEX = 2147483647;\nexport {\n MAX_Z_INDEX,\n ariaAttr,\n contains,\n createScope,\n dataAttr,\n getActiveElement,\n getByText,\n getByTypeahead,\n getComputedStyle,\n getDocument2 as getDocument,\n getEventTarget,\n getParent,\n getPlatform,\n getScrollParent,\n getScrollParents,\n getWindow,\n indexOfId,\n isApple,\n isDom,\n isEditableElement,\n isFirefox,\n isHTMLElement,\n isIPhone,\n isIos,\n isMac,\n isSafari,\n isSelfEvent,\n isTouchDevice,\n itemById,\n nextById,\n nextTick,\n prevById,\n query,\n queryAll,\n raf\n};\n//# sourceMappingURL=index.mjs.map","// src/index.ts\nimport { isDom } from \"@zag-js/dom-query\";\nvar hasSetup = false;\nvar modality = null;\nvar hasEventBeforeFocus = false;\nvar hasBlurredWindowRecently = false;\nvar handlers = /* @__PURE__ */ new Set();\nfunction trigger(modality2, event) {\n handlers.forEach((handler) => handler(modality2, event));\n}\nvar isMac = typeof window !== \"undefined\" && window.navigator != null ? /^Mac/.test(window.navigator.platform) : false;\nfunction isValidKey(e) {\n return !(e.metaKey || !isMac && e.altKey || e.ctrlKey || e.key === \"Control\" || e.key === \"Shift\" || e.key === \"Meta\");\n}\nfunction onKeyboardEvent(event) {\n hasEventBeforeFocus = true;\n if (isValidKey(event)) {\n modality = \"keyboard\";\n trigger(\"keyboard\", event);\n }\n}\nfunction onPointerEvent(event) {\n modality = \"pointer\";\n if (event.type === \"mousedown\" || event.type === \"pointerdown\") {\n hasEventBeforeFocus = true;\n const target = event.composedPath ? event.composedPath()[0] : event.target;\n let matches = false;\n try {\n matches = target.matches(\":focus-visible\");\n } catch {\n }\n if (matches)\n return;\n trigger(\"pointer\", event);\n }\n}\nfunction isVirtualClick(event) {\n if (event.mozInputSource === 0 && event.isTrusted)\n return true;\n return event.detail === 0 && !event.pointerType;\n}\nfunction onClickEvent(e) {\n if (isVirtualClick(e)) {\n hasEventBeforeFocus = true;\n modality = \"virtual\";\n }\n}\nfunction onWindowFocus(event) {\n if (event.target === window || event.target === document) {\n return;\n }\n if (!hasEventBeforeFocus && !hasBlurredWindowRecently) {\n modality = \"virtual\";\n trigger(\"virtual\", event);\n }\n hasEventBeforeFocus = false;\n hasBlurredWindowRecently = false;\n}\nfunction onWindowBlur() {\n hasEventBeforeFocus = false;\n hasBlurredWindowRecently = true;\n}\nfunction isFocusVisible() {\n return modality !== \"pointer\";\n}\nfunction setupGlobalFocusEvents() {\n if (!isDom() || hasSetup) {\n return;\n }\n const { focus } = HTMLElement.prototype;\n HTMLElement.prototype.focus = function focusElement(...args) {\n hasEventBeforeFocus = true;\n focus.apply(this, args);\n };\n document.addEventListener(\"keydown\", onKeyboardEvent, true);\n document.addEventListener(\"keyup\", onKeyboardEvent, true);\n document.addEventListener(\"click\", onClickEvent, true);\n window.addEventListener(\"focus\", onWindowFocus, true);\n window.addEventListener(\"blur\", onWindowBlur, false);\n if (typeof PointerEvent !== \"undefined\") {\n document.addEventListener(\"pointerdown\", onPointerEvent, true);\n document.addEventListener(\"pointermove\", onPointerEvent, true);\n document.addEventListener(\"pointerup\", onPointerEvent, true);\n } else {\n document.addEventListener(\"mousedown\", onPointerEvent, true);\n document.addEventListener(\"mousemove\", onPointerEvent, true);\n document.addEventListener(\"mouseup\", onPointerEvent, true);\n }\n hasSetup = true;\n}\nfunction trackFocusVisible(fn) {\n setupGlobalFocusEvents();\n fn(isFocusVisible());\n const handler = () => fn(isFocusVisible());\n handlers.add(handler);\n return () => {\n handlers.delete(handler);\n };\n}\nfunction trackInteractionModality(fn) {\n setupGlobalFocusEvents();\n fn(modality);\n const handler = () => fn(modality);\n handlers.add(handler);\n return () => {\n handlers.delete(handler);\n };\n}\nfunction setInteractionModality(value) {\n modality = value;\n trigger(value, null);\n}\nfunction getInteractionModality() {\n return modality;\n}\nexport {\n getInteractionModality,\n setInteractionModality,\n trackFocusVisible,\n trackInteractionModality\n};\n//# sourceMappingURL=index.mjs.map","function trackElementSize(element, callback) {\n if (!element) {\n callback(void 0);\n return;\n }\n callback({ width: element.offsetWidth, height: element.offsetHeight });\n const win = element.ownerDocument.defaultView ?? window;\n const observer = new win.ResizeObserver((entries) => {\n if (!Array.isArray(entries) || !entries.length)\n return;\n const [entry] = entries;\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n callback({ width, height });\n });\n observer.observe(element, { box: \"border-box\" });\n return () => observer.unobserve(element);\n}\n\nexport { trackElementSize };\n"],"names":["isDom","hasSetup","modality","hasEventBeforeFocus","hasBlurredWindowRecently","handlers","trigger","modality2","event","handler","isMac","isValidKey","onKeyboardEvent","onPointerEvent","target","matches","isVirtualClick","onClickEvent","onWindowFocus","onWindowBlur","isFocusVisible","setupGlobalFocusEvents","focus","args","trackFocusVisible","fn","trackElementSize","element","callback","win","observer","entries","entry","width","height","borderSizeEntry","borderSize"],"mappings":"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","x_google_ignoreList":[0,1,2]}