@fe6/water-pro
Version:
An enterprise-class UI design language and Vue-based implementation
103 lines (84 loc) • 2.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useBreakpoint = useBreakpoint;
exports.createBreakpointListen = createBreakpointListen;
var _vue = require("vue");
var _useEventListener = require("../../../_util/hooks/use-event-listener");
var _breakpoint = require("../enums/breakpoint");
/** @format */
var globalScreenRef;
var globalWidthRef;
var globalRealWidthRef;
function useBreakpoint() {
return {
screenRef: (0, _vue.computed)(function () {
return (0, _vue.unref)(globalScreenRef);
}),
widthRef: globalWidthRef,
screenEnum: _breakpoint.screenEnum,
realWidthRef: globalRealWidthRef
};
} // Just call it once
function createBreakpointListen(fn) {
var screenRef = (0, _vue.ref)(_breakpoint.sizeEnum.XL);
var realWidthRef = (0, _vue.ref)(window.innerWidth);
function getWindowWidth() {
var width = document.body.clientWidth;
var xs = _breakpoint.screenMap.get(_breakpoint.sizeEnum.XS);
var sm = _breakpoint.screenMap.get(_breakpoint.sizeEnum.SM);
var md = _breakpoint.screenMap.get(_breakpoint.sizeEnum.MD);
var lg = _breakpoint.screenMap.get(_breakpoint.sizeEnum.LG);
var xl = _breakpoint.screenMap.get(_breakpoint.sizeEnum.XL);
if (width < xs) {
screenRef.value = _breakpoint.sizeEnum.XS;
} else if (width < sm) {
screenRef.value = _breakpoint.sizeEnum.SM;
} else if (width < md) {
screenRef.value = _breakpoint.sizeEnum.MD;
} else if (width < lg) {
screenRef.value = _breakpoint.sizeEnum.LG;
} else if (width < xl) {
screenRef.value = _breakpoint.sizeEnum.XL;
} else {
screenRef.value = _breakpoint.sizeEnum.XXL;
}
realWidthRef.value = width;
}
(0, _useEventListener.useEventListener)({
el: window,
name: 'resize',
listener: function listener() {
getWindowWidth();
resizeFn();
}
});
getWindowWidth();
globalScreenRef = (0, _vue.computed)(function () {
return (0, _vue.unref)(screenRef);
});
globalWidthRef = (0, _vue.computed)(function () {
return _breakpoint.screenMap.get((0, _vue.unref)(screenRef));
});
globalRealWidthRef = (0, _vue.computed)(function () {
return (0, _vue.unref)(realWidthRef);
});
function resizeFn() {
fn === null || fn === void 0 ? void 0 : fn({
screen: globalScreenRef,
width: globalWidthRef,
realWidth: globalRealWidthRef,
screenEnum: _breakpoint.screenEnum,
screenMap: _breakpoint.screenMap,
sizeEnum: _breakpoint.sizeEnum
});
}
resizeFn();
return {
screenRef: globalScreenRef,
screenEnum: _breakpoint.screenEnum,
widthRef: globalWidthRef,
realWidthRef: globalRealWidthRef
};
}