27 lines
891 B
JavaScript
27 lines
891 B
JavaScript
import { useEventListener } from '@vueuse/core';
|
|
import { onMounted } from 'vue';
|
|
import cssVariables from '../styles/_variables.module.scss';
|
|
export var DeviceType;
|
|
(function (DeviceType) {
|
|
DeviceType["MOBILE"] = "mobile";
|
|
})(DeviceType || (DeviceType = {}));
|
|
const DeviceTypeMap = {
|
|
[DeviceType.MOBILE]: Number.parseInt(cssVariables.mobile.replace('px', ''), 10),
|
|
};
|
|
/**
|
|
* add listener to detect screen though device type
|
|
*/
|
|
export const useUpdateDeviceStatus = (deviceType, callback) => {
|
|
const width = DeviceTypeMap[deviceType];
|
|
if (!Number.isInteger(width)) {
|
|
if (__VUEPRESS_DEV__)
|
|
throw new Error('device width must be a integer');
|
|
return;
|
|
}
|
|
useEventListener('orientationchange', () => callback(width), false);
|
|
useEventListener('resize', () => callback(width), false);
|
|
onMounted(() => {
|
|
callback(width);
|
|
});
|
|
};
|