UNPKG

@ozen-ui/kit

Version:

React component library

69 lines (68 loc) 3.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useBreakpoints = useBreakpoints; var tslib_1 = require("tslib"); var react_1 = require("react"); var Breakpoints_1 = require("../../types/Breakpoints"); var useDeprecated_1 = require("../useDeprecated"); var useIsomorphicEffect_1 = require("../useIsomorphicEffect"); var breakpoint = { xs: '(min-width: 0px)', s: '(min-width: 640px)', m: '(min-width: 1024px)', l: '(min-width: 1280px)', }; /** * @deprecated Хук устарел. Для замены используйте useBreakpointsNext */ function useBreakpoints() { (0, useDeprecated_1.useDeprecatedHook)('useBreakpoints'); var _a = tslib_1.__read((0, react_1.useState)(Breakpoints_1.breakpointVariant.reduce(function (acc, key) { var _a; return (tslib_1.__assign(tslib_1.__assign({}, acc), (_a = {}, _a[key] = window.matchMedia(breakpoint[key]).matches, _a))); }, {})), 2), matches = _a[0], setMatches = _a[1]; var updateMatches = (0, react_1.useCallback)(function (key) { return function (e) { setMatches(function (prevMatches) { var _a; return (tslib_1.__assign(tslib_1.__assign({}, prevMatches), (_a = {}, _a[key] = e.matches, _a))); }); }; }, []); (0, useIsomorphicEffect_1.useIsomorphicEffect)(function () { var e_1, _a; var matchMedias = []; try { for (var breakpointVariant_1 = tslib_1.__values(Breakpoints_1.breakpointVariant), breakpointVariant_1_1 = breakpointVariant_1.next(); !breakpointVariant_1_1.done; breakpointVariant_1_1 = breakpointVariant_1.next()) { var key = breakpointVariant_1_1.value; var matchMedia_1 = window.matchMedia(breakpoint[key]); var func = updateMatches(key); matchMedia_1.addEventListener('change', func); matchMedias.push({ matchMedia: matchMedia_1, func: func }); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (breakpointVariant_1_1 && !breakpointVariant_1_1.done && (_a = breakpointVariant_1.return)) _a.call(breakpointVariant_1); } finally { if (e_1) throw e_1.error; } } return function () { var e_2, _a; try { for (var matchMedias_1 = tslib_1.__values(matchMedias), matchMedias_1_1 = matchMedias_1.next(); !matchMedias_1_1.done; matchMedias_1_1 = matchMedias_1.next()) { var _b = matchMedias_1_1.value, matchMedia_2 = _b.matchMedia, func = _b.func; matchMedia_2.removeEventListener('change', func); } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (matchMedias_1_1 && !matchMedias_1_1.done && (_a = matchMedias_1.return)) _a.call(matchMedias_1); } finally { if (e_2) throw e_2.error; } } }; }, []); (0, react_1.useDebugValue)(matches); return matches; }