@labelbee/lb-components 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (493) hide show
  1. package/README.md +31 -0
  2. package/dist/App.js +1 -0
  3. package/dist/assets/annotation/common/icon_adapt.svg.js +1 -0
  4. package/dist/assets/annotation/common/icon_adapt_black.svg.js +1 -0
  5. package/dist/assets/annotation/common/icon_back.svg.js +1 -0
  6. package/dist/assets/annotation/common/icon_backA.svg.js +1 -0
  7. package/dist/assets/annotation/common/icon_clear.svg.js +1 -0
  8. package/dist/assets/annotation/common/icon_clearSmall.svg.js +1 -0
  9. package/dist/assets/annotation/common/icon_clearSmall_a.svg.js +1 -0
  10. package/dist/assets/annotation/common/icon_clear_a.svg.js +1 -0
  11. package/dist/assets/annotation/common/icon_invalid.svg.js +1 -0
  12. package/dist/assets/annotation/common/icon_invalid_a.svg.js +1 -0
  13. package/dist/assets/annotation/common/icon_next.svg.js +1 -0
  14. package/dist/assets/annotation/common/icon_nextA.svg.js +1 -0
  15. package/dist/assets/annotation/common/icon_r.svg.js +1 -0
  16. package/dist/assets/annotation/common/icon_rA.svg.js +1 -0
  17. package/dist/assets/annotation/common/icon_save.svg.js +1 -0
  18. package/dist/assets/annotation/common/icon_saveA.svg.js +1 -0
  19. package/dist/assets/annotation/image/brightness.svg.js +1 -0
  20. package/dist/assets/annotation/image/contrast.svg.js +1 -0
  21. package/dist/assets/annotation/image/icon_yuantu.svg.js +1 -0
  22. package/dist/assets/annotation/image/saturation.svg.js +1 -0
  23. package/dist/assets/annotation/lineTool/icon_line_a.svg.js +1 -0
  24. package/dist/assets/annotation/pointTool/icon_point_a.svg.js +1 -0
  25. package/dist/assets/annotation/polygonTool/icon_polygon_a.svg.js +1 -0
  26. package/dist/assets/annotation/rectTool/icon_rectPattern.svg.js +1 -0
  27. package/dist/assets/annotation/toolHotKeyIcon/icon_alttab_kj.svg.js +1 -0
  28. package/dist/assets/annotation/toolHotKeyIcon/icon_cencel_kj.svg.js +1 -0
  29. package/dist/assets/annotation/toolHotKeyIcon/icon_del_kj.svg.js +1 -0
  30. package/dist/assets/annotation/toolHotKeyIcon/icon_frameActive_kj.svg.js +1 -0
  31. package/dist/assets/annotation/toolHotKeyIcon/icon_frameChange_kj.svg.js +1 -0
  32. package/dist/assets/annotation/toolHotKeyIcon/icon_frameNull_kj.svg.js +1 -0
  33. package/dist/assets/annotation/toolHotKeyIcon/icon_frame_kj.svg.js +1 -0
  34. package/dist/assets/annotation/toolHotKeyIcon/icon_fullView_kj.svg.js +1 -0
  35. package/dist/assets/annotation/toolHotKeyIcon/icon_kj1.svg.js +1 -0
  36. package/dist/assets/annotation/toolHotKeyIcon/icon_kj_h.svg.js +1 -0
  37. package/dist/assets/annotation/toolHotKeyIcon/icon_last_kj.svg.js +1 -0
  38. package/dist/assets/annotation/toolHotKeyIcon/icon_lineActive_kj.svg.js +1 -0
  39. package/dist/assets/annotation/toolHotKeyIcon/icon_lineChange_kj.svg.js +1 -0
  40. package/dist/assets/annotation/toolHotKeyIcon/icon_lineCont_kj.svg.js +1 -0
  41. package/dist/assets/annotation/toolHotKeyIcon/icon_lineDel_kj.svg.js +1 -0
  42. package/dist/assets/annotation/toolHotKeyIcon/icon_lineInsert_kj.svg.js +1 -0
  43. package/dist/assets/annotation/toolHotKeyIcon/icon_lineNull_kj.svg.js +1 -0
  44. package/dist/assets/annotation/toolHotKeyIcon/icon_lineSpecial_kj.svg.js +1 -0
  45. package/dist/assets/annotation/toolHotKeyIcon/icon_line_kj.svg.js +1 -0
  46. package/dist/assets/annotation/toolHotKeyIcon/icon_loupe_kj.svg.js +1 -0
  47. package/dist/assets/annotation/toolHotKeyIcon/icon_mouse_left_kj.svg.js +1 -0
  48. package/dist/assets/annotation/toolHotKeyIcon/icon_mouse_middle_kj.svg.js +1 -0
  49. package/dist/assets/annotation/toolHotKeyIcon/icon_mouse_right_kj.svg.js +1 -0
  50. package/dist/assets/annotation/toolHotKeyIcon/icon_move_kj.svg.js +1 -0
  51. package/dist/assets/annotation/toolHotKeyIcon/icon_next_kj.svg.js +1 -0
  52. package/dist/assets/annotation/toolHotKeyIcon/icon_noDisplay.svg.js +1 -0
  53. package/dist/assets/annotation/toolHotKeyIcon/icon_pointActive_kj.svg.js +1 -0
  54. package/dist/assets/annotation/toolHotKeyIcon/icon_pointNull_kj.svg.js +1 -0
  55. package/dist/assets/annotation/toolHotKeyIcon/icon_point_kj.svg.js +1 -0
  56. package/dist/assets/annotation/toolHotKeyIcon/icon_polygonActive_kj.svg.js +1 -0
  57. package/dist/assets/annotation/toolHotKeyIcon/icon_polygonChange_kj.svg.js +1 -0
  58. package/dist/assets/annotation/toolHotKeyIcon/icon_polygonDel_kj.svg.js +1 -0
  59. package/dist/assets/annotation/toolHotKeyIcon/icon_polygonInsert_kj.svg.js +1 -0
  60. package/dist/assets/annotation/toolHotKeyIcon/icon_polygonNull_kj.svg.js +1 -0
  61. package/dist/assets/annotation/toolHotKeyIcon/icon_reform_kj.svg.js +1 -0
  62. package/dist/assets/annotation/toolHotKeyIcon/icon_reload_kj.svg.js +1 -0
  63. package/dist/assets/annotation/toolHotKeyIcon/icon_save_kj.svg.js +1 -0
  64. package/dist/assets/annotation/toolHotKeyIcon/icon_straightLine_kj.svg.js +1 -0
  65. package/dist/assets/annotation/toolHotKeyIcon/icon_tab_kj.svg.js +1 -0
  66. package/dist/assets/annotation/toolHotKeyIcon/icon_tag_kj.svg.js +1 -0
  67. package/dist/assets/annotation/toolHotKeyIcon/icon_unGrip_kj.svg.js +1 -0
  68. package/dist/assets/annotation/toolHotKeyIcon/setValid.svg.js +1 -0
  69. package/dist/assets/attributeIcon/zoomUp.svg.js +1 -0
  70. package/dist/assets/cssIcon/annotation/icon_clearSmall.svg +10 -0
  71. package/dist/assets/cssIcon/annotation/icon_clearSmall_a.svg +10 -0
  72. package/dist/assets/cssIcon/slide_btn.svg +23 -0
  73. package/dist/assets/toolStyle/icon_border.svg.js +1 -0
  74. package/dist/assets/toolStyle/icon_borderColor.svg.js +1 -0
  75. package/dist/assets/toolStyle/icon_opacityFill.svg.js +1 -0
  76. package/dist/assets/toolStyle/icon_opacityStroke.svg.js +1 -0
  77. package/dist/components/AnnotationView/index.js +1 -0
  78. package/dist/components/ImageError/index.js +1 -0
  79. package/dist/components/annotationStepPopover/index.js +1 -0
  80. package/dist/components/attributeList/index.js +1 -0
  81. package/dist/components/checkboxList/index.js +1 -0
  82. package/dist/components/colorTag/index.js +1 -0
  83. package/dist/components/customAntd/IconWithText/index.js +1 -0
  84. package/dist/components/customResizeHook/index.js +1 -0
  85. package/dist/configureStore.js +1 -0
  86. package/dist/constant/index.js +1 -0
  87. package/dist/constant/styleString.js +1 -0
  88. package/dist/data/Style.js +1 -0
  89. package/dist/data/enums/AnnotationSize.js +1 -0
  90. package/dist/data/enums/ToolType.js +1 -0
  91. package/dist/hooks/useRafState.js +1 -0
  92. package/dist/hooks/useSafeSate.js +1 -0
  93. package/dist/hooks/useSize.js +1 -0
  94. package/dist/hooks/useUnmountedRef.js +1 -0
  95. package/dist/index.css +835 -0
  96. package/dist/index.js +1 -0
  97. package/dist/store/Actions.js +1 -0
  98. package/dist/store/annotation/actionCreators.js +1 -0
  99. package/dist/store/annotation/reducer.js +1 -0
  100. package/dist/store/imgAttribute/actionCreators.js +1 -0
  101. package/dist/store/imgAttribute/reducer.js +1 -0
  102. package/dist/store/index.js +1 -0
  103. package/dist/store/toolStyle/actionCreators.js +1 -0
  104. package/dist/store/toolStyle/reducer.js +1 -0
  105. package/dist/types/App.d.ts +41 -0
  106. package/dist/types/components/AnnotationView/index.d.ts +24 -0
  107. package/dist/types/components/ImageError/index.d.ts +14 -0
  108. package/dist/types/components/annotationStepPopover/index.d.ts +8 -0
  109. package/dist/types/components/attributeList/index.d.ts +16 -0
  110. package/dist/types/components/checkboxList/index.d.ts +8 -0
  111. package/dist/types/components/colorTag/index.d.ts +1 -0
  112. package/dist/types/components/customAntd/IconWithText/index.d.ts +9 -0
  113. package/dist/types/components/customResizeHook/index.d.ts +31 -0
  114. package/dist/types/configureStore.d.ts +3 -0
  115. package/dist/types/constant/index.d.ts +18 -0
  116. package/dist/types/constant/styleString.d.ts +2 -0
  117. package/dist/types/data/Style.d.ts +37 -0
  118. package/dist/types/data/enums/AnnotationSize.d.ts +32 -0
  119. package/dist/types/data/enums/ToolType.d.ts +43 -0
  120. package/dist/types/hooks/useRafState.d.ts +3 -0
  121. package/dist/types/hooks/useSafeSate.d.ts +4 -0
  122. package/dist/types/hooks/useSize.d.ts +7 -0
  123. package/dist/types/hooks/useUnmountedRef.d.ts +3 -0
  124. package/dist/types/index.d.ts +9 -0
  125. package/dist/types/store/Actions.d.ts +31 -0
  126. package/dist/types/store/annotation/actionCreators.d.ts +56 -0
  127. package/dist/types/store/annotation/reducer.d.ts +14 -0
  128. package/dist/types/store/annotation/types.d.ts +100 -0
  129. package/dist/types/store/imgAttribute/actionCreators.d.ts +8 -0
  130. package/dist/types/store/imgAttribute/reducer.d.ts +8 -0
  131. package/dist/types/store/imgAttribute/types.d.ts +23 -0
  132. package/dist/types/store/index.d.ts +3 -0
  133. package/dist/types/store/toolStyle/actionCreators.d.ts +8 -0
  134. package/dist/types/store/toolStyle/reducer.d.ts +13 -0
  135. package/dist/types/store/toolStyle/types.d.ts +23 -0
  136. package/dist/types/utils/AnnotationDataUtils.d.ts +77 -0
  137. package/dist/types/utils/ConfigUtils.d.ts +9 -0
  138. package/dist/types/utils/PageOperator.d.ts +48 -0
  139. package/dist/types/utils/StepUtils.d.ts +18 -0
  140. package/dist/types/utils/TextUtils.d.ts +7 -0
  141. package/dist/types/utils/ToolStyleUtils.d.ts +18 -0
  142. package/dist/types/utils/data.d.ts +15 -0
  143. package/dist/types/utils/dom.d.ts +5 -0
  144. package/dist/types/utils/index.d.ts +5 -0
  145. package/dist/types/views/MainView/annotationOperation/index.d.ts +19 -0
  146. package/dist/types/views/MainView/index.d.ts +4 -0
  147. package/dist/types/views/MainView/sidebar/AnnotationText/index.d.ts +7 -0
  148. package/dist/types/views/MainView/sidebar/ClearIcon/index.d.ts +2 -0
  149. package/dist/types/views/MainView/sidebar/GeneralOperation/index.d.ts +12 -0
  150. package/dist/types/views/MainView/sidebar/ImgAttributeInfo/index.d.ts +6 -0
  151. package/dist/types/views/MainView/sidebar/SwitchAttributeList/index.d.ts +9 -0
  152. package/dist/types/views/MainView/sidebar/TagSidebar/index.d.ts +9 -0
  153. package/dist/types/views/MainView/sidebar/TextAreaFormat/index.d.ts +8 -0
  154. package/dist/types/views/MainView/sidebar/TextToolSidebar/index.d.ts +20 -0
  155. package/dist/types/views/MainView/sidebar/ToolStyle/index.d.ts +7 -0
  156. package/dist/types/views/MainView/sidebar/index.d.ts +7 -0
  157. package/dist/types/views/MainView/toolFooter/FooterTips/ToolHotKey/common/index.d.ts +109 -0
  158. package/dist/types/views/MainView/toolFooter/FooterTips/ToolHotKey/index.d.ts +13 -0
  159. package/dist/types/views/MainView/toolFooter/FooterTips/ToolHotKey/line/index.d.ts +71 -0
  160. package/dist/types/views/MainView/toolFooter/FooterTips/ToolHotKey/point/index.d.ts +27 -0
  161. package/dist/types/views/MainView/toolFooter/FooterTips/ToolHotKey/polygon/index.d.ts +79 -0
  162. package/dist/types/views/MainView/toolFooter/FooterTips/ToolHotKey/rectToolShortCutTable/index.d.ts +38 -0
  163. package/dist/types/views/MainView/toolFooter/FooterTips/ToolHotKey/tag/index.d.ts +3 -0
  164. package/dist/types/views/MainView/toolFooter/FooterTips/ToolHotKey/text/index.d.ts +6 -0
  165. package/dist/types/views/MainView/toolFooter/FooterTips/index.d.ts +3 -0
  166. package/dist/types/views/MainView/toolFooter/HiddenTips/index.d.ts +6 -0
  167. package/dist/types/views/MainView/toolFooter/PageNumber/index.d.ts +6 -0
  168. package/dist/types/views/MainView/toolFooter/ZoomController/ZoomLevel/index.d.ts +7 -0
  169. package/dist/types/views/MainView/toolFooter/ZoomController/index.d.ts +8 -0
  170. package/dist/types/views/MainView/toolFooter/index.d.ts +22 -0
  171. package/dist/types/views/MainView/toolHeader/ExportData/index.d.ts +13 -0
  172. package/dist/types/views/MainView/toolHeader/StepSwitch/index.d.ts +12 -0
  173. package/dist/types/views/MainView/toolHeader/headerOption/index.d.ts +8 -0
  174. package/dist/types/views/MainView/toolHeader/index.d.ts +19 -0
  175. package/dist/utils/AnnotationDataUtils.js +1 -0
  176. package/dist/utils/ConfigUtils.js +1 -0
  177. package/dist/utils/PageOperator.js +1 -0
  178. package/dist/utils/StepUtils.js +1 -0
  179. package/dist/utils/TextUtils.js +1 -0
  180. package/dist/utils/ToolStyleUtils.js +1 -0
  181. package/dist/utils/data.js +1 -0
  182. package/dist/utils/dom.js +1 -0
  183. package/dist/utils/index.js +1 -0
  184. package/dist/views/MainView/annotationOperation/index.js +1 -0
  185. package/dist/views/MainView/index.js +1 -0
  186. package/dist/views/MainView/sidebar/AnnotationText/index.js +1 -0
  187. package/dist/views/MainView/sidebar/ClearIcon/index.js +1 -0
  188. package/dist/views/MainView/sidebar/GeneralOperation/index.js +1 -0
  189. package/dist/views/MainView/sidebar/ImgAttributeInfo/index.js +1 -0
  190. package/dist/views/MainView/sidebar/SwitchAttributeList/index.js +1 -0
  191. package/dist/views/MainView/sidebar/TagSidebar/index.js +1 -0
  192. package/dist/views/MainView/sidebar/TextAreaFormat/index.js +1 -0
  193. package/dist/views/MainView/sidebar/TextToolSidebar/index.js +1 -0
  194. package/dist/views/MainView/sidebar/ToolStyle/index.js +1 -0
  195. package/dist/views/MainView/sidebar/index.js +1 -0
  196. package/dist/views/MainView/toolFooter/FooterTips/ToolHotKey/common/index.js +1 -0
  197. package/dist/views/MainView/toolFooter/FooterTips/ToolHotKey/index.js +1 -0
  198. package/dist/views/MainView/toolFooter/FooterTips/ToolHotKey/line/index.js +1 -0
  199. package/dist/views/MainView/toolFooter/FooterTips/ToolHotKey/point/index.js +1 -0
  200. package/dist/views/MainView/toolFooter/FooterTips/ToolHotKey/polygon/index.js +1 -0
  201. package/dist/views/MainView/toolFooter/FooterTips/ToolHotKey/rectToolShortCutTable/index.js +1 -0
  202. package/dist/views/MainView/toolFooter/FooterTips/ToolHotKey/tag/index.js +1 -0
  203. package/dist/views/MainView/toolFooter/FooterTips/ToolHotKey/text/index.js +1 -0
  204. package/dist/views/MainView/toolFooter/FooterTips/index.js +1 -0
  205. package/dist/views/MainView/toolFooter/HiddenTips/index.js +1 -0
  206. package/dist/views/MainView/toolFooter/PageNumber/index.js +1 -0
  207. package/dist/views/MainView/toolFooter/ZoomController/ZoomLevel/index.js +1 -0
  208. package/dist/views/MainView/toolFooter/ZoomController/index.js +1 -0
  209. package/dist/views/MainView/toolFooter/index.js +1 -0
  210. package/dist/views/MainView/toolHeader/ExportData/index.js +1 -0
  211. package/dist/views/MainView/toolHeader/StepSwitch/index.js +1 -0
  212. package/dist/views/MainView/toolHeader/headerOption/index.js +1 -0
  213. package/dist/views/MainView/toolHeader/index.js +1 -0
  214. package/es/App.js +1 -0
  215. package/es/App.js.map +1 -0
  216. package/es/assets/annotation/common/icon_adapt.svg.js +1 -0
  217. package/es/assets/annotation/common/icon_adapt.svg.js.map +1 -0
  218. package/es/assets/annotation/common/icon_adapt_black.svg.js +1 -0
  219. package/es/assets/annotation/common/icon_adapt_black.svg.js.map +1 -0
  220. package/es/assets/annotation/common/icon_back.svg.js +1 -0
  221. package/es/assets/annotation/common/icon_back.svg.js.map +1 -0
  222. package/es/assets/annotation/common/icon_backA.svg.js +1 -0
  223. package/es/assets/annotation/common/icon_backA.svg.js.map +1 -0
  224. package/es/assets/annotation/common/icon_clear.svg.js +1 -0
  225. package/es/assets/annotation/common/icon_clear.svg.js.map +1 -0
  226. package/es/assets/annotation/common/icon_clearSmall.svg.js +1 -0
  227. package/es/assets/annotation/common/icon_clearSmall.svg.js.map +1 -0
  228. package/es/assets/annotation/common/icon_clearSmall_a.svg.js +1 -0
  229. package/es/assets/annotation/common/icon_clearSmall_a.svg.js.map +1 -0
  230. package/es/assets/annotation/common/icon_clear_a.svg.js +1 -0
  231. package/es/assets/annotation/common/icon_clear_a.svg.js.map +1 -0
  232. package/es/assets/annotation/common/icon_invalid.svg.js +1 -0
  233. package/es/assets/annotation/common/icon_invalid.svg.js.map +1 -0
  234. package/es/assets/annotation/common/icon_invalid_a.svg.js +1 -0
  235. package/es/assets/annotation/common/icon_invalid_a.svg.js.map +1 -0
  236. package/es/assets/annotation/common/icon_next.svg.js +1 -0
  237. package/es/assets/annotation/common/icon_next.svg.js.map +1 -0
  238. package/es/assets/annotation/common/icon_nextA.svg.js +1 -0
  239. package/es/assets/annotation/common/icon_nextA.svg.js.map +1 -0
  240. package/es/assets/annotation/common/icon_r.svg.js +1 -0
  241. package/es/assets/annotation/common/icon_r.svg.js.map +1 -0
  242. package/es/assets/annotation/common/icon_rA.svg.js +1 -0
  243. package/es/assets/annotation/common/icon_rA.svg.js.map +1 -0
  244. package/es/assets/annotation/common/icon_save.svg.js +1 -0
  245. package/es/assets/annotation/common/icon_save.svg.js.map +1 -0
  246. package/es/assets/annotation/common/icon_saveA.svg.js +1 -0
  247. package/es/assets/annotation/common/icon_saveA.svg.js.map +1 -0
  248. package/es/assets/annotation/image/brightness.svg.js +1 -0
  249. package/es/assets/annotation/image/brightness.svg.js.map +1 -0
  250. package/es/assets/annotation/image/contrast.svg.js +1 -0
  251. package/es/assets/annotation/image/contrast.svg.js.map +1 -0
  252. package/es/assets/annotation/image/icon_yuantu.svg.js +1 -0
  253. package/es/assets/annotation/image/icon_yuantu.svg.js.map +1 -0
  254. package/es/assets/annotation/image/saturation.svg.js +1 -0
  255. package/es/assets/annotation/image/saturation.svg.js.map +1 -0
  256. package/es/assets/annotation/lineTool/icon_line_a.svg.js +1 -0
  257. package/es/assets/annotation/lineTool/icon_line_a.svg.js.map +1 -0
  258. package/es/assets/annotation/pointTool/icon_point_a.svg.js +1 -0
  259. package/es/assets/annotation/pointTool/icon_point_a.svg.js.map +1 -0
  260. package/es/assets/annotation/polygonTool/icon_polygon_a.svg.js +1 -0
  261. package/es/assets/annotation/polygonTool/icon_polygon_a.svg.js.map +1 -0
  262. package/es/assets/annotation/rectTool/icon_rectPattern.svg.js +1 -0
  263. package/es/assets/annotation/rectTool/icon_rectPattern.svg.js.map +1 -0
  264. package/es/assets/annotation/toolHotKeyIcon/icon_alttab_kj.svg.js +1 -0
  265. package/es/assets/annotation/toolHotKeyIcon/icon_alttab_kj.svg.js.map +1 -0
  266. package/es/assets/annotation/toolHotKeyIcon/icon_cencel_kj.svg.js +1 -0
  267. package/es/assets/annotation/toolHotKeyIcon/icon_cencel_kj.svg.js.map +1 -0
  268. package/es/assets/annotation/toolHotKeyIcon/icon_del_kj.svg.js +1 -0
  269. package/es/assets/annotation/toolHotKeyIcon/icon_del_kj.svg.js.map +1 -0
  270. package/es/assets/annotation/toolHotKeyIcon/icon_frameActive_kj.svg.js +1 -0
  271. package/es/assets/annotation/toolHotKeyIcon/icon_frameActive_kj.svg.js.map +1 -0
  272. package/es/assets/annotation/toolHotKeyIcon/icon_frameChange_kj.svg.js +1 -0
  273. package/es/assets/annotation/toolHotKeyIcon/icon_frameChange_kj.svg.js.map +1 -0
  274. package/es/assets/annotation/toolHotKeyIcon/icon_frameNull_kj.svg.js +1 -0
  275. package/es/assets/annotation/toolHotKeyIcon/icon_frameNull_kj.svg.js.map +1 -0
  276. package/es/assets/annotation/toolHotKeyIcon/icon_frame_kj.svg.js +1 -0
  277. package/es/assets/annotation/toolHotKeyIcon/icon_frame_kj.svg.js.map +1 -0
  278. package/es/assets/annotation/toolHotKeyIcon/icon_fullView_kj.svg.js +1 -0
  279. package/es/assets/annotation/toolHotKeyIcon/icon_fullView_kj.svg.js.map +1 -0
  280. package/es/assets/annotation/toolHotKeyIcon/icon_kj1.svg.js +1 -0
  281. package/es/assets/annotation/toolHotKeyIcon/icon_kj1.svg.js.map +1 -0
  282. package/es/assets/annotation/toolHotKeyIcon/icon_kj_h.svg.js +1 -0
  283. package/es/assets/annotation/toolHotKeyIcon/icon_kj_h.svg.js.map +1 -0
  284. package/es/assets/annotation/toolHotKeyIcon/icon_last_kj.svg.js +1 -0
  285. package/es/assets/annotation/toolHotKeyIcon/icon_last_kj.svg.js.map +1 -0
  286. package/es/assets/annotation/toolHotKeyIcon/icon_lineActive_kj.svg.js +1 -0
  287. package/es/assets/annotation/toolHotKeyIcon/icon_lineActive_kj.svg.js.map +1 -0
  288. package/es/assets/annotation/toolHotKeyIcon/icon_lineChange_kj.svg.js +1 -0
  289. package/es/assets/annotation/toolHotKeyIcon/icon_lineChange_kj.svg.js.map +1 -0
  290. package/es/assets/annotation/toolHotKeyIcon/icon_lineCont_kj.svg.js +1 -0
  291. package/es/assets/annotation/toolHotKeyIcon/icon_lineCont_kj.svg.js.map +1 -0
  292. package/es/assets/annotation/toolHotKeyIcon/icon_lineDel_kj.svg.js +1 -0
  293. package/es/assets/annotation/toolHotKeyIcon/icon_lineDel_kj.svg.js.map +1 -0
  294. package/es/assets/annotation/toolHotKeyIcon/icon_lineInsert_kj.svg.js +1 -0
  295. package/es/assets/annotation/toolHotKeyIcon/icon_lineInsert_kj.svg.js.map +1 -0
  296. package/es/assets/annotation/toolHotKeyIcon/icon_lineNull_kj.svg.js +1 -0
  297. package/es/assets/annotation/toolHotKeyIcon/icon_lineNull_kj.svg.js.map +1 -0
  298. package/es/assets/annotation/toolHotKeyIcon/icon_lineSpecial_kj.svg.js +1 -0
  299. package/es/assets/annotation/toolHotKeyIcon/icon_lineSpecial_kj.svg.js.map +1 -0
  300. package/es/assets/annotation/toolHotKeyIcon/icon_line_kj.svg.js +1 -0
  301. package/es/assets/annotation/toolHotKeyIcon/icon_line_kj.svg.js.map +1 -0
  302. package/es/assets/annotation/toolHotKeyIcon/icon_loupe_kj.svg.js +1 -0
  303. package/es/assets/annotation/toolHotKeyIcon/icon_loupe_kj.svg.js.map +1 -0
  304. package/es/assets/annotation/toolHotKeyIcon/icon_mouse_left_kj.svg.js +1 -0
  305. package/es/assets/annotation/toolHotKeyIcon/icon_mouse_left_kj.svg.js.map +1 -0
  306. package/es/assets/annotation/toolHotKeyIcon/icon_mouse_middle_kj.svg.js +1 -0
  307. package/es/assets/annotation/toolHotKeyIcon/icon_mouse_middle_kj.svg.js.map +1 -0
  308. package/es/assets/annotation/toolHotKeyIcon/icon_mouse_right_kj.svg.js +1 -0
  309. package/es/assets/annotation/toolHotKeyIcon/icon_mouse_right_kj.svg.js.map +1 -0
  310. package/es/assets/annotation/toolHotKeyIcon/icon_move_kj.svg.js +1 -0
  311. package/es/assets/annotation/toolHotKeyIcon/icon_move_kj.svg.js.map +1 -0
  312. package/es/assets/annotation/toolHotKeyIcon/icon_next_kj.svg.js +1 -0
  313. package/es/assets/annotation/toolHotKeyIcon/icon_next_kj.svg.js.map +1 -0
  314. package/es/assets/annotation/toolHotKeyIcon/icon_noDisplay.svg.js +1 -0
  315. package/es/assets/annotation/toolHotKeyIcon/icon_noDisplay.svg.js.map +1 -0
  316. package/es/assets/annotation/toolHotKeyIcon/icon_pointActive_kj.svg.js +1 -0
  317. package/es/assets/annotation/toolHotKeyIcon/icon_pointActive_kj.svg.js.map +1 -0
  318. package/es/assets/annotation/toolHotKeyIcon/icon_pointNull_kj.svg.js +1 -0
  319. package/es/assets/annotation/toolHotKeyIcon/icon_pointNull_kj.svg.js.map +1 -0
  320. package/es/assets/annotation/toolHotKeyIcon/icon_point_kj.svg.js +1 -0
  321. package/es/assets/annotation/toolHotKeyIcon/icon_point_kj.svg.js.map +1 -0
  322. package/es/assets/annotation/toolHotKeyIcon/icon_polygonActive_kj.svg.js +1 -0
  323. package/es/assets/annotation/toolHotKeyIcon/icon_polygonActive_kj.svg.js.map +1 -0
  324. package/es/assets/annotation/toolHotKeyIcon/icon_polygonChange_kj.svg.js +1 -0
  325. package/es/assets/annotation/toolHotKeyIcon/icon_polygonChange_kj.svg.js.map +1 -0
  326. package/es/assets/annotation/toolHotKeyIcon/icon_polygonDel_kj.svg.js +1 -0
  327. package/es/assets/annotation/toolHotKeyIcon/icon_polygonDel_kj.svg.js.map +1 -0
  328. package/es/assets/annotation/toolHotKeyIcon/icon_polygonInsert_kj.svg.js +1 -0
  329. package/es/assets/annotation/toolHotKeyIcon/icon_polygonInsert_kj.svg.js.map +1 -0
  330. package/es/assets/annotation/toolHotKeyIcon/icon_polygonNull_kj.svg.js +1 -0
  331. package/es/assets/annotation/toolHotKeyIcon/icon_polygonNull_kj.svg.js.map +1 -0
  332. package/es/assets/annotation/toolHotKeyIcon/icon_reform_kj.svg.js +1 -0
  333. package/es/assets/annotation/toolHotKeyIcon/icon_reform_kj.svg.js.map +1 -0
  334. package/es/assets/annotation/toolHotKeyIcon/icon_reload_kj.svg.js +1 -0
  335. package/es/assets/annotation/toolHotKeyIcon/icon_reload_kj.svg.js.map +1 -0
  336. package/es/assets/annotation/toolHotKeyIcon/icon_save_kj.svg.js +1 -0
  337. package/es/assets/annotation/toolHotKeyIcon/icon_save_kj.svg.js.map +1 -0
  338. package/es/assets/annotation/toolHotKeyIcon/icon_straightLine_kj.svg.js +1 -0
  339. package/es/assets/annotation/toolHotKeyIcon/icon_straightLine_kj.svg.js.map +1 -0
  340. package/es/assets/annotation/toolHotKeyIcon/icon_tab_kj.svg.js +1 -0
  341. package/es/assets/annotation/toolHotKeyIcon/icon_tab_kj.svg.js.map +1 -0
  342. package/es/assets/annotation/toolHotKeyIcon/icon_tag_kj.svg.js +1 -0
  343. package/es/assets/annotation/toolHotKeyIcon/icon_tag_kj.svg.js.map +1 -0
  344. package/es/assets/annotation/toolHotKeyIcon/icon_unGrip_kj.svg.js +1 -0
  345. package/es/assets/annotation/toolHotKeyIcon/icon_unGrip_kj.svg.js.map +1 -0
  346. package/es/assets/annotation/toolHotKeyIcon/setValid.svg.js +1 -0
  347. package/es/assets/annotation/toolHotKeyIcon/setValid.svg.js.map +1 -0
  348. package/es/assets/attributeIcon/zoomUp.svg.js +1 -0
  349. package/es/assets/attributeIcon/zoomUp.svg.js.map +1 -0
  350. package/es/assets/cssIcon/annotation/icon_clearSmall.svg +10 -0
  351. package/es/assets/cssIcon/annotation/icon_clearSmall_a.svg +10 -0
  352. package/es/assets/cssIcon/slide_btn.svg +23 -0
  353. package/es/assets/toolStyle/icon_border.svg.js +1 -0
  354. package/es/assets/toolStyle/icon_border.svg.js.map +1 -0
  355. package/es/assets/toolStyle/icon_borderColor.svg.js +1 -0
  356. package/es/assets/toolStyle/icon_borderColor.svg.js.map +1 -0
  357. package/es/assets/toolStyle/icon_opacityFill.svg.js +1 -0
  358. package/es/assets/toolStyle/icon_opacityFill.svg.js.map +1 -0
  359. package/es/assets/toolStyle/icon_opacityStroke.svg.js +1 -0
  360. package/es/assets/toolStyle/icon_opacityStroke.svg.js.map +1 -0
  361. package/es/components/AnnotationView/index.js +1 -0
  362. package/es/components/AnnotationView/index.js.map +1 -0
  363. package/es/components/ImageError/index.js +1 -0
  364. package/es/components/ImageError/index.js.map +1 -0
  365. package/es/components/annotationStepPopover/index.js +1 -0
  366. package/es/components/annotationStepPopover/index.js.map +1 -0
  367. package/es/components/attributeList/index.js +1 -0
  368. package/es/components/attributeList/index.js.map +1 -0
  369. package/es/components/checkboxList/index.js +1 -0
  370. package/es/components/checkboxList/index.js.map +1 -0
  371. package/es/components/colorTag/index.js +1 -0
  372. package/es/components/colorTag/index.js.map +1 -0
  373. package/es/components/customAntd/IconWithText/index.js +1 -0
  374. package/es/components/customAntd/IconWithText/index.js.map +1 -0
  375. package/es/components/customResizeHook/index.js +1 -0
  376. package/es/components/customResizeHook/index.js.map +1 -0
  377. package/es/configureStore.js +1 -0
  378. package/es/configureStore.js.map +1 -0
  379. package/es/constant/index.js +1 -0
  380. package/es/constant/index.js.map +1 -0
  381. package/es/constant/styleString.js +1 -0
  382. package/es/constant/styleString.js.map +1 -0
  383. package/es/data/Style.js +1 -0
  384. package/es/data/Style.js.map +1 -0
  385. package/es/data/enums/AnnotationSize.js +1 -0
  386. package/es/data/enums/AnnotationSize.js.map +1 -0
  387. package/es/data/enums/ToolType.js +1 -0
  388. package/es/data/enums/ToolType.js.map +1 -0
  389. package/es/hooks/useRafState.js +1 -0
  390. package/es/hooks/useRafState.js.map +1 -0
  391. package/es/hooks/useSafeSate.js +1 -0
  392. package/es/hooks/useSafeSate.js.map +1 -0
  393. package/es/hooks/useSize.js +1 -0
  394. package/es/hooks/useSize.js.map +1 -0
  395. package/es/hooks/useUnmountedRef.js +1 -0
  396. package/es/hooks/useUnmountedRef.js.map +1 -0
  397. package/es/index.js +1 -0
  398. package/es/index.js.map +1 -0
  399. package/es/store/Actions.js +1 -0
  400. package/es/store/Actions.js.map +1 -0
  401. package/es/store/annotation/actionCreators.js +1 -0
  402. package/es/store/annotation/actionCreators.js.map +1 -0
  403. package/es/store/annotation/reducer.js +1 -0
  404. package/es/store/annotation/reducer.js.map +1 -0
  405. package/es/store/imgAttribute/actionCreators.js +1 -0
  406. package/es/store/imgAttribute/actionCreators.js.map +1 -0
  407. package/es/store/imgAttribute/reducer.js +1 -0
  408. package/es/store/imgAttribute/reducer.js.map +1 -0
  409. package/es/store/index.js +1 -0
  410. package/es/store/index.js.map +1 -0
  411. package/es/store/toolStyle/actionCreators.js +1 -0
  412. package/es/store/toolStyle/actionCreators.js.map +1 -0
  413. package/es/store/toolStyle/reducer.js +1 -0
  414. package/es/store/toolStyle/reducer.js.map +1 -0
  415. package/es/utils/AnnotationDataUtils.js +1 -0
  416. package/es/utils/AnnotationDataUtils.js.map +1 -0
  417. package/es/utils/ConfigUtils.js +1 -0
  418. package/es/utils/ConfigUtils.js.map +1 -0
  419. package/es/utils/PageOperator.js +1 -0
  420. package/es/utils/PageOperator.js.map +1 -0
  421. package/es/utils/StepUtils.js +1 -0
  422. package/es/utils/StepUtils.js.map +1 -0
  423. package/es/utils/TextUtils.js +1 -0
  424. package/es/utils/TextUtils.js.map +1 -0
  425. package/es/utils/ToolStyleUtils.js +1 -0
  426. package/es/utils/ToolStyleUtils.js.map +1 -0
  427. package/es/utils/data.js +1 -0
  428. package/es/utils/data.js.map +1 -0
  429. package/es/utils/dom.js +1 -0
  430. package/es/utils/dom.js.map +1 -0
  431. package/es/utils/index.js +1 -0
  432. package/es/utils/index.js.map +1 -0
  433. package/es/views/MainView/annotationOperation/index.js +1 -0
  434. package/es/views/MainView/annotationOperation/index.js.map +1 -0
  435. package/es/views/MainView/index.js +1 -0
  436. package/es/views/MainView/index.js.map +1 -0
  437. package/es/views/MainView/sidebar/AnnotationText/index.js +1 -0
  438. package/es/views/MainView/sidebar/AnnotationText/index.js.map +1 -0
  439. package/es/views/MainView/sidebar/ClearIcon/index.js +1 -0
  440. package/es/views/MainView/sidebar/ClearIcon/index.js.map +1 -0
  441. package/es/views/MainView/sidebar/GeneralOperation/index.js +1 -0
  442. package/es/views/MainView/sidebar/GeneralOperation/index.js.map +1 -0
  443. package/es/views/MainView/sidebar/ImgAttributeInfo/index.js +1 -0
  444. package/es/views/MainView/sidebar/ImgAttributeInfo/index.js.map +1 -0
  445. package/es/views/MainView/sidebar/SwitchAttributeList/index.js +1 -0
  446. package/es/views/MainView/sidebar/SwitchAttributeList/index.js.map +1 -0
  447. package/es/views/MainView/sidebar/TagSidebar/index.js +1 -0
  448. package/es/views/MainView/sidebar/TagSidebar/index.js.map +1 -0
  449. package/es/views/MainView/sidebar/TextAreaFormat/index.js +1 -0
  450. package/es/views/MainView/sidebar/TextAreaFormat/index.js.map +1 -0
  451. package/es/views/MainView/sidebar/TextToolSidebar/index.js +1 -0
  452. package/es/views/MainView/sidebar/TextToolSidebar/index.js.map +1 -0
  453. package/es/views/MainView/sidebar/ToolStyle/index.js +1 -0
  454. package/es/views/MainView/sidebar/ToolStyle/index.js.map +1 -0
  455. package/es/views/MainView/sidebar/index.js +1 -0
  456. package/es/views/MainView/sidebar/index.js.map +1 -0
  457. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/common/index.js +1 -0
  458. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/common/index.js.map +1 -0
  459. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/index.js +1 -0
  460. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/index.js.map +1 -0
  461. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/line/index.js +1 -0
  462. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/line/index.js.map +1 -0
  463. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/point/index.js +1 -0
  464. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/point/index.js.map +1 -0
  465. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/polygon/index.js +1 -0
  466. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/polygon/index.js.map +1 -0
  467. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/rectToolShortCutTable/index.js +1 -0
  468. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/rectToolShortCutTable/index.js.map +1 -0
  469. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/tag/index.js +1 -0
  470. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/tag/index.js.map +1 -0
  471. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/text/index.js +1 -0
  472. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/text/index.js.map +1 -0
  473. package/es/views/MainView/toolFooter/FooterTips/index.js +1 -0
  474. package/es/views/MainView/toolFooter/FooterTips/index.js.map +1 -0
  475. package/es/views/MainView/toolFooter/HiddenTips/index.js +1 -0
  476. package/es/views/MainView/toolFooter/HiddenTips/index.js.map +1 -0
  477. package/es/views/MainView/toolFooter/PageNumber/index.js +1 -0
  478. package/es/views/MainView/toolFooter/PageNumber/index.js.map +1 -0
  479. package/es/views/MainView/toolFooter/ZoomController/ZoomLevel/index.js +1 -0
  480. package/es/views/MainView/toolFooter/ZoomController/ZoomLevel/index.js.map +1 -0
  481. package/es/views/MainView/toolFooter/ZoomController/index.js +1 -0
  482. package/es/views/MainView/toolFooter/ZoomController/index.js.map +1 -0
  483. package/es/views/MainView/toolFooter/index.js +1 -0
  484. package/es/views/MainView/toolFooter/index.js.map +1 -0
  485. package/es/views/MainView/toolHeader/ExportData/index.js +1 -0
  486. package/es/views/MainView/toolHeader/ExportData/index.js.map +1 -0
  487. package/es/views/MainView/toolHeader/StepSwitch/index.js +1 -0
  488. package/es/views/MainView/toolHeader/StepSwitch/index.js.map +1 -0
  489. package/es/views/MainView/toolHeader/headerOption/index.js +1 -0
  490. package/es/views/MainView/toolHeader/headerOption/index.js.map +1 -0
  491. package/es/views/MainView/toolHeader/index.js +1 -0
  492. package/es/views/MainView/toolHeader/index.js.map +1 -0
  493. package/package.json +98 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reducer.js","sources":["../../../src/store/imgAttribute/reducer.ts"],"sourcesContent":["import { IMAGE_ATTRIBUTE_ACTIONS } from '@/store/Actions';\nimport { ImgAttributeState, ImgAttributeActionTypes } from './types';\n\nconst initialState: ImgAttributeState = {\n contrast: 1,\n saturation: 1,\n brightness: 1,\n zoomRatio: 1,\n isOriginalSize: false,\n};\n\nexport function imgAttributeReducer(\n state = { ...initialState },\n action: ImgAttributeActionTypes,\n): ImgAttributeState {\n switch (action.type) {\n case IMAGE_ATTRIBUTE_ACTIONS.UPDATE_IMG_ATTRIBUTE: {\n return {\n ...state,\n ...action.payload,\n };\n }\n\n case IMAGE_ATTRIBUTE_ACTIONS.INIT_IMG_ATTRIBUTE: {\n return {\n ...initialState,\n };\n }\n\n default:\n return state;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAGA,MAAM,eAAkC;AAAA,EACtC,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,gBAAgB;AAAA;6BAIhB,QAAQ,mBAAK,eACb,QACmB;AACnB,UAAQ,OAAO;AAAA,SACR,wBAAwB,sBAAsB;AACjD,aAAO,kCACF,QACA,OAAO;AAAA;AAAA,SAIT,wBAAwB,oBAAoB;AAC/C,aAAO,mBACF;AAAA;AAAA;AAKL,aAAO;AAAA;AAAA;;;;"}
@@ -0,0 +1 @@
1
+ import{combineReducers as t}from"redux";import{annotationReducer as e}from"./annotation/reducer.js";import{imgAttributeReducer as o}from"./imgAttribute/reducer.js";import{toolStyleReducer as r}from"./toolStyle/reducer.js";const i=t({annotation:e,imgAttribute:o,toolStyle:r});export{i as rootReducer};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/store/index.ts"],"sourcesContent":["import { combineReducers, CombinedState } from 'redux';\nimport { annotationReducer } from './annotation/reducer';\nimport { imgAttributeReducer } from './imgAttribute/reducer';\nimport { toolStyleReducer } from './toolStyle/reducer';\n\nexport const rootReducer: CombinedState<any> = combineReducers({\n annotation: annotationReducer,\n imgAttribute: imgAttributeReducer,\n toolStyle: toolStyleReducer,\n});\n\nexport type AppState = ReturnType<typeof rootReducer>;\n"],"names":[],"mappings":";;;;;MAKa,cAAkC,gBAAgB;AAAA,EAC7D,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,WAAW;AAAA;;;;"}
@@ -0,0 +1 @@
1
+ import{TOOL_STYLE_ACTIONS as o}from"../Actions.js";function T(){return{type:o.INIT_TOOL_STYLE_CONFIG,payload:void 0}}function n(t){return{type:o.UPDATE_TOOL_STYLE_CONFIG,payload:t}}export{T as InitToolStyleConfig,n as UpdateToolStyleConfig};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionCreators.js","sources":["../../../src/store/toolStyle/actionCreators.ts"],"sourcesContent":["import { TOOL_STYLE_ACTIONS } from '@/store/Actions';\nimport { ToolStyleActionTypes, ToolStyleState } from './types';\n\nexport function InitToolStyleConfig(): ToolStyleActionTypes {\n return {\n type: TOOL_STYLE_ACTIONS.INIT_TOOL_STYLE_CONFIG,\n payload: undefined\n };\n}\n\nexport function UpdateToolStyleConfig(toolStyle: Partial<ToolStyleState>): ToolStyleActionTypes {\n return {\n type: TOOL_STYLE_ACTIONS.UPDATE_TOOL_STYLE_CONFIG,\n payload: toolStyle,\n };\n}\n\nexport default {\n InitToolStyleConfig,\n UpdateToolStyleConfig,\n};\n"],"names":[],"mappings":";;+BAG4D;AAC1D,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,SAAS;AAAA;AAAA;+BAIyB,WAA0D;AAC9F,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB,SAAS;AAAA;AAAA;;;;"}
@@ -0,0 +1 @@
1
+ import{NULL_COLOR as n,COLORS_ARRAY as y}from"../../data/Style.js";import{ToolStyleUtils as i}from"../../utils/ToolStyleUtils.js";import{TOOL_STYLE_ACTIONS as a}from"../Actions.js";var s=Object.defineProperty,p=Object.getOwnPropertySymbols,u=Object.prototype.hasOwnProperty,_=Object.prototype.propertyIsEnumerable,O=(t,r,o)=>r in t?s(t,r,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[r]=o,l=(t,r)=>{for(var o in r||(r={}))u.call(r,o)&&O(t,o,r[o]);if(p)for(var o of p(r))_.call(r,o)&&O(t,o,r[o]);return t};const c={color:1,width:2,borderOpacity:9,fillOpacity:9,toolColor:i.getToolColors(),attributeColor:i.getAttributeColors(),lineColor:i.getDefaultToolLineColors(),attributeLineColor:[n].concat(y)};function f(t=l({},c),r){switch(r.type){case a.INIT_TOOL_STYLE_CONFIG:return l({},c);case a.UPDATE_TOOL_STYLE_CONFIG:{const o={},e=r.payload;return((e==null?void 0:e.borderOpacity)||(e==null?void 0:e.fillOpacity))&&Object.assign(o,i.initByOpacity(e.borderOpacity||t.borderOpacity,e.fillOpacity||t.fillOpacity)),l(l(l({},t),r.payload),o)}default:return t}}export{f as toolStyleReducer};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reducer.js","sources":["../../../src/store/toolStyle/reducer.ts"],"sourcesContent":["import { COLORS_ARRAY, NULL_COLOR } from '@/data/Style';\nimport { ToolStyleUtils } from '@/utils/ToolStyleUtils';\nimport { TOOL_STYLE_ACTIONS } from '@/store/Actions';\nimport { ToolStyleActionTypes, ToolStyleState } from './types';\n\nconst initialState: ToolStyleState = {\n color: 1,\n width: 2,\n borderOpacity: 9,\n fillOpacity: 9,\n toolColor: ToolStyleUtils.getToolColors(),\n attributeColor: ToolStyleUtils.getAttributeColors(),\n lineColor: ToolStyleUtils.getDefaultToolLineColors(),\n attributeLineColor: [NULL_COLOR].concat(COLORS_ARRAY),\n};\n\nexport function toolStyleReducer(\n state = { ...initialState },\n action: ToolStyleActionTypes,\n): ToolStyleState {\n switch (action.type) {\n case TOOL_STYLE_ACTIONS.INIT_TOOL_STYLE_CONFIG: {\n return {\n ...initialState,\n };\n }\n\n case TOOL_STYLE_ACTIONS.UPDATE_TOOL_STYLE_CONFIG: {\n const computeColor = {};\n const payload = action.payload;\n if (payload?.borderOpacity || payload?.fillOpacity) {\n Object.assign(\n computeColor,\n ToolStyleUtils.initByOpacity(\n payload.borderOpacity || state.borderOpacity,\n payload.fillOpacity || state.fillOpacity,\n ),\n );\n }\n\n return {\n ...state,\n ...action.payload,\n ...computeColor,\n };\n }\n\n default:\n return state;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAKA,MAAM,eAA+B;AAAA,EACnC,OAAO;AAAA,EACP,OAAO;AAAA,EACP,eAAe;AAAA,EACf,aAAa;AAAA,EACb,WAAW,eAAe;AAAA,EAC1B,gBAAgB,eAAe;AAAA,EAC/B,WAAW,eAAe;AAAA,EAC1B,oBAAoB,CAAC,YAAY,OAAO;AAAA;0BAIxC,QAAQ,mBAAK,eACb,QACgB;AAChB,UAAQ,OAAO;AAAA,SACR,mBAAmB,wBAAwB;AAC9C,aAAO,mBACF;AAAA;AAAA,SAIF,mBAAmB,0BAA0B;AAChD,YAAM,eAAe;AACrB,YAAM,UAAU,OAAO;AACvB,UAAI,oCAAS,sDAA0B,cAAa;AAClD,eAAO,OACL,cACA,eAAe,cACb,QAAQ,iBAAiB,MAAM,eAC/B,QAAQ,eAAe,MAAM;AAAA;AAKnC,aAAO,iDACF,QACA,OAAO,UACP;AAAA;AAAA;AAKL,aAAO;AAAA;AAAA;;;;"}
@@ -0,0 +1 @@
1
+ import{uuid as v}from"@sensetime/annotation";import{jsonParser as l}from"./index.js";import{EToolName as d}from"../data/enums/ToolType.js";import _ from"lodash";import y from"./StepUtils.js";var O=Object.defineProperty,P=Object.defineProperties,j=Object.getOwnPropertyDescriptors,h=Object.getOwnPropertySymbols,w=Object.prototype.hasOwnProperty,x=Object.prototype.propertyIsEnumerable,S=(a,t,e)=>t in a?O(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,E=(a,t)=>{for(var e in t||(t={}))w.call(t,e)&&S(a,e,t[e]);if(h)for(var e of h(t))x.call(t,e)&&S(a,e,t[e]);return a},N=(a,t)=>P(a,j(t));class R{static copyResultChange(t,e,r){try{const s=l(t),o=l(r),i=`step_${e}`;if(s[i]){const n=s[i];if(n.result)return n.result=n.result.map(u=>N(E({},u),{id:v(8,62)})),o[i]=n,JSON.stringify(o)}return t}catch(s){return t}}static isResultSourceMatchedDependence(t,e){const r=t==null?void 0:t.map(o=>o.sourceID).sort(),s=e==null?void 0:e.map(o=>o.id).sort();return _.isEqual(r,s)}static deltaUpdateBasicResultList(t,e){const r=t==null?void 0:t.map(s=>s.sourceID).sort();return e.filter(s=>!r.includes(s.id))}static getInitialResultList(t,e,r,s,o){const i=t!=null?t:[];switch(r.tool){case d.Tag:case d.Text:{if(r.dataSourceStep>0){const n=this.deltaUpdateBasicResultList(i,s);if(n.length>0)return i.concat(e.getInitResultList(r.dataSourceStep,n))}return o!==!0?i:e.getInitResultList(r.dataSourceStep,s)}default:return i}}static dataCorrection(t,e,r,s){var o,i;try{const u=`step_${y.getStepInfo(r,s).step}`,c=l(t),I=l(e),f=(o=c[u])==null?void 0:o.result,p=(i=I[u])==null?void 0:i.result;if(!p||_.isEqual(f.sort(this.idCmp),p.sort(this.idCmp)))return t;const m=this.findDeletedIds(f,p);if(m.length===0)return t;const D=r,g=this.getStepKeys(c).sort();return this.deleteRes(c,D,m,g),JSON.stringify(c)}catch(n){return console.error(n),t}}static idCmp(t,e){const r=t.id,s=e.id;return r<s?-1:r>s?1:0}static findDeletedIds(t,e){return this.findDeletedItems(e,t).map(r=>r.id)}static findDeletedItems(t,e){const r=[];return t.forEach(s=>{e.some(i=>i.id===s.id)||r.push(s)}),r}static getStepKeys(t){return Object.keys(t).map(e=>parseInt(e.replace("step_",""),10)).filter(e=>!isNaN(e))}static deleteRes(t,e,r,s){s.forEach(o=>{if(o>e){const i=t[`step_${o}`];if([d.FolderTag,d.Segmentation].includes(i.tool))return;if(i.dataSourceStep===e){const n=[];i.result=i.result.filter(u=>r.includes(u.sourceID)?(n.push(u.id),!1):!0),this.deleteRes(t,o,n,s)}else i.result=i.result.filter(n=>!r.includes(n.sourceID))}})}}export{R as default};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnnotationDataUtils.js","sources":["../../src/utils/AnnotationDataUtils.ts"],"sourcesContent":["import { uuid } from '@sensetime/annotation';\nimport { jsonParser } from '.';\nimport { EToolName } from '@/data/enums/ToolType';\nimport _ from 'lodash';\nimport StepUtils from './StepUtils';\nimport { IStepInfo } from '@/types/step';\n\nexport default class AnnotationDataUtils {\n /**\n * 复制上一张图片结果\n * @param copyResult 复制的结果\n * @param step 复制的步骤\n * @param currentResult 当前的步骤\n * @returns\n */\n public static copyResultChange(copyResult: string, step: number, currentResult: string) {\n // 其实其限定的范围一般都在单图的情况\n try {\n const copyData = jsonParser(copyResult);\n const currentData = jsonParser(currentResult);\n const stepName = `step_${step}`;\n if (copyData[stepName]) {\n // 这层可能还要处理 dataSource 依赖问题\n const info = copyData[stepName];\n if (info.result) {\n info.result = info.result.map((info: any) => ({\n ...info,\n // @ts-ignore\n id: uuid(8, 62),\n }));\n currentData[stepName] = info;\n return JSON.stringify(currentData);\n }\n }\n return copyResult;\n } catch {\n return copyResult;\n }\n }\n\n /**\n * 判断结果sourceID与依赖数据的id是否能对应\n * @param result\n * @param basicResultList\n */\n public static isResultSourceMatchedDependence(result: any, basicResultList: any[]) {\n const sourceIDForCurStep = result?.map((i: { sourceID: string }) => i.sourceID).sort();\n const sourceIDForDependStep = basicResultList?.map((i) => i.id).sort();\n\n return _.isEqual(sourceIDForCurStep, sourceIDForDependStep);\n }\n\n /**\n * 获取依赖增量更新的内容\n * @param result\n * @param basicResultList\n * @returns\n */\n public static deltaUpdateBasicResultList(result: any, basicResultList: any[]) {\n const sourceIDForCurStep = result?.map((i: { sourceID: string }) => i.sourceID).sort();\n\n return basicResultList.filter((v) => !sourceIDForCurStep.includes(v.id));\n }\n\n /**\n *\n * @param stepResult\n * @param toolInstance\n * @param stepConfig\n * @param basicResultList 获取初始化数据 该部分默认输入需要为空数组\n * @param isInitData\n * @returns\n */\n public static getInitialResultList(\n stepResult: any[] | undefined,\n toolInstance: any,\n stepConfig: any,\n basicResultList: any[],\n isInitData: boolean,\n ) {\n const resultList = stepResult ?? [];\n\n switch (stepConfig.tool) {\n case EToolName.Tag:\n case EToolName.Text: {\n /**\n * 在依赖的情况下,检查的是否需要增量更新前面新增的结果\n */\n if (stepConfig.dataSourceStep > 0) {\n const deltaResultList = this.deltaUpdateBasicResultList(resultList, basicResultList);\n if (deltaResultList.length > 0) {\n return resultList.concat(\n toolInstance.getInitResultList(stepConfig.dataSourceStep, deltaResultList),\n );\n }\n }\n\n if (isInitData !== true) {\n return resultList;\n }\n\n return toolInstance.getInitResultList(stepConfig.dataSourceStep, basicResultList);\n }\n\n default: {\n return resultList;\n }\n }\n }\n\n /**\n * 修正数据,找到被删除的数据,并将依赖该数据的结果全部删除\n * @param newResStr 新提交的数据\n * @param oldResStr 当前的数据\n * @param step 当前操作的步骤\n * @param stepList 步骤列表\n */\n public static dataCorrection(\n newResStr: string,\n oldResStr: string,\n step: number,\n stepList: IStepInfo[],\n ) {\n try {\n const curStep = StepUtils.getStepInfo(step, stepList);\n const stepKey = `step_${curStep.step}`;\n const newRes = jsonParser(newResStr);\n const oldRes = jsonParser(oldResStr);\n const newResForCurStep = newRes[stepKey]?.result;\n const oldResForCurStep = oldRes[stepKey]?.result;\n\n /** 没有旧数据时不处理 */\n if (!oldResForCurStep) {\n return newResStr;\n }\n\n if (_.isEqual(newResForCurStep.sort(this.idCmp), oldResForCurStep.sort(this.idCmp))) {\n return newResStr;\n }\n\n const deletedIds = this.findDeletedIds(newResForCurStep, oldResForCurStep);\n\n if (deletedIds.length === 0) {\n return newResStr;\n }\n\n const dataSourceStep = step;\n const stepKeys = this.getStepKeys(newRes).sort();\n this.deleteRes(newRes, dataSourceStep, deletedIds, stepKeys);\n\n return JSON.stringify(newRes);\n } catch (error) {\n console.error(error);\n return newResStr;\n }\n }\n\n /**\n * id sort 规则\n * @param a\n * @param b\n * @returns\n */\n public static idCmp(a: any, b: any) {\n const idA = a.id;\n const idB = b.id;\n if (idA < idB) {\n return -1;\n }\n if (idA > idB) {\n return 1;\n }\n\n return 0;\n }\n\n /**\n * 找到结果被删除的id\n * @param newResForCurStep\n * @param oldResForCurStep\n * @returns {Array<string>}\n */\n public static findDeletedIds(newResForCurStep: any[], oldResForCurStep: any[]) {\n return this.findDeletedItems(oldResForCurStep, newResForCurStep).map((i) => i.id);\n }\n\n /**\n * 找到被删除的结果\n * @param oldResForCurStep\n * @param newResForCurStep\n * @returns {Array<any>}\n */\n public static findDeletedItems(oldResForCurStep: any[], newResForCurStep: any[]) {\n const deletedItems: any[] = [];\n oldResForCurStep.forEach((i: any) => {\n const isNewResExisted = newResForCurStep.some((r: any) => r.id === i.id);\n if (!isNewResExisted) {\n deletedItems.push(i);\n }\n });\n return deletedItems;\n }\n\n /**\n * 根据结果找到所有的步骤\n * @param res\n * @returns {Array<number>} 结果步骤列表\n */\n public static getStepKeys(res: any) {\n return Object.keys(res)\n .map((i) => parseInt(i.replace('step_', ''), 10))\n .filter((i) => !isNaN(i));\n }\n\n /**\n * 删除依赖数据的结果\n * @param resData 当前文件的结果\n * @param dataSourceStep 依赖步骤\n * @param deletedIds 需要删除的sourceID\n * @param stepKeys 结果的步骤\n */\n public static deleteRes(\n resData: any,\n dataSourceStep: number,\n deletedIds: string[],\n stepKeys: number[],\n ) {\n stepKeys.forEach((s) => {\n if (s > dataSourceStep) {\n const stepRes = resData[`step_${s}`];\n // 文件夹标签, 分割工具 没有依赖, 不进行判断\n if ([EToolName.FolderTag, EToolName.Segmentation].includes(stepRes.tool)) {\n return;\n }\n if (stepRes.dataSourceStep === dataSourceStep) {\n const newDeletedIds: string[] = [];\n stepRes.result = stepRes.result.filter((i: any) => {\n const exist = deletedIds.includes(i.sourceID);\n if (exist) {\n newDeletedIds.push(i.id);\n return false;\n }\n\n return true;\n });\n this.deleteRes(resData, s, newDeletedIds, stepKeys);\n } else {\n // 非直接依赖关系下,也同样过滤删除了对应框的数据(注意: 该场景不包含 filterData 过滤属性下,更改框的属性来删除对应的框体)\n stepRes.result = stepRes.result.filter((i: any) => {\n const exist = deletedIds.includes(i.sourceID);\n if (exist) {\n return false;\n }\n\n return true;\n });\n }\n }\n });\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import{isObject as e}from"lodash";class t{static jsonParser(r,s={}){try{return typeof r=="string"?JSON.parse(r):e(r)?r:s}catch(p){return s}}}t.getStepConfig=(i,r)=>i.find(s=>s.step===r);export{t as ConfigUtils};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigUtils.js","sources":["../../src/utils/ConfigUtils.ts"],"sourcesContent":["import { isObject } from 'lodash';\n\nexport class ConfigUtils {\n public static jsonParser(content: any, defaultValue: any = {}) {\n try {\n if (typeof content === 'string') {\n return JSON.parse(content);\n }\n return isObject(content) ? content : defaultValue;\n } catch (e) {\n return defaultValue;\n }\n }\n\n /**\n * 获取对应的步骤配置\n * @param stepList \n * @param step \n */\n public static getStepConfig = (stepList: any[], step: number) =>\n stepList.find((i) => i.step === step);\n}\n"],"names":[],"mappings":";;kBAEyB;AAAA,SACT,WAAW,SAAc,eAAoB,IAAI;AAC7D,QAAI;AACF,UAAI,OAAO,YAAY,UAAU;AAC/B,eAAO,KAAK,MAAM;AAAA;AAEpB,aAAO,SAAS,WAAW,UAAU;AAAA,aAC9B,GAAP;AACA,aAAO;AAAA;AAAA;AAAA;AASG,YAAA,gBAAgB,CAAC,UAAiB,SAC9C,SAAS,KAAK,CAAC,MAAM,EAAE,SAAS;;;;"}
@@ -0,0 +1 @@
1
+ import{EPageTurningOperation as x}from"../data/enums/AnnotationSize.js";import f from"lodash";import{jsonParser as u}from"./index.js";const r=class{static getPageInfo(e){const{imgIndex:n,imgList:s,basicResultList:t,basicIndex:d,step:a,stepList:c}=e;return{fileIndex:n,basicIndex:d,basicList:t,fileList:s,step:a,stepList:c}}static getNextPageInfo(e,n,s){const t=r.getPageInfo(n),{fileIndex:d}=r.getPageInfo(n),a=r.getNextFileIndex(e,t,s),c=r.getNextBasicIndex(e,t.basicIndex),I=a!==d,l=r.hasNextBasicIndex(e,t),i={fileIndex:a,basicIndex:c,fileIndexChanged:I,basicIndexChanged:l};return l?(i.fileIndexChanged=!1,i.fileIndex=d,i):(i.basicIndex=e===x.Backward?r.getBasicResultIndexForNextFile(t,i.fileIndex):0,i)}};let o=r;o.getNextBasicIndex=(e,n)=>n+(e===x.Forward?1:-1),o.hasNextBasicIndex=(e,n)=>{const{basicList:s}=n;if((s==null?void 0:s.length)>0){const t=r.getNextBasicIndex(e,n.basicIndex);return t>=0&&s.length>t}return!1},o.getBasicResultIndexForNextFile=(e,n)=>{var s;const{stepList:t,step:d,fileList:a}=e,c=t.find(l=>l.step===d),I=c==null?void 0:c.dataSourceStep;if(I){const i=(s=u(a[n].result)[`step_${I}`])==null?void 0:s.result;return!i||!(i==null?void 0:i.length)?0:(i==null?void 0:i.length)-1}return 0},o.getNextFileIndex=(e,n,s)=>{const{fileIndex:t,fileList:d}=n;let a=s!==void 0?s:t;switch(e){case x.Forward:a+=1;break;case x.Backward:a-=1;break;case x.Jump:break}return f.inRange(a,0,d.length)?a:t};export{o as default};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageOperator.js","sources":["../../src/utils/PageOperator.ts"],"sourcesContent":["import { EPageTurningOperation } from '../data/enums/AnnotationSize';\nimport _ from 'lodash';\nimport { jsonParser } from '.';\n\ninterface IPageInfo {\n fileIndex: number;\n basicIndex: number;\n basicList: any[];\n fileList: any[];\n step: number;\n stepList: any[];\n}\n\nclass PageOperator {\n public static getPageInfo(annotationStore: any) {\n const {\n imgIndex: fileIndex,\n imgList: fileList,\n basicResultList: basicList,\n basicIndex,\n step,\n stepList,\n } = annotationStore;\n\n return {\n fileIndex,\n basicIndex,\n basicList,\n fileList,\n step,\n stepList,\n };\n }\n\n /**\n *\n * @param pageTurningOperation\n * @param nextIndex\n */\n public static getNextPageInfo(\n pageTurningOperation: EPageTurningOperation,\n annotationStore: any,\n nextIndex?: number,\n ) {\n const pageInfo: IPageInfo = PageOperator.getPageInfo(annotationStore);\n const { fileIndex: currentFileIndex } = PageOperator.getPageInfo(annotationStore);\n\n const nextFileIndex = PageOperator.getNextFileIndex(pageTurningOperation, pageInfo, nextIndex);\n const nextBasicIndex = PageOperator.getNextBasicIndex(\n pageTurningOperation,\n pageInfo.basicIndex,\n );\n const fileIndexChanged = nextFileIndex !== currentFileIndex;\n\n const hasNextBasicIndex = PageOperator.hasNextBasicIndex(pageTurningOperation, pageInfo);\n\n const pageChangedInfo = {\n fileIndex: nextFileIndex,\n basicIndex: nextBasicIndex,\n fileIndexChanged,\n basicIndexChanged: hasNextBasicIndex,\n };\n\n if (hasNextBasicIndex) {\n pageChangedInfo.fileIndexChanged = false;\n pageChangedInfo.fileIndex = currentFileIndex;\n return pageChangedInfo;\n }\n\n pageChangedInfo.basicIndex =\n pageTurningOperation === EPageTurningOperation.Backward\n ? PageOperator.getBasicResultIndexForNextFile(pageInfo, pageChangedInfo.fileIndex)\n : 0;\n\n return pageChangedInfo;\n }\n\n /**\n * 获取下一个依赖索引\n * @param pageTurningOperation\n */\n public static getNextBasicIndex = (\n pageTurningOperation: EPageTurningOperation,\n basicIndex: number,\n ) => {\n return basicIndex + (pageTurningOperation === EPageTurningOperation.Forward ? 1 : -1);\n };\n\n /**\n * 存在下一个依赖数据\n * @param pageTurningOperation\n */\n public static hasNextBasicIndex = (\n pageTurningOperation: EPageTurningOperation,\n pageInfo: IPageInfo,\n ) => {\n const { basicList } = pageInfo;\n if (basicList?.length > 0) {\n const nextBasicIndex = PageOperator.getNextBasicIndex(\n pageTurningOperation,\n pageInfo.basicIndex,\n );\n\n return nextBasicIndex >= 0 && basicList.length > nextBasicIndex;\n }\n\n return false;\n };\n\n public static getBasicResultIndexForNextFile = (pageInfo: IPageInfo, fileIndex: number) => {\n const { stepList, step, fileList } = pageInfo;\n const stepConfig = stepList.find((i) => i.step === step);\n const dataSourceStep = stepConfig?.dataSourceStep;\n\n if (dataSourceStep) {\n const fileResult = jsonParser(fileList[fileIndex].result);\n const stepResult = fileResult[`step_${dataSourceStep}`]?.result;\n\n if (!stepResult || !stepResult?.length) {\n return 0;\n }\n\n return stepResult?.length - 1;\n }\n\n return 0;\n };\n\n /**\n * 计算下一个文件的索引\n * @param pageTurningOperation\n * @param fileIndex\n */\n public static getNextFileIndex = (\n pageTurningOperation: EPageTurningOperation,\n pageInfo: IPageInfo,\n fileIndex?: number,\n ) => {\n const { fileIndex: currentFileIndex, fileList } = pageInfo;\n\n let newIndex = fileIndex !== undefined ? fileIndex : currentFileIndex;\n switch (pageTurningOperation) {\n case EPageTurningOperation.Forward:\n newIndex += 1;\n break;\n case EPageTurningOperation.Backward:\n newIndex -= 1;\n break;\n case EPageTurningOperation.Jump:\n break;\n }\n\n if (_.inRange(newIndex, 0, fileList.length)) {\n return newIndex;\n }\n\n return currentFileIndex;\n };\n}\n\nexport default PageOperator;\n"],"names":[],"mappings":";;;;AAaA,4BAAmB;AAAA,SACH,YAAY,iBAAsB;AAC9C,UAAM;AAAA,MACJ,UAAU;AAAA,MACV,SAAS;AAAA,MACT,iBAAiB;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,QACE;AAEJ,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA,SASU,gBACZ,sBACA,iBACA,WACA;AACA,UAAM,WAAsB,cAAa,YAAY;AACrD,UAAM,CAAE,WAAW,oBAAqB,cAAa,YAAY;AAEjE,UAAM,gBAAgB,cAAa,iBAAiB,sBAAsB,UAAU;AACpF,UAAM,iBAAiB,cAAa,kBAClC,sBACA,SAAS;AAEX,UAAM,mBAAmB,kBAAkB;AAE3C,UAAM,oBAAoB,cAAa,kBAAkB,sBAAsB;AAE/E,UAAM,kBAAkB;AAAA,MACtB,WAAW;AAAA,MACX,YAAY;AAAA,MACZ;AAAA,MACA,mBAAmB;AAAA;AAGrB,QAAI,mBAAmB;AACrB,sBAAgB,mBAAmB;AACnC,sBAAgB,YAAY;AAC5B,aAAO;AAAA;AAGT,oBAAgB,aACd,yBAAyB,sBAAsB,WAC3C,cAAa,+BAA+B,UAAU,gBAAgB,aACtE;AAEN,WAAO;AAAA;AAAA;;AA7DX,aAoEgB,oBAAoB,CAChC,sBACA,eACG;AACH,SAAO,uCAAuC,sBAAsB,UAAU,IAAI;AAAA;AAxEtF,aA+EgB,oBAAoB,CAChC,sBACA,aACG;AACH,QAAM,CAAE,aAAc;AACtB,MAAI,wCAAW,UAAS,GAAG;AACzB,UAAM,iBAAiB,cAAa,kBAClC,sBACA,SAAS;AAGX,WAAO,kBAAkB,KAAK,UAAU,SAAS;AAAA;AAGnD,SAAO;AAAA;AA7FX,aAgGgB,iCAAiC,CAAC,UAAqB,cAAsB;AA7G7F;AA8GI,QAAM,CAAE,UAAU,MAAM,YAAa;AACrC,QAAM,aAAa,SAAS,KAAK,CAAC,MAAM,EAAE,SAAS;AACnD,QAAM,iBAAiB,yCAAY;AAEnC,MAAI,gBAAgB;AAClB,UAAM,aAAa,WAAW,SAAS,WAAW;AAClD,UAAM,aAAa,iBAAW,QAAQ,sBAAnB,mBAAsC;AAEzD,QAAI,CAAC,cAAc,2CAAa,SAAQ;AACtC,aAAO;AAAA;AAGT,WAAO,0CAAY,UAAS;AAAA;AAG9B,SAAO;AAAA;AAhHX,aAwHgB,mBAAmB,CAC/B,sBACA,UACA,cACG;AACH,QAAM,CAAE,WAAW,kBAAkB,YAAa;AAElD,MAAI,WAAW,cAAc,SAAY,YAAY;AACrD,UAAQ;AAAA,SACD,sBAAsB;AACzB,kBAAY;AACZ;AAAA,SACG,sBAAsB;AACzB,kBAAY;AACZ;AAAA,SACG,sBAAsB;AACzB;AAAA;AAGJ,MAAI,EAAE,QAAQ,UAAU,GAAG,SAAS,SAAS;AAC3C,WAAO;AAAA;AAGT,SAAO;AAAA;;;;"}
@@ -0,0 +1 @@
1
+ import{EStepType as r}from"../constant/index.js";class o{static getCurrentStepInfo(n,e){const t=this.getStepInfo(n,e);return[r.QUALITY_INSPECTION,r.MANUAL_CORRECTION].includes(t==null?void 0:t.type)?this.getStepInfo(t.dataSourceStep,e):t}static getStepInfo(n,e){return e==null?void 0:e.filter(t=>t.step===n)[0]}}export{o as default};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepUtils.js","sources":["../../src/utils/StepUtils.ts"],"sourcesContent":["import { EStepType } from '@/constant';\nimport { IStepInfo } from '@/types/step';\n\nexport default class StepUtils {\n /**\n * 获取当前步骤的步骤配置信息,用于当前标注配置的获取\n * @export\n * @param {number} currentStep\n * @param {IStepInfo[]} stepList\n * @returns {*}\n */\n public static getCurrentStepInfo(currentStep: number, stepList: IStepInfo[]) {\n const currentStepInfo = this.getStepInfo(currentStep, stepList);\n\n const useDataSourceStep = [EStepType.QUALITY_INSPECTION, EStepType.MANUAL_CORRECTION].includes(\n currentStepInfo?.type,\n );\n\n /** 人工修正、质检获取 dataSourceStep 作为步骤配置 */\n if (useDataSourceStep) {\n return this.getStepInfo(currentStepInfo.dataSourceStep, stepList);\n }\n\n return currentStepInfo;\n }\n\n /**\n * 找到指定步骤的数据\n * @param step 获取的步骤\n * @param stepList 步骤列表\n * @returns 步骤配置\n */\n public static getStepInfo(step: number, stepList: IStepInfo[]) {\n return stepList?.filter((info) => info.step === step)[0];\n }\n}\n"],"names":[],"mappings":";;gBAG+B;AAAA,SAQd,mBAAmB,aAAqB,UAAuB;AAC5E,UAAM,kBAAkB,KAAK,YAAY,aAAa;AAEtD,UAAM,oBAAoB,CAAC,UAAU,oBAAoB,UAAU,mBAAmB,SACpF,mDAAiB;AAInB,QAAI,mBAAmB;AACrB,aAAO,KAAK,YAAY,gBAAgB,gBAAgB;AAAA;AAG1D,WAAO;AAAA;AAAA,SASM,YAAY,MAAc,UAAuB;AAC9D,WAAO,qCAAU,OAAO,CAAC,SAAS,KAAK,SAAS,MAAM;AAAA;AAAA;;;;"}
@@ -0,0 +1 @@
1
+ import{ETextType as u}from"../data/enums/ToolType.js";const t="^[0-9]+$",s="^[A-Za-z]+$";class c{static checkString(r,a){let e="";switch(r){case u.Order:case u.NumberOnly:e=t;break;case u.EnglishOnly:e=s;break;case u.CustomFormat:e=a;break}return e}static getErrorNotice(r){switch(r){case u.Order:case u.NumberOnly:return"\u8BF7\u6309\u4EC5\u6570\u5B57\u7684\u683C\u5F0F\u8F93\u5165";case u.EnglishOnly:return"\u8BF7\u6309\u4EC5\u82F1\u6587\u7684\u683C\u5F0F\u8F93\u5165";case u.CustomFormat:return"\u8BF7\u6309\u8981\u6C42\u7684\u683C\u5F0F\u8F93\u5165";default:return""}}}export{s as REGEXP_ENGLISH,t as REGEXP_NUMBER,c as TextUtils};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextUtils.js","sources":["../../src/utils/TextUtils.ts"],"sourcesContent":["import { ETextType } from '@/data/enums/ToolType';\n\nexport const REGEXP_NUMBER = '^[0-9]+$';\nexport const REGEXP_ENGLISH = '^[A-Za-z]+$';\n\nexport class TextUtils {\n public static checkString(textCheckType: ETextType, customFormat: string) {\n let regExpString = '';\n switch (textCheckType) {\n case ETextType.Order:\n case ETextType.NumberOnly:\n regExpString = REGEXP_NUMBER;\n break;\n case ETextType.EnglishOnly:\n regExpString = REGEXP_ENGLISH;\n break;\n case ETextType.CustomFormat:\n regExpString = customFormat;\n break;\n }\n return regExpString;\n }\n\n public static getErrorNotice(textCheckType: ETextType) {\n switch (textCheckType) {\n case ETextType.Order:\n case ETextType.NumberOnly:\n return '请按仅数字的格式输入';\n case ETextType.EnglishOnly:\n return '请按仅英文的格式输入';\n case ETextType.CustomFormat:\n return '请按要求的格式输入';\n default:\n return '';\n }\n }\n}\n"],"names":[],"mappings":";;MAEa,gBAAgB;MAChB,iBAAiB;gBAEP;AAAA,SACP,YAAY,eAA0B,cAAsB;AACxE,QAAI,eAAe;AACnB,YAAQ;AAAA,WACD,UAAU;AAAA,WACV,UAAU;AACb,uBAAe;AACf;AAAA,WACG,UAAU;AACb,uBAAe;AACf;AAAA,WACG,UAAU;AACb,uBAAe;AACf;AAAA;AAEJ,WAAO;AAAA;AAAA,SAGK,eAAe,eAA0B;AACrD,YAAQ;AAAA,WACD,UAAU;AAAA,WACV,UAAU;AACb,eAAO;AAAA,WACJ,UAAU;AACb,eAAO;AAAA,WACJ,UAAU;AACb,eAAO;AAAA;AAEP,eAAO;AAAA;AAAA;AAAA;;;;"}
@@ -0,0 +1 @@
1
+ import{CHANGE_COLOR as o,DEFAULT_COLOR as p,COLORS_ARRAY as u,NULL_COLOR as C,BORDER_OPACITY_LEVEL as k,FILL_OPACITY_LEVEL as O}from"../data/Style.js";import f from"lodash";const v=.8,c=class{static colorSplit(a,s){return a.split(" ").join("").replace(/,[0-9]+([.]{1}[0-9]+){0,1}\)/,`,${s.toFixed(2)})`)}static computeOpacity(a,s){var e,t;let r=(t=(((e=s.split(" ").join("").match(/,[0-9]+([.]{1}[0-9]+){0,1}\)/))==null?void 0:e[0])||"").match(/[0-9]+([.]{1}[0-9]+){0,1}/))==null?void 0:t[0];return a*Number(r)}static getToolColors(a=9,s=9){const e=c.colorSplit,t=c.computeOpacity,n=f.cloneDeep(o),r=k[a],d=O[s];return Object.keys(o).forEach(i=>{const l=f.cloneDeep(p);l.valid.stroke=e(o[i].valid,t(r,o[i].valid)),l.valid.fill=e(o[i].valid,t(d,o[i].valid)*v),l.validSelected.stroke=e(o[i].select.stroke,t(r,o[i].select.stroke)),l.validSelected.fill=e(o[i].select.fill,t(d,o[i].select.fill)*v),l.validHover.stroke=e(o[i].hover,t(r,o[i].hover)),l.validHover.fill=e(o[i].hover,t(d,o[i].hover)*v),l.invalid.stroke=e(l.invalid.stroke,t(r,l.invalid.stroke)),l.invalid.fill=e(l.invalid.stroke,t(d,l.invalid.stroke)*v),l.invalidSelected.stroke=e(l.invalidSelected.stroke,t(r,l.invalidSelected.stroke)),l.invalidSelected.fill=e(l.invalidSelected.fill,t(d,l.invalidSelected.fill)*v),l.invalidHover.stroke=e(l.invalidHover.stroke,t(r,l.invalidHover.fill)),l.invalidHover.fill=e(l.invalidHover.fill,t(d,l.invalidHover.fill)*v),n[i]=l}),n}static getAttributeColors(a=9,s=9){const e=c.colorSplit,t=c.computeOpacity,n=k[a],r=O[s];let d=f.cloneDeep(u);return d.unshift(C),d=d.map(i=>{const l=JSON.parse(JSON.stringify(p));return l.valid.stroke=e(i,t(n,i)),l.valid.fill=e(i,t(r,i)*v*.5),l.validSelected.stroke=e(i,t(n,i)),l.validSelected.fill=e(i,t(r,i)*v),l.validHover.stroke=e(i,t(n,i)),l.validHover.fill=e(i,t(r,i)*v),l.invalid.stroke=e(l.invalid.stroke,t(n,i)),l.invalid.fill=e(l.invalid.fill,t(r,i)*v*.5),l.invalidSelected.stroke=e(l.invalidSelected.stroke,t(n,i)),l.invalidSelected.fill=e(l.invalidSelected.fill,t(r,i)*v),l.invalidHover.stroke=e(l.invalidHover.stroke,t(n,i)),l.invalidHover.fill=e(l.invalidHover.fill,t(r,i)*v),l}),d}static getDefaultToolLineColors(){const a={};return Object.keys(o).forEach(s=>{a[s]=o[s].line}),a}static initByOpacity(a,s){return{toolColor:this.getToolColors(a,s),attributeColor:this.getAttributeColors(a,s)}}};let S=c;S.changeOpacity={1:.2,3:.4,5:.6,7:.8,9:1};export{S as ToolStyleUtils};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolStyleUtils.js","sources":["../../src/utils/ToolStyleUtils.ts"],"sourcesContent":["import {\n CHANGE_COLOR,\n DEFAULT_COLOR,\n COLORS_ARRAY,\n NULL_COLOR,\n BORDER_OPACITY_LEVEL,\n FILL_OPACITY_LEVEL,\n} from '@/data/Style';\nimport _ from 'lodash';\n\nconst FILL_OPACITY = 0.8;\n\nexport class ToolStyleUtils {\n public static changeOpacity: { [a: number]: number } = {\n 1: 0.2,\n 3: 0.4,\n 5: 0.6,\n 7: 0.8,\n 9: 1.0,\n };\n\n public static colorSplit(color: string, opacity: number) {\n return color\n .split(' ')\n .join('')\n .replace(/,[0-9]+([.]{1}[0-9]+){0,1}\\)/, `,${opacity.toFixed(2)})`);\n }\n\n public static computeOpacity(opacity: number, color: string) {\n const s = color\n .split(' ')\n .join('')\n .match(/,[0-9]+([.]{1}[0-9]+){0,1}\\)/)?.[0] || '';\n let firstOpacity = s.match(/[0-9]+([.]{1}[0-9]+){0,1}/)?.[0]\n return opacity * Number(firstOpacity);\n }\n\n public static getToolColors(borderOpacityParam = 9, fillOpacityParam = 9) {\n const colorSplit = ToolStyleUtils.colorSplit;\n const computeOpacity = ToolStyleUtils.computeOpacity;\n\n const toolColor = _.cloneDeep(CHANGE_COLOR);\n const borderOpacity = BORDER_OPACITY_LEVEL[borderOpacityParam];\n const fillOpacity = FILL_OPACITY_LEVEL[fillOpacityParam];\n\n Object.keys(CHANGE_COLOR).forEach((color: any) => {\n const showColor = _.cloneDeep(DEFAULT_COLOR);\n showColor.valid.stroke = colorSplit(\n CHANGE_COLOR[color].valid,\n computeOpacity(borderOpacity, CHANGE_COLOR[color].valid),\n );\n showColor.valid.fill = colorSplit(\n CHANGE_COLOR[color].valid,\n computeOpacity(fillOpacity, CHANGE_COLOR[color].valid) * FILL_OPACITY,\n );\n showColor.validSelected.stroke = colorSplit(\n CHANGE_COLOR[color].select.stroke,\n computeOpacity(borderOpacity, CHANGE_COLOR[color].select.stroke),\n );\n showColor.validSelected.fill = colorSplit(\n CHANGE_COLOR[color].select.fill,\n computeOpacity(fillOpacity, CHANGE_COLOR[color].select.fill) * FILL_OPACITY,\n );\n showColor.validHover.stroke = colorSplit(\n CHANGE_COLOR[color].hover,\n computeOpacity(borderOpacity, CHANGE_COLOR[color].hover),\n );\n showColor.validHover.fill = colorSplit(\n CHANGE_COLOR[color].hover,\n computeOpacity(fillOpacity, CHANGE_COLOR[color].hover) * FILL_OPACITY,\n );\n\n // 无效的比例是一样的\n showColor.invalid.stroke = colorSplit(\n showColor.invalid.stroke,\n computeOpacity(borderOpacity, showColor.invalid.stroke),\n );\n showColor.invalid.fill = colorSplit(\n showColor.invalid.stroke,\n computeOpacity(fillOpacity, showColor.invalid.stroke) * FILL_OPACITY,\n );\n showColor.invalidSelected.stroke = colorSplit(\n showColor.invalidSelected.stroke,\n computeOpacity(borderOpacity, showColor.invalidSelected.stroke),\n );\n showColor.invalidSelected.fill = colorSplit(\n showColor.invalidSelected.fill,\n computeOpacity(fillOpacity, showColor.invalidSelected.fill) * FILL_OPACITY,\n );\n showColor.invalidHover.stroke = colorSplit(\n showColor.invalidHover.stroke,\n computeOpacity(borderOpacity, showColor.invalidHover.fill),\n );\n showColor.invalidHover.fill = colorSplit(\n showColor.invalidHover.fill,\n computeOpacity(fillOpacity, showColor.invalidHover.fill) * FILL_OPACITY,\n );\n toolColor[color] = showColor;\n });\n return toolColor;\n }\n\n public static getAttributeColors(borderOpacityParam = 9, fillOpacityParam = 9) {\n const colorSplit = ToolStyleUtils.colorSplit;\n const computeOpacity = ToolStyleUtils.computeOpacity;\n const borderOpacity = BORDER_OPACITY_LEVEL[borderOpacityParam];\n const fillOpacity = FILL_OPACITY_LEVEL[fillOpacityParam];\n\n let AttributeColorList: string[] = _.cloneDeep(COLORS_ARRAY);\n AttributeColorList.unshift(NULL_COLOR);\n AttributeColorList = AttributeColorList.map((item) => {\n const showColor = JSON.parse(JSON.stringify(DEFAULT_COLOR));\n showColor.valid.stroke = colorSplit(item, computeOpacity(borderOpacity, item));\n showColor.valid.fill = colorSplit(\n item,\n computeOpacity(fillOpacity, item) * FILL_OPACITY * 0.5,\n );\n showColor.validSelected.stroke = colorSplit(item, computeOpacity(borderOpacity, item));\n showColor.validSelected.fill = colorSplit(\n item,\n computeOpacity(fillOpacity, item) * FILL_OPACITY,\n );\n showColor.validHover.stroke = colorSplit(item, computeOpacity(borderOpacity, item));\n showColor.validHover.fill = colorSplit(\n item,\n computeOpacity(fillOpacity, item) * FILL_OPACITY,\n );\n showColor.invalid.stroke = colorSplit(\n showColor.invalid.stroke,\n computeOpacity(borderOpacity, item),\n );\n showColor.invalid.fill = colorSplit(\n showColor.invalid.fill,\n computeOpacity(fillOpacity, item) * FILL_OPACITY * 0.5,\n );\n showColor.invalidSelected.stroke = colorSplit(\n showColor.invalidSelected.stroke,\n computeOpacity(borderOpacity, item),\n );\n showColor.invalidSelected.fill = colorSplit(\n showColor.invalidSelected.fill,\n computeOpacity(fillOpacity, item) * FILL_OPACITY,\n );\n showColor.invalidHover.stroke = colorSplit(\n showColor.invalidHover.stroke,\n computeOpacity(borderOpacity, item),\n );\n showColor.invalidHover.fill = colorSplit(\n showColor.invalidHover.fill,\n computeOpacity(fillOpacity, item) * FILL_OPACITY,\n );\n return showColor;\n });\n return AttributeColorList;\n }\n\n public static getDefaultToolLineColors() {\n const toolColor: any = {};\n Object.keys(CHANGE_COLOR).forEach((color: any) => {\n toolColor[color] = CHANGE_COLOR[color].line;\n });\n return toolColor;\n }\n\n public static initByOpacity(borderOpacity: number, fillOpacity: number) {\n return {\n toolColor: this.getToolColors(borderOpacity, fillOpacity),\n attributeColor: this.getAttributeColors(borderOpacity, fillOpacity),\n };\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import{jsonParser as _}from"./index.js";import g from"./StepUtils.js";var P=Object.defineProperty,I=Object.defineProperties,d=Object.getOwnPropertyDescriptors,m=Object.getOwnPropertySymbols,N=Object.prototype.hasOwnProperty,w=Object.prototype.propertyIsEnumerable,y=(e,r,t)=>r in e?P(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,c=(e,r)=>{for(var t in r||(r={}))N.call(r,t)&&y(e,t,r[t]);if(m)for(var t of m(r))w.call(r,t)&&y(e,t,r[t]);return e},u=(e,r)=>I(e,d(r));const v=(e,r)=>JSON.stringify(c(c({},_(e)),r)),j=(e,r,t)=>{const{step:a,stepList:l}=r,{rect:o,basicRectID:f}=t;try{const s=_(e),O=g.getCurrentStepInfo(a,l),{dataSourceStep:S}=O,n=`step_${O.step}`;if(s[n]){const i=s[n];return i.result?(JSON.stringify(i.result)===JSON.stringify(o)||(f?i.result=[...i.result.filter(p=>!(p.sourceID&&p.sourceID===f)),...o.filter(p=>p.sourceID&&p.sourceID===f)]:i.result=o),JSON.stringify(s)):JSON.stringify(u(c({},s),{[n]:u(c({},s[n]),{result:o})}))}return JSON.stringify(u(c({},s),{[n]:{dataSourceStep:S,toolName:l[a-1].tool,result:o}}))}catch(s){return e}};export{j as composeResult,v as composeResultWithBasicImgInfo};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.js","sources":["../../src/utils/data.ts"],"sourcesContent":["import { jsonParser } from '.';\nimport StepUtils from './StepUtils';\n\n/**\n * 解析结果,将图片信息注入到结果\n * @param result\n * @param basicImgInfo\n */\nexport const composeResultWithBasicImgInfo = (\n result: string,\n basicImgInfo: { [a: string]: any },\n) => {\n const newResult = JSON.stringify({ ...jsonParser(result), ...basicImgInfo });\n return newResult;\n};\n\n// 处理result\nexport const composeResult = (\n result: string,\n pos: {\n step: number;\n stepList: any[];\n },\n newData: {\n rect: any[];\n basicRectID?: string;\n },\n) => {\n const { step, stepList } = pos;\n const { rect, basicRectID } = newData;\n\n try {\n const data = jsonParser(result);\n const currentStepInfo = StepUtils.getCurrentStepInfo(step, stepList);\n const { dataSourceStep } = currentStepInfo;\n\n const stepName = `step_${currentStepInfo.step}`;\n\n if (data[stepName]) {\n const info = data[stepName];\n if (info.result) {\n if (JSON.stringify(info.result) === JSON.stringify(rect)) {\n return JSON.stringify(data);\n }\n if (basicRectID) {\n info.result = [\n ...info.result.filter((v: { sourceID: string; }) => !(v.sourceID && v.sourceID === basicRectID)),\n ...rect.filter((v) => v.sourceID && v.sourceID === basicRectID),\n ];\n } else {\n info.result = rect;\n }\n return JSON.stringify(data);\n }\n return JSON.stringify({\n ...data,\n [stepName]: {\n ...data[stepName],\n result: rect,\n },\n });\n }\n // 初始化结果\n return JSON.stringify({\n ...data,\n [stepName]: {\n dataSourceStep,\n toolName: stepList[step - 1].tool,\n result: rect,\n },\n });\n } catch (e) {\n return result;\n }\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;MAQa,gCAAgC,CAC3C,QACA,iBACG;AACH,QAAM,YAAY,KAAK,UAAU,kCAAK,WAAW,UAAY;AAC7D,SAAO;AAAA;MAII,gBAAgB,CAC3B,QACA,KAIA,YAIG;AACH,QAAM,CAAE,MAAM,YAAa;AAC3B,QAAM,CAAE,MAAM,eAAgB;AAE9B,MAAI;AACF,UAAM,OAAO,WAAW;AACxB,UAAM,kBAAkB,UAAU,mBAAmB,MAAM;AAC3D,UAAM,CAAE,kBAAmB;AAE3B,UAAM,WAAW,QAAQ,gBAAgB;AAEzC,QAAI,KAAK,WAAW;AAClB,YAAM,OAAO,KAAK;AAClB,UAAI,KAAK,QAAQ;AACf,YAAI,KAAK,UAAU,KAAK,YAAY,KAAK,UAAU,OAAO;AACxD,iBAAO,KAAK,UAAU;AAAA;AAExB,YAAI,aAAa;AACf,eAAK,SAAS;AAAA,YACZ,GAAG,KAAK,OAAO,OAAO,CAAC,MAA6B,IAAI,YAAY,EAAE,aAAa;AAAA,YACnF,GAAG,KAAK,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa;AAAA;AAAA,eAEhD;AACL,eAAK,SAAS;AAAA;AAEhB,eAAO,KAAK,UAAU;AAAA;AAExB,aAAO,KAAK,UAAU,iCACjB,OADiB;AAAA,SAEnB,WAAW,iCACP,KAAK,YADE;AAAA,UAEV,QAAQ;AAAA;AAAA;AAAA;AAKd,WAAO,KAAK,UAAU,iCACjB,OADiB;AAAA,OAEnB,WAAW;AAAA,QACV;AAAA,QACA,UAAU,SAAS,OAAO,GAAG;AAAA,QAC7B,QAAQ;AAAA;AAAA;AAAA,WAGL,GAAP;AACA,WAAO;AAAA;AAAA;;;;"}
@@ -0,0 +1 @@
1
+ function i(e,f){if(!e)return f;let n;return typeof e=="function"?n=e():"current"in e?n=e.current:n=e,n}export{i as getTargetElement};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.js","sources":["../../src/utils/dom.ts"],"sourcesContent":["import { MutableRefObject } from 'react';\n\nexport type BasicTarget<T = HTMLElement> =\n | (() => T | null)\n | T\n | null\n | MutableRefObject<T | null | undefined>;\n\ntype TargetElement = HTMLElement | Element | Document | Window;\n\nexport function getTargetElement(\n target?: BasicTarget<TargetElement>,\n defaultElement?: TargetElement,\n): TargetElement | undefined | null {\n if (!target) {\n return defaultElement;\n }\n\n let targetElement: TargetElement | undefined | null;\n\n if (typeof target === 'function') {\n targetElement = target();\n } else if ('current' in target) {\n targetElement = target.current;\n } else {\n targetElement = target;\n }\n\n return targetElement;\n}"],"names":[],"mappings":"0BAWE,QACA,gBACkC;AAClC,MAAI,CAAC,QAAQ;AACX,WAAO;AAAA;AAGT,MAAI;AAEJ,MAAI,OAAO,WAAW,YAAY;AAChC,oBAAgB;AAAA,aACP,aAAa,QAAQ;AAC9B,oBAAgB,OAAO;AAAA,SAClB;AACL,oBAAgB;AAAA;AAGlB,SAAO;AAAA;;;;"}
@@ -0,0 +1 @@
1
+ import s from"lodash";const o=(r,t={})=>{try{return typeof r=="string"?JSON.parse(r):s.isObject(r)?r:t}catch(i){return t}},n=(r,t)=>r||s.isNull(r)?r:t,u=r=>{if(Array.isArray(r))return r.join(" ");if(s.isObject(r)){const t=[];return Object.keys(r).forEach(i=>{r[i]&&t.push(i)}),t.join(" ")}return""};export{u as classnames,n as getNewNode,o as jsonParser};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/utils/index.ts"],"sourcesContent":["import _ from 'lodash';\n\nexport const jsonParser = (content: any, defaultValue: any = {}) => {\n try {\n if (typeof content === 'string') {\n return JSON.parse(content);\n }\n return _.isObject(content) ? content : defaultValue;\n } catch (e) {\n return defaultValue;\n }\n};\n\nexport const getNewNode = <T>(newNode: T, oldNode: T): T => {\n return newNode || _.isNull(newNode) ? newNode : oldNode;\n};\n\nexport const classnames = (className: { [key: string]: boolean } | string[]) => {\n if (Array.isArray(className)) {\n return className.join(' ');\n }\n\n if (_.isObject(className)) {\n const classArray: string[] = [];\n Object.keys(className).forEach((key) => {\n if (className[key]) {\n classArray.push(key);\n }\n });\n\n return classArray.join(' ');\n }\n\n return '';\n};\n"],"names":[],"mappings":";;MAEa,aAAa,CAAC,SAAc,eAAoB,OAAO;AAClE,MAAI;AACF,QAAI,OAAO,YAAY,UAAU;AAC/B,aAAO,KAAK,MAAM;AAAA;AAEpB,WAAO,EAAE,SAAS,WAAW,UAAU;AAAA,WAChC,GAAP;AACA,WAAO;AAAA;AAAA;MAIE,aAAa,CAAI,SAAY,YAAkB;AAC1D,SAAO,WAAW,EAAE,OAAO,WAAW,UAAU;AAAA;MAGrC,aAAa,CAAC,cAAqD;AAC9E,MAAI,MAAM,QAAQ,YAAY;AAC5B,WAAO,UAAU,KAAK;AAAA;AAGxB,MAAI,EAAE,SAAS,YAAY;AACzB,UAAM,aAAuB;AAC7B,WAAO,KAAK,WAAW,QAAQ,CAAC,QAAQ;AACtC,UAAI,UAAU,MAAM;AAClB,mBAAW,KAAK;AAAA;AAAA;AAIpB,WAAO,WAAW,KAAK;AAAA;AAGzB,SAAO;AAAA;;;;"}
@@ -0,0 +1 @@
1
+ import m,{useState as P,useRef as f,useEffect as a}from"react";import{message as p,Spin as b}from"antd/es";import{connect as h}from"react-redux";import w from"lodash";import{store as j}from"../../../index.js";import A from"../../../hooks/useSize.js";import{InitToolStyleConfig as x}from"../../../store/toolStyle/actionCreators.js";import{ImgUtils as z}from"@sensetime/annotation";import R from"../../../components/ImageError/index.js";import{i18n as g}from"@sensetime/lb-utils";var C=Object.defineProperty,L=Object.defineProperties,N=Object.getOwnPropertyDescriptors,u=Object.getOwnPropertySymbols,k=Object.prototype.hasOwnProperty,D=Object.prototype.propertyIsEnumerable,d=(t,e,o)=>e in t?C(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o,O=(t,e)=>{for(var o in e||(e={}))k.call(e,o)&&d(t,o,e[o]);if(u)for(var o of u(e))D.call(e,o)&&d(t,o,e[o]);return t},T=(t,e)=>L(t,N(e));const B=t=>{const[,e]=P(0),{imgAttribute:o,toolStyle:s,toolInstance:r,annotationEngine:n,loading:S,imgList:_,imgIndex:v}=t,c=f(null),y=f(null),l=A(c);a(()=>{j.dispatch(x())},[]),a(()=>{if(!!n)switch(g.language){case"cn":case"en":n.setLang(g.language);break}},[n]),a(()=>{r&&(r.singleOn("messageError",i=>{p.error(i)}),r.singleOn("messageInfo",i=>{p.info(i)}),r.singleOn("changeAnnotationShow",()=>{e(i=>i+1)}))},[r]),a(()=>{r&&r.setImgAttribute(o)},[o]),a(()=>{r&&r.setStyle(s),n&&n.setStyle(s)},[s]),a(()=>{(r==null?void 0:r.setSize)&&r.setSize(l),n&&n.setSize(l)},[l]);const I=()=>{const i=_[v];!i.url||z.load(i.url).then(E=>{n.setImgNode(E)})};return m.createElement("div",{ref:c,className:"annotationOperation"},m.createElement(b,{spinning:S,delay:500},m.createElement("div",{className:"canvas",ref:y,style:l,id:"toolContainer"})),(r==null?void 0:r.isImgError)===!0&&m.createElement(R,T(O({},l),{reloadImage:I,backgroundColor:"#e2e2e2",ignoreOffsetY:!0})))},U=t=>{const e=w.pickBy(t.annotation,(o,s)=>["imgList","imgIndex","stepList","step","toolInstance","annotationEngine","loading"].includes(s));return O({imgAttribute:t.imgAttribute,toolStyle:t.toolStyle},e)};var V=h(U)(B);export{V as default};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/views/MainView/annotationOperation/index.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Spin, message } from 'antd/es';\nimport { AppState } from 'src/store';\nimport { connect } from 'react-redux';\nimport { ImgAttributeState } from 'src/store/imgAttribute/types';\nimport _ from 'lodash';\nimport { store } from '@/index';\n\nimport useSize from '@/hooks/useSize';\nimport { IFileItem } from '@/types/data';\nimport { IStepInfo } from '@/types/step';\nimport { InitToolStyleConfig } from '@/store/toolStyle/actionCreators';\nimport { AnnotationEngine, ImgUtils } from '@sensetime/annotation';\nimport ImageError from '@/components/ImageError';\nimport { i18n } from '@sensetime/lb-utils';\n\ninterface IProps extends AppState {\n imgAttribute: ImgAttributeState;\n imgList: IFileItem[];\n exportData: any[];\n config: string;\n stepList: IStepInfo[];\n step: number;\n imgIndex: number;\n annotationEngine: AnnotationEngine;\n loading: boolean;\n}\n\nconst AnnotationOperation: React.FC<IProps> = (props: IProps) => {\n const [, forceRender] = useState<number>(0);\n\n const { imgAttribute, toolStyle, toolInstance, annotationEngine, loading, imgList, imgIndex } =\n props;\n const annotationRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n // const windowSize = useContext(viewportContext);\n // const canvasSize = getFormatSize(windowSize);\n const size = useSize(annotationRef);\n\n useEffect(() => {\n store.dispatch(InitToolStyleConfig());\n }, []);\n\n useEffect(() => {\n if (!annotationEngine) {\n return;\n }\n\n // 更改 toolInstance 内部国际化语言\n switch (i18n.language) {\n case 'cn':\n case 'en':\n annotationEngine.setLang(i18n.language);\n break;\n default: {\n //\n break;\n }\n }\n }, [annotationEngine]);\n\n useEffect(() => {\n if (toolInstance) {\n toolInstance.singleOn('messageError', (error: string) => {\n message.error(error);\n });\n\n toolInstance.singleOn('messageInfo', (info: string) => {\n message.info(info);\n });\n\n toolInstance.singleOn('changeAnnotationShow', () => {\n forceRender((s) => s + 1);\n });\n }\n }, [toolInstance]);\n\n useEffect(() => {\n if (toolInstance) {\n toolInstance.setImgAttribute(imgAttribute);\n }\n }, [imgAttribute]);\n\n /** 样式同步 */\n useEffect(() => {\n if (toolInstance) {\n toolInstance.setStyle(toolStyle);\n }\n if (annotationEngine) {\n annotationEngine.setStyle(toolStyle);\n }\n }, [toolStyle]);\n\n /** 窗口大小监听 */\n useEffect(() => {\n if (toolInstance?.setSize) {\n toolInstance.setSize(size);\n }\n\n if (annotationEngine) {\n annotationEngine.setSize(size);\n }\n }, [size]);\n\n /**\n * 重新加载图片,避免网络问题导致的图片无法加载\n * @returns\n */\n const reloadImg = () => {\n const imgInfo = imgList[imgIndex];\n if (!imgInfo.url) {\n return;\n }\n\n ImgUtils.load(imgInfo.url).then((imgNode) => {\n annotationEngine.setImgNode(imgNode as HTMLImageElement);\n });\n };\n\n return (\n <div ref={annotationRef} className='annotationOperation'>\n <Spin spinning={loading} delay={500}>\n <div className='canvas' ref={containerRef} style={size} id='toolContainer' />\n </Spin>\n {toolInstance?.isImgError === true && (\n <ImageError\n {...size}\n reloadImage={reloadImg}\n backgroundColor='#e2e2e2'\n ignoreOffsetY={true}\n />\n )}\n </div>\n );\n};\n\nconst mapStateToProps = (state: AppState) => {\n const annotationState = _.pickBy(state.annotation, (v, k) =>\n [\n 'imgList',\n 'imgIndex',\n 'stepList',\n 'step',\n 'toolInstance',\n 'annotationEngine',\n 'loading',\n ].includes(k),\n );\n return {\n imgAttribute: state.imgAttribute,\n toolStyle: state.toolStyle,\n ...annotationState,\n };\n};\n\nexport default connect(mapStateToProps)(AnnotationOperation);\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAM,sBAAwC,CAAC,UAAkB;AAC/D,QAAM,GAAG,eAAe,SAAiB;AAEzC,QAAM,CAAE,cAAc,WAAW,cAAc,kBAAkB,SAAS,SAAS,YACjF;AACF,QAAM,gBAAgB,OAAuB;AAC7C,QAAM,eAAe,OAAuB;AAG5C,QAAM,OAAO,QAAQ;AAErB,YAAU,MAAM;AACd,UAAM,SAAS;AAAA,KACd;AAEH,YAAU,MAAM;AACd,QAAI,CAAC,kBAAkB;AACrB;AAAA;AAIF,YAAQ,KAAK;AAAA,WACN;AAAA,WACA;AACH,yBAAiB,QAAQ,KAAK;AAC9B;AAGA;AAAA,KAGH,CAAC;AAEJ,YAAU,MAAM;AACd,QAAI,cAAc;AAChB,mBAAa,SAAS,gBAAgB,CAAC,UAAkB;AACvD,gBAAQ,MAAM;AAAA;AAGhB,mBAAa,SAAS,eAAe,CAAC,SAAiB;AACrD,gBAAQ,KAAK;AAAA;AAGf,mBAAa,SAAS,wBAAwB,MAAM;AAClD,oBAAY,CAAC,MAAM,IAAI;AAAA;AAAA;AAAA,KAG1B,CAAC;AAEJ,YAAU,MAAM;AACd,QAAI,cAAc;AAChB,mBAAa,gBAAgB;AAAA;AAAA,KAE9B,CAAC;AAGJ,YAAU,MAAM;AACd,QAAI,cAAc;AAChB,mBAAa,SAAS;AAAA;AAExB,QAAI,kBAAkB;AACpB,uBAAiB,SAAS;AAAA;AAAA,KAE3B,CAAC;AAGJ,YAAU,MAAM;AACd,QAAI,6CAAc,SAAS;AACzB,mBAAa,QAAQ;AAAA;AAGvB,QAAI,kBAAkB;AACpB,uBAAiB,QAAQ;AAAA;AAAA,KAE1B,CAAC;AAMJ,QAAM,YAAY,MAAM;AACtB,UAAM,UAAU,QAAQ;AACxB,QAAI,CAAC,QAAQ,KAAK;AAChB;AAAA;AAGF,aAAS,KAAK,QAAQ,KAAK,KAAK,CAAC,YAAY;AAC3C,uBAAiB,WAAW;AAAA;AAAA;AAIhC,6CACG,OAAD;AAAA,IAAK,KAAK;AAAA,IAAe,WAAU;AAAA,yCAChC,MAAD;AAAA,IAAM,UAAU;AAAA,IAAS,OAAO;AAAA,yCAC7B,OAAD;AAAA,IAAK,WAAU;AAAA,IAAS,KAAK;AAAA,IAAc,OAAO;AAAA,IAAM,IAAG;AAAA,OAE5D,8CAAc,gBAAe,4CAC3B,YAAD,iCACM,OADN;AAAA,IAEE,aAAa;AAAA,IACb,iBAAgB;AAAA,IAChB,eAAe;AAAA;AAAA;AAOzB,MAAM,kBAAkB,CAAC,UAAoB;AAC3C,QAAM,kBAAkB,EAAE,OAAO,MAAM,YAAY,CAAC,GAAG,MACrD;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAEb,SAAO;AAAA,IACL,cAAc,MAAM;AAAA,IACpB,WAAW,MAAM;AAAA,KACd;AAAA;AAIP,4BAAe,QAAQ,iBAAiB;;;;"}
@@ -0,0 +1 @@
1
+ import o from"react";import{ViewportProvider as c}from"../../components/customResizeHook/index.js";import u from"./toolHeader/index.js";import f from"./annotationOperation/index.js";import _ from"./sidebar/index.js";import y from"./toolFooter/index.js";import{prefix as v}from"../../constant/index.js";import{getNewNode as l}from"../../utils/index.js";import{Layout as n}from"antd/es";var E=Object.defineProperty,d=Object.getOwnPropertySymbols,x=Object.prototype.hasOwnProperty,N=Object.prototype.propertyIsEnumerable,s=(e,t,r)=>t in e?E(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,O=(e,t)=>{for(var r in t||(t={}))x.call(t,r)&&s(e,r,t[r]);if(d)for(var r of d(t))N.call(t,r)&&s(e,r,t[r]);return e};const{Sider:h,Content:j}=n,a=`${v}-layout`,w=e=>{var t,r,i,m;return o.createElement(c,null,o.createElement(n,{className:`${a} ${e.className}`,style:(t=e.style)==null?void 0:t.layout},o.createElement("header",{className:`${a}__header`,style:(r=e.style)==null?void 0:r.header},l(e.header,o.createElement(u,{headerName:e.headerName,goBack:e.goBack,exportData:e.exportData}))),o.createElement(n,null,o.createElement(j,{className:`${a}__content`},o.createElement(f,O({},e)),l(e.footer,o.createElement(y,{style:(i=e.style)==null?void 0:i.footer,mode:e.mode}))),o.createElement(h,{className:`${a}__side`,width:"auto",style:(m=e.style)==null?void 0:m.sider},l(e.sider,o.createElement(_,null))))))};export{w as default};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/views/MainView/index.tsx"],"sourcesContent":["import React from 'react';\nimport { AppProps } from '@/App';\nimport { ViewportProvider } from '@/components/customResizeHook';\nimport ToolHeader from './toolHeader';\nimport AnnotationOperation from './annotationOperation';\nimport Sidebar from './sidebar';\nimport ToolFooter from './toolFooter';\nimport { prefix } from '@/constant';\nimport { getNewNode } from '@/utils';\nimport { Layout } from 'antd/es';\n\nconst { Sider, Content } = Layout;\n\nconst layoutCls = `${prefix}-layout`;\nconst MainView: React.FC<AppProps> = (props) => {\n return (\n <ViewportProvider>\n <Layout className={`${layoutCls} ${props.className}`} style={props.style?.layout}>\n <header className={`${layoutCls}__header`} style={props.style?.header}>\n {getNewNode(\n props.header,\n <ToolHeader\n headerName={props.headerName}\n goBack={props.goBack}\n exportData={props.exportData}\n />,\n )}\n </header>\n <Layout>\n <Content className={`${layoutCls}__content`}>\n <AnnotationOperation {...props} />\n {getNewNode(props.footer, <ToolFooter style={props.style?.footer} mode={props.mode} />)}\n </Content>\n <Sider className={`${layoutCls}__side`} width='auto' style={props.style?.sider}>\n {getNewNode(props.sider, <Sidebar />)}\n </Sider>\n </Layout>\n </Layout>\n </ViewportProvider>\n );\n};\n\nexport default MainView;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,MAAM,CAAE,OAAO,WAAY;AAE3B,MAAM,YAAY,GAAG;MACf,WAA+B,CAAC,UAAU;AAdhD;AAeE,6CACG,kBAAD,0CACG,QAAD;AAAA,IAAQ,WAAW,GAAG,aAAa,MAAM;AAAA,IAAa,OAAO,YAAM,UAAN,mBAAa;AAAA,yCACvE,UAAD;AAAA,IAAQ,WAAW,GAAG;AAAA,IAAqB,OAAO,YAAM,UAAN,mBAAa;AAAA,KAC5D,WACC,MAAM,4CACL,YAAD;AAAA,IACE,YAAY,MAAM;AAAA,IAClB,QAAQ,MAAM;AAAA,IACd,YAAY,MAAM;AAAA,4CAIvB,QAAD,0CACG,SAAD;AAAA,IAAS,WAAW,GAAG;AAAA,yCACpB,qBAAD,mBAAyB,SACxB,WAAW,MAAM,4CAAS,YAAD;AAAA,IAAY,OAAO,YAAM,UAAN,mBAAa;AAAA,IAAQ,MAAM,MAAM;AAAA,4CAE/E,OAAD;AAAA,IAAO,WAAW,GAAG;AAAA,IAAmB,OAAM;AAAA,IAAO,OAAO,YAAM,UAAN,mBAAa;AAAA,KACtE,WAAW,MAAM,2CAAQ,SAAD;AAAA;;;;"}
@@ -0,0 +1 @@
1
+ import a,{useState as o,useEffect as u}from"react";import{message as m}from"antd/es";import c from"../TextAreaFormat/index.js";import{TextUtils as l}from"../../../../utils/TextUtils.js";import{connect as x}from"react-redux";const f=({toolInstance:e})=>{var i;const[,n]=o(0);if(u(()=>{e&&(e.singleOn("selectedChange",()=>{n(r=>r+1)}),e.singleOn("updateTextAttribute",()=>{n(r=>r+1)}),e.singleOn("messageError",r=>{m.error(r)}))},[e]),!e)return null;const{config:t}=e;return a.createElement("div",null,((i=e==null?void 0:e.config)==null?void 0:i.textConfigurable)&&e.selectedID&&a.createElement(c,{onChange:e.textChange,textValue:e.selectedText,checkString:l.checkString(t==null?void 0:t.textCheckType,t==null?void 0:t.customFormat),textCheckType:t.textCheckType}))};function s(e){return{toolInstance:e.annotation.toolInstance}}var d=x(s)(f);export{d as default};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/AnnotationText/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { message } from 'antd/es';\nimport TextAreaFormat from '@/views/MainView/sidebar/TextAreaFormat';\nimport { TextUtils } from '@/utils/TextUtils';\nimport { AppState } from '@/store';\nimport { GraphToolInstance } from '@/store/annotation/types';\nimport { connect } from 'react-redux';\n\ninterface IProps {\n toolInstance: GraphToolInstance;\n}\n\nconst AnnotationText: React.FC<IProps> = ({ toolInstance }) => {\n const [, forceRender] = useState<number>(0);\n useEffect(() => {\n if (toolInstance) {\n toolInstance.singleOn('selectedChange', () => {\n forceRender((s) => s + 1);\n });\n toolInstance.singleOn('updateTextAttribute', () => {\n // 文本属性的更新\n\n forceRender((s) => s + 1);\n });\n\n toolInstance.singleOn('messageError', (error: string) => {\n message.error(error);\n });\n }\n }, [toolInstance]);\n\n if (!toolInstance) {\n return null;\n }\n\n const { config } = toolInstance;\n\n return (\n <div>\n {toolInstance?.config?.textConfigurable && toolInstance.selectedID && (\n <TextAreaFormat\n onChange={toolInstance.textChange}\n textValue={toolInstance.selectedText}\n checkString={TextUtils.checkString(config?.textCheckType, config?.customFormat)}\n textCheckType={config.textCheckType}\n />\n )}\n </div>\n );\n};\n\nfunction mapStateToProps(state: AppState) {\n return { toolInstance: state.annotation.toolInstance };\n}\n\nexport default connect(mapStateToProps)(AnnotationText);\n"],"names":[],"mappings":";;;;;;AAYA,MAAM,iBAAmC,CAAC,CAAE,kBAAmB;AAZ/D;AAaE,QAAM,GAAG,eAAe,SAAiB;AACzC,YAAU,MAAM;AACd,QAAI,cAAc;AAChB,mBAAa,SAAS,kBAAkB,MAAM;AAC5C,oBAAY,CAAC,MAAM,IAAI;AAAA;AAEzB,mBAAa,SAAS,uBAAuB,MAAM;AAGjD,oBAAY,CAAC,MAAM,IAAI;AAAA;AAGzB,mBAAa,SAAS,gBAAgB,CAAC,UAAkB;AACvD,gBAAQ,MAAM;AAAA;AAAA;AAAA,KAGjB,CAAC;AAEJ,MAAI,CAAC,cAAc;AACjB,WAAO;AAAA;AAGT,QAAM,CAAE,UAAW;AAEnB,6CACG,OAAD,MACG,oDAAc,WAAd,mBAAsB,qBAAoB,aAAa,kDACrD,gBAAD;AAAA,IACE,UAAU,aAAa;AAAA,IACvB,WAAW,aAAa;AAAA,IACxB,aAAa,UAAU,YAAY,iCAAQ,eAAe,iCAAQ;AAAA,IAClE,eAAe,OAAO;AAAA;AAAA;AAOhC,yBAAyB,OAAiB;AACxC,SAAO,CAAE,cAAc,MAAM,WAAW;AAAA;AAG1C,uBAAe,QAAQ,iBAAiB;;;;"}
@@ -0,0 +1 @@
1
+ import{Tooltip as n}from"antd/es";import e,{useState as m}from"react";import i from"../../../../assets/annotation/common/icon_clearSmall.svg.js";import{InitImgAttribute as c}from"../../../../store/imgAttribute/actionCreators.js";import{store as l}from"../../../../index.js";import p from"../../../../assets/annotation/common/icon_clearSmall_a.svg.js";import{useTranslation as f}from"react-i18next";const u=()=>{const[o,t]=m(!1),r=()=>{l.dispatch(c())},{t:a}=f();return e.createElement(n,{placement:"bottom",title:a("RestoreImageAttributes")},e.createElement("img",{onMouseEnter:()=>t(!0),onMouseLeave:()=>t(!1),style:{marginLeft:6},src:o?p:i,onClick:s=>{s.stopPropagation(),r()}}))};export{u as default};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/ClearIcon/index.tsx"],"sourcesContent":["import { Tooltip } from 'antd/es';\nimport React, { useState } from 'react';\n\n// 图片调整的刷子\nimport clearSmall from '@/assets/annotation/common/icon_clearSmall.svg';\n// import clearSmallA from '@//assets/annotation/common/icon_clearSmall_a.svg';\nimport { InitImgAttribute } from '@/store/imgAttribute/actionCreators';\nimport { store } from '@/index';\nimport clearSmallA from '@//assets/annotation/common/icon_clearSmall_a.svg';\nimport { useTranslation } from 'react-i18next';\n\nconst clearIcon = () => {\n const [hoverDelete, setHoverDelete] = useState(false);\n\n const clearAttribute = () => {\n store.dispatch(InitImgAttribute());\n };\n const { t } = useTranslation();\n\n return (\n <Tooltip placement='bottom' title={t('RestoreImageAttributes')}>\n <img\n onMouseEnter={() => setHoverDelete(true)}\n onMouseLeave={() => setHoverDelete(false)}\n style={{ marginLeft: 6 }}\n src={hoverDelete ? clearSmallA : clearSmall}\n onClick={(e) => {\n e.stopPropagation();\n clearAttribute();\n }}\n />\n </Tooltip>\n );\n};\n\nexport default clearIcon;\n"],"names":["clearSmallA","clearSmall"],"mappings":";;;;;;;;MAWM,YAAY,MAAM;AACtB,QAAM,CAAC,aAAa,kBAAkB,SAAS;AAE/C,QAAM,iBAAiB,MAAM;AAC3B,UAAM,SAAS;AAAA;AAEjB,QAAM,CAAE,KAAM;AAEd,6CACG,SAAD;AAAA,IAAS,WAAU;AAAA,IAAS,OAAO,EAAE;AAAA,yCAClC,OAAD;AAAA,IACE,cAAc,MAAM,eAAe;AAAA,IACnC,cAAc,MAAM,eAAe;AAAA,IACnC,OAAO,CAAE,YAAY;AAAA,IACrB,KAAK,cAAcA,MAAcC;AAAA,IACjC,SAAS,CAAC,MAAM;AACd,QAAE;AACF;AAAA;AAAA;AAAA;;;;"}
@@ -0,0 +1 @@
1
+ import n,{useState as f}from"react";import{Col as y,Popconfirm as h}from"antd/es";import S from"../../../../assets/annotation/common/icon_clear.svg.js";import _ from"../../../../assets/annotation/common/icon_clear_a.svg.js";import k from"../../../../assets/annotation/common/icon_invalid.svg.js";import C from"../../../../assets/annotation/common/icon_invalid_a.svg.js";import{StopOutlined as p}from"@ant-design/icons";import{store as x}from"../../../../index.js";import{connect as E}from"react-redux";import O from"../../../../utils/StepUtils.js";import{jsonParser as j}from"../../../../utils/index.js";import{CopyBackWordResult as P}from"../../../../store/annotation/actionCreators.js";import{useTranslation as w}from"react-i18next";var L=Object.defineProperty,u=Object.getOwnPropertySymbols,N=Object.prototype.hasOwnProperty,T=Object.prototype.propertyIsEnumerable,v=(e,t,r)=>t in e?L(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,b=(e,t)=>{for(var r in t||(t={}))N.call(t,r)&&v(e,r,t[r]);if(u)for(var r of u(t))T.call(t,r)&&v(e,r,t[r]);return e};const I=(e,t,r)=>n.createElement("div",{key:t},`${r("ConfirmTo")}${e.slice(0)}\uFF1F`),R=e=>typeof e=="string"?n.createElement("img",{width:23,height:25,src:e}):e,$=({toolInstance:e,stepInfo:t,imgList:r,imgIndex:s})=>{const[l,m]=f(null),{t:a}=w(),i=[{name:a("ClearLabel"),key:"sureClear",imgSvg:S,hoverSvg:_,onClick:()=>{e==null||e.clearResult()}}],c=j(t==null?void 0:t.config);if((t==null?void 0:t.dataSourceStep)===0){const o={height:"25px",lineHeight:"25px",display:"flex",justifyContent:"center",alignItems:"center"};i.push({name:a(e.valid===!0?"SetAsInvalid":"SetAsValid"),key:"sureQuestion",imgSvg:n.createElement(p,{style:o}),hoverSvg:n.createElement(p,{style:b({color:"#666fff"},o)}),onClick:()=>{e.setValid(!e.valid)}})}(c==null?void 0:c.copyBackwardResult)&&i.unshift({name:a("CopyThePrevious"),key:"sureCopy",imgSvg:k,hoverSvg:C,onClick:()=>{x.dispatch(P())}});const g=Math.floor(24/i.length);return n.createElement("div",{className:"generalOperation"},i.map((o,d)=>n.createElement(y,{span:g,key:d},n.createElement("div",{key:o.key,className:"item",onMouseEnter:()=>{m(o.key)},onMouseLeave:()=>{m(null)}},n.createElement(h,{title:o.key.startsWith("sure")?I(o.name,o.key,a):o.name,disabled:!o.key.startsWith("sure"),placement:"topRight",okText:a("Confirm"),cancelText:a("Cancel"),onConfirm:o.onClick},n.createElement("div",{className:"icon"},R(o.key===l?o.hoverSvg:o.imgSvg)),n.createElement("div",{className:"toolName",style:{color:o.key===l?"#666fff":""}},o.name))))))},F=e=>{var t,r;const s=O.getCurrentStepInfo((t=e.annotation)==null?void 0:t.step,(r=e.annotation)==null?void 0:r.stepList);return{toolInstance:e.annotation.toolInstance,stepInfo:s,imgList:e.annotation.imgList,imgIndex:e.annotation.imgIndex}};var H=E(F)($);export{H as default};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/GeneralOperation/index.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Col, Popconfirm } from 'antd/es';\nimport clearResultSvg from '@/assets/annotation/common/icon_clear.svg';\nimport clearResultASvg from '@/assets/annotation/common/icon_clear_a.svg';\nimport copyBackStepSvg from '@/assets/annotation/common/icon_invalid.svg';\nimport copyBackStepASvg from '@/assets/annotation/common/icon_invalid_a.svg';\nimport { StopOutlined } from '@ant-design/icons';\nimport { store } from '@/index';\n\nimport { AppState } from '@/store';\nimport { connect } from 'react-redux';\nimport { ToolInstance } from '@/store/annotation/types';\nimport StepUtils from '@/utils/StepUtils';\nimport { IStepInfo } from '@/types/step';\nimport { jsonParser } from '@/utils';\nimport { AnnotationFileList } from '@/types/data';\nimport { CopyBackWordResult } from '@/store/annotation/actionCreators';\nimport { useTranslation } from 'react-i18next';\n\nconst makeSure = (info: string, key: string, t: any) => {\n return <div key={key}>{`${t('ConfirmTo')}${info.slice(0)}?`}</div>;\n};\n\nconst renderImg = (info: Element | string) => {\n if (typeof info === 'string') {\n return <img width={23} height={25} src={info} />;\n }\n return info;\n};\n\ninterface IProps {\n toolInstance: ToolInstance;\n stepInfo: IStepInfo;\n imgList: AnnotationFileList;\n imgIndex: number;\n}\n\nconst GenerationOperation: React.FC<IProps> = ({ toolInstance, stepInfo, imgList, imgIndex }) => {\n const [isHover, setHover] = useState<string | null>(null);\n const { t } = useTranslation();\n const allOperation = [\n {\n name: t('ClearLabel'),\n key: 'sureClear',\n imgSvg: clearResultSvg,\n hoverSvg: clearResultASvg,\n onClick: () => {\n toolInstance?.clearResult();\n },\n },\n ];\n\n const config = jsonParser(stepInfo?.config);\n if (stepInfo?.dataSourceStep === 0) {\n const iconStyle = {\n height: '25px',\n lineHeight: '25px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n };\n allOperation.push({\n name: t(toolInstance.valid === true ? 'SetAsInvalid' : 'SetAsValid'),\n key: 'sureQuestion',\n imgSvg: <StopOutlined style={iconStyle} />,\n hoverSvg: <StopOutlined style={{ color: '#666fff', ...iconStyle }} />,\n onClick: () => {\n toolInstance.setValid(!toolInstance.valid);\n },\n });\n }\n\n if (config?.copyBackwardResult) {\n allOperation.unshift({\n name: t('CopyThePrevious'),\n key: 'sureCopy',\n imgSvg: copyBackStepSvg,\n hoverSvg: copyBackStepASvg,\n onClick: () => {\n store.dispatch(CopyBackWordResult());\n },\n });\n }\n\n const annotationLength = Math.floor(24 / allOperation.length);\n\n return (\n <div className='generalOperation'>\n {allOperation.map((info, index) => (\n <Col span={annotationLength} key={index}>\n <div\n key={info.key}\n className='item'\n onMouseEnter={() => {\n setHover(info.key);\n }}\n onMouseLeave={() => {\n setHover(null);\n }}\n >\n <Popconfirm\n title={info.key.startsWith('sure') ? makeSure(info.name, info.key, t) : info.name}\n disabled={!info.key.startsWith('sure')}\n placement='topRight'\n okText={t('Confirm')}\n cancelText={t('Cancel')}\n onConfirm={info.onClick}\n >\n <div className='icon'>\n {renderImg(info.key === isHover ? info.hoverSvg : info.imgSvg)}\n </div>\n <div className='toolName' style={{ color: info.key === isHover ? '#666fff' : '' }}>\n {info.name}\n </div>\n </Popconfirm>\n </div>\n </Col>\n ))}\n </div>\n );\n};\n\nconst mapStateToProps = (state: AppState) => {\n const stepInfo = StepUtils.getCurrentStepInfo(state.annotation?.step, state.annotation?.stepList);\n\n return {\n toolInstance: state.annotation.toolInstance,\n stepInfo,\n imgList: state.annotation.imgList,\n imgIndex: state.annotation.imgIndex,\n };\n};\n\nexport default connect(mapStateToProps)(GenerationOperation);\n"],"names":["clearResultSvg","clearResultASvg","copyBackStepSvg","copyBackStepASvg"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,MAAM,WAAW,CAAC,MAAc,KAAa,MAAW;AACtD,6CAAQ,OAAD;AAAA,IAAK;AAAA,KAAW,GAAG,EAAE,eAAe,KAAK,MAAM;AAAA;AAGxD,MAAM,YAAY,CAAC,SAA2B;AAC5C,MAAI,OAAO,SAAS,UAAU;AAC5B,+CAAQ,OAAD;AAAA,MAAK,OAAO;AAAA,MAAI,QAAQ;AAAA,MAAI,KAAK;AAAA;AAAA;AAE1C,SAAO;AAAA;AAUT,MAAM,sBAAwC,CAAC,CAAE,cAAc,UAAU,SAAS,cAAe;AAC/F,QAAM,CAAC,SAAS,YAAY,SAAwB;AACpD,QAAM,CAAE,KAAM;AACd,QAAM,eAAe;AAAA,IACnB;AAAA,MACE,MAAM,EAAE;AAAA,MACR,KAAK;AAAA,MACL,QAAQA;AAAA,MACR,UAAUC;AAAA,MACV,SAAS,MAAM;AACb,qDAAc;AAAA;AAAA;AAAA;AAKpB,QAAM,SAAS,WAAW,qCAAU;AACpC,MAAI,sCAAU,oBAAmB,GAAG;AAClC,UAAM,YAAY;AAAA,MAChB,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,gBAAgB;AAAA,MAChB,YAAY;AAAA;AAEd,iBAAa,KAAK;AAAA,MAChB,MAAM,EAAE,aAAa,UAAU,OAAO,iBAAiB;AAAA,MACvD,KAAK;AAAA,MACL,4CAAS,cAAD;AAAA,QAAc,OAAO;AAAA;AAAA,MAC7B,8CAAW,cAAD;AAAA,QAAc,OAAO,gBAAE,OAAO,YAAc;AAAA;AAAA,MACtD,SAAS,MAAM;AACb,qBAAa,SAAS,CAAC,aAAa;AAAA;AAAA;AAAA;AAK1C,MAAI,iCAAQ,oBAAoB;AAC9B,iBAAa,QAAQ;AAAA,MACnB,MAAM,EAAE;AAAA,MACR,KAAK;AAAA,MACL,QAAQC;AAAA,MACR,UAAUC;AAAA,MACV,SAAS,MAAM;AACb,cAAM,SAAS;AAAA;AAAA;AAAA;AAKrB,QAAM,mBAAmB,KAAK,MAAM,KAAK,aAAa;AAEtD,6CACG,OAAD;AAAA,IAAK,WAAU;AAAA,KACZ,aAAa,IAAI,CAAC,MAAM,8CACtB,KAAD;AAAA,IAAK,MAAM;AAAA,IAAkB,KAAK;AAAA,yCAC/B,OAAD;AAAA,IACE,KAAK,KAAK;AAAA,IACV,WAAU;AAAA,IACV,cAAc,MAAM;AAClB,eAAS,KAAK;AAAA;AAAA,IAEhB,cAAc,MAAM;AAClB,eAAS;AAAA;AAAA,yCAGV,YAAD;AAAA,IACE,OAAO,KAAK,IAAI,WAAW,UAAU,SAAS,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK;AAAA,IAC7E,UAAU,CAAC,KAAK,IAAI,WAAW;AAAA,IAC/B,WAAU;AAAA,IACV,QAAQ,EAAE;AAAA,IACV,YAAY,EAAE;AAAA,IACd,WAAW,KAAK;AAAA,yCAEf,OAAD;AAAA,IAAK,WAAU;AAAA,KACZ,UAAU,KAAK,QAAQ,UAAU,KAAK,WAAW,KAAK,8CAExD,OAAD;AAAA,IAAK,WAAU;AAAA,IAAW,OAAO,CAAE,OAAO,KAAK,QAAQ,UAAU,YAAY;AAAA,KAC1E,KAAK;AAAA;AAUtB,MAAM,kBAAkB,CAAC,UAAoB;AA1H7C;AA2HE,QAAM,WAAW,UAAU,mBAAmB,YAAM,eAAN,mBAAkB,MAAM,YAAM,eAAN,mBAAkB;AAExF,SAAO;AAAA,IACL,cAAc,MAAM,WAAW;AAAA,IAC/B;AAAA,IACA,SAAS,MAAM,WAAW;AAAA,IAC1B,UAAU,MAAM,WAAW;AAAA;AAAA;AAI/B,uBAAe,QAAQ,iBAAiB;;;;"}
@@ -0,0 +1 @@
1
+ import{Row as s,Col as n,Slider as E,Input as h,Switch as b}from"antd/es";import{connect as x}from"react-redux";import{throttle as f}from"lodash";import t,{useEffect as C}from"react";import o from"../../../../store/imgAttribute/actionCreators.js";import{store as i}from"../../../../index.js";import A from"../../../../assets/annotation/image/saturation.svg.js";import I from"../../../../assets/annotation/image/contrast.svg.js";import N from"../../../../assets/annotation/image/brightness.svg.js";import S from"../../../../assets/attributeIcon/zoomUp.svg.js";import j from"../../../../assets/annotation/image/icon_yuantu.svg.js";import{useTranslation as y}from"react-i18next";const z=r=>{const{imgAttribute:{contrast:l,saturation:c,brightness:g,zoomRatio:p,isOriginalSize:u}}=r,{t:m}=y(),a=f(e=>{i.dispatch(o.UpdateImgAttribute(e))},60,{trailing:!0}),d=[{name:"Saturation",min:-100,max:500,step:2,onChange:e=>a({saturation:e}),value:c,svg:A},{name:"Contrast",min:-100,max:300,step:2,onChange:e=>a({contrast:e}),value:l,svg:I},{name:"Exposure",min:-100,max:400,step:2,onChange:e=>a({brightness:e}),value:g,svg:N},{name:"ScreenRatio",min:.1,max:10,step:.1,onChange:e=>a({zoomRatio:e}),value:p,svg:S}];return C(()=>()=>{i.dispatch(o.InitImgAttribute())},[]),t.createElement("div",null,d.map((e,v)=>t.createElement("div",{className:"imgAttributeController",key:`option_${v}`},t.createElement(s,{className:"tools",style:{padding:"0px 0"}},t.createElement(n,{span:24},t.createElement("span",{className:"singleTool"},t.createElement("img",{width:12,height:12,src:e.svg}),t.createElement("span",{className:"toolName"},m(e.name))))),t.createElement(s,null,t.createElement(n,{span:20},t.createElement(E,{min:e.min,max:e.max,step:e.step,value:e.value,onChange:e.onChange,trackStyle:{background:"#666fff"}})),t.createElement(n,{span:4},t.createElement(h,{value:e.value,disabled:!0,style:{fontSize:12,marginBottom:23,padding:"0px 2px",textAlign:"center"}}))))),t.createElement("div",{className:"imgAttributeController"},t.createElement(s,{className:"tools",style:{padding:"10px 0"}},t.createElement(n,{span:18},t.createElement("span",{className:"singleTool"},t.createElement("img",{src:j,width:16,style:{marginTop:"-2px"}}),t.createElement("span",{className:"toolName"},m("OriginalScale")))),t.createElement(n,null,t.createElement(b,{checked:u,onChange:e=>a({isOriginalSize:e})})))))};function $({imgAttribute:r}){return{imgAttribute:r}}var R=x($)(z);export{R as default};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/ImgAttributeInfo/index.tsx"],"sourcesContent":["import { Col, Row, Slider, Switch, Input } from 'antd/es';\nimport { connect } from 'react-redux';\nimport { throttle } from 'lodash';\nimport React, { useEffect } from 'react';\nimport { ImgAttributeState } from '@/store/imgAttribute/types';\nimport ImgAttribute from '@/store/imgAttribute/actionCreators';\nimport { store } from '@/index';\n\nimport saturationSvg from '@/assets/annotation/image/saturation.svg';\nimport contrastSvg from '@/assets/annotation/image/contrast.svg';\nimport brightnessSvg from '@/assets/annotation/image/brightness.svg';\nimport ZoomUpSvg from '@/assets/attributeIcon/zoomUp.svg';\nimport originalPic from '@/assets/annotation/image/icon_yuantu.svg';\nimport { useTranslation } from 'react-i18next';\n\ninterface IProps {\n imgAttribute: ImgAttributeState;\n}\n\nconst ImgAttributeInfo = (props: IProps) => {\n const {\n imgAttribute: { contrast, saturation, brightness, zoomRatio, isOriginalSize },\n } = props;\n\n const { t } = useTranslation();\n\n const imgAttributeChange = throttle(\n (payload: Partial<ImgAttributeState>) => {\n store.dispatch(ImgAttribute.UpdateImgAttribute(payload as ImgAttributeState));\n },\n 60,\n { trailing: true },\n );\n\n const imgAttributeInfo = [\n {\n name: 'Saturation',\n min: -100,\n max: 500,\n step: 2,\n onChange: (v: number) => imgAttributeChange({ saturation: v }),\n value: saturation,\n svg: saturationSvg,\n },\n {\n name: 'Contrast',\n min: -100,\n max: 300,\n step: 2,\n onChange: (v: number) => imgAttributeChange({ contrast: v }),\n value: contrast,\n svg: contrastSvg,\n },\n {\n name: 'Exposure',\n min: -100,\n max: 400,\n step: 2,\n onChange: (v: number) => imgAttributeChange({ brightness: v }),\n value: brightness,\n svg: brightnessSvg,\n },\n {\n name: 'ScreenRatio',\n min: 0.1,\n max: 10,\n step: 0.1,\n onChange: (v: number) => imgAttributeChange({ zoomRatio: v }),\n value: zoomRatio,\n svg: ZoomUpSvg,\n },\n ];\n\n useEffect(() => {\n return () => {\n store.dispatch(ImgAttribute.InitImgAttribute());\n };\n }, []);\n\n return (\n <div>\n {imgAttributeInfo.map((info: any, index: number) => (\n <div className='imgAttributeController' key={`option_${index}`}>\n <Row className='tools' style={{ padding: '0px 0' }}>\n <Col span={24}>\n <span className='singleTool'>\n <img width={12} height={12} src={info.svg} />\n <span className='toolName'>{t(info.name)}</span>\n </span>\n </Col>\n </Row>\n <Row>\n <Col span={20}>\n <Slider\n min={info.min}\n max={info.max}\n step={info.step}\n value={info.value}\n onChange={info.onChange}\n trackStyle={{ background: '#666fff' }}\n />\n </Col>\n <Col span={4}>\n <Input\n value={info.value}\n disabled\n style={{\n fontSize: 12,\n marginBottom: 23,\n padding: '0px 2px',\n textAlign: 'center',\n }}\n />\n </Col>\n </Row>\n </div>\n ))}\n <div className='imgAttributeController'>\n <Row className='tools' style={{ padding: '10px 0' }}>\n <Col span={18}>\n <span className='singleTool'>\n <img src={originalPic} width={16} style={{ marginTop: '-2px' }} />\n <span className='toolName'>{t('OriginalScale')}</span>\n </span>\n </Col>\n <Col>\n <Switch\n checked={isOriginalSize}\n onChange={(v: boolean) => imgAttributeChange({ isOriginalSize: v })}\n />\n </Col>\n </Row>\n </div>\n </div>\n );\n};\n\nfunction mapStateToProps({ imgAttribute }: any) {\n return { imgAttribute };\n}\n\nexport default connect(mapStateToProps)(ImgAttributeInfo);\n"],"names":["saturationSvg","contrastSvg","brightnessSvg","ZoomUpSvg","originalPic"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import c,{useState as d,useRef as m,useEffect as p}from"react";import{connect as v}from"react-redux";import g from"../../../../components/attributeList/index.js";import A from"../../../../utils/StepUtils.js";import{jsonParser as S}from"../../../../utils/index.js";import{useTranslation as I}from"react-i18next";const h=e=>{var r,i;const[a,s]=d(0),o=m(null),{toolInstance:t}=e,{t:f}=I();if(p(()=>(t&&t.singleOn("changeAttributeSidebar",l=>{var u;s(n=>n+1),!!o.current&&((u=o.current.children[l])==null||u.scrollIntoView({block:"center"}))}),()=>{t.unbindAll("changeAttributeSidebar")}),[t,o]),!e.stepInfo||S(e.stepInfo.config).attributeConfigurable!==!0)return null;if((t==null?void 0:t.config.attributeConfigurable)===!0&&((r=t==null?void 0:t.config)==null?void 0:r.attributeList)){const l=t.config.attributeList.map(n=>({label:n.key,value:n.value}));l.unshift({label:f("NoAttribute"),value:""});const u=n=>{t.setDefaultAttribute(n),s(b=>b+1)};return c.createElement("div",null,c.createElement(g,{list:l,attributeChanged:u,selectedAttribute:(i=t==null?void 0:t.defaultAttribute)!=null?i:"",ref:o}))}return null},L=e=>{var r,i;const a=A.getCurrentStepInfo((r=e.annotation)==null?void 0:r.step,(i=e.annotation)==null?void 0:i.stepList);return{toolInstance:e.annotation.toolInstance,stepInfo:a}};var _=v(L)(h);export{_ as default};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/SwitchAttributeList/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport { connect } from 'react-redux';\nimport { AppState } from 'src/store';\nimport { GraphToolInstance } from 'src/store/annotation/types';\nimport AttributeList from '@/components/attributeList';\nimport StepUtils from '@/utils/StepUtils';\nimport { IStepInfo } from '@/types/step';\nimport { jsonParser } from '@/utils';\nimport { useTranslation } from 'react-i18next';\n\ninterface IProps {\n toolInstance: GraphToolInstance;\n stepInfo: IStepInfo;\n}\n\nconst SwitchAttributeList: React.FC<IProps> = (props) => {\n const [_, forceRender] = useState(0);\n const listRef = useRef<HTMLElement>(null);\n const { toolInstance } = props;\n const { t } = useTranslation();\n\n useEffect(() => {\n if (toolInstance) {\n toolInstance.singleOn('changeAttributeSidebar', (index: number) => {\n forceRender((s) => s + 1);\n\n if (!listRef.current) {\n return;\n }\n\n listRef.current.children[index]?.scrollIntoView({ block: 'center' });\n });\n }\n return () => {\n toolInstance.unbindAll('changeAttributeSidebar');\n };\n }, [toolInstance, listRef]);\n\n if (!props.stepInfo) {\n return null;\n }\n\n const config = jsonParser(props.stepInfo.config);\n if (config.attributeConfigurable !== true) {\n return null;\n }\n\n if (toolInstance?.config.attributeConfigurable === true && toolInstance?.config?.attributeList) {\n const list = toolInstance.config.attributeList.map((i: any) => ({\n label: i.key,\n value: i.value,\n }));\n list.unshift({ label: t('NoAttribute'), value: '' });\n const attributeChanged = (v: string) => {\n toolInstance.setDefaultAttribute(v);\n forceRender((s) => s + 1);\n };\n\n return (\n <div>\n <AttributeList\n list={list}\n attributeChanged={attributeChanged}\n selectedAttribute={toolInstance?.defaultAttribute ?? ''}\n ref={listRef}\n />\n </div>\n );\n }\n\n return null;\n};\n\nconst mapStateToProps = (state: AppState) => {\n const stepInfo = StepUtils.getCurrentStepInfo(state.annotation?.step, state.annotation?.stepList);\n\n return {\n toolInstance: state.annotation.toolInstance,\n stepInfo,\n };\n};\n\nexport default connect(mapStateToProps)(SwitchAttributeList);\n"],"names":[],"mappings":";;;;;;;AAeA,MAAM,sBAAwC,CAAC,UAAU;AAfzD;AAgBE,QAAM,CAAC,GAAG,eAAe,SAAS;AAClC,QAAM,UAAU,OAAoB;AACpC,QAAM,CAAE,gBAAiB;AACzB,QAAM,CAAE,KAAM;AAEd,YAAU,MAAM;AACd,QAAI,cAAc;AAChB,mBAAa,SAAS,0BAA0B,CAAC,UAAkB;AAvBzE;AAwBQ,oBAAY,CAAC,MAAM,IAAI;AAEvB,YAAI,CAAC,QAAQ,SAAS;AACpB;AAAA;AAGF,uBAAQ,QAAQ,SAAS,WAAzB,oBAAiC,eAAe,CAAE,OAAO;AAAA;AAAA;AAG7D,WAAO,MAAM;AACX,mBAAa,UAAU;AAAA;AAAA,KAExB,CAAC,cAAc;AAElB,MAAI,CAAC,MAAM,UAAU;AACnB,WAAO;AAAA;AAGT,QAAM,SAAS,WAAW,MAAM,SAAS;AACzC,MAAI,OAAO,0BAA0B,MAAM;AACzC,WAAO;AAAA;AAGT,MAAI,8CAAc,OAAO,2BAA0B,4DAAsB,WAAd,mBAAsB,gBAAe;AAC9F,UAAM,OAAO,aAAa,OAAO,cAAc,IAAI,CAAC;AAAY,MAC9D,OAAO,EAAE;AAAA,MACT,OAAO,EAAE;AAAA;AAEX,SAAK,QAAQ,CAAE,OAAO,EAAE,gBAAgB,OAAO;AAC/C,UAAM,mBAAmB,CAAC,MAAc;AACtC,mBAAa,oBAAoB;AACjC,kBAAY,CAAC,MAAM,IAAI;AAAA;AAGzB,+CACG,OAAD,0CACG,eAAD;AAAA,MACE;AAAA,MACA;AAAA,MACA,mBAAmB,mDAAc,qBAAd,YAAkC;AAAA,MACrD,KAAK;AAAA;AAAA;AAMb,SAAO;AAAA;AAGT,MAAM,kBAAkB,CAAC,UAAoB;AAzE7C;AA0EE,QAAM,WAAW,UAAU,mBAAmB,YAAM,eAAN,mBAAkB,MAAM,YAAM,eAAN,mBAAkB;AAExF,SAAO;AAAA,IACL,cAAc,MAAM,WAAW;AAAA,IAC/B;AAAA;AAAA;AAIJ,4BAAe,QAAQ,iBAAiB;;;;"}
@@ -0,0 +1 @@
1
+ import B from"../../../../components/attributeList/index.js";import M from"../../../../components/checkboxList/index.js";import{CaretRightOutlined as P}from"@ant-design/icons";import{Collapse as T,Tooltip as H,Badge as F}from"antd/es";import{cloneDeep as U}from"lodash";import n,{useState as p,useRef as q,useEffect as v,useCallback as z}from"react";import G from"../../../../assets/annotation/common/icon_clearSmall.svg.js";import J from"../../../../assets/annotation/common/icon_clearSmall_a.svg.js";import{TagUtils as Q}from"@sensetime/annotation";import{connect as V}from"react-redux";import{useTranslation as W}from"react-i18next";const{Panel:X}=T,$=({isActive:a})=>n.createElement(P,{rotate:a?90:0}),Y=({toolInstance:a,imgIndex:N})=>{const[o,g]=p([]),i=q(null),[,j]=p(0),[w,f]=p(-1),{t:h}=W();v(()=>{a&&(g(a.config.inputList.map(e=>e.value)),a.singleOn("render",()=>{j(e=>e+1)}))},[a]),v(()=>{if(a&&(a.singleOn("expend",O),a.labelSelectedList.length===1)){let e=0;for(let l=0;l<a.labelSelectedList[0];l++)e+=46,s[l]&&o[l]!==""&&s[l].subSelected.forEach(r=>{e+=40});i.current&&(i.current.children[0].scrollTop=e)}}),v(()=>{i.current&&(i.current.children[0].scrollTop=0)},[N]);const O=()=>{var e;const l=a.labelSelectedList[0],r=(e=s.filter((t,m)=>m===l)[0])==null?void 0:e.value;E(l,r,!0)},E=z((e,l,r)=>{const t=U(o);t[e]===""||r===!0?t[e]=l:t[e]="",g(t)},[o]);if(!a)return null;const{labelSelectedList:c,config:{inputList:s},currentTagResult:u,setLabel:b}=a,A=e=>c.length>0&&c[0]===e?n.createElement("span",{className:"keyDownIconActive"},e+1):n.createElement("span",{className:"keyDownIcon"},e+1),y=(e,l=-1)=>e?e.map((r,t)=>{var m,L,k,_,C;if(r.subSelected){const R=Q.judgeResultIsInInputList(r.value,(m=u==null?void 0:u.result)==null?void 0:m[r.value],s);return n.createElement(T,{bordered:!1,expandIcon:$,key:`collapse_${t}_${l+1}`,onChange:()=>E(t,r.value),activeKey:[o[t]]},n.createElement(X,{header:n.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"}},n.createElement("span",null,r.key,n.createElement(H,{placement:"bottom",title:h("ClearThisOption")},n.createElement("img",{style:{marginLeft:5,cursor:"pointer"},onClick:K=>{K.stopPropagation(),a.clearResult(!0,r.value)},src:w===t||R?J:G,onMouseEnter:()=>{f(t)},onMouseLeave:()=>{f(-1)}})),R&&o[t]===""&&n.createElement(F,{color:"#87d068"})),(s==null?void 0:s.length)>1&&A(t)),key:r.value},n.createElement("div",{className:"level",style:{backgroundColor:c.length>0&&c[0]===t?"rgba(158, 158, 158, 0.18)":""}},y(r.subSelected,t))))}const d=(s==null?void 0:s[l])?s==null?void 0:s[l].value:0,S=((_=(k=(L=u==null?void 0:u.result)==null?void 0:L[d])==null?void 0:k.split(";"))==null?void 0:_.indexOf(r.value))>-1?r.value:"";return((C=s==null?void 0:s[l])==null?void 0:C.isMulti)===!0?n.createElement("div",{className:"singleBar",key:`${d}_${l}_${t}`},n.createElement(M,{attributeChanged:()=>b(l,t),selectedAttribute:[S],list:[{value:r.value,label:r.key}],num:t+1})):n.createElement("div",{className:"singleBar",key:`${d}_${l}_${t}`},n.createElement(B,{forbidColor:!0,attributeChanged:()=>b(l,t),selectedAttribute:S,list:[{value:r.value,label:r.key}],num:t+1}))}):null,D=window.innerHeight-61-80;return n.createElement("div",{className:"tagOperationMenu",ref:i},(s==null?void 0:s.length)===0?n.createElement("div",{style:{padding:20,textAlign:"center"}},h("NoConfiguration")):n.createElement("div",{className:"main",style:{height:D}},y(s)))};function Z(a){return{toolInstance:a.annotation.toolInstance,imgIndex:a.annotation.imgIndex}}var x=V(Z)(Y);export{x as default,$ as expandIconFuc};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/TagSidebar/index.tsx"],"sourcesContent":["import RadioList from '@/components/attributeList';\nimport CheckBoxList from '@/components/checkboxList';\nimport { CaretRightOutlined } from '@ant-design/icons';\nimport { Badge, Collapse, Tooltip } from 'antd/es';\nimport { cloneDeep } from 'lodash';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport clearSmall from '@/assets/annotation/common/icon_clearSmall.svg';\nimport clearSmallA from '@/assets/annotation/common/icon_clearSmall_a.svg';\nimport { TagOperation, TagUtils } from '@sensetime/annotation';\nimport { connect } from 'react-redux';\nimport { AppState } from '@/store';\nimport { IInputList } from '@/types/main';\nimport { useTranslation } from 'react-i18next';\n\ninterface IProps {\n imgIndex: number;\n toolInstance: TagOperation;\n}\n\nconst { Panel } = Collapse;\n\nexport const expandIconFuc = ({ isActive }: any) => (\n <CaretRightOutlined rotate={isActive ? 90 : 0} />\n);\n\nconst TagSidebar: React.FC<IProps> = ({ toolInstance, imgIndex }) => {\n const [expandKeyList, setExpandKeyList] = useState<string[]>([]);\n\n const sidebarRef = useRef<HTMLDivElement>(null);\n const [, forceRender] = useState<number>(0);\n const [hoverDeleteIndex, setHoverDeleteIndex] = useState(-1);\n const { t } = useTranslation();\n\n useEffect(() => {\n if (toolInstance) {\n // 用于配置的初始化\n setExpandKeyList(toolInstance.config.inputList.map((v: IInputList) => v.value));\n\n // 进行实时渲染\n toolInstance.singleOn('render', () => {\n forceRender((s) => s + 1);\n });\n }\n }, [toolInstance]);\n\n useEffect(() => {\n if (toolInstance) {\n // 该写法会不断的重复绑定,后续写法上可以更改(如果将 singleOn 改为 on 会有很大问题)\n toolInstance.singleOn('expend', expendRender);\n\n if (toolInstance.labelSelectedList.length === 1) {\n let height = 0;\n for (let i = 0; i < toolInstance.labelSelectedList[0]; i++) {\n height += 46;\n inputList[i] &&\n expandKeyList[i] !== '' &&\n inputList[i].subSelected.forEach((i: any) => {\n height += 40;\n });\n }\n if (sidebarRef.current) {\n sidebarRef.current.children[0].scrollTop = height;\n }\n }\n }\n });\n\n useEffect(() => {\n // 翻页侧边栏跳到最上\n if (sidebarRef.current) {\n sidebarRef.current.children[0].scrollTop = 0;\n }\n }, [imgIndex]);\n\n const expendRender = () => {\n const index = toolInstance.labelSelectedList[0];\n const value = inputList.filter((v: IInputList, i: number) => i === index)[0]?.value;\n setExpendKeyList(index, value, true);\n };\n\n const setExpendKeyList = useCallback(\n (index: number, value: string, expend?: boolean) => {\n const newKeyList = cloneDeep(expandKeyList);\n if (newKeyList[index] === '' || expend === true) {\n newKeyList[index] = value;\n } else {\n newKeyList[index] = '';\n }\n setExpandKeyList(newKeyList);\n },\n [expandKeyList],\n );\n\n if (!toolInstance) return null;\n\n const {\n labelSelectedList,\n config: { inputList },\n currentTagResult,\n setLabel,\n } = toolInstance;\n\n const selectedButton = (index: number) => {\n if (labelSelectedList.length > 0 && labelSelectedList[0] === index) {\n return <span className='keyDownIconActive'>{index + 1}</span>;\n }\n return <span className='keyDownIcon'>{index + 1}</span>;\n };\n\n // basicIndex 到底是那一层\n const labelPanel = (labelInfoSet: IInputList[], basicIndex = -1) => {\n if (!labelInfoSet) {\n return null;\n }\n\n return labelInfoSet.map((info: IInputList, index: number) => {\n if (info.subSelected) {\n // 判断是否有数据\n const isResult = TagUtils.judgeResultIsInInputList(\n info.value,\n currentTagResult?.result?.[info.value],\n inputList,\n );\n\n return (\n <Collapse\n bordered={false}\n expandIcon={expandIconFuc}\n key={`collapse_${index}_${basicIndex + 1}`}\n onChange={() => setExpendKeyList(index, info.value)}\n activeKey={[expandKeyList[index]]}\n >\n <Panel\n header={\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <span>\n {info.key}\n <Tooltip placement='bottom' title={t('ClearThisOption')}>\n <img\n style={{ marginLeft: 5, cursor: 'pointer' }}\n onClick={(e) => {\n e.stopPropagation();\n toolInstance.clearResult(true, info.value);\n }}\n src={hoverDeleteIndex === index || isResult ? clearSmallA : clearSmall}\n onMouseEnter={() => {\n setHoverDeleteIndex(index);\n }}\n onMouseLeave={() => {\n setHoverDeleteIndex(-1);\n }}\n />\n </Tooltip>\n {isResult && expandKeyList[index] === '' && <Badge color='#87d068' />}\n </span>\n\n {inputList?.length > 1 && selectedButton(index)}\n </div>\n }\n key={info.value}\n >\n <div\n className='level'\n style={{\n backgroundColor:\n labelSelectedList.length > 0 && labelSelectedList[0] === index\n ? 'rgba(158, 158, 158, 0.18)'\n : '',\n }}\n >\n {labelPanel(info.subSelected, index)}\n </div>\n </Panel>\n </Collapse>\n );\n }\n const key = inputList?.[basicIndex] ? inputList?.[basicIndex].value : 0;\n const selectedAttribute =\n currentTagResult?.result?.[key]?.split(';')?.indexOf(info.value) > -1 ? info.value : '';\n\n if (inputList?.[basicIndex]?.isMulti === true) {\n return (\n <div className='singleBar' key={`${key}_${basicIndex}_${index}`}>\n <CheckBoxList\n attributeChanged={() => setLabel(basicIndex, index)}\n selectedAttribute={[selectedAttribute]}\n list={[{ value: info.value, label: info.key }]}\n num={index + 1}\n />\n </div>\n );\n }\n return (\n <div className='singleBar' key={`${key}_${basicIndex}_${index}`}>\n <RadioList\n forbidColor\n attributeChanged={() => setLabel(basicIndex, index)}\n selectedAttribute={selectedAttribute}\n list={[{ value: info.value, label: info.key }]}\n num={index + 1}\n />\n </div>\n );\n });\n };\n const height = window.innerHeight - 61 - 80;\n\n return (\n <div className='tagOperationMenu' ref={sidebarRef}>\n {inputList?.length === 0 ? (\n <div style={{ padding: 20, textAlign: 'center' }}>{t('NoConfiguration')}</div>\n ) : (\n <div className='main' style={{ height }}>\n {labelPanel(inputList)}\n </div>\n )}\n </div>\n );\n};\n\nfunction mapStateToProps(state: AppState) {\n return { toolInstance: state.annotation.toolInstance, imgIndex: state.annotation.imgIndex };\n}\n\nexport default connect(mapStateToProps)(TagSidebar);\n"],"names":["clearSmallA","clearSmall","CheckBoxList","RadioList"],"mappings":";;;;;;;;;;;;AAmBA,MAAM,CAAE,SAAU;MAEL,gBAAgB,CAAC,CAAE,kDAC7B,oBAAD;AAAA,EAAoB,QAAQ,WAAW,KAAK;AAAA;AAG9C,MAAM,aAA+B,CAAC,CAAE,cAAc,cAAe;AACnE,QAAM,CAAC,eAAe,oBAAoB,SAAmB;AAE7D,QAAM,aAAa,OAAuB;AAC1C,QAAM,GAAG,eAAe,SAAiB;AACzC,QAAM,CAAC,kBAAkB,uBAAuB,SAAS;AACzD,QAAM,CAAE,KAAM;AAEd,YAAU,MAAM;AACd,QAAI,cAAc;AAEhB,uBAAiB,aAAa,OAAO,UAAU,IAAI,CAAC,MAAkB,EAAE;AAGxE,mBAAa,SAAS,UAAU,MAAM;AACpC,oBAAY,CAAC,MAAM,IAAI;AAAA;AAAA;AAAA,KAG1B,CAAC;AAEJ,YAAU,MAAM;AACd,QAAI,cAAc;AAEhB,mBAAa,SAAS,UAAU;AAEhC,UAAI,aAAa,kBAAkB,WAAW,GAAG;AAC/C,YAAI,UAAS;AACb,iBAAS,IAAI,GAAG,IAAI,aAAa,kBAAkB,IAAI,KAAK;AAC1D,qBAAU;AACV,oBAAU,MACR,cAAc,OAAO,MACrB,UAAU,GAAG,YAAY,QAAQ,CAAC,OAAW;AAC3C,uBAAU;AAAA;AAAA;AAGhB,YAAI,WAAW,SAAS;AACtB,qBAAW,QAAQ,SAAS,GAAG,YAAY;AAAA;AAAA;AAAA;AAAA;AAMnD,YAAU,MAAM;AAEd,QAAI,WAAW,SAAS;AACtB,iBAAW,QAAQ,SAAS,GAAG,YAAY;AAAA;AAAA,KAE5C,CAAC;AAEJ,QAAM,eAAe,MAAM;AA1E7B;AA2EI,UAAM,QAAQ,aAAa,kBAAkB;AAC7C,UAAM,QAAQ,gBAAU,OAAO,CAAC,GAAe,MAAc,MAAM,OAAO,OAA5D,mBAAgE;AAC9E,qBAAiB,OAAO,OAAO;AAAA;AAGjC,QAAM,mBAAmB,YACvB,CAAC,OAAe,OAAe,WAAqB;AAClD,UAAM,aAAa,UAAU;AAC7B,QAAI,WAAW,WAAW,MAAM,WAAW,MAAM;AAC/C,iBAAW,SAAS;AAAA,WACf;AACL,iBAAW,SAAS;AAAA;AAEtB,qBAAiB;AAAA,KAEnB,CAAC;AAGH,MAAI,CAAC;AAAc,WAAO;AAE1B,QAAM;AAAA,IACJ;AAAA,IACA,QAAQ,CAAE;AAAA,IACV;AAAA,IACA;AAAA,MACE;AAEJ,QAAM,iBAAiB,CAAC,UAAkB;AACxC,QAAI,kBAAkB,SAAS,KAAK,kBAAkB,OAAO,OAAO;AAClE,iDAAQ,QAAD;AAAA,QAAM,WAAU;AAAA,SAAqB,QAAQ;AAAA;AAEtD,+CAAQ,QAAD;AAAA,MAAM,WAAU;AAAA,OAAe,QAAQ;AAAA;AAIhD,QAAM,aAAa,CAAC,cAA4B,aAAa,OAAO;AAClE,QAAI,CAAC,cAAc;AACjB,aAAO;AAAA;AAGT,WAAO,aAAa,IAAI,CAAC,MAAkB,UAAkB;AAnHjE;AAoHM,UAAI,KAAK,aAAa;AAEpB,cAAM,WAAW,SAAS,yBACxB,KAAK,OACL,2DAAkB,WAAlB,mBAA2B,KAAK,QAChC;AAGF,mDACG,UAAD;AAAA,UACE,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,KAAK,YAAY,SAAS,aAAa;AAAA,UACvC,UAAU,MAAM,iBAAiB,OAAO,KAAK;AAAA,UAC7C,WAAW,CAAC,cAAc;AAAA,+CAEzB,OAAD;AAAA,UACE,4CACG,OAAD;AAAA,YACE,OAAO;AAAA,cACL,SAAS;AAAA,cACT,gBAAgB;AAAA,cAChB,YAAY;AAAA;AAAA,iDAGb,QAAD,MACG,KAAK,yCACL,SAAD;AAAA,YAAS,WAAU;AAAA,YAAS,OAAO,EAAE;AAAA,iDAClC,OAAD;AAAA,YACE,OAAO,CAAE,YAAY,GAAG,QAAQ;AAAA,YAChC,SAAS,CAAC,MAAM;AACd,gBAAE;AACF,2BAAa,YAAY,MAAM,KAAK;AAAA;AAAA,YAEtC,KAAK,qBAAqB,SAAS,WAAWA,MAAcC;AAAA,YAC5D,cAAc,MAAM;AAClB,kCAAoB;AAAA;AAAA,YAEtB,cAAc,MAAM;AAClB,kCAAoB;AAAA;AAAA,eAIzB,YAAY,cAAc,WAAW,0CAAO,OAAD;AAAA,YAAO,OAAM;AAAA,eAG1D,wCAAW,UAAS,KAAK,eAAe;AAAA,UAG7C,KAAK,KAAK;AAAA,+CAET,OAAD;AAAA,UACE,WAAU;AAAA,UACV,OAAO;AAAA,YACL,iBACE,kBAAkB,SAAS,KAAK,kBAAkB,OAAO,QACrD,8BACA;AAAA;AAAA,WAGP,WAAW,KAAK,aAAa;AAAA;AAMxC,YAAM,MAAM,wCAAY,eAAc,uCAAY,YAAY,QAAQ;AACtE,YAAM,oBACJ,wEAAkB,WAAlB,mBAA2B,SAA3B,mBAAiC,MAAM,SAAvC,mBAA6C,QAAQ,KAAK,UAAS,KAAK,KAAK,QAAQ;AAEvF,UAAI,8CAAY,gBAAZ,mBAAyB,aAAY,MAAM;AAC7C,mDACG,OAAD;AAAA,UAAK,WAAU;AAAA,UAAY,KAAK,GAAG,OAAO,cAAc;AAAA,+CACrDC,cAAD;AAAA,UACE,kBAAkB,MAAM,SAAS,YAAY;AAAA,UAC7C,mBAAmB,CAAC;AAAA,UACpB,MAAM,CAAC,CAAE,OAAO,KAAK,OAAO,OAAO,KAAK;AAAA,UACxC,KAAK,QAAQ;AAAA;AAAA;AAKrB,iDACG,OAAD;AAAA,QAAK,WAAU;AAAA,QAAY,KAAK,GAAG,OAAO,cAAc;AAAA,6CACrDC,eAAD;AAAA,QACE,aAAW;AAAA,QACX,kBAAkB,MAAM,SAAS,YAAY;AAAA,QAC7C;AAAA,QACA,MAAM,CAAC,CAAE,OAAO,KAAK,OAAO,OAAO,KAAK;AAAA,QACxC,KAAK,QAAQ;AAAA;AAAA;AAAA;AAMvB,QAAM,SAAS,OAAO,cAAc,KAAK;AAEzC,6CACG,OAAD;AAAA,IAAK,WAAU;AAAA,IAAmB,KAAK;AAAA,KACpC,wCAAW,YAAW,wCACpB,OAAD;AAAA,IAAK,OAAO,CAAE,SAAS,IAAI,WAAW;AAAA,KAAa,EAAE,0DAEpD,OAAD;AAAA,IAAK,WAAU;AAAA,IAAO,OAAO,CAAE;AAAA,KAC5B,WAAW;AAAA;AAOtB,yBAAyB,OAAiB;AACxC,SAAO,CAAE,cAAc,MAAM,WAAW,cAAc,UAAU,MAAM,WAAW;AAAA;AAGnF,mBAAe,QAAQ,iBAAiB;;;;"}
@@ -0,0 +1 @@
1
+ import{TEXT_ATTRIBUTE_MAX_LENGTH as m}from"../../../../data/enums/ToolType.js";import{TextUtils as w}from"../../../../utils/TextUtils.js";import{Tooltip as k,message as i,Input as A}from"antd/es";import t,{useState as r,useEffect as f}from"react";import I from"../../../../assets/annotation/common/icon_clearSmall_a.svg.js";import _ from"../../../../assets/annotation/common/icon_clearSmall.svg.js";import{classnames as E}from"../../../../utils/index.js";import{useTranslation as F}from"react-i18next";const L=T=>{const{t:n}=F(),{onChange:o,textValue:a,checkString:v,textCheckType:h}=T,[u,s]=r(0),[l,c]=r(!1),[p,g]=r(!1),[d,x]=r(!1),y=t.createElement("a",null,t.createElement(k,{placement:"bottom",title:n("EmptyTextInput")},t.createElement("img",{onMouseEnter:()=>x(!0),onMouseLeave:()=>x(!1),style:{marginLeft:6},src:d?I:_,onClick:e=>{e.stopPropagation(),o("")}}))),N=e=>{e.stopPropagation()};f(()=>{a&&s(a.length)},[]),f(()=>{var e;if(a===void 0||a==="")c(!1);else try{a&&c(!new RegExp(v).test(a))}catch(j){c(!0),i.destroy(),i.error(n("RegularExpIncorrectly"))}s((e=a==null?void 0:a.length)!=null?e:0)},[a]);const C=e=>{if(l)return o(""),i.error(w.getErrorNotice(h)),!0;o(e.target.value,!0)};return t.createElement("div",{className:"textInputContainer"},t.createElement("div",{className:"label"},n("TextInput"),y),t.createElement("div",{className:E({textareaContainer:!0,focus:p})},t.createElement("div",{className:E({toolTextAreaBox:!0,toolTextAreaBoxFocus:p})},t.createElement(A.TextArea,{style:{resize:"none",height:120,wordBreak:"break-all"},maxLength:m,onKeyDownCapture:e=>{e.stopPropagation()},onKeyUpCapture:e=>{e.stopPropagation()},onChange:e=>{o(e.target.value),s(e.target.value.length)},onFocus:e=>g(!0),onBlur:e=>{C(e),g(!1)},value:a,onKeyDown:N,className:l?"warning":""}),t.createElement("div",{className:"textAreaFooter"},t.createElement("span",{className:"wordCount"},t.createElement("span",{className:u>m||l?"warning":""},u),"/",t.createElement("span",null,m))))))};export{L as default};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/TextAreaFormat/index.tsx"],"sourcesContent":["import { TEXT_ATTRIBUTE_MAX_LENGTH } from '@/data/enums/ToolType';\nimport { TextUtils } from '@/utils/TextUtils';\nimport { Input, message, Tooltip } from 'antd/es';\nimport React, { FocusEvent, useEffect, useState } from 'react';\nimport IconClearSmallA from '@/assets/annotation/common/icon_clearSmall_a.svg';\nimport IconClearSmall from '@/assets/annotation/common/icon_clearSmall.svg';\nimport { classnames } from '@/utils';\nimport { useTranslation } from 'react-i18next';\n\ninterface IProps {\n onChange: (value: string, isSubmit?: boolean) => void;\n textValue: string | undefined;\n checkString: string;\n textCheckType: number;\n}\n\nconst TextAreaFormat = (props: IProps) => {\n const { t } = useTranslation();\n\n const { onChange, textValue, checkString, textCheckType } = props;\n const [textLength, setTextLength] = useState<number>(0);\n const [error, setError] = useState<boolean>(false);\n const [onFocus, setOnFocus] = useState<boolean>(false);\n const [hoverDelete, setHoverDelete] = useState<boolean>(false);\n\n const clearIcon = (\n <a>\n <Tooltip placement='bottom' title={t('EmptyTextInput')}>\n <img\n onMouseEnter={() => setHoverDelete(true)}\n onMouseLeave={() => setHoverDelete(false)}\n style={{ marginLeft: 6 }}\n src={hoverDelete ? IconClearSmallA : IconClearSmall}\n onClick={(e) => {\n e.stopPropagation();\n onChange('');\n }}\n />\n </Tooltip>\n </a>\n );\n\n const keyDown = (e: React.KeyboardEvent) => {\n e.stopPropagation();\n };\n\n useEffect(() => {\n if (textValue) {\n setTextLength(textValue.length);\n }\n }, []);\n\n useEffect(() => {\n if (textValue === undefined || textValue === '') {\n setError(false);\n } else {\n try {\n textValue && setError(!new RegExp(checkString).test(textValue));\n } catch (error) {\n setError(true);\n message.destroy();\n message.error(t('RegularExpIncorrectly'));\n }\n }\n setTextLength(textValue?.length ?? 0);\n }, [textValue]);\n\n const checkText = (e: FocusEvent<HTMLTextAreaElement>) => {\n if (error) {\n onChange('');\n message.error(TextUtils.getErrorNotice(textCheckType));\n return true;\n }\n onChange(e.target.value, true); // 失焦的时候直接进行数据的提交\n };\n\n return (\n <div className='textInputContainer'>\n <div className='label'>\n {t('TextInput')}\n {clearIcon}\n </div>\n <div\n className={classnames({\n textareaContainer: true,\n focus: onFocus,\n })}\n >\n <div\n className={classnames({\n toolTextAreaBox: true,\n toolTextAreaBoxFocus: onFocus,\n })}\n >\n <Input.TextArea\n style={{ resize: 'none', height: 120, wordBreak: 'break-all' }}\n maxLength={TEXT_ATTRIBUTE_MAX_LENGTH}\n onKeyDownCapture={(e) => {\n e.stopPropagation();\n }}\n onKeyUpCapture={(e) => {\n e.stopPropagation();\n }}\n onChange={(e) => {\n onChange(e.target.value);\n setTextLength(e.target.value.length);\n }}\n onFocus={(e) => setOnFocus(true)}\n onBlur={(e) => {\n checkText(e);\n setOnFocus(false);\n }}\n value={textValue}\n onKeyDown={keyDown}\n className={error ? 'warning' : ''}\n />\n <div className='textAreaFooter'>\n <span className='wordCount'>\n <span className={textLength > TEXT_ATTRIBUTE_MAX_LENGTH || error ? 'warning' : ''}>\n {textLength}\n </span>\n /<span>{TEXT_ATTRIBUTE_MAX_LENGTH}</span>\n </span>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default TextAreaFormat;\n"],"names":["IconClearSmallA","IconClearSmall"],"mappings":";;;;;;;;;MAgBM,iBAAiB,CAAC,UAAkB;AACxC,QAAM,CAAE,KAAM;AAEd,QAAM,CAAE,UAAU,WAAW,aAAa,iBAAkB;AAC5D,QAAM,CAAC,YAAY,iBAAiB,SAAiB;AACrD,QAAM,CAAC,OAAO,YAAY,SAAkB;AAC5C,QAAM,CAAC,SAAS,cAAc,SAAkB;AAChD,QAAM,CAAC,aAAa,kBAAkB,SAAkB;AAExD,QAAM,gDACH,KAAD,0CACG,SAAD;AAAA,IAAS,WAAU;AAAA,IAAS,OAAO,EAAE;AAAA,yCAClC,OAAD;AAAA,IACE,cAAc,MAAM,eAAe;AAAA,IACnC,cAAc,MAAM,eAAe;AAAA,IACnC,OAAO,CAAE,YAAY;AAAA,IACrB,KAAK,cAAcA,MAAkBC;AAAA,IACrC,SAAS,CAAC,MAAM;AACd,QAAE;AACF,eAAS;AAAA;AAAA;AAOnB,QAAM,UAAU,CAAC,MAA2B;AAC1C,MAAE;AAAA;AAGJ,YAAU,MAAM;AACd,QAAI,WAAW;AACb,oBAAc,UAAU;AAAA;AAAA,KAEzB;AAEH,YAAU,MAAM;AApDlB;AAqDI,QAAI,cAAc,UAAa,cAAc,IAAI;AAC/C,eAAS;AAAA,WACJ;AACL,UAAI;AACF,qBAAa,SAAS,CAAC,IAAI,OAAO,aAAa,KAAK;AAAA,eAC7C,QAAP;AACA,iBAAS;AACT,gBAAQ;AACR,gBAAQ,MAAM,EAAE;AAAA;AAAA;AAGpB,kBAAc,6CAAW,WAAX,YAAqB;AAAA,KAClC,CAAC;AAEJ,QAAM,YAAY,CAAC,MAAuC;AACxD,QAAI,OAAO;AACT,eAAS;AACT,cAAQ,MAAM,UAAU,eAAe;AACvC,aAAO;AAAA;AAET,aAAS,EAAE,OAAO,OAAO;AAAA;AAG3B,6CACG,OAAD;AAAA,IAAK,WAAU;AAAA,yCACZ,OAAD;AAAA,IAAK,WAAU;AAAA,KACZ,EAAE,cACF,gDAEF,OAAD;AAAA,IACE,WAAW,WAAW;AAAA,MACpB,mBAAmB;AAAA,MACnB,OAAO;AAAA;AAAA,yCAGR,OAAD;AAAA,IACE,WAAW,WAAW;AAAA,MACpB,iBAAiB;AAAA,MACjB,sBAAsB;AAAA;AAAA,yCAGvB,MAAM,UAAP;AAAA,IACE,OAAO,CAAE,QAAQ,QAAQ,QAAQ,KAAK,WAAW;AAAA,IACjD,WAAW;AAAA,IACX,kBAAkB,CAAC,MAAM;AACvB,QAAE;AAAA;AAAA,IAEJ,gBAAgB,CAAC,MAAM;AACrB,QAAE;AAAA;AAAA,IAEJ,UAAU,CAAC,MAAM;AACf,eAAS,EAAE,OAAO;AAClB,oBAAc,EAAE,OAAO,MAAM;AAAA;AAAA,IAE/B,SAAS,CAAC,MAAM,WAAW;AAAA,IAC3B,QAAQ,CAAC,MAAM;AACb,gBAAU;AACV,iBAAW;AAAA;AAAA,IAEb,OAAO;AAAA,IACP,WAAW;AAAA,IACX,WAAW,QAAQ,YAAY;AAAA,0CAEhC,OAAD;AAAA,IAAK,WAAU;AAAA,yCACZ,QAAD;AAAA,IAAM,WAAU;AAAA,yCACb,QAAD;AAAA,IAAM,WAAW,aAAa,6BAA6B,QAAQ,YAAY;AAAA,KAC5E,aACI,yCACL,QAAD,MAAO;AAAA;;;;"}
@@ -0,0 +1 @@
1
+ import n,{useState as d,useEffect as _,useRef as K}from"react";import{connect as R}from"react-redux";import{cloneDeep as j}from"lodash";import{classnames as C}from"../../../../utils/index.js";import{Input as D}from"antd/es";import{cKeyCode as $}from"@sensetime/annotation";import{PageForward as q}from"../../../../store/annotation/actionCreators.js";import{ConfigUtils as U}from"../../../../utils/ConfigUtils.js";import{useTranslation as B}from"react-i18next";var M=Object.defineProperty,I=Object.getOwnPropertySymbols,z=Object.prototype.hasOwnProperty,V=Object.prototype.propertyIsEnumerable,S=(e,t,a)=>t in e?M(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,W=(e,t)=>{for(var a in t||(t={}))z.call(t,a)&&S(e,a,t[a]);if(I)for(var a of I(t))V.call(t,a)&&S(e,a,t[a]);return e};const F=$.default,L=e=>{e.stopPropagation(),e.nativeEvent.stopPropagation(),e.nativeEvent.stopImmediatePropagation()},O=e=>{const{textareaProps:t,footer:a}=e;return n.createElement(n.Fragment,null,n.createElement(D.TextArea,W({bordered:!1,rows:6,onKeyDown:L,onKeyUp:L},t)),n.createElement("div",{className:C({textAreaLength:!0})},a))},k=e=>{var t;const a=K(null),[g,c]=d(!1),[w,x]=d(!1),{t:u}=B(),{disabled:l,config:i,result:v,updateText:E,index:T,switchToNextTextarea:h,hasMultiple:P,onNext:p}=e,{maxLength:m}=i,f=v?v[i.key]:"",y=(t=f==null?void 0:f.length)!=null?t:0,N=o=>{E&&(E(o,i.key),i.required&&x(!o))},b=P&&h,r={id:`textInput-${T}`,ref:a,disabled:l,value:f,maxLength:m,autoSize:{minRows:2,maxRows:6},onChange:o=>{const A=o.target.value;N(A)},onFocus:()=>{c(!0)},onBlur:o=>{c(!1),i.required&&x(!o.target.value)},style:{resize:"none",wordBreak:"break-all"},onKeyDownCapture:o=>{o.ctrlKey&&o.keyCode===F.Enter&&(p&&p(),o.preventDefault()),o.keyCode===F.Tab&&b&&(o.preventDefault(),o.nativeEvent.stopImmediatePropagation(),h(T)),o.nativeEvent.stopPropagation()}},s=n.createElement("div",{className:"textAreaFooter"},n.createElement("div",{className:"hotkeyTip"},b&&n.createElement("span",null,`[${u("Switch")}]Tab`),n.createElement("span",null,`[${u("TurnPage")}]Ctrl+Enter`)),n.createElement("div",{className:"wordCount"},n.createElement("span",{className:y>=m?"warning":""},y),"/",n.createElement("span",null,m)));return _(()=>{l&&c(!1)},[l]),n.createElement("div",{className:"textField"},n.createElement("div",{className:"label"},n.createElement("span",{className:C({required:i.required})},i.label),n.createElement("i",{className:C({clearText:!0,disabled:l}),onClick:()=>{l||N("")}})),n.createElement("div",{className:C({disabled:l,"textarea-outline":!0,"ant-input-focused":g,textareaContainer:!0,focus:g,invalid:w})},n.createElement(O,{footer:s,textareaProps:r})))},G=({toolInstance:e,imgIndex:t,dispatch:a,triggerEventAfterIndexChanged:g,step:c,stepList:w,basicResultList:x})=>{var u,l;const[i,v]=d([]),[E,T]=d(0),[,h]=d(0),P=r=>{const s=(r+1)%i.length;p(s)},p=r=>{setTimeout(()=>{const s=document.getElementById(`textInput-${r}`);s&&(T(r),s.focus(),s.select(),s.scrollIntoView({behavior:"smooth",block:"center"}))})};_(()=>{e&&(v(j(e.config.configList)),e.singleOn("valueUpdated",()=>{h(r=>r+1)}))},[e]);const m=(r,s)=>{e.updateTextValue(s,r)};_(()=>{t>-1&&g&&p(0)},[t]);const f=(l=(u=e.textList[0])==null?void 0:u.value)!=null?l:{},y=()=>{a(q(!0))},b=U.getStepConfig(w,c).dataSourceStep>0&&x.length===0;return n.createElement("div",{className:"textToolOperationMenu"},i.map((r,s)=>n.createElement(k,{config:r,key:r.key,index:s,result:f,updateText:m,switchToNextTextarea:P,hasMultiple:i.length>1,focus:E===s,onNext:y,disabled:b})))};function H(e){return{toolInstance:e.annotation.toolInstance,imgIndex:e.annotation.imgIndex,step:e.annotation.step,basicResultList:e.annotation.basicResultList,stepList:e.annotation.stepList,triggerEventAfterIndexChanged:e.annotation.triggerEventAfterIndexChanged}}var J=R(H)(G);export{k as SingleTextInput,O as TextareaWithFooter,J as default};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/TextToolSidebar/index.tsx"],"sourcesContent":["import React, { useEffect, useState, useRef, FocusEvent } from 'react';\nimport { connect } from 'react-redux';\nimport { AppState } from '@/store';\nimport { cloneDeep } from 'lodash';\nimport { classnames } from '@/utils';\nimport { Input } from 'antd/es';\nimport { cKeyCode } from '@sensetime/annotation';\nimport { PageForward } from '@/store/annotation/actionCreators';\nimport { ConfigUtils } from '@/utils/ConfigUtils';\nimport { IStepInfo } from '@/types/step';\nimport TextToolOperation from '@sensetime/annotation/dist/types/core/toolOperation/TextToolOperation';\nimport { useTranslation } from 'react-i18next';\n\nconst EKeyCode = cKeyCode.default;\n\nconst syntheticEventStopPagination = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n e.stopPropagation();\n e.nativeEvent.stopPropagation();\n e.nativeEvent.stopImmediatePropagation();\n};\n\ninterface ITextareaWithFooterProps {\n textareaProps?: any;\n footer?: any;\n}\n\nexport const TextareaWithFooter = (props: ITextareaWithFooterProps) => {\n const { textareaProps, footer } = props;\n\n return (\n <>\n <Input.TextArea\n bordered={false}\n rows={6}\n onKeyDown={syntheticEventStopPagination}\n onKeyUp={syntheticEventStopPagination}\n {...textareaProps}\n />\n <div\n className={classnames({\n textAreaLength: true,\n })}\n >\n {footer}\n </div>\n </>\n );\n};\n\ninterface IProps {\n dispatch: Function;\n toolInstance: TextToolOperation;\n imgIndex: number;\n triggerEventAfterIndexChanged: boolean;\n step: number;\n stepList: IStepInfo[];\n basicResultList: any[];\n}\n\ninterface IConfigListItem {\n label: string;\n key: string;\n required: boolean;\n default: string;\n maxLength: number;\n}\n\nexport const SingleTextInput = (props: any) => {\n const ref = useRef(null);\n const [textAreaFocus, setTextAreaFocus] = useState(false);\n const [invalid, setInvalid] = useState(false);\n const { t } = useTranslation();\n\n const { disabled, config, result, updateText, index, switchToNextTextarea, hasMultiple, onNext } =\n props;\n const { maxLength } = config;\n\n const value = result ? result[config.key] : '';\n const textLength = value?.length ?? 0;\n\n const updateTextWithKey = (newVal: string) => {\n if (updateText) {\n updateText(newVal, config.key);\n if (config.required) {\n setInvalid(!newVal);\n }\n }\n };\n\n const tabToSwitchEnabled = hasMultiple && switchToNextTextarea;\n\n const textareaProps = {\n id: `textInput-${index}`,\n ref,\n disabled,\n value,\n maxLength,\n autoSize: { minRows: 2, maxRows: 6 },\n onChange: (e: FocusEvent<HTMLTextAreaElement>) => {\n const value = e.target.value;\n updateTextWithKey(value);\n },\n onFocus: () => {\n setTextAreaFocus(true);\n },\n onBlur: (e: FocusEvent<HTMLTextAreaElement>) => {\n setTextAreaFocus(false);\n if (config.required) {\n setInvalid(!e.target.value);\n }\n },\n style: {\n resize: 'none',\n wordBreak: 'break-all',\n },\n onKeyDownCapture: (e: React.KeyboardEvent) => {\n if (e.ctrlKey && e.keyCode === EKeyCode.Enter) {\n if (onNext) {\n onNext();\n }\n e.preventDefault();\n }\n\n if (e.keyCode === EKeyCode.Tab && tabToSwitchEnabled) {\n e.preventDefault();\n e.nativeEvent.stopImmediatePropagation();\n switchToNextTextarea(index);\n }\n\n e.nativeEvent.stopPropagation();\n },\n };\n\n const TextareaFooter = (\n <div className='textAreaFooter'>\n <div className='hotkeyTip'>\n {tabToSwitchEnabled && <span>{`[${t('Switch')}]Tab`}</span>}\n <span>{`[${t('TurnPage')}]Ctrl+Enter`}</span>\n </div>\n <div className='wordCount'>\n <span className={textLength >= maxLength ? 'warning' : ''}>{textLength}</span>/\n <span>{maxLength}</span>\n </div>\n </div>\n );\n\n useEffect(() => {\n if (disabled) {\n setTextAreaFocus(false);\n }\n }, [disabled]);\n\n return (\n <div className='textField'>\n <div className='label'>\n <span className={classnames({ required: config.required })}>{config.label}</span>\n <i\n className={classnames({ clearText: true, disabled: disabled })}\n onClick={() => {\n if (disabled) {\n return;\n }\n updateTextWithKey('');\n }}\n />\n </div>\n <div\n className={classnames({\n disabled,\n 'textarea-outline': true,\n 'ant-input-focused': textAreaFocus,\n textareaContainer: true,\n focus: textAreaFocus,\n invalid: invalid,\n })}\n >\n <TextareaWithFooter footer={TextareaFooter} textareaProps={textareaProps} />\n </div>\n </div>\n );\n};\n\nconst TextToolSidebar: React.FC<IProps> = ({\n toolInstance,\n imgIndex,\n dispatch,\n triggerEventAfterIndexChanged,\n step,\n stepList,\n basicResultList,\n}) => {\n const [configList, setConfigList] = useState<IConfigListItem[]>([]);\n const [focusIndex, setFocusIndex] = useState(0);\n const [, forceRender] = useState(0);\n\n const switchToNextTextarea = (currentIndex: number) => {\n const nextIndex = (currentIndex + 1) % configList.length;\n textareaFocus(nextIndex);\n };\n\n const textareaFocus = (index: number) => {\n setTimeout(() => {\n const textarea = document.getElementById(`textInput-${index}`) as HTMLTextAreaElement;\n if (textarea) {\n setFocusIndex(index);\n textarea.focus();\n textarea.select();\n textarea.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n });\n };\n\n useEffect(() => {\n if (toolInstance) {\n setConfigList(cloneDeep(toolInstance.config.configList));\n toolInstance.singleOn('valueUpdated', () => {\n forceRender((s) => s + 1);\n });\n }\n }, [toolInstance]);\n\n const updateText = (v: string, k: string) => {\n toolInstance.updateTextValue(k, v);\n };\n\n useEffect(() => {\n if (imgIndex > -1 && triggerEventAfterIndexChanged) {\n textareaFocus(0);\n }\n }, [imgIndex]);\n\n const result = toolInstance.textList[0]?.value ?? {};\n\n const onNext = () => {\n dispatch(PageForward(true));\n };\n\n const stepConfig = ConfigUtils.getStepConfig(stepList, step);\n const disabled = stepConfig.dataSourceStep > 0 && basicResultList.length === 0;\n\n return (\n <div className='textToolOperationMenu'>\n {configList.map((i, index) => (\n <SingleTextInput\n config={i}\n key={i.key}\n index={index}\n result={result}\n updateText={updateText}\n switchToNextTextarea={switchToNextTextarea}\n hasMultiple={configList.length > 1}\n focus={focusIndex === index}\n onNext={onNext}\n disabled={disabled}\n />\n ))}\n </div>\n );\n};\n\nfunction mapStateToProps(state: AppState) {\n return {\n toolInstance: state.annotation.toolInstance,\n imgIndex: state.annotation.imgIndex,\n step: state.annotation.step,\n basicResultList: state.annotation.basicResultList,\n stepList: state.annotation.stepList,\n triggerEventAfterIndexChanged: state.annotation.triggerEventAfterIndexChanged,\n };\n}\n\nexport default connect(mapStateToProps)(TextToolSidebar);\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,MAAM,WAAW,SAAS;AAE1B,MAAM,+BAA+B,CAAC,MAAgD;AACpF,IAAE;AACF,IAAE,YAAY;AACd,IAAE,YAAY;AAAA;MAQH,qBAAqB,CAAC,UAAoC;AACrE,QAAM,CAAE,eAAe,UAAW;AAElC,uGAEK,MAAM,UAAP;AAAA,IACE,UAAU;AAAA,IACV,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,KACL,qDAEL,OAAD;AAAA,IACE,WAAW,WAAW;AAAA,MACpB,gBAAgB;AAAA;AAAA,KAGjB;AAAA;MAwBI,kBAAkB,CAAC,UAAe;AAnE/C;AAoEE,QAAM,MAAM,OAAO;AACnB,QAAM,CAAC,eAAe,oBAAoB,SAAS;AACnD,QAAM,CAAC,SAAS,cAAc,SAAS;AACvC,QAAM,CAAE,KAAM;AAEd,QAAM,CAAE,UAAU,QAAQ,QAAQ,YAAY,OAAO,sBAAsB,aAAa,UACtF;AACF,QAAM,CAAE,aAAc;AAEtB,QAAM,QAAQ,SAAS,OAAO,OAAO,OAAO;AAC5C,QAAM,aAAa,qCAAO,WAAP,YAAiB;AAEpC,QAAM,oBAAoB,CAAC,WAAmB;AAC5C,QAAI,YAAY;AACd,iBAAW,QAAQ,OAAO;AAC1B,UAAI,OAAO,UAAU;AACnB,mBAAW,CAAC;AAAA;AAAA;AAAA;AAKlB,QAAM,qBAAqB,eAAe;AAE1C,QAAM,gBAAgB;AAAA,IACpB,IAAI,aAAa;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU,CAAE,SAAS,GAAG,SAAS;AAAA,IACjC,UAAU,CAAC,MAAuC;AAChD,YAAM,SAAQ,EAAE,OAAO;AACvB,wBAAkB;AAAA;AAAA,IAEpB,SAAS,MAAM;AACb,uBAAiB;AAAA;AAAA,IAEnB,QAAQ,CAAC,MAAuC;AAC9C,uBAAiB;AACjB,UAAI,OAAO,UAAU;AACnB,mBAAW,CAAC,EAAE,OAAO;AAAA;AAAA;AAAA,IAGzB,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,WAAW;AAAA;AAAA,IAEb,kBAAkB,CAAC,MAA2B;AAC5C,UAAI,EAAE,WAAW,EAAE,YAAY,SAAS,OAAO;AAC7C,YAAI,QAAQ;AACV;AAAA;AAEF,UAAE;AAAA;AAGJ,UAAI,EAAE,YAAY,SAAS,OAAO,oBAAoB;AACpD,UAAE;AACF,UAAE,YAAY;AACd,6BAAqB;AAAA;AAGvB,QAAE,YAAY;AAAA;AAAA;AAIlB,QAAM,qDACH,OAAD;AAAA,IAAK,WAAU;AAAA,yCACZ,OAAD;AAAA,IAAK,WAAU;AAAA,KACZ,0DAAuB,QAAD,MAAO,IAAI,EAAE,sDACnC,QAAD,MAAO,IAAI,EAAE,gEAEd,OAAD;AAAA,IAAK,WAAU;AAAA,yCACZ,QAAD;AAAA,IAAM,WAAW,cAAc,YAAY,YAAY;AAAA,KAAK,aAAkB,yCAC7E,QAAD,MAAO;AAKb,YAAU,MAAM;AACd,QAAI,UAAU;AACZ,uBAAiB;AAAA;AAAA,KAElB,CAAC;AAEJ,6CACG,OAAD;AAAA,IAAK,WAAU;AAAA,yCACZ,OAAD;AAAA,IAAK,WAAU;AAAA,yCACZ,QAAD;AAAA,IAAM,WAAW,WAAW,CAAE,UAAU,OAAO;AAAA,KAAc,OAAO,4CACnE,KAAD;AAAA,IACE,WAAW,WAAW,CAAE,WAAW,MAAM;AAAA,IACzC,SAAS,MAAM;AACb,UAAI,UAAU;AACZ;AAAA;AAEF,wBAAkB;AAAA;AAAA,2CAIvB,OAAD;AAAA,IACE,WAAW,WAAW;AAAA,MACpB;AAAA,MACA,oBAAoB;AAAA,MACpB,qBAAqB;AAAA,MACrB,mBAAmB;AAAA,MACnB,OAAO;AAAA,MACP;AAAA;AAAA,yCAGD,oBAAD;AAAA,IAAoB,QAAQ;AAAA,IAAgB;AAAA;AAAA;AAMpD,MAAM,kBAAoC,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,MACI;AA9LN;AA+LE,QAAM,CAAC,YAAY,iBAAiB,SAA4B;AAChE,QAAM,CAAC,YAAY,iBAAiB,SAAS;AAC7C,QAAM,GAAG,eAAe,SAAS;AAEjC,QAAM,uBAAuB,CAAC,iBAAyB;AACrD,UAAM,YAAa,gBAAe,KAAK,WAAW;AAClD,kBAAc;AAAA;AAGhB,QAAM,gBAAgB,CAAC,UAAkB;AACvC,eAAW,MAAM;AACf,YAAM,WAAW,SAAS,eAAe,aAAa;AACtD,UAAI,UAAU;AACZ,sBAAc;AACd,iBAAS;AACT,iBAAS;AACT,iBAAS,eAAe,CAAE,UAAU,UAAU,OAAO;AAAA;AAAA;AAAA;AAK3D,YAAU,MAAM;AACd,QAAI,cAAc;AAChB,oBAAc,UAAU,aAAa,OAAO;AAC5C,mBAAa,SAAS,gBAAgB,MAAM;AAC1C,oBAAY,CAAC,MAAM,IAAI;AAAA;AAAA;AAAA,KAG1B,CAAC;AAEJ,QAAM,aAAa,CAAC,GAAW,MAAc;AAC3C,iBAAa,gBAAgB,GAAG;AAAA;AAGlC,YAAU,MAAM;AACd,QAAI,WAAW,MAAM,+BAA+B;AAClD,oBAAc;AAAA;AAAA,KAEf,CAAC;AAEJ,QAAM,SAAS,yBAAa,SAAS,OAAtB,mBAA0B,UAA1B,YAAmC;AAElD,QAAM,SAAS,MAAM;AACnB,aAAS,YAAY;AAAA;AAGvB,QAAM,aAAa,YAAY,cAAc,UAAU;AACvD,QAAM,WAAW,WAAW,iBAAiB,KAAK,gBAAgB,WAAW;AAE7E,6CACG,OAAD;AAAA,IAAK,WAAU;AAAA,KACZ,WAAW,IAAI,CAAC,GAAG,8CACjB,iBAAD;AAAA,IACE,QAAQ;AAAA,IACR,KAAK,EAAE;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,WAAW,SAAS;AAAA,IACjC,OAAO,eAAe;AAAA,IACtB;AAAA,IACA;AAAA;AAAA;AAOV,yBAAyB,OAAiB;AACxC,SAAO;AAAA,IACL,cAAc,MAAM,WAAW;AAAA,IAC/B,UAAU,MAAM,WAAW;AAAA,IAC3B,MAAM,MAAM,WAAW;AAAA,IACvB,iBAAiB,MAAM,WAAW;AAAA,IAClC,UAAU,MAAM,WAAW;AAAA,IAC3B,+BAA+B,MAAM,WAAW;AAAA;AAAA;AAIpD,wBAAe,QAAQ,iBAAiB;;;;"}
@@ -0,0 +1 @@
1
+ import{Slider as f}from"antd/es";import o from"react";import g from"../../../../assets/toolStyle/icon_border.svg.js";import S from"../../../../assets/toolStyle/icon_borderColor.svg.js";import b from"../../../../assets/toolStyle/icon_opacityStroke.svg.js";import h from"../../../../assets/toolStyle/icon_opacityFill.svg.js";import{connect as k}from"react-redux";import{UpdateToolStyleConfig as O}from"../../../../store/toolStyle/actionCreators.js";import{store as w}from"../../../../index.js";import{useTranslation as C}from"react-i18next";const T=(e,a)=>{const c=[{step:1,value:"1"},{step:2,value:"2"},{step:3,value:"3"},{step:4,value:"4"},{step:5,value:"5"}],n=[{step:1,value:"Blue"},{step:3,value:"Cyan"},{step:5,value:"Green"},{step:7,value:"Yellow"},{step:9,value:"Pink"}],i=[{step:1,value:"0.2"},{step:3,value:"0.4"},{step:5,value:"0.6"},{step:7,value:"0.8"},{step:9,value:"1.0"}],p=[{step:1,value:"0"},{step:3,value:"0.2"},{step:5,value:"0.4"},{step:7,value:"0.6"},{step:9,value:"0.8"}];let r=[];const s={};switch(e){case"width":r=c;break;case"color":r=n;break;case"borderOpacity":r=i;break;case"fillOpacity":r=p;break}return r.forEach(({step:l,value:u})=>{s[l]={style:{color:"#999999",fontSize:"12px"},label:o.createElement("span",null,a(u))}}),s},E=e=>{switch(e){case"width":return"BorderThickness";case"color":return"Color";case"borderOpacity":return"BorderOpacity";case"fillOpacity":return"FillOpacity";default:return""}},j=e=>{switch(e){case"width":return g;case"color":return S;case"borderOpacity":return b;case"fillOpacity":return h}},x=e=>{switch(e){case"width":return 2;case"color":return 1;case"borderOpacity":return 9;case"fillOpacity":return 9}},y=e=>["width"].includes(e),M=e=>{const{toolStyle:a}=e,{width:c,color:n,borderOpacity:i,fillOpacity:p}=a,r={width:c,color:n,borderOpacity:i,fillOpacity:p},{t:s}=C(),l=e.config,u=m=>{w.dispatch(O(m))};return o.createElement("div",{className:"toolStyle"},Object.entries(r).map(m=>{var d;const t=m[0];return(l==null?void 0:l.attributeConfigurable)===!0&&t==="color"?null:o.createElement("div",{id:`style-${t}`,className:"styleSlider",key:t},o.createElement("span",{className:"title"},o.createElement("img",{src:j(t),className:"icon"}),s(E(t))),o.createElement("span",{className:"slider"},o.createElement(f,{tipFormatter:null,max:y(t)?5:10,min:y(t)?1:0,step:y(t)?1:null,value:(d=a[t])!=null?d:x(t),marks:T(t,s),onChange:v=>u({[t]:v})})))}))},N=({toolStyle:e,annotation:a})=>({toolStyle:e,config:a.toolInstance.config});var _=k(N)(M);export{_ as default};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/ToolStyle/index.tsx"],"sourcesContent":["import { Slider } from 'antd/es';\nimport React from 'react';\nimport widthSvg from '@/assets/toolStyle/icon_border.svg';\nimport colorSvg from '@/assets/toolStyle/icon_borderColor.svg';\nimport borderOpacitySvg from '@/assets/toolStyle/icon_opacityStroke.svg';\nimport fillOpacitySvg from '@/assets/toolStyle/icon_opacityFill.svg';\n\nimport { connect } from 'react-redux';\nimport { UpdateToolStyleConfig } from '@/store/toolStyle/actionCreators';\nimport { store } from '@/index';\nimport { AppState } from '@/store';\nimport { ToolStyleState } from '@/store/toolStyle/types';\nimport { useTranslation } from 'react-i18next';\n\ninterface IProps {\n toolStyle: ToolStyleState;\n config: string;\n}\ntype ToolStyleKey = keyof ToolStyleState;\n\nconst getMarks = (type: string, t: any) => {\n const lineMarks = [\n { step: 1, value: '1' },\n { step: 2, value: '2' },\n { step: 3, value: '3' },\n { step: 4, value: '4' },\n { step: 5, value: '5' },\n ];\n const colorMarks = [\n { step: 1, value: 'Blue' },\n { step: 3, value: 'Cyan' },\n { step: 5, value: 'Green' },\n { step: 7, value: 'Yellow' },\n { step: 9, value: 'Pink' },\n ];\n const borderOpacityMarks = [\n { step: 1, value: '0.2' },\n { step: 3, value: '0.4' },\n { step: 5, value: '0.6' },\n { step: 7, value: '0.8' },\n { step: 9, value: '1.0' },\n ];\n\n const fillOpacityMarks = [\n { step: 1, value: '0' },\n { step: 3, value: '0.2' },\n { step: 5, value: '0.4' },\n { step: 7, value: '0.6' },\n { step: 9, value: '0.8' },\n ];\n let list: Array<{ step: number; value: string }> = [];\n const marks: {\n [a: number]: {\n style: {};\n label: any;\n };\n } = {};\n switch (type) {\n case 'width':\n list = lineMarks;\n break;\n case 'color':\n list = colorMarks;\n break;\n case 'borderOpacity':\n list = borderOpacityMarks;\n break;\n case 'fillOpacity':\n list = fillOpacityMarks;\n break;\n }\n list.forEach(({ step, value }) => {\n marks[step] = {\n style: { color: '#999999', fontSize: '12px' },\n label: <span>{t(value)}</span>,\n };\n });\n return marks;\n};\n\nconst getTitle = (title: string) => {\n switch (title) {\n case 'width':\n return 'BorderThickness';\n case 'color':\n return 'Color';\n case 'borderOpacity':\n return 'BorderOpacity';\n case 'fillOpacity':\n return 'FillOpacity';\n default:\n return '';\n }\n};\nconst getImage = (title: string) => {\n switch (title) {\n case 'width':\n return widthSvg;\n case 'color':\n return colorSvg;\n case 'borderOpacity':\n return borderOpacitySvg;\n case 'fillOpacity':\n return fillOpacitySvg;\n }\n};\nconst getDefaultValue = (value: string) => {\n switch (value) {\n case 'width':\n return 2;\n case 'color':\n return 1;\n case 'borderOpacity':\n return 9;\n case 'fillOpacity':\n return 9;\n }\n};\n\n/**\n * 判断使用那种样式 (slider的step中间为选中和step为选中)\n * @param info TToolStyleConfig\n */\nconst getStyleType = (info: string): boolean => ['width'].includes(info);\n\nconst ToolStyle = (props: IProps) => {\n const { toolStyle } = props;\n const { width, color, borderOpacity, fillOpacity } = toolStyle;\n const styleConfig = {\n width,\n color,\n borderOpacity,\n fillOpacity,\n };\n const { t } = useTranslation();\n\n // TODO - 样式标准的定义\n const annotationConfig: any = props.config;\n\n const changeToolStyle = (obj: { [key: string]: number }) => {\n store.dispatch(UpdateToolStyleConfig(obj));\n };\n\n return (\n <div className='toolStyle'>\n {Object.entries(styleConfig).map((item: any[]) => {\n const key: ToolStyleKey = item[0];\n // 判断是否需要 color 的使用,现在暂时默认不需要\n if (annotationConfig?.attributeConfigurable === true && key === 'color') {\n return null;\n }\n return (\n <div id={`style-${key}`} className='styleSlider' key={key}>\n <span className='title'>\n <img src={getImage(key)} className='icon' />\n {t(getTitle(key))}\n </span>\n <span className='slider'>\n <Slider\n tipFormatter={null}\n max={getStyleType(key) ? 5 : 10}\n min={getStyleType(key) ? 1 : 0}\n step={getStyleType(key) ? 1 : null}\n value={(toolStyle[key] ?? getDefaultValue(key)) as number}\n marks={getMarks(key, t)}\n onChange={(e: any) => changeToolStyle({ [key]: e })}\n />\n </span>\n </div>\n );\n })}\n </div>\n );\n};\nconst mapStateToProps = ({ toolStyle, annotation }: AppState) => ({\n toolStyle,\n config: annotation.toolInstance.config,\n});\nexport default connect(mapStateToProps)(ToolStyle);\n"],"names":["widthSvg","colorSvg","borderOpacitySvg","fillOpacitySvg"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import e from"react";import{Row as S,Collapse as m}from"antd/es";import s from"../../../assets/annotation/rectTool/icon_rectPattern.svg.js";import c from"../../../assets/annotation/polygonTool/icon_polygon_a.svg.js";import d from"../../../assets/annotation/pointTool/icon_point_a.svg.js";import p from"../../../assets/annotation/lineTool/icon_line_a.svg.js";import T from"../../../utils/StepUtils.js";import{useSelector as E}from"react-redux";import{EToolName as t}from"../../../data/enums/ToolType.js";import x from"./ImgAttributeInfo/index.js";import _ from"./SwitchAttributeList/index.js";import N from"./GeneralOperation/index.js";import j from"./AnnotationText/index.js";import b from"./ToolStyle/index.js";import $ from"./ClearIcon/index.js";import y,{expandIconFuc as I}from"./TagSidebar/index.js";import{prefix as A}from"../../../constant/index.js";import P from"./TextToolSidebar/index.js";import{useTranslation as h}from"react-i18next";const{Panel:u}=m,f=[{toolName:t.Rect,commonSvg:s,selectedSvg:s},{toolName:t.Polygon,commonSvg:c,selectedSvg:c},{toolName:t.Line,commonSvg:p,selectedSvg:p,pattern:t.Line},{toolName:t.Point,commonSvg:d,selectedSvg:d,pattern:"drawPoint"}],o=`${A}-sidebar`,L=()=>{const a=E(n=>T.getCurrentStepInfo(n.annotation.step,n.annotation.stepList)),l=a==null?void 0:a.tool,{t:i}=h();if(!l)return null;if([t.Rect,t.Point,t.Line,t.Rect,t.Polygon].includes(l)){const n=f==null?void 0:f.find(r=>(r==null?void 0:r.toolName)===l),g=r=>{const v=e.createElement(b,null);return e.createElement(u,{header:i("Style"),className:"panel",key:r},v)};return e.createElement("div",{className:`${o}`},e.createElement("div",{className:`${o}__level`},e.createElement(S,{className:`${o}__toolsOption`},n&&e.createElement("a",null,e.createElement("img",{className:`${o}__singleTool`,src:n==null?void 0:n.selectedSvg})))),e.createElement("div",{className:`${o}__horizontal`}),e.createElement(_,null),e.createElement(j,null),e.createElement("div",{className:`${o}__horizontal`}),e.createElement(m,{defaultActiveKey:["1","imgAttribute"],bordered:!1,expandIconPosition:"right",className:`${o}__content`,expandIcon:I},g("1"),e.createElement(u,{header:e.createElement("div",null,i("Adjust"),e.createElement($,null)),className:"panel",key:"imgAttribute"},e.createElement(x,null))),e.createElement(N,null))}return l===t.Tag?e.createElement("div",{className:`${o}`},e.createElement(y,null)):l===t.Text?e.createElement("div",{className:`${o}`},e.createElement(P,null)):null};export{L as default};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/views/MainView/sidebar/index.tsx"],"sourcesContent":["import React from 'react';\nimport { Row, Collapse } from 'antd/es';\nimport iconRectPatternSvg from '@/assets/annotation/rectTool/icon_rectPattern.svg';\nimport iconPolygonPatternASvg from '@/assets/annotation/polygonTool/icon_polygon_a.svg';\nimport pointASvg from '@/assets/annotation/pointTool/icon_point_a.svg';\nimport lineASvg from '@/assets/annotation/lineTool/icon_line_a.svg';\nimport { AppState } from '@/store';\nimport StepUtils from '@/utils/StepUtils';\nimport { useSelector } from 'react-redux';\nimport { EToolName } from '@/data/enums/ToolType';\nimport ImgAttributeInfo from './ImgAttributeInfo';\nimport SwitchAttributeList from './SwitchAttributeList';\nimport GeneralOperation from './GeneralOperation';\nimport AnnotationText from './AnnotationText';\nimport ToolStyle from './ToolStyle';\nimport ClearIcon from './ClearIcon';\nimport TagSidebar, { expandIconFuc } from './TagSidebar';\nimport { prefix } from '@/constant';\nimport TextToolSidebar from './TextToolSidebar';\nimport { useTranslation } from 'react-i18next';\n\nconst { Panel } = Collapse;\n\ninterface IProps {\n toolName?: EToolName;\n}\n\nconst toolList = [\n {\n toolName: EToolName.Rect,\n commonSvg: iconRectPatternSvg,\n selectedSvg: iconRectPatternSvg,\n },\n // 多边形工具\n {\n toolName: EToolName.Polygon,\n commonSvg: iconPolygonPatternASvg,\n selectedSvg: iconPolygonPatternASvg,\n },\n {\n toolName: EToolName.Line,\n commonSvg: lineASvg,\n selectedSvg: lineASvg,\n pattern: EToolName.Line,\n },\n {\n toolName: EToolName.Point,\n commonSvg: pointASvg,\n selectedSvg: pointASvg,\n pattern: 'drawPoint',\n },\n];\nconst sidebarCls = `${prefix}-sidebar`;\nconst Sidebar: React.FC<IProps> = () => {\n const stepInfo = useSelector((state: AppState) =>\n StepUtils.getCurrentStepInfo(state.annotation.step, state.annotation.stepList),\n );\n const toolName = stepInfo?.tool as EToolName;\n const { t } = useTranslation();\n\n if (!toolName) {\n return null;\n }\n\n if (\n [EToolName.Rect, EToolName.Point, EToolName.Line, EToolName.Rect, EToolName.Polygon].includes(\n toolName,\n )\n ) {\n const renderTool = toolList?.find((item) => item?.toolName === toolName);\n\n /**\n * 样式面板, 包含透明度、线框、颜色\n * @param key 虚拟dom的key\n */\n const renderStylePanel = (key: string) => {\n const ToolStyleComponent = <ToolStyle />;\n return (\n <Panel header={t('Style')} className='panel' key={key}>\n {ToolStyleComponent}\n </Panel>\n );\n };\n\n return (\n <div className={`${sidebarCls}`}>\n <div className={`${sidebarCls}__level`}>\n <Row className={`${sidebarCls}__toolsOption`}>\n {renderTool && (\n <a>\n <img className={`${sidebarCls}__singleTool`} src={renderTool?.selectedSvg} />\n </a>\n )}\n </Row>\n </div>\n <div className={`${sidebarCls}__horizontal`} />\n <SwitchAttributeList />\n <AnnotationText />\n <div className={`${sidebarCls}__horizontal`} />\n <Collapse\n defaultActiveKey={['1', 'imgAttribute']}\n bordered={false}\n expandIconPosition='right'\n className={`${sidebarCls}__content`}\n expandIcon={expandIconFuc}\n >\n {renderStylePanel('1')}\n <Panel\n header={\n <div>\n {t('Adjust')}\n\n <ClearIcon />\n </div>\n }\n className='panel'\n key='imgAttribute'\n >\n <ImgAttributeInfo />\n </Panel>\n </Collapse>\n\n <GeneralOperation />\n </div>\n );\n }\n\n if (toolName === EToolName.Tag) {\n return (\n <div className={`${sidebarCls}`}>\n <TagSidebar />\n </div>\n );\n }\n\n if (toolName === EToolName.Text) {\n return (\n <div className={`${sidebarCls}`}>\n <TextToolSidebar />\n </div>\n );\n }\n\n return null;\n};\n\nexport default Sidebar;\n"],"names":["iconRectPatternSvg","iconPolygonPatternASvg","lineASvg","pointASvg","ClearIcon"],"mappings":";;;;;;;;;;;;;;;;;;;;AAqBA,MAAM,CAAE,SAAU;AAMlB,MAAM,WAAW;AAAA,EACf;AAAA,IACE,UAAU,UAAU;AAAA,IACpB,WAAWA;AAAA,IACX,aAAaA;AAAA;AAAA,EAGf;AAAA,IACE,UAAU,UAAU;AAAA,IACpB,WAAWC;AAAA,IACX,aAAaA;AAAA;AAAA,EAEf;AAAA,IACE,UAAU,UAAU;AAAA,IACpB,WAAWC;AAAA,IACX,aAAaA;AAAA,IACb,SAAS,UAAU;AAAA;AAAA,EAErB;AAAA,IACE,UAAU,UAAU;AAAA,IACpB,WAAWC;AAAA,IACX,aAAaA;AAAA,IACb,SAAS;AAAA;AAAA;AAGb,MAAM,aAAa,GAAG;MAChB,UAA4B,MAAM;AACtC,QAAM,WAAW,YAAY,CAAC,UAC5B,UAAU,mBAAmB,MAAM,WAAW,MAAM,MAAM,WAAW;AAEvE,QAAM,WAAW,qCAAU;AAC3B,QAAM,CAAE,KAAM;AAEd,MAAI,CAAC,UAAU;AACb,WAAO;AAAA;AAGT,MACE,CAAC,UAAU,MAAM,UAAU,OAAO,UAAU,MAAM,UAAU,MAAM,UAAU,SAAS,SACnF,WAEF;AACA,UAAM,aAAa,qCAAU,KAAK,CAAC,SAAS,8BAAM,cAAa;AAM/D,UAAM,mBAAmB,CAAC,QAAgB;AACxC,YAAM,yDAAsB,WAAD;AAC3B,iDACG,OAAD;AAAA,QAAO,QAAQ,EAAE;AAAA,QAAU,WAAU;AAAA,QAAQ;AAAA,SAC1C;AAAA;AAKP,+CACG,OAAD;AAAA,MAAK,WAAW,GAAG;AAAA,2CAChB,OAAD;AAAA,MAAK,WAAW,GAAG;AAAA,2CAChB,KAAD;AAAA,MAAK,WAAW,GAAG;AAAA,OAChB,kDACE,KAAD,0CACG,OAAD;AAAA,MAAK,WAAW,GAAG;AAAA,MAA0B,KAAK,yCAAY;AAAA,+CAKrE,OAAD;AAAA,MAAK,WAAW,GAAG;AAAA,4CAClB,qBAAD,2CACC,gBAAD,2CACC,OAAD;AAAA,MAAK,WAAW,GAAG;AAAA,4CAClB,UAAD;AAAA,MACE,kBAAkB,CAAC,KAAK;AAAA,MACxB,UAAU;AAAA,MACV,oBAAmB;AAAA,MACnB,WAAW,GAAG;AAAA,MACd,YAAY;AAAA,OAEX,iBAAiB,0CACjB,OAAD;AAAA,MACE,4CACG,OAAD,MACG,EAAE,+CAEFC,WAAD;AAAA,MAGJ,WAAU;AAAA,MACV,KAAI;AAAA,2CAEH,kBAAD,6CAIH,kBAAD;AAAA;AAKN,MAAI,aAAa,UAAU,KAAK;AAC9B,+CACG,OAAD;AAAA,MAAK,WAAW,GAAG;AAAA,2CAChB,YAAD;AAAA;AAKN,MAAI,aAAa,UAAU,MAAM;AAC/B,+CACG,OAAD;AAAA,MAAK,WAAW,GAAG;AAAA,2CAChB,iBAAD;AAAA;AAKN,SAAO;AAAA;;;;"}
@@ -0,0 +1 @@
1
+ import n from"../../../../../../assets/annotation/toolHotKeyIcon/icon_cencel_kj.svg.js";import s from"../../../../../../assets/annotation/toolHotKeyIcon/icon_reform_kj.svg.js";import e from"../../../../../../assets/annotation/toolHotKeyIcon/icon_loupe_kj.svg.js";import i from"../../../../../../assets/annotation/toolHotKeyIcon/icon_mouse_middle_kj.svg.js";import a from"../../../../../../assets/annotation/toolHotKeyIcon/icon_fullView_kj.svg.js";import c from"../../../../../../assets/annotation/toolHotKeyIcon/icon_reload_kj.svg.js";import r from"../../../../../../assets/annotation/toolHotKeyIcon/setValid.svg.js";import m from"../../../../../../assets/annotation/toolHotKeyIcon/icon_last_kj.svg.js";import l from"../../../../../../assets/annotation/toolHotKeyIcon/icon_next_kj.svg.js";import o from"../../../../../../assets/annotation/toolHotKeyIcon/icon_move_kj.svg.js";import g from"../../../../../../assets/annotation/toolHotKeyIcon/icon_mouse_right_kj.svg.js";import t from"../../../../../../assets/annotation/toolHotKeyIcon/icon_mouse_left_kj.svg.js";import _ from"../../../../../../assets/annotation/toolHotKeyIcon/icon_tab_kj.svg.js";import f from"../../../../../../assets/annotation/toolHotKeyIcon/icon_alttab_kj.svg.js";import j from"../../../../../../assets/annotation/toolHotKeyIcon/icon_save_kj.svg.js";import h from"../../../../../../assets/annotation/toolHotKeyIcon/icon_lineSpecial_kj.svg.js";import v from"../../../../../../assets/annotation/toolHotKeyIcon/icon_noDisplay.svg.js";const p={name:"Undo",icon:n,shortCut:["Ctrl","Z"]},u={name:"Redo",icon:s,shortCut:["Ctrl","Shift","Z"]},C={name:"Scale",icon:e,shortCut:[i]},I={name:"Fullscreen",icon:a,shortCut:["F11"]},d={name:"Rotate",icon:c,shortCut:["R"],noticeInfo:"ToOriginalStep"},k={name:"ToggleEffectiveness",icon:r,shortCut:["Y"]},y={name:"Previous",icon:m,shortCut:["A"]},H={name:"Next",icon:l,shortCut:["D"]},K={name:"Drag",icon:o,shortCut:[g],noticeInfo:"Press"},S={name:"Drag",icon:o,shortCut:["Space",t]},$={name:"ToggleSelected",icon:_,shortCut:["Tab"]},b={name:"ToggleSelectedReverse",icon:f,shortCut:["Shift","Tab"]},T={name:"HideGraphics",icon:v,noticeInfo:"",shortCut:["Z"]},R={name:"ToggleLineParticularity",icon:h,noticeInfo:"ToSide",shortCut:["Shift",t]},D={name:"Save",icon:j,shortCut:["Ctrl","S"]};export{y as backward,R as changeSpecialLine,S as dargWithLeftClick,K as dargWithRightClick,H as forward,I as fullScreen,T as hidden,u as restore,p as revoke,d as rotate,D as saveResult,C as scale,k as setValid,$ as tabChangeSelected,b as tabReverseChangeSelected};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../../../src/views/MainView/toolFooter/FooterTips/ToolHotKey/common/index.tsx"],"sourcesContent":["import RevokeSvg from '@/assets/annotation/toolHotKeyIcon/icon_cencel_kj.svg';\nimport RestoreSvg from '@/assets/annotation/toolHotKeyIcon/icon_reform_kj.svg';\nimport ScaleSvg from '@/assets/annotation/toolHotKeyIcon/icon_loupe_kj.svg';\nimport ScaleShortCutSvg from '@/assets/annotation/toolHotKeyIcon/icon_mouse_middle_kj.svg';\nimport FullScreenSvg from '@/assets/annotation/toolHotKeyIcon/icon_fullView_kj.svg';\nimport RotateSvg from '@/assets/annotation/toolHotKeyIcon/icon_reload_kj.svg';\nimport SetValidSvg from '@/assets/annotation/toolHotKeyIcon/setValid.svg';\nimport BackwardSvg from '@/assets/annotation/toolHotKeyIcon/icon_last_kj.svg';\nimport ForwardSvg from '@/assets/annotation/toolHotKeyIcon/icon_next_kj.svg';\nimport DragWithRightClickSvg from '@/assets/annotation/toolHotKeyIcon/icon_move_kj.svg';\nimport DragWithRightClickShortCutSvg from '@/assets/annotation/toolHotKeyIcon/icon_mouse_right_kj.svg';\nimport DragWithLeftClickSvg from '@/assets/annotation/toolHotKeyIcon/icon_mouse_left_kj.svg';\nimport CopyBackwardResultSvg from '@/assets/annotation/toolHotKeyIcon/icon_copyBackwardResult.svg';\nimport TabChangeSelectedSvg from '@/assets/annotation/toolHotKeyIcon/icon_tab_kj.svg';\nimport TabReverseChangeSelectedSVG from '@/assets/annotation/toolHotKeyIcon/icon_alttab_kj.svg';\nimport IconSaveKj from '@/assets/annotation/toolHotKeyIcon/icon_save_kj.svg';\nimport IconLineSpecialKj from '@/assets/annotation/toolHotKeyIcon/icon_lineSpecial_kj.svg';\nimport IconNoDisplay from '@/assets/annotation/toolHotKeyIcon/icon_noDisplay.svg';\nimport IconEyeLockKj from '@/assets/annotation/toolHotKeyIcon/icon_eyeLock_kj.svg';\n\nexport const revoke = {\n name: 'Undo',\n icon: RevokeSvg,\n shortCut: ['Ctrl', 'Z'],\n};\n\nexport const restore = {\n name: 'Redo',\n icon: RestoreSvg,\n shortCut: ['Ctrl', 'Shift', 'Z'],\n};\n\nexport const scale = {\n name: 'Scale',\n icon: ScaleSvg,\n shortCut: [ScaleShortCutSvg],\n};\n\nexport const fullScreen = {\n name: 'Fullscreen',\n icon: FullScreenSvg,\n shortCut: ['F11'],\n};\n\nexport const rotate = {\n name: 'Rotate',\n icon: RotateSvg,\n shortCut: ['R'],\n noticeInfo: 'ToOriginalStep',\n};\n\nexport const setValid = {\n name: 'ToggleEffectiveness',\n icon: SetValidSvg,\n shortCut: ['Y'],\n};\n\nexport const backward = {\n name: 'Previous',\n icon: BackwardSvg,\n shortCut: ['A'],\n};\n\nexport const forward = {\n name: 'Next',\n icon: ForwardSvg,\n shortCut: ['D'],\n};\n\nexport const backwardPage = {\n name: 'PreviousFolder',\n icon: BackwardSvg,\n shortCut: ['Shift', 'A'],\n};\n\nexport const forwardPage = {\n name: 'NextFolder',\n icon: ForwardSvg,\n shortCut: ['Shift', 'D'],\n};\n\nexport const dargWithRightClick = {\n name: 'Drag',\n icon: DragWithRightClickSvg,\n shortCut: [DragWithRightClickShortCutSvg],\n noticeInfo: 'Press',\n};\n\nexport const dargWithLeftClick = {\n name: 'Drag',\n icon: DragWithRightClickSvg,\n shortCut: ['Space', DragWithLeftClickSvg],\n};\n\nexport const forwardWithEnter = {\n name: 'Next',\n icon: ForwardSvg,\n shortCut: ['Ctrl', 'Enter'],\n};\n\nexport const copyBackwardResult = {\n name: 'CopyThePrevious',\n icon: CopyBackwardResultSvg,\n shortCut: ['ALT', 'C'],\n};\n\nexport const attributeLock = {\n name: 'SpecifiedAttributesOnly',\n icon: IconEyeLockKj,\n shortCut: ['Shift', 'Number'],\n};\n\nexport const attributeClickLock = {\n name: 'SpecifiedAttributesOnly',\n icon: IconEyeLockKj,\n shortCut: ['Shift', DragWithLeftClickSvg],\n};\n\nexport const tabChangeSelected = {\n name: 'ToggleSelected',\n icon: TabChangeSelectedSvg,\n shortCut: ['Tab'],\n};\n\nexport const tabReverseChangeSelected = {\n name: 'ToggleSelectedReverse',\n icon: TabReverseChangeSelectedSVG,\n shortCut: ['Shift', 'Tab'],\n};\n\nexport const hidden = {\n name: 'HideGraphics',\n icon: IconNoDisplay,\n noticeInfo: '',\n shortCut: ['Z'],\n};\n\nexport const changeSpecialLine = {\n name: 'ToggleLineParticularity',\n icon: IconLineSpecialKj,\n noticeInfo: 'ToSide',\n shortCut: ['Shift', DragWithLeftClickSvg],\n};\n\nexport const saveResult = {\n name: 'Save',\n icon: IconSaveKj,\n shortCut: ['Ctrl', 'S'],\n};\n"],"names":["RevokeSvg","RestoreSvg","ScaleSvg","ScaleShortCutSvg","FullScreenSvg","RotateSvg","SetValidSvg","BackwardSvg","ForwardSvg","DragWithRightClickSvg","DragWithRightClickShortCutSvg","DragWithLeftClickSvg","TabChangeSelectedSvg","TabReverseChangeSelectedSVG","IconNoDisplay","IconLineSpecialKj","IconSaveKj"],"mappings":";;;;;;;;;;;;;;;;;;MAoBa,SAAS;AAAA,EACpB,MAAM;AAAA,EACN,MAAMA;AAAA,EACN,UAAU,CAAC,QAAQ;AAAA;MAGR,UAAU;AAAA,EACrB,MAAM;AAAA,EACN,MAAMC;AAAA,EACN,UAAU,CAAC,QAAQ,SAAS;AAAA;MAGjB,QAAQ;AAAA,EACnB,MAAM;AAAA,EACN,MAAMC;AAAA,EACN,UAAU,CAACC;AAAA;MAGA,aAAa;AAAA,EACxB,MAAM;AAAA,EACN,MAAMC;AAAA,EACN,UAAU,CAAC;AAAA;MAGA,SAAS;AAAA,EACpB,MAAM;AAAA,EACN,MAAMC;AAAA,EACN,UAAU,CAAC;AAAA,EACX,YAAY;AAAA;MAGD,WAAW;AAAA,EACtB,MAAM;AAAA,EACN,MAAMC;AAAA,EACN,UAAU,CAAC;AAAA;MAGA,WAAW;AAAA,EACtB,MAAM;AAAA,EACN,MAAMC;AAAA,EACN,UAAU,CAAC;AAAA;MAGA,UAAU;AAAA,EACrB,MAAM;AAAA,EACN,MAAMC;AAAA,EACN,UAAU,CAAC;AAAA;MAeA,qBAAqB;AAAA,EAChC,MAAM;AAAA,EACN,MAAMC;AAAA,EACN,UAAU,CAACC;AAAA,EACX,YAAY;AAAA;MAGD,oBAAoB;AAAA,EAC/B,MAAM;AAAA,EACN,MAAMD;AAAA,EACN,UAAU,CAAC,SAASE;AAAA;MA2BT,oBAAoB;AAAA,EAC/B,MAAM;AAAA,EACN,MAAMC;AAAA,EACN,UAAU,CAAC;AAAA;MAGA,2BAA2B;AAAA,EACtC,MAAM;AAAA,EACN,MAAMC;AAAA,EACN,UAAU,CAAC,SAAS;AAAA;MAGT,SAAS;AAAA,EACpB,MAAM;AAAA,EACN,MAAMC;AAAA,EACN,YAAY;AAAA,EACZ,UAAU,CAAC;AAAA;MAGA,oBAAoB;AAAA,EAC/B,MAAM;AAAA,EACN,MAAMC;AAAA,EACN,YAAY;AAAA,EACZ,UAAU,CAAC,SAASJ;AAAA;MAGT,aAAa;AAAA,EACxB,MAAM;AAAA,EACN,MAAMK;AAAA,EACN,UAAU,CAAC,QAAQ;AAAA;;;;"}
@@ -0,0 +1 @@
1
+ import{Popover as S}from"antd/es";import e,{useState as b}from"react";import{useSelector as j}from"react-redux";import k from"../../../../../assets/annotation/toolHotKeyIcon/icon_kj1.svg.js";import I from"../../../../../assets/annotation/toolHotKeyIcon/icon_kj_h.svg.js";import{EToolName as r}from"../../../../../data/enums/ToolType.js";import R from"./rectToolShortCutTable/index.js";import _ from"./point/index.js";import N from"./polygon/index.js";import w from"./line/index.js";import H from"./tag/index.js";import M from"./text/index.js";import L from"../../../../../utils/StepUtils.js";import{footerCls as K}from"../../index.js";import{useTranslation as P}from"react-i18next";const y={[r.Rect]:R,[r.Tag]:H,[r.Point]:_,[r.Polygon]:N,[r.Line]:w,[r.Text]:M},U=({isSingleImg:W,style:u})=>{var c;const[g,i]=b(!1),{t:p}=P(),s=j(t=>{var o,m;return L.getCurrentStepInfo((o=t==null?void 0:t.annotation)==null?void 0:o.step,(m=t.annotation)==null?void 0:m.stepList)}),h=t=>typeof t=="string"?e.createElement("img",{width:16,height:16,src:t,style:f}):t,d={width:320,display:"flex",justifyContent:"space-between",margin:"23px 21px"},f={marginRight:10},a={display:"block",padding:"0 3px",minWidth:"20px",marginRight:"3px",border:"1px solid rgba(204,204,204,1)",verticalAlign:"middle",fontSize:"12px",textAlign:"center"},x=(t,o)=>e.createElement("div",{style:d,key:o},e.createElement("span",{style:{display:"flex",alignItems:"center"}},h(t.icon),p(t.name)),e.createElement("span",{style:{display:"flex",alignItems:"center"}},t.noticeInfo&&e.createElement("span",{style:{marginRight:"5px",color:"#CCCCCC"}},p(t.noticeInfo)),E(t.shortCut,t.shortCutUseHtml,t.linkSymbol))),E=(t,o=!1,m)=>{const T=t.map((n,l)=>o?e.createElement("span",{key:l,style:{display:"flex"}},e.createElement("span",{style:a,dangerouslySetInnerHTML:{__html:n}})):l<t.length-1?typeof n=="number"?e.createElement("span",{key:l,style:{display:"flex"}},e.createElement("span",{style:a},n),e.createElement("span",{style:{marginRight:"3px"}},"~")):(n==null?void 0:n.startsWith("data"))?e.createElement("span",{key:l,style:{display:"flex"}},e.createElement("span",{className:"shortCutButton",style:{marginRight:"3px"}},e.createElement("img",{width:16,height:23,src:n})),e.createElement("span",{style:{marginRight:"3px"}},"+")):e.createElement("span",{key:l,style:{display:"flex"}},e.createElement("span",{style:a},n),e.createElement("span",{style:{marginRight:"3px"}},m||"+")):typeof n=="number"?e.createElement("span",{key:l,style:{display:"flex"}},e.createElement("span",{style:a},n)):(n==null?void 0:n.startsWith("data"))?e.createElement("span",{className:"shortCutButton",key:l,style:{marginRight:"3px"}},e.createElement("img",{width:16,height:23,src:n})):e.createElement("span",{style:a,key:l},n));return e.createElement("div",{style:{display:"flex",justifyContent:"space-around",alignItems:"center"}},T)},v=e.createElement("div",{className:`${K}__hotkey-content`},s&&((c=y[s==null?void 0:s.tool])==null?void 0:c.map((t,o)=>x(t,o)))),C=u||{width:600};return s&&!y[s==null?void 0:s.tool]?null:e.createElement(S,{placement:"topLeft",content:v,onMouseMove:()=>i(!0),onMouseLeave:()=>{i(!1)},overlayClassName:"tool-hotkeys-popover"},e.createElement("div",{className:"shortCutTitle",onMouseMove:()=>i(!0),onMouseLeave:()=>i(!1),style:C},e.createElement("a",{className:"svg"},e.createElement("img",{src:g?I:k,width:15,height:13,style:{marginRight:"5px"}}),p("Hotkeys"))))};export{U as default};