@labelbee/lb-components 1.10.0-alpha.0 → 1.10.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/dist/App.js +1 -1
  2. package/dist/components/pointCloudView/PointCloud3DView.js +1 -1
  3. package/dist/components/pointCloudView/PointCloudBackView.js +1 -1
  4. package/dist/components/pointCloudView/PointCloudContext.js +1 -1
  5. package/dist/components/pointCloudView/PointCloudListener.js +1 -1
  6. package/dist/components/pointCloudView/PointCloudSideView.js +1 -1
  7. package/dist/components/pointCloudView/PointCloudTopView.js +1 -1
  8. package/dist/components/pointCloudView/hooks/useAttribute.js +1 -1
  9. package/dist/components/pointCloudView/hooks/useHistory.js +1 -1
  10. package/dist/components/pointCloudView/hooks/useLine.js +1 -0
  11. package/dist/components/pointCloudView/hooks/usePointCloudViews.js +1 -1
  12. package/dist/components/pointCloudView/hooks/useSphere.js +1 -0
  13. package/dist/components/pointCloudView/hooks/useStatus.js +1 -1
  14. package/dist/components/pointCloudView/hooks/useZoom.js +1 -1
  15. package/dist/types/components/pointCloudView/PointCloudContext.d.ts +8 -2
  16. package/dist/types/components/pointCloudView/PointCloudLayout.d.ts +1 -1
  17. package/dist/types/components/pointCloudView/hooks/useHistory.d.ts +6 -2
  18. package/dist/types/components/pointCloudView/hooks/useLine.d.ts +12 -0
  19. package/dist/types/components/pointCloudView/hooks/usePointCloudViews.d.ts +44 -2
  20. package/dist/types/components/pointCloudView/hooks/useSphere.d.ts +6 -0
  21. package/dist/types/components/pointCloudView/hooks/useZoom.d.ts +4 -0
  22. package/dist/types/views/MainView/toolFooter/FooterTips/ToolHotKey/cuboid/index.d.ts +6 -0
  23. package/dist/views/MainView/toolFooter/AnnotatedAttributes/index.js +1 -1
  24. package/dist/views/MainView/toolFooter/FooterTips/ToolHotKey/cuboid/index.js +1 -0
  25. package/dist/views/MainView/toolFooter/FooterTips/ToolHotKey/index.js +1 -1
  26. package/dist/views/MainView/toolHeader/headerOption/index.js +1 -1
  27. package/es/App.js +1 -1
  28. package/es/components/pointCloudView/PointCloud3DView.js +1 -1
  29. package/es/components/pointCloudView/PointCloudBackView.js +1 -1
  30. package/es/components/pointCloudView/PointCloudContext.js +1 -1
  31. package/es/components/pointCloudView/PointCloudListener.js +1 -1
  32. package/es/components/pointCloudView/PointCloudSideView.js +1 -1
  33. package/es/components/pointCloudView/PointCloudTopView.js +1 -1
  34. package/es/components/pointCloudView/hooks/useAttribute.js +1 -1
  35. package/es/components/pointCloudView/hooks/useHistory.js +1 -1
  36. package/es/components/pointCloudView/hooks/useLine.js +1 -0
  37. package/es/components/pointCloudView/hooks/usePointCloudViews.js +1 -1
  38. package/es/components/pointCloudView/hooks/useSphere.js +1 -0
  39. package/es/components/pointCloudView/hooks/useStatus.js +1 -1
  40. package/es/components/pointCloudView/hooks/useZoom.js +1 -1
  41. package/es/views/MainView/toolFooter/AnnotatedAttributes/index.js +1 -1
  42. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/cuboid/index.js +1 -0
  43. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/index.js +1 -1
  44. package/es/views/MainView/toolHeader/headerOption/index.js +1 -1
  45. package/package.json +4 -4
  46. package/es/App.js.map +0 -1
  47. package/es/assets/annotation/common/icon_adapt.svg.js.map +0 -1
  48. package/es/assets/annotation/common/icon_adapt_black.svg.js.map +0 -1
  49. package/es/assets/annotation/common/icon_back.svg.js.map +0 -1
  50. package/es/assets/annotation/common/icon_backA.svg.js.map +0 -1
  51. package/es/assets/annotation/common/icon_clear.svg.js.map +0 -1
  52. package/es/assets/annotation/common/icon_clearSmall.svg.js.map +0 -1
  53. package/es/assets/annotation/common/icon_clearSmall_a.svg.js.map +0 -1
  54. package/es/assets/annotation/common/icon_clear_a.svg.js.map +0 -1
  55. package/es/assets/annotation/common/icon_invalid.svg.js.map +0 -1
  56. package/es/assets/annotation/common/icon_invalid_a.svg.js.map +0 -1
  57. package/es/assets/annotation/common/icon_next.svg.js.map +0 -1
  58. package/es/assets/annotation/common/icon_nextA.svg.js.map +0 -1
  59. package/es/assets/annotation/common/icon_r.svg.js.map +0 -1
  60. package/es/assets/annotation/common/icon_rA.svg.js.map +0 -1
  61. package/es/assets/annotation/common/icon_save.svg.js.map +0 -1
  62. package/es/assets/annotation/common/icon_saveA.svg.js.map +0 -1
  63. package/es/assets/annotation/image/brightness.svg.js.map +0 -1
  64. package/es/assets/annotation/image/contrast.svg.js.map +0 -1
  65. package/es/assets/annotation/image/icon_yuantu.svg.js.map +0 -1
  66. package/es/assets/annotation/image/saturation.svg.js.map +0 -1
  67. package/es/assets/annotation/lineTool/icon_line.svg.js.map +0 -1
  68. package/es/assets/annotation/lineTool/icon_line_a.svg.js.map +0 -1
  69. package/es/assets/annotation/pointCloudTool/changePointCloudValid.svg.js.map +0 -1
  70. package/es/assets/annotation/pointCloudTool/copy.svg.js.map +0 -1
  71. package/es/assets/annotation/pointCloudTool/nextBox.svg.js.map +0 -1
  72. package/es/assets/annotation/pointCloudTool/nodata.svg.js.map +0 -1
  73. package/es/assets/annotation/pointCloudTool/patse.svg.js.map +0 -1
  74. package/es/assets/annotation/pointCloudTool/prevBox.svg.js.map +0 -1
  75. package/es/assets/annotation/pointCloudTool/rotate180_black.svg.js.map +0 -1
  76. package/es/assets/annotation/pointCloudTool/selectAll.svg.js.map +0 -1
  77. package/es/assets/annotation/pointCloudTool/selectMultiple.svg.js.map +0 -1
  78. package/es/assets/annotation/pointCloudTool/unitAttribute.svg.js.map +0 -1
  79. package/es/assets/annotation/pointCloudTool/unitAttributeForbid.svg.js.map +0 -1
  80. package/es/assets/annotation/pointCloudTool/unitAttributeHover.svg.js.map +0 -1
  81. package/es/assets/annotation/pointTool/icon_point.svg.js.map +0 -1
  82. package/es/assets/annotation/pointTool/icon_point_a.svg.js.map +0 -1
  83. package/es/assets/annotation/polygonTool/icon_polygon.svg.js.map +0 -1
  84. package/es/assets/annotation/polygonTool/icon_polygon_a.svg.js.map +0 -1
  85. package/es/assets/annotation/rectTool/icon_rect.svg.js.map +0 -1
  86. package/es/assets/annotation/rectTool/icon_rectPattern.svg.js +0 -4
  87. package/es/assets/annotation/rectTool/icon_rectPattern.svg.js.map +0 -1
  88. package/es/assets/annotation/rectTool/icon_rect_a.svg.js.map +0 -1
  89. package/es/assets/annotation/toolHotKeyIcon/icon_alttab_kj.svg.js.map +0 -1
  90. package/es/assets/annotation/toolHotKeyIcon/icon_back_kj.svg.js.map +0 -1
  91. package/es/assets/annotation/toolHotKeyIcon/icon_cencel_kj.svg.js.map +0 -1
  92. package/es/assets/annotation/toolHotKeyIcon/icon_copyBackwardResult.svg.js +0 -4
  93. package/es/assets/annotation/toolHotKeyIcon/icon_copyBackwardResult.svg.js.map +0 -1
  94. package/es/assets/annotation/toolHotKeyIcon/icon_del_kj.svg.js.map +0 -1
  95. package/es/assets/annotation/toolHotKeyIcon/icon_forward_kj.svg.js.map +0 -1
  96. package/es/assets/annotation/toolHotKeyIcon/icon_frameActive_kj.svg.js.map +0 -1
  97. package/es/assets/annotation/toolHotKeyIcon/icon_frameChange_kj.svg.js.map +0 -1
  98. package/es/assets/annotation/toolHotKeyIcon/icon_frameNull_kj.svg.js.map +0 -1
  99. package/es/assets/annotation/toolHotKeyIcon/icon_frame_kj.svg.js.map +0 -1
  100. package/es/assets/annotation/toolHotKeyIcon/icon_fullView_kj.svg.js.map +0 -1
  101. package/es/assets/annotation/toolHotKeyIcon/icon_kj1.svg.js.map +0 -1
  102. package/es/assets/annotation/toolHotKeyIcon/icon_kj_h.svg.js.map +0 -1
  103. package/es/assets/annotation/toolHotKeyIcon/icon_last_kj.svg.js.map +0 -1
  104. package/es/assets/annotation/toolHotKeyIcon/icon_lineActive_kj.svg.js.map +0 -1
  105. package/es/assets/annotation/toolHotKeyIcon/icon_lineChange_kj.svg.js.map +0 -1
  106. package/es/assets/annotation/toolHotKeyIcon/icon_lineCont_kj.svg.js.map +0 -1
  107. package/es/assets/annotation/toolHotKeyIcon/icon_lineDel_kj.svg.js.map +0 -1
  108. package/es/assets/annotation/toolHotKeyIcon/icon_lineInsert_kj.svg.js.map +0 -1
  109. package/es/assets/annotation/toolHotKeyIcon/icon_lineNull_kj.svg.js.map +0 -1
  110. package/es/assets/annotation/toolHotKeyIcon/icon_lineSpecial_kj.svg.js.map +0 -1
  111. package/es/assets/annotation/toolHotKeyIcon/icon_line_kj.svg.js.map +0 -1
  112. package/es/assets/annotation/toolHotKeyIcon/icon_loupe_kj.svg.js.map +0 -1
  113. package/es/assets/annotation/toolHotKeyIcon/icon_mouse_left_kj.svg.js.map +0 -1
  114. package/es/assets/annotation/toolHotKeyIcon/icon_mouse_middle_kj.svg.js.map +0 -1
  115. package/es/assets/annotation/toolHotKeyIcon/icon_mouse_right_kj.svg.js.map +0 -1
  116. package/es/assets/annotation/toolHotKeyIcon/icon_move_kj.svg.js.map +0 -1
  117. package/es/assets/annotation/toolHotKeyIcon/icon_next_kj.svg.js.map +0 -1
  118. package/es/assets/annotation/toolHotKeyIcon/icon_noDisplay.svg.js.map +0 -1
  119. package/es/assets/annotation/toolHotKeyIcon/icon_playPause.svg.js.map +0 -1
  120. package/es/assets/annotation/toolHotKeyIcon/icon_pointActive_kj.svg.js.map +0 -1
  121. package/es/assets/annotation/toolHotKeyIcon/icon_pointNull_kj.svg.js.map +0 -1
  122. package/es/assets/annotation/toolHotKeyIcon/icon_point_kj.svg.js.map +0 -1
  123. package/es/assets/annotation/toolHotKeyIcon/icon_polygonActive_kj.svg.js.map +0 -1
  124. package/es/assets/annotation/toolHotKeyIcon/icon_polygonChange_kj.svg.js.map +0 -1
  125. package/es/assets/annotation/toolHotKeyIcon/icon_polygonDel_kj.svg.js.map +0 -1
  126. package/es/assets/annotation/toolHotKeyIcon/icon_polygonInsert_kj.svg.js.map +0 -1
  127. package/es/assets/annotation/toolHotKeyIcon/icon_polygonMerge_kj.svg.js.map +0 -1
  128. package/es/assets/annotation/toolHotKeyIcon/icon_polygonNull_kj.svg.js.map +0 -1
  129. package/es/assets/annotation/toolHotKeyIcon/icon_reform_kj.svg.js.map +0 -1
  130. package/es/assets/annotation/toolHotKeyIcon/icon_reload_kj.svg.js.map +0 -1
  131. package/es/assets/annotation/toolHotKeyIcon/icon_save_kj.svg.js.map +0 -1
  132. package/es/assets/annotation/toolHotKeyIcon/icon_segment.svg.js.map +0 -1
  133. package/es/assets/annotation/toolHotKeyIcon/icon_speed_kj.svg.js.map +0 -1
  134. package/es/assets/annotation/toolHotKeyIcon/icon_straightLine_kj.svg.js.map +0 -1
  135. package/es/assets/annotation/toolHotKeyIcon/icon_tab_kj.svg.js.map +0 -1
  136. package/es/assets/annotation/toolHotKeyIcon/icon_tag_kj.svg.js.map +0 -1
  137. package/es/assets/annotation/toolHotKeyIcon/icon_unGrip_kj.svg.js.map +0 -1
  138. package/es/assets/annotation/toolHotKeyIcon/setValid.svg.js.map +0 -1
  139. package/es/assets/annotation/video/icon_keyboard_h.svg.js.map +0 -1
  140. package/es/assets/attributeIcon/eraser.svg.js.map +0 -1
  141. package/es/assets/attributeIcon/eraser_a.svg.js.map +0 -1
  142. package/es/assets/attributeIcon/pen.svg.js.map +0 -1
  143. package/es/assets/attributeIcon/pen_a.svg.js.map +0 -1
  144. package/es/assets/attributeIcon/zoomUp.svg.js.map +0 -1
  145. package/es/assets/cssIcon/annotation/icon_clearSmall.svg +0 -10
  146. package/es/assets/cssIcon/annotation/icon_clearSmall_a.svg +0 -10
  147. package/es/assets/cssIcon/slide_btn.svg +0 -23
  148. package/es/assets/predictTracking/icon.svg.js.map +0 -1
  149. package/es/assets/toolStyle/icon_border.svg.js.map +0 -1
  150. package/es/assets/toolStyle/icon_borderColor.svg.js.map +0 -1
  151. package/es/assets/toolStyle/icon_opacityFill.svg.js.map +0 -1
  152. package/es/assets/toolStyle/icon_opacityStroke.svg.js.map +0 -1
  153. package/es/components/AnnotationView/index.js.map +0 -1
  154. package/es/components/AnnotationView/pointCloudAnnotationView.js.map +0 -1
  155. package/es/components/ImageError/index.js +0 -53
  156. package/es/components/ImageError/index.js.map +0 -1
  157. package/es/components/annotationStepPopover/index.js.map +0 -1
  158. package/es/components/attributeList/index.js.map +0 -1
  159. package/es/components/checkboxList/index.js.map +0 -1
  160. package/es/components/colorTag/index.js.map +0 -1
  161. package/es/components/customAntd/IconWithText/index.js.map +0 -1
  162. package/es/components/customResizeHook/index.js.map +0 -1
  163. package/es/components/fileException/FileError.js.map +0 -1
  164. package/es/components/fileException/FileInvalid.js.map +0 -1
  165. package/es/components/fileException/index.js.map +0 -1
  166. package/es/components/pointCloudView/PointCloud2DView.js.map +0 -1
  167. package/es/components/pointCloudView/PointCloud3DView.js.map +0 -1
  168. package/es/components/pointCloudView/PointCloudBackView.js.map +0 -1
  169. package/es/components/pointCloudView/PointCloudContext.js.map +0 -1
  170. package/es/components/pointCloudView/PointCloudInfos.js.map +0 -1
  171. package/es/components/pointCloudView/PointCloudLayout.js.map +0 -1
  172. package/es/components/pointCloudView/PointCloudListener.js.map +0 -1
  173. package/es/components/pointCloudView/PointCloudSideView.js.map +0 -1
  174. package/es/components/pointCloudView/PointCloudTopView.js.map +0 -1
  175. package/es/components/pointCloudView/components/EmptyPage/index.js.map +0 -1
  176. package/es/components/pointCloudView/components/UnifiedParamsModal/index.js +0 -228
  177. package/es/components/pointCloudView/components/UnifiedParamsModal/index.js.map +0 -1
  178. package/es/components/pointCloudView/components/UnifyParamsModal/index.js.map +0 -1
  179. package/es/components/pointCloudView/data.js +0 -4
  180. package/es/components/pointCloudView/data.js.map +0 -1
  181. package/es/components/pointCloudView/hooks/useAttribute.js.map +0 -1
  182. package/es/components/pointCloudView/hooks/useBoxes.js.map +0 -1
  183. package/es/components/pointCloudView/hooks/useConfig.js.map +0 -1
  184. package/es/components/pointCloudView/hooks/useHistory.js.map +0 -1
  185. package/es/components/pointCloudView/hooks/usePointCloudViews.js.map +0 -1
  186. package/es/components/pointCloudView/hooks/usePolygon.js.map +0 -1
  187. package/es/components/pointCloudView/hooks/useRotate.js.map +0 -1
  188. package/es/components/pointCloudView/hooks/useSingleBox.js.map +0 -1
  189. package/es/components/pointCloudView/hooks/useStatus.js.map +0 -1
  190. package/es/components/pointCloudView/hooks/useZoom.js.map +0 -1
  191. package/es/components/pointCloudView/index.js.map +0 -1
  192. package/es/components/predictTracking/index.js.map +0 -1
  193. package/es/components/predictTracking/predictTrackingIcon/index.js.map +0 -1
  194. package/es/components/predictTracking/previewResult/index.js.map +0 -1
  195. package/es/components/predictTracking/previewResult/util.js.map +0 -1
  196. package/es/components/videoAnnotate/index.js.map +0 -1
  197. package/es/components/videoPlayer/TagToolInstanceAdaptor.js.map +0 -1
  198. package/es/components/videoPlayer/TagToolInstanceAdaptorI18nProvider.js.map +0 -1
  199. package/es/components/videoPlayer/VideoTagLayer.js.map +0 -1
  200. package/es/components/videoPlayer/components/controller/index.js.map +0 -1
  201. package/es/components/videoPlayer/index.js.map +0 -1
  202. package/es/components/videoPlayer/utils.js.map +0 -1
  203. package/es/configureStore.js.map +0 -1
  204. package/es/constant/index.js.map +0 -1
  205. package/es/constant/styleString.js.map +0 -1
  206. package/es/data/Style.js.map +0 -1
  207. package/es/data/enums/AnnotationSize.js.map +0 -1
  208. package/es/data/enums/ToolType.js.map +0 -1
  209. package/es/hooks/annotation.js.map +0 -1
  210. package/es/hooks/useConfig.js +0 -18
  211. package/es/hooks/useConfig.js.map +0 -1
  212. package/es/hooks/useRafState.js.map +0 -1
  213. package/es/hooks/useRefCache.js.map +0 -1
  214. package/es/hooks/useSafeSate.js.map +0 -1
  215. package/es/hooks/useSize.js.map +0 -1
  216. package/es/hooks/useUnmountedRef.js.map +0 -1
  217. package/es/index.js.map +0 -1
  218. package/es/store/Actions.js.map +0 -1
  219. package/es/store/annotation/actionCreators.js.map +0 -1
  220. package/es/store/annotation/map.js.map +0 -1
  221. package/es/store/annotation/reducer.js.map +0 -1
  222. package/es/store/annotation/selectors.js.map +0 -1
  223. package/es/store/ctx.js.map +0 -1
  224. package/es/store/imgAttribute/actionCreators.js.map +0 -1
  225. package/es/store/imgAttribute/reducer.js.map +0 -1
  226. package/es/store/index.js.map +0 -1
  227. package/es/store/toolStyle/actionCreators.js.map +0 -1
  228. package/es/store/toolStyle/reducer.js.map +0 -1
  229. package/es/utils/AnnotationDataUtils.js.map +0 -1
  230. package/es/utils/ConfigUtils.js.map +0 -1
  231. package/es/utils/PageOperator.js.map +0 -1
  232. package/es/utils/StepUtils.js.map +0 -1
  233. package/es/utils/TextUtils.js.map +0 -1
  234. package/es/utils/ToolStyleUtils.js.map +0 -1
  235. package/es/utils/ToolUtils.js.map +0 -1
  236. package/es/utils/data.js.map +0 -1
  237. package/es/utils/dom.js.map +0 -1
  238. package/es/utils/index.js.map +0 -1
  239. package/es/views/MainView/annotationOperation/index.js.map +0 -1
  240. package/es/views/MainView/annotationTips/index.js.map +0 -1
  241. package/es/views/MainView/index.js.map +0 -1
  242. package/es/views/MainView/sidebar/AnnotationText/index.js.map +0 -1
  243. package/es/views/MainView/sidebar/ClearIcon/index.js.map +0 -1
  244. package/es/views/MainView/sidebar/GeneralOperation/ActionsConfirm.js.map +0 -1
  245. package/es/views/MainView/sidebar/GeneralOperation/index.js.map +0 -1
  246. package/es/views/MainView/sidebar/GeneralOperation/useOperationList.js.map +0 -1
  247. package/es/views/MainView/sidebar/ImgAttributeInfo/index.js.map +0 -1
  248. package/es/views/MainView/sidebar/PointCloudToolSidebar/components/batchUpdateModal/index.js.map +0 -1
  249. package/es/views/MainView/sidebar/PointCloudToolSidebar/index.js.map +0 -1
  250. package/es/views/MainView/sidebar/ScribbleSidebar/index.js.map +0 -1
  251. package/es/views/MainView/sidebar/SwitchAttributeList/index.js.map +0 -1
  252. package/es/views/MainView/sidebar/TagSidebar/index.js.map +0 -1
  253. package/es/views/MainView/sidebar/TextAreaFormat/index.js.map +0 -1
  254. package/es/views/MainView/sidebar/TextToolSidebar/index.js.map +0 -1
  255. package/es/views/MainView/sidebar/ToolIcons.js.map +0 -1
  256. package/es/views/MainView/sidebar/ToolStyle/index.js.map +0 -1
  257. package/es/views/MainView/sidebar/index.js.map +0 -1
  258. package/es/views/MainView/toolFooter/AnnotatedAttributes/index.js.map +0 -1
  259. package/es/views/MainView/toolFooter/FooterPopover.js.map +0 -1
  260. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/common/index.js.map +0 -1
  261. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/index.js.map +0 -1
  262. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/line/index.js.map +0 -1
  263. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/point/index.js.map +0 -1
  264. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/pointCloud/index.js.map +0 -1
  265. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/polygon/index.js.map +0 -1
  266. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/rectToolShortCutTable/index.js.map +0 -1
  267. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/scribble/index.js.map +0 -1
  268. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/tag/index.js.map +0 -1
  269. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/text/index.js.map +0 -1
  270. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/videoTag/index.js.map +0 -1
  271. package/es/views/MainView/toolFooter/FooterTips/index.js.map +0 -1
  272. package/es/views/MainView/toolFooter/HiddenTips/index.js.map +0 -1
  273. package/es/views/MainView/toolFooter/PageNumber/index.js.map +0 -1
  274. package/es/views/MainView/toolFooter/Pagination.js.map +0 -1
  275. package/es/views/MainView/toolFooter/ZoomController/ZoomLevel/index.js.map +0 -1
  276. package/es/views/MainView/toolFooter/ZoomController/index.js.map +0 -1
  277. package/es/views/MainView/toolFooter/index.js.map +0 -1
  278. package/es/views/MainView/toolHeader/ExportData/index.js.map +0 -1
  279. package/es/views/MainView/toolHeader/StepSwitch/index.js.map +0 -1
  280. package/es/views/MainView/toolHeader/headerOption/index.js.map +0 -1
  281. package/es/views/MainView/toolHeader/index.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAttribute.js","sources":["../../../../src/components/pointCloudView/hooks/useAttribute.ts"],"sourcesContent":["import { IPointCloudBox } from '@labelbee/lb-utils';\nimport { useContext, useEffect } from 'react';\nimport { PointCloudContext } from '../PointCloudContext';\n\nexport const useAttribute = () => {\n const {\n topViewInstance,\n sideViewInstance,\n backViewInstance,\n mainViewInstance,\n defaultAttribute,\n setDefaultAttribute,\n } = useContext(PointCloudContext);\n\n useEffect(() => {\n if (!topViewInstance?.pointCloud2dOperation) {\n return;\n }\n\n const updateDefaultAttribute = () => {\n setDefaultAttribute(topViewInstance?.pointCloud2dOperation.defaultAttribute);\n };\n\n topViewInstance?.pointCloud2dOperation.on('changeAttributeSidebar', updateDefaultAttribute);\n\n return () => {\n topViewInstance?.pointCloud2dOperation.unbind(\n 'changeAttributeSidebar',\n updateDefaultAttribute,\n );\n };\n }, [topViewInstance?.pointCloud2dOperation]);\n\n const syncThreeViewsAttribute = (attribute?: string) => {\n [\n topViewInstance?.pointCloud2dOperation,\n sideViewInstance?.pointCloud2dOperation,\n backViewInstance?.pointCloud2dOperation,\n ].forEach((instance) => {\n instance?.setDefaultAttribute(attribute);\n });\n };\n\n const updateDefaultAttribute = (attribute?: string) => {\n topViewInstance?.pointCloud2dOperation.setDefaultAttribute(attribute);\n };\n\n const reRenderPointCloud3DBox = (newBox: IPointCloudBox) => {\n mainViewInstance?.generateBox(newBox);\n };\n\n return {\n syncThreeViewsAttribute,\n updateDefaultAttribute,\n reRenderPointCloud3DBox,\n defaultAttribute,\n };\n};\n"],"names":[],"mappings":";;;AAIO,MAAM,eAAe,MAAM;AAChC,EAAM,MAAA;AAAA,IACJ,eAAA;AAAA,IACA,gBAAA;AAAA,IACA,gBAAA;AAAA,IACA,gBAAA;AAAA,IACA,gBAAA;AAAA,IACA,mBAAA;AAAA,GAAA,GACE,UAAW,CAAA,iBAAA,CAAA,CAAA;AAEf,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,qDAAkB,qBAAuB,CAAA,EAAA;AAC3C,MAAA,OAAA;AAAA,KAAA;AAGF,IAAA,MAAM,0BAAyB,MAAM;AACnC,MAAA,mBAAA,CAAoB,mDAAiB,qBAAsB,CAAA,gBAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAG7D,IAAiB,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,qBAAA,CAAsB,GAAG,wBAA0B,EAAA,uBAAA,CAAA,CAAA;AAEpE,IAAA,OAAO,MAAM;AACX,MAAiB,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,qBAAA,CAAsB,OACrC,wBACA,EAAA,uBAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAAA,EAGH,CAAC,eAAiB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,qBAAA,CAAA,CAAA,CAAA;AAErB,EAAM,MAAA,uBAAA,GAA0B,CAAC,SAAuB,KAAA;AACtD,IAAA;AAAA,MACE,eAAiB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,qBAAA;AAAA,MACjB,gBAAkB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAA,qBAAA;AAAA,MAClB,gBAAkB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAA,qBAAA;AAAA,KAClB,CAAA,OAAA,CAAQ,CAAC,QAAa,KAAA;AACtB,MAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,mBAAoB,CAAA,SAAA,CAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAIlC,EAAM,MAAA,sBAAA,GAAyB,CAAC,SAAuB,KAAA;AACrD,IAAA,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAiB,sBAAsB,mBAAoB,CAAA,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAG7D,EAAM,MAAA,uBAAA,GAA0B,CAAC,MAA2B,KAAA;AAC1D,IAAA,gBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAkB,WAAY,CAAA,MAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAGhC,EAAO,OAAA;AAAA,IACL,uBAAA;AAAA,IACA,sBAAA;AAAA,IACA,uBAAA;AAAA,IACA,gBAAA;AAAA,GAAA,CAAA;AAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useBoxes.js","sources":["../../../../src/components/pointCloudView/hooks/useBoxes.ts"],"sourcesContent":["import { IPointCloudBoxList, IPointCloudConfig } from '@labelbee/lb-utils';\nimport { useCallback, useContext, useMemo, useState } from 'react';\nimport _ from 'lodash';\nimport { message, Modal } from 'antd';\nimport { usePointCloudViews } from './usePointCloudViews';\nimport { PointCloudContext } from '../PointCloudContext';\nimport { useTranslation } from 'react-i18next';\n\n/**\n * Actions for selected boxes\n */\nexport const useBoxes = ({ config }: { config: IPointCloudConfig }) => {\n const {\n selectedIDs,\n pointCloudBoxList,\n displayPointCloudList,\n setPointCloudResult,\n syncAllViewPointCloudColor,\n } = useContext(PointCloudContext);\n const [copiedBoxes, setCopiedBoxes] = useState<IPointCloudBoxList>([]);\n const { pointCloudBoxListUpdated } = usePointCloudViews();\n const { t, i18n } = useTranslation();\n\n const hasDuplicateID = (checkBoxList: IPointCloudBoxList) => {\n if (config.trackConfigurable !== true) {\n return false;\n }\n\n return pointCloudBoxList.some((item) => {\n return checkBoxList.some((i) => i.trackID === item.trackID);\n });\n };\n\n const selectedBoxes = useMemo(() => {\n return displayPointCloudList.filter((i) => selectedIDs.includes(i.id));\n }, [selectedIDs, displayPointCloudList]);\n\n const copySelectedBoxes = useCallback(() => {\n if (selectedBoxes.length > 0) {\n setCopiedBoxes(_.cloneDeep(selectedBoxes));\n } else {\n setCopiedBoxes([]);\n message.error(t('CopyEmptyInPointCloud'));\n }\n }, [selectedIDs, displayPointCloudList, i18n.language]);\n\n const pasteSelectedBoxes = useCallback(() => {\n if (copiedBoxes.length === 0) {\n message.error(t('PasteEmptyInPointCloud'));\n return;\n }\n\n const hasDuplicate = hasDuplicateID(copiedBoxes);\n\n const updatePointCloudResult = (newPointCloudBoxList: IPointCloudBoxList) => {\n /** Paste succeed and empty */\n setPointCloudResult(newPointCloudBoxList);\n pointCloudBoxListUpdated?.(newPointCloudBoxList);\n setCopiedBoxes([]);\n\n // TODO: It need to update in global.\n syncAllViewPointCloudColor(newPointCloudBoxList);\n };\n\n if (hasDuplicate) {\n Modal.confirm({\n title: t('HasDuplicateIDHeader'),\n content: t('HasDuplicateIDMsg'),\n onOk: () => {\n /**\n * Filter the same trackID in old-pointCloudBoxList.\n */\n const newPointCloudResult = pointCloudBoxList\n .filter((v) => {\n if (copiedBoxes.find((c) => c.trackID === v.trackID)) {\n return false;\n }\n return true;\n })\n .concat(copiedBoxes);\n\n updatePointCloudResult(newPointCloudResult);\n },\n });\n } else {\n /** Paste succeed and empty */\n const newPointCloudResult = [...displayPointCloudList, ...copiedBoxes];\n\n updatePointCloudResult(newPointCloudResult);\n }\n }, [copiedBoxes, displayPointCloudList, i18n.language]);\n\n return { copySelectedBoxes, pasteSelectedBoxes, copiedBoxes, selectedBoxes };\n};\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useConfig.js","sources":["../../../../src/components/pointCloudView/hooks/useConfig.ts"],"sourcesContent":["import { PointCloudContext } from '../PointCloudContext';\nimport { useContext } from 'react';\nimport { IPointCloudConfig } from '@labelbee/lb-utils';\n\nexport const useConfig = () => {\n const { topViewInstance, sideViewInstance, backViewInstance, mainViewInstance } =\n useContext(PointCloudContext);\n\n const syncAllViewsConfig = (config: IPointCloudConfig) => {\n [topViewInstance, sideViewInstance, backViewInstance].forEach((instance) => {\n instance?.updateConfig(config);\n \n /**\n * If update the config, needs to update defaultAttribute.\n */\n const defaultAttribute = config?.attributeList?.[0]?.value;\n if (defaultAttribute) {\n instance?.pointCloud2dOperation.setDefaultAttribute(defaultAttribute);\n }\n });\n mainViewInstance?.setConfig(config);\n };\n\n const reRenderTopViewRange = (radius: number) => {\n topViewInstance?.pointCloudInstance?.generateRange?.(radius);\n topViewInstance?.pointCloudInstance?.render();\n };\n\n return {\n syncAllViewsConfig,\n reRenderTopViewRange,\n };\n};\n"],"names":[],"mappings":";;;AAIO,MAAM,YAAY,MAAM;AAC7B,EAAA,MAAM,CAAE,eAAA,EAAiB,gBAAkB,EAAA,gBAAA,EAAkB,oBAC3D,UAAW,CAAA,iBAAA,CAAA,CAAA;AAEb,EAAM,MAAA,kBAAA,GAAqB,CAAC,MAA8B,KAAA;AACxD,IAAA,CAAC,eAAiB,EAAA,gBAAA,EAAkB,gBAAkB,CAAA,CAAA,OAAA,CAAQ,CAAC,QAAa,KAAA;AAThF,MAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAUM,MAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,YAAa,CAAA,MAAA,CAAA,CAAA;AAKvB,MAAA,MAAM,gBAAmB,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,aAAR,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAwB,OAAxB,IAA4B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,CAAA;AACrD,MAAA,IAAI,gBAAkB,EAAA;AACpB,QAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,sBAAsB,mBAAoB,CAAA,gBAAA,CAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA,CAAA;AAGxD,IAAA,gBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAkB,SAAU,CAAA,MAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAG9B,EAAM,MAAA,oBAAA,GAAuB,CAAC,MAAmB,KAAA;AAvBnD,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAwBI,IAAiB,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,kBAAA,KAAjB,IAAqC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAA,KAArC,IAAqD,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,MAAA,CAAA,CAAA;AACrD,IAAA,CAAA,EAAA,GAAA,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAiB,uBAAjB,IAAqC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,EAAA,CAAA;AAAA,GAAA,CAAA;AAGvC,EAAO,OAAA;AAAA,IACL,kBAAA;AAAA,IACA,oBAAA;AAAA,GAAA,CAAA;AAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useHistory.js","sources":["../../../../src/components/pointCloudView/hooks/useHistory.ts"],"sourcesContent":["import { IPointCloudBox, IPointCloudBoxList, IPolygonData } from '@labelbee/lb-utils';\nimport { useContext } from 'react';\nimport { PointCloudContext } from '../PointCloudContext';\n\nexport const useHistory = () => {\n const {\n history,\n setPointCloudResult,\n setSelectedIDs,\n pointCloudBoxList,\n mainViewInstance,\n topViewInstance,\n polygonList,\n setPolygonList,\n syncAllViewPointCloudColor,\n } = useContext(PointCloudContext);\n\n const addHistory = ({\n newBoxParams,\n newPolygon,\n }: {\n newBoxParams?: IPointCloudBox;\n newPolygon?: IPolygonData;\n }) => {\n const historyRecord = {\n pointCloudBoxList,\n polygonList,\n };\n\n if (newBoxParams) {\n historyRecord.pointCloudBoxList = pointCloudBoxList.concat(newBoxParams);\n }\n\n if (newPolygon) {\n historyRecord.polygonList = polygonList.concat(newPolygon);\n }\n\n history.pushHistory(historyRecord);\n };\n\n const pushHistoryWithList = (\n params: Partial<{\n pointCloudBoxList: IPointCloudBoxList;\n polygonList: IPolygonData[];\n }>,\n ) => {\n const historyRecord = {\n pointCloudBoxList,\n polygonList,\n };\n\n if (params.pointCloudBoxList) {\n historyRecord.pointCloudBoxList = params.pointCloudBoxList;\n }\n\n if (params.polygonList) {\n historyRecord.polygonList = params.polygonList;\n }\n\n history.pushHistory(historyRecord);\n };\n\n const pushHistoryUnderUpdatePolygon = (polygon: IPolygonData) => {\n const selectedPolygon = polygonList.find((v) => v.id === polygon.id);\n\n if (selectedPolygon) {\n const newPolygonList = polygonList.map((v) => {\n if (v.id === polygon.id) {\n return polygon;\n }\n return {\n ...v,\n };\n });\n history.pushHistory({\n pointCloudBoxList,\n polygonList: newPolygonList,\n });\n setPolygonList(newPolygonList);\n }\n };\n\n const initHistory = ({\n pointCloudBoxList,\n polygonList,\n }: {\n pointCloudBoxList: IPointCloudBoxList;\n polygonList: IPolygonData[];\n }) => {\n history.initRecord({ pointCloudBoxList, polygonList }, true);\n };\n\n const updatePointCloud = (params?: {\n pointCloudBoxList: IPointCloudBoxList;\n polygonList: IPolygonData[];\n }) => {\n if (!params) {\n return;\n }\n\n const { pointCloudBoxList: newPointCloudBoxList = [], polygonList: newPolygonList = [] } =\n params;\n\n if (newPointCloudBoxList) {\n if (pointCloudBoxList.length !== newPointCloudBoxList.length) {\n setSelectedIDs();\n }\n\n const deletePointCloudList = pointCloudBoxList.filter((v) =>\n newPointCloudBoxList.every((d) => d.id !== v.id),\n );\n const addPointCloudList = newPointCloudBoxList.filter((v) =>\n pointCloudBoxList.every((d) => d.id !== v.id),\n );\n\n // Clear All Data\n deletePointCloudList.forEach((v) => {\n mainViewInstance?.removeObjectByName(v.id);\n });\n\n // Add Init Box\n addPointCloudList.forEach((v) => {\n mainViewInstance?.generateBox(v);\n });\n\n setPointCloudResult(newPointCloudBoxList);\n syncAllViewPointCloudColor(newPointCloudBoxList);\n }\n\n if (newPolygonList) {\n setPolygonList(newPolygonList);\n }\n\n topViewInstance?.updatePolygonList(newPointCloudBoxList ?? [], newPolygonList ?? []);\n };\n\n const redo = () => {\n updatePointCloud(history.redo());\n };\n\n const undo = () => {\n updatePointCloud(history.undo());\n };\n\n return {\n addHistory,\n pushHistoryWithList,\n initHistory,\n pushHistoryUnderUpdatePolygon,\n redo,\n undo,\n };\n};\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePointCloudViews.js","sources":["../../../../src/components/pointCloudView/hooks/usePointCloudViews.ts"],"sourcesContent":["/**\n * @file Point cloud interface for crud\n * @author Glenfiddish <edwinlee0927@hotmail.com>\n * @createdate 2022-08-17\n */\nimport {\n PointCloudAnnotation,\n PointCloud,\n MathUtils,\n getCuboidFromPointCloudBox,\n} from '@labelbee/lb-annotation';\nimport {\n IPointCloudBox,\n EPerspectiveView,\n PointCloudUtils,\n IPolygonPoint,\n UpdatePolygonByDragList,\n} from '@labelbee/lb-utils';\nimport { useContext } from 'react';\nimport { PointCloudContext } from '../PointCloudContext';\nimport { useSingleBox } from './useSingleBox';\nimport { ISize } from '@/types/main';\nimport _ from 'lodash';\nimport { useDispatch, useSelector } from '@/store/ctx';\nimport { AppState } from '@/store';\nimport StepUtils from '@/utils/StepUtils';\nimport { jsonParser } from '@/utils';\nimport { SetPointCloudLoading } from '@/store/annotation/actionCreators';\nimport { message } from 'antd';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from './useHistory';\nimport { usePolygon } from './usePolygon';\nimport { IFileItem } from '@/types/data';\nimport { ICoordinate } from '@labelbee/lb-utils/src/types/common';\n\nconst DEFAULT_SCOPE = 5;\nconst DEFAULT_RADIUS = 90;\n\nconst PointCloudView = {\n '3D': '3D',\n Top: 'Top',\n Side: 'Side',\n Back: 'Back',\n};\n\nexport const topViewPolygon2PointCloud = (\n newPolygon: any,\n size: ISize,\n pointCloud?: PointCloud,\n selectedPointCloudBox?: IPointCloudBox,\n defaultValue?: { [v: string]: any },\n intelligentFit?: boolean,\n) => {\n let worldPointList = newPolygon.pointList.map((v: any) =>\n PointCloudUtils.transferCanvas2World(v, size),\n );\n let z = 0;\n let depth = 1;\n let extraData = {};\n\n // Init PointCloud Data\n if (pointCloud) {\n const zInfo = pointCloud.getSensesPointZAxisInPolygon(\n worldPointList,\n undefined,\n intelligentFit,\n );\n if (intelligentFit) {\n worldPointList = zInfo.fittedCoordinates;\n }\n z = (zInfo.maxZ + zInfo.minZ) / 2;\n depth = zInfo.maxZ - zInfo.minZ;\n extraData = {\n count: zInfo.zCount,\n };\n }\n\n const [point1, point2, point3] = worldPointList;\n const centerPoint = MathUtils.getLineCenterPoint([point1, point3]);\n const height = MathUtils.getLineLength(point1, point2);\n const width = MathUtils.getLineLength(point2, point3);\n const rotation = MathUtils.getRadiusFromQuadrangle(newPolygon.pointList);\n\n if (selectedPointCloudBox) {\n z = selectedPointCloudBox.center.z;\n depth = selectedPointCloudBox.depth;\n }\n\n const newPosition = {\n center: {\n x: centerPoint.x,\n y: centerPoint.y,\n z,\n },\n width,\n height,\n depth,\n rotation,\n id: newPolygon.id,\n };\n\n /** TrackID will append before it pushed */\n const boxParams: Omit<IPointCloudBox, 'trackID'> = selectedPointCloudBox\n ? {\n ...selectedPointCloudBox,\n ...newPosition,\n ...extraData,\n }\n : {\n // Init Data\n ...newPosition,\n attribute: '',\n valid: true,\n ...extraData,\n };\n\n if (defaultValue) {\n Object.assign(boxParams, defaultValue);\n }\n\n // Polygon coordinates after fitting\n const newPointList = worldPointList.map((v: ICoordinate) =>\n PointCloudUtils.transferWorld2Canvas(v, size),\n );\n\n return { boxParams, newPointList };\n};\n\nconst sideViewPolygon2PointCloud = (\n newPolygon: any,\n originPolygon: any,\n selectedPointCloudBox: IPointCloudBox,\n pointCloudInstance: PointCloud,\n) => {\n const [point1, point2, point3] = newPolygon.pointList;\n const [op1, op2, op3] = originPolygon.pointList;\n\n // 2D centerPoint => 3D x & z\n const newCenterPoint = MathUtils.getLineCenterPoint([point1, point3]);\n const oldCenterPoint = MathUtils.getLineCenterPoint([op1, op3]);\n\n const offset = {\n x: newCenterPoint.x - oldCenterPoint.x,\n y: newCenterPoint.y - oldCenterPoint.y,\n };\n\n /**\n * The key of sideView change is x & z, y isn't used.\n */\n const offsetCenterPoint = {\n x: offset.x,\n y: 0,\n z: newCenterPoint.y - oldCenterPoint.y,\n };\n\n // 2D height => 3D depth\n const height = MathUtils.getLineLength(point1, point2);\n const oldHeight = MathUtils.getLineLength(op1, op2);\n const offsetHeight = height - oldHeight; // 3D depth\n\n // 2D width => 3D width\n const width = MathUtils.getLineLength(point2, point3);\n const oldWidth = MathUtils.getLineLength(op2, op3);\n const offsetWidth = width - oldWidth; // 3D width\n\n const { newBoxParams } = pointCloudInstance.getNewBoxBySideUpdate(\n offsetCenterPoint,\n offsetWidth,\n offsetHeight,\n selectedPointCloudBox,\n );\n\n return newBoxParams;\n};\n\nconst backViewPolygon2PointCloud = (\n newPolygon: any,\n originPolygon: any,\n selectedPointCloudBox: IPointCloudBox,\n pointCloudInstance: PointCloud,\n) => {\n // Notice. The sort of polygon is important.\n const [point1, point2, point3] = newPolygon.pointList;\n const [op1, op2, op3] = originPolygon.pointList;\n\n // 2D centerPoint => 3D x & z\n const newCenterPoint = MathUtils.getLineCenterPoint([point1, point3]);\n const oldCenterPoint = MathUtils.getLineCenterPoint([op1, op3]);\n\n const offset = {\n x: newCenterPoint.x - oldCenterPoint.x,\n y: newCenterPoint.y - oldCenterPoint.y,\n };\n\n const offsetCenterPoint = {\n x: offset.x,\n y: 0, // Not be used.\n z: newCenterPoint.y - oldCenterPoint.y,\n };\n\n // 2D height => 3D depth\n const height = MathUtils.getLineLength(point1, point2);\n const oldHeight = MathUtils.getLineLength(op1, op2);\n const offsetHeight = height - oldHeight; // 3D depth\n\n // 2D width => 3D width\n const width = MathUtils.getLineLength(point2, point3);\n const oldWidth = MathUtils.getLineLength(op2, op3);\n const offsetWidth = width - oldWidth; // 3D width\n\n let { newBoxParams } = pointCloudInstance.getNewBoxByBackUpdate(\n offsetCenterPoint,\n offsetWidth,\n offsetHeight,\n selectedPointCloudBox,\n );\n\n return newBoxParams;\n};\n/**\n * NewBox synchronize sideView\n * @param boxParams\n * @param newPolygon TODO! Need to add type\n */\nexport const synchronizeSideView = (\n boxParams: IPointCloudBox,\n newPolygon: any,\n sideViewInstance: PointCloudAnnotation | undefined,\n url: string,\n) => {\n if (!sideViewInstance) {\n return;\n }\n\n const { pointCloud2dOperation, pointCloudInstance } = sideViewInstance;\n\n // Create PointCloud\n pointCloudInstance.loadPCDFileByBox(url, boxParams, {\n width: DEFAULT_SCOPE,\n depth: DEFAULT_SCOPE,\n });\n const { cameraPositionVector } = pointCloudInstance.updateOrthoCamera(\n boxParams,\n EPerspectiveView.Left,\n );\n\n pointCloudInstance.setInitCameraPosition(cameraPositionVector);\n\n // Create Draw Polygon\n const { polygon2d, zoom } = pointCloudInstance.getBoxSidePolygon2DCoordinate(boxParams);\n\n // Synchronize SidePointCloud zoom with PointCloud2dOperation\n pointCloudInstance.camera.zoom = zoom;\n pointCloudInstance.camera.updateProjectionMatrix();\n pointCloudInstance.render();\n\n // Update PolygonView to default zoom and currentPos.\n pointCloud2dOperation.initPosition();\n pointCloud2dOperation.zoomChangeOnCenter(zoom);\n pointCloud2dOperation.setResultAndSelectedID(\n [\n {\n id: newPolygon.id,\n valid: boxParams.valid,\n pointList: polygon2d,\n textAttribute: '',\n isRect: true,\n attribute: boxParams.attribute,\n },\n ],\n newPolygon.id,\n );\n};\n\n/**\n * NewBox synchronize backView\n * @param boxParams\n * @param newPolygon TODO! Need to add type\n */\nexport const synchronizeBackView = (\n boxParams: IPointCloudBox,\n newPolygon: any,\n BackViewInstance: PointCloudAnnotation,\n url: string,\n) => {\n if (!BackViewInstance) {\n return;\n }\n\n const {\n pointCloud2dOperation: backPointCloudPolygonOperation,\n pointCloudInstance: backPointCloud,\n } = BackViewInstance;\n\n // Create PointCloud\n backPointCloud.loadPCDFileByBox(url, boxParams, { height: DEFAULT_SCOPE, depth: DEFAULT_SCOPE });\n const { cameraPositionVector } = backPointCloud.updateOrthoCamera(\n boxParams,\n EPerspectiveView.Back,\n );\n\n backPointCloud.setInitCameraPosition(cameraPositionVector);\n\n // Create Draw Polygon\n const { polygon2d, zoom } = backPointCloud.getBoxBackPolygon2DCoordinate(boxParams);\n\n // Synchronize SidePointCloud zoom with PointCloud2dOperation\n backPointCloud.camera.zoom = zoom;\n backPointCloud.camera.updateProjectionMatrix();\n backPointCloud.render();\n\n // Update PolygonView to default zoom and currentPos.\n backPointCloudPolygonOperation.initPosition();\n backPointCloudPolygonOperation.zoomChangeOnCenter(zoom);\n backPointCloudPolygonOperation.setResultAndSelectedID(\n [\n {\n id: newPolygon.id,\n valid: boxParams.valid,\n pointList: polygon2d,\n textAttribute: '',\n isRect: true,\n attribute: boxParams.attribute,\n },\n ],\n newPolygon.id,\n );\n};\n\n/**\n * NewBox synchronize TopView\n * @param boxParams\n * @param newPolygon TODO! Need to add type\n */\nexport const synchronizeTopView = (\n newBoxParams: IPointCloudBox,\n newPolygon: any,\n topViewInstance?: PointCloudAnnotation,\n mainViewInstance?: PointCloud,\n) => {\n if (!topViewInstance || !mainViewInstance) {\n return;\n }\n\n // Control the 3D view data to create box\n mainViewInstance.generateBox(newBoxParams, newPolygon.id);\n mainViewInstance.render();\n\n const { pointCloud2dOperation, pointCloudInstance } = topViewInstance;\n\n const { polygon2d } = pointCloudInstance.getBoxTopPolygon2DCoordinate(newBoxParams);\n\n const newPolygonList = [...pointCloud2dOperation.polygonList];\n const oldPolygon = newPolygonList.find((v) => v.id === newPolygon.id);\n if (oldPolygon) {\n oldPolygon.pointList = polygon2d;\n } else {\n newPolygonList.push({\n id: newPolygon.id,\n pointList: polygon2d,\n textAttribute: '',\n isRect: true,\n valid: newBoxParams.valid ?? true,\n });\n }\n\n pointCloud2dOperation.setResultAndSelectedID(newPolygonList, newPolygon.id);\n};\n\nexport const usePointCloudViews = () => {\n const ptCtx = useContext(PointCloudContext);\n const {\n topViewInstance,\n sideViewInstance,\n backViewInstance,\n mainViewInstance,\n addPointCloudBox,\n setSelectedIDs,\n selectedIDs,\n pointCloudBoxList,\n hideAttributes,\n } = ptCtx;\n const { addHistory, initHistory, pushHistoryUnderUpdatePolygon } = useHistory();\n const { selectedPolygon } = usePolygon();\n\n const { updateSelectedBox, updateSelectedBoxes, getPointCloudByID } = useSingleBox();\n const { currentData, config } = useSelector((state: AppState) => {\n const { stepList, step, imgList, imgIndex } = state.annotation;\n\n return {\n currentData: imgList[imgIndex],\n config: jsonParser(StepUtils.getCurrentStepInfo(step, stepList).config),\n };\n });\n const dispatch = useDispatch();\n const { selectedBox } = useSingleBox();\n const { t } = useTranslation();\n\n const selectedPointCloudBox = selectedBox?.info;\n\n if (!topViewInstance || !sideViewInstance || !backViewInstance) {\n return {\n topViewAddBox: () => {},\n topViewSelectedChanged: () => {},\n sideViewUpdateBox: () => {},\n backViewUpdateBox: () => {},\n };\n }\n\n const { pointCloudInstance: topViewPointCloud } = topViewInstance;\n\n const mainViewGenBox = (boxParams: IPointCloudBox) => {\n mainViewInstance?.generateBox(boxParams);\n mainViewInstance?.controls.update();\n mainViewInstance?.render();\n };\n\n /** Top-view create box from 2D */\n const topViewAddBox = ({\n polygon,\n size,\n imgList,\n trackConfigurable,\n zoom,\n intelligentFit,\n }: {\n polygon: any;\n size: ISize;\n imgList: IFileItem[];\n trackConfigurable?: boolean;\n zoom: number;\n intelligentFit?: boolean;\n }) => {\n const extraData = {\n attribute: topViewInstance.pointCloud2dOperation.defaultAttribute ?? '',\n };\n\n if (trackConfigurable === true) {\n Object.assign(extraData, {\n trackID: PointCloudUtils.getNextTrackID({\n imgList: [], // Just calculate by the pointCloudBoxList in current page.\n extraBoxList: pointCloudBoxList,\n }),\n });\n }\n\n const newPolygon = { ...polygon };\n const { boxParams, newPointList } = topViewPolygon2PointCloud(\n newPolygon,\n size,\n topViewPointCloud,\n undefined,\n extraData,\n intelligentFit,\n );\n const polygonOperation = topViewInstance?.pointCloud2dOperation;\n\n // If the count is less than lowerLimitPointsNumInBox, needs to delete it\n if (\n config?.lowerLimitPointsNumInBox &&\n typeof boxParams.count === 'number' &&\n boxParams.count < config.lowerLimitPointsNumInBox\n ) {\n message.info(t('LowerLimitPointsNumInBox', { num: config.lowerLimitPointsNumInBox }));\n polygonOperation.deletePolygon(boxParams.id);\n return;\n }\n\n if (intelligentFit && newPointList?.length) {\n newPolygon.pointList = newPointList;\n }\n\n const isBoxHidden = hideAttributes.includes(newPolygon.attribute);\n const newPointCloudList = addPointCloudBox(boxParams);\n\n /** If new box is hidden will not active target point box */\n if (isBoxHidden) {\n setSelectedIDs([]);\n } else {\n setSelectedIDs(boxParams.id);\n polygonOperation.setSelectedIDs([newPolygon.id]);\n syncPointCloudViews(PointCloudView.Top, newPolygon, boxParams, zoom, newPointCloudList);\n if (intelligentFit) {\n synchronizeTopView(boxParams, newPolygon, topViewInstance, mainViewInstance);\n }\n }\n\n addHistory({ newBoxParams: boxParams });\n };\n\n /** Top-view selected changed and render to other view */\n const topViewSelectedChanged = (\n newSelectedBox?: IPointCloudBox,\n newPointCloudList?: IPointCloudBox[],\n ) => {\n const boxParams = newSelectedBox ?? selectedBox?.info;\n const polygonOperation = topViewInstance?.pointCloud2dOperation;\n\n polygonOperation.setSelectedIDs(selectedIDs);\n\n if (selectedIDs.length === 0 || !polygonOperation) {\n return;\n }\n\n const polygon = polygonOperation.selectedPolygon;\n\n if (selectedIDs.length === 1 && boxParams) {\n syncPointCloudViews(PointCloudView.Top, polygon, boxParams, undefined, newPointCloudList);\n return;\n }\n };\n\n /**\n * Update box from view\n * @param newPolygon\n * @param originPolygon\n * @param fromView Back or Side\n */\n const viewUpdateBox = (newPolygon: any, originPolygon: any, fromView: string) => {\n if (selectedPointCloudBox) {\n let transfer2PointCloud;\n let newBoxParams;\n\n // Switch the right function.\n switch (fromView) {\n case PointCloudView.Back:\n transfer2PointCloud = backViewPolygon2PointCloud;\n break;\n case PointCloudView.Side:\n transfer2PointCloud = sideViewPolygon2PointCloud;\n break;\n\n default:\n transfer2PointCloud = sideViewPolygon2PointCloud;\n break;\n }\n\n newBoxParams = transfer2PointCloud(\n newPolygon,\n originPolygon,\n selectedPointCloudBox,\n sideViewInstance.pointCloudInstance,\n );\n // Update count\n if (mainViewInstance) {\n const { count } = mainViewInstance.getSensesPointZAxisInPolygon(\n getCuboidFromPointCloudBox(newBoxParams).polygonPointList as IPolygonPoint[],\n [\n newBoxParams.center.z - newBoxParams.depth / 2,\n newBoxParams.center.z + newBoxParams.depth / 2,\n ],\n );\n\n newBoxParams = {\n ...newBoxParams,\n count,\n };\n }\n\n const newPointCloudList = updateSelectedBox(newBoxParams);\n syncPointCloudViews(fromView, newPolygon, newBoxParams, undefined, newPointCloudList);\n return newPointCloudList;\n }\n };\n\n const sideViewUpdateBox = (newPolygon: any, originPolygon: any) => {\n viewUpdateBox(newPolygon, originPolygon, PointCloudView.Side);\n };\n\n const backViewUpdateBox = (newPolygon: any, originPolygon: any) => {\n viewUpdateBox(newPolygon, originPolygon, PointCloudView.Back);\n };\n\n /**\n * Top view box updated and sync views\n * @param polygon\n * @param size\n */\n const topViewUpdateBox = (updateList: UpdatePolygonByDragList, size: ISize) => {\n // If the selected Object is Polygon.\n if (selectedPolygon) {\n /**\n * Notice. The Polygon need to be converted to pointCloud coordinate system for storage.\n */\n const polygon = updateList[0].newPolygon;\n polygon.pointList = polygon.pointList.map((v) =>\n PointCloudUtils.transferCanvas2World(v, size),\n );\n\n pushHistoryUnderUpdatePolygon(updateList[0].newPolygon);\n return;\n }\n\n const updatePointCloudList: IPointCloudBox[] = updateList.map(({ newPolygon: polygon }) => {\n const pointCloudBox = getPointCloudByID(polygon.id);\n\n const { boxParams } = topViewPolygon2PointCloud(\n polygon,\n size,\n topViewInstance.pointCloudInstance,\n pointCloudBox,\n );\n\n return boxParams;\n });\n\n /**\n * If single target updated, use syncPointCloudViews to sync all views and render\n * If multi targets updated, use updateSelectedBoxes and update highlight by syncAllViewPointCloudColor\n */\n if (updatePointCloudList.length === 1) {\n const { newPolygon: polygon } = updateList[0];\n const newPointCloudBoxList = updateSelectedBoxes(updatePointCloudList);\n\n syncPointCloudViews(\n PointCloudView.Top,\n polygon,\n updatePointCloudList[0],\n undefined,\n newPointCloudBoxList,\n );\n } else {\n const newPointCloudBoxList = updateSelectedBoxes(updatePointCloudList);\n if (newPointCloudBoxList) {\n ptCtx.syncAllViewPointCloudColor(newPointCloudBoxList);\n }\n }\n };\n\n /**\n * Sync views' data from omit view, regenerate and highlight box on 3D-view\n * @param omitView\n * @param polygon\n * @param boxParams\n */\n const syncPointCloudViews = async (\n omitView: string,\n polygon: any,\n boxParams: IPointCloudBox,\n zoom?: number,\n newPointCloudBoxList?: IPointCloudBox[],\n ) => {\n const dataUrl = currentData?.url;\n\n if (newPointCloudBoxList) {\n // Wait for the mainPointCloudData.\n await ptCtx.syncAllViewPointCloudColor(newPointCloudBoxList);\n }\n\n const viewToBeUpdated = {\n [PointCloudView.Side]: () => {\n synchronizeSideView(boxParams, polygon, sideViewInstance, dataUrl);\n },\n [PointCloudView.Back]: () => {\n if (backViewInstance) {\n synchronizeBackView(boxParams, polygon, backViewInstance, dataUrl);\n }\n },\n [PointCloudView.Top]: () => {\n synchronizeTopView(boxParams, polygon, topViewInstance, mainViewInstance);\n },\n };\n\n Object.keys(viewToBeUpdated).forEach((key) => {\n if (key !== omitView) {\n viewToBeUpdated[key]();\n }\n });\n if (zoom) {\n mainViewInstance?.updateCameraZoom(zoom);\n }\n\n mainViewGenBox(boxParams);\n };\n\n const pointCloudBoxListUpdated = (newBoxes: IPointCloudBox[]) => {\n topViewInstance.updatePolygonList(newBoxes);\n mainViewInstance?.generateBoxes(newBoxes);\n };\n\n const initPointCloud3d = (size: ISize) => {\n if (!mainViewInstance) {\n return;\n }\n\n const orthographicParams = {\n left: -size.width / 2,\n right: size.width / 2,\n top: size.height / 2,\n bottom: -size.height / 2,\n near: 100,\n far: -100,\n };\n\n mainViewInstance.initOrthographicCamera(orthographicParams);\n mainViewInstance.initRenderer();\n mainViewInstance.render();\n };\n\n /**\n * Update the data of pointCloudView when the page change.\n * @returns\n */\n const updatePointCloudData = async (newData = currentData) => {\n if (!newData?.url || !mainViewInstance) {\n return;\n }\n\n SetPointCloudLoading(dispatch, true);\n await mainViewInstance.loadPCDFile(newData.url, config?.radius ?? DEFAULT_RADIUS);\n\n // Clear All Data\n pointCloudBoxList.forEach((v) => {\n mainViewInstance?.removeObjectByName(v.id);\n });\n\n let boxParamsList: any[] = [];\n let polygonList = [];\n if (newData.result) {\n boxParamsList = PointCloudUtils.getBoxParamsFromResultList(newData.result);\n polygonList = PointCloudUtils.getPolygonListFromResultList(newData.result);\n\n // Add Init Box\n boxParamsList.forEach((v: IPointCloudBox) => {\n mainViewInstance?.generateBox(v);\n });\n\n ptCtx.syncAllViewPointCloudColor(boxParamsList);\n ptCtx.setPointCloudResult(boxParamsList);\n ptCtx.setPolygonList(polygonList);\n } else {\n ptCtx.setPointCloudResult([]);\n ptCtx.setPolygonList([]);\n }\n initHistory({ pointCloudBoxList: boxParamsList, polygonList });\n\n mainViewInstance.updateTopCamera();\n\n const valid = jsonParser(newData.result)?.valid ?? true;\n ptCtx.setPointCloudValid(valid);\n\n // Clear other view data during initialization\n ptCtx.sideViewInstance?.clearAllData();\n ptCtx.backViewInstance?.clearAllData();\n\n // TopView Data Update\n /**\n * Listen to flip\n * 1. Init\n * 2. Reload PointCloud\n * 3. Clear Polygon\n */\n topViewInstance.updateData(newData.url, newData.result, {\n radius: config?.radius ?? DEFAULT_RADIUS,\n });\n SetPointCloudLoading(dispatch, false);\n };\n\n return {\n topViewAddBox,\n topViewSelectedChanged,\n topViewUpdateBox,\n sideViewUpdateBox,\n backViewUpdateBox,\n pointCloudBoxListUpdated,\n initPointCloud3d,\n updatePointCloudData,\n };\n};\n"],"names":["this"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePolygon.js","sources":["../../../../src/components/pointCloudView/hooks/usePolygon.ts"],"sourcesContent":["import { IPolygonData } from '@labelbee/lb-utils';\nimport { useContext } from 'react';\nimport { PointCloudContext } from '../PointCloudContext';\nimport { useHistory } from './useHistory';\n\n/**\n * PointCloud Polygon Hook\n * @returns\n */\nexport const usePolygon = () => {\n const { polygonList, setPolygonList, selectedID } = useContext(PointCloudContext);\n const { addHistory, pushHistoryWithList } = useHistory();\n\n const selectedPolygon = polygonList.find((v) => v.id === selectedID);\n\n const addPolygon = (polygon: IPolygonData) => {\n setPolygonList(polygonList.concat(polygon));\n addHistory({ newPolygon: polygon });\n };\n\n const deletePolygon = (id: string) => {\n const newPolygonList = polygonList.filter((v) => v.id !== id).map((v) => ({ ...v }));\n setPolygonList(newPolygonList);\n pushHistoryWithList({ polygonList: newPolygonList });\n };\n\n const updateSelectedPolygon = (polygon: IPolygonData) => {\n if (selectedPolygon) {\n setPolygonList(\n polygonList.map((v) => {\n if (v.id === selectedID) {\n return polygon;\n }\n return v;\n }),\n );\n }\n };\n\n const updatePolygonValidByID = (id: string) => {\n const polygon = polygonList.find((v) => v.id === id);\n if (polygon) {\n setPolygonList(\n polygonList.map((v) => {\n if (v.id === id) {\n return {\n ...v,\n valid: !v.valid,\n };\n }\n return v;\n }),\n );\n }\n };\n\n return {\n addPolygon,\n deletePolygon,\n selectedPolygon,\n updateSelectedPolygon,\n updatePolygonValidByID,\n };\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AASO,MAAM,aAAa,MAAM;AAC9B,EAAA,MAAM,CAAE,WAAA,EAAa,cAAgB,EAAA,UAAA,CAAA,GAAe,UAAW,CAAA,iBAAA,CAAA,CAAA;AAC/D,EAAM,MAAA,CAAE,YAAY,mBAAwB,CAAA,GAAA,UAAA,EAAA,CAAA;AAE5C,EAAA,MAAM,kBAAkB,WAAY,CAAA,IAAA,CAAK,CAAC,CAAA,KAAM,EAAE,EAAO,KAAA,UAAA,CAAA,CAAA;AAEzD,EAAM,MAAA,UAAA,GAAa,CAAC,OAA0B,KAAA;AAC5C,IAAA,cAAA,CAAe,YAAY,MAAO,CAAA,OAAA,CAAA,CAAA,CAAA;AAClC,IAAA,UAAA,CAAW,CAAE,UAAY,EAAA,OAAA,CAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAG3B,EAAM,MAAA,aAAA,GAAgB,CAAC,EAAe,KAAA;AACpC,IAAM,MAAA,cAAA,GAAiB,WAAY,CAAA,MAAA,CAAO,CAAC,CAAA,KAAM,CAAE,CAAA,EAAA,KAAO,EAAI,CAAA,CAAA,GAAA,CAAI,CAAC,CAAA,KAAO,cAAK,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;AAC/E,IAAe,cAAA,CAAA,cAAA,CAAA,CAAA;AACf,IAAA,mBAAA,CAAoB,CAAE,WAAa,EAAA,cAAA,CAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAGrC,EAAM,MAAA,qBAAA,GAAwB,CAAC,OAA0B,KAAA;AACvD,IAAA,IAAI,eAAiB,EAAA;AACnB,MACE,cAAA,CAAA,WAAA,CAAY,GAAI,CAAA,CAAC,CAAM,KAAA;AACrB,QAAI,IAAA,CAAA,CAAE,OAAO,UAAY,EAAA;AACvB,UAAO,OAAA,OAAA,CAAA;AAAA,SAAA;AAET,QAAO,OAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA;AAMf,EAAM,MAAA,sBAAA,GAAyB,CAAC,EAAe,KAAA;AAC7C,IAAA,MAAM,UAAU,WAAY,CAAA,IAAA,CAAK,CAAC,CAAA,KAAM,EAAE,EAAO,KAAA,EAAA,CAAA,CAAA;AACjD,IAAA,IAAI,OAAS,EAAA;AACX,MACE,cAAA,CAAA,WAAA,CAAY,GAAI,CAAA,CAAC,CAAM,KAAA;AACrB,QAAI,IAAA,CAAA,CAAE,OAAO,EAAI,EAAA;AACf,UAAA,OAAO,iCACF,CADE,CAAA,EAAA;AAAA,YAEL,KAAA,EAAO,CAAC,CAAE,CAAA,KAAA;AAAA,WAAA,CAAA,CAAA;AAAA,SAAA;AAGd,QAAO,OAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA;AAMf,EAAO,OAAA;AAAA,IACL,UAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA,qBAAA;AAAA,IACA,sBAAA;AAAA,GAAA,CAAA;AAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useRotate.js","sources":["../../../../src/components/pointCloudView/hooks/useRotate.ts"],"sourcesContent":["import { useCallback, useContext } from 'react';\nimport { IAnnotationStateProps } from '@/store/annotation/map';\nimport { synchronizeBackView, synchronizeSideView } from './usePointCloudViews';\nimport { useSingleBox } from './useSingleBox';\nimport { PointCloudContext } from '../PointCloudContext';\nimport { cAnnotation } from '@labelbee/lb-annotation';\nimport { PointCloudUtils } from '@labelbee/lb-utils';\n\nconst { ERotateDirection } = cAnnotation;\n\n/**\n * PointCloud Rotate Hook\n * @returns\n */\nexport const useRotate = ({ currentData }: IAnnotationStateProps) => {\n const ptCtx = useContext(PointCloudContext);\n const { selectedBox, updateSelectedBox } = useSingleBox();\n\n const updateRotate = useCallback(\n (angle: number) => {\n const { topViewInstance, mainViewInstance, syncAllViewPointCloudColor } = ptCtx;\n if (!topViewInstance || !mainViewInstance) {\n return;\n }\n\n const { pointCloud2dOperation: TopPointCloudPolygonOperation } = topViewInstance;\n\n const selectedPointCloudBox = selectedBox?.info;\n\n if (!selectedPointCloudBox || !currentData?.url || !ptCtx.backViewInstance) {\n return;\n }\n\n const newPointCloudList = updateSelectedBox({\n rotation: PointCloudUtils.restrictAngleRange(\n selectedPointCloudBox.rotation + Number(Math.PI * angle) / 180,\n ),\n });\n\n TopPointCloudPolygonOperation.rotatePolygon(angle, ERotateDirection.Anticlockwise);\n const selectedPolygon = TopPointCloudPolygonOperation.selectedPolygon;\n\n mainViewInstance.generateBox(selectedPointCloudBox);\n syncAllViewPointCloudColor(newPointCloudList);\n synchronizeSideView(\n selectedPointCloudBox,\n selectedPolygon,\n ptCtx.sideViewInstance,\n currentData.url,\n );\n synchronizeBackView(\n selectedPointCloudBox,\n selectedPolygon,\n ptCtx.backViewInstance,\n currentData.url,\n );\n mainViewInstance.render();\n },\n [\n ptCtx.selectedID,\n ptCtx.pointCloudBoxList,\n ptCtx.setPointCloudResult,\n ptCtx.topViewInstance,\n currentData,\n ],\n );\n\n return { updateRotate };\n};\n"],"names":[],"mappings":";;;;;;;AAQA,MAAM,CAAE,gBAAqB,CAAA,GAAA,WAAA,CAAA;AAMhB,MAAA,SAAA,GAAY,CAAC,CAAE,WAAyC,CAAA,KAAA;AACnE,EAAA,MAAM,QAAQ,UAAW,CAAA,iBAAA,CAAA,CAAA;AACzB,EAAM,MAAA,CAAE,aAAa,iBAAsB,CAAA,GAAA,YAAA,EAAA,CAAA;AAE3C,EAAM,MAAA,YAAA,GAAe,WACnB,CAAA,CAAC,KAAkB,KAAA;AACjB,IAAM,MAAA,CAAE,eAAiB,EAAA,gBAAA,EAAkB,0BAA+B,CAAA,GAAA,KAAA,CAAA;AAC1E,IAAI,IAAA,CAAC,eAAmB,IAAA,CAAC,gBAAkB,EAAA;AACzC,MAAA,OAAA;AAAA,KAAA;AAGF,IAAM,MAAA,CAAE,uBAAuB,6BAAkC,CAAA,GAAA,eAAA,CAAA;AAEjE,IAAA,MAAM,wBAAwB,WAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAA,IAAA,CAAA;AAE3C,IAAA,IAAI,CAAC,qBAAyB,IAAA,6CAAc,GAAO,CAAA,IAAA,CAAC,MAAM,gBAAkB,EAAA;AAC1E,MAAA,OAAA;AAAA,KAAA;AAGF,IAAA,MAAM,oBAAoB,iBAAkB,CAAA;AAAA,MAC1C,QAAA,EAAU,gBAAgB,kBACxB,CAAA,qBAAA,CAAsB,WAAW,MAAO,CAAA,IAAA,CAAK,KAAK,KAAS,CAAA,GAAA,GAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAI/D,IAA8B,6BAAA,CAAA,aAAA,CAAc,OAAO,gBAAiB,CAAA,aAAA,CAAA,CAAA;AACpE,IAAA,MAAM,kBAAkB,6BAA8B,CAAA,eAAA,CAAA;AAEtD,IAAA,gBAAA,CAAiB,WAAY,CAAA,qBAAA,CAAA,CAAA;AAC7B,IAA2B,0BAAA,CAAA,iBAAA,CAAA,CAAA;AAC3B,IAAA,mBAAA,CACE,qBACA,EAAA,eAAA,EACA,KAAM,CAAA,gBAAA,EACN,WAAY,CAAA,GAAA,CAAA,CAAA;AAEd,IAAA,mBAAA,CACE,qBACA,EAAA,eAAA,EACA,KAAM,CAAA,gBAAA,EACN,WAAY,CAAA,GAAA,CAAA,CAAA;AAEd,IAAiB,gBAAA,CAAA,MAAA,EAAA,CAAA;AAAA,GAEnB,EAAA;AAAA,IACE,KAAM,CAAA,UAAA;AAAA,IACN,KAAM,CAAA,iBAAA;AAAA,IACN,KAAM,CAAA,mBAAA;AAAA,IACN,KAAM,CAAA,eAAA;AAAA,IACN,WAAA;AAAA,GAAA,CAAA,CAAA;AAIJ,EAAA,OAAO,CAAE,YAAA,CAAA,CAAA;AAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSingleBox.js","sources":["../../../../src/components/pointCloudView/hooks/useSingleBox.ts"],"sourcesContent":["import { IPointCloudBox, PartialIPointCloudBoxList } from '@labelbee/lb-utils';\nimport { useCallback, useContext, useMemo } from 'react';\nimport _ from 'lodash';\nimport { PointCloudContext } from '../PointCloudContext';\nimport { cAnnotation } from '@labelbee/lb-annotation';\nimport { useHistory } from './useHistory';\nimport { usePolygon } from './usePolygon';\n\nconst { ESortDirection } = cAnnotation;\n\n/** Actions for single selected box */\nexport const useSingleBox = () => {\n const {\n pointCloudBoxList,\n setPointCloudResult,\n topViewInstance,\n backViewInstance,\n sideViewInstance,\n selectedIDs,\n selectedID,\n mainViewInstance,\n setSelectedIDs,\n syncAllViewPointCloudColor,\n polygonList,\n } = useContext(PointCloudContext);\n const { selectedPolygon, updateSelectedPolygon, updatePolygonValidByID, deletePolygon } =\n usePolygon();\n\n const { pushHistoryWithList } = useHistory();\n\n /** Returns { info: selected box, index: selected box index } */\n const selectedBox = useMemo(() => {\n const boxIndex = pointCloudBoxList.findIndex((i: { id: string }) => i.id === selectedID);\n if (boxIndex > -1) {\n return { info: pointCloudBoxList[boxIndex], index: boxIndex };\n }\n }, [selectedID, pointCloudBoxList]);\n\n /** Use Partial<IPointCloudBox> to update selected box */\n const updateSelectedBox = useCallback(\n (params: Partial<IPointCloudBox>) => {\n if (selectedBox?.info) {\n pointCloudBoxList.splice(selectedBox.index, 1, _.merge(selectedBox.info, params));\n const newPointCloudBoxList = _.cloneDeep(pointCloudBoxList);\n setPointCloudResult(newPointCloudBoxList);\n pushHistoryWithList({ pointCloudBoxList: newPointCloudBoxList });\n return newPointCloudBoxList;\n }\n\n return pointCloudBoxList;\n },\n [selectedID, pointCloudBoxList],\n );\n\n /** Use Partial<IPointCloudBox> to update box by ID */\n const updateBoxByID = useCallback(\n (params: Partial<IPointCloudBox>, id: string) => {\n const boxIndex = pointCloudBoxList.findIndex((v) => v.id === id);\n\n if (boxIndex > -1) {\n pointCloudBoxList.splice(boxIndex, 1, _.merge(pointCloudBoxList[boxIndex], params));\n const newPointCloudBoxList = _.cloneDeep(pointCloudBoxList);\n setPointCloudResult(newPointCloudBoxList);\n return newPointCloudBoxList;\n }\n return pointCloudBoxList;\n },\n [pointCloudBoxList],\n );\n\n /**\n * Change all polygonView Valid.\n */\n const changePolygonViewValid = useCallback(\n (id: string) => {\n topViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(id, true);\n sideViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(id, true);\n backViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(id, true);\n },\n [topViewInstance, sideViewInstance, backViewInstance],\n );\n\n /** Toggle selected box‘s validity */\n const changeSelectedBoxValid = useCallback(() => {\n if (selectedBox?.info) {\n const { id, valid = true } = selectedBox.info;\n\n // PointCloud\n const newPointCloudList = updateSelectedBox({ valid: !valid });\n\n // Async\n syncAllViewPointCloudColor(newPointCloudList);\n changePolygonViewValid(id);\n }\n\n if (selectedPolygon) {\n updateSelectedPolygon({ ...selectedPolygon, valid: !selectedPolygon.valid });\n topViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(selectedPolygon.id, true);\n }\n }, [changePolygonViewValid, selectedBox, selectedPolygon]);\n\n const changeValidByID = useCallback(\n (id: string) => {\n const boxInfo = pointCloudBoxList.find((v) => v.id === id);\n\n if (boxInfo) {\n const { id, valid = true } = boxInfo;\n\n // PointCloud\n const newPointCloudBoxList = updateBoxByID({ valid: !valid }, id);\n\n changePolygonViewValid(id);\n\n return newPointCloudBoxList;\n }\n updatePolygonValidByID(id);\n },\n [changePolygonViewValid, pointCloudBoxList, polygonList],\n );\n\n /** PointCloud select next/prev one */\n const switchToNextBox = useCallback(\n (sort = ESortDirection.ascend) => {\n if (!topViewInstance || selectedIDs.length > 1) {\n return;\n }\n\n const { pointCloud2dOperation } = topViewInstance;\n\n const newSelectedIDs = pointCloud2dOperation.switchToNextPolygon(sort);\n if (newSelectedIDs) {\n setSelectedIDs(newSelectedIDs);\n }\n },\n [topViewInstance],\n );\n\n const selectPrevBox = () => {\n switchToNextBox(ESortDirection.descend);\n };\n\n const deletePointCloudBox = (id: string) => {\n const newPointCloudList = pointCloudBoxList.filter((v) => v.id !== id);\n setPointCloudResult(newPointCloudList);\n mainViewInstance?.removeObjectByName(id);\n mainViewInstance?.render();\n syncAllViewPointCloudColor(newPointCloudList);\n };\n\n /**\n * Delete all polygon by hotkey.\n */\n const deleteSelectedPointCloudBoxAndPolygon = () => {\n if (selectedBox) {\n deletePointCloudBox(selectedBox.info.id);\n topViewInstance?.pointCloud2dOperation.deletePolygon(selectedBox.info.id);\n }\n\n if (selectedPolygon) {\n deletePolygon(selectedPolygon.id);\n topViewInstance?.pointCloud2dOperation.deletePolygon(selectedPolygon.id);\n }\n };\n\n /**\n * According to selectedIDs, return selected pointCloudList\n * @returns pointCloudList {IPointCloudBoxList}\n */\n const selectedBoxes = useMemo(() => {\n return pointCloudBoxList.filter((i) => selectedIDs.includes(i.id));\n }, [selectedIDs, pointCloudBoxList]);\n\n /**\n * Update point cloud boxes list by updateList\n * @param updateList {PartialIPointCloudBoxList}\n */\n const updateSelectedBoxes = useCallback(\n (updateList: PartialIPointCloudBoxList) => {\n const newPointCloudBoxList = _.cloneDeep(pointCloudBoxList);\n let hasModify = false;\n\n updateList.forEach((i) => {\n const index = newPointCloudBoxList.findIndex((p) => p.id === i.id);\n\n if (index > -1) {\n const updatedBoxParam = _.merge(newPointCloudBoxList[index], i);\n newPointCloudBoxList.splice(index, 1, updatedBoxParam);\n mainViewInstance?.generateBox(updatedBoxParam);\n hasModify = true;\n }\n });\n\n if (hasModify) {\n setPointCloudResult(newPointCloudBoxList);\n pushHistoryWithList({ pointCloudBoxList: newPointCloudBoxList });\n mainViewInstance?.render();\n return newPointCloudBoxList;\n }\n },\n\n [selectedIDs, pointCloudBoxList],\n );\n\n /**\n * @param id {string}\n * @returns pointCloud {IPointCloudBox | undefined }\n */\n const getPointCloudByID = useCallback(\n (id: string) => {\n return pointCloudBoxList.find((i) => i.id === id);\n },\n [pointCloudBoxList],\n );\n\n return {\n selectedBox,\n updateSelectedBox,\n changeSelectedBoxValid,\n changeValidByID,\n selectNextBox: switchToNextBox,\n selectPrevBox,\n deletePointCloudBox,\n selectedBoxes,\n updateSelectedBoxes,\n getPointCloudByID,\n deleteSelectedPointCloudBoxAndPolygon,\n };\n};\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useStatus.js","sources":["../../../../src/components/pointCloudView/hooks/useStatus.ts"],"sourcesContent":["/**\n * @file Update PointCloud Status\n * @createDate 2022-08-26\n * @author Ron <ron.f.luo@gmail.com>\n */\n\nimport { useContext } from 'react';\nimport { PointCloudContext } from '../PointCloudContext';\nimport { cTool } from '@labelbee/lb-annotation';\nimport { useHistory } from './useHistory';\n\nconst { EToolName, EPolygonPattern } = cTool;\n\nexport const useStatus = () => {\n const {\n topViewInstance,\n mainViewInstance,\n pointCloudBoxList,\n setPointCloudResult,\n setPolygonList,\n pointCloudPattern,\n setPointCloudPattern,\n syncAllViewPointCloudColor\n } = useContext(PointCloudContext);\n const { pushHistoryWithList } = useHistory();\n\n // Clear All PointView Data\n const clearAllResult = () => {\n pointCloudBoxList.forEach((v) => {\n mainViewInstance?.removeObjectByName(v.id);\n });\n mainViewInstance?.render();\n\n setPointCloudResult([]);\n setPolygonList([]);\n\n topViewInstance?.pointCloud2dOperation.clearActiveStatus();\n topViewInstance?.pointCloud2dOperation.clearResult();\n\n syncAllViewPointCloudColor([]);\n\n // Add History\n pushHistoryWithList({ pointCloudBoxList: [], polygonList: [] });\n };\n\n const updatePointCloudPattern = (toolName: any) => {\n if (toolName === pointCloudPattern) {\n return;\n }\n\n switch (toolName) {\n case EToolName.Rect:\n topViewInstance?.switchToCanvas(EToolName.PointCloudPolygon)\n topViewInstance?.toolInstance.setPattern(EPolygonPattern.Rect)\n // polygon2dOperation.setPattern(EPolygonPattern.Rect);\n setPointCloudPattern(EToolName.Rect);\n break;\n case EToolName.Polygon:\n topViewInstance?.switchToCanvas(EToolName.PointCloudPolygon)\n topViewInstance?.toolInstance.setPattern(EPolygonPattern.Normal)\n // polygon2dOperation.setPattern(EPolygonPattern.Normal);\n setPointCloudPattern(EToolName.Polygon);\n break;\n case EToolName.Point:\n // polygon2dOperation.setPattern(EPolygonPattern.Point);\n topViewInstance?.switchToCanvas(EToolName.Point)\n setPointCloudPattern(EToolName.Point);\n break;\n case EToolName.Line:\n topViewInstance?.switchToCanvas(EToolName.Line)\n setPointCloudPattern(EToolName.Line);\n break;\n }\n };\n\n return {\n clearAllResult,\n updatePointCloudPattern,\n pointCloudPattern,\n };\n};\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useZoom.js","sources":["../../../../src/components/pointCloudView/hooks/useZoom.ts"],"sourcesContent":["/**\n * @file Zoom Updated by PointCloud\n * @createDate 2022-09-04\n * @author Ron <ron.f.luo@gmail.com>\n */\n import { useContext } from 'react';\n import { PointCloudContext } from '../PointCloudContext';\n\nexport const useZoom = () => {\n const { topViewInstance } = useContext(PointCloudContext);\n const { zoom, setZoom } = useContext(PointCloudContext); \n\n const initialPosition = () => {\n topViewInstance?.pointCloud2dOperation.initImgPos();\n };\n\n const zoomOut = () => {\n topViewInstance?.pointCloud2dOperation.zoomChanged(false);\n };\n\n const zoomIn = () => {\n topViewInstance?.pointCloud2dOperation.zoomChanged(true);\n };\n\n return {\n zoom, \n setZoom,\n initialPosition,\n zoomOut,\n zoomIn\n }\n}\n"],"names":[],"mappings":";;;AAQO,MAAM,UAAU,MAAM;AAC3B,EAAM,MAAA,CAAE,mBAAoB,UAAW,CAAA,iBAAA,CAAA,CAAA;AACvC,EAAM,MAAA,CAAE,IAAM,EAAA,OAAA,CAAA,GAAY,UAAW,CAAA,iBAAA,CAAA,CAAA;AAErC,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAiB,qBAAsB,CAAA,UAAA,EAAA,CAAA;AAAA,GAAA,CAAA;AAGzC,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAiB,sBAAsB,WAAY,CAAA,KAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAGrD,EAAA,MAAM,SAAS,MAAM;AACnB,IAAA,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAiB,sBAAsB,WAAY,CAAA,IAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAGrD,EAAO,OAAA;AAAA,IACL,IAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,GAAA,CAAA;AAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/pointCloudView/index.tsx"],"sourcesContent":["/*\n * @Author: Laoluo luozefeng@sensetime.com\n * @Date: 2022-07-04 14:39:44\n * @LastEditors: Laoluo luozefeng@sensetime.com\n * @LastEditTime: 2022-07-08 10:01:08\n */\n/**\n * @author Glenfiddish <edwinlee0927@hotmail.com>\n * @file Point cloud tool view\n * Includes 2D-view、3Dview、top-view、side-view、back-view\n * @date 2022-06-21\n */\n\nimport { getClassName } from '@/utils/dom';\nimport React from 'react';\nimport PointCloud3DView from './PointCloud3DView';\nimport PointCloudBackView from './PointCloudBackView';\nimport PointCloudTopView from './PointCloudTopView';\nimport PointCloudSideView from './PointCloudSideView';\nimport PointCloud2DView from './PointCloud2DView';\nimport PointCloudListener from './PointCloudListener';\nimport { AppState } from '@/store';\nimport { connect } from 'react-redux';\nimport { IFileItem } from '@/types/data';\nimport { LabelBeeContext } from '@/store/ctx';\nimport {\n AnnotatedAttributesPanelFixedLeft,\n AnnotatedAttributesPanelFixedRight,\n} from '@/views/MainView/toolFooter/AnnotatedAttributes';\nimport { TDrawLayerSlot } from '@/types/main';\n\ninterface IProps {\n imgList: IFileItem[];\n drawLayerSlot?: TDrawLayerSlot;\n checkMode?: boolean;\n intelligentFit?: boolean;\n}\n\nconst PointCloudView: React.FC<IProps> = ({\n imgList,\n drawLayerSlot,\n checkMode,\n intelligentFit,\n}) => {\n if (imgList.length === 0) {\n return null;\n }\n\n return (\n <>\n <PointCloudListener checkMode={checkMode} />\n <div className={getClassName('point-cloud-layout')} onContextMenu={(e) => e.preventDefault()}>\n <div className={getClassName('point-cloud-wrapper')}>\n <AnnotatedAttributesPanelFixedLeft />\n\n <div className={getClassName('point-cloud-content')}>\n <div className={getClassName('point-cloud-container', 'left')}>\n <PointCloud2DView />\n <PointCloud3DView />\n </div>\n\n <div className={getClassName('point-cloud-container', 'right')}>\n <PointCloudTopView\n drawLayerSlot={drawLayerSlot}\n checkMode={checkMode}\n intelligentFit={intelligentFit}\n />\n <div className={getClassName('point-cloud-container', 'right-bottom')}>\n <PointCloudSideView checkMode={checkMode} />\n <PointCloudBackView checkMode={checkMode} />\n </div>\n </div>\n </div>\n\n <AnnotatedAttributesPanelFixedRight />\n </div>\n </div>\n </>\n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n imgList: state.annotation.imgList,\n});\n\nexport default connect(mapStateToProps, null, null, { context: LabelBeeContext })(PointCloudView);\n"],"names":[],"mappings":";;;;;;;;;;;;AAsCA,MAAM,iBAAmC,CAAC;AAAA,EACxC,OAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,CACI,KAAA;AACJ,EAAI,IAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;AACxB,IAAO,OAAA,IAAA,CAAA;AAAA,GAAA;AAGT,EACE,uBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,sCACG,kBAAD,EAAA;AAAA,IAAoB,SAAA;AAAA,GAAA,CAAA,sCACnB,KAAD,EAAA;AAAA,IAAK,WAAW,YAAa,CAAA,oBAAA,CAAA;AAAA,IAAuB,aAAA,EAAe,CAAC,CAAA,KAAM,CAAE,CAAA,cAAA,EAAA;AAAA,GAAA,sCACzE,KAAD,EAAA;AAAA,IAAK,WAAW,YAAa,CAAA,qBAAA,CAAA;AAAA,GAAA,kBAC1B,KAAA,CAAA,aAAA,CAAA,iCAAA,EAAD,IAEA,CAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA;AAAA,IAAK,WAAW,YAAa,CAAA,qBAAA,CAAA;AAAA,GAAA,sCAC1B,KAAD,EAAA;AAAA,IAAK,SAAA,EAAW,aAAa,uBAAyB,EAAA,MAAA,CAAA;AAAA,GAAA,sCACnD,gBAAD,EAAA,IAAA,CAAA,sCACC,gBAAD,EAAA,IAAA,CAAA,CAAA,sCAGD,KAAD,EAAA;AAAA,IAAK,SAAA,EAAW,aAAa,uBAAyB,EAAA,OAAA,CAAA;AAAA,GAAA,sCACnD,iBAAD,EAAA;AAAA,IACE,aAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAA;AAAA,GAAA,CAAA,sCAED,KAAD,EAAA;AAAA,IAAK,SAAA,EAAW,aAAa,uBAAyB,EAAA,cAAA,CAAA;AAAA,GAAA,sCACnD,kBAAD,EAAA;AAAA,IAAoB,SAAA;AAAA,GAAA,CAAA,sCACnB,kBAAD,EAAA;AAAA,IAAoB,SAAA;AAAA,GAAA,CAAA,CAAA,CAAA,CAAA,sCAKzB,kCAAD,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAOV,MAAM,eAAA,GAAkB,CAAC,KAAqB,MAAA;AAAA,EAC5C,OAAA,EAAS,MAAM,UAAW,CAAA,OAAA;AAAA,CAAA,CAAA,CAAA;AAG5B,uBAAe,QAAQ,eAAiB,EAAA,IAAA,EAAM,IAAM,EAAA,CAAE,SAAS,eAAmB,CAAA,CAAA,CAAA,cAAA,CAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/predictTracking/predictTrackingIcon/index.tsx"],"sourcesContent":["import { Button, message } from 'antd';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\n\nimport icon from '@/assets/predictTracking/icon.svg';\nimport { useSingleBox } from '@/components/pointCloudView/hooks/useSingleBox';\nimport { AppState } from '@/store';\nimport {\n ChangeSave,\n GetBoxesByID,\n SetPointCloudLoading,\n SetPredictResult,\n SetPredictResultVisible,\n} from '@/store/annotation/actionCreators';\nimport { LabelBeeContext, useDispatch } from '@/store/ctx';\n\nimport { predict } from '../previewResult/util';\n\nconst PredictTrackingIcon = (props: { loading: boolean }) => {\n const dispatch = useDispatch();\n const { t } = useTranslation();\n\n const { loading } = props;\n const { selectedBox } = useSingleBox();\n\n const handler = async () => {\n if (loading) {\n return;\n }\n\n const selectedBoxTrackID = selectedBox?.info.trackID;\n\n if (!selectedBoxTrackID) {\n message.error(t('BeforePredictStarting'));\n return;\n }\n\n await dispatch(ChangeSave);\n\n const boxes: any = await dispatch(GetBoxesByID(selectedBoxTrackID));\n\n if (boxes.length < 2) {\n message.error(t('BeforePredictStarting'));\n return;\n }\n\n const start = boxes[boxes.length - 2];\n const end = boxes[boxes.length - 1];\n\n const difference = end.index - start.index;\n\n if (difference < 2) {\n message.error(t('BeforePredictStarting'));\n return;\n }\n\n if (difference > 8) {\n message.error(t('ThePredictedPointCloud'));\n return;\n }\n\n SetPointCloudLoading(dispatch, true);\n const result = predict(start, end);\n SetPredictResult(dispatch, result);\n SetPredictResultVisible(dispatch, true);\n };\n\n return (\n <Button\n type='link'\n onClick={handler}\n style={{\n display: 'flex',\n flexDirection: 'column',\n height: 'auto',\n alignItems: 'center',\n }}\n >\n <img src={icon} style={{ alignSelf: 'center' }} />\n <span style={{ color: '#797979' }}>{t('ComplementaryTracking')}</span>\n </Button>\n );\n};\n\nconst mapStateToProps = (state: AppState) => {\n return {\n loading: state.annotation.loading,\n };\n};\n\nexport default connect(mapStateToProps, null, null, { context: LabelBeeContext })(\n PredictTrackingIcon,\n);\n"],"names":["this","icon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,MAAM,mBAAA,GAAsB,CAAC,KAAgC,KAAA;AAC3D,EAAA,MAAM,QAAW,GAAA,WAAA,EAAA,CAAA;AACjB,EAAA,MAAM,CAAE,CAAM,CAAA,GAAA,cAAA,EAAA,CAAA;AAEd,EAAA,MAAM,CAAE,OAAY,CAAA,GAAA,KAAA,CAAA;AACpB,EAAA,MAAM,CAAE,WAAgB,CAAA,GAAA,YAAA,EAAA,CAAA;AAExB,EAAA,MAAM,UAAU,MAAY,OAAA,CAAAA,SAAA,EAAA,IAAA,EAAA,aAAA;AAC1B,IAAA,IAAI,OAAS,EAAA;AACX,MAAA,OAAA;AAAA,KAAA;AAGF,IAAM,MAAA,kBAAA,GAAqB,2CAAa,IAAK,CAAA,OAAA,CAAA;AAE7C,IAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,MAAA,OAAA,CAAQ,MAAM,CAAE,CAAA,uBAAA,CAAA,CAAA,CAAA;AAChB,MAAA,OAAA;AAAA,KAAA;AAGF,IAAA,MAAM,QAAS,CAAA,UAAA,CAAA,CAAA;AAEf,IAAM,MAAA,KAAA,GAAa,MAAM,QAAA,CAAS,YAAa,CAAA,kBAAA,CAAA,CAAA,CAAA;AAE/C,IAAI,IAAA,KAAA,CAAM,SAAS,CAAG,EAAA;AACpB,MAAA,OAAA,CAAQ,MAAM,CAAE,CAAA,uBAAA,CAAA,CAAA,CAAA;AAChB,MAAA,OAAA;AAAA,KAAA;AAGF,IAAM,MAAA,KAAA,GAAQ,KAAM,CAAA,KAAA,CAAM,MAAS,GAAA,CAAA,CAAA,CAAA;AACnC,IAAM,MAAA,GAAA,GAAM,KAAM,CAAA,KAAA,CAAM,MAAS,GAAA,CAAA,CAAA,CAAA;AAEjC,IAAM,MAAA,UAAA,GAAa,GAAI,CAAA,KAAA,GAAQ,KAAM,CAAA,KAAA,CAAA;AAErC,IAAA,IAAI,aAAa,CAAG,EAAA;AAClB,MAAA,OAAA,CAAQ,MAAM,CAAE,CAAA,uBAAA,CAAA,CAAA,CAAA;AAChB,MAAA,OAAA;AAAA,KAAA;AAGF,IAAA,IAAI,aAAa,CAAG,EAAA;AAClB,MAAA,OAAA,CAAQ,MAAM,CAAE,CAAA,wBAAA,CAAA,CAAA,CAAA;AAChB,MAAA,OAAA;AAAA,KAAA;AAGF,IAAA,oBAAA,CAAqB,QAAU,EAAA,IAAA,CAAA,CAAA;AAC/B,IAAM,MAAA,MAAA,GAAS,QAAQ,KAAO,EAAA,GAAA,CAAA,CAAA;AAC9B,IAAA,gBAAA,CAAiB,QAAU,EAAA,MAAA,CAAA,CAAA;AAC3B,IAAA,uBAAA,CAAwB,QAAU,EAAA,IAAA,CAAA,CAAA;AAAA,GAAA,CAAA,CAAA;AAGpC,EAAA,2CACG,MAAD,EAAA;AAAA,IACE,IAAK,EAAA,MAAA;AAAA,IACL,OAAS,EAAA,OAAA;AAAA,IACT,KAAO,EAAA;AAAA,MACL,OAAS,EAAA,MAAA;AAAA,MACT,aAAe,EAAA,QAAA;AAAA,MACf,MAAQ,EAAA,MAAA;AAAA,MACR,UAAY,EAAA,QAAA;AAAA,KAAA;AAAA,GAAA,sCAGb,KAAD,EAAA;AAAA,IAAK,GAAK,EAAAC,GAAA;AAAA,IAAM,KAAA,EAAO,CAAE,SAAW,EAAA,QAAA,CAAA;AAAA,GAAA,CAAA,sCACnC,MAAD,EAAA;AAAA,IAAM,KAAA,EAAO,CAAE,KAAO,EAAA,SAAA,CAAA;AAAA,GAAA,EAAc,CAAE,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAK5C,MAAM,eAAA,GAAkB,CAAC,KAAoB,KAAA;AAC3C,EAAO,OAAA;AAAA,IACL,OAAA,EAAS,MAAM,UAAW,CAAA,OAAA;AAAA,GAAA,CAAA;AAAA,CAAA,CAAA;AAI9B,4BAAe,QAAQ,eAAiB,EAAA,IAAA,EAAM,IAAM,EAAA,CAAE,SAAS,eAC7D,CAAA,CAAA,CAAA,mBAAA,CAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/predictTracking/previewResult/index.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport _ from 'lodash';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\n\nimport { PointCloudContext } from '@/components/pointCloudView/PointCloudContext';\nimport { AppState } from '@/store';\nimport {\n BatchUpdateImgListResultByPredictResult,\n SetPointCloudLoading,\n SetPredictResult,\n SetPredictResultVisible,\n} from '@/store/annotation/actionCreators';\nimport { IPointCloudBoxWithIndex } from '@/store/annotation/types';\nimport { LabelBeeContext, useDispatch } from '@/store/ctx';\nimport { IFileItem } from '@/types/data';\nimport { getClassName } from '@/utils/dom';\nimport { PointCloud } from '@labelbee/lb-annotation';\nimport { toolStyleConverter } from '@labelbee/lb-utils';\n\nimport { getViewsDataUrl, IBox, sleep, views } from './util';\n\ninterface IProps {\n imgList: IFileItem[];\n predictionResultVisible: boolean;\n predictionResult: IPointCloudBoxWithIndex[];\n}\n\nconst PreviewResult = (props: IProps) => {\n const { predictionResult, predictionResultVisible, imgList } = props;\n\n const [list, setList] = useState<IBox[]>([]);\n const dispatch = useDispatch();\n const { t } = useTranslation();\n\n const close = () => {\n SetPredictResultVisible(dispatch, false);\n SetPredictResult(dispatch, []);\n setList([]);\n };\n\n const apply = async () => {\n SetPointCloudLoading(dispatch, true);\n await dispatch(BatchUpdateImgListResultByPredictResult());\n SetPointCloudLoading(dispatch, false);\n close();\n };\n\n return predictionResultVisible ? (\n <>\n {list.length > 0 && (\n <div className={getClassName('point-cloud-predict-tracking-container')}>\n <div className={getClassName('point-cloud-predict-tracking-container', 'bar')}>\n <div className={getClassName('point-cloud-predict-tracking-container', 'title')}>\n <div>\n {t('ComplementaryTrackingPrediction')}\n {list.length > 0 ? `(${list.length})` : ''}\n </div>\n <div className={getClassName('point-cloud-predict-tracking-container', 'option')}>\n <div\n className={classNames([\n getClassName('point-cloud-predict-tracking-container', 'cancelOption'),\n getClassName('point-cloud-predict-tracking-container', 'button'),\n ])}\n onClick={close}\n >\n {t('Cancel')}\n </div>\n\n <div\n className={classNames([\n getClassName('point-cloud-predict-tracking-container', 'okOption'),\n getClassName('point-cloud-predict-tracking-container', 'button'),\n ])}\n onClick={apply}\n >\n {t('Apply')}\n </div>\n </div>\n </div>\n\n <div className={getClassName('point-cloud-predict-tracking-container', 'content')}>\n <Result list={list} />\n </div>\n </div>\n </div>\n )}\n {predictionResult.length > 0 && (\n <GenerateViewsDataUrl result={predictionResult} imgList={imgList} setList={setList} />\n )}\n </>\n ) : null;\n};\n\nconst Result = (props: { list: IBox[] }) => {\n const { list } = props;\n const { t } = useTranslation();\n const viewsTitle = [t('TopView'), t('SideView'), t('BackView')];\n\n return (\n <>\n <div className={getClassName('point-cloud-predict-tracking-container', 'left')}>\n {viewsTitle.map((i) => (\n <div className={getClassName('point-cloud-predict-tracking-container', 'title')} key={i}>\n {i}\n </div>\n ))}\n </div>\n <div className={getClassName('point-cloud-predict-tracking-container', 'right')}>\n {list.map((i) => {\n return (\n <div\n className={getClassName('point-cloud-predict-tracking-container', 'item')}\n key={i.id}\n >\n {views.map((view) => {\n const url = i[view];\n return (\n <div\n className={getClassName('point-cloud-predict-tracking-container', 'view')}\n key={`${i.id}-${view}`}\n >\n <img src={url} />\n </div>\n );\n })}\n </div>\n );\n })}\n </div>\n </>\n );\n};\n\nconst GenerateViewsDataUrl = (props: {\n result: IPointCloudBoxWithIndex[];\n imgList: IFileItem[];\n setList: (list: IBox[]) => void;\n}) => {\n const ptCtx = React.useContext(PointCloudContext);\n const dispatch = useDispatch();\n\n const { result, imgList, setList } = props;\n\n const ref = useRef<HTMLDivElement>(null);\n\n const size = {\n width: 600,\n height: 600,\n };\n\n useEffect(() => {\n const generate = async () => {\n const config = ptCtx.mainViewInstance?.config;\n\n if (config && ref.current) {\n const orthographicParams = {\n left: -size.width / 2,\n right: size.width / 2,\n top: size.height / 2,\n bottom: -size.height / 2,\n near: 200,\n far: -200,\n };\n\n const pointCloud = new PointCloud({\n container: ref.current,\n isOrthographicCamera: true,\n orthographicParams,\n config,\n });\n\n pointCloud.setShowDirection(false);\n\n for (const item of result) {\n const { index } = item;\n\n const url = imgList[index].url\n ? imgList[index].url\n : // @ts-ignore\n imgList[index]?.webPointCloudFile?.lidar?.url ?? '';\n\n await pointCloud.loadPCDFileByBox(url, item, {\n width: 2,\n height: 2,\n depth: 2,\n });\n\n await pointCloud.updateCameraZoom(ptCtx.zoom);\n\n const hex = toolStyleConverter.getColorFromConfig(\n { attribute: item.attribute },\n { ...config, attributeConfigurable: true },\n {},\n )?.hex;\n\n pointCloud.generateBox(item, hex);\n // TODO\n // getViewsDataUrl requires pointCloud to finish loading the 3D view, otherwise it will not capture the correct image\n await sleep(500);\n await getViewsDataUrl(pointCloud, item, ptCtx.zoom);\n await pointCloud.removeObjectByName(item.id);\n await pointCloud.clearPointCloudAndRender();\n }\n\n setList(result);\n SetPointCloudLoading(dispatch, false);\n }\n };\n\n generate();\n }, []);\n\n return <div style={size} ref={ref} className='generate-view' />;\n};\n\nconst mapStateToProps = (state: AppState) => ({\n predictionResult: state.annotation.predictionResult,\n predictionResultVisible: state.annotation.predictionResultVisible,\n imgList: state.annotation.imgList,\n});\n\nexport default connect(mapStateToProps, null, null, { context: LabelBeeContext })(PreviewResult);\n"],"names":["this"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.js","sources":["../../../../src/components/predictTracking/previewResult/util.ts"],"sourcesContent":["import { IPointCloudBoxWithIndex } from '@/store/annotation/types';\nimport { IFileItem } from '@/types/data';\nimport { jsonParser } from '@/utils';\nimport { PointCloud, uuid } from '@labelbee/lb-annotation';\nimport { EPerspectiveView, IPointCloudBox } from '@labelbee/lb-utils';\n\nconst EXAMPLE_IMAGE_SIZE = {\n width: 160,\n height: 110,\n} as const;\n\n/**\n * Returns a data URL for an image of the rendered point cloud.\n * @param renderer - The PointCloud renderer to use.\n * @param zoom - The zoom level of the image. Defaults to 2.\n * @returns A Promise resolving to a string data URL of the rendered image.\n */\nconst getDataUrl = async (renderer: PointCloud['renderer'], zoom = 2) => {\n return cropAndEnlarge(\n renderer.domElement,\n EXAMPLE_IMAGE_SIZE.width,\n EXAMPLE_IMAGE_SIZE.height,\n zoom,\n );\n};\n\n/**\n * Returns a Promise that resolves after the specified duration.\n * @param ms - The duration to sleep, in milliseconds.\n * @returns A Promise that resolves after `ms` milliseconds.\n */\nexport const sleep = (time = 300) => {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve('');\n }, time);\n });\n};\n\nexport const views = [EPerspectiveView.Top, EPerspectiveView.Left, EPerspectiveView.Back] as const;\n\ninterface viewDataUrl {\n [EPerspectiveView.Top]?: string;\n [EPerspectiveView.Left]?: string;\n [EPerspectiveView.Back]?: string;\n}\n\nexport type IBox = IPointCloudBoxWithIndex & viewDataUrl;\n\n/**\n * Generates data URLs for each view of a given point cloud object using the provided box and zoom level.\n *\n * @param {PointCloud} pointCloud - The point cloud object to generate data URLs for.\n * @param {IBox} box - An object representing the bounding box to use for calculating camera position.\n * @param {number} zoom - The zoom level to use when generating data URLs.\n * @returns {Promise<void>} - A promise that resolves once all data URLs have been generated.\n */\nexport const getViewsDataUrl = async (pointCloud: PointCloud, box: IBox, zoom: number) => {\n for (const view of views) {\n await pointCloud.updateCameraByBox(box, view);\n box[view] = await getDataUrl(pointCloud.renderer, zoom);\n }\n};\n\n/**\n * Creates a new canvas, crops and enlarges an existing canvas, draws the cropped and enlarged image onto the new canvas,\n * and returns the data URL of the new canvas.\n *\n * @param {HTMLCanvasElement} canvas - The original canvas to be cropped and enlarged\n * @param {number} width - The width of the area to be cropped from the center of the original canvas\n * @param {number} height - The height of the area to be cropped from the center of the original canvas\n * @param {number} scale - The amount by which to enlarge the cropped area\n * @returns {string} - A data URL of the cropped and enlarged image\n */\nconst cropAndEnlarge = (\n canvas: HTMLCanvasElement,\n width: number,\n height: number,\n scale: number,\n): string => {\n if (!canvas) {\n return '';\n }\n const centerX = canvas.width / 2;\n const centerY = canvas.height / 2;\n // Calculate starting coordinates for cropping\n const sx = centerX - width / 2;\n const sy = centerY - height / 2;\n\n // Create a new canvas for the cropped and enlarged image\n const newCanvas = document.createElement('canvas');\n newCanvas.width = width * scale;\n newCanvas.height = height * scale;\n\n // Draw the cropped and enlarged image onto the new canvas\n const newCtx = newCanvas.getContext('2d');\n newCtx?.drawImage(canvas, sx, sy, width, height, 0, 0, width * scale, height * scale);\n\n // Convert the new canvas to a data URL and return it\n return newCanvas.toDataURL();\n};\n\n/**\n * Retrieve boxes with a specific trackID from an array of file items.\n *\n * @param {Array} imageList - An array of file items to search through.\n * @param {Number} targetStep - The step number within the result object to retrieve boxes from.\n * @param {Number} selectedBoxTrackID - The trackID to match when searching for boxes.\n * @return {Array} An array of point cloud boxes that match the provided trackID, along with their index in the original array.\n */\nexport const getBoxesByTrackID = (\n imageList: IFileItem[],\n targetStep: number,\n selectedBoxTrackID: number,\n) => {\n const matchingBoxes: IPointCloudBoxWithIndex[] = [];\n imageList.forEach((element, index) => {\n const fileResult = jsonParser(element?.result);\n const stepResult = fileResult?.[`step_${targetStep}`]?.result;\n const box = stepResult?.find((item: IPointCloudBox) => item.trackID === selectedBoxTrackID);\n if (box) {\n matchingBoxes.push({ ...box, index });\n }\n });\n\n return matchingBoxes;\n};\n\n/**\n * Calculate predicted values for each field in between the start and end points.\n * @param {IPointCloudBoxWithIndex} start - The starting point, should have the same properties as IPointCloudBoxWithIndex.\n * @param {IPointCloudBoxWithIndex} end - The ending point, should have the same properties as IPointCloudBoxWithIndex.\n * @returns {IPointCloudBox[]} An array of objects with the same properties as IPointCloudBox, containing interpolated values between the start and end points for each field.\n */\nexport const predict = (start: IPointCloudBoxWithIndex, end: IPointCloudBoxWithIndex) => {\n const diff = end.index - start.index;\n const len = diff - 1;\n const result: IPointCloudBox[] = [];\n const map: { [key: string]: number[] } = {};\n const centerKeys = ['x', 'y', 'z'] as const;\n const predictKeys = ['center', 'depth', 'height', 'index', 'rotation', 'width'] as const;\n\n centerKeys.forEach((key) => {\n map[key] = getInteriorNumbersByStartAndEnd(start.center[key], end.center[key], len);\n });\n\n predictKeys.forEach((key) => {\n if (key === 'center') {\n return;\n }\n map[key] = getInteriorNumbersByStartAndEnd(start[key], end[key], len);\n });\n\n for (let i = 0; i < len; i++) {\n const nextCenter = centerKeys.reduce(\n (acc, key) => {\n acc[key] = map[key][i];\n return acc;\n },\n { x: 0, y: 0, z: 0 },\n );\n\n const nextValue = predictKeys.reduce(\n (acc, key) => {\n if (key === 'center') {\n return acc;\n }\n acc[key] = map[key][i];\n return acc;\n },\n { ...start, id: uuid(), center: nextCenter },\n );\n\n result.push(nextValue);\n }\n\n return result;\n};\n\n/**\n * Calculate an array of numbers between the start and end values.\n * @param {number} [start=0] - The starting value. Defaults to 0 if not specified.\n * @param {number} [end=0] - The ending value. Defaults to 0 if not specified.\n * @param {number} [length=0] - The number of values to calculate between the start and end points. Defaults to 0 if not specified.\n * @returns {number[]} An array of numbers, containing interpolated values between the start and end points.\n */\nconst getInteriorNumbersByStartAndEnd = (start = 0, end = 0, length = 0): number[] => {\n const step = (end - start) / (length + 1);\n const resultArr = new Array(length);\n for (let i = 0; i < length; i++) {\n resultArr[i] = start + step * (i + 1);\n }\n return resultArr;\n};\n"],"names":["this"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/videoAnnotate/index.tsx"],"sourcesContent":["/**\n * @author Glenfiddish <edwinlee0927@hotmail.com>\n * @file connect store & TagToolInstanceAdaptor\n * @date 2022-06-02\n */\n\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport { useDispatch, LabelBeeContext } from '@/store/ctx';\nimport { AppState } from '@/store';\nimport { ANNOTATION_ACTIONS } from '@/store/Actions';\nimport { AnnotationState } from '@/store/annotation/types';\nimport { PageBackward, PageForward, PageJump } from '@/store/annotation/actionCreators';\nimport { TagToolInstanceAdaptor } from '@/components/videoPlayer/TagToolInstanceAdaptor';\n\nconst VideoAnnotate: React.FC<{ annotation: AnnotationState }> = (props) => {\n const { imgList, imgIndex, stepList, step } = props.annotation;\n const dispatch = useDispatch();\n const onMounted = (instance: TagToolInstanceAdaptor) => {\n dispatch({\n type: ANNOTATION_ACTIONS.SET_TOOL,\n payload: {\n instance,\n },\n });\n };\n\n const onUnmounted = () => {\n dispatch({\n type: ANNOTATION_ACTIONS.SET_TOOL,\n payload: {\n instance: undefined,\n },\n });\n };\n\n return (\n <TagToolInstanceAdaptor\n imgIndex={imgIndex}\n imgList={imgList}\n pageBackward={() => dispatch(PageBackward())}\n pageForward={() => dispatch(PageForward())}\n pageJump={(page) => dispatch(PageJump(~~page))}\n onMounted={onMounted}\n onUnmounted={onUnmounted}\n stepList={stepList}\n step={step}\n />\n );\n};\n\nexport default connect(({ annotation }: AppState) => ({ annotation }), null, null, {\n context: LabelBeeContext,\n})(VideoAnnotate);\n"],"names":[],"mappings":";;;;;;;AAeA,MAAM,aAAA,GAA2D,CAAC,KAAU,KAAA;AAC1E,EAAA,MAAM,CAAE,OAAA,EAAS,QAAU,EAAA,QAAA,EAAU,QAAS,KAAM,CAAA,UAAA,CAAA;AACpD,EAAA,MAAM,QAAW,GAAA,WAAA,EAAA,CAAA;AACjB,EAAM,MAAA,SAAA,GAAY,CAAC,QAAqC,KAAA;AACtD,IAAS,QAAA,CAAA;AAAA,MACP,MAAM,kBAAmB,CAAA,QAAA;AAAA,MACzB,OAAS,EAAA;AAAA,QACP,QAAA;AAAA,OAAA;AAAA,KAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAKN,EAAA,MAAM,cAAc,MAAM;AACxB,IAAS,QAAA,CAAA;AAAA,MACP,MAAM,kBAAmB,CAAA,QAAA;AAAA,MACzB,OAAS,EAAA;AAAA,QACP,QAAU,EAAA,KAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAKhB,EAAA,2CACG,sBAAD,EAAA;AAAA,IACE,QAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA,EAAc,MAAM,QAAS,CAAA,YAAA,EAAA,CAAA;AAAA,IAC7B,WAAA,EAAa,MAAM,QAAS,CAAA,WAAA,EAAA,CAAA;AAAA,IAC5B,UAAU,CAAC,IAAA,KAAS,QAAS,CAAA,QAAA,CAAS,CAAC,CAAC,IAAA,CAAA,CAAA;AAAA,IACxC,SAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,GAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAKN,sBAAe,QAAQ,CAAC,CAAE,iBAA8B,CAAA,UAAA,CAAA,CAAA,EAAe,MAAM,IAAM,EAAA;AAAA,EACjF,OAAS,EAAA,eAAA;AAAA,CACR,CAAA,CAAA,aAAA,CAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TagToolInstanceAdaptor.js","sources":["../../../src/components/videoPlayer/TagToolInstanceAdaptor.tsx"],"sourcesContent":["/**\n * @file Implement TagTool interaction through class components.\n * Refer to: packages/lb-annotation/src/core/toolOperation/tagOperation.ts\n * @author Glenfiddish <edwinlee0927@hotmail.com>\n * @date 2022-05-31\n */\n\nimport React from 'react';\nimport { CommonToolUtils, uuid } from '@labelbee/lb-annotation';\nimport StepUtils from '@/utils/StepUtils';\nimport { jsonParser } from '@/utils';\nimport { VideoPlayer } from './index';\nimport { VideoTagLayer } from './VideoTagLayer';\nimport { IStepInfo } from '@/types/step';\nimport _ from 'lodash';\nimport type { ObjectString } from './types';\nimport { getKeyCodeNumber } from './utils';\nimport { IFileItem } from '@/types/data';\n\nexport interface IVideoTagInstanceAdaptorProps {\n imgIndex: number;\n imgList: IFileItem[];\n pageForward: () => void;\n pageJump: (page: string) => void;\n pageBackward: () => void;\n onMounted: (instance: TagToolInstanceAdaptor) => void;\n onUnmounted: () => void;\n step: number;\n stepList: IStepInfo[];\n}\n\ninterface IVideoTagInstanceAdaptorState {\n // TODO: Use ITagResult from 'lb-annotation'\n tagResult: any[];\n labelSelectedList: number[];\n valid: boolean;\n}\n\nexport class TagToolInstanceAdaptor extends React.Component<\n IVideoTagInstanceAdaptorProps,\n IVideoTagInstanceAdaptorState\n> {\n public fns: { [key: string]: () => void } = {};\n public videoRef?: HTMLVideoElement;\n public labelSelectedList: number[] = [];\n\n public constructor(props: IVideoTagInstanceAdaptorProps) {\n super(props);\n this.state = {\n tagResult: [],\n labelSelectedList: [],\n valid: true,\n };\n }\n\n public get config() {\n const stepInfo = StepUtils.getCurrentStepInfo(this.props.step, this.props.stepList);\n return jsonParser(stepInfo?.config);\n }\n\n /** Just implementation, no actual logic */\n public get history() {\n return { initRecord: () => {}, pushHistory: () => {} };\n }\n\n public get currentTagResult() {\n return this.state.tagResult[0] ?? {};\n }\n\n public get valid() {\n return this.state.valid;\n }\n\n public clearResult = (sendMsg = true, value?: string) => {\n const newTag = value\n ? this.state.tagResult.map((v) => {\n if (v?.result[value]) {\n delete v.result[value];\n }\n return v;\n })\n : [];\n\n this.setState(\n {\n tagResult: newTag,\n },\n () => this.emitEvent('render'),\n );\n };\n\n public exportData = () => {\n const duration = this.videoRef?.duration ?? 0;\n const videoQulity = this.videoRef?.getVideoPlaybackQuality();\n const frames = videoQulity?.totalVideoFrames;\n const videoWidth = this.videoRef?.videoWidth ?? 0;\n const videoHeight = this.videoRef?.videoHeight ?? 0;\n\n return [\n this.state.tagResult,\n { valid: this.state.valid, duration, frames, videoWidth, videoHeight },\n ];\n };\n\n public singleOn(event: string, func: () => void) {\n this.fns[event] = func;\n }\n\n public on(event: string, func: () => void) {\n this.singleOn(event, func);\n }\n\n public getTagResultByCode(num1: number, num2?: number) {\n try {\n const inputList = this.config?.inputList ?? [];\n const mulitTags = inputList.length > 1;\n const keycode1 = num2 !== undefined ? num1 : 0;\n const keycode2 = num2 !== undefined ? num2 : num1;\n const primaryTagConfig = mulitTags ? inputList[keycode1] : inputList[0];\n const secondaryTagConfig = (primaryTagConfig.subSelected ?? [])[keycode2];\n\n if (primaryTagConfig && secondaryTagConfig) {\n return {\n value: {\n key: primaryTagConfig.value,\n value: secondaryTagConfig.value,\n },\n isMulti: primaryTagConfig.isMulti,\n };\n }\n } catch {\n return;\n }\n }\n\n public setLabelBySelectedList(num1: number, num2?: number) {\n const newTagConfig = this.getTagResultByCode(num1, num2);\n\n if (newTagConfig) {\n const tagRes = this.combineResult(newTagConfig, this.state.tagResult[0]?.result ?? {});\n\n const tagResult = [\n {\n sourceID: CommonToolUtils.getSourceID(),\n id: this.currentTagResult?.id ?? uuid(8, 62),\n result: tagRes,\n },\n ];\n\n this.setState(\n {\n tagResult,\n },\n () => this.emitEvent('render'),\n );\n }\n }\n\n public emitEvent = (event: string) => {\n if (this.fns[event]) {\n this.fns[event]();\n }\n };\n\n /**\n * Combine result with inputValue and existValue\n * @param inputValue\n * @param existValue\n * @returns newValue\n */\n public combineResult = (\n inputValue: { value: { key: string; value: string }; isMulti: boolean },\n existValue: ObjectString = {},\n ) => {\n const { isMulti } = inputValue;\n const { key, value } = inputValue.value;\n\n if (isMulti) {\n let valuesArray = existValue[key]?.split(';') ?? [];\n if (valuesArray.includes(value)) {\n valuesArray = valuesArray.filter((i) => i !== value);\n } else {\n valuesArray.push(value);\n }\n\n const valuesSet = new Set(valuesArray);\n existValue[key] = Array.from(valuesSet).join(';');\n return _.pickBy(existValue, (v) => v);\n }\n\n existValue[key] = existValue[key] === value ? undefined : value;\n\n return _.pickBy(existValue, (v) => v);\n };\n\n public setResult = (tagResult: any[]) => {\n this.setState({\n tagResult,\n });\n\n if (this.fns['render']) {\n this.fns['render']();\n }\n };\n\n public setLabel = (num1: number, num2: number) => {\n this.setLabelBySelectedList(num1, num2);\n };\n\n /**\n * Keydown event for recording keycode input(numeric only)\n * @param event\n */\n public keydown = (event: KeyboardEvent) => {\n const keyCode = getKeyCodeNumber(event.keyCode);\n\n if (keyCode) {\n const keyIndex = keyCode - 1;\n\n if (this.config.inputList.length === 1) {\n // 说明标签只有一层\n this.labelSelectedList = [0, keyIndex];\n this.setLabel(0, keyIndex);\n setTimeout(() => {\n this.labelSelectedList = [];\n this.emitEvent('render');\n }, 500);\n\n return;\n }\n\n if (this.labelSelectedList.length === 1) {\n this.labelSelectedList = [this.labelSelectedList[0], keyIndex];\n this.setLabel(this.labelSelectedList[0], keyIndex);\n setTimeout(() => {\n this.labelSelectedList = [];\n this.emitEvent('render');\n }, 500);\n } else {\n this.labelSelectedList = [keyIndex];\n this.emitEvent('expend');\n }\n }\n };\n\n public setValid = (valid: boolean) => {\n this.setState({ valid });\n if (valid === false) {\n this.setState({ tagResult: [] });\n }\n\n this.emitEvent('render');\n };\n\n public componentDidMount() {\n document.addEventListener('keydown', this.keydown);\n this.props.onMounted(this);\n this.setResultFromImgList(this.props);\n }\n\n public componentWillUnmount() {\n document.addEventListener('keydown', this.keydown);\n this.props.onUnmounted();\n }\n\n public setResultFromImgList = (props: IVideoTagInstanceAdaptorProps) => {\n const { imgList, imgIndex, step } = props;\n\n if (!imgList[imgIndex]) {\n return;\n }\n const res = jsonParser(imgList[imgIndex].result);\n const stepRes = res[`step_${step}`];\n\n this.setState({\n tagResult: stepRes?.result ?? [],\n valid: res?.valid === undefined ? true : res.valid,\n });\n };\n\n /** Observer imgIndex and set tagResult */\n public shouldComponentUpdate(props: IVideoTagInstanceAdaptorProps) {\n if (props.imgIndex !== this.props.imgIndex) {\n this.setResultFromImgList(props);\n }\n return true;\n }\n\n public render() {\n const { imgIndex, imgList, pageForward, pageJump, pageBackward } = this.props;\n const { tagResult, valid } = this.state;\n\n return (\n <div style={{ height: '100%', width: '100%', position: 'relative' }}>\n <VideoPlayer\n imgIndex={imgIndex}\n imgList={imgList}\n pageBackward={pageBackward}\n pageForward={pageForward}\n pageJump={pageJump}\n valid={valid}\n setVideoRef={(video) => {\n this.videoRef = video;\n }}\n />\n <VideoTagLayer result={tagResult} inputList={this.config?.inputList} />\n </div>\n );\n }\n}\n"],"names":[],"mappings":";;;;;;;;;AAsCO,MAAA,sBAAA,SAAqC,MAAM,SAGhD,CAAA;AAAA,EAKO,YAAY,KAAsC,EAAA;AACvD,IAAM,KAAA,CAAA,KAAA,CAAA,CAAA;AALD,IAAqC,IAAA,CAAA,GAAA,GAAA,EAAA,CAAA;AAErC,IAA8B,IAAA,CAAA,iBAAA,GAAA,EAAA,CAAA;AA6B9B,IAAc,IAAA,CAAA,WAAA,GAAA,CAAC,OAAU,GAAA,IAAA,EAAM,KAAmB,KAAA;AACvD,MAAA,MAAM,SAAS,KACX,GAAA,IAAA,CAAK,MAAM,SAAU,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA;AAC9B,QAAI,IAAA,CAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,CAAA,CAAG,OAAO,KAAQ,CAAA,EAAA;AACpB,UAAA,OAAO,EAAE,MAAO,CAAA,KAAA,CAAA,CAAA;AAAA,SAAA;AAElB,QAAO,OAAA,CAAA,CAAA;AAAA,OAET,CAAA,GAAA,EAAA,CAAA;AAEJ,MAAA,IAAA,CAAK,QACH,CAAA;AAAA,QACE,SAAW,EAAA,MAAA;AAAA,OAEb,EAAA,MAAM,KAAK,SAAU,CAAA,QAAA,CAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAIlB,IAAA,IAAA,CAAA,UAAA,GAAa,MAAM;AA3F5B,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AA4FI,MAAA,MAAM,QAAW,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,QAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAe,aAAf,IAA2B,GAAA,EAAA,GAAA,CAAA,CAAA;AAC5C,MAAM,MAAA,WAAA,GAAc,CAAK,EAAA,GAAA,IAAA,CAAA,QAAA,KAAL,IAAe,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,uBAAA,EAAA,CAAA;AACnC,MAAA,MAAM,SAAS,WAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAA,gBAAA,CAAA;AAC5B,MAAA,MAAM,UAAa,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,QAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAe,eAAf,IAA6B,GAAA,EAAA,GAAA,CAAA,CAAA;AAChD,MAAA,MAAM,WAAc,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,QAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAe,gBAAf,IAA8B,GAAA,EAAA,GAAA,CAAA,CAAA;AAElD,MAAO,OAAA;AAAA,QACL,KAAK,KAAM,CAAA,SAAA;AAAA,QACX,CAAE,KAAO,EAAA,IAAA,CAAK,MAAM,KAAO,EAAA,QAAA,EAAU,QAAQ,UAAY,EAAA,WAAA,CAAA;AAAA,OAAA,CAAA;AAAA,KAAA,CAAA;AA0DtD,IAAA,IAAA,CAAA,SAAA,GAAY,CAAC,KAAkB,KAAA;AACpC,MAAI,IAAA,IAAA,CAAK,IAAI,KAAQ,CAAA,EAAA;AACnB,QAAA,IAAA,CAAK,GAAI,CAAA,KAAA,CAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA;AAUN,IAAgB,IAAA,CAAA,aAAA,GAAA,CACrB,UACA,EAAA,UAAA,GAA2B,EACxB,KAAA;AA7KP,MAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AA8KI,MAAA,MAAM,CAAE,OAAY,CAAA,GAAA,UAAA,CAAA;AACpB,MAAM,MAAA,CAAE,GAAK,EAAA,KAAA,CAAA,GAAU,UAAW,CAAA,KAAA,CAAA;AAElC,MAAA,IAAI,OAAS,EAAA;AACX,QAAA,IAAI,cAAc,CAAW,EAAA,GAAA,CAAA,EAAA,GAAA,UAAA,CAAA,GAAA,CAAA,KAAX,IAAiB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,CAAM,SAAvB,IAA+B,GAAA,EAAA,GAAA,EAAA,CAAA;AACjD,QAAI,IAAA,WAAA,CAAY,SAAS,KAAQ,CAAA,EAAA;AAC/B,UAAA,WAAA,GAAc,WAAY,CAAA,MAAA,CAAO,CAAC,CAAA,KAAM,CAAM,KAAA,KAAA,CAAA,CAAA;AAAA,SACzC,MAAA;AACL,UAAA,WAAA,CAAY,IAAK,CAAA,KAAA,CAAA,CAAA;AAAA,SAAA;AAGnB,QAAM,MAAA,SAAA,GAAY,IAAI,GAAI,CAAA,WAAA,CAAA,CAAA;AAC1B,QAAA,UAAA,CAAW,GAAO,CAAA,GAAA,KAAA,CAAM,IAAK,CAAA,SAAA,CAAA,CAAW,IAAK,CAAA,GAAA,CAAA,CAAA;AAC7C,QAAA,OAAO,CAAE,CAAA,MAAA,CAAO,UAAY,EAAA,CAAC,CAAM,KAAA,CAAA,CAAA,CAAA;AAAA,OAAA;AAGrC,MAAA,UAAA,CAAW,GAAO,CAAA,GAAA,UAAA,CAAW,GAAS,CAAA,KAAA,KAAA,GAAQ,KAAY,CAAA,GAAA,KAAA,CAAA;AAE1D,MAAA,OAAO,CAAE,CAAA,MAAA,CAAO,UAAY,EAAA,CAAC,CAAM,KAAA,CAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAG9B,IAAA,IAAA,CAAA,SAAA,GAAY,CAAC,SAAqB,KAAA;AACvC,MAAA,IAAA,CAAK,QAAS,CAAA;AAAA,QACZ,SAAA;AAAA,OAAA,CAAA,CAAA;AAGF,MAAI,IAAA,IAAA,CAAK,IAAI,QAAW,CAAA,EAAA;AACtB,QAAA,IAAA,CAAK,GAAI,CAAA,QAAA,CAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA;AAIN,IAAW,IAAA,CAAA,QAAA,GAAA,CAAC,MAAc,IAAiB,KAAA;AAChD,MAAA,IAAA,CAAK,uBAAuB,IAAM,EAAA,IAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAO7B,IAAA,IAAA,CAAA,OAAA,GAAU,CAAC,KAAyB,KAAA;AACzC,MAAM,MAAA,OAAA,GAAU,iBAAiB,KAAM,CAAA,OAAA,CAAA,CAAA;AAEvC,MAAA,IAAI,OAAS,EAAA;AACX,QAAA,MAAM,WAAW,OAAU,GAAA,CAAA,CAAA;AAE3B,QAAA,IAAI,IAAK,CAAA,MAAA,CAAO,SAAU,CAAA,MAAA,KAAW,CAAG,EAAA;AAEtC,UAAK,IAAA,CAAA,iBAAA,GAAoB,CAAC,CAAG,EAAA,QAAA,CAAA,CAAA;AAC7B,UAAA,IAAA,CAAK,SAAS,CAAG,EAAA,QAAA,CAAA,CAAA;AACjB,UAAA,UAAA,CAAW,MAAM;AACf,YAAA,IAAA,CAAK,iBAAoB,GAAA,EAAA,CAAA;AACzB,YAAA,IAAA,CAAK,SAAU,CAAA,QAAA,CAAA,CAAA;AAAA,WACd,EAAA,GAAA,CAAA,CAAA;AAEH,UAAA,OAAA;AAAA,SAAA;AAGF,QAAI,IAAA,IAAA,CAAK,iBAAkB,CAAA,MAAA,KAAW,CAAG,EAAA;AACvC,UAAA,IAAA,CAAK,iBAAoB,GAAA,CAAC,IAAK,CAAA,iBAAA,CAAkB,CAAI,CAAA,EAAA,QAAA,CAAA,CAAA;AACrD,UAAK,IAAA,CAAA,QAAA,CAAS,IAAK,CAAA,iBAAA,CAAkB,CAAI,CAAA,EAAA,QAAA,CAAA,CAAA;AACzC,UAAA,UAAA,CAAW,MAAM;AACf,YAAA,IAAA,CAAK,iBAAoB,GAAA,EAAA,CAAA;AACzB,YAAA,IAAA,CAAK,SAAU,CAAA,QAAA,CAAA,CAAA;AAAA,WACd,EAAA,GAAA,CAAA,CAAA;AAAA,SACE,MAAA;AACL,UAAA,IAAA,CAAK,oBAAoB,CAAC,QAAA,CAAA,CAAA;AAC1B,UAAA,IAAA,CAAK,SAAU,CAAA,QAAA,CAAA,CAAA;AAAA,SAAA;AAAA,OAAA;AAAA,KAAA,CAAA;AAKd,IAAA,IAAA,CAAA,QAAA,GAAW,CAAC,KAAmB,KAAA;AACpC,MAAA,IAAA,CAAK,SAAS,CAAE,KAAA,CAAA,CAAA,CAAA;AAChB,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAK,IAAA,CAAA,QAAA,CAAS,CAAE,SAAW,EAAA,EAAA,CAAA,CAAA,CAAA;AAAA,OAAA;AAG7B,MAAA,IAAA,CAAK,SAAU,CAAA,QAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAcV,IAAA,IAAA,CAAA,oBAAA,GAAuB,CAAC,KAAyC,KAAA;AAzQ1E,MAAA,IAAA,EAAA,CAAA;AA0QI,MAAM,MAAA,CAAE,OAAS,EAAA,QAAA,EAAU,IAAS,CAAA,GAAA,KAAA,CAAA;AAEpC,MAAI,IAAA,CAAC,QAAQ,QAAW,CAAA,EAAA;AACtB,QAAA,OAAA;AAAA,OAAA;AAEF,MAAM,MAAA,GAAA,GAAM,UAAW,CAAA,OAAA,CAAQ,QAAU,CAAA,CAAA,MAAA,CAAA,CAAA;AACzC,MAAM,MAAA,OAAA,GAAU,IAAI,CAAQ,KAAA,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AAE5B,MAAA,IAAA,CAAK,QAAS,CAAA;AAAA,QACZ,SAAA,EAAW,CAAS,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAA,MAAA,KAAT,IAAmB,GAAA,EAAA,GAAA,EAAA;AAAA,QAC9B,KAAO,EAAA,CAAA,GAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAK,KAAU,MAAA,KAAA,CAAA,GAAY,OAAO,GAAI,CAAA,KAAA;AAAA,OAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AApO/C,IAAA,IAAA,CAAK,KAAQ,GAAA;AAAA,MACX,SAAW,EAAA,EAAA;AAAA,MACX,iBAAmB,EAAA,EAAA;AAAA,MACnB,KAAO,EAAA,IAAA;AAAA,KAAA,CAAA;AAAA,GAAA;AAAA,EAAA,IAIA,MAAS,GAAA;AAClB,IAAA,MAAM,WAAW,SAAU,CAAA,kBAAA,CAAmB,KAAK,KAAM,CAAA,IAAA,EAAM,KAAK,KAAM,CAAA,QAAA,CAAA,CAAA;AAC1E,IAAA,OAAO,WAAW,QAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,MAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,IAInB,OAAU,GAAA;AACnB,IAAO,OAAA,CAAE,YAAY,MAAM;AAAA,KAAA,EAAI,aAAa,MAAM;AAAA,KAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,IAGzC,gBAAmB,GAAA;AAjEhC,IAAA,IAAA,EAAA,CAAA;AAkEI,IAAA,OAAO,CAAK,EAAA,GAAA,IAAA,CAAA,KAAA,CAAM,SAAU,CAAA,CAAA,CAAA,KAArB,IAA2B,GAAA,EAAA,GAAA,EAAA,CAAA;AAAA,GAAA;AAAA,EAAA,IAGzB,KAAQ,GAAA;AACjB,IAAA,OAAO,KAAK,KAAM,CAAA,KAAA,CAAA;AAAA,GAAA;AAAA,EAkCb,QAAA,CAAS,OAAe,IAAkB,EAAA;AAC/C,IAAA,IAAA,CAAK,IAAI,KAAS,CAAA,GAAA,IAAA,CAAA;AAAA,GAAA;AAAA,EAGb,EAAA,CAAG,OAAe,IAAkB,EAAA;AACzC,IAAA,IAAA,CAAK,SAAS,KAAO,EAAA,IAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAGhB,kBAAA,CAAmB,MAAc,IAAe,EAAA;AAhHzD,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAiHI,IAAI,IAAA;AACF,MAAA,MAAM,SAAY,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,MAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAa,cAAb,IAA0B,GAAA,EAAA,GAAA,EAAA,CAAA;AAC5C,MAAM,MAAA,SAAA,GAAY,UAAU,MAAS,GAAA,CAAA,CAAA;AACrC,MAAM,MAAA,QAAA,GAAW,IAAS,KAAA,KAAA,CAAA,GAAY,IAAO,GAAA,CAAA,CAAA;AAC7C,MAAM,MAAA,QAAA,GAAW,IAAS,KAAA,KAAA,CAAA,GAAY,IAAO,GAAA,IAAA,CAAA;AAC7C,MAAA,MAAM,gBAAmB,GAAA,SAAA,GAAY,SAAU,CAAA,QAAA,CAAA,GAAY,SAAU,CAAA,CAAA,CAAA,CAAA;AACrE,MAAA,MAAM,kBAAsB,GAAA,CAAA,CAAA,EAAA,GAAA,gBAAA,CAAiB,WAAjB,KAAA,IAAA,GAAA,EAAA,GAAgC,EAAI,EAAA,QAAA,CAAA,CAAA;AAEhE,MAAA,IAAI,oBAAoB,kBAAoB,EAAA;AAC1C,QAAO,OAAA;AAAA,UACL,KAAO,EAAA;AAAA,YACL,KAAK,gBAAiB,CAAA,KAAA;AAAA,YACtB,OAAO,kBAAmB,CAAA,KAAA;AAAA,WAAA;AAAA,UAE5B,SAAS,gBAAiB,CAAA,OAAA;AAAA,SAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA,OAGxB,CAAN,EAAA;AACA,MAAA,OAAA;AAAA,KAAA;AAAA,GAAA;AAAA,EAIG,sBAAA,CAAuB,MAAc,IAAe,EAAA;AAvI7D,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAwII,IAAM,MAAA,YAAA,GAAe,IAAK,CAAA,kBAAA,CAAmB,IAAM,EAAA,IAAA,CAAA,CAAA;AAEnD,IAAA,IAAI,YAAc,EAAA;AAChB,MAAM,MAAA,MAAA,GAAS,IAAK,CAAA,aAAA,CAAc,YAAc,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,MAAM,SAAU,CAAA,CAAA,CAAA,KAArB,IAAyB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,KAAzB,IAAmC,GAAA,EAAA,GAAA,EAAA,CAAA,CAAA;AAEnF,MAAA,MAAM,SAAY,GAAA;AAAA,QAChB;AAAA,UACE,UAAU,eAAgB,CAAA,WAAA,EAAA;AAAA,UAC1B,IAAI,CAAK,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAA,gBAAA,KAAL,mBAAuB,EAAvB,KAAA,IAAA,GAAA,EAAA,GAA6B,KAAK,CAAG,EAAA,EAAA,CAAA;AAAA,UACzC,MAAQ,EAAA,MAAA;AAAA,SAAA;AAAA,OAAA,CAAA;AAIZ,MAAA,IAAA,CAAK,QACH,CAAA;AAAA,QACE,SAAA;AAAA,OAEF,EAAA,MAAM,KAAK,SAAU,CAAA,QAAA,CAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA;AAAA,EAqGpB,iBAAoB,GAAA;AACzB,IAAS,QAAA,CAAA,gBAAA,CAAiB,WAAW,IAAK,CAAA,OAAA,CAAA,CAAA;AAC1C,IAAA,IAAA,CAAK,MAAM,SAAU,CAAA,IAAA,CAAA,CAAA;AACrB,IAAA,IAAA,CAAK,qBAAqB,IAAK,CAAA,KAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAG1B,oBAAuB,GAAA;AAC5B,IAAS,QAAA,CAAA,gBAAA,CAAiB,WAAW,IAAK,CAAA,OAAA,CAAA,CAAA;AAC1C,IAAA,IAAA,CAAK,KAAM,CAAA,WAAA,EAAA,CAAA;AAAA,GAAA;AAAA,EAmBN,sBAAsB,KAAsC,EAAA;AACjE,IAAA,IAAI,KAAM,CAAA,QAAA,KAAa,IAAK,CAAA,KAAA,CAAM,QAAU,EAAA;AAC1C,MAAA,IAAA,CAAK,oBAAqB,CAAA,KAAA,CAAA,CAAA;AAAA,KAAA;AAE5B,IAAO,OAAA,IAAA,CAAA;AAAA,GAAA;AAAA,EAGF,MAAS,GAAA;AAhSlB,IAAA,IAAA,EAAA,CAAA;AAiSI,IAAA,MAAM,CAAE,QAAU,EAAA,OAAA,EAAS,WAAa,EAAA,QAAA,EAAU,gBAAiB,IAAK,CAAA,KAAA,CAAA;AACxE,IAAM,MAAA,CAAE,SAAW,EAAA,KAAA,CAAA,GAAU,IAAK,CAAA,KAAA,CAAA;AAElC,IAAA,2CACG,KAAD,EAAA;AAAA,MAAK,OAAO,CAAE,MAAA,EAAQ,MAAQ,EAAA,KAAA,EAAO,QAAQ,QAAU,EAAA,UAAA,CAAA;AAAA,KAAA,sCACpD,WAAD,EAAA;AAAA,MACE,QAAA;AAAA,MACA,OAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA,EAAa,CAAC,KAAU,KAAA;AACtB,QAAA,IAAA,CAAK,QAAW,GAAA,KAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA,sCAGnB,aAAD,EAAA;AAAA,MAAe,MAAQ,EAAA,SAAA;AAAA,MAAW,SAAA,EAAW,CAAK,EAAA,GAAA,IAAA,CAAA,MAAA,KAAL,IAAa,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA;AAAA,KAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TagToolInstanceAdaptorI18nProvider.js","sources":["../../../src/components/videoPlayer/TagToolInstanceAdaptorI18nProvider.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { i18n } from '@labelbee/lb-utils';\nimport { I18nextProvider } from 'react-i18next';\nimport { IVideoTagInstanceAdaptorProps, TagToolInstanceAdaptor } from './TagToolInstanceAdaptor';\n\n/**\n * I18n provider for InstanceAdaptorI18nProvider\n * @param props\n */\nexport const VideoTagTool = (props: IVideoTagInstanceAdaptorProps & { lang?: string }) => {\n useEffect(() => {\n i18n.changeLanguage(props.lang);\n }, [props.lang]);\n\n return (\n <I18nextProvider i18n={i18n}>\n <TagToolInstanceAdaptor {...props} />\n </I18nextProvider>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AASa,MAAA,YAAA,GAAe,CAAC,KAA6D,KAAA;AACxF,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAA,CAAK,eAAe,KAAM,CAAA,IAAA,CAAA,CAAA;AAAA,GAAA,EACzB,CAAC,KAAM,CAAA,IAAA,CAAA,CAAA,CAAA;AAEV,EAAA,2CACG,eAAD,EAAA;AAAA,IAAiB,IAAA;AAAA,GACf,kBAAA,KAAA,CAAA,aAAA,CAAC,wBAAD,cAA4B,CAAA,EAAA,EAAA,KAAA,CAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"VideoTagLayer.js","sources":["../../../src/components/videoPlayer/VideoTagLayer.tsx"],"sourcesContent":["import React from 'react';\nimport { result2LabelKey } from './utils';\nimport type { ITagLabelsArray } from './types';\nimport { IInputList } from '@/types/main';\n\ninterface IVideoTagLayerProps {\n result: Array<{ result: { [key: string]: string } }>;\n inputList: IInputList[];\n}\n\nconst tagLayerCSSProperty: React.CSSProperties = {\n position: 'absolute',\n zIndex: 20,\n padding: '0 20px',\n color: 'white',\n fontSize: 15,\n lineHeight: '32px',\n background: 'rgba(0, 255, 255, 0.32)',\n top: 0,\n right: 0,\n maxHeight: 'calc(100% - 80px)',\n overflowY: 'scroll',\n};\n\nexport const VideoTagLayer: React.FC<IVideoTagLayerProps> = ({ result, inputList }) => {\n const tagsLabel: ITagLabelsArray = result2LabelKey(result, inputList);\n return (\n <div style={tagLayerCSSProperty}>\n <table>\n <tbody>\n {tagsLabel.map(({ keyLabel, valuesLabelArray }) => (\n <tr key={keyLabel}>\n <td style={{ paddingRight: 8 }}>{`${keyLabel}:`}</td>\n <td>{`${valuesLabelArray.join('、')}`}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n};\n"],"names":[],"mappings":";;;AAUA,MAAM,mBAA2C,GAAA;AAAA,EAC/C,QAAU,EAAA,UAAA;AAAA,EACV,MAAQ,EAAA,EAAA;AAAA,EACR,OAAS,EAAA,QAAA;AAAA,EACT,KAAO,EAAA,OAAA;AAAA,EACP,QAAU,EAAA,EAAA;AAAA,EACV,UAAY,EAAA,MAAA;AAAA,EACZ,UAAY,EAAA,yBAAA;AAAA,EACZ,GAAK,EAAA,CAAA;AAAA,EACL,KAAO,EAAA,CAAA;AAAA,EACP,SAAW,EAAA,mBAAA;AAAA,EACX,SAAW,EAAA,QAAA;AAAA,CAAA,CAAA;AAGN,MAAM,aAA+C,GAAA,CAAC,CAAE,MAAA,EAAQ,SAAgB,CAAA,KAAA;AACrF,EAAM,MAAA,SAAA,GAA6B,gBAAgB,MAAQ,EAAA,SAAA,CAAA,CAAA;AAC3D,EAAA,2CACG,KAAD,EAAA;AAAA,IAAK,KAAO,EAAA,mBAAA;AAAA,GAAA,kBACT,KAAA,CAAA,aAAA,CAAA,OAAA,EAAD,IACE,kBAAA,KAAA,CAAA,aAAA,CAAC,OAAD,EAAA,IAAA,EACG,SAAU,CAAA,GAAA,CAAI,CAAC,CAAE,QAAU,EAAA,gBAAA,CAAA,yCACzB,IAAD,EAAA;AAAA,IAAI,GAAK,EAAA,QAAA;AAAA,GAAA,sCACN,IAAD,EAAA;AAAA,IAAI,KAAA,EAAO,CAAE,YAAc,EAAA,CAAA,CAAA;AAAA,GAAA,EAAM,GAAG,QACpC,CAAA,CAAA,CAAA,CAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,MAAD,IAAK,EAAA,CAAA,EAAG,iBAAiB,IAAK,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/videoPlayer/components/controller/index.tsx"],"sourcesContent":["import React from 'react';\nimport { getClassName } from '@/utils/dom';\nimport {\n CaretRightOutlined,\n CaretUpOutlined,\n CaretDownOutlined,\n PauseOutlined,\n} from '@ant-design/icons';\nimport { VideoPlayerCtx } from '../..';\nimport { Pagination } from '@/views/MainView/toolFooter/Pagination';\nimport hotkey from '@/assets/annotation/video/icon_keyboard_h.svg';\nimport ToolHotKey from '@/views/MainView/toolFooter/FooterTips/ToolHotKey';\nimport { useTranslation } from 'react-i18next';\nimport { decimalReserved } from '../../utils';\nimport { cTool } from '@labelbee/lb-annotation';\nconst { EVideoToolName } = cTool;\n\n/**\n * Format video time to display\n * Such as 61.9 => 01:01:9\n * @param {Number} time\n * @returns {String} displayTime (min:sec:mircoSec)\n */\nconst videoTimeFormat = (time: number) => {\n const min = Math.floor(time / 60);\n const sec = ~~(time % 60).toFixed();\n const minSec = (time * 10).toString().split('').pop();\n const fillZero = (num: number) => (num < 10 ? `0${num}` : num);\n return `${fillZero(min)}:${fillZero(sec)}:${minSec}`;\n};\n\nconst VideoProgress = () => {\n const { currentTime, duration, buffered, setCurrentTime } = React.useContext(VideoPlayerCtx);\n const progressRef = React.useRef<HTMLDivElement>(null);\n const bufferLoadedPercent = `${decimalReserved((buffered / duration) * 100, 1)}%`;\n const playedPercent = `${decimalReserved((currentTime / duration) * 100, 1)}%`;\n const toCurrentTime = (event: React.MouseEvent<HTMLDivElement>) => {\n if (progressRef.current) {\n const offsetX = event.clientX;\n const width = progressRef.current.clientWidth;\n const toTime = decimalReserved((offsetX / width) * duration, 1);\n setCurrentTime(toTime);\n }\n };\n\n return (\n <div\n className={getClassName('video-progress')}\n ref={progressRef}\n onClick={(event: React.MouseEvent<HTMLDivElement>) => {\n event.stopPropagation();\n event.nativeEvent.stopImmediatePropagation();\n toCurrentTime(event);\n }}\n >\n <div className={getClassName('video-slider')}>\n <div className={getClassName('video-slider', 'played')} style={{ width: playedPercent }} />\n <div\n className={getClassName('video-slider', 'loaded')}\n style={{ width: bufferLoadedPercent }}\n />\n <div className={getClassName('video-slider', 'played')} style={{ width: playedPercent }} />\n </div>\n\n <div className={getClassName('video-slider-bar')} style={{ left: playedPercent }} />\n </div>\n );\n};\n\nconst VideoSpeedButton = () => {\n const { updateNextPlaybackRate, playbackRate } = React.useContext(VideoPlayerCtx);\n const { t } = useTranslation();\n\n return (\n <span className={getClassName('video-controller', 'speed')}>\n <span>{t('Speed')}</span>\n <span className={getClassName('video-controller', 'speedNum')}>{`${playbackRate}x`}</span>\n <span className={getClassName('video-controller', 'speedButton')}>\n <CaretUpOutlined\n onClick={() => {\n updateNextPlaybackRate();\n }}\n />\n <CaretDownOutlined\n onClick={() => {\n updateNextPlaybackRate(false);\n }}\n />\n </span>\n </span>\n );\n};\n\nconst VideoHotKeys = () => {\n const { t } = useTranslation();\n return (\n <ToolHotKey\n title={\n <span className={getClassName('video-controller', 'hotkey')}>\n <img src={hotkey} />\n {t('Hotkeys')}\n </span>\n }\n style={{}}\n toolName={EVideoToolName.VideoTagTool}\n />\n );\n};\n\nconst VideoPageChange = () => {\n const { imgIndex, imgList, pageBackward, pageJump, pageForward } =\n React.useContext(VideoPlayerCtx);\n\n return (\n <Pagination\n isVideo={true}\n pageBackward={pageBackward}\n imgIndex={imgIndex}\n pageJump={pageJump}\n totalPage={imgList.length}\n pageForward={pageForward}\n footerCls={getClassName('video-controller')}\n />\n );\n};\n\nconst VideoTime = () => {\n const { currentTime, duration } = React.useContext(VideoPlayerCtx);\n const remained10x = duration * 10 - currentTime * 10;\n const remaingTime = (remained10x > 0 ? remained10x : 0) / 10;\n\n return (\n <div className={getClassName('video-controller', 'time')}>\n {`${videoTimeFormat(currentTime)} / -${videoTimeFormat(remaingTime)}`}\n </div>\n );\n};\n\nconst VideoController = () => {\n const { playPause, isPlay } = React.useContext(VideoPlayerCtx);\n\n return (\n <div className={getClassName('video-controller', 'wrapper')}>\n <VideoProgress />\n <div className={getClassName('video-controller')}>\n <span\n onClick={() => {\n playPause();\n }}\n className={getClassName('video-controller', 'playButton')}\n >\n {isPlay ? <PauseOutlined /> : <CaretRightOutlined />}\n </span>\n <VideoTime />\n <VideoSpeedButton />\n <div className={getClassName('video-controller', 'holder')} />\n <VideoPageChange />\n <VideoHotKeys />\n </div>\n </div>\n );\n};\n\nexport default VideoController;\n"],"names":["hotkey"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/videoPlayer/index.tsx"],"sourcesContent":["/**\n * @author Glenfiddish <edwinlee0927@hotmail.com>\n * @file Implement video player, including mouse and keyboard event\n * @date 2022-06-02\n */\n\nimport React from 'react';\nimport VideoController from './components/controller';\nimport { getClassName } from '@/utils/dom';\nimport { cKeyCode } from '@labelbee/lb-annotation';\nimport { IFileItem } from '@/types/data';\nimport { decimalReserved } from './utils';\nimport FileException from '../fileException';\n\nconst EKeyCode = cKeyCode.default;\n\nexport const VideoPlayerCtx = React.createContext<{\n videoRef?: React.RefObject<HTMLVideoElement> | null;\n isPlay: boolean;\n playPause: () => void;\n updateNextPlaybackRate: (isForward?: boolean) => void;\n setCurrentTime: (time: number) => void;\n playbackRate: number;\n currentTime: number;\n duration: number;\n buffered: number;\n imgList: IFileItem[];\n imgIndex: number;\n pageBackward: () => void;\n pageJump: (page: string) => void;\n pageForward: () => void;\n}>({\n isPlay: false,\n playPause: () => {},\n updateNextPlaybackRate: () => {},\n playbackRate: 1,\n currentTime: 0,\n duration: 0,\n buffered: 0,\n setCurrentTime: () => {},\n imgList: [],\n imgIndex: -1,\n pageBackward: () => {},\n pageJump: (page: string) => {},\n pageForward: () => {},\n});\n\nconst PER_INTERVAL = 50;\nconst PER_FORWARD = 0.1;\nconst PLAYBACK_RATES = [0.5, 1, 1.5, 2, 4, 6, 8, 16];\n\ninterface IVideoPlayerProps {\n imgList: IFileItem[];\n imgIndex: number;\n pageBackward: () => void;\n pageJump: (page: string) => void;\n pageForward: () => void;\n valid: boolean;\n setVideoRef?: (video: HTMLVideoElement) => void;\n}\n\ninterface IVideoPlayerState {\n playbackRate: number;\n currentTime: number;\n isPlay: boolean;\n duration: number;\n buffered: number;\n error: boolean;\n}\n\nexport class VideoPlayer extends React.Component<IVideoPlayerProps, IVideoPlayerState> {\n public videoRef?: React.RefObject<HTMLVideoElement>;\n public timeInterval?: number;\n\n public constructor(props: IVideoPlayerProps) {\n super(props);\n this.state = {\n playbackRate: 1,\n currentTime: 0,\n isPlay: false,\n duration: 0,\n buffered: 0,\n error: false,\n };\n this.videoRef = React.createRef();\n }\n\n public get videoElm() {\n return this.videoRef?.current;\n }\n\n public get videoSrc() {\n const { imgIndex, imgList } = this.props;\n return imgIndex > -1 ? imgList[imgIndex]?.url ?? '' : '';\n }\n\n public changePlaybackPate = (playbackRate: number) => {\n if (this.videoElm) {\n this.videoElm.playbackRate = playbackRate;\n this.setState({\n playbackRate,\n });\n }\n };\n\n public playPause = () => {\n if (this.videoElm?.paused) {\n this.videoElm?.play();\n } else {\n this.videoElm?.pause();\n }\n };\n\n public updateNextPlaybackRate = (isForward = true) => {\n const idx = PLAYBACK_RATES.findIndex((r) => r === this.state.playbackRate);\n let nextIdx = isForward ? Math.min(idx + 1, PLAYBACK_RATES.length - 1) : Math.max(idx - 1, 0);\n this.changePlaybackPate(PLAYBACK_RATES[nextIdx]);\n };\n\n public fastForward = () => {\n if (this.videoElm) {\n this.setCurrentTime(this.videoElm.currentTime + PER_FORWARD);\n }\n };\n\n public rewind = () => {\n if (this.videoElm) {\n this.setCurrentTime(this.videoElm.currentTime - PER_FORWARD);\n }\n };\n\n /**\n * Implement Video's keydown\n * Play / Pause - Space\n * Rewind / FastForward - ⬅️ / ➡️\n * Speed - ⬆️ / ⬇\n * @param event\n */\n public keydown = (event: KeyboardEvent) => {\n if (event.keyCode === EKeyCode.Space) {\n event.preventDefault();\n this.playPause();\n }\n\n if (event.keyCode === EKeyCode.Up) {\n event.preventDefault();\n this.updateNextPlaybackRate();\n }\n\n if (event.keyCode === EKeyCode.Down) {\n event.preventDefault();\n this.updateNextPlaybackRate(false);\n }\n\n if (event.keyCode === EKeyCode.Left) {\n event.preventDefault();\n this.rewind();\n }\n\n if (event.keyCode === EKeyCode.Right) {\n event.preventDefault();\n this.fastForward();\n }\n };\n\n public onPlay = () => {\n this.setState(\n {\n isPlay: true,\n },\n this.onVideoStart,\n );\n };\n\n public onPause = () => {\n this.onVideoStopped();\n };\n\n public onVideoStopped = () => {\n this.setState({\n isPlay: false,\n });\n\n if (this.timeInterval) {\n clearInterval(this.timeInterval);\n this.timeInterval = undefined;\n }\n\n /** Due to speedrate can less than PER_INTERVAL, it need to set current time after stopped */\n if (this.videoElm) {\n this.setCurrentTime(this.videoElm.currentTime);\n }\n };\n\n public onVideoStart = () => {\n this.timeInterval = window.setInterval(() => {\n if (this.videoElm) {\n try {\n if (this.videoElm?.buffered.length > 0) {\n const buffered = this.videoElm?.buffered.end(0);\n\n this.setState({\n currentTime: decimalReserved(this.videoElm?.currentTime, 1),\n buffered,\n });\n }\n } catch (error) {\n console.error(error);\n }\n }\n }, PER_INTERVAL);\n };\n\n public resetVideoData = () => {\n this.setState({\n currentTime: 0,\n buffered: 0,\n error: false,\n isPlay: false,\n });\n\n if (this.videoElm) {\n this.videoElm.playbackRate = this.state.playbackRate;\n }\n this.onVideoStopped();\n };\n\n public setDuration = () => {\n if (this.videoElm) {\n const duration = decimalReserved(this.videoElm?.duration, 1);\n\n this.setState({\n duration,\n });\n }\n };\n\n public setCurrentTime = (currentTime: number) => {\n if (this.videoElm) {\n this.videoElm.currentTime = currentTime;\n this.setState({\n currentTime,\n });\n }\n };\n\n public reload = () => {\n this.videoElm?.load();\n };\n\n public onError = () => {\n this.resetVideoData();\n this.setState({ error: true });\n };\n\n public componentDidMount() {\n window.addEventListener('keydown', this.keydown);\n if (this.videoRef?.current && this.props.setVideoRef) {\n this.props.setVideoRef(this.videoRef?.current as HTMLVideoElement);\n }\n }\n\n public componentWillUnmount() {\n window.removeEventListener('keydown', this.keydown);\n }\n\n public render() {\n const { isPlay, playbackRate, currentTime, duration, buffered, error } = this.state;\n const { imgList, imgIndex, pageBackward, pageJump, pageForward, valid } = this.props;\n\n const {\n playPause,\n updateNextPlaybackRate,\n onPause,\n onPlay,\n resetVideoData,\n setDuration,\n setCurrentTime,\n onError,\n videoRef,\n videoSrc,\n } = this;\n\n return (\n <VideoPlayerCtx.Provider\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n value={{\n videoRef: this.videoRef,\n isPlay,\n playPause,\n updateNextPlaybackRate,\n playbackRate,\n currentTime,\n duration,\n buffered,\n setCurrentTime,\n imgIndex,\n imgList,\n pageBackward,\n pageJump,\n pageForward,\n }}\n >\n <div className={getClassName('video-wrapper')}>\n <div className={getClassName('video-container')}>\n <video\n ref={videoRef}\n className={getClassName('video')}\n src={videoSrc}\n onPause={onPause}\n onPlay={onPlay}\n onLoadedMetadata={resetVideoData}\n onError={onError}\n onDurationChange={setDuration}\n width='100%'\n height='100%'\n onClick={playPause}\n />\n\n <FileException\n fileType='video'\n errorProps={{\n reloadImage: this.reload,\n backgroundColor: '#e2e2e2',\n ignoreOffsetY: true,\n isError: error,\n }}\n invalidProps={{\n isValid: valid,\n }}\n />\n </div>\n <VideoController />\n </div>\n </VideoPlayerCtx.Provider>\n );\n }\n}\n\nexport default VideoPlayer;\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sources":["../../../src/components/videoPlayer/utils.ts"],"sourcesContent":["import type { ITagLabelsArray } from './types';\n\n/**\n * Find key and value to display label through inputList\n * @param key\n * @param value\n * @param inputList\n */\nexport const findTagLabel = (key: string, value: string, inputList: any[]) => {\n const primaryTagConfig = inputList.find((i) => i.value === key);\n const secondaryTagConfig = primaryTagConfig.subSelected.find(\n (i: { value: string }) => i.value === value,\n );\n return { keyLabel: primaryTagConfig.key, valueLabel: secondaryTagConfig.key };\n};\n\n/**\n * Sort tags through inputList\n * @param tagsKeys\n * @param inputList\n */\nexport const tagsSortThruInputList = (tagsKeys: string[], inputList: any[]) => {\n return tagsKeys.sort((key1, key2) => {\n const key1Idx = inputList.findIndex((input) => key1 === input.value);\n const key2Idx = inputList.findIndex((input) => key2 === input.value);\n return key1Idx - key2Idx;\n });\n};\n\n/**\n * Convent result's array to array of showing the labels\n * @param result\n * @param inputList\n * @returns {ITagLabelsArray}\n */\nexport const result2LabelKey = (result: any[], inputList: any[]) => {\n try {\n return (\n result?.reduce((exitsTags: ITagLabelsArray, res: { result: { [key: string]: string } }) => {\n tagsSortThruInputList(Object.keys(res.result), inputList).forEach((key) => {\n const valuesArray = res.result[key]?.split(';');\n findLabelFromValuesArray(valuesArray, key, inputList, exitsTags);\n });\n return exitsTags;\n }, []) ?? []\n );\n } catch (error) {\n return [];\n }\n};\n\n/**\n * find label from valuesArray and push to exitsTags\n * @param valuesArray\n * @param key\n * @param inputList\n * @param exitsTags\n */\nconst findLabelFromValuesArray = (\n valuesArray: string[],\n key: string,\n inputList: any[],\n exitsTags: ITagLabelsArray,\n) => {\n valuesArray.forEach((value) => {\n const { keyLabel, valueLabel } = findTagLabel(key, value, inputList);\n const tagHasAssign = exitsTags.find((i) => i.keyLabel === keyLabel);\n if (tagHasAssign) {\n tagHasAssign.valuesLabelArray.push(valueLabel);\n } else {\n exitsTags.push({ keyLabel, valuesLabelArray: [valueLabel] });\n }\n });\n};\n\n/**\n * Get key number through keyCode, Such as 49(keycode) => 1(number)\n * @param {Number} keyCode\n * @returns {Number} keyCode in scope if it greater than 0\n */\nexport const getKeyCodeNumber = (keyCode: number) => {\n if (keyCode <= 57 && keyCode >= 49) {\n return keyCode - 48;\n }\n\n if (keyCode <= 105 && keyCode >= 97) {\n return keyCode - 96;\n }\n\n return 0;\n};\n\n/**\n * Preserve decimals for number\n * @param num\n * @param places\n * @returns {Number}\n */\nexport const decimalReserved = (num: number, places = 2) =>\n typeof num === 'number' ? parseFloat(num.toFixed(places)) : num;\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"configureStore.js","sources":["../src/configureStore.ts"],"sourcesContent":["import { createStore, applyMiddleware } from 'redux';\nimport thunk from 'redux-thunk';\nimport { rootReducer } from './store';\n\nexport default function configureStore() {\n return createStore(rootReducer, applyMiddleware(thunk));\n}\n"],"names":[],"mappings":";;;;AAIyC,SAAA,cAAA,GAAA;AACvC,EAAO,OAAA,WAAA,CAAY,aAAa,eAAgB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../src/constant/index.tsx"],"sourcesContent":["export enum EStepType {\n Check = 0, // 查看模式\n ANNOTATION = 1, // 正常标注\n QUALITY_INSPECTION, // 标注质检\n PRE_ANNOTATION, // 预标注\n MANUAL_CORRECTION, // 人工修正\n}\n\nexport enum ESubmitType {\n Backward = 1, // 向前翻页\n Forward = 2, // 向后翻页\n Jump = 3, // 分页器的跳页翻页\n Quit = 4, // 左上角后退触发\n Export = 5, // 数据导出时\n StepChanged = 6, // 切换步骤\n Save = 7, // 点击保存\n BatchUpdateTrackID = 8, // 批量更改 TrackID (PointCloud)\n BatchUpdateImgList = 9, // 批量更改 ImgList (PointCloud)\n SyncImgList = 10001, // 仅更改数据\n SyncCurrentPageData = 10002, // 同步当页数据\n}\n// css 命名前缀\nexport const prefix = 'bee';\nexport const componentCls = `${prefix}-component`;\n"],"names":[],"mappings":"AAAY,IAAA,UAAA;AAAL,CAAA,SAAK,UAAL,EAAA;AACL,EAAA,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAQ,CAAR,CAAA,GAAA,OAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAa,CAAb,CAAA,GAAA,YAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,oBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,oBAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAA,CAAA;AAAA,CALU,EAAA,SAAA,KAAA,SAAA,GAAA,EAAA,CAAA,CAAA,CAAA;AAQA,IAAA,YAAA;AAAL,CAAA,SAAK,YAAL,EAAA;AACL,EAAA,YAAA,CAAA,YAAA,CAAA,UAAA,CAAA,GAAW,CAAX,CAAA,GAAA,UAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,SAAA,CAAA,GAAU,CAAV,CAAA,GAAA,SAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAO,CAAP,CAAA,GAAA,MAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAO,CAAP,CAAA,GAAA,MAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,QAAA,CAAA,GAAS,CAAT,CAAA,GAAA,QAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,aAAA,CAAA,GAAc,CAAd,CAAA,GAAA,aAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAO,CAAP,CAAA,GAAA,MAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,oBAAA,CAAA,GAAqB,CAArB,CAAA,GAAA,oBAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,oBAAA,CAAA,GAAqB,CAArB,CAAA,GAAA,oBAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,aAAA,CAAA,GAAc,KAAd,CAAA,GAAA,aAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,qBAAA,CAAA,GAAsB,KAAtB,CAAA,GAAA,qBAAA,CAAA;AAAA,CAXU,EAAA,WAAA,KAAA,WAAA,GAAA,EAAA,CAAA,CAAA,CAAA;AAcL,MAAM,MAAS,GAAA,MAAA;AACf,MAAM,eAAe,CAAG,EAAA,MAAA,CAAA,UAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"styleString.js","sources":["../../src/constant/styleString.ts"],"sourcesContent":["const styleString = `{\"color\":1,\"width\":2,\"borderOpacity\":9,\"fillOpacity\":9,\"toolColor\":{\"1\":{\"valid\":{\"stroke\":\"rgba(0,0,255,0.50)\",\"fill\":\"rgba(0,0,255,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validSelected\":{\"stroke\":\"rgba(0,15,255,1.00)\",\"fill\":\"rgba(0,15,255,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,0.80)\",\"fill\":\"rgba(255,153,102,0.19)\"},\"validHover\":{\"stroke\":\"rgba(0,15,255,0.80)\",\"fill\":\"rgba(0,15,255,0.51)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,0.50)\",\"fill\":\"rgba(255,153,102,0.32)\"}},\"3\":{\"valid\":{\"stroke\":\"rgba(0,255,255,0.50)\",\"fill\":\"rgba(0,255,255,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validSelected\":{\"stroke\":\"rgba(0,212,255,1.00)\",\"fill\":\"rgba(0,212,255,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,0.80)\",\"fill\":\"rgba(255,153,102,0.19)\"},\"validHover\":{\"stroke\":\"rgba(0,212,255,0.80)\",\"fill\":\"rgba(0,212,255,0.51)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,0.50)\",\"fill\":\"rgba(255,153,102,0.32)\"}},\"5\":{\"valid\":{\"stroke\":\"rgba(0,255,0,0.50)\",\"fill\":\"rgba(0,255,0,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validSelected\":{\"stroke\":\"rgba(149,255,1.00)\",\"fill\":\"rgba(149,255,0,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,0.80)\",\"fill\":\"rgba(255,153,102,0.19)\"},\"validHover\":{\"stroke\":\"rgba(149,255,0,0.80)\",\"fill\":\"rgba(149,255,0,0.51)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,0.50)\",\"fill\":\"rgba(255,153,102,0.32)\"}},\"7\":{\"valid\":{\"stroke\":\"rgba(255,255,0,0.50)\",\"fill\":\"rgba(255,255,0,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validSelected\":{\"stroke\":\"rgba(255,230,102,1.00)\",\"fill\":\"rgba(255,213,0,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,0.80)\",\"fill\":\"rgba(255,153,102,0.19)\"},\"validHover\":{\"stroke\":\"rgba(255,230,102,0.80)\",\"fill\":\"rgba(255,230,102,0.51)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,0.50)\",\"fill\":\"rgba(255,153,102,0.32)\"}},\"9\":{\"valid\":{\"stroke\":\"rgba(255,0,255,0.50)\",\"fill\":\"rgba(255,0,255,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validSelected\":{\"stroke\":\"rgba(230,102,255,1.00)\",\"fill\":\"rgba(213,0,255,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,0.80)\",\"fill\":\"rgba(255,153,102,0.19)\"},\"validHover\":{\"stroke\":\"rgba(230,102,255,0.80)\",\"fill\":\"rgba(230,102,255,0.51)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,0.50)\",\"fill\":\"rgba(255,153,102,0.32)\"}}},\"attributeColor\":[{\"valid\":{\"stroke\":\"rgba(204,204,204,1.00)\",\"fill\":\"rgba(204,204,204,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.32)\"},\"validSelected\":{\"stroke\":\"rgba(204,204,204,1.00)\",\"fill\":\"rgba(204,204,204,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validHover\":{\"stroke\":\"rgba(204,204,204,1.00)\",\"fill\":\"rgba(204,204,204,0.64)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"}},{\"valid\":{\"stroke\":\"rgba(128,12,249,1.00)\",\"fill\":\"rgba(128,12,249,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.32)\"},\"validSelected\":{\"stroke\":\"rgba(128,12,249,1.00)\",\"fill\":\"rgba(128,12,249,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validHover\":{\"stroke\":\"rgba(128,12,249,1.00)\",\"fill\":\"rgba(128,12,249,0.64)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"}},{\"valid\":{\"stroke\":\"rgba(0,255,48,1.00)\",\"fill\":\"rgba(0,255,48,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.32)\"},\"validSelected\":{\"stroke\":\"rgba(0,255,48,1.00)\",\"fill\":\"rgba(0,255,48,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validHover\":{\"stroke\":\"rgba(0,255,48,1.00)\",\"fill\":\"rgba(0,255,48,0.64)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"}},{\"valid\":{\"stroke\":\"rgba(255,136,247,1.00)\",\"fill\":\"rgba(255,136,247,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.32)\"},\"validSelected\":{\"stroke\":\"rgba(255,136,247,1.00)\",\"fill\":\"rgba(255,136,247,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validHover\":{\"stroke\":\"rgba(255,136,247,1.00)\",\"fill\":\"rgba(255,136,247,0.64)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"}},{\"valid\":{\"stroke\":\"rgba(255,226,50,1.00)\",\"fill\":\"rgba(255,226,50,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.32)\"},\"validSelected\":{\"stroke\":\"rgba(255,226,50,1.00)\",\"fill\":\"rgba(255,226,50,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validHover\":{\"stroke\":\"rgba(255,226,50,1.00)\",\"fill\":\"rgba(255,226,50,0.64)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"}},{\"valid\":{\"stroke\":\"rgba(153,66,23,1.00)\",\"fill\":\"rgba(153,66,23,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.32)\"},\"validSelected\":{\"stroke\":\"rgba(153,66,23,1.00)\",\"fill\":\"rgba(153,66,23,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validHover\":{\"stroke\":\"rgba(153,66,23,1.00)\",\"fill\":\"rgba(153,66,23,0.64)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"}},{\"valid\":{\"stroke\":\"rgba(2,130,250,1.00)\",\"fill\":\"rgba(2,130,250,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.32)\"},\"validSelected\":{\"stroke\":\"rgba(2,130,250,1.00)\",\"fill\":\"rgba(2,130,250,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validHover\":{\"stroke\":\"rgba(2,130,250,1.00)\",\"fill\":\"rgba(2,130,250,0.64)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"}},{\"valid\":{\"stroke\":\"rgba(255,35,35,1.00)\",\"fill\":\"rgba(255,35,35,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.32)\"},\"validSelected\":{\"stroke\":\"rgba(255,35,35,1.00)\",\"fill\":\"rgba(255,35,35,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validHover\":{\"stroke\":\"rgba(255,35,35,1.00)\",\"fill\":\"rgba(255,35,35,0.64)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"}},{\"valid\":{\"stroke\":\"rgba(0,255,234,1.00)\",\"fill\":\"rgba(0,255,234,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.32)\"},\"validSelected\":{\"stroke\":\"rgba(0,255,234,1.00)\",\"fill\":\"rgba(0,255,234,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validHover\":{\"stroke\":\"rgba(0,255,234,1.00)\",\"fill\":\"rgba(0,255,234,0.64)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"}}],\"lineColor\":{\"1\":\"rgba(102, 111, 255, 1 )\",\"3\":\"rgba(102, 230, 255, 1)\",\"5\":\"rgba(191, 255, 102, 1)\",\"7\":\"rgba(255, 230, 102, 1)\",\"9\":\"rgba(230, 102, 255, 1)\"},\"attributeLineColor\":[\"rgba(204, 204, 204, 1)\",\"rgba(128, 12, 249, 1)\",\"rgba(0, 255, 48, 1)\",\"rgba(255, 136, 247, 1)\",\"rgba(255, 226, 50, 1)\",\"rgba(153, 66, 23, 1)\",\"rgba(2, 130, 250, 1)\",\"rgba(255, 35, 35, 1)\",\"rgba(0, 255, 234, 1)\"]}`;\n\nexport default styleString;\n"],"names":[],"mappings":"AAAA,MAAM,WAAc,GAAA,CAAA,ujOAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Style.js","sources":["../../src/data/Style.ts"],"sourcesContent":["export const COLORS_ARRAY = [\n 'rgba(128, 12, 249, 1)', // 6\n 'rgba(0, 255, 48, 1)', // 3\n 'rgba(255, 136, 247, 1)', // 7\n 'rgba(255, 226, 50, 1)', // 2\n 'rgba(153, 66, 23, 1)', // 8\n 'rgba(2, 130, 250, 1)', // 5\n 'rgba(255, 35, 35, 1)', // 1\n 'rgba(0, 255, 234, 1)', // 4\n];\n\nexport const NULL_COLOR = 'rgba(204, 204, 204, 1)';\n\nexport const DEFAULT_COLOR = {\n valid: {\n stroke: 'rgba(102, 111, 255, 0.6)',\n fill: 'rgba(102, 111, 255, 0.3)',\n },\n invalid: {\n stroke: 'rgba(255, 153, 102,1)',\n fill: 'rgba(255, 153, 102, 0.5)',\n },\n validSelected: {\n stroke: 'rgba(0, 15, 255, 0.8)',\n fill: 'rgba(0, 15, 255, 0.4)',\n },\n invalidSelected: {\n stroke: 'rgba(255,153,102,0.8)',\n fill: 'rgba(255,153,102,0.3)',\n },\n validHover: {\n stroke: 'rgba(0, 15, 255, 1)',\n fill: 'rgba(0, 15, 255, 0.5)',\n },\n\n invalidHover: {\n stroke: 'rgba(255,153,102,1)',\n fill: 'rgba(255,153,102,0.5)',\n },\n};\n\nexport const CHANGE_COLOR: { [a: number]: any } = {\n 1: {\n valid: 'rgba(0, 0, 255, 0.5)',\n select: {\n stroke: 'rgba(0, 15, 255, 1)',\n fill: 'rgba(0,15,255, 1)',\n },\n hover: 'rgba(0, 15, 255, 0.8)',\n line: 'rgba(102, 111, 255, 1 )',\n },\n 3: {\n valid: 'rgba(0, 255, 255, 0.5)',\n select: {\n stroke: 'rgba(0, 212, 255, 1)',\n fill: 'rgba(0,212,255, 1)',\n },\n hover: 'rgba(0, 212, 255, 0.8)',\n line: 'rgba(102, 230, 255, 1)',\n },\n 5: {\n valid: 'rgba(0, 255, 0, 0.5)',\n select: {\n stroke: 'rgba(149, 255, 1)',\n fill: 'rgba(149,255,0, 1)',\n },\n hover: 'rgba(149, 255, 0, 0.8)',\n line: 'rgba(191, 255, 102, 1)',\n },\n 7: {\n valid: 'rgba(255, 255, 0, 0.5)',\n select: {\n stroke: 'rgba(255, 230, 102, 1)',\n fill: 'rgba(255,213,0, 1)',\n },\n hover: 'rgba(255, 230, 102, 0.8)',\n line: 'rgba(255, 230, 102, 1)',\n },\n 9: {\n valid: 'rgba(255, 0, 255, 0.5)',\n select: {\n stroke: 'rgba(230, 102, 255, 1)',\n fill: 'rgba(213,0,255, 1)',\n },\n hover: 'rgba(230, 102, 255, 0.8)',\n line: 'rgba(230, 102, 255, 1)',\n },\n};\n\nexport const BORDER_OPACITY_LEVEL: { [a: number]: number } = {\n 0: 0,\n 1: 0.2,\n 3: 0.4,\n 5: 0.6,\n 7: 0.8,\n 9: 1.0,\n 10: 1.0,\n};\n\nexport const FILL_OPACITY_LEVEL: { [a: number]: number } = {\n 1: 0,\n 3: 0.2,\n 5: 0.4,\n 7: 0.6,\n 9: 0.8,\n 10: 1.0,\n};\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AnnotationSize.js","sources":["../../../src/data/enums/AnnotationSize.ts"],"sourcesContent":["export const headerHeight = 61;\nexport const tipsHeight = 40;\nexport const footerHeight = 40;\nexport const sidebarWidth = 240;\n// 编辑步骤的侧边栏宽度\nexport const editStepWidth = 320;\n\n/** 标注步骤的类型 */\nexport enum EStepType {\n ANNOTATION = 1, // 正常标注\n QUALITY_INSPECTION, // 标注质检\n PRE_ANNOTATION, // 预标注\n MANUAL_CORRECTION, // 人工修正\n}\n\n/** 标注工具中最大获取的图片数 */\nexport const ANNOTATION_MAX_SIZE = 100;\n\n/** 翻页操作 */\nexport enum EPageTurningOperation {\n Backward,\n Forward,\n Jump,\n}\n\n/** 拖拽状态 */\nexport enum EDragStatus {\n Start,\n Stop,\n Wait,\n}\n\n/** 拖拽的内容 */\nexport enum EDragTarget {\n Point,\n Line,\n Plane,\n}\n"],"names":[],"mappings":"AAAO,MAAM,YAAe,GAAA,GAAA;AAErB,MAAM,YAAe,GAAA,GAAA;AACrB,MAAM,YAAe,GAAA,IAAA;AAErB,MAAM,aAAgB,GAAA,IAAA;AAGjB,IAAA,UAAA;AAAL,CAAA,SAAK,UAAL,EAAA;AACL,EAAA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAa,CAAb,CAAA,GAAA,YAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,oBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,oBAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAA,CAAA;AAAA,CAJU,EAAA,SAAA,KAAA,SAAA,GAAA,EAAA,CAAA,CAAA,CAAA;AAWA,IAAA,sBAAA;AAAL,CAAA,SAAK,sBAAL,EAAA;AACL,EAAA,sBAAA,CAAA,sBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA,CAAA;AACA,EAAA,sBAAA,CAAA,sBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA;AACA,EAAA,sBAAA,CAAA,sBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA,CAAA;AAAA,CAHU,EAAA,qBAAA,KAAA,qBAAA,GAAA,EAAA,CAAA,CAAA,CAAA;AAOA,IAAA,YAAA;AAAL,CAAA,SAAK,YAAL,EAAA;AACL,EAAA,YAAA,CAAA,YAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA,CAAA;AAAA,CAHU,EAAA,WAAA,KAAA,WAAA,GAAA,EAAA,CAAA,CAAA,CAAA;AAOA,IAAA,YAAA;AAAL,CAAA,SAAK,YAAL,EAAA;AACL,EAAA,YAAA,CAAA,YAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA,CAAA;AAAA,CAHU,EAAA,WAAA,KAAA,WAAA,GAAA,EAAA,CAAA,CAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToolType.js","sources":["../../../src/data/enums/ToolType.ts"],"sourcesContent":["// TODO, Temporarily Copy\nexport enum EScribblePattern {\n Scribble = 1, // 涂抹操作\n Erase = 2, // 橡皮刷\n}\n\nexport enum EToolName {\n /** 拉框工具 */\n Rect = 'rectTool',\n /** 标签工具 */\n Tag = 'tagTool',\n /** 标点工具 */\n Point = 'pointTool',\n /** 列表标点工具 */\n PointMarker = 'pointMarkerTool',\n /** 前景分割工具 */\n Segmentation = 'segmentationTool',\n /** 筛选工具 */\n Filter = 'filterTool',\n /** 文本工具 */\n Text = 'textTool',\n /** 多边形工具 */\n Polygon = 'polygonTool',\n /** 线条 */\n Line = 'lineTool',\n /** 列表线条工具 */\n LineMarker = 'lineMarkerTool',\n /** 空工具,表示当前没有选择的工具,没有实际的业务逻辑 */\n Empty = 'emptyTool',\n /** 文件夹标签工具 */\n FolderTag = 'folderTagTool',\n /** 拉框跟踪工具 */\n RectTrack = 'rectTrackTool',\n /** 涂抹工具 */\n ScribbleTool = 'scribbleTool',\n /** 人脸106工具 */\n Face = 'faceTool',\n /** 客户端属性工具 */\n ClientAttribute = 'clientAttributeTool',\n /** OCR关联关系工具 */\n OCRRelation = 'OCRRelationTool',\n /** 算法分割辅助工具 */\n SegmentByRect = 'segmentByRectTool',\n \n Cuboid = 'cuboidTool',\n /** 点云多边形工具 */\n PointCloudPolygon = 'pointCloudPolygon',\n}\n\n\n// 文本标注类型\nexport enum ETextType {\n AnyString, // 任意字符\n Order, // 序号\n EnglishOnly, // 仅英文\n NumberOnly, // 仅数字\n CustomFormat, // 自定义文本格式\n}\n\n/** 文本标注字数上限 */\nexport const TEXT_ATTRIBUTE_MAX_LENGTH = 1000;\n"],"names":[],"mappings":"AACY,IAAA,iBAAA;AAAL,CAAA,SAAK,iBAAL,EAAA;AACL,EAAA,iBAAA,CAAA,iBAAA,CAAA,UAAA,CAAA,GAAW,CAAX,CAAA,GAAA,UAAA,CAAA;AACA,EAAA,iBAAA,CAAA,iBAAA,CAAA,OAAA,CAAA,GAAQ,CAAR,CAAA,GAAA,OAAA,CAAA;AAAA,CAFU,EAAA,gBAAA,KAAA,gBAAA,GAAA,EAAA,CAAA,CAAA,CAAA;AAKA,IAAA,UAAA;AAAL,CAAA,SAAK,UAAL,EAAA;AAEL,EAAO,UAAA,CAAA,MAAA,CAAA,GAAA,UAAA,CAAA;AAEP,EAAM,UAAA,CAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAEN,EAAQ,UAAA,CAAA,OAAA,CAAA,GAAA,WAAA,CAAA;AAER,EAAc,UAAA,CAAA,aAAA,CAAA,GAAA,iBAAA,CAAA;AAEd,EAAe,UAAA,CAAA,cAAA,CAAA,GAAA,kBAAA,CAAA;AAEf,EAAS,UAAA,CAAA,QAAA,CAAA,GAAA,YAAA,CAAA;AAET,EAAO,UAAA,CAAA,MAAA,CAAA,GAAA,UAAA,CAAA;AAEP,EAAU,UAAA,CAAA,SAAA,CAAA,GAAA,aAAA,CAAA;AAEV,EAAO,UAAA,CAAA,MAAA,CAAA,GAAA,UAAA,CAAA;AAEP,EAAa,UAAA,CAAA,YAAA,CAAA,GAAA,gBAAA,CAAA;AAEb,EAAQ,UAAA,CAAA,OAAA,CAAA,GAAA,WAAA,CAAA;AAER,EAAY,UAAA,CAAA,WAAA,CAAA,GAAA,eAAA,CAAA;AAEZ,EAAY,UAAA,CAAA,WAAA,CAAA,GAAA,eAAA,CAAA;AAEZ,EAAe,UAAA,CAAA,cAAA,CAAA,GAAA,cAAA,CAAA;AAEf,EAAO,UAAA,CAAA,MAAA,CAAA,GAAA,UAAA,CAAA;AAEP,EAAkB,UAAA,CAAA,iBAAA,CAAA,GAAA,qBAAA,CAAA;AAElB,EAAc,UAAA,CAAA,aAAA,CAAA,GAAA,iBAAA,CAAA;AAEd,EAAgB,UAAA,CAAA,eAAA,CAAA,GAAA,mBAAA,CAAA;AAEhB,EAAS,UAAA,CAAA,QAAA,CAAA,GAAA,YAAA,CAAA;AAET,EAAoB,UAAA,CAAA,mBAAA,CAAA,GAAA,mBAAA,CAAA;AAAA,CAxCV,EAAA,SAAA,KAAA,SAAA,GAAA,EAAA,CAAA,CAAA,CAAA;AA6CA,IAAA,UAAA;AAAL,CAAA,SAAK,UAAL,EAAA;AACL,EAAA,UAAA,CAAA,UAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA,CAAA;AAAA,CALU,EAAA,SAAA,KAAA,SAAA,GAAA,EAAA,CAAA,CAAA,CAAA;AASL,MAAM,yBAA4B,GAAA;;;;"}