| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767 | 
							- /*!
 
-  * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
 
-  * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.
 
-  * v1.0.0-beta.97
 
-  */
 
- import { c as closestElementCrossShadowBoundary, a as getElementDir } from './dom-8f0a9ff2.js';
 
- import { d as debounce } from './debounce-d85a6654.js';
 
- function getSide(placement) {
 
-   return placement.split('-')[0];
 
- }
 
- function getAlignment(placement) {
 
-   return placement.split('-')[1];
 
- }
 
- function getMainAxisFromPlacement(placement) {
 
-   return ['top', 'bottom'].includes(getSide(placement)) ? 'x' : 'y';
 
- }
 
- function getLengthFromAxis(axis) {
 
-   return axis === 'y' ? 'height' : 'width';
 
- }
 
- function computeCoordsFromPlacement(_ref, placement, rtl) {
 
-   let {
 
-     reference,
 
-     floating
 
-   } = _ref;
 
-   const commonX = reference.x + reference.width / 2 - floating.width / 2;
 
-   const commonY = reference.y + reference.height / 2 - floating.height / 2;
 
-   const mainAxis = getMainAxisFromPlacement(placement);
 
-   const length = getLengthFromAxis(mainAxis);
 
-   const commonAlign = reference[length] / 2 - floating[length] / 2;
 
-   const side = getSide(placement);
 
-   const isVertical = mainAxis === 'x';
 
-   let coords;
 
-   switch (side) {
 
-     case 'top':
 
-       coords = {
 
-         x: commonX,
 
-         y: reference.y - floating.height
 
-       };
 
-       break;
 
-     case 'bottom':
 
-       coords = {
 
-         x: commonX,
 
-         y: reference.y + reference.height
 
-       };
 
-       break;
 
-     case 'right':
 
-       coords = {
 
-         x: reference.x + reference.width,
 
-         y: commonY
 
-       };
 
-       break;
 
-     case 'left':
 
-       coords = {
 
-         x: reference.x - floating.width,
 
-         y: commonY
 
-       };
 
-       break;
 
-     default:
 
-       coords = {
 
-         x: reference.x,
 
-         y: reference.y
 
-       };
 
-   }
 
-   switch (getAlignment(placement)) {
 
-     case 'start':
 
-       coords[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);
 
-       break;
 
-     case 'end':
 
-       coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1);
 
-       break;
 
-   }
 
-   return coords;
 
- }
 
- /**
 
-  * Computes the `x` and `y` coordinates that will place the floating element
 
-  * next to a reference element when it is given a certain positioning strategy.
 
-  *
 
-  * This export does not have any `platform` interface logic. You will need to
 
-  * write one for the platform you are using Floating UI with.
 
-  */
 
- const computePosition$1 = async (reference, floating, config) => {
 
-   const {
 
-     placement = 'bottom',
 
-     strategy = 'absolute',
 
-     middleware = [],
 
-     platform
 
-   } = config;
 
-   const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));
 
-   let rects = await platform.getElementRects({
 
-     reference,
 
-     floating,
 
-     strategy
 
-   });
 
-   let {
 
-     x,
 
-     y
 
-   } = computeCoordsFromPlacement(rects, placement, rtl);
 
-   let statefulPlacement = placement;
 
-   let middlewareData = {};
 
-   let resetCount = 0;
 
-   for (let i = 0; i < middleware.length; i++) {
 
-     const {
 
-       name,
 
-       fn
 
-     } = middleware[i];
 
-     const {
 
-       x: nextX,
 
-       y: nextY,
 
-       data,
 
-       reset
 
-     } = await fn({
 
-       x,
 
-       y,
 
-       initialPlacement: placement,
 
-       placement: statefulPlacement,
 
-       strategy,
 
-       middlewareData,
 
-       rects,
 
-       platform,
 
-       elements: {
 
-         reference,
 
-         floating
 
-       }
 
-     });
 
-     x = nextX != null ? nextX : x;
 
-     y = nextY != null ? nextY : y;
 
-     middlewareData = { ...middlewareData,
 
-       [name]: { ...middlewareData[name],
 
-         ...data
 
-       }
 
-     };
 
-     if (reset && resetCount <= 50) {
 
-       resetCount++;
 
-       if (typeof reset === 'object') {
 
-         if (reset.placement) {
 
-           statefulPlacement = reset.placement;
 
-         }
 
-         if (reset.rects) {
 
-           rects = reset.rects === true ? await platform.getElementRects({
 
-             reference,
 
-             floating,
 
-             strategy
 
-           }) : reset.rects;
 
-         }
 
-         ({
 
-           x,
 
-           y
 
-         } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));
 
-       }
 
-       i = -1;
 
-       continue;
 
-     }
 
-   }
 
-   return {
 
-     x,
 
-     y,
 
-     placement: statefulPlacement,
 
-     strategy,
 
-     middlewareData
 
-   };
 
- };
 
- function expandPaddingObject(padding) {
 
-   return {
 
-     top: 0,
 
-     right: 0,
 
-     bottom: 0,
 
-     left: 0,
 
-     ...padding
 
-   };
 
- }
 
- function getSideObjectFromPadding(padding) {
 
-   return typeof padding !== 'number' ? expandPaddingObject(padding) : {
 
-     top: padding,
 
-     right: padding,
 
-     bottom: padding,
 
-     left: padding
 
-   };
 
- }
 
- function rectToClientRect(rect) {
 
-   return { ...rect,
 
-     top: rect.y,
 
-     left: rect.x,
 
-     right: rect.x + rect.width,
 
-     bottom: rect.y + rect.height
 
-   };
 
- }
 
- /**
 
-  * Resolves with an object of overflow side offsets that determine how much the
 
-  * element is overflowing a given clipping boundary.
 
-  * - positive = overflowing the boundary by that number of pixels
 
-  * - negative = how many pixels left before it will overflow
 
-  * - 0 = lies flush with the boundary
 
-  * @see https://floating-ui.com/docs/detectOverflow
 
-  */
 
- async function detectOverflow(middlewareArguments, options) {
 
-   var _await$platform$isEle;
 
-   if (options === void 0) {
 
-     options = {};
 
-   }
 
-   const {
 
-     x,
 
-     y,
 
-     platform,
 
-     rects,
 
-     elements,
 
-     strategy
 
-   } = middlewareArguments;
 
-   const {
 
-     boundary = 'clippingAncestors',
 
-     rootBoundary = 'viewport',
 
-     elementContext = 'floating',
 
-     altBoundary = false,
 
-     padding = 0
 
-   } = options;
 
-   const paddingObject = getSideObjectFromPadding(padding);
 
-   const altContext = elementContext === 'floating' ? 'reference' : 'floating';
 
-   const element = elements[altBoundary ? altContext : elementContext];
 
-   const clippingClientRect = rectToClientRect(await platform.getClippingRect({
 
-     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))),
 
-     boundary,
 
-     rootBoundary,
 
-     strategy
 
-   }));
 
-   const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
 
-     rect: elementContext === 'floating' ? { ...rects.floating,
 
-       x,
 
-       y
 
-     } : rects.reference,
 
-     offsetParent: await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating)),
 
-     strategy
 
-   }) : rects[elementContext]);
 
-   return {
 
-     top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
 
-     bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
 
-     left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
 
-     right: elementClientRect.right - clippingClientRect.right + paddingObject.right
 
-   };
 
