tav-ui
Version:
73 lines (70 loc) • 2.01 kB
JavaScript
import { computed, unref, ref } from 'vue';
import { screenEnum, sizeEnum, screenMap } from '../../enums/breakpointEnum2.mjs';
import { useEventListener } from './useEventListener2.mjs';
let globalScreenRef;
let globalWidthRef;
let globalRealWidthRef;
function useBreakpoint() {
return {
screenRef: computed(() => unref(globalScreenRef)),
widthRef: globalWidthRef,
screenEnum,
realWidthRef: globalRealWidthRef
};
}
function createBreakpointListen(fn) {
const screenRef = ref(sizeEnum.XL);
const realWidthRef = ref(window.innerWidth);
function getWindowWidth() {
const width = document.body.clientWidth;
const xs = screenMap.get(sizeEnum.XS);
const sm = screenMap.get(sizeEnum.SM);
const md = screenMap.get(sizeEnum.MD);
const lg = screenMap.get(sizeEnum.LG);
const xl = screenMap.get(sizeEnum.XL);
if (width < xs)
screenRef.value = sizeEnum.XS;
else if (width < sm)
screenRef.value = sizeEnum.SM;
else if (width < md)
screenRef.value = sizeEnum.MD;
else if (width < lg)
screenRef.value = sizeEnum.LG;
else if (width < xl)
screenRef.value = sizeEnum.XL;
else
screenRef.value = sizeEnum.XXL;
realWidthRef.value = width;
}
useEventListener({
el: window,
name: "resize",
listener: () => {
getWindowWidth();
resizeFn();
}
});
getWindowWidth();
globalScreenRef = computed(() => unref(screenRef));
globalWidthRef = computed(() => screenMap.get(unref(screenRef)));
globalRealWidthRef = computed(() => unref(realWidthRef));
function resizeFn() {
fn?.({
screen: globalScreenRef,
width: globalWidthRef,
realWidth: globalRealWidthRef,
screenEnum,
screenMap,
sizeEnum
});
}
resizeFn();
return {
screenRef: globalScreenRef,
screenEnum,
widthRef: globalWidthRef,
realWidthRef: globalRealWidthRef
};
}
export { createBreakpointListen, useBreakpoint };
//# sourceMappingURL=useBreakpoint2.mjs.map