{"version":3,"file":"tooltip2.mjs","sources":["../../../../../../packages/components/tooltip/src/tooltip.vue"],"sourcesContent":["<template>\r\n  <sg-popper ref=\"popperRef\">\r\n    <sg-tooltip-trigger\r\n      :disabled=\"disabled\"\r\n      :trigger=\"trigger\"\r\n      :virtual-ref=\"virtualRef\"\r\n      :virtual-triggering=\"virtualTriggering\"\r\n    >\r\n      <slot v-if=\"$slots.default\" />\r\n    </sg-tooltip-trigger>\r\n    <sg-tooltip-content\r\n      ref=\"contentRef\"\r\n      :aria-label=\"ariaLabel\"\r\n      :boundaries-padding=\"boundariesPadding\"\r\n      :content=\"content\"\r\n      :disabled=\"disabled\"\r\n      :effect=\"theme\"\r\n      :enterable=\"enterable\"\r\n      :fallback-placements=\"fallbackPlacements\"\r\n      :hide-after=\"hideAfter\"\r\n      :gpu-acceleration=\"gpuAcceleration\"\r\n      :offset=\"offset\"\r\n      :verticalOffset=\"verticalOffset\"\r\n      :persistent=\"persistent\"\r\n      :popper-class=\"dropClassName\"\r\n      :popper-style=\"popperStyle\"\r\n      :placement=\"placement\"\r\n      :popper-options=\"popperOptions\"\r\n      :pure=\"pure\"\r\n      :raw-content=\"rawContent\"\r\n      :reference-sg=\"referenceEl\"\r\n      :show-after=\"compatShowAfter\"\r\n      :strategy=\"strategy\"\r\n      :transfer=\"transfer\"\r\n      :transition=\"transition\"\r\n      :max-width=\"maxWidth\"\r\n      :z-index=\"zIndex\"\r\n      :render-content-type=\"renderContentType\"\r\n    >\r\n      <slot name=\"content\">\r\n        <span v-if=\"rawContent\" v-html=\"content\"></span>\r\n        <span v-else>{{ limitContent }}</span>\r\n      </slot>\r\n      <sg-popper-arrow v-if=\"compatShowArrow\" :arrow-offset=\"arrowOffset\" />\r\n    </sg-tooltip-content>\r\n  </sg-popper>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport {\r\n  defineComponent,\r\n  computed,\r\n  ref,\r\n  provide,\r\n  toRef,\r\n  readonly,\r\n  unref,\r\n} from 'vue'\r\nimport {\r\n  SgPopper,\r\n  SgPopperArrow,\r\n} from '@sgui-plus/components/popper'\r\n\r\nimport { isBool } from '@sgui-plus/utils/util'\r\nimport {\r\n  usePopperContainer,\r\n  useId,\r\n  useDelayedToggle,\r\n} from '@sgui-plus/hooks'\r\nimport SgTooltipContent from './content.vue'\r\nimport SgTooltipTrigger from './trigger.vue'\r\nimport {\r\n  useTooltipProps,\r\n  useTooltipEmits,\r\n  useTooltipModelToggle,\r\n} from './tooltip'\r\nimport { TOOLTIP_INJECTION_KEY } from './constants'\r\n\r\nexport default defineComponent({\r\n  name: 'SgTooltip',\r\n  components: {\r\n    SgPopper,\r\n    SgPopperArrow,\r\n    SgTooltipContent,\r\n    SgTooltipTrigger,\r\n  },\r\n  props: useTooltipProps,\r\n  emits: useTooltipEmits,\r\n  setup(props, { emit }) {\r\n    usePopperContainer()\r\n\r\n    const compatShowAfter = computed(() => {\r\n      return props.openDelay || (props.showAfter as number)\r\n    })\r\n    const compatShowArrow = computed(() => {\r\n      return isBool(props.visibleArrow) ? props.visibleArrow : props.showArrow\r\n    })\r\n\r\n    const id = useId()\r\n    const popperRef = ref<InstanceType<typeof SgPopper> | null>(null)\r\n    const contentRef = ref<any>()\r\n\r\n    const updatePopper = () => {\r\n      const popperComponent = unref(popperRef)\r\n      if (popperComponent) {\r\n        popperComponent.popperInstanceRef?.update()\r\n      }\r\n    }\r\n    const open = ref(false)\r\n\r\n    const { show, hide } = useTooltipModelToggle({\r\n      indicator: open,\r\n    })\r\n\r\n    const limitContent = computed(() => {\r\n      const isOver = props.content.length > props.maxLength\r\n      return isOver ? props.content.substring(0, props.maxLength) + '...' : props.content\r\n    })\r\n\r\n    const { onOpen, onClose } = useDelayedToggle({\r\n      showAfter: compatShowAfter,\r\n      hideAfter: toRef(props, 'hideAfter'),\r\n      autoClose: props.autoHide ? toRef(props, 'hideDelay') : ref(0),\r\n      open: show,\r\n      close: hide,\r\n    })\r\n\r\n    const isFocusInsideContent = () => {\r\n      const popperContent: HTMLElement | undefined =\r\n        contentRef.value?.contentRef?.popperContentRef\r\n      return popperContent && popperContent.contains(document.activeElement)\r\n    }\r\n\r\n    const controlled = computed(() => isBool(props.visible))\r\n\r\n    provide(TOOLTIP_INJECTION_KEY, {\r\n      controlled,\r\n      id,\r\n      open: readonly(open),\r\n      trigger: toRef(props, 'trigger'),\r\n      onOpen,\r\n      onClose,\r\n      onToggle: () => {\r\n        if (unref(open)) {\r\n          onClose()\r\n        } else {\r\n          onOpen()\r\n        }\r\n      },\r\n      onShow: () => {\r\n        emit('show')\r\n      },\r\n      onHide: () => {\r\n        emit('hide')\r\n      },\r\n      onBeforeShow: () => {\r\n        emit('before-show')\r\n      },\r\n      onBeforeHide: () => {\r\n        emit('before-hide')\r\n      },\r\n      updatePopper,\r\n    })\r\n\r\n    return {\r\n      limitContent,\r\n      compatShowAfter,\r\n      compatShowArrow,\r\n      popperRef,\r\n      contentRef,\r\n      isFocusInsideContent,\r\n      open,\r\n      hide,\r\n      updatePopper,\r\n      onOpen,\r\n      onClose,\r\n    }\r\n  },\r\n})\r\n</script>\r\n"],"names":["_resolveComponent","_openBlock","_createBlock","_withCtx","_createVNode","_renderSlot","_createCommentVNode","_createElementBlock","_toDisplayString"],"mappings":"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"}