@para-ui/core 4.0.22 → 4.0.24

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.
Files changed (110) hide show
  1. package/AutoTips/index.js +11 -0
  2. package/Button/index.js +1 -1
  3. package/ButtonGroup/index.js +1 -1
  4. package/Cascader/index.js +7 -6
  5. package/ComboSelect/index.js +2 -2
  6. package/CopyText/index.js +1 -1
  7. package/CycleSelector/index.js +1 -1
  8. package/DatePicker/index.js +1 -1
  9. package/Descriptions/index.js +1 -1
  10. package/Desktop/index.js +1 -1
  11. package/Drawer/index.js +1 -1
  12. package/Dropdown/index.js +1 -1
  13. package/DynamicMultiBox/index.js +2 -2
  14. package/Empty/index.js +0 -6
  15. package/Form/index.js +11 -8
  16. package/FormItem/index.js +3 -3
  17. package/FunctionModal/index.js +3 -3
  18. package/Image/PreviewGroup.d.ts +20 -0
  19. package/Image/index.d.ts +10 -0
  20. package/Image/index.js +1485 -0
  21. package/InputLang/index.js +1 -1
  22. package/Modal/index.js +1 -1
  23. package/MultiBox/index.js +1 -1
  24. package/OperateBtn/index.js +1 -1
  25. package/PageHeader/index.js +1 -1
  26. package/Pagination/index.js +3 -3
  27. package/PopConfirm/index.js +1 -1
  28. package/Popover/index.js +1 -1
  29. package/Querying/index.js +0 -12
  30. package/QuickReply/index.js +1 -1
  31. package/README.md +13 -0
  32. package/Search/index.js +1 -1
  33. package/Select/index.d.ts +2 -0
  34. package/Select/index.js +27 -10
  35. package/SelectInput/index.js +1 -1
  36. package/Selector/index.js +3 -326
  37. package/SelectorPicker/index.js +2 -1
  38. package/SingleBox/index.js +1 -1
  39. package/Slider/index.js +29 -14
  40. package/Slider/interface.d.ts +4 -0
  41. package/Table/index.js +9 -3
  42. package/Tabs/index.js +1 -1
  43. package/TextField/index.js +5 -4
  44. package/TimePicker/index.js +1 -1
  45. package/ToggleButton/index.js +1 -1
  46. package/Transfer/index.js +1 -1
  47. package/Tree/index.js +2 -2
  48. package/Upload/ImgCrop/EasyCrop.d.ts +2 -2
  49. package/Upload/ImgCrop/constants.d.ts +12 -0
  50. package/Upload/ImgCrop/interface.d.ts +10 -0
  51. package/Upload/index.js +1182 -527
  52. package/Upload/interface.d.ts +43 -0
  53. package/Upload/util.d.ts +7 -0
  54. package/_verture/Portal-5bd49559.js +1698 -0
  55. package/_verture/{index-066d47d4.js → index-2a6adf4d.js} +38 -1727
  56. package/_verture/index-8ac46bd9.js +327 -0
  57. package/_verture/{index-b892f976.js → index-bbe5660a.js} +2 -2
  58. package/_verture/{index-389675ab.js → index-bde7aabe.js} +1 -1
  59. package/index.d.ts +2 -0
  60. package/index.js +19 -12
  61. package/locale/index.js +2 -2
  62. package/package.json +3 -2
  63. package/umd/AutoBox.js +1 -1
  64. package/umd/AutoTips.js +1 -1
  65. package/umd/Breadcrumbs.js +1 -1
  66. package/umd/Button.js +1 -1
  67. package/umd/ButtonGroup.js +1 -1
  68. package/umd/ComboSelect.js +3 -3
  69. package/umd/CopyText.js +2 -2
  70. package/umd/CycleSelector.js +2 -2
  71. package/umd/DatePicker.js +1 -1
  72. package/umd/Descriptions.js +1 -1
  73. package/umd/Desktop.js +2 -2
  74. package/umd/Drawer.js +1 -1
  75. package/umd/Dropdown.js +1 -1
  76. package/umd/DynamicMultiBox.js +3 -3
  77. package/umd/Empty.js +1 -1
  78. package/umd/Form.js +4 -4
  79. package/umd/FormItem.js +3 -3
  80. package/umd/FunctionModal.js +6 -6
  81. package/umd/Image.js +42 -0
  82. package/umd/InputLang.js +2 -2
  83. package/umd/Modal.js +4 -4
  84. package/umd/MultiBox.js +2 -2
  85. package/umd/OperateBtn.js +4 -4
  86. package/umd/PageHeader.js +1 -1
  87. package/umd/Pagination.js +2 -2
  88. package/umd/PopConfirm.js +3 -3
  89. package/umd/PopMenu.js +1 -1
  90. package/umd/Popover.js +1 -1
  91. package/umd/Querying.js +1 -1
  92. package/umd/QuickReply.js +4 -4
  93. package/umd/Search.js +2 -2
  94. package/umd/Select.js +3 -3
  95. package/umd/SelectInput.js +2 -2
  96. package/umd/Selector.js +2 -2
  97. package/umd/SelectorPicker.js +5 -5
  98. package/umd/SingleBox.js +2 -2
  99. package/umd/Slider.js +2 -2
  100. package/umd/Table.js +6 -6
  101. package/umd/Tabs.js +4 -4
  102. package/umd/TextField.js +2 -2
  103. package/umd/TimePicker.js +1 -1
  104. package/umd/ToggleButton.js +1 -1
  105. package/umd/Transfer.js +2 -2
  106. package/umd/Tree.js +1 -1
  107. package/umd/Upload.js +6 -6
  108. package/umd/locale.js +1 -1
  109. /package/_verture/{index-4b965dd7.js → index-8cfd01fd.js} +0 -0
  110. /package/_verture/{modalContext-c8cc3107.js → modalContext-0c08a396.js} +0 -0
