UNPKG

@antdv/pro-utils

Version:

@antdv/pro-utils

60 lines (59 loc) 2.16 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var stdin_exports = {}; __export(stdin_exports, { useMediaQuery: () => useMediaQuery }); module.exports = __toCommonJS(stdin_exports); var import_vue = require("vue"); var import_tryOnScopeDispose = require("../tryOnScopeDispose"); var import_useSupported = require("../useSupported"); var import_utils = require("../utils"); function useMediaQuery(query) { const isSupported = (0, import_useSupported.useSupported)(() => window && "matchMedia" in window && typeof window.matchMedia === "function"); let mediaQuery; const matches = (0, import_vue.ref)(false); const handler = (event) => { matches.value = event.matches; }; const cleanup = () => { if (!mediaQuery) return; if ("removeEventListener" in mediaQuery) mediaQuery.removeEventListener("change", handler); else mediaQuery.removeListener(handler); }; const stopWatch = (0, import_vue.watchEffect)(() => { if (!isSupported.value) return; cleanup(); mediaQuery = window.matchMedia((0, import_utils.toValue)(query)); if ("addEventListener" in mediaQuery) mediaQuery.addEventListener("change", handler); else mediaQuery.addListener(handler); matches.value = mediaQuery.matches; }); (0, import_tryOnScopeDispose.tryOnScopeDispose)(() => { stopWatch(); cleanup(); mediaQuery = void 0; }); return matches; }