{"version":3,"file":"static/js/1721_53b74184b4505d6726e6.js","mappings":"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","sources":["file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/events@3.3.0/node_modules/events/events.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/extend@3.0.2/node_modules/extend/index.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@floating-ui+utils@0.2.1/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@floating-ui+core@1.6.0/node_modules/@floating-ui/core/dist/floating-ui.core.mjs","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@floating-ui+utils@0.2.9/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@floating-ui+utils@0.2.9/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@floating-ui+dom@1.6.13/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs"],"sourcesContent":["// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n 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 given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n ...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 elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const 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.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n 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 var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\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","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isTopLayer(element) {\n return [':popover-open', ':modal'].some(selector => {\n try {\n return element.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return ['transform', 'translate', 'scale', 'rotate', 'perspective'].some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n if (ignoreScrollbarX === void 0) {\n ignoreScrollbarX = false;\n }\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n // RTL
scrollbar.\n getWindowScrollBarX(documentElement, htmlRect));\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` 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 x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n // If the scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the element as the offsetParent if it's non-static,\n // while Chrome and Safari return the element. The element must\n // be used to perform the correct calculations even if the element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle