@tamagui/create-menu 3.0.0-beta.901.1 → 3.0.0-beta.917.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/cjs/createBaseMenu.cjs +1 -1
  2. package/dist/cjs/createBaseMenu.native.cjs +1 -1
  3. package/dist/cjs/createBaseMenu.native.js +1 -1
  4. package/dist/cjs/createBaseMenu.native.js.map +1 -1
  5. package/dist/cjs/createNativeMenu/withNativeMenu.cjs +4 -0
  6. package/dist/cjs/createNativeMenu/withNativeMenu.native.cjs +4 -0
  7. package/dist/cjs/createNativeMenu/withNativeMenu.native.js +4 -0
  8. package/dist/cjs/createNativeMenu/withNativeMenu.native.js.map +1 -1
  9. package/dist/esm/createBaseMenu.mjs +1 -1
  10. package/dist/esm/createBaseMenu.mjs.map +1 -1
  11. package/dist/esm/createBaseMenu.native.js +1 -1
  12. package/dist/esm/createBaseMenu.native.js.map +1 -1
  13. package/dist/esm/createNativeMenu/withNativeMenu.mjs +4 -0
  14. package/dist/esm/createNativeMenu/withNativeMenu.mjs.map +1 -1
  15. package/dist/esm/createNativeMenu/withNativeMenu.native.js +4 -0
  16. package/dist/esm/createNativeMenu/withNativeMenu.native.js.map +1 -1
  17. package/dist/jsx/createBaseMenu.mjs +1 -1
  18. package/dist/jsx/createBaseMenu.mjs.map +1 -1
  19. package/dist/jsx/createBaseMenu.native.cjs +1 -1
  20. package/dist/jsx/createBaseMenu.native.js +1 -1
  21. package/dist/jsx/createBaseMenu.native.js.map +1 -1
  22. package/dist/jsx/createNativeMenu/withNativeMenu.mjs +4 -0
  23. package/dist/jsx/createNativeMenu/withNativeMenu.mjs.map +1 -1
  24. package/dist/jsx/createNativeMenu/withNativeMenu.native.cjs +4 -0
  25. package/dist/jsx/createNativeMenu/withNativeMenu.native.js +4 -0
  26. package/dist/jsx/createNativeMenu/withNativeMenu.native.js.map +1 -1
  27. package/package.json +21 -21
  28. package/src/createBaseMenu.tsx +3 -1
  29. package/src/createNativeMenu/withNativeMenu.tsx +7 -0
  30. package/types/createBaseMenu.d.ts.map +1 -1
  31. package/types/createNativeMenu/withNativeMenu.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"createBaseMenu.js","names":["TamaguiImage","PortalPrimitive","DismissableLayer","Presence","Portal"],"sources":["esm/createBaseMenu.js"],"sourcesContent":["import { createStyledHOC, createRefComponent } from \"@tamagui/core\";\nimport { Animate } from \"@tamagui/animate\";\nimport { AnimatePresence as Presence } from \"@tamagui/animate-presence\";\nimport { createCollection } from \"@tamagui/collection\";\nimport {\n Dismissable as DismissableLayer,\n dispatchDiscreteCustomEvent\n} from \"@tamagui/dismissable\";\nimport { useFocusGuards } from \"@tamagui/focus-guard\";\nimport { FocusScope } from \"@tamagui/focus-scope\";\nimport { Image as TamaguiImage } from \"@tamagui/image\";\nimport * as PopperPrimitive from \"@tamagui/popper\";\nimport { needsPortalRepropagation, Portal as PortalPrimitive } from \"@tamagui/portal\";\nimport { RemoveScroll } from \"@tamagui/remove-scroll\";\nimport { RovingFocusGroup } from \"@tamagui/roving-focus\";\nimport { useCallbackRef } from \"@tamagui/use-callback-ref\";\nimport { useDirection } from \"@tamagui/use-direction\";\nimport {\n composeEventHandlers,\n composeRefs,\n createStyledContext,\n isWeb,\n styled,\n Text,\n Theme,\n useComposedRefs,\n useIsTouchDevice,\n useThemeName,\n View,\n withStaticProperties\n} from \"@tamagui/web\";\nimport * as React from \"react\";\nimport { useId } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nfunction whenMouse(handler) {\n return (event) => event.pointerType === \"mouse\" ? handler(event) : void 0;\n}\nconst SELECTION_KEYS = [\"Enter\", \" \"];\nconst FIRST_KEYS = [\"ArrowDown\", \"PageUp\", \"Home\"];\nconst LAST_KEYS = [\"ArrowUp\", \"PageDown\", \"End\"];\nconst FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];\nconst SUB_OPEN_KEYS = {\n ltr: [...SELECTION_KEYS, \"ArrowRight\"],\n rtl: [...SELECTION_KEYS, \"ArrowLeft\"]\n};\nconst SUB_CLOSE_KEYS = {\n ltr: [\"ArrowLeft\"],\n rtl: [\"ArrowRight\"]\n};\nconst MENU_NAME = \"Menu\";\nconst [Collection, useCollection] = createCollection(MENU_NAME);\nconst { Provider: MenuProvider, useStyledContext: useMenuContext } = createStyledContext();\nconst { Provider: MenuRootProvider, useStyledContext: useMenuRootContext } = createStyledContext();\nconst MENU_CONTEXT = \"MenuContext\";\nconst MenuImageFrame = styled(TamaguiImage, {\n displayName: \"MenuItemImage\"\n});\nfunction createBaseMenu() {\n const MenuComp = (props) => {\n const direction = useDirection(props.dir);\n const defaultPlacement = direction === \"rtl\" ? \"bottom-end\" : \"bottom-start\";\n const {\n scope = MENU_CONTEXT,\n open = false,\n children,\n dir,\n onOpenChange,\n modal = true,\n allowFlip = { padding: 10 },\n stayInFrame = { padding: 10 },\n placement = defaultPlacement,\n resize = true,\n offset = 10,\n ...rest\n } = props;\n const [content, setContent] = React.useState(null);\n const isUsingKeyboardRef = React.useRef(false);\n const handleOpenChange = useCallbackRef(onOpenChange);\n if (isWeb) {\n React.useEffect(() => {\n const handleKeyDown = () => {\n isUsingKeyboardRef.current = true;\n document.addEventListener(\"pointerdown\", handlePointer, {\n capture: true,\n once: true\n });\n document.addEventListener(\"pointermove\", handlePointer, {\n capture: true,\n once: true\n });\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 }\n return /* @__PURE__ */ jsx(\n PopperPrimitive.Popper,\n {\n scope,\n open,\n placement,\n allowFlip,\n stayInFrame,\n resize,\n offset,\n ...rest,\n children: /* @__PURE__ */ jsx(\n MenuProvider,\n {\n scope,\n open,\n onOpenChange: handleOpenChange,\n content,\n onContentChange: setContent,\n children: /* @__PURE__ */ jsx(\n MenuRootProvider,\n {\n scope,\n open,\n onClose: React.useCallback(() => handleOpenChange(false), [handleOpenChange]),\n isUsingKeyboardRef,\n dir: direction,\n modal,\n children: /* @__PURE__ */ jsx(MenuSubProvider, { scope, children })\n }\n )\n }\n )\n }\n );\n };\n const RepropagateMenuAndMenuRootProvider = (props) => {\n const {\n scope = MENU_CONTEXT,\n menuContext,\n rootContext,\n popperContext,\n menuSubContext,\n children\n } = props;\n return /* @__PURE__ */ jsx(PopperPrimitive.PopperProvider, { ...popperContext, scope, children: /* @__PURE__ */ jsx(MenuProvider, { scope, ...menuContext, children: /* @__PURE__ */ jsx(MenuRootProvider, { scope, ...rootContext, children: menuSubContext ? /* @__PURE__ */ jsx(MenuSubProvider, { scope, ...menuSubContext, children }) : children }) }) });\n };\n MenuComp.displayName = MENU_NAME;\n const ANCHOR_NAME = \"MenuAnchor\";\n const MenuAnchor = (props) => {\n return /* @__PURE__ */ jsx(PopperPrimitive.PopperAnchor, { scope: MENU_CONTEXT, ...props });\n };\n MenuAnchor.displayName = ANCHOR_NAME;\n const PORTAL_NAME = \"MenuPortal\";\n const { Provider: PortalProvider, useStyledContext: usePortalContext } = createStyledContext(void 0, \"Portal\");\n const MenuPortal = (props) => {\n const { scope = MENU_CONTEXT, forceMount, zIndex, children } = props;\n const menuContext = useMenuContext(scope);\n const rootContext = useMenuRootContext(scope);\n const popperContext = PopperPrimitive.usePopperContext(scope);\n const menuSubContext = useMenuSubContext(scope);\n const themeName = useThemeName();\n const themedChildren = /* @__PURE__ */ jsx(Theme, { forceClassName: true, name: themeName, children });\n const content = needsPortalRepropagation() ? /* @__PURE__ */ jsx(\n RepropagateMenuAndMenuRootProvider,\n {\n menuContext,\n rootContext,\n popperContext,\n menuSubContext,\n scope,\n children: themedChildren\n }\n ) : themedChildren;\n const isPresent = forceMount || rootContext.open && menuContext.open;\n return /* @__PURE__ */ jsx(Animate, { type: \"presence\", present: isPresent, children: /* @__PURE__ */ jsx(PortalPrimitive, { stackZIndex: true, children: /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(PortalProvider, { scope, forceMount, children: /* @__PURE__ */ jsxs(View, { zIndex: zIndex || 100, inset: 0, position: \"absolute\", children: [\n !!menuContext.open && !isWeb && /* @__PURE__ */ jsx(\n View,\n {\n inset: 0,\n position: \"absolute\",\n onPress: () => menuContext.onOpenChange(!menuContext.open)\n }\n ),\n content\n ] }) }) }) }) });\n };\n MenuPortal.displayName = PORTAL_NAME;\n const CONTENT_NAME = \"MenuContent\";\n const { Provider: MenuContentProvider, useStyledContext: useMenuContentContext } = createStyledContext();\n const MenuContentFrame = styled(PopperPrimitive.PopperContentFrame, {\n displayName: CONTENT_NAME\n });\n const MenuContent = createStyledHOC(\n MenuContentFrame,\n (props, forwardedRef) => {\n const scope = props.scope || MENU_CONTEXT;\n const portalContext = usePortalContext(scope);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const rootContext = useMenuRootContext(scope);\n return /* @__PURE__ */ jsx(Collection.Provider, { scope, children: /* @__PURE__ */ jsx(Collection.Slot, { scope, children: rootContext.modal ? /* @__PURE__ */ jsx(MenuRootContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(MenuRootContentNonModal, { ...contentProps, ref: forwardedRef }) }) });\n }\n );\n const MenuRootContentModal = createRefComponent((props, forwardedRef) => {\n const scope = props.scope || MENU_CONTEXT;\n const context = useMenuContext(scope);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n return /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n ...props,\n scope,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: context.open,\n disableOutsideScroll: false,\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.cancel(),\n { checkDefaultPrevented: false }\n ),\n onDismiss: () => context.onOpenChange(false)\n }\n );\n });\n const MenuRootContentNonModal = createRefComponent((props, forwardedRef) => {\n const scope = props.scope || MENU_CONTEXT;\n const context = useMenuContext(scope);\n return /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n ...props,\n scope,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n disableOutsideScroll: false,\n onDismiss: () => context.onOpenChange(false)\n }\n );\n });\n const MenuContentImpl = createRefComponent((props, forwardedRef) => {\n const {\n scope = MENU_CONTEXT,\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 disableDismissOnScroll = false,\n ...contentProps\n } = props;\n const context = useMenuContext(scope);\n const rootContext = useMenuRootContext(scope);\n const popperContext = PopperPrimitive.usePopperContext(scope);\n const getItems = useCollection(scope);\n const [currentItemId, setCurrentItemId] = React.useState(null);\n const contentRef = React.useRef(null);\n const focusableContentRef = React.useRef(null);\n const composedRefs = useComposedRefs(\n forwardedRef,\n contentRef,\n context.onContentChange\n );\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 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(\n (item) => item.ref.current === currentItem\n )?.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 clearTimeout(timerRef.current);\n if (value !== \"\") timerRef.current = setTimeout(() => updateSearch(\"\"), 1e3);\n })(search);\n if (newItem) {\n setTimeout(() => newItem.focus());\n }\n };\n React.useEffect(() => {\n return () => clearTimeout(timerRef.current);\n }, []);\n React.useEffect(() => {\n if (!isWeb || !context.open) return;\n const frame = requestAnimationFrame(() => {\n const container = contentRef.current;\n const el = container?.querySelector(\"[data-tamagui-menu-content]\");\n if (el) focusableContentRef.current = el;\n });\n return () => cancelAnimationFrame(frame);\n }, [context.open]);\n React.useEffect(() => {\n if (!isWeb || disableDismissOnScroll || !context.open) return;\n const handleScroll = (event) => {\n const scrolled = event.target;\n if (!scrolled) return;\n const content2 = contentRef.current;\n if (content2?.contains(scrolled)) return;\n const reference = popperContext.refs?.reference?.current;\n const anchor = reference instanceof Element ? reference : reference?.contextElement ?? null;\n if (anchor && !scrolled.contains(anchor)) return;\n context.onOpenChange(false);\n };\n window.addEventListener(\"scroll\", handleScroll, { capture: true, passive: true });\n return () => {\n window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n };\n }, [disableDismissOnScroll, context.open, context.onOpenChange, popperContext.refs]);\n if (isWeb) {\n useFocusGuards();\n }\n const isPointerMovingToSubmenu = React.useCallback((event) => {\n const isMovingTowards = pointerDirRef.current === pointerGraceIntentRef.current?.side;\n const inArea = isPointerInGraceArea(event, pointerGraceIntentRef.current?.area);\n return isMovingTowards && inArea;\n }, []);\n const content = /* @__PURE__ */ jsx(\n PopperPrimitive.PopperContent,\n {\n role: \"menu\",\n tabIndex: -1,\n \"aria-orientation\": \"vertical\",\n \"data-state\": getOpenState(context.open),\n \"data-tamagui-menu-content\": \"\",\n dir: rootContext.dir,\n scope: scope || MENU_CONTEXT,\n ...contentProps,\n ref: composedRefs,\n className: contentProps.transition ? void 0 : contentProps.className,\n ...isWeb ? {\n onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n const target = event.target;\n const isKeyDownInside = target.closest(\"[data-tamagui-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 isOnContentFrame = event.target.hasAttribute(\n \"data-tamagui-menu-content\"\n );\n if (!isKeyDownInside || !isOnContentFrame) 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, { focusVisible: true });\n }),\n // TODO\n // @ts-ignore\n onBlur: composeEventHandlers(props.onBlur, (event) => {\n if (!event.currentTarget?.contains(event.target)) {\n clearTimeout(timerRef.current);\n searchRef.current = \"\";\n }\n }),\n // TODO\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n if (event.pointerType !== \"mouse\") return;\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 return /* @__PURE__ */ jsx(\n MenuContentProvider,\n {\n scope,\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 focusableContentRef.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(RemoveScroll, { enabled: disableOutsideScroll, children: /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: false,\n trapped: trapFocus,\n onMountAutoFocus: composeEventHandlers(onOpenAutoFocus, (event) => {\n event.cancel();\n const content2 = document.querySelector(\n \"[data-tamagui-menu-content]\"\n );\n content2?.focus({ preventScroll: true });\n }),\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n asChild: true,\n children: /* @__PURE__ */ jsx(\n RovingFocusGroup,\n {\n asChild: true,\n __scopeRovingFocusGroup: scope || MENU_CONTEXT,\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) {\n event.cancel();\n }\n }),\n children: content\n }\n )\n }\n )\n }\n ) })\n }\n );\n });\n MenuContent.displayName = CONTENT_NAME;\n const ITEM_NAME = \"MenuItem\";\n const ITEM_SELECT = \"menu.itemSelect\";\n const MenuItem = createStyledHOC(\n View,\n (props, forwardedRef) => {\n const {\n disabled = false,\n onSelect,\n preventCloseOnSelect,\n children,\n scope = MENU_CONTEXT,\n // filter out native-only props that shouldn't reach the DOM\n // @ts-ignore\n destructive,\n // @ts-ignore\n hidden,\n // @ts-ignore\n androidIconName,\n ...itemProps\n } = props;\n const ref = React.useRef(null);\n const rootContext = useMenuRootContext(scope);\n const contentContext = useMenuContentContext(scope);\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 if (isWeb) {\n const menuItemEl = menuItem;\n const itemSelectEvent = new CustomEvent(ITEM_SELECT, {\n bubbles: true,\n cancelable: true\n });\n menuItemEl.addEventListener(ITEM_SELECT, (event) => onSelect?.(event), {\n once: true\n });\n dispatchDiscreteCustomEvent(menuItemEl, itemSelectEvent);\n if (itemSelectEvent.defaultPrevented || preventCloseOnSelect) {\n isPointerDownRef.current = false;\n } else {\n rootContext.onClose();\n }\n } else {\n onSelect?.({ target: menuItem });\n isPointerDownRef.current = false;\n if (!preventCloseOnSelect) {\n rootContext.onClose();\n }\n }\n }\n };\n const content = typeof children === \"string\" ? /* @__PURE__ */ jsx(Text, { children }) : children;\n return /* @__PURE__ */ jsx(\n MenuItemImpl,\n {\n ...itemProps,\n scope,\n ref: composedRefs,\n disabled,\n onPress: composeEventHandlers(props.onPress, handleSelect),\n onPointerDown: (event) => {\n props.onPointerDown?.(event);\n isPointerDownRef.current = true;\n },\n onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n if (isWeb) {\n if (!isPointerDownRef.current) event.currentTarget?.click();\n }\n }),\n ...isWeb ? {\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 children: content\n }\n );\n }\n );\n const MenuItemImpl = createRefComponent((props, forwardedRef) => {\n const {\n scope = MENU_CONTEXT,\n className,\n disabled = false,\n textValue,\n ...itemProps\n } = props;\n const contentContext = useMenuContentContext(scope);\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 if (isWeb) {\n React.useEffect(() => {\n const menuItem = ref.current;\n if (menuItem) {\n setTextContent((menuItem.textContent ?? \"\").trim());\n }\n }, [itemProps.children]);\n }\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope,\n disabled,\n textValue: textValue ?? textContent,\n children: /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n __scopeRovingFocusGroup: scope,\n tabIndex: disabled ? -1 : 0,\n children: /* @__PURE__ */ jsx(\n View,\n {\n className: `is_${ITEM_NAME} ${className || \"\"}`.trim(),\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(props.onPointerMove, (event) => {\n if (event.pointerType !== \"mouse\") return;\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, focusVisible: false });\n }\n }\n }),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, (event) => {\n contentContext.onItemLeave(event);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => setIsFocused(true)),\n onBlur: composeEventHandlers(props.onBlur, () => setIsFocused(false))\n }\n )\n }\n )\n }\n );\n });\n MenuItem.displayName = ITEM_NAME;\n const ITEM_TITLE_NAME = \"MenuItemTitle\";\n const MenuItemTitle = createStyledHOC(\n Text,\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Text, { ...props, ref: forwardedRef });\n }\n );\n MenuItemTitle.displayName = ITEM_TITLE_NAME;\n const ITEM_SUB_TITLE_NAME = \"MenuItemSubTitle\";\n const MenuItemSubTitle = createStyledHOC(\n Text,\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Text, { ...props, ref: forwardedRef });\n }\n );\n MenuItemSubTitle.displayName = ITEM_SUB_TITLE_NAME;\n const ITEM_IMAGE = \"MenuItemImage\";\n const MenuItemImage = createRefComponent(\n (props, forwardedRef) => {\n const {\n // @ts-ignore - native menu ios config\n ios,\n // @ts-ignore\n androidIconName,\n ...rest\n } = props;\n return /* @__PURE__ */ jsx(MenuImageFrame, { ...rest, ref: forwardedRef });\n }\n );\n MenuItemImage.displayName = ITEM_IMAGE;\n const ITEM_ICON = \"MenuItemIcon\";\n const MenuItemIcon = createStyledHOC(View, (props, forwardedRef) => {\n const {\n // @ts-ignore\n ios,\n // @ts-ignore\n android,\n // @ts-ignore\n androidIconName,\n ...rest\n } = props;\n return /* @__PURE__ */ jsx(View, { ...rest, ref: forwardedRef });\n });\n MenuItemIcon.displayName = ITEM_ICON;\n const CHECKBOX_ITEM_NAME = \"MenuCheckboxItem\";\n const MenuCheckboxItem = createStyledHOC(\n View,\n (props, forwardedRef) => {\n const {\n checked = false,\n onCheckedChange,\n scope = MENU_CONTEXT,\n // filter out native-only props\n // @ts-ignore - native menu value state\n value,\n // @ts-ignore - native menu value change handler\n onValueChange,\n className,\n ...checkboxItemProps\n } = props;\n return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope, checked, children: /* @__PURE__ */ jsx(\n MenuItem,\n {\n className: `is_${CHECKBOX_ITEM_NAME} ${className || \"\"}`.trim(),\n role: isWeb ? \"menuitemcheckbox\" : \"menuitem\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n ...checkboxItemProps,\n scope,\n ref: forwardedRef,\n \"data-state\": getCheckedState(checked),\n onSelect: composeEventHandlers(\n checkboxItemProps.onSelect,\n () => onCheckedChange?.(isIndeterminate(checked) ? true : !checked),\n { checkDefaultPrevented: false }\n )\n }\n ) });\n }\n );\n MenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\n const RADIO_GROUP_NAME = \"MenuRadioGroup\";\n const { Provider: RadioGroupProvider, useStyledContext: useRadioGroupContext } = createStyledContext();\n const MenuRadioGroup = createStyledHOC(\n View,\n (props, forwardedRef) => {\n const {\n value,\n onValueChange,\n scope = MENU_CONTEXT,\n className,\n ...groupProps\n } = props;\n const handleValueChange = useCallbackRef(onValueChange);\n return /* @__PURE__ */ jsx(RadioGroupProvider, { scope, value, onValueChange: handleValueChange, children: /* @__PURE__ */ jsx(\n View,\n {\n className: `is_${RADIO_GROUP_NAME} ${className || \"\"}`.trim(),\n ...groupProps,\n ref: forwardedRef\n }\n ) });\n }\n );\n MenuRadioGroup.displayName = RADIO_GROUP_NAME;\n const RADIO_ITEM_NAME = \"MenuRadioItem\";\n const MenuRadioItem = createStyledHOC(\n View,\n (props, forwardedRef) => {\n const { value, scope = MENU_CONTEXT, className, ...radioItemProps } = props;\n const context = useRadioGroupContext(scope);\n const checked = value === context.value;\n return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope, checked, children: /* @__PURE__ */ jsx(\n MenuItem,\n {\n className: `is_${RADIO_ITEM_NAME} ${className || \"\"}`.trim(),\n ...radioItemProps,\n scope,\n \"aria-checked\": checked,\n ref: forwardedRef,\n role: isWeb ? \"menuitemradio\" : \"menuitem\",\n \"data-state\": getCheckedState(checked),\n onSelect: composeEventHandlers(\n radioItemProps.onSelect,\n () => context.onValueChange?.(value),\n { checkDefaultPrevented: false }\n )\n }\n ) });\n }\n );\n MenuRadioItem.displayName = RADIO_ITEM_NAME;\n const ITEM_INDICATOR_NAME = \"MenuItemIndicator\";\n const { Provider: ItemIndicatorProvider, useStyledContext: useItemIndicatorContext } = createStyledContext();\n const MenuItemIndicator = createStyledHOC(\n View,\n (props, forwardedRef) => {\n const { scope = MENU_CONTEXT, className, forceMount, ...itemIndicatorProps } = props;\n const indicatorContext = useItemIndicatorContext(scope);\n return /* @__PURE__ */ jsx(Presence, { children: forceMount || isIndeterminate(indicatorContext.checked) || indicatorContext.checked === true ? /* @__PURE__ */ jsx(\n View,\n {\n className: `is_${ITEM_INDICATOR_NAME} ${className || \"\"}`.trim(),\n render: \"span\",\n ...itemIndicatorProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(indicatorContext.checked)\n }\n ) : null });\n }\n );\n MenuItemIndicator.displayName = ITEM_INDICATOR_NAME;\n const MenuArrow = createRefComponent(\n function MenuArrow2(props, forwardedRef) {\n const { scope = MENU_CONTEXT, className, ...rest } = props;\n return /* @__PURE__ */ jsx(\n PopperPrimitive.PopperArrow,\n {\n scope,\n className: `is_PopperArrow ${className || \"\"}`.trim(),\n ...rest,\n ref: forwardedRef\n }\n );\n }\n );\n const SUB_NAME = \"MenuSub\";\n const { Provider: MenuSubProvider, useStyledContext: useMenuSubContext } = createStyledContext();\n const MenuSub = (props) => {\n const isTouchDevice = useIsTouchDevice();\n const { scope = MENU_CONTEXT } = props;\n const rootContext = useMenuRootContext(scope);\n const parentPopperContext = PopperPrimitive.usePopperContext(scope);\n const parentSide = parentPopperContext.placement?.split(\"-\")[0];\n const isNestedSubmenu = parentSide === \"left\" || parentSide === \"right\";\n const defaultPlacement = isTouchDevice ? \"bottom\" : isNestedSubmenu ? `${parentSide}-start` : rootContext.dir === \"rtl\" ? \"left-start\" : \"right-start\";\n const {\n children,\n open = false,\n onOpenChange,\n allowFlip: allowFlipProp = { padding: 10 },\n stayInFrame = { padding: 10 },\n placement = defaultPlacement,\n ...rest\n } = props;\n const allowFlip = React.useMemo(() => {\n if (!isNestedSubmenu || typeof allowFlipProp === \"boolean\") return allowFlipProp;\n if (allowFlipProp.fallbackPlacements) return allowFlipProp;\n const side = placement.split(\"-\")[0];\n const align = placement.split(\"-\")[1] || \"start\";\n const otherAlign = align === \"start\" ? \"end\" : \"start\";\n if (side === \"left\" || side === \"right\") {\n const oppositeSide = side === \"right\" ? \"left\" : \"right\";\n return {\n ...typeof allowFlipProp === \"object\" ? allowFlipProp : {},\n fallbackPlacements: [\n `${side}-${otherAlign}`,\n `${oppositeSide}-${align}`,\n `${oppositeSide}-${otherAlign}`\n ]\n };\n }\n return allowFlipProp;\n }, [isNestedSubmenu, allowFlipProp, placement]);\n const parentMenuContext = useMenuContext(scope);\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(\n PopperPrimitive.Popper,\n {\n open,\n placement,\n allowFlip,\n stayInFrame,\n ...rest,\n scope,\n children: /* @__PURE__ */ jsx(\n MenuProvider,\n {\n scope,\n open,\n onOpenChange: handleOpenChange,\n content,\n onContentChange: setContent,\n children: /* @__PURE__ */ jsx(\n MenuSubProvider,\n {\n scope,\n contentId: useId(),\n triggerId: useId(),\n trigger,\n onTriggerChange: setTrigger,\n children\n }\n )\n }\n )\n }\n );\n };\n MenuSub.displayName = SUB_NAME;\n const SUB_TRIGGER_NAME = \"MenuSubTrigger\";\n const MenuSubTrigger = createRefComponent((props, forwardedRef) => {\n const scope = props.scope || MENU_CONTEXT;\n const context = useMenuContext(scope);\n const rootContext = useMenuRootContext(scope);\n const subContext = useMenuSubContext(scope);\n const contentContext = useMenuContentContext(scope);\n const popperContext = PopperPrimitive.usePopperContext(scope);\n const openTimerRef = React.useRef(null);\n const { pointerGraceTimerRef, onPointerGraceIntentChange } = contentContext;\n const effectiveDir = rootContext.dir;\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(\n MenuAnchor,\n {\n className: `is_${SUB_TRIGGER_NAME}`,\n asChild: \"except-style\",\n scope,\n 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 onPress: (event) => {\n props.onPress?.(event);\n if (props.disabled || event.defaultPrevented) return;\n if (isWeb) {\n event.currentTarget.focus();\n }\n if (!context.open) context.onOpenChange(true);\n },\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n // @ts-ignore\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(props.onPointerLeave, (eventIn) => {\n const event = eventIn;\n clearOpenTimer();\n const contentRect = context.content?.getBoundingClientRect();\n if (contentRect) {\n const contentEl = context.content;\n const sideEl = contentEl?.dataset?.side ? contentEl : contentEl?.querySelector(\"[data-side]\");\n const side = sideEl?.dataset?.side || \"right\";\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 const polygon = {\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 contentContext.onPointerGraceIntentChange(polygon);\n window.clearTimeout(pointerGraceTimerRef.current);\n pointerGraceTimerRef.current = window.setTimeout(\n () => contentContext.onPointerGraceIntentChange(null),\n 300\n );\n } else if (isWeb && subContext.trigger) {\n const triggerEl = subContext.trigger;\n const triggerRect = triggerEl?.getBoundingClientRect();\n if (triggerRect) {\n const placementSide = popperContext.placement?.split(\"-\")[0];\n const side = placementSide === \"left\" || placementSide === \"right\" ? placementSide : rootContext.dir === \"rtl\" ? \"left\" : \"right\";\n const rightSide = side === \"right\";\n const bleed = rightSide ? -5 : 5;\n const nearEdge = rightSide ? triggerRect.right + 4 : triggerRect.left - 4;\n const farEdge = rightSide ? nearEdge + 200 : nearEdge - 200;\n const polygon = {\n area: [\n { x: event.clientX + bleed, y: event.clientY },\n { x: nearEdge, y: triggerRect.top - 50 },\n { x: farEdge, y: triggerRect.top - 50 },\n { x: farEdge, y: triggerRect.bottom + 50 },\n { x: nearEdge, y: triggerRect.bottom + 50 }\n ],\n side\n };\n contentContext.onPointerGraceIntentChange(polygon);\n window.clearTimeout(pointerGraceTimerRef.current);\n pointerGraceTimerRef.current = window.setTimeout(\n () => contentContext.onPointerGraceIntentChange(null),\n 300\n );\n }\n } else {\n contentContext.onTriggerLeave(event);\n if (event.defaultPrevented) return;\n contentContext.onPointerGraceIntentChange(null);\n }\n }),\n ...isWeb ? {\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef.current !== \"\";\n if (props.disabled || isTypingAhead && event.key === \" \") return;\n const willOpen = SUB_OPEN_KEYS[effectiveDir].includes(event.key);\n if (willOpen) {\n if (context.open && context.content) {\n const contentEl = context.content;\n const firstItem = contentEl.querySelector?.(\n '[role=\"menuitem\"]:not([data-disabled])'\n );\n if (firstItem) {\n firstItem.focus({ focusVisible: true });\n event.preventDefault();\n return;\n }\n }\n const triggerEl = event.currentTarget;\n popperContext.refs?.setReference(triggerEl);\n context.onOpenChange(true);\n requestAnimationFrame(() => {\n popperContext.update?.();\n });\n context.content?.focus({ focusVisible: true });\n event.preventDefault();\n }\n })\n } : null\n }\n )\n }\n );\n });\n MenuSubTrigger.displayName = SUB_TRIGGER_NAME;\n const SUB_CONTENT_NAME = \"MenuSubContent\";\n const MenuSubContentFrame = styled(PopperPrimitive.PopperContentFrame, {\n displayName: SUB_CONTENT_NAME\n });\n const MenuSubContent = createStyledHOC(\n MenuSubContentFrame,\n (props, forwardedRef) => {\n const scope = props.scope || MENU_CONTEXT;\n const portalContext = usePortalContext(scope);\n const { forceMount = portalContext.forceMount, ...subContentProps } = props;\n const context = useMenuContext(scope);\n const rootContext = useMenuRootContext(scope);\n const subContext = useMenuSubContext(scope);\n const popperContext = PopperPrimitive.usePopperContext(scope);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const placementSide = popperContext.placement?.split(\"-\")[0];\n const dataSide = placementSide === \"left\" || placementSide === \"right\" ? placementSide : rootContext.dir === \"rtl\" ? \"left\" : \"right\";\n const effectiveDir = rootContext.dir;\n return /* @__PURE__ */ jsx(Collection.Provider, { scope, children: /* @__PURE__ */ jsx(Collection.Slot, { scope, children: /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n id: subContext.contentId,\n \"aria-labelledby\": subContext.triggerId,\n ...subContentProps,\n ref: composedRefs,\n \"data-side\": dataSide,\n disableOutsidePointerEvents: false,\n disableOutsideScroll: false,\n trapFocus: false,\n onOpenAutoFocus: (event) => {\n if (rootContext.isUsingKeyboardRef.current) {\n const root = ref.current;\n const content = root?.querySelector?.(\n \"[data-tamagui-menu-content]\"\n );\n (content || root)?.focus({ preventScroll: true });\n }\n event.cancel();\n },\n onCloseAutoFocus: (event) => event.cancel(),\n onFocusOutside: composeEventHandlers(props.onFocusOutside, (event) => {\n if (event.event?.target !== subContext.trigger)\n context.onOpenChange(false);\n }),\n onEscapeKeyDown: composeEventHandlers(props.onEscapeKeyDown, (event) => {\n context.onOpenChange(false);\n subContext.trigger?.focus({ focusVisible: true });\n event.cancel();\n event.event?.preventDefault?.();\n }),\n ...isWeb ? {\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isKeyDownInside = event.currentTarget.contains(\n event.target\n );\n const isCloseKey = SUB_CLOSE_KEYS[effectiveDir].includes(event.key);\n if (isKeyDownInside && isCloseKey) {\n context.onOpenChange(false);\n subContext.trigger?.focus({ focusVisible: true });\n event.preventDefault();\n }\n })\n } : null\n }\n ) }) });\n }\n );\n MenuSubContent.displayName = SUB_CONTENT_NAME;\n const Anchor = MenuAnchor;\n const Portal = MenuPortal;\n const Content = MenuContent;\n const Group = createStyledHOC(View, (props, ref) => {\n return /* @__PURE__ */ jsx(View, { role: \"group\", ...props, ref });\n });\n Group.displayName = \"MenuGroup\";\n const Label = createStyledHOC(Text, (props, ref) => {\n return /* @__PURE__ */ jsx(Text, { ...props, ref });\n });\n Label.displayName = \"MenuLabel\";\n const Item = MenuItem;\n const CheckboxItem = MenuCheckboxItem;\n const RadioGroup = MenuRadioGroup;\n const RadioItem = MenuRadioItem;\n const ItemIndicator = MenuItemIndicator;\n const Separator = createStyledHOC(View, (props, ref) => {\n return /* @__PURE__ */ jsx(View, { role: \"separator\", \"aria-orientation\": \"horizontal\", ...props, ref });\n });\n Separator.displayName = \"MenuSeparator\";\n const Arrow = MenuArrow;\n const Sub = MenuSub;\n const SubTrigger = MenuSubTrigger;\n const SubContent = MenuSubContent;\n const ItemTitle = MenuItemTitle;\n const ItemSubtitle = MenuItemSubTitle;\n const ItemImage = MenuItemImage;\n const ItemIcon = MenuItemIcon;\n const Menu = withStaticProperties(MenuComp, {\n Anchor,\n Portal,\n Content,\n Group,\n Label,\n Item,\n CheckboxItem,\n RadioGroup,\n RadioItem,\n ItemIndicator,\n Separator,\n Arrow,\n Sub,\n SubTrigger,\n SubContent,\n ItemTitle,\n ItemSubtitle,\n ItemImage,\n ItemIcon\n });\n return {\n Menu\n };\n}\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, options) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll: true, focusVisible: options?.focusVisible });\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 xi = polygon[i].x;\n const yi = polygon[i].y;\n const xj = polygon[j].x;\n const yj = polygon[j].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}\nexport {\n createBaseMenu\n};\n//# sourceMappingURL=createBaseMenu.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"createBaseMenu.js","names":["TamaguiImage","PortalPrimitive","DismissableLayer","Presence","Portal"],"sources":["esm/createBaseMenu.js"],"sourcesContent":["import { createStyledHOC, createRefComponent } from \"@tamagui/core\";\nimport { Animate } from \"@tamagui/animate\";\nimport { AnimatePresence as Presence } from \"@tamagui/animate-presence\";\nimport { createCollection } from \"@tamagui/collection\";\nimport {\n Dismissable as DismissableLayer,\n dispatchDiscreteCustomEvent\n} from \"@tamagui/dismissable\";\nimport { useFocusGuards } from \"@tamagui/focus-guard\";\nimport { FocusScope } from \"@tamagui/focus-scope\";\nimport { Image as TamaguiImage } from \"@tamagui/image\";\nimport * as PopperPrimitive from \"@tamagui/popper\";\nimport { needsPortalRepropagation, Portal as PortalPrimitive } from \"@tamagui/portal\";\nimport { RemoveScroll } from \"@tamagui/remove-scroll\";\nimport { RovingFocusGroup } from \"@tamagui/roving-focus\";\nimport { useCallbackRef } from \"@tamagui/use-callback-ref\";\nimport { useDirection } from \"@tamagui/use-direction\";\nimport {\n composeEventHandlers,\n composeRefs,\n createStyledContext,\n isWeb,\n styled,\n Text,\n Theme,\n useComposedRefs,\n useIsTouchDevice,\n useThemeName,\n View,\n withStaticProperties\n} from \"@tamagui/web\";\nimport * as React from \"react\";\nimport { useId } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nfunction whenMouse(handler) {\n return (event) => event.pointerType === \"mouse\" ? handler(event) : void 0;\n}\nconst SELECTION_KEYS = [\"Enter\", \" \"];\nconst FIRST_KEYS = [\"ArrowDown\", \"PageUp\", \"Home\"];\nconst LAST_KEYS = [\"ArrowUp\", \"PageDown\", \"End\"];\nconst FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];\nconst SUB_OPEN_KEYS = {\n ltr: [...SELECTION_KEYS, \"ArrowRight\"],\n rtl: [...SELECTION_KEYS, \"ArrowLeft\"]\n};\nconst SUB_CLOSE_KEYS = {\n ltr: [\"ArrowLeft\"],\n rtl: [\"ArrowRight\"]\n};\nconst MENU_NAME = \"Menu\";\nconst [Collection, useCollection] = createCollection(MENU_NAME);\nconst { Provider: MenuProvider, useStyledContext: useMenuContext } = createStyledContext();\nconst { Provider: MenuRootProvider, useStyledContext: useMenuRootContext } = createStyledContext();\nconst MENU_CONTEXT = \"MenuContext\";\nconst MenuImageFrame = styled(TamaguiImage, {\n displayName: \"MenuItemImage\"\n});\nfunction createBaseMenu() {\n const MenuComp = (props) => {\n const direction = useDirection(props.dir);\n const defaultPlacement = direction === \"rtl\" ? \"bottom-end\" : \"bottom-start\";\n const {\n scope = MENU_CONTEXT,\n open = false,\n children,\n dir,\n onOpenChange,\n modal = true,\n allowFlip = { padding: 10 },\n stayInFrame = { padding: 10 },\n placement = defaultPlacement,\n resize = true,\n offset = 10,\n ...rest\n } = props;\n const [content, setContent] = React.useState(null);\n const isUsingKeyboardRef = React.useRef(false);\n const handleOpenChange = useCallbackRef(onOpenChange);\n if (isWeb) {\n React.useEffect(() => {\n const handleKeyDown = () => {\n isUsingKeyboardRef.current = true;\n document.addEventListener(\"pointerdown\", handlePointer, {\n capture: true,\n once: true\n });\n document.addEventListener(\"pointermove\", handlePointer, {\n capture: true,\n once: true\n });\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 }\n return /* @__PURE__ */ jsx(\n PopperPrimitive.Popper,\n {\n scope,\n open,\n placement,\n allowFlip,\n stayInFrame,\n resize,\n offset,\n ...rest,\n children: /* @__PURE__ */ jsx(\n MenuProvider,\n {\n scope,\n open,\n onOpenChange: handleOpenChange,\n content,\n onContentChange: setContent,\n children: /* @__PURE__ */ jsx(\n MenuRootProvider,\n {\n scope,\n open,\n onClose: React.useCallback(() => handleOpenChange(false), [handleOpenChange]),\n isUsingKeyboardRef,\n dir: direction,\n modal,\n children: /* @__PURE__ */ jsx(MenuSubProvider, { scope, children })\n }\n )\n }\n )\n }\n );\n };\n const RepropagateMenuAndMenuRootProvider = (props) => {\n const {\n scope = MENU_CONTEXT,\n menuContext,\n rootContext,\n popperContext,\n menuSubContext,\n children\n } = props;\n return /* @__PURE__ */ jsx(PopperPrimitive.PopperProvider, { ...popperContext, scope, children: /* @__PURE__ */ jsx(MenuProvider, { scope, ...menuContext, children: /* @__PURE__ */ jsx(MenuRootProvider, { scope, ...rootContext, children: menuSubContext ? /* @__PURE__ */ jsx(MenuSubProvider, { scope, ...menuSubContext, children }) : children }) }) });\n };\n MenuComp.displayName = MENU_NAME;\n const ANCHOR_NAME = \"MenuAnchor\";\n const MenuAnchor = (props) => {\n return /* @__PURE__ */ jsx(PopperPrimitive.PopperAnchor, { scope: MENU_CONTEXT, ...props });\n };\n MenuAnchor.displayName = ANCHOR_NAME;\n const PORTAL_NAME = \"MenuPortal\";\n const { Provider: PortalProvider, useStyledContext: usePortalContext } = createStyledContext({}, \"Portal\");\n const MenuPortal = (props) => {\n const { scope = MENU_CONTEXT, forceMount, zIndex, children } = props;\n const menuContext = useMenuContext(scope);\n const rootContext = useMenuRootContext(scope);\n const popperContext = PopperPrimitive.usePopperContext(scope);\n const menuSubContext = useMenuSubContext(scope);\n const themeName = useThemeName();\n const themedChildren = /* @__PURE__ */ jsx(Theme, { forceClassName: true, name: themeName, children });\n const content = needsPortalRepropagation() ? /* @__PURE__ */ jsx(\n RepropagateMenuAndMenuRootProvider,\n {\n menuContext,\n rootContext,\n popperContext,\n menuSubContext,\n scope,\n children: themedChildren\n }\n ) : themedChildren;\n const isPresent = forceMount || rootContext.open && menuContext.open;\n return /* @__PURE__ */ jsx(Animate, { type: \"presence\", present: isPresent, children: /* @__PURE__ */ jsx(PortalPrimitive, { stackZIndex: true, children: /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(PortalProvider, { scope, forceMount, children: /* @__PURE__ */ jsxs(View, { zIndex: zIndex || 100, inset: 0, position: \"absolute\", children: [\n !!menuContext.open && !isWeb && /* @__PURE__ */ jsx(\n View,\n {\n inset: 0,\n position: \"absolute\",\n onPress: () => menuContext.onOpenChange(!menuContext.open)\n }\n ),\n content\n ] }) }) }) }) });\n };\n MenuPortal.displayName = PORTAL_NAME;\n const CONTENT_NAME = \"MenuContent\";\n const { Provider: MenuContentProvider, useStyledContext: useMenuContentContext } = createStyledContext();\n const MenuContentFrame = styled(PopperPrimitive.PopperContentFrame, {\n displayName: CONTENT_NAME\n });\n const MenuContent = createStyledHOC(\n MenuContentFrame,\n (props, forwardedRef) => {\n const scope = props.scope || MENU_CONTEXT;\n const portalContext = usePortalContext(scope);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const rootContext = useMenuRootContext(scope);\n return /* @__PURE__ */ jsx(Collection.Provider, { scope, children: /* @__PURE__ */ jsx(Collection.Slot, { scope, children: rootContext.modal ? /* @__PURE__ */ jsx(MenuRootContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(MenuRootContentNonModal, { ...contentProps, ref: forwardedRef }) }) });\n }\n );\n const MenuRootContentModal = createRefComponent((props, forwardedRef) => {\n const scope = props.scope || MENU_CONTEXT;\n const context = useMenuContext(scope);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n return /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n ...props,\n scope,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: context.open,\n disableOutsideScroll: false,\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.cancel(),\n { checkDefaultPrevented: false }\n ),\n onDismiss: () => context.onOpenChange(false)\n }\n );\n });\n const MenuRootContentNonModal = createRefComponent((props, forwardedRef) => {\n const scope = props.scope || MENU_CONTEXT;\n const context = useMenuContext(scope);\n return /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n ...props,\n scope,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n disableOutsideScroll: false,\n onDismiss: () => context.onOpenChange(false)\n }\n );\n });\n const MenuContentImpl = createRefComponent((props, forwardedRef) => {\n const {\n scope = MENU_CONTEXT,\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 disableDismissOnScroll = false,\n ...contentProps\n } = props;\n const context = useMenuContext(scope);\n const rootContext = useMenuRootContext(scope);\n const popperContext = PopperPrimitive.usePopperContext(scope);\n const getItems = useCollection(scope);\n const [currentItemId, setCurrentItemId] = React.useState(null);\n const contentRef = React.useRef(null);\n const focusableContentRef = React.useRef(null);\n const composedRefs = useComposedRefs(\n forwardedRef,\n contentRef,\n context.onContentChange\n );\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 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(\n (item) => item.ref.current === currentItem\n )?.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 clearTimeout(timerRef.current);\n if (value !== \"\") timerRef.current = setTimeout(() => updateSearch(\"\"), 1e3);\n })(search);\n if (newItem) {\n setTimeout(() => newItem.focus());\n }\n };\n React.useEffect(() => {\n return () => clearTimeout(timerRef.current);\n }, []);\n React.useEffect(() => {\n if (!isWeb || !context.open) return;\n const frame = requestAnimationFrame(() => {\n const container = contentRef.current;\n const el = container?.querySelector(\"[data-tamagui-menu-content]\");\n if (el) focusableContentRef.current = el;\n });\n return () => cancelAnimationFrame(frame);\n }, [context.open]);\n React.useEffect(() => {\n if (!isWeb || disableDismissOnScroll || !context.open) return;\n const handleScroll = (event) => {\n const scrolled = event.target;\n if (!scrolled) return;\n const content2 = contentRef.current;\n if (content2?.contains(scrolled)) return;\n const reference = popperContext.refs?.reference?.current;\n const anchor = reference instanceof Element ? reference : reference?.contextElement ?? null;\n if (anchor && !scrolled.contains(anchor)) return;\n context.onOpenChange(false);\n };\n window.addEventListener(\"scroll\", handleScroll, { capture: true, passive: true });\n return () => {\n window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n };\n }, [disableDismissOnScroll, context.open, context.onOpenChange, popperContext.refs]);\n if (isWeb) {\n useFocusGuards();\n }\n const isPointerMovingToSubmenu = React.useCallback((event) => {\n const isMovingTowards = pointerDirRef.current === pointerGraceIntentRef.current?.side;\n const inArea = isPointerInGraceArea(event, pointerGraceIntentRef.current?.area);\n return isMovingTowards && inArea;\n }, []);\n const content = /* @__PURE__ */ jsx(\n PopperPrimitive.PopperContent,\n {\n role: \"menu\",\n tabIndex: -1,\n \"aria-orientation\": \"vertical\",\n \"data-state\": getOpenState(context.open),\n \"data-tamagui-menu-content\": \"\",\n dir: rootContext.dir,\n scope: scope || MENU_CONTEXT,\n ...contentProps,\n ref: composedRefs,\n className: contentProps.transition ? void 0 : contentProps.className,\n ...isWeb ? {\n onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n const target = event.target;\n const isKeyDownInside = target.closest(\"[data-tamagui-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 isOnContentFrame = event.target.hasAttribute(\n \"data-tamagui-menu-content\"\n );\n if (!isKeyDownInside || !isOnContentFrame) 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, { focusVisible: true });\n }),\n // TODO\n // @ts-ignore\n onBlur: composeEventHandlers(props.onBlur, (event) => {\n if (!event.currentTarget?.contains(event.target)) {\n clearTimeout(timerRef.current);\n searchRef.current = \"\";\n }\n }),\n // TODO\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n if (event.pointerType !== \"mouse\") return;\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 return /* @__PURE__ */ jsx(\n MenuContentProvider,\n {\n scope,\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 focusableContentRef.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(RemoveScroll, { enabled: disableOutsideScroll, children: /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: false,\n trapped: trapFocus,\n onMountAutoFocus: composeEventHandlers(onOpenAutoFocus, (event) => {\n event.cancel();\n const content2 = document.querySelector(\n \"[data-tamagui-menu-content]\"\n );\n content2?.focus({ preventScroll: true });\n }),\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n asChild: true,\n children: /* @__PURE__ */ jsx(\n RovingFocusGroup,\n {\n asChild: true,\n __scopeRovingFocusGroup: scope || MENU_CONTEXT,\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) {\n event.cancel();\n }\n }),\n children: content\n }\n )\n }\n )\n }\n ) })\n }\n );\n });\n MenuContent.displayName = CONTENT_NAME;\n const ITEM_NAME = \"MenuItem\";\n const ITEM_SELECT = \"menu.itemSelect\";\n const MenuItem = createStyledHOC(\n View,\n (props, forwardedRef) => {\n const {\n disabled = false,\n onSelect,\n preventCloseOnSelect,\n children,\n scope = MENU_CONTEXT,\n // filter out native-only props that shouldn't reach the DOM\n // @ts-ignore\n destructive,\n // @ts-ignore\n hidden,\n // @ts-ignore\n androidIconName,\n ...itemProps\n } = props;\n const ref = React.useRef(null);\n const rootContext = useMenuRootContext(scope);\n const contentContext = useMenuContentContext(scope);\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 if (isWeb) {\n const menuItemEl = menuItem;\n const itemSelectEvent = new CustomEvent(ITEM_SELECT, {\n bubbles: true,\n cancelable: true\n });\n menuItemEl.addEventListener(ITEM_SELECT, (event) => onSelect?.(event), {\n once: true\n });\n dispatchDiscreteCustomEvent(menuItemEl, itemSelectEvent);\n if (itemSelectEvent.defaultPrevented || preventCloseOnSelect) {\n isPointerDownRef.current = false;\n } else {\n rootContext.onClose();\n }\n } else {\n onSelect?.({ target: menuItem });\n isPointerDownRef.current = false;\n if (!preventCloseOnSelect) {\n rootContext.onClose();\n }\n }\n }\n };\n const content = typeof children === \"string\" ? /* @__PURE__ */ jsx(Text, { children }) : children;\n return /* @__PURE__ */ jsx(\n MenuItemImpl,\n {\n ...itemProps,\n scope,\n ref: composedRefs,\n disabled,\n onPress: composeEventHandlers(props.onPress, handleSelect),\n onPointerDown: (event) => {\n props.onPointerDown?.(event);\n isPointerDownRef.current = true;\n },\n onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n if (isWeb) {\n if (!isPointerDownRef.current) event.currentTarget?.click();\n }\n }),\n ...isWeb ? {\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 children: content\n }\n );\n }\n );\n const MenuItemImpl = createRefComponent((props, forwardedRef) => {\n const {\n scope = MENU_CONTEXT,\n className,\n disabled = false,\n textValue,\n ...itemProps\n } = props;\n const contentContext = useMenuContentContext(scope);\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 if (isWeb) {\n React.useEffect(() => {\n const menuItem = ref.current;\n if (menuItem) {\n setTextContent((menuItem.textContent ?? \"\").trim());\n }\n }, [itemProps.children]);\n }\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope,\n disabled,\n textValue: textValue ?? textContent,\n children: /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n __scopeRovingFocusGroup: scope,\n tabIndex: disabled ? -1 : 0,\n children: /* @__PURE__ */ jsx(\n View,\n {\n className: `is_${ITEM_NAME} ${className || \"\"}`.trim(),\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(props.onPointerMove, (event) => {\n if (event.pointerType !== \"mouse\") return;\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, focusVisible: false });\n }\n }\n }),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, (event) => {\n contentContext.onItemLeave(event);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => setIsFocused(true)),\n onBlur: composeEventHandlers(props.onBlur, () => setIsFocused(false))\n }\n )\n }\n )\n }\n );\n });\n MenuItem.displayName = ITEM_NAME;\n const ITEM_TITLE_NAME = \"MenuItemTitle\";\n const MenuItemTitle = createStyledHOC(\n Text,\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Text, { ...props, ref: forwardedRef });\n }\n );\n MenuItemTitle.displayName = ITEM_TITLE_NAME;\n const ITEM_SUB_TITLE_NAME = \"MenuItemSubTitle\";\n const MenuItemSubTitle = createStyledHOC(\n Text,\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Text, { ...props, ref: forwardedRef });\n }\n );\n MenuItemSubTitle.displayName = ITEM_SUB_TITLE_NAME;\n const ITEM_IMAGE = \"MenuItemImage\";\n const MenuItemImage = createRefComponent(\n (props, forwardedRef) => {\n const {\n // @ts-ignore - native menu ios config\n ios,\n // @ts-ignore\n androidIconName,\n ...rest\n } = props;\n return /* @__PURE__ */ jsx(MenuImageFrame, { ...rest, ref: forwardedRef });\n }\n );\n MenuItemImage.displayName = ITEM_IMAGE;\n const ITEM_ICON = \"MenuItemIcon\";\n const MenuItemIcon = createStyledHOC(View, (props, forwardedRef) => {\n const {\n // @ts-ignore\n ios,\n // @ts-ignore\n android,\n // @ts-ignore\n androidIconName,\n ...rest\n } = props;\n return /* @__PURE__ */ jsx(View, { ...rest, ref: forwardedRef });\n });\n MenuItemIcon.displayName = ITEM_ICON;\n const CHECKBOX_ITEM_NAME = \"MenuCheckboxItem\";\n const MenuCheckboxItem = createStyledHOC(\n View,\n (props, forwardedRef) => {\n const {\n checked = false,\n onCheckedChange,\n scope = MENU_CONTEXT,\n // filter out native-only props\n // @ts-ignore - native menu value state\n value,\n // @ts-ignore - native menu value change handler\n onValueChange,\n className,\n ...checkboxItemProps\n } = props;\n return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope, checked, children: /* @__PURE__ */ jsx(\n MenuItem,\n {\n className: `is_${CHECKBOX_ITEM_NAME} ${className || \"\"}`.trim(),\n role: isWeb ? \"menuitemcheckbox\" : \"menuitem\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n ...checkboxItemProps,\n scope,\n ref: forwardedRef,\n \"data-state\": getCheckedState(checked),\n onSelect: composeEventHandlers(\n checkboxItemProps.onSelect,\n () => onCheckedChange?.(isIndeterminate(checked) ? true : !checked),\n { checkDefaultPrevented: false }\n )\n }\n ) });\n }\n );\n MenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\n const RADIO_GROUP_NAME = \"MenuRadioGroup\";\n const { Provider: RadioGroupProvider, useStyledContext: useRadioGroupContext } = createStyledContext();\n const MenuRadioGroup = createStyledHOC(\n View,\n (props, forwardedRef) => {\n const {\n value,\n onValueChange,\n scope = MENU_CONTEXT,\n className,\n ...groupProps\n } = props;\n const handleValueChange = useCallbackRef(onValueChange);\n return /* @__PURE__ */ jsx(RadioGroupProvider, { scope, value, onValueChange: handleValueChange, children: /* @__PURE__ */ jsx(\n View,\n {\n className: `is_${RADIO_GROUP_NAME} ${className || \"\"}`.trim(),\n ...groupProps,\n ref: forwardedRef\n }\n ) });\n }\n );\n MenuRadioGroup.displayName = RADIO_GROUP_NAME;\n const RADIO_ITEM_NAME = \"MenuRadioItem\";\n const MenuRadioItem = createStyledHOC(\n View,\n (props, forwardedRef) => {\n const { value, scope = MENU_CONTEXT, className, ...radioItemProps } = props;\n const context = useRadioGroupContext(scope);\n const checked = value === context.value;\n return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope, checked, children: /* @__PURE__ */ jsx(\n MenuItem,\n {\n className: `is_${RADIO_ITEM_NAME} ${className || \"\"}`.trim(),\n ...radioItemProps,\n scope,\n \"aria-checked\": checked,\n ref: forwardedRef,\n role: isWeb ? \"menuitemradio\" : \"menuitem\",\n \"data-state\": getCheckedState(checked),\n onSelect: composeEventHandlers(\n radioItemProps.onSelect,\n () => context.onValueChange?.(value),\n { checkDefaultPrevented: false }\n )\n }\n ) });\n }\n );\n MenuRadioItem.displayName = RADIO_ITEM_NAME;\n const ITEM_INDICATOR_NAME = \"MenuItemIndicator\";\n const { Provider: ItemIndicatorProvider, useStyledContext: useItemIndicatorContext } = createStyledContext();\n const MenuItemIndicator = createStyledHOC(\n View,\n (props, forwardedRef) => {\n const { scope = MENU_CONTEXT, className, forceMount, ...itemIndicatorProps } = props;\n const indicatorContext = useItemIndicatorContext(scope);\n return /* @__PURE__ */ jsx(Presence, { children: forceMount || isIndeterminate(indicatorContext.checked) || indicatorContext.checked === true ? /* @__PURE__ */ jsx(\n View,\n {\n className: `is_${ITEM_INDICATOR_NAME} ${className || \"\"}`.trim(),\n render: \"span\",\n ...itemIndicatorProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(indicatorContext.checked)\n }\n ) : null });\n }\n );\n MenuItemIndicator.displayName = ITEM_INDICATOR_NAME;\n const MenuArrow = createRefComponent(\n function MenuArrow2(props, forwardedRef) {\n const { scope = MENU_CONTEXT, className, ...rest } = props;\n return /* @__PURE__ */ jsx(\n PopperPrimitive.PopperArrow,\n {\n scope,\n className: `is_PopperArrow ${className || \"\"}`.trim(),\n ...rest,\n ref: forwardedRef\n }\n );\n }\n );\n const SUB_NAME = \"MenuSub\";\n const { Provider: MenuSubProvider, useStyledContext: useMenuSubContext } = createStyledContext();\n const MenuSub = (props) => {\n const isTouchDevice = useIsTouchDevice();\n const { scope = MENU_CONTEXT } = props;\n const rootContext = useMenuRootContext(scope);\n const parentPopperContext = PopperPrimitive.usePopperContext(scope);\n const parentSide = parentPopperContext.placement?.split(\"-\")[0];\n const isNestedSubmenu = parentSide === \"left\" || parentSide === \"right\";\n const defaultPlacement = isTouchDevice ? \"bottom\" : isNestedSubmenu ? `${parentSide}-start` : rootContext.dir === \"rtl\" ? \"left-start\" : \"right-start\";\n const {\n children,\n open = false,\n onOpenChange,\n allowFlip: allowFlipProp = { padding: 10 },\n stayInFrame = { padding: 10 },\n placement = defaultPlacement,\n ...rest\n } = props;\n const allowFlip = React.useMemo(() => {\n if (!isNestedSubmenu || typeof allowFlipProp === \"boolean\") return allowFlipProp;\n if (allowFlipProp.fallbackPlacements) return allowFlipProp;\n const side = placement.split(\"-\")[0];\n const align = placement.split(\"-\")[1] || \"start\";\n const otherAlign = align === \"start\" ? \"end\" : \"start\";\n if (side === \"left\" || side === \"right\") {\n const oppositeSide = side === \"right\" ? \"left\" : \"right\";\n return {\n ...typeof allowFlipProp === \"object\" ? allowFlipProp : {},\n fallbackPlacements: [\n `${side}-${otherAlign}`,\n `${oppositeSide}-${align}`,\n `${oppositeSide}-${otherAlign}`\n ]\n };\n }\n return allowFlipProp;\n }, [isNestedSubmenu, allowFlipProp, placement]);\n const parentMenuContext = useMenuContext(scope);\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(\n PopperPrimitive.Popper,\n {\n open,\n placement,\n allowFlip,\n stayInFrame,\n ...rest,\n scope,\n children: /* @__PURE__ */ jsx(\n MenuProvider,\n {\n scope,\n open,\n onOpenChange: handleOpenChange,\n content,\n onContentChange: setContent,\n children: /* @__PURE__ */ jsx(\n MenuSubProvider,\n {\n scope,\n contentId: useId(),\n triggerId: useId(),\n trigger,\n onTriggerChange: setTrigger,\n children\n }\n )\n }\n )\n }\n );\n };\n MenuSub.displayName = SUB_NAME;\n const SUB_TRIGGER_NAME = \"MenuSubTrigger\";\n const MenuSubTrigger = createRefComponent((props, forwardedRef) => {\n const scope = props.scope || MENU_CONTEXT;\n const context = useMenuContext(scope);\n const rootContext = useMenuRootContext(scope);\n const subContext = useMenuSubContext(scope);\n const contentContext = useMenuContentContext(scope);\n const popperContext = PopperPrimitive.usePopperContext(scope);\n const openTimerRef = React.useRef(null);\n const { pointerGraceTimerRef, onPointerGraceIntentChange } = contentContext;\n const effectiveDir = rootContext.dir;\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(\n MenuAnchor,\n {\n className: `is_${SUB_TRIGGER_NAME}`,\n asChild: \"except-style\",\n scope,\n 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 onPress: (event) => {\n props.onPress?.(event);\n if (props.disabled || event.defaultPrevented) return;\n if (isWeb) {\n event.currentTarget.focus();\n }\n if (!context.open) context.onOpenChange(true);\n },\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n // @ts-ignore\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(props.onPointerLeave, (eventIn) => {\n const event = eventIn;\n clearOpenTimer();\n const contentRect = context.content?.getBoundingClientRect();\n if (contentRect) {\n const contentEl = context.content;\n const sideEl = contentEl?.dataset?.side ? contentEl : contentEl?.querySelector(\"[data-side]\");\n const side = sideEl?.dataset?.side || \"right\";\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 const polygon = {\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 contentContext.onPointerGraceIntentChange(polygon);\n window.clearTimeout(pointerGraceTimerRef.current);\n pointerGraceTimerRef.current = window.setTimeout(\n () => contentContext.onPointerGraceIntentChange(null),\n 300\n );\n } else if (isWeb && subContext.trigger) {\n const triggerEl = subContext.trigger;\n const triggerRect = triggerEl?.getBoundingClientRect();\n if (triggerRect) {\n const placementSide = popperContext.placement?.split(\"-\")[0];\n const side = placementSide === \"left\" || placementSide === \"right\" ? placementSide : rootContext.dir === \"rtl\" ? \"left\" : \"right\";\n const rightSide = side === \"right\";\n const bleed = rightSide ? -5 : 5;\n const nearEdge = rightSide ? triggerRect.right + 4 : triggerRect.left - 4;\n const farEdge = rightSide ? nearEdge + 200 : nearEdge - 200;\n const polygon = {\n area: [\n { x: event.clientX + bleed, y: event.clientY },\n { x: nearEdge, y: triggerRect.top - 50 },\n { x: farEdge, y: triggerRect.top - 50 },\n { x: farEdge, y: triggerRect.bottom + 50 },\n { x: nearEdge, y: triggerRect.bottom + 50 }\n ],\n side\n };\n contentContext.onPointerGraceIntentChange(polygon);\n window.clearTimeout(pointerGraceTimerRef.current);\n pointerGraceTimerRef.current = window.setTimeout(\n () => contentContext.onPointerGraceIntentChange(null),\n 300\n );\n }\n } else {\n contentContext.onTriggerLeave(event);\n if (event.defaultPrevented) return;\n contentContext.onPointerGraceIntentChange(null);\n }\n }),\n ...isWeb ? {\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef.current !== \"\";\n if (props.disabled || isTypingAhead && event.key === \" \") return;\n const willOpen = SUB_OPEN_KEYS[effectiveDir].includes(event.key);\n if (willOpen) {\n if (context.open && context.content) {\n const contentEl = context.content;\n const firstItem = contentEl.querySelector?.(\n '[role=\"menuitem\"]:not([data-disabled])'\n );\n if (firstItem) {\n firstItem.focus({ focusVisible: true });\n event.preventDefault();\n return;\n }\n }\n const triggerEl = event.currentTarget;\n popperContext.refs?.setReference(triggerEl);\n context.onOpenChange(true);\n requestAnimationFrame(() => {\n popperContext.update?.();\n });\n context.content?.focus({ focusVisible: true });\n event.preventDefault();\n }\n })\n } : null\n }\n )\n }\n );\n });\n MenuSubTrigger.displayName = SUB_TRIGGER_NAME;\n const SUB_CONTENT_NAME = \"MenuSubContent\";\n const MenuSubContentFrame = styled(PopperPrimitive.PopperContentFrame, {\n displayName: SUB_CONTENT_NAME\n });\n const MenuSubContent = createStyledHOC(\n MenuSubContentFrame,\n (props, forwardedRef) => {\n const scope = props.scope || MENU_CONTEXT;\n const portalContext = usePortalContext(scope);\n const { forceMount = portalContext.forceMount, ...subContentProps } = props;\n const context = useMenuContext(scope);\n const rootContext = useMenuRootContext(scope);\n const subContext = useMenuSubContext(scope);\n const popperContext = PopperPrimitive.usePopperContext(scope);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const placementSide = popperContext.placement?.split(\"-\")[0];\n const dataSide = placementSide === \"left\" || placementSide === \"right\" ? placementSide : rootContext.dir === \"rtl\" ? \"left\" : \"right\";\n const effectiveDir = rootContext.dir;\n return /* @__PURE__ */ jsx(Collection.Provider, { scope, children: /* @__PURE__ */ jsx(Collection.Slot, { scope, children: /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n id: subContext.contentId,\n \"aria-labelledby\": subContext.triggerId,\n ...subContentProps,\n ref: composedRefs,\n \"data-side\": dataSide,\n disableOutsidePointerEvents: false,\n disableOutsideScroll: false,\n trapFocus: false,\n onOpenAutoFocus: (event) => {\n if (rootContext.isUsingKeyboardRef.current) {\n const root = ref.current;\n const content = root?.querySelector?.(\n \"[data-tamagui-menu-content]\"\n );\n (content || root)?.focus({ preventScroll: true });\n }\n event.cancel();\n },\n onCloseAutoFocus: (event) => event.cancel(),\n onFocusOutside: composeEventHandlers(props.onFocusOutside, (event) => {\n if (event.event?.target !== subContext.trigger)\n context.onOpenChange(false);\n }),\n onEscapeKeyDown: composeEventHandlers(props.onEscapeKeyDown, (event) => {\n context.onOpenChange(false);\n subContext.trigger?.focus({ focusVisible: true });\n event.cancel();\n event.event?.preventDefault?.();\n }),\n ...isWeb ? {\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isKeyDownInside = event.currentTarget.contains(\n event.target\n );\n const isCloseKey = SUB_CLOSE_KEYS[effectiveDir].includes(event.key);\n if (isKeyDownInside && isCloseKey) {\n context.onOpenChange(false);\n subContext.trigger?.focus({ focusVisible: true });\n event.preventDefault();\n }\n })\n } : null\n }\n ) }) });\n }\n );\n MenuSubContent.displayName = SUB_CONTENT_NAME;\n const Anchor = MenuAnchor;\n const Portal = MenuPortal;\n const Content = MenuContent;\n const Group = createStyledHOC(View, (props, ref) => {\n return /* @__PURE__ */ jsx(View, { role: \"group\", ...props, ref });\n });\n Group.displayName = \"MenuGroup\";\n const Label = createStyledHOC(Text, (props, ref) => {\n return /* @__PURE__ */ jsx(Text, { ...props, ref });\n });\n Label.displayName = \"MenuLabel\";\n const Item = MenuItem;\n const CheckboxItem = MenuCheckboxItem;\n const RadioGroup = MenuRadioGroup;\n const RadioItem = MenuRadioItem;\n const ItemIndicator = MenuItemIndicator;\n const Separator = createStyledHOC(View, (props, ref) => {\n return /* @__PURE__ */ jsx(View, { role: \"separator\", \"aria-orientation\": \"horizontal\", ...props, ref });\n });\n Separator.displayName = \"MenuSeparator\";\n const Arrow = MenuArrow;\n const Sub = MenuSub;\n const SubTrigger = MenuSubTrigger;\n const SubContent = MenuSubContent;\n const ItemTitle = MenuItemTitle;\n const ItemSubtitle = MenuItemSubTitle;\n const ItemImage = MenuItemImage;\n const ItemIcon = MenuItemIcon;\n const Menu = withStaticProperties(MenuComp, {\n Anchor,\n Portal,\n Content,\n Group,\n Label,\n Item,\n CheckboxItem,\n RadioGroup,\n RadioItem,\n ItemIndicator,\n Separator,\n Arrow,\n Sub,\n SubTrigger,\n SubContent,\n ItemTitle,\n ItemSubtitle,\n ItemImage,\n ItemIcon\n });\n return {\n Menu\n };\n}\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, options) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll: true, focusVisible: options?.focusVisible });\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 xi = polygon[i].x;\n const yi = polygon[i].y;\n const xj = polygon[j].x;\n const yj = polygon[j].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}\nexport {\n createBaseMenu\n};\n//# sourceMappingURL=createBaseMenu.js.map\n"],"mappings":"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"}
@@ -155,7 +155,7 @@ function createBaseMenu() {
155
155
  };
156
156
  MenuAnchor.displayName = ANCHOR_NAME;
157
157
  var PORTAL_NAME = "MenuPortal";
158
- var { Provider: PortalProvider, useStyledContext: usePortalContext } = createStyledContext(void 0, "Portal");
158
+ var { Provider: PortalProvider, useStyledContext: usePortalContext } = createStyledContext({}, "Portal");
159
159
  var MenuPortal = function(props) {
160
160
  var { scope = MENU_CONTEXT, forceMount, zIndex, children } = props;
161
161
  var menuContext = useMenuContext(scope);