@douyinfe/semi-ui 2.19.2-alpha.0 → 2.20.0-beta.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 +243 -968
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +3449 -452
- 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/button/Button.d.ts +1 -1
- package/lib/cjs/button/index.d.ts +1 -1
- package/lib/cjs/carousel/CarouselIndicator.d.ts +1 -1
- package/lib/cjs/carousel/index.d.ts +1 -1
- package/lib/cjs/datePicker/dateInput.d.ts +1 -1
- package/lib/cjs/datePicker/datePicker.d.ts +1 -1
- package/lib/cjs/datePicker/monthsGrid.d.ts +1 -1
- package/lib/cjs/image/image.d.ts +48 -0
- package/lib/cjs/image/image.js +248 -0
- package/lib/cjs/image/index.d.ts +6 -0
- package/lib/cjs/image/index.js +29 -0
- package/lib/cjs/image/interface.d.ts +178 -0
- package/lib/cjs/image/interface.js +5 -0
- package/lib/cjs/image/preview.d.ts +81 -0
- package/lib/cjs/image/preview.js +249 -0
- package/lib/cjs/image/previewContext.d.ts +12 -0
- package/lib/cjs/image/previewContext.js +11 -0
- package/lib/cjs/image/previewFooter.d.ts +62 -0
- package/lib/cjs/image/previewFooter.js +337 -0
- package/lib/cjs/image/previewHeader.d.ts +4 -0
- package/lib/cjs/image/previewHeader.js +57 -0
- package/lib/cjs/image/previewImage.d.ts +49 -0
- package/lib/cjs/image/previewImage.js +253 -0
- package/lib/cjs/image/previewInner.d.ts +87 -0
- package/lib/cjs/image/previewInner.js +443 -0
- package/lib/cjs/index.d.ts +2 -0
- package/lib/cjs/index.js +14 -0
- package/lib/cjs/locale/interface.d.ts +13 -0
- package/lib/cjs/locale/source/ar.js +13 -0
- package/lib/cjs/locale/source/de.js +13 -0
- package/lib/cjs/locale/source/en_GB.js +13 -0
- package/lib/cjs/locale/source/en_US.js +13 -0
- package/lib/cjs/locale/source/es.js +13 -0
- package/lib/cjs/locale/source/fr.js +13 -0
- package/lib/cjs/locale/source/id_ID.js +13 -0
- package/lib/cjs/locale/source/it.js +13 -0
- package/lib/cjs/locale/source/ja_JP.js +13 -0
- package/lib/cjs/locale/source/ko_KR.js +13 -0
- package/lib/cjs/locale/source/ms_MY.js +13 -0
- package/lib/cjs/locale/source/pt_BR.js +13 -0
- package/lib/cjs/locale/source/ru_RU.js +13 -0
- package/lib/cjs/locale/source/th_TH.js +13 -0
- package/lib/cjs/locale/source/tr_TR.js +13 -0
- package/lib/cjs/locale/source/vi_VN.js +13 -0
- package/lib/cjs/locale/source/zh_CN.js +13 -0
- package/lib/cjs/locale/source/zh_TW.js +13 -0
- package/lib/cjs/progress/index.d.ts +10 -2
- package/lib/cjs/progress/index.js +37 -8
- package/lib/cjs/radio/radio.d.ts +1 -1
- package/lib/cjs/radio/radioGroup.d.ts +1 -1
- package/lib/cjs/skeleton/item.d.ts +1 -0
- package/lib/cjs/skeleton/item.js +10 -4
- package/lib/cjs/tag/index.js +5 -1
- package/lib/cjs/tag/interface.d.ts +2 -0
- package/lib/cjs/timePicker/TimePicker.d.ts +2 -2
- package/lib/cjs/timePicker/TimeShape.d.ts +1 -1
- package/lib/cjs/timePicker/index.d.ts +2 -2
- package/lib/cjs/toast/index.d.ts +9 -0
- package/lib/cjs/toast/index.js +50 -10
- package/lib/cjs/toast/toast.d.ts +1 -0
- package/lib/cjs/toast/toast.js +4 -0
- package/lib/cjs/typography/base.d.ts +1 -1
- package/lib/cjs/typography/paragraph.d.ts +1 -1
- package/lib/cjs/typography/text.d.ts +1 -1
- package/lib/cjs/typography/title.d.ts +2 -2
- package/lib/cjs/upload/index.d.ts +1 -1
- package/lib/es/button/Button.d.ts +1 -1
- package/lib/es/button/index.d.ts +1 -1
- package/lib/es/carousel/CarouselIndicator.d.ts +1 -1
- package/lib/es/carousel/index.d.ts +1 -1
- package/lib/es/datePicker/dateInput.d.ts +1 -1
- package/lib/es/datePicker/datePicker.d.ts +1 -1
- package/lib/es/datePicker/monthsGrid.d.ts +1 -1
- package/lib/es/image/image.d.ts +48 -0
- package/lib/es/image/image.js +224 -0
- package/lib/es/image/index.d.ts +6 -0
- package/lib/es/image/index.js +5 -0
- package/lib/es/image/interface.d.ts +178 -0
- package/lib/es/image/interface.js +1 -0
- package/lib/es/image/preview.d.ts +81 -0
- package/lib/es/image/preview.js +229 -0
- package/lib/es/image/previewContext.d.ts +12 -0
- package/lib/es/image/previewContext.js +2 -0
- package/lib/es/image/previewFooter.d.ts +62 -0
- package/lib/es/image/previewFooter.js +301 -0
- package/lib/es/image/previewHeader.d.ts +4 -0
- package/lib/es/image/previewHeader.js +38 -0
- package/lib/es/image/previewImage.d.ts +49 -0
- package/lib/es/image/previewImage.js +235 -0
- package/lib/es/image/previewInner.d.ts +87 -0
- package/lib/es/image/previewInner.js +419 -0
- package/lib/es/index.d.ts +2 -0
- package/lib/es/index.js +3 -1
- package/lib/es/locale/interface.d.ts +13 -0
- package/lib/es/locale/source/ar.js +13 -0
- package/lib/es/locale/source/de.js +13 -0
- package/lib/es/locale/source/en_GB.js +13 -0
- package/lib/es/locale/source/en_US.js +13 -0
- package/lib/es/locale/source/es.js +13 -0
- package/lib/es/locale/source/fr.js +13 -0
- package/lib/es/locale/source/id_ID.js +13 -0
- package/lib/es/locale/source/it.js +13 -0
- package/lib/es/locale/source/ja_JP.js +13 -0
- package/lib/es/locale/source/ko_KR.js +13 -0
- package/lib/es/locale/source/ms_MY.js +13 -0
- package/lib/es/locale/source/pt_BR.js +13 -0
- package/lib/es/locale/source/ru_RU.js +13 -0
- package/lib/es/locale/source/th_TH.js +13 -0
- package/lib/es/locale/source/tr_TR.js +13 -0
- package/lib/es/locale/source/vi_VN.js +13 -0
- package/lib/es/locale/source/zh_CN.js +13 -0
- package/lib/es/locale/source/zh_TW.js +13 -0
- package/lib/es/progress/index.d.ts +10 -2
- package/lib/es/progress/index.js +36 -8
- package/lib/es/radio/radio.d.ts +1 -1
- package/lib/es/radio/radioGroup.d.ts +1 -1
- package/lib/es/skeleton/item.d.ts +1 -0
- package/lib/es/skeleton/item.js +10 -4
- package/lib/es/tag/index.js +5 -1
- package/lib/es/tag/interface.d.ts +2 -0
- package/lib/es/timePicker/TimePicker.d.ts +2 -2
- package/lib/es/timePicker/TimeShape.d.ts +1 -1
- package/lib/es/timePicker/index.d.ts +2 -2
- package/lib/es/toast/index.d.ts +9 -0
- package/lib/es/toast/index.js +50 -10
- package/lib/es/toast/toast.d.ts +1 -0
- package/lib/es/toast/toast.js +4 -0
- package/lib/es/typography/base.d.ts +1 -1
- package/lib/es/typography/paragraph.d.ts +1 -1
- package/lib/es/typography/text.d.ts +1 -1
- package/lib/es/typography/title.d.ts +2 -2
- package/lib/es/upload/index.d.ts +1 -1
- package/package.json +8 -8
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var React = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _semiIcons = require("@douyinfe/semi-icons");
|
|
11
|
+
|
|
12
|
+
var _constants = require("@douyinfe/semi-foundation/lib/cjs/image/constants");
|
|
13
|
+
|
|
14
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
15
|
+
|
|
16
|
+
var _previewContext = require("./previewContext");
|
|
17
|
+
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
|
|
20
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
|
+
|
|
22
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
23
|
+
|
|
24
|
+
const prefixCls = "".concat(_constants.cssClasses.PREFIX, "-preview-header");
|
|
25
|
+
|
|
26
|
+
const Header = _ref => {
|
|
27
|
+
let {
|
|
28
|
+
onClose,
|
|
29
|
+
titleStyle,
|
|
30
|
+
className,
|
|
31
|
+
renderHeader
|
|
32
|
+
} = _ref;
|
|
33
|
+
return /*#__PURE__*/React.createElement(_previewContext.PreviewContext.Consumer, null, _ref2 => {
|
|
34
|
+
let {
|
|
35
|
+
currentIndex,
|
|
36
|
+
titles
|
|
37
|
+
} = _ref2;
|
|
38
|
+
let title;
|
|
39
|
+
|
|
40
|
+
if (titles && typeof currentIndex === "number") {
|
|
41
|
+
title = titles[currentIndex];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return /*#__PURE__*/React.createElement("section", {
|
|
45
|
+
className: (0, _classnames.default)(prefixCls, className)
|
|
46
|
+
}, /*#__PURE__*/React.createElement("section", {
|
|
47
|
+
className: "".concat(prefixCls, "-title"),
|
|
48
|
+
style: titleStyle
|
|
49
|
+
}, renderHeader ? renderHeader(title) : title), /*#__PURE__*/React.createElement("section", {
|
|
50
|
+
className: "".concat(prefixCls, "-close"),
|
|
51
|
+
onMouseUp: onClose
|
|
52
|
+
}, /*#__PURE__*/React.createElement(_semiIcons.IconClose, null)));
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
var _default = Header;
|
|
57
|
+
exports.default = _default;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import BaseComponent from "../_base/baseComponent";
|
|
3
|
+
import { PreviewImageProps, PreviewImageStates } from "./interface";
|
|
4
|
+
import PropTypes from "prop-types";
|
|
5
|
+
import PreviewImageFoundation, { PreviewImageAdapter } from '@douyinfe/semi-foundation/lib/cjs/image/previewImageFoundation';
|
|
6
|
+
export default class PreviewImage extends BaseComponent<PreviewImageProps, PreviewImageStates> {
|
|
7
|
+
static propTypes: {
|
|
8
|
+
src: PropTypes.Requireable<string>;
|
|
9
|
+
rotation: PropTypes.Requireable<number>;
|
|
10
|
+
style: PropTypes.Requireable<object>;
|
|
11
|
+
maxZoom: PropTypes.Requireable<number>;
|
|
12
|
+
minZoom: PropTypes.Requireable<number>;
|
|
13
|
+
zoomStep: PropTypes.Requireable<number>;
|
|
14
|
+
zoom: PropTypes.Requireable<number>;
|
|
15
|
+
ratio: PropTypes.Requireable<string>;
|
|
16
|
+
disableDownload: PropTypes.Requireable<number>;
|
|
17
|
+
clickZoom: PropTypes.Requireable<number>;
|
|
18
|
+
setRatio: PropTypes.Requireable<(...args: any[]) => any>;
|
|
19
|
+
onZoom: PropTypes.Requireable<(...args: any[]) => any>;
|
|
20
|
+
onLoad: PropTypes.Requireable<(...args: any[]) => any>;
|
|
21
|
+
onError: PropTypes.Requireable<(...args: any[]) => any>;
|
|
22
|
+
};
|
|
23
|
+
static defaultProps: {
|
|
24
|
+
maxZoom: number;
|
|
25
|
+
minZoom: number;
|
|
26
|
+
zoomStep: number;
|
|
27
|
+
zoom: any;
|
|
28
|
+
};
|
|
29
|
+
get adapter(): PreviewImageAdapter<PreviewImageProps, PreviewImageStates>;
|
|
30
|
+
containerRef: React.RefObject<HTMLDivElement>;
|
|
31
|
+
imageRef: React.RefObject<HTMLImageElement>;
|
|
32
|
+
foundation: PreviewImageFoundation;
|
|
33
|
+
constructor(props: any);
|
|
34
|
+
componentDidMount(): void;
|
|
35
|
+
componentWillUnmount(): void;
|
|
36
|
+
componentDidUpdate(prevProps: PreviewImageProps, prevStates: PreviewImageStates): void;
|
|
37
|
+
onWindowResize: () => void;
|
|
38
|
+
handleZoomChange: (newZoom: any, e: any) => void;
|
|
39
|
+
handleRightClickImage: (e: any) => void;
|
|
40
|
+
handleWheel: (e: any) => void;
|
|
41
|
+
handleLoad: (e: any) => void;
|
|
42
|
+
handleError: (e: any) => void;
|
|
43
|
+
resizeImage: () => void;
|
|
44
|
+
handleMoveImage: (e: any) => void;
|
|
45
|
+
registryImageRef: (ref: any) => void;
|
|
46
|
+
onImageMouseDown: (e: React.MouseEvent<HTMLImageElement>) => void;
|
|
47
|
+
onImageMouseUp: () => void;
|
|
48
|
+
render(): JSX.Element;
|
|
49
|
+
}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _baseComponent = _interopRequireDefault(require("../_base/baseComponent"));
|
|
11
|
+
|
|
12
|
+
var _constants = require("@douyinfe/semi-foundation/lib/cjs/image/constants");
|
|
13
|
+
|
|
14
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
|
+
|
|
16
|
+
var _spin = _interopRequireDefault(require("../spin"));
|
|
17
|
+
|
|
18
|
+
var _previewImageFoundation = _interopRequireDefault(require("@douyinfe/semi-foundation/lib/cjs/image/previewImageFoundation"));
|
|
19
|
+
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
22
|
+
const prefixCls = _constants.cssClasses.PREFIX;
|
|
23
|
+
const preViewImgPrefixCls = "".concat(prefixCls, "-preview-image");
|
|
24
|
+
let originImageWidth = null;
|
|
25
|
+
let originImageHeight = null;
|
|
26
|
+
let startMouseMove = false; // startMouseOffset:The offset of the mouse relative to the left and top of the picture
|
|
27
|
+
|
|
28
|
+
let startMouseOffset = {
|
|
29
|
+
x: 0,
|
|
30
|
+
y: 0
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
class PreviewImage extends _baseComponent.default {
|
|
34
|
+
constructor(props) {
|
|
35
|
+
super(props);
|
|
36
|
+
|
|
37
|
+
this.onWindowResize = () => {
|
|
38
|
+
this.foundation.handleWindowResize();
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
this.handleZoomChange = (newZoom, e) => {
|
|
42
|
+
this.foundation.handleZoomChange(newZoom, e);
|
|
43
|
+
}; // Determine the response method of right click according to the disableDownload parameter in props
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
this.handleRightClickImage = e => {
|
|
47
|
+
this.foundation.handleRightClickImage(e);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
this.handleWheel = e => {
|
|
51
|
+
this.foundation.handleWheel(e);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
this.handleLoad = e => {
|
|
55
|
+
this.foundation.handleLoad(e);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
this.handleError = e => {
|
|
59
|
+
this.foundation.handleError(e);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
this.resizeImage = () => {
|
|
63
|
+
this.foundation.handleResizeImage();
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
this.handleMoveImage = e => {
|
|
67
|
+
this.foundation.handleMoveImage(e);
|
|
68
|
+
}; // 为什么通过ref注册wheel而不是使用onWheel事件?
|
|
69
|
+
// 因为对于wheel事件,浏览器将 addEventListener 的 passive 默认值更改为 true。如此,事件监听器便不能取消事件,也不会在用户滚动页面时阻止页面呈现。
|
|
70
|
+
// 这里我们需要保持页面不动,仅放大图片,因此此处需要将 passive 更改设置为 false。
|
|
71
|
+
// Why register wheel via ref instead of using onWheel event?
|
|
72
|
+
// Because for wheel events, the browser changes the passive default of addEventListener to true. This way, the event listener cannot cancel the event, nor prevent the page from rendering when the user scrolls.
|
|
73
|
+
// Here we need to keep the page still and only zoom in on the image, so here we need to set the passive change to false.
|
|
74
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#improving_scrolling_performance_with_passive_listeners。
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
this.registryImageRef = ref => {
|
|
78
|
+
if (this.imageRef && this.imageRef.current) {
|
|
79
|
+
this.imageRef.removeEventListener("wheel", this.handleWheel);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (ref) {
|
|
83
|
+
ref.addEventListener("wheel", this.handleWheel, {
|
|
84
|
+
passive: false
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
this.imageRef = ref;
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
this.onImageMouseDown = e => {
|
|
92
|
+
this.foundation.handleImageMouseDown(e);
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
this.onImageMouseUp = () => {
|
|
96
|
+
this.foundation.handleImageMouseUp();
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
this.state = {
|
|
100
|
+
width: 0,
|
|
101
|
+
height: 0,
|
|
102
|
+
loading: true,
|
|
103
|
+
offset: {
|
|
104
|
+
x: 0,
|
|
105
|
+
y: 0
|
|
106
|
+
},
|
|
107
|
+
currZoom: 0,
|
|
108
|
+
top: 0,
|
|
109
|
+
left: 0
|
|
110
|
+
};
|
|
111
|
+
this.containerRef = /*#__PURE__*/_react.default.createRef();
|
|
112
|
+
this.imageRef = /*#__PURE__*/_react.default.createRef();
|
|
113
|
+
this.foundation = new _previewImageFoundation.default(this.adapter);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
get adapter() {
|
|
117
|
+
return Object.assign(Object.assign({}, super.adapter), {
|
|
118
|
+
getOriginImageSize: () => ({
|
|
119
|
+
originImageWidth,
|
|
120
|
+
originImageHeight
|
|
121
|
+
}),
|
|
122
|
+
setOriginImageSize: size => {
|
|
123
|
+
originImageWidth = size.originImageWidth;
|
|
124
|
+
originImageHeight = size.originImageHeight;
|
|
125
|
+
},
|
|
126
|
+
getContainerRef: () => {
|
|
127
|
+
return this.containerRef;
|
|
128
|
+
},
|
|
129
|
+
getImageRef: () => {
|
|
130
|
+
return this.imageRef;
|
|
131
|
+
},
|
|
132
|
+
getMouseMove: () => startMouseMove,
|
|
133
|
+
setStartMouseMove: move => {
|
|
134
|
+
startMouseMove = move;
|
|
135
|
+
},
|
|
136
|
+
getMouseOffset: () => startMouseOffset,
|
|
137
|
+
setStartMouseOffset: offset => {
|
|
138
|
+
startMouseOffset = offset;
|
|
139
|
+
},
|
|
140
|
+
setLoading: loading => {
|
|
141
|
+
this.setState({
|
|
142
|
+
loading
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
componentDidMount() {
|
|
149
|
+
window.addEventListener("resize", this.onWindowResize);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
componentWillUnmount() {
|
|
153
|
+
window.removeEventListener("resize", this.onWindowResize);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
componentDidUpdate(prevProps, prevStates) {
|
|
157
|
+
// If src changes, start a new loading
|
|
158
|
+
if (this.props.src && this.props.src !== prevProps.src) {
|
|
159
|
+
this.foundation.setLoading(true);
|
|
160
|
+
} // If the incoming zoom changes, other content changes are determined based on the new zoom value
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
if ("zoom" in this.props && this.props.zoom !== prevStates.currZoom) {
|
|
164
|
+
this.handleZoomChange(this.props.zoom, null);
|
|
165
|
+
} // When the incoming ratio is changed, if it"s adaptation, then resizeImage is triggered to make the image adapt to the page
|
|
166
|
+
// else if it"s adaptation is realSize, then onZoom(1) is called to make the image size the original size;
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
if ("ratio" in this.props && this.props.ratio !== prevProps.ratio) {
|
|
170
|
+
if (originImageWidth && originImageHeight) {
|
|
171
|
+
if (this.props.ratio === "adaptation") {
|
|
172
|
+
this.resizeImage();
|
|
173
|
+
} else {
|
|
174
|
+
this.props.onZoom(1);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
} // When the incoming rotation angle of the image changes, it needs to be resized to make the image fit on the page
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
if ("rotation" in this.props && this.props.rotation !== prevProps.rotation) {
|
|
181
|
+
this.onWindowResize();
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
render() {
|
|
186
|
+
const {
|
|
187
|
+
src,
|
|
188
|
+
rotation
|
|
189
|
+
} = this.props;
|
|
190
|
+
const {
|
|
191
|
+
loading,
|
|
192
|
+
width,
|
|
193
|
+
height,
|
|
194
|
+
top,
|
|
195
|
+
left
|
|
196
|
+
} = this.state;
|
|
197
|
+
const imgStyle = {
|
|
198
|
+
position: "absolute",
|
|
199
|
+
visibility: loading ? "hidden" : "visible",
|
|
200
|
+
transform: "rotate(".concat(-rotation, "deg)"),
|
|
201
|
+
top,
|
|
202
|
+
left,
|
|
203
|
+
width: loading ? "auto" : "".concat(width, "px"),
|
|
204
|
+
height: loading ? "auto" : "".concat(height, "px")
|
|
205
|
+
};
|
|
206
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
207
|
+
className: "".concat(preViewImgPrefixCls),
|
|
208
|
+
ref: this.containerRef
|
|
209
|
+
}, /*#__PURE__*/_react.default.createElement("img", {
|
|
210
|
+
ref: this.registryImageRef,
|
|
211
|
+
src: src,
|
|
212
|
+
alt: "previewImag",
|
|
213
|
+
className: "".concat(preViewImgPrefixCls, "-img"),
|
|
214
|
+
key: src,
|
|
215
|
+
onMouseMove: this.handleMoveImage,
|
|
216
|
+
onMouseDown: this.onImageMouseDown,
|
|
217
|
+
onMouseUp: this.onImageMouseUp,
|
|
218
|
+
onContextMenu: this.handleRightClickImage,
|
|
219
|
+
onDragStart: e => e.preventDefault(),
|
|
220
|
+
onLoad: this.handleLoad,
|
|
221
|
+
onError: this.handleError,
|
|
222
|
+
style: imgStyle
|
|
223
|
+
}), loading && /*#__PURE__*/_react.default.createElement(_spin.default, {
|
|
224
|
+
size: "large",
|
|
225
|
+
wrapperClassName: "".concat(preViewImgPrefixCls, "-spin")
|
|
226
|
+
}));
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
exports.default = PreviewImage;
|
|
232
|
+
PreviewImage.propTypes = {
|
|
233
|
+
src: _propTypes.default.string,
|
|
234
|
+
rotation: _propTypes.default.number,
|
|
235
|
+
style: _propTypes.default.object,
|
|
236
|
+
maxZoom: _propTypes.default.number,
|
|
237
|
+
minZoom: _propTypes.default.number,
|
|
238
|
+
zoomStep: _propTypes.default.number,
|
|
239
|
+
zoom: _propTypes.default.number,
|
|
240
|
+
ratio: _propTypes.default.string,
|
|
241
|
+
disableDownload: _propTypes.default.number,
|
|
242
|
+
clickZoom: _propTypes.default.number,
|
|
243
|
+
setRatio: _propTypes.default.func,
|
|
244
|
+
onZoom: _propTypes.default.func,
|
|
245
|
+
onLoad: _propTypes.default.func,
|
|
246
|
+
onError: _propTypes.default.func
|
|
247
|
+
};
|
|
248
|
+
PreviewImage.defaultProps = {
|
|
249
|
+
maxZoom: 5,
|
|
250
|
+
minZoom: 0.1,
|
|
251
|
+
zoomStep: 0.1,
|
|
252
|
+
zoom: undefined
|
|
253
|
+
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import BaseComponent from "../_base/baseComponent";
|
|
3
|
+
import { PreviewProps as PreviewInnerProps, PreviewInnerStates, RatioType } from "./interface";
|
|
4
|
+
import PropTypes from "prop-types";
|
|
5
|
+
import PreviewInnerFoundation, { PreviewInnerAdapter } from '@douyinfe/semi-foundation/lib/cjs/image/previewInnerFoundation';
|
|
6
|
+
import { PreviewContextProps } from "./previewContext";
|
|
7
|
+
export default class PreviewInner extends BaseComponent<PreviewInnerProps, PreviewInnerStates> {
|
|
8
|
+
static contextType: React.Context<PreviewContextProps>;
|
|
9
|
+
static propTypes: {
|
|
10
|
+
style: PropTypes.Requireable<object>;
|
|
11
|
+
className: PropTypes.Requireable<string>;
|
|
12
|
+
visible: PropTypes.Requireable<boolean>;
|
|
13
|
+
src: PropTypes.Requireable<string | any[]>;
|
|
14
|
+
currentIndex: PropTypes.Requireable<number>;
|
|
15
|
+
defaultIndex: PropTypes.Requireable<number>;
|
|
16
|
+
defaultVisible: PropTypes.Requireable<boolean>;
|
|
17
|
+
maskClosable: PropTypes.Requireable<boolean>;
|
|
18
|
+
closable: PropTypes.Requireable<boolean>;
|
|
19
|
+
zoomStep: PropTypes.Requireable<number>;
|
|
20
|
+
infinite: PropTypes.Requireable<boolean>;
|
|
21
|
+
showTooltip: PropTypes.Requireable<boolean>;
|
|
22
|
+
closeOnEsc: PropTypes.Requireable<boolean>;
|
|
23
|
+
prevTip: PropTypes.Requireable<string>;
|
|
24
|
+
nextTip: PropTypes.Requireable<string>;
|
|
25
|
+
zoomInTip: PropTypes.Requireable<string>;
|
|
26
|
+
zoomOutTip: PropTypes.Requireable<string>;
|
|
27
|
+
downloadTip: PropTypes.Requireable<string>;
|
|
28
|
+
adaptiveTip: PropTypes.Requireable<string>;
|
|
29
|
+
originTip: PropTypes.Requireable<string>;
|
|
30
|
+
lazyLoad: PropTypes.Requireable<boolean>;
|
|
31
|
+
preLoad: PropTypes.Requireable<boolean>;
|
|
32
|
+
preLoadGap: PropTypes.Requireable<number>;
|
|
33
|
+
disableDownload: PropTypes.Requireable<boolean>;
|
|
34
|
+
viewerVisibleDelay: PropTypes.Requireable<number>;
|
|
35
|
+
zIndex: PropTypes.Requireable<number>;
|
|
36
|
+
renderHeader: PropTypes.Requireable<(...args: any[]) => any>;
|
|
37
|
+
renderPreviewMenu: PropTypes.Requireable<(...args: any[]) => any>;
|
|
38
|
+
getPopupContainer: PropTypes.Requireable<(...args: any[]) => any>;
|
|
39
|
+
onVisibleChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
40
|
+
onChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
41
|
+
onClose: PropTypes.Requireable<(...args: any[]) => any>;
|
|
42
|
+
onZoomIn: PropTypes.Requireable<(...args: any[]) => any>;
|
|
43
|
+
onZoomOut: PropTypes.Requireable<(...args: any[]) => any>;
|
|
44
|
+
onPrev: PropTypes.Requireable<(...args: any[]) => any>;
|
|
45
|
+
onNext: PropTypes.Requireable<(...args: any[]) => any>;
|
|
46
|
+
onDownload: PropTypes.Requireable<(...args: any[]) => any>;
|
|
47
|
+
onRatioChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
48
|
+
onRotateChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
49
|
+
};
|
|
50
|
+
static defaultProps: {
|
|
51
|
+
showTooltip: boolean;
|
|
52
|
+
zoomStep: number;
|
|
53
|
+
infinite: boolean;
|
|
54
|
+
closeOnEsc: boolean;
|
|
55
|
+
lazyLoad: boolean;
|
|
56
|
+
preLoad: boolean;
|
|
57
|
+
preLoadGap: number;
|
|
58
|
+
zIndex: number;
|
|
59
|
+
maskClosable: boolean;
|
|
60
|
+
viewerVisibleDelay: number;
|
|
61
|
+
};
|
|
62
|
+
get adapter(): PreviewInnerAdapter<PreviewInnerProps, PreviewInnerStates>;
|
|
63
|
+
timer: any;
|
|
64
|
+
context: PreviewContextProps;
|
|
65
|
+
foundation: PreviewInnerFoundation;
|
|
66
|
+
constructor(props: PreviewInnerProps);
|
|
67
|
+
static getDerivedStateFromProps(props: PreviewInnerProps, state: PreviewInnerStates): Partial<PreviewInnerStates>;
|
|
68
|
+
componentDidUpdate(prevProps: PreviewInnerProps, prevState: PreviewInnerStates): void;
|
|
69
|
+
componentWillUnmount(): void;
|
|
70
|
+
isInGroup(): boolean;
|
|
71
|
+
viewVisibleChange: () => void;
|
|
72
|
+
handleSwitchImage: (direction: string) => void;
|
|
73
|
+
handleDownload: () => void;
|
|
74
|
+
handlePreviewClose: () => void;
|
|
75
|
+
handleAdjustRatio: (type: string) => void;
|
|
76
|
+
handleRotateImage: (direction: any) => void;
|
|
77
|
+
handleZoomImage: (newZoom: number) => void;
|
|
78
|
+
handleMouseUp: (e: any) => void;
|
|
79
|
+
handleMouseMove: (e: any) => void;
|
|
80
|
+
handleMouseEvent: (e: any, event: string) => void;
|
|
81
|
+
handleKeyDown: (e: KeyboardEvent) => void;
|
|
82
|
+
onImageError: () => void;
|
|
83
|
+
onImageLoad: (src: any) => void;
|
|
84
|
+
handleMouseDown: (e: any) => void;
|
|
85
|
+
handleRatio: (type: RatioType) => void;
|
|
86
|
+
render(): JSX.Element;
|
|
87
|
+
}
|