@nutui/nutui-react 1.5.1 → 2.0.0-alpha.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/CHANGELOG.md +24 -664
- package/dist/esm/ActionSheet.js +62 -54
- package/dist/esm/Address/style/index.js +0 -1
- package/dist/esm/Address.js +235 -330
- package/dist/esm/Animate.js +43 -32
- package/dist/esm/AnimatingNumbers.js +88 -49
- package/dist/esm/Audio/style/index.js +0 -1
- package/dist/esm/Audio.js +108 -121
- package/dist/esm/Avatar.js +65 -78
- package/dist/esm/AvatarContext.js +5 -0
- package/dist/esm/AvatarGroup.js +46 -27
- package/dist/esm/BackTop/style/index.js +1 -1
- package/dist/esm/BackTop.js +74 -76
- package/dist/esm/Badge.js +57 -54
- package/dist/esm/Barrage.js +45 -32
- package/dist/esm/Button/style/index.js +1 -1
- package/dist/esm/Button.js +66 -87
- package/dist/esm/Calendar.js +80 -79
- package/dist/esm/CalendarItem.js +199 -231
- package/dist/esm/Card.js +44 -37
- package/dist/esm/Cascader.js +431 -434
- package/dist/esm/Cell/style/index.js +1 -1
- package/dist/esm/Cell.js +57 -87
- package/dist/esm/CellGroup.js +7 -5
- package/dist/esm/Checkbox/style/index.js +0 -1
- package/dist/esm/Checkbox.js +11 -8
- package/dist/esm/CheckboxGroup.js +78 -71
- package/dist/esm/CircleProgress.js +50 -40
- package/dist/esm/Col.js +49 -43
- package/dist/esm/Collapse.js +44 -44
- package/dist/esm/CollapseItem/style/index.js +1 -1
- package/dist/esm/CollapseItem.js +64 -104
- package/dist/esm/ConfigProvider.js +400 -101
- package/dist/esm/CountDown.js +90 -95
- package/dist/esm/DatePicker.js +104 -123
- package/dist/esm/Dialog.js +98 -104
- package/dist/esm/Divider.js +36 -27
- package/dist/esm/Drag.js +55 -59
- package/dist/esm/Elevator.js +77 -88
- package/dist/esm/Ellipsis.js +80 -79
- package/dist/esm/Empty.js +50 -44
- package/dist/esm/FixedNav/style/index.js +0 -1
- package/dist/esm/FixedNav.js +57 -65
- package/dist/esm/Form.js +1154 -123
- package/dist/esm/FormItem.js +7 -5
- package/dist/esm/Grid/style/index.js +1 -1
- package/dist/esm/Grid.js +51 -55
- package/dist/esm/GridItem.js +7 -124
- package/dist/esm/Icon.js +83 -5
- package/dist/esm/Image.js +123 -122
- package/dist/esm/ImagePreview.js +76 -94
- package/dist/esm/Indicator.js +41 -36
- package/dist/esm/Infiniteloading/style/index.js +1 -1
- package/dist/esm/Infiniteloading.js +77 -93
- package/dist/esm/Input/style/index.js +1 -1
- package/dist/esm/Input.js +120 -172
- package/dist/esm/InputNumber/style/index.js +1 -1
- package/dist/esm/InputNumber.js +133 -167
- package/dist/esm/Layout.js +27 -6
- package/dist/esm/Menu.js +84 -86
- package/dist/esm/MenuItem/style/index.js +0 -1
- package/dist/esm/MenuItem.js +76 -86
- package/dist/esm/NavBar/style/index.js +1 -1
- package/dist/esm/NavBar.js +59 -63
- package/dist/esm/NoticeBar/style/index.js +1 -1
- package/dist/esm/NoticeBar.js +173 -290
- package/dist/esm/Notify.js +112 -78
- package/dist/esm/NumberKeyboard.js +110 -109
- package/dist/esm/Overlay.js +7 -6
- package/dist/esm/Pagination.js +94 -135
- package/dist/esm/Picker.js +149 -201
- package/dist/esm/Popover/style/index.js +0 -1
- package/dist/esm/Popover.js +121 -116
- package/dist/esm/Popup/style/index.js +0 -1
- package/dist/esm/Popup.js +114 -131
- package/dist/esm/Price.js +51 -39
- package/dist/esm/Progress/style/index.js +1 -1
- package/dist/esm/Progress.js +59 -64
- package/dist/esm/PullToRefresh.js +173 -149
- package/dist/esm/Radio/style/index.js +0 -1
- package/dist/esm/Radio.js +8 -6
- package/dist/esm/RadioGroup.js +64 -84
- package/dist/esm/Range.js +93 -122
- package/dist/esm/Rate/style/index.js +1 -1
- package/dist/esm/Rate.js +77 -95
- package/dist/esm/Row.js +49 -37
- package/dist/esm/SearchBar/style/index.js +1 -1
- package/dist/esm/SearchBar.js +110 -120
- package/dist/esm/ShortPassword/style/index.js +0 -1
- package/dist/esm/ShortPassword.js +120 -116
- package/dist/esm/SideNavBar.js +38 -28
- package/dist/esm/SideNavBarItem.js +31 -14
- package/dist/esm/Signature.js +65 -61
- package/dist/esm/Skeleton.js +48 -40
- package/dist/esm/Step/style/index.js +1 -1
- package/dist/esm/Step.js +49 -49
- package/dist/esm/Steps.js +37 -23
- package/dist/esm/Sticky.js +111 -120
- package/dist/esm/SubSideNavBar.js +50 -38
- package/dist/esm/Swipe.js +75 -63
- package/dist/esm/Swiper.js +171 -206
- package/dist/esm/SwiperItem.js +39 -22
- package/dist/esm/Switch.js +46 -37
- package/dist/esm/TabPane.js +8 -6
- package/dist/esm/Tabbar.js +47 -39
- package/dist/esm/TabbarItem/style/index.js +1 -1
- package/dist/esm/TabbarItem.js +50 -52
- package/dist/esm/Table/style/index.js +1 -1
- package/dist/esm/Table.js +70 -70
- package/dist/esm/Tabs/style/index.js +1 -2
- package/dist/esm/Tabs.js +11 -9
- package/dist/esm/Tag/style/index.js +1 -1
- package/dist/esm/Tag.js +69 -70
- package/dist/esm/TextArea.js +70 -64
- package/dist/esm/TimeDetail.js +47 -38
- package/dist/esm/TimePannel.js +35 -19
- package/dist/esm/TimeSelect.js +60 -68
- package/dist/esm/Toast/style/index.js +1 -1
- package/dist/esm/Toast.js +126 -98
- package/dist/esm/TrendArrow/style/index.js +1 -1
- package/dist/esm/TrendArrow.js +59 -55
- package/dist/esm/Uploader/style/index.js +0 -1
- package/dist/esm/Uploader.js +195 -246
- package/dist/esm/UserContext.js +5 -0
- package/dist/esm/UserContext2.js +5 -0
- package/dist/esm/UserContext3.js +5 -0
- package/dist/esm/Video.js +49 -39
- package/dist/esm/VirtualList.js +111 -146
- package/dist/esm/WaterMark.js +57 -60
- package/dist/esm/bem.js +10 -0
- package/dist/esm/cellgroup2.js +49 -0
- package/dist/esm/checkbox2.js +145 -0
- package/dist/esm/{date-c7aad4c0.js → date.js} +13 -11
- package/dist/esm/{formitem-8a73a5fb.js → formitem2.js} +83 -50
- package/dist/esm/get-scroll-parent.js +26 -0
- package/dist/esm/griditem2.js +96 -0
- package/dist/esm/index.js +14 -0
- package/dist/esm/nutui-react.es.js +188 -94
- package/dist/esm/offsetContext.js +19 -0
- package/dist/esm/overlay2.js +98 -0
- package/dist/esm/px-check.js +6 -0
- package/dist/esm/radio2.js +129 -0
- package/dist/esm/render.js +95 -0
- package/dist/esm/tabpane2.js +44 -0
- package/dist/esm/tabs2.js +175 -0
- package/dist/esm/typings.js +7 -0
- package/dist/esm/use-client-rect.js +32 -0
- package/dist/esm/use-props-value.js +18 -0
- package/dist/esm/use-touch.js +74 -0
- package/dist/locales/base.d.ts +2 -2
- package/dist/locales/base.js +1 -1
- package/dist/locales/en-US.js +3 -3
- package/dist/locales/id-ID.js +3 -3
- package/dist/locales/zh-CN.js +3 -3
- package/dist/locales/zh-TW.js +3 -3
- package/dist/locales/zh-UG.js +3 -3
- package/dist/nutui.react.mjs +8389 -4901
- package/dist/nutui.react.umd.js +8390 -4902
- package/dist/packages/actionsheet/actionsheet.scss +10 -2
- package/dist/packages/audio/audio.scss +2 -15
- package/dist/packages/backtop/backtop.scss +0 -8
- package/dist/packages/badge/badge.scss +3 -4
- package/dist/packages/button/button.scss +80 -93
- package/dist/packages/calendar/calendar.scss +0 -30
- package/dist/packages/cell/cell.scss +18 -90
- package/dist/packages/cellgroup/cellgroup.scss +26 -20
- package/dist/packages/collapseitem/collapseitem.scss +0 -1
- package/dist/packages/dialog/dialog.scss +1 -1
- package/dist/packages/divider/divider.scss +3 -17
- package/dist/packages/grid/grid.scss +1 -0
- package/dist/packages/griditem/griditem.scss +2 -17
- package/dist/packages/icon/icon.scss +0 -132
- package/dist/packages/image/image.scss +0 -12
- package/dist/packages/indicator/indicator.scss +21 -39
- package/dist/packages/infiniteloading/infiniteloading.scss +4 -12
- package/dist/packages/input/input.scss +4 -0
- package/dist/packages/inputnumber/inputnumber.scss +10 -26
- package/dist/packages/menuitem/menuitem.scss +2 -0
- package/dist/packages/navbar/navbar.scss +4 -5
- package/dist/packages/overlay/overlay.scss +0 -19
- package/dist/packages/picker/picker.scss +97 -103
- package/dist/packages/popup/popup.scss +0 -16
- package/dist/packages/progress/progress.scss +0 -1
- package/dist/packages/radio/radio.scss +8 -0
- package/dist/packages/rate/rate.scss +29 -6
- package/dist/packages/row/row.scss +13 -31
- package/dist/packages/searchbar/searchbar.scss +0 -1
- package/dist/packages/shortpassword/shortpassword.scss +4 -1
- package/dist/packages/sidenavbar/sidenavbar.scss +0 -19
- package/dist/packages/step/step.scss +0 -1
- package/dist/packages/sticky/sticky.scss +1 -1
- package/dist/packages/swiper/swiper.scss +8 -0
- package/dist/packages/tabbaritem/tabbaritem.scss +0 -1
- package/dist/packages/table/table.scss +0 -1
- package/dist/packages/tag/tag.scss +9 -2
- package/dist/packages/timedetail/timedetail.scss +9 -3
- package/dist/packages/timeselect/timeselect.scss +1 -1
- package/dist/packages/toast/toast.scss +0 -1
- package/dist/packages/uploader/uploader.scss +2 -28
- package/dist/style.css +1 -1
- package/dist/style.mjs +1 -1
- package/dist/styles/font-jmapp/config.json +175 -0
- package/dist/styles/font-jmapp/demo.css +539 -0
- package/dist/styles/font-jmapp/demo_index.html +1821 -0
- package/dist/styles/font-jmapp/iconfont.css +299 -0
- package/dist/styles/font-jmapp/iconfont.eot +0 -0
- package/dist/styles/font-jmapp/iconfont.js +68 -0
- package/dist/styles/font-jmapp/iconfont.json +506 -0
- package/dist/styles/font-jmapp/iconfont.svg +356 -0
- package/dist/styles/font-jmapp/iconfont.ttf +0 -0
- package/dist/styles/font-jmapp/iconfont.woff +0 -0
- package/dist/styles/font-jmapp/iconfont.woff2 +0 -0
- package/dist/styles/theme-default.scss +1 -0
- package/dist/styles/theme-jmapp.scss +41 -0
- package/dist/styles/themes/default.scss +0 -1
- package/dist/styles/variables-jmapp.scss +2601 -0
- package/dist/styles/variables.scss +49 -73
- package/dist/types/index.d.ts +169 -266
- package/package.json +23 -154
- package/dist/esm/AvatarContext-15733596.js +0 -3
- package/dist/esm/Icon/style/index.js +0 -4
- package/dist/esm/UserContext-101ad4a4.js +0 -3
- package/dist/esm/UserContext-2629d479.js +0 -3
- package/dist/esm/UserContext-b33bcf21.js +0 -3
- package/dist/esm/bem-3b438e61.js +0 -8
- package/dist/esm/cellgroup-fcc72767.js +0 -34
- package/dist/esm/checkbox-44e13cd0.js +0 -137
- package/dist/esm/get-scroll-parent-5f85dee8.js +0 -24
- package/dist/esm/grid.context-2ee27d95.js +0 -6
- package/dist/esm/icon-4ef1581c.js +0 -70
- package/dist/esm/index-030b7245.js +0 -11
- package/dist/esm/offsetContext-3ab00d40.js +0 -16
- package/dist/esm/overlay-de6c79d5.js +0 -83
- package/dist/esm/radio-9f141e6b.js +0 -118
- package/dist/esm/render-bbebb760.js +0 -79
- package/dist/esm/tabpane-01075e6c.js +0 -29
- package/dist/esm/tabs-e1b4e4b1.js +0 -181
- package/dist/esm/typings-f27b58f4.js +0 -8
- package/dist/esm/useClientRect-56bb675b.js +0 -39
- package/dist/esm/useTouch-cf73a407.js +0 -99
package/dist/esm/Image.js
CHANGED
|
@@ -1,170 +1,171 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
-
function ownKeys(object, enumerableOnly) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
var
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
setIsError = _useState4[1];
|
|
51
|
-
var _useState5 = useState(''),
|
|
52
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
53
|
-
_src = _useState6[0],
|
|
54
|
-
setSrc = _useState6[1];
|
|
55
|
-
useEffect(function () {
|
|
56
|
-
if (src) {
|
|
3
|
+
function ownKeys(object, enumerableOnly) {
|
|
4
|
+
var keys = Object.keys(object);
|
|
5
|
+
if (Object.getOwnPropertySymbols) {
|
|
6
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
7
|
+
enumerableOnly && (symbols = symbols.filter(function(sym) {
|
|
8
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
9
|
+
})), keys.push.apply(keys, symbols);
|
|
10
|
+
}
|
|
11
|
+
return keys;
|
|
12
|
+
}
|
|
13
|
+
function _objectSpread(target) {
|
|
14
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
15
|
+
var source = null != arguments[i] ? arguments[i] : {};
|
|
16
|
+
i % 2 ? ownKeys(Object(source), true).forEach(function(key) {
|
|
17
|
+
_defineProperty(target, key, source[key]);
|
|
18
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) {
|
|
19
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return target;
|
|
23
|
+
}
|
|
24
|
+
import React__default, { useState, useRef, useEffect, useCallback } from "react";
|
|
25
|
+
import { ImageError, Image as Image$1 } from "@nutui/icons-react";
|
|
26
|
+
import classNames from "classnames";
|
|
27
|
+
import { C as ComponentDefaults } from "./typings.js";
|
|
28
|
+
import { p as pxCheck } from "./px-check.js";
|
|
29
|
+
var defaultProps = _objectSpread(_objectSpread({}, ComponentDefaults), {}, {
|
|
30
|
+
fit: "fill",
|
|
31
|
+
position: "center",
|
|
32
|
+
alt: "",
|
|
33
|
+
width: "center",
|
|
34
|
+
height: "",
|
|
35
|
+
error: true,
|
|
36
|
+
loading: true,
|
|
37
|
+
lazy: false
|
|
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(true), _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(""), _useState6 = _slicedToArray(_useState5, 2), _src = _useState6[0], setSrc = _useState6[1];
|
|
45
|
+
var imgRef = useRef(null);
|
|
46
|
+
useEffect(function() {
|
|
47
|
+
if (imgRef.current && imgRef.current.complete && imgRef.current.naturalHeight !== 0) {
|
|
48
|
+
setInnerLoading(false);
|
|
49
|
+
} else if (src) {
|
|
57
50
|
setSrc(src);
|
|
58
51
|
setIsError(false);
|
|
59
|
-
|
|
52
|
+
setInnerLoading(true);
|
|
60
53
|
}
|
|
61
54
|
}, [src]);
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
setLoading(false);
|
|
55
|
+
var handleLoad = function handleLoad2() {
|
|
56
|
+
setInnerLoading(false);
|
|
65
57
|
onLoad && onLoad();
|
|
66
58
|
};
|
|
67
|
-
|
|
68
|
-
var error = function error() {
|
|
59
|
+
var handleError = function handleError2() {
|
|
69
60
|
setIsError(true);
|
|
70
|
-
|
|
61
|
+
setInnerLoading(false);
|
|
71
62
|
onError && onError();
|
|
72
63
|
};
|
|
73
|
-
var
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
width: width ? pxCheck(width) : '',
|
|
79
|
-
overflow: radius !== undefined && radius !== null ? 'hidden' : '',
|
|
80
|
-
borderRadius: radius !== undefined && radius !== null ? pxCheck(radius) : ''
|
|
64
|
+
var containerStyle = {
|
|
65
|
+
height: height ? pxCheck(height) : "",
|
|
66
|
+
width: width ? pxCheck(width) : "",
|
|
67
|
+
overflow: radius !== void 0 && radius !== null ? "hidden" : "",
|
|
68
|
+
borderRadius: radius !== void 0 && radius !== null ? pxCheck(radius) : ""
|
|
81
69
|
};
|
|
82
|
-
var
|
|
70
|
+
var imgStyle = _objectSpread({
|
|
83
71
|
objectFit: fit,
|
|
84
72
|
objectPosition: position
|
|
85
73
|
}, style);
|
|
86
|
-
// 图片懒加载
|
|
87
74
|
var observer = useRef(null);
|
|
88
|
-
var initObserver = function
|
|
89
|
-
var
|
|
75
|
+
var initObserver = function initObserver2() {
|
|
76
|
+
var images = document.querySelectorAll(".nut-img.lazyload");
|
|
90
77
|
var options = {
|
|
91
78
|
threshold: [0],
|
|
92
|
-
rootMargin:
|
|
79
|
+
rootMargin: "0px"
|
|
80
|
+
// 对视口进行收缩和扩张
|
|
93
81
|
};
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
// entires为监听的节点数组对象
|
|
97
|
-
entires.forEach(function (item) {
|
|
98
|
-
// isIntersecting是当前监听元素交叉区域是否在可视区域指定的阈值内返回的是一个布尔值
|
|
82
|
+
observer.current = new IntersectionObserver(function(entires, self) {
|
|
83
|
+
entires.forEach(function(item) {
|
|
99
84
|
if (item.isIntersecting) {
|
|
100
|
-
setTimeout(function
|
|
85
|
+
setTimeout(function() {
|
|
101
86
|
var img = item.target;
|
|
102
87
|
if (img.dataset.src) {
|
|
103
88
|
img.src = img.dataset.src;
|
|
104
|
-
img.removeAttribute(
|
|
89
|
+
img.removeAttribute("data-src");
|
|
105
90
|
}
|
|
106
|
-
// 资源加载后停止监听
|
|
107
91
|
observer.current.unobserve(item.target);
|
|
108
92
|
}, 300);
|
|
109
93
|
}
|
|
110
94
|
});
|
|
111
95
|
}, options);
|
|
112
|
-
|
|
96
|
+
images.forEach(function(item) {
|
|
113
97
|
observer.current.observe(item);
|
|
114
98
|
});
|
|
115
99
|
};
|
|
116
|
-
|
|
117
|
-
var resetObserver = function resetObserver() {
|
|
100
|
+
var resetObserver = function resetObserver2() {
|
|
118
101
|
observer.current.disconnect && observer.current.disconnect();
|
|
119
102
|
};
|
|
120
|
-
useEffect(function
|
|
121
|
-
|
|
122
|
-
return function
|
|
123
|
-
|
|
103
|
+
useEffect(function() {
|
|
104
|
+
lazy && initObserver();
|
|
105
|
+
return function() {
|
|
106
|
+
lazy && resetObserver();
|
|
124
107
|
};
|
|
125
|
-
}, [
|
|
126
|
-
var
|
|
127
|
-
backgroundImage: loadingImg ? "url('".concat(loadingImg, "')") : ''
|
|
128
|
-
};
|
|
129
|
-
var errorBg = {
|
|
130
|
-
backgroundImage: errorImg ? "url('".concat(errorImg, "')") : ''
|
|
131
|
-
};
|
|
132
|
-
var imageClick = function imageClick(event) {
|
|
108
|
+
}, [lazy]);
|
|
109
|
+
var imageClick = function imageClick2(event) {
|
|
133
110
|
onClick && onClick(event);
|
|
134
111
|
};
|
|
112
|
+
var renderErrorImg = useCallback(function() {
|
|
113
|
+
if (!isError)
|
|
114
|
+
return null;
|
|
115
|
+
if (typeof error === "boolean" && error === true && !innerLoading) {
|
|
116
|
+
return React__default.createElement("div", {
|
|
117
|
+
className: "nut-img-error"
|
|
118
|
+
}, React__default.createElement(ImageError, null));
|
|
119
|
+
}
|
|
120
|
+
if (React__default.isValidElement(error) && !innerLoading) {
|
|
121
|
+
return React__default.createElement("div", {
|
|
122
|
+
className: "nut-img-error"
|
|
123
|
+
}, error);
|
|
124
|
+
}
|
|
125
|
+
return null;
|
|
126
|
+
}, [error, isError]);
|
|
127
|
+
var renderLoading = useCallback(function() {
|
|
128
|
+
if (!loading)
|
|
129
|
+
return null;
|
|
130
|
+
if (typeof loading === "boolean" && loading === true && innerLoading) {
|
|
131
|
+
return React__default.createElement("div", {
|
|
132
|
+
className: "nut-img-loading"
|
|
133
|
+
}, React__default.createElement(Image$1, null));
|
|
134
|
+
}
|
|
135
|
+
if (React__default.isValidElement(loading) && innerLoading) {
|
|
136
|
+
return React__default.createElement("div", {
|
|
137
|
+
className: "nut-img-loading"
|
|
138
|
+
}, loading);
|
|
139
|
+
}
|
|
140
|
+
return null;
|
|
141
|
+
}, [loading, innerLoading]);
|
|
135
142
|
return React__default.createElement("div", {
|
|
136
|
-
className:
|
|
137
|
-
style:
|
|
138
|
-
onClick: function
|
|
143
|
+
className: classNames(classPrefix, className),
|
|
144
|
+
style: containerStyle,
|
|
145
|
+
onClick: function onClick2(e) {
|
|
139
146
|
imageClick(e);
|
|
140
147
|
}
|
|
141
|
-
},
|
|
148
|
+
}, lazy ? React__default.createElement("img", {
|
|
149
|
+
ref: imgRef,
|
|
142
150
|
className: "nut-img lazyload",
|
|
143
|
-
style:
|
|
151
|
+
style: imgStyle,
|
|
144
152
|
"data-src": _src,
|
|
145
|
-
alt
|
|
153
|
+
alt,
|
|
146
154
|
loading: "lazy",
|
|
147
|
-
onLoad:
|
|
148
|
-
onError:
|
|
155
|
+
onLoad: handleLoad,
|
|
156
|
+
onError: handleError
|
|
149
157
|
}) : React__default.createElement("img", {
|
|
158
|
+
ref: imgRef,
|
|
150
159
|
className: "nut-img",
|
|
151
|
-
style:
|
|
160
|
+
style: imgStyle,
|
|
152
161
|
src: _src,
|
|
153
|
-
alt
|
|
154
|
-
onLoad:
|
|
155
|
-
onError:
|
|
156
|
-
}),
|
|
157
|
-
className: "nut-img-loading",
|
|
158
|
-
style: loadingBg
|
|
159
|
-
}, !loadingImg && (slotLoding || children || React__default.createElement(Icon, {
|
|
160
|
-
name: "image"
|
|
161
|
-
}))) : null, isError && showError && !loading ? React__default.createElement("div", {
|
|
162
|
-
className: "nut-img-error",
|
|
163
|
-
style: errorBg
|
|
164
|
-
}, !errorImg && (slotError || children || React__default.createElement(Icon, {
|
|
165
|
-
name: "image-error"
|
|
166
|
-
}))) : null);
|
|
162
|
+
alt,
|
|
163
|
+
onLoad: handleLoad,
|
|
164
|
+
onError: handleError
|
|
165
|
+
}), renderLoading(), renderErrorImg());
|
|
167
166
|
};
|
|
168
167
|
Image.defaultProps = defaultProps;
|
|
169
|
-
Image.displayName =
|
|
170
|
-
export {
|
|
168
|
+
Image.displayName = "NutImage";
|
|
169
|
+
export {
|
|
170
|
+
Image as default
|
|
171
|
+
};
|
package/dist/esm/ImagePreview.js
CHANGED
|
@@ -1,80 +1,72 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
2
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
|
-
function ownKeys(object, enumerableOnly) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
function ownKeys(object, enumerableOnly) {
|
|
4
|
+
var keys = Object.keys(object);
|
|
5
|
+
if (Object.getOwnPropertySymbols) {
|
|
6
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
7
|
+
enumerableOnly && (symbols = symbols.filter(function(sym) {
|
|
8
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
9
|
+
})), keys.push.apply(keys, symbols);
|
|
10
|
+
}
|
|
11
|
+
return keys;
|
|
12
|
+
}
|
|
13
|
+
function _objectSpread(target) {
|
|
14
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
15
|
+
var source = null != arguments[i] ? arguments[i] : {};
|
|
16
|
+
i % 2 ? ownKeys(Object(source), true).forEach(function(key) {
|
|
17
|
+
_defineProperty(target, key, source[key]);
|
|
18
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) {
|
|
19
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return target;
|
|
23
|
+
}
|
|
24
|
+
import React__default, { useRef, useState, useEffect } from "react";
|
|
25
|
+
import Popup from "./Popup.js";
|
|
26
|
+
import Video from "./Video.js";
|
|
27
|
+
import Swiper from "./Swiper.js";
|
|
28
|
+
import SwiperItem from "./SwiperItem.js";
|
|
10
29
|
var defaultProps = {
|
|
11
30
|
images: [],
|
|
12
31
|
videos: [],
|
|
13
32
|
show: false,
|
|
14
|
-
autoplay:
|
|
33
|
+
autoplay: 3e3,
|
|
15
34
|
initNo: 1,
|
|
16
35
|
contentClose: false,
|
|
17
36
|
paginationVisible: false,
|
|
18
|
-
paginationColor:
|
|
19
|
-
onClose: function onClose() {
|
|
37
|
+
paginationColor: "#fff",
|
|
38
|
+
onClose: function onClose() {
|
|
39
|
+
}
|
|
20
40
|
};
|
|
21
|
-
var ImagePreview = function
|
|
22
|
-
var images = props.images,
|
|
23
|
-
videos = props.videos,
|
|
24
|
-
show = props.show,
|
|
25
|
-
initNo = props.initNo,
|
|
26
|
-
paginationColor = props.paginationColor,
|
|
27
|
-
paginationVisible = props.paginationVisible,
|
|
28
|
-
autoplay = props.autoplay,
|
|
29
|
-
contentClose = props.contentClose,
|
|
30
|
-
onClose = props.onClose;
|
|
41
|
+
var ImagePreview = function ImagePreview2(props) {
|
|
42
|
+
var images = props.images, videos = props.videos, show = props.show, initNo = props.initNo, paginationColor = props.paginationColor, paginationVisible = props.paginationVisible, autoplay = props.autoplay, contentClose = props.contentClose, onClose2 = props.onClose;
|
|
31
43
|
var nutImagePreview = useRef(null);
|
|
32
|
-
var _useState = useState(initNo),
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
var _useState3 = useState(false),
|
|
37
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
38
|
-
showPop = _useState4[0],
|
|
39
|
-
setShowPop = _useState4[1];
|
|
40
|
-
var _useState5 = useState(1),
|
|
41
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
42
|
-
active = _useState6[0],
|
|
43
|
-
setActive = _useState6[1];
|
|
44
|
-
var _useState7 = useState(1),
|
|
45
|
-
_useState8 = _slicedToArray(_useState7, 2),
|
|
46
|
-
maxNo = _useState8[0],
|
|
47
|
-
setMaxNo = _useState8[1];
|
|
44
|
+
var _useState = useState(initNo), _useState2 = _slicedToArray(_useState, 2), innerNo = _useState2[0], setInnerNo = _useState2[1];
|
|
45
|
+
var _useState3 = useState(false), _useState4 = _slicedToArray(_useState3, 2), showPop = _useState4[0], setShowPop = _useState4[1];
|
|
46
|
+
var _useState5 = useState(1), _useState6 = _slicedToArray(_useState5, 2), active = _useState6[0], setActive = _useState6[1];
|
|
47
|
+
var _useState7 = useState(1), _useState8 = _slicedToArray(_useState7, 2), maxNo = _useState8[0], setMaxNo = _useState8[1];
|
|
48
48
|
var _useState9 = useState({
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
setStore = _useState10[1];
|
|
55
|
-
var _useState11 = useState(0),
|
|
56
|
-
_useState12 = _slicedToArray(_useState11, 2),
|
|
57
|
-
lastTouchEndTime = _useState12[0],
|
|
58
|
-
setLastTouchEndTime = _useState12[1]; // 用来辅助监听双击
|
|
59
|
-
var onTouchStart = function onTouchStart(event) {
|
|
49
|
+
scale: 1,
|
|
50
|
+
moveable: false
|
|
51
|
+
}), _useState10 = _slicedToArray(_useState9, 2), store = _useState10[0], setStore = _useState10[1];
|
|
52
|
+
var _useState11 = useState(0), _useState12 = _slicedToArray(_useState11, 2), lastTouchEndTime = _useState12[0], setLastTouchEndTime = _useState12[1];
|
|
53
|
+
var onTouchStart = function onTouchStart2(event) {
|
|
60
54
|
var touches = event.touches;
|
|
61
55
|
var events = touches[0];
|
|
62
56
|
var events2 = touches[1];
|
|
63
|
-
|
|
64
|
-
var curTouchTime = new Date().getTime();
|
|
57
|
+
var curTouchTime = /* @__PURE__ */ (/* @__PURE__ */ new Date()).getTime();
|
|
65
58
|
if (curTouchTime - lastTouchEndTime < 300) {
|
|
66
|
-
var
|
|
67
|
-
if (
|
|
68
|
-
|
|
69
|
-
} else if (
|
|
70
|
-
|
|
59
|
+
var store12 = store;
|
|
60
|
+
if (store12.scale > 1) {
|
|
61
|
+
store12.scale = 1;
|
|
62
|
+
} else if (store12.scale === 1) {
|
|
63
|
+
store12.scale = 2;
|
|
71
64
|
}
|
|
72
65
|
scaleNow();
|
|
73
66
|
}
|
|
74
67
|
var store1 = store;
|
|
75
68
|
store1.moveable = true;
|
|
76
69
|
if (events2) {
|
|
77
|
-
// 如果开始两指操作,记录初始时刻两指间的距离
|
|
78
70
|
store1.oriDistance = getDistance({
|
|
79
71
|
x: events.pageX,
|
|
80
72
|
y: events.pageY
|
|
@@ -83,10 +75,9 @@ var ImagePreview = function ImagePreview(props) {
|
|
|
83
75
|
y: events2.pageY
|
|
84
76
|
});
|
|
85
77
|
}
|
|
86
|
-
// 取到开始两指操作时的放大(缩小比例),store.scale 存储的是当前的放缩比(相对于标准大小 scale 为 1 的情况的放大缩小比)
|
|
87
78
|
store1.originScale = store1.scale || 1;
|
|
88
79
|
};
|
|
89
|
-
var onTouchMove = function
|
|
80
|
+
var onTouchMove = function onTouchMove2(event) {
|
|
90
81
|
var touches = event.touches;
|
|
91
82
|
var events = touches[0];
|
|
92
83
|
var events2 = touches[1];
|
|
@@ -94,9 +85,7 @@ var ImagePreview = function ImagePreview(props) {
|
|
|
94
85
|
return;
|
|
95
86
|
}
|
|
96
87
|
var store1 = store;
|
|
97
|
-
// 双指移动
|
|
98
88
|
if (events2) {
|
|
99
|
-
// 获得当前两点间的距离
|
|
100
89
|
var curDistance = getDistance({
|
|
101
90
|
x: events.pageX,
|
|
102
91
|
y: events.pageY
|
|
@@ -104,21 +93,16 @@ var ImagePreview = function ImagePreview(props) {
|
|
|
104
93
|
x: events2.pageX,
|
|
105
94
|
y: events2.pageY
|
|
106
95
|
});
|
|
107
|
-
/** 此处计算倍数,距离放大(缩小) k 倍则 scale 也 扩大(缩小) k 倍。距离放大(缩小)倍数 = 结束时两点距离 除以 开始时两点距离
|
|
108
|
-
* 注意此处的 scale 变化是基于 store.scale 的。
|
|
109
|
-
* store.scale 是一个暂存值,比如第一次放大 2 倍,则 store.scale 为 2。
|
|
110
|
-
* 再次两指触碰的时候,store.originScale 就为 store.scale 的值,基于此时的 store.scale 继续放大缩小。 * */
|
|
111
96
|
var curScale = curDistance / store1.oriDistance;
|
|
112
97
|
store1.scale = store1.originScale * curScale;
|
|
113
|
-
// 最大放大 3 倍,缩小后松手要弹回原比例
|
|
114
98
|
if (store1.scale > 3) {
|
|
115
99
|
store1.scale = 3;
|
|
116
100
|
}
|
|
117
101
|
scaleNow();
|
|
118
102
|
}
|
|
119
103
|
};
|
|
120
|
-
var onTouchEnd = function
|
|
121
|
-
setLastTouchEndTime(new Date().getTime());
|
|
104
|
+
var onTouchEnd = function onTouchEnd2() {
|
|
105
|
+
setLastTouchEndTime(/* @__PURE__ */ (/* @__PURE__ */ new Date()).getTime());
|
|
122
106
|
var store1 = store;
|
|
123
107
|
store1.moveable = false;
|
|
124
108
|
if (store1.scale < 1.1 && store1.scale > 1 || store1.scale < 1) {
|
|
@@ -126,90 +110,86 @@ var ImagePreview = function ImagePreview(props) {
|
|
|
126
110
|
scaleNow();
|
|
127
111
|
}
|
|
128
112
|
};
|
|
129
|
-
var init = function
|
|
130
|
-
document.addEventListener(
|
|
131
|
-
document.addEventListener(
|
|
132
|
-
document.addEventListener(
|
|
113
|
+
var init = function init2() {
|
|
114
|
+
document.addEventListener("touchmove", onTouchMove);
|
|
115
|
+
document.addEventListener("touchend", onTouchEnd);
|
|
116
|
+
document.addEventListener("touchcancel", onTouchEnd);
|
|
133
117
|
};
|
|
134
|
-
useEffect(function
|
|
118
|
+
useEffect(function() {
|
|
135
119
|
setShowPop(show);
|
|
136
120
|
setInnerNo(initNo);
|
|
137
121
|
setActive(initNo);
|
|
138
122
|
init();
|
|
139
123
|
}, [show, initNo]);
|
|
140
|
-
useEffect(function
|
|
141
|
-
if (innerNo !==
|
|
124
|
+
useEffect(function() {
|
|
125
|
+
if (innerNo !== void 0) {
|
|
142
126
|
setActive(innerNo);
|
|
143
127
|
}
|
|
144
|
-
if (show !==
|
|
128
|
+
if (show !== void 0) {
|
|
145
129
|
setShowPop(show);
|
|
146
130
|
}
|
|
147
131
|
if (images && videos) {
|
|
148
132
|
setMaxNo(images.length + videos.length);
|
|
149
133
|
}
|
|
150
134
|
}, []);
|
|
151
|
-
var scaleNow = function
|
|
135
|
+
var scaleNow = function scaleNow2() {
|
|
152
136
|
if (nutImagePreview.current) {
|
|
153
137
|
nutImagePreview.current.style.transform = "scale(".concat(store.scale, ")");
|
|
154
138
|
}
|
|
155
139
|
};
|
|
156
|
-
var onCloseInner = function
|
|
140
|
+
var onCloseInner = function onCloseInner2() {
|
|
157
141
|
setShowPop(false);
|
|
158
142
|
setActive(1);
|
|
159
143
|
scaleNow();
|
|
160
|
-
|
|
144
|
+
onClose2 && onClose2();
|
|
161
145
|
setStore(_objectSpread(_objectSpread({}, store), {}, {
|
|
162
146
|
scale: 1
|
|
163
147
|
}));
|
|
164
148
|
};
|
|
165
|
-
|
|
166
|
-
var getDistance = function getDistance(first, second) {
|
|
167
|
-
// 计算两个点起始时刻的距离和终止时刻的距离,终止时刻距离变大了则放大,变小了则缩小
|
|
168
|
-
// 放大 k 倍则 scale 也 扩大 k 倍
|
|
149
|
+
var getDistance = function getDistance2(first, second) {
|
|
169
150
|
return Math.hypot(Math.abs(second.x - first.x), Math.abs(second.y - first.y));
|
|
170
151
|
};
|
|
171
|
-
var slideChangeEnd = function
|
|
152
|
+
var slideChangeEnd = function slideChangeEnd2(page) {
|
|
172
153
|
setActive(page + 1);
|
|
173
154
|
};
|
|
174
|
-
var closeOnImg = function
|
|
175
|
-
// 点击内容区域的图片是否可以关闭弹层(视频区域由于nut-video做了限制,无法关闭弹层)
|
|
155
|
+
var closeOnImg = function closeOnImg2() {
|
|
176
156
|
if (contentClose) {
|
|
177
157
|
onCloseInner();
|
|
178
158
|
}
|
|
179
159
|
};
|
|
180
160
|
return React__default.createElement(Popup, {
|
|
181
161
|
visible: showPop,
|
|
182
|
-
|
|
162
|
+
className: "custom-pop",
|
|
183
163
|
style: {
|
|
184
|
-
width:
|
|
164
|
+
width: "100%"
|
|
185
165
|
},
|
|
186
166
|
onClick: onCloseInner
|
|
187
167
|
}, React__default.createElement("div", {
|
|
188
168
|
className: "nut-imagepreview",
|
|
189
169
|
ref: nutImagePreview,
|
|
190
170
|
onClick: closeOnImg,
|
|
191
|
-
onTouchStart
|
|
171
|
+
onTouchStart
|
|
192
172
|
}, React__default.createElement(Swiper, {
|
|
193
173
|
autoPlay: autoplay,
|
|
194
174
|
className: "nut-imagepreview-swiper",
|
|
195
175
|
loop: true,
|
|
196
176
|
isPreventDefault: false,
|
|
197
177
|
style: {
|
|
198
|
-
display: showPop ?
|
|
178
|
+
display: showPop ? "block" : "none"
|
|
199
179
|
},
|
|
200
180
|
direction: "horizontal",
|
|
201
181
|
onChange: slideChangeEnd,
|
|
202
182
|
initPage: innerNo && (innerNo > maxNo ? maxNo - 1 : innerNo - 1),
|
|
203
|
-
paginationColor
|
|
204
|
-
paginationVisible
|
|
205
|
-
}, (videos && videos.length > 0 ? videos.map(function
|
|
183
|
+
paginationColor,
|
|
184
|
+
paginationVisible
|
|
185
|
+
}, (videos && videos.length > 0 ? videos.map(function(item, index) {
|
|
206
186
|
return React__default.createElement(SwiperItem, {
|
|
207
187
|
key: index
|
|
208
188
|
}, React__default.createElement(Video, {
|
|
209
189
|
source: item.source,
|
|
210
190
|
options: item.options
|
|
211
191
|
}));
|
|
212
|
-
}) : []).concat(images && images.length > 0 ? images.map(function
|
|
192
|
+
}) : []).concat(images && images.length > 0 ? images.map(function(item, index) {
|
|
213
193
|
return React__default.createElement(SwiperItem, {
|
|
214
194
|
key: index
|
|
215
195
|
}, React__default.createElement("img", {
|
|
@@ -222,5 +202,7 @@ var ImagePreview = function ImagePreview(props) {
|
|
|
222
202
|
}, active, "/", (images ? images.length : 0) + (videos ? videos.length : 0)));
|
|
223
203
|
};
|
|
224
204
|
ImagePreview.defaultProps = defaultProps;
|
|
225
|
-
ImagePreview.displayName =
|
|
226
|
-
export {
|
|
205
|
+
ImagePreview.displayName = "NutImagePreview";
|
|
206
|
+
export {
|
|
207
|
+
ImagePreview as default
|
|
208
|
+
};
|