{"version":3,"file":"useSliderTooltip.mjs","sources":["../../../../components/slider/hooks/useSliderTooltip.tsx"],"sourcesContent":["import { computed, ComputedRef, ref, Ref } from 'vue';\n\nimport { formatLabel } from '@tdesign/common-js/slider/utils';\nimport { useTNodeJSX } from '@tdesign/shared-hooks';\n\nimport type { TooltipProps } from '../../tooltip';\nimport type { TdSliderProps } from '../type';\n\nconst initialProps: TooltipProps & { overlayClassName: string } = {\n  visible: false,\n  trigger: 'hover',\n  showArrow: true,\n  overlayInnerStyle: undefined,\n  overlayClassName: undefined,\n  attach: 'body',\n  theme: 'default',\n};\n\nexport interface TooltipConfig {\n  tooltipProps: boolean | TooltipProps;\n  vertical: boolean;\n  value: number;\n  label: TdSliderProps['label'];\n  position: string;\n  range: boolean;\n}\n\n/**\n * 聚合管理滑块tooltip内容hook\n * @param tooltipProps tooltip属性配置\n * @param vertical 是否垂直展示\n * @returns\n */\nexport const useSliderTooltip = (tooltipConfig: Ref<TooltipConfig>) => {\n  const tooltipRef = ref();\n  const showTooltip = computed({\n    get() {\n      return !tooltipConfig.value.tooltipProps === false;\n    },\n    set(val) {\n      return val;\n    },\n  });\n  const normalizeProps = ref<TooltipProps & { overlayClassName: string }>({ ...initialProps });\n  /** 开关显示tooltip */\n  const toggleTooltip = (toState: boolean) => {\n    if (!showTooltip.value) return;\n    normalizeProps.value.visible = toState;\n  };\n\n  const renderTNodeJSX = useTNodeJSX();\n\n  /** 合并最终tooltip属性，以外部同名属性覆盖初始化属性 */\n  const validProps = computed(() => {\n    const { vertical, tooltipProps, label, value, position, range } = tooltipConfig.value;\n    const placement = vertical ? 'right' : 'top';\n\n    let content = (() => {\n      if (label === true) {\n        return String(value);\n      }\n      if (typeof label === 'string') {\n        return formatLabel(label, value);\n      }\n      return renderTNodeJSX('label', {\n        params: range\n          ? {\n              value,\n              position,\n            }\n          : { value },\n      });\n    })();\n\n    if (tooltipProps instanceof Object) {\n      if (!tooltipProps?.placement) {\n        normalizeProps.value.placement = placement;\n      }\n      if (tooltipProps.content) {\n        content = tooltipProps.content;\n      }\n      // @ts-ignore\n      return { ...normalizeProps.value, ...tooltipProps, content };\n    }\n    return { ...normalizeProps.value, placement, content };\n  });\n\n  return {\n    tooltipRef,\n    tooltipProps: validProps as ComputedRef<TdSliderProps['tooltipProps']>,\n    toggleTooltip,\n    showTooltip,\n  };\n};\n"],"names":["initialProps","visible","trigger","showArrow","overlayInnerStyle","overlayClassName","attach","theme","useSliderTooltip","tooltipConfig","tooltipRef","ref","showTooltip","computed","get","value","tooltipProps","set","val","normalizeProps","_objectSpread","toggleTooltip","toState","renderTNodeJSX","useTNodeJSX","validProps","_tooltipConfig$value","vertical","label","position","range","placement","content","String","formatLabel","params","Object"],"mappings":"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"}