@cloud-app-dev/vidc 2.0.0-alpha.1 → 2.0.0-alpha.2

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 (243) hide show
  1. package/.umirc.ts +1 -2
  2. package/es/Api/index.d.ts +3 -4
  3. package/es/Api/index.js +7 -8
  4. package/es/AppRedirect/index.css +0 -0
  5. package/es/AppRedirect/index.d.ts +16 -0
  6. package/es/AppRedirect/index.js +38 -0
  7. package/es/AppRoute/Render.d.ts +23 -0
  8. package/es/AppRoute/Render.js +111 -0
  9. package/es/AppRoute/Rendered.d.ts +4 -0
  10. package/es/AppRoute/Rendered.js +11 -0
  11. package/es/AppRoute/index.css +0 -0
  12. package/es/AppRoute/index.d.ts +14 -0
  13. package/es/AppRoute/index.js +106 -0
  14. package/es/AppRoute/interface.d.ts +18 -0
  15. package/es/AppRoute/utils.d.ts +1 -0
  16. package/es/AppRoute/utils.js +28 -0
  17. package/es/Auth/index.d.ts +8 -0
  18. package/es/Auth/index.js +17 -0
  19. package/es/AutoExit/index.js +8 -5
  20. package/es/CheckGroupFixed/index.css +49 -0
  21. package/es/CheckGroupFixed/index.d.ts +17 -0
  22. package/es/CheckGroupFixed/index.js +146 -0
  23. package/es/Config/index.js +24 -3
  24. package/es/Config/interface.d.ts +9 -1
  25. package/es/Config/utils.d.ts +6 -1
  26. package/es/ConfigContext/index.d.ts +3 -0
  27. package/es/ContentBox/BetweenBox/index.css +5 -0
  28. package/es/ContentBox/BetweenBox/index.d.ts +12 -0
  29. package/es/ContentBox/BetweenBox/index.js +24 -0
  30. package/es/ContentBox/InfoBox/index.css +23 -0
  31. package/es/ContentBox/InfoBox/index.d.ts +12 -0
  32. package/es/ContentBox/InfoBox/index.js +26 -0
  33. package/es/ContentBox/TwoColumnBox/index.css +77 -0
  34. package/es/ContentBox/TwoColumnBox/index.d.ts +10 -0
  35. package/es/ContentBox/TwoColumnBox/index.js +50 -0
  36. package/es/ContentBox/deps/content-grid.d.ts +9 -0
  37. package/es/ContentBox/deps/content-grid.js +9 -0
  38. package/es/ContentBox/deps/grid-factory.d.ts +10 -0
  39. package/es/ContentBox/deps/grid-factory.js +72 -0
  40. package/es/ContentBox/deps/simple-grid.d.ts +9 -0
  41. package/es/ContentBox/deps/simple-grid.js +8 -0
  42. package/es/ContentBox/index.css +9 -0
  43. package/es/ContentBox/index.d.ts +14 -0
  44. package/es/ContentBox/index.js +28 -0
  45. package/es/DeviceIcon/icon.js +5 -5
  46. package/es/DeviceIcon/index.js +2 -2
  47. package/es/DeviceList/index.d.ts +1 -1
  48. package/es/DeviceList/index.js +4 -4
  49. package/es/DeviceSelect/index.js +2 -2
  50. package/es/Dict/cache.d.ts +3 -0
  51. package/es/Dict/cache.js +21 -0
  52. package/es/Dict/desc.d.ts +64 -0
  53. package/es/Dict/desc.js +162 -0
  54. package/es/Dict/device.d.ts +28 -0
  55. package/es/Dict/device.js +117 -0
  56. package/es/Dict/hook.d.ts +4 -0
  57. package/es/Dict/hook.js +114 -0
  58. package/es/Dict/index.d.ts +13 -0
  59. package/es/Dict/index.js +14 -0
  60. package/es/Dict/interface.d.ts +16 -0
  61. package/es/Dict/utils.d.ts +11 -0
  62. package/es/Dict/utils.js +51 -0
  63. package/es/Drag/DragAndDropItem.d.ts +4 -0
  64. package/es/Drag/DragAndDropItem.js +145 -0
  65. package/es/Drag/DropItem.d.ts +4 -0
  66. package/es/Drag/DropItem.js +54 -0
  67. package/es/Drag/index.css +0 -0
  68. package/es/Drag/index.d.ts +7 -0
  69. package/es/Drag/index.js +7 -0
  70. package/es/Drag/interface.d.ts +16 -0
  71. package/es/Drawer/Demo.d.ts +3 -0
  72. package/es/Drawer/Demo.js +52 -0
  73. package/es/Drawer/Footer.d.ts +4 -0
  74. package/es/Drawer/Footer.js +26 -0
  75. package/es/Drawer/index.css +39 -0
  76. package/es/Drawer/index.d.ts +12 -0
  77. package/es/Drawer/index.js +41 -0
  78. package/es/Drawer/interface.d.ts +191 -0
  79. package/es/DynamicDeviceList/CheckExt.js +3 -3
  80. package/es/DynamicDeviceList/index.js +2 -2
  81. package/es/DynamicDeviceList/utils.js +2 -2
  82. package/es/DynamicList/demo.d.ts +2 -0
  83. package/es/DynamicList/demo.js +71 -0
  84. package/es/DynamicList/index.css +7 -0
  85. package/es/DynamicList/index.d.ts +31 -0
  86. package/es/DynamicList/index.js +132 -0
  87. package/es/FullScreen/index.css +16 -0
  88. package/es/FullScreen/index.d.ts +10 -0
  89. package/es/FullScreen/index.js +68 -0
  90. package/es/HightLevel/index.css +3 -0
  91. package/es/HightLevel/index.d.ts +9 -0
  92. package/es/HightLevel/index.js +22 -0
  93. package/es/IconFont/index.css +0 -0
  94. package/es/IconFont/index.d.ts +13 -0
  95. package/es/IconFont/index.js +58 -0
  96. package/es/ImageView/index.css +6 -0
  97. package/es/ImageView/index.d.ts +17 -0
  98. package/es/ImageView/index.js +58 -0
  99. package/es/InitialConfig/index.js +5 -9
  100. package/es/InitialRequest/index.js +2 -2
  101. package/es/InitialRequest/utils.js +1 -1
  102. package/es/Input/index.css +8 -0
  103. package/es/Input/index.d.ts +18 -0
  104. package/es/Input/index.js +75 -0
  105. package/es/LabelValue/index.css +18 -0
  106. package/es/LabelValue/index.d.ts +23 -0
  107. package/es/LabelValue/index.js +32 -0
  108. package/es/List/CheckExt.d.ts +10 -0
  109. package/es/List/CheckExt.js +28 -0
  110. package/es/List/index.css +62 -6
  111. package/es/List/index.d.ts +73 -11
  112. package/es/List/index.js +162 -36
  113. package/es/List/renderItem.d.ts +20 -0
  114. package/es/List/renderItem.js +68 -0
  115. package/es/List/utils.d.ts +5 -0
  116. package/es/List/utils.js +18 -0
  117. package/es/ListExt/index.css +9 -0
  118. package/es/ListExt/index.d.ts +19 -0
  119. package/es/ListExt/index.js +44 -0
  120. package/es/LoaderScript/index.d.ts +26 -0
  121. package/es/LoaderScript/index.js +127 -0
  122. package/es/LoaderScript/interface.d.ts +26 -0
  123. package/es/LoaderScript/utils.d.ts +12 -0
  124. package/es/LoaderScript/utils.js +110 -0
  125. package/es/Modal/index.css +43 -0
  126. package/es/Modal/index.d.ts +17 -0
  127. package/es/Modal/index.js +34 -0
  128. package/es/Modal/interface.d.ts +339 -0
  129. package/es/Picture/component/DefaultRects/RectInfo.d.ts +7 -0
  130. package/es/Picture/component/DefaultRects/RectInfo.js +94 -0
  131. package/es/Picture/component/DefaultRects/index.css +247 -0
  132. package/es/Picture/component/DefaultRects/index.d.ts +12 -0
  133. package/es/Picture/component/DefaultRects/index.js +47 -0
  134. package/es/Picture/component/DefaultRects/utils.d.ts +2 -0
  135. package/es/Picture/component/DefaultRects/utils.js +11 -0
  136. package/es/Picture/component/DrawRect/index.css +8 -0
  137. package/es/Picture/component/DrawRect/index.d.ts +14 -0
  138. package/es/Picture/component/DrawRect/index.js +41 -0
  139. package/es/Picture/component/MoveContent/index.css +0 -0
  140. package/es/Picture/component/MoveContent/index.d.ts +39 -0
  141. package/es/Picture/component/MoveContent/index.js +240 -0
  142. package/es/Picture/component/MoveContent/utils.d.ts +4 -0
  143. package/es/Picture/component/MoveContent/utils.js +19 -0
  144. package/es/Picture/component/RectMenu/index.css +31 -0
  145. package/es/Picture/component/RectMenu/index.d.ts +13 -0
  146. package/es/Picture/component/RectMenu/index.js +81 -0
  147. package/es/Picture/component/RectMenu/utils.d.ts +12 -0
  148. package/es/Picture/component/RectMenu/utils.js +22 -0
  149. package/es/Picture/component/Tools/index.css +42 -0
  150. package/es/Picture/component/Tools/index.d.ts +13 -0
  151. package/es/Picture/component/Tools/index.js +83 -0
  152. package/es/Picture/component/WheelScale/index.d.ts +6 -0
  153. package/es/Picture/component/WheelScale/index.js +29 -0
  154. package/es/Picture/dragBound.d.ts +5 -0
  155. package/es/Picture/dragBound.js +77 -0
  156. package/es/Picture/index.css +12 -0
  157. package/es/Picture/index.d.ts +16 -0
  158. package/es/Picture/index.js +344 -0
  159. package/es/Picture/interface.d.ts +67 -0
  160. package/es/Picture/loadCaptureRectImage.d.ts +8 -0
  161. package/es/Picture/loadCaptureRectImage.js +119 -0
  162. package/es/Picture/useDraw.d.ts +1 -0
  163. package/es/Picture/useDraw.js +136 -0
  164. package/es/Picture/utils.d.ts +22 -0
  165. package/es/Picture/utils.js +90 -0
  166. package/es/Progress/index.css +20 -0
  167. package/es/Progress/index.d.ts +11 -0
  168. package/es/Progress/index.js +68 -0
  169. package/es/RefDrawer/index.js +4 -5
  170. package/es/RefModal/index.js +4 -5
  171. package/es/ScrollList/index.css +73 -0
  172. package/es/ScrollList/index.d.ts +24 -0
  173. package/es/ScrollList/index.js +261 -0
  174. package/es/ScrollList/utils.js +84 -0
  175. package/es/Service/http.js +0 -17
  176. package/es/TableLayout/index.css +4 -0
  177. package/es/TableLayout/index.d.ts +10 -0
  178. package/es/TableLayout/index.js +64 -0
  179. package/es/ThemeAntd/index.css +501 -0
  180. package/es/ThemeAntd/index.d.ts +7 -0
  181. package/es/ThemeAntd/index.js +6 -0
  182. package/es/ThemeAntd/style/button.css +46 -0
  183. package/es/ThemeAntd/style/checkbox.css +64 -0
  184. package/es/ThemeAntd/style/form.css +10 -0
  185. package/es/ThemeAntd/style/input.css +58 -0
  186. package/es/ThemeAntd/style/pagination.css +44 -0
  187. package/es/ThemeAntd/style/picker.css +86 -0
  188. package/es/ThemeAntd/style/popover.css +3 -0
  189. package/es/ThemeAntd/style/radio.css +71 -0
  190. package/es/ThemeAntd/style/scrollbar.css +19 -0
  191. package/es/ThemeAntd/style/select.css +57 -0
  192. package/es/ThemeAntd/style/table.css +36 -0
  193. package/es/ThemeAntd/style/tree.css +4 -0
  194. package/es/Tree/demo.d.ts +2 -0
  195. package/es/Tree/demo.js +69 -0
  196. package/es/Tree/index.css +64 -0
  197. package/es/Tree/index.d.ts +24 -0
  198. package/es/Tree/index.js +83 -0
  199. package/es/TreeMode/index.d.ts +1 -1
  200. package/es/TreeMode/index.js +6 -6
  201. package/es/TreeTitle/index.js +2 -2
  202. package/es/UserSelect/index.d.ts +3 -3
  203. package/es/UserSelect/index.js +13 -15
  204. package/es/VList/index.css +4 -0
  205. package/es/VList/index.d.ts +16 -0
  206. package/es/VList/index.js +56 -0
  207. package/es/VList/utils.d.ts +10 -0
  208. package/es/VList/utils.js +17 -0
  209. package/es/WorkerFlow/Form/Condition.js +6 -6
  210. package/es/WorkerFlow/Form/EmptyUserSet.js +2 -2
  211. package/es/WorkerFlow/Form/FormAuth.js +2 -2
  212. package/es/WorkerFlow/Form/GroupSelect.js +2 -2
  213. package/es/WorkerFlow/Form/GroupSelectModalContent.js +5 -5
  214. package/es/WorkerFlow/Form/LevelGroupSelect.js +3 -3
  215. package/es/WorkerFlow/Form/UserAndGroupSelect.js +2 -2
  216. package/es/WorkerFlow/Form/UserSelect.js +2 -2
  217. package/es/WorkerFlow/Form/UserSelectModalContent.js +3 -4
  218. package/es/WorkerFlow/Form/UserSet.js +2 -2
  219. package/es/WorkerFlow/Nodes/Add.js +2 -3
  220. package/es/WorkerFlow/Nodes/AddOption.js +2 -2
  221. package/es/WorkerFlow/Nodes/Approver.js +2 -2
  222. package/es/WorkerFlow/Nodes/Condition.js +2 -2
  223. package/es/WorkerFlow/Nodes/Handle.js +2 -2
  224. package/es/WorkerFlow/Nodes/Notifier.js +2 -2
  225. package/es/WorkerFlow/Nodes/TitleElement.js +5 -8
  226. package/es/WorkerFlow/index.js +2 -3
  227. package/es/core.d.ts +27 -0
  228. package/es/index.d.ts +30 -0
  229. package/es/index.js +30 -0
  230. package/es/useChangeEffect/index.d.ts +3 -0
  231. package/es/useChangeEffect/index.js +32 -0
  232. package/es/useDrawer/index.d.ts +14 -0
  233. package/es/useDrawer/index.js +90 -0
  234. package/es/useHistory/index.css +0 -0
  235. package/es/useHistory/index.d.ts +3 -0
  236. package/es/useHistory/index.js +14 -0
  237. package/es/useHttp/index.d.ts +8 -0
  238. package/es/useHttp/index.js +78 -0
  239. package/es/useModal/index.d.ts +14 -0
  240. package/es/useModal/index.js +92 -0
  241. package/es/utils.d.ts +2 -0
  242. package/es/utils.js +32 -0
  243. package/package.json +11 -5
