antd-mobile 5.38.0 → 5.39.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 (134) hide show
  1. package/2x/bundle/antd-mobile.cjs.development.js +278 -237
  2. package/2x/bundle/antd-mobile.cjs.js +7 -7
  3. package/2x/bundle/antd-mobile.es.development.js +279 -238
  4. package/2x/bundle/antd-mobile.es.js +5466 -5430
  5. package/2x/bundle/antd-mobile.umd.development.js +278 -237
  6. package/2x/bundle/antd-mobile.umd.js +7 -7
  7. package/2x/bundle/style.css +17 -2
  8. package/2x/cjs/components/calendar-picker/calendar-picker.d.ts +9 -9
  9. package/2x/cjs/components/calendar-picker-view/calendar-picker-view.d.ts +5 -4
  10. package/2x/cjs/components/calendar-picker-view/calendar-picker-view.js +18 -11
  11. package/2x/cjs/components/date-picker/date-picker-week-utils.js +2 -2
  12. package/2x/cjs/components/ellipsis/ellipsis.css +1 -0
  13. package/2x/cjs/components/ellipsis/ellipsis.d.ts +1 -1
  14. package/2x/cjs/components/ellipsis/ellipsis.js +28 -124
  15. package/2x/cjs/components/ellipsis/useMeasure.d.ts +2 -0
  16. package/2x/cjs/components/ellipsis/useMeasure.js +112 -0
  17. package/2x/cjs/components/ellipsis/~ellipsis.d.ts +15 -0
  18. package/2x/cjs/components/ellipsis/~ellipsis.js +161 -0
  19. package/2x/cjs/components/floating-panel/floating-panel.css +16 -2
  20. package/2x/cjs/components/floating-panel/floating-panel.d.ts +3 -1
  21. package/2x/cjs/components/floating-panel/floating-panel.js +43 -30
  22. package/2x/cjs/components/image-uploader/image-uploader.d.ts +3 -3
  23. package/2x/cjs/components/image-uploader/image-uploader.js +11 -11
  24. package/2x/cjs/components/image-viewer/image-viewer.d.ts +13 -4
  25. package/2x/cjs/components/image-viewer/image-viewer.js +8 -6
  26. package/2x/cjs/components/image-viewer/index.d.ts +4 -1
  27. package/2x/cjs/components/image-viewer/slide.d.ts +5 -1
  28. package/2x/cjs/components/image-viewer/slide.js +10 -5
  29. package/2x/cjs/components/image-viewer/slides.d.ts +4 -1
  30. package/2x/cjs/components/image-viewer/slides.js +14 -12
  31. package/2x/cjs/components/passcode-input/passcode-input.d.ts +7 -5
  32. package/2x/cjs/components/passcode-input/passcode-input.js +7 -6
  33. package/2x/cjs/components/popover/popover.d.ts +2 -2
  34. package/2x/cjs/components/popover/popover.js +11 -11
  35. package/2x/cjs/components/swipe-action/swipe-action.d.ts +3 -1
  36. package/2x/cjs/components/swipe-action/swipe-action.js +25 -23
  37. package/2x/es/components/calendar-picker/calendar-picker.d.ts +9 -9
  38. package/2x/es/components/calendar-picker-view/calendar-picker-view.d.ts +5 -4
  39. package/2x/es/components/calendar-picker-view/calendar-picker-view.js +18 -11
  40. package/2x/es/components/date-picker/date-picker-week-utils.js +2 -2
  41. package/2x/es/components/ellipsis/ellipsis.css +1 -0
  42. package/2x/es/components/ellipsis/ellipsis.d.ts +1 -1
  43. package/2x/es/components/ellipsis/ellipsis.js +28 -122
  44. package/2x/es/components/ellipsis/useMeasure.d.ts +2 -0
  45. package/2x/es/components/ellipsis/useMeasure.js +105 -0
  46. package/2x/es/components/ellipsis/~ellipsis.d.ts +15 -0
  47. package/2x/es/components/ellipsis/~ellipsis.js +151 -0
  48. package/2x/es/components/floating-panel/floating-panel.css +16 -2
  49. package/2x/es/components/floating-panel/floating-panel.d.ts +3 -1
  50. package/2x/es/components/floating-panel/floating-panel.js +31 -19
  51. package/2x/es/components/image-uploader/image-uploader.d.ts +3 -3
  52. package/2x/es/components/image-uploader/image-uploader.js +11 -11
  53. package/2x/es/components/image-viewer/image-viewer.d.ts +13 -4
  54. package/2x/es/components/image-viewer/image-viewer.js +8 -6
  55. package/2x/es/components/image-viewer/index.d.ts +4 -1
  56. package/2x/es/components/image-viewer/slide.d.ts +5 -1
  57. package/2x/es/components/image-viewer/slide.js +11 -6
  58. package/2x/es/components/image-viewer/slides.d.ts +4 -1
  59. package/2x/es/components/image-viewer/slides.js +6 -4
  60. package/2x/es/components/passcode-input/passcode-input.d.ts +7 -5
  61. package/2x/es/components/passcode-input/passcode-input.js +6 -5
  62. package/2x/es/components/popover/popover.d.ts +2 -2
  63. package/2x/es/components/popover/popover.js +10 -10
  64. package/2x/es/components/swipe-action/swipe-action.d.ts +3 -1
  65. package/2x/es/components/swipe-action/swipe-action.js +9 -7
  66. package/2x/package.json +1 -1
  67. package/bundle/antd-mobile.cjs.development.js +278 -237
  68. package/bundle/antd-mobile.cjs.js +7 -7
  69. package/bundle/antd-mobile.compatible.umd.js +1 -1
  70. package/bundle/antd-mobile.es.development.js +279 -238
  71. package/bundle/antd-mobile.es.js +5466 -5430
  72. package/bundle/antd-mobile.umd.development.js +278 -237
  73. package/bundle/antd-mobile.umd.js +7 -7
  74. package/bundle/style.css +1 -1
  75. package/cjs/components/calendar-picker/calendar-picker.d.ts +9 -9
  76. package/cjs/components/calendar-picker-view/calendar-picker-view.d.ts +5 -4
  77. package/cjs/components/calendar-picker-view/calendar-picker-view.js +18 -11
  78. package/cjs/components/date-picker/date-picker-week-utils.js +2 -2
  79. package/cjs/components/ellipsis/ellipsis.css +1 -0
  80. package/cjs/components/ellipsis/ellipsis.d.ts +1 -1
  81. package/cjs/components/ellipsis/ellipsis.js +28 -124
  82. package/cjs/components/ellipsis/useMeasure.d.ts +2 -0
  83. package/cjs/components/ellipsis/useMeasure.js +112 -0
  84. package/cjs/components/ellipsis/~ellipsis.d.ts +15 -0
  85. package/cjs/components/ellipsis/~ellipsis.js +161 -0
  86. package/cjs/components/floating-panel/floating-panel.css +12 -2
  87. package/cjs/components/floating-panel/floating-panel.d.ts +3 -1
  88. package/cjs/components/floating-panel/floating-panel.js +43 -30
  89. package/cjs/components/image-uploader/image-uploader.d.ts +3 -3
  90. package/cjs/components/image-uploader/image-uploader.js +11 -11
  91. package/cjs/components/image-viewer/image-viewer.d.ts +13 -4
  92. package/cjs/components/image-viewer/image-viewer.js +8 -6
  93. package/cjs/components/image-viewer/index.d.ts +4 -1
  94. package/cjs/components/image-viewer/slide.d.ts +5 -1
  95. package/cjs/components/image-viewer/slide.js +10 -5
  96. package/cjs/components/image-viewer/slides.d.ts +4 -1
  97. package/cjs/components/image-viewer/slides.js +14 -12
  98. package/cjs/components/passcode-input/passcode-input.d.ts +7 -5
  99. package/cjs/components/passcode-input/passcode-input.js +7 -6
  100. package/cjs/components/popover/popover.d.ts +2 -2
  101. package/cjs/components/popover/popover.js +11 -11
  102. package/cjs/components/swipe-action/swipe-action.d.ts +3 -1
  103. package/cjs/components/swipe-action/swipe-action.js +25 -23
  104. package/es/components/calendar-picker/calendar-picker.d.ts +9 -9
  105. package/es/components/calendar-picker-view/calendar-picker-view.d.ts +5 -4
  106. package/es/components/calendar-picker-view/calendar-picker-view.js +18 -11
  107. package/es/components/date-picker/date-picker-week-utils.js +2 -2
  108. package/es/components/ellipsis/ellipsis.css +1 -0
  109. package/es/components/ellipsis/ellipsis.d.ts +1 -1
  110. package/es/components/ellipsis/ellipsis.js +28 -122
  111. package/es/components/ellipsis/useMeasure.d.ts +2 -0
  112. package/es/components/ellipsis/useMeasure.js +105 -0
  113. package/es/components/ellipsis/~ellipsis.d.ts +15 -0
  114. package/es/components/ellipsis/~ellipsis.js +151 -0
  115. package/es/components/floating-panel/floating-panel.css +12 -2
  116. package/es/components/floating-panel/floating-panel.d.ts +3 -1
  117. package/es/components/floating-panel/floating-panel.js +31 -19
  118. package/es/components/image-uploader/image-uploader.d.ts +3 -3
  119. package/es/components/image-uploader/image-uploader.js +11 -11
  120. package/es/components/image-viewer/image-viewer.d.ts +13 -4
  121. package/es/components/image-viewer/image-viewer.js +8 -6
  122. package/es/components/image-viewer/index.d.ts +4 -1
  123. package/es/components/image-viewer/slide.d.ts +5 -1
  124. package/es/components/image-viewer/slide.js +11 -6
  125. package/es/components/image-viewer/slides.d.ts +4 -1
  126. package/es/components/image-viewer/slides.js +6 -4
  127. package/es/components/passcode-input/passcode-input.d.ts +7 -5
  128. package/es/components/passcode-input/passcode-input.js +6 -5
  129. package/es/components/popover/popover.d.ts +2 -2
  130. package/es/components/popover/popover.js +10 -10
  131. package/es/components/swipe-action/swipe-action.d.ts +3 -1
  132. package/es/components/swipe-action/swipe-action.js +9 -7
  133. package/package.json +1 -1
  134. package/umd/antd-mobile.js +1 -1
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Ellipsis = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _runes = _interopRequireDefault(require("runes2"));
9
+ var _withDefaultProps = require("../../utils/with-default-props");
10
+ var _nativeProps = require("../../utils/native-props");
11
+ var _useResizeEffect = require("../../utils/use-resize-effect");
12
+ var _ahooks = require("ahooks");
13
+ var _withStopPropagation = require("../../utils/with-stop-propagation");
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
+ const classPrefix = `adm-ellipsis`;
18
+ const defaultProps = {
19
+ direction: 'end',
20
+ rows: 1,
21
+ expandText: '',
22
+ content: '',
23
+ collapseText: '',
24
+ stopPropagationForActionButtons: [],
25
+ onContentClick: () => {},
26
+ defaultExpanded: false
27
+ };
28
+ const Ellipsis = p => {
29
+ const props = (0, _withDefaultProps.mergeProps)(defaultProps, p);
30
+ const rootRef = (0, _react.useRef)(null);
31
+ const expandElRef = (0, _react.useRef)(null);
32
+ const collapseElRef = (0, _react.useRef)(null);
33
+ const [ellipsised, setEllipsised] = (0, _react.useState)({});
34
+ const [expanded, setExpanded] = (0, _react.useState)(props.defaultExpanded);
35
+ const [exceeded, setExceeded] = (0, _react.useState)(false);
36
+ const chars = (0, _react.useMemo)(() => (0, _runes.default)(props.content), [props.content]);
37
+ function getSubString(start, end) {
38
+ return chars.slice(start, end).join('');
39
+ }
40
+ function calcEllipsised() {
41
+ var _a, _b;
42
+ const root = rootRef.current;
43
+ if (!root) return;
44
+ const originDisplay = root.style.display;
45
+ root.style.display = 'block';
46
+ const originStyle = window.getComputedStyle(root);
47
+ const container = document.createElement('div');
48
+ const styleNames = Array.prototype.slice.apply(originStyle);
49
+ styleNames.forEach(name => {
50
+ container.style.setProperty(name, originStyle.getPropertyValue(name));
51
+ });
52
+ root.style.display = originDisplay;
53
+ container.style.height = 'auto';
54
+ container.style.minHeight = 'auto';
55
+ container.style.maxHeight = 'auto';
56
+ container.style.textOverflow = 'clip';
57
+ container.style.webkitLineClamp = 'unset';
58
+ container.style.display = 'block';
59
+ const lineHeight = pxToNumber(originStyle.lineHeight);
60
+ const maxHeight = Math.floor(lineHeight * (props.rows + 0.5) + pxToNumber(originStyle.paddingTop) + pxToNumber(originStyle.paddingBottom));
61
+ container.innerText = props.content;
62
+ document.body.appendChild(container);
63
+ if (container.offsetHeight <= maxHeight) {
64
+ setExceeded(false);
65
+ } else {
66
+ setExceeded(true);
67
+ const end = props.content.length;
68
+ const collapseEl = typeof props.collapseText === 'string' ? props.collapseText : (_a = collapseElRef.current) === null || _a === void 0 ? void 0 : _a.innerHTML;
69
+ const expandEl = typeof props.expandText === 'string' ? props.expandText : (_b = expandElRef.current) === null || _b === void 0 ? void 0 : _b.innerHTML;
70
+ const actionText = expanded ? collapseEl : expandEl;
71
+ function check(left, right) {
72
+ if (right - left <= 1) {
73
+ if (props.direction === 'end') {
74
+ return {
75
+ leading: getSubString(0, left) + '...'
76
+ };
77
+ } else {
78
+ return {
79
+ tailing: '...' + getSubString(right, end)
80
+ };
81
+ }
82
+ }
83
+ const middle = Math.round((left + right) / 2);
84
+ if (props.direction === 'end') {
85
+ container.innerHTML = getSubString(0, middle) + '...' + actionText;
86
+ } else {
87
+ container.innerHTML = actionText + '...' + getSubString(middle, end);
88
+ }
89
+ if (container.offsetHeight <= maxHeight) {
90
+ if (props.direction === 'end') {
91
+ return check(middle, right);
92
+ } else {
93
+ return check(left, middle);
94
+ }
95
+ } else {
96
+ if (props.direction === 'end') {
97
+ return check(left, middle);
98
+ } else {
99
+ return check(middle, right);
100
+ }
101
+ }
102
+ }
103
+ function checkMiddle(leftPart, rightPart) {
104
+ if (leftPart[1] - leftPart[0] <= 1 && rightPart[1] - rightPart[0] <= 1) {
105
+ return {
106
+ leading: getSubString(0, leftPart[0]) + '...',
107
+ tailing: '...' + getSubString(rightPart[1], end)
108
+ };
109
+ }
110
+ const leftPartMiddle = Math.floor((leftPart[0] + leftPart[1]) / 2);
111
+ const rightPartMiddle = Math.ceil((rightPart[0] + rightPart[1]) / 2);
112
+ container.innerHTML = getSubString(0, leftPartMiddle) + '...' + actionText + '...' + getSubString(rightPartMiddle, end);
113
+ if (container.offsetHeight <= maxHeight) {
114
+ return checkMiddle([leftPartMiddle, leftPart[1]], [rightPart[0], rightPartMiddle]);
115
+ } else {
116
+ return checkMiddle([leftPart[0], leftPartMiddle], [rightPartMiddle, rightPart[1]]);
117
+ }
118
+ }
119
+ const middle = Math.floor((0 + end) / 2);
120
+ const ellipsised = props.direction === 'middle' ? checkMiddle([0, middle], [middle, end]) : check(0, end);
121
+ setEllipsised(ellipsised);
122
+ }
123
+ document.body.removeChild(container);
124
+ }
125
+ (0, _useResizeEffect.useResizeEffect)(calcEllipsised, rootRef);
126
+ (0, _ahooks.useIsomorphicLayoutEffect)(() => {
127
+ calcEllipsised();
128
+ }, [props.content, props.direction, props.rows, props.expandText, props.collapseText]);
129
+ const expandActionElement = !!props.expandText && (0, _withStopPropagation.withStopPropagation)(props.stopPropagationForActionButtons, _react.default.createElement("a", {
130
+ ref: expandElRef,
131
+ onClick: () => {
132
+ setExpanded(true);
133
+ }
134
+ }, props.expandText));
135
+ const collapseActionElement = !!props.collapseText && (0, _withStopPropagation.withStopPropagation)(props.stopPropagationForActionButtons, _react.default.createElement("a", {
136
+ ref: collapseElRef,
137
+ onClick: () => {
138
+ setExpanded(false);
139
+ }
140
+ }, props.collapseText));
141
+ const renderContent = () => {
142
+ if (!exceeded) return props.content;
143
+ if (expanded) return _react.default.createElement(_react.default.Fragment, null, props.content, collapseActionElement);
144
+ return _react.default.createElement(_react.default.Fragment, null, ellipsised.leading, expandActionElement, ellipsised.tailing);
145
+ };
146
+ return (0, _nativeProps.withNativeProps)(props, _react.default.createElement("div", {
147
+ ref: rootRef,
148
+ className: classPrefix,
149
+ onClick: e => {
150
+ if (e.target === e.currentTarget) {
151
+ props.onContentClick(e);
152
+ }
153
+ }
154
+ }, renderContent()));
155
+ };
156
+ exports.Ellipsis = Ellipsis;
157
+ function pxToNumber(value) {
158
+ if (!value) return 0;
159
+ const match = value.match(/^\d*(\.\d*)?/);
160
+ return match ? Number(match[0]) : 0;
161
+ }
@@ -4,7 +4,6 @@
4
4
  --z-index: var(--adm-floating-panel-z-index, 900);
