@douyinfe/semi-ui 2.19.2-alpha.0 → 2.20.0-beta.0

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 (139) hide show
  1. package/dist/css/semi.css +243 -968
  2. package/dist/css/semi.min.css +1 -1
  3. package/dist/umd/semi-ui.js +3449 -452
  4. package/dist/umd/semi-ui.js.map +1 -1
  5. package/dist/umd/semi-ui.min.js +1 -1
  6. package/dist/umd/semi-ui.min.js.map +1 -1
  7. package/lib/cjs/button/Button.d.ts +1 -1
  8. package/lib/cjs/button/index.d.ts +1 -1
  9. package/lib/cjs/carousel/CarouselIndicator.d.ts +1 -1
  10. package/lib/cjs/carousel/index.d.ts +1 -1
  11. package/lib/cjs/datePicker/dateInput.d.ts +1 -1
  12. package/lib/cjs/datePicker/datePicker.d.ts +1 -1
  13. package/lib/cjs/datePicker/monthsGrid.d.ts +1 -1
  14. package/lib/cjs/image/image.d.ts +48 -0
  15. package/lib/cjs/image/image.js +248 -0
  16. package/lib/cjs/image/index.d.ts +6 -0
  17. package/lib/cjs/image/index.js +29 -0
  18. package/lib/cjs/image/interface.d.ts +178 -0
  19. package/lib/cjs/image/interface.js +5 -0
  20. package/lib/cjs/image/preview.d.ts +81 -0
  21. package/lib/cjs/image/preview.js +249 -0
  22. package/lib/cjs/image/previewContext.d.ts +12 -0
  23. package/lib/cjs/image/previewContext.js +11 -0
  24. package/lib/cjs/image/previewFooter.d.ts +62 -0
  25. package/lib/cjs/image/previewFooter.js +337 -0
  26. package/lib/cjs/image/previewHeader.d.ts +4 -0
  27. package/lib/cjs/image/previewHeader.js +57 -0
  28. package/lib/cjs/image/previewImage.d.ts +49 -0
  29. package/lib/cjs/image/previewImage.js +253 -0
  30. package/lib/cjs/image/previewInner.d.ts +87 -0
  31. package/lib/cjs/image/previewInner.js +443 -0
  32. package/lib/cjs/index.d.ts +2 -0
  33. package/lib/cjs/index.js +14 -0
  34. package/lib/cjs/locale/interface.d.ts +13 -0
  35. package/lib/cjs/locale/source/ar.js +13 -0
  36. package/lib/cjs/locale/source/de.js +13 -0
  37. package/lib/cjs/locale/source/en_GB.js +13 -0
  38. package/lib/cjs/locale/source/en_US.js +13 -0
  39. package/lib/cjs/locale/source/es.js +13 -0
  40. package/lib/cjs/locale/source/fr.js +13 -0
  41. package/lib/cjs/locale/source/id_ID.js +13 -0
  42. package/lib/cjs/locale/source/it.js +13 -0
  43. package/lib/cjs/locale/source/ja_JP.js +13 -0
  44. package/lib/cjs/locale/source/ko_KR.js +13 -0
  45. package/lib/cjs/locale/source/ms_MY.js +13 -0
  46. package/lib/cjs/locale/source/pt_BR.js +13 -0
  47. package/lib/cjs/locale/source/ru_RU.js +13 -0
  48. package/lib/cjs/locale/source/th_TH.js +13 -0
  49. package/lib/cjs/locale/source/tr_TR.js +13 -0
  50. package/lib/cjs/locale/source/vi_VN.js +13 -0
  51. package/lib/cjs/locale/source/zh_CN.js +13 -0
  52. package/lib/cjs/locale/source/zh_TW.js +13 -0
  53. package/lib/cjs/progress/index.d.ts +10 -2
  54. package/lib/cjs/progress/index.js +37 -8
  55. package/lib/cjs/radio/radio.d.ts +1 -1
  56. package/lib/cjs/radio/radioGroup.d.ts +1 -1
  57. package/lib/cjs/skeleton/item.d.ts +1 -0
  58. package/lib/cjs/skeleton/item.js +10 -4
  59. package/lib/cjs/tag/index.js +5 -1
  60. package/lib/cjs/tag/interface.d.ts +2 -0
  61. package/lib/cjs/timePicker/TimePicker.d.ts +2 -2
  62. package/lib/cjs/timePicker/TimeShape.d.ts +1 -1
  63. package/lib/cjs/timePicker/index.d.ts +2 -2
  64. package/lib/cjs/toast/index.d.ts +9 -0
  65. package/lib/cjs/toast/index.js +50 -10
  66. package/lib/cjs/toast/toast.d.ts +1 -0
  67. package/lib/cjs/toast/toast.js +4 -0
  68. package/lib/cjs/typography/base.d.ts +1 -1
  69. package/lib/cjs/typography/paragraph.d.ts +1 -1
  70. package/lib/cjs/typography/text.d.ts +1 -1
  71. package/lib/cjs/typography/title.d.ts +2 -2
  72. package/lib/cjs/upload/index.d.ts +1 -1
  73. package/lib/es/button/Button.d.ts +1 -1
  74. package/lib/es/button/index.d.ts +1 -1
  75. package/lib/es/carousel/CarouselIndicator.d.ts +1 -1
  76. package/lib/es/carousel/index.d.ts +1 -1
  77. package/lib/es/datePicker/dateInput.d.ts +1 -1
  78. package/lib/es/datePicker/datePicker.d.ts +1 -1
  79. package/lib/es/datePicker/monthsGrid.d.ts +1 -1
  80. package/lib/es/image/image.d.ts +48 -0
  81. package/lib/es/image/image.js +224 -0
  82. package/lib/es/image/index.d.ts +6 -0
  83. package/lib/es/image/index.js +5 -0
  84. package/lib/es/image/interface.d.ts +178 -0
  85. package/lib/es/image/interface.js +1 -0
  86. package/lib/es/image/preview.d.ts +81 -0
  87. package/lib/es/image/preview.js +229 -0
  88. package/lib/es/image/previewContext.d.ts +12 -0
  89. package/lib/es/image/previewContext.js +2 -0
  90. package/lib/es/image/previewFooter.d.ts +62 -0
  91. package/lib/es/image/previewFooter.js +301 -0
  92. package/lib/es/image/previewHeader.d.ts +4 -0
  93. package/lib/es/image/previewHeader.js +38 -0
  94. package/lib/es/image/previewImage.d.ts +49 -0
  95. package/lib/es/image/previewImage.js +235 -0
  96. package/lib/es/image/previewInner.d.ts +87 -0
  97. package/lib/es/image/previewInner.js +419 -0
  98. package/lib/es/index.d.ts +2 -0
  99. package/lib/es/index.js +3 -1
  100. package/lib/es/locale/interface.d.ts +13 -0
  101. package/lib/es/locale/source/ar.js +13 -0
  102. package/lib/es/locale/source/de.js +13 -0
  103. package/lib/es/locale/source/en_GB.js +13 -0
  104. package/lib/es/locale/source/en_US.js +13 -0
  105. package/lib/es/locale/source/es.js +13 -0
  106. package/lib/es/locale/source/fr.js +13 -0
  107. package/lib/es/locale/source/id_ID.js +13 -0
  108. package/lib/es/locale/source/it.js +13 -0
  109. package/lib/es/locale/source/ja_JP.js +13 -0
  110. package/lib/es/locale/source/ko_KR.js +13 -0
  111. package/lib/es/locale/source/ms_MY.js +13 -0
  112. package/lib/es/locale/source/pt_BR.js +13 -0
  113. package/lib/es/locale/source/ru_RU.js +13 -0
  114. package/lib/es/locale/source/th_TH.js +13 -0
  115. package/lib/es/locale/source/tr_TR.js +13 -0
  116. package/lib/es/locale/source/vi_VN.js +13 -0
  117. package/lib/es/locale/source/zh_CN.js +13 -0
  118. package/lib/es/locale/source/zh_TW.js +13 -0
  119. package/lib/es/progress/index.d.ts +10 -2
  120. package/lib/es/progress/index.js +36 -8
  121. package/lib/es/radio/radio.d.ts +1 -1
  122. package/lib/es/radio/radioGroup.d.ts +1 -1
  123. package/lib/es/skeleton/item.d.ts +1 -0
  124. package/lib/es/skeleton/item.js +10 -4
  125. package/lib/es/tag/index.js +5 -1
  126. package/lib/es/tag/interface.d.ts +2 -0
  127. package/lib/es/timePicker/TimePicker.d.ts +2 -2
  128. package/lib/es/timePicker/TimeShape.d.ts +1 -1
  129. package/lib/es/timePicker/index.d.ts +2 -2
  130. package/lib/es/toast/index.d.ts +9 -0
  131. package/lib/es/toast/index.js +50 -10
  132. package/lib/es/toast/toast.d.ts +1 -0
  133. package/lib/es/toast/toast.js +4 -0
  134. package/lib/es/typography/base.d.ts +1 -1
  135. package/lib/es/typography/paragraph.d.ts +1 -1
  136. package/lib/es/typography/text.d.ts +1 -1
  137. package/lib/es/typography/title.d.ts +2 -2
  138. package/lib/es/upload/index.d.ts +1 -1
  139. package/package.json +8 -8
