{"version":3,"file":"tooltip.mjs","sources":["../../../components/tooltip/tooltip.tsx"],"sourcesContent":["import { computed, defineComponent, onMounted, ref, toRefs, watch, getCurrentInstance } from 'vue';\nimport { omit, isFunction } from 'lodash-es';\n\nimport props from './props';\nimport popupProps from '../popup/props';\nimport Popup, { PopupVisibleChangeContext } from '../popup';\nimport { useVModel, useContent, useTNodeJSX, usePrefixClass } from '@tdesign/shared-hooks';\n\nimport { useMouse } from './utils';\n\nexport default defineComponent({\n  name: 'TTooltip',\n  props: {\n    ...popupProps,\n    ...props,\n  },\n  setup(props, ctx) {\n    const timer = ref(null);\n    const popupRef = ref(null);\n\n    const { visible, modelValue } = toRefs(props);\n    const [innerVisible, setInnerVisible] = useVModel(\n      visible,\n      modelValue,\n      props.defaultVisible,\n      props.onVisibleChange,\n      'visible',\n    );\n    const vm = getCurrentInstance();\n    const innerTooltipVisible = ref(props.visible || props.defaultVisible);\n    const classPrefix = usePrefixClass();\n    const renderTNodeJSX = useTNodeJSX();\n    const renderContent = useContent();\n    const { x } = useMouse();\n    const offsetX = ref(x.value);\n\n    onMounted(() => {\n      if (props.duration && innerTooltipVisible.value) {\n        timer.value = setTimeout(() => {\n          setInnerVisible(false, {});\n          clearTimeout(timer.value);\n          timer.value = null;\n        }, props.duration);\n      }\n    });\n\n    const onTipVisibleChange = (val: boolean, ctx?: PopupVisibleChangeContext) => {\n      // 因 props={this.getPopupProps()} 已经透传 onVisibleChange props，此处不再需要使用 emitEvent\n      if (timer.value && ctx?.trigger !== 'document') return;\n      if (val) {\n        offsetX.value = x.value;\n      }\n      setInnerVisible(val, ctx);\n    };\n\n    const tooltipOverlayClassName = computed(() => {\n      return [\n        `${classPrefix.value}-tooltip`,\n        { [`${classPrefix.value}-tooltip--${props.theme}`]: props.theme },\n        props.overlayClassName,\n      ];\n    });\n\n    const popupProps = computed(() => ({\n      ...(vm?.vnode.props || {}),\n      placement: props.placement === 'mouse' ? 'bottom-left' : props.placement,\n      showArrow: props.placement === 'mouse' ? false : props.showArrow,\n      overlayClassName: tooltipOverlayClassName.value,\n      onVisibleChange: onTipVisibleChange,\n      disabled: props.disabled,\n    }));\n\n    const overlayInnerStyle = computed(() => {\n      if (props.placement !== 'mouse' || offsetX.value === 0) {\n        return props.overlayInnerStyle;\n      }\n      const offsetStyle = (triggerEl: HTMLElement) => ({\n        transform: `translateX(${offsetX.value - triggerEl.getBoundingClientRect().left}px)`,\n      });\n      if (props.overlayInnerStyle) {\n        return (triggerEl: HTMLElement, popupEl: HTMLElement) => ({\n          ...offsetStyle(triggerEl),\n          ...(isFunction(props.overlayInnerStyle)\n            ? props.overlayInnerStyle(triggerEl, popupEl)\n            : props.overlayInnerStyle),\n        });\n      }\n      return offsetStyle;\n    });\n\n    watch(\n      () => innerTooltipVisible.value,\n      () => {\n        if (timer.value && !innerTooltipVisible.value) {\n          clearTimeout(timer.value);\n          timer.value = null;\n        }\n      },\n    );\n\n    const onPopupUpdate = () => {\n      popupRef.value?.update?.();\n    };\n\n    /**\n     * 透传更新popup实例方法，供外部调用\n     */\n    ctx.expose({\n      updatePopper: onPopupUpdate,\n    });\n    return () => {\n      const content = renderTNodeJSX('content');\n      return (\n        <Popup\n          {...omit(popupProps.value, ['content', 'default'])}\n          ref={popupRef}\n          hideEmptyPopup={true}\n          overlayInnerStyle={overlayInnerStyle.value}\n          visible={innerVisible.value}\n          v-slots={!content && !props.content ? {} : { content: () => content }}\n        >\n          {renderContent('default', 'triggerElement')}\n        </Popup>\n      );\n    };\n  },\n});\n"],"names":["defineComponent","name","props","_objectSpread","popupProps","setup","ctx","timer","ref","popupRef","_toRefs","toRefs","visible","modelValue","_useVModel","useVModel","defaultVisible","onVisibleChange","_useVModel2","_slicedToArray","innerVisible","setInnerVisible","vm","getCurrentInstance","innerTooltipVisible","classPrefix","usePrefixClass","renderTNodeJSX","useTNodeJSX","renderContent","useContent","_useMouse","useMouse","x","offsetX","value","onMounted","duration","setTimeout","clearTimeout","onTipVisibleChange","val","trigger","tooltipOverlayClassName","computed","concat","_defineProperty","theme","overlayClassName","vnode","placement","showArrow","disabled","overlayInnerStyle","offsetStyle","triggerEl","transform","getBoundingClientRect","left","popupEl","isFunction","watch","onPopupUpdate","_popupRef$value","_popupRef$value$updat","update","call","expose","updatePopper","content","_createVNode","Popup","_mergeProps","omit","_default"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,eAAeA,eAAgB,CAAA;AAC7BC,EAAAA,IAAM,EAAA,UAAA;EACNC,KAAO,EAAAC,aAAA,CAAAA,aAAA,KACFC,UAAA,CAAA,EACAF,KAAA,CACL;AACAG,EAAAA,KAAA,WAAAA,KAAAA,CAAMH,QAAOI,GAAK,EAAA;AACV,IAAA,IAAAC,KAAA,GAAQC,IAAI,IAAI,CAAA,CAAA;AAChB,IAAA,IAAAC,QAAA,GAAWD,IAAI,IAAI,CAAA,CAAA;AAEzB,IAAA,IAAAE,OAAA,GAAgCC,OAAOT,MAAK,CAAA;MAApCU,OAAA,GAAAF,OAAA,CAAAE,OAAA;MAASC,UAAW,GAAAH,OAAA,CAAXG,UAAW,CAAA;AACtB,IAAA,IAAAC,UAAA,GAAkCC,SAAA,CACtCH,OAAA,EACAC,UAAA,EACAX,MAAM,CAAAc,cAAA,EACNd,MAAM,CAAAe,eAAA,EACN,SACF,CAAA;MAAAC,WAAA,GAAAC,cAAA,CAAAL,UAAA,EAAA,CAAA,CAAA;AANOM,MAAAA,YAAc,GAAAF,WAAA,CAAA,CAAA,CAAA;AAAAG,MAAAA,eAAe,GAAAH,WAAA,CAAA,CAAA,CAAA,CAAA;AAOpC,IAAA,IAAMI,KAAKC,kBAAmB,EAAA,CAAA;IAC9B,IAAMC,mBAAsB,GAAAhB,GAAA,CAAIN,MAAM,CAAAU,OAAA,IAAWV,OAAMc,cAAc,CAAA,CAAA;AACrE,IAAA,IAAMS,cAAcC,cAAe,EAAA,CAAA;AACnC,IAAA,IAAMC,iBAAiBC,WAAY,EAAA,CAAA;AACnC,IAAA,IAAMC,gBAAgBC,UAAW,EAAA,CAAA;AAC3B,IAAA,IAAAC,SAAA,GAAQC,QAAS,EAAA;MAAfC,CAAE,GAAAF,SAAA,CAAFE,CAAE,CAAA;AACJ,IAAA,IAAAC,OAAA,GAAU1B,GAAI,CAAAyB,CAAA,CAAEE,KAAK,CAAA,CAAA;AAE3BC,IAAAA,SAAA,CAAU,YAAM;AACVlC,MAAAA,IAAAA,MAAAA,CAAMmC,QAAY,IAAAb,mBAAA,CAAoBW,KAAO,EAAA;AACzC5B,QAAAA,KAAA,CAAA4B,KAAA,GAAQG,WAAW,YAAM;AACbjB,UAAAA,eAAA,CAAA,KAAA,EAAO,EAAE,CAAA,CAAA;AACzBkB,UAAAA,YAAA,CAAahC,MAAM4B,KAAK,CAAA,CAAA;UACxB5B,KAAA,CAAM4B,KAAQ,GAAA,IAAA,CAAA;AAChB,SAAA,EAAGjC,OAAMmC,QAAQ,CAAA,CAAA;AACnB,OAAA;AACF,KAAC,CAAA,CAAA;IAEK,IAAAG,kBAAA,GAAqB,SAArBA,kBAAAA,CAAsBC,GAAA,EAAcnC,IAAoC,EAAA;AAExE,MAAA,IAAAC,KAAA,CAAM4B,KAAS7B,IAAAA,CAAAA,IAAAA,KAAAA,IAAAA,IAAAA,IAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAAA,CAAKoC,OAAY,MAAA,UAAA,EAAY,OAAA;AAChD,MAAA,IAAID,GAAK,EAAA;AACPP,QAAAA,OAAA,CAAQC,QAAQF,CAAE,CAAAE,KAAA,CAAA;AACpB,OAAA;AACAd,MAAAA,eAAA,CAAgBoB,KAAKnC,IAAG,CAAA,CAAA;KAC1B,CAAA;AAEM,IAAA,IAAAqC,uBAAA,GAA0BC,SAAS,YAAM;AACtC,MAAA,OAAA,CAAAC,EAAAA,CAAAA,MAAA,CACFpB,WAAY,CAAAU,KAAA,EAAAW,UAAAA,CAAAA,EAAAA,eAAA,CAAAD,EAAAA,EAAAA,EAAAA,CAAAA,MAAA,CACTpB,WAAA,CAAYU,4BAAkBjC,MAAM,CAAA6C,KAAA,CAAU7C,EAAAA,OAAM6C,KAAM,CAChE7C,EAAAA,MAAM,CAAA8C,gBAAA,CACR,CAAA;AACF,KAAC,CAAA,CAAA;IAEK5C,IAAAA,WAAAA,GAAawC,SAAS,YAAA;AAAA,MAAA,OAAAzC,aAAA,CAAAA,aAAA,CACtB,EAAA,EAAA,CAAAmB,EAAA,KAAAA,IAAAA,IAAAA,EAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAA,CAAI2B,KAAM,CAAA/C,KAAA,KAAS,EAAC,CAAA,EAAA,EAAA,EAAA;QACxBgD,SAAWhD,EAAAA,MAAAA,CAAMgD,SAAc,KAAA,OAAA,GAAU,gBAAgBhD,MAAM,CAAAgD,SAAA;QAC/DC,SAAWjD,EAAAA,MAAAA,CAAMgD,SAAc,KAAA,OAAA,GAAU,QAAQhD,MAAM,CAAAiD,SAAA;QACvDH,kBAAkBL,uBAAwB,CAAAR,KAAA;AAC1ClB,QAAAA,eAAiB,EAAAuB,kBAAA;QACjBY,UAAUlD,MAAM,CAAAkD,QAAAA;AAAA,OAAA,CAAA,CAAA;AAAA,KAChB,CAAA,CAAA;AAEI,IAAA,IAAAC,iBAAA,GAAoBT,SAAS,YAAM;MACvC,IAAI1C,MAAM,CAAAgD,SAAA,KAAc,OAAW,IAAAhB,OAAA,CAAQC,UAAU,CAAG,EAAA;QACtD,OAAOjC,MAAM,CAAAmD,iBAAA,CAAA;AACf,OAAA;AACM,MAAA,IAAAC,WAAA,GAAc,SAAdA,WAAAA,CAAeC,SAA4B,EAAA;QAAA,OAAA;AAC/CC,UAAAA,gCAAyBtB,OAAA,CAAQC,KAAQ,GAAAoB,SAAA,CAAUE,uBAAwB,CAAAC,IAAA,EAAA,KAAA,CAAA;SAC7E,CAAA;OAAA,CAAA;MACA,IAAIxD,OAAMmD,iBAAmB,EAAA;QACpB,OAAA,UAACE,WAAwBI,OAA0B,EAAA;UAAA,OAAAxD,aAAA,CAAAA,aAAA,CACrDmD,EAAAA,EAAAA,YAAYC,SAAS,CAAA,CAAA,EACpBK,UAAW1D,CAAAA,MAAAA,CAAMmD,iBAAiB,CAAA,GAClCnD,OAAMmD,iBAAkB,CAAAE,SAAA,EAAWI,OAAO,CAAA,GAC1CzD,MAAM,CAAAmD,iBAAA,CAAA,CAAA;SACZ,CAAA;AACF,OAAA;AACO,MAAA,OAAAC,WAAA,CAAA;AACT,KAAC,CAAA,CAAA;AAEDO,IAAAA,KAAA,CACE,YAAA;MAAA,OAAMrC,mBAAoB,CAAAW,KAAA,CAAA;AAAA,KAAA,EAC1B,YAAM;MACJ,IAAI5B,KAAM,CAAA4B,KAAA,IAAS,CAACX,mBAAA,CAAoBW,KAAO,EAAA;AAC7CI,QAAAA,YAAA,CAAahC,MAAM4B,KAAK,CAAA,CAAA;QACxB5B,KAAA,CAAM4B,KAAQ,GAAA,IAAA,CAAA;AAChB,OAAA;AACF,KACF,CAAA,CAAA;AAEA,IAAA,IAAM2B,gBAAgB,SAAhBA,gBAAsB;MAAA,IAAAC,eAAA,EAAAC,qBAAA,CAAA;MAC1B,CAAAD,eAAA,GAAAtD,QAAA,CAAS0B,0EAAT4B,eAAA,CAAgBE,MAAS,cAAAD,qBAAA,KAAA,KAAA,CAAA,IAAzBA,qBAAA,CAAAE,IAAA,CAAAH,eAAyB,CAAA,CAAA;KAC3B,CAAA;IAKAzD,GAAA,CAAI6D,MAAO,CAAA;AACTC,MAAAA,YAAc,EAAAN,aAAAA;AAChB,KAAC,CAAA,CAAA;AACD,IAAA,OAAO,YAAM;AACL,MAAA,IAAAO,QAAA,GAAU1C,eAAe,SAAS,CAAA,CAAA;AACxC,MAAA,OAAA2C,WAAA,CAAAC,KAAA,EAAAC,UAAA,CAEQC,IAAA,CAAKrE,WAAW,CAAA+B,KAAA,EAAO,CAAC,SAAW,EAAA,SAAS,CAAC,CAAA,EAAA;AAAA,QAAA,KAAA,EAC5C1B,QACL;AAAA,QAAA,gBAAA,EAAgB,IAChB;QAAA,mBAAmB4C,EAAAA,kBAAkBlB,KACrC;AAAA,QAAA,SAAA,EAASf,YAAa,CAAAe,KAAAA;AAAA,OAAA,CAAA,EAAAhC,aAAA,CAAA;AAAA,QAAA,SAAA,EAAA,SAAAuE,QAAA,GAAA;AAAA,UAAA,OAAA,CAGrB7C,cAAc,SAAW,EAAA,gBAAgB;;OAFjC,EAAA,CAACwC,QAAA,IAAW,CAACnE,MAAAA,CAAMmE,UAAU,EAAC,GAAI;QAAEA,OAAA,EAAS,SAATA,OAAAA,GAAA;AAAA,UAAA,OAAeA,QAAQ,CAAA;AAAA,SAAA;OAAA,CAAA,CAAA,CAAA;KAK1E,CAAA;AACF,GAAA;AACF,CAAC,CAAA;;;;"}