{"version":3,"file":"2592.5c809268.js","mappings":"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","sources":["webpack://@finviz/website/../node_modules/@ariakit/core/esm/__chunks/BRS7GKWU.js","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/@ariakit/react-core/esm/__chunks/YMV43K4F.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/6YZEXKNV.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/E5E7G32I.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/FWINX72I.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/core/esm/tooltip/tooltip-store.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/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/tooltip/tooltip.js"],"sourcesContent":["\"use client\";\nimport {\n createPopoverStore\n} from \"./MFZZDIHG.js\";\nimport {\n createStore\n} from \"./R676XYVY.js\";\nimport {\n defaultValue\n} from \"./22HHDS5F.js\";\nimport {\n __spreadProps,\n __spreadValues\n} from \"./4R3V3JGP.js\";\n\n// src/hovercard/hovercard-store.ts\nfunction createHovercardStore(props = {}) {\n var _a;\n const syncState = (_a = props.store) == null ? void 0 : _a.getState();\n const popover = createPopoverStore(__spreadProps(__spreadValues({}, props), {\n placement: defaultValue(\n props.placement,\n syncState == null ? void 0 : syncState.placement,\n \"bottom\"\n )\n }));\n const timeout = defaultValue(props.timeout, syncState == null ? void 0 : syncState.timeout, 500);\n const initialState = __spreadProps(__spreadValues({}, popover.getState()), {\n timeout,\n showTimeout: defaultValue(props.showTimeout, syncState == null ? void 0 : syncState.showTimeout),\n hideTimeout: defaultValue(props.hideTimeout, syncState == null ? void 0 : syncState.hideTimeout),\n autoFocusOnShow: defaultValue(syncState == null ? void 0 : syncState.autoFocusOnShow, false)\n });\n const hovercard = createStore(initialState, popover, props.store);\n return __spreadProps(__spreadValues(__spreadValues({}, popover), hovercard), {\n setAutoFocusOnShow: (value) => hovercard.setState(\"autoFocusOnShow\", value)\n });\n}\n\nexport {\n createHovercardStore\n};\n","\"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","\"use client\";\n\n// src/hovercard/utils/polygon.ts\nfunction getEventPoint(event) {\n return [event.clientX, event.clientY];\n}\nfunction isPointInPolygon(point, polygon) {\n const [x, y] = point;\n let inside = false;\n const length = polygon.length;\n for (let l = length, i = 0, j = l - 1; i < l; j = i++) {\n const [xi, yi] = polygon[i];\n const [xj, yj] = polygon[j];\n const [, vy] = polygon[j === 0 ? l - 1 : j - 1] || [0, 0];\n const where = (yi - yj) * (x - xi) - (xi - xj) * (y - yi);\n if (yj < yi) {\n if (y >= yj && y < yi) {\n if (where === 0)\n return true;\n if (where > 0) {\n if (y === yj) {\n if (y > vy) {\n inside = !inside;\n }\n } else {\n inside = !inside;\n }\n }\n }\n } else if (yi < yj) {\n if (y > yi && y <= yj) {\n if (where === 0)\n return true;\n if (where < 0) {\n if (y === yj) {\n if (y < vy) {\n inside = !inside;\n }\n } else {\n inside = !inside;\n }\n }\n }\n } else if (y == yi && (x >= xj && x <= xi || x >= xi && x <= xj)) {\n return true;\n }\n }\n return inside;\n}\nfunction getEnterPointPlacement(enterPoint, rect) {\n const { top, right, bottom, left } = rect;\n const [x, y] = enterPoint;\n const placementX = x < left ? \"left\" : x > right ? \"right\" : null;\n const placementY = y < top ? \"top\" : y > bottom ? \"bottom\" : null;\n return [placementX, placementY];\n}\nfunction getElementPolygon(element, enterPoint) {\n const rect = element.getBoundingClientRect();\n const { top, right, bottom, left } = rect;\n const [x, y] = getEnterPointPlacement(enterPoint, rect);\n const polygon = [enterPoint];\n if (x) {\n if (y !== \"top\") {\n polygon.push([x === \"left\" ? left : right, top]);\n }\n polygon.push([x === \"left\" ? right : left, top]);\n polygon.push([x === \"left\" ? right : left, bottom]);\n if (y !== \"bottom\") {\n polygon.push([x === \"left\" ? left : right, bottom]);\n }\n } else if (y === \"top\") {\n polygon.push([left, top]);\n polygon.push([left, bottom]);\n polygon.push([right, bottom]);\n polygon.push([right, top]);\n } else {\n polygon.push([left, bottom]);\n polygon.push([left, top]);\n polygon.push([right, top]);\n polygon.push([right, bottom]);\n }\n return polygon;\n}\n\nexport {\n getEventPoint,\n isPointInPolygon,\n getElementPolygon\n};\n","\"use client\";\nimport {\n getElementPolygon,\n getEventPoint,\n isPointInPolygon\n} from \"./YMV43K4F.js\";\nimport {\n usePopover\n} from \"./BYD75WXE.js\";\nimport {\n createDialogComponent\n} from \"./KXSO5EFT.js\";\nimport {\n HovercardScopedContextProvider,\n useHovercardProviderContext\n} from \"./TWDHCE7Y.js\";\nimport {\n createElement,\n createHook,\n forwardRef\n} from \"./5M6RSQEC.js\";\nimport {\n useBooleanEvent,\n useEvent,\n useLiveRef,\n useMergeRefs,\n usePortalRef,\n useSafeLayoutEffect,\n useWrapElement\n} from \"./6O5OEQGF.js\";\nimport {\n __objRest,\n __spreadProps,\n __spreadValues\n} from \"./4R3V3JGP.js\";\n\n// src/hovercard/hovercard.tsx\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState\n} from \"react\";\nimport { contains } from \"@ariakit/core/utils/dom\";\nimport { addGlobalEventListener } from \"@ariakit/core/utils/events\";\nimport { hasFocusWithin } from \"@ariakit/core/utils/focus\";\nimport {\n chain,\n invariant,\n isFalsyBooleanCallback\n} from \"@ariakit/core/utils/misc\";\nimport { sync } from \"@ariakit/core/utils/store\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TagName = \"div\";\nfunction isMovingOnHovercard(target, card, anchor, nested) {\n if (hasFocusWithin(card))\n return true;\n if (!target)\n return false;\n if (contains(card, target))\n return true;\n if (anchor && contains(anchor, target))\n return true;\n if (nested == null ? void 0 : nested.some((card2) => isMovingOnHovercard(target, card2, anchor))) {\n return true;\n }\n return false;\n}\nfunction useAutoFocusOnHide(_a) {\n var _b = _a, {\n store\n } = _b, props = __objRest(_b, [\n \"store\"\n ]);\n const [autoFocusOnHide, setAutoFocusOnHide] = useState(false);\n const mounted = store.useState(\"mounted\");\n useEffect(() => {\n if (!mounted) {\n setAutoFocusOnHide(false);\n }\n }, [mounted]);\n const onFocusProp = props.onFocus;\n const onFocus = useEvent((event) => {\n onFocusProp == null ? void 0 : onFocusProp(event);\n if (event.defaultPrevented)\n return;\n setAutoFocusOnHide(true);\n });\n const finalFocusRef = useRef(null);\n useEffect(() => {\n return sync(store, [\"anchorElement\"], (state) => {\n finalFocusRef.current = state.anchorElement;\n });\n }, []);\n props = __spreadProps(__spreadValues({\n autoFocusOnHide,\n finalFocus: finalFocusRef\n }, props), {\n onFocus\n });\n return props;\n}\nvar NestedHovercardContext = createContext(null);\nvar useHovercard = createHook(\n function useHovercard2(_a) {\n var _b = _a, {\n store,\n modal = false,\n portal = !!modal,\n hideOnEscape = true,\n hideOnHoverOutside = true,\n disablePointerEventsOnApproach = !!hideOnHoverOutside\n } = _b, props = __objRest(_b, [\n \"store\",\n \"modal\",\n \"portal\",\n \"hideOnEscape\",\n \"hideOnHoverOutside\",\n \"disablePointerEventsOnApproach\"\n ]);\n const context = useHovercardProviderContext();\n store = store || context;\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" && \"Hovercard must receive a `store` prop or be wrapped in a HovercardProvider component.\"\n );\n const ref = useRef(null);\n const [nestedHovercards, setNestedHovercards] = useState([]);\n const hideTimeoutRef = useRef(0);\n const enterPointRef = useRef(null);\n const { portalRef, domReady } = usePortalRef(portal, props.portalRef);\n const mayHideOnHoverOutside = !!hideOnHoverOutside;\n const hideOnHoverOutsideProp = useBooleanEvent(hideOnHoverOutside);\n const mayDisablePointerEvents = !!disablePointerEventsOnApproach;\n const disablePointerEventsProp = useBooleanEvent(\n disablePointerEventsOnApproach\n );\n const open = store.useState(\"open\");\n const mounted = store.useState(\"mounted\");\n useEffect(() => {\n if (!domReady)\n return;\n if (!mounted)\n return;\n if (!mayHideOnHoverOutside && !mayDisablePointerEvents)\n return;\n const element = ref.current;\n if (!element)\n return;\n const onMouseMove = (event) => {\n if (!store)\n return;\n const { anchorElement, hideTimeout, timeout } = store.getState();\n const enterPoint = enterPointRef.current;\n const [target] = event.composedPath();\n const anchor = anchorElement;\n if (isMovingOnHovercard(target, element, anchor, nestedHovercards)) {\n enterPointRef.current = target && anchor && contains(anchor, target) ? getEventPoint(event) : null;\n window.clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = 0;\n return;\n }\n if (hideTimeoutRef.current)\n return;\n if (enterPoint) {\n const currentPoint = getEventPoint(event);\n const polygon = getElementPolygon(element, enterPoint);\n if (isPointInPolygon(currentPoint, polygon)) {\n enterPointRef.current = currentPoint;\n if (!disablePointerEventsProp(event))\n return;\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n }\n if (!hideOnHoverOutsideProp(event))\n return;\n hideTimeoutRef.current = window.setTimeout(() => {\n hideTimeoutRef.current = 0;\n store == null ? void 0 : store.hide();\n }, hideTimeout != null ? hideTimeout : timeout);\n };\n return chain(\n addGlobalEventListener(\"mousemove\", onMouseMove, true),\n () => clearTimeout(hideTimeoutRef.current)\n );\n }, [\n store,\n domReady,\n mounted,\n mayHideOnHoverOutside,\n mayDisablePointerEvents,\n nestedHovercards,\n disablePointerEventsProp,\n hideOnHoverOutsideProp\n ]);\n useEffect(() => {\n if (!domReady)\n return;\n if (!mounted)\n return;\n if (!mayDisablePointerEvents)\n return;\n const disableEvent = (event) => {\n const element = ref.current;\n if (!element)\n return;\n const enterPoint = enterPointRef.current;\n if (!enterPoint)\n return;\n const polygon = getElementPolygon(element, enterPoint);\n if (isPointInPolygon(getEventPoint(event), polygon)) {\n if (!disablePointerEventsProp(event))\n return;\n event.preventDefault();\n event.stopPropagation();\n }\n };\n return chain(\n // Note: we may need to add pointer events here in the future.\n addGlobalEventListener(\"mouseenter\", disableEvent, true),\n addGlobalEventListener(\"mouseover\", disableEvent, true),\n addGlobalEventListener(\"mouseout\", disableEvent, true),\n addGlobalEventListener(\"mouseleave\", disableEvent, true)\n );\n }, [domReady, mounted, mayDisablePointerEvents, disablePointerEventsProp]);\n useEffect(() => {\n if (!domReady)\n return;\n if (open)\n return;\n store == null ? void 0 : store.setAutoFocusOnShow(false);\n }, [store, domReady, open]);\n const openRef = useLiveRef(open);\n useEffect(() => {\n if (!domReady)\n return;\n return () => {\n if (!openRef.current) {\n store == null ? void 0 : store.setAutoFocusOnShow(false);\n }\n };\n }, [store, domReady]);\n const registerOnParent = useContext(NestedHovercardContext);\n useSafeLayoutEffect(() => {\n if (modal)\n return;\n if (!portal)\n return;\n if (!mounted)\n return;\n if (!domReady)\n return;\n const element = ref.current;\n if (!element)\n return;\n return registerOnParent == null ? void 0 : registerOnParent(element);\n }, [modal, portal, mounted, domReady]);\n const registerNestedHovercard = useCallback(\n (element) => {\n setNestedHovercards((prevElements) => [...prevElements, element]);\n const parentUnregister = registerOnParent == null ? void 0 : registerOnParent(element);\n return () => {\n setNestedHovercards(\n (prevElements) => prevElements.filter((item) => item !== element)\n );\n parentUnregister == null ? void 0 : parentUnregister();\n };\n },\n [registerOnParent]\n );\n props = useWrapElement(\n props,\n (element) => /* @__PURE__ */ jsx(HovercardScopedContextProvider, { value: store, children: /* @__PURE__ */ jsx(NestedHovercardContext.Provider, { value: registerNestedHovercard, children: element }) }),\n [store, registerNestedHovercard]\n );\n props = __spreadProps(__spreadValues({}, props), {\n ref: useMergeRefs(ref, props.ref)\n });\n props = useAutoFocusOnHide(__spreadValues({ store }, props));\n const autoFocusOnShow = store.useState(\n (state) => modal || state.autoFocusOnShow\n );\n props = usePopover(__spreadProps(__spreadValues({\n store,\n modal,\n portal,\n autoFocusOnShow\n }, props), {\n portalRef,\n hideOnEscape(event) {\n if (isFalsyBooleanCallback(hideOnEscape, event))\n return false;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n store == null ? void 0 : store.hide();\n });\n });\n return true;\n }\n }));\n return props;\n }\n);\nvar Hovercard = createDialogComponent(\n forwardRef(function Hovercard2(props) {\n const htmlProps = useHovercard(props);\n return createElement(TagName, htmlProps);\n }),\n useHovercardProviderContext\n);\n\nexport {\n useHovercard,\n Hovercard\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