@canlooks/can-ui 0.0.41 → 0.0.43

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 (174) hide show
  1. package/dist/cjs/components/alert/alert.style.js +1 -0
  2. package/dist/cjs/components/checkboxBase/checkboxBase.js +1 -2
  3. package/dist/cjs/components/checkboxBaseGroup/checkboxBaseGroup.d.ts +0 -2
  4. package/dist/cjs/components/checkboxBaseGroup/checkboxBaseGroup.js +3 -3
  5. package/dist/cjs/components/clickAway/clickAway.d.ts +285 -1
  6. package/dist/cjs/components/clickAway/clickAway.js +1 -2
  7. package/dist/cjs/components/dataGrid/columnResize.js +5 -5
  8. package/dist/cjs/components/dataGrid/dataGrid.js +1 -1
  9. package/dist/cjs/components/dataGrid/dataGridRows.js +3 -1
  10. package/dist/cjs/components/descriptions/descriptionItem.d.ts +3 -3
  11. package/dist/cjs/components/draggable/draggable.d.ts +6 -6
  12. package/dist/cjs/components/draggable/draggable.js +13 -18
  13. package/dist/cjs/components/{image/imagePreview.d.ts → gallery/gallery.d.ts} +7 -3
  14. package/dist/cjs/components/gallery/gallery.js +165 -0
  15. package/dist/{esm/components/image/imagePreview.style.d.ts → cjs/components/gallery/gallery.style.d.ts} +3 -1
  16. package/dist/cjs/components/{image/imagePreview.style.js → gallery/gallery.style.js} +49 -13
  17. package/dist/cjs/components/gallery/imageItem.d.ts +14 -0
  18. package/dist/cjs/components/gallery/imageItem.js +51 -0
  19. package/dist/cjs/components/gallery/index.d.ts +1 -0
  20. package/dist/cjs/components/gallery/index.js +4 -0
  21. package/dist/cjs/components/image/image.d.ts +2 -2
  22. package/dist/cjs/components/image/image.js +3 -3
  23. package/dist/cjs/components/image/index.d.ts +0 -1
  24. package/dist/cjs/components/image/index.js +0 -1
  25. package/dist/cjs/components/overlayBase/overlayBase.js +1 -1
  26. package/dist/cjs/components/palette/palette.d.ts +3 -3
  27. package/dist/cjs/components/palette/palette.js +9 -9
  28. package/dist/cjs/components/pickerDialog/pickerDialog.style.js +6 -0
  29. package/dist/cjs/components/pinchable/index.d.ts +1 -0
  30. package/dist/cjs/components/pinchable/index.js +4 -0
  31. package/dist/cjs/components/pinchable/pinchable.d.ts +33 -0
  32. package/dist/cjs/components/pinchable/pinchable.js +160 -0
  33. package/dist/cjs/components/pinchable/pinchable.style.d.ts +6 -0
  34. package/dist/cjs/components/pinchable/pinchable.style.js +21 -0
  35. package/dist/cjs/components/placeholder/placeholder.style.js +1 -0
  36. package/dist/cjs/components/progress/progress.d.ts +1 -1
  37. package/dist/cjs/components/rating/rating.d.ts +2 -2
  38. package/dist/cjs/components/rating/rating.js +2 -5
  39. package/dist/cjs/components/rating/rating.style.js +1 -2
  40. package/dist/cjs/components/resizable/resizable.d.ts +2 -2
  41. package/dist/cjs/components/resizable/resizable.js +12 -12
  42. package/dist/cjs/components/scrollbar/scrollbar.d.ts +1 -1
  43. package/dist/cjs/components/scrollbar/scrollbar.js +6 -6
  44. package/dist/cjs/components/segmented/SegmentedOption.d.ts +1 -1
  45. package/dist/cjs/components/selectedList/selectedItem.js +1 -1
  46. package/dist/cjs/components/selectedList/selectedList.style.js +1 -1
  47. package/dist/cjs/components/skeleton/skeleton.d.ts +1 -1
  48. package/dist/cjs/components/slidableActions/slidableActions.d.ts +9 -5
  49. package/dist/cjs/components/slidableActions/slidableActions.js +21 -25
  50. package/dist/cjs/components/slidableActions/slidableActions.style.d.ts +1 -1
  51. package/dist/cjs/components/slidableActions/slidableActions.style.js +14 -13
  52. package/dist/cjs/components/slidableActions/slidableActionsAction.d.ts +4 -2
  53. package/dist/cjs/components/slidableActions/slidableActionsAction.js +6 -2
  54. package/dist/cjs/components/slider/slider.d.ts +3 -3
  55. package/dist/cjs/components/slider/slider.js +8 -8
  56. package/dist/cjs/components/tabs/tabs.js +1 -1
  57. package/dist/cjs/components/theme/themeVariables.js +1 -1
  58. package/dist/cjs/components/upload/itemStatus.d.ts +1 -1
  59. package/dist/cjs/components/upload/itemStatus.js +3 -0
  60. package/dist/cjs/components/upload/upload.d.ts +3 -3
  61. package/dist/cjs/components/upload/upload.js +1 -1
  62. package/dist/cjs/extensions/documentViewer/documentViewer.js +1 -2
  63. package/dist/cjs/index.d.ts +2 -0
  64. package/dist/cjs/index.js +2 -0
  65. package/dist/cjs/utils/dnd.d.ts +0 -42
  66. package/dist/cjs/utils/dnd.js +0 -121
  67. package/dist/cjs/utils/gesture.d.ts +69 -0
  68. package/dist/cjs/utils/gesture.js +250 -0
  69. package/dist/cjs/utils/index.d.ts +1 -0
  70. package/dist/cjs/utils/index.js +1 -0
  71. package/dist/cjs/utils/style.js +1 -1
  72. package/dist/cjs/utils/utils.d.ts +0 -2
  73. package/dist/cjs/utils/utils.js +0 -2
  74. package/dist/esm/components/alert/alert.style.js +1 -0
  75. package/dist/esm/components/checkboxBase/checkboxBase.js +1 -2
  76. package/dist/esm/components/checkboxBaseGroup/checkboxBaseGroup.d.ts +0 -2
  77. package/dist/esm/components/checkboxBaseGroup/checkboxBaseGroup.js +4 -4
  78. package/dist/esm/components/clickAway/clickAway.d.ts +285 -1
  79. package/dist/esm/components/clickAway/clickAway.js +2 -3
  80. package/dist/esm/components/dataGrid/columnResize.js +6 -6
  81. package/dist/esm/components/dataGrid/dataGrid.js +1 -1
  82. package/dist/esm/components/dataGrid/dataGridRows.js +3 -1
  83. package/dist/esm/components/descriptions/descriptionItem.d.ts +3 -3
  84. package/dist/esm/components/draggable/draggable.d.ts +6 -6
  85. package/dist/esm/components/draggable/draggable.js +14 -19
  86. package/dist/esm/components/{image/imagePreview.d.ts → gallery/gallery.d.ts} +7 -3
  87. package/dist/esm/components/gallery/gallery.js +162 -0
  88. package/dist/{cjs/components/image/imagePreview.style.d.ts → esm/components/gallery/gallery.style.d.ts} +3 -1
  89. package/dist/esm/components/{image/imagePreview.style.js → gallery/gallery.style.js} +49 -13
  90. package/dist/esm/components/gallery/imageItem.d.ts +14 -0
  91. package/dist/esm/components/gallery/imageItem.js +48 -0
  92. package/dist/esm/components/gallery/index.d.ts +1 -0
  93. package/dist/esm/components/gallery/index.js +1 -0
  94. package/dist/esm/components/image/image.d.ts +2 -2
  95. package/dist/esm/components/image/image.js +3 -3
  96. package/dist/esm/components/image/index.d.ts +0 -1
  97. package/dist/esm/components/image/index.js +0 -1
  98. package/dist/esm/components/overlayBase/overlayBase.js +1 -1
  99. package/dist/esm/components/palette/palette.d.ts +3 -3
  100. package/dist/esm/components/palette/palette.js +10 -10
  101. package/dist/esm/components/pickerDialog/pickerDialog.style.js +6 -0
  102. package/dist/esm/components/pinchable/index.d.ts +1 -0
  103. package/dist/esm/components/pinchable/index.js +1 -0
  104. package/dist/esm/components/pinchable/pinchable.d.ts +33 -0
  105. package/dist/esm/components/pinchable/pinchable.js +157 -0
  106. package/dist/esm/components/pinchable/pinchable.style.d.ts +6 -0
  107. package/dist/esm/components/pinchable/pinchable.style.js +18 -0
  108. package/dist/esm/components/placeholder/placeholder.style.js +1 -0
  109. package/dist/esm/components/progress/progress.d.ts +1 -1
  110. package/dist/esm/components/rating/rating.d.ts +2 -2
  111. package/dist/esm/components/rating/rating.js +2 -5
  112. package/dist/esm/components/rating/rating.style.js +1 -2
  113. package/dist/esm/components/resizable/resizable.d.ts +2 -2
  114. package/dist/esm/components/resizable/resizable.js +13 -13
  115. package/dist/esm/components/scrollbar/scrollbar.d.ts +1 -1
  116. package/dist/esm/components/scrollbar/scrollbar.js +7 -7
  117. package/dist/esm/components/segmented/SegmentedOption.d.ts +1 -1
  118. package/dist/esm/components/selectedList/selectedItem.js +1 -1
  119. package/dist/esm/components/selectedList/selectedList.style.js +1 -1
  120. package/dist/esm/components/skeleton/skeleton.d.ts +1 -1
  121. package/dist/esm/components/slidableActions/slidableActions.d.ts +9 -5
  122. package/dist/esm/components/slidableActions/slidableActions.js +22 -26
  123. package/dist/esm/components/slidableActions/slidableActions.style.d.ts +1 -1
  124. package/dist/esm/components/slidableActions/slidableActions.style.js +14 -13
  125. package/dist/esm/components/slidableActions/slidableActionsAction.d.ts +4 -2
  126. package/dist/esm/components/slidableActions/slidableActionsAction.js +6 -2
  127. package/dist/esm/components/slider/slider.d.ts +3 -3
  128. package/dist/esm/components/slider/slider.js +9 -9
  129. package/dist/esm/components/tabs/tabs.js +1 -1
  130. package/dist/esm/components/theme/themeVariables.js +1 -1
  131. package/dist/esm/components/upload/itemStatus.d.ts +1 -1
  132. package/dist/esm/components/upload/itemStatus.js +3 -0
  133. package/dist/esm/components/upload/upload.d.ts +3 -3
  134. package/dist/esm/components/upload/upload.js +1 -1
  135. package/dist/esm/extensions/documentViewer/documentViewer.js +2 -3
  136. package/dist/esm/index.d.ts +2 -0
  137. package/dist/esm/index.js +2 -0
  138. package/dist/esm/utils/dnd.d.ts +0 -42
  139. package/dist/esm/utils/dnd.js +0 -120
  140. package/dist/esm/utils/gesture.d.ts +69 -0
  141. package/dist/esm/utils/gesture.js +245 -0
  142. package/dist/esm/utils/index.d.ts +1 -0
  143. package/dist/esm/utils/index.js +1 -0
  144. package/dist/esm/utils/style.js +1 -1
  145. package/dist/esm/utils/utils.d.ts +0 -2
  146. package/dist/esm/utils/utils.js +0 -2
  147. package/documentation/dist/assets/{index-B6FOULC1.js → index-DXo4Z-bc.js} +1281 -1271
  148. package/documentation/dist/components/actionSheet.md +3 -3
  149. package/documentation/dist/components/autocomplete.md +10 -10
  150. package/documentation/dist/components/breadcrumb.md +1 -1
  151. package/documentation/dist/components/checkbox.md +24 -1
  152. package/documentation/dist/components/contextMenu.md +1 -1
  153. package/documentation/dist/components/counter.md +13 -13
  154. package/documentation/dist/components/dialog.md +3 -3
  155. package/documentation/dist/components/formDialog.md +6 -6
  156. package/documentation/dist/components/image.md +5 -3
  157. package/documentation/dist/components/menu.md +1 -1
  158. package/documentation/dist/components/pagination.md +15 -1
  159. package/documentation/dist/components/pickerDialog.md +56 -0
  160. package/documentation/dist/components/placeholder.md +30 -0
  161. package/documentation/dist/components/progress.md +43 -0
  162. package/documentation/dist/components/radio.md +37 -0
  163. package/documentation/dist/components/rating.md +35 -0
  164. package/documentation/dist/components/resizable.md +41 -0
  165. package/documentation/dist/components/scrollbar.md +31 -0
  166. package/documentation/dist/components/segmented.md +56 -0
  167. package/documentation/dist/components/select.md +30 -0
  168. package/documentation/dist/components/skeleton.md +26 -0
  169. package/documentation/dist/components/slidableActions.md +53 -0
  170. package/documentation/dist/guide/globalMethods.md +6 -6
  171. package/documentation/dist/index.html +1 -1
  172. package/package.json +6 -6
  173. package/dist/cjs/components/image/imagePreview.js +0 -63
  174. package/dist/esm/components/image/imagePreview.js +0 -60
