@zohodesk/components 1.2.28 → 1.2.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cli/PropLessFiles.html +1 -1
- package/.cli/propValidation_report.html +1 -1
- package/README.md +4 -0
- package/es/v1/Animation/Animation.js +1 -1
- package/es/v1/Card/Card.js +1 -1
- package/es/v1/CheckBox/CheckBox.js +1 -1
- package/es/v1/DropBox/utils/isMobilePopover.js +1 -1
- package/es/v1/ListItem/ListContainer.js +1 -1
- package/es/v1/MultiSelect/AdvancedGroupMultiSelect.js +1 -1
- package/es/v1/MultiSelect/AdvancedMultiSelect.js +1 -1
- package/es/v1/MultiSelect/MultiSelectWithAvatar.js +1 -1
- package/es/v1/MultiSelect/props/defaultProps.js +1 -1
- package/es/v1/ResponsiveDropBox/ResponsiveDropBox.js +1 -1
- package/es/v1/Select/GroupSelect.js +1 -1
- package/es/v1/Select/Select.js +1 -1
- package/es/v1/Select/SelectWithAvatar.js +1 -1
- package/es/v1/Select/SelectWithIcon.js +1 -1
- package/es/v1/Select/props/defaultProps.js +1 -1
- package/es/v1/Tab/Tabs.js +2 -2
- package/es/v1/Tooltip/Tooltip.js +1 -1
- package/lib/v1/Animation/Animation.js +1 -1
- package/lib/v1/Card/Card.js +1 -1
- package/lib/v1/CheckBox/CheckBox.js +1 -1
- package/lib/v1/DropBox/utils/isMobilePopover.js +1 -1
- package/lib/v1/ListItem/ListContainer.js +1 -1
- package/lib/v1/MultiSelect/AdvancedGroupMultiSelect.js +1 -1
- package/lib/v1/MultiSelect/AdvancedMultiSelect.js +1 -1
- package/lib/v1/MultiSelect/props/defaultProps.js +1 -1
- package/lib/v1/ResponsiveDropBox/ResponsiveDropBox.js +1 -1
- package/lib/v1/Select/GroupSelect.js +1 -1
- package/lib/v1/Select/Select.js +1 -1
- package/lib/v1/Select/SelectWithAvatar.js +1 -1
- package/lib/v1/Select/SelectWithIcon.js +1 -1
- package/lib/v1/Select/props/defaultProps.js +1 -1
- package/lib/v1/Tab/Tabs.js +2 -2
- package/lib/v1/Tooltip/Tooltip.js +1 -1
- package/package.json +2 -2
- package/result.json +1 -1
- package/es/v1/Provider/AvatarSize.js +0 -13
- package/es/v1/Provider/Config.js +0 -18
- package/es/v1/Provider/CssProvider.js +0 -16
- package/es/v1/Provider/IdProvider.js +0 -66
- package/es/v1/Provider/LibraryContext.js +0 -37
- package/es/v1/Provider/LibraryContextInit.js +0 -3
- package/es/v1/Provider/NumberGenerator/NumberGenerator.js +0 -136
- package/es/v1/Provider/ZindexProvider.js +0 -57
- package/es/v1/Provider/index.js +0 -4
- package/es/v1/Responsive/CustomResponsive.js +0 -195
- package/es/v1/Responsive/RefWrapper.js +0 -39
- package/es/v1/Responsive/ResizeComponent.js +0 -197
- package/es/v1/Responsive/ResizeObserver.js +0 -140
- package/es/v1/Responsive/Responsive.js +0 -194
- package/es/v1/Responsive/index.js +0 -9
- package/es/v1/Responsive/props/defaultProps.js +0 -13
- package/es/v1/Responsive/props/propTypes.js +0 -25
- package/lib/v1/Provider/AvatarSize.js +0 -24
- package/lib/v1/Provider/Config.js +0 -27
- package/lib/v1/Provider/CssProvider.js +0 -27
- package/lib/v1/Provider/IdProvider.js +0 -79
- package/lib/v1/Provider/LibraryContext.js +0 -76
- package/lib/v1/Provider/LibraryContextInit.js +0 -15
- package/lib/v1/Provider/NumberGenerator/NumberGenerator.js +0 -174
- package/lib/v1/Provider/ZindexProvider.js +0 -69
- package/lib/v1/Provider/index.js +0 -81
- package/lib/v1/Responsive/CustomResponsive.js +0 -242
- package/lib/v1/Responsive/RefWrapper.js +0 -57
- package/lib/v1/Responsive/ResizeComponent.js +0 -268
- package/lib/v1/Responsive/ResizeObserver.js +0 -168
- package/lib/v1/Responsive/Responsive.js +0 -274
- package/lib/v1/Responsive/index.js +0 -55
- package/lib/v1/Responsive/props/defaultProps.js +0 -23
- package/lib/v1/Responsive/props/propTypes.js +0 -39
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import style from '../../common/avatarsizes.module.css';
|
|
2
|
-
let styleList = {
|
|
3
|
-
small: style.small,
|
|
4
|
-
xsmall: style.xsmall,
|
|
5
|
-
xxsmall: style.xxsmall,
|
|
6
|
-
medium: style.medium,
|
|
7
|
-
xmedium: style.xmedium,
|
|
8
|
-
large: style.large,
|
|
9
|
-
xlarge: style.xlarge
|
|
10
|
-
};
|
|
11
|
-
export default function CssProvider(name) {
|
|
12
|
-
return styleList[name] || '';
|
|
13
|
-
}
|
package/es/v1/Provider/Config.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
let id = {
|
|
2
|
-
mobileWidth: 640,
|
|
3
|
-
zindexCounter: 3,
|
|
4
|
-
idCounter: 0,
|
|
5
|
-
idPrefix: 'ZD',
|
|
6
|
-
scrollFetchLimit: 80,
|
|
7
|
-
isReducedMotion: false,
|
|
8
|
-
direction: 'ltr',
|
|
9
|
-
tooltipDebounce: 175,
|
|
10
|
-
getTooltipContainer: () => {},
|
|
11
|
-
autoComplete: false
|
|
12
|
-
};
|
|
13
|
-
export function getLibraryConfig(key) {
|
|
14
|
-
return id[key];
|
|
15
|
-
}
|
|
16
|
-
export function setLibraryConfig(configObj) {
|
|
17
|
-
id = Object.assign({}, id, configObj);
|
|
18
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import style from '../../common/common.module.css';
|
|
2
|
-
let styleList = {
|
|
3
|
-
hide: style.hide,
|
|
4
|
-
isDisabled: style.disabled,
|
|
5
|
-
isDisable: style.disable,
|
|
6
|
-
isBlock: style.blockEvent,
|
|
7
|
-
isFlexible: style.flexgrow,
|
|
8
|
-
dotted: style.dotted,
|
|
9
|
-
vMiddle: style.yMiddle,
|
|
10
|
-
hMiddle: style.xMiddle,
|
|
11
|
-
smooth: style.ftsmooth,
|
|
12
|
-
clamp: style.clamp
|
|
13
|
-
};
|
|
14
|
-
export default function CssProvider(name) {
|
|
15
|
-
return styleList[name] || '';
|
|
16
|
-
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { useNumberGenerator, getNumberGenerators } from './NumberGenerator/NumberGenerator';
|
|
2
|
-
import { getLibraryConfig } from './Config';
|
|
3
|
-
let globalId = getLibraryConfig('idCounter'),
|
|
4
|
-
deletedIndexes = [],
|
|
5
|
-
globalPrefix;
|
|
6
|
-
export function setGlobalIdPrefix(value) {
|
|
7
|
-
globalPrefix = value;
|
|
8
|
-
}
|
|
9
|
-
export function removeGlobalIdPrefix() {
|
|
10
|
-
globalPrefix = undefined;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
function getGlobalIdPrefix() {
|
|
14
|
-
return globalPrefix;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
function setGlobalId(id) {
|
|
18
|
-
globalId = id;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function getGlobalId() {
|
|
22
|
-
return globalId;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function setDeletedIndexes(array) {
|
|
26
|
-
deletedIndexes = array;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function getDeletedIndexes() {
|
|
30
|
-
return deletedIndexes;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function callback(_ref) {
|
|
34
|
-
let {
|
|
35
|
-
globalId,
|
|
36
|
-
deletedIndexes
|
|
37
|
-
} = _ref;
|
|
38
|
-
setGlobalId(globalId);
|
|
39
|
-
setDeletedIndexes(deletedIndexes);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export function useUniqueId(prefix) {
|
|
43
|
-
return useNumberGenerator({
|
|
44
|
-
getGlobalId,
|
|
45
|
-
prefix,
|
|
46
|
-
getGlobalPrefix: getGlobalIdPrefix,
|
|
47
|
-
getDeletedIndexes,
|
|
48
|
-
callback
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
export function getUniqueId(Component, prefix) {
|
|
52
|
-
return getNumberGenerators({
|
|
53
|
-
Component,
|
|
54
|
-
prefix,
|
|
55
|
-
getGlobalPrefix: getGlobalIdPrefix,
|
|
56
|
-
getGlobalId,
|
|
57
|
-
getDeletedIndexes,
|
|
58
|
-
callback
|
|
59
|
-
});
|
|
60
|
-
} // let Provider = {
|
|
61
|
-
// docs: {
|
|
62
|
-
// componentGroup: 'Provider',
|
|
63
|
-
// folderName: 'Functions'
|
|
64
|
-
// }
|
|
65
|
-
// };
|
|
66
|
-
// export { Provider };
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import React, { useState, useEffect } from 'react';
|
|
2
|
-
import PropTypes from 'prop-types';
|
|
3
|
-
import LibraryContextInit from './LibraryContextInit';
|
|
4
|
-
import { getLibraryConfig } from './Config';
|
|
5
|
-
|
|
6
|
-
const LibraryContextProvider = _ref => {
|
|
7
|
-
let {
|
|
8
|
-
isReducedMotion = getLibraryConfig('isReducedMotion'),
|
|
9
|
-
direction = getLibraryConfig('direction'),
|
|
10
|
-
children
|
|
11
|
-
} = _ref;
|
|
12
|
-
const [value, setValue] = useState({
|
|
13
|
-
isReducedMotion,
|
|
14
|
-
direction
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
function setGlobalContext(key, data) {
|
|
18
|
-
if (value[key] != data) {
|
|
19
|
-
setValue({ ...value,
|
|
20
|
-
[key]: data
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
return /*#__PURE__*/React.createElement(LibraryContextInit.Provider, {
|
|
26
|
-
value: { ...value,
|
|
27
|
-
setGlobalContext
|
|
28
|
-
}
|
|
29
|
-
}, children);
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
LibraryContextProvider.propTypes = {
|
|
33
|
-
children: PropTypes.node.isRequired,
|
|
34
|
-
isReducedMotion: PropTypes.bool,
|
|
35
|
-
direction: PropTypes.string
|
|
36
|
-
};
|
|
37
|
-
export default LibraryContextProvider;
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import React, { useRef, useEffect } from 'react';
|
|
2
|
-
export function addGlobalId(globalId) {
|
|
3
|
-
if (Number.isSafeInteger(Number(globalId)) && Number.isSafeInteger(Number(globalId) + 1)) {
|
|
4
|
-
globalId = Number(globalId) + 1;
|
|
5
|
-
} else {
|
|
6
|
-
globalId = `${globalId}1`;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
return globalId;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
function decreaseGlobalId(number, globalId) {
|
|
13
|
-
if (`${number}` == `${globalId}`) {
|
|
14
|
-
if (Number.isSafeInteger(Number(globalId)) && Number.isSafeInteger(Number(globalId) - 1)) {
|
|
15
|
-
globalId = Number(globalId) - 1;
|
|
16
|
-
} else {
|
|
17
|
-
globalId = `${globalId}`;
|
|
18
|
-
globalId = globalId.substring(0, globalId.length - 1);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
return {
|
|
22
|
-
isDeleted: true,
|
|
23
|
-
globalId
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return {
|
|
28
|
-
isDeleted: false,
|
|
29
|
-
globalId
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export function decreaseGlobalIds(numbers, deletedIndexes, globalId) {
|
|
34
|
-
deletedIndexes = [...deletedIndexes];
|
|
35
|
-
[...numbers].reverse().map(number => {
|
|
36
|
-
let result = decreaseGlobalId(number, globalId);
|
|
37
|
-
globalId = result.globalId;
|
|
38
|
-
!result.isDeleted && deletedIndexes.push(number);
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
for (; deletedIndexes.indexOf(globalId) != -1;) {
|
|
42
|
-
let presentHighValue = globalId;
|
|
43
|
-
let result = decreaseGlobalId(globalId, globalId);
|
|
44
|
-
globalId = result.globalId;
|
|
45
|
-
deletedIndexes = deletedIndexes.filter(ele => `${ele}` != `${presentHighValue}`);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return {
|
|
49
|
-
globalId,
|
|
50
|
-
deletedIndexes
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
export function useNumberGenerator(_ref) {
|
|
54
|
-
let {
|
|
55
|
-
getGlobalId,
|
|
56
|
-
prefix,
|
|
57
|
-
getGlobalPrefix,
|
|
58
|
-
getDeletedIndexes,
|
|
59
|
-
callback
|
|
60
|
-
} = _ref;
|
|
61
|
-
let presentValues = useRef([]),
|
|
62
|
-
presentIndex = useRef(0);
|
|
63
|
-
prefix = typeof prefix === 'undefined' ? '' : `${prefix}_`;
|
|
64
|
-
let globalPrefix = typeof getGlobalPrefix() === 'undefined' ? '' : `${getGlobalPrefix()}_`;
|
|
65
|
-
|
|
66
|
-
function getNextId() {
|
|
67
|
-
presentIndex.current = presentIndex.current + 1;
|
|
68
|
-
let currentIndex = presentIndex.current;
|
|
69
|
-
let isValuePresent = typeof presentValues.current[currentIndex] !== 'undefined';
|
|
70
|
-
let result = isValuePresent ? presentValues.current[currentIndex] : presentValues.current[currentIndex] = addGlobalId(getGlobalId());
|
|
71
|
-
!isValuePresent && callback({
|
|
72
|
-
globalId: result,
|
|
73
|
-
deletedIndexes: getDeletedIndexes()
|
|
74
|
-
});
|
|
75
|
-
return `${globalPrefix}${prefix}${presentValues.current[currentIndex]}`;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
useEffect(() => {
|
|
79
|
-
presentValues.current = presentValues.current.filter((value, index) => index <= presentIndex.current);
|
|
80
|
-
});
|
|
81
|
-
useEffect(() => () => {
|
|
82
|
-
callback(decreaseGlobalIds(presentValues.current, getDeletedIndexes(), getGlobalId()));
|
|
83
|
-
}, []);
|
|
84
|
-
presentIndex.current = -1;
|
|
85
|
-
return getNextId;
|
|
86
|
-
}
|
|
87
|
-
export function getNumberGenerators(_ref2) {
|
|
88
|
-
let {
|
|
89
|
-
Component,
|
|
90
|
-
prefix,
|
|
91
|
-
getGlobalPrefix,
|
|
92
|
-
getGlobalId,
|
|
93
|
-
getDeletedIndexes,
|
|
94
|
-
callback
|
|
95
|
-
} = _ref2;
|
|
96
|
-
let presentIndex = 0,
|
|
97
|
-
presentValues = [],
|
|
98
|
-
{
|
|
99
|
-
name
|
|
100
|
-
} = Component.props;
|
|
101
|
-
let didUpdateRef = Component.componentDidUpdate ? Component.componentDidUpdate.bind(Component) : undefined,
|
|
102
|
-
renderRef = Component.render.bind(Component),
|
|
103
|
-
willUnMountRef = Component.componentWillUnmount ? Component.componentWillUnmount.bind(Component) : undefined;
|
|
104
|
-
prefix = typeof prefix !== 'undefined' ? `${prefix}_` : '';
|
|
105
|
-
|
|
106
|
-
Component.componentDidUpdate = function () {
|
|
107
|
-
didUpdateRef && didUpdateRef(...arguments);
|
|
108
|
-
presentValues = presentValues.filter((value, index) => index <= presentIndex);
|
|
109
|
-
};
|
|
110
|
-
|
|
111
|
-
Component.componentWillUnmount = function () {
|
|
112
|
-
callback(decreaseGlobalIds(presentValues, getDeletedIndexes(), getGlobalId()));
|
|
113
|
-
willUnMountRef && willUnMountRef();
|
|
114
|
-
didUpdateRef = null, renderRef = null, willUnMountRef = null;
|
|
115
|
-
};
|
|
116
|
-
|
|
117
|
-
Component.render = function () {
|
|
118
|
-
presentIndex = -1;
|
|
119
|
-
return renderRef();
|
|
120
|
-
};
|
|
121
|
-
|
|
122
|
-
function getNextId() {
|
|
123
|
-
presentIndex += 1;
|
|
124
|
-
let isValuePresent = typeof presentValues[presentIndex] !== 'undefined';
|
|
125
|
-
let result = isValuePresent ? presentValues[presentIndex] : presentValues[presentIndex] = addGlobalId(getGlobalId(getGlobalId()));
|
|
126
|
-
let globalPrefix = getGlobalPrefix();
|
|
127
|
-
globalPrefix = typeof globalPrefix === 'undefined' ? '' : `${globalPrefix}_`;
|
|
128
|
-
!isValuePresent && callback({
|
|
129
|
-
globalId: result,
|
|
130
|
-
deletedIndexes: getDeletedIndexes()
|
|
131
|
-
});
|
|
132
|
-
return `${globalPrefix}${prefix}${result}`;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
return getNextId;
|
|
136
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { useNumberGenerator, getNumberGenerators } from './NumberGenerator/NumberGenerator';
|
|
2
|
-
import { getLibraryConfig } from './Config';
|
|
3
|
-
let globalId = getLibraryConfig('zindexCounter'),
|
|
4
|
-
deletedIndexes = [],
|
|
5
|
-
globalPrefix;
|
|
6
|
-
export function removeGlobalZIndexPrefix() {
|
|
7
|
-
globalPrefix = undefined;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
function getGlobalZIndexPrefix() {
|
|
11
|
-
return globalPrefix;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export function setInitialZIndex(id) {
|
|
15
|
-
globalId = id;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function getGlobalId() {
|
|
19
|
-
return globalId;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
function setDeletedIndexes(array) {
|
|
23
|
-
deletedIndexes = array;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
function getDeletedIndexes() {
|
|
27
|
-
return deletedIndexes;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
function callback(_ref) {
|
|
31
|
-
let {
|
|
32
|
-
globalId,
|
|
33
|
-
deletedIndexes
|
|
34
|
-
} = _ref;
|
|
35
|
-
setInitialZIndex(globalId);
|
|
36
|
-
setDeletedIndexes(deletedIndexes);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export function useZIndex(prefix) {
|
|
40
|
-
return useNumberGenerator({
|
|
41
|
-
getGlobalId,
|
|
42
|
-
prefix,
|
|
43
|
-
getGlobalPrefix: getGlobalZIndexPrefix,
|
|
44
|
-
getDeletedIndexes,
|
|
45
|
-
callback
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
export function getZIndex(Component, prefix) {
|
|
49
|
-
return getNumberGenerators({
|
|
50
|
-
Component,
|
|
51
|
-
prefix,
|
|
52
|
-
getGlobalPrefix: getGlobalZIndexPrefix,
|
|
53
|
-
getGlobalId,
|
|
54
|
-
getDeletedIndexes,
|
|
55
|
-
callback
|
|
56
|
-
});
|
|
57
|
-
}
|
package/es/v1/Provider/index.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export { getLibraryConfig, setLibraryConfig } from './Config';
|
|
2
|
-
export { default as LibraryContextProvider } from './LibraryContext';
|
|
3
|
-
export { removeGlobalZIndexPrefix, setInitialZIndex, useZIndex, getZIndex } from './ZindexProvider';
|
|
4
|
-
export { setGlobalIdPrefix, removeGlobalIdPrefix, useUniqueId, getUniqueId } from './IdProvider';
|
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
import React, { useContext, useEffect, useState, useRef, useMemo } from 'react';
|
|
2
|
-
import { CustomResponsiveSender_defaultProps, CustomResponsiveReceiver_defaultProps } from './props/defaultProps';
|
|
3
|
-
import { CustomResponsiveSender_propTypes, CustomResponsiveReceiver_propTypes } from './props/propTypes';
|
|
4
|
-
import ResizeObserver from './ResizeObserver';
|
|
5
|
-
import DOMRefWrapper from './RefWrapper';
|
|
6
|
-
import shallowCompare from '../../Responsive/utils/shallowCompare';
|
|
7
|
-
import { isBreackPointMatched, Subscribale, isTouchDevice, windowResizeObserver } from '../../Responsive/sizeObservers';
|
|
8
|
-
import { ContextOptimizer } from '../../utils/ContextOptimizer'; // const commonBreakPoints = [ 480, 640, 768, 1024, 1440 ];
|
|
9
|
-
// const otherBreakPoints = [320, 360, 375, 720, 1280, 1600, 1920];
|
|
10
|
-
// defaultResponsiveId means if ResponsiveSender do not recive id This will be id
|
|
11
|
-
|
|
12
|
-
const defaultResponsiveId = 'parent_sender'; // validSizeResponsiveId means in some parent's height and with is caluclated ( readed )
|
|
13
|
-
|
|
14
|
-
const validSizeResponsiveId = 'valid_sender';
|
|
15
|
-
const ResponsiveContext = /*#__PURE__*/React.createContext({
|
|
16
|
-
[validSizeResponsiveId]: windowResizeObserver
|
|
17
|
-
});
|
|
18
|
-
export function ResponsiveSender(props) {
|
|
19
|
-
// variables
|
|
20
|
-
const {
|
|
21
|
-
children,
|
|
22
|
-
domRefKey,
|
|
23
|
-
responsiveId
|
|
24
|
-
} = props;
|
|
25
|
-
|
|
26
|
-
function init() {
|
|
27
|
-
let size = {
|
|
28
|
-
height: 0,
|
|
29
|
-
width: 0
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
function getSize() {
|
|
33
|
-
return size;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
const childContext = {
|
|
37
|
-
resize: new Subscribale(),
|
|
38
|
-
getSize,
|
|
39
|
-
// TODO: rename isParentSize ==> isSizeReaded (or) isMySize (or) isOriginalSize
|
|
40
|
-
isParentSize: false
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
function onResize(newSize) {
|
|
44
|
-
childContext.isParentSize = true;
|
|
45
|
-
size = newSize;
|
|
46
|
-
setTimeout(() => {
|
|
47
|
-
childContext.resize.dispatch(newSize);
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const observer = new ResizeObserver(onResize);
|
|
52
|
-
|
|
53
|
-
function containerRef(node) {
|
|
54
|
-
observer.replaceObservationElement(node);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return {
|
|
58
|
-
containerRef,
|
|
59
|
-
childContext
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
const {
|
|
64
|
-
containerRef,
|
|
65
|
-
childContext
|
|
66
|
-
} = useMemo(init, []);
|
|
67
|
-
|
|
68
|
-
function contextSelector(context) {
|
|
69
|
-
const totalContext = { ...context
|
|
70
|
-
};
|
|
71
|
-
totalContext[responsiveId] = childContext; // NOTE: this for fallback of if responsive receiver id wrong or not avelable Responcive id
|
|
72
|
-
|
|
73
|
-
totalContext[defaultResponsiveId] = childContext;
|
|
74
|
-
|
|
75
|
-
if (childContext.isParentSize) {
|
|
76
|
-
totalContext[validSizeResponsiveId] = childContext;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return totalContext;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
return /*#__PURE__*/React.createElement(ContextOptimizer, {
|
|
83
|
-
Context: ResponsiveContext,
|
|
84
|
-
calculation: contextSelector
|
|
85
|
-
}, totalContext => /*#__PURE__*/React.createElement(ResponsiveContext.Provider, {
|
|
86
|
-
value: totalContext
|
|
87
|
-
}, /*#__PURE__*/React.createElement(DOMRefWrapper, {
|
|
88
|
-
domRefKey: domRefKey,
|
|
89
|
-
ref: containerRef
|
|
90
|
-
}, children)));
|
|
91
|
-
}
|
|
92
|
-
ResponsiveSender.defaultProps = { ...CustomResponsiveSender_defaultProps,
|
|
93
|
-
responsiveId: defaultResponsiveId
|
|
94
|
-
};
|
|
95
|
-
ResponsiveSender.contextType = ResponsiveContext;
|
|
96
|
-
ResponsiveSender.propTypes = CustomResponsiveSender_propTypes;
|
|
97
|
-
export function useResponsiveReceiver() {
|
|
98
|
-
let responsiveId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultResponsiveId;
|
|
99
|
-
let query = arguments.length > 1 ? arguments[1] : undefined;
|
|
100
|
-
const [, forceUpdate] = useState();
|
|
101
|
-
const totalContextData = useContext(ResponsiveContext);
|
|
102
|
-
const validSizeContextData = totalContextData[validSizeResponsiveId];
|
|
103
|
-
const contextData = totalContextData[responsiveId] || totalContextData[defaultResponsiveId] || validSizeContextData; // NOTE: this for fallback of if responsive receiver id wrong
|
|
104
|
-
|
|
105
|
-
const resizeHandlerRef = useRef();
|
|
106
|
-
const data = useRef();
|
|
107
|
-
|
|
108
|
-
function updateLatestData() {
|
|
109
|
-
const size = contextData.isParentSize ? contextData.getSize() : validSizeContextData.getSize();
|
|
110
|
-
const prevData = data.current;
|
|
111
|
-
data.current = query({
|
|
112
|
-
isTouchDevice,
|
|
113
|
-
isParentSize: contextData.isParentSize,
|
|
114
|
-
currentScreenSize: size,
|
|
115
|
-
|
|
116
|
-
mediaQueryOR(breakPointArray) {
|
|
117
|
-
return breakPointArray.some(breakPoint => {
|
|
118
|
-
const {
|
|
119
|
-
isHeight,
|
|
120
|
-
isWidth
|
|
121
|
-
} = isBreackPointMatched(breakPoint, size);
|
|
122
|
-
return isHeight || isWidth;
|
|
123
|
-
});
|
|
124
|
-
},
|
|
125
|
-
|
|
126
|
-
mediaQueryAND(breakPointArray) {
|
|
127
|
-
return breakPointArray.every(breakPoint => {
|
|
128
|
-
const {
|
|
129
|
-
isHeight,
|
|
130
|
-
isWidth
|
|
131
|
-
} = isBreackPointMatched(breakPoint, size);
|
|
132
|
-
return (isHeight === undefined ? true : isHeight) && (isWidth === undefined ? true : isWidth);
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
});
|
|
137
|
-
const isSameValues = shallowCompare(data.current, prevData);
|
|
138
|
-
|
|
139
|
-
if (isSameValues) {
|
|
140
|
-
data.current = prevData;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
return isSameValues;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
resizeHandlerRef.current = updateLatestData;
|
|
147
|
-
useEffect(() => {
|
|
148
|
-
function handleResize(size) {
|
|
149
|
-
const isSameValues = resizeHandlerRef.current(size);
|
|
150
|
-
!isSameValues && forceUpdate({});
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
contextData.resize.subscribe(handleResize);
|
|
154
|
-
return () => contextData.resize.unsubscribe(handleResize);
|
|
155
|
-
}, [contextData]); // const prevContextDataRef = useRef();
|
|
156
|
-
// function handleResize(size) {
|
|
157
|
-
// const prevData = data.current;
|
|
158
|
-
// resizeHandlerRef.current(size);
|
|
159
|
-
// const isSammeValues = shallowCompare(data.current, prevData);
|
|
160
|
-
// !isSammeValues && forceUpdate({});
|
|
161
|
-
// }
|
|
162
|
-
// if(prevContextDataRef.current !== contextData) {
|
|
163
|
-
// prevContextDataRef.current = contextData;
|
|
164
|
-
// contextData.resize.unsubscribe(handleResize);
|
|
165
|
-
// windowResizeObserver.unobserve(handleResize);
|
|
166
|
-
// if (contextData) {
|
|
167
|
-
// contextData.resize.subscribe(handleResize);
|
|
168
|
-
// } else {
|
|
169
|
-
// windowResizeObserver.observe(handleResize);
|
|
170
|
-
// }
|
|
171
|
-
// }
|
|
172
|
-
// NOTE: this call for we must give updated value
|
|
173
|
-
|
|
174
|
-
updateLatestData();
|
|
175
|
-
return data.current;
|
|
176
|
-
}
|
|
177
|
-
export function ResponsiveReceiver(_ref) {
|
|
178
|
-
let {
|
|
179
|
-
children,
|
|
180
|
-
responsiveId,
|
|
181
|
-
query,
|
|
182
|
-
eleRef,
|
|
183
|
-
domRefKey
|
|
184
|
-
} = _ref;
|
|
185
|
-
const data = useResponsiveReceiver(responsiveId, query);
|
|
186
|
-
const child = children(data);
|
|
187
|
-
return eleRef ? /*#__PURE__*/React.createElement(DOMRefWrapper, {
|
|
188
|
-
domRefKey: domRefKey,
|
|
189
|
-
ref: eleRef
|
|
190
|
-
}, child) : child;
|
|
191
|
-
}
|
|
192
|
-
ResponsiveReceiver.defaultProps = { ...CustomResponsiveReceiver_defaultProps,
|
|
193
|
-
responsiveId: defaultResponsiveId
|
|
194
|
-
};
|
|
195
|
-
ResponsiveReceiver.propTypes = CustomResponsiveReceiver_propTypes;
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import React, { forwardRef, useCallback, Children, cloneElement } from 'react';
|
|
2
|
-
import PropTypes from 'prop-types';
|
|
3
|
-
|
|
4
|
-
function setRef(refFunc, value) {
|
|
5
|
-
if (typeof refFunc === 'function') {
|
|
6
|
-
refFunc(value);
|
|
7
|
-
} else if (refFunc instanceof Object) {
|
|
8
|
-
refFunc.current = value;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const DOMRefWrapper = /*#__PURE__*/forwardRef((props, refFunc) => {
|
|
13
|
-
const ele = Children.only(props.children);
|
|
14
|
-
const {
|
|
15
|
-
domRefKey = 'eleRef'
|
|
16
|
-
} = props; // NOTE: need to check for forward Ref function, Because in Froward Ref case refKey is "ref"
|
|
17
|
-
|
|
18
|
-
const refKey = typeof ele.type !== 'string' ? domRefKey : 'ref'; // const setAttribute = useCallback(node => {
|
|
19
|
-
|
|
20
|
-
const eleRealRefFunc = ele.props[refKey];
|
|
21
|
-
const setAttribute = useCallback(ref => {
|
|
22
|
-
setRef(refFunc, ref);
|
|
23
|
-
setRef(eleRealRefFunc, ref);
|
|
24
|
-
}, [refFunc, eleRealRefFunc]); // let refKey = typeof ele.type === 'string' ? 'ref' : 'eleRef';
|
|
25
|
-
|
|
26
|
-
let childProps = {
|
|
27
|
-
[refKey]: setAttribute
|
|
28
|
-
};
|
|
29
|
-
return /*#__PURE__*/cloneElement(ele, childProps);
|
|
30
|
-
});
|
|
31
|
-
DOMRefWrapper.defaultProps = {
|
|
32
|
-
domRefKey: 'eleRef'
|
|
33
|
-
};
|
|
34
|
-
DOMRefWrapper.propTypes = {
|
|
35
|
-
domRefKey: PropTypes.any,
|
|
36
|
-
children: PropTypes.any
|
|
37
|
-
};
|
|
38
|
-
DOMRefWrapper.displayName = 'DOMRefWrapper';
|
|
39
|
-
export default DOMRefWrapper;
|