@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.
Files changed (240) hide show
  1. package/CHANGELOG.md +24 -664
  2. package/dist/esm/ActionSheet.js +62 -54
  3. package/dist/esm/Address/style/index.js +0 -1
  4. package/dist/esm/Address.js +235 -330
  5. package/dist/esm/Animate.js +43 -32
  6. package/dist/esm/AnimatingNumbers.js +88 -49
  7. package/dist/esm/Audio/style/index.js +0 -1
  8. package/dist/esm/Audio.js +108 -121
  9. package/dist/esm/Avatar.js +65 -78
  10. package/dist/esm/AvatarContext.js +5 -0
  11. package/dist/esm/AvatarGroup.js +46 -27
  12. package/dist/esm/BackTop/style/index.js +1 -1
  13. package/dist/esm/BackTop.js +74 -76
  14. package/dist/esm/Badge.js +57 -54
  15. package/dist/esm/Barrage.js +45 -32
  16. package/dist/esm/Button/style/index.js +1 -1
  17. package/dist/esm/Button.js +66 -87
  18. package/dist/esm/Calendar.js +80 -79
  19. package/dist/esm/CalendarItem.js +199 -231
  20. package/dist/esm/Card.js +44 -37
  21. package/dist/esm/Cascader.js +431 -434
  22. package/dist/esm/Cell/style/index.js +1 -1
  23. package/dist/esm/Cell.js +57 -87
  24. package/dist/esm/CellGroup.js +7 -5
  25. package/dist/esm/Checkbox/style/index.js +0 -1
  26. package/dist/esm/Checkbox.js +11 -8
  27. package/dist/esm/CheckboxGroup.js +78 -71
  28. package/dist/esm/CircleProgress.js +50 -40
  29. package/dist/esm/Col.js +49 -43
  30. package/dist/esm/Collapse.js +44 -44
  31. package/dist/esm/CollapseItem/style/index.js +1 -1
  32. package/dist/esm/CollapseItem.js +64 -104
  33. package/dist/esm/ConfigProvider.js +400 -101
  34. package/dist/esm/CountDown.js +90 -95
  35. package/dist/esm/DatePicker.js +104 -123
  36. package/dist/esm/Dialog.js +98 -104
  37. package/dist/esm/Divider.js +36 -27
  38. package/dist/esm/Drag.js +55 -59
  39. package/dist/esm/Elevator.js +77 -88
  40. package/dist/esm/Ellipsis.js +80 -79
  41. package/dist/esm/Empty.js +50 -44
  42. package/dist/esm/FixedNav/style/index.js +0 -1
  43. package/dist/esm/FixedNav.js +57 -65
  44. package/dist/esm/Form.js +1154 -123
  45. package/dist/esm/FormItem.js +7 -5
  46. package/dist/esm/Grid/style/index.js +1 -1
  47. package/dist/esm/Grid.js +51 -55
  48. package/dist/esm/GridItem.js +7 -124
  49. package/dist/esm/Icon.js +83 -5
  50. package/dist/esm/Image.js +123 -122
  51. package/dist/esm/ImagePreview.js +76 -94
  52. package/dist/esm/Indicator.js +41 -36
  53. package/dist/esm/Infiniteloading/style/index.js +1 -1
  54. package/dist/esm/Infiniteloading.js +77 -93
  55. package/dist/esm/Input/style/index.js +1 -1
  56. package/dist/esm/Input.js +120 -172
  57. package/dist/esm/InputNumber/style/index.js +1 -1
  58. package/dist/esm/InputNumber.js +133 -167
  59. package/dist/esm/Layout.js +27 -6
  60. package/dist/esm/Menu.js +84 -86
  61. package/dist/esm/MenuItem/style/index.js +0 -1
  62. package/dist/esm/MenuItem.js +76 -86
  63. package/dist/esm/NavBar/style/index.js +1 -1
  64. package/dist/esm/NavBar.js +59 -63
  65. package/dist/esm/NoticeBar/style/index.js +1 -1
  66. package/dist/esm/NoticeBar.js +173 -290
  67. package/dist/esm/Notify.js +112 -78
  68. package/dist/esm/NumberKeyboard.js +110 -109
  69. package/dist/esm/Overlay.js +7 -6
  70. package/dist/esm/Pagination.js +94 -135
  71. package/dist/esm/Picker.js +149 -201
  72. package/dist/esm/Popover/style/index.js +0 -1
  73. package/dist/esm/Popover.js +121 -116
  74. package/dist/esm/Popup/style/index.js +0 -1
  75. package/dist/esm/Popup.js +114 -131
  76. package/dist/esm/Price.js +51 -39
  77. package/dist/esm/Progress/style/index.js +1 -1
  78. package/dist/esm/Progress.js +59 -64
  79. package/dist/esm/PullToRefresh.js +173 -149
  80. package/dist/esm/Radio/style/index.js +0 -1
  81. package/dist/esm/Radio.js +8 -6
  82. package/dist/esm/RadioGroup.js +64 -84
  83. package/dist/esm/Range.js +93 -122
  84. package/dist/esm/Rate/style/index.js +1 -1
  85. package/dist/esm/Rate.js +77 -95
  86. package/dist/esm/Row.js +49 -37
  87. package/dist/esm/SearchBar/style/index.js +1 -1
  88. package/dist/esm/SearchBar.js +110 -120
  89. package/dist/esm/ShortPassword/style/index.js +0 -1
  90. package/dist/esm/ShortPassword.js +120 -116
  91. package/dist/esm/SideNavBar.js +38 -28
  92. package/dist/esm/SideNavBarItem.js +31 -14
  93. package/dist/esm/Signature.js +65 -61
  94. package/dist/esm/Skeleton.js +48 -40
  95. package/dist/esm/Step/style/index.js +1 -1
  96. package/dist/esm/Step.js +49 -49
  97. package/dist/esm/Steps.js +37 -23
  98. package/dist/esm/Sticky.js +111 -120
  99. package/dist/esm/SubSideNavBar.js +50 -38
  100. package/dist/esm/Swipe.js +75 -63
  101. package/dist/esm/Swiper.js +171 -206
  102. package/dist/esm/SwiperItem.js +39 -22
  103. package/dist/esm/Switch.js +46 -37
  104. package/dist/esm/TabPane.js +8 -6
  105. package/dist/esm/Tabbar.js +47 -39
  106. package/dist/esm/TabbarItem/style/index.js +1 -1
  107. package/dist/esm/TabbarItem.js +50 -52
  108. package/dist/esm/Table/style/index.js +1 -1
  109. package/dist/esm/Table.js +70 -70
  110. package/dist/esm/Tabs/style/index.js +1 -2
  111. package/dist/esm/Tabs.js +11 -9
  112. package/dist/esm/Tag/style/index.js +1 -1
  113. package/dist/esm/Tag.js +69 -70
  114. package/dist/esm/TextArea.js +70 -64
  115. package/dist/esm/TimeDetail.js +47 -38
  116. package/dist/esm/TimePannel.js +35 -19
  117. package/dist/esm/TimeSelect.js +60 -68
  118. package/dist/esm/Toast/style/index.js +1 -1
  119. package/dist/esm/Toast.js +126 -98
  120. package/dist/esm/TrendArrow/style/index.js +1 -1
  121. package/dist/esm/TrendArrow.js +59 -55
  122. package/dist/esm/Uploader/style/index.js +0 -1
  123. package/dist/esm/Uploader.js +195 -246
  124. package/dist/esm/UserContext.js +5 -0
  125. package/dist/esm/UserContext2.js +5 -0
  126. package/dist/esm/UserContext3.js +5 -0
  127. package/dist/esm/Video.js +49 -39
  128. package/dist/esm/VirtualList.js +111 -146
  129. package/dist/esm/WaterMark.js +57 -60
  130. package/dist/esm/bem.js +10 -0
  131. package/dist/esm/cellgroup2.js +49 -0
  132. package/dist/esm/checkbox2.js +145 -0
  133. package/dist/esm/{date-c7aad4c0.js → date.js} +13 -11
  134. package/dist/esm/{formitem-8a73a5fb.js → formitem2.js} +83 -50
  135. package/dist/esm/get-scroll-parent.js +26 -0
  136. package/dist/esm/griditem2.js +96 -0
  137. package/dist/esm/index.js +14 -0
  138. package/dist/esm/nutui-react.es.js +188 -94
  139. package/dist/esm/offsetContext.js +19 -0
  140. package/dist/esm/overlay2.js +98 -0
  141. package/dist/esm/px-check.js +6 -0
  142. package/dist/esm/radio2.js +129 -0
  143. package/dist/esm/render.js +95 -0
  144. package/dist/esm/tabpane2.js +44 -0
  145. package/dist/esm/tabs2.js +175 -0
  146. package/dist/esm/typings.js +7 -0
  147. package/dist/esm/use-client-rect.js +32 -0
  148. package/dist/esm/use-props-value.js +18 -0
  149. package/dist/esm/use-touch.js +74 -0
  150. package/dist/locales/base.d.ts +2 -2
  151. package/dist/locales/base.js +1 -1
  152. package/dist/locales/en-US.js +3 -3
  153. package/dist/locales/id-ID.js +3 -3
  154. package/dist/locales/zh-CN.js +3 -3
  155. package/dist/locales/zh-TW.js +3 -3
  156. package/dist/locales/zh-UG.js +3 -3
  157. package/dist/nutui.react.mjs +8389 -4901
  158. package/dist/nutui.react.umd.js +8390 -4902
  159. package/dist/packages/actionsheet/actionsheet.scss +10 -2
  160. package/dist/packages/audio/audio.scss +2 -15
  161. package/dist/packages/backtop/backtop.scss +0 -8
  162. package/dist/packages/badge/badge.scss +3 -4
  163. package/dist/packages/button/button.scss +80 -93
  164. package/dist/packages/calendar/calendar.scss +0 -30
  165. package/dist/packages/cell/cell.scss +18 -90
  166. package/dist/packages/cellgroup/cellgroup.scss +26 -20
  167. package/dist/packages/collapseitem/collapseitem.scss +0 -1
  168. package/dist/packages/dialog/dialog.scss +1 -1
  169. package/dist/packages/divider/divider.scss +3 -17
  170. package/dist/packages/grid/grid.scss +1 -0
  171. package/dist/packages/griditem/griditem.scss +2 -17
  172. package/dist/packages/icon/icon.scss +0 -132
  173. package/dist/packages/image/image.scss +0 -12
  174. package/dist/packages/indicator/indicator.scss +21 -39
  175. package/dist/packages/infiniteloading/infiniteloading.scss +4 -12
  176. package/dist/packages/input/input.scss +4 -0
  177. package/dist/packages/inputnumber/inputnumber.scss +10 -26
  178. package/dist/packages/menuitem/menuitem.scss +2 -0
  179. package/dist/packages/navbar/navbar.scss +4 -5
  180. package/dist/packages/overlay/overlay.scss +0 -19
  181. package/dist/packages/picker/picker.scss +97 -103
  182. package/dist/packages/popup/popup.scss +0 -16
  183. package/dist/packages/progress/progress.scss +0 -1
  184. package/dist/packages/radio/radio.scss +8 -0
  185. package/dist/packages/rate/rate.scss +29 -6
  186. package/dist/packages/row/row.scss +13 -31
  187. package/dist/packages/searchbar/searchbar.scss +0 -1
  188. package/dist/packages/shortpassword/shortpassword.scss +4 -1
  189. package/dist/packages/sidenavbar/sidenavbar.scss +0 -19
  190. package/dist/packages/step/step.scss +0 -1
  191. package/dist/packages/sticky/sticky.scss +1 -1
  192. package/dist/packages/swiper/swiper.scss +8 -0
  193. package/dist/packages/tabbaritem/tabbaritem.scss +0 -1
  194. package/dist/packages/table/table.scss +0 -1
  195. package/dist/packages/tag/tag.scss +9 -2
  196. package/dist/packages/timedetail/timedetail.scss +9 -3
  197. package/dist/packages/timeselect/timeselect.scss +1 -1
  198. package/dist/packages/toast/toast.scss +0 -1
  199. package/dist/packages/uploader/uploader.scss +2 -28
  200. package/dist/style.css +1 -1
  201. package/dist/style.mjs +1 -1
  202. package/dist/styles/font-jmapp/config.json +175 -0
  203. package/dist/styles/font-jmapp/demo.css +539 -0
  204. package/dist/styles/font-jmapp/demo_index.html +1821 -0
  205. package/dist/styles/font-jmapp/iconfont.css +299 -0
  206. package/dist/styles/font-jmapp/iconfont.eot +0 -0
  207. package/dist/styles/font-jmapp/iconfont.js +68 -0
  208. package/dist/styles/font-jmapp/iconfont.json +506 -0
  209. package/dist/styles/font-jmapp/iconfont.svg +356 -0
  210. package/dist/styles/font-jmapp/iconfont.ttf +0 -0
  211. package/dist/styles/font-jmapp/iconfont.woff +0 -0
  212. package/dist/styles/font-jmapp/iconfont.woff2 +0 -0
  213. package/dist/styles/theme-default.scss +1 -0
  214. package/dist/styles/theme-jmapp.scss +41 -0
  215. package/dist/styles/themes/default.scss +0 -1
  216. package/dist/styles/variables-jmapp.scss +2601 -0
  217. package/dist/styles/variables.scss +49 -73
  218. package/dist/types/index.d.ts +169 -266
  219. package/package.json +23 -154
  220. package/dist/esm/AvatarContext-15733596.js +0 -3
  221. package/dist/esm/Icon/style/index.js +0 -4
  222. package/dist/esm/UserContext-101ad4a4.js +0 -3
  223. package/dist/esm/UserContext-2629d479.js +0 -3
  224. package/dist/esm/UserContext-b33bcf21.js +0 -3
  225. package/dist/esm/bem-3b438e61.js +0 -8
  226. package/dist/esm/cellgroup-fcc72767.js +0 -34
  227. package/dist/esm/checkbox-44e13cd0.js +0 -137
  228. package/dist/esm/get-scroll-parent-5f85dee8.js +0 -24
  229. package/dist/esm/grid.context-2ee27d95.js +0 -6
  230. package/dist/esm/icon-4ef1581c.js +0 -70
  231. package/dist/esm/index-030b7245.js +0 -11
  232. package/dist/esm/offsetContext-3ab00d40.js +0 -16
  233. package/dist/esm/overlay-de6c79d5.js +0 -83
  234. package/dist/esm/radio-9f141e6b.js +0 -118
  235. package/dist/esm/render-bbebb760.js +0 -79
  236. package/dist/esm/tabpane-01075e6c.js +0 -29
  237. package/dist/esm/tabs-e1b4e4b1.js +0 -181
  238. package/dist/esm/typings-f27b58f4.js +0 -8
  239. package/dist/esm/useClientRect-56bb675b.js +0 -39
  240. 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) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5
