@labelbee/lb-components 1.6.0-alpha.7 → 1.6.0-alpha.9

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 (149) hide show
  1. package/LICENSE +203 -0
  2. package/dist/App.js +1 -1
  3. package/dist/assets/attributeIcon/eraser.svg.js +1 -0
  4. package/dist/assets/attributeIcon/eraser_a.svg.js +1 -0
  5. package/dist/assets/attributeIcon/pen.svg.js +1 -0
  6. package/dist/assets/attributeIcon/pen_a.svg.js +1 -0
  7. package/dist/components/attributeList/index.js +1 -1
  8. package/dist/components/customResizeHook/index.js +1 -1
  9. package/dist/components/pointCloudView/PointCloud2DView.js +1 -1
  10. package/dist/components/pointCloudView/PointCloud3DView.js +1 -1
  11. package/dist/components/pointCloudView/PointCloudBackView.js +1 -1
  12. package/dist/components/pointCloudView/PointCloudListener.js +1 -1
  13. package/dist/components/pointCloudView/PointCloudSideView.js +1 -1
  14. package/dist/components/pointCloudView/PointCloudTopView.js +1 -1
  15. package/dist/components/pointCloudView/hooks/usePointCloudViews.js +1 -1
  16. package/dist/components/pointCloudView/index.js +1 -1
  17. package/dist/components/videoAnnotate/index.js +1 -1
  18. package/dist/data/enums/ToolType.js +1 -1
  19. package/dist/hooks/annotation.js +1 -1
  20. package/dist/index.css +32 -1
  21. package/dist/index.js +1 -1
  22. package/dist/store/Actions.js +1 -1
  23. package/dist/store/annotation/actionCreators.js +1 -1
  24. package/dist/store/annotation/reducer.js +1 -1
  25. package/dist/store/ctx.js +1 -0
  26. package/dist/types/App.d.ts +7 -0
  27. package/dist/types/components/attributeList/index.d.ts +1 -0
  28. package/dist/types/data/enums/ToolType.d.ts +14 -8
  29. package/dist/types/store/Actions.d.ts +1 -0
  30. package/dist/types/store/annotation/actionCreators.d.ts +8 -0
  31. package/dist/types/store/ctx.d.ts +4 -0
  32. package/dist/types/views/MainView/annotationOperation/index.d.ts +3 -0
  33. package/dist/types/views/MainView/sidebar/ScribbleSidebar/index.d.ts +6 -0
  34. package/dist/views/MainView/annotationOperation/index.js +1 -1
  35. package/dist/views/MainView/annotationTips/index.js +1 -1
  36. package/dist/views/MainView/index.js +1 -1
  37. package/dist/views/MainView/sidebar/AnnotationText/index.js +1 -1
  38. package/dist/views/MainView/sidebar/GeneralOperation/index.js +1 -1
  39. package/dist/views/MainView/sidebar/GeneralOperation/useOperationList.js +1 -1
  40. package/dist/views/MainView/sidebar/ImgAttributeInfo/index.js +1 -1
  41. package/dist/views/MainView/sidebar/PointCloudToolSidebar/index.js +1 -1
  42. package/dist/views/MainView/sidebar/ScribbleSidebar/index.js +1 -0
  43. package/dist/views/MainView/sidebar/SwitchAttributeList/index.js +1 -1
  44. package/dist/views/MainView/sidebar/TagSidebar/index.js +1 -1
  45. package/dist/views/MainView/sidebar/TextToolSidebar/index.js +1 -1
  46. package/dist/views/MainView/sidebar/ToolStyle/index.js +1 -1
  47. package/dist/views/MainView/sidebar/index.js +1 -1
  48. package/dist/views/MainView/toolFooter/FooterTips/index.js +1 -1
  49. package/dist/views/MainView/toolFooter/HiddenTips/index.js +1 -1
  50. package/dist/views/MainView/toolFooter/PageNumber/index.js +1 -1
  51. package/dist/views/MainView/toolFooter/ZoomController/ZoomLevel/index.js +1 -1
  52. package/dist/views/MainView/toolFooter/ZoomController/index.js +1 -1
  53. package/dist/views/MainView/toolFooter/index.js +1 -1
  54. package/dist/views/MainView/toolHeader/ExportData/index.js +1 -1
  55. package/dist/views/MainView/toolHeader/StepSwitch/index.js +1 -1
  56. package/dist/views/MainView/toolHeader/headerOption/index.js +1 -1
  57. package/dist/views/MainView/toolHeader/index.js +1 -1
  58. package/es/App.js +1 -1
  59. package/es/App.js.map +1 -1
  60. package/es/assets/attributeIcon/eraser.svg.js +1 -4
  61. package/es/assets/attributeIcon/eraser_a.svg.js +1 -4
  62. package/es/assets/attributeIcon/pen.svg.js +1 -4
  63. package/es/assets/attributeIcon/pen_a.svg.js +1 -4
  64. package/es/components/attributeList/index.js +1 -1
  65. package/es/components/attributeList/index.js.map +1 -1
  66. package/es/components/customResizeHook/index.js +1 -1
  67. package/es/components/customResizeHook/index.js.map +1 -1
  68. package/es/components/pointCloudView/PointCloud2DView.js +1 -1
  69. package/es/components/pointCloudView/PointCloud2DView.js.map +1 -1
  70. package/es/components/pointCloudView/PointCloud3DView.js +1 -1
  71. package/es/components/pointCloudView/PointCloud3DView.js.map +1 -1
  72. package/es/components/pointCloudView/PointCloudBackView.js +1 -1
  73. package/es/components/pointCloudView/PointCloudBackView.js.map +1 -1
  74. package/es/components/pointCloudView/PointCloudListener.js +1 -1
  75. package/es/components/pointCloudView/PointCloudListener.js.map +1 -1
  76. package/es/components/pointCloudView/PointCloudSideView.js +1 -1
  77. package/es/components/pointCloudView/PointCloudSideView.js.map +1 -1
  78. package/es/components/pointCloudView/PointCloudTopView.js +1 -1
  79. package/es/components/pointCloudView/PointCloudTopView.js.map +1 -1
  80. package/es/components/pointCloudView/hooks/usePointCloudViews.js +1 -1
  81. package/es/components/pointCloudView/hooks/usePointCloudViews.js.map +1 -1
  82. package/es/components/pointCloudView/index.js +1 -1
  83. package/es/components/pointCloudView/index.js.map +1 -1
  84. package/es/components/videoAnnotate/index.js +1 -1
  85. package/es/components/videoAnnotate/index.js.map +1 -1
  86. package/es/data/enums/ToolType.js +1 -1
  87. package/es/data/enums/ToolType.js.map +1 -1
  88. package/es/hooks/annotation.js +1 -1
  89. package/es/hooks/annotation.js.map +1 -1
  90. package/es/index.css +32 -1
  91. package/es/index.js +1 -1
  92. package/es/index.js.map +1 -1
  93. package/es/store/Actions.js +1 -1
  94. package/es/store/Actions.js.map +1 -1
  95. package/es/store/annotation/actionCreators.js +1 -1
  96. package/es/store/annotation/actionCreators.js.map +1 -1
  97. package/es/store/annotation/reducer.js +1 -1
  98. package/es/store/annotation/reducer.js.map +1 -1
  99. package/es/store/ctx.js +1 -0
  100. package/es/store/ctx.js.map +1 -0
  101. package/es/views/MainView/annotationOperation/index.js +1 -1
  102. package/es/views/MainView/annotationOperation/index.js.map +1 -1
  103. package/es/views/MainView/annotationTips/index.js +1 -1
  104. package/es/views/MainView/annotationTips/index.js.map +1 -1
  105. package/es/views/MainView/index.js +1 -1
  106. package/es/views/MainView/index.js.map +1 -1
  107. package/es/views/MainView/sidebar/AnnotationText/index.js +1 -1
  108. package/es/views/MainView/sidebar/AnnotationText/index.js.map +1 -1
  109. package/es/views/MainView/sidebar/GeneralOperation/index.js +1 -1
  110. package/es/views/MainView/sidebar/GeneralOperation/index.js.map +1 -1
  111. package/es/views/MainView/sidebar/GeneralOperation/useOperationList.js +1 -1
  112. package/es/views/MainView/sidebar/GeneralOperation/useOperationList.js.map +1 -1
  113. package/es/views/MainView/sidebar/ImgAttributeInfo/index.js +1 -1
  114. package/es/views/MainView/sidebar/ImgAttributeInfo/index.js.map +1 -1
  115. package/es/views/MainView/sidebar/PointCloudToolSidebar/index.js +1 -1
  116. package/es/views/MainView/sidebar/PointCloudToolSidebar/index.js.map +1 -1
  117. package/es/views/MainView/sidebar/ScribbleSidebar/index.js +1 -60
  118. package/es/views/MainView/sidebar/ScribbleSidebar/index.js.map +1 -1
  119. package/es/views/MainView/sidebar/SwitchAttributeList/index.js +1 -1
  120. package/es/views/MainView/sidebar/SwitchAttributeList/index.js.map +1 -1
  121. package/es/views/MainView/sidebar/TagSidebar/index.js +1 -1
  122. package/es/views/MainView/sidebar/TagSidebar/index.js.map +1 -1
  123. package/es/views/MainView/sidebar/TextToolSidebar/index.js +1 -1
  124. package/es/views/MainView/sidebar/TextToolSidebar/index.js.map +1 -1
  125. package/es/views/MainView/sidebar/ToolStyle/index.js +1 -1
  126. package/es/views/MainView/sidebar/ToolStyle/index.js.map +1 -1
  127. package/es/views/MainView/sidebar/index.js +1 -1
  128. package/es/views/MainView/sidebar/index.js.map +1 -1
  129. package/es/views/MainView/toolFooter/FooterTips/index.js +1 -1
  130. package/es/views/MainView/toolFooter/FooterTips/index.js.map +1 -1
  131. package/es/views/MainView/toolFooter/HiddenTips/index.js +1 -1
  132. package/es/views/MainView/toolFooter/HiddenTips/index.js.map +1 -1
  133. package/es/views/MainView/toolFooter/PageNumber/index.js +1 -1
  134. package/es/views/MainView/toolFooter/PageNumber/index.js.map +1 -1
  135. package/es/views/MainView/toolFooter/ZoomController/ZoomLevel/index.js +1 -1
  136. package/es/views/MainView/toolFooter/ZoomController/ZoomLevel/index.js.map +1 -1
  137. package/es/views/MainView/toolFooter/ZoomController/index.js +1 -1
  138. package/es/views/MainView/toolFooter/ZoomController/index.js.map +1 -1
  139. package/es/views/MainView/toolFooter/index.js +1 -1
  140. package/es/views/MainView/toolFooter/index.js.map +1 -1
  141. package/es/views/MainView/toolHeader/ExportData/index.js +1 -1
  142. package/es/views/MainView/toolHeader/ExportData/index.js.map +1 -1
  143. package/es/views/MainView/toolHeader/StepSwitch/index.js +1 -1
  144. package/es/views/MainView/toolHeader/StepSwitch/index.js.map +1 -1
  145. package/es/views/MainView/toolHeader/headerOption/index.js +1 -1
  146. package/es/views/MainView/toolHeader/headerOption/index.js.map +1 -1
  147. package/es/views/MainView/toolHeader/index.js +1 -1
  148. package/es/views/MainView/toolHeader/index.js.map +1 -1
  149. package/package.json +5 -4
