element-plus
Version:
A Component Library for Vue 3
1 lines • 2.88 kB
Source Map (JSON)
{"version":3,"file":"use-backtop.mjs","sources":["../../../../../../packages/components/backtop/src/use-backtop.ts"],"sourcesContent":["import { onMounted, ref, shallowRef } from 'vue'\nimport { useEventListener, useThrottleFn } from '@vueuse/core'\nimport { throwError } from '@element-plus/utils'\n\nimport type { SetupContext } from 'vue'\nimport type { BacktopEmits, BacktopProps } from './backtop'\n\nexport const useBackTop = (\n props: BacktopProps,\n emit: SetupContext<BacktopEmits>['emit'],\n componentName: string\n) => {\n const el = shallowRef<HTMLElement>()\n const container = shallowRef<Document | HTMLElement>()\n const visible = ref(false)\n\n const handleScroll = () => {\n if (el.value) visible.value = el.value.scrollTop >= props.visibilityHeight\n }\n\n const handleClick = (event: MouseEvent) => {\n el.value?.scrollTo({ top: 0, behavior: 'smooth' })\n emit('click', event)\n }\n\n const handleScrollThrottled = useThrottleFn(handleScroll, 300, true)\n\n useEventListener(container, 'scroll', handleScrollThrottled)\n onMounted(() => {\n container.value = document\n el.value = document.documentElement\n\n if (props.target) {\n el.value = document.querySelector<HTMLElement>(props.target) ?? undefined\n if (!el.value) {\n throwError(componentName, `target does not exist: ${props.target}`)\n }\n container.value = el.value\n }\n // Give visible an initial value, fix #13066\n handleScroll()\n })\n\n return {\n visible,\n handleClick,\n }\n}\n"],"names":[],"mappings":";;;;AAOO,MAAM,UAAa,GAAA,CACxB,KACA,EAAA,IAAA,EACA,aACG,KAAA;AACH,EAAA,MAAM,KAAK,UAAwB,EAAA,CAAA;AACnC,EAAA,MAAM,YAAY,UAAmC,EAAA,CAAA;AACrD,EAAM,MAAA,OAAA,GAAU,IAAI,KAAK,CAAA,CAAA;AAEzB,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,IAAI,EAAG,CAAA,KAAA;AAAO,MAAA,OAAA,CAAQ,KAAQ,GAAA,EAAA,CAAG,KAAM,CAAA,SAAA,IAAa,KAAM,CAAA,gBAAA,CAAA;AAAA,GAC5D,CAAA;AAEA,EAAM,MAAA,WAAA,GAAc,CAAC,KAAsB,KAAA;AApB7C,IAAA,IAAA,EAAA,CAAA;AAqBI,IAAA,CAAA,EAAA,GAAA,EAAA,CAAG,UAAH,IAAU,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAA,CAAS,EAAE,GAAK,EAAA,CAAA,EAAG,UAAU,QAAS,EAAA,CAAA,CAAA;AAChD,IAAA,IAAA,CAAK,SAAS,KAAK,CAAA,CAAA;AAAA,GACrB,CAAA;AAEA,EAAA,MAAM,qBAAwB,GAAA,aAAA,CAAc,YAAc,EAAA,GAAA,EAAK,IAAI,CAAA,CAAA;AAEnE,EAAiB,gBAAA,CAAA,SAAA,EAAW,UAAU,qBAAqB,CAAA,CAAA;AAC3D,EAAA,SAAA,CAAU,MAAM;AA5BlB,IAAA,IAAA,EAAA,CAAA;AA6BI,IAAA,SAAA,CAAU,KAAQ,GAAA,QAAA,CAAA;AAClB,IAAA,EAAA,CAAG,QAAQ,QAAS,CAAA,eAAA,CAAA;AAEpB,IAAA,IAAI,MAAM,MAAQ,EAAA;AAChB,MAAA,EAAA,CAAG,SAAQ,EAAS,GAAA,QAAA,CAAA,aAAA,CAA2B,KAAM,CAAA,MAAM,MAAhD,IAAqD,GAAA,EAAA,GAAA,KAAA,CAAA,CAAA;AAChE,MAAI,IAAA,CAAC,GAAG,KAAO,EAAA;AACb,QAAW,UAAA,CAAA,aAAA,EAAe,CAA0B,uBAAA,EAAA,KAAA,CAAM,MAAQ,CAAA,CAAA,CAAA,CAAA;AAAA,OACpE;AACA,MAAA,SAAA,CAAU,QAAQ,EAAG,CAAA,KAAA,CAAA;AAAA,KACvB;AAEA,IAAa,YAAA,EAAA,CAAA;AAAA,GACd,CAAA,CAAA;AAED,EAAO,OAAA;AAAA,IACL,OAAA;AAAA,IACA,WAAA;AAAA,GACF,CAAA;AACF;;;;"}