UNPKG

ivt

Version:

Ivt Components Library

1 lines 56.5 kB
{"version":3,"file":"index-BekjHCXg.mjs","sources":["../../node_modules/@radix-ui/react-menu/dist/index.mjs"],"sourcesContent":["\"use client\";\n\n// src/menu.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs, composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\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, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SELECTION_KEYS = [\"Enter\", \" \"];\nvar FIRST_KEYS = [\"ArrowDown\", \"PageUp\", \"Home\"];\nvar LAST_KEYS = [\"ArrowUp\", \"PageDown\", \"End\"];\nvar FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];\nvar SUB_OPEN_KEYS = {\n  ltr: [...SELECTION_KEYS, \"ArrowRight\"],\n  rtl: [...SELECTION_KEYS, \"ArrowLeft\"]\n};\nvar SUB_CLOSE_KEYS = {\n  ltr: [\"ArrowLeft\"],\n  rtl: [\"ArrowRight\"]\n};\nvar MENU_NAME = \"Menu\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(MENU_NAME);\nvar [createMenuContext, createMenuScope] = createContextScope(MENU_NAME, [\n  createCollectionScope,\n  createPopperScope,\n  createRovingFocusGroupScope\n]);\nvar usePopperScope = createPopperScope();\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [MenuProvider, useMenuContext] = createMenuContext(MENU_NAME);\nvar [MenuRootProvider, useMenuRootContext] = createMenuContext(MENU_NAME);\nvar Menu = (props) => {\n  const { __scopeMenu, open = false, children, dir, onOpenChange, modal = true } = props;\n  const popperScope = usePopperScope(__scopeMenu);\n  const [content, setContent] = React.useState(null);\n  const isUsingKeyboardRef = React.useRef(false);\n  const handleOpenChange = useCallbackRef(onOpenChange);\n  const direction = useDirection(dir);\n  React.useEffect(() => {\n    const handleKeyDown = () => {\n      isUsingKeyboardRef.current = true;\n      document.addEventListener(\"pointerdown\", handlePointer, { capture: true, once: true });\n      document.addEventListener(\"pointermove\", handlePointer, { capture: true, once: true });\n    };\n    const handlePointer = () => isUsingKeyboardRef.current = false;\n    document.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n    return () => {\n      document.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n      document.removeEventListener(\"pointerdown\", handlePointer, { capture: true });\n      document.removeEventListener(\"pointermove\", handlePointer, { capture: true });\n    };\n  }, []);\n  return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n    MenuProvider,\n    {\n      scope: __scopeMenu,\n      open,\n      onOpenChange: handleOpenChange,\n      content,\n      onContentChange: setContent,\n      children: /* @__PURE__ */ jsx(\n        MenuRootProvider,\n        {\n          scope: __scopeMenu,\n          onClose: React.useCallback(() => handleOpenChange(false), [handleOpenChange]),\n          isUsingKeyboardRef,\n          dir: direction,\n          modal,\n          children\n        }\n      )\n    }\n  ) });\n};\nMenu.displayName = MENU_NAME;\nvar ANCHOR_NAME = \"MenuAnchor\";\nvar MenuAnchor = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeMenu, ...anchorProps } = props;\n    const popperScope = usePopperScope(__scopeMenu);\n    return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n  }\n);\nMenuAnchor.displayName = ANCHOR_NAME;\nvar PORTAL_NAME = \"MenuPortal\";\nvar [PortalProvider, usePortalContext] = createMenuContext(PORTAL_NAME, {\n  forceMount: void 0\n});\nvar MenuPortal = (props) => {\n  const { __scopeMenu, forceMount, children, container } = props;\n  const context = useMenuContext(PORTAL_NAME, __scopeMenu);\n  return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeMenu, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nMenuPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"MenuContent\";\nvar [MenuContentProvider, useMenuContentContext] = createMenuContext(CONTENT_NAME);\nvar MenuContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n    const { forceMount = portalContext.forceMount, ...contentProps } = props;\n    const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n    const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n    return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: rootContext.modal ? /* @__PURE__ */ jsx(MenuRootContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(MenuRootContentNonModal, { ...contentProps, ref: forwardedRef }) }) }) });\n  }\n);\nvar MenuRootContentModal = React.forwardRef(\n  (props, forwardedRef) => {\n    const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    React.useEffect(() => {\n      const content = ref.current;\n      if (content) return hideOthers(content);\n    }, []);\n    return /* @__PURE__ */ jsx(\n      MenuContentImpl,\n      {\n        ...props,\n        ref: composedRefs,\n        trapFocus: context.open,\n        disableOutsidePointerEvents: context.open,\n        disableOutsideScroll: true,\n        onFocusOutside: composeEventHandlers(\n          props.onFocusOutside,\n          (event) => event.preventDefault(),\n          { checkForDefaultPrevented: false }\n        ),\n        onDismiss: () => context.onOpenChange(false)\n      }\n    );\n  }\n);\nvar MenuRootContentNonModal = React.forwardRef((props, forwardedRef) => {\n  const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n  return /* @__PURE__ */ jsx(\n    MenuContentImpl,\n    {\n      ...props,\n      ref: forwardedRef,\n      trapFocus: false,\n      disableOutsidePointerEvents: false,\n      disableOutsideScroll: false,\n      onDismiss: () => context.onOpenChange(false)\n    }\n  );\n});\nvar Slot = createSlot(\"MenuContent.ScrollLock\");\nvar MenuContentImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeMenu,\n      loop = false,\n      trapFocus,\n      onOpenAutoFocus,\n      onCloseAutoFocus,\n      disableOutsidePointerEvents,\n      onEntryFocus,\n      onEscapeKeyDown,\n      onPointerDownOutside,\n      onFocusOutside,\n      onInteractOutside,\n      onDismiss,\n      disableOutsideScroll,\n      ...contentProps\n    } = props;\n    const context = useMenuContext(CONTENT_NAME, __scopeMenu);\n    const rootContext = useMenuRootContext(CONTENT_NAME, __scopeMenu);\n    const popperScope = usePopperScope(__scopeMenu);\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n    const getItems = useCollection(__scopeMenu);\n    const [currentItemId, setCurrentItemId] = React.useState(null);\n    const contentRef = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, contentRef, context.onContentChange);\n    const timerRef = React.useRef(0);\n    const searchRef = React.useRef(\"\");\n    const pointerGraceTimerRef = React.useRef(0);\n    const pointerGraceIntentRef = React.useRef(null);\n    const pointerDirRef = React.useRef(\"right\");\n    const lastPointerXRef = React.useRef(0);\n    const ScrollLockWrapper = disableOutsideScroll ? RemoveScroll : React.Fragment;\n    const scrollLockWrapperProps = disableOutsideScroll ? { as: Slot, allowPinchZoom: true } : void 0;\n    const handleTypeaheadSearch = (key) => {\n      const search = searchRef.current + key;\n      const items = getItems().filter((item) => !item.disabled);\n      const currentItem = document.activeElement;\n      const currentMatch = items.find((item) => item.ref.current === currentItem)?.textValue;\n      const values = items.map((item) => item.textValue);\n      const nextMatch = getNextMatch(values, search, currentMatch);\n      const newItem = items.find((item) => item.textValue === nextMatch)?.ref.current;\n      (function updateSearch(value) {\n        searchRef.current = value;\n        window.clearTimeout(timerRef.current);\n        if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n      })(search);\n      if (newItem) {\n        setTimeout(() => newItem.focus());\n      }\n    };\n    React.useEffect(() => {\n      return () => window.clearTimeout(timerRef.current);\n    }, []);\n    useFocusGuards();\n    const isPointerMovingToSubmenu = React.useCallback((event) => {\n      const isMovingTowards = pointerDirRef.current === pointerGraceIntentRef.current?.side;\n      return isMovingTowards && isPointerInGraceArea(event, pointerGraceIntentRef.current?.area);\n    }, []);\n    return /* @__PURE__ */ jsx(\n      MenuContentProvider,\n      {\n        scope: __scopeMenu,\n        searchRef,\n        onItemEnter: React.useCallback(\n          (event) => {\n            if (isPointerMovingToSubmenu(event)) event.preventDefault();\n          },\n          [isPointerMovingToSubmenu]\n        ),\n        onItemLeave: React.useCallback(\n          (event) => {\n            if (isPointerMovingToSubmenu(event)) return;\n            contentRef.current?.focus();\n            setCurrentItemId(null);\n          },\n          [isPointerMovingToSubmenu]\n        ),\n        onTriggerLeave: React.useCallback(\n          (event) => {\n            if (isPointerMovingToSubmenu(event)) event.preventDefault();\n          },\n          [isPointerMovingToSubmenu]\n        ),\n        pointerGraceTimerRef,\n        onPointerGraceIntentChange: React.useCallback((intent) => {\n          pointerGraceIntentRef.current = intent;\n        }, []),\n        children: /* @__PURE__ */ jsx(ScrollLockWrapper, { ...scrollLockWrapperProps, children: /* @__PURE__ */ jsx(\n          FocusScope,\n          {\n            asChild: true,\n            trapped: trapFocus,\n            onMountAutoFocus: composeEventHandlers(onOpenAutoFocus, (event) => {\n              event.preventDefault();\n              contentRef.current?.focus({ preventScroll: true });\n            }),\n            onUnmountAutoFocus: onCloseAutoFocus,\n            children: /* @__PURE__ */ jsx(\n              DismissableLayer,\n              {\n                asChild: true,\n                disableOutsidePointerEvents,\n                onEscapeKeyDown,\n                onPointerDownOutside,\n                onFocusOutside,\n                onInteractOutside,\n                onDismiss,\n                children: /* @__PURE__ */ jsx(\n                  RovingFocusGroup.Root,\n                  {\n                    asChild: true,\n                    ...rovingFocusGroupScope,\n                    dir: rootContext.dir,\n                    orientation: \"vertical\",\n                    loop,\n                    currentTabStopId: currentItemId,\n                    onCurrentTabStopIdChange: setCurrentItemId,\n                    onEntryFocus: composeEventHandlers(onEntryFocus, (event) => {\n                      if (!rootContext.isUsingKeyboardRef.current) event.preventDefault();\n                    }),\n                    preventScrollOnEntryFocus: true,\n                    children: /* @__PURE__ */ jsx(\n                      PopperPrimitive.Content,\n                      {\n                        role: \"menu\",\n                        \"aria-orientation\": \"vertical\",\n                        \"data-state\": getOpenState(context.open),\n                        \"data-radix-menu-content\": \"\",\n                        dir: rootContext.dir,\n                        ...popperScope,\n                        ...contentProps,\n                        ref: composedRefs,\n                        style: { outline: \"none\", ...contentProps.style },\n                        onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n                          const target = event.target;\n                          const isKeyDownInside = target.closest(\"[data-radix-menu-content]\") === event.currentTarget;\n                          const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n                          const isCharacterKey = event.key.length === 1;\n                          if (isKeyDownInside) {\n                            if (event.key === \"Tab\") event.preventDefault();\n                            if (!isModifierKey && isCharacterKey) handleTypeaheadSearch(event.key);\n                          }\n                          const content = contentRef.current;\n                          if (event.target !== content) return;\n                          if (!FIRST_LAST_KEYS.includes(event.key)) return;\n                          event.preventDefault();\n                          const items = getItems().filter((item) => !item.disabled);\n                          const candidateNodes = items.map((item) => item.ref.current);\n                          if (LAST_KEYS.includes(event.key)) candidateNodes.reverse();\n                          focusFirst(candidateNodes);\n                        }),\n                        onBlur: composeEventHandlers(props.onBlur, (event) => {\n                          if (!event.currentTarget.contains(event.target)) {\n                            window.clearTimeout(timerRef.current);\n                            searchRef.current = \"\";\n                          }\n                        }),\n                        onPointerMove: composeEventHandlers(\n                          props.onPointerMove,\n                          whenMouse((event) => {\n                            const target = event.target;\n                            const pointerXHasChanged = lastPointerXRef.current !== event.clientX;\n                            if (event.currentTarget.contains(target) && pointerXHasChanged) {\n                              const newDir = event.clientX > lastPointerXRef.current ? \"right\" : \"left\";\n                              pointerDirRef.current = newDir;\n                              lastPointerXRef.current = event.clientX;\n                            }\n                          })\n                        )\n                      }\n                    )\n                  }\n                )\n              }\n            )\n          }\n        ) })\n      }\n    );\n  }\n);\nMenuContent.displayName = CONTENT_NAME;\nvar GROUP_NAME = \"MenuGroup\";\nvar MenuGroup = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeMenu, ...groupProps } = props;\n    return /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", ...groupProps, ref: forwardedRef });\n  }\n);\nMenuGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"MenuLabel\";\nvar MenuLabel = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeMenu, ...labelProps } = props;\n    return /* @__PURE__ */ jsx(Primitive.div, { ...labelProps, ref: forwardedRef });\n  }\n);\nMenuLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"MenuItem\";\nvar ITEM_SELECT = \"menu.itemSelect\";\nvar MenuItem = React.forwardRef(\n  (props, forwardedRef) => {\n    const { disabled = false, onSelect, ...itemProps } = props;\n    const ref = React.useRef(null);\n    const rootContext = useMenuRootContext(ITEM_NAME, props.__scopeMenu);\n    const contentContext = useMenuContentContext(ITEM_NAME, props.__scopeMenu);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    const isPointerDownRef = React.useRef(false);\n    const handleSelect = () => {\n      const menuItem = ref.current;\n      if (!disabled && menuItem) {\n        const itemSelectEvent = new CustomEvent(ITEM_SELECT, { bubbles: true, cancelable: true });\n        menuItem.addEventListener(ITEM_SELECT, (event) => onSelect?.(event), { once: true });\n        dispatchDiscreteCustomEvent(menuItem, itemSelectEvent);\n        if (itemSelectEvent.defaultPrevented) {\n          isPointerDownRef.current = false;\n        } else {\n          rootContext.onClose();\n        }\n      }\n    };\n    return /* @__PURE__ */ jsx(\n      MenuItemImpl,\n      {\n        ...itemProps,\n        ref: composedRefs,\n        disabled,\n        onClick: composeEventHandlers(props.onClick, handleSelect),\n        onPointerDown: (event) => {\n          props.onPointerDown?.(event);\n          isPointerDownRef.current = true;\n        },\n        onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n          if (!isPointerDownRef.current) event.currentTarget?.click();\n        }),\n        onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n          const isTypingAhead = contentContext.searchRef.current !== \"\";\n          if (disabled || isTypingAhead && event.key === \" \") return;\n          if (SELECTION_KEYS.includes(event.key)) {\n            event.currentTarget.click();\n            event.preventDefault();\n          }\n        })\n      }\n    );\n  }\n);\nMenuItem.displayName = ITEM_NAME;\nvar MenuItemImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeMenu, disabled = false, textValue, ...itemProps } = props;\n    const contentContext = useMenuContentContext(ITEM_NAME, __scopeMenu);\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    const [isFocused, setIsFocused] = React.useState(false);\n    const [textContent, setTextContent] = React.useState(\"\");\n    React.useEffect(() => {\n      const menuItem = ref.current;\n      if (menuItem) {\n        setTextContent((menuItem.textContent ?? \"\").trim());\n      }\n    }, [itemProps.children]);\n    return /* @__PURE__ */ jsx(\n      Collection.ItemSlot,\n      {\n        scope: __scopeMenu,\n        disabled,\n        textValue: textValue ?? textContent,\n        children: /* @__PURE__ */ jsx(RovingFocusGroup.Item, { asChild: true, ...rovingFocusGroupScope, focusable: !disabled, children: /* @__PURE__ */ jsx(\n          Primitive.div,\n          {\n            role: \"menuitem\",\n            \"data-highlighted\": isFocused ? \"\" : void 0,\n            \"aria-disabled\": disabled || void 0,\n            \"data-disabled\": disabled ? \"\" : void 0,\n            ...itemProps,\n            ref: composedRefs,\n            onPointerMove: composeEventHandlers(\n              props.onPointerMove,\n              whenMouse((event) => {\n                if (disabled) {\n                  contentContext.onItemLeave(event);\n                } else {\n                  contentContext.onItemEnter(event);\n                  if (!event.defaultPrevented) {\n                    const item = event.currentTarget;\n                    item.focus({ preventScroll: true });\n                  }\n                }\n              })\n            ),\n            onPointerLeave: composeEventHandlers(\n              props.onPointerLeave,\n              whenMouse((event) => contentContext.onItemLeave(event))\n            ),\n            onFocus: composeEventHandlers(props.onFocus, () => setIsFocused(true)),\n            onBlur: composeEventHandlers(props.onBlur, () => setIsFocused(false))\n          }\n        ) })\n      }\n    );\n  }\n);\nvar CHECKBOX_ITEM_NAME = \"MenuCheckboxItem\";\nvar MenuCheckboxItem = React.forwardRef(\n  (props, forwardedRef) => {\n    const { checked = false, onCheckedChange, ...checkboxItemProps } = props;\n    return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n      MenuItem,\n      {\n        role: \"menuitemcheckbox\",\n        \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n        ...checkboxItemProps,\n        ref: forwardedRef,\n        \"data-state\": getCheckedState(checked),\n        onSelect: composeEventHandlers(\n          checkboxItemProps.onSelect,\n          () => onCheckedChange?.(isIndeterminate(checked) ? true : !checked),\n          { checkForDefaultPrevented: false }\n        )\n      }\n    ) });\n  }\n);\nMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\nvar RADIO_GROUP_NAME = \"MenuRadioGroup\";\nvar [RadioGroupProvider, useRadioGroupContext] = createMenuContext(\n  RADIO_GROUP_NAME,\n  { value: void 0, onValueChange: () => {\n  } }\n);\nvar MenuRadioGroup = React.forwardRef(\n  (props, forwardedRef) => {\n    const { value, onValueChange, ...groupProps } = props;\n    const handleValueChange = useCallbackRef(onValueChange);\n    return /* @__PURE__ */ jsx(RadioGroupProvider, { scope: props.__scopeMenu, value, onValueChange: handleValueChange, children: /* @__PURE__ */ jsx(MenuGroup, { ...groupProps, ref: forwardedRef }) });\n  }\n);\nMenuRadioGroup.displayName = RADIO_GROUP_NAME;\nvar RADIO_ITEM_NAME = \"MenuRadioItem\";\nvar MenuRadioItem = React.forwardRef(\n  (props, forwardedRef) => {\n    const { value, ...radioItemProps } = props;\n    const context = useRadioGroupContext(RADIO_ITEM_NAME, props.__scopeMenu);\n    const checked = value === context.value;\n    return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n      MenuItem,\n      {\n        role: \"menuitemradio\",\n        \"aria-checked\": checked,\n        ...radioItemProps,\n        ref: forwardedRef,\n        \"data-state\": getCheckedState(checked),\n        onSelect: composeEventHandlers(\n          radioItemProps.onSelect,\n          () => context.onValueChange?.(value),\n          { checkForDefaultPrevented: false }\n        )\n      }\n    ) });\n  }\n);\nMenuRadioItem.displayName = RADIO_ITEM_NAME;\nvar ITEM_INDICATOR_NAME = \"MenuItemIndicator\";\nvar [ItemIndicatorProvider, useItemIndicatorContext] = createMenuContext(\n  ITEM_INDICATOR_NAME,\n  { checked: false }\n);\nvar MenuItemIndicator = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeMenu, forceMount, ...itemIndicatorProps } = props;\n    const indicatorContext = useItemIndicatorContext(ITEM_INDICATOR_NAME, __scopeMenu);\n    return /* @__PURE__ */ jsx(\n      Presence,\n      {\n        present: forceMount || isIndeterminate(indicatorContext.checked) || indicatorContext.checked === true,\n        children: /* @__PURE__ */ jsx(\n          Primitive.span,\n          {\n            ...itemIndicatorProps,\n            ref: forwardedRef,\n            \"data-state\": getCheckedState(indicatorContext.checked)\n          }\n        )\n      }\n    );\n  }\n);\nMenuItemIndicator.displayName = ITEM_INDICATOR_NAME;\nvar SEPARATOR_NAME = \"MenuSeparator\";\nvar MenuSeparator = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeMenu, ...separatorProps } = props;\n    return /* @__PURE__ */ jsx(\n      Primitive.div,\n      {\n        role: \"separator\",\n        \"aria-orientation\": \"horizontal\",\n        ...separatorProps,\n        ref: forwardedRef\n      }\n    );\n  }\n);\nMenuSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"MenuArrow\";\nvar MenuArrow = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeMenu, ...arrowProps } = props;\n    const popperScope = usePopperScope(__scopeMenu);\n    return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n  }\n);\nMenuArrow.displayName = ARROW_NAME;\nvar SUB_NAME = \"MenuSub\";\nvar [MenuSubProvider, useMenuSubContext] = createMenuContext(SUB_NAME);\nvar MenuSub = (props) => {\n  const { __scopeMenu, children, open = false, onOpenChange } = props;\n  const parentMenuContext = useMenuContext(SUB_NAME, __scopeMenu);\n  const popperScope = usePopperScope(__scopeMenu);\n  const [trigger, setTrigger] = React.useState(null);\n  const [content, setContent] = React.useState(null);\n  const handleOpenChange = useCallbackRef(onOpenChange);\n  React.useEffect(() => {\n    if (parentMenuContext.open === false) handleOpenChange(false);\n    return () => handleOpenChange(false);\n  }, [parentMenuContext.open, handleOpenChange]);\n  return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n    MenuProvider,\n    {\n      scope: __scopeMenu,\n      open,\n      onOpenChange: handleOpenChange,\n      content,\n      onContentChange: setContent,\n      children: /* @__PURE__ */ jsx(\n        MenuSubProvider,\n        {\n          scope: __scopeMenu,\n          contentId: useId(),\n          triggerId: useId(),\n          trigger,\n          onTriggerChange: setTrigger,\n          children\n        }\n      )\n    }\n  ) });\n};\nMenuSub.displayName = SUB_NAME;\nvar SUB_TRIGGER_NAME = \"MenuSubTrigger\";\nvar MenuSubTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const context = useMenuContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n    const rootContext = useMenuRootContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n    const subContext = useMenuSubContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n    const contentContext = useMenuContentContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n    const openTimerRef = React.useRef(null);\n    const { pointerGraceTimerRef, onPointerGraceIntentChange } = contentContext;\n    const scope = { __scopeMenu: props.__scopeMenu };\n    const clearOpenTimer = React.useCallback(() => {\n      if (openTimerRef.current) window.clearTimeout(openTimerRef.current);\n      openTimerRef.current = null;\n    }, []);\n    React.useEffect(() => clearOpenTimer, [clearOpenTimer]);\n    React.useEffect(() => {\n      const pointerGraceTimer = pointerGraceTimerRef.current;\n      return () => {\n        window.clearTimeout(pointerGraceTimer);\n        onPointerGraceIntentChange(null);\n      };\n    }, [pointerGraceTimerRef, onPointerGraceIntentChange]);\n    return /* @__PURE__ */ jsx(MenuAnchor, { asChild: true, ...scope, children: /* @__PURE__ */ jsx(\n      MenuItemImpl,\n      {\n        id: subContext.triggerId,\n        \"aria-haspopup\": \"menu\",\n        \"aria-expanded\": context.open,\n        \"aria-controls\": subContext.contentId,\n        \"data-state\": getOpenState(context.open),\n        ...props,\n        ref: composeRefs(forwardedRef, subContext.onTriggerChange),\n        onClick: (event) => {\n          props.onClick?.(event);\n          if (props.disabled || event.defaultPrevented) return;\n          event.currentTarget.focus();\n          if (!context.open) context.onOpenChange(true);\n        },\n        onPointerMove: composeEventHandlers(\n          props.onPointerMove,\n          whenMouse((event) => {\n            contentContext.onItemEnter(event);\n            if (event.defaultPrevented) return;\n            if (!props.disabled && !context.open && !openTimerRef.current) {\n              contentContext.onPointerGraceIntentChange(null);\n              openTimerRef.current = window.setTimeout(() => {\n                context.onOpenChange(true);\n                clearOpenTimer();\n              }, 100);\n            }\n          })\n        ),\n        onPointerLeave: composeEventHandlers(\n          props.onPointerLeave,\n          whenMouse((event) => {\n            clearOpenTimer();\n            const contentRect = context.content?.getBoundingClientRect();\n            if (contentRect) {\n              const side = context.content?.dataset.side;\n              const rightSide = side === \"right\";\n              const bleed = rightSide ? -5 : 5;\n              const contentNearEdge = contentRect[rightSide ? \"left\" : \"right\"];\n              const contentFarEdge = contentRect[rightSide ? \"right\" : \"left\"];\n              contentContext.onPointerGraceIntentChange({\n                area: [\n                  // Apply a bleed on clientX to ensure that our exit point is\n                  // consistently within polygon bounds\n                  { x: event.clientX + bleed, y: event.clientY },\n                  { x: contentNearEdge, y: contentRect.top },\n                  { x: contentFarEdge, y: contentRect.top },\n                  { x: contentFarEdge, y: contentRect.bottom },\n                  { x: contentNearEdge, y: contentRect.bottom }\n                ],\n                side\n              });\n              window.clearTimeout(pointerGraceTimerRef.current);\n              pointerGraceTimerRef.current = window.setTimeout(\n                () => contentContext.onPointerGraceIntentChange(null),\n                300\n              );\n            } else {\n              contentContext.onTriggerLeave(event);\n              if (event.defaultPrevented) return;\n              contentContext.onPointerGraceIntentChange(null);\n            }\n          })\n        ),\n        onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n          const isTypingAhead = contentContext.searchRef.current !== \"\";\n          if (props.disabled || isTypingAhead && event.key === \" \") return;\n          if (SUB_OPEN_KEYS[rootContext.dir].includes(event.key)) {\n            context.onOpenChange(true);\n            context.content?.focus();\n            event.preventDefault();\n          }\n        })\n      }\n    ) });\n  }\n);\nMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\nvar SUB_CONTENT_NAME = \"MenuSubContent\";\nvar MenuSubContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n    const { forceMount = portalContext.forceMount, ...subContentProps } = props;\n    const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n    const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n    const subContext = useMenuSubContext(SUB_CONTENT_NAME, props.__scopeMenu);\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(\n      MenuContentImpl,\n      {\n        id: subContext.contentId,\n        \"aria-labelledby\": subContext.triggerId,\n        ...subContentProps,\n        ref: composedRefs,\n        align: \"start\",\n        side: rootContext.dir === \"rtl\" ? \"left\" : \"right\",\n        disableOutsidePointerEvents: false,\n        disableOutsideScroll: false,\n        trapFocus: false,\n        onOpenAutoFocus: (event) => {\n          if (rootContext.isUsingKeyboardRef.current) ref.current?.focus();\n          event.preventDefault();\n        },\n        onCloseAutoFocus: (event) => event.preventDefault(),\n        onFocusOutside: composeEventHandlers(props.onFocusOutside, (event) => {\n          if (event.target !== subContext.trigger) context.onOpenChange(false);\n        }),\n        onEscapeKeyDown: composeEventHandlers(props.onEscapeKeyDown, (event) => {\n          rootContext.onClose();\n          event.preventDefault();\n        }),\n        onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n          const isKeyDownInside = event.currentTarget.contains(event.target);\n          const isCloseKey = SUB_CLOSE_KEYS[rootContext.dir].includes(event.key);\n          if (isKeyDownInside && isCloseKey) {\n            context.onOpenChange(false);\n            subContext.trigger?.focus();\n            event.preventDefault();\n          }\n        })\n      }\n    ) }) }) });\n  }\n);\nMenuSubContent.displayName = SUB_CONTENT_NAME;\nfunction getOpenState(open) {\n  return open ? \"open\" : \"closed\";\n}\nfunction isIndeterminate(checked) {\n  return checked === \"indeterminate\";\n}\nfunction getCheckedState(checked) {\n  return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nfunction focusFirst(candidates) {\n  const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n  for (const candidate of candidates) {\n    if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n    candidate.focus();\n    if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n  }\n}\nfunction wrapArray(array, startIndex) {\n  return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nfunction getNextMatch(values, search, currentMatch) {\n  const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n  const normalizedSearch = isRepeated ? search[0] : search;\n  const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1;\n  let wrappedValues = wrapArray(values, Math.max(currentMatchIndex, 0));\n  const excludeCurrentMatch = normalizedSearch.length === 1;\n  if (excludeCurrentMatch) wrappedValues = wrappedValues.filter((v) => v !== currentMatch);\n  const nextMatch = wrappedValues.find(\n    (value) => value.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n  );\n  return nextMatch !== currentMatch ? nextMatch : void 0;\n}\nfunction isPointInPolygon(point, polygon) {\n  const { x, y } = point;\n  let inside = false;\n  for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n    const ii = polygon[i];\n    const jj = polygon[j];\n    const xi = ii.x;\n    const yi = ii.y;\n    const xj = jj.x;\n    const yj = jj.y;\n    const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n    if (intersect) inside = !inside;\n  }\n  return inside;\n}\nfunction isPointerInGraceArea(event, area) {\n  if (!area) return false;\n  const cursorPos = { x: event.clientX, y: event.clientY };\n  return isPointInPolygon(cursorPos, area);\n}\nfunction whenMouse(handler) {\n  return (event) => event.pointerType === \"mouse\" ? handler(event) : void 0;\n}\nvar Root3 = Menu;\nvar Anchor2 = MenuAnchor;\nvar Portal = MenuPortal;\nvar Content2 = MenuContent;\nvar Group = MenuGroup;\nvar Label = MenuLabel;\nvar Item2 = MenuItem;\nvar CheckboxItem = MenuCheckboxItem;\nvar RadioGroup = MenuRadioGroup;\nvar RadioItem = MenuRadioItem;\nvar ItemIndicator = MenuItemIndicator;\nvar Separator = MenuSeparator;\nvar Arrow2 = MenuArrow;\nvar Sub = MenuSub;\nvar SubTrigger = MenuSubTrigger;\nvar SubContent = MenuSubContent;\nexport {\n  Anchor2 as Anchor,\n  Arrow2 as Arrow,\n  CheckboxItem,\n  Content2 as Content,\n  Group,\n  Item2 as Item,\n  ItemIndicator,\n  Label,\n  Menu,\n  MenuAnchor,\n  MenuArrow,\n  MenuCheckboxItem,\n  MenuContent,\n  MenuGroup,\n  MenuItem,\n  MenuItemIndicator,\n  MenuLabel,\n  MenuPortal,\n  MenuRadioGroup,\n  MenuRadioItem,\n  MenuSeparator,\n  MenuSub,\n  MenuSubContent,\n  MenuSubTrigger,\n  Portal,\n  RadioGroup,\n  RadioItem,\n  Root3 as Root,\n  Separator,\n  Sub,\n  SubContent,\n  SubTrigger,\n  createMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["SELECTION_KEYS","LAST_KEYS","FIRST_LAST_KEYS","SUB_OPEN_KEYS","ltr","rtl","SUB_CLOSE_KEYS","MENU_NAME","Collection","useCollection","createCollectionScope","createCollection","createMenuContext","createMenuScope","createContextScope","createPopperScope","createRovingFocusGroupScope","usePopperScope","useRovingFocusGroupScope","MenuProvider","useMenuContext","MenuRootProvider","useMenuRootContext","Menu","props","__scopeMenu","open","children","dir","onOpenChange","modal","popperScope","content","setContent","React","useState","isUsingKeyboardRef","useRef","handleOpenChange","useCallbackRef","direction","useDirection","useEffect","handleKeyDown","current","document","addEventListener","handlePointer","capture","once","removeEventListener","jsx","PopperPrimitive.Root","scope","onContentChange","onClose","useCallback","displayName","MenuAnchor","forwardRef","forwardedRef","anchorProps","PopperPrimitive.Anchor","ref","PORTAL_NAME","PortalProvider","usePortalContext","forceMount","MenuPortal","container","context","Presence","present","PortalPrimitive","asChild","CONTENT_NAME","MenuContentProvider","useMenuContentContext","MenuContent","portalContext","contentProps","rootContext","Provider","Slot","MenuRootContentModal","MenuRootContentNonModal","composedRefs","useComposedRefs","hideOthers","MenuContentImpl","trapFocus","disableOutsidePointerEvents","disableOutsideScroll","onFocusOutside","composeEventHandlers","event","preventDefault","checkForDefaultPrevented","onDismiss","createSlot","loop","onOpenAutoFocus","onCloseAutoFocus","onEntryFocus","onEscapeKeyDown","onPointerDownOutside","onInteractOutside","rovingFocusGroupScope","getItems","currentItemId","setCurrentItemId","contentRef","timerRef","searchRef","pointerGraceTimerRef","pointerGraceIntentRef","pointerDirRef","lastPointerXRef","ScrollLockWrapper","RemoveScroll","Fragment","scrollLockWrapperProps","as","allowPinchZoom","handleTypeaheadSearch","key","search","items","filter","item","disabled","currentItem","activeElement","currentMatch","find","textValue","nextMatch","values","isRepeated","length","Array","from","every","char","normalizedSearch","currentMatchIndex","indexOf","wrappedValues","array","startIndex","Math","max","map","_","index","v","value","toLowerCase","startsWith","getNextMatch","newItem","updateSearch","window","clearTimeout","setTimeout","focus","useFocusGuards","isPointerMovingToSubmenu","side","area","cursorPos","x","clientX","y","clientY","point","polygon","inside","i","j","ii","jj","xi","yi","xj","yj","isPointInPolygon","isPointerInGraceArea","onItemEnter","onItemLeave","onTriggerLeave","onPointerGraceIntentChange","intent","FocusScope","trapped","onMountAutoFocus","preventScroll","onUnmountAutoFocus","DismissableLayer","RovingFocusGroup.Root","orientation","currentTabStopId","onCurrentTabStopIdChange","preventScrollOnEntryFocus","PopperPrimitive.Content","role","getOpenState","style","outline","onKeyDown","isKeyDownInside","target","closest","currentTarget","isModifierKey","ctrlKey","altKey","metaKey","isCharacterKey","includes","candidateNodes","reverse","candidates","PREVIOUSLY_FOCUSED_ELEMENT","candidate","focusFirst","onBlur","contains","onPointerMove","whenMouse","pointerXHasChanged","newDir","MenuGroup","groupProps","Primitive","div","MenuLabel","labelProps","ITEM_NAME","ITEM_SELECT","MenuItem","onSelect","itemProps","contentContext","isPointerDownRef","MenuItemImpl","onClick","menuItem","itemSelectEvent","CustomEvent","bubbles","cancelable","dispatchDiscreteCustomEvent","defaultPrevented","onPointerDown","onPointerUp","click","isTypingAhead","isFocused","setIsFocused","textContent","setTextContent","trim","ItemSlot","RovingFocusGroup.Item","focusable","onPointerLeave","onFocus","MenuCheckboxItem","checked","onCheckedChange","checkboxItemProps","ItemIndicatorProvider","isIndeterminate","getCheckedState","RADIO_GROUP_NAME","RadioGroupProvider","useRadioGroupContext","onValueChange","MenuRadioGroup","handleValueChange","RADIO_ITEM_NAME","MenuRadioItem","radioItemProps","ITEM_INDICATOR_NAME","useItemIndicatorContext","MenuItemIndicator","itemIndicatorProps","indicatorContext","span","MenuSeparator","separatorProps","MenuArrow","arrowProps","PopperPrimitive.Arrow","SUB_NAME","MenuSubProvider","useMenuSubContext","MenuSub","parentMenuContext","trigger","setTrigger","contentId","useId","triggerId","onTriggerChange","SUB_TRIGGER_NAME","MenuSubTrigger","subContext","openTimerRef","clearOpenTimer","pointerGraceTimer","id","composeRefs","contentRect","getBoundingClientRect","dataset","rightSide","bleed","contentNearEdge","contentFarEdge","top","bottom","SUB_CONTENT_NAME","MenuSubContent","subContentProps","align","isCloseKey","handler","pointerType","Root","Anchor","Portal","Content","Group","Label","Item","CheckboxItem","RadioGroup","RadioItem","ItemIndicator","Separator","Arrow","Sub","SubTrigger","SubContent"],"mappings":"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","x_google_ignoreList":[0]}