{"version":3,"file":"menubar.mjs","sources":["../src/menubar/MenubarContent.ts","../src/menubar/MenubarRoot.ts","../src/menubar/MenubarMenu.ts","../src/menubar/MenubarContentImpl.ts","../src/menubar/MenubarContentImpl.vue","../src/menubar/MenubarContent.vue","../src/menubar/MenubarMenu.vue","../src/menubar/MenubarRoot.vue","../src/menubar/MenubarSub.ts","../src/menubar/MenubarSub.vue","../src/menubar/MenubarSubContent.ts","../src/menubar/MenubarSubContentImpl.ts","../src/menubar/MenubarSubContentImpl.vue","../src/menubar/MenubarSubContent.vue","../src/menubar/MenubarSubTrigger.ts","../src/menubar/MenubarSubTrigger.vue","../src/menubar/MenubarTrigger.ts","../src/menubar/MenubarTrigger.vue"],"sourcesContent":["import type { PrimitiveDefaultProps } from '../shared/index.ts'\nimport { type MenuContentProps, useMenuContent, type UseMenuContentProps } from '../menu/index.ts'\n\nexport interface MenubarContentProps extends MenuContentProps {}\n\nexport const DEFAULT_MENUBAR_CONTENT_PROPS = {\n  forceMount: undefined,\n} satisfies PrimitiveDefaultProps<MenubarContentProps>\n\nexport interface UseMenubarContentProps extends UseMenuContentProps {\n}\n\nexport const useMenubarContent = useMenuContent\n","import type { EmitsToHookProps, PrimitiveDefaultProps, RadixPrimitiveReturns } from '../shared/index.ts'\nimport { type MaybeRefOrGetter, type Ref, shallowRef } from 'vue'\nimport { createCollection } from '../collection/index.ts'\nimport { type Direction, useDirection } from '../direction/index.ts'\nimport { createContext, useControllableStateV2, useRef } from '../hooks/index.ts'\nimport { type RovingFocusGroupRootProps, useRovingFocusGroupRoot } from '../roving-focus/index.ts'\n\nexport interface MenubarRootProps {\n  value?: string\n  defaultValue?: string\n  loop?: RovingFocusGroupRootProps['loop']\n  dir?: RovingFocusGroupRootProps['dir']\n}\n\nexport const DEFAULT_MENUBAR_ROOT_PROPS = {\n  value: undefined,\n  loop: undefined,\n} satisfies PrimitiveDefaultProps<MenubarRootProps>\n\nexport type MenubarRootEmits = {\n  'update:value': [value: string]\n}\n\nexport interface MenubarContextValue {\n  value: Ref<string | undefined>\n  dir: Ref<Direction>\n  loop: boolean\n  onMenuOpen: (value: string) => void\n  onMenuClose: () => void\n  onMenuToggle: (value: string) => void\n}\n\nexport const [provideMenubarContext, useMenubarContext] = createContext<MenubarContextValue>('Menubar')\n\nexport interface ItemData {\n  $menubar: {\n    value: string\n    disabled: boolean\n  }\n}\n\nexport const [Collection, useCollection] = createCollection<HTMLElement, ItemData>('Menubar')\n\nexport interface UseMenubarRootProps extends EmitsToHookProps<MenubarRootEmits> {\n  value?: () => string | undefined\n  defaultValue?: string\n  loop?: boolean\n  dir?: MaybeRefOrGetter<Direction | undefined>\n}\n\nexport function useMenuvarRoot(props: UseMenubarRootProps = {}): RadixPrimitiveReturns {\n  const { loop = true, defaultValue = '' } = props\n\n  const direction = useDirection(props.dir)\n  const value = useControllableStateV2(props.value, props.onUpdateValue, defaultValue)\n\n  // We need to manage tab stop id manually as `RovingFocusGroup` updates the stop\n  // based on focus, and in some situations our triggers won't ever be given focus\n  // (e.g. click to open and then outside to close)\n  const currentTabStopId = shallowRef<string>()\n\n  provideMenubarContext({\n    value,\n    onMenuOpen(id) {\n      value.value = id\n      currentTabStopId.value = id\n    },\n    onMenuClose() {\n      value.value = ''\n    },\n    onMenuToggle(id) {\n      value.value = (value.value ? '' : id)\n      // `openMenuOpen` and `onMenuToggle` are called exclusively so we\n      // need to update the id in either case\n      currentTabStopId.value = id\n    },\n    dir: direction,\n    loop,\n  })\n\n  const elRef = useRef<HTMLElement>()\n  Collection.provideCollectionContext(elRef)\n\n  function setElRef(el: HTMLElement | undefined) {\n    elRef.value = el\n  }\n\n  const rovingFocusGroupRoot = useRovingFocusGroupRoot({\n    elRef,\n    orientation: 'horizontal',\n    loop,\n    dir: direction,\n    currentTabStopId() {\n      return currentTabStopId.value\n    },\n    onUpdateCurrentTabStopId(tabStopId) {\n      currentTabStopId.value = tabStopId\n    },\n  })\n\n  const rovingFocusGroupRootAttrs = {\n    elRef: setElRef,\n    role: 'menubar',\n  }\n\n  return {\n    attrs(extraAttrs = []) {\n      return rovingFocusGroupRoot.attrs([rovingFocusGroupRootAttrs, ...extraAttrs])\n    },\n  }\n}\n","import { computed, useId, watch } from 'vue'\nimport { createContext, type MutableRefObject, useRef } from '../hooks/index.ts'\nimport { useMenuRoot } from '../menu/MenuRoot.ts'\nimport { useMenubarContext } from './MenubarRoot.ts'\n\nexport interface MenubarMenuProps {\n  value?: string\n}\n\nexport interface MenubarMenuContextValue {\n  value: string\n  triggerId: string\n  triggerRef: MutableRefObject<HTMLElement | undefined>\n  contentId: string\n  wasKeyboardTriggerOpenRef: MutableRefObject<boolean>\n}\n\nexport const [provideMenubarMenuContext, useMenubarMenuContext] = createContext<MenubarMenuContextValue>('MenubarMenu')\n\nexport interface UseMenubarMenuProps {\n  value?: string\n}\n\nexport function useMenubarMenu(props: UseMenubarMenuProps) {\n  const value = props.value || useId()\n  const context = useMenubarContext('MenubarMenu')\n  const triggerRef = useRef<HTMLElement>()\n  const wasKeyboardTriggerOpenRef = useRef(false)\n  const open = computed(() => context.value.value === value)\n\n  watch(open, (v) => {\n    if (!v)\n      wasKeyboardTriggerOpenRef.value = false\n  })\n\n  provideMenubarMenuContext({\n    value,\n    triggerId: useId(),\n    triggerRef,\n    contentId: useId(),\n    wasKeyboardTriggerOpenRef,\n  })\n\n  useMenuRoot({\n    open() {\n      return open.value\n    },\n    onUpdateOpen(v) {\n      // Menu only calls `onOpenChange` when dismissing so we\n      // want to close our MenuBar based on the same events.\n      if (!v)\n        context.onMenuClose()\n    },\n    dir() {\n      return context.dir.value\n    },\n    modal: false,\n  })\n}\n","import { type MenuContentImplEmits, type MenuContentImplProps, useMenuContentImpl, type UseMenuContentImplProps, type UseMenuContentImplSharedPeturns } from '../menu/index.ts'\nimport { type PrimitiveDefaultProps, wrapArray } from '../shared/index.ts'\nimport { useMenubarMenuContext } from './MenubarMenu.ts'\nimport { useCollection, useMenubarContext } from './MenubarRoot.ts'\n\nexport interface MenubarContentImplProps extends MenuContentImplProps {}\n\nexport const DEFAULT_MENUBAR_CONTENT_IMPL_PROPS = {\n  avoidCollisions: undefined,\n  hideWhenDetached: undefined,\n  loop: undefined,\n} satisfies PrimitiveDefaultProps<MenubarContentImplProps>\n\nexport type MenubarContentImplEmits = Omit<MenuContentImplEmits, 'entryFocus'>\n\nexport interface UseMenubarContentImplProps extends Omit<UseMenuContentImplProps, 'onEntryFocus'> { }\n\nexport function useMenubarContentImpl(props: UseMenubarContentImplProps = {}): UseMenuContentImplSharedPeturns {\n  const { align = 'start' } = props\n  const context = useMenubarContext('MenubarContent')\n  const menuContext = useMenubarMenuContext('MenubarContent')\n  const getItems = useCollection()\n  let hasInteractedOutsideRef = false\n\n  function onKeydown(event: KeyboardEvent) {\n    if (!['ArrowRight', 'ArrowLeft'].includes(event.key))\n      return\n    const target = event.target as HTMLElement\n    const targetIsSubTrigger = target.hasAttribute('data-radix-menubar-subtrigger')\n    const isKeyDownInsideSubMenu = target.closest('[data-radix-menubar-content]') !== event.currentTarget\n\n    const prevMenuKey = context.dir.value === 'rtl' ? 'ArrowRight' : 'ArrowLeft'\n    const isPrevKey = prevMenuKey === event.key\n    const isNextKey = !isPrevKey\n\n    // Prevent navigation when we're opening a submenu\n    if (isNextKey && targetIsSubTrigger)\n      return\n    // or we're inside a submenu and are moving backwards to close it\n    if (isKeyDownInsideSubMenu && isPrevKey)\n      return\n\n    let candidateValues: string[] = []\n\n    for (const item of getItems()) {\n      if (item.$$rcid.$menubar.disabled)\n        continue\n      candidateValues.push(item.$$rcid.$menubar.value)\n    }\n\n    if (isPrevKey)\n      candidateValues.reverse()\n\n    const currentIndex = candidateValues.indexOf(menuContext.value)\n\n    candidateValues = context.loop\n      ? wrapArray(candidateValues, currentIndex + 1)\n      : candidateValues.slice(currentIndex + 1)\n\n    const [nextValue] = candidateValues\n    if (nextValue)\n      context.onMenuOpen(nextValue)\n  }\n\n  const menuContentImpl = useMenuContentImpl({\n    ...props,\n    align,\n    onCloseAutoFocus(event) {\n      props.onCloseAutoFocus?.(event)\n      if (event.defaultPrevented)\n        return\n\n      const menubarOpen = Boolean(context.value.value)\n      if (!menubarOpen && !hasInteractedOutsideRef) {\n        menuContext.triggerRef.value?.focus()\n      }\n\n      hasInteractedOutsideRef = false\n      // Always prevent auto focus because we either focus manually or want user agent focus\n      event.preventDefault()\n    },\n    onFocusOutside(event) {\n      props.onFocusOutside?.(event)\n\n      if (event.defaultPrevented)\n        return\n\n      const target = event.target as HTMLElement\n      const isMenubarTrigger = getItems().some(item => item?.contains(target))\n      if (isMenubarTrigger)\n        event.preventDefault()\n    },\n    onInteractOutside(event) {\n      props.onInteractOutside?.(event)\n\n      if (event.defaultPrevented)\n        return\n\n      hasInteractedOutsideRef = true\n    },\n    onEntryFocus(event) {\n      if (!menuContext.wasKeyboardTriggerOpenRef.value)\n        event.preventDefault()\n    },\n  })\n\n  const attrs = {\n    'id': menuContext.contentId,\n    'aria-labelledby': menuContext.triggerId,\n    'data-radix-menubar-content': '',\n    'style': {\n      // re-namespace exposed content custom properties\n      '--radix-menubar-content-transform-origin': 'var(--radix-popper-transform-origin)',\n      '--radix-menubar-content-available-width': 'var(--radix-popper-available-width)',\n      '--radix-menubar-content-available-height': 'var(--radix-popper-available-height)',\n      '--radix-menubar-trigger-width': 'var(--radix-popper-anchor-width)',\n      '--radix-menubar-trigger-height': 'var(--radix-popper-anchor-height)',\n    },\n    onKeydown,\n  }\n\n  return {\n    wrapperAttrs: menuContentImpl.wrapperAttrs,\n    attrs(extraAttrs = []) {\n      return menuContentImpl.attrs([attrs, ...extraAttrs])\n    },\n  }\n}\n","<script setup lang=\"ts\">\nimport { Primitive } from '../primitive/index.ts'\nimport { convertPropsToHookProps, type EmitsToHookProps, normalizeAttrs } from '../shared/index.ts'\nimport {\n  DEFAULT_MENUBAR_CONTENT_IMPL_PROPS,\n  type MenubarContentImplEmits,\n  type MenubarContentImplProps,\n  useMenubarContentImpl,\n} from './MenubarContentImpl.ts'\n\ndefineOptions({\n  name: 'MenubarContentImpl',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<MenubarContentImplProps>(), DEFAULT_MENUBAR_CONTENT_IMPL_PROPS)\n\nconst emit = defineEmits<MenubarContentImplEmits>()\n\nconst menubarContentImpl = useMenubarContentImpl(convertPropsToHookProps(\n  props,\n  ['collisionBoundary'],\n  (): Required<EmitsToHookProps<MenubarContentImplEmits>> => ({\n    onCloseAutoFocus(event) {\n      emit('closeAutoFocus', event)\n    },\n    onEscapeKeydown(event) {\n      emit('escapeKeydown', event)\n    },\n    onPointerdownOutside(event) {\n      emit('pointerdownOutside', event)\n    },\n    onFocusOutside(event) {\n      emit('focusOutside', event)\n    },\n    onInteractOutside(event) {\n      emit('interactOutside', event)\n    },\n  }),\n))\n</script>\n\n<template>\n  <div v-bind=\"menubarContentImpl.wrapperAttrs()\">\n    <Primitive v-bind=\"normalizeAttrs(menubarContentImpl.attrs([$attrs]))\">\n      <slot />\n    </Primitive>\n  </div>\n</template>\n","<script setup lang=\"ts\">\nimport { convertPropsToHookProps } from '../shared/index.ts'\nimport { DEFAULT_MENUBAR_CONTENT_PROPS, type MenubarContentProps, useMenubarContent } from './MenubarContent.ts'\nimport MenubarContentImpl from './MenubarContentImpl.vue'\n\ndefineOptions({\n  name: 'MenubarContent',\n})\n\nconst props = withDefaults(defineProps<MenubarContentProps>(), DEFAULT_MENUBAR_CONTENT_PROPS)\n\nconst menubarContent = useMenubarContent(convertPropsToHookProps(props))\n</script>\n\n<template>\n  <MenubarContentImpl v-if=\"menubarContent.isPresent.value\">\n    <slot />\n  </MenubarContentImpl>\n</template>\n","<script setup lang=\"ts\">\nimport { convertPropsToHookProps } from '../shared/index.ts'\nimport { type MenubarMenuProps, useMenubarMenu } from './MenubarMenu.ts'\n\ndefineOptions({\n  name: 'MenubarMenu',\n  inheritAttrs: false,\n})\n\nconst props = defineProps<MenubarMenuProps>()\n\nuseMenubarMenu(convertPropsToHookProps(props))\n</script>\n\n<template>\n  <slot />\n</template>\n","<script setup lang=\"ts\">\nimport { Primitive } from '../primitive/index.ts'\nimport { convertPropsToHookProps, type EmitsToHookProps, normalizeAttrs } from '../shared/index.ts'\nimport { DEFAULT_MENUBAR_ROOT_PROPS, type MenubarRootEmits, type MenubarRootProps, useMenuvarRoot } from './MenubarRoot.ts'\n\ndefineOptions({\n  name: 'MenubarRoot',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<MenubarRootProps>(), DEFAULT_MENUBAR_ROOT_PROPS)\nconst emit = defineEmits<MenubarRootEmits>()\n\nconst menuvarRoot = useMenuvarRoot(convertPropsToHookProps(\n  props,\n  ['value', 'dir'],\n  (): Required<EmitsToHookProps<MenubarRootEmits>> => ({\n    onUpdateValue(value) {\n      emit('update:value', value)\n    },\n  }),\n))\n</script>\n\n<template>\n  <Primitive v-bind=\"normalizeAttrs(menuvarRoot.attrs([$attrs]))\">\n    <slot />\n  </Primitive>\n</template>\n","import type { EmitsToHookProps } from '../shared/index.ts'\nimport { useControllableStateV2 } from '../hooks/index.ts'\nimport { useMenuSub } from '../menu/index.ts'\n\nexport interface MenubarSubProps {\n  open?: boolean\n  defaultOpen?: boolean\n}\n\nexport type MenubarSubEmits = {\n  'update:open': [open: boolean]\n}\n\nexport interface UseMenubarSubProps extends EmitsToHookProps<MenubarSubEmits> {\n  open?: () => boolean | undefined\n  defaultOpen?: boolean\n}\n\nexport function useMenubarSub(props: UseMenubarSubProps) {\n  const open = useControllableStateV2(props.open, props.onUpdateOpen, props.defaultOpen ?? false)\n\n  useMenuSub({\n    open() {\n      return open.value\n    },\n    onUpdateOpen(v) {\n      open.value = v\n    },\n  })\n}\n","<script setup lang=\"ts\">\nimport { type MenubarSubEmits, type MenubarSubProps, useMenubarSub } from './MenubarSub.ts'\n\ndefineOptions({\n  name: 'MenubarSub',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<MenubarSubProps>(), {\n  open: undefined,\n  defaultOpen: false,\n})\n\nconst emit = defineEmits<MenubarSubEmits>()\n\nuseMenubarSub({\n  open() {\n    return props.open\n  },\n  onUpdateOpen(open) {\n    emit('update:open', open)\n  },\n  defaultOpen: props.defaultOpen,\n})\n</script>\n\n<template>\n  <slot />\n</template>\n","import type { PrimitiveDefaultProps } from '../shared'\nimport { type MenuSubContentProps, useMenuSubContent, type UseMenuSubContentProps } from '../menu/index.ts'\n\nexport interface MenubarSubContentProps extends MenuSubContentProps {}\n\nexport const DEFAULT_MENUBAR_SUB_CONTENT_PROPS = {\n  forceMount: undefined,\n} satisfies PrimitiveDefaultProps<MenubarSubContentProps>\n\nexport interface UseMenubarSubContentProps extends UseMenuSubContentProps {}\n\nexport const useMenubarSubContent = useMenuSubContent\n","import type { PrimitiveDefaultProps } from '../shared'\nimport {\n  type MenuSubContentImplEmits,\n  type MenuSubContentImplProps,\n  type UseMenuContentImplSharedPeturns,\n  useMenuSubContentImpl,\n  type UseMenuSubContentImplProps,\n} from '../menu/index.ts'\n\nexport interface MenubarSubContentImplProps extends MenuSubContentImplProps { }\n\nexport const DEFAULT_MENUBAR_SUB_CONTENT_IMPL_PROPS = {\n  avoidCollisions: undefined,\n  hideWhenDetached: undefined,\n  loop: undefined,\n} satisfies PrimitiveDefaultProps<MenubarSubContentImplProps>\n\nexport type MenubarSubContentImplEmits = MenuSubContentImplEmits\n\nexport interface UseMenubarSubContentImplProps extends UseMenuSubContentImplProps { }\n\nexport function useMenubarSubContentImpl(props: UseMenubarSubContentImplProps = {}): UseMenuContentImplSharedPeturns {\n  const menuSubContentImpl = useMenuSubContentImpl(props)\n\n  const attrs = {\n    'data-radix-menubar-content': '',\n    'style': {\n      '--radix-menubar-content-transform-origin': 'var(--radix-popper-transform-origin)',\n      '--radix-menubar-content-available-width': 'var(--radix-popper-available-width)',\n      '--radix-menubar-content-available-height': 'var(--radix-popper-available-height)',\n      '--radix-menubar-trigger-width': 'var(--radix-popper-anchor-width)',\n      '--radix-menubar-trigger-height': 'var(--radix-popper-anchor-height)',\n    },\n  }\n\n  return {\n    wrapperAttrs: menuSubContentImpl.wrapperAttrs,\n    attrs(extraAttrs = []) {\n      return menuSubContentImpl.attrs([attrs, ...extraAttrs])\n    },\n  }\n}\n","<script setup lang=\"ts\">\nimport type { EmitsToHookProps } from '../shared/index.ts'\nimport { Primitive } from '../primitive/index.ts'\nimport { convertPropsToHookProps, normalizeAttrs } from '../shared/index.ts'\nimport { DEFAULT_MENUBAR_SUB_CONTENT_IMPL_PROPS, type MenubarSubContentImplEmits, type MenubarSubContentImplProps, useMenubarSubContentImpl } from './MenubarSubContentImpl.ts'\n\ndefineOptions({\n  name: 'MenubarSubContentImpl',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<MenubarSubContentImplProps>(), DEFAULT_MENUBAR_SUB_CONTENT_IMPL_PROPS)\nconst emit = defineEmits<MenubarSubContentImplEmits>()\n\nconst menubarContentImpl = useMenubarSubContentImpl(convertPropsToHookProps(\n  props,\n  ['collisionBoundary'],\n  (): Required<EmitsToHookProps<MenubarSubContentImplEmits>> => ({\n    onEscapeKeydown(event) {\n      emit('escapeKeydown', event)\n    },\n    onPointerdownOutside(event) {\n      emit('pointerdownOutside', event)\n    },\n    onFocusOutside(event) {\n      emit('focusOutside', event)\n    },\n    onInteractOutside(event) {\n      emit('interactOutside', event)\n    },\n  }),\n))\n</script>\n\n<template>\n  <div v-bind=\"menubarContentImpl.wrapperAttrs()\">\n    <Primitive v-bind=\"normalizeAttrs(menubarContentImpl.attrs([$attrs]))\">\n      <slot />\n    </Primitive>\n  </div>\n</template>\n","<script setup lang=\"ts\">\nimport { convertPropsToHookProps } from '../shared/index.ts'\nimport { DEFAULT_MENUBAR_SUB_CONTENT_PROPS, type MenubarSubContentProps, useMenubarSubContent } from './MenubarSubContent.ts'\nimport MenubarSubContentImpl from './MenubarSubContentImpl.vue'\n\ndefineOptions({\n  name: 'MenubarSubContent',\n})\n\nconst props = withDefaults(defineProps<MenubarSubContentProps>(), DEFAULT_MENUBAR_SUB_CONTENT_PROPS)\n\nconst menuContent = useMenubarSubContent(convertPropsToHookProps(props))\n</script>\n\n<template>\n  <MenubarSubContentImpl v-if=\"menuContent.isPresent.value\">\n    <slot />\n  </MenubarSubContentImpl>\n</template>\n","import type { PrimitiveDefaultProps, RadixPrimitiveReturns } from '../shared'\nimport { type MenuSubTriggerProps, useMenuSubTrigger, type UseMenuSubTriggerProps } from '../menu/index.ts'\n\nexport interface MenubarSubTriggerProps extends MenuSubTriggerProps {}\n\nexport const DEFAULT_MENUBAR_SUB_TRIGGER_PROPS = {\n  disabled: undefined,\n} satisfies PrimitiveDefaultProps<MenubarSubTriggerProps>\n\nexport interface UseMenubarSubTriggerProps extends UseMenuSubTriggerProps {\n\n}\n\nexport function useMenubarSubTrigger(props: UseMenubarSubTriggerProps = {}): RadixPrimitiveReturns {\n  const menuSubTrigger = useMenuSubTrigger(props)\n\n  const attrs = {\n    'data-radix-menubar-subtrigger': '',\n  }\n\n  return {\n    attrs(extraAttrs = []) {\n      return menuSubTrigger.attrs([attrs, ...extraAttrs])\n    },\n  }\n}\n","<script setup lang=\"ts\">\nimport { Primitive } from '../primitive/index.ts'\nimport { convertPropsToHookProps, normalizeAttrs } from '../shared/index.ts'\nimport { DEFAULT_MENUBAR_SUB_TRIGGER_PROPS, type MenubarSubTriggerProps, useMenubarSubTrigger } from './MenubarSubTrigger.ts'\n\ndefineOptions({\n  name: 'MenubarSubTrigger',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<MenubarSubTriggerProps>(), DEFAULT_MENUBAR_SUB_TRIGGER_PROPS)\n\nconst menubarSubTrigger = useMenubarSubTrigger(convertPropsToHookProps(props, ['disabled']))\n</script>\n\n<template>\n  <Primitive v-bind=\"normalizeAttrs(menubarSubTrigger.attrs([$attrs]))\">\n    <slot />\n  </Primitive>\n</template>\n","import type { PrimitiveProps } from '../primitive/index.ts'\nimport type { PrimitiveDefaultProps, PrimitiveElAttrs, RadixPrimitiveReturns } from '../shared/index.ts'\nimport { computed, onMounted, shallowRef, watchEffect } from 'vue'\nimport { DATA_COLLECTION_ITEM } from '../collection/index.ts'\nimport { usePopperContext } from '../popper/index.ts'\nimport { useRovingFocusGroupItem } from '../roving-focus/index.ts'\nimport { useMenubarMenuContext } from './MenubarMenu.ts'\nimport { Collection, type ItemData, useMenubarContext } from './MenubarRoot.ts'\n\nexport interface MenubarTriggerProps {\n  as?: PrimitiveProps['as']\n  disabled?: boolean\n}\n\nexport const DEFAULT_MENUBAR_TRIGGER_PROPS = {\n  as: 'button',\n  disabled: undefined,\n} satisfies PrimitiveDefaultProps<MenubarTriggerProps>\n\nexport interface UseMenubarTriggerProps {\n  disabled?: () => boolean | undefined\n}\n\nexport function useMenubarTrigger(props: UseMenubarTriggerProps = {}): RadixPrimitiveReturns {\n  const context = useMenubarContext('MenubarTrigger')\n  const menuContext = useMenubarMenuContext('MenubarTrigger')\n  const popperContext = usePopperContext('MenubarTrigger')\n\n  const itemData: ItemData['$menubar'] = {\n    value: menuContext.value,\n    disabled: props.disabled?.() ?? false,\n  }\n\n  watchEffect(() => {\n    itemData.value = menuContext.value\n    itemData.disabled = props.disabled?.() ?? false\n  })\n\n  const isFocused = shallowRef(false)\n  const open = computed(() => context.value.value === menuContext.value)\n\n  // Handlers\n\n  function onPointerdown(event: PointerEvent) {\n    if (event.defaultPrevented)\n      return\n    // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n    // but not when the control key is pressed (avoiding MacOS right click)\n    if (event.button === 0 && event.ctrlKey === false) {\n      context.onMenuOpen(menuContext.value)\n      // prevent trigger focusing when opening\n      // this allows the content to be given focus without competition\n      if (!open.value)\n        event.preventDefault()\n    }\n  }\n\n  function onPointerenter(event: PointerEvent) {\n    if (event.defaultPrevented)\n      return\n    const menubarOpen = Boolean(context.value.value)\n    if (menubarOpen && !open.value) {\n      context.onMenuOpen(menuContext.value)\n      menuContext.triggerRef.value?.focus()\n    }\n  }\n\n  function onKeydown(event: KeyboardEvent) {\n    if (event.defaultPrevented)\n      return\n    if (['Enter', ' '].includes(event.key))\n      context.onMenuToggle(menuContext.value)\n    if (event.key === 'ArrowDown')\n      context.onMenuOpen(menuContext.value)\n    // prevent keydown from scrolling window / first focused item to execute\n    // that keydown (inadvertently closing the menu)\n    if (['Enter', ' ', 'ArrowDown'].includes(event.key)) {\n      menuContext.wasKeyboardTriggerOpenRef.value = true\n      event.preventDefault()\n    }\n  }\n\n  function onFocus(event: FocusEvent) {\n    if (event.defaultPrevented)\n      return\n    isFocused.value = true\n  }\n\n  function onBlur(event: FocusEvent) {\n    if (event.defaultPrevented)\n      return\n    isFocused.value = false\n  }\n\n  function setElRef(v: HTMLElement | undefined) {\n    menuContext.triggerRef.value = v\n    Collection.useCollectionItem(v, itemData, '$menubar')\n  }\n\n  onMounted(() => {\n    popperContext.onAnchorChange(menuContext.triggerRef.value)\n  })\n\n  const rovingFocusGroupItem = useRovingFocusGroupItem({\n    focusable() {\n      return !props.disabled?.()\n    },\n    tabStopId() {\n      return menuContext.value\n    },\n  })\n\n  return {\n    attrs(extraAttrs = []) {\n      const _open = open.value\n      const _disabled = props.disabled?.()\n      const rovingFocusGroupItemAttrs: PrimitiveElAttrs = {\n        'id': menuContext.triggerId,\n        'elRef': setElRef,\n        'type': 'button',\n        'role': 'menuitem',\n        'aria-haspopup': 'menu',\n        'aria-expanded': _open,\n        'aria-controls': _open ? menuContext.contentId : undefined,\n        'data-highlighted': isFocused.value ? '' : undefined,\n        'data-state': _open ? 'open' : 'closed',\n        'data-disabled': _disabled ? '' : undefined,\n        'disabled': _disabled,\n        [DATA_COLLECTION_ITEM]: true,\n        onPointerdown,\n        onPointerenter,\n        onKeydown,\n        onFocus,\n        onBlur,\n      }\n\n      return rovingFocusGroupItem.attrs([rovingFocusGroupItemAttrs, ...extraAttrs])\n    },\n  }\n}\n","<script setup lang=\"ts\">\nimport { Primitive } from '../primitive/index.ts'\nimport { convertPropsToHookProps, normalizeAttrs } from '../shared/index.ts'\nimport { DEFAULT_MENUBAR_TRIGGER_PROPS, type MenubarTriggerProps, useMenubarTrigger } from './MenubarTrigger.ts'\n\ndefineOptions({\n  name: 'MenubarTrigger',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<MenubarTriggerProps>(), DEFAULT_MENUBAR_TRIGGER_PROPS)\n\nconst menubarTrigger = useMenubarTrigger(convertPropsToHookProps(props, ['disabled']))\n</script>\n\n<template>\n  <Primitive v-bind=\"normalizeAttrs(menubarTrigger.attrs([$attrs, { as }]))\">\n    <slot />\n  </Primitive>\n</template>\n"],"names":[],"mappings":"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"}