Skip to content

Commit 2cbc72f

Browse files
committed
chore: remove require
1 parent d57a2ac commit 2cbc72f

File tree

23 files changed

+178
-208
lines changed

23 files changed

+178
-208
lines changed

antdv-demo

components/_util/responsiveObserve.js

Lines changed: 33 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,3 @@
1-
// matchMedia polyfill for
2-
// https://github.com/WickyNilliams/enquire.js/issues/82
3-
let enquire;
4-
5-
// TODO: Will be removed in antd 4.0 because we will no longer support ie9
6-
if (typeof window !== 'undefined') {
7-
const matchMediaPolyfill = mediaQuery => {
8-
return {
9-
media: mediaQuery,
10-
matches: false,
11-
addListener() {},
12-
removeListener() {},
13-
};
14-
};
15-
// ref: https://github.com/ant-design/ant-design/issues/18774
16-
if (!window.matchMedia) window.matchMedia = matchMediaPolyfill;
17-
// eslint-disable-next-line global-require
18-
enquire = require('enquire.js');
19-
}
20-
211
export const responsiveArray = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];
222

233
export const responsiveMap = {
@@ -29,65 +9,54 @@ export const responsiveMap = {
299
xxl: '(min-width: 1600px)',
3010
};
3111

32-
let subscribers = [];
12+
const subscribers = new Map();
3313
let subUid = -1;
3414
let screens = {};
3515

3616
const responsiveObserve = {
17+
matchHandlers: {},
3718
dispatch(pointMap) {
3819
screens = pointMap;
39-
if (subscribers.length < 1) {
40-
return false;
41-
}
42-
43-
subscribers.forEach(item => {
44-
item.func(screens);
45-
});
46-
47-
return true;
20+
subscribers.forEach(func => func(screens));
21+
return subscribers.size >= 1;
4822
},
4923
subscribe(func) {
50-
if (subscribers.length === 0) {
51-
this.register();
52-
}
53-
const token = (++subUid).toString();
54-
subscribers.push({
55-
token,
56-
func,
57-
});
24+
if (!subscribers.size) this.register();
25+
subUid += 1;
26+
subscribers.set(subUid, func);
5827
func(screens);
59-
return token;
28+
return subUid;
6029
},
6130
unsubscribe(token) {
62-
subscribers = subscribers.filter(item => item.token !== token);
63-
if (subscribers.length === 0) {
64-
this.unregister();
65-
}
31+
subscribers.delete(token);
32+
if (!subscribers.size) this.unregister();
6633
},
6734
unregister() {
68-
Object.keys(responsiveMap).map(screen => enquire.unregister(responsiveMap[screen]));
35+
Object.keys(responsiveMap).forEach(screen => {
36+
const matchMediaQuery = responsiveMap[screen];
37+
const handler = this.matchHandlers[matchMediaQuery];
38+
handler?.mql.removeListener(handler?.listener);
39+
});
40+
subscribers.clear();
6941
},
7042
register() {
71-
Object.keys(responsiveMap).map(screen =>
72-
enquire.register(responsiveMap[screen], {
73-
match: () => {
74-
const pointMap = {
75-
...screens,
76-
[screen]: true,
77-
};
78-
this.dispatch(pointMap);
79-
},
80-
unmatch: () => {
81-
const pointMap = {
82-
...screens,
83-
[screen]: false,
84-
};
85-
this.dispatch(pointMap);
86-
},
87-
// Keep a empty destroy to avoid triggering unmatch when unregister
88-
destroy() {},
89-
}),
90-
);
43+
Object.keys(responsiveMap).forEach(screen => {
44+
const matchMediaQuery = responsiveMap[screen];
45+
const listener = ({ matches }) => {
46+
this.dispatch({
47+
...screens,
48+
[screen]: matches,
49+
});
50+
};
51+
const mql = window.matchMedia(matchMediaQuery);
52+
mql.addListener(listener);
53+
this.matchHandlers[matchMediaQuery] = {
54+
mql,
55+
listener,
56+
};
57+
58+
listener(mql);
59+
});
9160
},
9261
};
9362

components/carousel/__tests__/__snapshots__/demo.test.js.snap

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -314,28 +314,28 @@ exports[`renders ./antdv-demo/docs/carousel/demo/fade.md correctly 1`] = `
314314
<!---->
315315
<div class="slick-list">
316316
<div class="slick-track" style="width: 900%; left: -100%;">
317-
<div tabindex="-1" data-index="0" aria-hidden="false" class="slick-slide slick-active slick-current" style="outline: none; position: relative; opacity: 1; transition: opacity 500ms ease, visibility 500ms ease; width: 11.11111111111111%; left: 0px;">
317+
<div tabindex="-1" data-index="0" aria-hidden="false" class="slick-slide slick-active slick-current" style="outline: none; width: 11.11111111111111%; position: relative; left: 0px; opacity: 1; transition: opacity 500ms ease, visibility 500ms ease;">
318318
<div>
319319
<div tabindex="-1" style="width: 100%; display: inline-block;">
320320
<h3>1</h3>
321321
</div>
322322
</div>
323323
</div>
324-
<div tabindex="-1" data-index="1" aria-hidden="true" class="slick-slide" style="outline: none; position: relative; opacity: 0; transition: opacity 500ms ease, visibility 500ms ease; width: 11.11111111111111%; left: -11px;">
324+
<div tabindex="-1" data-index="1" aria-hidden="true" class="slick-slide" style="outline: none; width: 11.11111111111111%; position: relative; left: -11px; opacity: 0; transition: opacity 500ms ease, visibility 500ms ease;">
325325
<div>
326326
<div tabindex="-1" style="width: 100%; display: inline-block;">
327327
<h3>2</h3>
328328
</div>
329329
</div>
330330
</div>
331-
<div tabindex="-1" data-index="2" aria-hidden="true" class="slick-slide" style="outline: none; position: relative; opacity: 0; transition: opacity 500ms ease, visibility 500ms ease; width: 11.11111111111111%; left: -22px;">
331+
<div tabindex="-1" data-index="2" aria-hidden="true" class="slick-slide" style="outline: none; width: 11.11111111111111%; position: relative; left: -22px; opacity: 0; transition: opacity 500ms ease, visibility 500ms ease;">
332332
<div>
333333
<div tabindex="-1" style="width: 100%; display: inline-block;">
334334
<h3>3</h3>
335335
</div>
336336
</div>
337337
</div>
338-
<div tabindex="-1" data-index="3" aria-hidden="true" class="slick-slide" style="outline: none; position: relative; opacity: 0; transition: opacity 500ms ease, visibility 500ms ease; width: 11.11111111111111%; left: -33px;">
338+
<div tabindex="-1" data-index="3" aria-hidden="true" class="slick-slide" style="outline: none; width: 11.11111111111111%; position: relative; left: -33px; opacity: 0; transition: opacity 500ms ease, visibility 500ms ease;">
339339
<div>
340340
<div tabindex="-1" style="width: 100%; display: inline-block;">
341341
<h3>4</h3>

components/carousel/index.jsx

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,7 @@ import hasProp, { initDefaultProps, getComponent } from '../_util/props-util';
55
import { ConfigConsumerProps } from '../config-provider';
66
import warning from '../_util/warning';
77
import classNames from 'classnames';
8-
9-
// matchMedia polyfill for
10-
// https://github.com/WickyNilliams/enquire.js/issues/82
11-
if (typeof window !== 'undefined') {
12-
const matchMediaPolyfill = mediaQuery => {
13-
return {
14-
media: mediaQuery,
15-
matches: false,
16-
addListener() {},
17-
removeListener() {},
18-
};
19-
};
20-
// ref: https://github.com/ant-design/ant-design/issues/18774
21-
if (!window.matchMedia) window.matchMedia = matchMediaPolyfill;
22-
}
23-
// Use require over import (will be lifted up)
24-
// make sure matchMedia polyfill run before require('vc-slick')
25-
// Fix https://github.com/ant-design/ant-design/issues/6560
26-
// Fix https://github.com/ant-design/ant-design/issues/3308
27-
const SlickCarousel = require('../vc-slick/src').default;
8+
import SlickCarousel from '../vc-slick/src';
289

2910
export const CarouselEffect = PropTypes.oneOf(['scrollx', 'fade']);
3011
// Carousel

0 commit comments

Comments
 (0)