- import React__default, { useState, useEffect, useRef } from 'react';
6
- import { useConfig } from './ConfigProvider.js';
7
- import Icon from './Icon.js';
8
- var defaultProps = {
9
- fit: 'fill',
10
- position: 'center',
11
- alt: '',
12
- width: 'center',
13
- height: '',
14
- round: false,
15
- showError: true,
16
- showLoading: true,
17
- isLazy: false
18
- };
19
- var Image = function Image(props) {
20
- useConfig();
21
- var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),
22
- children = _defaultProps$props.children,
23
- className = _defaultProps$props.className,
24
- style = _defaultProps$props.style,
25
- src = _defaultProps$props.src,
26
- fit = _defaultProps$props.fit,
27
- position = _defaultProps$props.position,
28
- alt = _defaultProps$props.alt,
29
- width = _defaultProps$props.width,
30
- height = _defaultProps$props.height,
31
- round = _defaultProps$props.round,
32
- radius = _defaultProps$props.radius,
33
- showError = _defaultProps$props.showError,
34
- showLoading = _defaultProps$props.showLoading,
35
- slotError = _defaultProps$props.slotError,
36
- slotLoding = _defaultProps$props.slotLoding,
37
- isLazy = _defaultProps$props.isLazy,
38
- loadingImg = _defaultProps$props.loadingImg,
39
- errorImg = _defaultProps$props.errorImg,
40
- onClick = _defaultProps$props.onClick,
41
- onLoad = _defaultProps$props.onLoad,
42
- onError = _defaultProps$props.onError;
43
- var _useState = useState(true),
44
- _useState2 = _slicedToArray(_useState, 2),
45
- loading = _useState2[0],
46
- setLoading = _useState2[1];
47
- var _useState3 = useState(false),
48
- _useState4 = _slicedToArray(_useState3, 2),
49
- isError = _useState4[0],
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
- setLoading(true);
52
+ setInnerLoading(true);
60
53
  }
