UNPKG

antd

Version:

An enterprise-class UI design language and React components implementation

81 lines (71 loc) 2.49 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.responsiveMap = exports.responsiveArray = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var responsiveArray = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs']; exports.responsiveArray = responsiveArray; var responsiveMap = { xs: '(max-width: 575px)', sm: '(min-width: 576px)', md: '(min-width: 768px)', lg: '(min-width: 992px)', xl: '(min-width: 1200px)', xxl: '(min-width: 1600px)' }; exports.responsiveMap = responsiveMap; var subscribers = new Map(); var subUid = -1; var screens = {}; var responsiveObserve = { matchHandlers: {}, dispatch: function dispatch(pointMap) { screens = pointMap; subscribers.forEach(function (func) { return func(screens); }); return subscribers.size >= 1; }, subscribe: function subscribe(func) { if (!subscribers.size) this.register(); subUid += 1; subscribers.set(subUid, func); func(screens); return subUid; }, unsubscribe: function unsubscribe(token) { subscribers["delete"](token); if (!subscribers.size) this.unregister(); }, unregister: function unregister() { var _this = this; Object.keys(responsiveMap).forEach(function (screen) { var matchMediaQuery = responsiveMap[screen]; var handler = _this.matchHandlers[matchMediaQuery]; handler === null || handler === void 0 ? void 0 : handler.mql.removeListener(handler === null || handler === void 0 ? void 0 : handler.listener); }); subscribers.clear(); }, register: function register() { var _this2 = this; Object.keys(responsiveMap).forEach(function (screen) { var matchMediaQuery = responsiveMap[screen]; var listener = function listener(_ref) { var matches = _ref.matches; _this2.dispatch((0, _extends3["default"])((0, _extends3["default"])({}, screens), (0, _defineProperty2["default"])({}, screen, matches))); }; var mql = window.matchMedia(matchMediaQuery); mql.addListener(listener); _this2.matchHandlers[matchMediaQuery] = { mql: mql, listener: listener }; listener(mql); }); } }; var _default = responsiveObserve; exports["default"] = _default;