{"version":3,"file":"guide.mjs","sources":["../../src/guide/guide.tsx"],"sourcesContent":["import { computed, defineComponent, ref, toRefs, h, nextTick, onMounted, watch, Teleport } from 'vue';\nimport { isFunction } from 'lodash-es';\nimport TPopover, { PopoverProps } from '../popover';\nimport TPopup, { PopupProps } from '../popup';\nimport TButton, { ButtonProps } from '../button';\nimport config from '../config';\nimport useVModel from '../hooks/useVModel';\nimport { addClass, getWindowScroll, removeClass } from '../shared/dom';\nimport setStyle from '../_common/js/utils/setStyle';\nimport guideProps from './props';\nimport { GuideStep, TdGuideProps } from './type';\nimport { isFixed, getRelativePosition, getTargetElm, scrollToParentVisibleArea, scrollToElm } from './utils';\nimport { GuideCrossProps } from './interface';\nimport { SizeEnum } from '../common';\nimport { usePrefixClass, useConfig } from '../hooks/useClass';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n  name: `${prefix}-guide`,\n  components: {\n    TPopover,\n    TButton,\n    TPopup,\n  },\n  props: guideProps,\n  setup(props: TdGuideProps, context) {\n    const { current, modelValue, finishButtonProps, hideCounter, 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    const { globalConfig } = useConfig('guide');\n    const guideClass = usePrefixClass('guide');\n\n    const LOCK_CLASS = `${guideClass.value}--lock`;\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 popoverWrapperRef = ref<HTMLElement>();\n    // 是否开始展示\n    const actived = ref(false);\n    // 步骤总数\n    const stepsTotal = computed(() => steps.value.length);\n    // 当前步骤的信息\n    const currentStepInfo = computed<GuideStep>(() => steps.value[innerCurrent.value]);\n    // 当前是否为 popover\n    const isPopover = computed(() => getCurrentCrossProps('mode') === 'popover');\n    const popoverVisible = ref(false);\n    const isPopoverCenter = computed(() => isPopover.value && currentStepInfo.value.placement === 'center');\n    const stepProps = computed(() => {\n      if (isPopover.value) {\n        return {\n          visible: popoverVisible.value,\n          placement: isPopoverCenter.value ? 'bottom' : currentStepInfo.value.placement,\n          theme: 'light',\n          showArrow: false,\n          ...currentStepInfo.value.popoverProps,\n        } as PopoverProps;\n      }\n      return {\n        visible: popoverVisible.value,\n        zIndex: zIndex.value,\n        placement: 'center',\n        // destroyOnClose: true,\n        class: `${guideClass.value}__dialog`,\n        overlayProps: {\n          zIndex: zIndex.value - 1,\n        },\n      } as PopupProps;\n    });\n\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 hWithParams = (params: Record<string, any> = { currentStepInfo: currentStepInfo.value }) => {\n      // @ts-ignore\n      const newH = (...args: any[]) => h(...args);\n      return Object.assign(newH, params);\n    };\n\n    // highlight layer 相关\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      }\n      // 给自定义元素添加类名\n      if (node) {\n        if (!node.props) node.props = {};\n        node.props.class = node.props.class || '';\n      }\n      return node;\n    });\n    // 是否展示高亮区域\n    const showCustomHighlightContent = computed(() => Boolean(currentCustomHighlightContent.value && isPopover.value));\n\n    const showOverlay = computed(() => getCurrentCrossProps('showOverlay'));\n\n    const highlightClass = computed(() => [\n      `${guideClass.value}__highlight`,\n      `${guideClass.value}__highlight--${isPopover.value ? 'popover' : 'dialog'}`,\n      `${guideClass.value}--${currentElmIsFixed.value && isPopover.value ? 'fixed' : 'absolute'}`,\n    ]);\n    const maskClass = computed(() => [`${guideClass.value}__highlight--${showOverlay.value ? 'mask' : 'nomask'}`]);\n    const wrapperClass = computed(() => [\n      `${guideClass.value}__wrapper`,\n      `${guideClass.value}--${currentElmIsFixed.value ? 'fixed' : 'absolute'}`,\n      {\n        [`${guideClass.value}__wrapper--content`]: !!currentStepInfo.value.content,\n      },\n    ]);\n    const popoverClass = computed(() => [`${guideClass.value}__reference`]);\n    const contentClass = computed(() => [`${guideClass.value}__content--${isPopover.value ? 'popover' : 'dialog'}`]);\n    const footerClass = computed(() => [\n      `${guideClass.value}__footer`,\n      `${guideClass.value}__footer--${isPopover.value ? 'popover' : 'dialog'}`,\n    ]);\n\n    const isLast = computed(() => innerCurrent.value === stepsTotal.value - 1);\n    const buttonSize = computed(() => (isPopover.value ? 'extra-small' : 'medium') as SizeEnum);\n\n    // 设置高亮层的位置\n    const setHighlightLayerPosition = (highlightLayer: HTMLElement, isReference = false) => {\n      if (!highlightLayer) return;\n\n      let { top, left } = getRelativePosition(currentHighlightLayerElm.value);\n      let { width, height } = currentHighlightLayerElm.value.getBoundingClientRect();\n      const highlightPadding = getCurrentCrossProps('highlightPadding');\n\n      if (isPopover.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\n      setStyle(highlightLayer, style);\n    };\n\n    const setReferenceFullW = (referenceElements: HTMLElement[]): void => {\n      const style = {\n        left: 0,\n        width: '100vw',\n      };\n\n      referenceElements.forEach((elem) => setStyle(elem, style));\n    };\n\n    const showPopoverGuide = () => {\n      nextTick(() => {\n        currentHighlightLayerElm.value = getTargetElm(currentStepInfo.value.element);\n        if (!currentHighlightLayerElm.value) return;\n        scrollToParentVisibleArea(currentHighlightLayerElm.value);\n        setHighlightLayerPosition(highlightLayerRef.value);\n        setHighlightLayerPosition(popoverWrapperRef.value, true);\n        setHighlightLayerPosition(referenceLayerRef.value, true);\n        scrollToElm(currentHighlightLayerElm.value);\n        isPopoverCenter.value && setReferenceFullW([referenceLayerRef.value, popoverWrapperRef.value]);\n      });\n    };\n\n    const showDialogGuide = () => {\n      nextTick(() => {\n        currentHighlightLayerElm.value = getTargetElm(currentStepInfo.value.element);\n        scrollToParentVisibleArea(currentHighlightLayerElm.value);\n        setHighlightLayerPosition(highlightLayerRef.value);\n        scrollToElm(currentHighlightLayerElm.value);\n      });\n    };\n\n    const showGuide = () => {\n      if (isPopover.value) {\n        showPopoverGuide();\n      } else {\n        showDialogGuide();\n      }\n      nextTick(() => {\n        popoverVisible.value = true;\n      });\n    };\n\n    const destroyGuide = () => {\n      highlightLayerRef.value?.parentNode.removeChild(highlightLayerRef.value);\n      overlayLayerRef.value?.parentNode.removeChild(overlayLayerRef.value);\n      removeClass(document.body, LOCK_CLASS);\n    };\n\n    const renderButtonContent = (buttonProps: ButtonProps, defaultContent: string) => {\n      const { content } = buttonProps || {};\n      return isFunction(content) ? content(h) : content || defaultContent;\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 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 handleBack = (e: MouseEvent) => {\n      const total = stepsTotal.value;\n      setInnerCurrent(0, { e, total });\n      props.onBack?.({ e, current: innerCurrent.value, total });\n    };\n\n    const contentProps = computed(() => ({\n      handleSkip,\n      handleNext,\n      handleFinish,\n      handleBack,\n      current: innerCurrent.value,\n      total: stepsTotal.value,\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);\n        }\n        showGuide();\n      }\n    };\n\n    watch(innerCurrent, (val) => {\n      if (val >= 0 && val < stepsTotal.value) {\n        isPopover.value && (popoverVisible.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 renderStepContent = () => {\n        const renderTitleNode = () => {\n          const { title } = currentStepInfo.value;\n          let renderTitle: any = null;\n          if (isFunction(title)) {\n            renderTitle = title(hWithParams());\n          } else if (context.slots.title) {\n            renderTitle = context.slots.title(hWithParams());\n          } else if (typeof title === 'string') {\n            renderTitle = title;\n          } else if (title) {\n            renderTitle = h(title);\n          }\n          return renderTitle;\n        };\n        const renderBodyNode = () => {\n          const { body } = currentStepInfo.value;\n          let renderBody: any = null;\n          if (isFunction(body)) {\n            renderBody = body(hWithParams());\n          } else if (context.slots.body) {\n            renderBody = context.slots.body(hWithParams());\n          } else if (typeof body === 'string') {\n            renderBody = body;\n          } else if (body) {\n            renderBody = h(body);\n          }\n          return renderBody;\n        };\n        const renderCounterNode = () => {\n          const params = {\n            total: stepsTotal.value,\n            current: innerCurrent.value,\n          };\n          let renderCounter: any = null;\n          const { counter } = props;\n          if (isFunction(counter)) {\n            renderCounter = counter(h, params);\n          } else if (context.slots.counter) {\n            renderCounter = context.slots.counter(hWithParams(params));\n          } else if (counter) {\n            renderCounter = h(counter, params);\n          }\n          return renderCounter || ` (${innerCurrent.value + 1}/${stepsTotal.value})`;\n        };\n        return (\n          <div class={contentClass.value}>\n            <div class={`${guideClass.value}__tooltip`}>\n              <div class={`${guideClass.value}__title`}>{renderTitleNode()}</div>\n              <div class={`${guideClass.value}__desc`}>{renderBodyNode()}</div>\n            </div>\n            <div class={footerClass.value}>\n              {!hideSkip.value && !isLast.value && (\n                <TButton\n                  key=\"skip\"\n                  class={`${guideClass.value}__skip`}\n                  theme=\"light\"\n                  size={buttonSize.value}\n                  variant=\"base\"\n                  content={globalConfig.value.skip}\n                  {...getCurrentCrossProps('skipButtonProps')}\n                  onClick={handleSkip}\n                />\n              )}\n              {!isLast.value && (\n                <TButton\n                  key=\"next\"\n                  class={`${guideClass.value}__next`}\n                  theme=\"primary\"\n                  size={buttonSize.value}\n                  variant=\"base\"\n                  {...getCurrentCrossProps('nextButtonProps')}\n                  onClick={handleNext}\n                >\n                  {{\n                    content: () => (\n                      <>\n                        {renderButtonContent(getCurrentCrossProps('nextButtonProps'), globalConfig.value.next)}\n                        {!hideCounter.value && renderCounterNode()}\n                      </>\n                    ),\n                  }}\n                </TButton>\n              )}\n              {isLast.value && (\n                <TButton\n                  key=\"back\"\n                  class={`${guideClass.value}__back`}\n                  theme=\"light\"\n                  size={buttonSize.value}\n                  variant=\"base\"\n                  content={globalConfig.value.back}\n                  {...getCurrentCrossProps('backButtonProps')}\n                  onClick={handleBack}\n                ></TButton>\n              )}\n              {isLast.value && (\n                <TButton\n                  key=\"finish\"\n                  class={`${guideClass.value}__finish`}\n                  theme=\"primary\"\n                  size={buttonSize.value}\n                  variant=\"base\"\n                  {...(finishButtonProps.value ?? {})}\n                  onClick={handleFinish}\n                >\n                  {{\n                    content: () => (\n                      <>\n                        {renderButtonContent(finishButtonProps.value, globalConfig.value.finish)}\n                        {!hideCounter.value && renderCounterNode()}\n                      </>\n                    ),\n                  }}\n                </TButton>\n              )}\n            </div>\n          </div>\n        );\n      };\n      const renderContentNode = () => {\n        const { content } = currentStepInfo.value;\n        let renderContent;\n        if (isFunction(content)) {\n          renderContent = content(hWithParams(contentProps.value));\n        } else if (context.slots.content) {\n          renderContent = context.slots.content(hWithParams(contentProps.value));\n        } else if (content) {\n          renderContent = h(content, contentProps.value);\n        }\n        return renderContent;\n      };\n      const renderPopover = () => {\n        return (\n          <TPopover {...(stepProps.value as PopoverProps)}>\n            {{\n              triggerElement: () =>\n                isPopover.value && <div ref={referenceLayerRef} class={[...popoverClass.value]}></div>,\n              content: () => (isPopover.value && renderContentNode() ? renderContentNode() : renderStepContent()),\n            }}\n          </TPopover>\n        );\n      };\n      const renderPopup = () => {\n        return (\n          <TPopup {...(stepProps.value as PopupProps)}>\n            {{\n              default: () => (isPopover.value && renderContentNode() ? renderContentNode() : renderStepContent()),\n            }}\n          </TPopup>\n        );\n      };\n      const renderCurrentCustomHighlightContentNode = () => {\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        }\n        // 给自定义元素添加类名\n        if (node) {\n          if (!node.props) node.props = {};\n          node.props.class = node.props.class || '';\n        }\n        return node;\n      };\n      return (\n        <>\n          {actived.value && (\n            <Teleport to=\"body\">\n              <div\n                ref={overlayLayerRef}\n                class={`${guideClass.value}__overlay`}\n                style={{ zIndex: `${zIndex.value - 2}` }}\n              ></div>\n              <div\n                ref={highlightLayerRef}\n                class={[...highlightClass.value, ...maskClass.value]}\n                style={{ zIndex: `${zIndex.value - 1}` }}\n              >\n                {showCustomHighlightContent.value && renderCurrentCustomHighlightContentNode()}\n              </div>\n              <div ref={popoverWrapperRef} class={wrapperClass.value} style={{ zIndex: zIndex.value }}>\n                {isPopover.value ? renderPopover() : renderPopup()}\n              </div>\n            </Teleport>\n          )}\n        </>\n      );\n    };\n  },\n});\n"],"names":["prefix","config","defineComponent","name","components","TPopover","TButton","TPopup","props","guideProps","setup","context","_toRefs","toRefs","current","modelValue","finishButtonProps","hideCounter","hideSkip","steps","zIndex","_useVModel","useVModel","defaultCurrent","onChange","_useVModel2","_slicedToArray","innerCurrent","setInnerCurrent","_useConfig","useConfig","globalConfig","guideClass","usePrefixClass","LOCK_CLASS","concat","value","overlayLayerRef","ref","highlightLayerRef","referenceLayerRef","currentHighlightLayerElm","popoverWrapperRef","actived","stepsTotal","computed","length","currentStepInfo","isPopover","getCurrentCrossProps","popoverVisible","isPopoverCenter","placement","stepProps","_objectSpread","visible","theme","showArrow","popoverProps","class","overlayProps","currentElmIsFixed","isFixed","document","body","propsName","_currentStepInfo$valu","hWithParams","params","arguments","undefined","newH","h","apply","Object","assign","currentCustomHighlightContent","highlightContent","node","isFunction","slots","showCustomHighlightContent","Boolean","showOverlay","highlightClass","maskClass","wrapperClass","_defineProperty","content","popoverClass","contentClass","footerClass","isLast","buttonSize","setHighlightLayerPosition","highlightLayer","isReference","_getRelativePosition","getRelativePosition","top","left","_currentHighlightLaye","getBoundingClientRect","width","height","highlightPadding","_getWindowScroll","getWindowScroll","scrollTop","scrollLeft","style","_highlightLayerRef$va","setStyle","setReferenceFullW","referenceElements","forEach","elem","showPopoverGuide","nextTick","getTargetElm","element","scrollToParentVisibleArea","scrollToElm","showDialogGuide","showGuide","destroyGuide","_highlightLayerRef$va2","_overlayLayerRef$valu","parentNode","removeChild","removeClass","renderButtonContent","buttonProps","defaultContent","_ref2","handleSkip","e","_props$onSkip","total","onSkip","call","handleNext","_props$onNextStepClic","onNextStepClick","next","handleFinish","_props$onFinish","onFinish","handleBack","_props$onBack","onBack","contentProps","initGuide","addClass","watch","val","onMounted","renderStepContent","_finishButtonProps$va","renderTitleNode","title","renderTitle","renderBodyNode","renderBody","renderCounterNode","renderCounter","counter","_createVNode","_mergeProps","skip","back","finish","renderContentNode","renderContent","renderPopover","triggerElement","_toConsumableArray","renderPopup","default","renderCurrentCustomHighlightContentNode","_Fragment","Teleport","_default"],"mappings":"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"}