@@ -1 +1 @@
1
- {"version":3,"file":"PointCloudSideView.js","sources":["../../../src/components/pointCloudView/PointCloudSideView.tsx"],"sourcesContent":["/**\n * @file PointCloud sideView - React Component\n * @createdate 2022-07-11\n * @author Ron <ron.f.luo@gmail.com>\n */\nimport { PointCloud, PointCloudAnnotation } from '@labelbee/lb-annotation';\nimport { getClassName } from '@/utils/dom';\nimport { PointCloudContainer } from './PointCloudLayout';\nimport React, { useEffect, useRef } from 'react';\nimport { EPerspectiveView, IPointCloudBox } from '@labelbee/lb-utils';\nimport { PointCloudContext } from './PointCloudContext';\nimport { SizeInfoForView } from './PointCloudInfos';\nimport { connect } from 'react-redux';\nimport { aMapStateToProps, IAnnotationStateProps } from '@/store/annotation/map';\nimport { usePointCloudViews } from './hooks/usePointCloudViews';\nimport { useSingleBox } from './hooks/useSingleBox';\nimport EmptyPage from './components/EmptyPage';\nimport useSize from '@/hooks/useSize';\nimport { useTranslation } from 'react-i18next';\n/**\n * Get the offset from canvas2d-coordinate to world coordinate\n * @param currentPos\n * @param size\n * @param zoom\n * @returns\n */\nconst TransferCanvas2WorldOffset = (\n currentPos: { x: number; y: number },\n size: { width: number; height: number },\n zoom = 1,\n) => {\n const { width: w, height: h } = size;\n\n const canvasCenterPoint = {\n x: currentPos.x + (w * zoom) / 2, // 放大倍数之后的中心点的偏移量\n y: currentPos.y + (h * zoom) / 2,\n };\n\n const worldCenterPoint = {\n x: size.width / 2,\n y: size.height / 2,\n };\n\n return {\n offsetX: (worldCenterPoint.x - canvasCenterPoint.x) / zoom,\n offsetY: -(worldCenterPoint.y - canvasCenterPoint.y) / zoom,\n };\n};\n\nconst updateSideViewByCanvas2D = (\n currentPos: { x: number; y: number },\n zoom: number,\n size: { width: number; height: number },\n selectedPointCloudBox: IPointCloudBox,\n SidePointCloud: PointCloud,\n) => {\n const { offsetX, offsetY } = TransferCanvas2WorldOffset(currentPos, size, zoom);\n SidePointCloud.camera.zoom = zoom;\n if (currentPos) {\n const cos = Math.cos(selectedPointCloudBox.rotation);\n const sin = Math.sin(selectedPointCloudBox.rotation);\n const offsetXX = offsetX * cos;\n const offsetXY = offsetX * sin;\n const { x, y, z } = SidePointCloud.initCameraPosition;\n SidePointCloud.camera.position.set(x - offsetXX, y - offsetXY, z + offsetY);\n }\n SidePointCloud.camera.updateProjectionMatrix();\n SidePointCloud.render();\n};\n\nconst PointCloudSideView: React.FC<IAnnotationStateProps> = ({ currentData }) => {\n const ptCtx = React.useContext(PointCloudContext);\n const { sideViewUpdateBox } = usePointCloudViews();\n const { selectedBox } = useSingleBox();\n const ref = useRef<HTMLDivElement>(null);\n const size = useSize(ref);\n const { t } = useTranslation();\n\n useEffect(() => {\n if (ref.current) {\n const size = {\n width: ref.current.clientWidth,\n height: ref.current.clientHeight,\n };\n\n const pointCloudAnnotation = new PointCloudAnnotation({\n container: ref.current,\n size,\n polygonOperationProps: { showDirectionLine: false, forbidAddNew: true },\n });\n ptCtx.setSideViewInstance(pointCloudAnnotation);\n // };\n }\n }, []);\n\n useEffect(() => {\n // By the way as an initialization judgment\n if (!size || !ptCtx.sideViewInstance) {\n return;\n }\n\n const { pointCloud2dOperation, pointCloudInstance } = ptCtx.sideViewInstance;\n\n /**\n * Synchronized 3d point cloud view displacement operations\n *\n * Change Orthographic Camera size\n */\n pointCloud2dOperation.singleOn('renderZoom', (zoom: number, currentPos: any) => {\n if (!ptCtx.selectedPointCloudBox) {\n return;\n }\n updateSideViewByCanvas2D(\n currentPos,\n zoom,\n size,\n ptCtx.selectedPointCloudBox,\n pointCloudInstance,\n );\n });\n\n // Synchronized 3d point cloud view displacement operations\n pointCloud2dOperation.singleOn('dragMove', ({ currentPos, zoom }: any) => {\n if (!ptCtx.selectedPointCloudBox) {\n return;\n }\n updateSideViewByCanvas2D(\n currentPos,\n zoom,\n size,\n ptCtx.selectedPointCloudBox,\n pointCloudInstance,\n );\n });\n\n pointCloud2dOperation.singleOn('updatePolygonByDrag', ({ newPolygon, originPolygon }: any) => {\n sideViewUpdateBox(newPolygon, originPolygon);\n });\n }, [ptCtx, size]);\n\n useEffect(() => {\n // Update Size\n ptCtx?.sideViewInstance?.initSize(size);\n }, [size]);\n\n return (\n <PointCloudContainer\n className={getClassName('point-cloud-container', 'side-view')}\n title={t('SideView')}\n toolbar={<SizeInfoForView perspectiveView={EPerspectiveView.Left} />}\n >\n <div className={getClassName('point-cloud-container', 'bottom-view-content')}>\n <div className={getClassName('point-cloud-container', 'core-instance')} ref={ref} />\n {!selectedBox && <EmptyPage />}\n </div>\n </PointCloudContainer>\n );\n};\n\nexport default connect(aMapStateToProps)(PointCloudSideView);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PointCloudSideView.js","sources":["../../../src/components/pointCloudView/PointCloudSideView.tsx"],"sourcesContent":["/**\n * @file PointCloud sideView - React Component\n * @createdate 2022-07-11\n * @author Ron <ron.f.luo@gmail.com>\n */\nimport { PointCloud, PointCloudAnnotation } from '@labelbee/lb-annotation';\nimport { getClassName } from '@/utils/dom';\nimport { PointCloudContainer } from './PointCloudLayout';\nimport React, { useEffect, useRef } from 'react';\nimport { EPerspectiveView, IPointCloudBox } from '@labelbee/lb-utils';\nimport { PointCloudContext } from './PointCloudContext';\nimport { SizeInfoForView } from './PointCloudInfos';\nimport { connect } from 'react-redux';\nimport { aMapStateToProps, IAnnotationStateProps } from '@/store/annotation/map';\nimport { usePointCloudViews } from './hooks/usePointCloudViews';\nimport { useSingleBox } from './hooks/useSingleBox';\nimport EmptyPage from './components/EmptyPage';\nimport useSize from '@/hooks/useSize';\nimport { useTranslation } from 'react-i18next';\nimport { LabelBeeContext } from '@/store/ctx';\n/**\n * Get the offset from canvas2d-coordinate to world coordinate\n * @param currentPos\n * @param size\n * @param zoom\n * @returns\n */\nconst TransferCanvas2WorldOffset = (\n currentPos: { x: number; y: number },\n size: { width: number; height: number },\n zoom = 1,\n) => {\n const { width: w, height: h } = size;\n\n const canvasCenterPoint = {\n x: currentPos.x + (w * zoom) / 2, // 放大倍数之后的中心点的偏移量\n y: currentPos.y + (h * zoom) / 2,\n };\n\n const worldCenterPoint = {\n x: size.width / 2,\n y: size.height / 2,\n };\n\n return {\n offsetX: (worldCenterPoint.x - canvasCenterPoint.x) / zoom,\n offsetY: -(worldCenterPoint.y - canvasCenterPoint.y) / zoom,\n };\n};\n\nconst updateSideViewByCanvas2D = (\n currentPos: { x: number; y: number },\n zoom: number,\n size: { width: number; height: number },\n selectedPointCloudBox: IPointCloudBox,\n SidePointCloud: PointCloud,\n) => {\n const { offsetX, offsetY } = TransferCanvas2WorldOffset(currentPos, size, zoom);\n SidePointCloud.camera.zoom = zoom;\n if (currentPos) {\n const cos = Math.cos(selectedPointCloudBox.rotation);\n const sin = Math.sin(selectedPointCloudBox.rotation);\n const offsetXX = offsetX * cos;\n const offsetXY = offsetX * sin;\n const { x, y, z } = SidePointCloud.initCameraPosition;\n SidePointCloud.camera.position.set(x - offsetXX, y - offsetXY, z + offsetY);\n }\n SidePointCloud.camera.updateProjectionMatrix();\n SidePointCloud.render();\n};\n\nconst PointCloudSideView: React.FC<IAnnotationStateProps> = ({ currentData }) => {\n const ptCtx = React.useContext(PointCloudContext);\n const { sideViewUpdateBox } = usePointCloudViews();\n const { selectedBox } = useSingleBox();\n const ref = useRef<HTMLDivElement>(null);\n const size = useSize(ref);\n const { t } = useTranslation();\n\n useEffect(() => {\n if (ref.current) {\n const size = {\n width: ref.current.clientWidth,\n height: ref.current.clientHeight,\n };\n\n const pointCloudAnnotation = new PointCloudAnnotation({\n container: ref.current,\n size,\n polygonOperationProps: { showDirectionLine: false, forbidAddNew: true },\n });\n ptCtx.setSideViewInstance(pointCloudAnnotation);\n // };\n }\n }, []);\n\n useEffect(() => {\n // By the way as an initialization judgment\n if (!size || !ptCtx.sideViewInstance) {\n return;\n }\n\n const { pointCloud2dOperation, pointCloudInstance } = ptCtx.sideViewInstance;\n\n /**\n * Synchronized 3d point cloud view displacement operations\n *\n * Change Orthographic Camera size\n */\n pointCloud2dOperation.singleOn('renderZoom', (zoom: number, currentPos: any) => {\n if (!ptCtx.selectedPointCloudBox) {\n return;\n }\n updateSideViewByCanvas2D(\n currentPos,\n zoom,\n size,\n ptCtx.selectedPointCloudBox,\n pointCloudInstance,\n );\n });\n\n // Synchronized 3d point cloud view displacement operations\n pointCloud2dOperation.singleOn('dragMove', ({ currentPos, zoom }: any) => {\n if (!ptCtx.selectedPointCloudBox) {\n return;\n }\n updateSideViewByCanvas2D(\n currentPos,\n zoom,\n size,\n ptCtx.selectedPointCloudBox,\n pointCloudInstance,\n );\n });\n\n pointCloud2dOperation.singleOn('updatePolygonByDrag', ({ newPolygon, originPolygon }: any) => {\n sideViewUpdateBox(newPolygon, originPolygon);\n });\n }, [ptCtx, size]);\n\n useEffect(() => {\n // Update Size\n ptCtx?.sideViewInstance?.initSize(size);\n }, [size]);\n\n return (\n <PointCloudContainer\n className={getClassName('point-cloud-container', 'side-view')}\n title={t('SideView')}\n toolbar={<SizeInfoForView perspectiveView={EPerspectiveView.Left} />}\n >\n <div className={getClassName('point-cloud-container', 'bottom-view-content')}>\n <div className={getClassName('point-cloud-container', 'core-instance')} ref={ref} />\n {!selectedBox && <EmptyPage />}\n </div>\n </PointCloudContainer>\n );\n};\n\nexport default connect(aMapStateToProps, null, null, { context: LabelBeeContext })(\n PointCloudSideView,\n);\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- import{getClassName as p}from"../../utils/dom.js";import{FooterDivider as I}from"../../views/MainView/toolFooter/index.js";import{ZoomController as j}from"../../views/MainView/toolFooter/ZoomController/index.js";import{UpSquareOutlined as k,DownSquareOutlined as T}from"@ant-design/icons";import{PointCloudAnnotation as B,cTool as N}from"@labelbee/lb-annotation";import o,{useRef as Z,useState as b,useLayoutEffect as A,useEffect as w}from"react";import{PointCloudContext as R}from"./PointCloudContext.js";import{useRotate as z}from"./hooks/useRotate.js";import{useSingleBox as E}from"./hooks/useSingleBox.js";import{PointCloudContainer as L}from"./PointCloudLayout.js";import{BoxInfos as M,PointCloudValidity as F}from"./PointCloudInfos.js";import{usePolygon as X}from"./hooks/usePolygon.js";import{useZoom as S}from"./hooks/useZoom.js";import{Slider as Y}from"antd";import{aMapStateToProps as _}from"../../store/annotation/map.js";import{connect as q}from"react-redux";import{usePointCloudViews as D}from"./hooks/usePointCloudViews.js";import U from"../../hooks/useSize.js";import{useTranslation as W}from"react-i18next";const{EPolygonPattern:H}=N,O=(i,s,e=1)=>{const{width:l,height:u}=s,c={x:i.x+l*e/2,y:i.y+u*e/2},d={x:s.width/2,y:s.height/2};return{offsetX:(d.x-c.x)/e,offsetY:-(d.y-c.y)/e}},$=({currentData:i})=>{const{zoom:s,zoomIn:e,zoomOut:l,initialPosition:u}=S(),{selectNextBox:c,selectPrevBox:d}=E(),{updateRotate:f}=z({currentData:i}),m=2,x=()=>{f(-m)},g=()=>{f(m)},a=()=>{f(180)};return o.createElement(o.Fragment,null,o.createElement("span",{onClick:g,className:p("point-cloud","rotate-reserve")}),o.createElement("span",{onClick:x,className:p("point-cloud","rotate")}),o.createElement("span",{onClick:a,className:p("point-cloud","rotate-180")}),o.createElement(I,null),o.createElement(k,{onClick:()=>{d()},className:p("point-cloud","prev")}),o.createElement(T,{onClick:()=>{c()},className:p("point-cloud","next")}),o.createElement(I,null),o.createElement(j,{initialPosition:u,zoomIn:e,zoomOut:l,zoom:s}))},G=({setZAxisLimit:i,zAxisLimit:s})=>o.createElement("div",{style:{position:"absolute",top:128,right:8,height:"50%",zIndex:20}},o.createElement(Y,{vertical:!0,step:.5,max:10,min:.5,defaultValue:s,onAfterChange:e=>{i(e)}})),J=({currentData:i})=>{const s=Z(null),e=o.useContext(R),l=U(s),{setZoom:u}=S(),{addPolygon:c,deletePolygon:d}=X(),{deletePointCloudBox:f}=E(),[m,x]=b(10),{t:g}=W(),a=D();return A(()=>{if(s.current&&(i==null?void 0:i.url)&&(i==null?void 0:i.result)){const t={width:s.current.clientWidth,height:s.current.clientHeight},n=new B({container:s.current,size:t,pcdPath:i.url});e.setTopViewInstance(n)}},[]),w(()=>{if(!l||!e.topViewInstance||!e.sideViewInstance)return;const{pointCloud2dOperation:t}=e.topViewInstance;t.singleOn("polygonCreated",n=>{if(t.pattern===H.Normal||!(i==null?void 0:i.url)){c(n);return}a.topViewAddBox(n,l)}),t.singleOn("deletedObject",({id:n})=>{f(n),d(n)}),t.singleOn("deleteSelectedIDs",()=>{e.setSelectedIDs([])}),t.singleOn("addSelectedIDs",n=>{e.addSelectedID(n)}),t.singleOn("setSelectedIDs",n=>{e.setSelectedIDs(n)}),t.singleOn("updatePolygonByDrag",({newPolygon:n})=>{var r;(r=a.topViewUpdateBox)==null||r.call(a,n,l)})},[e,l,i,a]),w(()=>{if(!(l==null?void 0:l.width)||!e.topViewInstance)return;e.topViewInstance.initSize(l),e.topViewInstance.updatePolygonList(e.pointCloudBoxList);const{topViewInstance:{pointCloudInstance:t,pointCloud2dOperation:n}}=e;n.singleOn("renderZoom",(r,C)=>{const{offsetX:h,offsetY:P}=O(C,l,r);if(t.camera.zoom=r,C){const{x:v,y:V,z:y}=t.initCameraPosition;t.camera.position.set(v+P,V-h,y)}t.camera.updateProjectionMatrix(),t.render(),u(r)}),n.singleOn("dragMove",({currentPos:r,zoom:C})=>{const{offsetX:h,offsetY:P}=O(r,l,C);t.camera.zoom=C;const{x:v,y:V,z:y}=t.initCameraPosition;t.camera.position.set(v+P,V-h,y),t.render()})},[l]),w(()=>{var t,n;(n=(t=e.topViewInstance)==null?void 0:t.pointCloudInstance)==null||n.applyZAxisPoints(m)},[m]),w(()=>{a.topViewSelectedChanged()},[e.selectedIDs]),o.createElement(L,{className:p("point-cloud-container","top-view"),title:g("TopView"),toolbar:o.createElement($,{currentData:i})},o.createElement("div",{style:{position:"relative",flex:1}},o.createElement("div",{style:{width:"100%",height:"100%"},ref:s}),o.createElement(M,null),o.createElement(G,{zAxisLimit:m,setZAxisLimit:x}),o.createElement(F,null)))};var K=q(_)(J);export{K as default};
1
+ import{getClassName as u}from"../../utils/dom.js";import{FooterDivider as I}from"../../views/MainView/toolFooter/index.js";import{ZoomController as j}from"../../views/MainView/toolFooter/ZoomController/index.js";import{UpSquareOutlined as k,DownSquareOutlined as B}from"@ant-design/icons";import{PointCloudAnnotation as T,cTool as b}from"@labelbee/lb-annotation";import o,{useRef as N,useState as Z,useLayoutEffect as A,useEffect as x}from"react";import{PointCloudContext as R}from"./PointCloudContext.js";import{useRotate as z}from"./hooks/useRotate.js";import{useSingleBox as E}from"./hooks/useSingleBox.js";import{PointCloudContainer as L}from"./PointCloudLayout.js";import{BoxInfos as M,PointCloudValidity as F}from"./PointCloudInfos.js";import{usePolygon as X}from"./hooks/usePolygon.js";import{useZoom as S}from"./hooks/useZoom.js";import{Slider as Y}from"antd";import{aMapStateToProps as _}from"../../store/annotation/map.js";import{connect as q}from"react-redux";import{usePointCloudViews as D}from"./hooks/usePointCloudViews.js";import U from"../../hooks/useSize.js";import{useTranslation as W}from"react-i18next";import{LabelBeeContext as H}from"../../store/ctx.js";const{EPolygonPattern:$}=b,O=(i,s,e=1)=>{const{width:l,height:p}=s,c={x:i.x+l*e/2,y:i.y+p*e/2},d={x:s.width/2,y:s.height/2};return{offsetX:(d.x-c.x)/e,offsetY:-(d.y-c.y)/e}},G=({currentData:i})=>{const{zoom:s,zoomIn:e,zoomOut:l,initialPosition:p}=S(),{selectNextBox:c,selectPrevBox:d}=E(),{updateRotate:f}=z({currentData:i}),m=2,w=()=>{f(-m)},g=()=>{f(m)},a=()=>{f(180)};return o.createElement(o.Fragment,null,o.createElement("span",{onClick:g,className:u("point-cloud","rotate-reserve")}),o.createElement("span",{onClick:w,className:u("point-cloud","rotate")}),o.createElement("span",{onClick:a,className:u("point-cloud","rotate-180")}),o.createElement(I,null),o.createElement(k,{onClick:()=>{d()},className:u("point-cloud","prev")}),o.createElement(B,{onClick:()=>{c()},className:u("point-cloud","next")}),o.createElement(I,null),o.createElement(j,{initialPosition:p,zoomIn:e,zoomOut:l,zoom:s}))},J=({setZAxisLimit:i,zAxisLimit:s})=>o.createElement("div",{style:{position:"absolute",top:128,right:8,height:"50%",zIndex:20}},o.createElement(Y,{vertical:!0,step:.5,max:10,min:.5,defaultValue:s,onAfterChange:e=>{i(e)}})),K=({currentData:i})=>{const s=N(null),e=o.useContext(R),l=U(s),{setZoom:p}=S(),{addPolygon:c,deletePolygon:d}=X(),{deletePointCloudBox:f}=E(),[m,w]=Z(10),{t:g}=W(),a=D();return A(()=>{if(s.current&&(i==null?void 0:i.url)&&(i==null?void 0:i.result)){const t={width:s.current.clientWidth,height:s.current.clientHeight},n=new T({container:s.current,size:t,pcdPath:i.url});e.setTopViewInstance(n)}},[]),x(()=>{if(!l||!e.topViewInstance||!e.sideViewInstance)return;const{pointCloud2dOperation:t}=e.topViewInstance;t.singleOn("polygonCreated",n=>{if(t.pattern===$.Normal||!(i==null?void 0:i.url)){c(n);return}a.topViewAddBox(n,l)}),t.singleOn("deletedObject",({id:n})=>{f(n),d(n)}),t.singleOn("deleteSelectedIDs",()=>{e.setSelectedIDs([])}),t.singleOn("addSelectedIDs",n=>{e.addSelectedID(n)}),t.singleOn("setSelectedIDs",n=>{e.setSelectedIDs(n)}),t.singleOn("updatePolygonByDrag",({newPolygon:n})=>{var r;(r=a.topViewUpdateBox)==null||r.call(a,n,l)})},[e,l,i,a]),x(()=>{if(!(l==null?void 0:l.width)||!e.topViewInstance)return;e.topViewInstance.initSize(l),e.topViewInstance.updatePolygonList(e.pointCloudBoxList);const{topViewInstance:{pointCloudInstance:t,pointCloud2dOperation:n}}=e;n.singleOn("renderZoom",(r,C)=>{const{offsetX:h,offsetY:P}=O(C,l,r);if(t.camera.zoom=r,C){const{x:v,y:V,z:y}=t.initCameraPosition;t.camera.position.set(v+P,V-h,y)}t.camera.updateProjectionMatrix(),t.render(),p(r)}),n.singleOn("dragMove",({currentPos:r,zoom:C})=>{const{offsetX:h,offsetY:P}=O(r,l,C);t.camera.zoom=C;const{x:v,y:V,z:y}=t.initCameraPosition;t.camera.position.set(v+P,V-h,y),t.render()})},[l]),x(()=>{var t,n;(n=(t=e.topViewInstance)==null?void 0:t.pointCloudInstance)==null||n.applyZAxisPoints(m)},[m]),x(()=>{a.topViewSelectedChanged()},[e.selectedIDs]),o.createElement(L,{className:u("point-cloud-container","top-view"),title:g("TopView"),toolbar:o.createElement(G,{currentData:i})},o.createElement("div",{style:{position:"relative",flex:1}},o.createElement("div",{style:{width:"100%",height:"100%"},ref:s}),o.createElement(M,null),o.createElement(J,{zAxisLimit:m,setZAxisLimit:w}),o.createElement(F,null)))};var Q=q(_,null,null,{context:H})(K);export{Q as default};
@@ -1 +1 @@
1
- {"version":3,"file":"PointCloudTopView.js","sources":["../../../src/components/pointCloudView/PointCloudTopView.tsx"],"sourcesContent":["/*\n * @Author: Laoluo luozefeng@sensetime.com\n * @Date: 2022-06-22 11:08:31\n * @LastEditors: Laoluo luozefeng@sensetime.com\n */\nimport { getClassName } from '@/utils/dom';\nimport { FooterDivider } from '@/views/MainView/toolFooter';\nimport { ZoomController } from '@/views/MainView/toolFooter/ZoomController';\nimport { DownSquareOutlined, UpSquareOutlined } from '@ant-design/icons';\nimport { cTool, PointCloudAnnotation } from '@labelbee/lb-annotation';\nimport { IPolygonData } from '@labelbee/lb-utils';\nimport React, { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { PointCloudContext } from './PointCloudContext';\nimport { useRotate } from './hooks/useRotate';\nimport { useSingleBox } from './hooks/useSingleBox';\nimport { PointCloudContainer } from './PointCloudLayout';\nimport { BoxInfos, PointCloudValidity } from './PointCloudInfos';\nimport { usePolygon } from './hooks/usePolygon';\nimport { useZoom } from './hooks/useZoom';\nimport { Slider } from 'antd';\nimport { aMapStateToProps, IAnnotationStateProps } from '@/store/annotation/map';\nimport { connect } from 'react-redux';\nimport { usePointCloudViews } from './hooks/usePointCloudViews';\nimport useSize from '@/hooks/useSize';\nimport { useTranslation } from 'react-i18next';\n\nconst { EPolygonPattern } = cTool;\n\n/**\n * Get the offset from canvas2d-coordinate to world coordinate (Top View)\n * @param currentPos\n * @param size\n * @param zoom\n * @returns\n */\nconst TransferCanvas2WorldOffset = (\n currentPos: { x: number; y: number },\n size: { width: number; height: number },\n zoom = 1,\n) => {\n const { width: w, height: h } = size;\n\n const canvasCenterPoint = {\n x: currentPos.x + (w * zoom) / 2,\n y: currentPos.y + (h * zoom) / 2,\n };\n\n const worldCenterPoint = {\n x: size.width / 2,\n y: size.height / 2,\n };\n\n return {\n offsetX: (worldCenterPoint.x - canvasCenterPoint.x) / zoom,\n offsetY: -(worldCenterPoint.y - canvasCenterPoint.y) / zoom,\n };\n};\n\nconst TopViewToolbar = ({ currentData }: IAnnotationStateProps) => {\n const { zoom, zoomIn, zoomOut, initialPosition } = useZoom();\n const { selectNextBox, selectPrevBox } = useSingleBox();\n const { updateRotate } = useRotate({ currentData });\n\n const ratio = 2;\n\n const clockwiseRotate = () => {\n updateRotate(-ratio);\n };\n const anticlockwiseRotate = () => {\n updateRotate(ratio);\n };\n\n const reverseRotate = () => {\n updateRotate(180);\n };\n\n return (\n <>\n <span\n onClick={anticlockwiseRotate}\n className={getClassName('point-cloud', 'rotate-reserve')}\n />\n <span onClick={clockwiseRotate} className={getClassName('point-cloud', 'rotate')} />\n <span onClick={reverseRotate} className={getClassName('point-cloud', 'rotate-180')} />\n <FooterDivider />\n <UpSquareOutlined\n onClick={() => {\n selectPrevBox();\n }}\n className={getClassName('point-cloud', 'prev')}\n />\n <DownSquareOutlined\n onClick={() => {\n selectNextBox();\n }}\n className={getClassName('point-cloud', 'next')}\n />\n <FooterDivider />\n <ZoomController\n initialPosition={initialPosition}\n zoomIn={zoomIn}\n zoomOut={zoomOut}\n zoom={zoom}\n />\n </>\n );\n};\n\n/**\n * Slider for filtering Z-axis points\n */\nconst ZAxisSlider = ({\n setZAxisLimit,\n zAxisLimit,\n}: {\n setZAxisLimit: (value: number) => void;\n zAxisLimit: number;\n}) => {\n return (\n <div style={{ position: 'absolute', top: 128, right: 8, height: '50%', zIndex: 20 }}>\n <Slider\n vertical\n step={0.5}\n max={10}\n min={0.5}\n defaultValue={zAxisLimit}\n onAfterChange={(v: number) => {\n setZAxisLimit(v);\n }}\n />\n </div>\n );\n};\n\nconst PointCloudTopView: React.FC<IAnnotationStateProps> = ({ currentData }) => {\n const ref = useRef<HTMLDivElement>(null);\n const ptCtx = React.useContext(PointCloudContext);\n const size = useSize(ref);\n const { setZoom } = useZoom();\n\n const { addPolygon, deletePolygon } = usePolygon();\n const { deletePointCloudBox } = useSingleBox();\n const [zAxisLimit, setZAxisLimit] = useState<number>(10);\n const { t } = useTranslation();\n const pointCloudViews = usePointCloudViews();\n\n useLayoutEffect(() => {\n if (ref.current && currentData?.url && currentData?.result) {\n const size = {\n width: ref.current.clientWidth,\n height: ref.current.clientHeight,\n };\n\n const pointCloudAnnotation = new PointCloudAnnotation({\n container: ref.current,\n size,\n pcdPath: currentData.url,\n });\n ptCtx.setTopViewInstance(pointCloudAnnotation);\n }\n }, []);\n\n useEffect(() => {\n if (!size || !ptCtx.topViewInstance || !ptCtx.sideViewInstance) {\n return;\n }\n\n const { pointCloud2dOperation: TopView2dOperation } = ptCtx.topViewInstance;\n\n TopView2dOperation.singleOn('polygonCreated', (polygon: IPolygonData) => {\n if (TopView2dOperation.pattern === EPolygonPattern.Normal || !currentData?.url) {\n addPolygon(polygon);\n return;\n }\n\n pointCloudViews.topViewAddBox(polygon, size);\n });\n\n TopView2dOperation.singleOn('deletedObject', ({ id }) => {\n deletePointCloudBox(id);\n deletePolygon(id);\n });\n\n TopView2dOperation.singleOn('deleteSelectedIDs', () => {\n ptCtx.setSelectedIDs([]);\n });\n\n TopView2dOperation.singleOn('addSelectedIDs', (selectedID: string) => {\n ptCtx.addSelectedID(selectedID);\n });\n\n TopView2dOperation.singleOn('setSelectedIDs', (selectedIDs: string[]) => {\n ptCtx.setSelectedIDs(selectedIDs);\n });\n\n TopView2dOperation.singleOn('updatePolygonByDrag', ({ newPolygon }: any) => {\n pointCloudViews.topViewUpdateBox?.(newPolygon, size);\n });\n }, [ptCtx, size, currentData, pointCloudViews]);\n\n useEffect(() => {\n if (!size?.width || !ptCtx.topViewInstance) {\n return;\n }\n\n // 1. Update Size\n ptCtx.topViewInstance.initSize(size);\n ptCtx.topViewInstance.updatePolygonList(ptCtx.pointCloudBoxList);\n\n const {\n topViewInstance: { pointCloudInstance: pointCloud, pointCloud2dOperation: polygonOperation },\n } = ptCtx;\n\n /**\n * Synchronized 3d point cloud view displacement operations\n *\n * Change Orthographic Camera size\n */\n polygonOperation.singleOn('renderZoom', (zoom: number, currentPos: any) => {\n const { offsetX, offsetY } = TransferCanvas2WorldOffset(currentPos, size, zoom);\n pointCloud.camera.zoom = zoom;\n if (currentPos) {\n const { x, y, z } = pointCloud.initCameraPosition;\n pointCloud.camera.position.set(x + offsetY, y - offsetX, z);\n }\n\n pointCloud.camera.updateProjectionMatrix();\n pointCloud.render();\n\n setZoom(zoom);\n });\n\n // Synchronized 3d point cloud view displacement operations\n polygonOperation.singleOn('dragMove', ({ currentPos, zoom }) => {\n const { offsetX, offsetY } = TransferCanvas2WorldOffset(currentPos, size, zoom);\n pointCloud.camera.zoom = zoom;\n const { x, y, z } = pointCloud.initCameraPosition;\n pointCloud.camera.position.set(x + offsetY, y - offsetX, z);\n pointCloud.render();\n });\n }, [size]);\n\n useEffect(() => {\n ptCtx.topViewInstance?.pointCloudInstance?.applyZAxisPoints(zAxisLimit);\n }, [zAxisLimit]);\n\n useEffect(() => {\n pointCloudViews.topViewSelectedChanged();\n }, [ptCtx.selectedIDs]);\n\n return (\n <PointCloudContainer\n className={getClassName('point-cloud-container', 'top-view')}\n title={t('TopView')}\n toolbar={<TopViewToolbar currentData={currentData} />}\n >\n <div style={{ position: 'relative', flex: 1 }}>\n <div style={{ width: '100%', height: '100%' }} ref={ref} />\n\n <BoxInfos />\n <ZAxisSlider zAxisLimit={zAxisLimit} setZAxisLimit={setZAxisLimit} />\n <PointCloudValidity />\n </div>\n </PointCloudContainer>\n );\n};\n\nexport default connect(aMapStateToProps)(PointCloudTopView);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PointCloudTopView.js","sources":["../../../src/components/pointCloudView/PointCloudTopView.tsx"],"sourcesContent":["/*\n * @Author: Laoluo luozefeng@sensetime.com\n * @Date: 2022-06-22 11:08:31\n * @LastEditors: Laoluo luozefeng@sensetime.com\n */\nimport { getClassName } from '@/utils/dom';\nimport { FooterDivider } from '@/views/MainView/toolFooter';\nimport { ZoomController } from '@/views/MainView/toolFooter/ZoomController';\nimport { DownSquareOutlined, UpSquareOutlined } from '@ant-design/icons';\nimport { cTool, PointCloudAnnotation } from '@labelbee/lb-annotation';\nimport { IPolygonData } from '@labelbee/lb-utils';\nimport React, { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { PointCloudContext } from './PointCloudContext';\nimport { useRotate } from './hooks/useRotate';\nimport { useSingleBox } from './hooks/useSingleBox';\nimport { PointCloudContainer } from './PointCloudLayout';\nimport { BoxInfos, PointCloudValidity } from './PointCloudInfos';\nimport { usePolygon } from './hooks/usePolygon';\nimport { useZoom } from './hooks/useZoom';\nimport { Slider } from 'antd';\nimport { aMapStateToProps, IAnnotationStateProps } from '@/store/annotation/map';\nimport { connect } from 'react-redux';\nimport { usePointCloudViews } from './hooks/usePointCloudViews';\nimport useSize from '@/hooks/useSize';\nimport { useTranslation } from 'react-i18next';\nimport { LabelBeeContext } from '@/store/ctx';\n\nconst { EPolygonPattern } = cTool;\n\n/**\n * Get the offset from canvas2d-coordinate to world coordinate (Top View)\n * @param currentPos\n * @param size\n * @param zoom\n * @returns\n */\nconst TransferCanvas2WorldOffset = (\n currentPos: { x: number; y: number },\n size: { width: number; height: number },\n zoom = 1,\n) => {\n const { width: w, height: h } = size;\n\n const canvasCenterPoint = {\n x: currentPos.x + (w * zoom) / 2,\n y: currentPos.y + (h * zoom) / 2,\n };\n\n const worldCenterPoint = {\n x: size.width / 2,\n y: size.height / 2,\n };\n\n return {\n offsetX: (worldCenterPoint.x - canvasCenterPoint.x) / zoom,\n offsetY: -(worldCenterPoint.y - canvasCenterPoint.y) / zoom,\n };\n};\n\nconst TopViewToolbar = ({ currentData }: IAnnotationStateProps) => {\n const { zoom, zoomIn, zoomOut, initialPosition } = useZoom();\n const { selectNextBox, selectPrevBox } = useSingleBox();\n const { updateRotate } = useRotate({ currentData });\n\n const ratio = 2;\n\n const clockwiseRotate = () => {\n updateRotate(-ratio);\n };\n const anticlockwiseRotate = () => {\n updateRotate(ratio);\n };\n\n const reverseRotate = () => {\n updateRotate(180);\n };\n\n return (\n <>\n <span\n onClick={anticlockwiseRotate}\n className={getClassName('point-cloud', 'rotate-reserve')}\n />\n <span onClick={clockwiseRotate} className={getClassName('point-cloud', 'rotate')} />\n <span onClick={reverseRotate} className={getClassName('point-cloud', 'rotate-180')} />\n <FooterDivider />\n <UpSquareOutlined\n onClick={() => {\n selectPrevBox();\n }}\n className={getClassName('point-cloud', 'prev')}\n />\n <DownSquareOutlined\n onClick={() => {\n selectNextBox();\n }}\n className={getClassName('point-cloud', 'next')}\n />\n <FooterDivider />\n <ZoomController\n initialPosition={initialPosition}\n zoomIn={zoomIn}\n zoomOut={zoomOut}\n zoom={zoom}\n />\n </>\n );\n};\n\n/**\n * Slider for filtering Z-axis points\n */\nconst ZAxisSlider = ({\n setZAxisLimit,\n zAxisLimit,\n}: {\n setZAxisLimit: (value: number) => void;\n zAxisLimit: number;\n}) => {\n return (\n <div style={{ position: 'absolute', top: 128, right: 8, height: '50%', zIndex: 20 }}>\n <Slider\n vertical\n step={0.5}\n max={10}\n min={0.5}\n defaultValue={zAxisLimit}\n onAfterChange={(v: number) => {\n setZAxisLimit(v);\n }}\n />\n </div>\n );\n};\n\nconst PointCloudTopView: React.FC<IAnnotationStateProps> = ({ currentData }) => {\n const ref = useRef<HTMLDivElement>(null);\n const ptCtx = React.useContext(PointCloudContext);\n const size = useSize(ref);\n const { setZoom } = useZoom();\n\n const { addPolygon, deletePolygon } = usePolygon();\n const { deletePointCloudBox } = useSingleBox();\n const [zAxisLimit, setZAxisLimit] = useState<number>(10);\n const { t } = useTranslation();\n const pointCloudViews = usePointCloudViews();\n\n useLayoutEffect(() => {\n if (ref.current && currentData?.url && currentData?.result) {\n const size = {\n width: ref.current.clientWidth,\n height: ref.current.clientHeight,\n };\n\n const pointCloudAnnotation = new PointCloudAnnotation({\n container: ref.current,\n size,\n pcdPath: currentData.url,\n });\n ptCtx.setTopViewInstance(pointCloudAnnotation);\n }\n }, []);\n\n useEffect(() => {\n if (!size || !ptCtx.topViewInstance || !ptCtx.sideViewInstance) {\n return;\n }\n\n const { pointCloud2dOperation: TopView2dOperation } = ptCtx.topViewInstance;\n\n TopView2dOperation.singleOn('polygonCreated', (polygon: IPolygonData) => {\n if (TopView2dOperation.pattern === EPolygonPattern.Normal || !currentData?.url) {\n addPolygon(polygon);\n return;\n }\n\n pointCloudViews.topViewAddBox(polygon, size);\n });\n\n TopView2dOperation.singleOn('deletedObject', ({ id }) => {\n deletePointCloudBox(id);\n deletePolygon(id);\n });\n\n TopView2dOperation.singleOn('deleteSelectedIDs', () => {\n ptCtx.setSelectedIDs([]);\n });\n\n TopView2dOperation.singleOn('addSelectedIDs', (selectedID: string) => {\n ptCtx.addSelectedID(selectedID);\n });\n\n TopView2dOperation.singleOn('setSelectedIDs', (selectedIDs: string[]) => {\n ptCtx.setSelectedIDs(selectedIDs);\n });\n\n TopView2dOperation.singleOn('updatePolygonByDrag', ({ newPolygon }: any) => {\n pointCloudViews.topViewUpdateBox?.(newPolygon, size);\n });\n }, [ptCtx, size, currentData, pointCloudViews]);\n\n useEffect(() => {\n if (!size?.width || !ptCtx.topViewInstance) {\n return;\n }\n\n // 1. Update Size\n ptCtx.topViewInstance.initSize(size);\n ptCtx.topViewInstance.updatePolygonList(ptCtx.pointCloudBoxList);\n\n const {\n topViewInstance: { pointCloudInstance: pointCloud, pointCloud2dOperation: polygonOperation },\n } = ptCtx;\n\n /**\n * Synchronized 3d point cloud view displacement operations\n *\n * Change Orthographic Camera size\n */\n polygonOperation.singleOn('renderZoom', (zoom: number, currentPos: any) => {\n const { offsetX, offsetY } = TransferCanvas2WorldOffset(currentPos, size, zoom);\n pointCloud.camera.zoom = zoom;\n if (currentPos) {\n const { x, y, z } = pointCloud.initCameraPosition;\n pointCloud.camera.position.set(x + offsetY, y - offsetX, z);\n }\n\n pointCloud.camera.updateProjectionMatrix();\n pointCloud.render();\n\n setZoom(zoom);\n });\n\n // Synchronized 3d point cloud view displacement operations\n polygonOperation.singleOn('dragMove', ({ currentPos, zoom }) => {\n const { offsetX, offsetY } = TransferCanvas2WorldOffset(currentPos, size, zoom);\n pointCloud.camera.zoom = zoom;\n const { x, y, z } = pointCloud.initCameraPosition;\n pointCloud.camera.position.set(x + offsetY, y - offsetX, z);\n pointCloud.render();\n });\n }, [size]);\n\n useEffect(() => {\n ptCtx.topViewInstance?.pointCloudInstance?.applyZAxisPoints(zAxisLimit);\n }, [zAxisLimit]);\n\n useEffect(() => {\n pointCloudViews.topViewSelectedChanged();\n }, [ptCtx.selectedIDs]);\n\n return (\n <PointCloudContainer\n className={getClassName('point-cloud-container', 'top-view')}\n title={t('TopView')}\n toolbar={<TopViewToolbar currentData={currentData} />}\n >\n <div style={{ position: 'relative', flex: 1 }}>\n <div style={{ width: '100%', height: '100%' }} ref={ref} />\n\n <BoxInfos />\n <ZAxisSlider zAxisLimit={zAxisLimit} setZAxisLimit={setZAxisLimit} />\n <PointCloudValidity />\n </div>\n </PointCloudContainer>\n );\n};\n\nexport default connect(aMapStateToProps, null, null, { context: LabelBeeContext })(\n PointCloudTopView,\n);\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- import{MathUtils as P}from"@labelbee/lb-annotation";import{EPerspectiveView as j,PointCloudUtils as z}from"@labelbee/lb-utils";import{useContext as J}from"react";import{PointCloudContext as K}from"../PointCloudContext.js";import{useSingleBox as T}from"./useSingleBox.js";import X from"lodash";import{useSelector as Y,useDispatch as $}from"react-redux";import tt from"../../../utils/StepUtils.js";import{jsonParser as E}from"../../../utils/index.js";import{SetPointCloudLoading as F}from"../../../store/annotation/actionCreators.js";var ot=(o,e,s)=>new Promise((r,t)=>{var n=d=>{try{a(s.next(d))}catch(g){t(g)}},u=d=>{try{a(s.throw(d))}catch(g){t(g)}},a=d=>d.done?r(d.value):Promise.resolve(d.value).then(n,u);a((s=s.apply(o,e)).next())});const V=5,M=90,S={"3D":"3D",Top:"Top",Side:"Side",Back:"Back"},Z=(o,e)=>{const{width:s,height:r}=e,{x:t,y:n}=o;return{x:-n+r/2,y:-(t-s/2)}},k=(o,e,s,r,t)=>{const[n,u,a,d]=o.pointList.map(v=>Z(v,e)),g=P.getLineCenterPoint([n,a]),L=P.getLineLength(n,u),p=P.getLineLength(u,a),h=P.getRadiusFromQuadrangle(o.pointList);let B=0,x=1;if(s){const v=s.getSensesPointZAxisInPolygon([n,u,a,d]);B=(v.maxZ+v.minZ)/2,x=v.maxZ-v.minZ}r&&(B=r.center.z,x=r.depth);const f={center:{x:g.x,y:g.y,z:B},width:p,height:L,depth:x,rotation:h,id:o.id,attribute:"",valid:!0};return t&&Object.assign(f,t),f},et=(o,e,s,r)=>{const[t,n,u]=o.pointList,[a,d,g]=e.pointList,L=P.getLineCenterPoint([t,u]),p=P.getLineCenterPoint([a,g]),h={x:L.x-p.x,y:L.y-p.y},B=Math.cos(s.rotation),x=Math.sin(s.rotation),f={x:h.x,y:h.x*x+h.y*B,z:L.y-p.y},v=P.getLineLength(t,n),b=P.getLineLength(a,d),I=v-b,A=P.getLineLength(n,u),w=P.getLineLength(d,g),R=A-w,{newBoxParams:U}=r.getNewBoxBySideUpdate(f,R,I,s);return U},N=(o,e,s,r)=>{if(!s)return;const{pointCloud2dOperation:t,pointCloudInstance:n}=s;n.loadPCDFileByBox(r,o,{width:V,depth:V});const{cameraPositionVector:u}=n.updateOrthoCamera(o,j.Left);n.setInitCameraPosition(u);const{polygon2d:a,zoom:d}=n.getBoxSidePolygon2DCoordinate(o);n.camera.zoom=d,n.camera.updateProjectionMatrix(),n.render(),t.initPosition(),t.zoomChangeOnCenter(d),t.setResultAndSelectedID([{id:e.id,pointList:a,textAttribute:"",isRect:!0}],e.id)},W=(o,e,s,r)=>{if(!s)return;const{pointCloud2dOperation:t,pointCloudInstance:n}=s;n.loadPCDFileByBox(r,o,{height:V,depth:V});const{cameraPositionVector:u}=n.updateOrthoCamera(o,j.Back);n.setInitCameraPosition(u);const{polygon2d:a,zoom:d}=n.getBoxBackPolygon2DCoordinate(o);n.camera.zoom=d,n.camera.updateProjectionMatrix(),n.render(),t.initPosition(),t.zoomChangeOnCenter(d),t.setResultAndSelectedID([{id:e.id,pointList:a,textAttribute:"",isRect:!0}],e.id)},H=(o,e,s,r)=>{if(!s||!r)return;r.generateBox(o,e.id),r.updateCameraByBox(o,j.Top),r.render();const{pointCloud2dOperation:t,pointCloudInstance:n}=s,{polygon2d:u}=n.getBoxTopPolygon2DCoordinate(o),a=[...t.polygonList],d=a.find(g=>g.id===e.id);d?d.pointList=u:a.push({id:e.id,pointList:u,textAttribute:"",isRect:!0}),t.setResultAndSelectedID(a,e.id)},nt=()=>{const o=J(K),{topViewInstance:e,sideViewInstance:s,backViewInstance:r,mainViewInstance:t,addPointCloudBox:n,setSelectedIDs:u,selectedIDs:a,pointCloudBoxList:d,setPointCloudResult:g}=o,{updateSelectedBox:L}=T(),{currentData:p,config:h}=Y(i=>{const{stepList:l,step:c,imgList:C,imgIndex:m}=i.annotation;return{currentData:C[m],config:E(tt.getCurrentStepInfo(c,l).config)}}),B=$(),{selectedBox:x}=T(),f=x==null?void 0:x.info;if(!e||!s)return{topViewAddBox:()=>{},topViewSelectedChanged:()=>{},sideViewUpdateBox:()=>{}};const{pointCloudInstance:v}=e,b=i=>{t==null||t.generateBox(i),t==null||t.controls.update(),t==null||t.render()},I=(i,l)=>{var c,C,m;const D=k(i,l,v,void 0,{attribute:(m=(C=(c=h==null?void 0:h.attributeList)==null?void 0:c[0])==null?void 0:C.value)!=null?m:""}),_=e==null?void 0:e.pointCloud2dOperation,y=D;_.setSelectedIDs([i.id]),u(y.id),O(S.Top,i,y),n(y)},A=()=>{const i=x==null?void 0:x.info,l=e==null?void 0:e.pointCloud2dOperation;if(l.setSelectedIDs(a),!i||!l)return;const c=l.selectedPolygon;O(S.Top,c,i)},w=(i,l,c)=>{if(f){const C=et(i,l,f,s.pointCloudInstance);L(C),O(c,i,C)}},R=(i,l)=>{w(i,l,S.Side)},U=(i,l)=>{w(i,l,S.Back)},G=(i,l)=>{if(f){const c=k(i,l,void 0,f);Object.assign(f,X.pickBy(c,(C,m)=>["width","height","x","y"])),L(c),O(S.Top,i,f)}},O=(i,l,c)=>{const C=p==null?void 0:p.url,m={[S.Side]:()=>{N(c,l,s,C)},[S.Back]:()=>{r&&W(c,l,r,C)},[S.Top]:()=>{H(c,l,e,t)}};Object.keys(m).forEach(D=>{D!==i&&m[D]()}),b(c),t==null||t.highlightOriginPointCloud(c)};return{topViewAddBox:I,topViewSelectedChanged:A,topViewUpdateBox:G,sideViewUpdateBox:R,backViewUpdateBox:U,pointCloudBoxListUpdated:i=>{e.updatePolygonList(i),t==null||t.generateBoxes(i)},clearAllResult:()=>{d.forEach(i=>{t==null||t.removeObjectByName(i.id)}),t==null||t.render(),g([]),e.pointCloud2dOperation.clearActiveStatus(),e.pointCloud2dOperation.clearResult()},initPointCloud3d:()=>{!t||(t.initPerspectiveCamera(),t.initRenderer(),t.render())},updatePointCloudData:()=>ot(void 0,null,function*(){var i,l,c,C,m,D;if(!(p==null?void 0:p.url)||!t)return;if(F(B,!0),yield t.loadPCDFile(p.url,(i=h==null?void 0:h.radius)!=null?i:M),d.forEach(y=>{t==null||t.removeObjectByName(y.id)}),p.result){const y=z.getBoxParamsFromResultList(p.result),Q=z.getPolygonListFromResultList(p.result);y.forEach(q=>{t==null||t.generateBox(q)}),o.setPointCloudResult(y),o.setPolygonList(Q)}else o.setPointCloudResult([]),o.setPolygonList([]);t.updateTopCamera();const _=(c=(l=E(p.result))==null?void 0:l.valid)!=null?c:!0;o.setPointCloudValid(_),(C=o.sideViewInstance)==null||C.clearAllData(),(m=o.backViewInstance)==null||m.clearAllData(),e.updateData(p.url,p.result,{radius:(D=h==null?void 0:h.radius)!=null?D:M}),F(B,!1)})}};export{W as synchronizeBackView,N as synchronizeSideView,H as synchronizeTopView,k as topViewPolygon2PointCloud,Z as transferCanvas2World,nt as usePointCloudViews};
1
+ import{MathUtils as P}from"@labelbee/lb-annotation";import{EPerspectiveView as _,PointCloudUtils as z}from"@labelbee/lb-utils";import{useContext as J}from"react";import{PointCloudContext as K}from"../PointCloudContext.js";import{useSingleBox as T}from"./useSingleBox.js";import X from"lodash";import{useSelector as Y,useDispatch as $}from"../../../store/ctx.js";import tt from"../../../utils/StepUtils.js";import{jsonParser as E}from"../../../utils/index.js";import{SetPointCloudLoading as F}from"../../../store/annotation/actionCreators.js";var ot=(o,e,s)=>new Promise((r,t)=>{var n=d=>{try{a(s.next(d))}catch(g){t(g)}},u=d=>{try{a(s.throw(d))}catch(g){t(g)}},a=d=>d.done?r(d.value):Promise.resolve(d.value).then(n,u);a((s=s.apply(o,e)).next())});const V=5,M=90,S={"3D":"3D",Top:"Top",Side:"Side",Back:"Back"},Z=(o,e)=>{const{width:s,height:r}=e,{x:t,y:n}=o;return{x:-n+r/2,y:-(t-s/2)}},k=(o,e,s,r,t)=>{const[n,u,a,d]=o.pointList.map(v=>Z(v,e)),g=P.getLineCenterPoint([n,a]),L=P.getLineLength(n,u),p=P.getLineLength(u,a),h=P.getRadiusFromQuadrangle(o.pointList);let B=0,x=1;if(s){const v=s.getSensesPointZAxisInPolygon([n,u,a,d]);B=(v.maxZ+v.minZ)/2,x=v.maxZ-v.minZ}r&&(B=r.center.z,x=r.depth);const f={center:{x:g.x,y:g.y,z:B},width:p,height:L,depth:x,rotation:h,id:o.id,attribute:"",valid:!0};return t&&Object.assign(f,t),f},et=(o,e,s,r)=>{const[t,n,u]=o.pointList,[a,d,g]=e.pointList,L=P.getLineCenterPoint([t,u]),p=P.getLineCenterPoint([a,g]),h={x:L.x-p.x,y:L.y-p.y},B=Math.cos(s.rotation),x=Math.sin(s.rotation),f={x:h.x,y:h.x*x+h.y*B,z:L.y-p.y},v=P.getLineLength(t,n),b=P.getLineLength(a,d),I=v-b,A=P.getLineLength(n,u),w=P.getLineLength(d,g),R=A-w,{newBoxParams:U}=r.getNewBoxBySideUpdate(f,R,I,s);return U},N=(o,e,s,r)=>{if(!s)return;const{pointCloud2dOperation:t,pointCloudInstance:n}=s;n.loadPCDFileByBox(r,o,{width:V,depth:V});const{cameraPositionVector:u}=n.updateOrthoCamera(o,_.Left);n.setInitCameraPosition(u);const{polygon2d:a,zoom:d}=n.getBoxSidePolygon2DCoordinate(o);n.camera.zoom=d,n.camera.updateProjectionMatrix(),n.render(),t.initPosition(),t.zoomChangeOnCenter(d),t.setResultAndSelectedID([{id:e.id,pointList:a,textAttribute:"",isRect:!0}],e.id)},W=(o,e,s,r)=>{if(!s)return;const{pointCloud2dOperation:t,pointCloudInstance:n}=s;n.loadPCDFileByBox(r,o,{height:V,depth:V});const{cameraPositionVector:u}=n.updateOrthoCamera(o,_.Back);n.setInitCameraPosition(u);const{polygon2d:a,zoom:d}=n.getBoxBackPolygon2DCoordinate(o);n.camera.zoom=d,n.camera.updateProjectionMatrix(),n.render(),t.initPosition(),t.zoomChangeOnCenter(d),t.setResultAndSelectedID([{id:e.id,pointList:a,textAttribute:"",isRect:!0}],e.id)},H=(o,e,s,r)=>{if(!s||!r)return;r.generateBox(o,e.id),r.updateCameraByBox(o,_.Top),r.render();const{pointCloud2dOperation:t,pointCloudInstance:n}=s,{polygon2d:u}=n.getBoxTopPolygon2DCoordinate(o),a=[...t.polygonList],d=a.find(g=>g.id===e.id);d?d.pointList=u:a.push({id:e.id,pointList:u,textAttribute:"",isRect:!0}),t.setResultAndSelectedID(a,e.id)},nt=()=>{const o=J(K),{topViewInstance:e,sideViewInstance:s,backViewInstance:r,mainViewInstance:t,addPointCloudBox:n,setSelectedIDs:u,selectedIDs:a,pointCloudBoxList:d,setPointCloudResult:g}=o,{updateSelectedBox:L}=T(),{currentData:p,config:h}=Y(i=>{const{stepList:l,step:c,imgList:C,imgIndex:m}=i.annotation;return{currentData:C[m],config:E(tt.getCurrentStepInfo(c,l).config)}}),B=$(),{selectedBox:x}=T(),f=x==null?void 0:x.info;if(!e||!s)return{topViewAddBox:()=>{},topViewSelectedChanged:()=>{},sideViewUpdateBox:()=>{}};const{pointCloudInstance:v}=e,b=i=>{t==null||t.generateBox(i),t==null||t.controls.update(),t==null||t.render()},I=(i,l)=>{var c,C,m;const D=k(i,l,v,void 0,{attribute:(m=(C=(c=h==null?void 0:h.attributeList)==null?void 0:c[0])==null?void 0:C.value)!=null?m:""}),j=e==null?void 0:e.pointCloud2dOperation,y=D;j.setSelectedIDs([i.id]),u(y.id),O(S.Top,i,y),n(y)},A=()=>{const i=x==null?void 0:x.info,l=e==null?void 0:e.pointCloud2dOperation;if(l.setSelectedIDs(a),!i||!l)return;const c=l.selectedPolygon;O(S.Top,c,i)},w=(i,l,c)=>{if(f){const C=et(i,l,f,s.pointCloudInstance);L(C),O(c,i,C)}},R=(i,l)=>{w(i,l,S.Side)},U=(i,l)=>{w(i,l,S.Back)},G=(i,l)=>{if(f){const c=k(i,l,void 0,f);Object.assign(f,X.pickBy(c,(C,m)=>["width","height","x","y"])),L(c),O(S.Top,i,f)}},O=(i,l,c)=>{const C=p==null?void 0:p.url,m={[S.Side]:()=>{N(c,l,s,C)},[S.Back]:()=>{r&&W(c,l,r,C)},[S.Top]:()=>{H(c,l,e,t)}};Object.keys(m).forEach(D=>{D!==i&&m[D]()}),b(c),t==null||t.highlightOriginPointCloud(c)};return{topViewAddBox:I,topViewSelectedChanged:A,topViewUpdateBox:G,sideViewUpdateBox:R,backViewUpdateBox:U,pointCloudBoxListUpdated:i=>{e.updatePolygonList(i),t==null||t.generateBoxes(i)},clearAllResult:()=>{d.forEach(i=>{t==null||t.removeObjectByName(i.id)}),t==null||t.render(),g([]),e.pointCloud2dOperation.clearActiveStatus(),e.pointCloud2dOperation.clearResult()},initPointCloud3d:()=>{!t||(t.initPerspectiveCamera(),t.initRenderer(),t.render())},updatePointCloudData:()=>ot(void 0,null,function*(){var i,l,c,C,m,D;if(!(p==null?void 0:p.url)||!t)return;if(F(B,!0),yield t.loadPCDFile(p.url,(i=h==null?void 0:h.radius)!=null?i:M),d.forEach(y=>{t==null||t.removeObjectByName(y.id)}),p.result){const y=z.getBoxParamsFromResultList(p.result),Q=z.getPolygonListFromResultList(p.result);y.forEach(q=>{t==null||t.generateBox(q)}),o.setPointCloudResult(y),o.setPolygonList(Q)}else o.setPointCloudResult([]),o.setPolygonList([]);t.updateTopCamera();const j=(c=(l=E(p.result))==null?void 0:l.valid)!=null?c:!0;o.setPointCloudValid(j),(C=o.sideViewInstance)==null||C.clearAllData(),(m=o.backViewInstance)==null||m.clearAllData(),e.updateData(p.url,p.result,{radius:(D=h==null?void 0:h.radius)!=null?D:M}),F(B,!1)})}};export{W as synchronizeBackView,N as synchronizeSideView,H as synchronizeTopView,k as topViewPolygon2PointCloud,Z as transferCanvas2World,nt as usePointCloudViews};
@@ -1 +1 @@
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 { PointCloudAnnotation, PointCloud, MathUtils } from '@labelbee/lb-annotation';\nimport { IPointCloudBox, EPerspectiveView, PointCloudUtils } 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 'react-redux';\nimport { AppState } from '@/store';\nimport StepUtils from '@/utils/StepUtils';\nimport { jsonParser } from '@/utils';\nimport { SetPointCloudLoading } from '@/store/annotation/actionCreators';\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\n/**\n * Get the coordinate from canvas2d-coordinate to world coordinate\n */\nexport const transferCanvas2World = (\n currentPos: { x: number; y: number },\n size: { width: number; height: number },\n) => {\n const { width: w, height: h } = size;\n const { x, y } = currentPos;\n\n // x-Axis is the Positive Direction, so the x-coordinates need to be swapped with the y-coordinates\n return {\n x: -y + h / 2,\n y: -(x - w / 2),\n };\n};\n\nexport const topViewPolygon2PointCloud = (\n newPolygon: any,\n size: ISize,\n pointCloud?: PointCloud,\n selectedPointCloud?: IPointCloudBox,\n defaultValue?: { [v: string]: any },\n) => {\n const [point1, point2, point3, point4] = newPolygon.pointList.map((v: any) =>\n transferCanvas2World(v, size),\n );\n\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 let z = 0;\n let depth = 1;\n if (pointCloud) {\n const zInfo = pointCloud.getSensesPointZAxisInPolygon([point1, point2, point3, point4]);\n z = (zInfo.maxZ + zInfo.minZ) / 2;\n depth = zInfo.maxZ - zInfo.minZ;\n }\n\n if (selectedPointCloud) {\n z = selectedPointCloud.center.z;\n depth = selectedPointCloud.depth;\n }\n\n /** TrackID will append before it pushed */\n const boxParams: Omit<IPointCloudBox, 'trackID'> = {\n center: {\n x: centerPoint.x,\n y: centerPoint.y,\n z,\n },\n width,\n height,\n depth,\n rotation: rotation,\n id: newPolygon.id,\n attribute: '',\n valid: true,\n };\n\n if (defaultValue) {\n Object.assign(boxParams, defaultValue);\n }\n\n return boxParams;\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 const cos = Math.cos(selectedPointCloudBox.rotation);\n const sin = Math.sin(selectedPointCloudBox.rotation);\n\n const offsetCenterPoint = {\n x: offset.x,\n y: offset.x * sin + offset.y * cos,\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\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 pointList: polygon2d,\n textAttribute: '',\n isRect: true,\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 pointList: polygon2d,\n textAttribute: '',\n isRect: true,\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.updateCameraByBox(newBoxParams, EPerspectiveView.Top);\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 });\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 setPointCloudResult,\n } = ptCtx;\n const { updateSelectedBox } = 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\n const selectedPointCloudBox = selectedBox?.info;\n\n if (!topViewInstance || !sideViewInstance) {\n return {\n topViewAddBox: () => {},\n topViewSelectedChanged: () => {},\n sideViewUpdateBox: () => {},\n };\n }\n\n const { pointCloudInstance: topViewPointCloud } = topViewInstance;\n\n // Temporarily hide\n // const getNextTrackID = () => {\n // if (pointCloudBoxList.length > 0) {\n // const sortedPcList = pointCloudBoxList.sort((a, b) => a.trackID - b.trackID);\n // return sortedPcList.slice(-1)[0]?.trackID + 1;\n // }\n\n // return 1;\n // };\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 = (newPolygon: any, size: ISize) => {\n const newParams = topViewPolygon2PointCloud(newPolygon, size, topViewPointCloud, undefined, {\n attribute: config?.attributeList?.[0]?.value ?? '',\n });\n const polygonOperation = topViewInstance?.pointCloud2dOperation;\n\n // Temporarily hide\n // const boxParams: IPointCloudBox = Object.assign(newParams, {\n // trackID: getNextTrackID(),\n // });\n const boxParams: IPointCloudBox = newParams;\n\n polygonOperation.setSelectedIDs([newPolygon.id]);\n setSelectedIDs(boxParams.id);\n syncPointCloudViews(PointCloudView.Top, newPolygon, boxParams);\n addPointCloudBox(boxParams);\n };\n\n /** Top-view selected changed and render to other view */\n const topViewSelectedChanged = () => {\n const boxParams = selectedBox?.info;\n const polygonOperation = topViewInstance?.pointCloud2dOperation;\n\n polygonOperation.setSelectedIDs(selectedIDs);\n if (!boxParams || !polygonOperation) {\n return;\n }\n\n const polygon = polygonOperation.selectedPolygon;\n syncPointCloudViews(PointCloudView.Top, polygon, boxParams);\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 const newBoxParams = sideViewPolygon2PointCloud(\n newPolygon,\n originPolygon,\n selectedPointCloudBox,\n sideViewInstance.pointCloudInstance,\n );\n\n updateSelectedBox(newBoxParams);\n syncPointCloudViews(fromView, newPolygon, newBoxParams);\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 = (polygon: any, size: ISize) => {\n if (selectedPointCloudBox) {\n const newBoxParams = topViewPolygon2PointCloud(\n polygon,\n size,\n undefined,\n selectedPointCloudBox,\n );\n\n Object.assign(\n selectedPointCloudBox,\n _.pickBy(newBoxParams, (v, k) => ['width', 'height', 'x', 'y']),\n );\n\n updateSelectedBox(newBoxParams);\n syncPointCloudViews(PointCloudView.Top, polygon, selectedPointCloudBox);\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 = (omitView: string, polygon: any, boxParams: IPointCloudBox) => {\n const dataUrl = currentData?.url;\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 mainViewGenBox(boxParams);\n mainViewInstance?.highlightOriginPointCloud(boxParams);\n };\n\n const pointCloudBoxListUpdated = (newBoxes: IPointCloudBox[]) => {\n topViewInstance.updatePolygonList(newBoxes);\n mainViewInstance?.generateBoxes(newBoxes);\n };\n\n const clearAllResult = () => {\n // Clear All PointView Data\n pointCloudBoxList.forEach((v) => {\n mainViewInstance?.removeObjectByName(v.id);\n });\n mainViewInstance?.render();\n\n setPointCloudResult([]);\n topViewInstance.pointCloud2dOperation.clearActiveStatus();\n topViewInstance.pointCloud2dOperation.clearResult();\n };\n\n const initPointCloud3d = () => {\n if (!mainViewInstance) {\n return;\n }\n\n mainViewInstance.initPerspectiveCamera();\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 () => {\n if (!currentData?.url || !mainViewInstance) {\n return;\n }\n\n SetPointCloudLoading(dispatch, true);\n await mainViewInstance.loadPCDFile(currentData.url, config?.radius ?? DEFAULT_RADIUS);\n\n // Clear All Data\n pointCloudBoxList.forEach((v) => {\n mainViewInstance?.removeObjectByName(v.id);\n });\n\n if (currentData.result) {\n const boxParamsList = PointCloudUtils.getBoxParamsFromResultList(currentData.result);\n const polygonList = PointCloudUtils.getPolygonListFromResultList(currentData.result);\n\n // Add Init Box\n boxParamsList.forEach((v: IPointCloudBox) => {\n mainViewInstance?.generateBox(v);\n });\n\n ptCtx.setPointCloudResult(boxParamsList);\n ptCtx.setPolygonList(polygonList);\n } else {\n ptCtx.setPointCloudResult([]);\n ptCtx.setPolygonList([]);\n }\n\n mainViewInstance.updateTopCamera();\n\n const valid = jsonParser(currentData.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(currentData.url, currentData.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 clearAllResult,\n initPointCloud3d,\n updatePointCloudData,\n };\n};\n"],"names":["this"],"mappings":"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"}
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 { PointCloudAnnotation, PointCloud, MathUtils } from '@labelbee/lb-annotation';\nimport { IPointCloudBox, EPerspectiveView, PointCloudUtils } 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';\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\n/**\n * Get the coordinate from canvas2d-coordinate to world coordinate\n */\nexport const transferCanvas2World = (\n currentPos: { x: number; y: number },\n size: { width: number; height: number },\n) => {\n const { width: w, height: h } = size;\n const { x, y } = currentPos;\n\n // x-Axis is the Positive Direction, so the x-coordinates need to be swapped with the y-coordinates\n return {\n x: -y + h / 2,\n y: -(x - w / 2),\n };\n};\n\nexport const topViewPolygon2PointCloud = (\n newPolygon: any,\n size: ISize,\n pointCloud?: PointCloud,\n selectedPointCloud?: IPointCloudBox,\n defaultValue?: { [v: string]: any },\n) => {\n const [point1, point2, point3, point4] = newPolygon.pointList.map((v: any) =>\n transferCanvas2World(v, size),\n );\n\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 let z = 0;\n let depth = 1;\n if (pointCloud) {\n const zInfo = pointCloud.getSensesPointZAxisInPolygon([point1, point2, point3, point4]);\n z = (zInfo.maxZ + zInfo.minZ) / 2;\n depth = zInfo.maxZ - zInfo.minZ;\n }\n\n if (selectedPointCloud) {\n z = selectedPointCloud.center.z;\n depth = selectedPointCloud.depth;\n }\n\n /** TrackID will append before it pushed */\n const boxParams: Omit<IPointCloudBox, 'trackID'> = {\n center: {\n x: centerPoint.x,\n y: centerPoint.y,\n z,\n },\n width,\n height,\n depth,\n rotation: rotation,\n id: newPolygon.id,\n attribute: '',\n valid: true,\n };\n\n if (defaultValue) {\n Object.assign(boxParams, defaultValue);\n }\n\n return boxParams;\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 const cos = Math.cos(selectedPointCloudBox.rotation);\n const sin = Math.sin(selectedPointCloudBox.rotation);\n\n const offsetCenterPoint = {\n x: offset.x,\n y: offset.x * sin + offset.y * cos,\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\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 pointList: polygon2d,\n textAttribute: '',\n isRect: true,\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 pointList: polygon2d,\n textAttribute: '',\n isRect: true,\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.updateCameraByBox(newBoxParams, EPerspectiveView.Top);\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 });\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 setPointCloudResult,\n } = ptCtx;\n const { updateSelectedBox } = 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\n const selectedPointCloudBox = selectedBox?.info;\n\n if (!topViewInstance || !sideViewInstance) {\n return {\n topViewAddBox: () => {},\n topViewSelectedChanged: () => {},\n sideViewUpdateBox: () => {},\n };\n }\n\n const { pointCloudInstance: topViewPointCloud } = topViewInstance;\n\n // Temporarily hide\n // const getNextTrackID = () => {\n // if (pointCloudBoxList.length > 0) {\n // const sortedPcList = pointCloudBoxList.sort((a, b) => a.trackID - b.trackID);\n // return sortedPcList.slice(-1)[0]?.trackID + 1;\n // }\n\n // return 1;\n // };\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 = (newPolygon: any, size: ISize) => {\n const newParams = topViewPolygon2PointCloud(newPolygon, size, topViewPointCloud, undefined, {\n attribute: config?.attributeList?.[0]?.value ?? '',\n });\n const polygonOperation = topViewInstance?.pointCloud2dOperation;\n\n // Temporarily hide\n // const boxParams: IPointCloudBox = Object.assign(newParams, {\n // trackID: getNextTrackID(),\n // });\n const boxParams: IPointCloudBox = newParams;\n\n polygonOperation.setSelectedIDs([newPolygon.id]);\n setSelectedIDs(boxParams.id);\n syncPointCloudViews(PointCloudView.Top, newPolygon, boxParams);\n addPointCloudBox(boxParams);\n };\n\n /** Top-view selected changed and render to other view */\n const topViewSelectedChanged = () => {\n const boxParams = selectedBox?.info;\n const polygonOperation = topViewInstance?.pointCloud2dOperation;\n\n polygonOperation.setSelectedIDs(selectedIDs);\n if (!boxParams || !polygonOperation) {\n return;\n }\n\n const polygon = polygonOperation.selectedPolygon;\n syncPointCloudViews(PointCloudView.Top, polygon, boxParams);\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 const newBoxParams = sideViewPolygon2PointCloud(\n newPolygon,\n originPolygon,\n selectedPointCloudBox,\n sideViewInstance.pointCloudInstance,\n );\n\n updateSelectedBox(newBoxParams);\n syncPointCloudViews(fromView, newPolygon, newBoxParams);\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 = (polygon: any, size: ISize) => {\n if (selectedPointCloudBox) {\n const newBoxParams = topViewPolygon2PointCloud(\n polygon,\n size,\n undefined,\n selectedPointCloudBox,\n );\n\n Object.assign(\n selectedPointCloudBox,\n _.pickBy(newBoxParams, (v, k) => ['width', 'height', 'x', 'y']),\n );\n\n updateSelectedBox(newBoxParams);\n syncPointCloudViews(PointCloudView.Top, polygon, selectedPointCloudBox);\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 = (omitView: string, polygon: any, boxParams: IPointCloudBox) => {\n const dataUrl = currentData?.url;\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 mainViewGenBox(boxParams);\n mainViewInstance?.highlightOriginPointCloud(boxParams);\n };\n\n const pointCloudBoxListUpdated = (newBoxes: IPointCloudBox[]) => {\n topViewInstance.updatePolygonList(newBoxes);\n mainViewInstance?.generateBoxes(newBoxes);\n };\n\n const clearAllResult = () => {\n // Clear All PointView Data\n pointCloudBoxList.forEach((v) => {\n mainViewInstance?.removeObjectByName(v.id);\n });\n mainViewInstance?.render();\n\n setPointCloudResult([]);\n topViewInstance.pointCloud2dOperation.clearActiveStatus();\n topViewInstance.pointCloud2dOperation.clearResult();\n };\n\n const initPointCloud3d = () => {\n if (!mainViewInstance) {\n return;\n }\n\n mainViewInstance.initPerspectiveCamera();\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 () => {\n if (!currentData?.url || !mainViewInstance) {\n return;\n }\n\n SetPointCloudLoading(dispatch, true);\n await mainViewInstance.loadPCDFile(currentData.url, config?.radius ?? DEFAULT_RADIUS);\n\n // Clear All Data\n pointCloudBoxList.forEach((v) => {\n mainViewInstance?.removeObjectByName(v.id);\n });\n\n if (currentData.result) {\n const boxParamsList = PointCloudUtils.getBoxParamsFromResultList(currentData.result);\n const polygonList = PointCloudUtils.getPolygonListFromResultList(currentData.result);\n\n // Add Init Box\n boxParamsList.forEach((v: IPointCloudBox) => {\n mainViewInstance?.generateBox(v);\n });\n\n ptCtx.setPointCloudResult(boxParamsList);\n ptCtx.setPolygonList(polygonList);\n } else {\n ptCtx.setPointCloudResult([]);\n ptCtx.setPolygonList([]);\n }\n\n mainViewInstance.updateTopCamera();\n\n const valid = jsonParser(currentData.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(currentData.url, currentData.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 clearAllResult,\n initPointCloud3d,\n updatePointCloudData,\n };\n};\n"],"names":["this"],"mappings":"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"}
@@ -1 +1 @@
1
- import{getClassName as t}from"../../utils/dom.js";import e from"react";import i from"./PointCloud3DView.js";import l from"./PointCloudBackView.js";import r from"./PointCloudTopView.js";import a from"./PointCloudSideView.js";import m from"./PointCloud2DView.js";import u from"./PointCloudListener.js";import{connect as c}from"react-redux";const d=({imgList:o})=>o.length===0?null:e.createElement(e.Fragment,null,e.createElement(u,null),e.createElement("div",{className:t("point-cloud-layout"),onContextMenu:n=>n.preventDefault()},e.createElement("div",{className:t("point-cloud-wrapper")},e.createElement("div",{className:t("point-cloud-container","left")},e.createElement(m,null),e.createElement(i,null)),e.createElement("div",{className:t("point-cloud-container","right")},e.createElement(r,null),e.createElement("div",{className:t("point-cloud-container","right-bottom")},e.createElement(a,null),e.createElement(l,null)))))),s=o=>({imgList:o.annotation.imgList});var p=c(s)(d);export{p as default};
1
+ import{getClassName as t}from"../../utils/dom.js";import e from"react";import l from"./PointCloud3DView.js";import i from"./PointCloudBackView.js";import r from"./PointCloudTopView.js";import a from"./PointCloudSideView.js";import m from"./PointCloud2DView.js";import u from"./PointCloudListener.js";import{connect as c}from"react-redux";import{LabelBeeContext as s}from"../../store/ctx.js";const d=({imgList:o})=>o.length===0?null:e.createElement(e.Fragment,null,e.createElement(u,null),e.createElement("div",{className:t("point-cloud-layout"),onContextMenu:n=>n.preventDefault()},e.createElement("div",{className:t("point-cloud-wrapper")},e.createElement("div",{className:t("point-cloud-container","left")},e.createElement(m,null),e.createElement(l,null)),e.createElement("div",{className:t("point-cloud-container","right")},e.createElement(r,null),e.createElement("div",{className:t("point-cloud-container","right-bottom")},e.createElement(a,null),e.createElement(i,null)))))),p=o=>({imgList:o.annotation.imgList});var C=c(p,null,null,{context:s})(d);export{C as default};
@@ -1 +1 @@
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';\n\ninterface IProps {\n imgList: IFileItem[];\n}\n\nconst PointCloudView: React.FC<IProps> = ({ imgList }) => {\n if (imgList.length === 0) {\n return null;\n }\n\n return (\n <>\n <PointCloudListener />\n <div className={getClassName('point-cloud-layout')} onContextMenu={(e) => e.preventDefault()}>\n <div className={getClassName('point-cloud-wrapper')}>\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 <div className={getClassName('point-cloud-container', 'right-bottom')}>\n <PointCloudSideView />\n <PointCloudBackView />\n </div>\n </div>\n </div>\n </div>\n </>\n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n imgList: state.annotation.imgList,\n});\n\nexport default connect(mapStateToProps)(PointCloudView);\n"],"names":[],"mappings":";;;;;;;;;;AA6BA,MAAM,cAAA,GAAmC,CAAC,CAAE,OAAc,CAAA,KAAA;AACxD,EAAI,IAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;AACxB,IAAO,OAAA,IAAA,CAAA;AAAA,GAAA;AAGT,EAAA,uBAEI,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,kBAAD,EAAA,IAAA,CAAA,sCACC,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,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,kBACnD,KAAA,CAAA,aAAA,CAAA,iBAAA,EAAD,IACA,CAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA;AAAA,IAAK,SAAA,EAAW,aAAa,uBAAyB,EAAA,cAAA,CAAA;AAAA,GAAA,kBACnD,KAAA,CAAA,aAAA,CAAA,kBAAA,EAAD,IACA,CAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,kBAAD,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AASd,MAAM,eAAA,GAAkB,CAAC,KAAqB,MAAA;AAAA,EAC5C,OAAA,EAAS,MAAM,UAAW,CAAA,OAAA;AAAA,CAAA,CAAA,CAAA;AAG5B,uBAAe,QAAQ,eAAiB,CAAA,CAAA,cAAA,CAAA;;;;"}
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';\n\ninterface IProps {\n imgList: IFileItem[];\n}\n\nconst PointCloudView: React.FC<IProps> = ({ imgList }) => {\n if (imgList.length === 0) {\n return null;\n }\n\n return (\n <>\n <PointCloudListener />\n <div className={getClassName('point-cloud-layout')} onContextMenu={(e) => e.preventDefault()}>\n <div className={getClassName('point-cloud-wrapper')}>\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 <div className={getClassName('point-cloud-container', 'right-bottom')}>\n <PointCloudSideView />\n <PointCloudBackView />\n </div>\n </div>\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":";;;;;;;;;;;AA8BA,MAAM,cAAA,GAAmC,CAAC,CAAE,OAAc,CAAA,KAAA;AACxD,EAAI,IAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;AACxB,IAAO,OAAA,IAAA,CAAA;AAAA,GAAA;AAGT,EAAA,uBAEI,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,kBAAD,EAAA,IAAA,CAAA,sCACC,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,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,kBACnD,KAAA,CAAA,aAAA,CAAA,iBAAA,EAAD,IACA,CAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA;AAAA,IAAK,SAAA,EAAW,aAAa,uBAAyB,EAAA,cAAA,CAAA;AAAA,GAAA,kBACnD,KAAA,CAAA,aAAA,CAAA,kBAAA,EAAD,IACA,CAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,kBAAD,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AASd,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 +1 @@
1
- import d from"react";import{connect as m,useDispatch as T}from"react-redux";import{ANNOTATION_ACTIONS as e}from"../../store/Actions.js";import{PageBackward as g,PageForward as u,PageJump as A}from"../../store/annotation/actionCreators.js";import{TagToolInstanceAdaptor as l}from"../videoPlayer/TagToolInstanceAdaptor.js";const O=o=>{const{imgList:n,imgIndex:r,stepList:s,step:p}=o.annotation,t=T(),c=a=>{t({type:e.SET_TOOL,payload:{instance:a}})},i=()=>{t({type:e.SET_TOOL,payload:{instance:void 0}})};return d.createElement(l,{imgIndex:r,imgList:n,pageBackward:()=>t(g()),pageForward:()=>t(u()),pageJump:a=>t(A(~~a)),onMounted:c,onUnmounted:i,stepList:s,step:p})};var f=m(({annotation:o})=>({annotation:o}))(O);export{f as default};
1
+ import d from"react";import{connect as m}from"react-redux";import{LabelBeeContext as l,useDispatch as T}from"../../store/ctx.js";import{ANNOTATION_ACTIONS as a}from"../../store/Actions.js";import{PageBackward as g,PageForward as u,PageJump as A}from"../../store/annotation/actionCreators.js";import{TagToolInstanceAdaptor as f}from"../videoPlayer/TagToolInstanceAdaptor.js";const O=o=>{const{imgList:n,imgIndex:r,stepList:s,step:c}=o.annotation,t=T(),p=e=>{t({type:a.SET_TOOL,payload:{instance:e}})},i=()=>{t({type:a.SET_TOOL,payload:{instance:void 0}})};return d.createElement(f,{imgIndex:r,imgList:n,pageBackward:()=>t(g()),pageForward:()=>t(u()),pageJump:e=>t(A(~~e)),onMounted:p,onUnmounted:i,stepList:s,step:c})};var x=m(({annotation:o})=>({annotation:o}),null,null,{context:l})(O);export{x as default};
@@ -1 +1 @@
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, useDispatch } from 'react-redux';\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 }))(VideoAnnotate);\n"],"names":[],"mappings":";;;;;;AAcA,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,OAAQ,CAAA,CAAC,CAAE,UAAA,CAAA,OAA8B,UAAe,CAAA,CAAA,CAAA,CAAA,aAAA,CAAA;;;;"}
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 +1 @@
1
- var n;(function(t){t[t.AnyString=0]="AnyString",t[t.Order=1]="Order",t[t.EnglishOnly=2]="EnglishOnly",t[t.NumberOnly=3]="NumberOnly",t[t.CustomFormat=4]="CustomFormat"})(n||(n={}));const o=1e3;var r;(function(t){t.Rect="rectTool",t.Tag="tagTool",t.Point="pointTool",t.PointMarker="pointMarkerTool",t.Segmentation="segmentationTool",t.Filter="filterTool",t.Text="textTool",t.Polygon="polygonTool",t.Line="lineTool",t.LineMarker="lineMarkerTool",t.Empty="emptyTool",t.FolderTag="folderTagTool",t.RectTrack="rectTrackTool",t.Face="faceTool",t.ClientAttribute="clientAttributeTool",t.OCRRelation="OCRRelationTool",t.SegmentByRect="segmentByRectTool"})(r||(r={}));export{n as ETextType,r as EToolName,o as TEXT_ATTRIBUTE_MAX_LENGTH};
1
+ var r;(function(n){n[n.Scribble=1]="Scribble",n[n.Erase=2]="Erase"})(r||(r={}));var t;(function(n){n.Rect="rectTool",n.Tag="tagTool",n.Point="pointTool",n.PointMarker="pointMarkerTool",n.Segmentation="segmentationTool",n.Filter="filterTool",n.Text="textTool",n.Polygon="polygonTool",n.Line="lineTool",n.LineMarker="lineMarkerTool",n.Empty="emptyTool",n.FolderTag="folderTagTool",n.RectTrack="rectTrackTool",n.ScribbleTool="scribbleTool",n.Face="faceTool",n.ClientAttribute="clientAttributeTool",n.OCRRelation="OCRRelationTool",n.SegmentByRect="segmentByRectTool"})(t||(t={}));var o;(function(n){n[n.AnyString=0]="AnyString",n[n.Order=1]="Order",n[n.EnglishOnly=2]="EnglishOnly",n[n.NumberOnly=3]="NumberOnly",n[n.CustomFormat=4]="CustomFormat"})(o||(o={}));const i=1e3;export{r as EScribblePattern,o as ETextType,t as EToolName,i as TEXT_ATTRIBUTE_MAX_LENGTH};
@@ -1 +1 @@
1
- {"version":3,"file":"ToolType.js","sources":["../../../src/data/enums/ToolType.ts"],"sourcesContent":["export enum ETextType {\n AnyString, // 任意字符\n Order, // 序号\n EnglishOnly, // 仅英文\n NumberOnly, // 仅数字\n CustomFormat, // 自定义文本格式\n}\n\n/** 文本标注字数上限 */\nexport const TEXT_ATTRIBUTE_MAX_LENGTH = 1000;\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 /** 人脸106工具 */\n Face = 'faceTool',\n /** 客户端属性工具 */\n ClientAttribute = 'clientAttributeTool',\n /** OCR关联关系工具 */\n OCRRelation = 'OCRRelationTool',\n /** 算法分割辅助工具 */\n SegmentByRect = 'segmentByRectTool',\n}\n"],"names":[],"mappings":"AAAY,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,IAAA;AAE7B,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,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;AAAA,CAlCN,EAAA,SAAA,KAAA,SAAA,GAAA,EAAA,CAAA,CAAA;;;;"}
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\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;AAAA,CApCN,EAAA,SAAA,KAAA,SAAA,GAAA,EAAA,CAAA,CAAA,CAAA;AAyCA,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;;;;"}
@@ -1 +1 @@
1
- import{useRef as i,useEffect as l}from"react";import{useDispatch as c}from"react-redux";import{ANNOTATION_ACTIONS as n}from"../store/Actions.js";const p=({basicInfo:e}={})=>{var o;const r=c(),s=i({valid:(o=e==null?void 0:e.valid)!=null?o:!0,exportData:()=>[[],{}],exportCustomData:()=>({}),clearResult:()=>{},singleOn:()=>{},on:()=>{},setResult:()=>{},history:{initRecord:()=>{},pushHistory:()=>{}},setDefaultAttribute:t=>{},setSubAttribute:(t,d)=>{},setValid:()=>{},updateRotate:()=>{}}),u=t=>{r({type:n.SET_TOOL,payload:{instance:t}})},a=()=>{r({type:n.SET_TOOL,payload:{instance:void 0}})};return l(()=>(u(s.current),()=>{a()}),[]),{toolInstanceRef:s}};export{p as useCustomToolInstance};
1
+ import{useRef as i,useEffect as l}from"react";import{useDispatch as c}from"../store/ctx.js";import{ANNOTATION_ACTIONS as n}from"../store/Actions.js";const p=({basicInfo:e}={})=>{var o;const r=c(),s=i({valid:(o=e==null?void 0:e.valid)!=null?o:!0,exportData:()=>[[],{}],exportCustomData:()=>({}),clearResult:()=>{},singleOn:()=>{},on:()=>{},setResult:()=>{},history:{initRecord:()=>{},pushHistory:()=>{}},setDefaultAttribute:t=>{},setSubAttribute:(t,d)=>{},setValid:()=>{},updateRotate:()=>{}}),u=t=>{r({type:n.SET_TOOL,payload:{instance:t}})},a=()=>{r({type:n.SET_TOOL,payload:{instance:void 0}})};return l(()=>(u(s.current),()=>{a()}),[]),{toolInstanceRef:s}};export{p as useCustomToolInstance};
@@ -1 +1 @@
1
- {"version":3,"file":"annotation.js","sources":["../../src/hooks/annotation.ts"],"sourcesContent":["/**\n * @file Annotation related hook\n * @createDate 2022-08-04\n * @author Ron <ron.f.luo@gmail.com>\n */\nimport { useEffect, useRef } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { ANNOTATION_ACTIONS } from '@/store/Actions';\n\nexport interface ICustomToolInstance {\n valid: boolean;\n exportData: () => [any[], {}];\n exportCustomData: () => {};\n singleOn: () => void;\n clearResult: () => void;\n on: () => void;\n setResult: () => void;\n setValid: (valid: boolean) => void;\n history: {\n initRecord: () => void;\n pushHistory: () => void;\n };\n setDefaultAttribute: (attribute: string) => void;\n\n // PointCloud Exclusive function\n setSubAttribute: (key: string, value: string) => void;\n\n updateRotate: () => void;\n}\n\nexport interface ICustomToolInstanceProps {\n basicInfo?: { [v: string]: any };\n}\n\n/**\n * @returns\n * Custom an empty toolInstance to adapt old use.\n */\nconst useCustomToolInstance = ({ basicInfo }: ICustomToolInstanceProps = {}) => {\n const dispatch = useDispatch();\n const toolInstanceRef = useRef<ICustomToolInstance>({\n valid: basicInfo?.valid ?? true,\n exportData: () => {\n return [[], {}];\n },\n exportCustomData: () => {\n return {};\n },\n clearResult: () => {},\n singleOn: () => {},\n on: () => {},\n setResult: () => {\n // Rerender Data\n },\n history: {\n initRecord: () => {},\n pushHistory: () => {},\n },\n setDefaultAttribute: (attribute: string) => {},\n\n // PointCloud Exclusive function\n setSubAttribute: (key: string, value: string) => {},\n setValid: () => {},\n updateRotate: () => {},\n });\n\n const onMounted = (instance: any) => {\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 useEffect(() => {\n // Initial toolInstance\n onMounted(toolInstanceRef.current);\n return () => {\n onUnmounted();\n };\n }, []);\n\n return {\n toolInstanceRef,\n };\n};\n\nexport { useCustomToolInstance };\n"],"names":[],"mappings":";;;;AAsCA,MAAM,qBAAwB,GAAA,CAAC,CAAE,SAAA,CAAA,GAAwC,EAAO,KAAA;AAtChF,EAAA,IAAA,EAAA,CAAA;AAuCE,EAAA,MAAM,QAAW,GAAA,WAAA,EAAA,CAAA;AACjB,EAAA,MAAM,kBAAkB,MAA4B,CAAA;AAAA,IAClD,KAAA,EAAO,CAAW,EAAA,GAAA,SAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAA,KAAA,KAAX,IAAoB,GAAA,EAAA,GAAA,IAAA;AAAA,IAC3B,YAAY,MAAM;AAChB,MAAA,OAAO,CAAC,EAAI,EAAA,EAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAEd,kBAAkB,MAAM;AACtB,MAAO,OAAA,EAAA,CAAA;AAAA,KAAA;AAAA,IAET,aAAa,MAAM;AAAA,KAAA;AAAA,IACnB,UAAU,MAAM;AAAA,KAAA;AAAA,IAChB,IAAI,MAAM;AAAA,KAAA;AAAA,IACV,WAAW,MAAM;AAAA,KAAA;AAAA,IAGjB,OAAS,EAAA;AAAA,MACP,YAAY,MAAM;AAAA,OAAA;AAAA,MAClB,aAAa,MAAM;AAAA,OAAA;AAAA,KAAA;AAAA,IAErB,mBAAA,EAAqB,CAAC,SAAsB,KAAA;AAAA,KAAA;AAAA,IAG5C,eAAA,EAAiB,CAAC,GAAA,EAAa,KAAkB,KAAA;AAAA,KAAA;AAAA,IACjD,UAAU,MAAM;AAAA,KAAA;AAAA,IAChB,cAAc,MAAM;AAAA,KAAA;AAAA,GAAA,CAAA,CAAA;AAGtB,EAAM,MAAA,SAAA,GAAY,CAAC,QAAkB,KAAA;AACnC,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,SAAA,CAAU,MAAM;AAEd,IAAA,SAAA,CAAU,eAAgB,CAAA,OAAA,CAAA,CAAA;AAC1B,IAAA,OAAO,MAAM;AACX,MAAA,WAAA,EAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAED,EAAA,EAAA,CAAA,CAAA;AAEH,EAAO,OAAA;AAAA,IACL,eAAA;AAAA,GAAA,CAAA;AAAA;;;;"}
1
+ {"version":3,"file":"annotation.js","sources":["../../src/hooks/annotation.ts"],"sourcesContent":["/**\n * @file Annotation related hook\n * @createDate 2022-08-04\n * @author Ron <ron.f.luo@gmail.com>\n */\nimport { useEffect, useRef } from 'react';\nimport { useDispatch } from '@/store/ctx';\nimport { ANNOTATION_ACTIONS } from '@/store/Actions';\n\nexport interface ICustomToolInstance {\n valid: boolean;\n exportData: () => [any[], {}];\n exportCustomData: () => {};\n singleOn: () => void;\n clearResult: () => void;\n on: () => void;\n setResult: () => void;\n setValid: (valid: boolean) => void;\n history: {\n initRecord: () => void;\n pushHistory: () => void;\n };\n setDefaultAttribute: (attribute: string) => void;\n\n // PointCloud Exclusive function\n setSubAttribute: (key: string, value: string) => void;\n\n updateRotate: () => void;\n}\n\nexport interface ICustomToolInstanceProps {\n basicInfo?: { [v: string]: any };\n}\n\n/**\n * @returns\n * Custom an empty toolInstance to adapt old use.\n */\nconst useCustomToolInstance = ({ basicInfo }: ICustomToolInstanceProps = {}) => {\n const dispatch = useDispatch();\n const toolInstanceRef = useRef<ICustomToolInstance>({\n valid: basicInfo?.valid ?? true,\n exportData: () => {\n return [[], {}];\n },\n exportCustomData: () => {\n return {};\n },\n clearResult: () => {},\n singleOn: () => {},\n on: () => {},\n setResult: () => {\n // Rerender Data\n },\n history: {\n initRecord: () => {},\n pushHistory: () => {},\n },\n setDefaultAttribute: (attribute: string) => {},\n\n // PointCloud Exclusive function\n setSubAttribute: (key: string, value: string) => {},\n setValid: () => {},\n updateRotate: () => {},\n });\n\n const onMounted = (instance: any) => {\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 useEffect(() => {\n // Initial toolInstance\n onMounted(toolInstanceRef.current);\n return () => {\n onUnmounted();\n };\n }, []);\n\n return {\n toolInstanceRef,\n };\n};\n\nexport { useCustomToolInstance };\n"],"names":[],"mappings":";;;;AAsCA,MAAM,qBAAwB,GAAA,CAAC,CAAE,SAAA,CAAA,GAAwC,EAAO,KAAA;AAtChF,EAAA,IAAA,EAAA,CAAA;AAuCE,EAAA,MAAM,QAAW,GAAA,WAAA,EAAA,CAAA;AACjB,EAAA,MAAM,kBAAkB,MAA4B,CAAA;AAAA,IAClD,KAAA,EAAO,CAAW,EAAA,GAAA,SAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAA,KAAA,KAAX,IAAoB,GAAA,EAAA,GAAA,IAAA;AAAA,IAC3B,YAAY,MAAM;AAChB,MAAA,OAAO,CAAC,EAAI,EAAA,EAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAEd,kBAAkB,MAAM;AACtB,MAAO,OAAA,EAAA,CAAA;AAAA,KAAA;AAAA,IAET,aAAa,MAAM;AAAA,KAAA;AAAA,IACnB,UAAU,MAAM;AAAA,KAAA;AAAA,IAChB,IAAI,MAAM;AAAA,KAAA;AAAA,IACV,WAAW,MAAM;AAAA,KAAA;AAAA,IAGjB,OAAS,EAAA;AAAA,MACP,YAAY,MAAM;AAAA,OAAA;AAAA,MAClB,aAAa,MAAM;AAAA,OAAA;AAAA,KAAA;AAAA,IAErB,mBAAA,EAAqB,CAAC,SAAsB,KAAA;AAAA,KAAA;AAAA,IAG5C,eAAA,EAAiB,CAAC,GAAA,EAAa,KAAkB,KAAA;AAAA,KAAA;AAAA,IACjD,UAAU,MAAM;AAAA,KAAA;AAAA,IAChB,cAAc,MAAM;AAAA,KAAA;AAAA,GAAA,CAAA,CAAA;AAGtB,EAAM,MAAA,SAAA,GAAY,CAAC,QAAkB,KAAA;AACnC,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,SAAA,CAAU,MAAM;AAEd,IAAA,SAAA,CAAU,eAAgB,CAAA,OAAA,CAAA,CAAA;AAC1B,IAAA,OAAO,MAAM;AACX,MAAA,WAAA,EAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAED,EAAA,EAAA,CAAA,CAAA;AAEH,EAAO,OAAA;AAAA,IACL,eAAA;AAAA,GAAA,CAAA;AAAA;;;;"}
package/es/index.css CHANGED
@@ -26,6 +26,7 @@
26
26
  border-bottom: 1px solid #eee;
27
27
  }
28
28
  .bee-layout__content {
29
+ position: relative;
29
30
  display: flex;
30
31
  flex-direction: column;
31
32
  flex: 1;
@@ -469,6 +470,31 @@
469
470
  .bee-sidebar #style-borderOpacity .ant-slider-rail {
470
471
  background: linear-gradient(to right, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0.2) 20%, rgba(0, 0, 0, 0.4) 20%, rgba(0, 0, 0, 0.4) 40%, rgba(0, 0, 0, 0.6) 40%, rgba(0, 0, 0, 0.6) 60%, rgba(0, 0, 0, 0.8) 60%, rgba(0, 0, 0, 0.8) 80%, rgb(0, 0, 0) 80%, rgb(0, 0, 0) 100%);
471
472
  }
473
+ .bee-sidebar .bee-scribble {
474
+ padding: 20px;
475
+ width: 100%;
476
+ }
477
+ .bee-sidebar .bee-scribble__select {
478
+ display: flex;
479
+ justify-content: center;
480
+ cursor: pointer;
481
+ }
482
+ .bee-sidebar .bee-scribble__select img {
483
+ width: 12px;
484
+ margin: 0px 10px;
485
+ }
486
+ .bee-sidebar .bee-scribble__silder {
487
+ display: flex;
488
+ align-items: center;
489
+ justify-content: center;
490
+ }
491
+ .bee-sidebar .bee-scribble__circle {
492
+ display: block;
493
+ width: 5px;
494
+ height: 5px;
495
+ background: #d9d9d9;
496
+ border-radius: 50%;
497
+ }
472
498
 
473
499
  .bee-tips {
474
500
  display: flex;
@@ -480,10 +506,15 @@
480
506
  height: 40px;
481
507
  padding: 0 30px;
482
508
  width: 100%;
509
+ overflow: hidden;
510
+ white-space: nowrap;
511
+ }
512
+ .bee-tips .bee-tips__path {
513
+ max-width: 40%;
514
+ margin-left: 20px;
483
515
  text-overflow: ellipsis;
484
516
  overflow: hidden;
485
517
  white-space: nowrap;
486
- cursor: text;
487
518
  }
488
519
 
489
520
  .annotationOperation {
package/es/index.js CHANGED
@@ -1 +1 @@
1
- export{default as AnnotationView}from"./components/AnnotationView/index.js";export{default as PointCloudAnnotationView}from"./components/AnnotationView/pointCloudAnnotationView.js";import{i18n as c}from"@labelbee/lb-utils";export{i18n}from"@labelbee/lb-utils";import n,{useState as m,useImperativeHandle as d}from"react";import{I18nextProvider as f}from"react-i18next";import{Provider as u}from"react-redux";import P from"./App.js";import g from"./configureStore.js";import{PageBackward as w,PageForward as _,PageJump as v}from"./store/annotation/actionCreators.js";export{VideoTagTool}from"./components/videoPlayer/TagToolInstanceAdaptorI18nProvider.js";import{PointCloudProvider as O}from"./components/pointCloudView/PointCloudContext.js";var x=Object.defineProperty,b=Object.defineProperties,j=Object.getOwnPropertyDescriptors,a=Object.getOwnPropertySymbols,A=Object.prototype.hasOwnProperty,I=Object.prototype.propertyIsEnumerable,i=(t,e,o)=>e in t?x(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o,y=(t,e)=>{for(var o in e||(e={}))A.call(e,o)&&i(t,o,e[o]);if(a)for(var o of a(e))I.call(e,o)&&i(t,o,e[o]);return t},E=(t,e)=>b(t,j(e));const r=g(),V=(t,e)=>{const[o,p]=m();return d(e,()=>({toolInstance:o,annotationEngine:r.getState().annotation.annotationEngine,pageBackwardActions:()=>r.dispatch(w()),pageForwardActions:()=>r.dispatch(_()),pageJump:s=>{const l=~~s-1;r.dispatch(v(l))},hello:()=>alert("hello labelBee!!!")}),[o]),n.createElement(u,{store:r},n.createElement(f,{i18n:c},n.createElement(O,null,n.createElement(P,E(y({},t),{setToolInstance:p})))))};var h=n.forwardRef(V);export{h as default,r as store};
1
+ export{default as AnnotationView}from"./components/AnnotationView/index.js";export{default as PointCloudAnnotationView}from"./components/AnnotationView/pointCloudAnnotationView.js";import{i18n as c}from"@labelbee/lb-utils";export{i18n}from"@labelbee/lb-utils";import n,{useState as m,useImperativeHandle as d}from"react";import{I18nextProvider as f}from"react-i18next";import{Provider as u}from"react-redux";import P from"./App.js";import g from"./configureStore.js";import{PageBackward as w,PageForward as _,PageJump as v}from"./store/annotation/actionCreators.js";export{VideoTagTool}from"./components/videoPlayer/TagToolInstanceAdaptorI18nProvider.js";import{PointCloudProvider as x}from"./components/pointCloudView/PointCloudContext.js";import{LabelBeeContext as O}from"./store/ctx.js";var b=Object.defineProperty,j=Object.defineProperties,A=Object.getOwnPropertyDescriptors,a=Object.getOwnPropertySymbols,I=Object.prototype.hasOwnProperty,y=Object.prototype.propertyIsEnumerable,i=(o,e,t)=>e in o?b(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,C=(o,e)=>{for(var t in e||(e={}))I.call(e,t)&&i(o,t,e[t]);if(a)for(var t of a(e))y.call(e,t)&&i(o,t,e[t]);return o},E=(o,e)=>j(o,A(e));const r=g(),V=(o,e)=>{const[t,p]=m();return d(e,()=>({toolInstance:t,annotationEngine:r.getState().annotation.annotationEngine,pageBackwardActions:()=>r.dispatch(w()),pageForwardActions:()=>r.dispatch(_()),pageJump:s=>{const l=~~s-1;r.dispatch(v(l))},hello:()=>alert("hello labelBee!!!")}),[t]),n.createElement(u,{store:r,context:O},n.createElement(f,{i18n:c},n.createElement(x,null,n.createElement(P,E(C({},o),{setToolInstance:p})))))};var h=n.forwardRef(V);export{h as default,r as store};
package/es/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import { AppProps } from '@/App';\nimport AnnotationView from '@/components/AnnotationView';\nimport PointCloudAnnotationView from '@/components/AnnotationView/pointCloudAnnotationView';\nimport { i18n } from '@labelbee/lb-utils';\nimport React, { useImperativeHandle, useState } from 'react';\nimport { I18nextProvider } from 'react-i18next';\nimport { Provider } from 'react-redux';\nimport { AnyAction } from 'redux';\nimport App from './App';\nimport configureStore from './configureStore';\nimport { PageBackward, PageForward, PageJump } from './store/annotation/actionCreators';\nimport { ToolInstance } from './store/annotation/types';\nimport { VideoTagTool } from '@/components/videoPlayer/TagToolInstanceAdaptorI18nProvider';\nimport './index.scss';\nimport { PointCloudProvider } from './components/pointCloudView/PointCloudContext';\nimport { AppState } from './store';\n\nexport const store = configureStore();\n\nconst OutputApp = (props: AppProps, ref: any) => {\n const [toolInstance, setToolInstance] = useState<ToolInstance>();\n // 暴露给 ref 的一些方法\n useImperativeHandle(\n ref,\n () => {\n return {\n toolInstance,\n annotationEngine: (store.getState() as AppState).annotation.annotationEngine,\n pageBackwardActions: () => store.dispatch(PageBackward() as unknown as AnyAction),\n pageForwardActions: () => store.dispatch(PageForward() as unknown as AnyAction),\n pageJump: (page: string) => {\n const imgIndex = ~~page - 1;\n store.dispatch(PageJump(imgIndex) as unknown as AnyAction);\n },\n hello: () => alert(`hello labelBee!!!`),\n };\n },\n [toolInstance],\n );\n\n return (\n <Provider store={store}>\n <I18nextProvider i18n={i18n}>\n <PointCloudProvider>\n <App {...props} setToolInstance={setToolInstance} />\n </PointCloudProvider>\n </I18nextProvider>\n </Provider>\n );\n};\n\nexport default React.forwardRef(OutputApp);\n\nexport { AnnotationView, PointCloudAnnotationView, i18n, VideoTagTool };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBO,MAAM,KAAQ,GAAA,cAAA,GAAA;AAErB,MAAM,SAAA,GAAY,CAAC,KAAA,EAAiB,GAAa,KAAA;AAC/C,EAAM,MAAA,CAAC,cAAc,eAAmB,CAAA,GAAA,QAAA,EAAA,CAAA;AAExC,EAAA,mBAAA,CACE,KACA,MAAM;AACJ,IAAO,OAAA;AAAA,MACL,YAAA;AAAA,MACA,gBAAA,EAAmB,KAAM,CAAA,QAAA,EAAA,CAAwB,UAAW,CAAA,gBAAA;AAAA,MAC5D,mBAAA,EAAqB,MAAM,KAAA,CAAM,QAAS,CAAA,YAAA,EAAA,CAAA;AAAA,MAC1C,kBAAA,EAAoB,MAAM,KAAA,CAAM,QAAS,CAAA,WAAA,EAAA,CAAA;AAAA,MACzC,QAAA,EAAU,CAAC,IAAiB,KAAA;AAC1B,QAAM,MAAA,QAAA,GAAW,CAAC,CAAC,IAAO,GAAA,CAAA,CAAA;AAC1B,QAAA,KAAA,CAAM,SAAS,QAAS,CAAA,QAAA,CAAA,CAAA,CAAA;AAAA,OAAA;AAAA,MAE1B,KAAA,EAAO,MAAM,KAAM,CAAA,CAAA,iBAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAAA,EAGvB,CAAC,YAAA,CAAA,CAAA,CAAA;AAGH,EAAA,2CACG,QAAD,EAAA;AAAA,IAAU,KAAA;AAAA,GAAA,sCACP,eAAD,EAAA;AAAA,IAAiB,IAAA;AAAA,GAAA,sCACd,kBAAD,EAAA,IAAA,kBACG,KAAA,CAAA,aAAA,CAAA,GAAA,EAAD,iCAAS,KAAT,CAAA,EAAA;AAAA,IAAgB,eAAA;AAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAO1B,YAAe,MAAM,UAAW,CAAA,SAAA,CAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import { AppProps } from '@/App';\nimport AnnotationView from '@/components/AnnotationView';\nimport PointCloudAnnotationView from '@/components/AnnotationView/pointCloudAnnotationView';\nimport { i18n } from '@labelbee/lb-utils';\nimport React, { useImperativeHandle, useState } from 'react';\nimport { I18nextProvider } from 'react-i18next';\nimport { Provider } from 'react-redux';\nimport { AnyAction } from 'redux';\nimport App from './App';\nimport configureStore from './configureStore';\nimport { PageBackward, PageForward, PageJump } from './store/annotation/actionCreators';\nimport { ToolInstance } from './store/annotation/types';\nimport { VideoTagTool } from '@/components/videoPlayer/TagToolInstanceAdaptorI18nProvider';\nimport './index.scss';\nimport { PointCloudProvider } from './components/pointCloudView/PointCloudContext';\nimport { AppState } from './store';\nimport { LabelBeeContext } from '@/store/ctx';\n\nexport const store = configureStore();\n\nconst OutputApp = (props: AppProps, ref: any) => {\n const [toolInstance, setToolInstance] = useState<ToolInstance>();\n // 暴露给 ref 的一些方法\n useImperativeHandle(\n ref,\n () => {\n return {\n toolInstance,\n annotationEngine: (store.getState() as AppState).annotation.annotationEngine,\n pageBackwardActions: () => store.dispatch(PageBackward() as unknown as AnyAction),\n pageForwardActions: () => store.dispatch(PageForward() as unknown as AnyAction),\n pageJump: (page: string) => {\n const imgIndex = ~~page - 1;\n store.dispatch(PageJump(imgIndex) as unknown as AnyAction);\n },\n hello: () => alert(`hello labelBee!!!`),\n };\n },\n [toolInstance],\n );\n\n return (\n <Provider store={store} context={LabelBeeContext}>\n <I18nextProvider i18n={i18n}>\n <PointCloudProvider>\n <App {...props} setToolInstance={setToolInstance} />\n </PointCloudProvider>\n </I18nextProvider>\n </Provider>\n );\n};\n\nexport default React.forwardRef(OutputApp);\n\nexport { AnnotationView, PointCloudAnnotationView, i18n, VideoTagTool };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBO,MAAM,KAAQ,GAAA,cAAA,GAAA;AAErB,MAAM,SAAA,GAAY,CAAC,KAAA,EAAiB,GAAa,KAAA;AAC/C,EAAM,MAAA,CAAC,cAAc,eAAmB,CAAA,GAAA,QAAA,EAAA,CAAA;AAExC,EAAA,mBAAA,CACE,KACA,MAAM;AACJ,IAAO,OAAA;AAAA,MACL,YAAA;AAAA,MACA,gBAAA,EAAmB,KAAM,CAAA,QAAA,EAAA,CAAwB,UAAW,CAAA,gBAAA;AAAA,MAC5D,mBAAA,EAAqB,MAAM,KAAA,CAAM,QAAS,CAAA,YAAA,EAAA,CAAA;AAAA,MAC1C,kBAAA,EAAoB,MAAM,KAAA,CAAM,QAAS,CAAA,WAAA,EAAA,CAAA;AAAA,MACzC,QAAA,EAAU,CAAC,IAAiB,KAAA;AAC1B,QAAM,MAAA,QAAA,GAAW,CAAC,CAAC,IAAO,GAAA,CAAA,CAAA;AAC1B,QAAA,KAAA,CAAM,SAAS,QAAS,CAAA,QAAA,CAAA,CAAA,CAAA;AAAA,OAAA;AAAA,MAE1B,KAAA,EAAO,MAAM,KAAM,CAAA,CAAA,iBAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAAA,EAGvB,CAAC,YAAA,CAAA,CAAA,CAAA;AAGH,EAAA,2CACG,QAAD,EAAA;AAAA,IAAU,KAAA;AAAA,IAAc,OAAS,EAAA,eAAA;AAAA,GAAA,sCAC9B,eAAD,EAAA;AAAA,IAAiB,IAAA;AAAA,GAAA,sCACd,kBAAD,EAAA,IAAA,kBACG,KAAA,CAAA,aAAA,CAAA,GAAA,EAAD,iCAAS,KAAT,CAAA,EAAA;AAAA,IAAgB,eAAA;AAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAO1B,YAAe,MAAM,UAAW,CAAA,SAAA,CAAA;;;;"}
@@ -1 +1 @@
1
- const T={UPDATE_TOOL_INSTANCE:"@@UPDATE_TOOL_INSTANCE",UPDATE_IMG_LIST:"@@UPDATE_IMG_LIST",UPDATE_ANNOTATION_CONFIG:"@@UPDATE_ANNOTATION_CONFIG",LOAD_FILE_DATA:"@@LOAD_FILE_DATA",SUBMIT_FILE_DATA:"@@SUBMIT_FILE_DATA",SET_TASK_CONFIG:"@@SET_TASK_CONFIG",INIT_TOOL:"@@INIT_TOOL",SET_TOOL:"@@SET_TOOL",UPDATE_ON_SUBMIT:"@@UPDATE_ON_SUBMIT",UPDATE_ON_SAVE:"@@UPDATE_ON_SAVE",UPDATE_ON_PAGE_CHANGE:"@@UPDATE_ON_PAGE_CHANGE",UPDATE_ON_STEP_CHANGE:"@@UPDATE_ON_STEP_CHANGE",UPDATE_ROTATE:"@@UPDATE_ROTATE",UPDATE_GET_FILE_DATA:"@@UPDATE_GET_FILE_DATA",UPDATE_PAGE_SIZE:"@@UPDATE_PAGE_SIZE",UPDATE_LOAD_FILE_LIST:"@@UPDATE_LOAD_FILE_LIST",GET_FILE_DATA:"@@GET_FILE_DATA",SET_FILE_DATA:"@@SET_FILE_DATA",COPY_BACKWARD_RESULT:"@@COPY_BACKWARD_RESULT",SET_STEP:"@@SET_STEP",SUBMIT_RESULT:"@@SUBMIT_RESULT",SAVE_RESULT:"@@SAVE_RESULT",SET_BASIC_INDEX:"@@SET_BASIC_INDEX",CALC_STEP_PROGRESS:"@@CALC_STEP_PROGRESS",SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED:"@@SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED",SKIP_BEFORE_PAGE_TURNING:"@@SKIP_BEFORE_PAGE_TURNING",SET_LOADING:"@@SET_LOADING",SET_POINT_CLOUD_LOADING:"@@SET_POINT_CLOUD_LOADING"},_={UPDATE_IMG_ATTRIBUTE:"@@UPDATE_IMG_ATTRIBUTE",INIT_IMG_ATTRIBUTE:"@@INIT_IMG_ATTRIBUTE"},E={INIT_TOOL_STYLE_CONFIG:"@@INIT_TOOL_STYLE_CONFIG",UPDATE_TOOL_STYLE_CONFIG:"@@UPDATE_TOOL_STYLE_CONFIG"};export{T as ANNOTATION_ACTIONS,_ as IMAGE_ATTRIBUTE_ACTIONS,E as TOOL_STYLE_ACTIONS};
1
+ const T={UPDATE_TOOL_INSTANCE:"@@UPDATE_TOOL_INSTANCE",UPDATE_IMG_LIST:"@@UPDATE_IMG_LIST",UPDATE_ANNOTATION_CONFIG:"@@UPDATE_ANNOTATION_CONFIG",LOAD_FILE_DATA:"@@LOAD_FILE_DATA",SUBMIT_FILE_DATA:"@@SUBMIT_FILE_DATA",SET_TASK_CONFIG:"@@SET_TASK_CONFIG",INIT_TOOL:"@@INIT_TOOL",SET_TOOL:"@@SET_TOOL",UPDATE_ON_SUBMIT:"@@UPDATE_ON_SUBMIT",UPDATE_ON_SAVE:"@@UPDATE_ON_SAVE",UPDATE_ON_PAGE_CHANGE:"@@UPDATE_ON_PAGE_CHANGE",UPDATE_ON_STEP_CHANGE:"@@UPDATE_ON_STEP_CHANGE",UPDATE_ROTATE:"@@UPDATE_ROTATE",UPDATE_GET_FILE_DATA:"@@UPDATE_GET_FILE_DATA",UPDATE_PAGE_SIZE:"@@UPDATE_PAGE_SIZE",UPDATE_LOAD_FILE_LIST:"@@UPDATE_LOAD_FILE_LIST",GET_FILE_DATA:"@@GET_FILE_DATA",SET_FILE_DATA:"@@SET_FILE_DATA",COPY_BACKWARD_RESULT:"@@COPY_BACKWARD_RESULT",SET_STEP:"@@SET_STEP",SUBMIT_RESULT:"@@SUBMIT_RESULT",SAVE_RESULT:"@@SAVE_RESULT",SET_BASIC_INDEX:"@@SET_BASIC_INDEX",CALC_STEP_PROGRESS:"@@CALC_STEP_PROGRESS",SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED:"@@SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED",SKIP_BEFORE_PAGE_TURNING:"@@SKIP_BEFORE_PAGE_TURNING",SET_LOADING:"@@SET_LOADING",SET_POINT_CLOUD_LOADING:"@@SET_POINT_CLOUD_LOADING",SET_TASK_STEP_LIST:"@@SET_TASK_STEP_LIST"},_={UPDATE_IMG_ATTRIBUTE:"@@UPDATE_IMG_ATTRIBUTE",INIT_IMG_ATTRIBUTE:"@@INIT_IMG_ATTRIBUTE"},E={INIT_TOOL_STYLE_CONFIG:"@@INIT_TOOL_STYLE_CONFIG",UPDATE_TOOL_STYLE_CONFIG:"@@UPDATE_TOOL_STYLE_CONFIG"};export{T as ANNOTATION_ACTIONS,_ as IMAGE_ATTRIBUTE_ACTIONS,E as TOOL_STYLE_ACTIONS};
@@ -1 +1 @@
1
- {"version":3,"file":"Actions.js","sources":["../../src/store/Actions.ts"],"sourcesContent":["export const ANNOTATION_ACTIONS = {\n UPDATE_TOOL_INSTANCE: '@@UPDATE_TOOL_INSTANCE',\n UPDATE_IMG_LIST: '@@UPDATE_IMG_LIST',\n UPDATE_ANNOTATION_CONFIG: '@@UPDATE_ANNOTATION_CONFIG',\n LOAD_FILE_DATA: '@@LOAD_FILE_DATA',\n SUBMIT_FILE_DATA: '@@SUBMIT_FILE_DATA',\n SET_TASK_CONFIG: '@@SET_TASK_CONFIG',\n INIT_TOOL: '@@INIT_TOOL',\n SET_TOOL: '@@SET_TOOL',\n UPDATE_ON_SUBMIT: '@@UPDATE_ON_SUBMIT',\n UPDATE_ON_SAVE: '@@UPDATE_ON_SAVE',\n UPDATE_ON_PAGE_CHANGE: '@@UPDATE_ON_PAGE_CHANGE',\n UPDATE_ON_STEP_CHANGE: '@@UPDATE_ON_STEP_CHANGE',\n UPDATE_ROTATE: '@@UPDATE_ROTATE',\n UPDATE_GET_FILE_DATA: '@@UPDATE_GET_FILE_DATA',\n UPDATE_PAGE_SIZE: '@@UPDATE_PAGE_SIZE',\n UPDATE_LOAD_FILE_LIST: '@@UPDATE_LOAD_FILE_LIST',\n GET_FILE_DATA: '@@GET_FILE_DATA',\n SET_FILE_DATA: '@@SET_FILE_DATA',\n COPY_BACKWARD_RESULT: '@@COPY_BACKWARD_RESULT',\n SET_STEP: '@@SET_STEP',\n SUBMIT_RESULT: '@@SUBMIT_RESULT',\n SAVE_RESULT: '@@SAVE_RESULT',\n SET_BASIC_INDEX: '@@SET_BASIC_INDEX',\n CALC_STEP_PROGRESS: '@@CALC_STEP_PROGRESS',\n SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED: '@@SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED',\n SKIP_BEFORE_PAGE_TURNING: '@@SKIP_BEFORE_PAGE_TURNING',\n SET_LOADING: '@@SET_LOADING',\n SET_POINT_CLOUD_LOADING: '@@SET_POINT_CLOUD_LOADING',\n\n \n};\n\nexport const IMAGE_ATTRIBUTE_ACTIONS = {\n UPDATE_IMG_ATTRIBUTE: '@@UPDATE_IMG_ATTRIBUTE',\n INIT_IMG_ATTRIBUTE: '@@INIT_IMG_ATTRIBUTE',\n};\n\nexport const TOOL_STYLE_ACTIONS = {\n INIT_TOOL_STYLE_CONFIG: '@@INIT_TOOL_STYLE_CONFIG',\n UPDATE_TOOL_STYLE_CONFIG: '@@UPDATE_TOOL_STYLE_CONFIG',\n};\n"],"names":[],"mappings":"AAAO,MAAM,kBAAqB,GAAA;AAAA,EAChC,oBAAsB,EAAA,wBAAA;AAAA,EACtB,eAAiB,EAAA,mBAAA;AAAA,EACjB,wBAA0B,EAAA,4BAAA;AAAA,EAC1B,cAAgB,EAAA,kBAAA;AAAA,EAChB,gBAAkB,EAAA,oBAAA;AAAA,EAClB,eAAiB,EAAA,mBAAA;AAAA,EACjB,SAAW,EAAA,aAAA;AAAA,EACX,QAAU,EAAA,YAAA;AAAA,EACV,gBAAkB,EAAA,oBAAA;AAAA,EAClB,cAAgB,EAAA,kBAAA;AAAA,EAChB,qBAAuB,EAAA,yBAAA;AAAA,EACvB,qBAAuB,EAAA,yBAAA;AAAA,EACvB,aAAe,EAAA,iBAAA;AAAA,EACf,oBAAsB,EAAA,wBAAA;AAAA,EACtB,gBAAkB,EAAA,oBAAA;AAAA,EAClB,qBAAuB,EAAA,yBAAA;AAAA,EACvB,aAAe,EAAA,iBAAA;AAAA,EACf,aAAe,EAAA,iBAAA;AAAA,EACf,oBAAsB,EAAA,wBAAA;AAAA,EACtB,QAAU,EAAA,YAAA;AAAA,EACV,aAAe,EAAA,iBAAA;AAAA,EACf,WAAa,EAAA,eAAA;AAAA,EACb,eAAiB,EAAA,mBAAA;AAAA,EACjB,kBAAoB,EAAA,sBAAA;AAAA,EACpB,qCAAuC,EAAA,yCAAA;AAAA,EACvC,wBAA0B,EAAA,4BAAA;AAAA,EAC1B,WAAa,EAAA,eAAA;AAAA,EACb,uBAAyB,EAAA,2BAAA;AAAA,EAAA;AAKpB,MAAM,uBAA0B,GAAA;AAAA,EACrC,oBAAsB,EAAA,wBAAA;AAAA,EACtB,kBAAoB,EAAA,sBAAA;AAAA,EAAA;AAGf,MAAM,kBAAqB,GAAA;AAAA,EAChC,sBAAwB,EAAA,0BAAA;AAAA,EACxB,wBAA0B,EAAA,4BAAA;AAAA;;;;"}
1
+ {"version":3,"file":"Actions.js","sources":["../../src/store/Actions.ts"],"sourcesContent":["export const ANNOTATION_ACTIONS = {\n UPDATE_TOOL_INSTANCE: '@@UPDATE_TOOL_INSTANCE',\n UPDATE_IMG_LIST: '@@UPDATE_IMG_LIST',\n UPDATE_ANNOTATION_CONFIG: '@@UPDATE_ANNOTATION_CONFIG',\n LOAD_FILE_DATA: '@@LOAD_FILE_DATA',\n SUBMIT_FILE_DATA: '@@SUBMIT_FILE_DATA',\n SET_TASK_CONFIG: '@@SET_TASK_CONFIG',\n INIT_TOOL: '@@INIT_TOOL',\n SET_TOOL: '@@SET_TOOL',\n UPDATE_ON_SUBMIT: '@@UPDATE_ON_SUBMIT',\n UPDATE_ON_SAVE: '@@UPDATE_ON_SAVE',\n UPDATE_ON_PAGE_CHANGE: '@@UPDATE_ON_PAGE_CHANGE',\n UPDATE_ON_STEP_CHANGE: '@@UPDATE_ON_STEP_CHANGE',\n UPDATE_ROTATE: '@@UPDATE_ROTATE',\n UPDATE_GET_FILE_DATA: '@@UPDATE_GET_FILE_DATA',\n UPDATE_PAGE_SIZE: '@@UPDATE_PAGE_SIZE',\n UPDATE_LOAD_FILE_LIST: '@@UPDATE_LOAD_FILE_LIST',\n GET_FILE_DATA: '@@GET_FILE_DATA',\n SET_FILE_DATA: '@@SET_FILE_DATA',\n COPY_BACKWARD_RESULT: '@@COPY_BACKWARD_RESULT',\n SET_STEP: '@@SET_STEP',\n SUBMIT_RESULT: '@@SUBMIT_RESULT',\n SAVE_RESULT: '@@SAVE_RESULT',\n SET_BASIC_INDEX: '@@SET_BASIC_INDEX',\n CALC_STEP_PROGRESS: '@@CALC_STEP_PROGRESS',\n SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED: '@@SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED',\n SKIP_BEFORE_PAGE_TURNING: '@@SKIP_BEFORE_PAGE_TURNING',\n SET_LOADING: '@@SET_LOADING',\n SET_POINT_CLOUD_LOADING: '@@SET_POINT_CLOUD_LOADING',\n\n \n\n SET_TASK_STEP_LIST: '@@SET_TASK_STEP_LIST'\n};\n\nexport const IMAGE_ATTRIBUTE_ACTIONS = {\n UPDATE_IMG_ATTRIBUTE: '@@UPDATE_IMG_ATTRIBUTE',\n INIT_IMG_ATTRIBUTE: '@@INIT_IMG_ATTRIBUTE',\n};\n\nexport const TOOL_STYLE_ACTIONS = {\n INIT_TOOL_STYLE_CONFIG: '@@INIT_TOOL_STYLE_CONFIG',\n UPDATE_TOOL_STYLE_CONFIG: '@@UPDATE_TOOL_STYLE_CONFIG',\n};\n"],"names":[],"mappings":"AAAO,MAAM,kBAAqB,GAAA;AAAA,EAChC,oBAAsB,EAAA,wBAAA;AAAA,EACtB,eAAiB,EAAA,mBAAA;AAAA,EACjB,wBAA0B,EAAA,4BAAA;AAAA,EAC1B,cAAgB,EAAA,kBAAA;AAAA,EAChB,gBAAkB,EAAA,oBAAA;AAAA,EAClB,eAAiB,EAAA,mBAAA;AAAA,EACjB,SAAW,EAAA,aAAA;AAAA,EACX,QAAU,EAAA,YAAA;AAAA,EACV,gBAAkB,EAAA,oBAAA;AAAA,EAClB,cAAgB,EAAA,kBAAA;AAAA,EAChB,qBAAuB,EAAA,yBAAA;AAAA,EACvB,qBAAuB,EAAA,yBAAA;AAAA,EACvB,aAAe,EAAA,iBAAA;AAAA,EACf,oBAAsB,EAAA,wBAAA;AAAA,EACtB,gBAAkB,EAAA,oBAAA;AAAA,EAClB,qBAAuB,EAAA,yBAAA;AAAA,EACvB,aAAe,EAAA,iBAAA;AAAA,EACf,aAAe,EAAA,iBAAA;AAAA,EACf,oBAAsB,EAAA,wBAAA;AAAA,EACtB,QAAU,EAAA,YAAA;AAAA,EACV,aAAe,EAAA,iBAAA;AAAA,EACf,WAAa,EAAA,eAAA;AAAA,EACb,eAAiB,EAAA,mBAAA;AAAA,EACjB,kBAAoB,EAAA,sBAAA;AAAA,EACpB,qCAAuC,EAAA,yCAAA;AAAA,EACvC,wBAA0B,EAAA,4BAAA;AAAA,EAC1B,WAAa,EAAA,eAAA;AAAA,EACb,uBAAyB,EAAA,2BAAA;AAAA,EAIzB,kBAAoB,EAAA,sBAAA;AAAA,EAAA;AAGf,MAAM,uBAA0B,GAAA;AAAA,EACrC,oBAAsB,EAAA,wBAAA;AAAA,EACtB,kBAAoB,EAAA,sBAAA;AAAA,EAAA;AAGf,MAAM,kBAAqB,GAAA;AAAA,EAChC,sBAAwB,EAAA,0BAAA;AAAA,EACxB,wBAA0B,EAAA,4BAAA;AAAA;;;;"}