@@ -41,6 +41,7 @@ declare class Toast extends BaseComponent<ToastReactProps, ToastState> {
41
41
  close(e: React.MouseEvent): void;
42
42
  clearCloseTimer: () => void;
43
43
  startCloseTimer: () => void;
44
+ restartCloseTimer: () => void;
44
45
  renderIcon(): string | number | true | React.ReactElement<any, string | React.JSXElementConstructor<any>> | React.ReactFragment;
45
46
  render(): JSX.Element;
46
47
  }
@@ -44,6 +44,10 @@ class Toast extends _baseComponent.default {
44
44
  this.foundation.startCloseTimer_();
45
45
  };
46
46
 
47
+ this.restartCloseTimer = () => {
48
+ this.foundation.restartCloseTimer();
49
+ };
50
+
47
51
  this.state = {};
48
52
  this.foundation = new _toastFoundation.default(this.adapter);
49
53
  }
@@ -64,7 +64,7 @@ export default class Base extends Component<BaseTypographyProps, BaseTypographyS
64
64
  spacing: PropTypes.Requireable<"normal" | "extended">;
65
65
  strong: PropTypes.Requireable<boolean>;
66
66
  size: PropTypes.Requireable<"small" | "normal">;
67
- type: PropTypes.Requireable<"warning" | "success" | "primary" | "secondary" | "tertiary" | "danger" | "quaternary">;
67
+ type: PropTypes.Requireable<"warning" | "success" | "primary" | "tertiary" | "secondary" | "danger" | "quaternary">;
68
68
  style: PropTypes.Requireable<object>;
