{"version":3,"file":"useOutsideClick.BAoi9TP3.mjs","names":["platform","computePosition","autoPlacement","shift","min","max","window","useRef"],"sources":["https:/asset.29cm.co.kr/contents/framer/components/@shared/icons/PlusIcon.js","https:/asset.29cm.co.kr/contents/framer/node_modules/@floating-ui/utils/dist/floating-ui.utils.js","https:/asset.29cm.co.kr/contents/framer/node_modules/@floating-ui/core/dist/floating-ui.core.js","https:/asset.29cm.co.kr/contents/framer/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js","https:/asset.29cm.co.kr/contents/framer/node_modules/@floating-ui/dom/dist/floating-ui.dom.js","https:/asset.29cm.co.kr/contents/framer/hooks/useComputeFloatingPosition.js","https:/asset.29cm.co.kr/contents/framer/hooks/useOutsideClick.js"],"sourcesContent":["import { jsx } from \"react/jsx-runtime\";\nconst PlusIcon = ({\n  className\n}) => {\n  return /* @__PURE__ */ jsx(\"svg\", { className, style: {\n    width: \"16px\",\n    height: \"16px\"\n  }, xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 24 24\", children: /* @__PURE__ */ jsx(\"path\", { fill: \"#fff\", d: \"M13 3h-2v8H3v2h8v8h2v-8h8v-2h-8V3z\" }) });\n};\nexport {\n  PlusIcon\n};\n","const sides = [\"top\", \"right\", \"bottom\", \"left\"];\nconst alignments = [\"start\", \"end\"];\nconst placements = /* @__PURE__ */ sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst 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 getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, (alignment) => oppositeAlignmentMap[alignment]);\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}\nexport {\n  alignments,\n  clamp,\n  createCoords,\n  evaluate,\n  expandPaddingObject,\n  getAlignment,\n  getAlignmentAxis,\n  getAlignmentSides,\n  getAxisLength,\n  getOppositeAlignmentPlacement,\n  getOppositeAxis,\n  getOppositePlacement,\n  getPaddingObject,\n  getSide,\n  getSideAxis,\n  max,\n  min,\n  placements,\n  rectToClientRect,\n  round,\n  sides\n};\n","import { evaluate, placements, getAlignmentSides, getSide, getAlignment, getSideAxis, clamp, getAlignmentAxis, getPaddingObject, rectToClientRect, getOppositeAlignmentPlacement, getOppositeAxis, getAxisLength } from \"../../utils/dist/floating-ui.utils.js\";\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}\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};\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}\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}\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 !== void 0 || 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      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      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 alignment2 = getAlignment(d.placement);\n        return [d.placement, alignment2 && crossAxis ? (\n          // Check along the mainAxis and main crossAxis side.\n          d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0)\n        ) : (\n          // Check only the mainAxis.\n          d.overflows[0]\n        ), d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter((d) => d[2].slice(\n        0,\n        // Aligned placements should not check their opposite crossAxis\n        // side.\n        getAlignment(d[0]) ? 2 : 3\n      ).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};\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}\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      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};\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: x2,\n              y: y2\n            } = _ref;\n            return {\n              x: x2,\n              y: y2\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};\nexport {\n  autoPlacement,\n  computePosition,\n  detectOverflow,\n  offset,\n  rectToClientRect,\n  shift\n};\n","function getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || \"\").toLowerCase();\n  }\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  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (typeof ShadowRoot === \"undefined\") {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && ![\"inline\", \"contents\"].includes(display);\n}\nfunction isTableElement(element) {\n  return [\"table\", \"td\", \"th\"].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n  const webkit = isWebKit();\n  const css = getComputedStyle(element);\n  return css.transform !== \"none\" || css.perspective !== \"none\" || (css.containerType ? css.containerType !== \"normal\" : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== \"none\" : false) || !webkit && (css.filter ? css.filter !== \"none\" : false) || [\"transform\", \"perspective\", \"filter\"].some((value) => (css.willChange || \"\").includes(value)) || [\"paint\", \"layout\", \"strict\", \"content\"].some((value) => (css.contain || \"\").includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else {\n      currentNode = getParentNode(currentNode);\n    }\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === \"undefined\" || !CSS.supports)\n    return false;\n  return CSS.supports(\"-webkit-backdrop-filter\", \"none\");\n}\nfunction isLastTraversableNode(node) {\n  return [\"html\", \"body\", \"#document\"].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.pageXOffset,\n    scrollTop: element.pageYOffset\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === \"html\") {\n    return node;\n  }\n  const result = (\n    // Step into the shadow DOM of the parent of a slotted node.\n    node.assignedSlot || // DOM Element detected.\n    node.parentNode || // ShadowRoot detected.\n    isShadowRoot(node) && node.host || // Fallback.\n    getDocumentElement(node)\n  );\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nexport {\n  getComputedStyle,\n  getContainingBlock,\n  getDocumentElement,\n  getNearestOverflowAncestor,\n  getNodeName,\n  getNodeScroll,\n  getOverflowAncestors,\n  getParentNode,\n  getWindow,\n  isContainingBlock,\n  isElement,\n  isHTMLElement,\n  isLastTraversableNode,\n  isNode,\n  isOverflowElement,\n  isShadowRoot,\n  isTableElement,\n  isWebKit\n};\n","import { autoPlacement as autoPlacement$1, shift as shift$1, computePosition as computePosition$1 } from \"../../core/dist/floating-ui.core.js\";\nimport { detectOverflow, offset } from \"../../core/dist/floating-ui.core.js\";\nimport { createCoords, round, max, min, rectToClientRect } from \"../../utils/dist/floating-ui.utils.js\";\nimport { getDocumentElement, isElement, isHTMLElement, getNodeName, isOverflowElement, getNodeScroll, getWindow, isTableElement, getComputedStyle, isContainingBlock, getContainingBlock, getOverflowAncestors, getParentNode, isLastTraversableNode, isWebKit } from \"../../utils/dist/floating-ui.utils.dom.js\";\nfunction getCssDimensions(element) {\n  const css = getComputedStyle(element);\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}\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\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  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}\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}\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 = currentWin.frameElement;\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 = currentWin.frameElement;\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\nconst topLayerSelectors = [\":popover-open\", \":modal\"];\nfunction isTopLayer(floating) {\n  return topLayerSelectors.some((selector) => {\n    try {\n      return floating.matches(selector);\n    } catch (e) {\n      return false;\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  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n  };\n}\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\nfunction getWindowScrollBarX(element) {\n  return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\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}\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}\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === \"fixed\");\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === \"viewport\") {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === \"document\") {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      ...clippingAncestor,\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle(parentNode).position === \"fixed\" || hasFixedPositionAncestor(parentNode, stopNode);\n}\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  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      result = result.filter((ancestor) => ancestor !== currentNode);\n    } else {\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === \"clippingAncestors\" ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === \"fixed\";\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== \"body\" || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n  const x = rect.left + scroll.scrollLeft - offsets.x;\n  const y = rect.top + scroll.scrollTop - offsets.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle(element).position === \"fixed\") {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  return element.offsetParent;\n}\nfunction getOffsetParent(element, polyfill) {\n  const window = getWindow(element);\n  if (!isHTMLElement(element) || isTopLayer(element)) {\n    return window;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === \"static\") {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && (getNodeName(offsetParent) === \"html\" || getNodeName(offsetParent) === \"body\" && getComputedStyle(offsetParent).position === \"static\" && !isContainingBlock(offsetParent))) {\n    return window;\n  }\n  return offsetParent || getContainingBlock(element) || window;\n}\nconst getElementRects = async function(data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      ...await getDimensionsFn(data.floating)\n    }\n  };\n};\nfunction isRTL(element) {\n  return getComputedStyle(element).direction === \"rtl\";\n}\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\nconst autoPlacement = autoPlacement$1;\nconst shift = shift$1;\nconst computePosition = (reference, floating, options) => {\n  const cache = /* @__PURE__ */ new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\nexport {\n  autoPlacement,\n  computePosition,\n  detectOverflow,\n  getOverflowAncestors,\n  offset,\n  platform,\n  shift\n};\n","import { useRef } from \"react\";\nimport { computePosition, autoPlacement, shift } from \"../node_modules/@floating-ui/dom/dist/floating-ui.dom.js\";\nimport { offset } from \"../node_modules/@floating-ui/core/dist/floating-ui.core.js\";\nconst useComputeFloatingPosition = () => {\n  const referenceElementRef = useRef(null);\n  const floatingElementRef = useRef(null);\n  const computeFloatingPosition = async (params = {}) => {\n    if (!referenceElementRef.current || !floatingElementRef.current) {\n      return;\n    }\n    const {\n      x,\n      y\n    } = await computePosition(referenceElementRef.current, floatingElementRef.current, {\n      middleware: [autoPlacement(params.autoPlacement), offset(params.offset), shift(params.shift)]\n    });\n    Object.assign(floatingElementRef.current.style, {\n      left: `${x}px`,\n      top: `${y}px`\n    });\n  };\n  return {\n    referenceElementRef,\n    floatingElementRef,\n    computeFloatingPosition\n  };\n};\nexport {\n  useComputeFloatingPosition\n};\n","import { useEffect } from \"react\";\nconst useOutsideClick = (ref, handler) => {\n  useEffect(() => {\n    const listener = (event) => {\n      if (!ref.current || ref.current.contains(event.target)) {\n        return;\n      }\n      handler();\n    };\n    document.addEventListener(\"mousedown\", listener);\n    document.addEventListener(\"touchstart\", listener);\n    return () => {\n      document.removeEventListener(\"mousedown\", listener);\n      document.removeEventListener(\"touchstart\", listener);\n    };\n  }, [ref, handler]);\n};\nexport {\n  useOutsideClick\n};\n"],"x_google_ignoreList":[1,2,3,4],"mappings":"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"}