@douyinfe/semi-ui 2.25.0-beta.0 → 2.25.1
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/dist/css/semi.css +69 -9
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +240 -109
- package/dist/umd/semi-ui.js.map +1 -1
- package/dist/umd/semi-ui.min.js +1 -1
- package/dist/umd/semi-ui.min.js.map +1 -1
- package/lib/cjs/image/image.js +25 -5
- package/lib/cjs/overflowList/index.d.ts +805 -6
- package/lib/cjs/overflowList/index.js +145 -60
- package/lib/cjs/select/index.js +7 -2
- package/lib/cjs/tagInput/index.js +7 -5
- package/lib/es/image/image.js +25 -5
- package/lib/es/overflowList/index.d.ts +805 -6
- package/lib/es/overflowList/index.js +143 -62
- package/lib/es/select/index.js +7 -2
- package/lib/es/tagInput/index.js +7 -5
- package/package.json +8 -8
|
@@ -5,11 +5,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _get2 = _interopRequireDefault(require("lodash/get"));
|
|
9
9
|
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
var _omit2 = _interopRequireDefault(require("lodash/omit"));
|
|
10
|
+
var _isFunction2 = _interopRequireDefault(require("lodash/isFunction"));
|
|
13
11
|
|
|
14
12
|
var _isEqual2 = _interopRequireDefault(require("lodash/isEqual"));
|
|
15
13
|
|
|
@@ -57,26 +55,15 @@ class OverflowList extends _baseComponent.default {
|
|
|
57
55
|
|
|
58
56
|
this.resize = function () {
|
|
59
57
|
let entries = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
60
|
-
// if any parent is growing, assume we have more room than before
|
|
61
|
-
const growing = entries.some(entry => {
|
|
62
|
-
const previousWidth = _this.previousWidths.get(entry.target) || 0;
|
|
63
|
-
return entry.contentRect.width > previousWidth;
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
_this.repartition(growing);
|
|
67
58
|
|
|
68
|
-
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
this.repartition = growing => {
|
|
72
|
-
// if not mounted or scroll mode, we do not
|
|
73
|
-
if ((0, _isNull2.default)(this.spacer) || (0, _isUndefined2.default)(this.spacer) || this.isScrollMode()) {
|
|
74
|
-
return;
|
|
75
|
-
} // spacer has flex-shrink and width 1px so if it's much smaller then we know to shrink
|
|
59
|
+
var _a;
|
|
76
60
|
|
|
61
|
+
const containerWidth = (_a = entries[0]) === null || _a === void 0 ? void 0 : _a.target.clientWidth;
|
|
77
62
|
|
|
78
|
-
|
|
79
|
-
|
|
63
|
+
_this.setState({
|
|
64
|
+
containerWidth,
|
|
65
|
+
overflowStatus: 'calculating'
|
|
66
|
+
});
|
|
80
67
|
};
|
|
81
68
|
|
|
82
69
|
this.reintersect = entries => {
|
|
@@ -98,6 +85,18 @@ class OverflowList extends _baseComponent.default {
|
|
|
98
85
|
return this.props.overflowRenderer(overflow);
|
|
99
86
|
};
|
|
100
87
|
|
|
88
|
+
this.getItemKey = (item, defalutKey) => {
|
|
89
|
+
const {
|
|
90
|
+
itemKey
|
|
91
|
+
} = this.props;
|
|
92
|
+
|
|
93
|
+
if ((0, _isFunction2.default)(itemKey)) {
|
|
94
|
+
return itemKey(item);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return (0, _get2.default)(item, itemKey || 'key', defalutKey);
|
|
98
|
+
};
|
|
99
|
+
|
|
101
100
|
this.renderItemList = () => {
|
|
102
101
|
const {
|
|
103
102
|
className,
|
|
@@ -109,9 +108,33 @@ class OverflowList extends _baseComponent.default {
|
|
|
109
108
|
collapseFrom
|
|
110
109
|
} = this.props;
|
|
111
110
|
const {
|
|
112
|
-
visible
|
|
111
|
+
visible,
|
|
112
|
+
overflowStatus
|
|
113
113
|
} = this.state;
|
|
114
|
-
|
|
114
|
+
let overflow = this.renderOverflow();
|
|
115
|
+
|
|
116
|
+
if (!this.isScrollMode()) {
|
|
117
|
+
if (Array.isArray(overflow)) {
|
|
118
|
+
overflow = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, overflow);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if ( /*#__PURE__*/_react.default.isValidElement(overflow)) {
|
|
122
|
+
const child = /*#__PURE__*/_react.default.cloneElement(overflow);
|
|
123
|
+
|
|
124
|
+
overflow = /*#__PURE__*/_react.default.createElement(_resizeObserver.default, {
|
|
125
|
+
onResize: _ref => {
|
|
126
|
+
let [entry] = _ref;
|
|
127
|
+
this.setState({
|
|
128
|
+
overflowWidth: entry.target.clientWidth,
|
|
129
|
+
overflowStatus: 'calculating'
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
133
|
+
className: "".concat(prefixCls, "-overflow")
|
|
134
|
+
}, child));
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
115
138
|
const inner = renderMode === RenderMode.SCROLL ? [overflow[0], /*#__PURE__*/_react.default.createElement("div", {
|
|
116
139
|
className: (0, _classnames.default)(wrapperClassName, "".concat(prefixCls, "-scroll-wrapper")),
|
|
117
140
|
ref: ref => {
|
|
@@ -119,7 +142,7 @@ class OverflowList extends _baseComponent.default {
|
|
|
119
142
|
},
|
|
120
143
|
style: Object.assign({}, wrapperStyle),
|
|
121
144
|
key: "".concat(prefixCls, "-scroll-wrapper")
|
|
122
|
-
}, visible.map(visibleItemRenderer).map(
|
|
145
|
+
}, visible.map(visibleItemRenderer).map(item => {
|
|
123
146
|
const {
|
|
124
147
|
forwardRef,
|
|
125
148
|
key
|
|
@@ -129,26 +152,75 @@ class OverflowList extends _baseComponent.default {
|
|
|
129
152
|
'data-scrollkey': "".concat(key),
|
|
130
153
|
key
|
|
131
154
|
});
|
|
132
|
-
})), overflow[1]] : [collapseFrom === Boundary.START ? overflow : null, visible.map(
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
155
|
+
})), overflow[1]] : [collapseFrom === Boundary.START ? overflow : null, visible.map((item, idx) => {
|
|
156
|
+
const {
|
|
157
|
+
key
|
|
158
|
+
} = item;
|
|
159
|
+
const element = visibleItemRenderer(item, idx);
|
|
160
|
+
|
|
161
|
+
const child = /*#__PURE__*/_react.default.cloneElement(element);
|
|
162
|
+
|
|
163
|
+
return /*#__PURE__*/_react.default.createElement(_resizeObserver.default, {
|
|
164
|
+
key: key,
|
|
165
|
+
onResize: _ref2 => {
|
|
166
|
+
let [entry] = _ref2;
|
|
167
|
+
return this.onItemResize(entry, item, idx);
|
|
168
|
+
}
|
|
169
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
170
|
+
key: key,
|
|
171
|
+
className: "".concat(prefixCls, "-item")
|
|
172
|
+
}, child));
|
|
173
|
+
}), collapseFrom === Boundary.END ? overflow : null];
|
|
137
174
|
|
|
138
175
|
const list = /*#__PURE__*/_react.default.createElement('div', {
|
|
139
176
|
className: (0, _classnames.default)("".concat(prefixCls), className),
|
|
140
|
-
style
|
|
177
|
+
style: Object.assign(Object.assign({}, style), renderMode === RenderMode.COLLAPSE ? {
|
|
178
|
+
maxWidth: '100%',
|
|
179
|
+
visibility: overflowStatus === "calculating" ? "hidden" : "visible"
|
|
180
|
+
} : null)
|
|
141
181
|
}, ...inner);
|
|
142
182
|
|
|
143
183
|
return list;
|
|
144
184
|
};
|
|
145
185
|
|
|
186
|
+
this.onItemResize = (entry, item, idx) => {
|
|
187
|
+
const key = this.getItemKey(item, idx);
|
|
188
|
+
const width = this.itemSizeMap.get(key);
|
|
189
|
+
|
|
190
|
+
if (!width) {
|
|
191
|
+
this.itemSizeMap.set(key, entry.target.clientWidth);
|
|
192
|
+
} else if (width !== entry.target.clientWidth) {
|
|
193
|
+
// 某个item发生resize后,重新计算
|
|
194
|
+
this.itemSizeMap.set(key, entry.target.clientWidth);
|
|
195
|
+
this.setState({
|
|
196
|
+
overflowStatus: 'calculating'
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
const {
|
|
201
|
+
maxCount
|
|
202
|
+
} = this.state; // 已经按照最大值maxCount渲染完毕,触发真正的渲染。(-1 是overflow部分会占1)
|
|
203
|
+
// Already rendered maxCount items, trigger the real rendering. (-1 for the overflow part)
|
|
204
|
+
|
|
205
|
+
if (this.itemSizeMap.size === maxCount - 1) {
|
|
206
|
+
this.setState({
|
|
207
|
+
overflowStatus: 'calculating'
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
|
|
146
212
|
this.state = {
|
|
147
213
|
direction: OverflowDirection.GROW,
|
|
148
214
|
lastOverflowCount: 0,
|
|
149
215
|
overflow: [],
|
|
150
|
-
visible:
|
|
151
|
-
|
|
216
|
+
visible: [],
|
|
217
|
+
containerWidth: 0,
|
|
218
|
+
visibleState: new Map(),
|
|
219
|
+
itemSizeMap: new Map(),
|
|
220
|
+
overflowStatus: "calculating",
|
|
221
|
+
pivot: 0,
|
|
222
|
+
overflowWidth: 0,
|
|
223
|
+
maxCount: 0
|
|
152
224
|
};
|
|
153
225
|
this.foundation = new _foundation.default(this.adapter);
|
|
154
226
|
this.previousWidths = new Map();
|
|
@@ -171,8 +243,18 @@ class OverflowList extends _baseComponent.default {
|
|
|
171
243
|
// reset visible state if the above props change.
|
|
172
244
|
newState.direction = OverflowDirection.GROW;
|
|
173
245
|
newState.lastOverflowCount = 0;
|
|
174
|
-
|
|
175
|
-
|
|
246
|
+
|
|
247
|
+
if (props.renderMode === RenderMode.SCROLL) {
|
|
248
|
+
newState.visible = props.items;
|
|
249
|
+
newState.overflow = [];
|
|
250
|
+
} else {
|
|
251
|
+
newState.visible = [];
|
|
252
|
+
newState.overflow = [];
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
newState.pivot = 0;
|
|
256
|
+
newState.maxCount = 0;
|
|
257
|
+
newState.overflowStatus = "calculating";
|
|
176
258
|
}
|
|
177
259
|
|
|
178
260
|
return newState;
|
|
@@ -190,43 +272,45 @@ class OverflowList extends _baseComponent.default {
|
|
|
190
272
|
},
|
|
191
273
|
notifyIntersect: res => {
|
|
192
274
|
this.props.onIntersect && this.props.onIntersect(res);
|
|
193
|
-
}
|
|
275
|
+
},
|
|
276
|
+
getItemSizeMap: () => this.itemSizeMap
|
|
194
277
|
});
|
|
195
278
|
}
|
|
196
279
|
|
|
197
|
-
componentDidMount() {
|
|
198
|
-
this.repartition(false);
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
shouldComponentUpdate(_nextProps, nextState) {
|
|
202
|
-
// We want this component to always re-render, even when props haven't changed, so that
|
|
203
|
-
// changes in the renderers' behavior can be reflected.
|
|
204
|
-
// The following statement prevents re-rendering only in the case where the state changes
|
|
205
|
-
// identity (i.e. setState was called), but the state is still the same when
|
|
206
|
-
// shallow-compared to the previous state.
|
|
207
|
-
const currState = (0, _omit2.default)(this.state, 'prevProps');
|
|
208
|
-
const comingState = (0, _omit2.default)(nextState, 'prevProps');
|
|
209
|
-
return !(currState !== comingState && (0, _isEqual2.default)(currState, comingState));
|
|
210
|
-
}
|
|
211
|
-
|
|
212
280
|
componentDidUpdate(prevProps, prevState) {
|
|
213
281
|
if (!(0, _isEqual2.default)(prevProps.items, this.props.items)) {
|
|
214
282
|
this.itemRefs = {};
|
|
215
283
|
}
|
|
216
284
|
|
|
217
|
-
if (!(0, _isEqual2.default)((0, _omit2.default)(prevState, 'prevProps'), (0, _omit2.default)(this.state, 'prevProps'))) {
|
|
218
|
-
this.repartition(false);
|
|
219
|
-
}
|
|
220
|
-
|
|
221
285
|
const {
|
|
222
|
-
direction,
|
|
223
286
|
overflow,
|
|
224
|
-
|
|
287
|
+
containerWidth,
|
|
288
|
+
visible,
|
|
289
|
+
overflowStatus
|
|
225
290
|
} = this.state;
|
|
226
291
|
|
|
227
|
-
if (
|
|
228
|
-
|
|
229
|
-
|
|
292
|
+
if (this.isScrollMode() || overflowStatus !== "calculating") {
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
if (visible.length === 0 && overflow.length === 0 && this.props.items.length !== 0) {
|
|
297
|
+
// 推测container最多能渲染的数量
|
|
298
|
+
// Figure out the maximum number of items in this container
|
|
299
|
+
const maxCount = Math.min(this.props.items.length, Math.floor(containerWidth / _constants.numbers.MINIMUM_HTML_ELEMENT_WIDTH)); // 如果collapseFrom是start, 第一次用来计算容量时,倒转列表顺序渲染
|
|
300
|
+
// If collapseFrom === start, render item from end to start. Figuring out how many items in the end could fit in container.
|
|
301
|
+
|
|
302
|
+
const isCollapseFromStart = this.props.collapseFrom === Boundary.START;
|
|
303
|
+
const visible = isCollapseFromStart ? this.foundation.getReversedItems().slice(0, maxCount) : this.props.items.slice(0, maxCount);
|
|
304
|
+
const overflow = isCollapseFromStart ? this.foundation.getReversedItems().slice(maxCount) : this.props.items.slice(maxCount);
|
|
305
|
+
this.setState({
|
|
306
|
+
overflowStatus: 'calculating',
|
|
307
|
+
visible,
|
|
308
|
+
overflow,
|
|
309
|
+
maxCount: maxCount
|
|
310
|
+
});
|
|
311
|
+
this.itemSizeMap.clear();
|
|
312
|
+
} else {
|
|
313
|
+
this.foundation.handleCollapseOverflow();
|
|
230
314
|
}
|
|
231
315
|
}
|
|
232
316
|
|
|
@@ -258,7 +342,8 @@ OverflowList.defaultProps = {
|
|
|
258
342
|
overflowRenderer: () => null,
|
|
259
343
|
renderMode: 'collapse',
|
|
260
344
|
threshold: 0.75,
|
|
261
|
-
visibleItemRenderer: () => null
|
|
345
|
+
visibleItemRenderer: () => null,
|
|
346
|
+
onOverflow: () => null
|
|
262
347
|
};
|
|
263
348
|
OverflowList.propTypes = {
|
|
264
349
|
// if render in scroll mode, key is required in items
|
package/lib/cjs/select/index.js
CHANGED
|
@@ -714,7 +714,8 @@ class Select extends _baseComponent.default {
|
|
|
714
714
|
innerBottomSlot,
|
|
715
715
|
loading,
|
|
716
716
|
virtualize,
|
|
717
|
-
multiple
|
|
717
|
+
multiple,
|
|
718
|
+
emptyContent
|
|
718
719
|
} = this.props; // Do a filter first, instead of directly judging in forEach, so that the focusIndex can correspond to
|
|
719
720
|
|
|
720
721
|
const visibleOptions = options.filter(item => item._show);
|
|
@@ -737,7 +738,11 @@ class Select extends _baseComponent.default {
|
|
|
737
738
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
738
739
|
_react.default.createElement("div", {
|
|
739
740
|
id: "".concat(prefixcls, "-").concat(this.selectOptionListID),
|
|
740
|
-
className: (0, _classnames.default)(
|
|
741
|
+
className: (0, _classnames.default)({
|
|
742
|
+
// When emptyContent is null and the option is empty, there is no need for the drop-down option for the user,
|
|
743
|
+
// so there is no need to set padding through this className
|
|
744
|
+
["".concat(prefixcls, "-option-list-wrapper")]: !(isEmpty && emptyContent === null)
|
|
745
|
+
}, dropdownClassName),
|
|
741
746
|
style: style,
|
|
742
747
|
ref: this.setOptionContainerEl,
|
|
743
748
|
onKeyDown: e => this.foundation.handleContainerKeyDown(e)
|
|
@@ -472,7 +472,7 @@ class TagInput extends _baseComponent.default {
|
|
|
472
472
|
}
|
|
473
473
|
|
|
474
474
|
blur() {
|
|
475
|
-
this.inputRef.current.blur(); // unregister clickOutside event
|
|
475
|
+
this.inputRef.current.blur(); // unregister clickOutside event
|
|
476
476
|
|
|
477
477
|
this.foundation.clickOutsideCallBack();
|
|
478
478
|
}
|
|
@@ -487,7 +487,7 @@ class TagInput extends _baseComponent.default {
|
|
|
487
487
|
});
|
|
488
488
|
|
|
489
489
|
if (!disabled) {
|
|
490
|
-
// register clickOutside event
|
|
490
|
+
// register clickOutside event
|
|
491
491
|
this.foundation.handleClick();
|
|
492
492
|
}
|
|
493
493
|
}
|
|
@@ -513,13 +513,15 @@ class TagInput extends _baseComponent.default {
|
|
|
513
513
|
["".concat(prefixCls, "-disabled")]: disabled,
|
|
514
514
|
["".concat(prefixCls, "-hover")]: hovering && !disabled,
|
|
515
515
|
["".concat(prefixCls, "-error")]: validateStatus === 'error',
|
|
516
|
-
["".concat(prefixCls, "-warning")]: validateStatus === 'warning'
|
|
516
|
+
["".concat(prefixCls, "-warning")]: validateStatus === 'warning',
|
|
517
|
+
["".concat(prefixCls, "-small")]: size === 'small',
|
|
518
|
+
["".concat(prefixCls, "-large")]: size === 'large'
|
|
517
519
|
});
|
|
518
520
|
const inputCls = (0, _classnames.default)("".concat(prefixCls, "-wrapper-input"), "".concat(prefixCls, "-wrapper-input-").concat(size));
|
|
519
|
-
const wrapperCls = (0, _classnames.default)("".concat(prefixCls, "-wrapper")
|
|
521
|
+
const wrapperCls = (0, _classnames.default)("".concat(prefixCls, "-wrapper"));
|
|
520
522
|
return (
|
|
521
523
|
/*#__PURE__*/
|
|
522
|
-
// eslint-disable-next-line
|
|
524
|
+
// eslint-disable-next-line
|
|
523
525
|
_react.default.createElement("div", {
|
|
524
526
|
ref: this.tagInputRef,
|
|
525
527
|
style: style,
|
package/lib/es/image/image.js
CHANGED
|
@@ -2,9 +2,21 @@ import _isUndefined from "lodash/isUndefined";
|
|
|
2
2
|
import _isObject from "lodash/isObject";
|
|
3
3
|
import _isBoolean from "lodash/isBoolean";
|
|
4
4
|
|
|
5
|
+
var __rest = this && this.__rest || function (s, e) {
|
|
6
|
+
var t = {};
|
|
7
|
+
|
|
8
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
9
|
+
|
|
10
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
11
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
12
|
+
}
|
|
13
|
+
return t;
|
|
14
|
+
};
|
|
5
15
|
/* eslint-disable jsx-a11y/click-events-have-key-events */
|
|
6
16
|
|
|
7
17
|
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
|
18
|
+
|
|
19
|
+
|
|
8
20
|
import React from "react";
|
|
9
21
|
import BaseComponent from "../_base/baseComponent";
|
|
10
22
|
import PropTypes from "prop-types";
|
|
@@ -166,15 +178,23 @@ export default class Image extends BaseComponent {
|
|
|
166
178
|
loadStatus,
|
|
167
179
|
previewVisible
|
|
168
180
|
} = this.state;
|
|
169
|
-
|
|
181
|
+
|
|
182
|
+
const _b = this.props,
|
|
183
|
+
{
|
|
184
|
+
src: picSrc,
|
|
170
185
|
width,
|
|
171
186
|
height,
|
|
172
187
|
alt,
|
|
173
188
|
style,
|
|
174
189
|
className,
|
|
175
190
|
crossOrigin,
|
|
176
|
-
preview
|
|
177
|
-
|
|
191
|
+
preview,
|
|
192
|
+
fallback,
|
|
193
|
+
placeholder,
|
|
194
|
+
imageID
|
|
195
|
+
} = _b,
|
|
196
|
+
restProps = __rest(_b, ["src", "width", "height", "alt", "style", "className", "crossOrigin", "preview", "fallback", "placeholder", "imageID"]);
|
|
197
|
+
|
|
178
198
|
const outerStyle = Object.assign({
|
|
179
199
|
width,
|
|
180
200
|
height
|
|
@@ -192,7 +212,7 @@ export default class Image extends BaseComponent {
|
|
|
192
212
|
style: outerStyle,
|
|
193
213
|
className: outerCls,
|
|
194
214
|
onClick: this.handleClick
|
|
195
|
-
}, /*#__PURE__*/React.createElement("img", {
|
|
215
|
+
}, /*#__PURE__*/React.createElement("img", Object.assign({}, restProps, {
|
|
196
216
|
src: this.isInGroup() && this.isLazyLoad() ? undefined : src,
|
|
197
217
|
"data-src": src,
|
|
198
218
|
alt: alt,
|
|
@@ -205,7 +225,7 @@ export default class Image extends BaseComponent {
|
|
|
205
225
|
crossOrigin: crossOrigin,
|
|
206
226
|
onError: this.handleError,
|
|
207
227
|
onLoad: this.handleLoaded
|
|
208
|
-
}), loadStatus !== "success" && this.renderExtra(), canPreview && /*#__PURE__*/React.createElement(PreviewInner, Object.assign({}, previewProps, {
|
|
228
|
+
})), loadStatus !== "success" && this.renderExtra(), canPreview && /*#__PURE__*/React.createElement(PreviewInner, Object.assign({}, previewProps, {
|
|
209
229
|
src: previewSrc,
|
|
210
230
|
visible: previewVisible,
|
|
211
231
|
onVisibleChange: this.handlePreviewVisibleChange,
|