UNPKG

@ozen-ui/kit

Version:

React component library

43 lines (42 loc) 1.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useBreakpointsObserver = useBreakpointsObserver; var react_1 = require("react"); var OzenProvider_1 = require("../../components/OzenProvider"); var breakpoint_1 = require("../../utils/breakpoint"); var useEventListener_1 = require("../useEventListener"); var useIsomorphicEffect_1 = require("../useIsomorphicEffect"); var useStoredValue_1 = require("../useStoredValue"); var useTheme_1 = require("../useTheme"); function useBreakpointsObserver(onChange) { var ssr = (0, OzenProvider_1.useOzenSSR)(); var theme = (0, useTheme_1.useTheme)(); var breakpointToken = theme.tokens.breakpoint; var matches = (0, useStoredValue_1.useStoredValue)(function () { if (ssr.config.isEnabled) { return (0, breakpoint_1.calculateBreakpoints)(breakpointToken, ssr.config.serverWidth); } return (0, breakpoint_1.calculateBreakpoints)(breakpointToken, window.innerWidth); }); var recalculateMatches = function (width) { var newMatches = (0, breakpoint_1.calculateBreakpoints)(breakpointToken, width); var hasChanges = newMatches.currentBreakpoint !== matches.current.currentBreakpoint; if (hasChanges) { matches.current = newMatches; onChange === null || onChange === void 0 ? void 0 : onChange(newMatches, width); } }; (0, react_1.useEffect)(function () { recalculateMatches(window.innerWidth); }, [theme]); (0, useEventListener_1.useEventListener)({ eventName: 'resize', handler: function () { recalculateMatches(window.innerWidth); }, }); (0, useIsomorphicEffect_1.useIsomorphicEffect)(function () { recalculateMatches(window.innerWidth); }, []); return matches; }