Skip to content

Commit 3ee4231

Browse files
fix ssr rendering issue of element-resize-detector package
1 parent ceefe6d commit 3ee4231

File tree

5 files changed

+41
-39
lines changed

5 files changed

+41
-39
lines changed

package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/plugins/moreButtonPlugin/show-more-tabs/element-resize-detector-adapter.js

+33-32
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,37 @@
11
import elementResizeDetectorMaker from 'element-resize-detector';
2-
const resizerIns = elementResizeDetectorMaker({
3-
strategy: 'scroll',
4-
callOnAdd: true,
5-
});
6-
const getRaf = () => {
7-
const w = window;
8-
return (
9-
w.requestAnimationFrame ||
10-
w.webkitRequestAnimationFrame ||
11-
w.mozRequestAnimationFrame ||
12-
w.oRequestAnimationFrame ||
13-
w.msRequestAnimationFrame ||
14-
function (callback) {
15-
w.setTimeout(callback, 1000 / 60);
16-
}
17-
);
18-
};
19-
resizerIns.debncListenTo = (el, callback) => {
20-
return resizerIns.listenTo(
21-
el,
22-
(function (func, wait) {
23-
let timeout;
24-
return function (...args) {
25-
const later = () => {
2+
export default () => {
3+
const resizerIns = elementResizeDetectorMaker({
4+
strategy: 'scroll',
5+
callOnAdd: true,
6+
});
7+
const getRaf = () => {
8+
const w = window;
9+
return (
10+
w.requestAnimationFrame ||
11+
w.webkitRequestAnimationFrame ||
12+
w.mozRequestAnimationFrame ||
13+
w.oRequestAnimationFrame ||
14+
w.msRequestAnimationFrame ||
15+
function (callback) {
16+
w.setTimeout(callback, 1000 / 60);
17+
}
18+
);
19+
};
20+
resizerIns.debncListenTo = (el, callback) => {
21+
return resizerIns.listenTo(
22+
el,
23+
(function (func, wait) {
24+
let timeout;
25+
return function (...args) {
26+
const later = () => {
27+
clearTimeout(timeout);
28+
getRaf()(() => func(...args));
29+
};
2630
clearTimeout(timeout);
27-
getRaf()(() => func(...args));
31+
timeout = setTimeout(later, wait);
2832
};
29-
clearTimeout(timeout);
30-
timeout = setTimeout(later, wait);
31-
};
32-
})(callback, 10),
33-
);
33+
})(callback, 10),
34+
);
35+
};
36+
return resizerIns;
3437
};
35-
36-
export default resizerIns;

src/plugins/moreButtonPlugin/show-more-tabs/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import React from 'react';
22
import Api from './api.js';
3-
import resizeDetectorIns from './element-resize-detector-adapter.js';
3+
import getResizeDetectorIns from './element-resize-detector-adapter.js';
44
import tabsMoreButton from 'tabs-more-button';
55
import ShowMoreTabs from './show-more-tabs.js';
66
const getDeps = () => {
77
return {
8-
resizeDetectorIns,
8+
getResizeDetectorIns,
99
getInstance: (ctx, setHiddenTabIDs) =>
1010
new Api({
1111
setHiddenTabIDs,

src/plugins/moreButtonPlugin/show-more-tabs/show-more-tabs.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
33
export default function ShowMoreTabs(getDeps, props) {
44
const {ctx, openTabIDs, selectedTabID} = props;
55
const [hiddenTabIDs, setHiddenTabIDs] = useState('');
6-
const {getInstance, resizeDetectorIns} = getDeps();
6+
const {getInstance, getResizeDetectorIns} = getDeps();
77
const ref = useRef();
88
ref.current = ref.current || {ins: getInstance(ctx, setHiddenTabIDs)};
99
const ins = ref.current.ins;
@@ -12,6 +12,7 @@ export default function ShowMoreTabs(getDeps, props) {
1212
ins.setResizer();
1313
}, []);
1414
useLayoutEffect(() => {
15+
const resizeDetectorIns = getResizeDetectorIns();
1516
ins.installResizer(resizeDetectorIns);
1617
return () => {
1718
ins.uninstallResizer(resizeDetectorIns);

src/plugins/moreButtonPlugin/show-more-tabs/show-more-tabs.test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ beforeEach(() => {
5555
insProperties,
5656
);
5757
};
58-
const resizeDetectorIns = deps.resizeDetectorIns || {};
59-
const ShowMoreButton = ShowMoreTabsComponent.bind(undefined, () => ({getInstance, resizeDetectorIns}));
58+
const getResizeDetectorIns = deps.getResizeDetectorIns || (() => ({}));
59+
const ShowMoreButton = ShowMoreTabsComponent.bind(undefined, () => ({getInstance, getResizeDetectorIns}));
6060
if (snapshot) {
6161
return <ShowMoreButton {...props}></ShowMoreButton>;
6262
}

0 commit comments

Comments
 (0)