{"version":3,"sources":["../../registry/default/ui/hover-card.tsx","../../../../node_modules/.pnpm/@babel+runtime@7.22.3/node_modules/@babel/runtime/helpers/esm/extends.js","../../../../node_modules/.pnpm/@radix-ui+primitive@1.0.1/node_modules/@radix-ui/primitive/dist/packages/core/primitive/src/primitive.tsx","../../../../node_modules/.pnpm/@radix-ui+react-context@1.0.1_@types+react@18.2.65_react@18.2.0/node_modules/@radix-ui/react-context/dist/packages/react/context/src/createContext.tsx","../../../../node_modules/.pnpm/@radix-ui+react-use-callback-ref@1.0.1_@types+react@18.2.65_react@18.2.0/node_modules/@radix-ui/react-use-callback-ref/dist/packages/react/use-callback-ref/src/useCallbackRef.tsx","../../../../node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.0.1_@types+react@18.2.65_react@18.2.0/node_modules/@radix-ui/react-use-controllable-state/dist/packages/react/use-controllable-state/src/useControllableState.tsx","../../../../node_modules/.pnpm/@radix-ui+react-compose-refs@1.0.1_@types+react@18.2.65_react@18.2.0/node_modules/@radix-ui/react-compose-refs/dist/packages/react/compose-refs/src/composeRefs.tsx","../../../../node_modules/.pnpm/@babel+runtime@7.22.6/node_modules/@babel/runtime/helpers/esm/extends.js","../../../../node_modules/.pnpm/@floating-ui+core@1.2.6/node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../../../node_modules/.pnpm/@floating-ui+dom@1.2.9/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../../../node_modules/.pnpm/@floating-ui+react-dom@2.0.0_react-dom@18.2.0_react@18.2.0__react@18.2.0/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js","../../../../node_modules/.pnpm/@radix-ui+react-slot@1.0.2_@types+react@18.2.65_react@18.2.0/node_modules/@radix-ui/react-slot/dist/packages/react/slot/src/Slot.tsx","../../../../node_modules/.pnpm/@radix-ui+react-primitive@1.0.3_@types+react-dom@18.2.22_@types+react@18.2.65_react-dom@18.2._c26rkpxnhr3o57o2cowwo23hui/node_modules/@radix-ui/react-primitive/dist/packages/react/primitive/src/Primitive.tsx","../../../../node_modules/.pnpm/@radix-ui+react-use-layout-effect@1.0.1_@types+react@18.2.65_react@18.2.0/node_modules/@radix-ui/react-use-layout-effect/dist/packages/react/use-layout-effect/src/useLayoutEffect.tsx","../../../../node_modules/.pnpm/@radix-ui+react-use-size@1.0.1_@types+react@18.2.65_react@18.2.0/node_modules/@radix-ui/react-use-size/dist/packages/react/use-size/src/useSize.tsx","../../../../node_modules/.pnpm/@radix-ui+react-popper@1.1.2_@types+react-dom@18.2.22_@types+react@18.2.65_react-dom@18.2.0_react@18.2.0__react@18.2.0/node_modules/@radix-ui/react-popper/dist/packages/react/popper/src/Popper.tsx","../../../../node_modules/.pnpm/@radix-ui+react-presence@1.0.1_@types+react-dom@18.2.22_@types+react@18.2.65_react-dom@18.2.0_react@18.2.0__react@18.2.0/node_modules/@radix-ui/react-presence/dist/packages/react/presence/src/useStateMachine.tsx","../../../../node_modules/.pnpm/@radix-ui+react-presence@1.0.1_@types+react-dom@18.2.22_@types+react@18.2.65_react-dom@18.2.0_react@18.2.0__react@18.2.0/node_modules/@radix-ui/react-presence/dist/packages/react/presence/src/Presence.tsx","../../../../node_modules/.pnpm/@radix-ui+react-use-escape-keydown@1.0.3_@types+react@18.2.65_react@18.2.0/node_modules/@radix-ui/react-use-escape-keydown/dist/packages/react/use-escape-keydown/src/useEscapeKeydown.tsx","../../../../node_modules/.pnpm/@radix-ui+react-dismissable-layer@1.0.4_@types+react-dom@18.2.22_@types+react@18.2.65_react-d_4h2vdlgmnxxivuzbe2ablhncyi/node_modules/@radix-ui/react-dismissable-layer/dist/packages/react/dismissable-layer/src/DismissableLayer.tsx","../../../../node_modules/.pnpm/@radix-ui+react-hover-card@1.0.6_@types+react-dom@18.2.22_@types+react@18.2.65_react-dom@18.2_3nucgrfsb2an6csxgbhgt3hjeq/node_modules/@radix-ui/react-hover-card/dist/packages/react/hover-card/src/HoverCard.tsx","../../lib/utils.ts"],"names":["hover_card_exports","__export","HoverCard","HoverCardContent","HoverCardTrigger","__toCommonJS","React","_extends","target","i","source","key","composeEventHandlers","originalEventHandler","ourEventHandler","checkForDefaultPrevented","event","defaultPrevented","createContextScope","scopeName","createContextScopeDeps","defaultContexts","createContext","rootComponentName","defaultContext","BaseContext","index","length","Provider","props","scope","children","context","Context","value","Object","values","$3bkAK$createElement","useContext","consumerName","undefined","Error","displayName","createScope","scopeContexts","map","contexts","composeContextScopes","scopes","baseScope","scopeHooks","useScope","overrideScopes","nextScopes","reduce","currentScope","useCallbackRef","callback","callbackRef","current","args","_callbackRef$current","useControllableState","prop","defaultProp","onChange","uncontrolledProp","setUncontrolledProp","useUncontrolledState","isControlled","handleChange","setValue","nextValue","uncontrolledState","prevValueRef","setRef","ref","composeRefs","refs","node","forEach","useComposedRefs","getAlignment","placement","getLengthFromAxis","axis","getSide","getMainAxisFromPlacement","computeCoordsFromPlacement","_ref","rtl","reference","floating","commonX","commonY","mainAxis","commonAlign","side","isVertical","coords","computePosition","config","strategy","middleware","platform","validMiddleware","rects","x","y","statefulPlacement","middlewareData","resetCount","name","fn","nextX","nextY","data","reset","expandPaddingObject","padding","getSideObjectFromPadding","rectToClientRect","rect","detectOverflow","state","options","_await$platform$isEle","elements","boundary","rootBoundary","elementContext","altBoundary","paddingObject","element","clippingClientRect","offsetParent","offsetScale","elementClientRect","min","max","within","min$1","max$1","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","offset","alignmentOffset","sides","oppositeSideMap","getOppositePlacement","getAlignmentSides","alignment","mainAlignmentSide","oppositeAlignmentMap","getOppositeAlignmentPlacement","getExpandedPlacements","oppositePlacement","getSideList","isStart","lr","rl","tb","bt","getOppositeAxisPlacements","flipAlignment","direction","list","flip","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","isBasePlacement","fallbackPlacements","placements","overflow","overflows","overflowsData","main","cross","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","resetPlacement","d","a","b","_overflowsData$map$so","acc","getSideOffsets","isAnySideFullyClipped","hide","offsets","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","crossAxis","alignmentAxis","diffCoords","getCrossAxis","shift","limiter","mainAxisCoord","crossAxisCoord","minSide","maxSide","limitedCoords","limitShift","rawOffset","computedOffset","len","limitMin","limitMax","_middlewareData$offse","_middlewareData$offse2","isOriginSide","size","apply","isXAxis","width","height","heightSide","widthSide","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","maximumClippingWidth","maximumClippingHeight","xMin","xMax","yMin","yMax","nextDimensions","getWindow","_node$ownerDocument","getComputedStyle$1","isNode","getNodeName","isHTMLElement","isElement","isShadowRoot","OwnElement","isOverflowElement","overflowX","overflowY","display","isTableElement","isContainingBlock","safari","isSafari","css","isLastTraversableNode","round","getCssDimensions","hasOffset","offsetWidth","offsetHeight","shouldFallback","unwrapElement","FALLBACK_SCALE","getScale","domElement","fallback","noOffsets","getVisualOffsets","isFixed","floatingOffsetParent","_win$visualViewport","_win$visualViewport2","win","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","offsetWin","currentIFrame","iframeScale","iframeRect","getDocumentElement","getNodeScroll","convertOffsetParentRelativeRectToViewportRelativeRect","isOffsetParentAnElement","documentElement","scroll","offsetRect","getWindowScrollBarX","getDocumentRect","html","body","getParentNode","result","getNearestOverflowAncestor","parentNode","getOverflowAncestors","scrollableAncestor","isBody","getViewportRect","visualViewport","visualViewportBased","getInnerBoundingClientRect","top","left","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","getClippingElementAncestors","cache","cachedResult","el","currentContainingBlockComputedStyle","elementIsFixed","currentNode","computedStyle","currentNodeIsContaining","ancestor","getClippingRect","clippingAncestors","firstClippingAncestor","clippingRect","accRect","getDimensions","getTrueOffsetParent","polyfill","getContainingBlock","getOffsetParent","window","getRectRelativeToOffsetParent","getOffsetParentFn","getDimensionsFn","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","animationFrame","ancestors","isVisualViewport","observer","frameId","prevRefRect","frameLoop","nextRefRect","_observer","mergedOptions","platformWithCache","import_react","ReactDOM","isRef","deepEqual","keys","getDPR","roundByDPR","dpr","useLatestRef","useFloating","externalReference","externalFloating","transform","whileElementsMounted","open","setData","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","setReference","referenceRef","setFloating","floatingRef","referenceEl","floatingEl","dataRef","whileElementsMountedRef","platformRef","fullData","isMountedRef","floatingStyles","initialStyles","Slot","forwardedRef","slotProps","childrenArray","toArray","slottable","find","isSlottable","newElement","newChildren","child","count","only","$9IrjX$createElement","$5e63c961fc1ce211$var$SlotClone","SlotClone","mergeProps","Slottable","$9IrjX$Fragment","type","childProps","overrideProps","propName","slotPropValue","childPropValue","test","filter","Boolean","join","NODES","Primitive","primitive","Node","asChild","primitiveProps","Comp","Symbol","for","$4q5Fq$createElement","dispatchDiscreteCustomEvent","dispatchEvent","useLayoutEffect","globalThis","document","useSize","setSize","resizeObserver","ResizeObserver","entries","Array","isArray","entry","borderSizeEntry","borderSize","observe","box","unobserve","POPPER_NAME","createPopperContext","createPopperScope","PopperProvider","usePopperContext","Popper","__scopePopper","anchor","setAnchor","$kY93V$createElement","$cf1ac5d9fe0e8206$var$PopperProvider","ANCHOR_NAME","PopperAnchor","virtualRef","anchorProps","composedRefs","onAnchorChange","$8927f6f2acc4f386$export$250ffa63cdc0d034","CONTENT_NAME","PopperContentProvider","useContentContext","PopperContent","_arrowSize$width","_arrowSize$height","_middlewareData$arrow","_middlewareData$arrow2","_middlewareData$arrow3","_middlewareData$trans","_middlewareData$trans2","_middlewareData$hide","sideOffset","align","alignOffset","arrowPadding","collisionBoundary","collisionPadding","collisionPaddingProp","sticky","hideWhenDetached","avoidCollisions","onPlaced","contentProps","content","setContent","setArrow","arrowSize","arrowWidth","arrowHeight","desiredPlacement","right","bottom","hasExplicitBoundaries","isNotNull","isPositioned","anchorWidth","anchorHeight","contentStyle","style","setProperty","floatingUIarrow","transformOrigin","placedSide","placedAlign","getSideAndAlignFromPlacement","handlePlaced","arrowX","arrowY","cannotCenterArrow","centerOffset","contentZIndex","setContentZIndex","getComputedStyle","zIndex","minWidth","dir","$cf1ac5d9fe0e8206$var$PopperContentProvider","animation","opacity","referenceHidden","_middlewareData$arrow4","_middlewareData$arrow5","_middlewareData$arrow6","_middlewareData$arrow7","_middlewareData$arrow8","isArrowHidden","noArrowAlign","start","end","arrowXCenter","arrowYCenter","split","Root","Anchor","Content","useStateMachine","initialState","machine","nextState","Presence","present","presence","usePresence","isPresent","setNode","stylesRef","prevPresentRef","prevAnimationNameRef","send","mounted","UNMOUNT","ANIMATION_OUT","unmountSuspended","MOUNT","ANIMATION_END","unmounted","currentAnimationName","getAnimationName","styles","wasPresent","prevAnimationName","handleAnimationEnd","isCurrentAnimation","includes","animationName","handleAnimationStart","addEventListener","removeEventListener","useEscapeKeydown","onEscapeKeyDownProp","ownerDocument","onEscapeKeyDown","handleKeyDown","CONTEXT_UPDATE","POINTER_DOWN_OUTSIDE","FOCUS_OUTSIDE","originalBodyPointerEvents","DismissableLayerContext","layers","Set","layersWithOutsidePointerEventsDisabled","branches","DismissableLayer","disableOutsidePointerEvents","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","layerProps","force","from","highestLayerWithOutsidePointerEventsDisabled","slice","highestLayerWithOutsidePointerEventsDisabledIndex","indexOf","isBodyPointerEventsDisabled","isPointerEventsEnabled","pointerDownOutside","usePointerDownOutside","isPointerDownOnBranch","some","branch","contains","focusOutside","useFocusOutside","preventDefault","pointerEvents","add","dispatchUpdate","delete","handleUpdate","$kqwpH$createElement","onFocusCapture","onBlurCapture","onPointerDownCapture","handlePointerDownOutside","isPointerInsideReactTreeRef","handleClickRef","handlePointerDown","handleAndDispatchPointerDownOutsideEvent","handleAndDispatchCustomEvent","eventDetail","discrete","originalEvent","pointerType","once","timerId","setTimeout","clearTimeout","handleFocusOutside","isFocusInsideReactTreeRef","handleFocus","CustomEvent","handler","detail","bubbles","cancelable","originalBodyUserSelect","HOVERCARD_NAME","createHoverCardContext","createHoverCardScope","usePopperScope","HoverCardProvider","useHoverCardContext","__scopeHoverCard","openProp","defaultOpen","onOpenChange","openDelay","closeDelay","popperScope","openTimerRef","closeTimerRef","hasSelectionRef","isPointerDownOnContentRef","setOpen","handleOpen","handleClose","handleDismiss","$eRSIW$createElement","$cef8881cdc69808e$var$HoverCardProvider","$cf1ac5d9fe0e8206$export$be92b6f5f03c0fe9","TRIGGER_NAME","triggerProps","$cf1ac5d9fe0e8206$export$b688253958b8dfe7","onPointerEnter","excludeTouch","onOpen","onPointerLeave","onClose","onFocus","onBlur","onTouchStart","PORTAL_NAME","PortalProvider","usePortalContext","forceMount","portalContext","$921a889cee6df7e8$export$99c2b779aa4e8b8b","$cef8881cdc69808e$var$HoverCardContentImpl","HoverCardContentImpl","containSelection","setContainSelection","userSelect","webkitUserSelect","handlePointerUp","_document$getSelectio","getSelection","toString","getTabbableNodes","tabbable","setAttribute","$5cb92bef7577960e$export$177fb62ff3ec1f22","$cf1ac5d9fe0e8206$export$7c6e2c02157bb7d2","onPointerDown","currentTarget","WebkitUserSelect","eventHandler","container","nodes","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","tabIndex","FILTER_ACCEPT","FILTER_SKIP","nextNode","push","Trigger","import_clsx","import_tailwind_merge","cn","inputs","import_jsx_runtime","$cef8881cdc69808e$export$be92b6f5f03c0fe9","$cef8881cdc69808e$export$41fb9f06171c75f4","className","$cef8881cdc69808e$export$7c6e2c02157bb7d2"],"mappings":"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","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst HoverCard = HoverCardPrimitive.Root\n\nconst HoverCardTrigger = HoverCardPrimitive.Trigger\n\nconst HoverCardContent = React.forwardRef<\n  React.ElementRef<typeof HoverCardPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n  <HoverCardPrimitive.Content\n    ref={ref}\n    align={align}\n    sideOffset={sideOffset}\n    className={cn(\n      \"z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n      className\n    )}\n    {...props}\n  />\n))\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n","export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}","function composeEventHandlers<E>(\n  originalEventHandler?: (event: E) => void,\n  ourEventHandler?: (event: E) => void,\n  { checkForDefaultPrevented = true } = {}\n) {\n  return function handleEvent(event: E) {\n    originalEventHandler?.(event);\n\n    if (checkForDefaultPrevented === false || !((event as unknown) as Event).defaultPrevented) {\n      return ourEventHandler?.(event);\n    }\n  };\n}\n\nexport { composeEventHandlers };\n","import * as React from 'react';\n\nfunction createContext<ContextValueType extends object | null>(\n  rootComponentName: string,\n  defaultContext?: ContextValueType\n) {\n  const Context = React.createContext<ContextValueType | undefined>(defaultContext);\n\n  function Provider(props: ContextValueType & { children: React.ReactNode }) {\n    const { children, ...context } = props;\n    // Only re-memoize when prop values change\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n    return <Context.Provider value={value}>{children}</Context.Provider>;\n  }\n\n  function useContext(consumerName: string) {\n    const context = React.useContext(Context);\n    if (context) return context;\n    if (defaultContext !== undefined) return defaultContext;\n    // if a defaultContext wasn't specified, it's a required context.\n    throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n  }\n\n  Provider.displayName = rootComponentName + 'Provider';\n  return [Provider, useContext] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * createContextScope\n * -----------------------------------------------------------------------------------------------*/\n\ntype Scope<C = any> = { [scopeName: string]: React.Context<C>[] } | undefined;\ntype ScopeHook = (scope: Scope) => { [__scopeProp: string]: Scope };\ninterface CreateScope {\n  scopeName: string;\n  (): ScopeHook;\n}\n\nfunction createContextScope(scopeName: string, createContextScopeDeps: CreateScope[] = []) {\n  let defaultContexts: any[] = [];\n\n  /* -----------------------------------------------------------------------------------------------\n   * createContext\n   * ---------------------------------------------------------------------------------------------*/\n\n  function createContext<ContextValueType extends object | null>(\n    rootComponentName: string,\n    defaultContext?: ContextValueType\n  ) {\n    const BaseContext = React.createContext<ContextValueType | undefined>(defaultContext);\n    const index = defaultContexts.length;\n    defaultContexts = [...defaultContexts, defaultContext];\n\n    function Provider(\n      props: ContextValueType & { scope: Scope<ContextValueType>; children: React.ReactNode }\n    ) {\n      const { scope, children, ...context } = props;\n      const Context = scope?.[scopeName][index] || BaseContext;\n      // Only re-memoize when prop values change\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n      const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n      return <Context.Provider value={value}>{children}</Context.Provider>;\n    }\n\n    function useContext(consumerName: string, scope: Scope<ContextValueType | undefined>) {\n      const Context = scope?.[scopeName][index] || BaseContext;\n      const context = React.useContext(Context);\n      if (context) return context;\n      if (defaultContext !== undefined) return defaultContext;\n      // if a defaultContext wasn't specified, it's a required context.\n      throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n    }\n\n    Provider.displayName = rootComponentName + 'Provider';\n    return [Provider, useContext] as const;\n  }\n\n  /* -----------------------------------------------------------------------------------------------\n   * createScope\n   * ---------------------------------------------------------------------------------------------*/\n\n  const createScope: CreateScope = () => {\n    const scopeContexts = defaultContexts.map((defaultContext) => {\n      return React.createContext(defaultContext);\n    });\n    return function useScope(scope: Scope) {\n      const contexts = scope?.[scopeName] || scopeContexts;\n      return React.useMemo(\n        () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n        [scope, contexts]\n      );\n    };\n  };\n\n  createScope.scopeName = scopeName;\n  return [createContext, composeContextScopes(createScope, ...createContextScopeDeps)] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * composeContextScopes\n * -----------------------------------------------------------------------------------------------*/\n\nfunction composeContextScopes(...scopes: CreateScope[]) {\n  const baseScope = scopes[0];\n  if (scopes.length === 1) return baseScope;\n\n  const createScope: CreateScope = () => {\n    const scopeHooks = scopes.map((createScope) => ({\n      useScope: createScope(),\n      scopeName: createScope.scopeName,\n    }));\n\n    return function useComposedScopes(overrideScopes) {\n      const nextScopes = scopeHooks.reduce((nextScopes, { useScope, scopeName }) => {\n        // We are calling a hook inside a callback which React warns against to avoid inconsistent\n        // renders, however, scoping doesn't have render side effects so we ignore the rule.\n        // eslint-disable-next-line react-hooks/rules-of-hooks\n        const scopeProps = useScope(overrideScopes);\n        const currentScope = scopeProps[`__scope${scopeName}`];\n        return { ...nextScopes, ...currentScope };\n      }, {});\n\n      return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n    };\n  };\n\n  createScope.scopeName = baseScope.scopeName;\n  return createScope;\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nexport { createContext, createContextScope };\nexport type { CreateScope, Scope };\n","import * as React from 'react';\n\n/**\n * A custom hook that converts a callback to a ref to avoid triggering re-renders when passed as a\n * prop or avoid re-executing effects when passed as a dependency\n */\nfunction useCallbackRef<T extends (...args: any[]) => any>(callback: T | undefined): T {\n  const callbackRef = React.useRef(callback);\n\n  React.useEffect(() => {\n    callbackRef.current = callback;\n  });\n\n  // https://github.com/facebook/react/issues/19240\n  return React.useMemo(() => ((...args) => callbackRef.current?.(...args)) as T, []);\n}\n\nexport { useCallbackRef };\n","import * as React from 'react';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\n\ntype UseControllableStateParams<T> = {\n  prop?: T | undefined;\n  defaultProp?: T | undefined;\n  onChange?: (state: T) => void;\n};\n\ntype SetStateFn<T> = (prevState?: T) => T;\n\nfunction useControllableState<T>({\n  prop,\n  defaultProp,\n  onChange = () => {},\n}: UseControllableStateParams<T>) {\n  const [uncontrolledProp, setUncontrolledProp] = useUncontrolledState({ defaultProp, onChange });\n  const isControlled = prop !== undefined;\n  const value = isControlled ? prop : uncontrolledProp;\n  const handleChange = useCallbackRef(onChange);\n\n  const setValue: React.Dispatch<React.SetStateAction<T | undefined>> = React.useCallback(\n    (nextValue) => {\n      if (isControlled) {\n        const setter = nextValue as SetStateFn<T>;\n        const value = typeof nextValue === 'function' ? setter(prop) : nextValue;\n        if (value !== prop) handleChange(value as T);\n      } else {\n        setUncontrolledProp(nextValue);\n      }\n    },\n    [isControlled, prop, setUncontrolledProp, handleChange]\n  );\n\n  return [value, setValue] as const;\n}\n\nfunction useUncontrolledState<T>({\n  defaultProp,\n  onChange,\n}: Omit<UseControllableStateParams<T>, 'prop'>) {\n  const uncontrolledState = React.useState<T | undefined>(defaultProp);\n  const [value] = uncontrolledState;\n  const prevValueRef = React.useRef(value);\n  const handleChange = useCallbackRef(onChange);\n\n  React.useEffect(() => {\n    if (prevValueRef.current !== value) {\n      handleChange(value as T);\n      prevValueRef.current = value;\n    }\n  }, [value, prevValueRef, handleChange]);\n\n  return uncontrolledState;\n}\n\nexport { useControllableState };\n","import * as React from 'react';\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n  if (typeof ref === 'function') {\n    ref(value);\n  } else if (ref !== null && ref !== undefined) {\n    (ref as React.MutableRefObject<T>).current = value;\n  }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs<T>(...refs: PossibleRef<T>[]) {\n  return (node: T) => refs.forEach((ref) => setRef(ref, node));\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs<T>(...refs: PossibleRef<T>[]) {\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n","export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}","function getAlignment(placement) {\n  return placement.split('-')[1];\n}\n\nfunction getLengthFromAxis(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\n\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\n\nfunction getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].includes(getSide(placement)) ? 'x' : 'y';\n}\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const mainAxis = getMainAxisFromPlacement(placement);\n  const length = getLengthFromAxis(mainAxis);\n  const commonAlign = reference[length] / 2 - floating[length] / 2;\n  const side = getSide(placement);\n  const isVertical = mainAxis === 'x';\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[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain positioning strategy.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n      continue;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\n\nfunction getSideObjectFromPadding(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\n\nfunction rectToClientRect(rect) {\n  return {\n    ...rect,\n    top: rect.y,\n    left: rect.x,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = options;\n  const paddingObject = getSideObjectFromPadding(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    ...rects.floating,\n    x,\n    y\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\nconst min = Math.min;\nconst max = Math.max;\n\nfunction within(min$1, value, max$1) {\n  return max(min$1, min(value, max$1));\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = options || {};\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements\n    } = state;\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getSideObjectFromPadding(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getMainAxisFromPlacement(placement);\n    const length = getLengthFromAxis(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min = paddingObject[minProp];\n    const max = clientSize - arrowDimensions[length] - paddingObject[maxProp];\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = within(min, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. This stops `shift()` from taking action, but can\n    // be worked around by calling it again after the `arrow()` if desired.\n    const shouldAddOffset = getAlignment(placement) != null && center != offset && rects.reference[length] / 2 - (center < min ? paddingObject[minProp] : paddingObject[maxProp]) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min ? min - center : max - center : 0;\n    return {\n      [axis]: coords[axis] - alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset\n      }\n    };\n  }\n});\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst allPlacements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-start\", side + \"-end\"), []);\n\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\n\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const mainAxis = getMainAxisFromPlacement(placement);\n  const length = getLengthFromAxis(mainAxis);\n  let mainAlignmentSide = mainAxis === '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 {\n    main: mainAlignmentSide,\n    cross: getOppositePlacement(mainAlignmentSide)\n  };\n}\n\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = allPlacements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = options;\n      const placements = alignment !== undefined || allowedPlacements === allPlacements ? 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[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const {\n        main,\n        cross\n      } = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[main], overflow[cross]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\n\nfunction getSideList(side, isStart, rtl) {\n  const lr = ['left', 'right'];\n  const rl = ['right', 'left'];\n  const tb = ['top', 'bottom'];\n  const bt = ['bottom', 'top'];\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rl : lr;\n      return isStart ? lr : rl;\n    case 'left':\n    case 'right':\n      return isStart ? tb : bt;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = options;\n      const side = getSide(placement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const {\n          main,\n          cross\n        } = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[main], overflow[cross]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          // Try next placement and re-run the lifecycle.\n          return {\n            data: {\n              index: nextIndex,\n              overflows: overflowsData\n            },\n            reset: {\n              placement: nextPlacement\n            }\n          };\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$map$so;\n                const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = options;\n      const {\n        rects\n      } = state;\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = options;\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getSideObjectFromPadding(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getMainAxisFromPlacement(placement) === 'x') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nasync function convertValueToCoords(state, value) {\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 = getMainAxisFromPlacement(placement) === 'x';\n  const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = typeof value === 'function' ? value(state) : value;\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: 0,\n    crossAxis: 0,\n    alignmentAxis: null,\n    ...rawValue\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (value) {\n  if (value === void 0) {\n    value = 0;\n  }\n  return {\n    name: 'offset',\n    options: value,\n    async fn(state) {\n      const {\n        x,\n        y\n      } = state;\n      const diffCoords = await convertValueToCoords(state, value);\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: diffCoords\n      };\n    }\n  };\n};\n\nfunction getCrossAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = options;\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const mainAxis = getMainAxisFromPlacement(getSide(placement));\n      const crossAxis = getCrossAxis(mainAxis);\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 = within(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 = within(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = options;\n      const coords = {\n        x,\n        y\n      };\n      const mainAxis = getMainAxisFromPlacement(placement);\n      const crossAxis = getCrossAxis(mainAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = typeof offset === 'function' ? offset(state) : offset;\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = ['top', 'left'].includes(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = options;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const axis = getMainAxisFromPlacement(placement);\n      const isXAxis = axis === 'x';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const overflowAvailableHeight = height - overflow[heightSide];\n      const overflowAvailableWidth = width - overflow[widthSide];\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if (isXAxis) {\n        const maximumClippingWidth = width - overflow.left - overflow.right;\n        availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n      } else {\n        const maximumClippingHeight = height - overflow.top - overflow.bottom;\n        availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isXAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, rectToClientRect, shift, size };\n","import { rectToClientRect, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { arrow, autoPlacement, detectOverflow, flip, hide, inline, limitShift, offset, shift, size } from '@floating-ui/core';\n\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\n\nfunction getComputedStyle$1(element) {\n  return getWindow(element).getComputedStyle(element);\n}\n\nfunction isNode(value) {\n  return value instanceof getWindow(value).Node;\n}\nfunction getNodeName(node) {\n  return isNode(node) ? (node.nodeName || '').toLowerCase() : '';\n}\n\nfunction isHTMLElement(value) {\n  return value instanceof getWindow(value).HTMLElement;\n}\nfunction isElement(value) {\n  return value instanceof getWindow(value).Element;\n}\nfunction isShadowRoot(node) {\n  // Browsers without `ShadowRoot` support.\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  const OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle$1(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 safari = isSafari();\n  const css = getComputedStyle$1(element);\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  return css.transform !== 'none' || css.perspective !== 'none' || !safari && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !safari && (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 isSafari() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n  return ['html', 'body', '#document'].includes(getNodeName(node));\n}\n\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    fallback: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nconst FALLBACK_SCALE = {\n  x: 1,\n  y: 1\n};\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return FALLBACK_SCALE;\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    fallback\n  } = getCssDimensions(domElement);\n  let x = (fallback ? round(rect.width) : rect.width) / width;\n  let y = (fallback ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = {\n  x: 0,\n  y: 0\n};\nfunction getVisualOffsets(element, isFixed, floatingOffsetParent) {\n  var _win$visualViewport, _win$visualViewport2;\n  if (isFixed === void 0) {\n    isFixed = true;\n  }\n  if (!isSafari()) {\n    return noOffsets;\n  }\n  const win = element ? getWindow(element) : window;\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== win) {\n    return noOffsets;\n  }\n  return {\n    x: ((_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) || 0,\n    y: ((_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) || 0\n  };\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = FALLBACK_SCALE;\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 = getVisualOffsets(domElement, isFixedStrategy, offsetParent);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentIFrame = win.frameElement;\n    while (currentIFrame && offsetParent && offsetWin !== win) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle(currentIFrame);\n      iframeRect.x += (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      iframeRect.y += (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 += iframeRect.x;\n      y += iframeRect.y;\n      currentIFrame = getWindow(currentIFrame).frameElement;\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\nfunction getDocumentElement(node) {\n  return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;\n}\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}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  if (offsetParent === documentElement) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = {\n    x: 1,\n    y: 1\n  };\n  const offsets = {\n    x: 0,\n    y: 0\n  };\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n  };\n}\n\nfunction getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\n\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    // `getParentNode` will never return a `Document` due to the fallback\n    // check, so it's either the <html> or <body> element.\n    return parentNode.ownerDocument.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\n\nfunction getOverflowAncestors(node, list) {\n  var _node$ownerDocument;\n  if (list === void 0) {\n    list = [];\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor));\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 = isSafari();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : {\n    x: 1,\n    y: 1\n  };\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$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  return getCssDimensions(element);\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  return element.offsetParent;\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}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const window = getWindow(element);\n  if (!isHTMLElement(element)) {\n    return window;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n    return window;\n  }\n  return offsetParent || getContainingBlock(element) || window;\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 = {\n    x: 0,\n    y: 0\n  };\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, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nconst platform = {\n  getClippingRect,\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  isElement,\n  getDimensions,\n  getOffsetParent,\n  getDocumentElement,\n  getScale,\n  async getElementRects(_ref) {\n    let {\n      reference,\n      floating,\n      strategy\n    } = _ref;\n    const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n    const getDimensionsFn = this.getDimensions;\n    return {\n      reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),\n      floating: {\n        x: 0,\n        y: 0,\n        ...(await getDimensionsFn(floating))\n      }\n    };\n  },\n  getClientRects: element => Array.from(element.getClientRects()),\n  isRTL: element => getComputedStyle$1(element).direction === 'rtl'\n};\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = true,\n    animationFrame = false\n  } = options;\n  const ancestors = ancestorScroll || ancestorResize ? [...(isElement(reference) ? getOverflowAncestors(reference) : reference.contextElement ? getOverflowAncestors(reference.contextElement) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    // ignores Window, checks for [object VisualViewport]\n    const isVisualViewport = !isElement(ancestor) && ancestor.toString().includes('V');\n    if (ancestorScroll && (animationFrame ? isVisualViewport : true)) {\n      ancestor.addEventListener('scroll', update, {\n        passive: true\n      });\n    }\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  let observer = null;\n  if (elementResize) {\n    observer = new ResizeObserver(() => {\n      update();\n    });\n    isElement(reference) && !animationFrame && observer.observe(reference);\n    if (!isElement(reference) && reference.contextElement && !animationFrame) {\n      observer.observe(reference.contextElement);\n    }\n    observer.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _observer;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    (_observer = observer) == null ? void 0 : _observer.disconnect();\n    observer = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain CSS positioning\n * strategy.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = 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};\n\nexport { autoUpdate, computePosition, getOverflowAncestors, platform };\n","import { arrow as arrow$1, computePosition } from '@floating-ui/dom';\nexport { autoPlacement, autoUpdate, computePosition, detectOverflow, flip, getOverflowAncestors, hide, inline, limitShift, offset, platform, shift, size } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect, useEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => {\n  const {\n    element,\n    padding\n  } = options;\n  function isRef(value) {\n    return {}.hasOwnProperty.call(value, 'current');\n  }\n  return {\n    name: 'arrow',\n    options,\n    fn(args) {\n      if (element && isRef(element)) {\n        if (element.current != null) {\n          return arrow$1({\n            element: element.current,\n            padding\n          }).fn(args);\n        }\n        return {};\n      } else if (element) {\n        return arrow$1({\n          element,\n          padding\n        }).fn(args);\n      }\n      return {};\n    }\n  };\n};\n\nvar index = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n  if (typeof a !== typeof b) {\n    return false;\n  }\n  if (typeof a === 'function' && a.toString() === b.toString()) {\n    return true;\n  }\n  let length, i, keys;\n  if (a && b && typeof a == 'object') {\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;) {\n        if (!deepEqual(a[i], b[i])) {\n          return false;\n        }\n      }\n      return true;\n    }\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) {\n      return false;\n    }\n    for (i = length; i-- !== 0;) {\n      if (!{}.hasOwnProperty.call(b, keys[i])) {\n        return false;\n      }\n    }\n    for (i = length; i-- !== 0;) {\n      const key = keys[i];\n      if (key === '_owner' && a.$$typeof) {\n        continue;\n      }\n      if (!deepEqual(a[key], b[key])) {\n        return false;\n      }\n    }\n    return true;\n  }\n  return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n  if (typeof window === 'undefined') {\n    return 1;\n  }\n  const win = element.ownerDocument.defaultView || window;\n  return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n  const dpr = getDPR(element);\n  return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n  const ref = React.useRef(value);\n  index(() => {\n    ref.current = value;\n  });\n  return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/react\n */\nfunction useFloating(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform,\n    elements: {\n      reference: externalReference,\n      floating: externalFloating\n    } = {},\n    transform = true,\n    whileElementsMounted,\n    open\n  } = options;\n  const [data, setData] = React.useState({\n    x: 0,\n    y: 0,\n    strategy,\n    placement,\n    middlewareData: {},\n    isPositioned: false\n  });\n  const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n  if (!deepEqual(latestMiddleware, middleware)) {\n    setLatestMiddleware(middleware);\n  }\n  const [_reference, _setReference] = React.useState(null);\n  const [_floating, _setFloating] = React.useState(null);\n  const setReference = React.useCallback(node => {\n    if (node != referenceRef.current) {\n      referenceRef.current = node;\n      _setReference(node);\n    }\n  }, [_setReference]);\n  const setFloating = React.useCallback(node => {\n    if (node !== floatingRef.current) {\n      floatingRef.current = node;\n      _setFloating(node);\n    }\n  }, [_setFloating]);\n  const referenceEl = externalReference || _reference;\n  const floatingEl = externalFloating || _floating;\n  const referenceRef = React.useRef(null);\n  const floatingRef = React.useRef(null);\n  const dataRef = React.useRef(data);\n  const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n  const platformRef = useLatestRef(platform);\n  const update = React.useCallback(() => {\n    if (!referenceRef.current || !floatingRef.current) {\n      return;\n    }\n    const config = {\n      placement,\n      strategy,\n      middleware: latestMiddleware\n    };\n    if (platformRef.current) {\n      config.platform = platformRef.current;\n    }\n    computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n      const fullData = {\n        ...data,\n        isPositioned: true\n      };\n      if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n        dataRef.current = fullData;\n        ReactDOM.flushSync(() => {\n          setData(fullData);\n        });\n      }\n    });\n  }, [latestMiddleware, placement, strategy, platformRef]);\n  index(() => {\n    if (open === false && dataRef.current.isPositioned) {\n      dataRef.current.isPositioned = false;\n      setData(data => ({\n        ...data,\n        isPositioned: false\n      }));\n    }\n  }, [open]);\n  const isMountedRef = React.useRef(false);\n  index(() => {\n    isMountedRef.current = true;\n    return () => {\n      isMountedRef.current = false;\n    };\n  }, []);\n  index(() => {\n    if (referenceEl) referenceRef.current = referenceEl;\n    if (floatingEl) floatingRef.current = floatingEl;\n    if (referenceEl && floatingEl) {\n      if (whileElementsMountedRef.current) {\n        return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n      } else {\n        update();\n      }\n    }\n  }, [referenceEl, floatingEl, update, whileElementsMountedRef]);\n  const refs = React.useMemo(() => ({\n    reference: referenceRef,\n    floating: floatingRef,\n    setReference,\n    setFloating\n  }), [setReference, setFloating]);\n  const elements = React.useMemo(() => ({\n    reference: referenceEl,\n    floating: floatingEl\n  }), [referenceEl, floatingEl]);\n  const floatingStyles = React.useMemo(() => {\n    const initialStyles = {\n      position: strategy,\n      left: 0,\n      top: 0\n    };\n    if (!elements.floating) {\n      return initialStyles;\n    }\n    const x = roundByDPR(elements.floating, data.x);\n    const y = roundByDPR(elements.floating, data.y);\n    if (transform) {\n      return {\n        ...initialStyles,\n        transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n        ...(getDPR(elements.floating) >= 1.5 && {\n          willChange: 'transform'\n        })\n      };\n    }\n    return {\n      position: strategy,\n      left: x,\n      top: y\n    };\n  }, [strategy, transform, elements.floating, data.x, data.y]);\n  return React.useMemo(() => ({\n    ...data,\n    update,\n    refs,\n    elements,\n    floatingStyles\n  }), [data, update, refs, elements, floatingStyles]);\n}\n\nexport { arrow, useFloating };\n","import * as React from 'react';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\n\n/* -------------------------------------------------------------------------------------------------\n * Slot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotProps extends React.HTMLAttributes<HTMLElement> {\n  children?: React.ReactNode;\n}\n\nconst Slot = React.forwardRef<HTMLElement, SlotProps>((props, forwardedRef) => {\n  const { children, ...slotProps } = props;\n  const childrenArray = React.Children.toArray(children);\n  const slottable = childrenArray.find(isSlottable);\n\n  if (slottable) {\n    // the new element to render is the one passed as a child of `Slottable`\n    const newElement = slottable.props.children as React.ReactNode;\n\n    const newChildren = childrenArray.map((child) => {\n      if (child === slottable) {\n        // because the new element will be the one rendered, we are only interested\n        // in grabbing its children (`newElement.props.children`)\n        if (React.Children.count(newElement) > 1) return React.Children.only(null);\n        return React.isValidElement(newElement)\n          ? (newElement.props.children as React.ReactNode)\n          : null;\n      } else {\n        return child;\n      }\n    });\n\n    return (\n      <SlotClone {...slotProps} ref={forwardedRef}>\n        {React.isValidElement(newElement)\n          ? React.cloneElement(newElement, undefined, newChildren)\n          : null}\n      </SlotClone>\n    );\n  }\n\n  return (\n    <SlotClone {...slotProps} ref={forwardedRef}>\n      {children}\n    </SlotClone>\n  );\n});\n\nSlot.displayName = 'Slot';\n\n/* -------------------------------------------------------------------------------------------------\n * SlotClone\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotCloneProps {\n  children: React.ReactNode;\n}\n\nconst SlotClone = React.forwardRef<any, SlotCloneProps>((props, forwardedRef) => {\n  const { children, ...slotProps } = props;\n\n  if (React.isValidElement(children)) {\n    return React.cloneElement(children, {\n      ...mergeProps(slotProps, children.props),\n      ref: forwardedRef ? composeRefs(forwardedRef, (children as any).ref) : (children as any).ref,\n    });\n  }\n\n  return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n});\n\nSlotClone.displayName = 'SlotClone';\n\n/* -------------------------------------------------------------------------------------------------\n * Slottable\n * -----------------------------------------------------------------------------------------------*/\n\nconst Slottable = ({ children }: { children: React.ReactNode }) => {\n  return <>{children}</>;\n};\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype AnyProps = Record<string, any>;\n\nfunction isSlottable(child: React.ReactNode): child is React.ReactElement {\n  return React.isValidElement(child) && child.type === Slottable;\n}\n\nfunction mergeProps(slotProps: AnyProps, childProps: AnyProps) {\n  // all child props should override\n  const overrideProps = { ...childProps };\n\n  for (const propName in childProps) {\n    const slotPropValue = slotProps[propName];\n    const childPropValue = childProps[propName];\n\n    const isHandler = /^on[A-Z]/.test(propName);\n    if (isHandler) {\n      // if the handler exists on both, we compose them\n      if (slotPropValue && childPropValue) {\n        overrideProps[propName] = (...args: unknown[]) => {\n          childPropValue(...args);\n          slotPropValue(...args);\n        };\n      }\n      // but if it exists only on the slot, we use only this one\n      else if (slotPropValue) {\n        overrideProps[propName] = slotPropValue;\n      }\n    }\n    // if it's `style`, we merge them\n    else if (propName === 'style') {\n      overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n    } else if (propName === 'className') {\n      overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(' ');\n    }\n  }\n\n  return { ...slotProps, ...overrideProps };\n}\n\nconst Root = Slot;\n\nexport {\n  Slot,\n  Slottable,\n  //\n  Root,\n};\nexport type { SlotProps };\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { Slot } from '@radix-ui/react-slot';\n\nconst NODES = [\n  'a',\n  'button',\n  'div',\n  'form',\n  'h2',\n  'h3',\n  'img',\n  'input',\n  'label',\n  'li',\n  'nav',\n  'ol',\n  'p',\n  'span',\n  'svg',\n  'ul',\n] as const;\n\n// Temporary while we await merge of this fix:\n// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/55396\n// prettier-ignore\ntype PropsWithoutRef<P> = P extends any ? ('ref' extends keyof P ? Pick<P, Exclude<keyof P, 'ref'>> : P) : P;\ntype ComponentPropsWithoutRef<T extends React.ElementType> = PropsWithoutRef<\n  React.ComponentProps<T>\n>;\n\ntype Primitives = { [E in typeof NODES[number]]: PrimitiveForwardRefComponent<E> };\ntype PrimitivePropsWithRef<E extends React.ElementType> = React.ComponentPropsWithRef<E> & {\n  asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent<E extends React.ElementType>\n  extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce((primitive, node) => {\n  const Node = React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {\n    const { asChild, ...primitiveProps } = props;\n    const Comp: any = asChild ? Slot : node;\n\n    React.useEffect(() => {\n      (window as any)[Symbol.for('radix-ui')] = true;\n    }, []);\n\n    return <Comp {...primitiveProps} ref={forwardedRef} />;\n  });\n\n  Node.displayName = `Primitive.${node}`;\n\n  return { ...primitive, [node]: Node };\n}, {} as Primitives);\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n *  - discrete\n *  - continuous\n *  - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an  important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not nessesary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click 👎\n * target.dispatchEvent(new Event(‘click’))\n *\n * dispatching a custom type within a non-discrete event 👎\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}\n *\n * dispatching a custom type within a `discrete` event 👍\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's  not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */\n\nfunction dispatchDiscreteCustomEvent<E extends CustomEvent>(target: E['target'], event: E) {\n  if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Primitive;\n\nexport {\n  Primitive,\n  //\n  Root,\n  //\n  dispatchDiscreteCustomEvent,\n};\nexport type { ComponentPropsWithoutRef, PrimitivePropsWithRef };\n","import * as React from 'react';\n\n/**\n * On the server, React emits a warning when calling `useLayoutEffect`.\n * This is because neither `useLayoutEffect` nor `useEffect` run on the server.\n * We use this safe version which suppresses the warning by replacing it with a noop on the server.\n *\n * See: https://reactjs.org/docs/hooks-reference.html#uselayouteffect\n */\nconst useLayoutEffect = Boolean(globalThis?.document) ? React.useLayoutEffect : () => {};\n\nexport { useLayoutEffect };\n","/// <reference types=\"resize-observer-browser\" />\n\nimport * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\nfunction useSize(element: HTMLElement | null) {\n  const [size, setSize] = React.useState<{ width: number; height: number } | undefined>(undefined);\n\n  useLayoutEffect(() => {\n    if (element) {\n      // provide size as early as possible\n      setSize({ width: element.offsetWidth, height: element.offsetHeight });\n\n      const resizeObserver = new ResizeObserver((entries) => {\n        if (!Array.isArray(entries)) {\n          return;\n        }\n\n        // Since we only observe the one element, we don't need to loop over the\n        // array\n        if (!entries.length) {\n          return;\n        }\n\n        const entry = entries[0];\n        let width: number;\n        let height: number;\n\n        if ('borderBoxSize' in entry) {\n          const borderSizeEntry = entry['borderBoxSize'];\n          // iron out differences between browsers\n          const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n          width = borderSize['inlineSize'];\n          height = borderSize['blockSize'];\n        } else {\n          // for browsers that don't support `borderBoxSize`\n          // we calculate it ourselves to get the correct border box.\n          width = element.offsetWidth;\n          height = element.offsetHeight;\n        }\n\n        setSize({ width, height });\n      });\n\n      resizeObserver.observe(element, { box: 'border-box' });\n\n      return () => resizeObserver.unobserve(element);\n    } else {\n      // We only want to reset to `undefined` when the element becomes `null`,\n      // not if it changes to another element.\n      setSize(undefined);\n    }\n  }, [element]);\n\n  return size;\n}\n\nexport { useSize };\n","import * as React from 'react';\nimport {\n  useFloating,\n  autoUpdate,\n  offset,\n  shift,\n  limitShift,\n  hide,\n  arrow as floatingUIarrow,\n  flip,\n  size,\n} from '@floating-ui/react-dom';\nimport * as ArrowPrimitive from '@radix-ui/react-arrow';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useSize } from '@radix-ui/react-use-size';\n\nimport type { Placement, Middleware } from '@floating-ui/react-dom';\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\nimport type { Measurable } from '@radix-ui/rect';\n\nconst SIDE_OPTIONS = ['top', 'right', 'bottom', 'left'] as const;\nconst ALIGN_OPTIONS = ['start', 'center', 'end'] as const;\n\ntype Side = typeof SIDE_OPTIONS[number];\ntype Align = typeof ALIGN_OPTIONS[number];\n\n/* -------------------------------------------------------------------------------------------------\n * Popper\n * -----------------------------------------------------------------------------------------------*/\n\nconst POPPER_NAME = 'Popper';\n\ntype ScopedProps<P> = P & { __scopePopper?: Scope };\nconst [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\n\ntype PopperContextValue = {\n  anchor: Measurable | null;\n  onAnchorChange(anchor: Measurable | null): void;\n};\nconst [PopperProvider, usePopperContext] = createPopperContext<PopperContextValue>(POPPER_NAME);\n\ninterface PopperProps {\n  children?: React.ReactNode;\n}\nconst Popper: React.FC<PopperProps> = (props: ScopedProps<PopperProps>) => {\n  const { __scopePopper, children } = props;\n  const [anchor, setAnchor] = React.useState<Measurable | null>(null);\n  return (\n    <PopperProvider scope={__scopePopper} anchor={anchor} onAnchorChange={setAnchor}>\n      {children}\n    </PopperProvider>\n  );\n};\n\nPopper.displayName = POPPER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * PopperAnchor\n * -----------------------------------------------------------------------------------------------*/\n\nconst ANCHOR_NAME = 'PopperAnchor';\n\ntype PopperAnchorElement = React.ElementRef<typeof Primitive.div>;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface PopperAnchorProps extends PrimitiveDivProps {\n  virtualRef?: React.RefObject<Measurable>;\n}\n\nconst PopperAnchor = React.forwardRef<PopperAnchorElement, PopperAnchorProps>(\n  (props: ScopedProps<PopperAnchorProps>, forwardedRef) => {\n    const { __scopePopper, virtualRef, ...anchorProps } = props;\n    const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n    const ref = React.useRef<PopperAnchorElement>(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n\n    React.useEffect(() => {\n      // Consumer can anchor the popper to something that isn't\n      // a DOM node e.g. pointer position, so we override the\n      // `anchorRef` with their virtual ref in this case.\n      context.onAnchorChange(virtualRef?.current || ref.current);\n    });\n\n    return virtualRef ? null : <Primitive.div {...anchorProps} ref={composedRefs} />;\n  }\n);\n\nPopperAnchor.displayName = ANCHOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * PopperContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'PopperContent';\n\ntype PopperContentContextValue = {\n  placedSide: Side;\n  onArrowChange(arrow: HTMLSpanElement | null): void;\n  arrowX?: number;\n  arrowY?: number;\n  shouldHideArrow: boolean;\n};\n\nconst [PopperContentProvider, useContentContext] =\n  createPopperContext<PopperContentContextValue>(CONTENT_NAME);\n\ntype Boundary = Element | null;\n\ntype PopperContentElement = React.ElementRef<typeof Primitive.div>;\ninterface PopperContentProps extends PrimitiveDivProps {\n  side?: Side;\n  sideOffset?: number;\n  align?: Align;\n  alignOffset?: number;\n  arrowPadding?: number;\n  collisionBoundary?: Boundary | Boundary[];\n  collisionPadding?: number | Partial<Record<Side, number>>;\n  sticky?: 'partial' | 'always';\n  hideWhenDetached?: boolean;\n  avoidCollisions?: boolean;\n  onPlaced?: () => void;\n}\n\nconst PopperContent = React.forwardRef<PopperContentElement, PopperContentProps>(\n  (props: ScopedProps<PopperContentProps>, forwardedRef) => {\n    const {\n      __scopePopper,\n      side = 'bottom',\n      sideOffset = 0,\n      align = 'center',\n      alignOffset = 0,\n      arrowPadding = 0,\n      collisionBoundary = [],\n      collisionPadding: collisionPaddingProp = 0,\n      sticky = 'partial',\n      hideWhenDetached = false,\n      avoidCollisions = true,\n      onPlaced,\n      ...contentProps\n    } = props;\n\n    const context = usePopperContext(CONTENT_NAME, __scopePopper);\n\n    const [content, setContent] = React.useState<HTMLDivElement | null>(null);\n    const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n\n    const [arrow, setArrow] = React.useState<HTMLSpanElement | null>(null);\n    const arrowSize = useSize(arrow);\n    const arrowWidth = arrowSize?.width ?? 0;\n    const arrowHeight = arrowSize?.height ?? 0;\n\n    const desiredPlacement = (side + (align !== 'center' ? '-' + align : '')) as Placement;\n\n    const collisionPadding =\n      typeof collisionPaddingProp === 'number'\n        ? collisionPaddingProp\n        : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n\n    const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n    const hasExplicitBoundaries = boundary.length > 0;\n\n    const detectOverflowOptions = {\n      padding: collisionPadding,\n      boundary: boundary.filter(isNotNull),\n      // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n      altBoundary: hasExplicitBoundaries,\n    };\n\n    const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n      // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n      strategy: 'fixed',\n      placement: desiredPlacement,\n      whileElementsMounted: autoUpdate,\n      elements: {\n        reference: context.anchor,\n      },\n      middleware: [\n        offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n        avoidCollisions &&\n          shift({\n            mainAxis: true,\n            crossAxis: false,\n            limiter: sticky === 'partial' ? limitShift() : undefined,\n            ...detectOverflowOptions,\n          }),\n        avoidCollisions && flip({ ...detectOverflowOptions }),\n        size({\n          ...detectOverflowOptions,\n          apply: ({ elements, rects, availableWidth, availableHeight }) => {\n            const { width: anchorWidth, height: anchorHeight } = rects.reference;\n            const contentStyle = elements.floating.style;\n            contentStyle.setProperty('--radix-popper-available-width', `${availableWidth}px`);\n            contentStyle.setProperty('--radix-popper-available-height', `${availableHeight}px`);\n            contentStyle.setProperty('--radix-popper-anchor-width', `${anchorWidth}px`);\n            contentStyle.setProperty('--radix-popper-anchor-height', `${anchorHeight}px`);\n          },\n        }),\n        arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n        transformOrigin({ arrowWidth, arrowHeight }),\n        hideWhenDetached && hide({ strategy: 'referenceHidden' }),\n      ],\n    });\n\n    const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n\n    const handlePlaced = useCallbackRef(onPlaced);\n    useLayoutEffect(() => {\n      if (isPositioned) {\n        handlePlaced?.();\n      }\n    }, [isPositioned, handlePlaced]);\n\n    const arrowX = middlewareData.arrow?.x;\n    const arrowY = middlewareData.arrow?.y;\n    const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n\n    const [contentZIndex, setContentZIndex] = React.useState<string>();\n    useLayoutEffect(() => {\n      if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n    }, [content]);\n\n    return (\n      <div\n        ref={refs.setFloating}\n        data-radix-popper-content-wrapper=\"\"\n        style={{\n          ...floatingStyles,\n          transform: isPositioned ? floatingStyles.transform : 'translate(0, -200%)', // keep off the page when measuring\n          minWidth: 'max-content',\n          zIndex: contentZIndex,\n          ['--radix-popper-transform-origin' as any]: [\n            middlewareData.transformOrigin?.x,\n            middlewareData.transformOrigin?.y,\n          ].join(' '),\n        }}\n        // Floating UI interally calculates logical alignment based the `dir` attribute on\n        // the reference/floating node, we must add this attribute here to ensure\n        // this is calculated when portalled as well as inline.\n        dir={props.dir}\n      >\n        <PopperContentProvider\n          scope={__scopePopper}\n          placedSide={placedSide}\n          onArrowChange={setArrow}\n          arrowX={arrowX}\n          arrowY={arrowY}\n          shouldHideArrow={cannotCenterArrow}\n        >\n          <Primitive.div\n            data-side={placedSide}\n            data-align={placedAlign}\n            {...contentProps}\n            ref={composedRefs}\n            style={{\n              ...contentProps.style,\n              // if the PopperContent hasn't been placed yet (not all measurements done)\n              // we prevent animations so that users's animation don't kick in too early referring wrong sides\n              animation: !isPositioned ? 'none' : undefined,\n              // hide the content if using the hide middleware and should be hidden\n              opacity: middlewareData.hide?.referenceHidden ? 0 : undefined,\n            }}\n          />\n        </PopperContentProvider>\n      </div>\n    );\n  }\n);\n\nPopperContent.displayName = CONTENT_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * PopperArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'PopperArrow';\n\nconst OPPOSITE_SIDE: Record<Side, Side> = {\n  top: 'bottom',\n  right: 'left',\n  bottom: 'top',\n  left: 'right',\n};\n\ntype PopperArrowElement = React.ElementRef<typeof ArrowPrimitive.Root>;\ntype ArrowProps = Radix.ComponentPropsWithoutRef<typeof ArrowPrimitive.Root>;\ninterface PopperArrowProps extends ArrowProps {}\n\nconst PopperArrow = React.forwardRef<PopperArrowElement, PopperArrowProps>(function PopperArrow(\n  props: ScopedProps<PopperArrowProps>,\n  forwardedRef\n) {\n  const { __scopePopper, ...arrowProps } = props;\n  const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n  const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n\n  return (\n    // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n    // doesn't report size as we'd expect on SVG elements.\n    // it reports their bounding box which is effectively the largest path inside the SVG.\n    <span\n      ref={contentContext.onArrowChange}\n      style={{\n        position: 'absolute',\n        left: contentContext.arrowX,\n        top: contentContext.arrowY,\n        [baseSide]: 0,\n        transformOrigin: {\n          top: '',\n          right: '0 0',\n          bottom: 'center 0',\n          left: '100% 0',\n        }[contentContext.placedSide],\n        transform: {\n          top: 'translateY(100%)',\n          right: 'translateY(50%) rotate(90deg) translateX(-50%)',\n          bottom: `rotate(180deg)`,\n          left: 'translateY(50%) rotate(-90deg) translateX(50%)',\n        }[contentContext.placedSide],\n        visibility: contentContext.shouldHideArrow ? 'hidden' : undefined,\n      }}\n    >\n      <ArrowPrimitive.Root\n        {...arrowProps}\n        ref={forwardedRef}\n        style={{\n          ...arrowProps.style,\n          // ensures the element can be measured correctly (mostly for if SVG)\n          display: 'block',\n        }}\n      />\n    </span>\n  );\n});\n\nPopperArrow.displayName = ARROW_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction isNotNull<T>(value: T | null): value is T {\n  return value !== null;\n}\n\nconst transformOrigin = (options: { arrowWidth: number; arrowHeight: number }): Middleware => ({\n  name: 'transformOrigin',\n  options,\n  fn(data) {\n    const { placement, rects, middlewareData } = data;\n\n    const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n    const isArrowHidden = cannotCenterArrow;\n    const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n    const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n\n    const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n    const noArrowAlign = { start: '0%', center: '50%', end: '100%' }[placedAlign];\n\n    const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n    const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n\n    let x = '';\n    let y = '';\n\n    if (placedSide === 'bottom') {\n      x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n      y = `${-arrowHeight}px`;\n    } else if (placedSide === 'top') {\n      x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n      y = `${rects.floating.height + arrowHeight}px`;\n    } else if (placedSide === 'right') {\n      x = `${-arrowHeight}px`;\n      y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n    } else if (placedSide === 'left') {\n      x = `${rects.floating.width + arrowHeight}px`;\n      y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n    }\n    return { data: { x, y } };\n  },\n});\n\nfunction getSideAndAlignFromPlacement(placement: Placement) {\n  const [side, align = 'center'] = placement.split('-');\n  return [side as Side, align as Align] as const;\n}\n\nconst Root = Popper;\nconst Anchor = PopperAnchor;\nconst Content = PopperContent;\nconst Arrow = PopperArrow;\n\nexport {\n  createPopperScope,\n  //\n  Popper,\n  PopperAnchor,\n  PopperContent,\n  PopperArrow,\n  //\n  Root,\n  Anchor,\n  Content,\n  Arrow,\n  //\n  SIDE_OPTIONS,\n  ALIGN_OPTIONS,\n};\nexport type { PopperProps, PopperAnchorProps, PopperContentProps, PopperArrowProps };\n","import * as React from 'react';\n\ntype Machine<S> = { [k: string]: { [k: string]: S } };\ntype MachineState<T> = keyof T;\ntype MachineEvent<T> = keyof UnionToIntersection<T[keyof T]>;\n\n// 🤯 https://fettblog.eu/typescript-union-to-intersection/\ntype UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any\n  ? R\n  : never;\n\nexport function useStateMachine<M>(\n  initialState: MachineState<M>,\n  machine: M & Machine<MachineState<M>>\n) {\n  return React.useReducer((state: MachineState<M>, event: MachineEvent<M>): MachineState<M> => {\n    const nextState = (machine[state] as any)[event];\n    return nextState ?? state;\n  }, initialState);\n}\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useStateMachine } from './useStateMachine';\n\ninterface PresenceProps {\n  children: React.ReactElement | ((props: { present: boolean }) => React.ReactElement);\n  present: boolean;\n}\n\nconst Presence: React.FC<PresenceProps> = (props) => {\n  const { present, children } = props;\n  const presence = usePresence(present);\n\n  const child = (\n    typeof children === 'function'\n      ? children({ present: presence.isPresent })\n      : React.Children.only(children)\n  ) as React.ReactElement;\n\n  const ref = useComposedRefs(presence.ref, (child as any).ref);\n  const forceMount = typeof children === 'function';\n  return forceMount || presence.isPresent ? React.cloneElement(child, { ref }) : null;\n};\n\nPresence.displayName = 'Presence';\n\n/* -------------------------------------------------------------------------------------------------\n * usePresence\n * -----------------------------------------------------------------------------------------------*/\n\nfunction usePresence(present: boolean) {\n  const [node, setNode] = React.useState<HTMLElement>();\n  const stylesRef = React.useRef<CSSStyleDeclaration>({} as any);\n  const prevPresentRef = React.useRef(present);\n  const prevAnimationNameRef = React.useRef<string>('none');\n  const initialState = present ? 'mounted' : 'unmounted';\n  const [state, send] = useStateMachine(initialState, {\n    mounted: {\n      UNMOUNT: 'unmounted',\n      ANIMATION_OUT: 'unmountSuspended',\n    },\n    unmountSuspended: {\n      MOUNT: 'mounted',\n      ANIMATION_END: 'unmounted',\n    },\n    unmounted: {\n      MOUNT: 'mounted',\n    },\n  });\n\n  React.useEffect(() => {\n    const currentAnimationName = getAnimationName(stylesRef.current);\n    prevAnimationNameRef.current = state === 'mounted' ? currentAnimationName : 'none';\n  }, [state]);\n\n  useLayoutEffect(() => {\n    const styles = stylesRef.current;\n    const wasPresent = prevPresentRef.current;\n    const hasPresentChanged = wasPresent !== present;\n\n    if (hasPresentChanged) {\n      const prevAnimationName = prevAnimationNameRef.current;\n      const currentAnimationName = getAnimationName(styles);\n\n      if (present) {\n        send('MOUNT');\n      } else if (currentAnimationName === 'none' || styles?.display === 'none') {\n        // If there is no exit animation or the element is hidden, animations won't run\n        // so we unmount instantly\n        send('UNMOUNT');\n      } else {\n        /**\n         * When `present` changes to `false`, we check changes to animation-name to\n         * determine whether an animation has started. We chose this approach (reading\n         * computed styles) because there is no `animationrun` event and `animationstart`\n         * fires after `animation-delay` has expired which would be too late.\n         */\n        const isAnimating = prevAnimationName !== currentAnimationName;\n\n        if (wasPresent && isAnimating) {\n          send('ANIMATION_OUT');\n        } else {\n          send('UNMOUNT');\n        }\n      }\n\n      prevPresentRef.current = present;\n    }\n  }, [present, send]);\n\n  useLayoutEffect(() => {\n    if (node) {\n      /**\n       * Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel`\n       * event for ANIMATION_IN after we have entered `unmountSuspended` state. So, we\n       * make sure we only trigger ANIMATION_END for the currently active animation.\n       */\n      const handleAnimationEnd = (event: AnimationEvent) => {\n        const currentAnimationName = getAnimationName(stylesRef.current);\n        const isCurrentAnimation = currentAnimationName.includes(event.animationName);\n        if (event.target === node && isCurrentAnimation) {\n          // With React 18 concurrency this update is applied\n          // a frame after the animation ends, creating a flash of visible content.\n          // By manually flushing we ensure they sync within a frame, removing the flash.\n          ReactDOM.flushSync(() => send('ANIMATION_END'));\n        }\n      };\n      const handleAnimationStart = (event: AnimationEvent) => {\n        if (event.target === node) {\n          // if animation occurred, store its name as the previous animation.\n          prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n        }\n      };\n      node.addEventListener('animationstart', handleAnimationStart);\n      node.addEventListener('animationcancel', handleAnimationEnd);\n      node.addEventListener('animationend', handleAnimationEnd);\n      return () => {\n        node.removeEventListener('animationstart', handleAnimationStart);\n        node.removeEventListener('animationcancel', handleAnimationEnd);\n        node.removeEventListener('animationend', handleAnimationEnd);\n      };\n    } else {\n      // Transition to the unmounted state if the node is removed prematurely.\n      // We avoid doing so during cleanup as the node may change but still exist.\n      send('ANIMATION_END');\n    }\n  }, [node, send]);\n\n  return {\n    isPresent: ['mounted', 'unmountSuspended'].includes(state),\n    ref: React.useCallback((node: HTMLElement) => {\n      if (node) stylesRef.current = getComputedStyle(node);\n      setNode(node);\n    }, []),\n  };\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getAnimationName(styles?: CSSStyleDeclaration) {\n  return styles?.animationName || 'none';\n}\n\nexport { Presence };\nexport type { PresenceProps };\n","import * as React from 'react';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\n\n/**\n * Listens for when the escape key is down\n */\nfunction useEscapeKeydown(\n  onEscapeKeyDownProp?: (event: KeyboardEvent) => void,\n  ownerDocument: Document = globalThis?.document\n) {\n  const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n\n  React.useEffect(() => {\n    const handleKeyDown = (event: KeyboardEvent) => {\n      if (event.key === 'Escape') {\n        onEscapeKeyDown(event);\n      }\n    };\n    ownerDocument.addEventListener('keydown', handleKeyDown);\n    return () => ownerDocument.removeEventListener('keydown', handleKeyDown);\n  }, [onEscapeKeyDown, ownerDocument]);\n}\n\nexport { useEscapeKeydown };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { Primitive, dispatchDiscreteCustomEvent } from '@radix-ui/react-primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { useEscapeKeydown } from '@radix-ui/react-use-escape-keydown';\n\nimport type * as Radix from '@radix-ui/react-primitive';\n\n/* -------------------------------------------------------------------------------------------------\n * DismissableLayer\n * -----------------------------------------------------------------------------------------------*/\n\nconst DISMISSABLE_LAYER_NAME = 'DismissableLayer';\nconst CONTEXT_UPDATE = 'dismissableLayer.update';\nconst POINTER_DOWN_OUTSIDE = 'dismissableLayer.pointerDownOutside';\nconst FOCUS_OUTSIDE = 'dismissableLayer.focusOutside';\n\nlet originalBodyPointerEvents: string;\n\nconst DismissableLayerContext = React.createContext({\n  layers: new Set<DismissableLayerElement>(),\n  layersWithOutsidePointerEventsDisabled: new Set<DismissableLayerElement>(),\n  branches: new Set<DismissableLayerBranchElement>(),\n});\n\ntype DismissableLayerElement = React.ElementRef<typeof Primitive.div>;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface DismissableLayerProps extends PrimitiveDivProps {\n  /**\n   * When `true`, hover/focus/click interactions will be disabled on elements outside\n   * the `DismissableLayer`. Users will need to click twice on outside elements to\n   * interact with them: once to close the `DismissableLayer`, and again to trigger the element.\n   */\n  disableOutsidePointerEvents?: boolean;\n  /**\n   * Event handler called when the escape key is down.\n   * Can be prevented.\n   */\n  onEscapeKeyDown?: (event: KeyboardEvent) => void;\n  /**\n   * Event handler called when the a `pointerdown` event happens outside of the `DismissableLayer`.\n   * Can be prevented.\n   */\n  onPointerDownOutside?: (event: PointerDownOutsideEvent) => void;\n  /**\n   * Event handler called when the focus moves outside of the `DismissableLayer`.\n   * Can be prevented.\n   */\n  onFocusOutside?: (event: FocusOutsideEvent) => void;\n  /**\n   * Event handler called when an interaction happens outside the `DismissableLayer`.\n   * Specifically, when a `pointerdown` event happens outside or focus moves outside of it.\n   * Can be prevented.\n   */\n  onInteractOutside?: (event: PointerDownOutsideEvent | FocusOutsideEvent) => void;\n  /**\n   * Handler called when the `DismissableLayer` should be dismissed\n   */\n  onDismiss?: () => void;\n}\n\nconst DismissableLayer = React.forwardRef<DismissableLayerElement, DismissableLayerProps>(\n  (props, forwardedRef) => {\n    const {\n      disableOutsidePointerEvents = false,\n      onEscapeKeyDown,\n      onPointerDownOutside,\n      onFocusOutside,\n      onInteractOutside,\n      onDismiss,\n      ...layerProps\n    } = props;\n    const context = React.useContext(DismissableLayerContext);\n    const [node, setNode] = React.useState<DismissableLayerElement | null>(null);\n    const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n    const [, force] = React.useState({});\n    const composedRefs = useComposedRefs(forwardedRef, (node) => setNode(node));\n    const layers = Array.from(context.layers);\n    const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1); // prettier-ignore\n    const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled); // prettier-ignore\n    const index = node ? layers.indexOf(node) : -1;\n    const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n    const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n\n    const pointerDownOutside = usePointerDownOutside((event) => {\n      const target = event.target as HTMLElement;\n      const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n      if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n      onPointerDownOutside?.(event);\n      onInteractOutside?.(event);\n      if (!event.defaultPrevented) onDismiss?.();\n    }, ownerDocument);\n\n    const focusOutside = useFocusOutside((event) => {\n      const target = event.target as HTMLElement;\n      const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n      if (isFocusInBranch) return;\n      onFocusOutside?.(event);\n      onInteractOutside?.(event);\n      if (!event.defaultPrevented) onDismiss?.();\n    }, ownerDocument);\n\n    useEscapeKeydown((event) => {\n      const isHighestLayer = index === context.layers.size - 1;\n      if (!isHighestLayer) return;\n      onEscapeKeyDown?.(event);\n      if (!event.defaultPrevented && onDismiss) {\n        event.preventDefault();\n        onDismiss();\n      }\n    }, ownerDocument);\n\n    React.useEffect(() => {\n      if (!node) return;\n      if (disableOutsidePointerEvents) {\n        if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n          originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n          ownerDocument.body.style.pointerEvents = 'none';\n        }\n        context.layersWithOutsidePointerEventsDisabled.add(node);\n      }\n      context.layers.add(node);\n      dispatchUpdate();\n      return () => {\n        if (\n          disableOutsidePointerEvents &&\n          context.layersWithOutsidePointerEventsDisabled.size === 1\n        ) {\n          ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n        }\n      };\n    }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n\n    /**\n     * We purposefully prevent combining this effect with the `disableOutsidePointerEvents` effect\n     * because a change to `disableOutsidePointerEvents` would remove this layer from the stack\n     * and add it to the end again so the layering order wouldn't be _creation order_.\n     * We only want them to be removed from context stacks when unmounted.\n     */\n    React.useEffect(() => {\n      return () => {\n        if (!node) return;\n        context.layers.delete(node);\n        context.layersWithOutsidePointerEventsDisabled.delete(node);\n        dispatchUpdate();\n      };\n    }, [node, context]);\n\n    React.useEffect(() => {\n      const handleUpdate = () => force({});\n      document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n      return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n    }, []);\n\n    return (\n      <Primitive.div\n        {...layerProps}\n        ref={composedRefs}\n        style={{\n          pointerEvents: isBodyPointerEventsDisabled\n            ? isPointerEventsEnabled\n              ? 'auto'\n              : 'none'\n            : undefined,\n          ...props.style,\n        }}\n        onFocusCapture={composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture)}\n        onBlurCapture={composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture)}\n        onPointerDownCapture={composeEventHandlers(\n          props.onPointerDownCapture,\n          pointerDownOutside.onPointerDownCapture\n        )}\n      />\n    );\n  }\n);\n\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DismissableLayerBranch\n * -----------------------------------------------------------------------------------------------*/\n\nconst BRANCH_NAME = 'DismissableLayerBranch';\n\ntype DismissableLayerBranchElement = React.ElementRef<typeof Primitive.div>;\ninterface DismissableLayerBranchProps extends PrimitiveDivProps {}\n\nconst DismissableLayerBranch = React.forwardRef<\n  DismissableLayerBranchElement,\n  DismissableLayerBranchProps\n>((props, forwardedRef) => {\n  const context = React.useContext(DismissableLayerContext);\n  const ref = React.useRef<DismissableLayerBranchElement>(null);\n  const composedRefs = useComposedRefs(forwardedRef, ref);\n\n  React.useEffect(() => {\n    const node = ref.current;\n    if (node) {\n      context.branches.add(node);\n      return () => {\n        context.branches.delete(node);\n      };\n    }\n  }, [context.branches]);\n\n  return <Primitive.div {...props} ref={composedRefs} />;\n});\n\nDismissableLayerBranch.displayName = BRANCH_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype PointerDownOutsideEvent = CustomEvent<{ originalEvent: PointerEvent }>;\ntype FocusOutsideEvent = CustomEvent<{ originalEvent: FocusEvent }>;\n\n/**\n * Listens for `pointerdown` outside a react subtree. We use `pointerdown` rather than `pointerup`\n * to mimic layer dismissing behaviour present in OS.\n * Returns props to pass to the node we want to check for outside events.\n */\nfunction usePointerDownOutside(\n  onPointerDownOutside?: (event: PointerDownOutsideEvent) => void,\n  ownerDocument: Document = globalThis?.document\n) {\n  const handlePointerDownOutside = useCallbackRef(onPointerDownOutside) as EventListener;\n  const isPointerInsideReactTreeRef = React.useRef(false);\n  const handleClickRef = React.useRef(() => {});\n\n  React.useEffect(() => {\n    const handlePointerDown = (event: PointerEvent) => {\n      if (event.target && !isPointerInsideReactTreeRef.current) {\n        const eventDetail = { originalEvent: event };\n\n        function handleAndDispatchPointerDownOutsideEvent() {\n          handleAndDispatchCustomEvent(\n            POINTER_DOWN_OUTSIDE,\n            handlePointerDownOutside,\n            eventDetail,\n            { discrete: true }\n          );\n        }\n\n        /**\n         * On touch devices, we need to wait for a click event because browsers implement\n         * a ~350ms delay between the time the user stops touching the display and when the\n         * browser executres events. We need to ensure we don't reactivate pointer-events within\n         * this timeframe otherwise the browser may execute events that should have been prevented.\n         *\n         * Additionally, this also lets us deal automatically with cancellations when a click event\n         * isn't raised because the page was considered scrolled/drag-scrolled, long-pressed, etc.\n         *\n         * This is why we also continuously remove the previous listener, because we cannot be\n         * certain that it was raised, and therefore cleaned-up.\n         */\n        if (event.pointerType === 'touch') {\n          ownerDocument.removeEventListener('click', handleClickRef.current);\n          handleClickRef.current = handleAndDispatchPointerDownOutsideEvent;\n          ownerDocument.addEventListener('click', handleClickRef.current, { once: true });\n        } else {\n          handleAndDispatchPointerDownOutsideEvent();\n        }\n      }\n      isPointerInsideReactTreeRef.current = false;\n    };\n    /**\n     * if this hook executes in a component that mounts via a `pointerdown` event, the event\n     * would bubble up to the document and trigger a `pointerDownOutside` event. We avoid\n     * this by delaying the event listener registration on the document.\n     * This is not React specific, but rather how the DOM works, ie:\n     * ```\n     * button.addEventListener('pointerdown', () => {\n     *   console.log('I will log');\n     *   document.addEventListener('pointerdown', () => {\n     *     console.log('I will also log');\n     *   })\n     * });\n     */\n    const timerId = window.setTimeout(() => {\n      ownerDocument.addEventListener('pointerdown', handlePointerDown);\n    }, 0);\n    return () => {\n      window.clearTimeout(timerId);\n      ownerDocument.removeEventListener('pointerdown', handlePointerDown);\n      ownerDocument.removeEventListener('click', handleClickRef.current);\n    };\n  }, [ownerDocument, handlePointerDownOutside]);\n\n  return {\n    // ensures we check React component tree (not just DOM tree)\n    onPointerDownCapture: () => (isPointerInsideReactTreeRef.current = true),\n  };\n}\n\n/**\n * Listens for when focus happens outside a react subtree.\n * Returns props to pass to the root (node) of the subtree we want to check.\n */\nfunction useFocusOutside(\n  onFocusOutside?: (event: FocusOutsideEvent) => void,\n  ownerDocument: Document = globalThis?.document\n) {\n  const handleFocusOutside = useCallbackRef(onFocusOutside) as EventListener;\n  const isFocusInsideReactTreeRef = React.useRef(false);\n\n  React.useEffect(() => {\n    const handleFocus = (event: FocusEvent) => {\n      if (event.target && !isFocusInsideReactTreeRef.current) {\n        const eventDetail = { originalEvent: event };\n        handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n          discrete: false,\n        });\n      }\n    };\n    ownerDocument.addEventListener('focusin', handleFocus);\n    return () => ownerDocument.removeEventListener('focusin', handleFocus);\n  }, [ownerDocument, handleFocusOutside]);\n\n  return {\n    onFocusCapture: () => (isFocusInsideReactTreeRef.current = true),\n    onBlurCapture: () => (isFocusInsideReactTreeRef.current = false),\n  };\n}\n\nfunction dispatchUpdate() {\n  const event = new CustomEvent(CONTEXT_UPDATE);\n  document.dispatchEvent(event);\n}\n\nfunction handleAndDispatchCustomEvent<E extends CustomEvent, OriginalEvent extends Event>(\n  name: string,\n  handler: ((event: E) => void) | undefined,\n  detail: { originalEvent: OriginalEvent } & (E extends CustomEvent<infer D> ? D : never),\n  { discrete }: { discrete: boolean }\n) {\n  const target = detail.originalEvent.target;\n  const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n  if (handler) target.addEventListener(name, handler as EventListener, { once: true });\n\n  if (discrete) {\n    dispatchDiscreteCustomEvent(target, event);\n  } else {\n    target.dispatchEvent(event);\n  }\n}\n\nconst Root = DismissableLayer;\nconst Branch = DismissableLayerBranch;\n\nexport {\n  DismissableLayer,\n  DismissableLayerBranch,\n  //\n  Root,\n  Branch,\n};\nexport type { DismissableLayerProps };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport * as PopperPrimitive from '@radix-ui/react-popper';\nimport { createPopperScope } from '@radix-ui/react-popper';\nimport { Portal as PortalPrimitive } from '@radix-ui/react-portal';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { DismissableLayer } from '@radix-ui/react-dismissable-layer';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCard\n * -----------------------------------------------------------------------------------------------*/\n\nlet originalBodyUserSelect: string;\n\nconst HOVERCARD_NAME = 'HoverCard';\n\ntype ScopedProps<P> = P & { __scopeHoverCard?: Scope };\nconst [createHoverCardContext, createHoverCardScope] = createContextScope(HOVERCARD_NAME, [\n  createPopperScope,\n]);\nconst usePopperScope = createPopperScope();\n\ntype HoverCardContextValue = {\n  open: boolean;\n  onOpenChange(open: boolean): void;\n  onOpen(): void;\n  onClose(): void;\n  onDismiss(): void;\n  hasSelectionRef: React.MutableRefObject<boolean>;\n  isPointerDownOnContentRef: React.MutableRefObject<boolean>;\n};\n\nconst [HoverCardProvider, useHoverCardContext] =\n  createHoverCardContext<HoverCardContextValue>(HOVERCARD_NAME);\n\ninterface HoverCardProps {\n  children?: React.ReactNode;\n  open?: boolean;\n  defaultOpen?: boolean;\n  onOpenChange?: (open: boolean) => void;\n  openDelay?: number;\n  closeDelay?: number;\n}\n\nconst HoverCard: React.FC<HoverCardProps> = (props: ScopedProps<HoverCardProps>) => {\n  const {\n    __scopeHoverCard,\n    children,\n    open: openProp,\n    defaultOpen,\n    onOpenChange,\n    openDelay = 700,\n    closeDelay = 300,\n  } = props;\n  const popperScope = usePopperScope(__scopeHoverCard);\n  const openTimerRef = React.useRef(0);\n  const closeTimerRef = React.useRef(0);\n  const hasSelectionRef = React.useRef(false);\n  const isPointerDownOnContentRef = React.useRef(false);\n\n  const [open = false, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen,\n    onChange: onOpenChange,\n  });\n\n  const handleOpen = React.useCallback(() => {\n    clearTimeout(closeTimerRef.current);\n    openTimerRef.current = window.setTimeout(() => setOpen(true), openDelay);\n  }, [openDelay, setOpen]);\n\n  const handleClose = React.useCallback(() => {\n    clearTimeout(openTimerRef.current);\n    if (!hasSelectionRef.current && !isPointerDownOnContentRef.current) {\n      closeTimerRef.current = window.setTimeout(() => setOpen(false), closeDelay);\n    }\n  }, [closeDelay, setOpen]);\n\n  const handleDismiss = React.useCallback(() => setOpen(false), [setOpen]);\n\n  // cleanup any queued state updates on unmount\n  React.useEffect(() => {\n    return () => {\n      clearTimeout(openTimerRef.current);\n      clearTimeout(closeTimerRef.current);\n    };\n  }, []);\n\n  return (\n    <HoverCardProvider\n      scope={__scopeHoverCard}\n      open={open}\n      onOpenChange={setOpen}\n      onOpen={handleOpen}\n      onClose={handleClose}\n      onDismiss={handleDismiss}\n      hasSelectionRef={hasSelectionRef}\n      isPointerDownOnContentRef={isPointerDownOnContentRef}\n    >\n      <PopperPrimitive.Root {...popperScope}>{children}</PopperPrimitive.Root>\n    </HoverCardProvider>\n  );\n};\n\nHoverCard.displayName = HOVERCARD_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'HoverCardTrigger';\n\ntype HoverCardTriggerElement = React.ElementRef<typeof Primitive.a>;\ntype PrimitiveLinkProps = Radix.ComponentPropsWithoutRef<typeof Primitive.a>;\ninterface HoverCardTriggerProps extends PrimitiveLinkProps {}\n\nconst HoverCardTrigger = React.forwardRef<HoverCardTriggerElement, HoverCardTriggerProps>(\n  (props: ScopedProps<HoverCardTriggerProps>, forwardedRef) => {\n    const { __scopeHoverCard, ...triggerProps } = props;\n    const context = useHoverCardContext(TRIGGER_NAME, __scopeHoverCard);\n    const popperScope = usePopperScope(__scopeHoverCard);\n    return (\n      <PopperPrimitive.Anchor asChild {...popperScope}>\n        <Primitive.a\n          data-state={context.open ? 'open' : 'closed'}\n          {...triggerProps}\n          ref={forwardedRef}\n          onPointerEnter={composeEventHandlers(props.onPointerEnter, excludeTouch(context.onOpen))}\n          onPointerLeave={composeEventHandlers(props.onPointerLeave, excludeTouch(context.onClose))}\n          onFocus={composeEventHandlers(props.onFocus, context.onOpen)}\n          onBlur={composeEventHandlers(props.onBlur, context.onClose)}\n          // prevent focus event on touch devices\n          onTouchStart={composeEventHandlers(props.onTouchStart, (event) => event.preventDefault())}\n        />\n      </PopperPrimitive.Anchor>\n    );\n  }\n);\n\nHoverCardTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'HoverCardPortal';\n\ntype PortalContextValue = { forceMount?: true };\nconst [PortalProvider, usePortalContext] = createHoverCardContext<PortalContextValue>(PORTAL_NAME, {\n  forceMount: undefined,\n});\n\ntype PortalProps = React.ComponentPropsWithoutRef<typeof PortalPrimitive>;\ninterface HoverCardPortalProps extends Omit<PortalProps, 'asChild'> {\n  children?: React.ReactNode;\n  /**\n   * Used to force mounting when more control is needed. Useful when\n   * controlling animation with React animation libraries.\n   */\n  forceMount?: true;\n}\n\nconst HoverCardPortal: React.FC<HoverCardPortalProps> = (\n  props: ScopedProps<HoverCardPortalProps>\n) => {\n  const { __scopeHoverCard, forceMount, children, container } = props;\n  const context = useHoverCardContext(PORTAL_NAME, __scopeHoverCard);\n  return (\n    <PortalProvider scope={__scopeHoverCard} forceMount={forceMount}>\n      <Presence present={forceMount || context.open}>\n        <PortalPrimitive asChild container={container}>\n          {children}\n        </PortalPrimitive>\n      </Presence>\n    </PortalProvider>\n  );\n};\n\nHoverCardPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'HoverCardContent';\n\ntype HoverCardContentElement = HoverCardContentImplElement;\ninterface HoverCardContentProps extends HoverCardContentImplProps {\n  /**\n   * Used to force mounting when more control is needed. Useful when\n   * controlling animation with React animation libraries.\n   */\n  forceMount?: true;\n}\n\nconst HoverCardContent = React.forwardRef<HoverCardContentElement, HoverCardContentProps>(\n  (props: ScopedProps<HoverCardContentProps>, forwardedRef) => {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopeHoverCard);\n    const { forceMount = portalContext.forceMount, ...contentProps } = props;\n    const context = useHoverCardContext(CONTENT_NAME, props.__scopeHoverCard);\n    return (\n      <Presence present={forceMount || context.open}>\n        <HoverCardContentImpl\n          data-state={context.open ? 'open' : 'closed'}\n          {...contentProps}\n          onPointerEnter={composeEventHandlers(props.onPointerEnter, excludeTouch(context.onOpen))}\n          onPointerLeave={composeEventHandlers(props.onPointerLeave, excludeTouch(context.onClose))}\n          ref={forwardedRef}\n        />\n      </Presence>\n    );\n  }\n);\n\nHoverCardContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype HoverCardContentImplElement = React.ElementRef<typeof PopperPrimitive.Content>;\ntype DismissableLayerProps = Radix.ComponentPropsWithoutRef<typeof DismissableLayer>;\ntype PopperContentProps = Radix.ComponentPropsWithoutRef<typeof PopperPrimitive.Content>;\ninterface HoverCardContentImplProps extends Omit<PopperContentProps, 'onPlaced'> {\n  /**\n   * Event handler called when the escape key is down.\n   * Can be prevented.\n   */\n  onEscapeKeyDown?: DismissableLayerProps['onEscapeKeyDown'];\n  /**\n   * Event handler called when the a `pointerdown` event happens outside of the `HoverCard`.\n   * Can be prevented.\n   */\n  onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside'];\n  /**\n   * Event handler called when the focus moves outside of the `HoverCard`.\n   * Can be prevented.\n   */\n  onFocusOutside?: DismissableLayerProps['onFocusOutside'];\n  /**\n   * Event handler called when an interaction happens outside the `HoverCard`.\n   * Specifically, when a `pointerdown` event happens outside or focus moves outside of it.\n   * Can be prevented.\n   */\n  onInteractOutside?: DismissableLayerProps['onInteractOutside'];\n}\n\nconst HoverCardContentImpl = React.forwardRef<\n  HoverCardContentImplElement,\n  HoverCardContentImplProps\n>((props: ScopedProps<HoverCardContentImplProps>, forwardedRef) => {\n  const {\n    __scopeHoverCard,\n    onEscapeKeyDown,\n    onPointerDownOutside,\n    onFocusOutside,\n    onInteractOutside,\n    ...contentProps\n  } = props;\n  const context = useHoverCardContext(CONTENT_NAME, __scopeHoverCard);\n  const popperScope = usePopperScope(__scopeHoverCard);\n  const ref = React.useRef<HoverCardContentImplElement>(null);\n  const composedRefs = useComposedRefs(forwardedRef, ref);\n  const [containSelection, setContainSelection] = React.useState(false);\n\n  React.useEffect(() => {\n    if (containSelection) {\n      const body = document.body;\n\n      // Safari requires prefix\n      originalBodyUserSelect = body.style.userSelect || body.style.webkitUserSelect;\n\n      body.style.userSelect = 'none';\n      body.style.webkitUserSelect = 'none';\n      return () => {\n        body.style.userSelect = originalBodyUserSelect;\n        body.style.webkitUserSelect = originalBodyUserSelect;\n      };\n    }\n  }, [containSelection]);\n\n  React.useEffect(() => {\n    if (ref.current) {\n      const handlePointerUp = () => {\n        setContainSelection(false);\n        context.isPointerDownOnContentRef.current = false;\n\n        // Delay a frame to ensure we always access the latest selection\n        setTimeout(() => {\n          const hasSelection = document.getSelection()?.toString() !== '';\n          if (hasSelection) context.hasSelectionRef.current = true;\n        });\n      };\n\n      document.addEventListener('pointerup', handlePointerUp);\n      return () => {\n        document.removeEventListener('pointerup', handlePointerUp);\n        context.hasSelectionRef.current = false;\n        context.isPointerDownOnContentRef.current = false;\n      };\n    }\n  }, [context.isPointerDownOnContentRef, context.hasSelectionRef]);\n\n  React.useEffect(() => {\n    if (ref.current) {\n      const tabbables = getTabbableNodes(ref.current);\n      tabbables.forEach((tabbable) => tabbable.setAttribute('tabindex', '-1'));\n    }\n  });\n\n  return (\n    <DismissableLayer\n      asChild\n      disableOutsidePointerEvents={false}\n      onInteractOutside={onInteractOutside}\n      onEscapeKeyDown={onEscapeKeyDown}\n      onPointerDownOutside={onPointerDownOutside}\n      onFocusOutside={composeEventHandlers(onFocusOutside, (event) => {\n        event.preventDefault();\n      })}\n      onDismiss={context.onDismiss}\n    >\n      <PopperPrimitive.Content\n        {...popperScope}\n        {...contentProps}\n        onPointerDown={composeEventHandlers(contentProps.onPointerDown, (event) => {\n          // Contain selection to current layer\n          if (event.currentTarget.contains(event.target as HTMLElement)) {\n            setContainSelection(true);\n          }\n          context.hasSelectionRef.current = false;\n          context.isPointerDownOnContentRef.current = true;\n        })}\n        ref={composedRefs}\n        style={{\n          ...contentProps.style,\n          userSelect: containSelection ? 'text' : undefined,\n          // Safari requires prefix\n          WebkitUserSelect: containSelection ? 'text' : undefined,\n          // re-namespace exposed content custom properties\n          ...{\n            '--radix-hover-card-content-transform-origin': 'var(--radix-popper-transform-origin)',\n            '--radix-hover-card-content-available-width': 'var(--radix-popper-available-width)',\n            '--radix-hover-card-content-available-height': 'var(--radix-popper-available-height)',\n            '--radix-hover-card-trigger-width': 'var(--radix-popper-anchor-width)',\n            '--radix-hover-card-trigger-height': 'var(--radix-popper-anchor-height)',\n          },\n        }}\n      />\n    </DismissableLayer>\n  );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'HoverCardArrow';\n\ntype HoverCardArrowElement = React.ElementRef<typeof PopperPrimitive.Arrow>;\ntype PopperArrowProps = Radix.ComponentPropsWithoutRef<typeof PopperPrimitive.Arrow>;\ninterface HoverCardArrowProps extends PopperArrowProps {}\n\nconst HoverCardArrow = React.forwardRef<HoverCardArrowElement, HoverCardArrowProps>(\n  (props: ScopedProps<HoverCardArrowProps>, forwardedRef) => {\n    const { __scopeHoverCard, ...arrowProps } = props;\n    const popperScope = usePopperScope(__scopeHoverCard);\n    return <PopperPrimitive.Arrow {...popperScope} {...arrowProps} ref={forwardedRef} />;\n  }\n);\n\nHoverCardArrow.displayName = ARROW_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction excludeTouch<E>(eventHandler: () => void) {\n  return (event: React.PointerEvent<E>) =>\n    event.pointerType === 'touch' ? undefined : eventHandler();\n}\n\n/**\n * Returns a list of nodes that can be in the tab sequence.\n * @see: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker\n */\nfunction getTabbableNodes(container: HTMLElement) {\n  const nodes: HTMLElement[] = [];\n  const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n    acceptNode: (node: any) => {\n      // `.tabIndex` is not the same as the `tabindex` attribute. It works on the\n      // runtime's understanding of tabbability, so this automatically accounts\n      // for any kind of element that could be tabbed to.\n      return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n    },\n  });\n  while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement);\n  return nodes;\n}\n\nconst Root = HoverCard;\nconst Trigger = HoverCardTrigger;\nconst Portal = HoverCardPortal;\nconst Content = HoverCardContent;\nconst Arrow = HoverCardArrow;\n\nexport {\n  createHoverCardScope,\n  //\n  HoverCard,\n  HoverCardTrigger,\n  HoverCardPortal,\n  HoverCardContent,\n  HoverCardArrow,\n  //\n  Root,\n  Trigger,\n  Portal,\n  Content,\n  Arrow,\n};\nexport type {\n  HoverCardProps,\n  HoverCardTriggerProps,\n  HoverCardPortalProps,\n  HoverCardContentProps,\n  HoverCardArrowProps,\n};\n","import * as React from \"react\"\nimport { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n\nexport function formatDate(input: string | number): string {\n  const date = new Date(input)\n  return date.toLocaleDateString(\"en-US\", {\n    month: \"long\",\n    day: \"numeric\",\n    year: \"numeric\",\n  })\n}\n\nexport function absoluteUrl(path: string) {\n  return `${process.env.NEXT_PUBLIC_APP_URL}${path}`\n}\n"]}