@@ -0,0 +1,53 @@
1
+ # SlidableActions 滑动操作
2
+
3
+ ## 示例
4
+
5
+ ```tsx
6
+ import {SlidableActions} from '@canlooks/can-ui'
7
+
8
+ export default function Index() {
9
+ return (
10
+ <SlidableActions
11
+ style={{width: 400}}
12
+ leftActions={[
13
+ {
14
+ label: '操作1',
15
+ color: 'warning'
16
+ },
17
+ {
18
+ label: '操作2',
19
+ color: 'info'
20
+ }
21
+ ]}
22
+ rightActions={{
23
+ label: '删除',
24
+ color: 'error'
25
+ }}
26
+ >
27
+ <MenuItem label="左右滑动显示更多操作"/>
28
+ </SlidableActions>
29
+ )
30
+ }
31
+ ```
32
+
33
+ ## Props
34
+
35
+ | 属性 | 类型 | 默认值 | 说明 |
36
+ |------------------------|-------------------------------------------|------------|-----------------|
37
+ | leftActions | [ActionType](#ActionType) \| ActionType[] | - | |
38
+ | rightActions | ActionType \| ActionType[] | - | |
39
+ | autoReturn | boolean | true | 点击action后是否自动归位 |
40
+ | bounceElementTranslate | number | 12 | 元素弹性移动距离 |
41
+ | bounceDragDistance | number | 240 | 手指弹性拖拽距离 |
42
+ | effectiveSpeed | number | 450 (px/s) | 滑动生效的速度 |
43
+ | disabled | boolean | false | |
44
+
45
+ ## ActionType
46
+
47
+ | 属性 | 类型 | 默认值 | 说明 |
48
+ |-------------|-----------------------------------------|-----------|---------------------|
49
+ | color | string | 'default' | |
50
+ | label | ReactNode | - | |
51
+ | icon | ReactNode | - | |
52
+ | autoReturn | boolean | true | 点击当前action后是否自动归位 |
53
+ | buttonProps | [ButtonProps](/components/button#Props) | - | 传递至`<Button/>`组件的属性 |
@@ -47,15 +47,15 @@ export default function Index() {
47
47
  | minWidth | string \| number | | |
48
48
  | maxWidth | string \| number | 100% | |
49
49
  | showClose | boolean | | 是否显示关闭按钮 |
50
- | closeProps | [ButtonProps](/components/button) | | |
50
+ | closeProps | [ButtonProps](/components/button#Props) | | |
51
51
  | showConfirm | boolean | true | 是否显示确定按钮 |
52
52
  | confirmText | ReactNode | '确定' | |
53
- | confirmProps | [ButtonProps](/components/button) | | |
53
+ | confirmProps | [ButtonProps](/components/button#Props) | | |
54
54
  | onConfirm | (...args) => void | | |
55
55
  | confirmLoading | boolean | | 确定按钮的加载状态 |
56
56
  | showCancel | boolean | true | 取消按钮 |
57
57
  | cancelText | ReactNode | '取消' | |
58
- | cancelProps | [ButtonProps](/components/button) | | |
58
+ | cancelProps | [ButtonProps](/components/button#Props) | | |
59
59
  | onCancel | (...args) => void | | |
60
60
  | draggable | boolean | | 对话框是否可拖拽 |
61
61
  | maskClosable | boolean | true | 是否可以点击遮罩层关闭 |
@@ -188,7 +188,7 @@ export default function Index() {
188
188
  | 属性 | 类型 | 默认值 | 说明 |
189
189
  |-------------------|--------------------------------------|---------------------------------------|----------------------------------------------------------------|
190
190
  | title | ReactNode | | |
191
- | actions | ReactNode | [MenuItemProps](/components/menuItem) | |
191
+ | actions | ReactNode | [MenuItemProps](/components/menuItem#MenuItemProps) | |
192
192
  | placement | 'top' \| 'bottom' | 'bottom' | 菜单弹出的位置 |
193
193
  | maskClosable | boolean | true | 是否可以点击遮罩层关闭 |
194
194
  | escapeClosable | boolean | false | 是否可以点击`ESC`关闭 |
@@ -196,10 +196,10 @@ export default function Index() {
196
196
  | onConfirm | (e: MouseEvent) => void | | 点击确定 |
197
197
  | showConfirm | boolean | true | 是否显示确定选项,`actionSheet.confirm`方法有效 |
198
198
  | confirmText | ReactNode | '确定' | |
199
- | confirmProps | [ButtonProps](/components/button) | | |
199
+ | confirmProps | [ButtonProps](/components/button#Props) | | |
200
200
  | showCancel | boolean | true | 是否显示取消选项,`actionSheet.confirm`方法有效 |
201
201
  | cancelText | ReactNode | '取消' | |
202
- | cancelProps | [ButtonProps](/components/button) | | |
202
+ | cancelProps | [ButtonProps](/components/button#Props) | | |
203
203
  | onCancel | (e: MouseEvent) => void | | 点击取消 |
204
204
  | defaultOpen | boolean | | 打开状态 |
205
205
  | open | boolean | | 受控的打开状态 |
@@ -5,7 +5,7 @@
5
5
  <link rel="shortcut icon" href="/logo.png">
6
6
  <meta name="viewport" content="width=device-width,initial-scale=1.0">
7
7
  <title>Canlooks UI</title>
8
- <script type="module" crossorigin src="/assets/index-B6FOULC1.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-DXo4Z-bc.js"></script>
9
9
  </head>
10
10
  <body>
11
11
  <div id="app"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@canlooks/can-ui",
3
- "version": "0.0.41",
3
+ "version": "0.0.43",
4
4
  "author": "C.CanLiang <canlooks@gmail.com>",
5
5
  "description": "My ui framework",
6
6
  "license": "MIT",
@@ -39,12 +39,12 @@
39
39
  }
40
40
  },
41
41
  "scripts": {
42
- "clean": "npx shx rm -rf dist",
43
- "build": "npm run clean && tscup && npm run build:documentation",
44
- "build:core": "npm run clean && tscup",
42
+ "clean": "npx shx rm -rf dist documentation/bootstrap.mjs documentation/vite.config.mjs",
43
+ "build:core": "tsc -m esnext --outDir dist/esm & tsc -m commonjs --outDir dist/cjs",
45
44
  "build:documentation": "vite build -c documentation/vite.config.mts && tsc -p documentation/tsconfig.bootstrap.json",
45
+ "rebuild": "npm run clean && npm run build:core && npm run build:documentation",
46
46
  "dev": "vite -c test/vite.config.mts",
47
- "dev:documentation": "vite -c documentation/vite.config.mts",
47
+ "dev:documentation": "vite -c documentation/vite.config.mts --host",
48
48
  "test:unit": "npx ts-node test/unit.ts"
49
49
  },
50
50
  "dependencies": {
@@ -65,7 +65,6 @@
65
65
  "devDependencies": {
66
66
  "@ant-design/icons": "^6.0.0",
67
67
  "@canlooks/react-router": "^1.0.11",
68
- "@canlooks/tscup": "^0.1.2",
69
68
  "@emotion/styled": "^11.14.0",
70
69
  "@mdi/js": "^7.4.47",
71
70
  "@mdi/react": "^1.6.1",
@@ -80,6 +79,7 @@
80
79
  "react-markdown": "^10.1.0",
81
80
  "react-syntax-highlighter": "^15.6.1",
82
81
  "remark-gfm": "^4.0.1",
82
+ "ts-node": "^10.9.2",
83
83
  "typescript": "^5.8.3",
84
84
  "vite": "^6.2.5"
85
85
  }
@@ -1,63 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ImagePreview = void 0;
4
- const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
5
- const react_1 = require("react");
6
- const modal_1 = require("../modal");
7
- const utils_1 = require("../../utils");
8
- const imagePreview_style_1 = require("./imagePreview.style");
9
- const button_1 = require("../button");
10
- const react_zoom_pan_pinch_1 = require("react-zoom-pan-pinch");
11
- const tooltip_1 = require("../tooltip");
12
- const __1 = require("../..");
13
- const faXmark_1 = require("@fortawesome/free-solid-svg-icons/faXmark");
14
- const faExpand_1 = require("@fortawesome/free-solid-svg-icons/faExpand");
15
- const faAngleLeft_1 = require("@fortawesome/free-solid-svg-icons/faAngleLeft");
16
- const faAngleRight_1 = require("@fortawesome/free-solid-svg-icons/faAngleRight");
17
- const faArrowRotateLeft_1 = require("@fortawesome/free-solid-svg-icons/faArrowRotateLeft");
18
- const faArrowRotateRight_1 = require("@fortawesome/free-solid-svg-icons/faArrowRotateRight");
19
- const faMagnifyingGlassPlus_1 = require("@fortawesome/free-solid-svg-icons/faMagnifyingGlassPlus");
20
- const faMagnifyingGlassMinus_1 = require("@fortawesome/free-solid-svg-icons/faMagnifyingGlassMinus");
21
- exports.ImagePreview = (0, react_1.memo)(({ src = [], defaultIndex = 0, index, onIndexChange, defaultOpen = false, open, onOpenChange, showRotation = true, showZoom = true, showClose = true, renderControl, transformWrapperProps, ...props }) => {
22
- const srcArr = (0, utils_1.toArray)(src);
23
- const [innerOpen, setInnerOpen] = (0, utils_1.useControlled)(defaultOpen, open, onOpenChange);
24
- const [innerIndex, setInnerIndex] = (0, utils_1.useControlled)(defaultIndex, index, onIndexChange);
25
- const innerTransformWrapperRef = (0, react_1.useRef)(null);
26
- const imgLoaded = () => {
27
- innerTransformWrapperRef.current.centerView();
28
- };
29
- const prev = (e) => {
30
- e.stopPropagation();
31
- setInnerIndex(o => (o - 1 + srcArr.length) % srcArr.length);
32
- innerTransformWrapperRef.current?.resetTransform();
33
- };
34
- const next = (e) => {
35
- e.stopPropagation();
36
- setInnerIndex(o => (o + 1) % srcArr.length);
37
- innerTransformWrapperRef.current?.resetTransform();
38
- };
39
- const [rotate, setRotate] = (0, react_1.useState)(0);
40
- const isPanning = (0, react_1.useRef)(false);
41
- const commonControlProps = {
42
- className: imagePreview_style_1.classes.button,
43
- shape: 'circular',
44
- size: 'large',
45
- color: 'text'
46
- };
47
- return ((0, jsx_runtime_1.jsx)(modal_1.Modal, { ...props, css: imagePreview_style_1.style, className: (0, utils_1.clsx)(imagePreview_style_1.classes.root, props.className), open: innerOpen.current, maskProps: {
48
- ...props.maskProps,
49
- children: ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { className: imagePreview_style_1.classes.control, children: [renderControl, showRotation &&
50
- (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { title: "\u65CB\u8F6C-90\u00B0", children: (0, jsx_runtime_1.jsx)(button_1.Button, { ...commonControlProps, onClick: () => setRotate(rotate - 90), children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: faArrowRotateLeft_1.faArrowRotateLeft }) }) }), (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { title: "\u65CB\u8F6C90\u00B0", children: (0, jsx_runtime_1.jsx)(button_1.Button, { ...commonControlProps, onClick: () => setRotate(rotate + 90), children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: faArrowRotateRight_1.faArrowRotateRight }) }) })] }), showZoom &&
51
- (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { title: "\u7F29\u5C0F", children: (0, jsx_runtime_1.jsx)(button_1.Button, { ...commonControlProps, onClick: () => innerTransformWrapperRef.current.zoomOut(), children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: faMagnifyingGlassMinus_1.faMagnifyingGlassMinus }) }) }), (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { title: "\u653E\u5927", children: (0, jsx_runtime_1.jsx)(button_1.Button, { ...commonControlProps, onClick: () => innerTransformWrapperRef.current.zoomIn(), children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: faMagnifyingGlassPlus_1.faMagnifyingGlassPlus }) }) }), (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { title: "\u9002\u5E94\u5C4F\u5E55", children: (0, jsx_runtime_1.jsx)(button_1.Button, { ...commonControlProps, onClick: () => innerTransformWrapperRef.current.resetTransform(), children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: faExpand_1.faExpand }) }) })] }), showClose &&
52
- (0, jsx_runtime_1.jsx)(button_1.Button, { ...commonControlProps, onClick: () => setInnerOpen(false), children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: faXmark_1.faXmark }) })] }), srcArr.length > 1 &&
53
- (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { className: imagePreview_style_1.classes.swap, children: [(0, jsx_runtime_1.jsx)(button_1.Button, { ...commonControlProps, onClick: prev, children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: faAngleLeft_1.faAngleLeft }) }), (0, jsx_runtime_1.jsx)(button_1.Button, { ...commonControlProps, onClick: next, children: (0, jsx_runtime_1.jsx)(__1.Icon, { icon: faAngleRight_1.faAngleRight }) })] }), (0, jsx_runtime_1.jsxs)("div", { className: imagePreview_style_1.classes.counter, children: [innerIndex.current + 1, " / ", srcArr.length] })] })] }))
54
- }, children: (0, jsx_runtime_1.jsx)(react_zoom_pan_pinch_1.TransformWrapper, { smooth: false, ...transformWrapperProps, ref: (0, utils_1.cloneRef)(transformWrapperProps?.ref, innerTransformWrapperRef), minScale: .2, onPanning: (ref, e) => {
55
- transformWrapperProps?.onPanning?.(ref, e);
56
- isPanning.current = true;
57
- }, onPanningStop: (ref, e) => {
58
- transformWrapperProps?.onPanningStop?.(ref, e);
59
- isPanning.current && setTimeout(() => isPanning.current = false);
60
- }, children: (0, jsx_runtime_1.jsx)(react_zoom_pan_pinch_1.TransformComponent, { wrapperClass: imagePreview_style_1.classes.imageWrapper, contentClass: imagePreview_style_1.classes.image, wrapperProps: {
61
- onClick: () => !isPanning.current && setInnerOpen(false)
62
- }, children: (0, jsx_runtime_1.jsx)("img", { src: srcArr[innerIndex.current], style: { rotate: rotate + 'deg' }, onLoad: imgLoaded, alt: "" }, innerIndex.current) }) }) }));
63
- });
@@ -1,60 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
2
- import { memo, useRef, useState } from 'react';
3
- import { Modal } from '../modal';
4
- import { clsx, cloneRef, toArray, useControlled } from '../../utils';
5
- import { classes, style } from './imagePreview.style';
6
- import { Button } from '../button';
7
- import { TransformComponent, TransformWrapper } from 'react-zoom-pan-pinch';
8
- import { Tooltip } from '../tooltip';
9
- import { Icon } from '../..';
10
- import { faXmark } from '@fortawesome/free-solid-svg-icons/faXmark';
11
- import { faExpand } from '@fortawesome/free-solid-svg-icons/faExpand';
12
- import { faAngleLeft } from '@fortawesome/free-solid-svg-icons/faAngleLeft';
13
- import { faAngleRight } from '@fortawesome/free-solid-svg-icons/faAngleRight';
14
- import { faArrowRotateLeft } from '@fortawesome/free-solid-svg-icons/faArrowRotateLeft';
15
- import { faArrowRotateRight } from '@fortawesome/free-solid-svg-icons/faArrowRotateRight';
16
- import { faMagnifyingGlassPlus } from '@fortawesome/free-solid-svg-icons/faMagnifyingGlassPlus';
17
- import { faMagnifyingGlassMinus } from '@fortawesome/free-solid-svg-icons/faMagnifyingGlassMinus';
18
- export const ImagePreview = memo(({ src = [], defaultIndex = 0, index, onIndexChange, defaultOpen = false, open, onOpenChange, showRotation = true, showZoom = true, showClose = true, renderControl, transformWrapperProps, ...props }) => {
19
- const srcArr = toArray(src);
20
- const [innerOpen, setInnerOpen] = useControlled(defaultOpen, open, onOpenChange);
21
- const [innerIndex, setInnerIndex] = useControlled(defaultIndex, index, onIndexChange);
22
- const innerTransformWrapperRef = useRef(null);
23
- const imgLoaded = () => {
24
- innerTransformWrapperRef.current.centerView();
25
- };
26
- const prev = (e) => {
27
- e.stopPropagation();
28
- setInnerIndex(o => (o - 1 + srcArr.length) % srcArr.length);
29
- innerTransformWrapperRef.current?.resetTransform();
30
- };
31
- const next = (e) => {
32
- e.stopPropagation();
33
- setInnerIndex(o => (o + 1) % srcArr.length);
34
- innerTransformWrapperRef.current?.resetTransform();
35
- };
36
- const [rotate, setRotate] = useState(0);
37
- const isPanning = useRef(false);
38
- const commonControlProps = {
39
- className: classes.button,
40
- shape: 'circular',
41
- size: 'large',
42
- color: 'text'
43
- };
44
- return (_jsx(Modal, { ...props, css: style, className: clsx(classes.root, props.className), open: innerOpen.current, maskProps: {
45
- ...props.maskProps,
46
- children: (_jsxs(_Fragment, { children: [_jsxs("div", { className: classes.control, children: [renderControl, showRotation &&
47
- _jsxs(_Fragment, { children: [_jsx(Tooltip, { title: "\u65CB\u8F6C-90\u00B0", children: _jsx(Button, { ...commonControlProps, onClick: () => setRotate(rotate - 90), children: _jsx(Icon, { icon: faArrowRotateLeft }) }) }), _jsx(Tooltip, { title: "\u65CB\u8F6C90\u00B0", children: _jsx(Button, { ...commonControlProps, onClick: () => setRotate(rotate + 90), children: _jsx(Icon, { icon: faArrowRotateRight }) }) })] }), showZoom &&
48
- _jsxs(_Fragment, { children: [_jsx(Tooltip, { title: "\u7F29\u5C0F", children: _jsx(Button, { ...commonControlProps, onClick: () => innerTransformWrapperRef.current.zoomOut(), children: _jsx(Icon, { icon: faMagnifyingGlassMinus }) }) }), _jsx(Tooltip, { title: "\u653E\u5927", children: _jsx(Button, { ...commonControlProps, onClick: () => innerTransformWrapperRef.current.zoomIn(), children: _jsx(Icon, { icon: faMagnifyingGlassPlus }) }) }), _jsx(Tooltip, { title: "\u9002\u5E94\u5C4F\u5E55", children: _jsx(Button, { ...commonControlProps, onClick: () => innerTransformWrapperRef.current.resetTransform(), children: _jsx(Icon, { icon: faExpand }) }) })] }), showClose &&
49
- _jsx(Button, { ...commonControlProps, onClick: () => setInnerOpen(false), children: _jsx(Icon, { icon: faXmark }) })] }), srcArr.length > 1 &&
50
- _jsxs(_Fragment, { children: [_jsxs("div", { className: classes.swap, children: [_jsx(Button, { ...commonControlProps, onClick: prev, children: _jsx(Icon, { icon: faAngleLeft }) }), _jsx(Button, { ...commonControlProps, onClick: next, children: _jsx(Icon, { icon: faAngleRight }) })] }), _jsxs("div", { className: classes.counter, children: [innerIndex.current + 1, " / ", srcArr.length] })] })] }))
51
- }, children: _jsx(TransformWrapper, { smooth: false, ...transformWrapperProps, ref: cloneRef(transformWrapperProps?.ref, innerTransformWrapperRef), minScale: .2, onPanning: (ref, e) => {
52
- transformWrapperProps?.onPanning?.(ref, e);
53
- isPanning.current = true;
54
- }, onPanningStop: (ref, e) => {
55
- transformWrapperProps?.onPanningStop?.(ref, e);
56
- isPanning.current && setTimeout(() => isPanning.current = false);
57
- }, children: _jsx(TransformComponent, { wrapperClass: classes.imageWrapper, contentClass: classes.image, wrapperProps: {
58
- onClick: () => !isPanning.current && setInnerOpen(false)
59
- }, children: _jsx("img", { src: srcArr[innerIndex.current], style: { rotate: rotate + 'deg' }, onLoad: imgLoaded, alt: "" }, innerIndex.current) }) }) }));
60
- });