@radix-solid-js/menu 0.1.2

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/menu.tsx"],"names":["PortalPrimitive"],"mappings":"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","file":"index.js","sourcesContent":["import {\n type JSX,\n createSignal,\n createEffect,\n onCleanup,\n onMount,\n splitProps,\n Show,\n} from \"solid-js\";\nimport { composeEventHandlers } from \"@radix-solid-js/primitive\";\nimport { createCollection } from \"@radix-solid-js/collection\";\nimport { mergeRefs } from \"@radix-solid-js/compose-refs\";\nimport { createContextScope, type Scope } from \"@radix-solid-js/context\";\nimport { useDirection } from \"@radix-solid-js/direction\";\nimport { DismissableLayer } from \"@radix-solid-js/dismissable-layer\";\nimport { useFocusGuards } from \"@radix-solid-js/focus-guards\";\nimport { FocusScope } from \"@radix-solid-js/focus-scope\";\nimport { createId } from \"@radix-solid-js/id\";\nimport {\n createPopperScope,\n Popper,\n PopperAnchor,\n PopperContent,\n PopperArrow,\n} from \"@radix-solid-js/popper\";\nimport { Portal as PortalPrimitive } from \"@radix-solid-js/portal\";\nimport { Presence } from \"@radix-solid-js/presence\";\nimport {\n Primitive,\n dispatchDiscreteCustomEvent,\n} from \"@radix-solid-js/primitive-component\";\nimport {\n createRovingFocusGroupScope,\n RovingFocusGroup,\n RovingFocusGroupItem,\n} from \"@radix-solid-js/roving-focus\";\nimport { hideOthers } from \"aria-hidden\";\n\ntype Direction = \"ltr\" | \"rtl\";\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: Record<Direction, string[]> = {\n ltr: [...SELECTION_KEYS, \"ArrowRight\"],\n rtl: [...SELECTION_KEYS, \"ArrowLeft\"],\n};\nconst SUB_CLOSE_KEYS: Record<Direction, string[]> = {\n ltr: [\"ArrowLeft\"],\n rtl: [\"ArrowRight\"],\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Menu\n * -----------------------------------------------------------------------------------------------*/\n\nconst MENU_NAME = \"Menu\";\n\ntype ItemData = { disabled: boolean; textValue: string };\nconst [Collection, useCollection, createCollectionScope] = createCollection<\n HTMLElement,\n ItemData\n>(MENU_NAME);\n\ntype ScopedProps<P> = P & { __scopeMenu?: Scope };\nconst [createMenuContext, createMenuScope] = createContextScope(MENU_NAME, [\n createCollectionScope,\n createPopperScope,\n createRovingFocusGroupScope,\n]);\nconst usePopperScope = createPopperScope();\nconst useRovingFocusGroupScope = createRovingFocusGroupScope();\n\ntype MenuContextValue = {\n open: boolean;\n onOpenChange(open: boolean): void;\n content: HTMLDivElement | null;\n onContentChange(content: HTMLDivElement | null): void;\n};\n\nconst [MenuProvider, useMenuContext] =\n createMenuContext<MenuContextValue>(MENU_NAME);\n\ntype MenuRootContextValue = {\n onClose(): void;\n isUsingKeyboard: boolean;\n onIsUsingKeyboardChange(value: boolean): void;\n dir: Direction;\n modal: boolean;\n};\n\nconst [MenuRootProvider, useMenuRootContext] =\n createMenuContext<MenuRootContextValue>(MENU_NAME);\n\ninterface MenuProps {\n children?: JSX.Element;\n open?: boolean;\n onOpenChange?(open: boolean): void;\n dir?: Direction;\n modal?: boolean;\n}\n\nfunction Menu(props: ScopedProps<MenuProps>) {\n const [local] = splitProps(props, [\n \"__scopeMenu\",\n \"children\",\n \"open\",\n \"onOpenChange\",\n \"dir\",\n \"modal\",\n ]);\n\n const popperScope = usePopperScope(local.__scopeMenu);\n const [content, setContent] = createSignal<HTMLDivElement | null>(null);\n const [isUsingKeyboard, setIsUsingKeyboard] = createSignal(false);\n const direction = useDirection(local.dir);\n\n const open = () => local.open ?? false;\n const modal = () => local.modal ?? true;\n const handleOpenChange = (value: boolean) => local.onOpenChange?.(value);\n\n createEffect(() => {\n const handleKeyDown = () => {\n setIsUsingKeyboard(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 = () => setIsUsingKeyboard(false);\n document.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n onCleanup(() => {\n document.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n document.removeEventListener(\"pointerdown\", handlePointer, {\n capture: true,\n });\n document.removeEventListener(\"pointermove\", handlePointer, {\n capture: true,\n });\n });\n });\n\n return (\n <Popper {...popperScope}>\n <MenuProvider\n scope={local.__scopeMenu}\n open={open()}\n onOpenChange={handleOpenChange}\n content={content()}\n onContentChange={setContent}\n >\n <MenuRootProvider\n scope={local.__scopeMenu}\n onClose={() => handleOpenChange(false)}\n isUsingKeyboard={isUsingKeyboard()}\n onIsUsingKeyboardChange={setIsUsingKeyboard}\n dir={direction as unknown as Direction}\n modal={modal()}\n >\n {local.children}\n </MenuRootProvider>\n </MenuProvider>\n </Popper>\n );\n}\n\nMenu.displayName = MENU_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuAnchor\n * -----------------------------------------------------------------------------------------------*/\n\nconst ANCHOR_NAME = \"MenuAnchor\";\n\ninterface MenuAnchorProps extends JSX.HTMLAttributes<HTMLDivElement> {\n virtualRef?: { getBoundingClientRect(): DOMRect };\n ref?: (el: HTMLElement) => void;\n}\n\nfunction MenuAnchor(inProps: ScopedProps<MenuAnchorProps>) {\n const [local, rest] = splitProps(inProps, [\"__scopeMenu\", \"ref\"]);\n const popperScope = usePopperScope(local.__scopeMenu);\n return <PopperAnchor {...popperScope} {...rest} ref={local.ref} />;\n}\n\nMenuAnchor.displayName = ANCHOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = \"MenuPortal\";\n\ntype PortalContextValue = { forceMount?: true };\nconst [PortalProvider, usePortalContext] =\n createMenuContext<PortalContextValue>(PORTAL_NAME, {\n forceMount: undefined,\n });\n\ninterface MenuPortalProps {\n children?: JSX.Element;\n container?: Element | DocumentFragment | null;\n forceMount?: true;\n}\n\nfunction MenuPortal(props: ScopedProps<MenuPortalProps>) {\n const [local] = splitProps(props, [\n \"__scopeMenu\",\n \"forceMount\",\n \"children\",\n \"container\",\n ]);\n const context = useMenuContext(PORTAL_NAME, local.__scopeMenu);\n return (\n <PortalProvider scope={local.__scopeMenu} forceMount={local.forceMount}>\n <Presence present={local.forceMount || context.open}>\n <PortalPrimitive container={local.container}>\n {local.children}\n </PortalPrimitive>\n </Presence>\n </PortalProvider>\n );\n}\n\nMenuPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = \"MenuContent\";\n\ntype MenuContentContextValue = {\n onItemEnter(event: PointerEvent): void;\n onItemLeave(event: PointerEvent): void;\n onTriggerLeave(event: PointerEvent): void;\n searchRef: string;\n onSearchChange(value: string): void;\n pointerGraceTimerRef: number;\n onPointerGraceTimerChange(value: number): void;\n onPointerGraceIntentChange(intent: GraceIntent | null): void;\n};\n\nconst [MenuContentProvider, useMenuContentContext] =\n createMenuContext<MenuContentContextValue>(CONTENT_NAME);\n\ninterface MenuContentProps extends MenuContentImplProps {\n forceMount?: true;\n}\n\nfunction MenuContent(inProps: ScopedProps<MenuContentProps>) {\n const [local, rest] = splitProps(inProps, [\"__scopeMenu\", \"forceMount\"]);\n const portalContext = usePortalContext(CONTENT_NAME, local.__scopeMenu);\n const context = useMenuContext(CONTENT_NAME, local.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, local.__scopeMenu);\n const forceMount = () => local.forceMount ?? portalContext.forceMount;\n\n return (\n <Collection.Provider scope={local.__scopeMenu}>\n <Presence present={forceMount() || context.open}>\n <Collection.Slot scope={local.__scopeMenu}>\n <Show\n when={rootContext.modal}\n fallback={\n <MenuRootContentNonModal\n {...rest}\n __scopeMenu={local.__scopeMenu}\n />\n }\n >\n <MenuRootContentModal {...rest} __scopeMenu={local.__scopeMenu} />\n </Show>\n </Collection.Slot>\n </Presence>\n </Collection.Provider>\n );\n}\n\nMenuContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ninterface MenuRootContentTypeProps extends Omit<\n MenuContentImplProps,\n | \"onOpenAutoFocus\"\n | \"onDismiss\"\n | \"disableOutsidePointerEvents\"\n | \"disableOutsideScroll\"\n | \"trapFocus\"\n> {}\n\nfunction MenuRootContentModal(inProps: ScopedProps<MenuRootContentTypeProps>) {\n const [local, rest] = splitProps(inProps, [\n \"__scopeMenu\",\n \"ref\",\n \"onFocusOutside\",\n ]);\n const context = useMenuContext(CONTENT_NAME, local.__scopeMenu);\n let contentRef: HTMLDivElement | undefined;\n\n // Hide everything from ARIA except the MenuContent\n createEffect(() => {\n if (contentRef) {\n const cleanup = hideOthers(contentRef);\n onCleanup(() => cleanup?.());\n }\n });\n\n return (\n <MenuContentImpl\n {...rest}\n __scopeMenu={local.__scopeMenu}\n ref={mergeRefs(local.ref, (el: HTMLElement) => {\n contentRef = el as HTMLDivElement;\n })}\n trapFocus={context.open}\n disableOutsidePointerEvents={context.open}\n disableOutsideScroll\n onFocusOutside={composeEventHandlers(local.onFocusOutside, (event: any) =>\n event.preventDefault()\n )}\n onDismiss={() => context.onOpenChange(false)}\n />\n );\n}\n\nfunction MenuRootContentNonModal(\n inProps: ScopedProps<MenuRootContentTypeProps>\n) {\n const [local, rest] = splitProps(inProps, [\"__scopeMenu\"]);\n const context = useMenuContext(CONTENT_NAME, local.__scopeMenu);\n return (\n <MenuContentImpl\n {...rest}\n __scopeMenu={local.__scopeMenu}\n trapFocus={false}\n disableOutsidePointerEvents={false}\n disableOutsideScroll={false}\n onDismiss={() => context.onOpenChange(false)}\n />\n );\n}\n\n/* ---------------------------------------------------------------------------------------------- */\n\ninterface MenuContentImplProps extends JSX.HTMLAttributes<HTMLDivElement> {\n ref?: (el: HTMLElement) => void;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n sideOffset?: number;\n align?: \"start\" | \"center\" | \"end\";\n alignOffset?: number;\n avoidCollisions?: boolean;\n collisionBoundary?: Element | Element[] | null;\n collisionPadding?:\n | number\n | Partial<Record<\"top\" | \"right\" | \"bottom\" | \"left\", number>>;\n arrowPadding?: number;\n sticky?: \"partial\" | \"always\";\n hideWhenDetached?: boolean;\n onOpenAutoFocus?: (event: Event) => void;\n onCloseAutoFocus?: (event: Event) => void;\n disableOutsidePointerEvents?: boolean;\n disableOutsideScroll?: boolean;\n trapFocus?: boolean;\n loop?: boolean;\n onEntryFocus?: (event: Event) => void;\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n onPointerDownOutside?: (event: any) => void;\n onFocusOutside?: (event: any) => void;\n onInteractOutside?: (event: any) => void;\n onDismiss?: () => void;\n}\n\nfunction MenuContentImpl(inProps: ScopedProps<MenuContentImplProps>) {\n const [local, rest] = splitProps(inProps, [\n \"__scopeMenu\",\n \"ref\",\n \"loop\",\n \"trapFocus\",\n \"onOpenAutoFocus\",\n \"onCloseAutoFocus\",\n \"disableOutsidePointerEvents\",\n \"disableOutsideScroll\",\n \"onEntryFocus\",\n \"onEscapeKeyDown\",\n \"onPointerDownOutside\",\n \"onFocusOutside\",\n \"onInteractOutside\",\n \"onDismiss\",\n \"side\",\n \"sideOffset\",\n \"align\",\n \"alignOffset\",\n \"avoidCollisions\",\n \"collisionBoundary\",\n \"collisionPadding\",\n \"arrowPadding\",\n \"sticky\",\n \"hideWhenDetached\",\n \"style\",\n \"onKeyDown\",\n \"onBlur\",\n \"onPointerMove\",\n ]);\n\n const context = useMenuContext(CONTENT_NAME, local.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, local.__scopeMenu);\n const popperScope = usePopperScope(local.__scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(local.__scopeMenu);\n const getItems = useCollection(local.__scopeMenu);\n\n const [currentItemId, setCurrentItemId] = createSignal<string | null>(null);\n let contentRef: HTMLDivElement | undefined;\n let timerRef = 0;\n let searchRef = \"\";\n let pointerGraceTimerRef = 0;\n let pointerGraceIntentRef: GraceIntent | null = null;\n let pointerDirRef: Side = \"right\";\n let lastPointerXRef = 0;\n\n // Prevent body scroll when disableOutsideScroll is true (e.g., modal context menus)\n createEffect(() => {\n if (local.disableOutsideScroll) {\n const body = document.body;\n const scrollbarWidth =\n window.innerWidth - document.documentElement.clientWidth;\n const originalOverflow = body.style.overflow;\n const originalPaddingRight = body.style.paddingRight;\n\n body.style.overflow = \"hidden\";\n if (scrollbarWidth > 0) {\n body.style.paddingRight = `${scrollbarWidth}px`;\n }\n\n onCleanup(() => {\n body.style.overflow = originalOverflow;\n body.style.paddingRight = originalPaddingRight;\n });\n }\n });\n\n const handleTypeaheadSearch = (key: string) => {\n const search = searchRef + key;\n const items = getItems().filter((item: any) => !item.disabled);\n const currentItem = document.activeElement;\n const currentMatch = items.find(\n (item: any) => item.ref === currentItem\n )?.textValue;\n const values = items.map((item: any) => item.textValue);\n const nextMatch = getNextMatch(values, search, currentMatch);\n const newItem = items.find(\n (item: any) => item.textValue === nextMatch\n )?.ref;\n\n // Reset searchRef 1 second after it was last updated\n (function updateSearch(value: string) {\n searchRef = value;\n window.clearTimeout(timerRef);\n if (value !== \"\")\n timerRef = window.setTimeout(() => updateSearch(\"\"), 1000);\n })(search);\n\n if (newItem) {\n setTimeout(() => (newItem as HTMLElement).focus());\n }\n };\n\n onCleanup(() => window.clearTimeout(timerRef));\n\n // Make sure the whole tree has focus guards\n useFocusGuards();\n\n const isPointerMovingToSubmenu = (event: PointerEvent) => {\n const isMovingTowards = pointerDirRef === pointerGraceIntentRef?.side;\n return (\n isMovingTowards &&\n isPointerInGraceArea(event, pointerGraceIntentRef?.area)\n );\n };\n\n return (\n <MenuContentProvider\n scope={local.__scopeMenu}\n searchRef={searchRef}\n onSearchChange={(value: string) => {\n searchRef = value;\n }}\n onItemEnter={(event) => {\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n }}\n onItemLeave={(event) => {\n if (isPointerMovingToSubmenu(event)) return;\n contentRef?.focus();\n setCurrentItemId(null);\n }}\n onTriggerLeave={(event) => {\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n }}\n pointerGraceTimerRef={pointerGraceTimerRef}\n onPointerGraceTimerChange={(value: number) => {\n pointerGraceTimerRef = value;\n }}\n onPointerGraceIntentChange={(intent) => {\n pointerGraceIntentRef = intent;\n }}\n >\n <FocusScope\n trapped={local.trapFocus}\n onMountAutoFocus={composeEventHandlers(\n local.onOpenAutoFocus,\n (event: Event) => {\n // when opening, explicitly focus the content area only and leave\n // `onEntryFocus` in control of focusing first item\n event.preventDefault();\n contentRef?.focus({ preventScroll: true });\n }\n )}\n onUnmountAutoFocus={local.onCloseAutoFocus}\n >\n <DismissableLayer\n asChild\n disableOutsidePointerEvents={local.disableOutsidePointerEvents}\n onEscapeKeyDown={local.onEscapeKeyDown}\n onPointerDownOutside={local.onPointerDownOutside}\n onFocusOutside={local.onFocusOutside}\n onInteractOutside={local.onInteractOutside}\n onDismiss={local.onDismiss}\n >\n <RovingFocusGroup\n asChild\n {...rovingFocusGroupScope}\n dir={rootContext.dir}\n orientation=\"vertical\"\n loop={local.loop ?? false}\n currentTabStopId={currentItemId()}\n onCurrentTabStopIdChange={setCurrentItemId}\n onEntryFocus={composeEventHandlers(\n local.onEntryFocus,\n (event: Event) => {\n // only focus first item when using keyboard\n if (!rootContext.isUsingKeyboard) event.preventDefault();\n }\n )}\n preventScrollOnEntryFocus\n >\n <PopperContent\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 {...rest}\n ref={mergeRefs(local.ref, (el: HTMLElement) => {\n contentRef = el as HTMLDivElement;\n context.onContentChange(el as HTMLDivElement);\n })}\n side={local.side}\n sideOffset={local.sideOffset}\n align={local.align}\n alignOffset={local.alignOffset}\n avoidCollisions={local.avoidCollisions}\n collisionBoundary={local.collisionBoundary}\n collisionPadding={local.collisionPadding}\n arrowPadding={local.arrowPadding}\n sticky={local.sticky}\n hideWhenDetached={local.hideWhenDetached}\n style={\n {\n outline: \"none\",\n ...(typeof local.style === \"object\" ? local.style : {}),\n \"--radix-menu-content-transform-origin\":\n \"var(--radix-popper-transform-origin)\",\n \"--radix-menu-content-available-width\":\n \"var(--radix-popper-available-width)\",\n \"--radix-menu-content-available-height\":\n \"var(--radix-popper-available-height)\",\n \"--radix-menu-trigger-width\":\n \"var(--radix-popper-anchor-width)\",\n \"--radix-menu-trigger-height\":\n \"var(--radix-popper-anchor-height)\",\n } as JSX.CSSProperties\n }\n onKeyDown={composeEventHandlers(\n local.onKeyDown as any,\n (event: KeyboardEvent) => {\n // submenu key events bubble through portals. We only care about keys in this menu.\n const target = event.target as HTMLElement;\n const isKeyDownInside =\n target.closest(\"[data-radix-menu-content]\") ===\n event.currentTarget;\n const isModifierKey =\n event.ctrlKey || event.altKey || event.metaKey;\n const isCharacterKey = event.key.length === 1;\n if (isKeyDownInside) {\n // menus should not be navigated using tab key so we prevent it\n if (event.key === \"Tab\") event.preventDefault();\n if (!isModifierKey && isCharacterKey)\n handleTypeaheadSearch(event.key);\n }\n // focus first/last item based on key pressed\n const content = contentRef;\n if (event.target !== content) return;\n if (!FIRST_LAST_KEYS.includes(event.key)) return;\n event.preventDefault();\n const items = getItems().filter(\n (item: any) => !item.disabled\n );\n const candidateNodes = items.map((item: any) => item.ref);\n if (LAST_KEYS.includes(event.key)) candidateNodes.reverse();\n focusFirst(candidateNodes);\n }\n )}\n onBlur={composeEventHandlers(\n local.onBlur as any,\n (event: FocusEvent) => {\n // clear search buffer when leaving the menu\n if (\n !(event.currentTarget as HTMLElement).contains(\n event.target as Node\n )\n ) {\n window.clearTimeout(timerRef);\n searchRef = \"\";\n }\n }\n )}\n onPointerMove={composeEventHandlers(\n local.onPointerMove as any,\n whenMouse((event: PointerEvent) => {\n const target = event.target as HTMLElement;\n const pointerXHasChanged = lastPointerXRef !== event.clientX;\n\n if (\n (event.currentTarget as HTMLElement).contains(target) &&\n pointerXHasChanged\n ) {\n const newDir =\n event.clientX > lastPointerXRef ? \"right\" : \"left\";\n pointerDirRef = newDir;\n lastPointerXRef = event.clientX;\n }\n })\n )}\n />\n </RovingFocusGroup>\n </DismissableLayer>\n </FocusScope>\n </MenuContentProvider>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * MenuGroup\n * -----------------------------------------------------------------------------------------------*/\n\nconst GROUP_NAME = \"MenuGroup\";\n\ninterface MenuGroupProps extends JSX.HTMLAttributes<HTMLDivElement> {\n ref?: (el: HTMLElement) => void;\n}\n\nfunction MenuGroup(inProps: ScopedProps<MenuGroupProps>) {\n const [local, rest] = splitProps(inProps, [\"__scopeMenu\", \"ref\"]);\n return <Primitive.div role=\"group\" {...rest} ref={local.ref} />;\n}\n\nMenuGroup.displayName = GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuLabel\n * -----------------------------------------------------------------------------------------------*/\n\nconst LABEL_NAME = \"MenuLabel\";\n\ninterface MenuLabelProps extends JSX.HTMLAttributes<HTMLDivElement> {\n ref?: (el: HTMLElement) => void;\n}\n\nfunction MenuLabel(inProps: ScopedProps<MenuLabelProps>) {\n const [local, rest] = splitProps(inProps, [\"__scopeMenu\", \"ref\"]);\n return <Primitive.div {...rest} ref={local.ref} />;\n}\n\nMenuLabel.displayName = LABEL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = \"MenuItem\";\nconst ITEM_SELECT = \"menu.itemSelect\";\n\ninterface MenuItemProps extends Omit<MenuItemImplProps, \"onSelect\"> {\n onSelect?: (event: Event) => void;\n}\n\nfunction MenuItem(inProps: ScopedProps<MenuItemProps>) {\n const [local, rest] = splitProps(inProps, [\n \"__scopeMenu\",\n \"disabled\",\n \"onSelect\",\n \"ref\",\n \"onClick\",\n \"onPointerDown\",\n \"onPointerUp\",\n \"onKeyDown\",\n ]);\n const rootContext = useMenuRootContext(ITEM_NAME, local.__scopeMenu);\n const contentContext = useMenuContentContext(ITEM_NAME, local.__scopeMenu);\n let itemRef: HTMLDivElement | undefined;\n let isPointerDownRef = false;\n const disabled = () => local.disabled ?? false;\n\n const handleSelect = () => {\n const menuItem = itemRef;\n if (!disabled() && menuItem) {\n const itemSelectEvent = new CustomEvent(ITEM_SELECT, {\n bubbles: true,\n cancelable: true,\n });\n menuItem.addEventListener(\n ITEM_SELECT,\n (event) => local.onSelect?.(event),\n { once: true }\n );\n dispatchDiscreteCustomEvent(menuItem, itemSelectEvent);\n if (itemSelectEvent.defaultPrevented) {\n isPointerDownRef = false;\n } else {\n rootContext.onClose();\n }\n }\n };\n\n return (\n <MenuItemImpl\n {...rest}\n __scopeMenu={local.__scopeMenu}\n ref={mergeRefs(local.ref, (el: HTMLElement) => {\n itemRef = el as HTMLDivElement;\n })}\n disabled={disabled()}\n onClick={composeEventHandlers(local.onClick as any, handleSelect)}\n onPointerDown={composeEventHandlers(local.onPointerDown as any, () => {\n isPointerDownRef = true;\n })}\n onPointerUp={composeEventHandlers(\n local.onPointerUp as any,\n (event: PointerEvent) => {\n if (!isPointerDownRef) (event.currentTarget as HTMLElement)?.click();\n }\n )}\n onKeyDown={composeEventHandlers(\n local.onKeyDown as any,\n (event: KeyboardEvent) => {\n const isTypingAhead = contentContext.searchRef !== \"\";\n if (disabled() || (isTypingAhead && event.key === \" \")) return;\n if (SELECTION_KEYS.includes(event.key)) {\n (event.currentTarget as HTMLElement).click();\n event.preventDefault();\n }\n }\n )}\n />\n );\n}\n\nMenuItem.displayName = ITEM_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ninterface MenuItemImplProps extends JSX.HTMLAttributes<HTMLDivElement> {\n ref?: (el: HTMLElement) => void;\n disabled?: boolean;\n textValue?: string;\n}\n\nfunction MenuItemImpl(inProps: ScopedProps<MenuItemImplProps>) {\n const [local, rest] = splitProps(inProps, [\n \"__scopeMenu\",\n \"disabled\",\n \"textValue\",\n \"ref\",\n \"onPointerMove\",\n \"onPointerLeave\",\n \"onFocus\",\n \"onBlur\",\n ]);\n\n const contentContext = useMenuContentContext(ITEM_NAME, local.__scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(local.__scopeMenu);\n let itemRef: HTMLDivElement | undefined;\n const [isFocused, setIsFocused] = createSignal(false);\n const [textContent, setTextContent] = createSignal(\"\");\n const disabled = () => local.disabled ?? false;\n\n // get the item's textContent as default strategy for typeahead textValue\n onMount(() => {\n if (itemRef) {\n setTextContent((itemRef.textContent ?? \"\").trim());\n }\n });\n\n return (\n <Collection.ItemSlot\n scope={local.__scopeMenu}\n disabled={disabled()}\n textValue={local.textValue ?? textContent()}\n >\n <RovingFocusGroupItem\n asChild\n {...rovingFocusGroupScope}\n focusable={!disabled()}\n >\n <Primitive.div\n role=\"menuitem\"\n data-highlighted={isFocused() ? \"\" : undefined}\n aria-disabled={disabled() || undefined}\n data-disabled={disabled() ? \"\" : undefined}\n {...rest}\n ref={mergeRefs(local.ref, (el: HTMLElement) => {\n itemRef = el as HTMLDivElement;\n })}\n onPointerMove={composeEventHandlers(\n local.onPointerMove as any,\n whenMouse((event: PointerEvent) => {\n if (disabled()) {\n contentContext.onItemLeave(event);\n } else {\n contentContext.onItemEnter(event);\n if (!event.defaultPrevented) {\n const item = event.currentTarget as HTMLElement;\n item.focus({ preventScroll: true });\n }\n }\n })\n )}\n onPointerLeave={composeEventHandlers(\n local.onPointerLeave as any,\n whenMouse((event: PointerEvent) =>\n contentContext.onItemLeave(event)\n )\n )}\n onFocus={composeEventHandlers(local.onFocus as any, () =>\n setIsFocused(true)\n )}\n onBlur={composeEventHandlers(local.onBlur as any, () =>\n setIsFocused(false)\n )}\n />\n </RovingFocusGroupItem>\n </Collection.ItemSlot>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * MenuCheckboxItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst CHECKBOX_ITEM_NAME = \"MenuCheckboxItem\";\n\ntype CheckedState = boolean | \"indeterminate\";\n\ninterface MenuCheckboxItemProps extends MenuItemProps {\n checked?: CheckedState;\n onCheckedChange?: (checked: boolean) => void;\n}\n\nfunction MenuCheckboxItem(inProps: ScopedProps<MenuCheckboxItemProps>) {\n const [local, rest] = splitProps(inProps, [\n \"__scopeMenu\",\n \"checked\",\n \"onCheckedChange\",\n \"onSelect\",\n ]);\n const checked = () => local.checked ?? false;\n\n return (\n <ItemIndicatorProvider scope={local.__scopeMenu} checked={checked()}>\n <MenuItem\n role=\"menuitemcheckbox\"\n aria-checked={isIndeterminate(checked()) ? \"mixed\" : checked() as boolean}\n {...(rest as any)}\n __scopeMenu={local.__scopeMenu}\n data-state={getCheckedState(checked())}\n onSelect={composeEventHandlers(\n local.onSelect,\n () =>\n local.onCheckedChange?.(\n isIndeterminate(checked()) ? true : !checked()\n ),\n { checkForDefaultPrevented: false }\n )}\n />\n </ItemIndicatorProvider>\n );\n}\n\nMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuRadioGroup\n * -----------------------------------------------------------------------------------------------*/\n\nconst RADIO_GROUP_NAME = \"MenuRadioGroup\";\n\ntype RadioGroupContextValue = {\n value?: string;\n onValueChange?: (value: string) => void;\n};\n\nconst [RadioGroupProvider, useRadioGroupContext] =\n createMenuContext<RadioGroupContextValue>(RADIO_GROUP_NAME, {\n value: undefined,\n onValueChange: () => {},\n });\n\ninterface MenuRadioGroupProps extends MenuGroupProps {\n value?: string;\n onValueChange?: (value: string) => void;\n}\n\nfunction MenuRadioGroup(inProps: ScopedProps<MenuRadioGroupProps>) {\n const [local, rest] = splitProps(inProps, [\n \"__scopeMenu\",\n \"value\",\n \"onValueChange\",\n ]);\n return (\n <RadioGroupProvider\n scope={local.__scopeMenu}\n value={local.value}\n onValueChange={local.onValueChange}\n >\n <MenuGroup {...rest} __scopeMenu={local.__scopeMenu} />\n </RadioGroupProvider>\n );\n}\n\nMenuRadioGroup.displayName = RADIO_GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuRadioItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst RADIO_ITEM_NAME = \"MenuRadioItem\";\n\ninterface MenuRadioItemProps extends MenuItemProps {\n value: string;\n}\n\nfunction MenuRadioItem(inProps: ScopedProps<MenuRadioItemProps>) {\n const [local, rest] = splitProps(inProps, [\n \"__scopeMenu\",\n \"value\",\n \"onSelect\",\n ]);\n const context = useRadioGroupContext(RADIO_ITEM_NAME, local.__scopeMenu);\n const checked = () => local.value === context.value;\n\n return (\n <ItemIndicatorProvider scope={local.__scopeMenu} checked={checked()}>\n <MenuItem\n role=\"menuitemradio\"\n aria-checked={checked()}\n {...rest}\n __scopeMenu={local.__scopeMenu}\n data-state={getCheckedState(checked())}\n onSelect={composeEventHandlers(\n local.onSelect,\n () => context.onValueChange?.(local.value),\n { checkForDefaultPrevented: false }\n )}\n />\n </ItemIndicatorProvider>\n );\n}\n\nMenuRadioItem.displayName = RADIO_ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuItemIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_INDICATOR_NAME = \"MenuItemIndicator\";\n\ntype ItemIndicatorContextValue = { checked: CheckedState };\n\nconst [ItemIndicatorProvider, useItemIndicatorContext] =\n createMenuContext<ItemIndicatorContextValue>(ITEM_INDICATOR_NAME, {\n checked: false,\n });\n\ninterface MenuItemIndicatorProps extends JSX.HTMLAttributes<HTMLSpanElement> {\n ref?: (el: HTMLElement) => void;\n forceMount?: true;\n}\n\nfunction MenuItemIndicator(inProps: ScopedProps<MenuItemIndicatorProps>) {\n const [local, rest] = splitProps(inProps, [\n \"__scopeMenu\",\n \"forceMount\",\n \"ref\",\n ]);\n const indicatorContext = useItemIndicatorContext(\n ITEM_INDICATOR_NAME,\n local.__scopeMenu\n );\n return (\n <Presence\n present={\n local.forceMount ||\n isIndeterminate(indicatorContext.checked) ||\n indicatorContext.checked === true\n }\n >\n <Primitive.span\n {...rest}\n ref={local.ref}\n data-state={getCheckedState(indicatorContext.checked)}\n />\n </Presence>\n );\n}\n\nMenuItemIndicator.displayName = ITEM_INDICATOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuSeparator\n * -----------------------------------------------------------------------------------------------*/\n\nconst SEPARATOR_NAME = \"MenuSeparator\";\n\ninterface MenuSeparatorProps extends JSX.HTMLAttributes<HTMLDivElement> {\n ref?: (el: HTMLElement) => void;\n}\n\nfunction MenuSeparator(inProps: ScopedProps<MenuSeparatorProps>) {\n const [local, rest] = splitProps(inProps, [\"__scopeMenu\", \"ref\"]);\n return (\n <Primitive.div\n role=\"separator\"\n aria-orientation=\"horizontal\"\n {...rest}\n ref={local.ref}\n />\n );\n}\n\nMenuSeparator.displayName = SEPARATOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = \"MenuArrow\";\n\ninterface MenuArrowProps extends JSX.SvgSVGAttributes<SVGSVGElement> {\n ref?: (el: SVGSVGElement) => void;\n}\n\nfunction MenuArrow(inProps: ScopedProps<MenuArrowProps>) {\n const [local, rest] = splitProps(inProps, [\"__scopeMenu\"]);\n const popperScope = usePopperScope(local.__scopeMenu);\n return <PopperArrow {...popperScope} {...rest} />;\n}\n\nMenuArrow.displayName = ARROW_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuSub\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUB_NAME = \"MenuSub\";\n\ntype MenuSubContextValue = {\n contentId: string;\n triggerId: string;\n trigger: HTMLDivElement | null;\n onTriggerChange(trigger: HTMLDivElement | null): void;\n};\n\nconst [MenuSubProvider, useMenuSubContext] =\n createMenuContext<MenuSubContextValue>(SUB_NAME);\n\ninterface MenuSubProps {\n children?: JSX.Element;\n open?: boolean;\n onOpenChange?(open: boolean): void;\n}\n\nfunction MenuSub(props: ScopedProps<MenuSubProps>) {\n const [local] = splitProps(props, [\n \"__scopeMenu\",\n \"children\",\n \"open\",\n \"onOpenChange\",\n ]);\n\n const parentMenuContext = useMenuContext(SUB_NAME, local.__scopeMenu);\n const popperScope = usePopperScope(local.__scopeMenu);\n const [trigger, setTrigger] = createSignal<HTMLDivElement | null>(null);\n const [content, setContent] = createSignal<HTMLDivElement | null>(null);\n const open = () => local.open ?? false;\n const handleOpenChange = (value: boolean) => local.onOpenChange?.(value);\n\n // Prevent the parent menu from reopening with open submenus.\n createEffect(() => {\n if (parentMenuContext.open === false) handleOpenChange(false);\n onCleanup(() => handleOpenChange(false));\n });\n\n return (\n <Popper {...popperScope}>\n <MenuProvider\n scope={local.__scopeMenu}\n open={open()}\n onOpenChange={handleOpenChange}\n content={content()}\n onContentChange={setContent}\n >\n <MenuSubProvider\n scope={local.__scopeMenu}\n contentId={createId()}\n triggerId={createId()}\n trigger={trigger()}\n onTriggerChange={setTrigger}\n >\n {local.children}\n </MenuSubProvider>\n </MenuProvider>\n </Popper>\n );\n}\n\nMenuSub.displayName = SUB_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuSubTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUB_TRIGGER_NAME = \"MenuSubTrigger\";\n\ninterface MenuSubTriggerProps extends MenuItemImplProps {}\n\nfunction MenuSubTrigger(inProps: ScopedProps<MenuSubTriggerProps>) {\n const [local, rest] = splitProps(inProps, [\n \"__scopeMenu\",\n \"ref\",\n \"onClick\",\n \"onPointerMove\",\n \"onPointerLeave\",\n \"onKeyDown\",\n ]);\n\n const context = useMenuContext(SUB_TRIGGER_NAME, local.__scopeMenu);\n const rootContext = useMenuRootContext(SUB_TRIGGER_NAME, local.__scopeMenu);\n const subContext = useMenuSubContext(SUB_TRIGGER_NAME, local.__scopeMenu);\n const contentContext = useMenuContentContext(\n SUB_TRIGGER_NAME,\n local.__scopeMenu\n );\n let openTimerRef: number | null = null;\n\n const clearOpenTimer = () => {\n if (openTimerRef) window.clearTimeout(openTimerRef);\n openTimerRef = null;\n };\n\n onCleanup(() => {\n clearOpenTimer();\n window.clearTimeout(contentContext.pointerGraceTimerRef);\n contentContext.onPointerGraceIntentChange(null);\n });\n\n return (\n <MenuAnchor __scopeMenu={local.__scopeMenu}>\n <MenuItemImpl\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 {...rest}\n __scopeMenu={local.__scopeMenu}\n ref={mergeRefs(local.ref, (el: HTMLElement) =>\n subContext.onTriggerChange(el as HTMLDivElement)\n )}\n onClick={composeEventHandlers(\n local.onClick as any,\n (event: MouseEvent) => {\n if (rest.disabled || event.defaultPrevented) return;\n (event.currentTarget as HTMLElement).focus();\n if (!context.open) context.onOpenChange(true);\n }\n )}\n onPointerMove={composeEventHandlers(\n local.onPointerMove as any,\n whenMouse((event: PointerEvent) => {\n contentContext.onItemEnter(event);\n if (event.defaultPrevented) return;\n if (!rest.disabled && !context.open && !openTimerRef) {\n contentContext.onPointerGraceIntentChange(null);\n openTimerRef = window.setTimeout(() => {\n context.onOpenChange(true);\n clearOpenTimer();\n }, 100);\n }\n })\n )}\n onPointerLeave={composeEventHandlers(\n local.onPointerLeave as any,\n whenMouse((event: PointerEvent) => {\n clearOpenTimer();\n\n const contentRect = context.content?.getBoundingClientRect();\n if (contentRect) {\n const side = context.content?.dataset.side as 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\n contentContext.onPointerGraceIntentChange({\n area: [\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\n window.clearTimeout(contentContext.pointerGraceTimerRef);\n contentContext.onPointerGraceTimerChange(\n 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 )}\n onKeyDown={composeEventHandlers(\n local.onKeyDown as any,\n (event: KeyboardEvent) => {\n const isTypingAhead = contentContext.searchRef !== \"\";\n if (rest.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 </MenuAnchor>\n );\n}\n\nMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * MenuSubContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUB_CONTENT_NAME = \"MenuSubContent\";\n\ninterface MenuSubContentProps extends Omit<\n MenuContentImplProps,\n | \"onOpenAutoFocus\"\n | \"onDismiss\"\n | \"disableOutsidePointerEvents\"\n | \"disableOutsideScroll\"\n | \"trapFocus\"\n | \"onCloseAutoFocus\"\n | \"onEntryFocus\"\n | \"side\"\n | \"align\"\n> {\n forceMount?: true;\n}\n\nfunction MenuSubContent(inProps: ScopedProps<MenuSubContentProps>) {\n const [local, rest] = splitProps(inProps, [\n \"__scopeMenu\",\n \"forceMount\",\n \"ref\",\n \"onFocusOutside\",\n \"onEscapeKeyDown\",\n \"onKeyDown\",\n ]);\n\n const portalContext = usePortalContext(CONTENT_NAME, local.__scopeMenu);\n const context = useMenuContext(CONTENT_NAME, local.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, local.__scopeMenu);\n const subContext = useMenuSubContext(SUB_CONTENT_NAME, local.__scopeMenu);\n const forceMount = () => local.forceMount ?? portalContext.forceMount;\n let contentRef: HTMLDivElement | undefined;\n\n return (\n <Collection.Provider scope={local.__scopeMenu}>\n <Presence present={forceMount() || context.open}>\n <Collection.Slot scope={local.__scopeMenu}>\n <MenuContentImpl\n id={subContext.contentId}\n aria-labelledby={subContext.triggerId}\n {...rest}\n __scopeMenu={local.__scopeMenu}\n ref={mergeRefs(local.ref, (el: HTMLElement) => {\n contentRef = el as HTMLDivElement;\n })}\n align=\"start\"\n side={rootContext.dir === \"rtl\" ? \"left\" : \"right\"}\n disableOutsidePointerEvents={false}\n disableOutsideScroll={false}\n trapFocus={false}\n onOpenAutoFocus={(event: Event) => {\n // when opening a submenu, focus content for keyboard users only\n if (rootContext.isUsingKeyboard) contentRef?.focus();\n event.preventDefault();\n }}\n onCloseAutoFocus={(event: Event) => event.preventDefault()}\n onFocusOutside={composeEventHandlers(\n local.onFocusOutside,\n (event: any) => {\n if (event.target !== subContext.trigger)\n context.onOpenChange(false);\n }\n )}\n onEscapeKeyDown={composeEventHandlers(\n local.onEscapeKeyDown,\n (event: KeyboardEvent) => {\n rootContext.onClose();\n event.preventDefault();\n }\n )}\n onKeyDown={composeEventHandlers(\n local.onKeyDown as any,\n (event: KeyboardEvent) => {\n const isKeyDownInside = (\n event.currentTarget as HTMLElement\n ).contains(event.target as HTMLElement);\n const isCloseKey = SUB_CLOSE_KEYS[rootContext.dir].includes(\n event.key\n );\n if (isKeyDownInside && isCloseKey) {\n context.onOpenChange(false);\n subContext.trigger?.focus();\n event.preventDefault();\n }\n }\n )}\n />\n </Collection.Slot>\n </Presence>\n </Collection.Provider>\n );\n}\n\nMenuSubContent.displayName = SUB_CONTENT_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * Utility functions\n * -----------------------------------------------------------------------------------------------*/\n\nfunction getOpenState(open: boolean) {\n return open ? \"open\" : \"closed\";\n}\n\nfunction isIndeterminate(checked?: CheckedState): checked is \"indeterminate\" {\n return checked === \"indeterminate\";\n}\n\nfunction getCheckedState(checked: CheckedState) {\n return isIndeterminate(checked)\n ? \"indeterminate\"\n : checked\n ? \"checked\"\n : \"unchecked\";\n}\n\nfunction focusFirst(candidates: HTMLElement[]) {\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}\n\n/**\n * Wraps an array around itself at a given start index\n * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']`\n */\nfunction wrapArray<T>(array: T[], startIndex: number) {\n return array.map<T>(\n (_, index) => array[(startIndex + index) % array.length]!\n );\n}\n\n/**\n * Typeahead matching logic. Takes in all the values, the search and the current match,\n * and returns the next match (or undefined).\n */\nfunction getNextMatch(values: string[], search: string, currentMatch?: string) {\n const isRepeated =\n 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)\n wrappedValues = wrappedValues.filter((v) => v !== currentMatch);\n const nextMatch = wrappedValues.find((value) =>\n value.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n );\n return nextMatch !== currentMatch ? nextMatch : undefined;\n}\n\ntype Point = { x: number; y: number };\ntype Polygon = Point[];\ntype Side = \"left\" | \"right\";\ntype GraceIntent = { area: Polygon; side: Side };\n\n/**\n * Determine if a point is inside of a polygon.\n * Based on https://github.com/substack/point-in-polygon\n */\nfunction isPointInPolygon(point: Point, polygon: 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\n const intersect =\n yi > y !== yj > y && x < ((xj - xi) * (y - yi)) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n\n return inside;\n}\n\nfunction isPointerInGraceArea(event: PointerEvent, area?: Polygon) {\n if (!area) return false;\n const cursorPos = { x: event.clientX, y: event.clientY };\n return isPointInPolygon(cursorPos, area);\n}\n\nfunction whenMouse<E extends PointerEvent>(\n handler: (event: E) => void\n): (event: E) => void {\n return (event) =>\n event.pointerType === \"mouse\" ? handler(event) : undefined;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Aliases\n * -----------------------------------------------------------------------------------------------*/\n\nconst Root = Menu;\nconst Anchor = MenuAnchor;\nconst PortalExport = MenuPortal;\nconst Content = MenuContent;\nconst Group = MenuGroup;\nconst Label = MenuLabel;\nconst Item = MenuItem;\nconst CheckboxItem = MenuCheckboxItem;\nconst RadioGroup = MenuRadioGroup;\nconst RadioItem = MenuRadioItem;\nconst ItemIndicator = MenuItemIndicator;\nconst Separator = MenuSeparator;\nconst Arrow = MenuArrow;\nconst Sub = MenuSub;\nconst SubTrigger = MenuSubTrigger;\nconst SubContent = MenuSubContent;\n\n/* -------------------------------------------------------------------------------------------------\n * Exports\n * -----------------------------------------------------------------------------------------------*/\n\nexport {\n createMenuScope,\n //\n Menu,\n MenuAnchor,\n MenuPortal,\n MenuContent,\n MenuGroup,\n MenuLabel,\n MenuItem,\n MenuCheckboxItem,\n MenuRadioGroup,\n MenuRadioItem,\n MenuItemIndicator,\n MenuSeparator,\n MenuArrow,\n MenuSub,\n MenuSubTrigger,\n MenuSubContent,\n //\n Root,\n Anchor,\n PortalExport as 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};\nexport type {\n MenuProps,\n MenuAnchorProps,\n MenuPortalProps,\n MenuContentProps,\n MenuGroupProps,\n MenuLabelProps,\n MenuItemProps,\n MenuCheckboxItemProps,\n MenuRadioGroupProps,\n MenuRadioItemProps,\n MenuItemIndicatorProps,\n MenuSeparatorProps,\n MenuArrowProps,\n MenuSubProps,\n MenuSubTriggerProps,\n MenuSubContentProps,\n};\n"]}
package/package.json ADDED
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "@radix-solid-js/menu",
3
+ "version": "0.1.2",
4
+ "license": "MIT",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": {
12
+ "types": "./dist/index.d.ts",
13
+ "default": "./dist/index.js"
14
+ },
15
+ "require": {
16
+ "types": "./dist/index.d.cts",
17
+ "default": "./dist/index.cjs"
18
+ }
19
+ }
20
+ },
21
+ "files": [
22
+ "dist"
23
+ ],
24
+ "sideEffects": false,
25
+ "scripts": {
26
+ "build": "tsup",
27
+ "clean": "rm -rf dist",
28
+ "typecheck": "tsc --noEmit",
29
+ "test": "vitest run"
30
+ },
31
+ "dependencies": {
32
+ "@radix-solid-js/primitive": "workspace:*",
33
+ "@radix-solid-js/collection": "workspace:*",
34
+ "@radix-solid-js/compose-refs": "workspace:*",
35
+ "@radix-solid-js/context": "workspace:*",
36
+ "@radix-solid-js/direction": "workspace:*",
37
+ "@radix-solid-js/dismissable-layer": "workspace:*",
38
+ "@radix-solid-js/focus-guards": "workspace:*",
39
+ "@radix-solid-js/focus-scope": "workspace:*",
40
+ "@radix-solid-js/id": "workspace:*",
41
+ "@radix-solid-js/popper": "workspace:*",
42
+ "@radix-solid-js/portal": "workspace:*",
43
+ "@radix-solid-js/presence": "workspace:*",
44
+ "@radix-solid-js/primitive-component": "workspace:*",
45
+ "@radix-solid-js/roving-focus": "workspace:*",
46
+ "@radix-solid-js/slot": "workspace:*",
47
+ "@radix-solid-js/use-controllable-state": "workspace:*",
48
+ "aria-hidden": "^1.2.6",
49
+ "solid-prevent-scroll": "^0.1.10"
50
+ },
51
+ "peerDependencies": {
52
+ "solid-js": "^1.8.0"
53
+ },
54
+ "devDependencies": {
55
+ "@repo/tsconfig": "workspace:*",
56
+ "tsup": "^8.3.6",
57
+ "typescript": "^5.7.3",
58
+ "solid-js": "^1.9.3",
59
+ "vitest": "^2.1.8"
60
+ },
61
+ "publishConfig": {
62
+ "access": "public"
63
+ },
64
+ "repository": {
65
+ "type": "git",
66
+ "url": "https://github.com/ljho01/shadcn-solid-js.git",
67
+ "directory": "packages/solid/menu"
68
+ }
69
+ }