@@ -0,0 +1,344 @@
1
+ import _resizeObserver from "@cloud-app-dev/utils/es/resizeObserver";
2
+
3
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
4
+
5
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
6
+
7
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
8
+
9
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
10
+
11
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
12
+
13
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
+
15
+ import { __awaiter, __rest } from "tslib";
16
+ import React, { useMemo, useRef, useState, useCallback, useEffect } from 'react';
17
+ import MoveContent from './component/MoveContent';
18
+ import { getRectImagePath } from './loadCaptureRectImage';
19
+ import { computedBound } from './dragBound';
20
+ import { customContextMenu, computedRectScale, cloneImageNode } from './utils';
21
+ import useDraw from './useDraw';
22
+ import Tools from './component/Tools';
23
+ import DrawRect from './component/DrawRect';
24
+ import WheelScale from './component/WheelScale';
25
+ import DefaultRects from './component/DefaultRects';
26
+ import { isFunction } from 'lodash';
27
+ import "./index.css";
28
+
29
+ function Picture(_a) {
30
+ var _this = this;
31
+
32
+ var className = _a.className,
33
+ width = _a.width,
34
+ height = _a.height,
35
+ minHeight = _a.minHeight,
36
+ disabledDrag = _a.disabledDrag,
37
+ imagePath = _a.imagePath,
38
+ rects = _a.rects,
39
+ isOpenSelect = _a.isOpenSelect,
40
+ disabledDrawMenu = _a.disabledDrawMenu,
41
+ menus = _a.menus,
42
+ hasTool = _a.hasTool,
43
+ fullScreenEle = _a.fullScreenEle,
44
+ props = __rest(_a, ["className", "width", "height", "minHeight", "disabledDrag", "imagePath", "rects", "isOpenSelect", "disabledDrawMenu", "menus", "hasTool", "fullScreenEle"]);
45
+
46
+ var _useMemo = useMemo(function () {
47
+ return props;
48
+ }, [props]),
49
+ imgDownload = _useMemo.imgDownload,
50
+ onClickRect = _useMemo.onClickRect,
51
+ onMenuClick = _useMemo.onMenuClick,
52
+ children = _useMemo.children;
53
+
54
+ var _useState = useState({
55
+ x: 0,
56
+ y: 0,
57
+ rotate: 0,
58
+ scale: 1,
59
+ baseXOrY: 'x',
60
+ forceUpdateKey: Date.now(),
61
+ fullScreenStatus: false
62
+ }),
63
+ _useState2 = _slicedToArray(_useState, 2),
64
+ state = _useState2[0],
65
+ setState = _useState2[1];
66
+
67
+ var layoutRef = useRef(null);
68
+ var moveActionRef = useRef(null);
69
+ var domImgRef = useRef(null);
70
+ var imageSourceRef = useRef(null);
71
+
72
+ var _useDraw = useDraw(layoutRef.current, isOpenSelect),
73
+ _useDraw2 = _slicedToArray(_useDraw, 2),
74
+ selectArea = _useDraw2[0],
75
+ isEnd = _useDraw2[1];
76
+
77
+ var loadImageSuccess = useCallback(function (flag) {
78
+ return __awaiter(_this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
79
+ var _domImgRef$current, width, height;
80
+
81
+ return regeneratorRuntime.wrap(function _callee$(_context) {
82
+ while (1) {
83
+ switch (_context.prev = _context.next) {
84
+ case 0:
85
+ _context.next = 2;
86
+ return cloneImageNode(domImgRef.current);
87
+
88
+ case 2:
89
+ imageSourceRef.current = _context.sent;
90
+ _domImgRef$current = domImgRef.current, width = _domImgRef$current.width, height = _domImgRef$current.height;
91
+ setState(function (old) {
92
+ return Object.assign(Object.assign({}, old), {
93
+ forceUpdateKey: Date.now(),
94
+ baseXOrY: width > height ? 'x' : 'y',
95
+ fullScreenStatus: !!flag
96
+ });
97
+ });
98
+
99
+ case 5:
100
+ case "end":
101
+ return _context.stop();
102
+ }
103
+ }
104
+ }, _callee);
105
+ }));
106
+ }, []);
107
+ /**
108
+ * 设置图片缩放
109
+ */
110
+
111
+ var setScale = useCallback(function (changeValue) {
112
+ var currentValue = state.scale;
113
+
114
+ if (currentValue === 3 && changeValue > 0) {
115
+ return;
116
+ }
117
+
118
+ if (currentValue === 1 && changeValue < 0) {
119
+ return;
120
+ }
121
+
122
+ var scale = currentValue + changeValue;
123
+
124
+ if (scale > 3) {
125
+ scale = 3;
126
+ }
127
+
128
+ if (scale < 1) {
129
+ scale = 1;
130
+ }
131
+
132
+ setState(function (old) {
133
+ return Object.assign(Object.assign({}, old), {
134
+ scale: scale
135
+ });
136
+ });
137
+ }, [state.scale]);
138
+ /**
139
+ * 设置图谱旋转
140
+ */
141
+
142
+ var setRotate = useCallback(function (changeValue) {
143
+ var currentValue = state.rotate;
144
+ setState(function (old) {
145
+ return Object.assign(Object.assign({}, old), {
146
+ rotate: currentValue + changeValue
147
+ });
148
+ });
149
+ }, [state.rotate]);
150
+ /**
151
+ * 重置图片位置
152
+ */
153
+
154
+ var resetPicture = useCallback(function (event) {
155
+ event.stopPropagation(event);
156
+ setState(function (old) {
157
+ return Object.assign(Object.assign({}, old), {
158
+ scale: 1,
159
+ rotate: 0
160
+ });
161
+ });
162
+ moveActionRef.current.updatePosition({
163
+ x: 0,
164
+ y: 0
165
+ });
166
+ }, []);
167
+ /**
168
+ * 拖拽更新位置
169
+ */
170
+
171
+ var onDragChange = useCallback(function (_ref) {
172
+ var x = _ref.x,
173
+ y = _ref.y;
174
+ return setState(function (old) {
175
+ return Object.assign(Object.assign({}, old), {
176
+ x: x,
177
+ y: y
178
+ });
179
+ });
180
+ }, []);
181
+ /**
182
+ * 拖拽结束更新位置,计算边界
183
+ */
184
+
185
+ var onDragEnd = useCallback(function (_, currrentPosition) {
186
+ var scale = state.scale,
187
+ rotate = state.rotate;
188
+
189
+ if (!layoutRef.current) {
190
+ return;
191
+ }
192
+
193
+ var position = computedBound(layoutRef.current, currrentPosition, scale, rotate);
194
+
195
+ if (position) {
196
+ moveActionRef.current.updatePosition(position);
197
+ }
198
+ }, [state]);
199
+ /**
200
+ * 获取结构化的小图(base64)
201
+ */
202
+
203
+ var getRectImage = useCallback(function (rect) {
204
+ var scale = state.scale,
205
+ rotate = state.rotate,
206
+ x = state.x,
207
+ y = state.y;
208
+ return getRectImagePath(imageSourceRef.current, domImgRef.current, rect, {
209
+ scale: scale,
210
+ rotate: rotate,
211
+ x: x,
212
+ y: y
213
+ });
214
+ }, [state]);
215
+ useEffect(function () {
216
+ var timer;
217
+
218
+ var fn = function fn() {
219
+ clearTimeout(timer);
220
+ timer = setTimeout(function () {
221
+ setState(function (old) {
222
+ return Object.assign(Object.assign({}, old), {
223
+ forceUpdateKey: Date.now()
224
+ });
225
+ });
226
+ }, 200);
227
+ };
228
+
229
+ var dom = layoutRef.current;
230
+
231
+ _resizeObserver.createResizeObserver(dom, fn);
232
+
233
+ return function () {
234
+ _resizeObserver.unResizeObserver(dom, fn);
235
+ };
236
+ }, []); // eslint-disable-next-line react-hooks/exhaustive-deps
237
+
238
+ var scaleRects = useMemo(function () {
239
+ return computedRectScale({
240
+ imageSource: imageSourceRef.current,
241
+ domImg: domImgRef.current,
242
+ rects: rects
243
+ });
244
+ }, [rects, state.forceUpdateKey]);
245
+ var isEmpty = useMemo(function () {
246
+ return selectArea.includes(0);
247
+ }, [selectArea]);
248
+
249
+ var _useMemo2 = useMemo(function () {
250
+ return state;
251
+ }, [state]),
252
+ x = _useMemo2.x,
253
+ y = _useMemo2.y,
254
+ scale = _useMemo2.scale,
255
+ rotate = _useMemo2.rotate,
256
+ baseXOrY = _useMemo2.baseXOrY;
257
+
258
+ var renderOptions = {
259
+ isEnd: isEnd,
260
+ isOpenSelect: isOpenSelect,
261
+ selectArea: selectArea,
262
+ getRectImage: getRectImage,
263
+ containerEle: layoutRef.current,
264
+ fullScreenStatus: state.fullScreenStatus
265
+ };
266
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
267
+ className: "picture-view-layout ".concat(className),
268
+ style: {
269
+ width: width || '100%',
270
+ height: height || '100%',
271
+ minHeight: minHeight
272
+ },
273
+ ref: layoutRef,
274
+ onContextMenu: customContextMenu
275
+ }, /*#__PURE__*/React.createElement(MoveContent, {
276
+ className: "picture-move-layout",
277
+ disabled: isOpenSelect || disabledDrag,
278
+ position: {
279
+ x: x,
280
+ y: y
281
+ },
282
+ ref: moveActionRef,
283
+ onDragChange: onDragChange,
284
+ onDragEnd: onDragEnd,
285
+ style: {
286
+ minHeight: minHeight
287
+ },
288
+ size: {
289
+ width: width ? 'max-content' : '100%',
290
+ height: height ? 'max-content' : '100%'
291
+ }
292
+ }, /*#__PURE__*/React.createElement("div", {
293
+ style: {
294
+ transform: "scale(".concat(scale, ") rotate(").concat(rotate, "deg)")
295
+ }
296
+ }, /*#__PURE__*/React.createElement("img", {
297
+ alt: "",
298
+ ref: domImgRef,
299
+ crossOrigin: "anonymous",
300
+ style: {
301
+ maxWidth: baseXOrY === 'x' ? width || '100%' : 'unset',
302
+ maxHeight: baseXOrY === 'x' ? 'unset' : height || '100%'
303
+ },
304
+ draggable: false,
305
+ src: imagePath,
306
+ key: imagePath,
307
+ onLoad: loadImageSuccess
308
+ }), !isEmpty ? /*#__PURE__*/React.createElement(DrawRect, {
309
+ rect: selectArea,
310
+ onMenuClick: onMenuClick,
311
+ getRectImage: getRectImage,
312
+ menus: menus,
313
+ canRenderMenu: isEnd && !disabledDrawMenu && menus.length > 0,
314
+ containerDom: layoutRef.current
315
+ }) : !isOpenSelect ? /*#__PURE__*/React.createElement(DefaultRects, {
316
+ rects: scaleRects,
317
+ onClickRect: onClickRect,
318
+ getRectImage: getRectImage,
319
+ containerDom: layoutRef.current
320
+ }) : null)), hasTool && /*#__PURE__*/React.createElement(Tools, {
321
+ setScale: setScale,
322
+ setRotate: setRotate,
323
+ scale: scale,
324
+ containerEle: fullScreenEle || layoutRef.current,
325
+ resetPicture: resetPicture,
326
+ imgDownload: imgDownload,
327
+ fullScreenChange: loadImageSuccess
328
+ }), /*#__PURE__*/React.createElement(WheelScale, {
329
+ setScale: setScale,
330
+ dom: layoutRef.current
331
+ })), isFunction(children) && children(renderOptions));
332
+ }
333
+
334
+ Picture.defaultProps = {
335
+ className: '',
336
+ minHeight: 300,
337
+ disabledDrag: false,
338
+ isOpenSelect: false,
339
+ disabledDrawMenu: false,
340
+ menus: [],
341
+ rects: [],
342
+ hasTool: true
343
+ };
344
+ export default Picture;
@@ -0,0 +1,67 @@
1
+ import * as React from 'react';
2
+
3
+ export type MenuRectType = {
4
+ pathname: string;
5
+ title: string;
6
+ icon: string;
7
+ };
8
+
9
+ export type TagItemType = {
10
+ value: string;
11
+ label: string;
12
+ icon: string;
13
+ tagLabel?: string;
14
+ };
15
+
16
+ export type ImageType = 'face' | 'body' | 'nonVehicle' | 'vehicle' | 'thing';
17
+
18
+ export type RectType = {
19
+ rect: Array<number>;
20
+ type: ImageType;
21
+ needExpand?: boolean;
22
+ imgId?: string;
23
+ area?: number;
24
+ tags?: TagItemType[];
25
+ imgUrl?: string;
26
+ smId?: string;
27
+ isDefault?: boolean;
28
+ feature?: string;
29
+ dupId?: string;
30
+ lowQuality?: boolean;
31
+ };
32
+
33
+ export type PositionType = {
34
+ x: number;
35
+ y: number;
36
+ };
37
+
38
+ export type DeviationType = {
39
+ offsetX: number;
40
+ offsetY: number;
41
+ width: number | string;
42
+ height: number | string;
43
+ };
44
+
45
+ export type SizeType = {
46
+ width: number | string;
47
+ height: number | string;
48
+ };
49
+
50
+ export interface IPictureProps {
51
+ className?: string;
52
+ width?: number | string;
53
+ height?: number | string;
54
+ minHeight?: number | string;
55
+ disabledDrag?: false;
56
+ imagePath: string;
57
+ rects?: RectType[];
58
+ isOpenSelect?: false;
59
+ disabledDrawMenu?: false;
60
+ menus?: MenuRectType[];
61
+ imgDownload?: () => void;
62
+ onClickRect?: (item: RectType & { base64: string }) => void;
63
+ onMenuClick?: (item: MenuRectType & { base64: string }) => void;
64
+ children?: (option: any) => void;
65
+ hasTool?: boolean;
66
+ fullScreenEle?: Element;
67
+ }
@@ -0,0 +1,8 @@
1
+ import { ImageType } from './interface';
2
+ export declare function loadCaptureRectImage(image: HTMLImageElement, rect: number[], imageType: ImageType): Promise<string>;
3
+ export declare function getRectImagePath(sourceImage: HTMLImageElement, cuurentImage: HTMLImageElement, rect: number[], options?: {
4
+ scale: number;
5
+ rotate: number;
6
+ x: number;
7
+ y: number;
8
+ }): string;
@@ -0,0 +1,119 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+
3
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
+
5
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
+
7
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
8
+
9
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
10
+
11
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
+
13
+ import { __awaiter } from "tslib";
14
+ import { getCaptureRect } from './utils';
15
+ export function loadCaptureRectImage(image, rect, imageType) {
16
+ return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
17
+ var _getCaptureRect, _getCaptureRect2, x, y, w, h, canvas, ctx, url;
18
+
19
+ return regeneratorRuntime.wrap(function _callee$(_context) {
20
+ while (1) {
21
+ switch (_context.prev = _context.next) {
22
+ case 0:
23
+ if (image) {
24
+ _context.next = 2;
25
+ break;
26
+ }
27
+
28
+ throw Error('image is HTMLImgElement');
29
+
30
+ case 2:
31
+ _getCaptureRect = getCaptureRect(rect, imageType), _getCaptureRect2 = _slicedToArray(_getCaptureRect, 4), x = _getCaptureRect2[0], y = _getCaptureRect2[1], w = _getCaptureRect2[2], h = _getCaptureRect2[3];
32
+ canvas = document.createElement('canvas');
33
+ ctx = canvas.getContext('2d');
34
+ canvas.width = image.width;
35
+ canvas.height = image.height;
36
+ ctx.drawImage(image, 0, 0, canvas.width, canvas.height);
37
+ ctx.beginPath();
38
+ ctx.strokeStyle = 'red';
39
+ ctx.lineWidth = 3;
40
+ ctx.strokeRect(x, y, w, h);
41
+ url = canvas.toDataURL();
42
+ setTimeout(function () {
43
+ canvas.remove();
44
+ canvas = null;
45
+ ctx = null;
46
+ }, 500);
47
+ return _context.abrupt("return", url);
48
+
49
+ case 15:
50
+ case "end":
51
+ return _context.stop();
52
+ }
53
+ }
54
+ }, _callee);
55
+ }));
56
+ }
57
+ export function getRectImagePath(sourceImage, cuurentImage, rect) {
58
+ var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {
59
+ scale: 1,
60
+ rotate: 0,
61
+ x: 0,
62
+ y: 0
63
+ };
64
+
65
+ if (!sourceImage || !cuurentImage) {
66
+ return null;
67
+ }
68
+
69
+ var scale = options.scale,
70
+ rotate = options.rotate;
71
+
72
+ var _rect = _slicedToArray(rect, 4),
73
+ x = _rect[0],
74
+ y = _rect[1],
75
+ w = _rect[2],
76
+ h = _rect[3];
77
+
78
+ var width = sourceImage.width,
79
+ height = sourceImage.height;
80
+ var sourceSize = {
81
+ width: width,
82
+ height: height,
83
+ cwidth: cuurentImage.width,
84
+ cheight: cuurentImage.height,
85
+ wScale: width / cuurentImage.width,
86
+ hScale: height / cuurentImage.height
87
+ };
88
+ var area = [x * sourceSize.wScale, y * sourceSize.hScale, w * sourceSize.wScale, h * sourceSize.hScale];
89
+ var fullCanvas = document.createElement('canvas');
90
+ var fullCtx = fullCanvas.getContext('2d');
91
+ fullCanvas.width = width;
92
+ fullCanvas.height = height;
93
+ fullCtx.save(); // fullCtx.transform;
94
+ // document.body.appendChild(fullCanvas);
95
+
96
+ fullCtx.setTransform(scale, 0, 0, scale, options.x * sourceSize.wScale - (scale - 1) * width / 2, options.y * sourceSize.hScale - (scale - 1) * height / 2);
97
+ fullCtx.translate(width / 2, height / 2);
98
+ fullCtx.rotate(rotate * Math.PI / 180);
99
+ fullCtx.drawImage(sourceImage, -width / 2, -height / 2, width, height);
100
+ fullCtx.restore();
101
+ var imageData = fullCtx.getImageData(area[0], area[1], area[2], area[3]);
102
+ var tempCanvas = document.createElement('canvas');
103
+ var tempCtx = tempCanvas.getContext('2d');
104
+ tempCanvas.width = area[2];
105
+ tempCanvas.height = area[3]; // document.body.appendChild(tempCanvas);
106
+
107
+ tempCtx.putImageData(imageData, 0, 0);
108
+ var dataUrl = tempCanvas.toDataURL();
109
+ setTimeout(function () {
110
+ fullCanvas.remove();
111
+ tempCanvas.remove();
112
+ fullCanvas = null;
113
+ tempCanvas = null;
114
+ tempCtx = null;
115
+ fullCtx = null;
116
+ imageData = null;
117
+ }, 100);
118
+ return dataUrl;
119
+ }
@@ -0,0 +1 @@
1
+ export default function useDraw(dom: HTMLElement, flag: boolean): [number[], boolean];
@@ -0,0 +1,136 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+
3
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
+
5
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
+
7
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
8
+
9
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
10
+
11
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
+
13
+ import { useEffect, useState, useRef, useCallback } from 'react';
14
+ export default function useDraw(dom, flag) {
15
+ var _useState = useState({
16
+ rect: [0, 0, 0, 0],
17
+ isEnd: false
18
+ }),
19
+ _useState2 = _slicedToArray(_useState, 2),
20
+ state = _useState2[0],
21
+ setState = _useState2[1];
22
+
23
+ var selectOptionsRef = useRef({
24
+ start: [0, 0],
25
+ end: [0, 0],
26
+ startSelect: false
27
+ });
28
+ /**
29
+ * 绘制框选矩形区域
30
+ */
31
+
32
+ var drawSelectRact = useCallback(function (isEnd) {
33
+ var _dom$getBoundingClien = dom.getBoundingClientRect(),
34
+ left = _dom$getBoundingClien.left,
35
+ top = _dom$getBoundingClien.top,
36
+ width = _dom$getBoundingClien.width,
37
+ height = _dom$getBoundingClien.height;
38
+
39
+ var x = 0,
40
+ y = 0,
41
+ w = 0,
42
+ h = 0; //TODO 开始X > 结束X
43
+
44
+ if (selectOptionsRef.current.end[0] > selectOptionsRef.current.start[0]) {
45
+ x = selectOptionsRef.current.start[0] - left;
46
+ w = selectOptionsRef.current.end[0] - selectOptionsRef.current.start[0];
47
+ } //TODO 开始X < 结束X
48
+
49
+
50
+ if (selectOptionsRef.current.end[0] < selectOptionsRef.current.start[0]) {
51
+ x = selectOptionsRef.current.end[0] - left;
52
+ w = selectOptionsRef.current.start[0] - selectOptionsRef.current.end[0];
53
+ } //TODO 开始Y > 结束Y
54
+
55
+
56
+ if (selectOptionsRef.current.end[1] > selectOptionsRef.current.start[1]) {
57
+ y = selectOptionsRef.current.start[1] - top;
58
+ h = selectOptionsRef.current.end[1] - selectOptionsRef.current.start[1];
59
+ } //TODO 开始Y < 结束Y
60
+
61
+
62
+ if (selectOptionsRef.current.end[1] < selectOptionsRef.current.start[1]) {
63
+ y = selectOptionsRef.current.end[1] - top;
64
+ h = selectOptionsRef.current.start[1] - selectOptionsRef.current.end[1];
65
+ }
66
+
67
+ if (w + x > width) {
68
+ w = width - x;
69
+ }
70
+
71
+ if (h + y > height) {
72
+ h = height - y;
73
+ }
74
+
75
+ if (w * h < 160 && isEnd) {
76
+ setState({
77
+ rect: [0, 0, 0, 0],
78
+ isEnd: !!isEnd
79
+ });
80
+ } else {
81
+ setState({
82
+ rect: [x, y, w, h],
83
+ isEnd: !!isEnd
84
+ });
85
+ }
86
+ }, [dom]);
87
+ /**
88
+ * move 修改框选区域
89
+ */
90
+
91
+ var changeSelect = useCallback(function (event) {
92
+ if (selectOptionsRef.current.startSelect) {
93
+ selectOptionsRef.current.end = [event.clientX, event.clientY];
94
+ drawSelectRact(false);
95
+ }
96
+ }, [drawSelectRact]);
97
+ /**
98
+ * 结束当前框选
99
+ */
100
+
101
+ var selectEnd = useCallback(function (event) {
102
+ if (selectOptionsRef.current.startSelect) {
103
+ selectOptionsRef.current.startSelect = false;
104
+ selectOptionsRef.current.end = [event.clientX, event.clientY];
105
+ drawSelectRact(true);
106
+ }
107
+ }, [drawSelectRact]);
108
+ var openSelect = useCallback(function (event) {
109
+ selectOptionsRef.current.startSelect = true;
110
+ selectOptionsRef.current.start = [event.clientX, event.clientY];
111
+ }, []);
112
+ useEffect(function () {
113
+ if (dom && flag) {
114
+ dom.addEventListener('mousedown', openSelect, false);
115
+ dom.addEventListener('mousemove', changeSelect, false);
116
+ dom.addEventListener('mouseup', selectEnd, false);
117
+ }
118
+
119
+ if (dom && !flag) {
120
+ setState(function (old) {
121
+ return Object.assign(Object.assign({}, old), {
122
+ rect: [0, 0, 0, 0]
123
+ });
124
+ });
125
+ }
126
+
127
+ return function () {
128
+ if (dom) {
129
+ dom.removeEventListener('mousedown', openSelect, false);
130
+ dom.removeEventListener('mousemove', changeSelect, false);
131
+ dom.removeEventListener('mouseup', selectEnd, false);
132
+ }
133
+ };
134
+ }, [changeSelect, dom, flag, openSelect, selectEnd]);
135
+ return [state.rect, state.isEnd];
136
+ }
@@ -0,0 +1,22 @@
1
+ import { ImageType, RectType } from './interface';
2
+ export declare function customContextMenu(e: any): boolean;
3
+ export declare function cloneImageNode(image: HTMLImageElement): Promise<unknown>;
4
+ export declare function computedRectScale({ imageSource, domImg, rects }: {
5
+ imageSource: HTMLImageElement;
6
+ domImg: HTMLImageElement;
7
+ rects: RectType[];
8
+ }): {
9
+ rect: number[];
10
+ type: ImageType;
11
+ needExpand?: boolean;
12
+ imgId?: string;
13
+ area?: number;
14
+ tags?: import("./interface").TagItemType[];
15
+ imgUrl?: string;
16
+ smId?: string;
17
+ isDefault?: boolean;
18
+ feature?: string;
19
+ dupId?: string;
20
+ lowQuality?: boolean;
21
+ }[];
22
+ export declare function getCaptureRect(rect: number[], type: ImageType): number[];