- }
 
- const min$1 = Math.min;
 
- const max$1 = Math.max;
 
- function within(min$1$1, value, max$1$1) {
 
-   return max$1(min$1$1, min$1(value, max$1$1));
 
- }
 
- /**
 
-  * Positions an inner element of the floating element such that it is centered
 
-  * to the reference element.
 
-  * @see https://floating-ui.com/docs/arrow
 
-  */
 
- const arrow = options => ({
 
-   name: 'arrow',
 
-   options,
 
-   async fn(middlewareArguments) {
 
-     // Since `element` is required, we don't Partial<> the type
 
-     const {
 
-       element,
 
-       padding = 0
 
-     } = options != null ? options : {};
 
-     const {
 
-       x,
 
-       y,
 
-       placement,
 
-       rects,
 
-       platform
 
-     } = middlewareArguments;
 
-     if (element == null) {
 
-       return {};
 
-     }
 
-     const paddingObject = getSideObjectFromPadding(padding);
 
-     const coords = {
 
-       x,
 
-       y
 
-     };
 
-     const axis = getMainAxisFromPlacement(placement);
 
-     const alignment = getAlignment(placement);
 
-     const length = getLengthFromAxis(axis);
 
-     const arrowDimensions = await platform.getDimensions(element);
 
-     const minProp = axis === 'y' ? 'top' : 'left';
 
-     const maxProp = axis === 'y' ? 'bottom' : 'right';
 
-     const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];
 
-     const startDiff = coords[axis] - rects.reference[axis];
 
-     const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));
 
-     let clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
 
-     if (clientSize === 0) {
 
-       clientSize = rects.floating[length];
 
-     }
 
-     const centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the floating element if the center
 
-     // point is outside the floating element's bounds
 
-     const min = paddingObject[minProp];
 
-     const max = clientSize - arrowDimensions[length] - paddingObject[maxProp];
 
-     const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
 
-     const offset = within(min, center, max); // Make sure that arrow points at the reference
 
-     const alignmentPadding = alignment === 'start' ? paddingObject[minProp] : paddingObject[maxProp];
 
-     const shouldAddOffset = alignmentPadding > 0 && center !== offset && rects.reference[length] <= rects.floating[length];
 
-     const alignmentOffset = shouldAddOffset ? center < min ? min - center : max - center : 0;
 
-     return {
 
-       [axis]: coords[axis] - alignmentOffset,
 
-       data: {
 
-         [axis]: offset,
 
-         centerOffset: center - offset
 
-       }
 
-     };
 
-   }
 
- });
 
- const hash$1 = {
 
-   left: 'right',
 
-   right: 'left',
 
-   bottom: 'top',
 
-   top: 'bottom'
 
- };
 
- function getOppositePlacement(placement) {
 
-   return placement.replace(/left|right|bottom|top/g, matched => hash$1[matched]);
 
- }
 
- function getAlignmentSides(placement, rects, rtl) {
 
-   if (rtl === void 0) {
 
-     rtl = false;
 
-   }
 
-   const alignment = getAlignment(placement);
 
-   const mainAxis = getMainAxisFromPlacement(placement);
 
-   const length = getLengthFromAxis(mainAxis);
 
-   let mainAlignmentSide = mainAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';
 
-   if (rects.reference[length] > rects.floating[length]) {
 
-     mainAlignmentSide = getOppositePlacement(mainAlignmentSide);
 
-   }
 
-   return {
 
-     main: mainAlignmentSide,
 
-     cross: getOppositePlacement(mainAlignmentSide)
 
-   };
 
- }
 
- const hash = {
 
-   start: 'end',
 
-   end: 'start'
 
- };
 
- function getOppositeAlignmentPlacement(placement) {
 
-   return placement.replace(/start|end/g, matched => hash[matched]);
 
- }
 
- const sides = ['top', 'right', 'bottom', 'left'];
 
- const allPlacements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + "-start", side + "-end"), []);
 
- function getPlacementList(alignment, autoAlignment, allowedPlacements) {
 
-   const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);
 
-   return allowedPlacementsSortedByAlignment.filter(placement => {
 
-     if (alignment) {
 
-       return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);
 
-     }
 
-     return true;
 
-   });
 
- }
 
- /**
 
-  * Automatically chooses the `placement` which has the most space available.
 
-  * @see https://floating-ui.com/docs/autoPlacement
 
-  */
 
- const autoPlacement = function (options) {
 
-   if (options === void 0) {
 
-     options = {};
 
-   }
 
-   return {
 
-     name: 'autoPlacement',
 
-     options,
 
-     async fn(middlewareArguments) {
 
-       var _middlewareData$autoP, _middlewareData$autoP2, _middlewareData$autoP3, _middlewareData$autoP4, _placementsSortedByLe;
 
-       const {
 
-         x,
 
-         y,
 
-         rects,
 
-         middlewareData,
 
-         placement,
 
-         platform,
 
-         elements
 
-       } = middlewareArguments;
 
-       const {
 
-         alignment = null,
 
-         allowedPlacements = allPlacements,
 
-         autoAlignment = true,
 
-         ...detectOverflowOptions
 
-       } = options;
 
-       const placements = getPlacementList(alignment, autoAlignment, allowedPlacements);
 
-       const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);
 
-       const currentIndex = (_middlewareData$autoP = (_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.index) != null ? _middlewareData$autoP : 0;
 
-       const currentPlacement = placements[currentIndex];
 
-       if (currentPlacement == null) {
 
-         return {};
 
-       }
 
-       const {
 
-         main,
 
-         cross
 
-       } = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))); // Make `computeCoords` start from the right place
 
-       if (placement !== currentPlacement) {
 
-         return {
 
-           x,
 
-           y,
 
-           reset: {
 
-             placement: placements[0]
 
-           }
 
-         };
 
-       }
 
-       const currentOverflows = [overflow[getSide(currentPlacement)], overflow[main], overflow[cross]];
 
-       const allOverflows = [...((_middlewareData$autoP3 = (_middlewareData$autoP4 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP4.overflows) != null ? _middlewareData$autoP3 : []), {
 
-         placement: currentPlacement,
 
-         overflows: currentOverflows
 
-       }];
 
-       const nextPlacement = placements[currentIndex + 1]; // There are more placements to check
 
-       if (nextPlacement) {
 
-         return {
 
-           data: {
 
-             index: currentIndex + 1,
 
-             overflows: allOverflows
 
-           },
 
-           reset: {
 
-             placement: nextPlacement
 
-           }
 
-         };
 
-       }
 
-       const placementsSortedByLeastOverflow = allOverflows.slice().sort((a, b) => a.overflows[0] - b.overflows[0]);
 
-       const placementThatFitsOnAllSides = (_placementsSortedByLe = placementsSortedByLeastOverflow.find(_ref => {
 
-         let {
 
-           overflows
 
-         } = _ref;
 
-         return overflows.every(overflow => overflow <= 0);
 
-       })) == null ? void 0 : _placementsSortedByLe.placement;
 
-       const resetPlacement = placementThatFitsOnAllSides != null ? placementThatFitsOnAllSides : placementsSortedByLeastOverflow[0].placement;
 
-       if (resetPlacement !== placement) {
 
-         return {
 
-           data: {
 
-             index: currentIndex + 1,
 
-             overflows: allOverflows
 
-           },
 
-           reset: {
 
-             placement: resetPlacement
 
-           }
 
-         };
 
-       }
 
-       return {};
 
-     }
 
