@ucloud-fe/react-components 1.5.1 → 1.5.4
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/CHANGELOG.md +25 -0
- package/dist/icon.min.js +1 -1
- package/dist/main.min.js +4 -4
- package/lib/components/ActionList/ActionList.d.ts +3 -1
- package/lib/components/ActionList/ActionList.js +79 -5
- package/lib/components/ActionList/index.d.ts +1 -1
- package/lib/components/ActionList/style/index.d.ts +2 -0
- package/lib/components/ActionList/style/index.js +33 -2
- package/lib/components/ConfigProvider/ConfigContext.d.ts +1 -1
- package/lib/components/ConfigProvider/ConfigProvider.d.ts +2 -0
- package/lib/components/ConfigProvider/ConfigProvider.js +2 -1
- package/lib/components/ConfigProvider/index.d.ts +4 -2
- package/lib/components/ConfigProvider/index.js +8 -1
- package/lib/components/DatePicker/DatePicker.d.ts +5 -1
- package/lib/components/Select/Option.js +2 -28
- package/lib/components/Select/Overflow.js +22 -63
- package/lib/components/Select/style/index.d.ts +3 -3
- package/lib/components/Select/style/index.js +24 -24
- package/lib/components/Tabs/style/index.d.ts +1 -1
- package/lib/components/TimePicker/TimePicker.js +34 -15
- package/lib/config.d.ts +4 -2
- package/lib/config.js +22 -4
- package/lib/hooks/useConfig.d.ts +2 -0
- package/lib/hooks/useConfig.js +30 -0
- package/lib/hooks/useOverflow.d.ts +24 -0
- package/lib/hooks/useOverflow.js +159 -0
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { TabsProps } from '../Tabs';
|
|
3
3
|
export declare const prefixCls: string;
|
|
4
|
-
export declare const SWrap: import("react").ForwardRefExoticComponent<Required<Pick<TabsProps, "
|
|
4
|
+
export declare const SWrap: import("react").ForwardRefExoticComponent<Required<Pick<TabsProps, "size" | "styleType" | "tabBarPosition">> & import("react").HTMLAttributes<HTMLElement> & {
|
|
5
5
|
theme?: import("../../../style").Theme | undefined;
|
|
6
6
|
} & import("react").RefAttributes<HTMLElement>>;
|
|
@@ -52,11 +52,17 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
52
52
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
53
53
|
|
|
54
54
|
var FooterWithoutMemo = function FooterWithoutMemo(_ref) {
|
|
55
|
+
var _this2 = this;
|
|
56
|
+
|
|
55
57
|
(0, _newArrowCheck2.default)(this, _this);
|
|
56
58
|
var onConfirm = _ref.onConfirm,
|
|
57
59
|
disabled = _ref.disabled,
|
|
58
60
|
_locale = _ref.locale;
|
|
59
61
|
var locale = (0, _useLocale.default)(_zh_CN.default, 'DatePicker', _locale);
|
|
62
|
+
var handleConfirm = (0, _react.useCallback)(function () {
|
|
63
|
+
(0, _newArrowCheck2.default)(this, _this2);
|
|
64
|
+
onConfirm();
|
|
65
|
+
}.bind(this), [onConfirm]);
|
|
60
66
|
return /*#__PURE__*/_react.default.createElement(_Box.default, {
|
|
61
67
|
className: _style.footerCls,
|
|
62
68
|
container: true,
|
|
@@ -65,7 +71,7 @@ var FooterWithoutMemo = function FooterWithoutMemo(_ref) {
|
|
|
65
71
|
}, /*#__PURE__*/_react.default.createElement("span", null), /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
66
72
|
styleType: "primary",
|
|
67
73
|
size: "sm",
|
|
68
|
-
onClick:
|
|
74
|
+
onClick: handleConfirm,
|
|
69
75
|
disabled: disabled
|
|
70
76
|
}, locale.confirm));
|
|
71
77
|
}.bind(void 0);
|
|
@@ -97,7 +103,7 @@ var formatToTimeMode = function formatToTimeMode(format) {
|
|
|
97
103
|
var DefaultFormat = 'HH:mm:ss';
|
|
98
104
|
|
|
99
105
|
var TimePicker = function TimePicker(_ref2) {
|
|
100
|
-
var
|
|
106
|
+
var _this3 = this;
|
|
101
107
|
|
|
102
108
|
(0, _newArrowCheck2.default)(this, _this);
|
|
103
109
|
|
|
@@ -138,19 +144,24 @@ var TimePicker = function TimePicker(_ref2) {
|
|
|
138
144
|
setActive = _useState8[1];
|
|
139
145
|
|
|
140
146
|
var defaultTime = (0, _react.useMemo)(function () {
|
|
141
|
-
(0, _newArrowCheck2.default)(this,
|
|
147
|
+
(0, _newArrowCheck2.default)(this, _this3);
|
|
142
148
|
return (0, _moment.default)().startOf('date');
|
|
143
149
|
}.bind(this), []);
|
|
144
150
|
var avoidBlur = (0, _react.useCallback)(function (e) {
|
|
145
|
-
(0, _newArrowCheck2.default)(this,
|
|
151
|
+
(0, _newArrowCheck2.default)(this, _this3);
|
|
146
152
|
return e.preventDefault();
|
|
147
153
|
}.bind(this), []);
|
|
148
154
|
var format = _format || DefaultFormat;
|
|
149
|
-
var handleConfirm = (0, _react.useCallback)(function () {
|
|
150
|
-
(0, _newArrowCheck2.default)(this,
|
|
155
|
+
var handleConfirm = (0, _react.useCallback)(function (value) {
|
|
156
|
+
(0, _newArrowCheck2.default)(this, _this3);
|
|
151
157
|
setActive(false);
|
|
152
158
|
var finalValue = timeValue;
|
|
153
159
|
|
|
160
|
+
if (value !== undefined) {
|
|
161
|
+
onChange(value === null ? null : (0, _moment.default)(+value));
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
|
|
154
165
|
if (useInputValue) {
|
|
155
166
|
var inputTime = inputToTime(inputValue, format);
|
|
156
167
|
|
|
@@ -166,7 +177,7 @@ var TimePicker = function TimePicker(_ref2) {
|
|
|
166
177
|
onChange(finalValue == null ? null : (0, _moment.default)(+finalValue));
|
|
167
178
|
}.bind(this), [format, inputValue, nullable, onChange, timeValue, useInputValue]);
|
|
168
179
|
var handleInputChange = (0, _react.useCallback)(function (e) {
|
|
169
|
-
(0, _newArrowCheck2.default)(this,
|
|
180
|
+
(0, _newArrowCheck2.default)(this, _this3);
|
|
170
181
|
var s = e.target.value;
|
|
171
182
|
setInputValue(s);
|
|
172
183
|
var inputTime = inputToTime(s, format);
|
|
@@ -174,25 +185,29 @@ var TimePicker = function TimePicker(_ref2) {
|
|
|
174
185
|
setUseInputValue(true);
|
|
175
186
|
}.bind(this), [format]);
|
|
176
187
|
var handleTimeChange = (0, _react.useCallback)(function (v) {
|
|
177
|
-
(0, _newArrowCheck2.default)(this,
|
|
188
|
+
(0, _newArrowCheck2.default)(this, _this3);
|
|
178
189
|
setTimeValue(v);
|
|
179
190
|
setInputValue(timeToInput(v, format));
|
|
180
191
|
setUseInputValue(false);
|
|
181
192
|
}.bind(this), [format]);
|
|
182
193
|
var handleInputFocus = (0, _react.useCallback)(function () {
|
|
183
|
-
(0, _newArrowCheck2.default)(this,
|
|
194
|
+
(0, _newArrowCheck2.default)(this, _this3);
|
|
184
195
|
return setActive(true);
|
|
185
196
|
}.bind(this), []);
|
|
186
197
|
var handleInputBlur = (0, _react.useCallback)(function () {
|
|
187
|
-
(0, _newArrowCheck2.default)(this,
|
|
198
|
+
(0, _newArrowCheck2.default)(this, _this3);
|
|
188
199
|
return setActive(false);
|
|
189
200
|
}.bind(this), []);
|
|
201
|
+
var handleInputClear = (0, _react.useCallback)(function () {
|
|
202
|
+
(0, _newArrowCheck2.default)(this, _this3);
|
|
203
|
+
nullable && handleConfirm(null);
|
|
204
|
+
}.bind(this), [handleConfirm, nullable]);
|
|
190
205
|
var formatTimeValue = (0, _react.useMemo)(function () {
|
|
191
|
-
(0, _newArrowCheck2.default)(this,
|
|
206
|
+
(0, _newArrowCheck2.default)(this, _this3);
|
|
192
207
|
return new Date(+(timeValue == null ? defaultTime : timeValue));
|
|
193
208
|
}.bind(this), [defaultTime, timeValue]);
|
|
194
209
|
var isValid = (0, _react.useMemo)(function () {
|
|
195
|
-
(0, _newArrowCheck2.default)(this,
|
|
210
|
+
(0, _newArrowCheck2.default)(this, _this3);
|
|
196
211
|
|
|
197
212
|
if (useInputValue) {
|
|
198
213
|
var inputTime = inputToTime(inputValue, format);
|
|
@@ -203,12 +218,12 @@ var TimePicker = function TimePicker(_ref2) {
|
|
|
203
218
|
return true;
|
|
204
219
|
}.bind(this), [format, inputValue, nullable, useInputValue]);
|
|
205
220
|
var timeMode = (0, _react.useMemo)(function () {
|
|
206
|
-
(0, _newArrowCheck2.default)(this,
|
|
221
|
+
(0, _newArrowCheck2.default)(this, _this3);
|
|
207
222
|
return formatToTimeMode(format);
|
|
208
223
|
}.bind(this), [format]);
|
|
209
224
|
var popoverConfigProps = (0, _usePopoverConfig.default)();
|
|
210
225
|
(0, _react.useEffect)(function () {
|
|
211
|
-
(0, _newArrowCheck2.default)(this,
|
|
226
|
+
(0, _newArrowCheck2.default)(this, _this3);
|
|
212
227
|
|
|
213
228
|
if (!active) {
|
|
214
229
|
setTimeValue(value);
|
|
@@ -240,9 +255,13 @@ var TimePicker = function TimePicker(_ref2) {
|
|
|
240
255
|
onBlur: handleInputBlur,
|
|
241
256
|
onFocus: handleInputFocus,
|
|
242
257
|
onClick: handleInputFocus,
|
|
258
|
+
onClear: handleInputClear,
|
|
243
259
|
size: size,
|
|
244
260
|
disabled: disabled,
|
|
245
|
-
clearable: nullable
|
|
261
|
+
clearable: nullable ? {
|
|
262
|
+
autoFocus: false,
|
|
263
|
+
callOnChange: false
|
|
264
|
+
} : false,
|
|
246
265
|
prefix: /*#__PURE__*/_react.default.createElement(_SvgIcon.default, {
|
|
247
266
|
type: "clock"
|
|
248
267
|
})
|
package/lib/config.d.ts
CHANGED
package/lib/config.js
CHANGED
|
@@ -1,10 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
exports.setConfig = exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _newArrowCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/newArrowCheck"));
|
|
11
|
+
|
|
12
|
+
var _this = void 0;
|
|
13
|
+
|
|
14
|
+
var config = {
|
|
15
|
+
prefixCls: 'uc-fe',
|
|
16
|
+
actionListAutoAdjustment: false
|
|
9
17
|
};
|
|
10
|
-
|
|
18
|
+
var _default = config;
|
|
19
|
+
/** 只能在组件初始化时使用,否则会导致意外的问题 */
|
|
20
|
+
|
|
21
|
+
exports.default = _default;
|
|
22
|
+
|
|
23
|
+
var setConfig = function setConfig(_config) {
|
|
24
|
+
(0, _newArrowCheck2.default)(this, _this);
|
|
25
|
+
Object.assign(config, _config);
|
|
26
|
+
}.bind(void 0);
|
|
27
|
+
|
|
28
|
+
exports.setConfig = setConfig;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.default = void 0;
|
|
11
|
+
|
|
12
|
+
var _newArrowCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/newArrowCheck"));
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
|
|
16
|
+
var _ConfigContext = _interopRequireDefault(require("../components/ConfigProvider/ConfigContext"));
|
|
17
|
+
|
|
18
|
+
var _this = void 0;
|
|
19
|
+
|
|
20
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
|
+
|
|
22
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
23
|
+
|
|
24
|
+
var useConfig = function useConfig() {
|
|
25
|
+
(0, _newArrowCheck2.default)(this, _this);
|
|
26
|
+
return (0, _react.useContext)(_ConfigContext.default);
|
|
27
|
+
}.bind(void 0);
|
|
28
|
+
|
|
29
|
+
var _default = useConfig;
|
|
30
|
+
exports.default = _default;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
/**
|
|
3
|
+
* 计算容器内的元素最大展示数量
|
|
4
|
+
* @returns {[number, number, boolean]} [当前测试的展示数, 最终确定的展示数, 是否在测试过程中]
|
|
5
|
+
*/
|
|
6
|
+
declare const useOverflow: ({ containerRef, defaultCount, maxCount, minCount }: {
|
|
7
|
+
/**
|
|
8
|
+
* 容器元素的 ref
|
|
9
|
+
*/
|
|
10
|
+
containerRef?: import("react").MutableRefObject<HTMLElement | null> | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* 默认的初始展示数量
|
|
13
|
+
*/
|
|
14
|
+
defaultCount?: number | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* 最大展示数量,一般传入元素数量即可
|
|
17
|
+
*/
|
|
18
|
+
maxCount: number;
|
|
19
|
+
/**
|
|
20
|
+
* 最小展示数量
|
|
21
|
+
*/
|
|
22
|
+
minCount?: number | undefined;
|
|
23
|
+
}, deps?: any[]) => [number, number, boolean];
|
|
24
|
+
export default useOverflow;
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.default = void 0;
|
|
11
|
+
|
|
12
|
+
var _newArrowCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/newArrowCheck"));
|
|
13
|
+
|
|
14
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
|
+
|
|
16
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
17
|
+
|
|
18
|
+
var _resizeObserverPolyfill = _interopRequireDefault(require("resize-observer-polyfill"));
|
|
19
|
+
|
|
20
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
|
+
|
|
22
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
23
|
+
|
|
24
|
+
// https://github.com/que-etc/resize-observer-polyfill/issues/80
|
|
25
|
+
// 由于 ts 官方增加了 contentRect 的类型定义,导致和 resize-observer-polyfill 内部的定义冲突,目前先以 "skipLibCheck" 解决
|
|
26
|
+
var DEFAULT_DEP = [];
|
|
27
|
+
/**
|
|
28
|
+
* 计算容器内的元素最大展示数量
|
|
29
|
+
* @returns {[number, number, boolean]} [当前测试的展示数, 最终确定的展示数, 是否在测试过程中]
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
var useOverflow = function useOverflow(_ref) {
|
|
33
|
+
var _this = this;
|
|
34
|
+
|
|
35
|
+
var containerRef = _ref.containerRef,
|
|
36
|
+
_ref$defaultCount = _ref.defaultCount,
|
|
37
|
+
defaultCount = _ref$defaultCount === void 0 ? 0 : _ref$defaultCount,
|
|
38
|
+
maxCount = _ref.maxCount,
|
|
39
|
+
_ref$minCount = _ref.minCount,
|
|
40
|
+
minCount = _ref$minCount === void 0 ? 0 : _ref$minCount;
|
|
41
|
+
var deps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_DEP;
|
|
42
|
+
|
|
43
|
+
// the count of trying to show
|
|
44
|
+
var _useState = (0, _react.useState)(function () {
|
|
45
|
+
(0, _newArrowCheck2.default)(this, _this);
|
|
46
|
+
return Math.min(defaultCount, maxCount);
|
|
47
|
+
}.bind(this)),
|
|
48
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
49
|
+
count = _useState2[0],
|
|
50
|
+
setCount = _useState2[1]; // the count valid to show
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
var _useState3 = (0, _react.useState)(count),
|
|
54
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
55
|
+
measureCount = _useState4[0],
|
|
56
|
+
setMeasureCount = _useState4[1]; // latest valid count
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
var _useState5 = (0, _react.useState)(null),
|
|
60
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
61
|
+
latestValidCount = _useState6[0],
|
|
62
|
+
setLatestValidCount = _useState6[1]; // the container element
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
var _useState7 = (0, _react.useState)(true),
|
|
66
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
67
|
+
measuring = _useState8[0],
|
|
68
|
+
setMeasuring = _useState8[1]; // save to ref for use in resize observer to avoid frequently create new observer
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
var measuringRef = (0, _react.useRef)(measuring);
|
|
72
|
+
(0, _react.useEffect)(function () {
|
|
73
|
+
(0, _newArrowCheck2.default)(this, _this);
|
|
74
|
+
measuringRef.current = measuring;
|
|
75
|
+
}.bind(this), [measuring]); // start to measure
|
|
76
|
+
|
|
77
|
+
var startMeasuring = (0, _react.useCallback)(function () {
|
|
78
|
+
(0, _newArrowCheck2.default)(this, _this);
|
|
79
|
+
if (measuringRef.current) return;
|
|
80
|
+
setMeasuring(true);
|
|
81
|
+
setLatestValidCount(null);
|
|
82
|
+
}.bind(this), []); // stop measuring
|
|
83
|
+
|
|
84
|
+
var endMeasuring = (0, _react.useCallback)(function (measureCount) {
|
|
85
|
+
(0, _newArrowCheck2.default)(this, _this);
|
|
86
|
+
setMeasuring(false);
|
|
87
|
+
setMeasureCount(measureCount);
|
|
88
|
+
}.bind(this), []);
|
|
89
|
+
(0, _react.useEffect)(function () {
|
|
90
|
+
(0, _newArrowCheck2.default)(this, _this);
|
|
91
|
+
// console.log('reset when deps changed');
|
|
92
|
+
startMeasuring(); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
93
|
+
}.bind(this), deps);
|
|
94
|
+
(0, _react.useEffect)(function () {
|
|
95
|
+
(0, _newArrowCheck2.default)(this, _this);
|
|
96
|
+
// reset when config changed
|
|
97
|
+
startMeasuring();
|
|
98
|
+
}.bind(this), [minCount, maxCount, startMeasuring]);
|
|
99
|
+
(0, _react.useEffect)(function () {
|
|
100
|
+
var _this2 = this;
|
|
101
|
+
|
|
102
|
+
(0, _newArrowCheck2.default)(this, _this);
|
|
103
|
+
var containerDOM = containerRef === null || containerRef === void 0 ? void 0 : containerRef.current;
|
|
104
|
+
var resizeObserver = null;
|
|
105
|
+
|
|
106
|
+
if (containerDOM) {
|
|
107
|
+
resizeObserver = new _resizeObserverPolyfill.default(function () {
|
|
108
|
+
(0, _newArrowCheck2.default)(this, _this2);
|
|
109
|
+
|
|
110
|
+
if (!measuringRef.current) {
|
|
111
|
+
startMeasuring(); // console.log('reset when width changed');
|
|
112
|
+
} // else {
|
|
113
|
+
// console.log('lock when width changed');
|
|
114
|
+
// }
|
|
115
|
+
|
|
116
|
+
}.bind(this));
|
|
117
|
+
resizeObserver.observe(containerDOM);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return function () {
|
|
121
|
+
(0, _newArrowCheck2.default)(this, _this2);
|
|
122
|
+
|
|
123
|
+
if (resizeObserver) {
|
|
124
|
+
resizeObserver.disconnect();
|
|
125
|
+
}
|
|
126
|
+
}.bind(this);
|
|
127
|
+
}.bind(this), [containerRef, startMeasuring]); // console.log({ count, latestValidCount, maxCount, minCount, measuring });
|
|
128
|
+
// use layout effect to measure can avoid most shaking
|
|
129
|
+
|
|
130
|
+
(0, _react.useLayoutEffect)(function () {
|
|
131
|
+
(0, _newArrowCheck2.default)(this, _this);
|
|
132
|
+
var containerDOM = containerRef === null || containerRef === void 0 ? void 0 : containerRef.current;
|
|
133
|
+
if (!containerDOM) return; // measure end
|
|
134
|
+
|
|
135
|
+
if (count === latestValidCount) {
|
|
136
|
+
endMeasuring(latestValidCount);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
var newCount = count;
|
|
141
|
+
|
|
142
|
+
if (containerDOM.offsetWidth >= containerDOM.scrollWidth) {
|
|
143
|
+
setLatestValidCount(count); // try to show more
|
|
144
|
+
|
|
145
|
+
newCount = Math.min(count + 1, maxCount);
|
|
146
|
+
} else if (containerDOM.offsetWidth < containerDOM.scrollWidth) {
|
|
147
|
+
// if container with not enough space event when count is 0, it will be set to 0
|
|
148
|
+
if (count === 0) setLatestValidCount(count); // try to show less
|
|
149
|
+
|
|
150
|
+
newCount = Math.max(0, minCount, count - 1);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
setCount(newCount);
|
|
154
|
+
}.bind(this), [containerRef, count, endMeasuring, latestValidCount, maxCount, minCount]);
|
|
155
|
+
return [count, measureCount, measuring];
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
var _default = useOverflow;
|
|
159
|
+
exports.default = _default;
|