{"version":3,"file":"7000.5edbdd9d.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-provider.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