-   };
 
- };
 
- function getExpandedPlacements(placement) {
 
-   const oppositePlacement = getOppositePlacement(placement);
 
-   return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
 
- }
 
- /**
 
-  * Changes the placement of the floating element to one that will fit if the
 
-  * initially specified `placement` does not.
 
-  * @see https://floating-ui.com/docs/flip
 
-  */
 
- const flip = function (options) {
 
-   if (options === void 0) {
 
-     options = {};
 
-   }
 
-   return {
 
-     name: 'flip',
 
-     options,
 
-     async fn(middlewareArguments) {
 
-       var _middlewareData$flip;
 
-       const {
 
-         placement,
 
-         middlewareData,
 
-         rects,
 
-         initialPlacement,
 
-         platform,
 
-         elements
 
-       } = middlewareArguments;
 
-       const {
 
-         mainAxis: checkMainAxis = true,
 
-         crossAxis: checkCrossAxis = true,
 
-         fallbackPlacements: specifiedFallbackPlacements,
 
-         fallbackStrategy = 'bestFit',
 
-         flipAlignment = true,
 
-         ...detectOverflowOptions
 
-       } = options;
 
-       const side = getSide(placement);
 
-       const isBasePlacement = side === initialPlacement;
 
-       const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));
 
-       const placements = [initialPlacement, ...fallbackPlacements];
 
-       const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);
 
-       const overflows = [];
 
-       let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];
 
-       if (checkMainAxis) {
 
-         overflows.push(overflow[side]);
 
-       }
 
-       if (checkCrossAxis) {
 
-         const {
 
-           main,
 
-           cross
 
-         } = getAlignmentSides(placement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));
 
-         overflows.push(overflow[main], overflow[cross]);
 
-       }
 
-       overflowsData = [...overflowsData, {
 
-         placement,
 
-         overflows
 
-       }]; // One or more sides is overflowing
 
-       if (!overflows.every(side => side <= 0)) {
 
-         var _middlewareData$flip$, _middlewareData$flip2;
 
-         const nextIndex = ((_middlewareData$flip$ = (_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) != null ? _middlewareData$flip$ : 0) + 1;
 
-         const nextPlacement = placements[nextIndex];
 
-         if (nextPlacement) {
 
-           // Try next placement and re-run the lifecycle
 
-           return {
 
-             data: {
 
-               index: nextIndex,
 
-               overflows: overflowsData
 
-             },
 
-             reset: {
 
-               placement: nextPlacement
 
-             }
 
-           };
 
-         }
 
-         let resetPlacement = 'bottom';
 
-         switch (fallbackStrategy) {
 
-           case 'bestFit':
 
-             {
 
-               var _overflowsData$map$so;
 
-               const placement = (_overflowsData$map$so = overflowsData.map(d => [d, 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].placement;
 
-               if (placement) {
 
-                 resetPlacement = placement;
 
-               }
 
-               break;
 
-             }
 
-           case 'initialPlacement':
 
-             resetPlacement = initialPlacement;
 
-             break;
 
-         }
 
-         if (placement !== resetPlacement) {
 
-           return {
 
-             reset: {
 
-               placement: resetPlacement
 
-             }
 
-           };
 
-         }
 
-       }
 
-       return {};
 
-     }
 
-   };
 
- };
 
- function getSideOffsets(overflow, rect) {
 
-   return {
 
-     top: overflow.top - rect.height,
 
-     right: overflow.right - rect.width,
 
-     bottom: overflow.bottom - rect.height,
 
-     left: overflow.left - rect.width
 
-   };
 
- }
 
- function isAnySideFullyClipped(overflow) {
 
-   return sides.some(side => overflow[side] >= 0);
 
- }
 
- /**
 
-  * Provides data to hide the floating element in applicable situations, such as
 
-  * when it is not in the same clipping context as the reference element.
 
-  * @see https://floating-ui.com/docs/hide
 
-  */
 
- const hide = function (_temp) {
 
-   let {
 
-     strategy = 'referenceHidden',
 
-     ...detectOverflowOptions
 
-   } = _temp === void 0 ? {} : _temp;
 
-   return {
 
-     name: 'hide',
 
-     async fn(middlewareArguments) {
 
-       const {
 
-         rects
 
-       } = middlewareArguments;
 
-       switch (strategy) {
 
-         case 'referenceHidden':
 
-           {
 
-             const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,
 
-               elementContext: 'reference'
 
-             });
 
-             const offsets = getSideOffsets(overflow, rects.reference);
 
-             return {
 
-               data: {
 
-                 referenceHiddenOffsets: offsets,
 
-                 referenceHidden: isAnySideFullyClipped(offsets)
 
-               }
 
-             };
 
-           }
 
-         case 'escaped':
 
-           {
 
-             const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,
 
-               altBoundary: true
 
-             });
 
-             const offsets = getSideOffsets(overflow, rects.floating);
 
-             return {
 
-               data: {
 
-                 escapedOffsets: offsets,
 
-                 escaped: isAnySideFullyClipped(offsets)
 
-               }
 
-             };
 
-           }
 
-         default:
 
-           {
 
-             return {};
 
-           }
 
-       }
 
-     }
 
-   };
 
- };
 
- async function convertValueToCoords(middlewareArguments, value) {
 
-   const {
 
-     placement,
 
-     platform,
 
-     elements
 
-   } = middlewareArguments;
 
-   const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));
 
-   const side = getSide(placement);
 
-   const alignment = getAlignment(placement);
 
-   const isVertical = getMainAxisFromPlacement(placement) === 'x';
 
-   const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;
 
-   const crossAxisMulti = rtl && isVertical ? -1 : 1;
 
-   const rawValue = typeof value === 'function' ? value(middlewareArguments) : value; // eslint-disable-next-line prefer-const
 
-   let {
 
-     mainAxis,
 
-     crossAxis,
 
-     alignmentAxis
 
-   } = typeof rawValue === 'number' ? {
 
-     mainAxis: rawValue,
 
-     crossAxis: 0,
 
-     alignmentAxis: null
 
-   } : {
 
-     mainAxis: 0,
 
-     crossAxis: 0,
 
-     alignmentAxis: null,
 
-     ...rawValue
 
-   };
 
-   if (alignment && typeof alignmentAxis === 'number') {
 
-     crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;
 
-   }
 
-   return isVertical ? {
 
-     x: crossAxis * crossAxisMulti,
 
-     y: mainAxis * mainAxisMulti
 
-   } : {
 
-     x: mainAxis * mainAxisMulti,
 
-     y: crossAxis * crossAxisMulti
 
-   };
 
- }
 
- /**
 
-  * Displaces the floating element from its reference element.
 
-  * @see https://floating-ui.com/docs/offset
 
-  */
 
- const offset = function (value) {
 
-   if (value === void 0) {
 
-     value = 0;
 
-   }
 
-   return {
 
-     name: 'offset',
 
-     options: value,
 
-     async fn(middlewareArguments) {
 
-       const {
 
-         x,
 
-         y
 
-       } = middlewareArguments;
 
-       const diffCoords = await convertValueToCoords(middlewareArguments, value);
 
-       return {
 
-         x: x + diffCoords.x,
 
-         y: y + diffCoords.y,
 
-         data: diffCoords
 
-       };
 
-     }
 
-   };
 
- };
 
