You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.4 KiB
81 lines
2.4 KiB
"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; |