{"version":3,"file":"useActivator.mjs","names":["VMenuSymbol","makeDelayProps","useDelay","computed","effectScope","inject","mergeProps","nextTick","onScopeDispose","ref","watch","watchEffect","bindProps","getCurrentInstance","IN_BROWSER","matchesSelector","propsFactory","templateRef","unbindProps","makeActivatorProps","target","String","Object","activator","activatorProps","type","default","openOnClick","Boolean","undefined","openOnHover","openOnFocus","closeOnContentClick","useActivator","props","_ref","isActive","isTop","contentEl","vm","activatorEl","isHovered","isFocused","firstEnter","value","runOpenDelay","runCloseDelay","cursorTarget","availableEvents","onClick","e","stopPropagation","currentTarget","clientX","clientY","onMouseenter","sourceCapabilities","firesTouchEvents","onMouseleave","onFocus","onBlur","activatorEvents","events","contentEvents","onFocusin","onFocusout","menu","closeParents","scrimEvents","val","contains","document","activeElement","setTimeout","flush","activatorRef","el","targetRef","getTarget","targetEl","Array","isArray","scope","run","_useActivator","stop","immediate","_ref2","oldVal","getActivator","unbindActivatorProps","bindActivatorProps","arguments","length","_props","selector","nodeType","Node","ELEMENT_NODE","proxy","$el","parentNode","hasAttribute","querySelector"],"sources":["../../../src/components/VOverlay/useActivator.tsx"],"sourcesContent":["// Components\nimport { VMenuSymbol } from '@/components/VMenu/shared'\n\n// Composables\nimport { makeDelayProps, useDelay } from '@/composables/delay'\n\n// Utilities\nimport {\n computed,\n effectScope,\n inject,\n mergeProps,\n nextTick,\n onScopeDispose,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n bindProps,\n getCurrentInstance,\n IN_BROWSER,\n matchesSelector,\n propsFactory,\n templateRef,\n unbindProps,\n} from '@/util'\n\n// Types\nimport type {\n ComponentInternalInstance,\n ComponentPublicInstance,\n EffectScope,\n PropType,\n Ref,\n} from 'vue'\nimport type { DelayProps } from '@/composables/delay'\n\ninterface ActivatorProps extends DelayProps {\n target: 'parent' | 'cursor' | (string & {}) | Element | ComponentPublicInstance | [x: number, y: number] | undefined\n activator: 'parent' | (string & {}) | Element | ComponentPublicInstance | undefined\n activatorProps: Record\n\n openOnClick: boolean | undefined\n openOnHover: boolean\n openOnFocus: boolean | undefined\n\n closeOnContentClick: boolean\n}\n\nexport const makeActivatorProps = propsFactory({\n target: [String, Object] as PropType,\n activator: [String, Object] as PropType,\n activatorProps: {\n type: Object as PropType,\n default: () => ({}),\n },\n\n openOnClick: {\n type: Boolean,\n default: undefined,\n },\n openOnHover: Boolean,\n openOnFocus: {\n type: Boolean,\n default: undefined,\n },\n\n closeOnContentClick: Boolean,\n\n ...makeDelayProps(),\n}, 'VOverlay-activator')\n\nexport function useActivator (\n props: ActivatorProps,\n { isActive, isTop, contentEl }: {\n isActive: Ref\n isTop: Ref\n contentEl: Ref\n }\n) {\n const vm = getCurrentInstance('useActivator')\n const activatorEl = ref()\n\n let isHovered = false\n let isFocused = false\n let firstEnter = true\n\n const openOnFocus = computed(() => props.openOnFocus || (props.openOnFocus == null && props.openOnHover))\n const openOnClick = computed(() => props.openOnClick || (props.openOnClick == null && !props.openOnHover && !openOnFocus.value))\n\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => {\n if (\n value === (\n (props.openOnHover && isHovered) ||\n (openOnFocus.value && isFocused)\n ) && !(props.openOnHover && isActive.value && !isTop.value)\n ) {\n if (isActive.value !== value) {\n firstEnter = true\n }\n isActive.value = value\n }\n })\n\n const cursorTarget = ref<[x: number, y: number]>()\n const availableEvents = {\n onClick: (e: MouseEvent) => {\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n if (!isActive.value) {\n cursorTarget.value = [e.clientX, e.clientY]\n }\n isActive.value = !isActive.value\n },\n onMouseenter: (e: MouseEvent) => {\n if (e.sourceCapabilities?.firesTouchEvents) return\n\n isHovered = true\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n runOpenDelay()\n },\n onMouseleave: (e: MouseEvent) => {\n isHovered = false\n runCloseDelay()\n },\n onFocus: (e: FocusEvent) => {\n if (matchesSelector(e.target as HTMLElement, ':focus-visible') === false) return\n\n isFocused = true\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n\n runOpenDelay()\n },\n onBlur: (e: FocusEvent) => {\n isFocused = false\n e.stopPropagation()\n\n runCloseDelay()\n },\n }\n\n const activatorEvents = computed(() => {\n const events: Partial = {}\n\n if (openOnClick.value) {\n events.onClick = availableEvents.onClick\n }\n if (props.openOnHover) {\n events.onMouseenter = availableEvents.onMouseenter\n events.onMouseleave = availableEvents.onMouseleave\n }\n if (openOnFocus.value) {\n events.onFocus = availableEvents.onFocus\n events.onBlur = availableEvents.onBlur\n }\n\n return events\n })\n\n const contentEvents = computed(() => {\n const events: Record = {}\n\n if (props.openOnHover) {\n events.onMouseenter = () => {\n isHovered = true\n runOpenDelay()\n }\n events.onMouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n if (openOnFocus.value) {\n events.onFocusin = () => {\n isFocused = true\n runOpenDelay()\n }\n events.onFocusout = () => {\n isFocused = false\n runCloseDelay()\n }\n }\n\n if (props.closeOnContentClick) {\n const menu = inject(VMenuSymbol, null)\n events.onClick = () => {\n isActive.value = false\n menu?.closeParents()\n }\n }\n\n return events\n })\n\n const scrimEvents = computed(() => {\n const events: Record = {}\n\n if (props.openOnHover) {\n events.onMouseenter = () => {\n if (firstEnter) {\n isHovered = true\n firstEnter = false\n runOpenDelay()\n }\n }\n events.onMouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n return events\n })\n\n watch(isTop, val => {\n if (val && (\n (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused)) ||\n (openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered))\n ) && !contentEl.value?.contains(document.activeElement)) {\n isActive.value = false\n }\n })\n\n watch(isActive, val => {\n if (!val) {\n setTimeout(() => {\n cursorTarget.value = undefined\n })\n }\n }, { flush: 'post' })\n\n const activatorRef = templateRef()\n watchEffect(() => {\n if (!activatorRef.value) return\n\n nextTick(() => {\n activatorEl.value = activatorRef.el\n })\n })\n\n const targetRef = templateRef()\n const target = computed(() => {\n if (props.target === 'cursor' && cursorTarget.value) return cursorTarget.value\n if (targetRef.value) return targetRef.el\n return getTarget(props.target, vm) || activatorEl.value\n })\n const targetEl = computed(() => {\n return Array.isArray(target.value)\n ? undefined\n : target.value\n })\n\n let scope: EffectScope\n watch(() => !!props.activator, val => {\n if (val && IN_BROWSER) {\n scope = effectScope()\n scope.run(() => {\n _useActivator(props, vm, { activatorEl, activatorEvents })\n })\n } else if (scope) {\n scope.stop()\n }\n }, { flush: 'post', immediate: true })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n\n return { activatorEl, activatorRef, target, targetEl, targetRef, activatorEvents, contentEvents, scrimEvents }\n}\n\nfunction _useActivator (\n props: ActivatorProps,\n vm: ComponentInternalInstance,\n { activatorEl, activatorEvents }: Pick, 'activatorEl' | 'activatorEvents'>\n) {\n watch(() => props.activator, (val, oldVal) => {\n if (oldVal && val !== oldVal) {\n const activator = getActivator(oldVal)\n activator && unbindActivatorProps(activator)\n }\n if (val) {\n nextTick(() => bindActivatorProps())\n }\n }, { immediate: true })\n\n watch(() => props.activatorProps, () => {\n bindActivatorProps()\n })\n\n onScopeDispose(() => {\n unbindActivatorProps()\n })\n\n function bindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n bindProps(el, mergeProps(activatorEvents.value, _props))\n }\n\n function unbindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n unbindProps(el, mergeProps(activatorEvents.value, _props))\n }\n\n function getActivator (selector = props.activator): HTMLElement | undefined {\n const activator = getTarget(selector, vm)\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : undefined\n\n return activatorEl.value\n }\n}\n\nfunction getTarget (\n selector: T,\n vm: ComponentInternalInstance\n): HTMLElement | undefined | (T extends any[] ? [x: number, y: number] : never) {\n if (!selector) return\n\n let target\n if (selector === 'parent') {\n let el = vm?.proxy?.$el?.parentNode\n while (el?.hasAttribute('data-no-activator')) {\n el = el.parentNode\n }\n target = el\n } else if (typeof selector === 'string') {\n // Selector\n target = document.querySelector(selector)\n } else if ('$el' in selector) {\n // Component (ref)\n target = selector.$el\n } else {\n // HTMLElement | Element | [x, y]\n target = selector\n }\n\n return target\n}\n"],"mappings":"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","ignoreList":[]}