- function getCrossAxis(axis) {
 
-   return axis === 'x' ? 'y' : 'x';
 
- }
 
- /**
 
-  * Shifts the floating element in order to keep it in view when it will overflow
 
-  * a clipping boundary.
 
-  * @see https://floating-ui.com/docs/shift
 
-  */
 
- const shift = function (options) {
 
-   if (options === void 0) {
 
-     options = {};
 
-   }
 
-   return {
 
-     name: 'shift',
 
-     options,
 
-     async fn(middlewareArguments) {
 
-       const {
 
-         x,
 
-         y,
 
-         placement
 
-       } = middlewareArguments;
 
-       const {
 
-         mainAxis: checkMainAxis = true,
 
-         crossAxis: checkCrossAxis = false,
 
-         limiter = {
 
-           fn: _ref => {
 
-             let {
 
-               x,
 
-               y
 
-             } = _ref;
 
-             return {
 
-               x,
 
-               y
 
-             };
 
-           }
 
-         },
 
-         ...detectOverflowOptions
 
-       } = options;
 
-       const coords = {
 
-         x,
 
-         y
 
-       };
 
-       const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);
 
-       const mainAxis = getMainAxisFromPlacement(getSide(placement));
 
-       const crossAxis = getCrossAxis(mainAxis);
 
-       let mainAxisCoord = coords[mainAxis];
 
-       let crossAxisCoord = coords[crossAxis];
 
-       if (checkMainAxis) {
 
-         const minSide = mainAxis === 'y' ? 'top' : 'left';
 
-         const maxSide = mainAxis === 'y' ? 'bottom' : 'right';
 
-         const min = mainAxisCoord + overflow[minSide];
 
-         const max = mainAxisCoord - overflow[maxSide];
 
-         mainAxisCoord = within(min, mainAxisCoord, max);
 
-       }
 
-       if (checkCrossAxis) {
 
-         const minSide = crossAxis === 'y' ? 'top' : 'left';
 
-         const maxSide = crossAxis === 'y' ? 'bottom' : 'right';
 
-         const min = crossAxisCoord + overflow[minSide];
 
-         const max = crossAxisCoord - overflow[maxSide];
 
-         crossAxisCoord = within(min, crossAxisCoord, max);
 
-       }
 
-       const limitedCoords = limiter.fn({ ...middlewareArguments,
 
-         [mainAxis]: mainAxisCoord,
 
-         [crossAxis]: crossAxisCoord
 
-       });
 
-       return { ...limitedCoords,
 
-         data: {
 
-           x: limitedCoords.x - x,
 
-           y: limitedCoords.y - y
 
-         }
 
-       };
 
-     }
 
-   };
 
- };
 
- function isWindow(value) {
 
-   return value && value.document && value.location && value.alert && value.setInterval;
 
- }
 
- function getWindow(node) {
 
-   if (node == null) {
 
-     return window;
 
-   }
 
-   if (!isWindow(node)) {
 
-     const ownerDocument = node.ownerDocument;
 
-     return ownerDocument ? ownerDocument.defaultView || window : window;
 
-   }
 
-   return node;
 
- }
 
- function getComputedStyle(element) {
 
-   return getWindow(element).getComputedStyle(element);
 
- }
 
- function getNodeName(node) {
 
-   return isWindow(node) ? '' : node ? (node.nodeName || '').toLowerCase() : '';
 
- }
 
- function getUAString() {
 
-   const uaData = navigator.userAgentData;
 
-   if (uaData != null && uaData.brands) {
 
-     return uaData.brands.map(item => item.brand + "/" + item.version).join(' ');
 
-   }
 
-   return navigator.userAgent;
 
- }
 
- function isHTMLElement(value) {
 
-   return value instanceof getWindow(value).HTMLElement;
 
- }
 
- function isElement(value) {
 
-   return value instanceof getWindow(value).Element;
 
- }
 
- function isNode(value) {
 
-   return value instanceof getWindow(value).Node;
 
- }
 
- function isShadowRoot(node) {
 
-   // Browsers without `ShadowRoot` support
 
-   if (typeof ShadowRoot === 'undefined') {
 
-     return false;
 
-   }
 
-   const OwnElement = getWindow(node).ShadowRoot;
 
-   return node instanceof OwnElement || node instanceof ShadowRoot;
 
- }
 
- function isOverflowElement(element) {
 
-   // Firefox wants us to check `-x` and `-y` variations as well
 
-   const {
 
-     overflow,
 
-     overflowX,
 
-     overflowY,
 
-     display
 
-   } = getComputedStyle(element);
 
-   return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);
 
- }
 
- function isTableElement(element) {
 
-   return ['table', 'td', 'th'].includes(getNodeName(element));
 
- }
 
- function isContainingBlock(element) {
 
-   // TODO: Try and use feature detection here instead
 
-   const isFirefox = /firefox/i.test(getUAString());
 
-   const css = getComputedStyle(element); // This is non-exhaustive but covers the most common CSS properties that
 
-   // create a containing block.
 
-   // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
 
-   return css.transform !== 'none' || css.perspective !== 'none' || isFirefox && css.willChange === 'filter' || isFirefox && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective'].some(value => css.willChange.includes(value)) || ['paint', 'layout', 'strict', 'content'].some( // TS 4.1 compat
 
-   value => {
 
-     const contain = css.contain;
 
-     return contain != null ? contain.includes(value) : false;
 
-   });
 
- }
 
- function isLayoutViewport() {
 
-   // Not Safari
 
-   return !/^((?!chrome|android).)*safari/i.test(getUAString()); // Feature detection for this fails in various ways
 
-   // • Always-visible scrollbar or not
 
-   // • Width of <html>, etc.
 
-   // const vV = win.visualViewport;
 
-   // return vV ? Math.abs(win.innerWidth / vV.scale - vV.width) < 0.5 : true;
 
- }
 
- function isLastTraversableNode(node) {
 
-   return ['html', 'body', '#document'].includes(getNodeName(node));
 
- }
 
- const min = Math.min;
 
- const max = Math.max;
 
- const round = Math.round;
 
