{"version":3,"file":"BackTop.mjs","sources":["../../../../../../packages/components/float-button/src/BackTop.tsx"],"sourcesContent":["import { VerticalAlignTopOutlined } from '@ant-design/icons-vue';\nimport { getScroll, initDefaultProps, scrollTo, throttleByAnimationFrame } from '@antdv/utils';\nimport { getTransitionProps } from '@antdv/vue-components';\nimport {\n  defineComponent,\n  nextTick,\n  onActivated,\n  onBeforeUnmount,\n  onDeactivated,\n  onMounted,\n  reactive,\n  ref,\n  Transition,\n  watch,\n} from 'vue';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\n\nimport useStyle from '../style';\nimport { floatButtonPrefixCls } from './constants';\nimport { useInjectFloatButtonGroupContext } from './context';\nimport FloatButton from './FloatButton';\nimport { backTopProps } from './props';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ABackTop',\n  inheritAttrs: false,\n  props: initDefaultProps(backTopProps(), {\n    visibilityHeight: 400,\n    target: () => window,\n    duration: 450,\n    type: 'default',\n    shape: 'circle',\n  }),\n  // emits: ['click'],\n  setup(props, { slots, attrs, emit }) {\n    const { prefixCls, direction } = useConfigInject(floatButtonPrefixCls, props);\n\n    const [wrapSSR] = useStyle(prefixCls);\n\n    const domRef = ref();\n    const state = reactive({\n      visible: props.visibilityHeight === 0,\n      scrollEvent: null,\n    });\n\n    const getDefaultTarget = () =>\n      (domRef.value && domRef.value.ownerDocument) ? domRef.value.ownerDocument : window;\n\n    const scrollToTop = (e: Event) => {\n      const { target = getDefaultTarget, duration } = props;\n      scrollTo(0, {\n        getContainer: target,\n        duration,\n      });\n      emit('click', e);\n    };\n\n    const handleScroll = throttleByAnimationFrame((e: Event | { target: any }) => {\n      const { visibilityHeight } = props;\n      const scrollTop = getScroll(e.target, true);\n      state.visible = scrollTop >= visibilityHeight;\n    });\n\n    const bindScrollEvent = () => {\n      const { target } = props;\n      const getTarget = target || getDefaultTarget;\n      const container = getTarget();\n      handleScroll({ target: container });\n      container?.addEventListener('scroll', handleScroll);\n    };\n\n    const scrollRemove = () => {\n      const { target } = props;\n      const getTarget = target || getDefaultTarget;\n      const container = getTarget();\n      handleScroll.cancel();\n      container?.removeEventListener('scroll', handleScroll);\n    };\n\n    watch(\n      () => props.target,\n      () => {\n        scrollRemove();\n        nextTick(() => {\n          bindScrollEvent();\n        });\n      },\n    );\n\n    onMounted(() => {\n      nextTick(() => {\n        bindScrollEvent();\n      });\n    });\n\n    onActivated(() => {\n      nextTick(() => {\n        bindScrollEvent();\n      });\n    });\n\n    onDeactivated(() => {\n      scrollRemove();\n    });\n\n    onBeforeUnmount(() => {\n      scrollRemove();\n    });\n    const floatButtonGroupContext = useInjectFloatButtonGroupContext();\n    return () => {\n      const { description, type, shape, tooltip, badge } = props;\n      const floatButtonProps = {\n        ...attrs,\n        shape: floatButtonGroupContext?.shape.value || shape,\n        onClick: scrollToTop,\n        class: {\n          [`${prefixCls.value}`]: true,\n          [`${attrs.class}`]: attrs.class,\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n        },\n        description,\n        type,\n        tooltip,\n        badge,\n      };\n\n      const transitionProps = getTransitionProps('fade');\n      return wrapSSR(\n        <Transition {...transitionProps}>\n          <FloatButton v-show={state.visible} {...floatButtonProps} ref={domRef}>\n            {{\n              icon: () => slots.icon?.() || <VerticalAlignTopOutlined />,\n            }}\n          </FloatButton>\n        </Transition>,\n      );\n    };\n  },\n});\n"],"names":["compatConfig","MODE","name","inheritAttrs","props","initDefaultProps","backTopProps","visibilityHeight","target","window","duration","type","shape","setup","slots","attrs","emit","prefixCls","direction","useConfigInject","floatButtonPrefixCls","wrapSSR","useStyle","domRef","ref","state","reactive","visible","scrollEvent","getDefaultTarget","value","ownerDocument","scrollToTop","e","scrollTo","getContainer","handleScroll","throttleByAnimationFrame","scrollTop","getScroll","bindScrollEvent","getTarget","container","addEventListener","scrollRemove","cancel","removeEventListener","watch","nextTick","onMounted","onActivated","onDeactivated","onBeforeUnmount","floatButtonGroupContext","useInjectFloatButtonGroupContext","description","tooltip","badge","floatButtonProps","onClick","class","transitionProps","getTransitionProps","_createVNode","Transition","default","_withDirectives","FloatButton","icon","VerticalAlignTopOutlined","_vShow"],"mappings":"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"}