{"version":3,"file":"content2.mjs","sources":["../../../../../../packages/components/tooltip/src/content.vue"],"sourcesContent":["<template>\r\n  <teleport :disabled=\"!transfer\" :to=\"appendTo\">\r\n    <transition\r\n      :name=\"transition\"\r\n      @after-leave=\"onTransitionLeave\"\r\n      @before-enter=\"onBeforeEnter\"\r\n      @after-enter=\"onAfterShow\"\r\n      @before-leave=\"onBeforeLeave\"\r\n    >\r\n      <sg-popper-content\r\n        v-if=\"shouldRender\"\r\n        v-show=\"shouldShow\"\r\n        ref=\"contentRef\"\r\n        v-bind=\"$attrs\"\r\n        :aria-hidden=\"ariaHidden\"\r\n        :boundaries-padding=\"boundariesPadding\"\r\n        :fallback-placements=\"fallbackPlacements\"\r\n        :gpu-acceleration=\"gpuAcceleration\"\r\n        :offset=\"offset\"\r\n        :verticalOffset=\"verticalOffset\"\r\n        :placement=\"placement\"\r\n        :popper-options=\"popperOptions\"\r\n        :strategy=\"strategy\"\r\n        :effect=\"effect\"\r\n        :enterable=\"enterable\"\r\n        :pure=\"pure\"\r\n        :popper-class=\"popperClass\"\r\n        :popper-style=\"[popperStyle, contentStyle]\"\r\n        :reference-sg=\"referenceEl\"\r\n        :max-width=\"maxWidth\"\r\n        :z-index=\"zIndex\"\r\n        @mouseenter=\"onContentEnter\"\r\n        @mouseleave=\"onContentLeave\"\r\n      >\r\n        <slot />\r\n        <sg-visually-hidden :id=\"id\" role=\"tooltip\">\r\n          {{ ariaLabel }}\r\n        </sg-visually-hidden>\r\n      </sg-popper-content>\r\n    </transition>\r\n  </teleport>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { computed, defineComponent, inject, ref, unref, watch } from 'vue'\r\nimport { onClickOutside } from '@vueuse/core'\r\nimport { SgPopperContent } from '@sgui-plus/components/popper'\r\nimport { SgVisuallyHidden } from '@sgui-plus/components/visual-hidden'\r\nimport { composeEventHandlers } from '@sgui-plus/utils/dom'\r\nimport { useEscapeKeydown, usePopperContainerId } from '@sgui-plus/hooks'\r\n\r\nimport { useTooltipContentProps } from './content'\r\nimport { TOOLTIP_INJECTION_KEY } from './constants'\r\n\r\nexport default defineComponent({\r\n  name: 'SgTooltipContent',\r\n  components: {\r\n    SgPopperContent,\r\n    SgVisuallyHidden,\r\n  },\r\n  inheritAttrs: false,\r\n  props: useTooltipContentProps,\r\n  setup(props) {\r\n    const { selector } = usePopperContainerId()\r\n    const contentRef = ref<InstanceType<typeof SgPopperContent> | null>(null)\r\n    const intermediateOpen = ref(false)\r\n    const entering = ref(false)\r\n    const leaving = ref(false)\r\n    const {\r\n      controlled,\r\n      id,\r\n      open,\r\n      trigger,\r\n      onClose,\r\n      onOpen,\r\n      onShow,\r\n      onHide,\r\n      onBeforeShow,\r\n      onBeforeHide\r\n    } = inject(TOOLTIP_INJECTION_KEY, undefined)!\r\n    const persistentRef = computed(() => {\r\n      // For testing, we would always want the content to be rendered\r\n      // to the DOM, so we need to return true here.\r\n      if (process.env.NODE_ENV === 'test') {\r\n        return true\r\n      }\r\n      return props.persistent\r\n    })\r\n\r\n    const shouldRender = computed(() => {\r\n      if (props.renderContentType === 'show') return true\r\n\r\n      return unref(persistentRef) ? true : unref(open)\r\n    })\r\n\r\n    const shouldShow = computed(() => {\r\n      return props.disabled ? false : unref(open)\r\n    })\r\n\r\n    const appendTo = computed(() => {\r\n      return props.appendTo || selector.value\r\n    })\r\n\r\n    const contentStyle = computed(() => (props.style ?? {}) as any)\r\n\r\n    const ariaHidden = computed(() => !unref(open))\r\n\r\n    useEscapeKeydown(onClose)\r\n\r\n    const onTransitionLeave = () => {\r\n      onHide()\r\n    }\r\n\r\n    const stopWhenControlled = () => {\r\n      if (unref(controlled)) return true\r\n    }\r\n\r\n    const onContentEnter = composeEventHandlers(stopWhenControlled, () => {\r\n      if (props.enterable && unref(trigger) === 'hover') {\r\n        onOpen()\r\n      }\r\n    })\r\n\r\n    const onContentLeave = composeEventHandlers(stopWhenControlled, () => {\r\n      if (unref(trigger) === 'hover') {\r\n        onClose()\r\n      }\r\n    })\r\n\r\n    const onBeforeEnter = () => {\r\n      contentRef.value?.updatePopper?.()\r\n      onBeforeShow?.()\r\n    }\r\n\r\n    const onBeforeLeave = () => {\r\n      onBeforeHide?.()\r\n    }\r\n\r\n    const onAfterShow = () => {\r\n      onShow()\r\n    }\r\n\r\n    let stopHandle: ReturnType<typeof onClickOutside>\r\n\r\n    watch(\r\n      () => unref(open),\r\n      (val) => {\r\n        if (val) {\r\n          stopHandle = onClickOutside(\r\n            computed(() => {\r\n              return contentRef.value?.popperContentRef\r\n            }) as any,\r\n            () => {\r\n              if (unref(controlled)) return\r\n              const $trigger = unref(trigger)\r\n              if ($trigger !== 'hover') {\r\n                onClose()\r\n              }\r\n            }\r\n          )\r\n        } else {\r\n          stopHandle?.()\r\n        }\r\n      },\r\n      {\r\n        flush: 'post',\r\n      }\r\n    )\r\n\r\n    return {\r\n      ariaHidden,\r\n      entering,\r\n      leaving,\r\n      id,\r\n      intermediateOpen,\r\n      contentStyle,\r\n      contentRef,\r\n      shouldRender,\r\n      shouldShow,\r\n      appendTo,\r\n      open,\r\n      onAfterShow,\r\n      onBeforeEnter,\r\n      onBeforeLeave,\r\n      onContentEnter,\r\n      onContentLeave,\r\n      onTransitionLeave,\r\n    }\r\n  },\r\n})\r\n</script>\r\n"],"names":["_resolveComponent","_openBlock","_createBlock","_Teleport","_Transition","_mergeProps","_withCtx","_renderSlot","_createVNode"],"mappings":";;;;;;AAwCa,EAAA,MAAA,4BAAA,GAAAA,gBAAA,CAAA,mBAAA,CAAA,CAAA;SAvC0BC,SAAQ,EAAA,EAAAC,WAAA,CAAAC,QAAA,EAAA;AAAA,IAAA,QAAA,EAAA,CAAA,IAAA,CAAA,QAAA;AAC3C,IAAA,EAAA,EAAA,IAAA,CAAA,QAAA;AAAA,GAAA,EAAA;gBAEGC,UAAa,EAAA;AAAA,MACb,IAAA,EAAA,IAAA,CAAA,UAAA;AAAA,MACA,YAAa,EAAA,IAAA,CAAA,iBAAA;AAAA,MACb,aAAc,EAAA,IAAA,CAAA,aAAA;AAAA,MAAA,YAAA,EAAA,IAAA,CAAA,WAAA;AA+BK,MAAA,aAAA,EAAA,IAAA,CAAA,aAAA;AAAA,KAAA,EAAA;;4CA1BdH,SAAY,EAAA,EAAAC,WAAA,CAAA,4BAAA,EAAAG,UAAA,CAAA;AAAA,UACR,GAAA,EAAA,CAAA;AAAA,UACP,GAAA,EAAA,YAAA;AAAA,SACA,EAAA,IAAA,CAAA,MAAA,EAAA;AAAA,UACA,aAAA,EAAA,IAAA,CAAA,UAAA;AAAA,UACA,oBAAkB,EAAA,IAAA,CAAA,iBAAA;AAAA,UAClB,qBAAc,EAAA,IAAA,CAAA,kBAAA;AAAA,UACd,kBAAgB,EAAA,IAAA,CAAA,eAAA;AAAA,UAChB,MAAW,EAAA,IAAA,CAAA,MAAA;AAAA,UACX,gBAAc,IAAE,CAAA,cAAA;AAAA,UAChB,SAAU,EAAA,IAAA,CAAA,SAAA;AAAA,UACV,kBAAQ,IAAM,CAAA,aAAA;AAAA,UACd,UAAS,IAAE,CAAA,QAAA;AAAA,UACX,MAAM,EAAA,IAAA,CAAA,MAAA;AAAA,UACN,SAAc,EAAA,IAAA,CAAA,SAAA;AAAA,UACd,IAAA,EAAA,IAAA,CAAA,IAAA;AAAA,UACA,cAAc,EAAA,IAAA,CAAA,WAAA;AAAA,UACd,gBAAW,CAAQ,IAAA,CAAA,WAAA,EAAA,IAAA,CAAA,YAAA,CAAA;AAAA,UACnB,cAAS,EAAA,IAAA,CAAA,WAAA;AAAA,UACT,aAAU,IAAE,CAAA,QAAA;AAAA,UACZ,SAAY,EAAA,IAAA,CAAA,MAAA;AAAA,UAAA,YAAA,EAAA,IAAA,CAAA,cAAA;AAEL,UAAA,YAAA,EAAA,IAAA,CAAA,cAAA;AAAA,SAAR,CAAA,EAAA;AAAA,UAAA,OAAA,EACAC,OAEqB,CAAA,MAAA;AAAA,YAAAC,UAAA,CAFI,IAAE,CAAA,MAAA,EAAA,SAAA,CAAA;AAAA,YAAAC,WAAA,CAAO,6BAAS,EAAA;AAAA,cAAA,EAAA,EAAA,IAAA,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;"}