- function getBoundingClientRect(element, includeScale, isFixedStrategy) {
 
-   var _win$visualViewport$o, _win$visualViewport, _win$visualViewport$o2, _win$visualViewport2;
 
-   if (includeScale === void 0) {
 
-     includeScale = false;
 
-   }
 
-   if (isFixedStrategy === void 0) {
 
-     isFixedStrategy = false;
 
-   }
 
-   const clientRect = element.getBoundingClientRect();
 
-   let scaleX = 1;
 
-   let scaleY = 1;
 
-   if (includeScale && isHTMLElement(element)) {
 
-     scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
 
-     scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
 
-   }
 
-   const win = isElement(element) ? getWindow(element) : window;
 
-   const addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
 
-   const x = (clientRect.left + (addVisualOffsets ? (_win$visualViewport$o = (_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) != null ? _win$visualViewport$o : 0 : 0)) / scaleX;
 
-   const y = (clientRect.top + (addVisualOffsets ? (_win$visualViewport$o2 = (_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) != null ? _win$visualViewport$o2 : 0 : 0)) / scaleY;
 
-   const width = clientRect.width / scaleX;
 
-   const height = clientRect.height / scaleY;
 
-   return {
 
-     width,
 
-     height,
 
-     top: y,
 
-     right: x + width,
 
-     bottom: y + height,
 
-     left: x,
 
-     x,
 
-     y
 
-   };
 
- }
 
- function getDocumentElement(node) {
 
-   return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;
 
- }
 
- function getNodeScroll(element) {
 
-   if (isElement(element)) {
 
-     return {
 
-       scrollLeft: element.scrollLeft,
 
-       scrollTop: element.scrollTop
 
-     };
 
-   }
 
-   return {
 
-     scrollLeft: element.pageXOffset,
 
-     scrollTop: element.pageYOffset
 
-   };
 
- }
 
- function getWindowScrollBarX(element) {
 
-   // If <html> has a CSS width greater than the viewport, then this will be
 
-   // incorrect for RTL.
 
-   return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;
 
- }
 
- function isScaled(element) {
 
-   const rect = getBoundingClientRect(element);
 
-   return round(rect.width) !== element.offsetWidth || round(rect.height) !== element.offsetHeight;
 
- }
 
- function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
 
-   const isOffsetParentAnElement = isHTMLElement(offsetParent);
 
-   const documentElement = getDocumentElement(offsetParent);
 
-   const rect = getBoundingClientRect(element, // @ts-ignore - checked above (TS 4.1 compat)
 
-   isOffsetParentAnElement && isScaled(offsetParent), strategy === 'fixed');
 
-   let scroll = {
 
-     scrollLeft: 0,
 
-     scrollTop: 0
 
-   };
 
-   const offsets = {
 
-     x: 0,
 
-     y: 0
 
-   };
 
-   if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {
 
-     if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
 
-       scroll = getNodeScroll(offsetParent);
 
-     }
 
-     if (isHTMLElement(offsetParent)) {
 
-       const offsetRect = getBoundingClientRect(offsetParent, true);
 
-       offsets.x = offsetRect.x + offsetParent.clientLeft;
 
-       offsets.y = offsetRect.y + offsetParent.clientTop;
 
-     } else if (documentElement) {
 
-       offsets.x = getWindowScrollBarX(documentElement);
 
-     }
 
-   }
 
-   return {
 
-     x: rect.left + scroll.scrollLeft - offsets.x,
 
-     y: rect.top + scroll.scrollTop - offsets.y,
 
-     width: rect.width,
 
-     height: rect.height
 
-   };
 
- }
 
- function getParentNode(node) {
 
-   if (getNodeName(node) === 'html') {
 
-     return node;
 
-   }
 
-   return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle
 
-     // @ts-ignore
 
-     node.assignedSlot || // step into the shadow DOM of the parent of a slotted node
 
-     node.parentNode || ( // DOM Element detected
 
-     isShadowRoot(node) ? node.host : null) || // ShadowRoot detected
 
-     getDocumentElement(node) // fallback
 
-   );
 
- }
 
- function getTrueOffsetParent(element) {
 
-   if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {
 
-     return null;
 
-   }
 
-   return element.offsetParent;
 
- }
 
- function getContainingBlock(element) {
 
-   let currentNode = getParentNode(element);
 
-   if (isShadowRoot(currentNode)) {
 
-     currentNode = currentNode.host;
 
-   }
 
-   while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {
 
-     if (isContainingBlock(currentNode)) {
 
-       return currentNode;
 
-     } else {
 
-       const parent = currentNode.parentNode;
 
-       currentNode = isShadowRoot(parent) ? parent.host : parent;
 
-     }
 
-   }
 
-   return null;
 
- } // Gets the closest ancestor positioned element. Handles some edge cases,
 
- // such as table ancestors and cross browser bugs.
 
- function getOffsetParent(element) {
 
-   const window = getWindow(element);
 
-   let offsetParent = getTrueOffsetParent(element);
 
-   while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {
 
-     offsetParent = getTrueOffsetParent(offsetParent);
 
-   }
 
-   if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {
 
-     return window;
 
-   }
 
-   return offsetParent || getContainingBlock(element) || window;
 
- }
 
- function getDimensions(element) {
 
-   if (isHTMLElement(element)) {
 
-     return {
 
-       width: element.offsetWidth,
 
-       height: element.offsetHeight
 
-     };
 
-   }
 
-   const rect = getBoundingClientRect(element);
 
-   return {
 
-     width: rect.width,
 
-     height: rect.height
 
-   };
 
- }
 
- function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
 
-   let {
 
-     rect,
 
-     offsetParent,
 
-     strategy
 
-   } = _ref;
 
-   const isOffsetParentAnElement = isHTMLElement(offsetParent);
 
-   const documentElement = getDocumentElement(offsetParent);
 
-   if (offsetParent === documentElement) {
 
-     return rect;
 
-   }
 
-   let scroll = {
 
-     scrollLeft: 0,
 
-     scrollTop: 0
 
-   };
 
-   const offsets = {
 
-     x: 0,
 
-     y: 0
 
-   };
 
-   if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {
 
-     if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
 
-       scroll = getNodeScroll(offsetParent);
 
-     }
 
-     if (isHTMLElement(offsetParent)) {
 
-       const offsetRect = getBoundingClientRect(offsetParent, true);
 
-       offsets.x = offsetRect.x + offsetParent.clientLeft;
 
-       offsets.y = offsetRect.y + offsetParent.clientTop;
 
-     } // This doesn't appear to be need to be negated.
 
-     // else if (documentElement) {
 
-     //   offsets.x = getWindowScrollBarX(documentElement);
 
-     // }
 
-   }
 
-   return { ...rect,
 
-     x: rect.x - scroll.scrollLeft + offsets.x,
 
-     y: rect.y - scroll.scrollTop + offsets.y
 
-   };
 
- }
 
- function getViewportRect(element, strategy) {
 
-   const win = getWindow(element);
 
-   const html = getDocumentElement(element);
 
-   const visualViewport = win.visualViewport;
 
-   let width = html.clientWidth;
 
-   let height = html.clientHeight;
 
-   let x = 0;
 
-   let y = 0;
 
-   if (visualViewport) {
 
-     width = visualViewport.width;
 
-     height = visualViewport.height;
 
-     const layoutViewport = isLayoutViewport();
 
-     if (layoutViewport || !layoutViewport && strategy === 'fixed') {
 
-       x = visualViewport.offsetLeft;
 
-       y = visualViewport.offsetTop;
 
-     }
 
-   }
 
-   return {
 
-     width,
 
-     height,
 
-     x,
 
-     y
 
-   };
 
- }
 
- // of the `<html>` and `<body>` rect bounds if horizontally scrollable
 
- function getDocumentRect(element) {
 
-   var _element$ownerDocumen;
 
-   const html = getDocumentElement(element);
 
-   const scroll = getNodeScroll(element);
 
-   const body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
 
-   const width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
 
-   const height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
 
-   let x = -scroll.scrollLeft + getWindowScrollBarX(element);
 
-   const y = -scroll.scrollTop;
 
-   if (getComputedStyle(body || html).direction === 'rtl') {
 
-     x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
 
-   }
 
-   return {
 
-     width,
 
-     height,
 
-     x,
 
-     y
 
-   };
 
- }
 
