element-plus
Version:
A Component Library for Vue 3
1 lines • 2.77 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: Required<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,KAAA,EACA,IAAA,EACA,aAAA,KACG;AACH,EAAA,MAAM,KAAK,UAAA,EAAwB;AACnC,EAAA,MAAM,YAAY,UAAA,EAAmC;AACrD,EAAA,MAAM,OAAA,GAAU,IAAI,KAAK,CAAA;AAEzB,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,IAAI,GAAG,KAAA,EAAO,OAAA,CAAQ,QAAQ,EAAA,CAAG,KAAA,CAAM,aAAa,KAAA,CAAM,gBAAA;AAAA,EAC5D,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAsB;AApB7C,IAAA,IAAA,EAAA;AAqBI,IAAA,CAAA,EAAA,GAAA,EAAA,CAAG,UAAH,IAAA,GAAA,MAAA,GAAA,EAAA,CAAU,QAAA,CAAS,EAAE,GAAA,EAAK,CAAA,EAAG,UAAU,QAAA,EAAS,CAAA;AAChD,IAAA,IAAA,CAAK,SAAS,KAAK,CAAA;AAAA,EACrB,CAAA;AAEA,EAAA,MAAM,qBAAA,GAAwB,aAAA,CAAc,YAAA,EAAc,GAAA,EAAK,IAAI,CAAA;AAEnE,EAAA,gBAAA,CAAiB,SAAA,EAAW,UAAU,qBAAqB,CAAA;AAC3D,EAAA,SAAA,CAAU,MAAM;AA5BlB,IAAA,IAAA,EAAA;AA6BI,IAAA,SAAA,CAAU,KAAA,GAAQ,QAAA;AAClB,IAAA,EAAA,CAAG,QAAQ,QAAA,CAAS,eAAA;AAEpB,IAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,MAAA,EAAA,CAAG,SAAQ,EAAA,GAAA,QAAA,CAAS,aAAA,CAA2B,KAAA,CAAM,MAAM,MAAhD,IAAA,GAAA,EAAA,GAAqD,MAAA;AAChE,MAAA,IAAI,CAAC,GAAG,KAAA,EAAO;AACb,QAAA,UAAA,CAAW,aAAA,EAAe,CAAA,uBAAA,EAA0B,KAAA,CAAM,MAAM,CAAA,CAAE,CAAA;AAAA,MACpE;AACA,MAAA,SAAA,CAAU,QAAQ,EAAA,CAAG,KAAA;AAAA,IACvB;AAEA,IAAA,YAAA,EAAa;AAAA,EACf,CAAC,CAAA;AAED,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}