{"version":3,"file":"1112.129021c3.js","mappings":"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","sources":["webpack://@finviz/website/../node_modules/@ariakit/core/esm/__chunks/MFZZDIHG.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/3OMHZVJD.js","webpack://@finviz/website/../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","webpack://@finviz/website/../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack://@finviz/website/../node_modules/@floating-ui/utils/dom/dist/floating-ui.utils.dom.mjs","webpack://@finviz/website/../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/BYD75WXE.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/TE637IA7.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/TWDHCE7Y.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/E5E7G32I.js","webpack://@finviz/website/../node_modules/@ariakit/core/esm/tooltip/tooltip-store.js","webpack://@finviz/website/../node_modules/@ariakit/core/esm/__chunks/BRS7GKWU.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/WKII7I2E.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/XWCFCD3Q.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/FWINX72I.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/tooltip/tooltip-anchor.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/QFL5V2DO.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/UFM3D5TN.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/tooltip/tooltip-arrow.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/YMV43K4F.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/6YZEXKNV.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/tooltip/tooltip.js"],"sourcesContent":["\"use client\";\nimport {\n createDialogStore\n} from \"./5RJNXXU2.js\";\nimport {\n createStore,\n mergeStore,\n omit,\n throwOnConflictingProps\n} from \"./R676XYVY.js\";\nimport {\n defaultValue\n} from \"./22HHDS5F.js\";\nimport {\n __objRest,\n __spreadProps,\n __spreadValues\n} from \"./4R3V3JGP.js\";\n\n// src/popover/popover-store.ts\nfunction createPopoverStore(_a = {}) {\n var _b = _a, {\n popover: otherPopover\n } = _b, props = __objRest(_b, [\n \"popover\"\n ]);\n const store = mergeStore(\n props.store,\n omit(otherPopover, [\n \"arrowElement\",\n \"anchorElement\",\n \"contentElement\",\n \"popoverElement\",\n \"disclosureElement\"\n ])\n );\n throwOnConflictingProps(props, store);\n const syncState = store == null ? void 0 : store.getState();\n const dialog = createDialogStore(__spreadProps(__spreadValues({}, props), { store }));\n const placement = defaultValue(\n props.placement,\n syncState == null ? void 0 : syncState.placement,\n \"bottom\"\n );\n const initialState = __spreadProps(__spreadValues({}, dialog.getState()), {\n placement,\n currentPlacement: placement,\n anchorElement: defaultValue(syncState == null ? void 0 : syncState.anchorElement, null),\n popoverElement: defaultValue(syncState == null ? void 0 : syncState.popoverElement, null),\n arrowElement: defaultValue(syncState == null ? void 0 : syncState.arrowElement, null),\n rendered: Symbol(\"rendered\")\n });\n const popover = createStore(initialState, dialog, store);\n return __spreadProps(__spreadValues(__spreadValues({}, dialog), popover), {\n setAnchorElement: (element) => popover.setState(\"anchorElement\", element),\n setPopoverElement: (element) => popover.setState(\"popoverElement\", element),\n setArrowElement: (element) => popover.setState(\"arrowElement\", element),\n render: () => popover.setState(\"rendered\", Symbol(\"rendered\"))\n });\n}\n\nexport {\n createPopoverStore\n};\n","\"use client\";\nimport {\n HovercardContextProvider,\n HovercardScopedContextProvider\n} from \"./TWDHCE7Y.js\";\nimport {\n createStoreContext\n} from \"./5M6RSQEC.js\";\n\n// src/tooltip/tooltip-context.tsx\nvar ctx = createStoreContext(\n [HovercardContextProvider],\n [HovercardScopedContextProvider]\n);\nvar useTooltipContext = ctx.useContext;\nvar useTooltipScopedContext = ctx.useScopedContext;\nvar useTooltipProviderContext = ctx.useProviderContext;\nvar TooltipContextProvider = ctx.ContextProvider;\nvar TooltipScopedContextProvider = ctx.ScopedContextProvider;\n\nexport {\n useTooltipContext,\n useTooltipScopedContext,\n useTooltipProviderContext,\n TooltipContextProvider,\n TooltipScopedContextProvider\n};\n","const 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 return {\n ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\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 reference element when it is given a certain positioning strategy.\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 continue;\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 ...rects.floating,\n x,\n y\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 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 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 if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\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$map$so;\n const placement = (_overflowsData$map$so = overflowsData.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$map$so[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.\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: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\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 const {\n x,\n y\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: diffCoords\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 }\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 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 overflowAvailableHeight = height - overflow[heightSide];\n const overflowAvailableWidth = width - overflow[widthSide];\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (isYAxis) {\n const maximumClippingWidth = width - overflow.left - overflow.right;\n availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n } else {\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : 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 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 ? void 0 : (_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 return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (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 isContainingBlock(element) {\n const webkit = isWebKit();\n const css = getComputedStyle(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', '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 {\n currentNode = getParentNode(currentNode);\n }\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.pageXOffset,\n scrollTop: element.pageYOffset\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 return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n","import { rectToClientRect, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { arrow, autoPlacement, detectOverflow, flip, hide, inline, limitShift, offset, shift, size } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, 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 currentIFrame = win.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== win) {\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 currentIFrame = getWindow(currentIFrame).frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n if (offsetParent === documentElement) {\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 if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\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 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,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `
` 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 ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\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' ? 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 return getCssDimensions(element);\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 offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\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 return element.offsetParent;\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 window = getWindow(element);\n if (!isHTMLElement(element)) {\n return window;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}\n\nconst getElementRects = async function (_ref) {\n let {\n reference,\n floating,\n strategy\n } = _ref;\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(floating))\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\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 clearTimeout(timeoutId);\n io && 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 {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\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 timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 100);\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