- function getNearestOverflowAncestor(node) {
 
-   const parentNode = getParentNode(node);
 
-   if (isLastTraversableNode(parentNode)) {
 
-     // @ts-ignore assume body is always available
 
-     return node.ownerDocument.body;
 
-   }
 
-   if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {
 
-     return parentNode;
 
-   }
 
-   return getNearestOverflowAncestor(parentNode);
 
- }
 
- function getOverflowAncestors(node, list) {
 
-   var _node$ownerDocument;
 
-   if (list === void 0) {
 
-     list = [];
 
-   }
 
-   const scrollableAncestor = getNearestOverflowAncestor(node);
 
-   const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);
 
-   const win = getWindow(scrollableAncestor);
 
-   const target = isBody ? [win].concat(win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []) : scrollableAncestor;
 
-   const updatedList = list.concat(target);
 
-   return isBody ? updatedList : // @ts-ignore: isBody tells us target will be an HTMLElement here
 
-   updatedList.concat(getOverflowAncestors(target));
 
- }
 
- function contains(parent, child) {
 
-   const rootNode = child.getRootNode == null ? void 0 : child.getRootNode(); // First, attempt with faster native method
 
-   if (parent.contains(child)) {
 
-     return true;
 
-   } // then fallback to custom implementation with Shadow DOM support
 
-   else if (rootNode && isShadowRoot(rootNode)) {
 
-     let next = child;
 
-     do {
 
-       // use `===` replace node.isSameNode()
 
-       if (next && parent === next) {
 
-         return true;
 
-       } // @ts-ignore: need a better way to handle this...
 
-       next = next.parentNode || next.host;
 
-     } while (next);
 
-   }
 
-   return false;
 
- }
 
- function getNearestParentCapableOfEscapingClipping(element, clippingAncestors) {
 
-   let currentNode = element;
 
-   while (currentNode && !isLastTraversableNode(currentNode) && // @ts-expect-error
 
-   !clippingAncestors.includes(currentNode)) {
 
-     if (isElement(currentNode) && ['absolute', 'fixed'].includes(getComputedStyle(currentNode).position)) {
 
-       break;
 
-     }
 
-     const parentNode = getParentNode(currentNode);
 
-     currentNode = isShadowRoot(parentNode) ? parentNode.host : parentNode;
 
-   }
 
-   return currentNode;
 
- }
 
- function getInnerBoundingClientRect(element, strategy) {
 
-   const clientRect = getBoundingClientRect(element, false, strategy === 'fixed');
 
-   const top = clientRect.top + element.clientTop;
 
-   const left = clientRect.left + element.clientLeft;
 
-   return {
 
-     top,
 
-     left,
 
-     x: left,
 
-     y: top,
 
-     right: left + element.clientWidth,
 
-     bottom: top + element.clientHeight,
 
-     width: element.clientWidth,
 
-     height: element.clientHeight
 
-   };
 
- }
 
- function getClientRectFromClippingAncestor(element, clippingParent, strategy) {
 
-   if (clippingParent === 'viewport') {
 
-     return rectToClientRect(getViewportRect(element, strategy));
 
-   }
 
-   if (isElement(clippingParent)) {
 
-     return getInnerBoundingClientRect(clippingParent, strategy);
 
-   }
 
-   return rectToClientRect(getDocumentRect(getDocumentElement(element)));
 
- } // A "clipping ancestor" is an overflowable container with the characteristic of
 
- // clipping (or hiding) overflowing elements with a position different from
 
- // `initial`
 
- function getClippingAncestors(element) {
 
-   const clippingAncestors = getOverflowAncestors(element);
 
-   const nearestEscapableParent = getNearestParentCapableOfEscapingClipping(element, clippingAncestors);
 
-   let clipperElement = null;
 
-   if (nearestEscapableParent && isHTMLElement(nearestEscapableParent)) {
 
-     const offsetParent = getOffsetParent(nearestEscapableParent);
 
-     if (isOverflowElement(nearestEscapableParent)) {
 
-       clipperElement = nearestEscapableParent;
 
-     } else if (isHTMLElement(offsetParent)) {
 
-       clipperElement = offsetParent;
 
-     }
 
-   }
 
-   if (!isElement(clipperElement)) {
 
-     return [];
 
-   } // @ts-ignore isElement check ensures we return Array<Element>
 
-   return clippingAncestors.filter(clippingAncestors => clipperElement && isElement(clippingAncestors) && contains(clippingAncestors, clipperElement) && getNodeName(clippingAncestors) !== 'body');
 
- } // Gets the maximum area that the element is visible in due to any number of
 
- // clipping ancestors
 
- function getClippingRect(_ref) {
 
-   let {
 
-     element,
 
-     boundary,
 
-     rootBoundary,
 
-     strategy
 
-   } = _ref;
 
-   const mainClippingAncestors = boundary === 'clippingAncestors' ? getClippingAncestors(element) : [].concat(boundary);
 
-   const clippingAncestors = [...mainClippingAncestors, rootBoundary];
 
-   const firstClippingAncestor = clippingAncestors[0];
 
-   const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {
 
-     const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);
 
-     accRect.top = max(rect.top, accRect.top);
 
-     accRect.right = min(rect.right, accRect.right);
 
-     accRect.bottom = min(rect.bottom, accRect.bottom);
 
-     accRect.left = max(rect.left, accRect.left);
 
-     return accRect;
 
-   }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));
 
-   return {
 
-     width: clippingRect.right - clippingRect.left,
 
-     height: clippingRect.bottom - clippingRect.top,
 
-     x: clippingRect.left,
 
-     y: clippingRect.top
 
-   };
 
- }
 
- const platform = {
 
-   getClippingRect,
 
-   convertOffsetParentRelativeRectToViewportRelativeRect,
 
-   isElement,
 
-   getDimensions,
 
-   getOffsetParent,
 
-   getDocumentElement,
 
-   getElementRects: _ref => {
 
-     let {
 
-       reference,
 
-       floating,
 
-       strategy
 
-     } = _ref;
 
-     return {
 
-       reference: getRectRelativeToOffsetParent(reference, getOffsetParent(floating), strategy),
 
-       floating: { ...getDimensions(floating),
 
-         x: 0,
 
-         y: 0
 
-       }
 
-     };
 
-   },
 
-   getClientRects: element => Array.from(element.getClientRects()),
 
-   isRTL: element => getComputedStyle(element).direction === 'rtl'
 
- };
 
- /**
 
-  * Automatically updates the position of the floating element when necessary.
 
-  * @see https://floating-ui.com/docs/autoUpdate
 
-  */
 