package/Image/index.js ADDED
@@ -0,0 +1,1485 @@
1
+ import { _ as __rest } from '../_verture/tslib.es6-55ed4bd2.js';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import * as React from 'react';
4
+ import React__default, { useState, useRef, useEffect, useContext, useMemo } from 'react';
5
+ import { i as warningOnce, d as wrapperRaf, _ as _objectSpread2, w as warning, c as clsx, P as Portal, K as KeyCode, b as _objectWithoutProperties, a as _extends, j as useMergedState } from '../_verture/Portal-5bd49559.js';
6
+ import { _ as _defineProperty } from '../_verture/defineProperty-6f62bb2a.js';
7
+ import { _ as _slicedToArray } from '../_verture/slicedToArray-a8206399.js';
8
+ import { _ as _typeof } from '../_verture/typeof-adeedc13.js';
9
+ import Dialog from 'rc-dialog';
10
+ import ReactDOM from 'react-dom';
11
+ import CSSMotion from 'rc-motion';
12
+ import { _ as _toConsumableArray } from '../_verture/toConsumableArray-8f4c9589.js';
13
+ import { $ as $prefixCls } from '../_verture/constant-5317fc89.js';
14
+ import Sort from '@para-ui/icons/Sort';
15
+ import Switch from '@para-ui/icons/Switch';
16
+ import TurnRight from '@para-ui/icons/TurnRight';
17
+ import TurnLeft from '@para-ui/icons/TurnLeft';
18
+ import MinusCircle from '@para-ui/icons/MinusCircle';
19
+ import PlusCircle from '@para-ui/icons/PlusCircle';
20
+ import LeftCircleF from '@para-ui/icons/LeftCircleF';
21
+ import RightCircleF from '@para-ui/icons/RightCircleF';
22
+ import CloseCircleF from '@para-ui/icons/CloseCircleF';
23
+ import PreviewOpen from '@para-ui/icons/PreviewOpen';
24
+ import { s as styleInject } from '../_verture/style-inject.es-300983ab.js';
25
+ import '../_verture/unsupportedIterableToArray-cb478f24.js';
26
+
27
+ /* eslint-disable no-nested-ternary */
28
+ function getClientSize() {
29
+ var width = document.documentElement.clientWidth;
30
+ var height = window.innerHeight || document.documentElement.clientHeight;
31
+ return {
32
+ width: width,
33
+ height: height
34
+ };
35
+ }
36
+ function getOffset(node) {
37
+ var box = node.getBoundingClientRect();
38
+ var docElem = document.documentElement;
39
+
40
+ // < ie8 不支持 win.pageXOffset, 则使用 docElem.scrollLeft
41
+ return {
42
+ left: box.left + (window.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || document.body.clientLeft || 0),
43
+ top: box.top + (window.pageYOffset || docElem.scrollTop) - (docElem.clientTop || document.body.clientTop || 0)
44
+ };
45
+ }
46
+
47
+ var COMMON_PROPS = ['crossOrigin', 'decoding', 'draggable', 'loading', 'referrerPolicy', 'sizes', 'srcSet', 'useMap', 'alt'];
48
+
49
+ var PreviewGroupContext = /*#__PURE__*/React.createContext(null);
50
+
51
+ var uid = 0;
52
+ function useRegisterImage(canPreview, data) {
53
+ var _React$useState = React.useState(function () {
54
+ uid += 1;
55
+ return String(uid);
56
+ }),
57
+ _React$useState2 = _slicedToArray(_React$useState, 1),
58
+ id = _React$useState2[0];
59
+ var groupContext = React.useContext(PreviewGroupContext);
60
+ var registerData = {
61
+ data: data,
62
+ canPreview: canPreview
63
+ };
64
+
65
+ // Keep order start
66
+ // Resolve https://github.com/ant-design/ant-design/issues/28881
67
+ // Only need unRegister when component unMount
68
+ React.useEffect(function () {
69
+ if (groupContext) {
70
+ return groupContext.register(id, registerData);
71
+ }
72
+ }, []);
73
+ React.useEffect(function () {
74
+ if (groupContext) {
75
+ groupContext.register(id, registerData);
76
+ }
77
+ }, [canPreview, data]);
78
+ return id;
79
+ }
80
+
81
+ function isImageValid(src) {
82
+ return new Promise(function (resolve) {
83
+ var img = document.createElement('img');
84
+ img.onerror = function () {
85
+ return resolve(false);
86
+ };
87
+ img.onload = function () {
88
+ return resolve(true);
89
+ };
90
+ img.src = src;
91
+ });
92
+ }
93
+
94
+ function useStatus(_ref) {
95
+ var src = _ref.src,
96
+ isCustomPlaceholder = _ref.isCustomPlaceholder,
97
+ fallback = _ref.fallback;
98
+ var _useState = useState(isCustomPlaceholder ? 'loading' : 'normal'),
99
+ _useState2 = _slicedToArray(_useState, 2),
100
+ status = _useState2[0],
101
+ setStatus = _useState2[1];
102
+ var isLoaded = useRef(false);
103
+ var isError = status === 'error';
104
+
105
+ // https://github.com/react-component/image/pull/187
106
+ useEffect(function () {
107
+ var isCurrentSrc = true;
108
+ isImageValid(src).then(function (isValid) {
109
+ // https://github.com/ant-design/ant-design/issues/44948
110
+ // If src changes, the previous setStatus should not be triggered
111
+ if (!isValid && isCurrentSrc) {
112
+ setStatus('error');
113
+ }
114
+ });
115
+ return function () {
116
+ isCurrentSrc = false;
117
+ };
118
+ }, [src]);
119
+ useEffect(function () {
120
+ if (isCustomPlaceholder && !isLoaded.current) {
121
+ setStatus('loading');
122
+ } else if (isError) {
123
+ setStatus('normal');
124
+ }
125
+ }, [src]);
126
+ var onLoad = function onLoad() {
127
+ setStatus('normal');
128
+ };
129
+ var getImgRef = function getImgRef(img) {
130
+ isLoaded.current = false;
131
+ if (status === 'loading' && img !== null && img !== void 0 && img.complete && (img.naturalWidth || img.naturalHeight)) {
132
+ isLoaded.current = true;
133
+ onLoad();
134
+ }
135
+ };
136
+ var srcAndOnload = isError && fallback ? {
137
+ src: fallback
138
+ } : {
139
+ onLoad: onLoad,
140
+ src: src
141
+ };
142
+ return [getImgRef, srcAndOnload, status];
143
+ }
144
+
145
+ function addEventListenerWrap(target, eventType, cb, option) {
146
+ /* eslint camelcase: 2 */
147
+ var callback = ReactDOM.unstable_batchedUpdates ? function run(e) {
148
+ ReactDOM.unstable_batchedUpdates(cb, e);
149
+ } : cb;
150
+ if (target !== null && target !== void 0 && target.addEventListener) {
151
+ target.addEventListener(eventType, callback, option);
152
+ }
153
+ return {
154
+ remove: function remove() {
155
+ if (target !== null && target !== void 0 && target.removeEventListener) {
156
+ target.removeEventListener(eventType, callback, option);
157
+ }
158
+ }
159
+ };
160
+ }
161
+
162
+ /**
163
+ * Deeply compares two object literals.
164
+ * @param obj1 object 1
165
+ * @param obj2 object 2
166
+ * @param shallow shallow compare
167
+ * @returns
168
+ */
169
+ function isEqual(obj1, obj2) {
170
+ var shallow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
171
+ // https://github.com/mapbox/mapbox-gl-js/pull/5979/files#diff-fde7145050c47cc3a306856efd5f9c3016e86e859de9afbd02c879be5067e58f
172
+ var refSet = new Set();
173
+ function deepEqual(a, b) {
174
+ var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
175
+ var circular = refSet.has(a);
176
+ warningOnce(!circular, 'Warning: There may be circular references');
177
+ if (circular) {
178
+ return false;
179
+ }
180
+ if (a === b) {
181
+ return true;
182
+ }
183
+ if (shallow && level > 1) {
184
+ return false;
185
+ }
186
+ refSet.add(a);
187
+ var newLevel = level + 1;
188
+ if (Array.isArray(a)) {
189
+ if (!Array.isArray(b) || a.length !== b.length) {
190
+ return false;
191
+ }
192
+ for (var i = 0; i < a.length; i++) {
193
+ if (!deepEqual(a[i], b[i], newLevel)) {
194
+ return false;
195
+ }
196
+ }
197
+ return true;
198
+ }
199
+ if (a && b && _typeof(a) === 'object' && _typeof(b) === 'object') {
200
+ var keys = Object.keys(a);
201
+ if (keys.length !== Object.keys(b).length) {
202
+ return false;
203
+ }
204
+ return keys.every(function (key) {
205
+ return deepEqual(a[key], b[key], newLevel);
206
+ });
207
+ }
208
+ // other
209
+ return false;
210
+ }
211
+ return deepEqual(obj1, obj2);
212
+ }
213
+
214
+ var initialTransform = {
215
+ x: 0,
216
+ y: 0,
217
+ rotate: 0,
218
+ scale: 1,
219
+ flipX: false,
220
+ flipY: false
221
+ };
222
+ function useImageTransform(imgRef, minScale, maxScale, onTransform) {
223
+ var frame = useRef(null);
224
+ var queue = useRef([]);
225
+ var _useState = useState(initialTransform),
226
+ _useState2 = _slicedToArray(_useState, 2),
227
+ transform = _useState2[0],
228
+ setTransform = _useState2[1];
229
+ var resetTransform = function resetTransform(action) {
230
+ setTransform(initialTransform);
231
+ if (onTransform && !isEqual(initialTransform, transform)) {
232
+ onTransform({
233
+ transform: initialTransform,
234
+ action: action
235
+ });
236
+ }
237
+ };
238
+
239
+ /** Direct update transform */
240
+ var updateTransform = function updateTransform(newTransform, action) {
241
+ if (frame.current === null) {
242
+ queue.current = [];
243
+ frame.current = wrapperRaf(function () {
244
+ setTransform(function (preState) {
245
+ var memoState = preState;
246
+ queue.current.forEach(function (queueState) {
247
+ memoState = _objectSpread2(_objectSpread2({}, memoState), queueState);
248
+ });
249
+ frame.current = null;
250
+ onTransform === null || onTransform === void 0 || onTransform({
251
+ transform: memoState,
252
+ action: action
253
+ });
254
+ return memoState;
255
+ });
256
+ });
257
+ }
258
+ queue.current.push(_objectSpread2(_objectSpread2({}, transform), newTransform));
259
+ };
260
+
261
+ /** Scale according to the position of centerX and centerY */
262
+ var dispatchZoomChange = function dispatchZoomChange(ratio, action, centerX, centerY, isTouch) {
263
+ var _imgRef$current = imgRef.current,
264
+ width = _imgRef$current.width,
265
+ height = _imgRef$current.height,
266
+ offsetWidth = _imgRef$current.offsetWidth,
267
+ offsetHeight = _imgRef$current.offsetHeight,
268
+ offsetLeft = _imgRef$current.offsetLeft,
269
+ offsetTop = _imgRef$current.offsetTop;
270
+ var newRatio = ratio;
271
+ var newScale = transform.scale * ratio;
272
+ if (newScale > maxScale) {
273
+ newScale = maxScale;
274
+ newRatio = maxScale / transform.scale;
275
+ } else if (newScale < minScale) {
276
+ // For mobile interactions, allow scaling down to the minimum scale.
277
+ newScale = isTouch ? newScale : minScale;
278
+ newRatio = newScale / transform.scale;
279
+ }
280
+
281
+ /** Default center point scaling */
282
+ var mergedCenterX = centerX !== null && centerX !== void 0 ? centerX : innerWidth / 2;
283
+ var mergedCenterY = centerY !== null && centerY !== void 0 ? centerY : innerHeight / 2;
284
+ var diffRatio = newRatio - 1;
285
+ /** Deviation calculated from image size */
286
+ var diffImgX = diffRatio * width * 0.5;
287
+ var diffImgY = diffRatio * height * 0.5;
288
+ /** The difference between the click position and the edge of the document */
289
+ var diffOffsetLeft = diffRatio * (mergedCenterX - transform.x - offsetLeft);
290
+ var diffOffsetTop = diffRatio * (mergedCenterY - transform.y - offsetTop);
291
+ /** Final positioning */
292
+ var newX = transform.x - (diffOffsetLeft - diffImgX);
293
+ var newY = transform.y - (diffOffsetTop - diffImgY);
294
+
295
+ /**
296
+ * When zooming the image
297
+ * When the image size is smaller than the width and height of the window, the position is initialized
298
+ */
299
+ if (ratio < 1 && newScale === 1) {
300
+ var mergedWidth = offsetWidth * newScale;
301
+ var mergedHeight = offsetHeight * newScale;
302
+ var _getClientSize = getClientSize(),
303
+ clientWidth = _getClientSize.width,
304
+ clientHeight = _getClientSize.height;
305
+ if (mergedWidth <= clientWidth && mergedHeight <= clientHeight) {
306
+ newX = 0;
307
+ newY = 0;
308
+ }
309
+ }
310
+ updateTransform({
311
+ x: newX,
312
+ y: newY,
313
+ scale: newScale
314
+ }, action);
315
+ };
316
+ return {
317
+ transform: transform,
318
+ resetTransform: resetTransform,
319
+ updateTransform: updateTransform,
320
+ dispatchZoomChange: dispatchZoomChange
321
+ };
322
+ }
323
+
324
+ function fixPoint(key, start, width, clientWidth) {
325
+ var startAddWidth = start + width;
326
+ var offsetStart = (width - clientWidth) / 2;
327
+ if (width > clientWidth) {
328
+ if (start > 0) {
329
+ return _defineProperty({}, key, offsetStart);
330
+ }
331
+ if (start < 0 && startAddWidth < clientWidth) {
332
+ return _defineProperty({}, key, -offsetStart);
333
+ }
334
+ } else if (start < 0 || startAddWidth > clientWidth) {
335
+ return _defineProperty({}, key, start < 0 ? offsetStart : -offsetStart);
336
+ }
337
+ return {};
338
+ }
339
+
340
+ /**
341
+ * Fix positon x,y point when
342
+ *
343
+ * Ele width && height < client
344
+ * - Back origin
345
+ *
346
+ * - Ele width | height > clientWidth | clientHeight
347
+ * - left | top > 0 -> Back 0
348
+ * - left | top + width | height < clientWidth | clientHeight -> Back left | top + width | height === clientWidth | clientHeight
349
+ *
350
+ * Regardless of other
351
+ */
352
+ function getFixScaleEleTransPosition(width, height, left, top) {
353
+ var _getClientSize = getClientSize(),
354
+ clientWidth = _getClientSize.width,
355
+ clientHeight = _getClientSize.height;
356
+ var fixPos = null;
357
+ if (width <= clientWidth && height <= clientHeight) {
358
+ fixPos = {
359
+ x: 0,
360
+ y: 0
361
+ };
362
+ } else if (width > clientWidth || height > clientHeight) {
363
+ fixPos = _objectSpread2(_objectSpread2({}, fixPoint('x', left, width, clientWidth)), fixPoint('y', top, height, clientHeight));
364
+ }
365
+ return fixPos;
366
+ }
367
+
368
+ /** Scale the ratio base */
369
+ var BASE_SCALE_RATIO = 1;
370
+ /** The maximum zoom ratio when the mouse zooms in, adjustable */
371
+ var WHEEL_MAX_SCALE_RATIO = 1;
372
+
373
+ function useMouseEvent(imgRef, movable, visible, scaleStep, transform, updateTransform, dispatchZoomChange) {
374
+ var rotate = transform.rotate,
375
+ scale = transform.scale,
376
+ x = transform.x,
377
+ y = transform.y;
378
+ var _useState = useState(false),
379
+ _useState2 = _slicedToArray(_useState, 2),
380
+ isMoving = _useState2[0],
381
+ setMoving = _useState2[1];
382
+ var startPositionInfo = useRef({
383
+ diffX: 0,
384
+ diffY: 0,
385
+ transformX: 0,
386
+ transformY: 0
387
+ });
388
+ var onMouseDown = function onMouseDown(event) {
389
+ // Only allow main button
390
+ if (!movable || event.button !== 0) return;
391
+ event.preventDefault();
392
+ event.stopPropagation();
393
+ startPositionInfo.current = {
394
+ diffX: event.pageX - x,
395
+ diffY: event.pageY - y,
396
+ transformX: x,
397
+ transformY: y
398
+ };
399
+ setMoving(true);
400
+ };
401
+ var onMouseMove = function onMouseMove(event) {
402
+ if (visible && isMoving) {
403
+ updateTransform({
404
+ x: event.pageX - startPositionInfo.current.diffX,
405
+ y: event.pageY - startPositionInfo.current.diffY
406
+ }, 'move');
407
+ }
408
+ };
409
+ var onMouseUp = function onMouseUp() {
410
+ if (visible && isMoving) {
411
+ setMoving(false);
412
+
413
+ /** No need to restore the position when the picture is not moved, So as not to interfere with the click */
414
+ var _startPositionInfo$cu = startPositionInfo.current,
415
+ transformX = _startPositionInfo$cu.transformX,
416
+ transformY = _startPositionInfo$cu.transformY;
417
+ var hasChangedPosition = x !== transformX && y !== transformY;
418
+ if (!hasChangedPosition) return;
419
+ var width = imgRef.current.offsetWidth * scale;
420
+ var height = imgRef.current.offsetHeight * scale;
421
+ // eslint-disable-next-line @typescript-eslint/no-shadow
422
+ var _imgRef$current$getBo = imgRef.current.getBoundingClientRect(),
423
+ left = _imgRef$current$getBo.left,
424
+ top = _imgRef$current$getBo.top;
425
+ var isRotate = rotate % 180 !== 0;
426
+ var fixState = getFixScaleEleTransPosition(isRotate ? height : width, isRotate ? width : height, left, top);
427
+ if (fixState) {
428
+ updateTransform(_objectSpread2({}, fixState), 'dragRebound');
429
+ }
430
+ }
431
+ };
432
+ var onWheel = function onWheel(event) {
433
+ if (!visible || event.deltaY == 0) return;
434
+ // Scale ratio depends on the deltaY size
435
+ var scaleRatio = Math.abs(event.deltaY / 100);
436
+ // Limit the maximum scale ratio
437
+ var mergedScaleRatio = Math.min(scaleRatio, WHEEL_MAX_SCALE_RATIO);
438
+ // Scale the ratio each time
439
+ var ratio = BASE_SCALE_RATIO + mergedScaleRatio * scaleStep;
440
+ if (event.deltaY > 0) {
441
+ ratio = BASE_SCALE_RATIO / ratio;
442
+ }
443
+ dispatchZoomChange(ratio, 'wheel', event.clientX, event.clientY);
444
+ };
445
+ useEffect(function () {
446
+ var onTopMouseUpListener;
447
+ var onTopMouseMoveListener;
448
+ var onMouseUpListener;
449
+ var onMouseMoveListener;
450
+ if (movable) {
451
+ onMouseUpListener = addEventListenerWrap(window, 'mouseup', onMouseUp, false);
452
+ onMouseMoveListener = addEventListenerWrap(window, 'mousemove', onMouseMove, false);
453
+ try {
454
+ // Resolve if in iframe lost event
455
+ /* istanbul ignore next */
456
+ if (window.top !== window.self) {
457
+ onTopMouseUpListener = addEventListenerWrap(window.top, 'mouseup', onMouseUp, false);
458
+ onTopMouseMoveListener = addEventListenerWrap(window.top, 'mousemove', onMouseMove, false);
459
+ }
460
+ } catch (error) {
461
+ /* istanbul ignore next */
462
+ warning(false, "[rc-image] ".concat(error));
463
+ }
464
+ }
465
+ return function () {
466
+ var _onMouseUpListener, _onMouseMoveListener, _onTopMouseUpListener, _onTopMouseMoveListen;
467
+ (_onMouseUpListener = onMouseUpListener) === null || _onMouseUpListener === void 0 || _onMouseUpListener.remove();
468
+ (_onMouseMoveListener = onMouseMoveListener) === null || _onMouseMoveListener === void 0 || _onMouseMoveListener.remove();
469
+ /* istanbul ignore next */
470
+ (_onTopMouseUpListener = onTopMouseUpListener) === null || _onTopMouseUpListener === void 0 || _onTopMouseUpListener.remove();
471
+ /* istanbul ignore next */
472
+ (_onTopMouseMoveListen = onTopMouseMoveListener) === null || _onTopMouseMoveListen === void 0 || _onTopMouseMoveListen.remove();
473
+ };
474
+ }, [visible, isMoving, x, y, rotate, movable]);
475
+ return {
476
+ isMoving: isMoving,
477
+ onMouseDown: onMouseDown,
478
+ onMouseMove: onMouseMove,
479
+ onMouseUp: onMouseUp,
480
+ onWheel: onWheel
481
+ };
482
+ }
483
+
484
+ function getDistance(a, b) {
485
+ var x = a.x - b.x;
486
+ var y = a.y - b.y;
487
+ return Math.hypot(x, y);
488
+ }
489
+ function getCenter(oldPoint1, oldPoint2, newPoint1, newPoint2) {
490
+ // Calculate the distance each point has moved
491
+ var distance1 = getDistance(oldPoint1, newPoint1);
492
+ var distance2 = getDistance(oldPoint2, newPoint2);
493
+
494
+ // If both distances are 0, return the original points
495
+ if (distance1 === 0 && distance2 === 0) {
496
+ return [oldPoint1.x, oldPoint1.y];
497
+ }
498
+
499
+ // Calculate the ratio of the distances
500
+ var ratio = distance1 / (distance1 + distance2);
501
+
502
+ // Calculate the new center point based on the ratio
503
+ var x = oldPoint1.x + ratio * (oldPoint2.x - oldPoint1.x);
504
+ var y = oldPoint1.y + ratio * (oldPoint2.y - oldPoint1.y);
505
+ return [x, y];
506
+ }
507
+ function useTouchEvent(imgRef, movable, visible, minScale, transform, updateTransform, dispatchZoomChange) {
508
+ var rotate = transform.rotate,
509
+ scale = transform.scale,
510
+ x = transform.x,
511
+ y = transform.y;
512
+ var _useState = useState(false),
513
+ _useState2 = _slicedToArray(_useState, 2),
514
+ isTouching = _useState2[0],
515
+ setIsTouching = _useState2[1];
516
+ var touchPointInfo = useRef({
517
+ point1: {
518
+ x: 0,
519
+ y: 0
520
+ },
521
+ point2: {
522
+ x: 0,
523
+ y: 0
524
+ },
525
+ eventType: 'none'
526
+ });
527
+ var updateTouchPointInfo = function updateTouchPointInfo(values) {
528
+ touchPointInfo.current = _objectSpread2(_objectSpread2({}, touchPointInfo.current), values);
529
+ };
530
+ var onTouchStart = function onTouchStart(event) {
531
+ if (!movable) return;
532
+ event.stopPropagation();
533
+ setIsTouching(true);
534
+ var _event$touches = event.touches,
535
+ touches = _event$touches === void 0 ? [] : _event$touches;
536
+ if (touches.length > 1) {
537
+ // touch zoom
538
+ updateTouchPointInfo({
539
+ point1: {
540
+ x: touches[0].clientX,
541
+ y: touches[0].clientY
542
+ },
543
+ point2: {
544
+ x: touches[1].clientX,
545
+ y: touches[1].clientY
546
+ },
547
+ eventType: 'touchZoom'
548
+ });
549
+ } else {
550
+ // touch move
551
+ updateTouchPointInfo({
552
+ point1: {
553
+ x: touches[0].clientX - x,
554
+ y: touches[0].clientY - y
555
+ },
556
+ eventType: 'move'
557
+ });
558
+ }
559
+ };
560
+ var onTouchMove = function onTouchMove(event) {
561
+ var _event$touches2 = event.touches,
562
+ touches = _event$touches2 === void 0 ? [] : _event$touches2;
563
+ var _touchPointInfo$curre = touchPointInfo.current,
564
+ point1 = _touchPointInfo$curre.point1,
565
+ point2 = _touchPointInfo$curre.point2,
566
+ eventType = _touchPointInfo$curre.eventType;
567
+ if (touches.length > 1 && eventType === 'touchZoom') {
568
+ // touch zoom
569
+ var newPoint1 = {
570
+ x: touches[0].clientX,
571
+ y: touches[0].clientY
572
+ };
573
+ var newPoint2 = {
574
+ x: touches[1].clientX,
575
+ y: touches[1].clientY
576
+ };
577
+ var _getCenter = getCenter(point1, point2, newPoint1, newPoint2),
578
+ _getCenter2 = _slicedToArray(_getCenter, 2),
579
+ centerX = _getCenter2[0],
580
+ centerY = _getCenter2[1];
581
+ var ratio = getDistance(newPoint1, newPoint2) / getDistance(point1, point2);
582
+ dispatchZoomChange(ratio, 'touchZoom', centerX, centerY, true);
583
+ updateTouchPointInfo({
584
+ point1: newPoint1,
585
+ point2: newPoint2,
586
+ eventType: 'touchZoom'
587
+ });
588
+ } else if (eventType === 'move') {
589
+ // touch move
590
+ updateTransform({
591
+ x: touches[0].clientX - point1.x,
592
+ y: touches[0].clientY - point1.y
593
+ }, 'move');
594
+ updateTouchPointInfo({
595
+ eventType: 'move'
596
+ });
597
+ }
598
+ };
599
+ var onTouchEnd = function onTouchEnd() {
600
+ if (!visible) return;
601
+ if (isTouching) {
602
+ setIsTouching(false);
603
+ }
604
+ updateTouchPointInfo({
605
+ eventType: 'none'
606
+ });
607
+ if (minScale > scale) {
608
+ /** When the scaling ratio is less than the minimum scaling ratio, reset the scaling ratio */
609
+ return updateTransform({
610
+ x: 0,
611
+ y: 0,
612
+ scale: minScale
613
+ }, 'touchZoom');
614
+ }
615
+ var width = imgRef.current.offsetWidth * scale;
616
+ var height = imgRef.current.offsetHeight * scale;
617
+ // eslint-disable-next-line @typescript-eslint/no-shadow
618
+ var _imgRef$current$getBo = imgRef.current.getBoundingClientRect(),
619
+ left = _imgRef$current$getBo.left,
620
+ top = _imgRef$current$getBo.top;
621
+ var isRotate = rotate % 180 !== 0;
622
+ var fixState = getFixScaleEleTransPosition(isRotate ? height : width, isRotate ? width : height, left, top);
623
+ if (fixState) {
624
+ updateTransform(_objectSpread2({}, fixState), 'dragRebound');
625
+ }
626
+ };
627
+ useEffect(function () {
628
+ var onTouchMoveListener;
629
+ if (visible && movable) {
630
+ onTouchMoveListener = addEventListenerWrap(window, 'touchmove', function (e) {
631
+ return e.preventDefault();
632
+ }, {
633
+ passive: false
634
+ });
635
+ }
636
+ return function () {
637
+ var _onTouchMoveListener;
638
+ (_onTouchMoveListener = onTouchMoveListener) === null || _onTouchMoveListener === void 0 || _onTouchMoveListener.remove();
639
+ };
640
+ }, [visible, movable]);
641
+ return {
642
+ isTouching: isTouching,
643
+ onTouchStart: onTouchStart,
644
+ onTouchMove: onTouchMove,
645
+ onTouchEnd: onTouchEnd
646
+ };
647
+ }
648
+
649
+ var Operations = function Operations(props) {
650
+ var visible = props.visible,
651
+ maskTransitionName = props.maskTransitionName,
652
+ getContainer = props.getContainer,
653
+ prefixCls = props.prefixCls,
654
+ rootClassName = props.rootClassName,
655
+ icons = props.icons,
656
+ countRender = props.countRender,
657
+ showSwitch = props.showSwitch,
658
+ showProgress = props.showProgress,
659
+ current = props.current,
660
+ transform = props.transform,
661
+ count = props.count,
662
+ scale = props.scale,
663
+ minScale = props.minScale,
664
+ maxScale = props.maxScale,
665
+ closeIcon = props.closeIcon,
666
+ onSwitchLeft = props.onSwitchLeft,
667
+ onSwitchRight = props.onSwitchRight,
668
+ onClose = props.onClose,
669
+ onZoomIn = props.onZoomIn,
670
+ onZoomOut = props.onZoomOut,
671
+ onRotateRight = props.onRotateRight,
672
+ onRotateLeft = props.onRotateLeft,
673
+ onFlipX = props.onFlipX,
674
+ onFlipY = props.onFlipY,
675
+ toolbarRender = props.toolbarRender,
676
+ zIndex = props.zIndex;
677
+ var groupContext = useContext(PreviewGroupContext);
678
+ var rotateLeft = icons.rotateLeft,
679
+ rotateRight = icons.rotateRight,
680
+ zoomIn = icons.zoomIn,
681
+ zoomOut = icons.zoomOut,
682
+ close = icons.close,
683
+ left = icons.left,
684
+ right = icons.right,
685
+ flipX = icons.flipX,
686
+ flipY = icons.flipY;
687
+ var toolClassName = "".concat(prefixCls, "-operations-operation");
688
+ React.useEffect(function () {
689
+ var onKeyDown = function onKeyDown(e) {
690
+ if (e.keyCode === KeyCode.ESC) {
691
+ onClose();
692
+ }
693
+ };
694
+ if (visible) {
695
+ window.addEventListener('keydown', onKeyDown);
696
+ }
697
+ return function () {
698
+ window.removeEventListener('keydown', onKeyDown);
699
+ };
700
+ }, [visible]);
701
+ var tools = [{
702
+ icon: flipY,
703
+ onClick: onFlipY,
704
+ type: 'flipY'
705
+ }, {
706
+ icon: flipX,
707
+ onClick: onFlipX,
708
+ type: 'flipX'
709
+ }, {
710
+ icon: rotateLeft,
711
+ onClick: onRotateLeft,
712
+ type: 'rotateLeft'
713
+ }, {
714
+ icon: rotateRight,
715
+ onClick: onRotateRight,
716
+ type: 'rotateRight'
717
+ }, {
718
+ icon: zoomOut,
719
+ onClick: onZoomOut,
720
+ type: 'zoomOut',
721
+ disabled: scale <= minScale
722
+ }, {
723
+ icon: zoomIn,
724
+ onClick: onZoomIn,
725
+ type: 'zoomIn',
726
+ disabled: scale === maxScale
727
+ }];
728
+ var toolsNode = tools.map(function (_ref) {
729
+ var _classnames;
730
+ var icon = _ref.icon,
731
+ onClick = _ref.onClick,
732
+ type = _ref.type,
733
+ disabled = _ref.disabled;
734
+ return /*#__PURE__*/React.createElement("div", {
735
+ className: clsx(toolClassName, (_classnames = {}, _defineProperty(_classnames, "".concat(prefixCls, "-operations-operation-").concat(type), true), _defineProperty(_classnames, "".concat(prefixCls, "-operations-operation-disabled"), !!disabled), _classnames)),
736
+ onClick: onClick,
737
+ key: type
738
+ }, icon);
739
+ });
740
+ var toolbarNode = /*#__PURE__*/React.createElement("div", {
741
+ className: "".concat(prefixCls, "-operations")
742
+ }, toolsNode);
743
+ return /*#__PURE__*/React.createElement(CSSMotion, {
744
+ visible: visible,
745
+ motionName: maskTransitionName
746
+ }, function (_ref2) {
747
+ var className = _ref2.className,
748
+ style = _ref2.style;
749
+ return /*#__PURE__*/React.createElement(Portal, {
750
+ open: true,
751
+ getContainer: getContainer !== null && getContainer !== void 0 ? getContainer : document.body
752
+ }, /*#__PURE__*/React.createElement("div", {
753
+ className: clsx("".concat(prefixCls, "-operations-wrapper"), className, rootClassName),
754
+ style: _objectSpread2(_objectSpread2({}, style), {}, {
755
+ zIndex: zIndex
756
+ })
757
+ }, closeIcon === null ? null : /*#__PURE__*/React.createElement("button", {
758
+ className: "".concat(prefixCls, "-close"),
759
+ onClick: onClose
760
+ }, closeIcon || close), showSwitch && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
761
+ className: clsx("".concat(prefixCls, "-switch-left"), _defineProperty({}, "".concat(prefixCls, "-switch-left-disabled"), current === 0)),
762
+ onClick: onSwitchLeft
763
+ }, left), /*#__PURE__*/React.createElement("div", {
764
+ className: clsx("".concat(prefixCls, "-switch-right"), _defineProperty({}, "".concat(prefixCls, "-switch-right-disabled"), current === count - 1)),
765
+ onClick: onSwitchRight
766
+ }, right)), /*#__PURE__*/React.createElement("div", {
767
+ className: "".concat(prefixCls, "-footer")
768
+ }, showProgress && /*#__PURE__*/React.createElement("div", {
769
+ className: "".concat(prefixCls, "-progress")
770
+ }, countRender ? countRender(current + 1, count) : "".concat(current + 1, " / ").concat(count)), toolbarRender ? toolbarRender(toolbarNode, _objectSpread2({
771
+ icons: {
772
+ flipYIcon: toolsNode[0],
773
+ flipXIcon: toolsNode[1],
774
+ rotateLeftIcon: toolsNode[2],
775
+ rotateRightIcon: toolsNode[3],
776
+ zoomOutIcon: toolsNode[4],
777
+ zoomInIcon: toolsNode[5]
778
+ },
779
+ actions: {
780
+ onFlipY: onFlipY,
781
+ onFlipX: onFlipX,
782
+ onRotateLeft: onRotateLeft,
783
+ onRotateRight: onRotateRight,
784
+ onZoomOut: onZoomOut,
785
+ onZoomIn: onZoomIn
786
+ },
787
+ transform: transform
788
+ }, groupContext ? {
789
+ current: current,
790
+ total: count
791
+ } : {})) : toolbarNode)));
792
+ });
793
+ };
794
+
795
+ var _excluded$2 = ["fallback", "src", "imgRef"],
796
+ _excluded2$2 = ["prefixCls", "src", "alt", "fallback", "movable", "onClose", "visible", "icons", "rootClassName", "closeIcon", "getContainer", "current", "count", "countRender", "scaleStep", "minScale", "maxScale", "transitionName", "maskTransitionName", "imageRender", "imgCommonProps", "toolbarRender", "onTransform", "onChange"];
797
+ var PreviewImage = function PreviewImage(_ref) {
798
+ var fallback = _ref.fallback,
799
+ src = _ref.src,
800
+ imgRef = _ref.imgRef,
801
+ props = _objectWithoutProperties(_ref, _excluded$2);
802
+ var _useStatus = useStatus({
803
+ src: src,
804
+ fallback: fallback
805
+ }),
806
+ _useStatus2 = _slicedToArray(_useStatus, 2),
807
+ getImgRef = _useStatus2[0],
808
+ srcAndOnload = _useStatus2[1];
809
+ return /*#__PURE__*/React__default.createElement("img", _extends({
810
+ ref: function ref(_ref2) {
811
+ imgRef.current = _ref2;
812
+ getImgRef(_ref2);
813
+ }
814
+ }, props, srcAndOnload));
815
+ };
816
+ var Preview = function Preview(props) {
817
+ var prefixCls = props.prefixCls,
818
+ src = props.src,
819
+ alt = props.alt,
820
+ fallback = props.fallback,
821
+ _props$movable = props.movable,
822
+ movable = _props$movable === void 0 ? true : _props$movable,
823
+ onClose = props.onClose,
824
+ visible = props.visible,
825
+ _props$icons = props.icons,
826
+ icons = _props$icons === void 0 ? {} : _props$icons,
827
+ rootClassName = props.rootClassName,
828
+ closeIcon = props.closeIcon,
829
+ getContainer = props.getContainer,
830
+ _props$current = props.current,
831
+ current = _props$current === void 0 ? 0 : _props$current,
832
+ _props$count = props.count,
833
+ count = _props$count === void 0 ? 1 : _props$count,
834
+ countRender = props.countRender,
835
+ _props$scaleStep = props.scaleStep,
836
+ scaleStep = _props$scaleStep === void 0 ? 0.5 : _props$scaleStep,
837
+ _props$minScale = props.minScale,
838
+ minScale = _props$minScale === void 0 ? 1 : _props$minScale,
839
+ _props$maxScale = props.maxScale,
840
+ maxScale = _props$maxScale === void 0 ? 50 : _props$maxScale,
841
+ _props$transitionName = props.transitionName,
842
+ transitionName = _props$transitionName === void 0 ? 'zoom' : _props$transitionName,
843
+ _props$maskTransition = props.maskTransitionName,
844
+ maskTransitionName = _props$maskTransition === void 0 ? 'fade' : _props$maskTransition,
845
+ imageRender = props.imageRender,
846
+ imgCommonProps = props.imgCommonProps,
847
+ toolbarRender = props.toolbarRender,
848
+ onTransform = props.onTransform,
849
+ onChange = props.onChange,
850
+ restProps = _objectWithoutProperties(props, _excluded2$2);
851
+ var imgRef = useRef();
852
+ var groupContext = useContext(PreviewGroupContext);
853
+ var showLeftOrRightSwitches = groupContext && count > 1;
854
+ var showOperationsProgress = groupContext && count >= 1;
855
+ var _useState = useState(true),
856
+ _useState2 = _slicedToArray(_useState, 2),
857
+ enableTransition = _useState2[0],
858
+ setEnableTransition = _useState2[1];
859
+ var _useImageTransform = useImageTransform(imgRef, minScale, maxScale, onTransform),
860
+ transform = _useImageTransform.transform,
861
+ resetTransform = _useImageTransform.resetTransform,
862
+ updateTransform = _useImageTransform.updateTransform,
863
+ dispatchZoomChange = _useImageTransform.dispatchZoomChange;
864
+ var _useMouseEvent = useMouseEvent(imgRef, movable, visible, scaleStep, transform, updateTransform, dispatchZoomChange),
865
+ isMoving = _useMouseEvent.isMoving,
866
+ onMouseDown = _useMouseEvent.onMouseDown,
867
+ onWheel = _useMouseEvent.onWheel;
868
+ var _useTouchEvent = useTouchEvent(imgRef, movable, visible, minScale, transform, updateTransform, dispatchZoomChange),
869
+ isTouching = _useTouchEvent.isTouching,
870
+ onTouchStart = _useTouchEvent.onTouchStart,
871
+ onTouchMove = _useTouchEvent.onTouchMove,
872
+ onTouchEnd = _useTouchEvent.onTouchEnd;
873
+ var rotate = transform.rotate,
874
+ scale = transform.scale;
875
+ var wrapClassName = clsx(_defineProperty({}, "".concat(prefixCls, "-moving"), isMoving));
876
+ useEffect(function () {
877
+ if (!enableTransition) {
878
+ setEnableTransition(true);
879
+ }
880
+ }, [enableTransition]);
881
+ var onAfterClose = function onAfterClose() {
882
+ resetTransform('close');
883
+ };
884
+ var onZoomIn = function onZoomIn() {
885
+ dispatchZoomChange(BASE_SCALE_RATIO + scaleStep, 'zoomIn');
886
+ };
887
+ var onZoomOut = function onZoomOut() {
888
+ dispatchZoomChange(BASE_SCALE_RATIO / (BASE_SCALE_RATIO + scaleStep), 'zoomOut');
889
+ };
890
+ var onRotateRight = function onRotateRight() {
891
+ updateTransform({
892
+ rotate: rotate + 90
893
+ }, 'rotateRight');
894
+ };
895
+ var onRotateLeft = function onRotateLeft() {
896
+ updateTransform({
897
+ rotate: rotate - 90
898
+ }, 'rotateLeft');
899
+ };
900
+ var onFlipX = function onFlipX() {
901
+ updateTransform({
902
+ flipX: !transform.flipX
903
+ }, 'flipX');
904
+ };
905
+ var onFlipY = function onFlipY() {
906
+ updateTransform({
907
+ flipY: !transform.flipY
908
+ }, 'flipY');
909
+ };
910
+ var onSwitchLeft = function onSwitchLeft(event) {
911
+ event === null || event === void 0 || event.preventDefault();
912
+ event === null || event === void 0 || event.stopPropagation();
913
+ if (current > 0) {
914
+ setEnableTransition(false);
915
+ resetTransform('prev');
916
+ onChange === null || onChange === void 0 || onChange(current - 1, current);
917
+ }
918
+ };
919
+ var onSwitchRight = function onSwitchRight(event) {
920
+ event === null || event === void 0 || event.preventDefault();
921
+ event === null || event === void 0 || event.stopPropagation();
922
+ if (current < count - 1) {
923
+ setEnableTransition(false);
924
+ resetTransform('next');
925
+ onChange === null || onChange === void 0 || onChange(current + 1, current);
926
+ }
927
+ };
928
+ var onKeyDown = function onKeyDown(event) {
929
+ if (!visible || !showLeftOrRightSwitches) return;
930
+ if (event.keyCode === KeyCode.LEFT) {
931
+ onSwitchLeft();
932
+ } else if (event.keyCode === KeyCode.RIGHT) {
933
+ onSwitchRight();
934
+ }
935
+ };
936
+ var onDoubleClick = function onDoubleClick(event) {
937
+ if (visible) {
938
+ if (scale !== 1) {
939
+ updateTransform({
940
+ x: 0,
941
+ y: 0,
942
+ scale: 1
943
+ }, 'doubleClick');
944
+ } else {
945
+ dispatchZoomChange(BASE_SCALE_RATIO + scaleStep, 'doubleClick', event.clientX, event.clientY);
946
+ }
947
+ }
948
+ };
949
+ useEffect(function () {
950
+ var onKeyDownListener = addEventListenerWrap(window, 'keydown', onKeyDown, false);
951
+ return function () {
952
+ onKeyDownListener.remove();
953
+ };
954
+ }, [visible, showLeftOrRightSwitches, current]);
955
+ var imgNode = /*#__PURE__*/React__default.createElement(PreviewImage, _extends({}, imgCommonProps, {
956
+ width: props.width,
957
+ height: props.height,
958
+ imgRef: imgRef,
959
+ className: "".concat(prefixCls, "-img"),
960
+ alt: alt,
961
+ style: {
962
+ transform: "translate3d(".concat(transform.x, "px, ").concat(transform.y, "px, 0) scale3d(").concat(transform.flipX ? '-' : '').concat(scale, ", ").concat(transform.flipY ? '-' : '').concat(scale, ", 1) rotate(").concat(rotate, "deg)"),
963
+ transitionDuration: (!enableTransition || isTouching) && '0s'
964
+ },
965
+ fallback: fallback,
966
+ src: src,
967
+ onWheel: onWheel,
968
+ onMouseDown: onMouseDown,
969
+ onDoubleClick: onDoubleClick,
970
+ onTouchStart: onTouchStart,
971
+ onTouchMove: onTouchMove,
972
+ onTouchEnd: onTouchEnd,
973
+ onTouchCancel: onTouchEnd
974
+ }));
975
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Dialog, _extends({
976
+ transitionName: transitionName,
977
+ maskTransitionName: maskTransitionName,
978
+ closable: false,
979
+ keyboard: true,
980
+ prefixCls: prefixCls,
981
+ onClose: onClose,
982
+ visible: visible,
983
+ classNames: {
984
+ wrapper: wrapClassName
985
+ },
986
+ rootClassName: rootClassName,
987
+ getContainer: getContainer
988
+ }, restProps, {
989
+ afterClose: onAfterClose
990
+ }), /*#__PURE__*/React__default.createElement("div", {
991
+ className: "".concat(prefixCls, "-img-wrapper")
992
+ }, imageRender ? imageRender(imgNode, _objectSpread2({
993
+ transform: transform
994
+ }, groupContext ? {
995
+ current: current
996
+ } : {})) : imgNode)), /*#__PURE__*/React__default.createElement(Operations, {
997
+ visible: visible,
998
+ transform: transform,
999
+ maskTransitionName: maskTransitionName,
1000
+ closeIcon: closeIcon,
1001
+ getContainer: getContainer,
1002
+ prefixCls: prefixCls,
1003
+ rootClassName: rootClassName,
1004
+ icons: icons,
1005
+ countRender: countRender,
1006
+ showSwitch: showLeftOrRightSwitches,
1007
+ showProgress: showOperationsProgress,
1008
+ current: current,
1009
+ count: count,
1010
+ scale: scale,
1011
+ minScale: minScale,
1012
+ maxScale: maxScale,
1013
+ toolbarRender: toolbarRender,
1014
+ onSwitchLeft: onSwitchLeft,
1015
+ onSwitchRight: onSwitchRight,
1016
+ onZoomIn: onZoomIn,
1017
+ onZoomOut: onZoomOut,
1018
+ onRotateRight: onRotateRight,
1019
+ onRotateLeft: onRotateLeft,
1020
+ onFlipX: onFlipX,
1021
+ onFlipY: onFlipY,
1022
+ onClose: onClose,
1023
+ zIndex: restProps.zIndex !== undefined ? restProps.zIndex + 1 : undefined
1024
+ }));
1025
+ };
1026
+
1027
+ /**
1028
+ * Merge props provided `items` or context collected images
1029
+ */
1030
+ function usePreviewItems(items) {
1031
+ // Context collection image data
1032
+ var _React$useState = React.useState({}),
1033
+ _React$useState2 = _slicedToArray(_React$useState, 2),
1034
+ images = _React$useState2[0],
1035
+ setImages = _React$useState2[1];
1036
+ var registerImage = React.useCallback(function (id, data) {
1037
+ setImages(function (imgs) {
1038
+ return _objectSpread2(_objectSpread2({}, imgs), {}, _defineProperty({}, id, data));
1039
+ });
1040
+ return function () {
1041
+ setImages(function (imgs) {
1042
+ var cloneImgs = _objectSpread2({}, imgs);
1043
+ delete cloneImgs[id];
1044
+ return cloneImgs;
1045
+ });
1046
+ };
1047
+ }, []);
1048
+
1049
+ // items
1050
+ var mergedItems = React.useMemo(function () {
1051
+ if (items) {
1052
+ return items.map(function (item) {
1053
+ if (typeof item === 'string') {
1054
+ return {
1055
+ data: {
1056
+ src: item
1057
+ }
1058
+ };
1059
+ }
1060
+ var data = {};
1061
+ Object.keys(item).forEach(function (key) {
1062
+ if (['src'].concat(_toConsumableArray(COMMON_PROPS)).includes(key)) {
1063
+ data[key] = item[key];
1064
+ }
1065
+ });
1066
+ return {
1067
+ data: data
1068
+ };
1069
+ });
1070
+ }
1071
+ return Object.keys(images).reduce(function (total, id) {
1072
+ var _images$id = images[id],
1073
+ canPreview = _images$id.canPreview,
1074
+ data = _images$id.data;
1075
+ if (canPreview) {
1076
+ total.push({
1077
+ data: data,
1078
+ id: id
1079
+ });
1080
+ }
1081
+ return total;
1082
+ }, []);
1083
+ }, [items, images]);
1084
+ return [mergedItems, registerImage];
1085
+ }
1086
+
1087
+ var _excluded$1 = ["visible", "onVisibleChange", "getContainer", "current", "movable", "minScale", "maxScale", "countRender", "closeIcon", "onChange", "onTransform", "toolbarRender", "imageRender"],
1088
+ _excluded2$1 = ["src"];
1089
+ var Group = function Group(_ref) {
1090
+ var _mergedItems$current;
1091
+ var _ref$previewPrefixCls = _ref.previewPrefixCls,
1092
+ previewPrefixCls = _ref$previewPrefixCls === void 0 ? 'rc-image-preview' : _ref$previewPrefixCls,
1093
+ children = _ref.children,
1094
+ _ref$icons = _ref.icons,
1095
+ icons = _ref$icons === void 0 ? {} : _ref$icons,
1096
+ items = _ref.items,
1097
+ preview = _ref.preview,
1098
+ fallback = _ref.fallback;
1099
+ var _ref2 = _typeof(preview) === 'object' ? preview : {},
1100
+ previewVisible = _ref2.visible,
1101
+ onVisibleChange = _ref2.onVisibleChange,
1102
+ getContainer = _ref2.getContainer,
1103
+ currentIndex = _ref2.current,
1104
+ movable = _ref2.movable,
1105
+ minScale = _ref2.minScale,
1106
+ maxScale = _ref2.maxScale,
1107
+ countRender = _ref2.countRender,
1108
+ closeIcon = _ref2.closeIcon,
1109
+ onChange = _ref2.onChange,
1110
+ onTransform = _ref2.onTransform,
1111
+ toolbarRender = _ref2.toolbarRender,
1112
+ imageRender = _ref2.imageRender,
1113
+ dialogProps = _objectWithoutProperties(_ref2, _excluded$1);
1114
+
1115
+ // ========================== Items ===========================
1116
+ var _usePreviewItems = usePreviewItems(items),
1117
+ _usePreviewItems2 = _slicedToArray(_usePreviewItems, 2),
1118
+ mergedItems = _usePreviewItems2[0],
1119
+ register = _usePreviewItems2[1];
1120
+
1121
+ // ========================= Preview ==========================
1122
+ // >>> Index
1123
+ var _useMergedState = useMergedState(0, {
1124
+ value: currentIndex
1125
+ }),
1126
+ _useMergedState2 = _slicedToArray(_useMergedState, 2),
1127
+ current = _useMergedState2[0],
1128
+ setCurrent = _useMergedState2[1];
1129
+ var _useState = useState(false),
1130
+ _useState2 = _slicedToArray(_useState, 2),
1131
+ keepOpenIndex = _useState2[0],
1132
+ setKeepOpenIndex = _useState2[1];
1133
+
1134
+ // >>> Image
1135
+ var _ref3 = ((_mergedItems$current = mergedItems[current]) === null || _mergedItems$current === void 0 ? void 0 : _mergedItems$current.data) || {},
1136
+ src = _ref3.src,
1137
+ imgCommonProps = _objectWithoutProperties(_ref3, _excluded2$1);
1138
+ // >>> Visible
1139
+ var _useMergedState3 = useMergedState(!!previewVisible, {
1140
+ value: previewVisible,
1141
+ onChange: function onChange(val, prevVal) {
1142
+ onVisibleChange === null || onVisibleChange === void 0 || onVisibleChange(val, prevVal, current);
1143
+ }
1144
+ }),
1145
+ _useMergedState4 = _slicedToArray(_useMergedState3, 2),
1146
+ isShowPreview = _useMergedState4[0],
1147
+ setShowPreview = _useMergedState4[1];
1148
+
1149
+ // >>> Position
1150
+ var _useState3 = useState(null),
1151
+ _useState4 = _slicedToArray(_useState3, 2),
1152
+ mousePosition = _useState4[0],
1153
+ setMousePosition = _useState4[1];
1154
+ var onPreviewFromImage = React.useCallback(function (id, mouseX, mouseY) {
1155
+ var index = mergedItems.findIndex(function (item) {
1156
+ return item.id === id;
1157
+ });
1158
+ setShowPreview(true);
1159
+ setMousePosition({
1160
+ x: mouseX,
1161
+ y: mouseY
1162
+ });
1163
+ setCurrent(index < 0 ? 0 : index);
1164
+ setKeepOpenIndex(true);
1165
+ }, [mergedItems]);
1166
+
1167
+ // Reset current when reopen
1168
+ React.useEffect(function () {
1169
+ if (isShowPreview) {
1170
+ if (!keepOpenIndex) {
1171
+ setCurrent(0);
1172
+ }
1173
+ } else {
1174
+ setKeepOpenIndex(false);
1175
+ }
1176
+ }, [isShowPreview]);
1177
+
1178
+ // ========================== Events ==========================
1179
+ var onInternalChange = function onInternalChange(next, prev) {
1180
+ setCurrent(next);
1181
+ onChange === null || onChange === void 0 || onChange(next, prev);
1182
+ };
1183
+ var onPreviewClose = function onPreviewClose() {
1184
+ setShowPreview(false);
1185
+ setMousePosition(null);
1186
+ };
1187
+
1188
+ // ========================= Context ==========================
1189
+ var previewGroupContext = React.useMemo(function () {
1190
+ return {
1191
+ register: register,
1192
+ onPreview: onPreviewFromImage
1193
+ };
1194
+ }, [register, onPreviewFromImage]);
1195
+
1196
+ // ========================== Render ==========================
1197
+ return /*#__PURE__*/React.createElement(PreviewGroupContext.Provider, {
1198
+ value: previewGroupContext
1199
+ }, children, /*#__PURE__*/React.createElement(Preview, _extends({
1200
+ "aria-hidden": !isShowPreview,
1201
+ movable: movable,
1202
+ visible: isShowPreview,
1203
+ prefixCls: previewPrefixCls,
1204
+ closeIcon: closeIcon,
1205
+ onClose: onPreviewClose,
1206
+ mousePosition: mousePosition,
1207
+ imgCommonProps: imgCommonProps,
1208
+ src: src,
1209
+ fallback: fallback,
1210
+ icons: icons,
1211
+ minScale: minScale,
1212
+ maxScale: maxScale,
1213
+ getContainer: getContainer,
1214
+ current: current,
1215
+ count: mergedItems.length,
1216
+ countRender: countRender,
1217
+ onTransform: onTransform,
1218
+ toolbarRender: toolbarRender,
1219
+ imageRender: imageRender,
1220
+ onChange: onInternalChange
1221
+ }, dialogProps)));
1222
+ };
1223
+
1224
+ var _excluded = ["src", "alt", "onPreviewClose", "prefixCls", "previewPrefixCls", "placeholder", "fallback", "width", "height", "style", "preview", "className", "onClick", "onError", "wrapperClassName", "wrapperStyle", "rootClassName"],
1225
+ _excluded2 = ["src", "visible", "onVisibleChange", "getContainer", "mask", "maskClassName", "movable", "icons", "scaleStep", "minScale", "maxScale", "imageRender", "toolbarRender"];
1226
+ var ImageInternal = function ImageInternal(props) {
1227
+ var imgSrc = props.src,
1228
+ alt = props.alt,
1229
+ onInitialPreviewClose = props.onPreviewClose,
1230
+ _props$prefixCls = props.prefixCls,
1231
+ prefixCls = _props$prefixCls === void 0 ? 'rc-image' : _props$prefixCls,
1232
+ _props$previewPrefixC = props.previewPrefixCls,
1233
+ previewPrefixCls = _props$previewPrefixC === void 0 ? "".concat(prefixCls, "-preview") : _props$previewPrefixC,
1234
+ placeholder = props.placeholder,
1235
+ fallback = props.fallback,
1236
+ width = props.width,
1237
+ height = props.height,
1238
+ style = props.style,
1239
+ _props$preview = props.preview,
1240
+ preview = _props$preview === void 0 ? true : _props$preview,
1241
+ className = props.className,
1242
+ onClick = props.onClick,
1243
+ onError = props.onError,
1244
+ wrapperClassName = props.wrapperClassName,
1245
+ wrapperStyle = props.wrapperStyle,
1246
+ rootClassName = props.rootClassName,
1247
+ otherProps = _objectWithoutProperties(props, _excluded);
1248
+ var isCustomPlaceholder = placeholder && placeholder !== true;
1249
+ var _ref = _typeof(preview) === 'object' ? preview : {},
1250
+ previewSrc = _ref.src,
1251
+ _ref$visible = _ref.visible,
1252
+ previewVisible = _ref$visible === void 0 ? undefined : _ref$visible,
1253
+ _ref$onVisibleChange = _ref.onVisibleChange,
1254
+ onPreviewVisibleChange = _ref$onVisibleChange === void 0 ? onInitialPreviewClose : _ref$onVisibleChange,
1255
+ _ref$getContainer = _ref.getContainer,
1256
+ getPreviewContainer = _ref$getContainer === void 0 ? undefined : _ref$getContainer,
1257
+ previewMask = _ref.mask,
1258
+ maskClassName = _ref.maskClassName,
1259
+ movable = _ref.movable,
1260
+ icons = _ref.icons,
1261
+ scaleStep = _ref.scaleStep,
1262
+ minScale = _ref.minScale,
1263
+ maxScale = _ref.maxScale,
1264
+ imageRender = _ref.imageRender,
1265
+ toolbarRender = _ref.toolbarRender,
1266
+ dialogProps = _objectWithoutProperties(_ref, _excluded2);
1267
+ var src = previewSrc !== null && previewSrc !== void 0 ? previewSrc : imgSrc;
1268
+ var _useMergedState = useMergedState(!!previewVisible, {
1269
+ value: previewVisible,
1270
+ onChange: onPreviewVisibleChange
1271
+ }),
1272
+ _useMergedState2 = _slicedToArray(_useMergedState, 2),
1273
+ isShowPreview = _useMergedState2[0],
1274
+ setShowPreview = _useMergedState2[1];
1275
+ var _useStatus = useStatus({
1276
+ src: imgSrc,
1277
+ isCustomPlaceholder: isCustomPlaceholder,
1278
+ fallback: fallback
1279
+ }),
1280
+ _useStatus2 = _slicedToArray(_useStatus, 3),
1281
+ getImgRef = _useStatus2[0],
1282
+ srcAndOnload = _useStatus2[1],
1283
+ status = _useStatus2[2];
1284
+ var _useState = useState(null),
1285
+ _useState2 = _slicedToArray(_useState, 2),
1286
+ mousePosition = _useState2[0],
1287
+ setMousePosition = _useState2[1];
1288
+ var groupContext = useContext(PreviewGroupContext);
1289
+ var canPreview = !!preview;
1290
+ var onPreviewClose = function onPreviewClose() {
1291
+ setShowPreview(false);
1292
+ setMousePosition(null);
1293
+ };
1294
+ var wrapperClass = clsx(prefixCls, wrapperClassName, rootClassName, _defineProperty({}, "".concat(prefixCls, "-error"), status === 'error'));
1295
+
1296
+ // ========================= ImageProps =========================
1297
+ var imgCommonProps = useMemo(function () {
1298
+ var obj = {};
1299
+ COMMON_PROPS.forEach(function (prop) {
1300
+ if (props[prop] !== undefined) {
1301
+ obj[prop] = props[prop];
1302
+ }
1303
+ });
1304
+ return obj;
1305
+ }, COMMON_PROPS.map(function (prop) {
1306
+ return props[prop];
1307
+ }));
1308
+
1309
+ // ========================== Register ==========================
1310
+ var registerData = useMemo(function () {
1311
+ return _objectSpread2(_objectSpread2({}, imgCommonProps), {}, {
1312
+ src: src
1313
+ });
1314
+ }, [src, imgCommonProps]);
1315
+ var imageId = useRegisterImage(canPreview, registerData);
1316
+
1317
+ // ========================== Preview ===========================
1318
+ var onPreview = function onPreview(e) {
1319
+ var _getOffset = getOffset(e.target),
1320
+ left = _getOffset.left,
1321
+ top = _getOffset.top;
1322
+ if (groupContext) {
1323
+ groupContext.onPreview(imageId, left, top);
1324
+ } else {
1325
+ setMousePosition({
1326
+ x: left,
1327
+ y: top
1328
+ });
1329
+ setShowPreview(true);
1330
+ }
1331
+ onClick === null || onClick === void 0 || onClick(e);
1332
+ };
1333
+
1334
+ // =========================== Render ===========================
1335
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", _extends({}, otherProps, {
1336
+ className: wrapperClass,
1337
+ onClick: canPreview ? onPreview : onClick,
1338
+ style: _objectSpread2({
1339
+ width: width,
1340
+ height: height
1341
+ }, wrapperStyle)
1342
+ }), /*#__PURE__*/React.createElement("img", _extends({}, imgCommonProps, {
1343
+ className: clsx("".concat(prefixCls, "-img"), _defineProperty({}, "".concat(prefixCls, "-img-placeholder"), placeholder === true), className),
1344
+ style: _objectSpread2({
1345
+ height: height
1346
+ }, style),
1347
+ ref: getImgRef
1348
+ }, srcAndOnload, {
1349
+ width: width,
1350
+ height: height,
1351
+ onError: onError
1352
+ })), status === 'loading' && /*#__PURE__*/React.createElement("div", {
1353
+ "aria-hidden": "true",
1354
+ className: "".concat(prefixCls, "-placeholder")
1355
+ }, placeholder), previewMask && canPreview && /*#__PURE__*/React.createElement("div", {
1356
+ className: clsx("".concat(prefixCls, "-mask"), maskClassName),
1357
+ style: {
1358
+ display: (style === null || style === void 0 ? void 0 : style.display) === 'none' ? 'none' : undefined
1359
+ }
1360
+ }, previewMask)), !groupContext && canPreview && /*#__PURE__*/React.createElement(Preview, _extends({
1361
+ "aria-hidden": !isShowPreview,
1362
+ visible: isShowPreview,
1363
+ prefixCls: previewPrefixCls,
1364
+ onClose: onPreviewClose,
1365
+ mousePosition: mousePosition,
1366
+ src: src,
1367
+ alt: alt,
1368
+ fallback: fallback,
1369
+ getContainer: getPreviewContainer,
1370
+ icons: icons,
1371
+ movable: movable,
1372
+ scaleStep: scaleStep,
1373
+ minScale: minScale,
1374
+ maxScale: maxScale,
1375
+ rootClassName: rootClassName,
1376
+ imageRender: imageRender,
1377
+ imgCommonProps: imgCommonProps,
1378
+ toolbarRender: toolbarRender
1379
+ }, dialogProps)));
1380
+ };
1381
+ ImageInternal.PreviewGroup = Group;
1382
+ ImageInternal.displayName = 'Image';
1383
+
1384
+ const icons = {
1385
+ rotateLeft: jsx(TurnLeft, {
1386
+ size: 'large'
1387
+ }),
1388
+ rotateRight: jsx(TurnRight, {
1389
+ size: 'large'
1390
+ }),
1391
+ zoomIn: jsx(PlusCircle, {
1392
+ size: 'large'
1393
+ }),
1394
+ zoomOut: jsx(MinusCircle, {
1395
+ size: 'large'
1396
+ }),
1397
+ close: jsx(CloseCircleF, {
1398
+ size: 'large'
1399
+ }),
1400
+ left: jsx(LeftCircleF, {}),
1401
+ right: jsx(RightCircleF, {}),
1402
+ flipX: jsx(Switch, {
1403
+ size: 'large'
1404
+ }),
1405
+ flipY: jsx(Sort, {
1406
+ size: 'large'
1407
+ })
1408
+ };
1409
+ const InternalPreviewGroup = _a => {
1410
+ var {
1411
+ previewPrefixCls: customizePrefixCls,
1412
+ preview,
1413
+ children = null
1414
+ } = _a,
1415
+ props = __rest(_a, ["previewPrefixCls", "preview", "children"]);
1416
+ const imagePrefixCls = "".concat($prefixCls, "-image");
1417
+ const previewPrefixCls = "".concat(imagePrefixCls, "-preview");
1418
+ const mergedPreview = React.useMemo(() => {
1419
+ var _a;
1420
+ if (preview === false) {
1421
+ return preview;
1422
+ }
1423
+ const _preview = typeof preview === 'object' ? preview : {};
1424
+ const mergedRootClassName = clsx((_a = _preview.rootClassName) !== null && _a !== void 0 ? _a : '');
1425
+ return Object.assign(Object.assign({}, _preview), {
1426
+ rootClassName: mergedRootClassName
1427
+ });
1428
+ }, [preview]);
1429
+ return jsx(ImageInternal.PreviewGroup, Object.assign({
1430
+ preview: mergedPreview,
1431
+ previewPrefixCls: previewPrefixCls,
1432
+ icons: icons
1433
+ }, props, {
1434
+ children: children
1435
+ }));
1436
+ };
1437
+
1438
+ var css_248z = "@charset \"UTF-8\";\n/**\n* @author linhd\n* @date 2023/4/11 14:16\n* @description 最新色卡\n*/\n.paraui-v4-image {\n display: inline-flex;\n position: relative;\n}\n.paraui-v4-image-img {\n width: 100%;\n height: auto;\n}\n.paraui-v4-image-img-placeholder {\n background-repeat: no-repeat;\n background-position: center center;\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjhweCIgaGVpZ2h0PSIyMnB4IiB2aWV3Qm94PSIwIDAgMjggMjIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDU1LjIgKDc4MTgxKSAtIGh0dHBzOi8vc2tldGNoYXBwLmNvbSAtLT4KICAgIDx0aXRsZT5pbWFnZS1maWxs5aSH5Lu9PC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9Iuafpeeci+WbvueJh+S8mOWMljQuMCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IuWKoOi9veWbvueJhyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTU3Mi4wMDAwMDAsIC01MDYuMDAwMDAwKSI+CiAgICAgICAgICAgIDxnIGlkPSJpbWFnZS1maWxs5aSH5Lu9IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1NzAuMDAwMDAwLCA1MDEuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlIiBmaWxsPSIjMDAwMDAwIiBvcGFjaXR5PSIwIiB4PSIwIiB5PSIwIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOSw1IEwzLDUgQzIuNDQ2ODc1LDUgMiw1LjQ0Njg3NSAyLDYgTDIsMjYgQzIsMjYuNTUzMTI1IDIuNDQ2ODc1LDI3IDMsMjcgTDI5LDI3IEMyOS41NTMxMjUsMjcgMzAsMjYuNTUzMTI1IDMwLDI2IEwzMCw2IEMzMCw1LjQ0Njg3NSAyOS41NTMxMjUsNSAyOSw1IFogTTEwLjU2MjUsOS41IEMxMS42NjU2MjUsOS41IDEyLjU2MjUsMTAuMzk2ODc1IDEyLjU2MjUsMTEuNSBDMTIuNTYyNSwxMi42MDMxMjUgMTEuNjY1NjI1LDEzLjUgMTAuNTYyNSwxMy41IEM5LjQ1OTM3NSwxMy41IDguNTYyNSwxMi42MDMxMjUgOC41NjI1LDExLjUgQzguNTYyNSwxMC4zOTY4NzUgOS40NTkzNzUsOS41IDEwLjU2MjUsOS41IFogTTI2LjYyMTg3NSwyMy4xNTkzNzUgQzI2LjU3ODEyNSwyMy4xOTY4NzUgMjYuNTE4NzUsMjMuMjE4NzUgMjYuNDU5Mzc1LDIzLjIxODc1IEw1LjUzNzUsMjMuMjE4NzUgQzUuNCwyMy4yMTg3NSA1LjI4NzUsMjMuMTA2MjUgNS4yODc1LDIyLjk2ODc1IEM1LjI4NzUsMjIuOTA5Mzc1IDUuMzA5Mzc1LDIyLjg1MzEyNSA1LjM0Njg3NSwyMi44MDYyNSBMMTAuNjY4NzUsMTYuNDkzNzUgQzEwLjc1NjI1LDE2LjM4NzUgMTAuOTE1NjI1LDE2LjM3NSAxMS4wMjE4NzUsMTYuNDYyNSBDMTEuMDMxMjUsMTYuNDcxODc1IDExLjA0Mzc1LDE2LjQ4MTI1IDExLjA1MzEyNSwxNi40OTM3NSBMMTQuMTU5Mzc1LDIwLjE4MTI1IEwxOS4xLDE0LjMyMTg3NSBDMTkuMTg3NSwxNC4yMTU2MjUgMTkuMzQ2ODc1LDE0LjIwMzEyNSAxOS40NTMxMjUsMTQuMjkwNjI1IEMxOS40NjI1LDE0LjMgMTkuNDc1LDE0LjMwOTM3NSAxOS40ODQzNzUsMTQuMzIxODc1IEwyNi42NTkzNzUsMjIuODA5Mzc1IEMyNi43NDA2MjUsMjIuOTEyNSAyNi43MjgxMjUsMjMuMDcxODc1IDI2LjYyMTg3NSwyMy4xNTkzNzUgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjRThFOEU4Ij48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==);\n}\n.paraui-v4-image-placeholder {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n}\n.paraui-v4-image-mask {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.3);\n opacity: 0;\n pointer-events: none;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #fff;\n transition: opacity 0.3s;\n}\n.paraui-v4-image:hover .paraui-v4-image-mask {\n opacity: 1;\n}\n.paraui-v4-image-preview {\n text-align: center;\n height: 100%;\n pointer-events: none;\n}\n.paraui-v4-image-preview-body {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n overflow: hidden;\n}\n.paraui-v4-image-preview.zoom-enter, .paraui-v4-image-preview.zoom-appear {\n transform: none;\n opacity: 0;\n animation-duration: 0.3s;\n}\n.paraui-v4-image-preview-mask {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 100%;\n background-color: rgba(29, 33, 38, 0.4);\n}\n.paraui-v4-image-preview-mask-hidden {\n display: none;\n}\n.paraui-v4-image-preview-img {\n cursor: grab;\n transform: scale3d(1, 1, 1);\n transition: transform 0.3s cubic-bezier(0, 0, 0.25, 1) 0s;\n user-select: none;\n vertical-align: middle;\n max-width: 100%;\n max-height: 70%;\n}\n.paraui-v4-image-preview-img-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.paraui-v4-image-preview-img-wrapper > * {\n pointer-events: auto;\n}\n.paraui-v4-image-preview-moving .paraui-v4-image-preview-img {\n cursor: grabbing;\n}\n.paraui-v4-image-preview-moving .paraui-v4-image-preview-img-wrapper {\n transition-duration: 0s;\n}\n.paraui-v4-image-preview-wrap {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1000;\n overflow: auto;\n outline: 0;\n -webkit-overflow-scrolling: touch;\n}\n.paraui-v4-image-preview-close {\n position: fixed;\n top: 30px;\n right: 30px;\n display: flex;\n background-color: transparent;\n outline: 0;\n border: 0;\n cursor: pointer;\n}\n.paraui-v4-image-preview-close svg {\n color: rgba(255, 255, 255, 0.5);\n font-size: 50px;\n}\n.paraui-v4-image-preview-close:hover svg {\n color: rgba(255, 255, 255, 0.3);\n}\n.paraui-v4-image-preview-operations-wrapper {\n position: fixed;\n z-index: 1001;\n}\n.paraui-v4-image-preview-footer {\n position: fixed;\n z-index: 1001;\n bottom: 32px;\n left: 0;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n.paraui-v4-image-preview-progress {\n margin-bottom: 20px;\n color: rgb(255, 255, 255);\n}\n.paraui-v4-image-preview-operations {\n display: flex;\n background: rgba(29, 33, 38, 0.9);\n border-radius: 4px;\n padding: 0 8px;\n}\n.paraui-v4-image-preview-operations-operation {\n padding: 8px;\n cursor: pointer;\n}\n.paraui-v4-image-preview-operations-operation svg {\n color: rgb(255, 255, 255);\n transition: all 0.3s;\n font-size: 24px;\n vertical-align: top;\n}\n.paraui-v4-image-preview-operations-operation:hover svg {\n background-color: rgba(255, 255, 255, 0.3);\n border-radius: 2px;\n}\n.paraui-v4-image-preview-operations-operation-disabled {\n pointer-events: none;\n color: rgb(161, 168, 179);\n}\n.paraui-v4-image-preview-operations-operation-disabled svg {\n color: rgb(161, 168, 179);\n}\n.paraui-v4-image-preview-operations-operation:first-of-type {\n margin-left: 0;\n}\n.paraui-v4-image-preview-switch-left, .paraui-v4-image-preview-switch-right {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n top: 50%;\n position: fixed;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1001;\n cursor: pointer;\n}\n.paraui-v4-image-preview-switch-left-disabled svg:hover, .paraui-v4-image-preview-switch-right-disabled svg:hover {\n color: rgba(29, 33, 38, 0.4);\n}\n.paraui-v4-image-preview-switch-left svg, .paraui-v4-image-preview-switch-right svg {\n font-size: 50px;\n color: rgba(255, 255, 255, 0.5);\n}\n.paraui-v4-image-preview-switch-left svg:hover, .paraui-v4-image-preview-switch-right svg:hover {\n color: rgba(255, 255, 255, 0.3);\n}\n.paraui-v4-image-preview-switch-left-disabled, .paraui-v4-image-preview-switch-right-disabled {\n cursor: not-allowed;\n}\n.paraui-v4-image-preview-switch-left-disabled > .anticon, .paraui-v4-image-preview-switch-right-disabled > .anticon {\n cursor: not-allowed;\n}\n.paraui-v4-image-preview-switch-left > .anticon, .paraui-v4-image-preview-switch-right > .anticon {\n font-size: 30px;\n}\n.paraui-v4-image-preview-switch-left {\n left: 40px;\n}\n.paraui-v4-image-preview-switch-right {\n position: fixed;\n right: 40px;\n}\n\n.fade-enter,\n.fade-appear {\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-play-state: paused;\n}\n\n.fade-leave {\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-play-state: paused;\n}\n\n.fade-enter.fade-enter-active,\n.fade-appear.fade-appear-active {\n animation-name: rcImageFadeIn;\n animation-play-state: running;\n}\n\n.fade-leave.fade-leave-active {\n animation-name: rcImageFadeOut;\n animation-play-state: running;\n pointer-events: none;\n}\n\n.fade-enter,\n.fade-appear {\n opacity: 0;\n animation-timing-function: linear;\n}\n\n.fade-leave {\n animation-timing-function: linear;\n}\n\n@keyframes rcImageFadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes rcImageFadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n}\n.zoom-enter,\n.zoom-appear {\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-play-state: paused;\n}\n\n.zoom-leave {\n animation-duration: 0.3s;\n animation-fill-mode: both;\n animation-play-state: paused;\n}\n\n.zoom-enter.zoom-enter-active,\n.zoom-appear.zoom-appear-active {\n animation-name: rcImageZoomIn;\n animation-play-state: running;\n}\n\n.zoom-leave.zoom-leave-active {\n animation-name: rcImageZoomOut;\n animation-play-state: running;\n pointer-events: none;\n}\n\n.zoom-enter,\n.zoom-appear {\n transform: scale(0);\n opacity: 0;\n animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\n}\n\n.zoom-leave {\n animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);\n}\n\n@keyframes rcImageZoomIn {\n 0% {\n transform: scale(0.2);\n opacity: 0;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n}\n@keyframes rcImageZoomOut {\n 0% {\n transform: scale(1);\n }\n 100% {\n transform: scale(0.2);\n opacity: 0;\n }\n}";
1439
+ styleInject(css_248z);
1440
+
1441
+ const imagePrefixCls = "".concat($prefixCls, "-image");
1442
+ const Image = props => {
1443
+ const {
1444
+ prefixCls: customizePrefixCls,
1445
+ preview,
1446
+ className,
1447
+ rootClassName,
1448
+ style = {}
1449
+ } = props,
1450
+ otherProps = __rest(props, ["prefixCls", "preview", "className", "rootClassName", "style"]);
1451
+ const mergedPreview = React.useMemo(() => {
1452
+ if (preview === false) {
1453
+ return preview;
1454
+ }
1455
+ const _preview = typeof preview === 'object' ? preview : {};
1456
+ const {
1457
+ getContainer
1458
+ } = _preview,
1459
+ restPreviewProps = __rest(_preview, ["getContainer"]);
1460
+ return Object.assign(Object.assign({
1461
+ mask: jsx("div", Object.assign({
1462
+ className: "".concat(imagePrefixCls, "-mask-info")
1463
+ }, {
1464
+ children: jsx(PreviewOpen, {
1465
+ size: 'large'
1466
+ })
1467
+ })),
1468
+ icons
1469
+ }, restPreviewProps), {
1470
+ getContainer: getContainer
1471
+ });
1472
+ }, [preview]);
1473
+ const mergedClassName = clsx(className);
1474
+ const mergedRootClassName = clsx(rootClassName);
1475
+ return jsx(ImageInternal, Object.assign({
1476
+ rootClassName: mergedRootClassName,
1477
+ prefixCls: imagePrefixCls,
1478
+ preview: mergedPreview,
1479
+ className: mergedClassName,
1480
+ style: Object.assign({}, style)
1481
+ }, otherProps));
1482
+ };
1483
+ Image.PreviewGroup = InternalPreviewGroup;
1484
+
1485
+ export { Image as default };