{"version":3,"file":"floating-ui.dom-BPFA7CtJ.js","sources":["../../../node_modules/@slideslive/fuse-kit/dist/utils/element/animations_complete.js","../../../node_modules/@slideslive/fuse-kit/dist/utils/utilities/is_inside_dialog.js","../../../node_modules/@slideslive/fuse-kit/dist/utils/utilities/slide_in_animation_classes.js","../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs"],"sourcesContent":["function animationsComplete(target) {\n  return Promise.allSettled(target.getAnimations().map((animation) => animation.finished));\n}\nexport {\n  animationsComplete as default\n};\n","function isInsideDialog(target) {\n  let element = target;\n  while (element.parentNode && element.parentNode.tagName.toLowerCase() !== \"body\") {\n    if (element.parentNode.tagName.toLowerCase() === \"dialog\") {\n      return true;\n    }\n    element = element.parentNode;\n  }\n  return false;\n}\nexport {\n  isInsideDialog as default\n};\n","function slideInAnimationClasses(placement) {\n  if (!placement) return [];\n  const side = placement.split(\"-\")[0];\n  let animation = [];\n  switch (side) {\n    case \"top\":\n      animation = [\"[&:not(.hiding)]:fuse-animate-slide-up-0.5\", \"[&.hiding]:fuse-animate-reverse-slide-up-0.5\"];\n      break;\n    case \"bottom\":\n      animation = [\"[&:not(.hiding)]:fuse-animate-slide-down-0.5\", \"[&.hiding]:fuse-animate-reverse-slide-down-0.5\"];\n      break;\n    case \"left\":\n      animation = [\"[&:not(.hiding)]:fuse-animate-slide-left-0.5\", \"[&.hiding]:fuse-animate-reverse-slide-left-0.5\"];\n      break;\n    case \"right\":\n      animation = [\"[&:not(.hiding)]:fuse-animate-slide-right-0.5\", \"[&.hiding]:fuse-animate-reverse-slide-right-0.5\"];\n      break;\n    default:\n      break;\n  }\n  return animation;\n}\nexport {\n  slideInAnimationClasses as default\n};\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n  return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n  const lr = ['left', 'right'];\n  const rl = ['right', 'left'];\n  const tb = ['top', 'bottom'];\n  const bt = ['bottom', 'top'];\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rl : lr;\n      return isStart ? lr : rl;\n    case 'left':\n    case 'right':\n      return isStart ? tb : bt;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await 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          // 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        // 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      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await 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 detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\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 = ['left', 'top'].includes(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      } = 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 detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = ['top', 'left'].includes(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n  return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isTopLayer(element) {\n  return [':popover-open', ':modal'].some(selector => {\n    try {\n      return element.matches(selector);\n    } catch (e) {\n      return false;\n    }\n  });\n}\nfunction isContainingBlock(elementOrCss) {\n  const webkit = isWebKit();\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return ['transform', 'translate', 'scale', 'rotate', 'perspective'].some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n  return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, 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(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle(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, ignoreScrollbarX) {\n  if (ignoreScrollbarX === void 0) {\n    ignoreScrollbarX = false;\n  }\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n  // RTL <body> scrollbar.\n  getWindowScrollBarX(documentElement, htmlRect));\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle(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\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  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 = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle(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(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      // 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      offsets.x = getWindowScrollBarX(documentElement);\n    }\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(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle(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(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        // It's possible that even though the ratio is reported as 1, the\n        // element is not actually fully within the IntersectionObserver's root\n        // area anymore. This can happen under performance constraints. This may\n        // be a bug in the browser's IntersectionObserver implementation. To\n        // work around this, we compare the element's bounding rect now with\n        // what it was at the time we created the IntersectionObserver. If they\n        // are not equal then the element moved, so we refresh.\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n"],"names":["animationsComplete","target","animation","isInsideDialog","element","slideInAnimationClasses","placement","side","sides","min","max","round","floor","createCoords","v","oppositeSideMap","oppositeAlignmentMap","clamp","start","value","end","evaluate","param","getSide","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","length","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","getSideList","isStart","lr","rl","tb","bt","getOppositeAxisPlacements","flipAlignment","direction","list","expandPaddingObject","padding","getPaddingObject","rectToClientRect","rect","x","y","width","height","computeCoordsFromPlacement","_ref","reference","floating","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","computePosition","config","strategy","middleware","platform","validMiddleware","statefulPlacement","middlewareData","resetCount","i","name","fn","nextX","nextY","data","reset","detectOverflow","state","options","_await$platform$isEle","elements","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","offsetParent","offsetScale","elementClientRect","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","offset","shouldAddOffset","alignmentOffset","flip","_middlewareData$arrow","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","initialSideAxis","isBasePlacement","fallbackPlacements","hasFallbackAxisSideDirection","placements","overflow","overflows","overflowsData","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","resetPlacement","d","a","b","_overflowsData$filter2","currentSideAxis","acc","getSideOffsets","isAnySideFullyClipped","hide","offsets","getBoundingRect","minX","minY","maxX","maxY","getRectsByLine","sortedRects","groups","prevRect","inline","nativeClientRects","clientRects","fallback","getBoundingClientRect","firstRect","lastRect","isTop","top","bottom","left","right","isLeftSide","maxRight","minLeft","measureRects","resetRects","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","minSide","maxSide","limitedCoords","size","_state$middlewareData","_state$middlewareData2","apply","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","hasWindow","getNodeName","node","isNode","getWindow","_node$ownerDocument","getDocumentElement","isElement","isHTMLElement","isShadowRoot","isOverflowElement","overflowX","overflowY","display","getComputedStyle","isTableElement","isTopLayer","selector","isContainingBlock","elementOrCss","webkit","isWebKit","css","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","getNodeScroll","result","getNearestOverflowAncestor","parentNode","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","getCssDimensions","hasOffset","offsetWidth","offsetHeight","shouldFallback","unwrapElement","getScale","domElement","$","noOffsets","getVisualOffsets","shouldAddVisualOffsets","isFixed","floatingOffsetParent","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","getWindowScrollBarX","leftScroll","getHTMLOffset","documentElement","scroll","ignoreScrollbarX","htmlRect","convertOffsetParentRelativeRectToViewportRelativeRect","topLayer","isOffsetParentAnElement","offsetRect","htmlOffset","getClientRects","getDocumentRect","html","body","getViewportRect","visualViewport","visualViewportBased","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","getClippingElementAncestors","cache","cachedResult","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingRect","clippingAncestors","firstClippingAncestor","clippingRect","accRect","getDimensions","getRectRelativeToOffsetParent","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","getOffsetParent","svgOffsetParent","getElementRects","getOffsetParentFn","getDimensionsFn","floatingDimensions","isRTL","rectsAreEqual","observeMove","onMove","io","timeoutId","root","cleanup","_io","refresh","skip","threshold","elementRectForRootMargin","insetTop","insetRight","insetBottom","insetLeft","isFirstUpdate","handleObserve","entries","ratio","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","layoutShift","animationFrame","referenceEl","ancestors","cleanupIo","reobserveFrame","resizeObserver","firstEntry","_resizeObserver","frameId","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset$1","shift$1","flip$1","size$1","hide$1","arrow$1","inline$1","mergedOptions","platformWithCache","computePosition$1"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}