UNPKG

2.43 kBJavaScriptView Raw
1function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
3function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
4
5export var responsiveArray = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];
6export var responsiveMap = {
7 xs: '(max-width: 575px)',
8 sm: '(min-width: 576px)',
9 md: '(min-width: 768px)',
10 lg: '(min-width: 992px)',
11 xl: '(min-width: 1200px)',
12 xxl: '(min-width: 1600px)'
13};
14var subscribers = new Map();
15var subUid = -1;
16var screens = {};
17var responsiveObserve = {
18 matchHandlers: {},
19 dispatch: function dispatch(pointMap) {
20 screens = pointMap;
21 subscribers.forEach(function (func) {
22 return func(screens);
23 });
24 return subscribers.size >= 1;
25 },
26 subscribe: function subscribe(func) {
27 if (!subscribers.size) this.register();
28 subUid += 1;
29 subscribers.set(subUid, func);
30 func(screens);
31 return subUid;
32 },
33 unsubscribe: function unsubscribe(token) {
34 subscribers.delete(token);
35 if (!subscribers.size) this.unregister();
36 },
37 unregister: function unregister() {
38 var _this = this;
39
40 Object.keys(responsiveMap).forEach(function (screen) {
41 var matchMediaQuery = responsiveMap[screen];
42 var handler = _this.matchHandlers[matchMediaQuery];
43 handler === null || handler === void 0 ? void 0 : handler.mql.removeListener(handler === null || handler === void 0 ? void 0 : handler.listener);
44 });
45 subscribers.clear();
46 },
47 register: function register() {
48 var _this2 = this;
49
50 Object.keys(responsiveMap).forEach(function (screen) {
51 var matchMediaQuery = responsiveMap[screen];
52
53 var listener = function listener(_ref) {
54 var matches = _ref.matches;
55
56 _this2.dispatch(_extends(_extends({}, screens), _defineProperty({}, screen, matches)));
57 };
58
59 var mql = window.matchMedia(matchMediaQuery);
60 mql.addListener(listener);
61 _this2.matchHandlers[matchMediaQuery] = {
62 mql: mql,
63 listener: listener
64 };
65 listener(mql);
66 });
67 }
68};
69export default responsiveObserve;
\No newline at end of file