/** 视窗匹配回调函数 */
export const matchMedia = (
  type: "sm" | "md" | "lg" | string,
  matchFunc?: Function,
  mismatchFunc?: Function
) => {
  if (type === "sm") {
    if (window.matchMedia("(max-width: 767.98px)").matches) {
      /* 窗口小于或等于 */
      matchFunc?.();
    } else {
      mismatchFunc?.();
    }
  } else if (type === "md") {
    if (window.matchMedia("(max-width: 992px)").matches) {
      /* 窗口小于或等于 */
      matchFunc?.();
    } else {
      mismatchFunc?.();
    }
  } else if (type === "lg") {
    if (window.matchMedia("(max-width: 1200px)").matches) {
      /* 窗口小于或等于 */
      matchFunc?.();
    } else {
      mismatchFunc?.();
    }
  } else {
    if (window.matchMedia(`(max-width: ${type}px)`).matches) {
      /* 窗口小于或等于 */
      matchFunc?.();
    } else {
      mismatchFunc?.();
    }
  }
};

/** 获取视窗宽度 */
export const useWindowWidth = () => {
  const width = ref(window.innerWidth);

  const updateWidth = () => {
    width.value = window.innerWidth;
  };

  onMounted(() => {
    window.addEventListener("resize", updateWidth);
  });

  onUnmounted(() => {
    window.removeEventListener("resize", updateWidth);
  });

  return width;
};
