use-backtop.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
  2. const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
  3. const require_error = require('../../../utils/error.js');
  4. let _vueuse_core = require("@vueuse/core");
  5. let vue = require("vue");
  6. //#region ../../packages/components/backtop/src/use-backtop.ts
  7. const useBackTop = (props, emit, componentName) => {
  8. const el = (0, vue.shallowRef)();
  9. const container = (0, vue.shallowRef)();
  10. const visible = (0, vue.ref)(false);
  11. const handleScroll = () => {
  12. if (el.value) visible.value = el.value.scrollTop >= props.visibilityHeight;
  13. };
  14. const handleClick = (event) => {
  15. el.value?.scrollTo({
  16. top: 0,
  17. behavior: "smooth"
  18. });
  19. emit("click", event);
  20. };
  21. (0, _vueuse_core.useEventListener)(container, "scroll", (0, _vueuse_core.useThrottleFn)(handleScroll, 300, true));
  22. (0, vue.onMounted)(() => {
  23. container.value = document;
  24. el.value = document.documentElement;
  25. if (props.target) {
  26. el.value = document.querySelector(props.target) ?? void 0;
  27. if (!el.value) require_error.throwError(componentName, `target does not exist: ${props.target}`);
  28. container.value = el.value;
  29. }
  30. handleScroll();
  31. });
  32. return {
  33. visible,
  34. handleClick
  35. };
  36. };
  37. //#endregion
  38. exports.useBackTop = useBackTop;
  39. //# sourceMappingURL=use-backtop.js.map