61
54
  }, [src]);
62
- // 图片加载
63
- var load = function load() {
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
- setLoading(false);
61
+ setInnerLoading(false);
71
62
  onError && onError();
72
63
  };
73
- var pxCheck = function pxCheck(value) {
74
- return Number.isNaN(Number(value)) ? String(value) : "".concat(value, "px");
75
- };
76
- var stylebox = {
77
- height: height ? pxCheck(height) : '',
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 styles = _objectSpread({
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 initObserver() {
89
- var imgs = document.querySelectorAll('.nut-img.lazyload');
75
+ var initObserver = function initObserver2() {
76
+ var images = document.querySelectorAll(".nut-img.lazyload");
90
77
  var options = {
91
78
  threshold: [0],
92
- rootMargin: '0px' // 对视口进行收缩和扩张
79
+ rootMargin: "0px"
80
+ // 对视口进行收缩和扩张
93
81
  };
94
- // 监听dom是否在视口内
95
- observer.current = new IntersectionObserver(function (entires, self) {
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('data-src');
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
- imgs.forEach(function (item) {
96
+ images.forEach(function(item) {
113
97
  observer.current.observe(item);
114
98
  });
115
99
  };
116
- // 使用disconnect将取消的Observer实例中的所有监听
117
- var resetObserver = function resetObserver() {
100
+ var resetObserver = function resetObserver2() {
118
101
  observer.current.disconnect && observer.current.disconnect();
119
102
  };
120
- useEffect(function () {
121
- isLazy && initObserver();
122
- return function () {
123
- isLazy && resetObserver();
103
+ useEffect(function() {
104
+ lazy && initObserver();
105
+ return function() {
106
+ lazy && resetObserver();
124
107
  };
125
- }, [isLazy]);
126
- var loadingBg = {
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: "nut-image ".concat(round ? 'nut-image-round' : '', " ").concat(className || ''),
137
- style: stylebox,
138
- onClick: function onClick(e) {
143
+ className: classNames(classPrefix, className),
144
+ style: containerStyle,
145
+ onClick: function onClick2(e) {
139
146
  imageClick(e);
140
147
  }
141
- }, isLazy ? React__default.createElement("img", {
148
+ }, lazy ? React__default.createElement("img", {
149
+ ref: imgRef,
142
150
  className: "nut-img lazyload",
143
- style: styles,
151
+ style: imgStyle,
144
152
  "data-src": _src,
145
- alt: alt,
153
+ alt,
146
154
  loading: "lazy",
147
- onLoad: load,
148
- onError: error
155
+ onLoad: handleLoad,
156
+ onError: handleError
149
157
  }) : React__default.createElement("img", {
158
+ ref: imgRef,
150
159
  className: "nut-img",
151
- style: styles,
160
+ style: imgStyle,
152
161
  src: _src,
153
- alt: alt,
154
- onLoad: load,
155
- onError: error
156
- }), loading && showLoading ? React__default.createElement("div", {
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 = 'NutImage';
170
- export { Image as default };
168
+ Image.displayName = "NutImage";
169
+ export {
170
+ Image as default
171
+ };
@@ -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) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5
- import React__default, { useRef, useState, useEffect } from 'react';
6
- import Popup from './Popup.js';
7
- import Video from './Video.js';
8
- import Swiper from './Swiper.js';
9
- import SwiperItem from './SwiperItem.js';
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: 3000,
33
+ autoplay: 3e3,
15
34
  initNo: 1,
16
35
  contentClose: false,
17
36
  paginationVisible: false,
18
- paginationColor: '#fff',
19
- onClose: function onClose() {}
37
+ paginationColor: "#fff",
38
+ onClose: function onClose() {
39
+ }
20
40
  };
21
- var ImagePreview = function ImagePreview(props) {
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
- _useState2 = _slicedToArray(_useState, 2),
34
- innerNo = _useState2[0],
35
- setInnerNo = _useState2[1];
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
- scale: 1,
50
- moveable: false
51
- }),
52
- _useState10 = _slicedToArray(_useState9, 2),
53
- store = _useState10[0],
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 _store = store;
67
- if (_store.scale > 1) {
68
- _store.scale = 1;
69
- } else if (_store.scale === 1) {
70
- _store.scale = 2;
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 onTouchMove(event) {
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 onTouchEnd() {
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 init() {
130
- document.addEventListener('touchmove', onTouchMove);
131
- document.addEventListener('touchend', onTouchEnd);
132
- document.addEventListener('touchcancel', onTouchEnd);
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 !== undefined) {
124
+ useEffect(function() {
125
+ if (innerNo !== void 0) {
142
126
  setActive(innerNo);
143
127
  }
144
- if (show !== undefined) {
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 scaleNow() {
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 onCloseInner() {
140
+ var onCloseInner = function onCloseInner2() {
157
141
  setShowPop(false);
158
142
  setActive(1);
159
143
  scaleNow();
160
- onClose && onClose();
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 slideChangeEnd(page) {
152
+ var slideChangeEnd = function slideChangeEnd2(page) {
172
153
  setActive(page + 1);
173
154
  };
174
- var closeOnImg = function closeOnImg() {
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
- popClass: "custom-pop",
162
+ className: "custom-pop",
183
163
  style: {
184
- width: '100%'
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: 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 ? 'block' : 'none'
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: paginationColor,
204
- paginationVisible: paginationVisible
205
- }, (videos && videos.length > 0 ? videos.map(function (item, index) {
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 (item, index) {
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 = 'NutImagePreview';
226
- export { ImagePreview as default };
205
+ ImagePreview.displayName = "NutImagePreview";
206
+ export {
207
+ ImagePreview as default
208
+ };