- function autoUpdate(reference, floating, update, options) {
 
-   if (options === void 0) {
 
-     options = {};
 
-   }
 
-   const {
 
-     ancestorScroll: _ancestorScroll = true,
 
-     ancestorResize = true,
 
-     elementResize = true,
 
-     animationFrame = false
 
-   } = options;
 
-   const ancestorScroll = _ancestorScroll && !animationFrame;
 
-   const ancestors = ancestorScroll || ancestorResize ? [...(isElement(reference) ? getOverflowAncestors(reference) : []), ...getOverflowAncestors(floating)] : [];
 
-   ancestors.forEach(ancestor => {
 
-     ancestorScroll && ancestor.addEventListener('scroll', update, {
 
-       passive: true
 
-     });
 
-     ancestorResize && ancestor.addEventListener('resize', update);
 
-   });
 
-   let observer = null;
 
-   if (elementResize) {
 
-     let initialUpdate = true;
 
-     observer = new ResizeObserver(() => {
 
-       if (!initialUpdate) {
 
-         update();
 
-       }
 
-       initialUpdate = false;
 
-     });
 
-     isElement(reference) && !animationFrame && observer.observe(reference);
 
-     observer.observe(floating);
 
-   }
 
-   let frameId;
 
-   let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;
 
-   if (animationFrame) {
 
-     frameLoop();
 
-   }
 
-   function frameLoop() {
 
-     const nextRefRect = getBoundingClientRect(reference);
 
-     if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {
 
-       update();
 
-     }
 
-     prevRefRect = nextRefRect;
 
-     frameId = requestAnimationFrame(frameLoop);
 
-   }
 
-   update();
 
-   return () => {
 
-     var _observer;
 
-     ancestors.forEach(ancestor => {
 
-       ancestorScroll && ancestor.removeEventListener('scroll', update);
 
-       ancestorResize && ancestor.removeEventListener('resize', update);
 
-     });
 
-     (_observer = observer) == null ? void 0 : _observer.disconnect();
 
-     observer = null;
 
-     if (animationFrame) {
 
-       cancelAnimationFrame(frameId);
 
-     }
 
-   };
 
- }
 
- /**
 
-  * Computes the `x` and `y` coordinates that will place the floating element
 
-  * next to a reference element when it is given a certain CSS positioning
 
-  * strategy.
 
-  */
 
- const computePosition = (reference, floating, options) => computePosition$1(reference, floating, {
 
-   platform,
 
-   ...options
 
- });
 
- /**
 
-  * This module helps users provide custom configuration for component internals.
 
-  *
 
-  * @internal
 
-  */
 
- const configOverrides = globalThis["calciteComponentsConfig"];
 
- const config = {
 
-   /**
 
-    * We apply a custom fix to improve positioning for non-Chromium browsers.
 
-    * The fix comes at a performance cost, so provides users a way to opt-out if necessary.
 
-    *
 
-    * @internal
 
-    */
 
-   floatingUINonChromiumPositioningFix: true,
 
-   ...configOverrides
 
- };
 
- const floatingUIBrowserCheck = patchFloatingUiForNonChromiumBrowsers();
 
- async function patchFloatingUiForNonChromiumBrowsers() {
 
-   function getUAString() {
 
-     const uaData = navigator.userAgentData;
 
-     if (uaData === null || uaData === void 0 ? void 0 : uaData.brands) {
 
-       return uaData.brands.map((item) => `${item.brand}/${item.version}`).join(" ");
 
-     }
 
-     return navigator.userAgent;
 
-   }
 
-   if (config.floatingUINonChromiumPositioningFix &&
 
-     // ⚠️ browser-sniffing is not a best practice and should be avoided ⚠️
 
-     /firefox|safari/i.test(getUAString())) {
 
-     const { getClippingRect, getElementRects, getOffsetParent } = await import('./nonChromiumPlatformUtils-45c9ed51.js');
 
-     platform.getClippingRect = getClippingRect;
 
-     platform.getOffsetParent = getOffsetParent;
 
-     platform.getElementRects = getElementRects;
 
-   }
 
- }
 
- const placementDataAttribute = "data-placement";
 
- /**
 
-  * Exported for testing purposes only
 
-  */
 
- const repositionDebounceTimeout = 100;
 
- const effectivePlacements = [
 
-   "top",
 
-   "bottom",
 
-   "right",
 
-   "left",
 
-   "top-start",
 
-   "top-end",
 
-   "bottom-start",
 
-   "bottom-end",
 
-   "right-start",
 
-   "right-end",
 
-   "left-start",
 
-   "left-end"
 
- ];
 
- const defaultMenuPlacement = "bottom-start";
 
- const FloatingCSS = {
 
-   animation: "calcite-floating-ui-anim",
 
-   animationActive: "calcite-floating-ui-anim--active"
 
- };
 
- function getMiddleware({ placement, disableFlip, flipPlacements, offsetDistance, offsetSkidding, arrowEl, type }) {
 
-   const defaultMiddleware = [shift(), hide()];
 
-   if (type === "menu") {
 
-     return [
 
-       ...defaultMiddleware,
 
-       flip({
 
-         fallbackPlacements: flipPlacements || ["top-start", "top", "top-end", "bottom-start", "bottom", "bottom-end"]
 
-       })
 
-     ];
 
-   }
 
-   if (type === "popover" || type === "tooltip") {
 
-     const middleware = [
 
-       ...defaultMiddleware,
 
-       offset({
 
-         mainAxis: typeof offsetDistance === "number" ? offsetDistance : 0,
 
-         crossAxis: typeof offsetSkidding === "number" ? offsetSkidding : 0
 
-       })
 
-     ];
 
-     if (placement === "auto" || placement === "auto-start" || placement === "auto-end") {
 
-       middleware.push(autoPlacement({ alignment: placement === "auto-start" ? "start" : placement === "auto-end" ? "end" : null }));
 
-     }
 
-     else if (!disableFlip) {
 
-       middleware.push(flip(flipPlacements ? { fallbackPlacements: flipPlacements } : {}));
 
-     }
 
-     if (arrowEl) {
 
-       middleware.push(arrow({
 
-         element: arrowEl
 
-       }));
 
-     }
 
-     return middleware;
 
-   }
 
-   return [];
 
- }
 
- function filterComputedPlacements(placements, el) {
 
-   const filteredPlacements = placements.filter((placement) => effectivePlacements.includes(placement));
 
-   if (filteredPlacements.length !== placements.length) {
 
-     console.warn(`${el.tagName}: Invalid value found in: flipPlacements. Try any of these: ${effectivePlacements
 
-       .map((placement) => `"${placement}"`)
 
-       .join(", ")
 
-       .trim()}`, { el });
 
-   }
 
-   return filteredPlacements;
 
- }
 
- /*
 
- In floating-ui, "*-start" and "*-end" are already flipped in RTL.
 
- There is no need for our "*-leading" and "*-trailing" values anymore.
 
- https://github.com/floating-ui/floating-ui/issues/1530
 
- https://github.com/floating-ui/floating-ui/issues/1563
 
- */
 
- function getEffectivePlacement(floatingEl, placement) {
 
-   const placements = ["left", "right"];
 
-   if (getElementDir(floatingEl) === "rtl") {
 
-     placements.reverse();
 
-   }
 
-   return placement
 
-     .replace(/-leading/gi, "-start")
 
-     .replace(/-trailing/gi, "-end")
 
-     .replace(/leading/gi, placements[0])
 
-     .replace(/trailing/gi, placements[1]);
 
- }
 
- /**
 
-  * Convenience function to manage `reposition` calls for FloatingUIComponents that use `positionFloatingUI.
 
-  *
 
-  * Note: this is not needed for components that use `calcite-popover`.
 
-  *
 
-  * @param component
 
-  * @param options
 
-  * @param options.referenceEl
 
-  * @param options.floatingEl
 
-  * @param options.overlayPositioning
 
-  * @param options.placement
 
-  * @param options.disableFlip
 
-  * @param options.flipPlacements
 
-  * @param options.offsetDistance
 
-  * @param options.offsetSkidding
 
-  * @param options.arrowEl
 
-  * @param options.type
 
-  * @param delayed
 
-  */
 
