useBreakpoint.js 1.1 KB

12345678910111213141516171819202122232425262728
  1. "use strict";
  2. "use client";
  3. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  4. Object.defineProperty(exports, "__esModule", {
  5. value: true
  6. });
  7. exports.default = void 0;
  8. var _react = require("react");
  9. var _useLayoutEffect = _interopRequireDefault(require("rc-util/lib/hooks/useLayoutEffect"));
  10. var _useForceUpdate = _interopRequireDefault(require("../../_util/hooks/useForceUpdate"));
  11. var _responsiveObserver = _interopRequireDefault(require("../../_util/responsiveObserver"));
  12. function useBreakpoint(refreshOnChange = true, defaultScreens = {}) {
  13. const screensRef = (0, _react.useRef)(defaultScreens);
  14. const forceUpdate = (0, _useForceUpdate.default)();
  15. const responsiveObserver = (0, _responsiveObserver.default)();
  16. (0, _useLayoutEffect.default)(() => {
  17. const token = responsiveObserver.subscribe(supportScreens => {
  18. screensRef.current = supportScreens;
  19. if (refreshOnChange) {
  20. forceUpdate();
  21. }
  22. });
  23. return () => responsiveObserver.unsubscribe(token);
  24. }, []);
  25. return screensRef.current;
  26. }
  27. var _default = exports.default = useBreakpoint;