@v-c/image 0.0.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.
Files changed (105) hide show
  1. package/LICENSE +21 -0
  2. package/dist/Image.cjs +228 -0
  3. package/dist/Image.d.ts +46 -0
  4. package/dist/Image.js +226 -0
  5. package/dist/Preview/CloseBtn.cjs +41 -0
  6. package/dist/Preview/CloseBtn.d.ts +8 -0
  7. package/dist/Preview/CloseBtn.js +39 -0
  8. package/dist/Preview/Footer.cjs +231 -0
  9. package/dist/Preview/Footer.d.ts +24 -0
  10. package/dist/Preview/Footer.js +229 -0
  11. package/dist/Preview/PrevNext.cjs +56 -0
  12. package/dist/Preview/PrevNext.d.ts +10 -0
  13. package/dist/Preview/PrevNext.js +54 -0
  14. package/dist/Preview/index.cjs +399 -0
  15. package/dist/Preview/index.d.ts +101 -0
  16. package/dist/Preview/index.js +397 -0
  17. package/dist/PreviewGroup.cjs +135 -0
  18. package/dist/PreviewGroup.d.ts +34 -0
  19. package/dist/PreviewGroup.js +133 -0
  20. package/dist/common.cjs +12 -0
  21. package/dist/common.d.ts +2 -0
  22. package/dist/common.js +12 -0
  23. package/dist/context.cjs +10 -0
  24. package/dist/context.d.ts +7 -0
  25. package/dist/context.js +9 -0
  26. package/dist/getFixScaleEleTransPosition.cjs +25 -0
  27. package/dist/getFixScaleEleTransPosition.d.ts +16 -0
  28. package/dist/getFixScaleEleTransPosition.js +24 -0
  29. package/dist/hooks/useImageTransform.cjs +96 -0
  30. package/dist/hooks/useImageTransform.d.ts +21 -0
  31. package/dist/hooks/useImageTransform.js +95 -0
  32. package/dist/hooks/useMouseEvent.cjs +93 -0
  33. package/dist/hooks/useMouseEvent.d.ts +9 -0
  34. package/dist/hooks/useMouseEvent.js +92 -0
  35. package/dist/hooks/usePreviewItems.cjs +45 -0
  36. package/dist/hooks/usePreviewItems.d.ts +10 -0
  37. package/dist/hooks/usePreviewItems.js +44 -0
  38. package/dist/hooks/useRegisterImage.cjs +25 -0
  39. package/dist/hooks/useRegisterImage.d.ts +3 -0
  40. package/dist/hooks/useRegisterImage.js +24 -0
  41. package/dist/hooks/useStatus.cjs +46 -0
  42. package/dist/hooks/useStatus.d.ts +13 -0
  43. package/dist/hooks/useStatus.js +45 -0
  44. package/dist/hooks/useTouchEvent.cjs +120 -0
  45. package/dist/hooks/useTouchEvent.d.ts +8 -0
  46. package/dist/hooks/useTouchEvent.js +119 -0
  47. package/dist/index.cjs +8 -0
  48. package/dist/index.d.ts +11 -0
  49. package/dist/index.js +6 -0
  50. package/dist/interface.cjs +0 -0
  51. package/dist/interface.d.ts +13 -0
  52. package/dist/interface.js +0 -0
  53. package/dist/portal/dist/Context.cjs +12 -0
  54. package/dist/portal/dist/Context.js +11 -0
  55. package/dist/portal/dist/Portal.cjs +91 -0
  56. package/dist/portal/dist/Portal.js +91 -0
  57. package/dist/portal/dist/index.cjs +3 -0
  58. package/dist/portal/dist/index.js +3 -0
  59. package/dist/portal/dist/useDom.cjs +47 -0
  60. package/dist/portal/dist/useDom.js +47 -0
  61. package/dist/portal/dist/useScrollLocker.cjs +26 -0
  62. package/dist/portal/dist/useScrollLocker.js +26 -0
  63. package/dist/portal/dist/util.cjs +4 -0
  64. package/dist/portal/dist/util.js +4 -0
  65. package/dist/previewConfig.cjs +4 -0
  66. package/dist/previewConfig.d.ts +4 -0
  67. package/dist/previewConfig.js +3 -0
  68. package/dist/util/dist/Dom/canUseDom.cjs +4 -0
  69. package/dist/util/dist/Dom/canUseDom.js +4 -0
  70. package/dist/util/dist/Dom/contains.cjs +11 -0
  71. package/dist/util/dist/Dom/contains.js +11 -0
  72. package/dist/util/dist/Dom/dynamicCSS.cjs +78 -0
  73. package/dist/util/dist/Dom/dynamicCSS.js +77 -0
  74. package/dist/util/dist/KeyCode.cjs +81 -0
  75. package/dist/util/dist/KeyCode.js +81 -0
  76. package/dist/util/dist/RenderComponent.cjs +29 -0
  77. package/dist/util/dist/RenderComponent.js +29 -0
  78. package/dist/util/dist/classnames.cjs +36 -0
  79. package/dist/util/dist/classnames.js +35 -0
  80. package/dist/util/dist/getScrollBarSize.cjs +45 -0
  81. package/dist/util/dist/getScrollBarSize.js +45 -0
  82. package/dist/util/dist/hooks/useMergedState.cjs +24 -0
  83. package/dist/util/dist/hooks/useMergedState.js +24 -0
  84. package/dist/util/dist/index.cjs +3 -0
  85. package/dist/util/dist/index.js +3 -0
  86. package/dist/util/dist/isEqual.cjs +27 -0
  87. package/dist/util/dist/isEqual.js +27 -0
  88. package/dist/util/dist/omit.cjs +8 -0
  89. package/dist/util/dist/omit.js +8 -0
  90. package/dist/util/dist/pickAttrs.cjs +39 -0
  91. package/dist/util/dist/pickAttrs.js +39 -0
  92. package/dist/util/dist/props-util/index.cjs +47 -0
  93. package/dist/util/dist/props-util/index.js +44 -0
  94. package/dist/util/dist/raf.cjs +36 -0
  95. package/dist/util/dist/raf.js +36 -0
  96. package/dist/util/dist/type.cjs +2 -0
  97. package/dist/util/dist/type.js +2 -0
  98. package/dist/util/dist/utils/transition.cjs +21 -0
  99. package/dist/util/dist/utils/transition.js +21 -0
  100. package/dist/util/dist/warning.cjs +37 -0
  101. package/dist/util/dist/warning.js +37 -0
  102. package/dist/util.cjs +26 -0
  103. package/dist/util.d.ts +5 -0
  104. package/dist/util.js +25 -0
  105. package/package.json +48 -0
