{"version":3,"file":"js/9280.4b721f08.js","sources":["../../frontend/node_modules/@maskito/react/index.esm.js","../../frontend/node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../frontend/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../frontend/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../frontend/node_modules/@zag-js/collection/dist/chunk-QZ7TP4HQ.mjs","../../frontend/node_modules/@zag-js/collection/dist/list-collection.mjs","../../frontend/node_modules/@zag-js/collection/dist/selection-map.mjs","../../frontend/node_modules/@zag-js/dismissable/dist/dismissable-layer.mjs","../../frontend/node_modules/@zag-js/dom-query/dist/initial-focus.mjs","../../frontend/node_modules/@zag-js/dom-query/dist/overflow.mjs","../../frontend/node_modules/@zag-js/dom-query/dist/scroll.mjs","../../frontend/node_modules/@zag-js/dom-query/dist/typeahead.mjs","../../frontend/node_modules/@zag-js/dom-query/dist/searchable.mjs","../../frontend/node_modules/@zag-js/dom-query/dist/visually-hidden.mjs","../../frontend/node_modules/@zag-js/focus-visible/dist/index.mjs","../../frontend/node_modules/@zag-js/popper/dist/get-anchor.mjs","../../frontend/node_modules/@zag-js/popper/dist/get-placement.mjs","../../frontend/node_modules/@zag-js/popper/dist/get-styles.mjs","../../frontend/node_modules/@zag-js/popper/dist/middleware.mjs","../../frontend/node_modules/@zag-js/popper/dist/placement.mjs","../../frontend/node_modules/@zag-js/select/dist/select.collection.mjs","../../frontend/node_modules/@zag-js/select/dist/select.anatomy.mjs","../../frontend/node_modules/@zag-js/select/dist/select.connect.mjs","../../frontend/node_modules/@zag-js/select/dist/select.dom.mjs","../../frontend/node_modules/@zag-js/select/dist/select.machine.mjs","../../frontend/node_modules/@zag-js/tooltip/dist/tooltip.anatomy.mjs","../../frontend/node_modules/@zag-js/tooltip/dist/tooltip.connect.mjs","../../frontend/node_modules/@zag-js/tooltip/dist/tooltip.dom.mjs","../../frontend/node_modules/@zag-js/tooltip/dist/tooltip.machine.mjs","../../frontend/node_modules/@zag-js/tooltip/dist/tooltip.store.mjs","../../frontend/node_modules/@zag-js/utils/dist/store.mjs","../../frontend/node_modules/@zag-js/utils/dist/equal.mjs"],"sourcesContent":["import { MASKITO_DEFAULT_ELEMENT_PREDICATE, Maskito } from '@maskito/core';\nimport { useEffect, useLayoutEffect, useState, useCallback, useRef } from 'react';\n\n/**\n * React adds `_valueTracker` property to every textfield elements for its internal logic with controlled inputs.\n * Also, React monkey-patches `value`-setter of the native textfield elements to update state inside its `_valueTracker`.\n * @see https://github.com/facebook/react/blob/ee76351917106c6146745432a52e9a54a41ee181/packages/react-dom-bindings/src/client/inputValueTracking.js#L12-L19\n *\n * React depends on `_valueTracker` to know if the value was changed to decide:\n * - should it revert state for controlled input (if its state handler does not update value)\n * - should it dispatch its synthetic (not native!) `change` event\n *\n * When Maskito patches textfield with a valid value (using setter of `value` property),\n * it also updates `_valueTracker` state and React mistakenly decides that nothing has happened.\n * React should update `_valueTracker` state by itself!\n * ___\n * @see https://github.com/facebook/react/blob/ee76351917106c6146745432a52e9a54a41ee181/packages/react-dom-bindings/src/client/inputValueTracking.js#L173-L177\n */\nfunction adaptReactControlledElement(element) {\n    const valueSetter = Object.getOwnPropertyDescriptor(getPrototype(element), 'value')?.set;\n    if (!valueSetter) {\n        return element;\n    }\n    const adapter = {\n        set value(value) {\n            /**\n             * Mimics exactly what happens when a browser silently changes the value property.\n             * Bypass the React monkey-patching.\n             */\n            valueSetter.call(element, value);\n        },\n    };\n    return new Proxy(element, {\n        get(target, prop) {\n            const nativeProperty = target[prop];\n            return typeof nativeProperty === 'function' ? nativeProperty.bind(target) : nativeProperty;\n        },\n        set(target, prop, val, receiver) {\n            return Reflect.set(prop in adapter ? adapter : target, prop, val, receiver);\n        },\n    });\n}\nfunction getPrototype(element) {\n    switch (element.nodeName) {\n        case 'INPUT':\n            return globalThis.HTMLInputElement.prototype;\n        case 'TEXTAREA':\n            return globalThis.HTMLTextAreaElement.prototype;\n        default:\n            return null;\n    }\n}\n\nconst useIsomorphicLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;\n\nfunction isThenable(x) {\n    return x && typeof x === 'object' && 'then' in x;\n}\n/**\n * Hook for convenient use of Maskito in React\n * @description For controlled inputs use `onInput` event\n * @param options options used for creating Maskito\n * @param elementPredicate function that can help find nested Input or TextArea\n * @returns ref callback to pass it in React Element\n * @example\n * // To avoid unnecessary hook runs with Maskito recreation pass named variables\n * // good example ✅\n * useMaskito({ options: maskitoOptions, elementPredicate: maskitoPredicate })\n *\n * // bad example ❌\n * useMaskito({ options: { mask: /^.*$/ }, elementPredicate: () => e.querySelector('input') })\n */\nconst useMaskito = ({ options = null, elementPredicate = MASKITO_DEFAULT_ELEMENT_PREDICATE, } = {}) => {\n    const [hostElement, setHostElement] = useState(null);\n    const [element, setElement] = useState(null);\n    const onRefChange = useCallback((node) => {\n        setHostElement(node);\n    }, []);\n    const latestPredicateRef = useRef(elementPredicate);\n    const latestOptionsRef = useRef(options);\n    latestPredicateRef.current = elementPredicate;\n    latestOptionsRef.current = options;\n    useIsomorphicLayoutEffect(() => {\n        if (!hostElement) {\n            return;\n        }\n        const elementOrPromise = elementPredicate(hostElement);\n        if (isThenable(elementOrPromise)) {\n            void elementOrPromise.then((el) => {\n                if (latestPredicateRef.current === elementPredicate && latestOptionsRef.current === options) {\n                    setElement(el);\n                }\n            });\n        }\n        else {\n            setElement(elementOrPromise);\n        }\n        return () => {\n            setElement(null);\n        };\n    }, [hostElement, elementPredicate, latestPredicateRef, options, latestOptionsRef]);\n    useIsomorphicLayoutEffect(() => {\n        if (!element || !options) {\n            return;\n        }\n        const maskedElement = new Maskito(adaptReactControlledElement(element), options);\n        return () => {\n            maskedElement.destroy();\n            setElement(null);\n        };\n    }, [options, element]);\n    return onRefChange;\n};\n\nexport { useMaskito };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  const alignment = getAlignment(placement);\n  if (alignment) {\n    coords[alignmentAxis] += commonAlign * (alignment === 'end' ? 1 : -1) * (rtl && isVertical ? -1 : 1);\n  }\n  return coords;\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) && (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const platformWithDetectOverflow = platform.detectOverflow ? platform : {\n    ...platform,\n    detectOverflow\n  };\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let resetCount = 0;\n  const middlewareData = {};\n  for (let i = 0; i < middleware.length; i++) {\n    const currentMiddleware = middleware[i];\n    if (!currentMiddleware) {\n      continue;\n    }\n    const {\n      name,\n      fn\n    } = currentMiddleware;\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform: platformWithDetectOverflow,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData[name] = {\n      ...middlewareData[name],\n      ...data\n    };\n    if (reset && resetCount < MAX_RESET_COUNT) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(minPadding, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < minPadding ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < minPadding ? center - minPadding : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n          if (!ignoreCrossAxisOverflow ||\n          // We leave the current main axis only if every placement on that axis\n          // overflows the main axis.\n          overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n            // Try next placement and re-run the lifecycle.\n            return {\n              data: {\n                index: nextIndex,\n                overflows: overflowsData\n              },\n              reset: {\n                placement: nextPlacement\n              }\n            };\n          }\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects,\n        platform\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await platform.detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await platform.detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n\n      // No rects (e.g. a hidden or detached reference, or a collapsed range) —\n      // keep the existing reference rect rather than resetting to an invalid\n      // one with non-finite values.\n      if (!nativeClientRects.length) {\n        return {};\n      }\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && (clientRects[0].left > clientRects[1].right || clientRects[1].left > clientRects[0].right) && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            return rectToClientRect({\n              x: left,\n              y: top,\n              width: right - left,\n              height: bottom - top\n            });\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          return rectToClientRect({\n            x: minLeft,\n            y: top,\n            width: maxRight - minLeft,\n            height: bottom - top\n          });\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = originSides.has(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        platform\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const clampCoord = (axis, coord) => clamp(coord + overflow[axis === 'y' ? 'top' : 'left'], coord, coord - overflow[axis === 'y' ? 'bottom' : 'right']);\n      if (checkMainAxis) {\n        mainAxisCoord = clampCoord(mainAxis, mainAxisCoord);\n      }\n      if (checkCrossAxis) {\n        crossAxisCoord = clampCoord(crossAxis, crossAxisCoord);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      var _rawOffset$mainAxis, _rawOffset$crossAxis;\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: (_rawOffset$mainAxis = rawOffset.mainAxis) != null ? _rawOffset$mainAxis : 0,\n        crossAxis: (_rawOffset$crossAxis = rawOffset.crossAxis) != null ? _rawOffset$crossAxis : 0\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = originSides.has(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n// Method syntax keeps callback parameters bivariant, but expressing the\n// explicit `| undefined` required by `exactOptionalPropertyTypes` needs\n// property syntax, which is contravariant under `strictFunctionTypes`.\n// Extracting the function from a method position restores that bivariance so\n// consumers can still assign callbacks with narrower parameter types.\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const shiftData = state.middlewareData.shift;\n      const noShift = !shiftData;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if (shiftData != null && shiftData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if (shiftData != null && shiftData.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        if (isYAxis) {\n          availableWidth = width - 2 * max(overflow.left, overflow.right);\n        } else {\n          availableHeight = height - 2 * max(overflow.top, overflow.bottom);\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  return !!floatingOffsetParent && isFixed && floatingOffsetParent === getWindow(element);\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement && offsetParent) {\n    const win = getWindow(domElement);\n    const offsetWin = isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle$1(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return element.getClientRects ? Array.from(element.getClientRects()) : [];\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(html) {\n  const scroll = getNodeScroll(html);\n  const body = html.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(html);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy, rootBoundary) {\n  if (rootBoundary === void 0) {\n    rootBoundary = 'viewport';\n  }\n  const isLayoutViewport = rootBoundary === 'layoutViewport';\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    // Client coordinates are relative to the layout viewport, except in\n    // WebKit with an `absolute` strategy, where they are relative to the\n    // visual viewport.\n    const layoutRelativeClientCoords = !isWebKit() || strategy === 'fixed';\n    if (isLayoutViewport) {\n      if (!layoutRelativeClientCoords) {\n        x = -visualViewport.offsetLeft;\n        y = -visualViewport.offsetTop;\n      }\n    } else {\n      width = visualViewport.width;\n      height = visualViewport.height;\n      if (layoutRelativeClientCoords) {\n        x = visualViewport.offsetLeft;\n        y = visualViewport.offsetTop;\n      }\n    }\n  }\n  const windowScrollbarX = getWindowScrollBarX(html);\n  // `scrollbar-gutter: stable` on the <html> reserves gutter space that shrinks\n  // the visual width but isn't reflected in `html.clientWidth`, so subtract it.\n  // Only the inline-end (right) gutter can hold the scrollbar; `both-edges` also\n  // reserves an empty inline-start gutter that clips nothing, so exclude just\n  // the one scrollbar-side gutter — halve the measured (two-gutter) total. A\n  // left-side scrollbar (`windowScrollbarX > 0`) is already handled by\n  // `getHTMLOffset`/`visualViewport.width`; skip it here.\n  if (windowScrollbarX <= 0) {\n    const doc = html.ownerDocument;\n    const body = doc.body;\n    const bodyStyles = getComputedStyle(body);\n    const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n    const reservedWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n    const gutter = getComputedStyle(html).scrollbarGutter === 'stable both-edges' ? reservedWidth / 2 : reservedWidth;\n    if (gutter <= SCROLLBAR_MAX) {\n      width -= gutter;\n    }\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = getScale(element);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport' || clippingAncestor === 'layoutViewport') {\n    rect = getViewportRect(element, strategy, clippingAncestor);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let lastKeptComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    // Position of the containing block chain below the current node. A fixed\n    // element whose containing block hasn't been found yet is a fixed chain.\n    const lastPosition = lastKeptComputedStyle ? lastKeptComputedStyle.position : elementIsFixed ? 'fixed' : '';\n\n    // A non-containing ancestor does not clip the element when the chain\n    // below it escapes it: a fixed chain escapes all ancestors up to the\n    // next containing block, an absolute chain escapes static ancestors.\n    const shouldDropCurrentNode = !currentNodeIsContaining && (lastPosition === 'fixed' || lastPosition === 'absolute' && computedStyle.position === 'static');\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // The kept node carries the chain position for the next iteration.\n      lastKeptComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n  let top = firstRect.top;\n  let right = firstRect.right;\n  let bottom = firstRect.bottom;\n  let left = firstRect.left;\n  for (let i = 1; i < clippingAncestors.length; i++) {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);\n    top = max(rect.top, top);\n    right = min(rect.right, right);\n    bottom = min(rect.bottom, bottom);\n    left = max(rect.left, left);\n  }\n  return {\n    width: right - left,\n    height: bottom - top,\n    x: left,\n    y: top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n  if (isOffsetParentAnElement || !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n\n  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n  // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n  if (!isOffsetParentAnElement && documentElement) {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove, ancestorResize) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n\n      // The entry is a snapshot, so the reference may have moved since the\n      // intersection was computed (under performance constraints, or between\n      // consecutive frames of a multi-frame layout shift). The reported ratio\n      // and the observed area are stale in that case and cannot be trusted to\n      // detect subsequent movement, so refresh regardless of the ratio.\n      if (!rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        return refresh();\n      }\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped in place, the ratio is 0. Throttle\n          // the refresh to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  const win = getWindow(element);\n  // The window is a resize ancestor, so when `ancestorResize` is enabled its\n  // listener already runs the update on resize. Here we only need to rebuild\n  // the `IntersectionObserver` for the new root size, skipping a redundant\n  // update. When `ancestorResize` is disabled, this becomes the sole update.\n  const handleResize = () => refresh(ancestorResize);\n  win.addEventListener('resize', handleResize);\n  refresh(true);\n  return () => {\n    win.removeEventListener('resize', handleResize);\n    cleanup();\n  };\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update);\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update, ancestorResize) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    if (floating) {\n      resizeObserver.observe(floating);\n    }\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = options != null ? options : {};\n  const platformWithCache = {\n    ...platform,\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n  const firstChar = placement[0];\n  return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rlPlacement : lrPlacement;\n      return isStart ? lrPlacement : rlPlacement;\n    case 'left':\n    case 'right':\n      return isStart ? tbPlacement : btPlacement;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  const side = getSide(placement);\n  return oppositeSideMap[side] + placement.slice(side.length);\n}\nfunction expandPaddingObject(padding) {\n  var _padding$top, _padding$right, _padding$bottom, _padding$left;\n  return {\n    top: (_padding$top = padding.top) != null ? _padding$top : 0,\n    right: (_padding$right = padding.right) != null ? _padding$right : 0,\n    bottom: (_padding$bottom = padding.bottom) != null ? _padding$bottom : 0,\n    left: (_padding$left = padding.left) != null ? _padding$left : 0\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","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\nexport {\n  __publicField\n};\n","import {\n  __publicField\n} from \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/list-collection.ts\nimport { hasProp, isEqual, isObject } from \"@zag-js/utils\";\nvar fallback = {\n  itemToValue(item) {\n    if (typeof item === \"string\") return item;\n    if (isObject(item) && hasProp(item, \"value\")) return item.value;\n    return \"\";\n  },\n  itemToString(item) {\n    if (typeof item === \"string\") return item;\n    if (isObject(item) && hasProp(item, \"label\")) return item.label;\n    return fallback.itemToValue(item);\n  },\n  isItemDisabled(item) {\n    if (isObject(item) && hasProp(item, \"disabled\")) return !!item.disabled;\n    return false;\n  }\n};\nvar ListCollection = class _ListCollection {\n  constructor(options) {\n    __publicField(this, \"options\", options);\n    /**\n     * The items in the collection\n     */\n    __publicField(this, \"items\");\n    __publicField(this, \"indexMap\", null);\n    /**\n     * Copy the collection\n     */\n    __publicField(this, \"copy\", (items) => {\n      return new _ListCollection({ ...this.options, items: items ?? [...this.items] });\n    });\n    /**\n     * Check if the collection is equal to another collection\n     */\n    __publicField(this, \"isEqual\", (other) => {\n      return isEqual(this.items, other.items);\n    });\n    /**\n     * Function to update the collection items\n     */\n    __publicField(this, \"setItems\", (items) => {\n      return this.copy(items);\n    });\n    /**\n     * Returns all the values in the collection\n     */\n    __publicField(this, \"getValues\", (items = this.items) => {\n      const values = [];\n      for (const item of items) {\n        const value = this.getItemValue(item);\n        if (value != null) values.push(value);\n      }\n      return values;\n    });\n    /**\n     * Get the item based on its value\n     */\n    __publicField(this, \"find\", (value) => {\n      if (value == null) return null;\n      const index = this.indexOf(value);\n      return index !== -1 ? this.at(index) : null;\n    });\n    /**\n     * Get the items based on its values\n     */\n    __publicField(this, \"findMany\", (values) => {\n      const result = [];\n      for (const value of values) {\n        const item = this.find(value);\n        if (item != null) result.push(item);\n      }\n      return result;\n    });\n    /**\n     * Get the item based on its index\n     */\n    __publicField(this, \"at\", (index) => {\n      if (!this.options.groupBy && !this.options.groupSort) {\n        return this.items[index] ?? null;\n      }\n      let idx = 0;\n      const groups = this.group();\n      for (const [, items] of groups) {\n        for (const item of items) {\n          if (idx === index) return item;\n          idx++;\n        }\n      }\n      return null;\n    });\n    __publicField(this, \"sortFn\", (valueA, valueB) => {\n      const indexA = this.indexOf(valueA);\n      const indexB = this.indexOf(valueB);\n      return (indexA ?? 0) - (indexB ?? 0);\n    });\n    /**\n     * Sort the values based on their index\n     */\n    __publicField(this, \"sort\", (values) => {\n      return [...values].sort(this.sortFn.bind(this));\n    });\n    /**\n     * Convert an item to a value\n     */\n    __publicField(this, \"getItemValue\", (item) => {\n      if (item == null) return null;\n      return this.options.itemToValue?.(item) ?? fallback.itemToValue(item);\n    });\n    /**\n     * Whether an item is disabled\n     */\n    __publicField(this, \"getItemDisabled\", (item) => {\n      if (item == null) return false;\n      return this.options.isItemDisabled?.(item) ?? fallback.isItemDisabled(item);\n    });\n    /**\n     * Convert an item to a string\n     */\n    __publicField(this, \"stringifyItem\", (item) => {\n      if (item == null) return null;\n      return this.options.itemToString?.(item) ?? fallback.itemToString(item);\n    });\n    /**\n     * Convert a value to a string\n     */\n    __publicField(this, \"stringify\", (value) => {\n      if (value == null) return null;\n      return this.stringifyItem(this.find(value));\n    });\n    /**\n     * Convert an array of items to a string\n     */\n    __publicField(this, \"stringifyItems\", (items, separator = \", \") => {\n      const strs = [];\n      for (const item of items) {\n        const str = this.stringifyItem(item);\n        if (str != null) strs.push(str);\n      }\n      return strs.join(separator);\n    });\n    /**\n     * Convert an array of items to a string\n     */\n    __publicField(this, \"stringifyMany\", (value, separator) => {\n      return this.stringifyItems(this.findMany(value), separator);\n    });\n    /**\n     * Whether the collection has a value\n     */\n    __publicField(this, \"has\", (value) => {\n      return this.indexOf(value) !== -1;\n    });\n    /**\n     * Whether the collection has an item\n     */\n    __publicField(this, \"hasItem\", (item) => {\n      if (item == null) return false;\n      return this.has(this.getItemValue(item));\n    });\n    /**\n     * Group items by the groupBy function provided in options\n     * Returns an array of [groupKey, items] tuples\n     */\n    __publicField(this, \"group\", () => {\n      const { groupBy, groupSort } = this.options;\n      if (!groupBy) return [[\"\", [...this.items]]];\n      const groups = /* @__PURE__ */ new Map();\n      this.items.forEach((item, index) => {\n        const groupKey = groupBy(item, index);\n        if (!groups.has(groupKey)) {\n          groups.set(groupKey, []);\n        }\n        groups.get(groupKey).push(item);\n      });\n      let entries = Array.from(groups.entries());\n      if (groupSort) {\n        entries.sort(([a], [b]) => {\n          if (typeof groupSort === \"function\") return groupSort(a, b);\n          if (Array.isArray(groupSort)) {\n            const indexA = groupSort.indexOf(a);\n            const indexB = groupSort.indexOf(b);\n            if (indexA === -1) return 1;\n            if (indexB === -1) return -1;\n            return indexA - indexB;\n          }\n          if (groupSort === \"asc\") return a.localeCompare(b);\n          if (groupSort === \"desc\") return b.localeCompare(a);\n          return 0;\n        });\n      }\n      return entries;\n    });\n    /**\n     * Returns the next value in the collection\n     */\n    __publicField(this, \"getNextValue\", (value, step = 1, clamp = false) => {\n      let index = this.indexOf(value);\n      if (index === -1) return null;\n      index = clamp ? Math.min(index + step, this.size - 1) : index + step;\n      while (index <= this.size && this.getItemDisabled(this.at(index))) index++;\n      return this.getItemValue(this.at(index));\n    });\n    /**\n     * Returns the previous value in the collection\n     */\n    __publicField(this, \"getPreviousValue\", (value, step = 1, clamp = false) => {\n      let index = this.indexOf(value);\n      if (index === -1) return null;\n      index = clamp ? Math.max(index - step, 0) : index - step;\n      while (index >= 0 && this.getItemDisabled(this.at(index))) index--;\n      return this.getItemValue(this.at(index));\n    });\n    /**\n     * Get the index of an item based on its key\n     */\n    __publicField(this, \"indexOf\", (value) => {\n      if (value == null) return -1;\n      if (!this.options.groupBy && !this.options.groupSort) {\n        return this.items.findIndex((item) => this.getItemValue(item) === value);\n      }\n      if (!this.indexMap) {\n        this.indexMap = /* @__PURE__ */ new Map();\n        let idx = 0;\n        const groups = this.group();\n        for (const [, items] of groups) {\n          for (const item of items) {\n            const itemValue = this.getItemValue(item);\n            if (itemValue != null) {\n              this.indexMap.set(itemValue, idx);\n            }\n            idx++;\n          }\n        }\n      }\n      return this.indexMap.get(value) ?? -1;\n    });\n    __publicField(this, \"getByText\", (text, current) => {\n      const currentIndex = current != null ? this.indexOf(current) : -1;\n      const isSingleKey = text.length === 1;\n      for (let i = 0; i < this.items.length; i++) {\n        const item = this.items[(currentIndex + i + 1) % this.items.length];\n        if (isSingleKey && this.getItemValue(item) === current) continue;\n        if (this.getItemDisabled(item)) continue;\n        if (match(this.stringifyItem(item), text)) return item;\n      }\n      return void 0;\n    });\n    /**\n     * Search for a value based on a query\n     */\n    __publicField(this, \"search\", (queryString, options) => {\n      const { state, currentValue, timeout = 350 } = options;\n      const search = state.keysSoFar + queryString;\n      const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n      const query = isRepeated ? search[0] : search;\n      const item = this.getByText(query, currentValue);\n      const value = this.getItemValue(item);\n      function cleanup() {\n        clearTimeout(state.timer);\n        state.timer = -1;\n      }\n      function update(value2) {\n        state.keysSoFar = value2;\n        cleanup();\n        if (value2 !== \"\") {\n          state.timer = +setTimeout(() => {\n            update(\"\");\n            cleanup();\n          }, timeout);\n        }\n      }\n      update(search);\n      return value;\n    });\n    /**\n     * Update an item in the collection\n     */\n    __publicField(this, \"update\", (value, item) => {\n      let index = this.indexOf(value);\n      if (index === -1) return this;\n      return this.copy([...this.items.slice(0, index), item, ...this.items.slice(index + 1)]);\n    });\n    /**\n     * Update an item in the collection if it exists, otherwise append it\n     */\n    __publicField(this, \"upsert\", (value, item, mode = \"append\") => {\n      let index = this.indexOf(value);\n      if (index === -1) {\n        const fn = mode === \"append\" ? this.append : this.prepend;\n        return fn(item);\n      }\n      return this.copy([...this.items.slice(0, index), item, ...this.items.slice(index + 1)]);\n    });\n    /**\n     * Insert items at a specific index\n     */\n    __publicField(this, \"insert\", (index, ...items) => {\n      return this.copy(insert(this.items, index, ...items));\n    });\n    /**\n     * Insert items before a specific value\n     */\n    __publicField(this, \"insertBefore\", (value, ...items) => {\n      let toIndex = this.indexOf(value);\n      if (toIndex === -1) {\n        if (this.items.length === 0) toIndex = 0;\n        else return this;\n      }\n      return this.copy(insert(this.items, toIndex, ...items));\n    });\n    /**\n     * Insert items after a specific value\n     */\n    __publicField(this, \"insertAfter\", (value, ...items) => {\n      let toIndex = this.indexOf(value);\n      if (toIndex === -1) {\n        if (this.items.length === 0) toIndex = 0;\n        else return this;\n      }\n      return this.copy(insert(this.items, toIndex + 1, ...items));\n    });\n    /**\n     * Prepend items to the collection\n     */\n    __publicField(this, \"prepend\", (...items) => {\n      return this.copy(insert(this.items, 0, ...items));\n    });\n    /**\n     * Append items to the collection\n     */\n    __publicField(this, \"append\", (...items) => {\n      return this.copy(insert(this.items, this.items.length, ...items));\n    });\n    /**\n     * Filter the collection\n     */\n    __publicField(this, \"filter\", (fn) => {\n      const filteredItems = this.items.filter((item, index) => fn(this.stringifyItem(item), index, item));\n      return this.copy(filteredItems);\n    });\n    /**\n     * Remove items from the collection\n     */\n    __publicField(this, \"remove\", (...itemsOrValues) => {\n      const values = itemsOrValues.map(\n        (itemOrValue) => typeof itemOrValue === \"string\" ? itemOrValue : this.getItemValue(itemOrValue)\n      );\n      return this.copy(\n        this.items.filter((item) => {\n          const value = this.getItemValue(item);\n          if (value == null) return false;\n          return !values.includes(value);\n        })\n      );\n    });\n    /**\n     * Move an item to a specific index\n     */\n    __publicField(this, \"move\", (value, toIndex) => {\n      const fromIndex = this.indexOf(value);\n      if (fromIndex === -1) return this;\n      return this.copy(move(this.items, [fromIndex], toIndex));\n    });\n    /**\n     * Move items before a specific value\n     */\n    __publicField(this, \"moveBefore\", (value, ...values) => {\n      let toIndex = this.items.findIndex((item) => this.getItemValue(item) === value);\n      if (toIndex === -1) return this;\n      let indices = values.map((value2) => this.items.findIndex((item) => this.getItemValue(item) === value2)).sort((a, b) => a - b);\n      return this.copy(move(this.items, indices, toIndex));\n    });\n    /**\n     * Move items after a specific value\n     */\n    __publicField(this, \"moveAfter\", (value, ...values) => {\n      let toIndex = this.items.findIndex((item) => this.getItemValue(item) === value);\n      if (toIndex === -1) return this;\n      let indices = values.map((value2) => this.items.findIndex((item) => this.getItemValue(item) === value2)).sort((a, b) => a - b);\n      return this.copy(move(this.items, indices, toIndex + 1));\n    });\n    /**\n     * Reorder items\n     */\n    __publicField(this, \"reorder\", (fromIndex, toIndex) => {\n      return this.copy(move(this.items, [fromIndex], toIndex));\n    });\n    /**\n     * Compare two values\n     */\n    __publicField(this, \"compareValue\", (a, b) => {\n      const indexA = this.indexOf(a);\n      const indexB = this.indexOf(b);\n      if (indexA < indexB) return -1;\n      if (indexA > indexB) return 1;\n      return 0;\n    });\n    /**\n     * Get the range of values between two values\n     */\n    __publicField(this, \"range\", (from, to) => {\n      let keys = [];\n      let key = from;\n      while (key != null) {\n        let item = this.find(key);\n        if (item) keys.push(key);\n        if (key === to) return keys;\n        key = this.getNextValue(key);\n      }\n      return [];\n    });\n    /**\n     * Get the range of values between two values\n     */\n    __publicField(this, \"getValueRange\", (from, to) => {\n      if (from && to) {\n        if (this.compareValue(from, to) <= 0) {\n          return this.range(from, to);\n        }\n        return this.range(to, from);\n      }\n      return [];\n    });\n    /**\n     * Convert the collection to a string\n     */\n    __publicField(this, \"toString\", () => {\n      let result = \"\";\n      for (const item of this.items) {\n        const value = this.getItemValue(item);\n        const label = this.stringifyItem(item);\n        const disabled = this.getItemDisabled(item);\n        const itemString = [value, label, disabled].filter(Boolean).join(\":\");\n        result += itemString + \",\";\n      }\n      return result;\n    });\n    /**\n     * Convert the collection to a JSON object\n     */\n    __publicField(this, \"toJSON\", () => {\n      return {\n        size: this.size,\n        first: this.firstValue,\n        last: this.lastValue\n      };\n    });\n    this.items = [...options.items];\n  }\n  /**\n   * Returns the number of items in the collection\n   */\n  get size() {\n    return this.items.length;\n  }\n  /**\n   * Returns the first value in the collection\n   */\n  get firstValue() {\n    let index = 0;\n    while (this.getItemDisabled(this.at(index))) index++;\n    return this.getItemValue(this.at(index));\n  }\n  /**\n   * Returns the last value in the collection\n   */\n  get lastValue() {\n    let index = this.size - 1;\n    while (this.getItemDisabled(this.at(index))) index--;\n    return this.getItemValue(this.at(index));\n  }\n  *[Symbol.iterator]() {\n    yield* this.items;\n  }\n};\nvar match = (label, query) => {\n  return !!label?.toLowerCase().startsWith(query.toLowerCase());\n};\nfunction isListCollection(v) {\n  return v instanceof ListCollection;\n}\nfunction insert(items, index, ...values) {\n  return [...items.slice(0, index), ...values, ...items.slice(index)];\n}\nfunction move(items, indices, toIndex) {\n  indices = [...indices].sort((a, b) => a - b);\n  const itemsToMove = indices.map((i) => items[i]);\n  for (let i = indices.length - 1; i >= 0; i--) {\n    items = [...items.slice(0, indices[i]), ...items.slice(indices[i] + 1)];\n  }\n  toIndex = Math.max(0, toIndex - indices.filter((i) => i < toIndex).length);\n  return [...items.slice(0, toIndex), ...itemsToMove, ...items.slice(toIndex)];\n}\nexport {\n  ListCollection,\n  isListCollection\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/selection-map.ts\nfunction resolveSelectedItems({\n  values,\n  collection,\n  selectedItemMap\n}) {\n  const result = [];\n  for (const value of values) {\n    const item = collection.find(value) ?? selectedItemMap.get(value);\n    if (item != null) result.push(item);\n  }\n  return result;\n}\nfunction updateSelectedItemMap({\n  selectedItemMap,\n  values,\n  selectedItems,\n  collection\n}) {\n  const nextMap = new Map(selectedItemMap);\n  for (const item of selectedItems) {\n    const value = collection.getItemValue(item);\n    if (value != null) nextMap.set(value, item);\n  }\n  const allowedValues = new Set(values);\n  for (const value of nextMap.keys()) {\n    if (!allowedValues.has(value)) nextMap.delete(value);\n  }\n  return nextMap;\n}\nfunction deriveSelectionState({\n  values,\n  collection,\n  selectedItemMap\n}) {\n  const selectedItems = resolveSelectedItems({ values, collection, selectedItemMap });\n  const nextSelectedItemMap = updateSelectedItemMap({\n    selectedItemMap,\n    values,\n    selectedItems,\n    collection\n  });\n  return { selectedItems, nextSelectedItemMap };\n}\nfunction createSelectedItemMap({\n  selectedItems,\n  collection\n}) {\n  return updateSelectedItemMap({\n    selectedItemMap: /* @__PURE__ */ new Map(),\n    values: selectedItems.map((item) => collection.getItemValue(item)).filter(Boolean),\n    selectedItems,\n    collection\n  });\n}\nexport {\n  createSelectedItemMap,\n  deriveSelectionState,\n  resolveSelectedItems,\n  updateSelectedItemMap\n};\n","// src/dismissable-layer.ts\nimport { contains, getEventTarget, isHTMLElement, whenNode } from \"@zag-js/dom-query\";\nimport {\n  trackInteractOutside\n} from \"@zag-js/interact-outside\";\nimport { warn } from \"@zag-js/utils\";\nimport { trackEscapeKeydown } from \"./escape-keydown.mjs\";\nimport { layerStack } from \"./layer-stack.mjs\";\nimport { assignPointerEventToLayers, clearPointerEvent, disablePointerEventsOutside } from \"./pointer-event-outside.mjs\";\nfunction trackDismissableElementImpl(node, options) {\n  const {\n    onDismiss,\n    onRequestDismiss,\n    pointerBlocking,\n    exclude: excludeContainers,\n    debug,\n    type = \"dialog\",\n    layerStyleTargets\n  } = options;\n  const layer = {\n    dismiss: onDismiss,\n    node,\n    type,\n    pointerBlocking,\n    requestDismiss: onRequestDismiss,\n    styleTargets: layerStyleTargets\n  };\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    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 { warnOnMissingNode = true } = options;\n  return whenNode(nodeOrFn, (node) => trackDismissableElementImpl(node, options), {\n    defer: options.defer,\n    onMissing: warnOnMissingNode ? () => warn(\"[@zag-js/dismissable] node is `null` or `undefined`\") : void 0\n  });\n}\nfunction trackDismissableBranch(nodeOrFn, options = {}) {\n  return whenNode(\n    nodeOrFn,\n    (node) => {\n      layerStack.addBranch(node);\n      return () => {\n        layerStack.removeBranch(node);\n      };\n    },\n    {\n      defer: options.defer,\n      onMissing: () => warn(\"[@zag-js/dismissable] branch node is `null` or `undefined`\")\n    }\n  );\n}\nexport {\n  trackDismissableBranch,\n  trackDismissableElement\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/initial-focus.ts\nimport { isActiveElement } from \"./node.mjs\";\nimport { getTabbableEdges, getTabbables } from \"./tabbable.mjs\";\nfunction getInitialFocus(options) {\n  const { root, getInitialEl, filter, enabled = true } = options;\n  if (!enabled) return;\n  let node = typeof getInitialEl === \"function\" ? getInitialEl() : getInitialEl;\n  node || (node = root?.querySelector(\"[data-autofocus],[autofocus]\"));\n  if (!node) {\n    const tabbables = getTabbables(root).filter((el) => filter ? filter(el) : true);\n    node = tabbables.find((el) => !el.hasAttribute(\"data-no-autofocus\"));\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}\nexport {\n  getInitialFocus,\n  isValidTabEvent\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/overflow.ts\nimport { getDocument, getParentNode, getWindow } from \"./node.mjs\";\nimport { isHTMLElement, isRootElement, isVisualViewport } from \"./node.mjs\";\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}\nexport {\n  getNearestOverflowAncestor,\n  getOverflowAncestors,\n  isInView,\n  isOverflowElement\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/scroll.ts\nimport { getWindow, isHTMLElement } from \"./node.mjs\";\nimport { isOverflowElement } from \"./overflow.mjs\";\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 scrollToElement(el, options) {\n  const { rootEl, behavior } = options || {};\n  if (!el || !rootEl) return false;\n  if (!rootEl.contains(el)) return false;\n  const win = getWindow(rootEl);\n  const rootRect = rootEl.getBoundingClientRect();\n  const elRect = el.getBoundingClientRect();\n  const rootStyle = win.getComputedStyle(rootEl);\n  const elStyle = win.getComputedStyle(el);\n  const scrollPaddingTop = getNumericStyle(rootStyle.scrollPaddingBlockStart || rootStyle.scrollPaddingTop);\n  const scrollMarginTop = getNumericStyle(elStyle.scrollMarginBlockStart || elStyle.scrollMarginTop);\n  const top = elRect.top - rootRect.top + rootEl.scrollTop - scrollPaddingTop - scrollMarginTop;\n  rootEl.scrollTo({ top, ...behavior && { behavior } });\n  return true;\n}\nvar getNumericStyle = (value) => {\n  const numericValue = Number.parseFloat(value);\n  return Number.isNaN(numericValue) ? 0 : numericValue;\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}\nexport {\n  getScrollPosition,\n  scrollIntoView,\n  scrollToElement\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/typeahead.ts\nimport { getByText } from \"./searchable.mjs\";\nfunction getByTypeaheadImpl(baseItems, options) {\n  const { state, activeId, key, timeout = 350, itemToId } = options;\n  const search = state.keysSoFar + key;\n  const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n  const query = isRepeated ? search[0] : search;\n  let items = baseItems.slice();\n  const next = getByText(items, query, activeId, itemToId);\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}\nexport {\n  getByTypeahead\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/searchable.ts\nimport { defaultItemToId, indexOfId } from \"./query.mjs\";\nimport { wrap } from \"./shared.mjs\";\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, query) => {\n  return valueText.trim().toLowerCase().startsWith(query.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}\nexport {\n  getByText\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\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}\nexport {\n  setVisuallyHidden,\n  visuallyHiddenStyle\n};\n","// src/index.ts\nimport { getActiveElement, getDocument, getEventTarget, getWindow, isMac, isVirtualClick } from \"@zag-js/dom-query\";\nfunction isValidKey(e) {\n  return !(e.metaKey || !isMac() && e.altKey || e.ctrlKey || e.key === \"Control\" || e.key === \"Shift\" || e.key === \"Meta\");\n}\nvar nonTextInputTypes = /* @__PURE__ */ new Set([\"checkbox\", \"radio\", \"range\", \"color\", \"file\", \"image\", \"button\", \"submit\", \"reset\"]);\nvar interactiveContentSelector = [\n  \"a[href]\",\n  \"audio[controls]\",\n  \"button\",\n  \"details\",\n  \"embed\",\n  \"iframe\",\n  \"img[controls]\",\n  \"img[usemap]\",\n  \"input\",\n  \"select\",\n  \"textarea\",\n  \"video[controls]\"\n].join(\",\");\nfunction isKeyboardFocusEvent(isTextInput, modality, e) {\n  const eventTarget = e ? getEventTarget(e) : null;\n  const doc = getDocument(eventTarget);\n  const win = getWindow(eventTarget);\n  const activeElement = getActiveElement(doc);\n  isTextInput = isTextInput || activeElement instanceof win.HTMLInputElement && !nonTextInputTypes.has(activeElement?.type) || activeElement instanceof win.HTMLTextAreaElement || activeElement instanceof win.HTMLElement && activeElement.isContentEditable;\n  return !(isTextInput && modality === \"keyboard\" && e instanceof win.KeyboardEvent && !Reflect.has(FOCUS_VISIBLE_INPUT_KEYS, e.key));\n}\nvar currentModality = null;\nvar changeHandlers = /* @__PURE__ */ new Set();\nvar listenerMap = /* @__PURE__ */ new Map();\nvar hasEventBeforeFocus = false;\nvar pendingLabelControl = null;\nvar hasBlurredWindowRecently = false;\nvar lastPointerPosition = null;\nvar ignoreFocusEvent = false;\nvar FOCUS_VISIBLE_INPUT_KEYS = {\n  Tab: true,\n  Escape: true\n};\nfunction triggerChangeHandlers(modality, e) {\n  for (let handler of changeHandlers) {\n    handler(modality, e);\n  }\n}\nfunction handleKeyboardEvent(e) {\n  pendingLabelControl = null;\n  hasEventBeforeFocus = true;\n  if (isValidKey(e)) {\n    currentModality = \"keyboard\";\n    triggerChangeHandlers(\"keyboard\", e);\n  }\n}\nfunction handlePointerEvent(e) {\n  const isMove = e.type === \"pointermove\" || e.type === \"mousemove\";\n  if (isMove && e.isTrusted && lastPointerPosition?.x === e.clientX && lastPointerPosition?.y === e.clientY) return;\n  lastPointerPosition = { x: e.clientX, y: e.clientY };\n  currentModality = \"pointer\";\n  if (e.type === \"mousedown\" || e.type === \"pointerdown\") {\n    pendingLabelControl = null;\n    hasEventBeforeFocus = true;\n    triggerChangeHandlers(\"pointer\", e);\n  }\n}\nfunction handleClickEvent(e) {\n  if (isVirtualClick(e)) {\n    pendingLabelControl = null;\n    hasEventBeforeFocus = true;\n    currentModality = \"virtual\";\n    return;\n  }\n  pendingLabelControl = null;\n  const target = getEventTarget(e);\n  const label = target?.closest(\"label\");\n  const control = label?.control;\n  if (!label || !control || control.matches(\":disabled\")) return;\n  const interactive = target?.closest(interactiveContentSelector);\n  if (interactive && label.contains(interactive) && interactive !== control) return;\n  if (control !== getActiveElement(label.ownerDocument)) pendingLabelControl = control;\n}\nfunction handleFocusEvent(e) {\n  const target = getEventTarget(e);\n  const isLabelActivationFocus = target === pendingLabelControl;\n  if (target === getWindow(target) || target === getDocument(target) || ignoreFocusEvent || !e.isTrusted) {\n    return;\n  }\n  if (!hasEventBeforeFocus && !isLabelActivationFocus && !hasBlurredWindowRecently) {\n    currentModality = \"virtual\";\n    triggerChangeHandlers(\"virtual\", e);\n  }\n  hasEventBeforeFocus = false;\n  pendingLabelControl = null;\n  hasBlurredWindowRecently = false;\n}\nfunction handleWindowBlur() {\n  if (ignoreFocusEvent) return;\n  hasEventBeforeFocus = false;\n  pendingLabelControl = null;\n  hasBlurredWindowRecently = true;\n}\nfunction setupGlobalFocusEvents(root) {\n  if (typeof window === \"undefined\" || listenerMap.get(getWindow(root))) {\n    return;\n  }\n  const win = getWindow(root);\n  const doc = getDocument(root);\n  let focus = win.HTMLElement.prototype.focus;\n  function patchedFocus() {\n    hasEventBeforeFocus = true;\n    focus.apply(this, arguments);\n  }\n  try {\n    Object.defineProperty(win.HTMLElement.prototype, \"focus\", {\n      configurable: true,\n      value: patchedFocus\n    });\n  } catch {\n  }\n  doc.addEventListener(\"keydown\", handleKeyboardEvent, true);\n  doc.addEventListener(\"keyup\", handleKeyboardEvent, true);\n  doc.addEventListener(\"click\", handleClickEvent, true);\n  win.addEventListener(\"focus\", handleFocusEvent, true);\n  win.addEventListener(\"blur\", handleWindowBlur, false);\n  if (typeof win.PointerEvent !== \"undefined\") {\n    doc.addEventListener(\"pointerdown\", handlePointerEvent, true);\n    doc.addEventListener(\"pointermove\", handlePointerEvent, true);\n    doc.addEventListener(\"pointerup\", handlePointerEvent, true);\n  } else {\n    doc.addEventListener(\"mousedown\", handlePointerEvent, true);\n    doc.addEventListener(\"mousemove\", handlePointerEvent, true);\n    doc.addEventListener(\"mouseup\", handlePointerEvent, true);\n  }\n  win.addEventListener(\n    \"beforeunload\",\n    () => {\n      tearDownWindowFocusTracking(root);\n    },\n    { once: true }\n  );\n  listenerMap.set(win, { focus });\n}\nvar tearDownWindowFocusTracking = (root, loadListener) => {\n  const win = getWindow(root);\n  const doc = getDocument(root);\n  if (loadListener) {\n    doc.removeEventListener(\"DOMContentLoaded\", loadListener);\n  }\n  const listenerData = listenerMap.get(win);\n  if (!listenerData) {\n    return;\n  }\n  try {\n    Object.defineProperty(win.HTMLElement.prototype, \"focus\", {\n      configurable: true,\n      value: listenerData.focus\n    });\n  } catch {\n  }\n  doc.removeEventListener(\"keydown\", handleKeyboardEvent, true);\n  doc.removeEventListener(\"keyup\", handleKeyboardEvent, true);\n  doc.removeEventListener(\"click\", handleClickEvent, true);\n  win.removeEventListener(\"focus\", handleFocusEvent, true);\n  win.removeEventListener(\"blur\", handleWindowBlur, false);\n  if (typeof win.PointerEvent !== \"undefined\") {\n    doc.removeEventListener(\"pointerdown\", handlePointerEvent, true);\n    doc.removeEventListener(\"pointermove\", handlePointerEvent, true);\n    doc.removeEventListener(\"pointerup\", handlePointerEvent, true);\n  } else {\n    doc.removeEventListener(\"mousedown\", handlePointerEvent, true);\n    doc.removeEventListener(\"mousemove\", handlePointerEvent, true);\n    doc.removeEventListener(\"mouseup\", handlePointerEvent, true);\n  }\n  listenerMap.delete(win);\n};\nfunction getInteractionModality() {\n  return currentModality;\n}\nfunction setInteractionModality(modality) {\n  currentModality = modality;\n  triggerChangeHandlers(modality, null);\n}\nfunction trackInteractionModality(props) {\n  const { onChange, root } = props;\n  setupGlobalFocusEvents(root);\n  onChange({ modality: currentModality });\n  const handler = () => onChange({ modality: currentModality });\n  changeHandlers.add(handler);\n  return () => {\n    changeHandlers.delete(handler);\n  };\n}\nfunction isFocusVisible() {\n  return currentModality === \"keyboard\" || currentModality === \"virtual\";\n}\nfunction trackFocusVisible(props = {}) {\n  const { isTextInput, autoFocus, onChange, root } = props;\n  setupGlobalFocusEvents(root);\n  onChange?.({ isFocusVisible: autoFocus || isFocusVisible(), modality: currentModality });\n  const handler = (modality, e) => {\n    if (!isKeyboardFocusEvent(!!isTextInput, modality, e)) return;\n    onChange?.({ isFocusVisible: isFocusVisible(), modality });\n  };\n  changeHandlers.add(handler);\n  return () => {\n    changeHandlers.delete(handler);\n  };\n}\nexport {\n  getInteractionModality,\n  ignoreFocusEvent,\n  isFocusVisible,\n  listenerMap,\n  setInteractionModality,\n  trackFocusVisible,\n  trackInteractionModality\n};\n","// src/get-anchor.ts\nimport { isHTMLElement } from \"@zag-js/dom-query\";\nfunction createDOMRect(x = 0, y = 0, width = 0, height = 0) {\n  if (typeof DOMRect === \"function\") {\n    return new DOMRect(x, y, width, height);\n  }\n  const rect = {\n    x,\n    y,\n    width,\n    height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x\n  };\n  return { ...rect, toJSON: () => rect };\n}\nfunction getDOMRect(anchorRect) {\n  if (!anchorRect) return createDOMRect();\n  const { x, y, width, height } = anchorRect;\n  return createDOMRect(x, y, width, height);\n}\nfunction getAnchorElement(anchorElement, getAnchorRect) {\n  return {\n    contextElement: isHTMLElement(anchorElement) ? anchorElement : anchorElement?.contextElement,\n    getBoundingClientRect: () => {\n      const anchor = anchorElement;\n      const anchorRect = getAnchorRect?.(anchor);\n      if (anchorRect || !anchor) {\n        return getDOMRect(anchorRect);\n      }\n      return anchor.getBoundingClientRect();\n    }\n  };\n}\nexport {\n  createDOMRect,\n  getAnchorElement\n};\n","// src/get-placement.ts\nimport { arrow, autoUpdate, computePosition, flip, hide, limitShift, offset, shift, size } from \"@floating-ui/dom\";\nimport { getComputedStyle, getWindow, isHTMLElement, raf } from \"@zag-js/dom-query\";\nimport { compact, isNull, noop } from \"@zag-js/utils\";\nimport { getAnchorElement } from \"./get-anchor.mjs\";\nimport { createTransformOriginMiddleware, rectMiddleware, shiftArrowMiddleware } from \"./middleware.mjs\";\nimport { getPlacementDetails } from \"./placement.mjs\";\nvar defaultOptions = {\n  strategy: \"absolute\",\n  placement: \"bottom\",\n  listeners: true,\n  restoreStyles: false,\n  applyStyles: true,\n  gutter: 8,\n  flip: true,\n  slide: true,\n  overlap: false,\n  sameWidth: false,\n  fitViewport: false,\n  overflowPadding: 8,\n  arrowPadding: 4\n};\nfunction roundByDpr(win, value) {\n  const dpr = win.devicePixelRatio || 1;\n  return Math.round(value * dpr) / dpr;\n}\nfunction isApproximatelyEqual(a, b) {\n  return a != null && Math.abs(a - b) < 0.5;\n}\nfunction resolveBoundaryOption(boundary) {\n  if (typeof boundary === \"function\") return boundary();\n  if (boundary === \"clipping-ancestors\") return \"clippingAncestors\";\n  return boundary;\n}\nfunction getArrowMiddleware(arrowElement, doc, opts) {\n  const element = arrowElement || doc.createElement(\"div\");\n  return arrow({ element, padding: opts.arrowPadding });\n}\nfunction getOffsetMiddleware(arrowElement, opts) {\n  if (isNull(opts.offset ?? opts.gutter)) return;\n  return offset(({ placement }) => {\n    const arrowOffset = (arrowElement?.clientHeight || 0) / 2;\n    const gutter = opts.offset?.mainAxis ?? opts.gutter;\n    const mainAxis = typeof gutter === \"number\" ? gutter + arrowOffset : gutter ?? arrowOffset;\n    const { hasAlign } = getPlacementDetails(placement);\n    const shift2 = !hasAlign ? opts.shift : void 0;\n    const crossAxis = opts.offset?.crossAxis ?? shift2;\n    return compact({\n      crossAxis,\n      mainAxis,\n      alignmentAxis: opts.shift\n    });\n  });\n}\nfunction getFlipMiddleware(opts) {\n  if (!opts.flip) return;\n  return flip(() => {\n    const boundary = resolveBoundaryOption(opts.boundary);\n    return {\n      ...boundary ? { boundary } : void 0,\n      padding: opts.overflowPadding,\n      fallbackPlacements: opts.flip === true ? void 0 : opts.flip\n    };\n  });\n}\nfunction getShiftMiddleware(opts) {\n  if (!opts.slide && !opts.overlap) return;\n  return shift(() => {\n    const boundary = resolveBoundaryOption(opts.boundary);\n    return {\n      ...boundary ? { boundary } : void 0,\n      mainAxis: opts.slide,\n      crossAxis: opts.overlap,\n      padding: opts.overflowPadding,\n      limiter: limitShift()\n    };\n  });\n}\nfunction getSizeMiddleware(opts) {\n  if (opts.sizeMiddleware === false && !opts.sameWidth && !opts.fitViewport) return;\n  let lastReferenceWidth;\n  let lastReferenceHeight;\n  let lastAvailableWidth;\n  let lastAvailableHeight;\n  return size(() => {\n    const boundary = resolveBoundaryOption(opts.boundary);\n    return {\n      padding: opts.overflowPadding,\n      ...boundary ? { boundary } : void 0,\n      apply({ elements, rects, availableHeight, availableWidth }) {\n        const floating = elements.floating;\n        const referenceWidth = Math.round(rects.reference.width);\n        const referenceHeight = Math.round(rects.reference.height);\n        availableWidth = Math.floor(availableWidth);\n        availableHeight = Math.floor(availableHeight);\n        if (!isApproximatelyEqual(lastReferenceWidth, referenceWidth)) {\n          floating.style.setProperty(\"--reference-width\", `${referenceWidth}px`);\n          lastReferenceWidth = referenceWidth;\n        }\n        if (!isApproximatelyEqual(lastReferenceHeight, referenceHeight)) {\n          floating.style.setProperty(\"--reference-height\", `${referenceHeight}px`);\n          lastReferenceHeight = referenceHeight;\n        }\n        if (!isApproximatelyEqual(lastAvailableWidth, availableWidth)) {\n          floating.style.setProperty(\"--available-width\", `${availableWidth}px`);\n          lastAvailableWidth = availableWidth;\n        }\n        if (!isApproximatelyEqual(lastAvailableHeight, availableHeight)) {\n          floating.style.setProperty(\"--available-height\", `${availableHeight}px`);\n          lastAvailableHeight = availableHeight;\n        }\n      }\n    };\n  });\n}\nfunction hideWhenDetachedMiddleware(opts) {\n  if (!opts.hideWhenDetached) return;\n  return hide(() => ({\n    strategy: \"referenceHidden\",\n    boundary: resolveBoundaryOption(opts.boundary) ?? \"clippingAncestors\"\n  }));\n}\nfunction getAutoUpdateOptions(opts) {\n  if (!opts) return {};\n  if (opts === true) {\n    return { ancestorResize: true, ancestorScroll: true, elementResize: true, layoutShift: true };\n  }\n  return opts;\n}\nvar floatingStyleProps = [\n  \"transform\",\n  \"visibility\",\n  \"pointer-events\",\n  \"--x\",\n  \"--y\",\n  \"--z-index\",\n  \"--reference-width\",\n  \"--reference-height\",\n  \"--available-width\",\n  \"--available-height\",\n  \"--transform-origin\"\n];\nvar arrowStyleProps = [\"top\", \"right\", \"bottom\", \"left\"];\nfunction createStyleCleanup(el, props) {\n  if (!el) return noop;\n  const prev = new Map(props.map((prop) => [prop, el.style.getPropertyValue(prop)]));\n  return () => {\n    prev.forEach((value, prop) => {\n      if (value) el.style.setProperty(prop, value);\n      else el.style.removeProperty(prop);\n    });\n    if (el.style.length === 0) {\n      el.removeAttribute(\"style\");\n    }\n  };\n}\nfunction anchorIdentity(anchor) {\n  if (anchor == null) return null;\n  if (isHTMLElement(anchor)) return anchor;\n  if (typeof anchor === \"object\" && anchor && \"contextElement\" in anchor && anchor.contextElement) {\n    return anchor.contextElement;\n  }\n  return anchor;\n}\nfunction getPlacementImpl(referenceOrVirtual, floatingOrVirtual, opts = {}) {\n  const resolveFloating = () => {\n    const raw = typeof floatingOrVirtual === \"function\" ? floatingOrVirtual() : floatingOrVirtual;\n    return raw ?? null;\n  };\n  const resolveAnchor = () => {\n    const raw = typeof referenceOrVirtual === \"function\" ? referenceOrVirtual() : referenceOrVirtual;\n    return opts.getAnchorElement?.() ?? raw;\n  };\n  const resolveReference = () => {\n    const anchor = resolveAnchor();\n    if (!anchor && !opts.getAnchorRect) return null;\n    return getAnchorElement(anchor, opts.getAnchorRect);\n  };\n  const options = Object.assign({}, defaultOptions, opts);\n  let middleware = [];\n  let cachedMiddlewareFloating = null;\n  let restoreFloatingStyles;\n  let restoreArrowStyles;\n  function rebuildMiddlewareForFloating(floating) {\n    restoreFloatingStyles?.();\n    restoreArrowStyles?.();\n    cachedMiddlewareFloating = floating;\n    restoreFloatingStyles = options.restoreStyles ? createStyleCleanup(floating, floatingStyleProps) : void 0;\n    const arrowEl = floating.querySelector(\"[data-part=arrow]\");\n    restoreArrowStyles = options.restoreStyles ? createStyleCleanup(arrowEl, arrowStyleProps) : void 0;\n    middleware = [\n      getOffsetMiddleware(arrowEl, options),\n      getFlipMiddleware(options),\n      getShiftMiddleware(options),\n      getArrowMiddleware(arrowEl, floating.ownerDocument, options),\n      shiftArrowMiddleware(arrowEl),\n      createTransformOriginMiddleware(\n        { gutter: options.gutter, offset: options.offset, overlap: options.overlap },\n        arrowEl\n      ),\n      getSizeMiddleware(options),\n      hideWhenDetachedMiddleware(options),\n      rectMiddleware\n    ];\n  }\n  const { placement, strategy, onComplete, onPositioned } = options;\n  let lastX;\n  let lastY;\n  let zIndexComputed = false;\n  let lastAnchorForObserve = void 0;\n  let lastFloatingForObserve = void 0;\n  let cancelAutoUpdate = noop;\n  const autoUpdateOptions = getAutoUpdateOptions(options.listeners);\n  function syncAutoUpdateObservers() {\n    if (!options.listeners) return;\n    const anchor = resolveAnchor();\n    const reference = resolveReference();\n    const floating = resolveFloating();\n    if (!reference || !floating) return;\n    const anchorChanged = anchorIdentity(anchor) !== anchorIdentity(lastAnchorForObserve);\n    const floatingChanged = floating !== lastFloatingForObserve;\n    if (anchorChanged || floatingChanged) {\n      cancelAutoUpdate();\n      lastAnchorForObserve = anchor;\n      lastFloatingForObserve = floating;\n      cancelAutoUpdate = autoUpdate(reference, floating, runUpdate, autoUpdateOptions);\n    }\n  }\n  async function updatePosition() {\n    syncAutoUpdateObservers();\n    const floating = resolveFloating();\n    if (!floating) return;\n    if (floating !== cachedMiddlewareFloating) {\n      rebuildMiddlewareForFloating(floating);\n      zIndexComputed = false;\n    }\n    const reference = resolveReference();\n    if (!reference) return;\n    const pos = await computePosition(reference, floating, {\n      placement,\n      middleware,\n      strategy\n    });\n    const win = getWindow(floating);\n    const x = roundByDpr(win, pos.x);\n    const y = roundByDpr(win, pos.y);\n    onComplete?.({ ...pos, x, y });\n    if (options.applyStyles === false) return;\n    if (!isApproximatelyEqual(lastX, x)) {\n      floating.style.setProperty(\"--x\", `${x}px`);\n      lastX = x;\n    }\n    if (!isApproximatelyEqual(lastY, y)) {\n      floating.style.setProperty(\"--y\", `${y}px`);\n      lastY = y;\n    }\n    if (options.hideWhenDetached) {\n      const isHidden = pos.middlewareData.hide?.referenceHidden;\n      if (isHidden) {\n        floating.style.setProperty(\"visibility\", \"hidden\");\n        floating.style.setProperty(\"pointer-events\", \"none\");\n      } else {\n        floating.style.removeProperty(\"visibility\");\n        floating.style.removeProperty(\"pointer-events\");\n      }\n    }\n    if (!zIndexComputed) {\n      const contentEl = floating.firstElementChild;\n      if (contentEl) {\n        floating.style.setProperty(\"--z-index\", getComputedStyle(contentEl).zIndex);\n        zIndexComputed = true;\n      }\n    }\n  }\n  async function runUpdate() {\n    if (opts.updatePosition) {\n      await opts.updatePosition({ updatePosition, floatingElement: resolveFloating() });\n      onPositioned?.({ placed: true });\n    } else {\n      await updatePosition();\n    }\n  }\n  runUpdate();\n  return () => {\n    cancelAutoUpdate();\n    restoreArrowStyles?.();\n    restoreFloatingStyles?.();\n    onPositioned?.({ placed: false });\n  };\n}\nfunction getPlacement(referenceOrFn, floatingOrFn, opts = {}) {\n  const { defer, ...options } = opts;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      cleanups.push(getPlacementImpl(referenceOrFn, floatingOrFn, options));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\nexport {\n  getPlacement\n};\n","// src/get-styles.ts\nimport { cssVars } from \"./middleware.mjs\";\nvar ARROW_FLOATING_STYLE = {\n  bottom: \"rotate(45deg)\",\n  left: \"rotate(135deg)\",\n  top: \"rotate(225deg)\",\n  right: \"rotate(315deg)\"\n};\nfunction getPlacementStyles(options = {}) {\n  const { placement, sameWidth, fitViewport, strategy = \"absolute\" } = options;\n  return {\n    arrow: {\n      position: \"absolute\",\n      width: cssVars.arrowSize.reference,\n      height: cssVars.arrowSize.reference,\n      [cssVars.arrowSizeHalf.variable]: `calc(${cssVars.arrowSize.reference} / 2)`,\n      [cssVars.arrowOffset.variable]: `calc(${cssVars.arrowSizeHalf.reference} * -1)`\n    },\n    arrowTip: {\n      // @ts-expect-error - Fix this\n      transform: placement ? ARROW_FLOATING_STYLE[placement.split(\"-\")[0]] : void 0,\n      background: cssVars.arrowBg.reference,\n      top: \"0\",\n      left: \"0\",\n      width: \"100%\",\n      height: \"100%\",\n      position: \"absolute\",\n      zIndex: \"inherit\"\n    },\n    floating: {\n      position: strategy,\n      isolation: \"isolate\",\n      minWidth: sameWidth ? void 0 : \"max-content\",\n      width: sameWidth ? \"var(--reference-width)\" : void 0,\n      maxWidth: fitViewport ? \"var(--available-width)\" : void 0,\n      maxHeight: fitViewport ? \"var(--available-height)\" : void 0,\n      pointerEvents: !placement ? \"none\" : void 0,\n      top: \"0px\",\n      left: \"0px\",\n      // move off-screen if placement is not defined\n      transform: placement ? \"translate3d(var(--x), var(--y), 0)\" : \"translate3d(0, -100vh, 0)\",\n      zIndex: \"var(--z-index)\"\n    }\n  };\n}\nexport {\n  getPlacementStyles\n};\n","// src/middleware.ts\nvar toVar = (value) => ({ variable: value, reference: `var(${value})` });\nvar cssVars = {\n  arrowSize: toVar(\"--arrow-size\"),\n  arrowSizeHalf: toVar(\"--arrow-size-half\"),\n  arrowBg: toVar(\"--arrow-background\"),\n  transformOrigin: toVar(\"--transform-origin\"),\n  arrowOffset: toVar(\"--arrow-offset\")\n};\nvar getSideAxis = (side) => side === \"top\" || side === \"bottom\" ? \"y\" : \"x\";\nfunction createTransformOriginMiddleware(opts, arrowEl) {\n  return {\n    name: \"transformOrigin\",\n    fn(state) {\n      const { elements, middlewareData, placement, rects, y } = state;\n      const side = placement.split(\"-\")[0];\n      const axis = getSideAxis(side);\n      const arrowX = middlewareData.arrow?.x || 0;\n      const arrowY = middlewareData.arrow?.y || 0;\n      const arrowWidth = arrowEl?.clientWidth || 0;\n      const arrowHeight = arrowEl?.clientHeight || 0;\n      const transformX = arrowX + arrowWidth / 2;\n      const transformY = arrowY + arrowHeight / 2;\n      const shiftY = Math.abs(middlewareData.shift?.y || 0);\n      const halfAnchorHeight = rects.reference.height / 2;\n      const arrowOffset = arrowHeight / 2;\n      const gutter = opts.offset?.mainAxis ?? opts.gutter;\n      const sideOffsetValue = typeof gutter === \"number\" ? gutter + arrowOffset : gutter ?? arrowOffset;\n      const isOverlappingAnchor = shiftY > sideOffsetValue;\n      const adjacentTransformOrigin = {\n        top: `${transformX}px calc(100% + ${sideOffsetValue}px)`,\n        bottom: `${transformX}px ${-sideOffsetValue}px`,\n        left: `calc(100% + ${sideOffsetValue}px) ${transformY}px`,\n        right: `${-sideOffsetValue}px ${transformY}px`\n      }[side];\n      const overlapTransformOrigin = `${transformX}px ${rects.reference.y + halfAnchorHeight - y}px`;\n      const useOverlap = Boolean(opts.overlap) && axis === \"y\" && isOverlappingAnchor;\n      elements.floating.style.setProperty(\n        cssVars.transformOrigin.variable,\n        useOverlap ? overlapTransformOrigin : adjacentTransformOrigin\n      );\n      return {\n        data: {\n          transformOrigin: useOverlap ? overlapTransformOrigin : adjacentTransformOrigin\n        }\n      };\n    }\n  };\n}\nvar rectMiddleware = {\n  name: \"rects\",\n  fn({ rects }) {\n    return {\n      data: rects\n    };\n  }\n};\nvar shiftArrowMiddleware = (arrowEl) => {\n  if (!arrowEl) return;\n  return {\n    name: \"shiftArrow\",\n    fn({ placement, middlewareData }) {\n      if (!middlewareData.arrow) return {};\n      const { x, y } = middlewareData.arrow;\n      const dir = placement.split(\"-\")[0];\n      Object.assign(arrowEl.style, {\n        left: x != null ? `${x}px` : \"\",\n        top: y != null ? `${y}px` : \"\",\n        [dir]: `calc(100% + ${cssVars.arrowOffset.reference})`\n      });\n      return {};\n    }\n  };\n};\nexport {\n  createTransformOriginMiddleware,\n  cssVars,\n  rectMiddleware,\n  shiftArrowMiddleware\n};\n","// src/placement.ts\nfunction isValidPlacement(v) {\n  return /^(?:top|bottom|left|right)(?:-(?:start|end))?$/.test(v);\n}\nfunction getPlacementDetails(placement) {\n  const [side, align] = placement.split(\"-\");\n  return { side, align, hasAlign: align != null };\n}\nfunction getPlacementSide(placement) {\n  return placement.split(\"-\")[0];\n}\nexport {\n  getPlacementDetails,\n  getPlacementSide,\n  isValidPlacement\n};\n","// src/select.collection.ts\nimport { ListCollection } from \"@zag-js/collection\";\nvar collection = (options) => {\n  return new ListCollection(options);\n};\ncollection.empty = () => {\n  return new ListCollection({ items: [] });\n};\nexport {\n  collection\n};\n","// src/select.anatomy.ts\nimport { createAnatomy } from \"@zag-js/anatomy\";\nvar anatomy = createAnatomy(\"select\").parts(\n  \"label\",\n  \"positioner\",\n  \"trigger\",\n  \"indicator\",\n  \"clearTrigger\",\n  \"item\",\n  \"itemText\",\n  \"itemIndicator\",\n  \"itemGroup\",\n  \"itemGroupLabel\",\n  \"list\",\n  \"content\",\n  \"root\",\n  \"control\",\n  \"valueText\"\n);\nvar parts = anatomy.build();\nexport {\n  anatomy,\n  parts\n};\n","// src/select.connect.ts\nimport {\n  ariaAttr,\n  contains,\n  dataAttr,\n  getByTypeahead,\n  getEventKey,\n  getEventTarget,\n  getNativeEvent,\n  isEditableElement,\n  isInternalChangeEvent,\n  isValidTabEvent,\n  visuallyHiddenStyle\n} from \"@zag-js/dom-query\";\nimport { getInteractionModality } from \"@zag-js/focus-visible\";\nimport { getPlacementSide, getPlacementStyles } from \"@zag-js/popper\";\nimport { ensure, mergeWithDefault } from \"@zag-js/utils\";\nimport { parts } from \"./select.anatomy.mjs\";\nimport * as dom from \"./select.dom.mjs\";\nvar defaultTranslations = {\n  clearTriggerLabel: \"Clear value\"\n};\nfunction connect(service, normalize) {\n  const { context, prop, scope, state, computed, send } = service;\n  const translations = mergeWithDefault(defaultTranslations, prop(\"translations\"));\n  const disabled = prop(\"disabled\") || context.get(\"fieldsetDisabled\");\n  const invalid = !!prop(\"invalid\");\n  const required = !!prop(\"required\");\n  const readOnly = !!prop(\"readOnly\");\n  const composite = prop(\"composite\");\n  const collection = prop(\"collection\");\n  const open = state.hasTag(\"open\");\n  const focused = state.matches(\"focused\");\n  const highlightedValue = context.get(\"highlightedValue\");\n  const highlightedItem = context.get(\"highlightedItem\");\n  const selectedItems = computed(\"selectedItems\");\n  const currentPlacement = context.get(\"currentPlacement\");\n  const currentPlacementSide = currentPlacement ? getPlacementSide(currentPlacement) : void 0;\n  const isTypingAhead = computed(\"isTypingAhead\");\n  const interactive = computed(\"isInteractive\");\n  const ariaActiveDescendant = highlightedValue ? dom.getItemId(scope, highlightedValue) : void 0;\n  function getItemState(props) {\n    const _disabled = collection.getItemDisabled(props.item);\n    const value = collection.getItemValue(props.item);\n    ensure(value, () => `[zag-js] No value found for item ${JSON.stringify(props.item)}`);\n    return {\n      value,\n      disabled: Boolean(disabled || _disabled),\n      highlighted: highlightedValue === value,\n      selected: context.get(\"value\").includes(value)\n    };\n  }\n  const popperStyles = getPlacementStyles({\n    ...prop(\"positioning\"),\n    placement: currentPlacement\n  });\n  return {\n    open,\n    focused,\n    empty: context.get(\"value\").length === 0,\n    highlightedItem,\n    highlightedValue,\n    selectedItems,\n    hasSelectedItems: computed(\"hasSelectedItems\"),\n    value: context.get(\"value\"),\n    valueAsString: computed(\"valueAsString\"),\n    collection,\n    multiple: !!prop(\"multiple\"),\n    disabled: !!disabled,\n    reposition(options = {}) {\n      send({ type: \"POSITIONING.SET\", options });\n    },\n    focus() {\n      dom.getTriggerEl(scope)?.focus({ preventScroll: true });\n    },\n    setOpen(nextOpen) {\n      send({ type: nextOpen ? \"OPEN\" : \"CLOSE\", replaces: \"open\" });\n    },\n    selectValue(value) {\n      send({ type: \"ITEM.SELECT\", value });\n    },\n    setValue(value) {\n      send({ type: \"VALUE.SET\", value });\n    },\n    selectAll() {\n      send({ type: \"VALUE.SET\", value: collection.getValues() });\n    },\n    setHighlightValue(value) {\n      send({ type: \"HIGHLIGHTED_VALUE.SET\", value });\n    },\n    clearHighlightValue() {\n      send({ type: \"HIGHLIGHTED_VALUE.CLEAR\" });\n    },\n    clearValue(value) {\n      if (value) {\n        send({ type: \"ITEM.CLEAR\", value });\n      } else {\n        send({ type: \"VALUE.CLEAR\" });\n      }\n    },\n    getItemState,\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        dir: prop(\"dir\"),\n        id: dom.getRootId(scope),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly)\n      });\n    },\n    getLabelProps() {\n      return normalize.label({\n        dir: prop(\"dir\"),\n        id: dom.getLabelId(scope),\n        ...parts.label.attrs,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-required\": dataAttr(required),\n        htmlFor: dom.getHiddenSelectId(scope),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (disabled) return;\n          dom.getTriggerEl(scope)?.focus({ preventScroll: true });\n        }\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        dir: prop(\"dir\"),\n        id: dom.getControlId(scope),\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-focus\": dataAttr(focused),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid)\n      });\n    },\n    getValueTextProps() {\n      return normalize.element({\n        ...parts.valueText.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-focus\": dataAttr(focused)\n      });\n    },\n    getTriggerProps() {\n      return normalize.button({\n        id: dom.getTriggerId(scope),\n        disabled,\n        dir: prop(\"dir\"),\n        type: \"button\",\n        role: \"combobox\",\n        \"aria-controls\": dom.getContentId(scope),\n        \"aria-expanded\": open,\n        \"aria-haspopup\": \"listbox\",\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"aria-invalid\": invalid,\n        \"aria-required\": required,\n        \"aria-labelledby\": dom.getLabelId(scope),\n        ...parts.trigger.attrs,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-placement\": currentPlacement,\n        \"data-side\": currentPlacementSide,\n        \"data-placeholder-shown\": dataAttr(!computed(\"hasSelectedItems\")),\n        onClick(event) {\n          if (!interactive) return;\n          if (event.defaultPrevented) return;\n          send({ type: \"TRIGGER.CLICK\" });\n        },\n        onFocus() {\n          send({ type: \"TRIGGER.FOCUS\" });\n        },\n        onBlur() {\n          send({ type: \"TRIGGER.BLUR\" });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (!interactive) return;\n          const keyMap = {\n            ArrowUp() {\n              send({ type: \"TRIGGER.ARROW_UP\" });\n            },\n            ArrowDown(event2) {\n              send({ type: event2.altKey ? \"OPEN\" : \"TRIGGER.ARROW_DOWN\" });\n            },\n            ArrowLeft() {\n              send({ type: \"TRIGGER.ARROW_LEFT\" });\n            },\n            ArrowRight() {\n              send({ type: \"TRIGGER.ARROW_RIGHT\" });\n            },\n            Home() {\n              send({ type: \"TRIGGER.HOME\" });\n            },\n            End() {\n              send({ type: \"TRIGGER.END\" });\n            },\n            Enter() {\n              send({ type: \"TRIGGER.ENTER\" });\n            },\n            Space(event2) {\n              if (isTypingAhead) {\n                send({ type: \"TRIGGER.TYPEAHEAD\", key: event2.key });\n              } else {\n                send({ type: \"TRIGGER.ENTER\" });\n              }\n            }\n          };\n          const exec = keyMap[getEventKey(event, {\n            dir: prop(\"dir\"),\n            orientation: \"vertical\"\n          })];\n          if (exec) {\n            exec(event);\n            event.preventDefault();\n            return;\n          }\n          if (getByTypeahead.isValidEvent(event)) {\n            send({ type: \"TRIGGER.TYPEAHEAD\", key: event.key });\n            event.preventDefault();\n          }\n        }\n      });\n    },\n    getIndicatorProps() {\n      return normalize.element({\n        ...parts.indicator.attrs,\n        dir: prop(\"dir\"),\n        \"aria-hidden\": true,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly)\n      });\n    },\n    getItemProps(props) {\n      const itemState = getItemState(props);\n      return normalize.element({\n        id: dom.getItemId(scope, itemState.value),\n        role: \"option\",\n        ...parts.item.attrs,\n        dir: prop(\"dir\"),\n        \"data-value\": itemState.value,\n        \"aria-selected\": itemState.selected,\n        \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n        \"data-highlighted\": dataAttr(itemState.highlighted),\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"aria-disabled\": ariaAttr(itemState.disabled),\n        onPointerMove(event) {\n          if (itemState.disabled || event.pointerType !== \"mouse\") return;\n          if (getInteractionModality() !== \"pointer\") return;\n          if (itemState.value === highlightedValue) return;\n          send({ type: \"ITEM.POINTER_MOVE\", value: itemState.value });\n        },\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (itemState.disabled) return;\n          send({ type: \"ITEM.CLICK\", src: \"pointerup\", value: itemState.value });\n        },\n        onPointerLeave(event) {\n          if (itemState.disabled) return;\n          if (props.persistFocus) return;\n          if (event.pointerType !== \"mouse\") return;\n          if (getInteractionModality() !== \"pointer\") return;\n          send({ type: \"ITEM.POINTER_LEAVE\" });\n        }\n      });\n    },\n    getItemTextProps(props) {\n      const itemState = getItemState(props);\n      return normalize.element({\n        ...parts.itemText.attrs,\n        \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-highlighted\": dataAttr(itemState.highlighted)\n      });\n    },\n    getItemIndicatorProps(props) {\n      const itemState = getItemState(props);\n      return normalize.element({\n        \"aria-hidden\": true,\n        ...parts.itemIndicator.attrs,\n        \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n        hidden: !itemState.selected\n      });\n    },\n    getItemGroupLabelProps(props) {\n      const { htmlFor } = props;\n      return normalize.element({\n        ...parts.itemGroupLabel.attrs,\n        id: dom.getItemGroupLabelId(scope, htmlFor),\n        dir: prop(\"dir\"),\n        role: \"presentation\"\n      });\n    },\n    getItemGroupProps(props) {\n      const { id } = props;\n      return normalize.element({\n        ...parts.itemGroup.attrs,\n        \"data-disabled\": dataAttr(disabled),\n        id: dom.getItemGroupId(scope, id),\n        \"aria-labelledby\": dom.getItemGroupLabelId(scope, id),\n        role: \"group\",\n        dir: prop(\"dir\")\n      });\n    },\n    getClearTriggerProps() {\n      return normalize.button({\n        ...parts.clearTrigger.attrs,\n        id: dom.getClearTriggerId(scope),\n        type: \"button\",\n        \"aria-label\": translations.clearTriggerLabel,\n        \"data-invalid\": dataAttr(invalid),\n        disabled,\n        hidden: !computed(\"hasSelectedItems\"),\n        dir: prop(\"dir\"),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: \"CLEAR.CLICK\" });\n        }\n      });\n    },\n    getHiddenSelectProps() {\n      const value = context.get(\"value\");\n      const defaultValue = prop(\"multiple\") ? value : value?.[0];\n      const handleChange = (e) => {\n        const evt = getNativeEvent(e);\n        if (isInternalChangeEvent(evt)) return;\n        send({ type: \"VALUE.SET\", value: getSelectedValues(e.currentTarget) });\n      };\n      return normalize.select({\n        name: prop(\"name\"),\n        form: prop(\"form\"),\n        disabled,\n        multiple: prop(\"multiple\"),\n        required: prop(\"required\"),\n        \"aria-hidden\": true,\n        id: dom.getHiddenSelectId(scope),\n        defaultValue,\n        style: visuallyHiddenStyle,\n        tabIndex: -1,\n        autoComplete: prop(\"autoComplete\"),\n        onChange: handleChange,\n        onInput: handleChange,\n        // Some browser extensions will focus the hidden select.\n        // Let's forward the focus to the trigger.\n        onFocus() {\n          dom.getTriggerEl(scope)?.focus({ preventScroll: true });\n        },\n        \"aria-labelledby\": dom.getLabelId(scope)\n      });\n    },\n    getPositionerProps() {\n      return normalize.element({\n        ...parts.positioner.attrs,\n        dir: prop(\"dir\"),\n        id: dom.getPositionerId(scope),\n        style: popperStyles.floating\n      });\n    },\n    getContentProps() {\n      return normalize.element({\n        hidden: !open,\n        dir: prop(\"dir\"),\n        id: dom.getContentId(scope),\n        role: composite ? \"listbox\" : \"dialog\",\n        ...parts.content.attrs,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-placement\": currentPlacement,\n        \"data-side\": currentPlacementSide,\n        \"data-activedescendant\": ariaActiveDescendant,\n        \"aria-activedescendant\": composite ? ariaActiveDescendant : void 0,\n        \"aria-multiselectable\": prop(\"multiple\") && composite ? true : void 0,\n        \"aria-labelledby\": dom.getLabelId(scope),\n        tabIndex: 0,\n        onKeyDown(event) {\n          if (!interactive) return;\n          if (!contains(event.currentTarget, getEventTarget(event))) return;\n          if (event.key === \"Tab\") {\n            const valid = isValidTabEvent(event);\n            if (!valid) {\n              event.preventDefault();\n              return;\n            }\n          }\n          const keyMap = {\n            ArrowUp() {\n              send({ type: \"CONTENT.ARROW_UP\" });\n            },\n            ArrowDown() {\n              send({ type: \"CONTENT.ARROW_DOWN\" });\n            },\n            Home() {\n              send({ type: \"CONTENT.HOME\" });\n            },\n            End() {\n              send({ type: \"CONTENT.END\" });\n            },\n            Enter() {\n              send({ type: \"ITEM.CLICK\", src: \"keydown.enter\" });\n            },\n            Space(event2) {\n              if (isTypingAhead) {\n                send({ type: \"CONTENT.TYPEAHEAD\", key: event2.key });\n              } else {\n                keyMap.Enter?.(event2);\n              }\n            }\n          };\n          const exec = keyMap[getEventKey(event)];\n          if (exec) {\n            exec(event);\n            event.preventDefault();\n            return;\n          }\n          const target = getEventTarget(event);\n          if (isEditableElement(target)) {\n            return;\n          }\n          if (getByTypeahead.isValidEvent(event)) {\n            send({ type: \"CONTENT.TYPEAHEAD\", key: event.key });\n            event.preventDefault();\n          }\n        }\n      });\n    },\n    getListProps() {\n      return normalize.element({\n        ...parts.list.attrs,\n        tabIndex: 0,\n        role: !composite ? \"listbox\" : void 0,\n        \"aria-labelledby\": dom.getTriggerId(scope),\n        \"aria-activedescendant\": !composite ? ariaActiveDescendant : void 0,\n        \"aria-multiselectable\": !composite && prop(\"multiple\") ? true : void 0\n      });\n    }\n  };\n}\nvar getSelectedValues = (el) => {\n  return el.multiple ? Array.from(el.selectedOptions, (o) => o.value) : el.value ? [el.value] : [];\n};\nexport {\n  connect\n};\n","// src/select.dom.ts\nvar getRootId = (ctx) => ctx.ids?.root ?? `select:${ctx.id}`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `select:${ctx.id}:content`;\nvar getTriggerId = (ctx) => ctx.ids?.trigger ?? `select:${ctx.id}:trigger`;\nvar getClearTriggerId = (ctx) => ctx.ids?.clearTrigger ?? `select:${ctx.id}:clear-trigger`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `select:${ctx.id}:label`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `select:${ctx.id}:control`;\nvar getItemId = (ctx, id) => ctx.ids?.item?.(id) ?? `select:${ctx.id}:option:${id}`;\nvar getHiddenSelectId = (ctx) => ctx.ids?.hiddenSelect ?? `select:${ctx.id}:select`;\nvar getPositionerId = (ctx) => ctx.ids?.positioner ?? `select:${ctx.id}:positioner`;\nvar getItemGroupId = (ctx, id) => ctx.ids?.itemGroup?.(id) ?? `select:${ctx.id}:optgroup:${id}`;\nvar getItemGroupLabelId = (ctx, id) => ctx.ids?.itemGroupLabel?.(id) ?? `select:${ctx.id}:optgroup-label:${id}`;\nvar getHiddenSelectEl = (ctx) => ctx.getById(getHiddenSelectId(ctx));\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nvar getControlEl = (ctx) => ctx.getById(getControlId(ctx));\nvar getTriggerEl = (ctx) => ctx.getById(getTriggerId(ctx));\nvar getClearTriggerEl = (ctx) => ctx.getById(getClearTriggerId(ctx));\nvar getPositionerEl = (ctx) => ctx.getById(getPositionerId(ctx));\nvar getItemEl = (ctx, id) => {\n  if (id == null) return null;\n  return ctx.getById(getItemId(ctx, id));\n};\nexport {\n  getClearTriggerEl,\n  getClearTriggerId,\n  getContentEl,\n  getContentId,\n  getControlEl,\n  getControlId,\n  getHiddenSelectEl,\n  getHiddenSelectId,\n  getItemEl,\n  getItemGroupId,\n  getItemGroupLabelId,\n  getItemId,\n  getLabelId,\n  getPositionerEl,\n  getPositionerId,\n  getRootId,\n  getTriggerEl,\n  getTriggerId\n};\n","// src/select.machine.ts\nimport { createGuards, createMachine } from \"@zag-js/core\";\nimport { trackDismissableElement } from \"@zag-js/dismissable\";\nimport {\n  getByTypeahead,\n  getInitialFocus,\n  markAsInternalChangeEvent,\n  observeAttributes,\n  raf,\n  scrollIntoView,\n  trackFormControl\n} from \"@zag-js/dom-query\";\nimport { getInteractionModality, setInteractionModality, trackFocusVisible } from \"@zag-js/focus-visible\";\nimport { getPlacement } from \"@zag-js/popper\";\nimport { addOrRemove, isEqual } from \"@zag-js/utils\";\nimport { createSelectedItemMap, deriveSelectionState, resolveSelectedItems } from \"@zag-js/collection\";\nimport { collection } from \"./select.collection.mjs\";\nimport * as dom from \"./select.dom.mjs\";\nvar { and, not, or } = createGuards();\nvar machine = createMachine({\n  props({ props }) {\n    return {\n      loopFocus: false,\n      closeOnSelect: !props.multiple,\n      composite: true,\n      defaultValue: [],\n      ...props,\n      collection: props.collection ?? collection.empty(),\n      positioning: {\n        placement: \"bottom-start\",\n        gutter: 8,\n        ...props.positioning\n      }\n    };\n  },\n  context({ prop, bindable, getContext }) {\n    const initialValue = prop(\"value\") ?? prop(\"defaultValue\") ?? [];\n    const initialSelectedItems = prop(\"collection\").findMany(initialValue);\n    return {\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        isEqual,\n        onChange(value) {\n          const context = getContext();\n          const collection2 = prop(\"collection\");\n          const selectedItemMap = context.get(\"selectedItemMap\");\n          const proposed = deriveSelectionState({\n            values: value,\n            collection: collection2,\n            selectedItemMap\n          });\n          const effectiveValue = prop(\"value\") ?? value;\n          const effective = effectiveValue === value ? proposed : deriveSelectionState({\n            values: effectiveValue,\n            collection: collection2,\n            selectedItemMap: proposed.nextSelectedItemMap\n          });\n          context.set(\"selectedItemMap\", effective.nextSelectedItemMap);\n          return prop(\"onValueChange\")?.({ value, items: proposed.selectedItems });\n        }\n      })),\n      highlightedValue: bindable(() => ({\n        defaultValue: prop(\"defaultHighlightedValue\") || null,\n        value: prop(\"highlightedValue\"),\n        onChange(value) {\n          prop(\"onHighlightChange\")?.({\n            highlightedValue: value,\n            highlightedItem: prop(\"collection\").find(value),\n            highlightedIndex: prop(\"collection\").indexOf(value)\n          });\n        }\n      })),\n      currentPlacement: bindable(() => ({\n        defaultValue: void 0\n      })),\n      fieldsetDisabled: bindable(() => ({\n        defaultValue: false\n      })),\n      highlightedItem: bindable(() => ({\n        defaultValue: null\n      })),\n      selectedItemMap: bindable(() => {\n        return {\n          defaultValue: createSelectedItemMap({\n            selectedItems: initialSelectedItems,\n            collection: prop(\"collection\")\n          })\n        };\n      })\n    };\n  },\n  refs() {\n    return {\n      typeahead: { ...getByTypeahead.defaultOptions }\n    };\n  },\n  computed: {\n    hasSelectedItems: ({ context }) => context.get(\"value\").length > 0,\n    isTypingAhead: ({ refs }) => refs.get(\"typeahead\").keysSoFar !== \"\",\n    isDisabled: ({ prop, context }) => !!prop(\"disabled\") || !!context.get(\"fieldsetDisabled\"),\n    isInteractive: ({ prop }) => !(prop(\"disabled\") || prop(\"readOnly\")),\n    selectedItems: ({ context, prop }) => resolveSelectedItems({\n      values: context.get(\"value\"),\n      collection: prop(\"collection\"),\n      selectedItemMap: context.get(\"selectedItemMap\")\n    }),\n    valueAsString: ({ computed, prop }) => prop(\"collection\").stringifyItems(computed(\"selectedItems\"))\n  },\n  initialState({ prop }) {\n    const open = prop(\"open\") || prop(\"defaultOpen\");\n    return open ? \"open\" : \"idle\";\n  },\n  entry: [\"syncSelectElement\"],\n  watch({ context, prop, track, action }) {\n    track([() => context.get(\"value\").toString()], () => {\n      action([\"syncSelectedItems\", \"syncSelectElement\", \"dispatchChangeEvent\"]);\n    });\n    track([() => prop(\"open\")], () => {\n      action([\"toggleVisibility\"]);\n    });\n    track([() => context.get(\"highlightedValue\")], () => {\n      action([\"syncHighlightedItem\"]);\n    });\n    track([() => prop(\"collection\").toString()], () => {\n      action([\"syncCollection\"]);\n    });\n  },\n  on: {\n    \"HIGHLIGHTED_VALUE.SET\": {\n      actions: [\"setHighlightedItem\"]\n    },\n    \"HIGHLIGHTED_VALUE.CLEAR\": {\n      actions: [\"clearHighlightedItem\"]\n    },\n    \"ITEM.SELECT\": {\n      actions: [\"selectItem\"]\n    },\n    \"ITEM.CLEAR\": {\n      actions: [\"clearItem\"]\n    },\n    \"VALUE.SET\": {\n      actions: [\"setSelectedItems\"]\n    },\n    \"VALUE.CLEAR\": {\n      actions: [\"clearSelectedItems\"]\n    },\n    \"CLEAR.CLICK\": {\n      actions: [\"clearSelectedItems\", \"focusTriggerEl\"]\n    }\n  },\n  effects: [\"trackFormControlState\"],\n  states: {\n    idle: {\n      tags: [\"closed\"],\n      on: {\n        \"CONTROLLED.OPEN\": [\n          {\n            guard: \"isTriggerClickEvent\",\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\"]\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\", \"setInitialFocus\", \"highlightFirstSelectedItem\"]\n          }\n        ],\n        \"TRIGGER.FOCUS\": {\n          target: \"focused\"\n        },\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\"]\n          }\n        ]\n      }\n    },\n    focused: {\n      tags: [\"closed\"],\n      on: {\n        \"CONTROLLED.OPEN\": [\n          {\n            guard: \"isTriggerClickEvent\",\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\"]\n          },\n          {\n            guard: \"isTriggerArrowUpEvent\",\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"highlightComputedLastItem\"]\n          },\n          {\n            guard: or(\"isTriggerArrowDownEvent\", \"isTriggerEnterEvent\"),\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"highlightComputedFirstItem\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\"]\n          }\n        ],\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\"]\n          }\n        ],\n        \"TRIGGER.BLUR\": {\n          target: \"idle\"\n        },\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\", \"highlightFirstSelectedItem\"]\n          }\n        ],\n        \"TRIGGER.ENTER\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\", \"highlightComputedFirstItem\"]\n          }\n        ],\n        \"TRIGGER.ARROW_UP\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\", \"highlightComputedLastItem\"]\n          }\n        ],\n        \"TRIGGER.ARROW_DOWN\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\", \"highlightComputedFirstItem\"]\n          }\n        ],\n        \"TRIGGER.ARROW_LEFT\": [\n          {\n            guard: and(not(\"multiple\"), \"hasSelectedItems\"),\n            actions: [\"selectPreviousItem\"]\n          },\n          {\n            guard: not(\"multiple\"),\n            actions: [\"selectLastItem\"]\n          }\n        ],\n        \"TRIGGER.ARROW_RIGHT\": [\n          {\n            guard: and(not(\"multiple\"), \"hasSelectedItems\"),\n            actions: [\"selectNextItem\"]\n          },\n          {\n            guard: not(\"multiple\"),\n            actions: [\"selectFirstItem\"]\n          }\n        ],\n        \"TRIGGER.HOME\": {\n          guard: not(\"multiple\"),\n          actions: [\"selectFirstItem\"]\n        },\n        \"TRIGGER.END\": {\n          guard: not(\"multiple\"),\n          actions: [\"selectLastItem\"]\n        },\n        \"TRIGGER.TYPEAHEAD\": {\n          guard: not(\"multiple\"),\n          actions: [\"selectMatchingItem\"]\n        }\n      }\n    },\n    open: {\n      tags: [\"open\"],\n      exit: [\"scrollContentToTop\"],\n      effects: [\"trackDismissableElement\", \"trackFocusVisible\", \"computePlacement\", \"scrollToHighlightedItem\"],\n      on: {\n        \"CONTROLLED.CLOSE\": [\n          {\n            guard: \"restoreFocus\",\n            target: \"focused\",\n            actions: [\"focusTriggerEl\", \"clearHighlightedItem\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"clearHighlightedItem\"]\n          }\n        ],\n        CLOSE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            guard: \"restoreFocus\",\n            target: \"focused\",\n            actions: [\"invokeOnClose\", \"focusTriggerEl\", \"clearHighlightedItem\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"invokeOnClose\", \"clearHighlightedItem\"]\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"invokeOnClose\", \"clearHighlightedItem\"]\n          }\n        ],\n        \"ITEM.CLICK\": [\n          {\n            guard: and(\"closeOnSelect\", \"isOpenControlled\"),\n            actions: [\"selectHighlightedItem\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"closeOnSelect\",\n            target: \"focused\",\n            actions: [\"selectHighlightedItem\", \"invokeOnClose\", \"focusTriggerEl\", \"clearHighlightedItem\"]\n          },\n          {\n            actions: [\"selectHighlightedItem\"]\n          }\n        ],\n        \"CONTENT.HOME\": {\n          actions: [\"highlightFirstItem\"]\n        },\n        \"CONTENT.END\": {\n          actions: [\"highlightLastItem\"]\n        },\n        \"CONTENT.ARROW_DOWN\": [\n          {\n            guard: and(\"hasHighlightedItem\", \"loop\", \"isLastItemHighlighted\"),\n            actions: [\"highlightFirstItem\"]\n          },\n          {\n            guard: \"hasHighlightedItem\",\n            actions: [\"highlightNextItem\"]\n          },\n          {\n            actions: [\"highlightFirstItem\"]\n          }\n        ],\n        \"CONTENT.ARROW_UP\": [\n          {\n            guard: and(\"hasHighlightedItem\", \"loop\", \"isFirstItemHighlighted\"),\n            actions: [\"highlightLastItem\"]\n          },\n          {\n            guard: \"hasHighlightedItem\",\n            actions: [\"highlightPreviousItem\"]\n          },\n          {\n            actions: [\"highlightLastItem\"]\n          }\n        ],\n        \"CONTENT.TYPEAHEAD\": {\n          actions: [\"highlightMatchingItem\"]\n        },\n        \"ITEM.POINTER_MOVE\": {\n          actions: [\"highlightItem\"]\n        },\n        \"ITEM.POINTER_LEAVE\": {\n          actions: [\"clearHighlightedItem\"]\n        },\n        \"POSITIONING.SET\": {\n          actions: [\"reposition\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      loop: ({ prop }) => !!prop(\"loopFocus\"),\n      multiple: ({ prop }) => !!prop(\"multiple\"),\n      hasSelectedItems: ({ computed }) => !!computed(\"hasSelectedItems\"),\n      hasHighlightedItem: ({ context }) => context.get(\"highlightedValue\") != null,\n      isFirstItemHighlighted: ({ context, prop }) => context.get(\"highlightedValue\") === prop(\"collection\").firstValue,\n      isLastItemHighlighted: ({ context, prop }) => context.get(\"highlightedValue\") === prop(\"collection\").lastValue,\n      closeOnSelect: ({ prop, event }) => !!(event.closeOnSelect ?? prop(\"closeOnSelect\")),\n      restoreFocus: ({ event }) => restoreFocusFn(event),\n      // guard assertions (for controlled mode)\n      isOpenControlled: ({ prop }) => prop(\"open\") !== void 0,\n      isTriggerClickEvent: ({ event }) => event.previousEvent?.type === \"TRIGGER.CLICK\",\n      isTriggerEnterEvent: ({ event }) => event.previousEvent?.type === \"TRIGGER.ENTER\",\n      isTriggerArrowUpEvent: ({ event }) => event.previousEvent?.type === \"TRIGGER.ARROW_UP\",\n      isTriggerArrowDownEvent: ({ event }) => event.previousEvent?.type === \"TRIGGER.ARROW_DOWN\"\n    },\n    effects: {\n      trackFocusVisible({ scope }) {\n        return trackFocusVisible({ root: scope.getRootNode?.() });\n      },\n      trackFormControlState({ context, scope }) {\n        return trackFormControl(dom.getHiddenSelectEl(scope), {\n          onFieldsetDisabledChange(disabled) {\n            context.set(\"fieldsetDisabled\", disabled);\n          },\n          onFormReset() {\n            const value = context.initial(\"value\");\n            context.set(\"value\", value);\n          }\n        });\n      },\n      trackDismissableElement({ scope, send, prop }) {\n        const contentEl = () => dom.getContentEl(scope);\n        let restoreFocus = true;\n        return trackDismissableElement(contentEl, {\n          type: \"listbox\",\n          defer: true,\n          exclude: [dom.getTriggerEl(scope), dom.getClearTriggerEl(scope)],\n          onFocusOutside: prop(\"onFocusOutside\"),\n          onPointerDownOutside: prop(\"onPointerDownOutside\"),\n          onInteractOutside(event) {\n            prop(\"onInteractOutside\")?.(event);\n            restoreFocus = !(event.detail.focusable || event.detail.contextmenu);\n          },\n          onDismiss() {\n            send({ type: \"CLOSE\", src: \"interact-outside\", restoreFocus });\n          }\n        });\n      },\n      computePlacement({ context, prop, scope }) {\n        const positioning = prop(\"positioning\");\n        context.set(\"currentPlacement\", positioning.placement);\n        const triggerEl = () => dom.getTriggerEl(scope);\n        const positionerEl = () => dom.getPositionerEl(scope);\n        return getPlacement(triggerEl, positionerEl, {\n          defer: true,\n          ...positioning,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      scrollToHighlightedItem({ context, prop, scope }) {\n        const exec = (immediate) => {\n          const highlightedValue = context.get(\"highlightedValue\");\n          if (highlightedValue == null) return;\n          const modality = getInteractionModality();\n          if (modality === \"pointer\") return;\n          const contentEl2 = dom.getContentEl(scope);\n          const scrollToIndexFn = prop(\"scrollToIndexFn\");\n          if (scrollToIndexFn) {\n            const highlightedIndex = prop(\"collection\").indexOf(highlightedValue);\n            scrollToIndexFn?.({\n              index: highlightedIndex,\n              immediate,\n              getElement: () => dom.getItemEl(scope, highlightedValue)\n            });\n            return;\n          }\n          const itemEl = dom.getItemEl(scope, highlightedValue);\n          scrollIntoView(itemEl, { rootEl: contentEl2, block: \"nearest\" });\n        };\n        raf(() => {\n          setInteractionModality(\"virtual\");\n          exec(true);\n        });\n        const contentEl = () => dom.getContentEl(scope);\n        return observeAttributes(contentEl, {\n          defer: true,\n          attributes: [\"data-activedescendant\"],\n          callback() {\n            exec(false);\n          }\n        });\n      }\n    },\n    actions: {\n      reposition({ context, prop, scope, event }) {\n        const positionerEl = () => dom.getPositionerEl(scope);\n        getPlacement(dom.getTriggerEl(scope), positionerEl, {\n          ...prop(\"positioning\"),\n          ...event.options,\n          defer: true,\n          listeners: false,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      toggleVisibility({ send, prop, event }) {\n        send({ type: prop(\"open\") ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\", previousEvent: event });\n      },\n      highlightPreviousItem({ context, prop }) {\n        const highlightedValue = context.get(\"highlightedValue\");\n        if (highlightedValue == null) return;\n        const value = prop(\"collection\").getPreviousValue(highlightedValue, 1, prop(\"loopFocus\"));\n        if (value == null) return;\n        context.set(\"highlightedValue\", value);\n      },\n      highlightNextItem({ context, prop }) {\n        const highlightedValue = context.get(\"highlightedValue\");\n        if (highlightedValue == null) return;\n        const value = prop(\"collection\").getNextValue(highlightedValue, 1, prop(\"loopFocus\"));\n        if (value == null) return;\n        context.set(\"highlightedValue\", value);\n      },\n      highlightFirstItem({ context, prop }) {\n        const value = prop(\"collection\").firstValue;\n        context.set(\"highlightedValue\", value);\n      },\n      highlightLastItem({ context, prop }) {\n        const value = prop(\"collection\").lastValue;\n        context.set(\"highlightedValue\", value);\n      },\n      setInitialFocus({ scope }) {\n        raf(() => {\n          const element = getInitialFocus({\n            root: dom.getContentEl(scope)\n          });\n          element?.focus({ preventScroll: true });\n        });\n      },\n      focusTriggerEl({ event, scope }) {\n        if (!restoreFocusFn(event)) return;\n        raf(() => {\n          const element = dom.getTriggerEl(scope);\n          element?.focus({ preventScroll: true });\n        });\n      },\n      selectHighlightedItem({ context, prop, event }) {\n        let value = event.value ?? context.get(\"highlightedValue\");\n        if (value == null || !prop(\"collection\").has(value)) return;\n        prop(\"onSelect\")?.({ value });\n        const nullable = prop(\"deselectable\") && !prop(\"multiple\") && context.get(\"value\").includes(value);\n        value = nullable ? null : value;\n        context.set(\"value\", (prev) => {\n          if (value == null) return [];\n          if (prop(\"multiple\")) return addOrRemove(prev, value);\n          return [value];\n        });\n      },\n      highlightComputedFirstItem({ context, prop, computed }) {\n        const collection2 = prop(\"collection\");\n        const value = computed(\"hasSelectedItems\") ? collection2.sort(context.get(\"value\"))[0] : collection2.firstValue;\n        context.set(\"highlightedValue\", value);\n      },\n      highlightComputedLastItem({ context, prop, computed }) {\n        const collection2 = prop(\"collection\");\n        const value = computed(\"hasSelectedItems\") ? collection2.sort(context.get(\"value\"))[0] : collection2.lastValue;\n        context.set(\"highlightedValue\", value);\n      },\n      highlightFirstSelectedItem({ context, prop, computed }) {\n        if (!computed(\"hasSelectedItems\")) return;\n        const value = prop(\"collection\").sort(context.get(\"value\"))[0];\n        context.set(\"highlightedValue\", value);\n      },\n      highlightItem({ context, event }) {\n        context.set(\"highlightedValue\", event.value);\n      },\n      highlightMatchingItem({ context, prop, event, refs }) {\n        const value = prop(\"collection\").search(event.key, {\n          state: refs.get(\"typeahead\"),\n          currentValue: context.get(\"highlightedValue\")\n        });\n        if (value == null) return;\n        context.set(\"highlightedValue\", value);\n      },\n      setHighlightedItem({ context, event }) {\n        context.set(\"highlightedValue\", event.value);\n      },\n      clearHighlightedItem({ context }) {\n        context.set(\"highlightedValue\", null);\n      },\n      selectItem({ context, prop, event }) {\n        prop(\"onSelect\")?.({ value: event.value });\n        const nullable = prop(\"deselectable\") && !prop(\"multiple\") && context.get(\"value\").includes(event.value);\n        const value = nullable ? null : event.value;\n        context.set(\"value\", (prev) => {\n          if (value == null) return [];\n          if (prop(\"multiple\")) return addOrRemove(prev, value);\n          return [value];\n        });\n      },\n      clearItem({ context, event }) {\n        context.set(\"value\", (prev) => prev.filter((v) => v !== event.value));\n      },\n      setSelectedItems({ context, event }) {\n        context.set(\"value\", event.value);\n      },\n      clearSelectedItems({ context }) {\n        context.set(\"value\", []);\n      },\n      selectPreviousItem({ context, prop }) {\n        const [firstItem] = context.get(\"value\");\n        const value = prop(\"collection\").getPreviousValue(firstItem);\n        if (value) context.set(\"value\", [value]);\n      },\n      selectNextItem({ context, prop }) {\n        const [firstItem] = context.get(\"value\");\n        const value = prop(\"collection\").getNextValue(firstItem);\n        if (value) context.set(\"value\", [value]);\n      },\n      selectFirstItem({ context, prop }) {\n        const value = prop(\"collection\").firstValue;\n        if (value) context.set(\"value\", [value]);\n      },\n      selectLastItem({ context, prop }) {\n        const value = prop(\"collection\").lastValue;\n        if (value) context.set(\"value\", [value]);\n      },\n      selectMatchingItem({ context, prop, event, refs }) {\n        const value = prop(\"collection\").search(event.key, {\n          state: refs.get(\"typeahead\"),\n          currentValue: context.get(\"value\")[0]\n        });\n        if (value == null) return;\n        context.set(\"value\", [value]);\n      },\n      scrollContentToTop({ prop, scope }) {\n        if (prop(\"scrollToIndexFn\")) {\n          const firstValue = prop(\"collection\").firstValue;\n          prop(\"scrollToIndexFn\")?.({\n            index: 0,\n            immediate: true,\n            getElement: () => dom.getItemEl(scope, firstValue)\n          });\n        } else {\n          dom.getContentEl(scope)?.scrollTo(0, 0);\n        }\n      },\n      invokeOnOpen({ prop, context }) {\n        prop(\"onOpenChange\")?.({ open: true, value: context.get(\"value\") });\n      },\n      invokeOnClose({ prop, context }) {\n        prop(\"onOpenChange\")?.({ open: false, value: context.get(\"value\") });\n      },\n      syncSelectElement({ context, prop, scope }) {\n        const selectEl = dom.getHiddenSelectEl(scope);\n        if (!selectEl) return;\n        if (context.get(\"value\").length === 0 && !prop(\"multiple\")) {\n          selectEl.selectedIndex = -1;\n          return;\n        }\n        for (const option of selectEl.options) {\n          option.selected = context.get(\"value\").includes(option.value);\n        }\n      },\n      syncCollection({ context, prop }) {\n        const collection2 = prop(\"collection\");\n        const highlightedItem = collection2.find(context.get(\"highlightedValue\"));\n        if (highlightedItem) context.set(\"highlightedItem\", highlightedItem);\n        const next = deriveSelectionState({\n          values: context.get(\"value\"),\n          collection: collection2,\n          selectedItemMap: context.get(\"selectedItemMap\")\n        });\n        context.set(\"selectedItemMap\", next.nextSelectedItemMap);\n      },\n      syncSelectedItems({ context, prop }) {\n        const next = deriveSelectionState({\n          values: context.get(\"value\"),\n          collection: prop(\"collection\"),\n          selectedItemMap: context.get(\"selectedItemMap\")\n        });\n        context.set(\"selectedItemMap\", next.nextSelectedItemMap);\n      },\n      syncHighlightedItem({ context, prop }) {\n        const collection2 = prop(\"collection\");\n        const highlightedValue = context.get(\"highlightedValue\");\n        const highlightedItem = highlightedValue ? collection2.find(highlightedValue) : null;\n        context.set(\"highlightedItem\", highlightedItem);\n      },\n      dispatchChangeEvent({ scope }) {\n        queueMicrotask(() => {\n          const node = dom.getHiddenSelectEl(scope);\n          if (!node) return;\n          const win = scope.getWin();\n          const evt = new win.Event(\"change\", { bubbles: true, composed: true });\n          node.dispatchEvent(markAsInternalChangeEvent(evt));\n        });\n      }\n    }\n  }\n});\nfunction restoreFocusFn(event) {\n  const v = event.restoreFocus ?? event.previousEvent?.restoreFocus;\n  return v == null || !!v;\n}\nexport {\n  machine\n};\n","// src/tooltip.anatomy.ts\nimport { createAnatomy } from \"@zag-js/anatomy\";\nvar anatomy = createAnatomy(\"tooltip\").parts(\"trigger\", \"arrow\", \"arrowTip\", \"positioner\", \"content\");\nvar parts = anatomy.build();\nexport {\n  anatomy,\n  parts\n};\n","// src/tooltip.connect.ts\nimport { dataAttr, getByOwnerId, isLeftClick } from \"@zag-js/dom-query\";\nimport { isFocusVisible } from \"@zag-js/focus-visible\";\nimport { getPlacementSide, getPlacementStyles } from \"@zag-js/popper\";\nimport { parts } from \"./tooltip.anatomy.mjs\";\nimport * as dom from \"./tooltip.dom.mjs\";\nimport { store } from \"./tooltip.store.mjs\";\nfunction connect(service, normalize) {\n  const { state, context, send, scope, prop, event: _event } = service;\n  const id = prop(\"id\");\n  const hasAriaLabel = !!prop(\"aria-label\");\n  const open = state.matches(\"open\", \"closing\");\n  const triggerValue = context.get(\"triggerValue\");\n  const currentPlacement = context.get(\"currentPlacement\");\n  const currentPlacementSide = currentPlacement ? getPlacementSide(currentPlacement) : void 0;\n  const contentId = dom.getContentId(scope);\n  const disabled = prop(\"disabled\");\n  const popperStyles = getPlacementStyles({\n    ...prop(\"positioning\"),\n    placement: currentPlacement\n  });\n  return {\n    open,\n    setOpen(nextOpen) {\n      send({ type: nextOpen ? \"open\" : \"close\", replaces: \"open\" });\n    },\n    triggerValue,\n    setTriggerValue(value) {\n      send({ type: \"triggerValue.set\", value: value ?? void 0 });\n    },\n    reposition(options = {}) {\n      send({ type: \"positioning.set\", options });\n    },\n    getTriggerProps(props = {}) {\n      const { value } = props;\n      const current = value == null ? false : triggerValue === value;\n      const triggerId = dom.getTriggerId(scope, value);\n      return normalize.button({\n        ...parts.trigger.attrs,\n        id: triggerId,\n        \"data-ownedby\": scope.id,\n        \"data-value\": value,\n        \"data-current\": dataAttr(current),\n        dir: prop(\"dir\"),\n        \"data-expanded\": dataAttr(open),\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"aria-describedby\": open ? contentId : void 0,\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (disabled) return;\n          if (!prop(\"closeOnClick\")) return;\n          const shouldSwitch = open && value != null && !current;\n          send({ type: shouldSwitch ? \"triggerValue.set\" : \"close\", src: \"trigger.click\", value, triggerId });\n        },\n        onFocus(event) {\n          if (event.defaultPrevented) return;\n          if (disabled) return;\n          if (!isFocusVisible()) return;\n          const shouldSwitch = open && value != null && !current;\n          send({ type: shouldSwitch ? \"triggerValue.set\" : \"open\", src: \"trigger.focus\", value, triggerId });\n        },\n        onBlur(event) {\n          if (event.defaultPrevented) return;\n          if (disabled) return;\n          if (id !== store.get(\"id\")) return;\n          const activeEl = event.relatedTarget ?? scope.getDoc().activeElement;\n          const focusedAnotherTrigger = activeEl?.closest(getByOwnerId(scope.id)) != null;\n          if (!focusedAnotherTrigger) {\n            send({ type: \"close\", src: \"trigger.blur\", value, triggerId });\n          }\n        },\n        onPointerDown(event) {\n          if (event.defaultPrevented) return;\n          if (disabled) return;\n          if (!isLeftClick(event)) return;\n          if (!prop(\"closeOnPointerDown\")) return;\n          if (id === store.get(\"id\")) {\n            send({ type: \"close\", src: \"trigger.pointerdown\", value, triggerId });\n          }\n        },\n        onPointerMove(event) {\n          if (event.defaultPrevented) return;\n          if (disabled) return;\n          if (event.pointerType === \"touch\") return;\n          const shouldSwitch = open && value != null && !current;\n          send({ type: shouldSwitch ? \"triggerValue.set\" : \"pointer.move\", value, triggerId });\n        },\n        onPointerOver(event) {\n          if (event.defaultPrevented) return;\n          if (disabled) return;\n          if (event.pointerType === \"touch\") return;\n          send({ type: \"pointer.move\", value, triggerId });\n        },\n        onPointerLeave() {\n          if (disabled) return;\n          send({ type: \"pointer.leave\" });\n        },\n        onPointerCancel() {\n          if (disabled) return;\n          send({ type: \"pointer.leave\" });\n        }\n      });\n    },\n    getArrowProps() {\n      return normalize.element({\n        id: dom.getArrowId(scope),\n        ...parts.arrow.attrs,\n        dir: prop(\"dir\"),\n        style: popperStyles.arrow\n      });\n    },\n    getArrowTipProps() {\n      return normalize.element({\n        ...parts.arrowTip.attrs,\n        dir: prop(\"dir\"),\n        style: popperStyles.arrowTip\n      });\n    },\n    getPositionerProps() {\n      return normalize.element({\n        id: dom.getPositionerId(scope),\n        ...parts.positioner.attrs,\n        dir: prop(\"dir\"),\n        style: popperStyles.floating\n      });\n    },\n    getContentProps() {\n      const isCurrentTooltip = store.get(\"id\") === id;\n      const isPrevTooltip = store.get(\"prevId\") === id;\n      const instant = store.get(\"instant\") && (open && isCurrentTooltip || isPrevTooltip);\n      return normalize.element({\n        ...parts.content.attrs,\n        dir: prop(\"dir\"),\n        hidden: !open,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-instant\": dataAttr(instant),\n        role: hasAriaLabel ? void 0 : \"tooltip\",\n        id: hasAriaLabel ? void 0 : contentId,\n        \"data-placement\": currentPlacement,\n        \"data-side\": currentPlacementSide,\n        onPointerEnter() {\n          send({ type: \"content.pointer.move\" });\n        },\n        onPointerLeave() {\n          send({ type: \"content.pointer.leave\" });\n        },\n        style: {\n          pointerEvents: prop(\"interactive\") ? \"auto\" : \"none\"\n        }\n      });\n    }\n  };\n}\nexport {\n  connect\n};\n","// src/tooltip.dom.ts\nimport { getByOwnerId, queryAll } from \"@zag-js/dom-query\";\nimport { isFunction } from \"@zag-js/utils\";\nvar getTriggerId = (scope, value) => {\n  const customId = scope.ids?.trigger;\n  if (customId != null) return isFunction(customId) ? customId(value) : customId;\n  return value ? `tooltip:${scope.id}:trigger:${value}` : `tooltip:${scope.id}:trigger`;\n};\nvar getContentId = (scope) => scope.ids?.content ?? `tooltip:${scope.id}:content`;\nvar getArrowId = (scope) => scope.ids?.arrow ?? `tooltip:${scope.id}:arrow`;\nvar getPositionerId = (scope) => scope.ids?.positioner ?? `tooltip:${scope.id}:popper`;\nvar getTriggerEl = (scope) => scope.getById(getTriggerId(scope));\nvar getContentEl = (scope) => scope.getById(getContentId(scope));\nvar getPositionerEl = (scope) => scope.getById(getPositionerId(scope));\nvar getArrowEl = (scope) => scope.getById(getArrowId(scope));\nvar getTriggerEls = (scope) => queryAll(scope.getRootNode(), `[data-scope=\"tooltip\"][data-part=\"trigger\"]${getByOwnerId(scope.id)}`);\nvar getActiveTriggerEl = (scope, value) => {\n  if (value == null) {\n    return getTriggerEl(scope) ?? getTriggerEls(scope)[0];\n  }\n  return scope.getById(getTriggerId(scope, value));\n};\nexport {\n  getActiveTriggerEl,\n  getArrowEl,\n  getArrowId,\n  getContentEl,\n  getContentId,\n  getPositionerEl,\n  getPositionerId,\n  getTriggerEl,\n  getTriggerEls,\n  getTriggerId\n};\n","// src/tooltip.machine.ts\nimport { createGuards, createMachine } from \"@zag-js/core\";\nimport { addDomEvent, getOverflowAncestors, isComposingEvent } from \"@zag-js/dom-query\";\nimport { trackFocusVisible } from \"@zag-js/focus-visible\";\nimport { getPlacement } from \"@zag-js/popper\";\nimport { ensureProps } from \"@zag-js/utils\";\nimport * as dom from \"./tooltip.dom.mjs\";\nimport { store } from \"./tooltip.store.mjs\";\nvar { and, not } = createGuards();\nvar machine = createMachine({\n  initialState: ({ prop }) => {\n    const open = prop(\"open\") || prop(\"defaultOpen\");\n    return open ? \"open\" : \"closed\";\n  },\n  props({ props }) {\n    ensureProps(props, [\"id\"]);\n    const closeOnClick = props.closeOnClick ?? true;\n    const closeOnPointerDown = props.closeOnPointerDown ?? closeOnClick;\n    return {\n      openDelay: 400,\n      closeDelay: 150,\n      closeOnEscape: true,\n      interactive: false,\n      closeOnScroll: true,\n      disabled: false,\n      ...props,\n      closeOnPointerDown,\n      closeOnClick,\n      positioning: {\n        placement: \"bottom\",\n        ...props.positioning\n      }\n    };\n  },\n  effects: [\"trackFocusVisible\", \"trackStore\"],\n  context: ({ bindable, prop, scope }) => ({\n    currentPlacement: bindable(() => ({ defaultValue: void 0 })),\n    hasPointerMoveOpened: bindable(() => ({ defaultValue: null })),\n    triggerValue: bindable(() => ({\n      defaultValue: prop(\"defaultTriggerValue\") ?? null,\n      value: prop(\"triggerValue\"),\n      onChange(value) {\n        const onTriggerValueChange = prop(\"onTriggerValueChange\");\n        if (!onTriggerValueChange) return;\n        const triggerElement = dom.getActiveTriggerEl(scope, value);\n        onTriggerValueChange({ value, triggerElement });\n      }\n    }))\n  }),\n  watch({ track, action, prop }) {\n    track([() => prop(\"disabled\")], () => {\n      action([\"closeIfDisabled\"]);\n    });\n    track([() => prop(\"open\")], () => {\n      action([\"toggleVisibility\"]);\n    });\n    track([() => prop(\"triggerValue\")], () => {\n      action([\"repositionImmediate\"]);\n    });\n  },\n  on: {\n    \"triggerValue.set\": {\n      actions: [\"setTriggerValue\", \"repositionImmediate\"]\n    }\n  },\n  states: {\n    closed: {\n      entry: [\"clearGlobalId\"],\n      on: {\n        \"controlled.open\": {\n          target: \"open\"\n        },\n        open: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"setTriggerValue\", \"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setTriggerValue\", \"invokeOnOpen\"]\n          }\n        ],\n        \"pointer.leave\": {\n          actions: [\"clearPointerMoveOpened\"]\n        },\n        \"pointer.move\": [\n          {\n            guard: and(\"noVisibleTooltip\", not(\"hasPointerMoveOpened\")),\n            target: \"opening\",\n            actions: [\"setTriggerValue\"]\n          },\n          {\n            guard: not(\"hasPointerMoveOpened\"),\n            target: \"open\",\n            actions: [\"setPointerMoveOpened\", \"invokeOnOpen\", \"setTriggerValue\"]\n          }\n        ]\n      }\n    },\n    opening: {\n      effects: [\"trackScroll\", \"trackPointerlockChange\", \"waitForOpenDelay\"],\n      on: {\n        \"after.openDelay\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"setPointerMoveOpened\", \"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setPointerMoveOpened\", \"invokeOnOpen\"]\n          }\n        ],\n        \"controlled.open\": {\n          target: \"open\"\n        },\n        \"controlled.close\": {\n          target: \"closed\"\n        },\n        open: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"setTriggerValue\", \"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setTriggerValue\", \"invokeOnOpen\"]\n          }\n        ],\n        \"pointer.leave\": [\n          {\n            guard: \"isOpenControlled\",\n            // We trigger toggleVisibility manually since the `ctx.open` has not changed yet (at this point)\n            actions: [\"clearPointerMoveOpened\", \"invokeOnClose\", \"toggleVisibility\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"clearPointerMoveOpened\", \"invokeOnClose\"]\n          }\n        ],\n        close: [\n          {\n            guard: \"isOpenControlled\",\n            // We trigger toggleVisibility manually since the `ctx.open` has not changed yet (at this point)\n            actions: [\"invokeOnClose\", \"toggleVisibility\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"invokeOnClose\"]\n          }\n        ]\n      }\n    },\n    open: {\n      effects: [\"trackEscapeKey\", \"trackScroll\", \"trackPointerlockChange\", \"trackPositioning\"],\n      entry: [\"setGlobalId\"],\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        \"pointer.leave\": [\n          {\n            guard: \"isVisible\",\n            target: \"closing\",\n            actions: [\"clearPointerMoveOpened\"]\n          },\n          // == group ==\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"clearPointerMoveOpened\", \"invokeOnClose\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"clearPointerMoveOpened\", \"invokeOnClose\"]\n          }\n        ],\n        \"content.pointer.leave\": {\n          guard: \"isInteractive\",\n          target: \"closing\"\n        },\n        \"positioning.set\": {\n          actions: [\"reposition\"]\n        },\n        \"triggerValue.set\": {\n          // Transition to closing (which cleans up trackPositioning) then immediately back to open\n          // This re-creates the positioning effect with the new trigger\n          target: \"closing\",\n          actions: [\"setTriggerValue\", \"immediateReopen\"]\n        }\n      }\n    },\n    closing: {\n      effects: [\"trackPositioning\", \"waitForCloseDelay\"],\n      on: {\n        \"after.closeDelay\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        \"controlled.close\": {\n          target: \"closed\"\n        },\n        \"controlled.open\": {\n          target: \"open\"\n        },\n        close: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"closed\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        \"pointer.move\": [\n          {\n            guard: \"isOpenControlled\",\n            // We trigger toggleVisibility manually since the `ctx.open` has not changed yet (at this point)\n            actions: [\"setPointerMoveOpened\", \"setTriggerValue\", \"invokeOnOpen\", \"toggleVisibility\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setPointerMoveOpened\", \"setTriggerValue\", \"invokeOnOpen\"]\n          }\n        ],\n        \"triggerValue.set\": {\n          target: \"open\",\n          actions: [\"setTriggerValue\", \"repositionImmediate\"]\n        },\n        reopen: {\n          target: \"open\"\n        },\n        \"content.pointer.move\": {\n          guard: \"isInteractive\",\n          target: \"open\"\n        },\n        \"positioning.set\": {\n          actions: [\"reposition\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      noVisibleTooltip: () => store.get(\"id\") === null,\n      isVisible: ({ prop }) => prop(\"id\") === store.get(\"id\"),\n      isInteractive: ({ prop }) => !!prop(\"interactive\"),\n      hasPointerMoveOpened: ({ context }) => !!context.get(\"hasPointerMoveOpened\"),\n      isOpenControlled: ({ prop }) => prop(\"open\") !== void 0\n    },\n    actions: {\n      setGlobalId: ({ prop }) => {\n        const prevId = store.get(\"id\");\n        const isInstant = prevId !== null && prevId !== prop(\"id\");\n        store.update({ id: prop(\"id\"), prevId: isInstant ? prevId : null, instant: isInstant });\n      },\n      clearGlobalId: ({ prop }) => {\n        if (prop(\"id\") === store.get(\"id\")) {\n          store.update({ id: null, prevId: null, instant: false });\n        }\n      },\n      invokeOnOpen: ({ prop }) => {\n        prop(\"onOpenChange\")?.({ open: true });\n      },\n      invokeOnClose: ({ prop }) => {\n        prop(\"onOpenChange\")?.({ open: false });\n      },\n      closeIfDisabled: ({ prop, send }) => {\n        if (!prop(\"disabled\")) return;\n        send({ type: \"close\", src: \"disabled.change\" });\n      },\n      reposition: ({ context, event, prop, scope }) => {\n        if (event.type !== \"positioning.set\") return;\n        const getPositionerEl2 = () => dom.getPositionerEl(scope);\n        const getTriggerEl = () => dom.getActiveTriggerEl(scope, context.get(\"triggerValue\"));\n        getPlacement(getTriggerEl, getPositionerEl2, {\n          ...prop(\"positioning\"),\n          ...event.options,\n          listeners: false,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      repositionImmediate: ({ context, event, prop, scope }) => {\n        const triggerValue = event.value ?? context.get(\"triggerValue\");\n        const getPositionerEl2 = () => dom.getPositionerEl(scope);\n        const getTriggerEl = () => dom.getActiveTriggerEl(scope, triggerValue);\n        return getPlacement(getTriggerEl, getPositionerEl2, {\n          ...prop(\"positioning\"),\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      toggleVisibility: ({ prop, event, send }) => {\n        queueMicrotask(() => {\n          send({\n            type: prop(\"open\") ? \"controlled.open\" : \"controlled.close\",\n            previousEvent: event\n          });\n        });\n      },\n      setPointerMoveOpened: ({ context, event }) => {\n        const triggerId = event.triggerId ?? event.previousEvent?.triggerId;\n        context.set(\"hasPointerMoveOpened\", triggerId ?? null);\n      },\n      clearPointerMoveOpened: ({ context }) => {\n        context.set(\"hasPointerMoveOpened\", null);\n      },\n      setTriggerValue: ({ context, event }) => {\n        if (event.value === void 0) return;\n        context.set(\"triggerValue\", event.value);\n      },\n      immediateReopen: ({ send }) => {\n        queueMicrotask(() => {\n          send({ type: \"reopen\" });\n        });\n      }\n    },\n    effects: {\n      trackFocusVisible: ({ scope }) => {\n        return trackFocusVisible({ root: scope.getRootNode?.() });\n      },\n      trackPositioning: ({ context, prop, scope }) => {\n        if (!context.get(\"currentPlacement\")) {\n          context.set(\"currentPlacement\", prop(\"positioning\").placement);\n        }\n        const getPositionerEl2 = () => dom.getPositionerEl(scope);\n        const getTriggerEl = () => dom.getActiveTriggerEl(scope, context.get(\"triggerValue\"));\n        return getPlacement(getTriggerEl, getPositionerEl2, {\n          ...prop(\"positioning\"),\n          defer: true,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      trackPointerlockChange: ({ send, scope }) => {\n        const doc = scope.getDoc();\n        const onChange = () => send({ type: \"close\", src: \"pointerlock:change\" });\n        return addDomEvent(doc, \"pointerlockchange\", onChange, false);\n      },\n      trackScroll: ({ send, prop, scope, context }) => {\n        if (!prop(\"closeOnScroll\")) return;\n        const triggerValue = context.get(\"triggerValue\");\n        const triggerEl = dom.getActiveTriggerEl(scope, triggerValue);\n        if (!triggerEl) return;\n        const overflowParents = getOverflowAncestors(triggerEl);\n        const cleanups = overflowParents.map((overflowParent) => {\n          const onScroll = () => {\n            send({ type: \"close\", src: \"scroll\" });\n          };\n          return addDomEvent(overflowParent, \"scroll\", onScroll, {\n            passive: true,\n            capture: true\n          });\n        });\n        return () => {\n          cleanups.forEach((fn) => fn?.());\n        };\n      },\n      trackStore: ({ prop, send }) => {\n        let cleanup;\n        queueMicrotask(() => {\n          cleanup = store.subscribe(() => {\n            if (store.get(\"id\") !== prop(\"id\")) {\n              send({ type: \"close\", src: \"id.change\" });\n            }\n          });\n        });\n        return () => cleanup?.();\n      },\n      trackEscapeKey: ({ send, prop }) => {\n        if (!prop(\"closeOnEscape\")) return;\n        const onKeyDown = (event) => {\n          if (isComposingEvent(event)) return;\n          if (event.key !== \"Escape\") return;\n          event.stopPropagation();\n          send({ type: \"close\", src: \"keydown.escape\" });\n        };\n        return addDomEvent(document, \"keydown\", onKeyDown, true);\n      },\n      waitForOpenDelay: ({ send, prop, event }) => {\n        const id = setTimeout(() => {\n          send({ type: \"after.openDelay\", previousEvent: event });\n        }, prop(\"openDelay\"));\n        return () => clearTimeout(id);\n      },\n      waitForCloseDelay: ({ send, prop, event }) => {\n        const id = setTimeout(() => {\n          send({ type: \"after.closeDelay\", previousEvent: event });\n        }, prop(\"closeDelay\"));\n        return () => clearTimeout(id);\n      }\n    }\n  }\n});\nexport {\n  machine\n};\n","// src/tooltip.store.ts\nimport { createStore } from \"@zag-js/utils\";\nvar store = createStore({\n  id: null,\n  prevId: null,\n  instant: false\n});\nexport {\n  store\n};\n","import \"./chunk-MXGZDBDQ.mjs\";\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}\nexport {\n  createStore\n};\n","import \"./chunk-MXGZDBDQ.mjs\";\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};\nexport {\n  isEqual\n};\n"],"names":["window","e","Object","globalThis","Proxy","Reflect","r","s","a","m","i","Set","g","parseFloat","o","Number","getComputedStyle","Math","l","Array","ResizeObserver","IntersectionObserver","clearTimeout","h","setTimeout","cancelAnimationFrame","requestAnimationFrame","n","Map","c","t","Boolean","Symbol","console","arguments","DOMRect","JSON","queueMicrotask","document"],"mappings":"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"}