{"version":3,"file":"context-menu.mjs","sources":["../src/context-menu/ContextMenuContent.ts","../src/context-menu/ContextMenuRoot.ts","../src/context-menu/ContextMenuContentImpl.ts","../src/context-menu/ContextMenuContentImpl.vue","../src/context-menu/ContextMenuContent.vue","../src/context-menu/ContextMenuRoot.vue","../src/context-menu/ContextMenuSub.ts","../src/context-menu/ContextMenuSub.vue","../src/context-menu/ContextMenuSubContent.ts","../src/context-menu/ContextMenuSubContentImpl.ts","../src/context-menu/ContextMenuSubContentImpl.vue","../src/context-menu/ContextMenuSubContent.vue","../src/context-menu/ContextMenuTrigger.ts","../src/context-menu/ContextMenuTrigger.vue"],"sourcesContent":["import type { PrimitiveDefaultProps, RadixPrimitiveReturns } from '../shared/index.ts'\nimport { type Ref, shallowRef } from 'vue'\nimport { useMenuContext } from '../menu/MenuRoot.ts'\nimport { usePopperContext } from '../popper/index.ts'\nimport { usePresence } from '../presence/usePresence.ts'\n\nexport interface ContextMenuContenttProps {\n  /**\n   * Used to force mounting when more control is needed. Useful when\n   * controlling animation with React animation libraries.\n   */\n  forceMount?: boolean\n}\n\nexport const DEFAULT_CONTEXT_MENU_CONTENT_PROPS = {\n  forceMount: undefined,\n} satisfies PrimitiveDefaultProps<ContextMenuContenttProps>\n\nexport interface UseContextMenuContenttProps {\n  forceMount?: boolean\n}\n\nexport function useContextMenuContent(props: UseContextMenuContenttProps = {}): RadixPrimitiveReturns<{\n  isPresent: Ref<boolean>\n}> {\n  const menuContext = useMenuContext('MenuContent')\n  const popperContext = usePopperContext('MenuContent')\n\n  const isPresent = props.forceMount ? shallowRef(true) : usePresence(popperContext.content, menuContext.open)\n\n  return {\n    isPresent,\n  }\n}\n","import type { Direction } from '../direction/index.ts'\nimport type { EmitsToHookProps, PrimitiveDefaultProps } from '../shared/index.ts'\nimport { type MaybeRefOrGetter, type Ref, shallowRef } from 'vue'\nimport { createContext } from '../hooks/index.ts'\nimport { useMenuRoot } from '../menu/MenuRoot.ts'\n\nexport interface ContextMenuRootProps {\n  dir?: Direction\n  modal?: boolean\n}\n\nexport const DEFAULT_CONTEXT_MENU_ROOT_PROPS = {\n  modal: undefined,\n} satisfies PrimitiveDefaultProps<ContextMenuRootProps>\n\nexport type ContextMenuRootEmits = {\n  'update:open': [open: boolean]\n}\n\nexport interface ContextMenuContextValue {\n  open: Ref<boolean>\n  onOpenChange: (open: boolean) => void\n  modal: boolean\n}\n\nexport const [provideContextMenuContext, useContextMenuContext] = createContext<ContextMenuContextValue>('ContextMenu')\n\nexport interface UseContextMenuRootProps extends EmitsToHookProps<ContextMenuRootEmits> {\n  dir?: MaybeRefOrGetter<Direction | undefined>\n  modal?: boolean\n}\n\nexport function useContextMenuRoot(props: UseContextMenuRootProps) {\n  const { modal = true } = props\n  const open = shallowRef(false)\n\n  function onOpenChange(v: boolean) {\n    open.value = v\n    props.onUpdateOpen?.(v)\n  }\n\n  provideContextMenuContext({\n    open,\n    onOpenChange,\n    modal,\n  })\n\n  useMenuRoot({\n    open() {\n      return open.value\n    },\n    onUpdateOpen(v) {\n      open.value = v\n    },\n    dir: props.dir,\n    modal,\n  })\n}\n","import type { PrimitiveDefaultProps } from '../shared/index.ts'\nimport {\n  type MenuContentImplEmits,\n  type MenuContentImplProps,\n  useMenuContentImpl,\n  type UseMenuContentImplProps,\n  type UseMenuContentImplSharedPeturns,\n} from '../menu/index.ts'\nimport { useContextMenuContext } from './ContextMenuRoot.ts'\n\nexport interface ContextMenuContentImplProps extends Omit<MenuContentImplProps, 'side' | 'sideOffset' | 'align'> {}\n\nexport const DEFAULT_CONTEXT_MENU_CONTENT_IMPL_PROPS = {\n  avoidCollisions: undefined,\n  hideWhenDetached: undefined,\n  loop: undefined,\n} satisfies PrimitiveDefaultProps<ContextMenuContentImplProps>\n\nexport type ContextMenuContentImplEmits = Omit<MenuContentImplEmits, 'entryFocus'>\n\nexport interface UseContextMenuContentImplProps extends Omit<UseMenuContentImplProps, 'onEntryFocus' | 'popperProps' | 'side' | 'sideOffset' | 'align'> {\n}\n\nexport function useContextMenuContentImpl(props: UseContextMenuContentImplProps = {}): UseMenuContentImplSharedPeturns {\n  const context = useContextMenuContext('ContextMenuContent')\n  let hasInteractedOutsideRef = false\n\n  const menuContentImpl = useMenuContentImpl({\n    ...props,\n    onCloseAutoFocus(event: Event) {\n      props.onCloseAutoFocus?.(event)\n\n      if (!event.defaultPrevented && hasInteractedOutsideRef) {\n        event.preventDefault()\n      }\n\n      hasInteractedOutsideRef = false\n    },\n    onInteractOutside(event) {\n      props.onInteractOutside?.(event)\n\n      if (!event.defaultPrevented && !context.modal)\n        hasInteractedOutsideRef = true\n    },\n    side: 'right',\n    sideOffset: 2,\n    align: 'start',\n  })\n\n  const attrs = {\n    style: {\n      '--radix-context-menu-content-transform-origin': 'var(--radix-popper-transform-origin)',\n      '--radix-context-menu-content-available-width': 'var(--radix-popper-available-width)',\n      '--radix-context-menu-content-available-height': 'var(--radix-popper-available-height)',\n      '--radix-context-menu-trigger-width': 'var(--radix-popper-anchor-width)',\n      '--radix-context-menu-trigger-height': 'var(--radix-popper-anchor-height)',\n    },\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  type ContextMenuContentImplEmits,\n  type ContextMenuContentImplProps,\n  DEFAULT_CONTEXT_MENU_CONTENT_IMPL_PROPS,\n  useContextMenuContentImpl,\n} from './ContextMenuContentImpl.ts'\n\ndefineOptions({\n  name: 'ContextMenuContentImpl',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<ContextMenuContentImplProps>(), DEFAULT_CONTEXT_MENU_CONTENT_IMPL_PROPS)\nconst emit = defineEmits<ContextMenuContentImplEmits>()\n\nconst contextMenuContentImpl = useContextMenuContentImpl(convertPropsToHookProps(\n  props,\n  ['collisionBoundary'],\n  (): Required<EmitsToHookProps<ContextMenuContentImplEmits>> => ({\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=\"contextMenuContentImpl.wrapperAttrs()\">\n    <Primitive v-bind=\"normalizeAttrs(contextMenuContentImpl.attrs([$attrs]))\">\n      <slot />\n    </Primitive>\n  </div>\n</template>\n","<script setup lang=\"ts\">\nimport { convertPropsToHookProps } from '../shared/index.ts'\nimport { type ContextMenuContenttProps, DEFAULT_CONTEXT_MENU_CONTENT_PROPS, useContextMenuContent } from './ContextMenuContent.ts'\nimport ContextMenuContentImpl from './ContextMenuContentImpl.vue'\n\ndefineOptions({\n  name: 'ContextMenuContent',\n})\n\nconst props = withDefaults(defineProps<ContextMenuContenttProps>(), DEFAULT_CONTEXT_MENU_CONTENT_PROPS)\n\nconst menuContent = useContextMenuContent(convertPropsToHookProps(props))\n</script>\n\n<template>\n  <ContextMenuContentImpl v-if=\"menuContent.isPresent.value\">\n    <slot />\n  </ContextMenuContentImpl>\n</template>\n","<script setup lang=\"ts\">\nimport type { EmitsToHookProps } from '../shared/index.ts'\nimport { convertPropsToHookProps } from '../shared/index.ts'\nimport { type ContextMenuRootEmits, type ContextMenuRootProps, DEFAULT_CONTEXT_MENU_ROOT_PROPS, useContextMenuRoot } from './ContextMenuRoot.ts'\n\ndefineOptions({\n  name: 'ContextMenuRoot',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<ContextMenuRootProps>(), DEFAULT_CONTEXT_MENU_ROOT_PROPS)\nconst emit = defineEmits<ContextMenuRootEmits>()\n\nuseContextMenuRoot(convertPropsToHookProps(\n  props,\n  ['dir'],\n  (): Required<EmitsToHookProps<ContextMenuRootEmits>> => ({\n    onUpdateOpen(open) {\n      emit('update:open', open)\n    },\n  }),\n))\n</script>\n\n<template>\n  <slot />\n</template>\n","import type { EmitsToHookProps, PrimitiveDefaultProps } from '../shared'\nimport { useControllableStateV2 } from '../hooks/index.ts'\nimport { useMenuSub } from '../menu/index.ts'\n\nexport interface ContextMenuSubProps {\n  open?: boolean\n  defaultOpen?: boolean\n}\n\nexport const DEFAULT_CONTEXT_MENU_SUB_PROPS = {\n  open: undefined,\n  defaultOpen: undefined,\n} satisfies PrimitiveDefaultProps<ContextMenuSubProps>\n\nexport type ContextMenuSubEmits = {\n  'update:open': [isOpen: boolean]\n}\n\nexport interface UseContextMenuSubProps extends EmitsToHookProps<ContextMenuSubEmits> {\n  open?: () => boolean | undefined\n  defaultOpen?: boolean\n}\n\nexport function useContextMenuSub(props: UseContextMenuSubProps = {}): void {\n  const { defaultOpen = false } = props\n  const open = useControllableStateV2(props.open, props.onUpdateOpen, defaultOpen)\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 { EmitsToHookProps } from '../shared/index.ts'\nimport { convertPropsToHookProps } from '../shared/index.ts'\nimport { type ContextMenuSubEmits, type ContextMenuSubProps, DEFAULT_CONTEXT_MENU_SUB_PROPS, useContextMenuSub } from './ContextMenuSub.ts'\n\ndefineOptions({\n  name: 'ContextMenuSub',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<ContextMenuSubProps>(), DEFAULT_CONTEXT_MENU_SUB_PROPS)\n\nconst emit = defineEmits<ContextMenuSubEmits>()\n\nuseContextMenuSub(convertPropsToHookProps(\n  props,\n  ['open'],\n  (): Required<EmitsToHookProps<ContextMenuSubEmits>> => ({\n    onUpdateOpen(open) {\n      emit('update:open', open)\n    },\n  }),\n))\n</script>\n\n<template>\n  <slot />\n</template>\n","import type { PrimitiveDefaultProps } from '../shared/index.ts'\nimport { type MenuSubContentProps, useMenuSubContent, type UseMenuSubContentProps } from '../menu/index.ts'\n\nexport interface ContextMenuSubContentProps extends MenuSubContentProps {}\n\nexport const DEFAULT_CONTEXT_MENU_SUB_CONTENT_PROPS = {\n  forceMount: undefined,\n} satisfies PrimitiveDefaultProps<ContextMenuSubContentProps>\n\nexport interface UseContextMenuSubContentProps extends UseMenuSubContentProps {\n}\n\nexport const useContextMenuSubContent = useMenuSubContent\n","import type { PrimitiveDefaultProps } from '../shared/index.ts'\nimport {\n  type MenuSubContentImplEmits,\n  type MenuSubContentImplProps,\n  type UseMenuContentImplSharedPeturns,\n  useMenuSubContentImpl,\n  type UseMenuSubContentImplProps,\n} from '../menu/index.ts'\n\nexport interface ContextMenuSubContentImplProps extends MenuSubContentImplProps {\n\n}\n\nexport const DEFAULT_CONTEXT_MENU_SUB_CONTENT_IMPL_PROPS = {\n  avoidCollisions: undefined,\n  hideWhenDetached: undefined,\n  loop: undefined,\n} satisfies PrimitiveDefaultProps<ContextMenuSubContentImplProps>\n\nexport type ContextMenuSubContentImplEmits = MenuSubContentImplEmits\n\nexport interface UseContextMenuSubContentImplProps extends UseMenuSubContentImplProps {}\n\nexport function useContextMenuSubContentImpl(props: UseContextMenuSubContentImplProps = {}): UseMenuContentImplSharedPeturns {\n  const menuSubContentImpl = useMenuSubContentImpl(props)\n\n  const attrs = {\n    style: {\n      '--radix-context-menu-content-transform-origin': 'var(--radix-popper-transform-origin)',\n      '--radix-context-menu-content-available-width': 'var(--radix-popper-available-width)',\n      '--radix-context-menu-content-available-height': 'var(--radix-popper-available-height)',\n      '--radix-context-menu-trigger-width': 'var(--radix-popper-anchor-width)',\n      '--radix-context-menu-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 { Primitive } from '../primitive/index.ts'\nimport { convertPropsToHookProps, type EmitsToHookProps, normalizeAttrs } from '../shared/index.ts'\nimport { type ContextMenuSubContentImplEmits, type ContextMenuSubContentImplProps, DEFAULT_CONTEXT_MENU_SUB_CONTENT_IMPL_PROPS, useContextMenuSubContentImpl } from './ContextMenuSubContentImpl.ts'\n\ndefineOptions({\n  name: 'ContextMenuSubContentImpl',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<ContextMenuSubContentImplProps>(), DEFAULT_CONTEXT_MENU_SUB_CONTENT_IMPL_PROPS)\nconst emit = defineEmits<ContextMenuSubContentImplEmits>()\n\nconst contextMenuSubContentImpl = useContextMenuSubContentImpl(convertPropsToHookProps(\n  props,\n  ['collisionBoundary'],\n  (): Required<EmitsToHookProps<ContextMenuSubContentImplEmits>> => ({\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=\"contextMenuSubContentImpl.wrapperAttrs()\">\n    <Primitive v-bind=\"normalizeAttrs(contextMenuSubContentImpl.attrs([$attrs]))\">\n      <slot />\n    </Primitive>\n  </div>\n</template>\n","<script setup lang=\"ts\">\nimport { convertPropsToHookProps } from '../shared/index.ts'\nimport { type ContextMenuSubContentProps, DEFAULT_CONTEXT_MENU_SUB_CONTENT_PROPS, useContextMenuSubContent } from './ContextMenuSubContent.ts'\nimport ContextMenuSubContentImpl from './ContextMenuSubContentImpl.vue'\n\ndefineOptions({\n  name: 'ContextMenuSubContent',\n})\n\nconst props = withDefaults(defineProps<ContextMenuSubContentProps>(), DEFAULT_CONTEXT_MENU_SUB_CONTENT_PROPS)\n\nconst menuContent = useContextMenuSubContent(convertPropsToHookProps(props))\n</script>\n\n<template>\n  <ContextMenuSubContentImpl v-if=\"menuContent.isPresent.value\">\n    <slot />\n  </ContextMenuSubContentImpl>\n</template>\n","import type { PrimitiveProps } from '../primitive/index.ts'\nimport type { PrimitiveDefaultProps, RadixPrimitiveReturns } from '../shared/index.ts'\nimport { isClient } from '@vueuse/core'\nimport { onBeforeUnmount, onWatcherCleanup, watchEffect } from 'vue'\nimport { usePopperContext } from '../popper/index.ts'\nimport { mergePrimitiveAttrs } from '../shared/index.ts'\nimport { useContextMenuContext } from './ContextMenuRoot.ts'\n\nexport interface ContextMenuTriggerProps {\n  as?: PrimitiveProps['as']\n  disabled?: boolean\n}\n\nexport const DEFAULT_CONTEXT_MENU_TRIGGER_PROPS = {\n  as: 'span',\n  disabled: undefined,\n} satisfies PrimitiveDefaultProps<ContextMenuTriggerProps>\n\nexport type ContextMenuTriggerEmits = {\n  contextmenu: [event: MouseEvent]\n  pointerdown: [event: MouseEvent]\n  pointermove: [event: MouseEvent]\n  pointercancel: [event: MouseEvent]\n  pointerup: [event: MouseEvent]\n}\n\nexport interface UseContextMenuTriggerProps {\n  disabled?: () => boolean | undefined\n}\n\nexport function useContextMenuTrigger(props: UseContextMenuTriggerProps = {}): RadixPrimitiveReturns {\n  const context = useContextMenuContext('ContextMenuTrigger')\n  const popperContext = usePopperContext('ContextMenuTrigger')\n  const pointRef: DOMRectInit = { width: 0, height: 0, x: 0, y: 0 }\n  const virtualRef = {\n    getBoundingClientRect() {\n      return DOMRect.fromRect(pointRef)\n    },\n  }\n  let longPressTimerRef = 0\n\n  function clearLongPress() {\n    window.clearTimeout(longPressTimerRef)\n  }\n\n  function handleOpen(event: MouseEvent | PointerEvent) {\n    pointRef.x = event.clientX\n    pointRef.y = event.clientY\n    context.onOpenChange(true)\n  }\n\n  if (isClient) {\n    watchEffect(() => {\n      if (props.disabled?.()) {\n        clearLongPress()\n      }\n\n      onWatcherCleanup(() => {\n        clearLongPress()\n      })\n    })\n  }\n\n  function onContextmenu(event: MouseEvent) {\n    if (event.defaultPrevented) {\n      return\n    }\n    if (props.disabled?.()) {\n      return\n    }\n    // clearing the long press here because some platforms already support\n    // long press to trigger a `contextmenu` event\n    clearLongPress()\n    handleOpen(event)\n    event.preventDefault()\n  }\n\n  function onPointerdown(event: PointerEvent) {\n    if (event.defaultPrevented) {\n      return\n    }\n    if (event.pointerType === 'mouse')\n      return\n      // clear the long press here in case there's multiple touch points\n    clearLongPress()\n    longPressTimerRef = window.setTimeout(() => handleOpen(event), 700)\n  }\n\n  function onPointermove(event: PointerEvent) {\n    if (event.defaultPrevented) {\n      return\n    }\n    if (event.pointerType === 'mouse')\n      return\n    clearLongPress()\n  }\n\n  function onPointercancel(event: PointerEvent) {\n    if (event.defaultPrevented) {\n      return\n    }\n    if (event.pointerType === 'mouse')\n      return\n    clearLongPress()\n  }\n\n  function onPointerup(event: PointerEvent) {\n    if (event.defaultPrevented) {\n      return\n    }\n    if (event.pointerType === 'mouse')\n      return\n    clearLongPress()\n  }\n\n  onBeforeUnmount(() => {\n    clearLongPress()\n  })\n\n  // COMP::MenuAnchor COMP::PopperAnchor\n\n  popperContext.onAnchorChange(virtualRef)\n\n  return {\n    attrs(extraAttrs) {\n      const attrs = {\n        'data-state': context.open.value ? 'open' : 'closed',\n        'data-disabled': props.disabled?.() ? '' : undefined,\n        'style': '-webkit-touch-callout: none;',\n        onContextmenu,\n        onPointerdown,\n        onPointermove,\n        onPointercancel,\n        onPointerup,\n      }\n\n      if (extraAttrs && extraAttrs.length > 0) {\n        mergePrimitiveAttrs(attrs, extraAttrs)\n      }\n\n      return attrs\n    },\n  }\n}\n","<script setup lang=\"ts\">\nimport { Primitive } from '../primitive/index.ts'\nimport { convertPropsToHookProps, normalizeAttrs } from '../shared/index.ts'\nimport { type ContextMenuTriggerProps, DEFAULT_CONTEXT_MENU_TRIGGER_PROPS, useContextMenuTrigger } from './ContextMenuTrigger.ts'\n\ndefineOptions({\n  name: 'ContextMenuTrigger',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<ContextMenuTriggerProps>(), DEFAULT_CONTEXT_MENU_TRIGGER_PROPS)\n\nconst contextMenuTrigger = useContextMenuTrigger(convertPropsToHookProps(props, ['disabled']))\n</script>\n\n<template>\n  <Primitive v-bind=\"normalizeAttrs(contextMenuTrigger.attrs([$attrs, { as }]))\">\n    <slot />\n  </Primitive>\n</template>\n"],"names":[],"mappings":"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"}