import { throwError } from "../../../utils/error.mjs";
import { useEventListener } from "../../../../node_modules/@vueuse/core/index.mjs";
import { shallowRef, ref, onMounted } from "vue";
import { useThrottleFn } from "../../../../node_modules/@vueuse/shared/index.mjs";
const useBackTop = (props, emit, componentName) => {
  const el = shallowRef();
  const container = shallowRef();
  const visible = ref(false);
  const handleScroll = () => {
    if (el.value) visible.value = el.value.scrollTop >= props.visibilityHeight;
  };
  const handleClick = (event) => {
    var _a;
    (_a = el.value) == null ? void 0 : _a.scrollTo({
      top: 0,
      behavior: "smooth"
    });
    emit("click", event);
  };
  useEventListener(container, "scroll", useThrottleFn(handleScroll, 300, true));
  onMounted(() => {
    container.value = document;
    el.value = document.documentElement;
    if (props.target) {
      el.value = document.querySelector(props.target) ?? void 0;
      if (!el.value) throwError(componentName, `target does not exist: ${props.target}`);
      container.value = el.value;
    }
    handleScroll();
  });
  return {
    visible,
    handleClick
  };
};
export {
  useBackTop
};