69
69
  className: PropTypes.Requireable<string>;
70
70
  icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
@@ -29,7 +29,7 @@ export default class Paragraph extends PureComponent<ParagraphProps> {
29
29
  link: PropTypes.Requireable<boolean | object>;
30
30
  underline: PropTypes.Requireable<boolean>;
31
31
  strong: PropTypes.Requireable<boolean>;
32
- type: PropTypes.Requireable<"warning" | "success" | "primary" | "secondary" | "tertiary" | "danger" | "quaternary">;
32
+ type: PropTypes.Requireable<"warning" | "success" | "primary" | "tertiary" | "secondary" | "danger" | "quaternary">;
33
33
  size: PropTypes.Requireable<"small" | "normal">;
34
34
  spacing: PropTypes.Requireable<"normal" | "extended">;
35
35
  style: PropTypes.Requireable<object>;
@@ -32,7 +32,7 @@ export default class Text extends PureComponent<TextProps> {
32
32
  underline: PropTypes.Requireable<boolean>;
33
33
  link: PropTypes.Requireable<boolean | object>;
34
34
  strong: PropTypes.Requireable<boolean>;
35
- type: PropTypes.Requireable<"warning" | "success" | "primary" | "secondary" | "tertiary" | "danger" | "quaternary">;
35
+ type: PropTypes.Requireable<"warning" | "success" | "primary" | "tertiary" | "secondary" | "danger" | "quaternary">;
36
36
  size: PropTypes.Requireable<"small" | "normal">;
37
37
  style: PropTypes.Requireable<object>;
38
38
  className: PropTypes.Requireable<string>;
@@ -36,8 +36,8 @@ export default class Title extends PureComponent<TitleProps> {
36
36
  link: PropTypes.Requireable<boolean | object>;
37
37
  underline: PropTypes.Requireable<boolean>;
38
38
  strong: PropTypes.Requireable<boolean>;
39
- type: PropTypes.Requireable<"warning" | "success" | "primary" | "secondary" | "tertiary" | "danger" | "quaternary">;
40
- heading: PropTypes.Requireable<1 | 2 | 3 | 4 | 6 | 5>;
39
+ type: PropTypes.Requireable<"warning" | "success" | "primary" | "tertiary" | "secondary" | "danger" | "quaternary">;
40
+ heading: PropTypes.Requireable<1 | 2 | 3 | 4 | 5 | 6>;
41
41
  style: PropTypes.Requireable<object>;
42
42
  className: PropTypes.Requireable<string>;
43
43
  component: PropTypes.Requireable<string>;
@@ -140,7 +140,7 @@ declare class Upload extends BaseComponent<UploadProps, UploadState> {
140
140
  style: PropTypes.Requireable<object>;
141
141
  timeout: PropTypes.Requireable<number>;
142
142
  transformFile: PropTypes.Requireable<(...args: any[]) => any>;
143
- uploadTrigger: PropTypes.Requireable<"custom" | "auto">;
143
+ uploadTrigger: PropTypes.Requireable<"auto" | "custom">;
144
144
  validateMessage: PropTypes.Requireable<PropTypes.ReactNodeLike>;
145
145
  validateStatus: PropTypes.Requireable<"default" | "error" | "warning" | "success">;
146
146
  withCredentials: PropTypes.Requireable<boolean>;
@@ -48,7 +48,7 @@ export default class Button extends PureComponent<ButtonProps> {
48
48
  prefixCls: PropTypes.Requireable<string>;
49
49
  style: PropTypes.Requireable<object>;
50
50
  size: PropTypes.Requireable<"default" | "small" | "large">;
51
- type: PropTypes.Requireable<"warning" | "primary" | "secondary" | "tertiary" | "danger">;
51
+ type: PropTypes.Requireable<"warning" | "primary" | "tertiary" | "secondary" | "danger">;
52
52
  block: PropTypes.Requireable<boolean>;
53
53
  onClick: PropTypes.Requireable<(...args: any[]) => any>;
54
54
  onMouseDown: PropTypes.Requireable<(...args: any[]) => any>;
@@ -23,7 +23,7 @@ declare class Button extends React.PureComponent<ButtonProps> {
23
23
  onMouseLeave: import("prop-types").Requireable<(...args: any[]) => any>;
24
24
  disabled: import("prop-types").Requireable<boolean>;
25
25
  size: import("prop-types").Requireable<"default" | "small" | "large">;
26
- type: import("prop-types").Requireable<"warning" | "primary" | "secondary" | "tertiary" | "danger">;
26
+ type: import("prop-types").Requireable<"warning" | "primary" | "tertiary" | "secondary" | "danger">;
27
27
  block: import("prop-types").Requireable<boolean>;
28
28
  onClick: import("prop-types").Requireable<(...args: any[]) => any>;
29
29
  onMouseDown: import("prop-types").Requireable<(...args: any[]) => any>;
@@ -8,7 +8,7 @@ declare class CarouselIndicator extends React.PureComponent<CarouselIndicatorPro
8
8
  position: PropTypes.Requireable<"left" | "right" | "center">;
9
9
  size: PropTypes.Requireable<"small" | "medium">;
10
10
  style: PropTypes.Requireable<object>;
11
- theme: PropTypes.Requireable<"dark" | "light" | "primary">;
11
+ theme: PropTypes.Requireable<"primary" | "dark" | "light">;
12
12
  total: PropTypes.Requireable<number>;
13
13
  onIndicatorChange: PropTypes.Requireable<(...args: any[]) => any>;
14
14
  type: PropTypes.Requireable<"line" | "dot" | "columnar">;
@@ -22,7 +22,7 @@ declare class Carousel extends BaseComponent<CarouselProps, CarouselState> {
22
22
  indicatorPosition: PropTypes.Requireable<"left" | "right" | "center">;
23
23
  indicatorSize: PropTypes.Requireable<"small" | "medium">;
24
24
  indicatorType: PropTypes.Requireable<"line" | "dot" | "columnar">;
25
- theme: PropTypes.Requireable<"dark" | "light" | "primary">;
25
+ theme: PropTypes.Requireable<"primary" | "dark" | "light">;
26
26
  onChange: PropTypes.Requireable<(...args: any[]) => any>;
27
27
  arrowType: PropTypes.Requireable<"hover" | "always">;
28
28
  showArrow: PropTypes.Requireable<boolean>;
@@ -26,7 +26,7 @@ export default class DateInput extends BaseComponent<DateInputProps, {}> {
26
26
  onFocus: PropTypes.Requireable<(...args: any[]) => any>;
27
27
  value: PropTypes.Requireable<any[]>;
28
28
  disabled: PropTypes.Requireable<boolean>;
29
- type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "dateTimeRange">;
29
+ type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "dateTimeRange">;
30
30
  showClear: PropTypes.Requireable<boolean>;
31
31
  format: PropTypes.Requireable<string>;
32
32
  inputStyle: PropTypes.Requireable<object>;
@@ -41,7 +41,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
41
41
  'aria-invalid': PropTypes.Requireable<boolean>;
42
42
  'aria-labelledby': PropTypes.Requireable<string>;
43
43
  'aria-required': PropTypes.Requireable<boolean>;
44
- type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "dateTimeRange">;
44
+ type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "dateTimeRange">;
45
45
  size: PropTypes.Requireable<"default" | "small" | "large">;
46
46
  density: PropTypes.Requireable<"default" | "compact">;
47
47
  defaultValue: PropTypes.Requireable<string | number | object>;
@@ -17,7 +17,7 @@ export interface MonthsGridProps extends MonthsGridFoundationProps, BaseProps {
17
17
  export declare type MonthsGridState = MonthsGridFoundationState;
18
18
  export default class MonthsGrid extends BaseComponent<MonthsGridProps, MonthsGridState> {
19
19
  static propTypes: {
20
- type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "dateTimeRange">;
20
+ type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "dateTimeRange">;
21
21
  defaultValue: PropTypes.Requireable<string | number | object>;
22
22
  defaultPickerValue: PropTypes.Requireable<string | number | object>;
23
23
  multiple: PropTypes.Requireable<boolean>;
@@ -0,0 +1,48 @@
1
+ import React from "react";
2
+ import BaseComponent from "../_base/baseComponent";
3
+ import { ImageProps, ImageStates } from "./interface";
4
+ import PropTypes from "prop-types";
5
+ import '@douyinfe/semi-foundation/lib/es/image/image.css';
6
+ import { PreviewContextProps } from "./previewContext";
7
+ import ImageFoundation, { ImageAdapter } from '@douyinfe/semi-foundation/lib/es/image/imageFoundation';
8
+ export default class Image extends BaseComponent<ImageProps, ImageStates> {
9
+ static isSemiImage: boolean;
10
+ static contextType: React.Context<PreviewContextProps>;
11
+ static propTypes: {
12
+ style: PropTypes.Requireable<object>;
13
+ className: PropTypes.Requireable<string>;
14
+ src: PropTypes.Requireable<string>;
15
+ width: PropTypes.Requireable<string | number>;
16
+ height: PropTypes.Requireable<string | number>;
17
+ alt: PropTypes.Requireable<string>;
18
+ placeholder: PropTypes.Requireable<PropTypes.ReactNodeLike>;
19
+ fallback: PropTypes.Requireable<PropTypes.ReactNodeLike>;
20
+ preview: PropTypes.Requireable<boolean | object>;
21
+ onLoad: PropTypes.Requireable<(...args: any[]) => any>;
22
+ onError: PropTypes.Requireable<(...args: any[]) => any>;
23
+ crossOrigin: PropTypes.Requireable<string>;
24
+ imageID: PropTypes.Requireable<number>;
25
+ };
26
+ static defaultProps: {
27
+ preview: boolean;
28
+ };
29
+ get adapter(): ImageAdapter<ImageProps, ImageStates>;
30
+ context: PreviewContextProps;
31
+ foundation: ImageFoundation;
32
+ constructor(props: ImageProps);
33
+ static getDerivedStateFromProps(props: ImageProps, state: ImageStates): Partial<ImageStates>;
34
+ isInGroup(): boolean;
35
+ isLazyLoad(): boolean;
36
+ handleClick: (e: any) => void;
37
+ handleLoaded: (e: any) => void;
38
+ handleError: (e: any) => void;
39
+ handlePreviewVisibleChange: (visible: boolean) => void;
40
+ renderDefaultLoading: () => JSX.Element;
41
+ renderDefaultError: () => JSX.Element;
42
+ renderLoad: () => JSX.Element;
43
+ renderError: () => JSX.Element;
44
+ renderExtra: () => JSX.Element;
45
+ getLocalTextByKey: (key: string) => JSX.Element;
46
+ renderMask: () => JSX.Element;
47
+ render(): JSX.Element;
48
+ }
@@ -0,0 +1,224 @@
1
+ import _isObject from "lodash/isObject";
2
+
3
+ /* eslint-disable jsx-a11y/click-events-have-key-events */
4
+
5
+ /* eslint-disable jsx-a11y/no-static-element-interactions */
6
+ import React from "react";
7
+ import BaseComponent from "../_base/baseComponent";
8
+ import PropTypes from "prop-types";
9
+ import { cssClasses } from '@douyinfe/semi-foundation/lib/es/image/constants';
10
+ import cls from "classnames";
11
+ import { IconUploadError, IconEyeOpened } from "@douyinfe/semi-icons";
12
+ import PreviewInner from "./previewInner";
13
+ import '@douyinfe/semi-foundation/lib/es/image/image.css';
14
+ import { PreviewContext } from "./previewContext";
15
+ import ImageFoundation from '@douyinfe/semi-foundation/lib/es/image/imageFoundation';
16
+ import LocaleConsumer from "../locale/localeConsumer";
17
+ import Skeleton from "../skeleton";
18
+ const prefixCls = cssClasses.PREFIX;
19
+ export default class Image extends BaseComponent {
20
+ constructor(props) {
21
+ super(props);
22
+
23
+ this.handleClick = e => {
24
+ this.foundation.handleClick(e);
25
+ };
26
+
27
+ this.handleLoaded = e => {
28
+ this.foundation.handleLoaded(e);
29
+ };
30
+
31
+ this.handleError = e => {
32
+ this.foundation.handleError(e);
33
+ };
34
+
35
+ this.handlePreviewVisibleChange = visible => {
36
+ this.foundation.handlePreviewVisibleChange(visible);
37
+ };
38
+
39
+ this.renderDefaultLoading = () => {
40
+ const {
41
+ width,
42
+ height
43
+ } = this.props;
44
+ return /*#__PURE__*/React.createElement(Skeleton.Image, {
45
+ style: {
46
+ width,
47
+ height
48
+ }
49
+ });
50
+ };
51
+
52
+ this.renderDefaultError = () => {
53
+ const prefixClsName = "".concat(prefixCls, "-status");
54
+ return /*#__PURE__*/React.createElement("div", {
55
+ className: prefixClsName
56
+ }, /*#__PURE__*/React.createElement(IconUploadError, {
57
+ size: "extra-large"
58
+ }));
59
+ };
60
+
61
+ this.renderLoad = () => {
62
+ const prefixClsName = "".concat(prefixCls, "-status");
63
+ const {
64
+ placeholder
65
+ } = this.props;
66
+ return placeholder ? /*#__PURE__*/React.createElement("div", {
67
+ className: prefixClsName
68
+ }, placeholder) : this.renderDefaultLoading();
69
+ };
70
+
71
+ this.renderError = () => {
72
+ const {
73
+ fallback
74
+ } = this.props;
75
+ const prefixClsName = "".concat(prefixCls, "-status");
76
+ const fallbackNode = typeof fallback === "string" ? /*#__PURE__*/React.createElement("img", {
77
+ style: {
78
+ width: "100%",
79
+ height: "100%"
80
+ },
81
+ src: fallback,
82
+ alt: "fallback"
83
+ }) : fallback;
84
+ return fallback ? /*#__PURE__*/React.createElement("div", {
85
+ className: prefixClsName
86
+ }, fallbackNode) : this.renderDefaultError();
87
+ };
88
+
89
+ this.renderExtra = () => {
90
+ const {
91
+ loadStatus
92
+ } = this.state;
93
+ return /*#__PURE__*/React.createElement("div", {
94
+ className: "".concat(prefixCls, "-overlay")
95
+ }, loadStatus === "error" && this.renderError(), loadStatus === "loading" && this.renderLoad());
96
+ };
97
+
98
+ this.getLocalTextByKey = key => /*#__PURE__*/React.createElement(LocaleConsumer, {
99
+ componentName: "Image"
100
+ }, locale => locale[key]);
101
+
102
+ this.renderMask = () => /*#__PURE__*/React.createElement("div", {
103
+ className: "".concat(prefixCls, "-mask")
104
+ }, /*#__PURE__*/React.createElement("div", {
105
+ className: "".concat(prefixCls, "-mask-info")
106
+ }, /*#__PURE__*/React.createElement(IconEyeOpened, {
107
+ size: "extra-large"
108
+ }), /*#__PURE__*/React.createElement("span", {
109
+ className: "".concat(prefixCls, "-mask-info-text")
110
+ }, this.getLocalTextByKey("preview"))));
111
+
112
+ this.state = {
113
+ src: "",
114
+ loadStatus: "loading",
115
+ previewVisible: false
116
+ };
117
+ this.foundation = new ImageFoundation(this.adapter);
118
+ }
119
+
120
+ get adapter() {
121
+ return Object.assign(Object.assign({}, super.adapter), {
122
+ getIsInGroup: () => this.isInGroup()
123
+ });
124
+ }
125
+
126
+ static getDerivedStateFromProps(props, state) {
127
+ const willUpdateStates = {};
128
+
129
+ if (props.src !== state.src) {
130
+ willUpdateStates.src = props.src;
131
+ willUpdateStates.loadStatus = "loading";
132
+ }
133
+
134
+ return willUpdateStates;
135
+ }
136
+
137
+ isInGroup() {
138
+ return Boolean(this.context && this.context.isGroup);
139
+ }
140
+
141
+ isLazyLoad() {
142
+ if (this.context) {
143
+ return this.context.lazyLoad;
144
+ }
145
+
146
+ return false;
147
+ }
148
+
149
+ render() {
150
+ var _a;
151
+
152
+ const {
153
+ src,
154
+ loadStatus,
155
+ previewVisible
156
+ } = this.state;
157
+ const {
158
+ width,
159
+ height,
160
+ alt,
161
+ style,
162
+ className,
163
+ crossOrigin,
164
+ preview
165
+ } = this.props;
166
+ const outerStyle = Object.assign({
167
+ width,
168
+ height
169
+ }, style);
170
+ const outerCls = cls(prefixCls, className);
171
+ const canPreview = loadStatus === "success" && preview && !this.isInGroup();
172
+ const showPreviewCursor = preview && loadStatus === "success";
173
+ const previewSrc = _isObject(preview) ? (_a = preview.src) !== null && _a !== void 0 ? _a : src : src;
174
+ const previewProps = _isObject(preview) ? preview : {};
175
+ return (
176
+ /*#__PURE__*/
177
+ // eslint-disable jsx-a11y/no-static-element-interactions
178
+ // eslint-disable jsx-a11y/click-events-have-key-events
179
+ React.createElement("div", {
180
+ style: outerStyle,
181
+ className: outerCls,
182
+ onClick: this.handleClick
183
+ }, /*#__PURE__*/React.createElement("img", {
184
+ src: this.isInGroup() && this.isLazyLoad() ? undefined : src,
185
+ "data-src": src,
186
+ alt: alt,
187
+ className: cls("".concat(prefixCls, "-img"), {
188
+ ["".concat(prefixCls, "-img-preview")]: showPreviewCursor,
189
+ ["".concat(prefixCls, "-img-error")]: loadStatus === "error"
190
+ }),
191
+ width: width,
192
+ height: height,
193
+ crossOrigin: crossOrigin,
194
+ onError: this.handleError,
195
+ onLoad: this.handleLoaded
196
+ }), loadStatus !== "success" && this.renderExtra(), canPreview && /*#__PURE__*/React.createElement(PreviewInner, Object.assign({}, previewProps, {
197
+ src: previewSrc,
198
+ visible: previewVisible,
199
+ onVisibleChange: this.handlePreviewVisibleChange
200
+ })))
201
+ );
202
+ }
203
+
204
+ }
205
+ Image.isSemiImage = true;
206
+ Image.contextType = PreviewContext;
207
+ Image.propTypes = {
208
+ style: PropTypes.object,
209
+ className: PropTypes.string,
210
+ src: PropTypes.string,
211
+ width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
212
+ height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
213
+ alt: PropTypes.string,
214
+ placeholder: PropTypes.node,
215
+ fallback: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
216
+ preview: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),
217
+ onLoad: PropTypes.func,
218
+ onError: PropTypes.func,
219
+ crossOrigin: PropTypes.string,
220
+ imageID: PropTypes.number
221
+ };
222
+ Image.defaultProps = {
223
+ preview: true
224
+ };
@@ -0,0 +1,6 @@
1
+ import Image from "./image";
2
+ import PreviewInner from "./previewInner";
3
+ import Preview from "./preview";
4
+ export default Image;
5
+ export { PreviewInner, Preview, };
6
+ export { ImageProps, PreviewImageProps, PreviewProps, } from "./interface";
@@ -0,0 +1,5 @@
1
+ import Image from "./image";
2
+ import PreviewInner from "./previewInner";
3
+ import Preview from "./preview";
4
+ export default Image;
5
+ export { PreviewInner, Preview };
@@ -0,0 +1,178 @@
1
+ import { ReactNode } from "react";
2
+ import { BaseProps } from "_base/baseComponent";
3
+ import React from "react";
4
+ export interface ImageStates {
5
+ src: string;
6
+ loadStatus: "loading" | "success" | "error";
7
+ previewVisible: boolean;
8
+ }
9
+ export interface ImageProps extends BaseProps {
10
+ src?: string;
11
+ width?: string | number;
12
+ height?: string | number;
13
+ alt?: string;
14
+ placeholder?: ReactNode;
15
+ fallback?: string | ReactNode;
16
+ preview?: boolean | PreviewProps;
17
+ onError?: (event: Event) => void;
18
+ onLoad?: (event: Event) => void;
19
+ crossOrigin?: "anonymous" | "use-credentials";
20
+ children?: ReactNode;
21
+ imageID?: number;
22
+ }
23
+ export interface PreviewProps extends BaseProps {
24
+ visible?: boolean;
25
+ src?: string | string[];
26
+ previewTitle?: ReactNode;
27
+ currentIndex?: number;
28
+ defaultIndex?: number;
29
+ defaultVisible?: boolean;
30
+ maskClosable?: boolean;
31
+ closable?: boolean;
32
+ zoomStep?: number;
33
+ infinite?: boolean;
34
+ showTooltip?: boolean;
35
+ closeOnEsc?: boolean;
36
+ prevTip?: string;
37
+ nextTip?: string;
38
+ zoomInTip?: string;
39
+ zoomOutTip?: string;
40
+ rotateTip?: string;
41
+ downloadTip?: string;
42
+ adaptiveTip?: string;
43
+ originTip?: string;
44
+ lazyLoad?: boolean;
45
+ lazyLoadMargin?: string;
46
+ preLoad?: boolean;
47
+ preLoadGap?: number;
48
+ viewerVisibleDelay?: number;
49
+ disableDownload?: boolean;
50
+ zIndex?: number;
51
+ children?: ReactNode;
52
+ renderHeader?: (info: any) => ReactNode;
53
+ renderPreviewMenu?: (props: MenuProps) => ReactNode;
54
+ getPopupContainer?: () => HTMLElement;
55
+ onVisibleChange?: (visible: boolean) => void;
56
+ onChange?: (index: number) => void;
57
+ onClose?: () => void;
58
+ onZoomIn?: (zoom: number) => void;
59
+ onZoomOut?: (zoom: number) => void;
60
+ onPrev?: (index: number) => void;
61
+ onNext?: (index: number) => void;
62
+ onRatioChange?: (type: RatioType) => void;
63
+ onRotateChange?: (angle: number) => void;
64
+ onDownload?: (src: string, index: number) => void;
65
+ }
66
+ export interface MenuProps {
67
+ min?: number;
68
+ max?: number;
69
+ step?: number;
70
+ curPage?: number;
71
+ totalNum?: number;
72
+ zoom?: number;
73
+ ratio?: RatioType;
74
+ disabledPrev?: boolean;
75
+ disabledNext?: boolean;
76
+ disableDownload?: boolean;
77
+ onDownload?: () => void;
78
+ onNext?: () => void;
79
+ onPrev?: () => void;
80
+ onZoomIn?: () => void;
81
+ onZoomOut?: () => void;
82
+ onRatioClick?: () => void;
83
+ onRotateLeft?: () => void;
84
+ onRotateRight?: () => void;
85
+ }
86
+ export declare type RatioType = "adaptation" | "realSize";
87
+ export interface PreviewInnerStates {
88
+ imgSrc?: string[];
89
+ imgLoadStatus?: Map<string, boolean>;
90
+ zoom?: number;
91
+ rotation?: number;
92
+ ratio?: RatioType;
93
+ currentIndex?: number;
94
+ viewerVisible?: boolean;
95
+ visible?: boolean;
96
+ preloadAfterVisibleChange?: boolean;
97
+ direction?: string;
98
+ }
99
+ export interface SliderProps {
100
+ max?: number;
101
+ min?: number;
102
+ step?: number;
103
+ }
104
+ export interface HeaderProps {
105
+ renderHeader?: (info: any) => ReactNode;
106
+ title?: string;
107
+ titleStyle?: React.CSSProperties;
108
+ className?: string;
109
+ onClose?: () => void;
110
+ }
111
+ export interface FooterProps extends SliderProps {
112
+ curPage?: number;
113
+ totalNum?: number;
114
+ disabledPrev?: boolean;
115
+ disabledNext?: boolean;
116
+ disableDownload?: boolean;
117
+ className?: string;
118
+ zoom?: number;
119
+ ratio?: RatioType;
120
+ prevTip?: string;
121
+ nextTip?: string;
122
+ zoomInTip?: string;
123
+ zoomOutTip?: string;
124
+ rotateTip?: string;
125
+ downloadTip?: string;
126
+ adaptiveTip?: string;
127
+ originTip?: string;
128
+ showTooltip?: boolean;
129
+ onZoomIn?: (zoom: number) => void;
130
+ onZoomOut?: (zoom: number) => void;
131
+ onPrev?: () => void;
132
+ onNext?: () => void;
133
+ onAdjustRatio?: (type: RatioType) => void;
134
+ onRotate?: (direction: string) => void;
135
+ onDownload?: () => void;
136
+ renderPreviewMenu?: (props: MenuProps) => ReactNode;
137
+ }
138
+ export interface PreviewImageProps {
139
+ src?: string;
140
+ rotation?: number;
141
+ style?: React.CSSProperties;
142
+ maxZoom?: number;
143
+ minZoom?: number;
144
+ zoomStep?: number;
145
+ zoom?: number;
146
+ ratio?: RatioType;
147
+ disableDownload?: boolean;
148
+ clickZoom?: number;
149
+ setRatio?: (type: RatioType) => void;
150
+ onZoom?: (zoom: number) => void;
151
+ onLoad?: (src: string) => void;
152
+ onError?: (src: string) => void;
153
+ }
154
+ export interface ImageOffset {
155
+ x: number;
156
+ y: number;
157
+ }
158
+ export interface PreviewImageStates {
159
+ loading: boolean;
160
+ width: number;
161
+ height: number;
162
+ offset: ImageOffset;
163
+ currZoom: number;
164
+ top: number;
165
+ left: number;
166
+ }
167
+ export interface DragDirection {
168
+ canDragVertical: boolean;
169
+ canDragHorizontal: boolean;
170
+ }
171
+ export interface ExtremeBounds {
172
+ left: number;
173
+ top: number;
174
+ }
175
+ export interface PreviewState {
176
+ currentIndex: number;
177
+ visible: boolean;
178
+ }
@@ -0,0 +1 @@
1
+ export {};