{"version":3,"file":"content.mjs","sources":["../../../../../../../packages/components/popper/src/content.vue"],"sourcesContent":["<template>\n  <div\n    ref=\"contentRef\"\n    v-bind=\"contentAttrs\"\n    :style=\"contentStyle\"\n    :class=\"contentClass\"\n    tabindex=\"-1\"\n    @mouseenter=\"(e) => $emit('mouseenter', e)\"\n    @mouseleave=\"(e) => $emit('mouseleave', e)\"\n  >\n    <el-focus-trap\n      :trapped=\"trapped\"\n      :trap-on-focus-in=\"true\"\n      :focus-trap-el=\"contentRef\"\n      :focus-start-el=\"focusStartRef\"\n      @focus-after-trapped=\"onFocusAfterTrapped\"\n      @focus-after-released=\"onFocusAfterReleased\"\n      @focusin=\"onFocusInTrap\"\n      @focusout-prevented=\"onFocusoutPrevented\"\n      @release-requested=\"onReleaseRequested\"\n    >\n      <slot />\n    </el-focus-trap>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, onBeforeUnmount, onMounted, provide, unref, watch } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { NOOP, isElement } from '@hd-front-end/utils'\nimport ElFocusTrap from '@hd-front-end/components/focus-trap'\nimport { formItemContextKey } from '@hd-front-end/components/form'\nimport { POPPER_CONTENT_INJECTION_KEY } from './constants'\nimport { popperContentEmits, popperContentProps } from './content'\nimport {\n  usePopperContent,\n  usePopperContentDOM,\n  usePopperContentFocusTrap,\n} from './composables'\n\nimport type { WatchStopHandle } from 'vue'\n\ndefineOptions({\n  name: 'ElPopperContent',\n})\n\nconst emit = defineEmits(popperContentEmits)\n\nconst props = defineProps(popperContentProps)\n\nconst {\n  focusStartRef,\n  trapped,\n\n  onFocusAfterReleased,\n  onFocusAfterTrapped,\n  onFocusInTrap,\n  onFocusoutPrevented,\n  onReleaseRequested,\n} = usePopperContentFocusTrap(props, emit)\n\nconst { attributes, arrowRef, contentRef, styles, instanceRef, role, update } =\n  usePopperContent(props)\n\nconst {\n  ariaModal,\n  arrowStyle,\n  contentAttrs,\n  contentClass,\n  contentStyle,\n  updateZIndex,\n} = usePopperContentDOM(props, {\n  styles,\n  attributes,\n  role,\n})\n\nconst formItemContext = inject(formItemContextKey, undefined)\n\nprovide(POPPER_CONTENT_INJECTION_KEY, {\n  arrowStyle,\n  arrowRef,\n})\n\nif (formItemContext) {\n  // disallow auto-id from inside popper content\n  provide(formItemContextKey, {\n    ...formItemContext,\n    addInputId: NOOP,\n    removeInputId: NOOP,\n  })\n}\n\nlet triggerTargetAriaStopWatch: WatchStopHandle | undefined = undefined\n\nconst updatePopper = (shouldUpdateZIndex = true) => {\n  update()\n  shouldUpdateZIndex && updateZIndex()\n}\n\nconst togglePopperAlive = () => {\n  updatePopper(false)\n  if (props.visible && props.focusOnShow) {\n    trapped.value = true\n  } else if (props.visible === false) {\n    trapped.value = false\n  }\n}\n\nonMounted(() => {\n  watch(\n    () => props.triggerTargetEl,\n    (triggerTargetEl, prevTriggerTargetEl) => {\n      triggerTargetAriaStopWatch?.()\n      triggerTargetAriaStopWatch = undefined\n\n      const el = unref(triggerTargetEl || contentRef.value)\n      const prevEl = unref(prevTriggerTargetEl || contentRef.value)\n\n      if (isElement(el)) {\n        triggerTargetAriaStopWatch = watch(\n          [role, () => props.ariaLabel, ariaModal, () => props.id],\n          (watches) => {\n            ;['role', 'aria-label', 'aria-modal', 'id'].forEach((key, idx) => {\n              isNil(watches[idx])\n                ? el.removeAttribute(key)\n                : el.setAttribute(key, watches[idx]!)\n            })\n          },\n          { immediate: true }\n        )\n      }\n      if (prevEl !== el && isElement(prevEl)) {\n        ;['role', 'aria-label', 'aria-modal', 'id'].forEach((key) => {\n          prevEl.removeAttribute(key)\n        })\n      }\n    },\n    { immediate: true }\n  )\n\n  watch(() => props.visible, togglePopperAlive, { immediate: true })\n})\n\nonBeforeUnmount(() => {\n  triggerTargetAriaStopWatch?.()\n  triggerTargetAriaStopWatch = undefined\n})\n\ndefineExpose({\n  /**\n   * @description popper content element\n   */\n  popperContentRef: contentRef,\n  /**\n   * @description popperjs instance\n   */\n  popperInstanceRef: instanceRef,\n  /**\n   * @description method for updating popper\n   */\n  updatePopper,\n\n  /**\n   * @description content style\n   */\n  contentStyle,\n})\n</script>\n"],"names":["_openBlock","_createElementBlock","_mergeProps","_unref","$emit","_createVNode","_renderSlot"],"mappings":"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"}