5
5
  position: fixed;
6
6
  z-index: var(--z-index);
7
- bottom: 0;
8
7
  left: 0;
9
8
  width: 100vw;
10
9
  display: flex;
@@ -26,7 +25,6 @@
26
25
  content: '';
27
26
  display: block;
28
27
  position: absolute;
29
- bottom: -100vh;
30
28
  height: 100vh;
31
29
  width: 100vw;
32
30
  background: var(--adm-color-background);
@@ -58,4 +56,20 @@
58
56
  flex: 1;
59
57
  overflow-y: scroll;
60
58
  background: var(--adm-color-background);
59
+ }
60
+
61
+ .adm-floating-panel-top {
62
+ top: 0;
63
+ }
64
+
65
+ .adm-floating-panel-top::after {
66
+ top: -100vh;
67
+ }
68
+
69
+ .adm-floating-panel-bottom {
70
+ bottom: 0;
71
+ }
72
+
73
+ .adm-floating-panel-bottom::after {
74
+ bottom: -100vh;
61
75
  }
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
1
  import type { ReactNode } from 'react';
2
+ import React from 'react';
3
3
  import { NativeProps } from '../../utils/native-props';
4
4
  export declare type FloatingPanelRef = {
5
5
  setHeight: (height: number, options?: {
@@ -11,12 +11,14 @@ export declare type FloatingPanelProps = {
11
11
  children: ReactNode;
12
12
  onHeightChange?: (height: number, animating: boolean) => void;
13
13
  handleDraggingOfContent?: boolean;
14
+ placement?: 'bottom' | 'top';
14
15
  } & NativeProps<'--border-radius' | '--z-index' | '--header-height'>;
15
16
  export declare const FloatingPanel: React.ForwardRefExoticComponent<{
16
17
  anchors: number[];
17
18
  children: ReactNode;
18
19
  onHeightChange?: ((height: number, animating: boolean) => void) | undefined;
19
20
  handleDraggingOfContent?: boolean | undefined;
21
+ placement?: "bottom" | "top" | undefined;
20
22
  } & {
21
23
  className?: string | undefined;
22
24
  style?: (React.CSSProperties & Partial<Record<"--z-index" | "--border-radius" | "--header-height", string>>) | undefined;
@@ -4,43 +4,47 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.FloatingPanel = void 0;
7
- var _react = _interopRequireWildcard(require("react"));
8
- var _nativeProps = require("../../utils/native-props");
9
- var _react2 = require("@use-gesture/react");
10
7
  var _web = require("@react-spring/web");
11
- var _supportsPassive = require("../../utils/supports-passive");
8
+ var _react = require("@use-gesture/react");
9
+ var _ahooks = require("ahooks");
10
+ var _classnames = _interopRequireDefault(require("classnames"));
11
+ var _react2 = _interopRequireWildcard(require("react"));
12
+ var _nativeProps = require("../../utils/native-props");
12
13
  var _nearest = require("../../utils/nearest");
13
- var _withDefaultProps = require("../../utils/with-default-props");
14
+ var _supportsPassive = require("../../utils/supports-passive");
14
15
  var _useLockScroll = require("../../utils/use-lock-scroll");
15
- var _ahooks = require("ahooks");
16
+ var _withDefaultProps = require("../../utils/with-default-props");
16
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
20
  const classPrefix = 'adm-floating-panel';
19
21
  const defaultProps = {
20
22
  handleDraggingOfContent: true
21
23
  };
22
- const FloatingPanel = (0, _react.forwardRef)((p, ref) => {
24
+ const FloatingPanel = (0, _react2.forwardRef)((p, ref) => {
23
25
  var _a, _b;
24
26
  const props = (0, _withDefaultProps.mergeProps)(defaultProps, p);
25
27
  const {
26
- anchors
28
+ anchors,
29
+ placement = 'bottom'
27
30
  } = props;
28
31
  const maxHeight = (_a = anchors[anchors.length - 1]) !== null && _a !== void 0 ? _a : window.innerHeight;
29
- const possibles = anchors.map(x => -x);
30
- const elementRef = (0, _react.useRef)(null);
31
- const headerRef = (0, _react.useRef)(null);
32
- const contentRef = (0, _react.useRef)(null);
33
- const [pulling, setPulling] = (0, _react.useState)(false);
34
- const pullingRef = (0, _react.useRef)(false);
32
+ const isBottomPlacement = placement !== 'top';
33
+ const possibles = isBottomPlacement ? anchors.map(x => -x) : anchors;
34
+ const elementRef = (0, _react2.useRef)(null);
35
+ const headerRef = (0, _react2.useRef)(null);
36
+ const contentRef = (0, _react2.useRef)(null);
37
+ const [pulling, setPulling] = (0, _react2.useState)(false);
38
+ const pullingRef = (0, _react2.useRef)(false);
35
39
  const bounds = {
36
- top: possibles[possibles.length - 1],
37
- bottom: possibles[0]
40
+ top: Math.min(...possibles),
41
+ bottom: Math.max(...possibles)
38
42
  };
39
43
  const onHeightChange = (0, _ahooks.useMemoizedFn)((_b = props.onHeightChange) !== null && _b !== void 0 ? _b : () => {});
40
44
  const [{
41
45
  y
42
46
  }, api] = (0, _web.useSpring)(() => ({
43
- y: bounds.bottom,
47
+ y: isBottomPlacement ? bounds.bottom : bounds.top,
44
48
  config: {
45
49
  tension: 300
46
50
  },
@@ -48,7 +52,7 @@ const FloatingPanel = (0, _react.forwardRef)((p, ref) => {
48
52
  onHeightChange(-result.value.y, y.isAnimating);
49
53
  }
50
54
  }));
51
- (0, _react2.useDrag)(state => {
55
+ (0, _react.useDrag)(state => {
52
56
  const [, offsetY] = state.offset;
53
57
  if (state.first) {
54
58
  const target = state.event.target;
@@ -100,7 +104,7 @@ const FloatingPanel = (0, _react.forwardRef)((p, ref) => {
100
104
  passive: false
101
105
  } : undefined
102
106
  });
103
- (0, _react.useImperativeHandle)(ref, () => ({
107
+ (0, _react2.useImperativeHandle)(ref, () => ({
104
108
  setHeight: (height, options) => {
105
109
  api.start({
106
110
  y: -height,
@@ -109,26 +113,35 @@ const FloatingPanel = (0, _react.forwardRef)((p, ref) => {
109
113
  }
110
114
  }), [api]);
111
115
  (0, _useLockScroll.useLockScroll)(elementRef, true);
112
- return (0, _nativeProps.withNativeProps)(props, _react.default.createElement(_web.animated.div, {
116
+ const HeaderNode = _react2.default.createElement("div", {
117
+ className: `${classPrefix}-header`,
118
+ ref: headerRef
119
+ }, _react2.default.createElement("div", {
120
+ className: `${classPrefix}-bar`
121
+ }));
122
+ return (0, _nativeProps.withNativeProps)(props, _react2.default.createElement(_web.animated.div, {
113
123
  ref: elementRef,
114
- className: classPrefix,
124
+ className: (0, _classnames.default)(classPrefix, `${classPrefix}-${placement}`),
115
125
  style: {
116
126
  height: Math.round(maxHeight),
117
- translateY: y.to(y => `calc(100% + (${Math.round(y)}px))`)
127
+ translateY: y.to(y => {
128
+ if (isBottomPlacement) {
129
+ return `calc(100% + (${Math.round(y)}px))`;
130
+ }
131
+ if (placement === 'top') {
132
+ return `calc(-100% + (${Math.round(y)}px))`;
133
+ }
134
+ return y;
135
+ })
118
136
  }
119
- }, _react.default.createElement("div", {
137
+ }, _react2.default.createElement("div", {
120
138
  className: `${classPrefix}-mask`,
121
139
  style: {
122
140
  display: pulling ? 'block' : 'none'
123
141
  }
124
- }), _react.default.createElement("div", {
125
- className: `${classPrefix}-header`,
126
- ref: headerRef
127
- }, _react.default.createElement("div", {
128
- className: `${classPrefix}-bar`
129
- })), _react.default.createElement("div", {
142
+ }), isBottomPlacement && HeaderNode, _react2.default.createElement("div", {
130
143
  className: `${classPrefix}-content`,
131
144
  ref: contentRef
132
- }, props.children)));
145
+ }, props.children), placement === 'top' && HeaderNode));
133
146
  });
134
147
  exports.FloatingPanel = FloatingPanel;
@@ -1,8 +1,8 @@
1
+ import type { CSSProperties, InputHTMLAttributes, ReactElement, ReactNode } from 'react';
1
2
  import React from 'react';
2
- import type { ReactNode, InputHTMLAttributes, ReactElement } from 'react';
3
3
  import { NativeProps } from '../../utils/native-props';
4
- import type { ImageProps } from '../image';
5
4
  import { GridProps } from '../grid';
5
+ import type { ImageProps } from '../image';
6
6
  export declare type TaskStatus = 'pending' | 'fail' | 'success';
7
7
  export interface ImageUploadItem {
8
8
  key?: string | number;
@@ -71,7 +71,7 @@ export declare const ImageUploader: React.ForwardRefExoticComponent<{
71
71
  renderItem?: ((originNode: ReactElement, file: ImageUploadItem, fileList: ImageUploadItem[]) => ReactNode) | undefined;
72
72
  } & {
73
73
  className?: string | undefined;
74
- style?: (React.CSSProperties & Partial<Record<"--gap" | "--gap-vertical" | "--gap-horizontal" | "--cell-size", string>>) | undefined;
74
+ style?: (CSSProperties & Partial<Record<"--gap" | "--gap-vertical" | "--gap-horizontal" | "--cell-size", string>>) | undefined;
75
75
  tabIndex?: number | undefined;
76
76
  } & React.AriaAttributes & React.RefAttributes<ImageUploaderRef>>;
77
77
  export {};
@@ -5,18 +5,18 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.ImageUploader = void 0;
7
7
  var _tslib = require("tslib");
8
- var _react = _interopRequireWildcard(require("react"));
9
- var _antdMobileIcons = require("antd-mobile-icons");
10
- var _withDefaultProps = require("../../utils/with-default-props");
11
- var _imageViewer = _interopRequireDefault(require("../image-viewer"));
12
- var _previewItem = _interopRequireDefault(require("./preview-item"));
13
- var _usePropsValue = require("../../utils/use-props-value");
14
8
  var _ahooks = require("ahooks");
15
- var _space = _interopRequireDefault(require("../space"));
16
- var _nativeProps = require("../../utils/native-props");
9
+ var _antdMobileIcons = require("antd-mobile-icons");
10
+ var _react = _interopRequireWildcard(require("react"));
17
11
  var _measureCssLength = require("../../utils/measure-css-length");
12
+ var _nativeProps = require("../../utils/native-props");
13
+ var _usePropsValue = require("../../utils/use-props-value");
14
+ var _withDefaultProps = require("../../utils/with-default-props");
18
15
  var _configProvider = require("../config-provider");
19
16
  var _grid = _interopRequireDefault(require("../grid"));
17
+ var _imageViewer = _interopRequireDefault(require("../image-viewer"));
18
+ var _space = _interopRequireDefault(require("../space"));
19
+ var _previewItem = _interopRequireDefault(require("./preview-item"));
20
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
21
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
22
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -153,10 +153,10 @@ const ImageUploader = (0, _react.forwardRef)((p, ref) => {
153
153
  return task;
154
154
  });
155
155
  });
156
- throw e;
156
+ console.error(e);
157
157
  }
158
- }))).catch(error => console.error(error));
159
- setValue(prev => prev.concat(newVal));
158
+ })));
159
+ setValue(prev => prev.concat(newVal).filter(Boolean));
160
160
  });
161
161
  }
162
162
  const imageViewerHandlerRef = (0, _react.useRef)(null);
@@ -1,15 +1,18 @@
1
- import React from 'react';
2
1
  import type { FC, ReactNode } from 'react';
2
+ import React from 'react';
3
3
  import { GetContainer } from '../../utils/render-to-container';
4
4
  import { SlidesRef } from './slides';
5
5
  export declare type ImageViewerProps = {
6
- image?: string;
6
+ image: string;
7
7
  maxZoom?: number | 'auto';
8
8
  getContainer?: GetContainer;
9
9
  visible?: boolean;
10
10
  onClose?: () => void;
11
11
  afterClose?: () => void;
12
12
  renderFooter?: (image: string) => ReactNode;
13
+ imageRender?: (image: string, { index }: {
14
+ index: number;
15
+ }) => ReactNode;
13
16
  classNames?: {
14
17
  mask?: string;
15
18
  body?: string;
@@ -17,15 +20,21 @@ export declare type ImageViewerProps = {
17
20
  };
18
21
  export declare const ImageViewer: FC<ImageViewerProps>;
19
22
  export declare type MultiImageViewerRef = SlidesRef;
20
- export declare type MultiImageViewerProps = Omit<ImageViewerProps, 'image' | 'renderFooter'> & {
23
+ export declare type MultiImageViewerProps = Omit<ImageViewerProps, 'image' | 'renderFooter' | 'imageRender'> & {
21
24
  images?: string[];
22
25
  defaultIndex?: number;
23
26
  onIndexChange?: (index: number) => void;
24
27
  renderFooter?: (image: string, index: number) => ReactNode;
28
+ imageRender?: (image: string, { index }: {
29
+ index: number;
30
+ }) => ReactNode;
25
31
  };
26
- export declare const MultiImageViewer: React.ForwardRefExoticComponent<Omit<ImageViewerProps, "image" | "renderFooter"> & {
32
+ export declare const MultiImageViewer: React.ForwardRefExoticComponent<Omit<ImageViewerProps, "image" | "imageRender" | "renderFooter"> & {
27
33
  images?: string[] | undefined;
28
34
  defaultIndex?: number | undefined;
29
35
  onIndexChange?: ((index: number) => void) | undefined;
30
36
  renderFooter?: ((image: string, index: number) => ReactNode) | undefined;
37
+ imageRender?: ((image: string, { index }: {
38
+ index: number;
39
+ }) => ReactNode) | undefined;
31
40
  } & React.RefAttributes<SlidesRef>>;
@@ -4,17 +4,17 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.MultiImageViewer = exports.ImageViewer = void 0;
7
+ var _classnames = _interopRequireDefault(require("classnames"));
7
8
  var _react = _interopRequireWildcard(require("react"));
8
- var _withDefaultProps = require("../../utils/with-default-props");
9
9
  var _renderToContainer = require("../../utils/render-to-container");
10
+ var _withDefaultProps = require("../../utils/with-default-props");
10
11
  var _mask = _interopRequireDefault(require("../mask"));
11
12
  var _safeArea = _interopRequireDefault(require("../safe-area"));
12
13
  var _slide = require("./slide");
13
14
  var _slides = require("./slides");
14
- var _classnames = _interopRequireDefault(require("classnames"));
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
15
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
16
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
18
  const classPrefix = `adm-image-viewer`;
19
19
  const defaultProps = {
20
20
  maxZoom: 3,
@@ -33,10 +33,11 @@ const ImageViewer = p => {
33
33
  className: (_a = props === null || props === void 0 ? void 0 : props.classNames) === null || _a === void 0 ? void 0 : _a.mask
34
34
  }, _react.default.createElement("div", {
35
35
  className: (0, _classnames.default)(`${classPrefix}-content`, (_b = props === null || props === void 0 ? void 0 : props.classNames) === null || _b === void 0 ? void 0 : _b.body)
36
- }, props.image && _react.default.createElement(_slide.Slide, {
36
+ }, (props.image || typeof props.imageRender === 'function') && _react.default.createElement(_slide.Slide, {
37
37
  image: props.image,
38
38
  onTap: props.onClose,
39
- maxZoom: props.maxZoom
39
+ maxZoom: props.maxZoom,
40
+ imageRender: props.imageRender
40
41
  })), props.image && _react.default.createElement("div", {
41
42
  className: `${classPrefix}-footer`
42
43
  }, (_c = props.renderFooter) === null || _c === void 0 ? void 0 : _c.call(props, props.image), _react.default.createElement(_safeArea.default, {
@@ -81,7 +82,8 @@ const MultiImageViewer = (0, _react.forwardRef)((p, ref) => {
81
82
  onIndexChange: onSlideChange,
82
83
  images: props.images,
83
84
  onTap: props.onClose,
84
- maxZoom: props.maxZoom
85
+ maxZoom: props.maxZoom,
86
+ imageRender: props.imageRender
85
87
  })), props.images && _react.default.createElement("div", {
86
88
  className: `${classPrefix}-footer`
87
89
  }, (_c = props.renderFooter) === null || _c === void 0 ? void 0 : _c.call(props, props.images[index], index), _react.default.createElement(_safeArea.default, {
@@ -3,11 +3,14 @@ import { showMultiImageViewer, showImageViewer, clearImageViewer } from './metho
3
3
  export type { ImageViewerProps, MultiImageViewerProps, MultiImageViewerRef, } from './image-viewer';
4
4
  export type { ImageViewerShowHandler } from './methods';
5
5
  declare const _default: import("react").FC<import("./image-viewer").ImageViewerProps> & {
6
- Multi: import("react").ForwardRefExoticComponent<Omit<import("./image-viewer").ImageViewerProps, "image" | "renderFooter"> & {
6
+ Multi: import("react").ForwardRefExoticComponent<Omit<import("./image-viewer").ImageViewerProps, "image" | "imageRender" | "renderFooter"> & {
7
7
  images?: string[] | undefined;
8
8
  defaultIndex?: number | undefined;
9
9
  onIndexChange?: ((index: number) => void) | undefined;
10
10
  renderFooter?: ((image: string, index: number) => import("react").ReactNode) | undefined;
11
+ imageRender?: ((image: string, { index }: {
12
+ index: number;
13
+ }) => import("react").ReactNode) | undefined;
11
14
  } & import("react").RefAttributes<import("./slides").SlidesRef>> & {
12
15
  show: typeof showMultiImageViewer;
13
16
  };
@@ -1,10 +1,14 @@
1
- import type { FC, MutableRefObject } from 'react';
1
+ import type { FC, MutableRefObject, ReactNode } from 'react';
2
2
  declare type Props = {
3
3
  image: string;
4
4
  maxZoom: number | 'auto';
5
5
  onTap?: () => void;
6
6
  onZoomChange?: (zoom: number) => void;
7
7
  dragLockRef?: MutableRefObject<boolean>;
8
+ imageRender?: (image: string, { index }: {
9
+ index: number;
10
+ }) => ReactNode;
11
+ index?: number;
8
12
  };
9
13
  export declare const Slide: FC<Props>;
10
14
  export {};
@@ -4,20 +4,22 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Slide = void 0;
7
- var _react = _interopRequireWildcard(require("react"));
8
7
  var _web = require("@react-spring/web");
9
8
  var _ahooks = require("ahooks");
10
- var _rubberband = require("../../utils/rubberband");
11
- var _useDragAndPinch = require("../../utils/use-drag-and-pinch");
9
+ var _react = _interopRequireWildcard(require("react"));
12
10
  var _bound = require("../../utils/bound");
13
11
  var mat = _interopRequireWildcard(require("../../utils/matrix"));
12
+ var _rubberband = require("../../utils/rubberband");
13
+ var _useDragAndPinch = require("../../utils/use-drag-and-pinch");
14
14
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
15
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
16
  const classPrefix = `adm-image-viewer`;
17
17
  const Slide = props => {
18
18
  const {
19
19
  dragLockRef,
20
- maxZoom
20
+ maxZoom,
21
+ imageRender,
22
+ index
21
23
  } = props;
22
24
  const initialMartix = (0, _react.useRef)([]);
23
25
  const controlRef = (0, _react.useRef)(null);
@@ -227,6 +229,9 @@ const Slide = props => {
227
229
  }
228
230
  }
229
231
  });
232
+ const customRendering = typeof imageRender === 'function' && imageRender(props.image, {
233
+ index
234
+ });
230
235
  return _react.default.createElement("div", {
231
236
  className: `${classPrefix}-slide`
232
237
  }, _react.default.createElement("div", {
@@ -237,7 +242,7 @@ const Slide = props => {
237
242
  style: {
238
243
  matrix
239
244
  }
240
- }, _react.default.createElement("img", {
245
+ }, customRendering ? customRendering : _react.default.createElement("img", {
241
246
  ref: imgRef,
242
247
  src: props.image,
243
248
  draggable: false,
@@ -1,10 +1,13 @@
1
- import React from 'react';
1
+ import React, { ReactNode } from 'react';
2
2
  export declare type SlidesType = {
3
3
  images: string[];
4
4
  onTap?: () => void;
5
5
  maxZoom: number;
6
6
  defaultIndex: number;
7
7
  onIndexChange?: (index: number) => void;
8
+ imageRender?: (image: string, { index }: {
9
+ index: number;
10
+ }) => ReactNode;
8
11
  };
9
12
  export declare type SlidesRef = {
10
13
  swipeTo: (index: number, immediate?: boolean) => void;