@nutui/nutui-react 2.3.12-beta.0 → 2.3.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/dist/esm/ActionSheet.js +30 -76
- package/dist/esm/Address.js +80 -171
- package/dist/esm/Animate.js +21 -49
- package/dist/esm/AnimatingNumbers.js +47 -120
- package/dist/esm/Audio.js +88 -159
- package/dist/esm/Avatar.js +44 -91
- package/dist/esm/AvatarCropper.js +149 -268
- package/dist/esm/AvatarGroup.js +13 -44
- package/dist/esm/BackTop.js +34 -75
- package/dist/esm/Barrage.js +49 -83
- package/dist/esm/Calendar.js +27 -119
- package/dist/esm/CalendarCard.js +180 -291
- package/dist/esm/CalendarItem.js +253 -314
- package/dist/esm/Card.js +38 -72
- package/dist/esm/Cell.js +27 -62
- package/dist/esm/CellGroup.js +16 -45
- package/dist/esm/CheckboxGroup.js +49 -85
- package/dist/esm/CircleProgress.js +42 -93
- package/dist/esm/Col.js +17 -48
- package/dist/esm/Collapse.js +18 -49
- package/dist/esm/ConfigProvider.js +3 -2
- package/dist/esm/CountDown.js +62 -101
- package/dist/esm/DatePicker.js +87 -127
- package/dist/esm/Dialog.js +116 -196
- package/dist/esm/Divider.js +16 -36
- package/dist/esm/Drag.js +32 -76
- package/dist/esm/Elevator.js +93 -133
- package/dist/esm/Ellipsis.js +71 -92
- package/dist/esm/Empty.js +31 -70
- package/dist/esm/FixedNav.js +32 -81
- package/dist/esm/Form.js +28 -61
- package/dist/esm/Grid.js +27 -51
- package/dist/esm/Image.js +47 -102
- package/dist/esm/ImagePreview.js +82 -135
- package/dist/esm/InfiniteLoading.js +77 -159
- package/dist/esm/Input.js +57 -125
- package/dist/esm/InputNumber.js +66 -96
- package/dist/esm/Layout.js +4 -28
- package/dist/esm/Loading.js +13 -40
- package/dist/esm/Menu.js +51 -105
- package/dist/esm/NavBar.js +46 -85
- package/dist/esm/NoticeBar.js +153 -226
- package/dist/esm/Notify.js +87 -178
- package/dist/esm/NumberKeyboard.js +84 -150
- package/dist/esm/Pagination.js +58 -97
- package/dist/esm/Picker.js +215 -276
- package/dist/esm/Popover.js +111 -159
- package/dist/esm/Price.js +23 -60
- package/dist/esm/Progress.js +47 -77
- package/dist/esm/PullToRefresh.js +94 -201
- package/dist/esm/RadioGroup.js +23 -53
- package/dist/esm/Range.js +113 -177
- package/dist/esm/Rate.js +48 -95
- package/dist/esm/Row.js +19 -43
- package/dist/esm/SearchBar.js +52 -119
- package/dist/esm/ShortPassword.js +58 -106
- package/dist/esm/SideNavBar.js +34 -59
- package/dist/esm/SideNavBarItem.js +7 -36
- package/dist/esm/Signature.js +49 -84
- package/dist/esm/Skeleton.js +31 -68
- package/dist/esm/Space.js +7 -34
- package/dist/esm/Step.js +35 -64
- package/dist/esm/Steps.js +16 -40
- package/dist/esm/Sticky.js +64 -108
- package/dist/esm/SubSideNavBar.js +42 -71
- package/dist/esm/Swipe.js +79 -143
- package/dist/esm/Swiper.js +136 -183
- package/dist/esm/SwiperItem.js +13 -38
- package/dist/esm/Switch.js +20 -53
- package/dist/esm/TabPane.js +6 -30
- package/dist/esm/Tabbar.js +29 -59
- package/dist/esm/Table.js +92 -141
- package/dist/esm/Tag.js +30 -74
- package/dist/esm/TextArea.js +37 -82
- package/dist/esm/TimeDetail.js +20 -58
- package/dist/esm/TimeSelect.js +57 -95
- package/dist/esm/Toast.js +110 -197
- package/dist/esm/Tour.js +88 -132
- package/dist/esm/TrendArrow.js +32 -74
- package/dist/esm/Uploader.js +226 -346
- package/dist/esm/UserContext.js +1 -1
- package/dist/esm/Video.js +34 -67
- package/dist/esm/VirtualList.js +127 -160
- package/dist/esm/WaterMark.js +24 -68
- package/dist/esm/badge2.js +23 -53
- package/dist/esm/button2.js +30 -63
- package/dist/esm/can-use-dom.js +1 -1
- package/dist/esm/cascader2.js +307 -536
- package/dist/esm/checkbox2.js +59 -96
- package/dist/esm/collapseitem2.js +48 -86
- package/dist/esm/configprovider2.js +43 -1003
- package/dist/esm/context.js +1 -1
- package/dist/esm/context2.js +1 -1
- package/dist/esm/context3.js +1 -1
- package/dist/esm/context4.js +1 -1
- package/dist/esm/context5.js +8 -8
- package/dist/esm/date.js +88 -66
- package/dist/esm/formitem2.js +236 -1510
- package/dist/esm/get-scroll-parent.js +8 -10
- package/dist/esm/griditem2.js +34 -52
- package/dist/esm/index.js +5 -12
- package/dist/esm/indicator2.js +13 -42
- package/dist/esm/menuitem2.js +81 -124
- package/dist/esm/overlay2.js +39 -78
- package/dist/esm/pad-zero.js +3 -4
- package/dist/esm/popup2.js +79 -124
- package/dist/esm/px-check.js +2 -2
- package/dist/esm/radio2.js +48 -79
- package/dist/esm/raf.js +5 -3
- package/dist/esm/render.js +17 -54
- package/dist/esm/safearea2.js +3 -5
- package/dist/esm/supports-passive.js +3 -3
- package/dist/esm/tabbaritem2.js +42 -58
- package/dist/esm/tabs2.js +82 -120
- package/dist/esm/tslib.es6.js +47 -0
- package/dist/esm/types/src/packages/button/demos/h5/demo1.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/h5/demo2.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/h5/demo3.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/h5/demo4.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/h5/demo5.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/h5/demo6.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/h5/demo7.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/h5/demo8.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/h5/demo9.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/taro/demo1.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/taro/demo10.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/taro/demo2.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/taro/demo3.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/taro/demo4.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/taro/demo5.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/taro/demo6.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/taro/demo7.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/taro/demo8.d.ts +3 -0
- package/dist/esm/types/src/packages/button/demos/taro/demo9.d.ts +3 -0
- package/dist/esm/types/src/packages/configprovider/configprovider.d.ts +1 -0
- package/dist/esm/types/src/packages/configprovider/configprovider.taro.d.ts +1 -0
- package/dist/esm/types/src/packages/configprovider/index.d.ts +2 -2
- package/dist/esm/types/src/packages/configprovider/index.taro.d.ts +2 -2
- package/dist/esm/types/src/packages/inputnumber/inputnumber.taro.d.ts +2 -0
- package/dist/esm/typings.js +1 -1
- package/dist/esm/use-click-away.js +9 -13
- package/dist/esm/use-client-rect.js +4 -4
- package/dist/esm/use-props-value.js +10 -15
- package/dist/esm/use-refs.js +5 -7
- package/dist/esm/use-touch.js +16 -20
- package/dist/locales/base.js +1 -1
- package/dist/locales/en-US.js +1 -1
- package/dist/locales/id-ID.js +1 -1
- package/dist/locales/tr-TR.js +1 -1
- package/dist/locales/zh-CN.js +1 -1
- package/dist/locales/zh-TW.js +1 -1
- package/dist/locales/zh-UG.js +1 -1
- package/dist/nutui.react.es.js +242 -284
- package/dist/nutui.react.umd.js +239 -281
- package/dist/style.mjs +1 -1
- package/dist/styles/variables-jmapp.scss +4 -0
- package/dist/types/packages/button/demos/h5/demo1.d.ts +3 -0
- package/dist/types/packages/button/demos/h5/demo2.d.ts +3 -0
- package/dist/types/packages/button/demos/h5/demo3.d.ts +3 -0
- package/dist/types/packages/button/demos/h5/demo4.d.ts +3 -0
- package/dist/types/packages/button/demos/h5/demo5.d.ts +3 -0
- package/dist/types/packages/button/demos/h5/demo6.d.ts +3 -0
- package/dist/types/packages/button/demos/h5/demo7.d.ts +3 -0
- package/dist/types/packages/button/demos/h5/demo8.d.ts +3 -0
- package/dist/types/packages/button/demos/h5/demo9.d.ts +3 -0
- package/dist/types/packages/button/demos/taro/demo1.d.ts +3 -0
- package/dist/types/packages/button/demos/taro/demo10.d.ts +3 -0
- package/dist/types/packages/button/demos/taro/demo2.d.ts +3 -0
- package/dist/types/packages/button/demos/taro/demo3.d.ts +3 -0
- package/dist/types/packages/button/demos/taro/demo4.d.ts +3 -0
- package/dist/types/packages/button/demos/taro/demo5.d.ts +3 -0
- package/dist/types/packages/button/demos/taro/demo6.d.ts +3 -0
- package/dist/types/packages/button/demos/taro/demo7.d.ts +3 -0
- package/dist/types/packages/button/demos/taro/demo8.d.ts +3 -0
- package/dist/types/packages/button/demos/taro/demo9.d.ts +3 -0
- package/dist/types/packages/configprovider/configprovider.d.ts +1 -0
- package/dist/types/packages/configprovider/configprovider.taro.d.ts +1 -0
- package/dist/types/packages/configprovider/index.d.ts +2 -2
- package/dist/types/packages/configprovider/index.taro.d.ts +2 -2
- package/dist/types/packages/empty/empty.d.ts +15 -3
- package/dist/types/packages/inputnumber/inputnumber.taro.d.ts +2 -0
- package/dist/types/packages/rate/rate.d.ts +1 -1
- package/package.json +5 -1
package/dist/esm/Image.js
CHANGED
|
@@ -1,49 +1,17 @@
|
|
|
1
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
-
function ownKeys(e, r) {
|
|
4
|
-
var t = Object.keys(e);
|
|
5
|
-
if (Object.getOwnPropertySymbols) {
|
|
6
|
-
var o = Object.getOwnPropertySymbols(e);
|
|
7
|
-
r && (o = o.filter(function(r2) {
|
|
8
|
-
return Object.getOwnPropertyDescriptor(e, r2).enumerable;
|
|
9
|
-
})), t.push.apply(t, o);
|
|
10
|
-
}
|
|
11
|
-
return t;
|
|
12
|
-
}
|
|
13
|
-
function _objectSpread(e) {
|
|
14
|
-
for (var r = 1; r < arguments.length; r++) {
|
|
15
|
-
var t = null != arguments[r] ? arguments[r] : {};
|
|
16
|
-
r % 2 ? ownKeys(Object(t), true).forEach(function(r2) {
|
|
17
|
-
_defineProperty(e, r2, t[r2]);
|
|
18
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) {
|
|
19
|
-
Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2));
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
return e;
|
|
23
|
-
}
|
|
24
1
|
import React__default, { useState, useRef, useEffect, useCallback } from "react";
|
|
25
2
|
import { ImageError, Image as Image$1 } from "@nutui/icons-react";
|
|
26
3
|
import classNames from "classnames";
|
|
27
4
|
import { C as ComponentDefaults } from "./typings.js";
|
|
28
5
|
import { p as pxCheck } from "./px-check.js";
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
alt
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
});
|
|
39
|
-
var classPrefix = "nut-image";
|
|
40
|
-
var Image = function Image2(props) {
|
|
41
|
-
var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props), className = _defaultProps$props.className, style = _defaultProps$props.style, src = _defaultProps$props.src, fit = _defaultProps$props.fit, position = _defaultProps$props.position, alt = _defaultProps$props.alt, width = _defaultProps$props.width, height = _defaultProps$props.height, radius = _defaultProps$props.radius, error = _defaultProps$props.error, loading = _defaultProps$props.loading, lazy = _defaultProps$props.lazy, onClick = _defaultProps$props.onClick, onLoad = _defaultProps$props.onLoad, onError = _defaultProps$props.onError;
|
|
42
|
-
var _useState = useState(false), _useState2 = _slicedToArray(_useState, 2), innerLoading = _useState2[0], setInnerLoading = _useState2[1];
|
|
43
|
-
var _useState3 = useState(false), _useState4 = _slicedToArray(_useState3, 2), isError = _useState4[0], setIsError = _useState4[1];
|
|
44
|
-
var _useState5 = useState(false), _useState6 = _slicedToArray(_useState5, 2), complete = _useState6[0], setComplete = _useState6[1];
|
|
45
|
-
var imgRef = useRef(null);
|
|
46
|
-
useEffect(function() {
|
|
6
|
+
const defaultProps = Object.assign(Object.assign({}, ComponentDefaults), { fit: "fill", position: "center", alt: "", width: "", height: "", error: true, loading: true, lazy: false });
|
|
7
|
+
const classPrefix = "nut-image";
|
|
8
|
+
const Image = (props) => {
|
|
9
|
+
const { className, style, src, fit, position, alt, width, height, radius, error, loading, lazy, onClick, onLoad, onError } = Object.assign(Object.assign({}, defaultProps), props);
|
|
10
|
+
const [innerLoading, setInnerLoading] = useState(false);
|
|
11
|
+
const [isError, setIsError] = useState(false);
|
|
12
|
+
const [complete, setComplete] = useState(false);
|
|
13
|
+
const imgRef = useRef(null);
|
|
14
|
+
useEffect(() => {
|
|
47
15
|
if (imgRef.current && imgRef.current.complete && !lazy) {
|
|
48
16
|
if (imgRef.current.naturalHeight === 0) {
|
|
49
17
|
handleError();
|
|
@@ -54,10 +22,10 @@ var Image = function Image2(props) {
|
|
|
54
22
|
setInnerLoading(true);
|
|
55
23
|
}
|
|
56
24
|
}, [imgRef]);
|
|
57
|
-
useEffect(
|
|
25
|
+
useEffect(() => {
|
|
58
26
|
setComplete(false);
|
|
59
27
|
}, [src]);
|
|
60
|
-
|
|
28
|
+
const handleLoad = () => {
|
|
61
29
|
if (!complete) {
|
|
62
30
|
setIsError(false);
|
|
63
31
|
setInnerLoading(false);
|
|
@@ -65,7 +33,7 @@ var Image = function Image2(props) {
|
|
|
65
33
|
setComplete(true);
|
|
66
34
|
}
|
|
67
35
|
};
|
|
68
|
-
|
|
36
|
+
const handleError = () => {
|
|
69
37
|
if (!complete) {
|
|
70
38
|
setIsError(true);
|
|
71
39
|
setInnerLoading(false);
|
|
@@ -73,28 +41,20 @@ var Image = function Image2(props) {
|
|
|
73
41
|
setComplete(true);
|
|
74
42
|
}
|
|
75
43
|
};
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}, style);
|
|
82
|
-
var imgStyle = _objectSpread({
|
|
83
|
-
objectFit: fit,
|
|
84
|
-
objectPosition: position
|
|
85
|
-
}, style);
|
|
86
|
-
var observer = useRef(null);
|
|
87
|
-
var initObserver = function initObserver2() {
|
|
88
|
-
var options = {
|
|
44
|
+
const containerStyle = Object.assign({ height: height ? pxCheck(height) : "", width: width ? pxCheck(width) : "", overflow: radius !== void 0 && radius !== null ? "hidden" : "", borderRadius: radius !== void 0 && radius !== null ? pxCheck(radius) : "" }, style);
|
|
45
|
+
const imgStyle = Object.assign({ objectFit: fit, objectPosition: position }, style);
|
|
46
|
+
const observer = useRef(null);
|
|
47
|
+
const initObserver = () => {
|
|
48
|
+
const options = {
|
|
89
49
|
threshold: [0],
|
|
90
50
|
rootMargin: "0px"
|
|
91
51
|
// 对视口进行收缩和扩张
|
|
92
52
|
};
|
|
93
|
-
observer.current = new IntersectionObserver(
|
|
94
|
-
entires.forEach(
|
|
53
|
+
observer.current = new IntersectionObserver((entires, self) => {
|
|
54
|
+
entires.forEach((item) => {
|
|
95
55
|
if (item.isIntersecting) {
|
|
96
|
-
setTimeout(
|
|
97
|
-
|
|
56
|
+
setTimeout(() => {
|
|
57
|
+
const img = item.target;
|
|
98
58
|
if (img.dataset.src) {
|
|
99
59
|
img.src = img.dataset.src;
|
|
100
60
|
img.removeAttribute("data-src");
|
|
@@ -106,72 +66,57 @@ var Image = function Image2(props) {
|
|
|
106
66
|
}, options);
|
|
107
67
|
observer.current.observe(imgRef.current);
|
|
108
68
|
};
|
|
109
|
-
|
|
69
|
+
const resetObserver = () => {
|
|
110
70
|
observer.current.disconnect && observer.current.disconnect();
|
|
111
71
|
};
|
|
112
|
-
useEffect(
|
|
72
|
+
useEffect(() => {
|
|
113
73
|
lazy && initObserver();
|
|
114
|
-
return
|
|
74
|
+
return () => {
|
|
115
75
|
lazy && resetObserver();
|
|
116
76
|
};
|
|
117
77
|
}, [lazy]);
|
|
118
|
-
|
|
78
|
+
const imageClick = (event) => {
|
|
119
79
|
onClick && onClick(event);
|
|
120
80
|
};
|
|
121
|
-
|
|
81
|
+
const renderErrorImg = useCallback(() => {
|
|
122
82
|
if (!isError)
|
|
123
83
|
return null;
|
|
124
84
|
if (typeof error === "boolean" && error === true && !innerLoading) {
|
|
125
|
-
return React__default.createElement(
|
|
126
|
-
|
|
127
|
-
|
|
85
|
+
return React__default.createElement(
|
|
86
|
+
"div",
|
|
87
|
+
{ className: "nut-img-error" },
|
|
88
|
+
React__default.createElement(ImageError, null)
|
|
89
|
+
);
|
|
128
90
|
}
|
|
129
91
|
if (React__default.isValidElement(error) && !innerLoading) {
|
|
130
|
-
return React__default.createElement("div", {
|
|
131
|
-
className: "nut-img-error"
|
|
132
|
-
}, error);
|
|
92
|
+
return React__default.createElement("div", { className: "nut-img-error" }, error);
|
|
133
93
|
}
|
|
134
94
|
return null;
|
|
135
95
|
}, [error, isError]);
|
|
136
|
-
|
|
96
|
+
const renderLoading = useCallback(() => {
|
|
137
97
|
if (!loading)
|
|
138
98
|
return null;
|
|
139
99
|
if (typeof loading === "boolean" && loading === true && innerLoading) {
|
|
140
|
-
return React__default.createElement(
|
|
141
|
-
|
|
142
|
-
|
|
100
|
+
return React__default.createElement(
|
|
101
|
+
"div",
|
|
102
|
+
{ className: "nut-img-loading" },
|
|
103
|
+
React__default.createElement(Image$1, null)
|
|
104
|
+
);
|
|
143
105
|
}
|
|
144
106
|
if (React__default.isValidElement(loading) && innerLoading) {
|
|
145
|
-
return React__default.createElement("div", {
|
|
146
|
-
className: "nut-img-loading"
|
|
147
|
-
}, loading);
|
|
107
|
+
return React__default.createElement("div", { className: "nut-img-loading" }, loading);
|
|
148
108
|
}
|
|
149
109
|
return null;
|
|
150
110
|
}, [loading, innerLoading]);
|
|
151
|
-
return React__default.createElement(
|
|
152
|
-
|
|
153
|
-
style: containerStyle,
|
|
154
|
-
onClick: function onClick2(e) {
|
|
111
|
+
return React__default.createElement(
|
|
112
|
+
"div",
|
|
113
|
+
{ className: classNames(classPrefix, className), style: containerStyle, onClick: (e) => {
|
|
155
114
|
imageClick(e);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
"data-src": src,
|
|
162
|
-
alt,
|
|
163
|
-
loading: "lazy",
|
|
164
|
-
onLoad: handleLoad,
|
|
165
|
-
onError: handleError
|
|
166
|
-
}) : React__default.createElement("img", {
|
|
167
|
-
ref: imgRef,
|
|
168
|
-
className: "nut-img",
|
|
169
|
-
style: imgStyle,
|
|
170
|
-
src,
|
|
171
|
-
alt,
|
|
172
|
-
onLoad: handleLoad,
|
|
173
|
-
onError: handleError
|
|
174
|
-
}), renderLoading(), renderErrorImg());
|
|
115
|
+
} },
|
|
116
|
+
lazy ? React__default.createElement("img", { ref: imgRef, className: "nut-img lazyload", style: imgStyle, "data-src": src, alt, loading: "lazy", onLoad: handleLoad, onError: handleError }) : React__default.createElement("img", { ref: imgRef, className: "nut-img", style: imgStyle, src, alt, onLoad: handleLoad, onError: handleError }),
|
|
117
|
+
renderLoading(),
|
|
118
|
+
renderErrorImg()
|
|
119
|
+
);
|
|
175
120
|
};
|
|
176
121
|
Image.defaultProps = defaultProps;
|
|
177
122
|
Image.displayName = "NutImage";
|
package/dist/esm/ImagePreview.js
CHANGED
|
@@ -1,26 +1,3 @@
|
|
|
1
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
-
function ownKeys(e, r) {
|
|
4
|
-
var t = Object.keys(e);
|
|
5
|
-
if (Object.getOwnPropertySymbols) {
|
|
6
|
-
var o = Object.getOwnPropertySymbols(e);
|
|
7
|
-
r && (o = o.filter(function(r2) {
|
|
8
|
-
return Object.getOwnPropertyDescriptor(e, r2).enumerable;
|
|
9
|
-
})), t.push.apply(t, o);
|
|
10
|
-
}
|
|
11
|
-
return t;
|
|
12
|
-
}
|
|
13
|
-
function _objectSpread(e) {
|
|
14
|
-
for (var r = 1; r < arguments.length; r++) {
|
|
15
|
-
var t = null != arguments[r] ? arguments[r] : {};
|
|
16
|
-
r % 2 ? ownKeys(Object(t), true).forEach(function(r2) {
|
|
17
|
-
_defineProperty(e, r2, t[r2]);
|
|
18
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) {
|
|
19
|
-
Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2));
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
return e;
|
|
23
|
-
}
|
|
24
1
|
import React__default, { useRef, useState, useEffect } from "react";
|
|
25
2
|
import classNames from "classnames";
|
|
26
3
|
import { Close } from "@nutui/icons-react";
|
|
@@ -31,50 +8,37 @@ import Swiper from "./Swiper.js";
|
|
|
31
8
|
import SwiperItem from "./SwiperItem.js";
|
|
32
9
|
import { C as ComponentDefaults } from "./typings.js";
|
|
33
10
|
import { u as usePropsValue } from "./use-props-value.js";
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
autoPlay
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
indicatorColor: "#fff",
|
|
43
|
-
closeIcon: false,
|
|
44
|
-
closeIconPosition: "top-right",
|
|
45
|
-
onChange: function onChange(value) {
|
|
46
|
-
},
|
|
47
|
-
onClose: function onClose() {
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
var ImagePreview = function ImagePreview2(props) {
|
|
51
|
-
var className = props.className, style = props.style, images = props.images, videos = props.videos, visible = props.visible, defaultValue = props.defaultValue, indicatorColor = props.indicatorColor, indicator = props.indicator, autoPlay = props.autoPlay, closeOnContentClick = props.closeOnContentClick, closeIcon = props.closeIcon, closeIconPosition = props.closeIconPosition, onClose2 = props.onClose;
|
|
52
|
-
var classPrefix = "nut-imagepreview";
|
|
53
|
-
var ref = useRef(null);
|
|
54
|
-
var _usePropsValue = usePropsValue({
|
|
11
|
+
const defaultProps = Object.assign(Object.assign({}, ComponentDefaults), { images: [], videos: [], visible: false, autoPlay: 3e3, defaultValue: 0, closeOnContentClick: false, indicator: false, indicatorColor: "#fff", closeIcon: false, closeIconPosition: "top-right", onChange: (value) => {
|
|
12
|
+
}, onClose: () => {
|
|
13
|
+
} });
|
|
14
|
+
const ImagePreview = (props) => {
|
|
15
|
+
const { className, style, images, videos, visible, defaultValue, indicatorColor, indicator, autoPlay, closeOnContentClick, closeIcon, closeIconPosition, onClose } = props;
|
|
16
|
+
const classPrefix = "nut-imagepreview";
|
|
17
|
+
const ref = useRef(null);
|
|
18
|
+
const [innerNo, setInnerNo] = usePropsValue({
|
|
55
19
|
value: props.value,
|
|
56
20
|
defaultValue,
|
|
57
21
|
finalValue: defaultValue,
|
|
58
|
-
onChange:
|
|
59
|
-
var
|
|
60
|
-
(
|
|
22
|
+
onChange: (val) => {
|
|
23
|
+
var _a;
|
|
24
|
+
(_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, val);
|
|
61
25
|
}
|
|
62
|
-
})
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
26
|
+
});
|
|
27
|
+
const [showPop, setShowPop] = useState(visible);
|
|
28
|
+
const [active, setActive] = useState(0);
|
|
29
|
+
const [maxNo, setMaxNo] = useState((images === null || images === void 0 ? void 0 : images.length) || 0 + ((videos === null || videos === void 0 ? void 0 : videos.length) || 0));
|
|
30
|
+
const [store, setStore] = useState({
|
|
67
31
|
scale: 1,
|
|
68
32
|
moveable: false
|
|
69
|
-
})
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
33
|
+
});
|
|
34
|
+
const [lastTouchEndTime, setLastTouchEndTime] = useState(0);
|
|
35
|
+
const onTouchStart = (event) => {
|
|
36
|
+
const touches = event.touches;
|
|
37
|
+
const events = touches[0];
|
|
38
|
+
const events2 = touches[1];
|
|
39
|
+
const curTouchTime = (/* @__PURE__ */ new Date()).getTime();
|
|
76
40
|
if (curTouchTime - lastTouchEndTime < 300) {
|
|
77
|
-
|
|
41
|
+
const store12 = store;
|
|
78
42
|
if (store12.scale > 1) {
|
|
79
43
|
store12.scale = 1;
|
|
80
44
|
} else if (store12.scale === 1) {
|
|
@@ -82,7 +46,7 @@ var ImagePreview = function ImagePreview2(props) {
|
|
|
82
46
|
}
|
|
83
47
|
scaleNow();
|
|
84
48
|
}
|
|
85
|
-
|
|
49
|
+
const store1 = store;
|
|
86
50
|
store1.moveable = true;
|
|
87
51
|
if (events2) {
|
|
88
52
|
store1.oriDistance = getDistance({
|
|
@@ -95,23 +59,23 @@ var ImagePreview = function ImagePreview2(props) {
|
|
|
95
59
|
}
|
|
96
60
|
store1.originScale = store1.scale || 1;
|
|
97
61
|
};
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
62
|
+
const onTouchMove = (event) => {
|
|
63
|
+
const touches = event.touches;
|
|
64
|
+
const events = touches[0];
|
|
65
|
+
const events2 = touches[1];
|
|
102
66
|
if (!store.moveable) {
|
|
103
67
|
return;
|
|
104
68
|
}
|
|
105
|
-
|
|
69
|
+
const store1 = store;
|
|
106
70
|
if (events2) {
|
|
107
|
-
|
|
71
|
+
const curDistance = getDistance({
|
|
108
72
|
x: events.pageX,
|
|
109
73
|
y: events.pageY
|
|
110
74
|
}, {
|
|
111
75
|
x: events2.pageX,
|
|
112
76
|
y: events2.pageY
|
|
113
77
|
});
|
|
114
|
-
|
|
78
|
+
const curScale = curDistance / store1.oriDistance;
|
|
115
79
|
store1.scale = store1.originScale * curScale;
|
|
116
80
|
if (store1.scale > 3) {
|
|
117
81
|
store1.scale = 3;
|
|
@@ -119,109 +83,92 @@ var ImagePreview = function ImagePreview2(props) {
|
|
|
119
83
|
scaleNow();
|
|
120
84
|
}
|
|
121
85
|
};
|
|
122
|
-
|
|
86
|
+
const onTouchEnd = () => {
|
|
123
87
|
setLastTouchEndTime((/* @__PURE__ */ new Date()).getTime());
|
|
124
|
-
|
|
88
|
+
const store1 = store;
|
|
125
89
|
store1.moveable = false;
|
|
126
90
|
if (store1.scale < 1.1 && store1.scale > 1 || store1.scale < 1) {
|
|
127
91
|
store1.scale = 1;
|
|
128
92
|
scaleNow();
|
|
129
93
|
}
|
|
130
94
|
};
|
|
131
|
-
useEffect(
|
|
95
|
+
useEffect(() => {
|
|
132
96
|
init();
|
|
133
97
|
}, []);
|
|
134
|
-
|
|
98
|
+
const init = () => {
|
|
135
99
|
document.addEventListener("touchmove", onTouchMove);
|
|
136
100
|
document.addEventListener("touchend", onTouchEnd);
|
|
137
101
|
document.addEventListener("touchcancel", onTouchEnd);
|
|
138
102
|
};
|
|
139
|
-
useEffect(
|
|
103
|
+
useEffect(() => {
|
|
140
104
|
setShowPop(visible);
|
|
141
105
|
}, [visible]);
|
|
142
|
-
useEffect(
|
|
106
|
+
useEffect(() => {
|
|
143
107
|
setInnerNo(defaultValue || 1);
|
|
144
108
|
}, [defaultValue]);
|
|
145
|
-
useEffect(
|
|
109
|
+
useEffect(() => {
|
|
146
110
|
setActive(innerNo);
|
|
147
111
|
}, [innerNo]);
|
|
148
|
-
useEffect(
|
|
112
|
+
useEffect(() => {
|
|
149
113
|
setMaxNo((images === null || images === void 0 ? void 0 : images.length) || 0 + ((videos === null || videos === void 0 ? void 0 : videos.length) || 0));
|
|
150
114
|
}, [images, videos]);
|
|
151
|
-
|
|
115
|
+
const scaleNow = () => {
|
|
152
116
|
if (ref.current) {
|
|
153
|
-
ref.current.style.transform =
|
|
117
|
+
ref.current.style.transform = `scale(${store.scale})`;
|
|
154
118
|
}
|
|
155
119
|
};
|
|
156
|
-
|
|
120
|
+
const getDistance = (first, second) => {
|
|
157
121
|
return Math.hypot(Math.abs(second.x - first.x), Math.abs(second.y - first.y));
|
|
158
122
|
};
|
|
159
|
-
|
|
160
|
-
var
|
|
123
|
+
const slideChangeEnd = (page) => {
|
|
124
|
+
var _a;
|
|
161
125
|
setActive(page + 1);
|
|
162
|
-
(
|
|
126
|
+
(_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, page + 1);
|
|
163
127
|
};
|
|
164
|
-
|
|
128
|
+
const onCloseInner = () => {
|
|
165
129
|
setShowPop(false);
|
|
166
130
|
setActive(innerNo);
|
|
167
131
|
scaleNow();
|
|
168
|
-
|
|
169
|
-
setStore(
|
|
170
|
-
scale: 1
|
|
171
|
-
}));
|
|
132
|
+
onClose && onClose();
|
|
133
|
+
setStore(Object.assign(Object.assign({}, store), { scale: 1 }));
|
|
172
134
|
};
|
|
173
|
-
|
|
135
|
+
const closeOnImg = () => {
|
|
174
136
|
if (closeOnContentClick) {
|
|
175
137
|
onCloseInner();
|
|
176
138
|
}
|
|
177
139
|
};
|
|
178
|
-
return React__default.createElement(
|
|
179
|
-
|
|
180
|
-
className:
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
source: item.source,
|
|
211
|
-
options: item.options
|
|
212
|
-
}));
|
|
213
|
-
}) : []).concat(images && images.length > 0 ? images.map(function(item, index) {
|
|
214
|
-
return React__default.createElement(SwiperItem, {
|
|
215
|
-
key: index
|
|
216
|
-
}, React__default.createElement(Image, {
|
|
217
|
-
src: item.src
|
|
218
|
-
}));
|
|
219
|
-
}) : []))), React__default.createElement("div", {
|
|
220
|
-
className: "".concat(classPrefix, "-index")
|
|
221
|
-
}, active, "/", (images ? images.length : 0) + (videos ? videos.length : 0)), closeIcon !== false ? React__default.createElement("div", {
|
|
222
|
-
className: "".concat(classPrefix, "-close ").concat(closeIconPosition),
|
|
223
|
-
onClick: onCloseInner
|
|
224
|
-
}, closeIcon === true ? React__default.createElement(Close, null) : closeIcon) : null);
|
|
140
|
+
return React__default.createElement(
|
|
141
|
+
Popup,
|
|
142
|
+
{ visible: showPop, className: `${classPrefix}-pop`, style: { width: "100%" }, onClick: onCloseInner },
|
|
143
|
+
React__default.createElement(
|
|
144
|
+
"div",
|
|
145
|
+
{ className: classNames(classPrefix, className), style, ref, onClick: closeOnImg, onTouchStart },
|
|
146
|
+
React__default.createElement(Swiper, { autoPlay, className: `${classPrefix}-swiper`, loop: true, preventDefault: false, style: {
|
|
147
|
+
display: showPop ? "block" : "none",
|
|
148
|
+
"--nutui-indicator-color": indicatorColor
|
|
149
|
+
}, direction: "horizontal", onChange: (page) => slideChangeEnd(page), defaultValue: innerNo && (innerNo > maxNo ? maxNo - 1 : innerNo - 1), indicator }, (videos && videos.length > 0 ? videos.map((item, index) => {
|
|
150
|
+
return React__default.createElement(
|
|
151
|
+
SwiperItem,
|
|
152
|
+
{ key: index },
|
|
153
|
+
React__default.createElement(Video, { source: item.source, options: item.options })
|
|
154
|
+
);
|
|
155
|
+
}) : []).concat(images && images.length > 0 ? images.map((item, index) => {
|
|
156
|
+
return React__default.createElement(
|
|
157
|
+
SwiperItem,
|
|
158
|
+
{ key: index },
|
|
159
|
+
React__default.createElement(Image, { src: item.src })
|
|
160
|
+
);
|
|
161
|
+
}) : []))
|
|
162
|
+
),
|
|
163
|
+
React__default.createElement(
|
|
164
|
+
"div",
|
|
165
|
+
{ className: `${classPrefix}-index` },
|
|
166
|
+
active,
|
|
167
|
+
"/",
|
|
168
|
+
(images ? images.length : 0) + (videos ? videos.length : 0)
|
|
169
|
+
),
|
|
170
|
+
closeIcon !== false ? React__default.createElement("div", { className: `${classPrefix}-close ${closeIconPosition}`, onClick: onCloseInner }, closeIcon === true ? React__default.createElement(Close, null) : closeIcon) : null
|
|
171
|
+
);
|
|
225
172
|
};
|
|
226
173
|
ImagePreview.defaultProps = defaultProps;
|
|
227
174
|
ImagePreview.displayName = "NutImagePreview";
|