{"version":3,"file":"guide.mjs","sources":["../../../components/guide/guide.tsx"],"sourcesContent":["import { defineComponent, computed, nextTick, onMounted, ref, toRefs, watch, h, Teleport } from 'vue';\nimport { isFunction } from 'lodash-es';\nimport props from './props';\nimport { GuideCrossProps } from './types';\nimport { TdGuideProps, GuideStep } from './type';\nimport { scrollToParentVisibleArea, getRelativePosition, getTargetElm, scrollToElm } from './utils';\nimport setStyle from '@tdesign/common-js/utils/setStyle';\nimport { addClass, removeClass, isFixed, getWindowScroll, isServer } from '@tdesign/shared-utils';\nimport { useVModel, useConfig, useTNodeJSX, usePrefixClass, useResize } from '@tdesign/shared-hooks';\n\nimport Button from '../button';\nimport Popup, { PopupProps } from '../popup';\n\nexport default defineComponent({\n  name: 'TGuide',\n  props,\n  setup(props: TdGuideProps, context) {\n    const renderTNodeJSX = useTNodeJSX();\n    const COMPONENT_NAME = usePrefixClass('guide');\n    const LOCK_CLASS = usePrefixClass('guide--lock');\n    const { globalConfig } = useConfig('guide');\n\n    const { current, modelValue, hideCounter, hidePrev, hideSkip, steps, zIndex } = toRefs(props);\n    const [innerCurrent, setInnerCurrent] = useVModel(\n      current,\n      modelValue,\n      props.defaultCurrent,\n      props.onChange,\n      'current',\n    );\n\n    // 覆盖层，用于覆盖所有元素\n    const overlayLayerRef = ref<HTMLElement>();\n    // 高亮层，用于高亮元素\n    const highlightLayerRef = ref<HTMLElement>();\n    // 提示层，用于高亮元素\n    const referenceLayerRef = ref<HTMLElement>();\n    // 当前高亮的元素\n    const currentHighlightLayerElm = ref<HTMLElement>();\n    // dialog wrapper ref\n    const dialogWrapperRef = ref<HTMLElement>();\n    // dialog ref\n    const dialogTooltipRef = ref<HTMLElement>();\n    // ! popup ref 不确定这里的类型是否完全正确\n    const popupTooltipRef = ref();\n    // 是否开始展示\n    const actived = ref<boolean>(false);\n    // 步骤总数\n    const stepsTotal = computed(() => steps.value.length);\n    // 当前步骤的信息\n    const currentStepInfo = computed<GuideStep>(() => steps.value[innerCurrent.value]);\n    // 当前是否为 popup\n    const isPopup = computed(() => getCurrentCrossProps('mode') === 'popup');\n    // 当前元素位置状态\n    const currentElmIsFixed = computed(() => isFixed(currentHighlightLayerElm.value || document.body));\n    // 获取当前步骤的属性值 用户当前步骤设置 > 用户组件设置的\n    const getCurrentCrossProps = <Key extends keyof GuideCrossProps>(propsName: Key) =>\n      currentStepInfo.value[propsName] ?? props[propsName];\n    // 获取当前步骤的用户设定的高亮内容\n    const currentCustomHighlightContent = computed(() => {\n      const { highlightContent } = currentStepInfo.value;\n\n      let node: any = highlightContent;\n      if (isFunction(highlightContent)) {\n        // 支持函数\n        node = highlightContent(hWithParams());\n      } else if (context.slots.highlightContent) {\n        // 支持插槽\n        node = context.slots.highlightContent(hWithParams());\n      } else if (context.slots['highlight-content']) {\n        // 支持插槽\n        node = context.slots['highlight-content'](hWithParams());\n      } else if (!!highlightContent) {\n        // 支持组件\n        node = <node />;\n      }\n\n      // 给自定义元素添加类名\n      if (node) {\n        if (!node.props) node.props = {};\n        node.props.class = node.props.class || '';\n      }\n      return node;\n    });\n\n    // 是否展示高亮区域\n    const showCustomHighlightContent = computed(() => Boolean(currentCustomHighlightContent.value && isPopup.value));\n    //\n    const popupVisible = ref(false);\n    const hWithParams = (params: Record<string, any> = { currentStepInfo: currentStepInfo.value }) => {\n      const newH = new Function('return ' + h.toString())();\n      return Object.assign({}, newH, params);\n    };\n\n    // 设置高亮层的位置\n    const setHighlightLayerPosition = (highlightLayer: HTMLElement, isReference = false) => {\n      // 这里预留了一个相对元素的功能，暂未使用，也是这里导致了 fix #2111\n      let { top, left } = getRelativePosition(currentHighlightLayerElm.value);\n      let { width, height } = currentHighlightLayerElm.value.getBoundingClientRect();\n      const highlightPadding = getCurrentCrossProps('highlightPadding');\n\n      if (isPopup.value) {\n        width += highlightPadding * 2;\n        height += highlightPadding * 2;\n        top -= highlightPadding;\n        left -= highlightPadding;\n      } else {\n        const { scrollTop, scrollLeft } = getWindowScroll();\n        top += scrollTop;\n        left += scrollLeft;\n      }\n\n      const style = {\n        top: `${top}px`,\n        left: `${left}px`,\n      };\n\n      // 展示自定义高亮\n      if (showCustomHighlightContent.value) {\n        // 高亮框本身不设定宽高，引用用框的宽高设定为用户自定义的宽高\n        if (isReference) {\n          const { width, height } = highlightLayerRef.value.getBoundingClientRect();\n          Object.assign(style, {\n            width: `${width}px`,\n            height: `${height}px`,\n          });\n        } else {\n          Object.assign(style, {\n            width: 'auto',\n            height: 'auto',\n          });\n        }\n      } else {\n        Object.assign(style, {\n          width: `${width}px`,\n          height: `${height}px`,\n        });\n      }\n      setStyle(highlightLayer, style);\n    };\n\n    const showPopupGuide = () => {\n      nextTick(() => {\n        currentHighlightLayerElm.value = getTargetElm(currentStepInfo.value.element);\n        if (!currentHighlightLayerElm.value) return;\n        scrollToParentVisibleArea(currentHighlightLayerElm.value);\n        setHighlightLayerPosition(highlightLayerRef.value);\n        setHighlightLayerPosition(referenceLayerRef.value, true);\n        scrollToElm(currentHighlightLayerElm.value);\n        // fix: https://github.com/Tencent/tdesign-vue-next/issues/2536\n        // 这里其实是一个临时解决方案，最合理的是 popup 内部处理\n        popupTooltipRef.value?.update();\n      });\n    };\n\n    const destroyTooltipElm = () => {\n      referenceLayerRef.value?.parentNode.removeChild(referenceLayerRef.value);\n    };\n\n    const showDialogGuide = () => {\n      nextTick(() => {\n        currentHighlightLayerElm.value = dialogTooltipRef.value;\n        scrollToParentVisibleArea(currentHighlightLayerElm.value);\n        setHighlightLayerPosition(highlightLayerRef.value);\n        scrollToElm(currentHighlightLayerElm.value);\n      });\n    };\n\n    const destroyDialogTooltipElm = () => {\n      dialogTooltipRef.value?.parentNode.removeChild(dialogTooltipRef.value);\n      dialogWrapperRef.value?.parentNode.removeChild(dialogWrapperRef.value);\n    };\n\n    const showGuide = () => {\n      if (isPopup.value) {\n        destroyDialogTooltipElm();\n        showPopupGuide();\n      } else {\n        destroyTooltipElm();\n        showDialogGuide();\n      }\n      popupVisible.value = true;\n    };\n\n    useResize(() => {\n      if (!popupVisible.value) return;\n      showGuide();\n    }, !isServer && document.body);\n\n    const destroyGuide = () => {\n      destroyTooltipElm();\n      destroyDialogTooltipElm();\n      highlightLayerRef.value?.parentNode.removeChild(highlightLayerRef.value);\n      overlayLayerRef.value?.parentNode.removeChild(overlayLayerRef.value);\n      removeClass(document.body, LOCK_CLASS.value);\n    };\n\n    const handleSkip = (e: MouseEvent) => {\n      const total = stepsTotal.value;\n      actived.value = false;\n      setInnerCurrent(-1, { e, total });\n      props.onSkip?.({ e, current: innerCurrent.value, total });\n    };\n\n    const handlePrev = (e: MouseEvent) => {\n      const total = stepsTotal.value;\n      setInnerCurrent(innerCurrent.value - 1, { e, total });\n      props.onPrevStepClick?.({\n        e,\n        prev: innerCurrent.value - 1,\n        current: innerCurrent.value,\n        total,\n      });\n    };\n\n    const handleNext = (e: MouseEvent) => {\n      const total = stepsTotal.value;\n      setInnerCurrent(innerCurrent.value + 1, { e, total });\n      props.onNextStepClick?.({\n        e,\n        next: innerCurrent.value + 1,\n        current: innerCurrent.value,\n        total,\n      });\n    };\n\n    const handleFinish = (e: MouseEvent) => {\n      const total = stepsTotal.value;\n      actived.value = false;\n      setInnerCurrent(-1, { e, total });\n      props.onFinish?.({ e, current: innerCurrent.value, total });\n    };\n\n    const initGuide = () => {\n      if (innerCurrent.value >= 0 && innerCurrent.value < steps.value.length) {\n        if (!actived.value) {\n          actived.value = true;\n          addClass(document.body, LOCK_CLASS.value);\n        }\n        showGuide();\n      }\n    };\n\n    watch(innerCurrent, (val) => {\n      if (val >= 0 && val < steps.value.length) {\n        popupVisible.value = false;\n        initGuide();\n      } else {\n        actived.value = false;\n        destroyGuide();\n      }\n    });\n\n    onMounted(() => {\n      initGuide();\n    });\n\n    return () => {\n      const renderOverlayLayer = () => (\n        <div ref={overlayLayerRef} class={`${COMPONENT_NAME.value}__overlay`} style={{ zIndex: zIndex.value - 2 }} />\n      );\n\n      const renderHighlightLayer = () => {\n        const style = { zIndex: zIndex.value - 1 };\n        const highlightClass = [\n          `${COMPONENT_NAME.value}__highlight`,\n          `${COMPONENT_NAME.value}__highlight--${isPopup.value ? 'popup' : 'dialog'}`,\n          `${COMPONENT_NAME.value}--${currentElmIsFixed.value && isPopup.value ? 'fixed' : 'absolute'}`,\n        ];\n        const showOverlay = getCurrentCrossProps('showOverlay');\n        const maskClass = [`${COMPONENT_NAME.value}__highlight--${showOverlay ? 'mask' : 'nomask'}`];\n\n        return (\n          <div ref={highlightLayerRef} class={[...highlightClass, ...maskClass]} style={style}>\n            {showCustomHighlightContent.value && currentCustomHighlightContent.value}\n          </div>\n        );\n      };\n\n      const renderCounter = () => {\n        const popupSlotCounter = renderTNodeJSX('counter', {\n          params: { total: stepsTotal.value, current: innerCurrent.value },\n        });\n\n        const popupDefaultCounter = (\n          <div class={`${COMPONENT_NAME.value}__counter`}>\n            {popupSlotCounter || `${innerCurrent.value + 1}/${stepsTotal.value}`}\n          </div>\n        );\n        return <>{!hideCounter.value && popupDefaultCounter}</>;\n      };\n\n      const renderAction = (mode: TdGuideProps['mode']) => {\n        const isLast = innerCurrent.value === stepsTotal.value - 1;\n        const isFirst = innerCurrent.value === 0;\n        const buttonSize = mode === 'popup' ? 'small' : 'medium';\n\n        return (\n          <div class={`${COMPONENT_NAME.value}__action`}>\n            {!hideSkip.value && !isLast && (\n              <Button\n                key=\"skip\"\n                class={`${COMPONENT_NAME.value}__skip`}\n                theme=\"default\"\n                size={buttonSize}\n                variant=\"base\"\n                onClick={handleSkip}\n                {...(getCurrentCrossProps('skipButtonProps') ?? globalConfig.value.skipButtonProps)}\n              />\n            )}\n            {!hidePrev.value && !isFirst && (\n              <Button\n                key=\"prev\"\n                class={`${COMPONENT_NAME.value}__prev`}\n                theme=\"default\"\n                size={buttonSize}\n                variant=\"base\"\n                onClick={handlePrev}\n                {...(getCurrentCrossProps('prevButtonProps') ?? globalConfig.value.prevButtonProps)}\n              />\n            )}\n            {!isLast && (\n              <Button\n                key=\"next\"\n                class={`${COMPONENT_NAME.value}__next`}\n                theme=\"primary\"\n                size={buttonSize}\n                variant=\"base\"\n                onClick={handleNext}\n                {...(getCurrentCrossProps('nextButtonProps') ?? globalConfig.value.nextButtonProps)}\n              />\n            )}\n            {isLast && (\n              <Button\n                key=\"finish\"\n                class={`${COMPONENT_NAME.value}__finish`}\n                theme=\"primary\"\n                size={buttonSize}\n                variant=\"base\"\n                onClick={handleFinish}\n                {...(props.finishButtonProps ?? globalConfig.value.finishButtonProps)}\n              />\n            )}\n          </div>\n        );\n      };\n\n      const renderTitle = () => {\n        const functionTitle = isFunction(currentStepInfo.value.title) ? currentStepInfo.value.title() : undefined;\n        const slotTitle = context.slots.title ? context.slots.title(hWithParams()) : undefined;\n        return functionTitle || slotTitle || currentStepInfo.value.title;\n      };\n\n      const renderTooltipBody = () => {\n        const title = <div class={`${COMPONENT_NAME.value}__title`}>{renderTitle()}</div>;\n        const bodyRender = currentStepInfo.value.body;\n\n        let descBody: any;\n        if (isFunction(bodyRender)) {\n          descBody = bodyRender(hWithParams());\n        } else if (context.slots.body) {\n          descBody = context.slots.body({ currentStepInfo: currentStepInfo.value });\n        } else if (typeof bodyRender === 'string') {\n          descBody = bodyRender;\n        } else {\n          descBody = <bodyRender />;\n        }\n        const desc = <div class={`${COMPONENT_NAME.value}__desc`}>{descBody}</div>;\n\n        return (\n          <>\n            {title}\n            {desc}\n          </>\n        );\n      };\n\n      const renderPopupContent = () => {\n        const footerClasses = [`${COMPONENT_NAME.value}__footer`, `${COMPONENT_NAME.value}__footer--popup`];\n        const action = (\n          <div class={footerClasses}>\n            {renderCounter()}\n            {renderAction('popup')}\n          </div>\n        );\n\n        return (\n          <div class={`${COMPONENT_NAME.value}__tooltip`}>\n            {renderTooltipBody()}\n            {action}\n          </div>\n        );\n      };\n\n      const renderPopupGuide = () => {\n        const { content } = currentStepInfo.value;\n        const contentProps = {\n          handlePrev,\n          handleNext,\n          handleSkip,\n          handleFinish,\n          current: innerCurrent.value,\n          total: stepsTotal.value,\n        };\n        let renderBody;\n        if (isFunction(content)) {\n          renderBody = () => content(hWithParams(contentProps));\n        } else if (context.slots.content) {\n          renderBody = () => context.slots.content(hWithParams(contentProps));\n        } else if (content) {\n          renderBody = () => <content {...contentProps} />;\n        } else {\n          renderBody = renderPopupContent;\n        }\n        const classes = [\n          `${COMPONENT_NAME.value}__reference`,\n          `${COMPONENT_NAME.value}--${currentElmIsFixed.value ? 'fixed' : 'absolute'}`,\n        ];\n\n        const innerClassName: PopupProps['overlayInnerClassName'] = [\n          {\n            [`${COMPONENT_NAME.value}__popup--content`]: !!content,\n          },\n        ];\n\n        return (\n          <Popup\n            ref={popupTooltipRef}\n            visible={popupVisible.value}\n            show-arrow={!content}\n            zIndex={zIndex.value}\n            placement={currentStepInfo.value.placement as any}\n            {...currentStepInfo.value.popupProps}\n            content={renderBody}\n            overlayClassName={[`${COMPONENT_NAME.value}__popup`, currentStepInfo.value.stepOverlayClass]}\n            overlayInnerClassName={innerClassName.concat(currentStepInfo.value.popupProps?.overlayInnerClassName)}\n          >\n            <div ref={referenceLayerRef} class={classes} />\n          </Popup>\n        );\n      };\n\n      const renderDialogGuide = () => {\n        const style = { zIndex: zIndex.value };\n        const wrapperClasses = [\n          `${COMPONENT_NAME.value}__wrapper`,\n          { [`${COMPONENT_NAME.value}__wrapper--center`]: currentStepInfo.value.placement === 'center' },\n        ];\n        const dialogClasses = [\n          `${COMPONENT_NAME.value}__reference`,\n          `${COMPONENT_NAME.value}--absolute`,\n          `${COMPONENT_NAME.value}__dialog`,\n          {\n            [`${COMPONENT_NAME.value}__dialog--nomask`]: !getCurrentCrossProps('showOverlay'),\n            [currentStepInfo.value.stepOverlayClass]: !!currentStepInfo.value.stepOverlayClass,\n          },\n        ];\n        const footerClasses = [`${COMPONENT_NAME.value}__footer`, `${COMPONENT_NAME.value}__footer--popup`];\n        return (\n          <>\n            <div ref={dialogWrapperRef} class={wrapperClasses} style={style}>\n              <div ref={dialogTooltipRef} class={dialogClasses}>\n                {renderTooltipBody()}\n                <div class={footerClasses}>\n                  {renderCounter()}\n                  {renderAction('dialog')}\n                </div>\n              </div>\n            </div>\n          </>\n        );\n      };\n\n      const renderGuide = () => {\n        return (\n          <>\n            <Teleport to=\"body\">\n              {renderOverlayLayer()}\n              {renderHighlightLayer()}\n              {isPopup.value ? renderPopupGuide() : renderDialogGuide()}\n            </Teleport>\n          </>\n        );\n      };\n\n      return <>{actived.value && renderGuide()}</>;\n    };\n  },\n});\n"],"names":["defineComponent","name","props","setup","context","renderTNodeJSX","useTNodeJSX","COMPONENT_NAME","usePrefixClass","LOCK_CLASS","_useConfig","useConfig","globalConfig","_toRefs","toRefs","current","modelValue","hideCounter","hidePrev","hideSkip","steps","zIndex","_useVModel","useVModel","defaultCurrent","onChange","_useVModel2","_slicedToArray","innerCurrent","setInnerCurrent","overlayLayerRef","ref","highlightLayerRef","referenceLayerRef","currentHighlightLayerElm","dialogWrapperRef","dialogTooltipRef","popupTooltipRef","actived","stepsTotal","computed","value","length","currentStepInfo","isPopup","getCurrentCrossProps","currentElmIsFixed","isFixed","document","body","propsName","_currentStepInfo$valu","currentCustomHighlightContent","highlightContent","node","isFunction","hWithParams","slots","_createVNode","showCustomHighlightContent","Boolean","popupVisible","params","arguments","undefined","newH","Function","h","toString","Object","assign","setHighlightLayerPosition","highlightLayer","isReference","_getRelativePosition","getRelativePosition","top","left","_currentHighlightLaye","getBoundingClientRect","width","height","highlightPadding","_getWindowScroll","getWindowScroll","scrollTop","scrollLeft","style","_highlightLayerRef$va","setStyle","showPopupGuide","nextTick","_popupTooltipRef$valu","getTargetElm","element","scrollToParentVisibleArea","scrollToElm","update","destroyTooltipElm","_referenceLayerRef$va","parentNode","removeChild","showDialogGuide","destroyDialogTooltipElm","_dialogTooltipRef$val","_dialogWrapperRef$val","showGuide","useResize","isServer","destroyGuide","_highlightLayerRef$va2","_overlayLayerRef$valu","removeClass","handleSkip","e","_props2$onSkip","total","onSkip","handlePrev","_props2$onPrevStepCli","onPrevStepClick","prev","handleNext","_props2$onNextStepCli","onNextStepClick","next","handleFinish","_props2$onFinish","onFinish","initGuide","addClass","watch","val","onMounted","renderOverlayLayer","renderHighlightLayer","highlightClass","concat","showOverlay","maskClass","renderCounter","popupSlotCounter","popupDefaultCounter","_Fragment","renderAction","mode","_getCurrentCrossProps","_getCurrentCrossProps2","_getCurrentCrossProps3","_props2$finishButtonP","isLast","isFirst","buttonSize","Button","_mergeProps","skipButtonProps","prevButtonProps","nextButtonProps","finishButtonProps","renderTitle","functionTitle","title","slotTitle","renderTooltipBody","bodyRender","descBody","desc","renderPopupContent","footerClasses","action","renderPopupGuide","_currentStepInfo$valu2","content","contentProps","renderBody","classes","innerClassName","_defineProperty","Popup","placement","popupProps","stepOverlayClass","overlayInnerClassName","renderDialogGuide","wrapperClasses","dialogClasses","renderGuide","Teleport","_default"],"mappings":"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"}