@@ -0,0 +1,399 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ const require_classnames = require("../util/dist/classnames.cjs");
3
+ require("../util/dist/index.cjs");
4
+ const require_context = require("../context.cjs");
5
+ const require_useStatus = require("../hooks/useStatus.cjs");
6
+ const require_index$1 = require("../portal/dist/index.cjs");
7
+ const require_KeyCode = require("../util/dist/KeyCode.cjs");
8
+ const require_transition = require("../util/dist/utils/transition.cjs");
9
+ const require_useImageTransform = require("../hooks/useImageTransform.cjs");
10
+ const require_previewConfig = require("../previewConfig.cjs");
11
+ const require_useMouseEvent = require("../hooks/useMouseEvent.cjs");
12
+ const require_useTouchEvent = require("../hooks/useTouchEvent.cjs");
13
+ const require_CloseBtn = require("./CloseBtn.cjs");
14
+ const require_Footer = require("./Footer.cjs");
15
+ const require_PrevNext = require("./PrevNext.cjs");
16
+ let vue = require("vue");
17
+ var Preview = /* @__PURE__ */ (0, vue.defineComponent)((props, { attrs }) => {
18
+ const imgEl = (0, vue.shallowRef)();
19
+ const groupContext = require_context.usePreviewGroupContext();
20
+ const showLeftOrRightSwitches = (0, vue.computed)(() => !!groupContext && (props.count ?? 1) > 1);
21
+ const showOperationsProgress = (0, vue.computed)(() => !!groupContext && (props.count ?? 1) >= 1);
22
+ const enableTransition = (0, vue.shallowRef)(true);
23
+ (0, vue.watch)(enableTransition, async (val) => {
24
+ if (!val) {
25
+ await (0, vue.nextTick)();
26
+ enableTransition.value = true;
27
+ }
28
+ });
29
+ const { transform, resetTransform, updateTransform, dispatchZoomChange } = require_useImageTransform.default(imgEl, (0, vue.computed)(() => props.minScale ?? 1), (0, vue.computed)(() => props.maxScale ?? 50), (info) => props.onTransform?.(info));
30
+ const { isMoving, onMouseDown, onWheel } = require_useMouseEvent.default(imgEl, (0, vue.computed)(() => props.movable ?? true), (0, vue.computed)(() => !!props.open), (0, vue.computed)(() => props.scaleStep ?? .5), transform, updateTransform, dispatchZoomChange);
31
+ const { isTouching, onTouchStart, onTouchMove, onTouchEnd } = require_useTouchEvent.default(imgEl, (0, vue.computed)(() => props.movable ?? true), (0, vue.computed)(() => !!props.open), (0, vue.computed)(() => props.minScale ?? 1), transform, updateTransform, dispatchZoomChange);
32
+ (0, vue.watch)(() => props.open, (open) => {
33
+ if (!open) resetTransform("close");
34
+ });
35
+ const onDoubleClick = (event) => {
36
+ if (!props.open) return;
37
+ if (transform.value.scale !== 1) updateTransform({
38
+ x: 0,
39
+ y: 0,
40
+ scale: 1
41
+ }, "doubleClick");
42
+ else dispatchZoomChange(1 + (props.scaleStep ?? .5), "doubleClick", event.clientX, event.clientY);
43
+ };
44
+ const onZoomIn = () => {
45
+ dispatchZoomChange(1 + (props.scaleStep ?? .5), "zoomIn");
46
+ };
47
+ const onZoomOut = () => {
48
+ dispatchZoomChange(1 / (1 + (props.scaleStep ?? .5)), "zoomOut");
49
+ };
50
+ const onRotateRight = () => {
51
+ updateTransform({ rotate: transform.value.rotate + 90 }, "rotateRight");
52
+ };
53
+ const onRotateLeft = () => {
54
+ updateTransform({ rotate: transform.value.rotate - 90 }, "rotateLeft");
55
+ };
56
+ const onFlipX = () => {
57
+ updateTransform({ flipX: !transform.value.flipX }, "flipX");
58
+ };
59
+ const onFlipY = () => {
60
+ updateTransform({ flipY: !transform.value.flipY }, "flipY");
61
+ };
62
+ const onReset = () => {
63
+ resetTransform("reset");
64
+ };
65
+ const onActive = (offset) => {
66
+ const current = props.current ?? 0;
67
+ const count = props.count ?? 1;
68
+ const nextCurrent = current + offset;
69
+ if (nextCurrent >= 0 && nextCurrent <= count - 1) {
70
+ enableTransition.value = false;
71
+ resetTransform(offset < 0 ? "prev" : "next");
72
+ props.onChange?.(nextCurrent, current);
73
+ }
74
+ };
75
+ const onKeyDown = (event) => {
76
+ if (!props.open) return;
77
+ const { key } = event;
78
+ if (key === require_KeyCode.KeyCodeStr.Escape) {
79
+ props.onClose?.();
80
+ return;
81
+ }
82
+ if (showLeftOrRightSwitches.value) {
83
+ if (key === require_KeyCode.KeyCodeStr.ArrowLeft) onActive(-1);
84
+ else if (key === require_KeyCode.KeyCodeStr.ArrowRight) onActive(1);
85
+ }
86
+ };
87
+ (0, vue.watchEffect)((onCleanup) => {
88
+ if (props.open) window.addEventListener("keydown", onKeyDown);
89
+ onCleanup(() => {
90
+ window.removeEventListener("keydown", onKeyDown);
91
+ });
92
+ });
93
+ const lockScroll = (0, vue.shallowRef)(false);
94
+ (0, vue.watch)(() => props.open, (open) => {
95
+ if (open) lockScroll.value = true;
96
+ });
97
+ const portalRender = (0, vue.shallowRef)(false);
98
+ (0, vue.watch)(() => props.open, (open) => {
99
+ if (open) portalRender.value = true;
100
+ });
101
+ const onVisibleChanged = (nextVisible) => {
102
+ if (!nextVisible) {
103
+ lockScroll.value = false;
104
+ portalRender.value = false;
105
+ }
106
+ props.afterOpenChange?.(nextVisible);
107
+ };
108
+ const setImgRef = (el) => {
109
+ imgEl.value = el;
110
+ };
111
+ const [getImgRef, srcAndOnload] = require_useStatus.default({
112
+ src: (0, vue.computed)(() => props.src),
113
+ fallback: (0, vue.computed)(() => props.fallback)
114
+ });
115
+ return () => {
116
+ const { prefixCls, rootClassName, src, alt, imageInfo, open, closeIcon, getContainer, current = 0, count = 1, countRender, motionName = "fade", imageRender, imgCommonProps, actionsRender, classNames = {}, styles = {}, mousePosition, zIndex, icons = {} } = props;
117
+ const bodyStyle = { ...styles.body ?? {} };
118
+ if (mousePosition) bodyStyle.transformOrigin = `${mousePosition.x}px ${mousePosition.y}px`;
119
+ const image = {
120
+ url: src || "",
121
+ alt: alt || "",
122
+ ...imageInfo
123
+ };
124
+ const imgNode = (0, vue.createVNode)("img", (0, vue.mergeProps)(imgCommonProps, {
125
+ "src": srcAndOnload.value.src,
126
+ "ref": (el) => {
127
+ setImgRef(el);
128
+ getImgRef(el);
129
+ },
130
+ "width": props.width,
131
+ "height": props.height,
132
+ "class": `${prefixCls}-img`,
133
+ "alt": alt,
134
+ "onLoad": srcAndOnload.value.onLoad,
135
+ "style": {
136
+ transform: `translate3d(${transform.value.x}px, ${transform.value.y}px, 0) scale3d(${transform.value.flipX ? "-" : ""}${transform.value.scale}, ${transform.value.flipY ? "-" : ""}${transform.value.scale}, 1) rotate(${transform.value.rotate}deg)`,
137
+ transitionDuration: !enableTransition.value || isTouching.value ? "0s" : void 0
138
+ },
139
+ "onWheel": onWheel,
140
+ "onMousedown": onMouseDown,
141
+ "onDblclick": onDoubleClick,
142
+ "onTouchstart": onTouchStart,
143
+ "onTouchmove": onTouchMove,
144
+ "onTouchend": onTouchEnd,
145
+ "onTouchcancel": onTouchEnd
146
+ }), null);
147
+ const mergedRootStyle = {
148
+ ...styles.root ?? {},
149
+ ...attrs.style
150
+ };
151
+ if (zIndex) mergedRootStyle.zIndex = zIndex;
152
+ const mergedRootCls = require_classnames.clsx(prefixCls, rootClassName, classNames.root, { [`${prefixCls}-moving`]: isMoving.value });
153
+ const transitionProps = require_transition.getTransitionProps(motionName);
154
+ return (0, vue.createVNode)(require_index$1.src_default, {
155
+ "open": portalRender.value,
156
+ "getContainer": getContainer,
157
+ "autoLock": lockScroll.value
158
+ }, { default: () => [(0, vue.createVNode)(vue.Transition, (0, vue.mergeProps)(transitionProps, {
159
+ "onAfterEnter": () => onVisibleChanged(true),
160
+ "onAfterLeave": () => onVisibleChanged(false)
161
+ }), { default: () => {
162
+ if (!(portalRender.value && open)) return null;
163
+ return (0, vue.createVNode)("div", {
164
+ "class": mergedRootCls,
165
+ "style": mergedRootStyle
166
+ }, [
167
+ (0, vue.createVNode)("div", {
168
+ "class": require_classnames.clsx(`${prefixCls}-mask`, classNames.mask),
169
+ "style": styles.mask,
170
+ "onClick": () => props.onClose?.()
171
+ }, null),
172
+ (0, vue.createVNode)("div", {
173
+ "class": require_classnames.clsx(`${prefixCls}-body`, classNames.body),
174
+ "style": bodyStyle
175
+ }, [imageRender ? imageRender(imgNode, {
176
+ transform: transform.value,
177
+ image,
178
+ ...groupContext ? { current } : {}
179
+ }) : imgNode]),
180
+ closeIcon !== false && closeIcon !== null && (0, vue.createVNode)(require_CloseBtn.default, {
181
+ "prefixCls": prefixCls,
182
+ "icon": closeIcon === true ? icons.close : closeIcon || icons.close,
183
+ "onClick": () => props.onClose?.()
184
+ }, null),
185
+ showLeftOrRightSwitches.value && (0, vue.createVNode)(require_PrevNext.default, {
186
+ "prefixCls": prefixCls,
187
+ "current": current,
188
+ "count": count,
189
+ "icons": icons,
190
+ "onActive": onActive
191
+ }, null),
192
+ (0, vue.createVNode)(require_Footer.default, {
193
+ "prefixCls": prefixCls,
194
+ "showProgress": showOperationsProgress.value,
195
+ "current": current,
196
+ "count": count,
197
+ "showSwitch": showLeftOrRightSwitches.value,
198
+ "classNames": classNames,
199
+ "styles": styles,
200
+ "image": image,
201
+ "transform": transform.value,
202
+ "icons": icons,
203
+ "countRender": countRender,
204
+ "actionsRender": actionsRender,
205
+ "scale": transform.value.scale,
206
+ "minScale": props.minScale ?? 1,
207
+ "maxScale": props.maxScale ?? 50,
208
+ "onActive": onActive,
209
+ "onFlipY": onFlipY,
210
+ "onFlipX": onFlipX,
211
+ "onRotateLeft": onRotateLeft,
212
+ "onRotateRight": onRotateRight,
213
+ "onZoomOut": onZoomOut,
214
+ "onZoomIn": onZoomIn,
215
+ "onClose": () => props.onClose?.(),
216
+ "onReset": onReset
217
+ }, null)
218
+ ]);
219
+ } })] });
220
+ };
221
+ }, {
222
+ props: /* @__PURE__ */ (0, vue.mergeDefaults)({
223
+ prefixCls: {
224
+ type: String,
225
+ required: true,
226
+ default: void 0
227
+ },
228
+ classNames: {
229
+ type: Object,
230
+ required: false,
231
+ default: void 0
232
+ },
233
+ styles: {
234
+ type: Object,
235
+ required: false,
236
+ default: void 0
237
+ },
238
+ imageInfo: {
239
+ type: Object,
240
+ required: false,
241
+ default: void 0
242
+ },
243
+ fallback: {
244
+ type: String,
245
+ required: false,
246
+ default: void 0
247
+ },
248
+ imgCommonProps: {
249
+ type: Object,
250
+ required: false,
251
+ default: void 0
252
+ },
253
+ width: {
254
+ type: [String, Number],
255
+ required: false,
256
+ default: void 0
257
+ },
258
+ height: {
259
+ type: [String, Number],
260
+ required: false,
261
+ default: void 0
262
+ },
263
+ current: {
264
+ type: Number,
265
+ required: false,
266
+ default: void 0
267
+ },
268
+ count: {
269
+ type: Number,
270
+ required: false,
271
+ default: void 0
272
+ },
273
+ onChange: {
274
+ type: Function,
275
+ required: false,
276
+ default: void 0
277
+ },
278
+ onClose: {
279
+ type: Function,
280
+ required: false,
281
+ default: void 0
282
+ },
283
+ mousePosition: {
284
+ type: [null, Object],
285
+ required: true,
286
+ default: void 0
287
+ },
288
+ rootClassName: {
289
+ type: String,
290
+ required: false,
291
+ default: void 0
292
+ },
293
+ src: {
294
+ type: String,
295
+ required: false,
296
+ default: void 0
297
+ },
298
+ alt: {
299
+ type: String,
300
+ required: false,
301
+ default: void 0
302
+ },
303
+ scaleStep: {
304
+ type: Number,
305
+ required: false,
306
+ default: void 0
307
+ },
308
+ minScale: {
309
+ type: Number,
310
+ required: false,
311
+ default: void 0
312
+ },
313
+ maxScale: {
314
+ type: Number,
315
+ required: false,
316
+ default: void 0
317
+ },
318
+ motionName: {
319
+ type: String,
320
+ required: false,
321
+ default: void 0
322
+ },
323
+ open: {
324
+ type: Boolean,
325
+ required: false,
326
+ default: void 0
327
+ },
328
+ getContainer: {
329
+ required: false,
330
+ default: void 0
331
+ },
332
+ zIndex: {
333
+ type: Number,
334
+ required: false,
335
+ default: void 0
336
+ },
337
+ afterOpenChange: {
338
+ type: Function,
339
+ required: false,
340
+ default: void 0
341
+ },
342
+ movable: {
343
+ type: Boolean,
344
+ required: false,
345
+ default: void 0
346
+ },
347
+ icons: {
348
+ type: Object,
349
+ required: false,
350
+ default: void 0
351
+ },
352
+ closeIcon: {
353
+ type: [
354
+ Object,
355
+ Function,
356
+ String,
357
+ Number,
358
+ null,
359
+ Boolean,
360
+ Array
361
+ ],
362
+ required: false,
363
+ default: void 0
364
+ },
365
+ onTransform: {
366
+ type: Function,
367
+ required: false,
368
+ default: void 0
369
+ },
370
+ countRender: {
371
+ type: Function,
372
+ required: false,
373
+ default: void 0
374
+ },
375
+ imageRender: {
376
+ type: Function,
377
+ required: false,
378
+ default: void 0
379
+ },
380
+ actionsRender: {
381
+ type: Function,
382
+ required: false,
383
+ default: void 0
384
+ }
385
+ }, {
386
+ movable: true,
387
+ scaleStep: .5,
388
+ minScale: 1,
389
+ maxScale: 50,
390
+ motionName: "fade",
391
+ current: 0,
392
+ count: 1,
393
+ icons: {}
394
+ }),
395
+ name: "ImagePreview",
396
+ inheritAttrs: false
397
+ });
398
+ var Preview_default = Preview;
399
+ exports.default = Preview_default;
@@ -0,0 +1,101 @@
1
+ import { PortalProps } from '@v-c/portal';
2
+ import { VueNode } from '@v-c/util/dist/type';
3
+ import { CSSProperties } from 'vue';
4
+ import { TransformAction, TransformType } from '../hooks/useImageTransform';
5
+ import { ImgInfo } from '../Image';
6
+ import { FooterSemanticName } from './Footer';
7
+ export type PreviewSemanticName = 'root' | 'mask' | 'body' | FooterSemanticName;
8
+ export interface OperationIcons {
9
+ rotateLeft?: VueNode;
10
+ rotateRight?: VueNode;
11
+ zoomIn?: VueNode;
12
+ zoomOut?: VueNode;
13
+ close?: VueNode;
14
+ prev?: VueNode;
15
+ next?: VueNode;
16
+ /** @deprecated Please use `prev` instead */
17
+ left?: VueNode;
18
+ /** @deprecated Please use `next` instead */
19
+ right?: VueNode;
20
+ flipX?: VueNode;
21
+ flipY?: VueNode;
22
+ }
23
+ export interface Actions {
24
+ onActive: (offset: number) => void;
25
+ onFlipY: () => void;
26
+ onFlipX: () => void;
27
+ onRotateLeft: () => void;
28
+ onRotateRight: () => void;
29
+ onZoomOut: () => void;
30
+ onZoomIn: () => void;
31
+ onClose: () => void;
32
+ onReset: () => void;
33
+ }
34
+ export interface ToolbarRenderInfoType {
35
+ icons: {
36
+ prevIcon?: VueNode;
37
+ nextIcon?: VueNode;
38
+ flipYIcon: VueNode;
39
+ flipXIcon: VueNode;
40
+ rotateLeftIcon: VueNode;
41
+ rotateRightIcon: VueNode;
42
+ zoomOutIcon: VueNode;
43
+ zoomInIcon: VueNode;
44
+ };
45
+ actions: Actions;
46
+ transform: TransformType;
47
+ current: number;
48
+ total: number;
49
+ image: ImgInfo;
50
+ }
51
+ export interface InternalPreviewConfig {
52
+ /** Better to use `classNames.root` instead */
53
+ rootClassName?: string;
54
+ src?: string;
55
+ alt?: string;
56
+ scaleStep?: number;
57
+ minScale?: number;
58
+ maxScale?: number;
59
+ motionName?: string;
60
+ open?: boolean;
61
+ getContainer?: PortalProps['getContainer'];
62
+ zIndex?: number;
63
+ afterOpenChange?: (open: boolean) => void;
64
+ movable?: boolean;
65
+ icons?: OperationIcons;
66
+ closeIcon?: VueNode | boolean | null;
67
+ onTransform?: (info: {
68
+ transform: TransformType;
69
+ action: TransformAction;
70
+ }) => void;
71
+ countRender?: (current: number, total: number) => VueNode;
72
+ imageRender?: (originalNode: VueNode, info: {
73
+ transform: TransformType;
74
+ current?: number;
75
+ image: ImgInfo;
76
+ }) => VueNode;
77
+ actionsRender?: (originalNode: VueNode, info: ToolbarRenderInfoType) => VueNode;
78
+ }
79
+ export interface PreviewProps extends InternalPreviewConfig {
80
+ prefixCls: string;
81
+ classNames?: Partial<Record<PreviewSemanticName, string>>;
82
+ styles?: Partial<Record<PreviewSemanticName, CSSProperties>>;
83
+ imageInfo?: {
84
+ width: number | string;
85
+ height: number | string;
86
+ };
87
+ fallback?: string;
88
+ imgCommonProps?: Record<string, any>;
89
+ width?: string | number;
90
+ height?: string | number;
91
+ current?: number;
92
+ count?: number;
93
+ onChange?: (current: number, prev: number) => void;
94
+ onClose?: () => void;
95
+ mousePosition: null | {
96
+ x: number;
97
+ y: number;
98
+ };
99
+ }
100
+ declare const Preview: import('vue').DefineSetupFnComponent<PreviewProps, {}, {}, PreviewProps & {}, import('vue').PublicProps>;
101
+ export default Preview;