{"version":3,"file":"popper2.mjs","sources":["../../../../../../packages/components/popper/src/popper.vue"],"sourcesContent":["<template>\n  <popper-trigger\n    :disabled=\"disabled\"\n    :trigger=\"trigger\"\n    :virtual-ref=\"virtualRef\"\n    :virtual-triggering=\"virtualTriggering\"\n    :on-mouseenter=\"onMouseenter\"\n    :on-mouseleave=\"onMouseleave\"\n    :on-click=\"onClick\"\n    :on-keydown=\"onKeydown\"\n    :on-focus=\"onFocus\"\n    :on-blur=\"onBlur\"\n    :on-contextmenu=\"onContextmenu\"\n  >\n    <slot />\n  </popper-trigger>\n\n  <popper-content\n    :animation=\"animation\"\n    :append-to=\"appendTo\"\n    :teleported=\"teleported\"\n    :persistent=\"persistent\"\n    :placement=\"popperPlacement\"\n    :content=\"content\"\n    :interactivity=\"interactivity\"\n    :popper-class=\"popperClass\"\n    :popper-style=\"[popperStyle, floatingStyles, { zIndex }]\"\n    :disabled=\"disabled\"\n    :visible=\"visible\"\n    :show-arrow=\"showArrow\"\n    @blur=\"onBlur\"\n    @close=\"onClose\"\n  >\n    <slot name=\"content\" />\n  </popper-content>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n  computed,\n  onDeactivated,\n  provide,\n  reactive,\n  readonly,\n  ref,\n  toRef,\n  unref,\n  watch,\n} from 'vue'\nimport { isBoolean, isEmpty } from '@vuesax-alpha/utils'\nimport {\n  useDelayedToggle,\n  usePopperContainer,\n  usePopperContainerId,\n  useZIndex,\n} from '@vuesax-alpha/hooks'\nimport { popperContextKey } from '@vuesax-alpha/tokens'\nimport {\n  arrow as arrowMiddleware,\n  flip as flipMiddleware,\n  offset as offsetMiddleware,\n  shift as shiftMiddleware,\n  useFloating,\n} from '@vuesax-alpha/hooks/use-floating/vue'\nimport { popperEmits, popperProps, usePopperModelToggle } from './popper'\nimport popperContent from './content.vue'\nimport popperTrigger from './trigger.vue'\nimport type { Ref } from 'vue'\nimport type {\n  Middleware,\n  ReferenceElement,\n} from '@vuesax-alpha/hooks/use-floating/vue'\n\ndefineOptions({\n  name: 'VsPopper',\n  inheritAttrs: false,\n})\n\nusePopperContainer()\n\nconst { selector, id } = usePopperContainerId()\n\nconst appendTo = computed(() => props.appendTo || selector.value)\n\nconst props = defineProps(popperProps)\nconst emit = defineEmits(popperEmits)\n\nconst { currentZIndex, nextZIndex } = useZIndex()\n\nconst zIndex = computed(() => currentZIndex.value)\n\nconst triggerRef = ref<ReferenceElement>()\nconst contentRef = ref<HTMLElement>()\nconst arrowRef = ref<HTMLElement>()\n\nconst open = ref(false)\nconst toggleReason = ref<Event>()\n\nconst { show, hide, hasUpdateHandler } = usePopperModelToggle({\n  indicator: open,\n  toggleReason,\n  processBeforeClosing: props.processBeforeClose,\n  shouldProceed: props.processBeforeOpen,\n})\n\nconst { onOpen, onClose } = useDelayedToggle({\n  showAfter: toRef(props, 'showAfter'),\n  hideAfter: toRef(props, 'hideAfter'),\n  autoClose: toRef(props, 'autoClose'),\n  open: show,\n  close: hide,\n})\n\nconst {\n  update,\n  placement: popperPlacement,\n  floatingStyles,\n} = useFloating(triggerRef, contentRef, {\n  open,\n  middleware: ref([\n    !isEmpty(props.offset) && offsetMiddleware(props.offset),\n    !isEmpty(props.flip) &&\n      flipMiddleware(isBoolean(props.flip) ? undefined : props.flip),\n    !isEmpty(props.shift) &&\n      shiftMiddleware(isBoolean(props.shift) ? undefined : props.shift),\n    arrowMiddleware({\n      element: arrowRef,\n    }),\n  ]) as Ref<Middleware[]>,\n  placement: computed(() => props.placement),\n  strategy: computed(() => props.strategy),\n  transform: false,\n  fit: computed(() => props.fit),\n})\n\nconst controlled = computed(\n  () => isBoolean(props.visible) && !hasUpdateHandler.value\n)\n\nconst updatePopper = (shouldUpdateZIndex = true) => {\n  update()\n  shouldUpdateZIndex && nextZIndex()\n}\n\nconst onBlur = () => {\n  if (!props.virtualTriggering) {\n    onClose()\n  }\n}\n\nconst isFocusInsideContent = () => {\n  return !!contentRef.value?.contains(document.activeElement)\n}\n\nwatch(\n  () => props.disabled,\n  (disabled) => {\n    if (disabled && open.value) {\n      open.value = false\n    }\n  }\n)\n\nonDeactivated(() => open.value && hide())\n\nprovide(popperContextKey, {\n  contentRef,\n  triggerRef,\n  arrowRef,\n  referenceRef: triggerRef,\n\n  controlled,\n  id,\n  open: readonly(open),\n  trigger: toRef(props, 'trigger'),\n  onOpen,\n  onClose,\n  onToggle: (event?: Event) => {\n    if (unref(open)) {\n      onClose(event)\n    } else {\n      onOpen(event)\n    }\n  },\n  onShow: () => {\n    emit('show', toggleReason.value)\n  },\n  onHide: () => {\n    emit('hide', toggleReason.value)\n  },\n  onBeforeShow: () => {\n    emit('before-show', toggleReason.value)\n  },\n  onBeforeHide: () => {\n    emit('before-hide', toggleReason.value)\n  },\n  updatePopper,\n})\n\ndefineExpose(\n  reactive({\n    /**\n     * @description popper component instance\n     */\n    triggerRef,\n    /**\n     * @description tooltip-content component instance\n     */\n    contentRef,\n    /**\n     * @description validate current focus event is trigger inside tooltip-content\n     */\n    isFocusInsideContent,\n    /**\n     * @description update popper component instance\n     */\n    updatePopper,\n    /**\n     * @description expose onOpen function to mange tooltip open state\n     */\n    onOpen,\n    /**\n     * @description expose onOpen function to mange tooltip open state\n     */\n    onClose,\n    /**\n     * @description expose hide function\n     */\n    hide,\n    /**\n     * @description expose current poppper placement\n     */\n    popperPlacement,\n  })\n)\n</script>\n"],"names":["offsetMiddleware","flipMiddleware","shiftMiddleware","arrowMiddleware"],"mappings":"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"}