- async function reposition(component, options, delayed = false) {
 
-   if (!component.open) {
 
-     return;
 
-   }
 
-   return delayed ? debouncedReposition(options) : positionFloatingUI(options);
 
- }
 
- const debouncedReposition = debounce(positionFloatingUI, repositionDebounceTimeout, {
 
-   leading: true,
 
-   maxWait: repositionDebounceTimeout
 
- });
 
- /**
 
-  * Positions the floating element relative to the reference element.
 
-  *
 
-  * **Note:** exported for testing purposes only
 
-  *
 
-  * @param root0
 
-  * @param root0.referenceEl
 
-  * @param root0.floatingEl
 
-  * @param root0.overlayPositioning
 
-  * @param root0.placement
 
-  * @param root0.disableFlip
 
-  * @param root0.flipPlacements
 
-  * @param root0.offsetDistance
 
-  * @param root0.offsetSkidding
 
-  * @param root0.arrowEl
 
-  * @param root0.type
 
-  * @param root0.includeArrow
 
-  */
 
- async function positionFloatingUI({ referenceEl, floatingEl, overlayPositioning = "absolute", placement, disableFlip, flipPlacements, offsetDistance, offsetSkidding, includeArrow = false, arrowEl, type }) {
 
-   var _a;
 
-   if (!referenceEl || !floatingEl || (includeArrow && !arrowEl)) {
 
-     return null;
 
-   }
 
-   await floatingUIBrowserCheck;
 
-   const { x, y, placement: effectivePlacement, strategy: position, middlewareData } = await computePosition(referenceEl, floatingEl, {
 
-     strategy: overlayPositioning,
 
-     placement: placement === "auto" || placement === "auto-start" || placement === "auto-end"
 
-       ? undefined
 
-       : getEffectivePlacement(floatingEl, placement),
 
-     middleware: getMiddleware({
 
-       placement,
 
-       disableFlip,
 
-       flipPlacements,
 
-       offsetDistance,
 
-       offsetSkidding,
 
-       arrowEl,
 
-       type
 
-     })
 
-   });
 
-   if (middlewareData === null || middlewareData === void 0 ? void 0 : middlewareData.arrow) {
 
-     const { x: arrowX, y: arrowY } = middlewareData.arrow;
 
-     Object.assign(arrowEl.style, {
 
-       left: arrowX != null ? `${arrowX}px` : "",
 
-       top: arrowY != null ? `${arrowY}px` : ""
 
-     });
 
-   }
 
-   const referenceHidden = (_a = middlewareData === null || middlewareData === void 0 ? void 0 : middlewareData.hide) === null || _a === void 0 ? void 0 : _a.referenceHidden;
 
-   const visibility = referenceHidden ? "hidden" : null;
 
-   const pointerEvents = visibility ? "none" : null;
 
-   floatingEl.setAttribute(placementDataAttribute, effectivePlacement);
 
-   const transform = `translate(${Math.round(x)}px,${Math.round(y)}px)`;
 
-   Object.assign(floatingEl.style, {
 
-     visibility,
 
-     pointerEvents,
 
-     position,
 
-     top: "0",
 
-     left: "0",
 
-     transform
 
-   });
 
- }
 
- /**
 
-  * Exported for testing purposes only
 
-  *
 
-  * @internal
 
-  */
 
- const cleanupMap = new WeakMap();
 
- /**
 
-  * Helper to set up floating element interactions on connectedCallback.
 
-  *
 
-  * @param component
 
-  * @param referenceEl
 
-  * @param floatingEl
 
-  */
 
- function connectFloatingUI(component, referenceEl, floatingEl) {
 
-   if (!floatingEl || !referenceEl) {
 
-     return;
 
-   }
 
-   disconnectFloatingUI(component, referenceEl, floatingEl);
 
-   const position = component.overlayPositioning;
 
-   // ensure position matches for initial positioning
 
-   floatingEl.style.position = position;
 
-   if (position === "absolute") {
 
-     moveOffScreen(floatingEl);
 
-   }
 
-   const runAutoUpdate = autoUpdate
 
-     ;
 
-   cleanupMap.set(component, runAutoUpdate(referenceEl, floatingEl, () => component.reposition()));
 
- }
 
- /**
 
-  * Helper to tear down floating element interactions on disconnectedCallback.
 
-  *
 
-  * @param component
 
-  * @param referenceEl
 
-  * @param floatingEl
 
-  */
 
- function disconnectFloatingUI(component, referenceEl, floatingEl) {
 
-   if (!floatingEl || !referenceEl) {
 
-     return;
 
-   }
 
-   getTransitionTarget(floatingEl).removeEventListener("transitionend", handleTransitionElTransitionEnd);
 
-   const cleanup = cleanupMap.get(component);
 
-   if (cleanup) {
 
-     cleanup();
 
-   }
 
-   cleanupMap.delete(component);
 
- }
 
- const visiblePointerSize = 4;
 
- /**
 
-  * Default offset the position of the floating element away from the reference element.
 
-  *
 
-  * @default 6
 
-  */
 
- const defaultOffsetDistance = Math.ceil(Math.hypot(visiblePointerSize, visiblePointerSize));
 
- /**
 
-  * This utils applies floating element styles to avoid affecting layout when closed.
 
-  *
 
-  * This should be called when the closing transition will start.
 
-  *
 
-  * @param floatingEl
 
-  */
 
- function updateAfterClose(floatingEl) {
 
-   if (!floatingEl || floatingEl.style.position !== "absolute") {
 
-     return;
 
-   }
 
-   getTransitionTarget(floatingEl).addEventListener("transitionend", handleTransitionElTransitionEnd);
 
- }
 
- function getTransitionTarget(floatingEl) {
 
-   // assumes floatingEl w/ shadowRoot is a FloatingUIComponent
 
-   return floatingEl.shadowRoot || floatingEl;
 
- }
 
- function handleTransitionElTransitionEnd(event) {
 
-   const floatingTransitionEl = event.target;
 
-   if (
 
-   // using any prop from floating-ui transition
 
-   event.propertyName === "opacity" &&
 
-     floatingTransitionEl.classList.contains(FloatingCSS.animation)) {
 
-     const floatingEl = getFloatingElFromTransitionTarget(floatingTransitionEl);
 
-     moveOffScreen(floatingEl);
 
-     getTransitionTarget(floatingEl).removeEventListener("transitionend", handleTransitionElTransitionEnd);
 
-   }
 
- }
 
- function moveOffScreen(floatingEl) {
 
-   floatingEl.style.transform = "";
 
-   floatingEl.style.top = "-99999px";
 
-   floatingEl.style.left = "-99999px";
 
- }
 
- function getFloatingElFromTransitionTarget(floatingTransitionEl) {
 
-   return closestElementCrossShadowBoundary(floatingTransitionEl, `[${placementDataAttribute}]`);
 
- }
 
- export { FloatingCSS as F, disconnectFloatingUI as a, defaultOffsetDistance as b, connectFloatingUI as c, defaultMenuPlacement as d, rectToClientRect as e, filterComputedPlacements as f, reposition as r, updateAfterClose as u };
 
 
  |