@labelbee/lb-components 1.9.0-alpha.5 → 1.9.0-alpha.6
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.
- package/dist/components/pointCloudView/index.js +1 -1
- package/dist/store/annotation/reducer.js +1 -1
- package/dist/types/components/AnnotationView/index.d.ts +1 -1
- package/dist/types/components/pointCloudView/PointCloudContext.d.ts +1 -1
- package/dist/types/components/videoPlayer/types.d.ts +1 -1
- package/dist/types/store/annotation/types.d.ts +3 -3
- package/dist/types/store/imgAttribute/types.d.ts +1 -1
- package/dist/types/store/index.d.ts +1 -1
- package/dist/types/store/toolStyle/types.d.ts +1 -1
- package/dist/types/utils/dom.d.ts +2 -2
- package/dist/types/views/MainView/toolFooter/FooterPopover.d.ts +1 -1
- package/dist/types/views/MainView/toolFooter/index.d.ts +1 -1
- package/es/components/pointCloudView/index.js +1 -1
- package/es/store/annotation/reducer.js +1 -1
- package/package.json +2 -2
- package/es/App.js.map +0 -1
- package/es/assets/annotation/common/icon_adapt.svg.js.map +0 -1
- package/es/assets/annotation/common/icon_adapt_black.svg.js.map +0 -1
- package/es/assets/annotation/common/icon_back.svg.js.map +0 -1
- package/es/assets/annotation/common/icon_backA.svg.js.map +0 -1
- package/es/assets/annotation/common/icon_clear.svg.js.map +0 -1
- package/es/assets/annotation/common/icon_clearSmall.svg.js.map +0 -1
- package/es/assets/annotation/common/icon_clearSmall_a.svg.js.map +0 -1
- package/es/assets/annotation/common/icon_clear_a.svg.js.map +0 -1
- package/es/assets/annotation/common/icon_invalid.svg.js.map +0 -1
- package/es/assets/annotation/common/icon_invalid_a.svg.js.map +0 -1
- package/es/assets/annotation/common/icon_next.svg.js.map +0 -1
- package/es/assets/annotation/common/icon_nextA.svg.js.map +0 -1
- package/es/assets/annotation/common/icon_r.svg.js.map +0 -1
- package/es/assets/annotation/common/icon_rA.svg.js.map +0 -1
- package/es/assets/annotation/common/icon_save.svg.js.map +0 -1
- package/es/assets/annotation/common/icon_saveA.svg.js.map +0 -1
- package/es/assets/annotation/image/brightness.svg.js.map +0 -1
- package/es/assets/annotation/image/contrast.svg.js.map +0 -1
- package/es/assets/annotation/image/icon_yuantu.svg.js.map +0 -1
- package/es/assets/annotation/image/saturation.svg.js.map +0 -1
- package/es/assets/annotation/lineTool/icon_line.svg.js.map +0 -1
- package/es/assets/annotation/lineTool/icon_line_a.svg.js.map +0 -1
- package/es/assets/annotation/pointCloudTool/changePointCloudValid.svg.js.map +0 -1
- package/es/assets/annotation/pointCloudTool/copy.svg.js.map +0 -1
- package/es/assets/annotation/pointCloudTool/nextBox.svg.js.map +0 -1
- package/es/assets/annotation/pointCloudTool/nodata.svg.js.map +0 -1
- package/es/assets/annotation/pointCloudTool/patse.svg.js.map +0 -1
- package/es/assets/annotation/pointCloudTool/prevBox.svg.js.map +0 -1
- package/es/assets/annotation/pointCloudTool/rotate180_black.svg.js.map +0 -1
- package/es/assets/annotation/pointCloudTool/selectAll.svg.js.map +0 -1
- package/es/assets/annotation/pointCloudTool/selectMultiple.svg.js.map +0 -1
- package/es/assets/annotation/pointCloudTool/unitAttribute.svg.js.map +0 -1
- package/es/assets/annotation/pointCloudTool/unitAttributeForbid.svg.js.map +0 -1
- package/es/assets/annotation/pointCloudTool/unitAttributeHover.svg.js.map +0 -1
- package/es/assets/annotation/pointTool/icon_point.svg.js.map +0 -1
- package/es/assets/annotation/pointTool/icon_point_a.svg.js.map +0 -1
- package/es/assets/annotation/polygonTool/icon_polygon.svg.js.map +0 -1
- package/es/assets/annotation/polygonTool/icon_polygon_a.svg.js.map +0 -1
- package/es/assets/annotation/rectTool/icon_rect.svg.js.map +0 -1
- package/es/assets/annotation/rectTool/icon_rectPattern.svg.js +0 -1
- package/es/assets/annotation/rectTool/icon_rectPattern.svg.js.map +0 -1
- package/es/assets/annotation/rectTool/icon_rect_a.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_alttab_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_back_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_cencel_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_del_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_forward_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_frameActive_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_frameChange_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_frameNull_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_frame_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_fullView_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_kj1.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_kj_h.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_last_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_lineActive_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_lineChange_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_lineCont_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_lineDel_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_lineInsert_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_lineNull_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_lineSpecial_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_line_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_loupe_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_mouse_left_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_mouse_middle_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_mouse_right_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_move_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_next_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_noDisplay.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_playPause.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_pointActive_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_pointNull_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_point_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_polygonActive_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_polygonChange_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_polygonDel_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_polygonInsert_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_polygonMerge_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_polygonNull_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_reform_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_reload_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_save_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_segment.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_speed_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_straightLine_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_tab_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_tag_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/icon_unGrip_kj.svg.js.map +0 -1
- package/es/assets/annotation/toolHotKeyIcon/setValid.svg.js.map +0 -1
- package/es/assets/annotation/video/icon_keyboard_h.svg.js.map +0 -1
- package/es/assets/attributeIcon/eraser.svg.js.map +0 -1
- package/es/assets/attributeIcon/eraser_a.svg.js.map +0 -1
- package/es/assets/attributeIcon/pen.svg.js.map +0 -1
- package/es/assets/attributeIcon/pen_a.svg.js.map +0 -1
- package/es/assets/attributeIcon/zoomUp.svg.js.map +0 -1
- package/es/assets/toolStyle/icon_border.svg.js.map +0 -1
- package/es/assets/toolStyle/icon_borderColor.svg.js.map +0 -1
- package/es/assets/toolStyle/icon_opacityFill.svg.js.map +0 -1
- package/es/assets/toolStyle/icon_opacityStroke.svg.js.map +0 -1
- package/es/components/AnnotationView/index.js.map +0 -1
- package/es/components/AnnotationView/pointCloudAnnotationView.js.map +0 -1
- package/es/components/ImageError/index.js +0 -1
- package/es/components/ImageError/index.js.map +0 -1
- package/es/components/annotationStepPopover/index.js.map +0 -1
- package/es/components/attributeList/index.js.map +0 -1
- package/es/components/checkboxList/index.js.map +0 -1
- package/es/components/colorTag/index.js.map +0 -1
- package/es/components/customAntd/IconWithText/index.js.map +0 -1
- package/es/components/customResizeHook/index.js.map +0 -1
- package/es/components/fileException/FileError.js.map +0 -1
- package/es/components/fileException/FileInvalid.js.map +0 -1
- package/es/components/fileException/index.js.map +0 -1
- package/es/components/pointCloudView/PointCloud2DView.js.map +0 -1
- package/es/components/pointCloudView/PointCloud3DView.js.map +0 -1
- package/es/components/pointCloudView/PointCloudBackView.js.map +0 -1
- package/es/components/pointCloudView/PointCloudContext.js.map +0 -1
- package/es/components/pointCloudView/PointCloudInfos.js.map +0 -1
- package/es/components/pointCloudView/PointCloudLayout.js.map +0 -1
- package/es/components/pointCloudView/PointCloudListener.js.map +0 -1
- package/es/components/pointCloudView/PointCloudSideView.js.map +0 -1
- package/es/components/pointCloudView/PointCloudTopView.js.map +0 -1
- package/es/components/pointCloudView/components/EmptyPage/index.js.map +0 -1
- package/es/components/pointCloudView/components/UnifyParamsModal/index.js.map +0 -1
- package/es/components/pointCloudView/hooks/useAttribute.js.map +0 -1
- package/es/components/pointCloudView/hooks/useBoxes.js.map +0 -1
- package/es/components/pointCloudView/hooks/useConfig.js.map +0 -1
- package/es/components/pointCloudView/hooks/useHistory.js.map +0 -1
- package/es/components/pointCloudView/hooks/usePointCloudBoxes.js +0 -119
- package/es/components/pointCloudView/hooks/usePointCloudBoxes.js.map +0 -1
- package/es/components/pointCloudView/hooks/usePointCloudViews.js.map +0 -1
- package/es/components/pointCloudView/hooks/usePolygon.js.map +0 -1
- package/es/components/pointCloudView/hooks/useRotate.js.map +0 -1
- package/es/components/pointCloudView/hooks/useSingleBox.js.map +0 -1
- package/es/components/pointCloudView/hooks/useStatus.js.map +0 -1
- package/es/components/pointCloudView/hooks/useZoom.js.map +0 -1
- package/es/components/pointCloudView/index.js.map +0 -1
- package/es/components/pointCloudView/useSingleBox.js +0 -44
- package/es/components/pointCloudView/useSingleBox.js.map +0 -1
- package/es/components/videoAnnotate/index.js.map +0 -1
- package/es/components/videoPlayer/TagToolInstanceAdaptor.js.map +0 -1
- package/es/components/videoPlayer/TagToolInstanceAdaptorI18nProvider.js.map +0 -1
- package/es/components/videoPlayer/VideoTagLayer.js.map +0 -1
- package/es/components/videoPlayer/components/controller/index.js.map +0 -1
- package/es/components/videoPlayer/index.js.map +0 -1
- package/es/components/videoPlayer/utils.js.map +0 -1
- package/es/configureStore.js.map +0 -1
- package/es/constant/index.js.map +0 -1
- package/es/constant/styleString.js.map +0 -1
- package/es/data/Style.js.map +0 -1
- package/es/data/enums/AnnotationSize.js.map +0 -1
- package/es/data/enums/ToolType.js.map +0 -1
- package/es/hooks/annotation.js.map +0 -1
- package/es/hooks/useRafState.js.map +0 -1
- package/es/hooks/useRefCache.js.map +0 -1
- package/es/hooks/useSafeSate.js.map +0 -1
- package/es/hooks/useSize.js.map +0 -1
- package/es/hooks/useUnmountedRef.js.map +0 -1
- package/es/index.js.map +0 -1
- package/es/store/Actions.js.map +0 -1
- package/es/store/annotation/actionCreators.js.map +0 -1
- package/es/store/annotation/map.js.map +0 -1
- package/es/store/annotation/reducer.js.map +0 -1
- package/es/store/annotation/selectors.js.map +0 -1
- package/es/store/ctx.js.map +0 -1
- package/es/store/imgAttribute/actionCreators.js.map +0 -1
- package/es/store/imgAttribute/reducer.js.map +0 -1
- package/es/store/index.js.map +0 -1
- package/es/store/toolStyle/actionCreators.js.map +0 -1
- package/es/store/toolStyle/reducer.js.map +0 -1
- package/es/utils/AnnotationDataUtils.js.map +0 -1
- package/es/utils/ConfigUtils.js.map +0 -1
- package/es/utils/PageOperator.js.map +0 -1
- package/es/utils/StepUtils.js.map +0 -1
- package/es/utils/TextUtils.js.map +0 -1
- package/es/utils/ToolStyleUtils.js.map +0 -1
- package/es/utils/ToolUtils.js.map +0 -1
- package/es/utils/data.js.map +0 -1
- package/es/utils/dom.js.map +0 -1
- package/es/utils/index.js.map +0 -1
- package/es/views/MainView/annotationOperation/index.js.map +0 -1
- package/es/views/MainView/annotationTips/index.js.map +0 -1
- package/es/views/MainView/index.js.map +0 -1
- package/es/views/MainView/sidebar/AnnotationText/index.js.map +0 -1
- package/es/views/MainView/sidebar/ClearIcon/index.js.map +0 -1
- package/es/views/MainView/sidebar/GeneralOperation/ActionsConfirm.js.map +0 -1
- package/es/views/MainView/sidebar/GeneralOperation/OperationList.js +0 -77
- package/es/views/MainView/sidebar/GeneralOperation/OperationList.js.map +0 -1
- package/es/views/MainView/sidebar/GeneralOperation/index.js.map +0 -1
- package/es/views/MainView/sidebar/GeneralOperation/useOperationList.js.map +0 -1
- package/es/views/MainView/sidebar/ImgAttributeInfo/index.js.map +0 -1
- package/es/views/MainView/sidebar/PointCloudToolSidebar/components/batchUpdateModal/index.js.map +0 -1
- package/es/views/MainView/sidebar/PointCloudToolSidebar/index.js.map +0 -1
- package/es/views/MainView/sidebar/ScribbleSidebar/index.js.map +0 -1
- package/es/views/MainView/sidebar/SwitchAttributeList/index.js.map +0 -1
- package/es/views/MainView/sidebar/TagSidebar/index.js.map +0 -1
- package/es/views/MainView/sidebar/TextAreaFormat/index.js.map +0 -1
- package/es/views/MainView/sidebar/TextToolSidebar/index.js.map +0 -1
- package/es/views/MainView/sidebar/ToolIcons.js.map +0 -1
- package/es/views/MainView/sidebar/ToolStyle/index.js.map +0 -1
- package/es/views/MainView/sidebar/index.js.map +0 -1
- package/es/views/MainView/toolFooter/AnnotatedAttributes/index.js.map +0 -1
- package/es/views/MainView/toolFooter/FooterPopover.js.map +0 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/common/index.js.map +0 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/index.js.map +0 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/line/index.js.map +0 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/point/index.js.map +0 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/pointCloud/index.js.map +0 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/polygon/index.js.map +0 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/rectToolShortCutTable/index.js.map +0 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/scribble/index.js.map +0 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/tag/index.js.map +0 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/text/index.js.map +0 -1
- package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/videoTag/index.js.map +0 -1
- package/es/views/MainView/toolFooter/FooterTips/index.js.map +0 -1
- package/es/views/MainView/toolFooter/HiddenTips/index.js.map +0 -1
- package/es/views/MainView/toolFooter/PageNumber/index.js.map +0 -1
- package/es/views/MainView/toolFooter/Pagination.js.map +0 -1
- package/es/views/MainView/toolFooter/ZoomController/ZoomLevel/index.js.map +0 -1
- package/es/views/MainView/toolFooter/ZoomController/index.js.map +0 -1
- package/es/views/MainView/toolFooter/index.js.map +0 -1
- package/es/views/MainView/toolHeader/ExportData/index.js.map +0 -1
- package/es/views/MainView/toolHeader/StepSwitch/index.js.map +0 -1
- package/es/views/MainView/toolHeader/headerOption/index.js.map +0 -1
- package/es/views/MainView/toolHeader/index.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pointCloudAnnotationView.js","sources":["../../../src/components/AnnotationView/pointCloudAnnotationView.tsx"],"sourcesContent":["/*\n * @Author: Laoluo luozefeng@sensetime.com\n * @Date: 2022-06-13 19:31:36\n * @LastEditors: Laoluo luozefeng@sensetime.com\n * @LastEditTime: 2022-06-27 19:43:25\n */\n\nimport { PointCloud } from '@labelbee/lb-annotation';\nimport { IPointCloudBox, PointCloudUtils } from '@labelbee/lb-utils';\nimport React, { useCallback, useEffect, useRef } from 'react';\n\ninterface IProps {\n src: string; // 图片路径\n result: string;\n size: {\n width: number;\n height: number;\n };\n backgroundColor?: string;\n\n // Camera Update\n isOrthographicCamera?: boolean;\n}\n\nfunction getDefaultOrthographicParams(size: { width: number; height: number }) {\n return {\n left: -size.width / 2,\n right: size.width / 2,\n top: size.height / 2,\n bottom: -size.height / 2,\n near: 100,\n far: -100,\n };\n}\n\nconst PointCloudAnnotationView = (props: IProps) => {\n const { src, result, size, isOrthographicCamera = false, backgroundColor = '#ccc' } = props;\n let viewOperation = useRef<any>();\n const instance = useRef<any>();\n\n const refCallback = useCallback((node) => {\n viewOperation.current = node;\n }, []);\n\n useEffect(() => {\n let pointCloudProps = {\n container: viewOperation.current,\n backgroundColor,\n isOrthographicCamera,\n };\n\n /**\n * Orthographic Camera Params.\n * */\n if (isOrthographicCamera) {\n Object.assign(pointCloudProps, {\n orthographicParams: getDefaultOrthographicParams(size),\n });\n }\n\n const pointCloud = new PointCloud(pointCloudProps);\n instance.current = pointCloud;\n return () => {\n instance.current.renderer?.forceContextLoss();\n };\n }, []);\n\n useEffect(() => {\n // PointCloud camera init.\n\n if (instance.current) {\n // Init the camera\n instance.current?.init();\n\n // Update range of orthographicCamera.\n instance.current?.initOrthographicCamera(getDefaultOrthographicParams(size));\n instance.current?.render();\n }\n }, [size]);\n\n useEffect(() => {\n if (instance.current && src) {\n instance.current?.loadPCDFile(src);\n }\n }, [src]);\n\n useEffect(() => {\n if (result) {\n const boxParamsList = PointCloudUtils.getBoxParamsFromResultList(result);\n\n // Add Init Box\n boxParamsList.forEach((v: IPointCloudBox) => {\n instance.current?.generateBox(v, v.id);\n });\n }\n return () => {\n const boxParamsList = PointCloudUtils.getBoxParamsFromResultList(result);\n boxParamsList.forEach((v: IPointCloudBox) => {\n instance.current?.removeObjectByName(v.id);\n });\n instance.current?.render();\n };\n }, [result]);\n\n return <div style={size} ref={refCallback} />;\n};\n\nexport default PointCloudAnnotationView;\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ReloadOutlined as d}from"@ant-design/icons";import{Button as f}from"antd/es";import e from"react";const g=n=>{const{width:o,height:i,reloadImage:a,hideSetInvalidTips:s,ignoreOffsetY:u,backgroundColor:l,fileTypeName:r="\u56FE\u7247"}=n,c=u?0:40,t=n.layerStyle||{position:"absolute",left:0,top:c,cursor:"initial",zIndex:20,fontSize:12};o&&i?Object.assign(t,{width:o,height:i}):Object.assign(t,{bottom:0,right:0}),l&&Object.assign(t,{backgroundColor:l});const m={position:"absolute",top:"30%",left:"50%",transform:"translate(-50%, -50%)"};return e.createElement("div",{style:t},e.createElement("div",{style:m},e.createElement("div",{style:{textAlign:"center",marginBottom:10}},e.createElement(f,{type:"primary",shape:"circle",icon:e.createElement(d,null),onClick:a})),e.createElement("div",null,`${r}\u52A0\u8F7D\u5931\u8D25, \u8BF7\u91CD\u65B0\u52A0\u8F7D${s?"":` \u6216 \u5C06${r}\u6807\u4E3A\u65E0\u6548`}`)))};export{g as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/ImageError/index.tsx"],"sourcesContent":["import { ReloadOutlined } from '@ant-design/icons';\nimport { Button } from 'antd/es';\nimport React from 'react';\n\ninterface IProps {\n width?: number;\n height?: number;\n reloadImage: () => void;\n hideSetInvalidTips?: boolean;\n /** 忽略顶部的偏移,如: 多边形的容器已经计算好高度(容器不包含顶部标注提示语部分) */\n ignoreOffsetY?: boolean;\n layerStyle?: React.CSSProperties;\n backgroundColor: string;\n fileTypeName?: string;\n}\n\nconst ImageError = (props: IProps) => {\n const {\n width,\n height,\n reloadImage,\n hideSetInvalidTips,\n ignoreOffsetY,\n backgroundColor,\n fileTypeName = '图片',\n } = props;\n\n const top = !ignoreOffsetY ? 40 : 0;\n\n const layerStyle: React.CSSProperties = props.layerStyle || {\n position: 'absolute',\n left: 0,\n top,\n cursor: 'initial',\n zIndex: 20,\n fontSize: 12,\n };\n if (width && height) {\n Object.assign(layerStyle, { width, height });\n } else {\n Object.assign(layerStyle, { bottom: 0, right: 0 });\n }\n\n if (backgroundColor) {\n Object.assign(layerStyle, { backgroundColor });\n }\n\n const buttonStyle: React.CSSProperties = {\n position: 'absolute',\n top: '30%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n };\n\n return (\n <div style={layerStyle}>\n <div style={buttonStyle}>\n <div style={{ textAlign: 'center', marginBottom: 10 }}>\n <Button type='primary' shape='circle' icon={<ReloadOutlined />} onClick={reloadImage} />\n </div>\n <div>\n {`${fileTypeName}加载失败, 请重新加载${\n hideSetInvalidTips ? '' : ` 或 将${fileTypeName}标为无效`\n }`}\n </div>\n </div>\n </div>\n );\n};\n\nexport default ImageError;\n"],"names":[],"mappings":";;;;AAgBM,MAAA,UAAA,GAAa,CAAC,KAAkB,KAAA;AACpC,EAAM,MAAA;AAAA,IACJ,KAAA;AAAA,IACA,MAAA;AAAA,IACA,WAAA;AAAA,IACA,kBAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA,YAAe,GAAA,cAAA;AAAA,GACb,GAAA,KAAA,CAAA;AAEJ,EAAM,MAAA,GAAA,GAAM,CAAC,aAAA,GAAgB,EAAK,GAAA,CAAA,CAAA;AAElC,EAAM,MAAA,UAAA,GAAkC,MAAM,UAAc,IAAA;AAAA,IAC1D,QAAU,EAAA,UAAA;AAAA,IACV,IAAM,EAAA,CAAA;AAAA,IACN,GAAA;AAAA,IACA,MAAQ,EAAA,SAAA;AAAA,IACR,MAAQ,EAAA,EAAA;AAAA,IACR,QAAU,EAAA,EAAA;AAAA,GAAA,CAAA;AAEZ,EAAA,IAAI,SAAS,MAAQ,EAAA;AACnB,IAAO,MAAA,CAAA,MAAA,CAAO,UAAY,EAAA,CAAE,KAAO,EAAA,MAAA,CAAA,CAAA,CAAA;AAAA,GAC9B,MAAA;AACL,IAAA,MAAA,CAAO,MAAO,CAAA,UAAA,EAAY,CAAE,MAAA,EAAQ,GAAG,KAAO,EAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAGhD,EAAA,IAAI,eAAiB,EAAA;AACnB,IAAO,MAAA,CAAA,MAAA,CAAO,YAAY,CAAE,eAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAG9B,EAAA,MAAM,WAAmC,GAAA;AAAA,IACvC,QAAU,EAAA,UAAA;AAAA,IACV,GAAK,EAAA,KAAA;AAAA,IACL,IAAM,EAAA,KAAA;AAAA,IACN,SAAW,EAAA,uBAAA;AAAA,GAAA,CAAA;AAGb,EAAA,2CACG,KAAD,EAAA;AAAA,IAAK,KAAO,EAAA,UAAA;AAAA,GAAA,sCACT,KAAD,EAAA;AAAA,IAAK,KAAO,EAAA,WAAA;AAAA,GAAA,sCACT,KAAD,EAAA;AAAA,IAAK,KAAO,EAAA,CAAE,SAAW,EAAA,QAAA,EAAU,YAAc,EAAA,EAAA,CAAA;AAAA,GAAA,sCAC9C,MAAD,EAAA;AAAA,IAAQ,IAAK,EAAA,SAAA;AAAA,IAAU,KAAM,EAAA,QAAA;AAAA,IAAS,IAAA,sCAAO,cAAD,EAAA,IAAA,CAAA;AAAA,IAAoB,OAAS,EAAA,WAAA;AAAA,GAAA,CAAA,CAAA,sCAE1E,KAAD,EAAA,IAAA,EACG,GAAG,YACF,CAAA,wDAAA,EAAA,kBAAA,GAAqB,KAAK,CAAO,cAAA,EAAA,YAAA,CAAA,wBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/annotationStepPopover/index.tsx"],"sourcesContent":["// 标注步骤中的 popover 的内容\n\nimport { componentCls } from '@/constant';\nimport { classnames } from '@/utils';\nimport React from 'react';\nimport { IStepInfo } from '@/types/step';\nimport { useTranslation } from 'react-i18next';\ninterface IProps {\n stepList: IStepInfo[];\n currentStep: number;\n updateStep: (step: number) => void;\n}\n\nconst AnnotationStepPopover = (props: IProps) => {\n const { t } = useTranslation();\n const { stepList, updateStep, currentStep } = props;\n\n return (\n <div className={`${componentCls}__annotationStepPopover`}>\n {stepList.map((info) => {\n const isSelected = info.step === currentStep;\n\n return (\n <div\n key={`stepList${info.step}`}\n className={classnames({\n step: true,\n })}\n onClick={() => {\n if (currentStep && !isSelected) {\n updateStep(info.step);\n }\n }}\n >\n <div\n className={classnames({\n name: true,\n highlight: isSelected,\n })}\n >\n {`${info.step} - ${info.name || t(info.tool)}`}\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default AnnotationStepPopover;\n"],"names":[],"mappings":";;;;;AAaM,MAAA,qBAAA,GAAwB,CAAC,KAAkB,KAAA;AAC/C,EAAA,MAAM,CAAE,CAAM,CAAA,GAAA,cAAA,EAAA,CAAA;AACd,EAAM,MAAA,CAAE,QAAU,EAAA,UAAA,EAAY,WAAgB,CAAA,GAAA,KAAA,CAAA;AAE9C,EAAA,2CACG,KAAD,EAAA;AAAA,IAAK,WAAW,CAAG,EAAA,YAAA,CAAA,uBAAA,CAAA;AAAA,GAChB,EAAA,QAAA,CAAS,GAAI,CAAA,CAAC,IAAS,KAAA;AACtB,IAAM,MAAA,UAAA,GAAa,KAAK,IAAS,KAAA,WAAA,CAAA;AAEjC,IAAA,2CACG,KAAD,EAAA;AAAA,MACE,GAAA,EAAK,WAAW,IAAK,CAAA,IAAA,CAAA,CAAA;AAAA,MACrB,WAAW,UAAW,CAAA;AAAA,QACpB,IAAM,EAAA,IAAA;AAAA,OAAA,CAAA;AAAA,MAER,SAAS,MAAM;AACb,QAAI,IAAA,WAAA,IAAe,CAAC,UAAY,EAAA;AAC9B,UAAA,UAAA,CAAW,IAAK,CAAA,IAAA,CAAA,CAAA;AAAA,SAAA;AAAA,OAAA;AAAA,KAAA,sCAInB,KAAD,EAAA;AAAA,MACE,WAAW,UAAW,CAAA;AAAA,QACpB,IAAM,EAAA,IAAA;AAAA,QACN,SAAW,EAAA,UAAA;AAAA,OAAA,CAAA;AAAA,KAAA,EAGZ,GAAG,IAAK,CAAA,IAAA,CAAA,GAAA,EAAU,IAAK,CAAA,IAAA,IAAQ,EAAE,IAAK,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/attributeList/index.tsx"],"sourcesContent":["import { COLORS_ARRAY, NULL_COLOR } from '@/data/Style';\nimport { ColorTag } from '@/components/colorTag';\nimport { Radio } from 'antd/es';\nimport React from 'react';\n\nexport const ATTRIBUTE_COLORS = [NULL_COLOR].concat(COLORS_ARRAY);\n\ninterface IProps {\n list: Array<{\n label: string;\n value: string;\n color?: string;\n }>;\n selectedAttribute?: string;\n attributeChanged: (v: string) => void;\n forbidDefault?: boolean;\n forbidColor?: boolean;\n noHeightLimit?: boolean;\n num?: number | string;\n style?: React.CSSProperties;\n}\n\nconst AttributeList = React.forwardRef((props: IProps, ref) => {\n const radioRef = React.useRef<any>();\n\n const list = props.list || [];\n\n let NEW_ATTRIBUTE_COLORS = [...ATTRIBUTE_COLORS];\n\n // 去除默认的颜色\n if (props.forbidDefault === true) {\n NEW_ATTRIBUTE_COLORS = NEW_ATTRIBUTE_COLORS.slice(1);\n }\n\n let className = 'sensebee-radio-group';\n if (props.noHeightLimit) {\n className = 'sensebee-radio-group-no-limit-height';\n }\n\n return (\n <div className={className} style={props.style}>\n <Radio.Group\n name='radiogroup'\n defaultValue={props?.selectedAttribute}\n value={props?.selectedAttribute}\n onChange={(e) => props.attributeChanged(e.target.value)}\n ref={ref as any}\n >\n {list.map((i: any, index: number) => {\n let hotKey: number | string = props?.num ?? index;\n\n if (props.forbidDefault === true && typeof hotKey === 'number') {\n // 禁止 default 将从 1 开始\n hotKey++;\n }\n\n // 超出范围无法展示\n if (!(typeof hotKey === 'number' && hotKey <= 9 && hotKey >= 0)) {\n hotKey = '-';\n }\n\n let color =\n index > 8 && !props.forbidDefault\n ? COLORS_ARRAY[(index - 1) % COLORS_ARRAY.length]\n : NEW_ATTRIBUTE_COLORS[index % NEW_ATTRIBUTE_COLORS.length];\n\n if (i?.color) {\n color = i.color;\n }\n\n return (\n <Radio value={i.value} ref={radioRef} key={index}>\n <span className='sensebee-radio-label' title={i.label}>\n {!props?.forbidColor && <ColorTag color={color} style={{ marginRight: '8px' }} />}\n {i.label}\n </span>\n <span className='sensebee-radio-num'>{hotKey}</span>\n </Radio>\n );\n })}\n </Radio.Group>\n </div>\n );\n});\n\nexport default AttributeList;\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/checkboxList/index.tsx"],"sourcesContent":["import { Checkbox } from 'antd/es';\nimport React from 'react';\n\ninterface IProps {\n selectedAttribute: string[];\n attributeChanged: () => void;\n num?: any;\n list?: any[];\n}\n\nconst CheckboxList = (props: IProps) => {\n const checkboxRef = React.useRef<any>(null);\n const list = props.list || [];\n return (\n <div className=\"sensebee-checkbox-group\">\n <Checkbox.Group\n name=\"checkboxgroup\"\n // defaultValue={props.selectedAttribute}\n value={props.selectedAttribute}\n onChange={() => props.attributeChanged()}\n >\n {list.map((i: any, index: number) => (\n // @ts-ignore\n <Checkbox value={i.value} ref={checkboxRef} onFocus={() => {\n checkboxRef?.current?.blur();\n }}\n key={index}\n >\n <span className=\"sensebee-checkbox-label\" title={i.label}>\n {i.label}\n </span>\n <span className=\"sensebee-checkbox-num\">{props?.num ?? index}</span>\n </Checkbox>\n ))}\n </Checkbox.Group>\n </div>\n );\n};\n\nexport default CheckboxList;\n"],"names":[],"mappings":";;;AAUM,MAAA,YAAA,GAAe,CAAC,KAAkB,KAAA;AACtC,EAAM,MAAA,WAAA,GAAc,MAAM,MAAY,CAAA,IAAA,CAAA,CAAA;AACtC,EAAM,MAAA,IAAA,GAAO,MAAM,IAAQ,IAAA,EAAA,CAAA;AAC3B,EAAA,2CACG,KAAD,EAAA;AAAA,IAAK,SAAU,EAAA,yBAAA;AAAA,GACb,kBAAA,KAAA,CAAA,aAAA,CAAC,SAAS,KAAV,EAAA;AAAA,IACE,IAAK,EAAA,eAAA;AAAA,IAEL,OAAO,KAAM,CAAA,iBAAA;AAAA,IACb,QAAA,EAAU,MAAM,KAAM,CAAA,gBAAA,EAAA;AAAA,GAAA,EAErB,IAAK,CAAA,GAAA,CAAI,CAAC,CAAA,EAAQ,KAAe,KAAA;AArB1C,IAAA,IAAA,EAAA,CAAA;AAuBU,IAAA,uBAAA,KAAA,CAAA,aAAA,CAAC,QAAD,EAAA;AAAA,MAAU,OAAO,CAAE,CAAA,KAAA;AAAA,MAAO,GAAK,EAAA,WAAA;AAAA,MAAa,SAAS,MAAM;AAvBrE,QAAA,IAAA,GAAA,CAAA;AAwBc,QAAA,CAAA,GAAA,GAAA,WAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAa,YAAb,IAAsB,GAAA,KAAA,CAAA,GAAA,GAAA,CAAA,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,MAExB,GAAK,EAAA,KAAA;AAAA,KAAA,sCAEJ,MAAD,EAAA;AAAA,MAAM,SAAU,EAAA,yBAAA;AAAA,MAA0B,OAAO,CAAE,CAAA,KAAA;AAAA,KAChD,EAAA,CAAA,CAAE,KAEL,CAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,MAAD,EAAA;AAAA,MAAM,SAAU,EAAA,uBAAA;AAAA,KAAyB,EAAA,CAAA,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,QAAP,IAAc,GAAA,EAAA,GAAA,KAAA,CAAA,CAAA,CAAA;AAAA,GAAA,CAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/colorTag/index.tsx"],"sourcesContent":["import React from 'react';\n\nexport const ColorTag = ({ color, style }: any) => (\n <div\n style={{\n display: 'inline-block',\n height: 14,\n width: 14,\n backgroundColor: color,\n verticalAlign: 'middle',\n ...style,\n }}\n />\n);\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAEO,MAAM,WAAW,CAAC,CAAE,KAAO,EAAA,KAAA,CAAA,yCAC/B,KAAD,EAAA;AAAA,EACE,KAAO,EAAA,cAAA,CAAA;AAAA,IACL,OAAS,EAAA,cAAA;AAAA,IACT,MAAQ,EAAA,EAAA;AAAA,IACR,KAAO,EAAA,EAAA;AAAA,IACP,eAAiB,EAAA,KAAA;AAAA,IACjB,aAAe,EAAA,QAAA;AAAA,GACZ,EAAA,KAAA,CAAA;AAAA,CAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/customAntd/IconWithText/index.tsx"],"sourcesContent":["import { componentCls } from '@/constant';\nimport React from 'react';\n\ninterface IProps {\n text: string; // icon 文本\n Icon: any;\n iconChildren: React.ReactNode;\n marginLeft?: number;\n}\n\nconst IconWithText = (props: IProps) => {\n const { Icon, text, iconChildren, ...otherProps } = props;\n\n const marginLeft = props.marginLeft === undefined ? 30 : props.marginLeft;\n\n return (\n <div {...otherProps} className={componentCls} >\n <div className={`${componentCls}__iconWithText`} style={{ marginLeft }}>\n <div className='iconGroup'>\n <Icon className='icon' />\n {iconChildren}\n </div>\n\n <span className='name'>{text}</span>\n </div>\n </div>\n );\n};\n\nexport default IconWithText;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUM,MAAA,YAAA,GAAe,CAAC,KAAkB,KAAA;AACtC,EAAoD,MAAA,EAAA,GAAA,KAAA,EAA5C,OAAM,IAAM,EAAA,YAAA,CAAA,GAAgC,IAAf,UAAe,GAAA,SAAA,CAAA,EAAA,EAAf,CAA7B,MAAA,EAAM,MAAM,EAAA,cAAA,CAAA,CAAA,CAAA;AAEpB,EAAA,MAAM,UAAa,GAAA,KAAA,CAAM,UAAe,KAAA,KAAA,CAAA,GAAY,KAAK,KAAM,CAAA,UAAA,CAAA;AAE/D,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EAAS,UAAT,CAAA,EAAA;AAAA,IAAqB,SAAW,EAAA,YAAA;AAAA,GAAA,CAAA,sCAC7B,KAAD,EAAA;AAAA,IAAK,WAAW,CAAG,EAAA,YAAA,CAAA,cAAA,CAAA;AAAA,IAA8B,OAAO,CAAE,UAAA,CAAA;AAAA,GAAA,sCACvD,KAAD,EAAA;AAAA,IAAK,SAAU,EAAA,WAAA;AAAA,GAAA,sCACZ,IAAD,EAAA;AAAA,IAAM,SAAU,EAAA,MAAA;AAAA,GACf,CAAA,EAAA,YAAA,CAAA,sCAGF,MAAD,EAAA;AAAA,IAAM,SAAU,EAAA,MAAA;AAAA,GAAQ,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/customResizeHook/index.tsx"],"sourcesContent":["import {\n editStepWidth,\n footerHeight,\n headerHeight,\n sidebarWidth,\n} from '@/data/enums/AnnotationSize';\nimport { cKeyCode, toolUtils } from '@labelbee/lb-annotation';\n\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { AppState } from '@/store';\nimport {\n UpdateRotate,\n PageBackward,\n PageForward,\n UpdateToolInstance,\n CopyBackWordResult,\n // UpdateValid,\n} from '@/store/annotation/actionCreators';\nimport { ISize } from '@/types/main';\nimport { message } from 'antd';\nimport { LabelBeeContext } from '@/store/ctx';\n\nconst EKeyCode = cKeyCode.default;\n\nexport const viewportContext = React.createContext<{\n width: number;\n height: number;\n}>({\n width: window.innerWidth,\n height: window.innerHeight,\n});\n\nexport const ViewportProviderComponent = (props: any) => {\n const {\n children,\n dispatch,\n annotation: { skipBeforePageTurning, checkMode },\n } = props;\n const [width] = useState(window.innerWidth);\n const [height] = useState(window.innerHeight);\n\n const keydown = (e: KeyboardEvent) => {\n if (!toolUtils.hotkeyFilter(e) || checkMode) {\n return;\n }\n\n if (!e.shiftKey && !e.ctrlKey) {\n if (e.keyCode === EKeyCode.A) {\n if (skipBeforePageTurning) {\n skipBeforePageTurning(() => dispatch(PageBackward()));\n return;\n }\n\n dispatch(PageBackward());\n }\n\n if (e.keyCode === EKeyCode.D) {\n if (skipBeforePageTurning) {\n skipBeforePageTurning(() => dispatch(PageForward()));\n return;\n }\n dispatch(PageForward());\n }\n if (e.keyCode === EKeyCode.R) {\n dispatch(UpdateRotate());\n }\n\n if (e.keyCode === EKeyCode.C && e.altKey === true) {\n dispatch(CopyBackWordResult());\n }\n\n // Temporarily hide. Because there is something wrong with i18n.\n // if (e.keyCode === EKeyCode.Y) {\n // dispatch(UpdateValid());\n // }\n }\n\n /**\n * Hidden Feature\n *\n * User: Software Engineer\n */\n if (\n e.shiftKey === true &&\n e.ctrlKey === true &&\n e.altKey === true &&\n e.keyCode === EKeyCode.C\n ) {\n message.success('DEVELOPMENT TESTING - Switch Last Two Canvas');\n const newInstance = props.annotation?.annotationEngine.switchLastTwoCanvas();\n if (!newInstance) {\n return;\n }\n dispatch(UpdateToolInstance(newInstance));\n }\n };\n\n useEffect(() => {\n window.addEventListener('keydown', keydown);\n\n return () => {\n window.removeEventListener('keydown', keydown);\n };\n }, [props.annotation.annotationEngine, props.annotation.skipBeforePageTurning, checkMode]);\n\n const size = useMemo(() => ({ width, height }), [width, height]);\n\n return <viewportContext.Provider value={size}>{children}</viewportContext.Provider>;\n};\nexport const ViewportProvider = connect(\n (state: AppState) => ({\n annotation: state.annotation,\n }),\n null,\n null,\n { context: LabelBeeContext },\n)(ViewportProviderComponent);\n\nexport const useViewport = () => {\n const { width, height } = useContext(viewportContext);\n return { width, height };\n};\n\n/**\n * 获取当前 canvas 的大小\n * @param isEdit 是否为编辑模式\n * @param isTips 是否有 tips\n */\nexport const useCanvasViewPort = (isEdit = false, isTips = false) => {\n const { width, height } = useContext(viewportContext);\n const otherHeight = headerHeight + footerHeight;\n const placeholderHeight = isTips ? 40 + otherHeight + 40 : otherHeight;\n const placeholderWidth = isEdit ? editStepWidth + sidebarWidth : sidebarWidth;\n\n return {\n width: width - placeholderWidth,\n height: height - placeholderHeight,\n };\n};\n\n/**\n * 解析当前 windowSize 下的 canvasSize\n * @param size\n * @param isEdit\n * @param isTips\n */\nexport const getFormatSize = (windowSize: ISize, isEdit = false, isTips = false) => {\n const { width, height } = windowSize;\n const otherHeight = headerHeight + footerHeight;\n const placeholderHeight = isTips ? 40 + otherHeight + 40 : otherHeight;\n const placeholderWidth = isEdit ? editStepWidth + sidebarWidth : sidebarWidth;\n\n return {\n width: width - placeholderWidth,\n height: height - placeholderHeight,\n };\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FileError.js","sources":["../../../src/components/fileException/FileError.tsx"],"sourcesContent":["import { ReloadOutlined } from '@ant-design/icons';\nimport { Button } from 'antd/es';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nexport interface IFileErrorProps {\n width?: number;\n height?: number;\n reloadImage: () => void;\n hideSetInvalidTips?: boolean;\n /** 忽略顶部的偏移,如: 多边形的容器已经计算好高度(容器不包含顶部标注提示语部分) */\n ignoreOffsetY?: boolean;\n layerStyle?: React.CSSProperties;\n backgroundColor: string;\n fileType?: string;\n isError?: boolean;\n}\n\nconst FileError = (props: IFileErrorProps) => {\n const {\n width,\n height,\n reloadImage,\n hideSetInvalidTips,\n ignoreOffsetY,\n backgroundColor,\n fileType = 'image',\n } = props;\n\n const { t } = useTranslation();\n\n const top = !ignoreOffsetY ? 40 : 0;\n\n const layerStyle: React.CSSProperties = props.layerStyle || {\n position: 'absolute',\n left: 0,\n top,\n cursor: 'initial',\n zIndex: 20,\n fontSize: 12,\n };\n if (width && height) {\n Object.assign(layerStyle, { width, height });\n } else {\n Object.assign(layerStyle, { bottom: 0, right: 0 });\n }\n\n if (backgroundColor) {\n Object.assign(layerStyle, { backgroundColor });\n }\n\n const buttonStyle: React.CSSProperties = {\n position: 'absolute',\n top: '30%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n };\n\n return (\n <div style={layerStyle}>\n <div style={buttonStyle}>\n <div style={{ textAlign: 'center', marginBottom: 10 }}>\n <Button type='primary' shape='circle' icon={<ReloadOutlined />} onClick={reloadImage} />\n </div>\n <div>\n {`${t(`${fileType}ErrorAndReload`)}${hideSetInvalidTips ? '' : t('orMaskAsInvalid')}`}\n </div>\n </div>\n </div>\n );\n};\n\nexport default FileError;\n"],"names":[],"mappings":";;;;;AAkBM,MAAA,SAAA,GAAY,CAAC,KAA2B,KAAA;AAC5C,EAAM,MAAA;AAAA,IACJ,KAAA;AAAA,IACA,MAAA;AAAA,IACA,WAAA;AAAA,IACA,kBAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA,QAAW,GAAA,OAAA;AAAA,GACT,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,CAAE,CAAM,CAAA,GAAA,cAAA,EAAA,CAAA;AAEd,EAAM,MAAA,GAAA,GAAM,CAAC,aAAA,GAAgB,EAAK,GAAA,CAAA,CAAA;AAElC,EAAM,MAAA,UAAA,GAAkC,MAAM,UAAc,IAAA;AAAA,IAC1D,QAAU,EAAA,UAAA;AAAA,IACV,IAAM,EAAA,CAAA;AAAA,IACN,GAAA;AAAA,IACA,MAAQ,EAAA,SAAA;AAAA,IACR,MAAQ,EAAA,EAAA;AAAA,IACR,QAAU,EAAA,EAAA;AAAA,GAAA,CAAA;AAEZ,EAAA,IAAI,SAAS,MAAQ,EAAA;AACnB,IAAO,MAAA,CAAA,MAAA,CAAO,UAAY,EAAA,CAAE,KAAO,EAAA,MAAA,CAAA,CAAA,CAAA;AAAA,GAC9B,MAAA;AACL,IAAA,MAAA,CAAO,MAAO,CAAA,UAAA,EAAY,CAAE,MAAA,EAAQ,GAAG,KAAO,EAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAGhD,EAAA,IAAI,eAAiB,EAAA;AACnB,IAAO,MAAA,CAAA,MAAA,CAAO,YAAY,CAAE,eAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAG9B,EAAA,MAAM,WAAmC,GAAA;AAAA,IACvC,QAAU,EAAA,UAAA;AAAA,IACV,GAAK,EAAA,KAAA;AAAA,IACL,IAAM,EAAA,KAAA;AAAA,IACN,SAAW,EAAA,uBAAA;AAAA,GAAA,CAAA;AAGb,EAAA,2CACG,KAAD,EAAA;AAAA,IAAK,KAAO,EAAA,UAAA;AAAA,GAAA,sCACT,KAAD,EAAA;AAAA,IAAK,KAAO,EAAA,WAAA;AAAA,GAAA,sCACT,KAAD,EAAA;AAAA,IAAK,KAAO,EAAA,CAAE,SAAW,EAAA,QAAA,EAAU,YAAc,EAAA,EAAA,CAAA;AAAA,GAAA,sCAC9C,MAAD,EAAA;AAAA,IAAQ,IAAK,EAAA,SAAA;AAAA,IAAU,KAAM,EAAA,QAAA;AAAA,IAAS,IAAA,sCAAO,cAAD,EAAA,IAAA,CAAA;AAAA,IAAoB,OAAS,EAAA,WAAA;AAAA,GAE3E,CAAA,CAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,OAAD,IACG,EAAA,CAAA,EAAG,EAAE,CAAG,EAAA,QAAA,CAAA,cAAA,CAAA,CAAA,CAAA,EAA4B,kBAAqB,GAAA,EAAA,GAAK,CAAE,CAAA,iBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FileInvalid.js","sources":["../../../src/components/fileException/FileInvalid.tsx"],"sourcesContent":["/**\n * @author Glenfiddish <edwinlee0927@hotmail.com>\n * @file File invalid layer, display while isValid equal false\n * @date 2022-06-07\n */\n\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nexport interface IFileInvalidProps {\n fileType?: string;\n isValid: boolean;\n}\n\nconst FileInvalid: React.FC<IFileInvalidProps> = ({ fileType = 'image', isValid }) => {\n const { t } = useTranslation();\n\n if (isValid) {\n return null;\n }\n\n return (\n <div\n style={{\n position: 'absolute',\n inset: 0,\n color: 'white',\n display: 'flex',\n alignItems: 'center',\n fontSize: 30,\n opacity: 0.7,\n background: 'rgba(255, 87, 34, 1)',\n justifyContent: 'center',\n }}\n >\n {t(`${fileType}InvalidAndSkip`)}\n </div>\n );\n};\n\nexport default FileInvalid;\n"],"names":[],"mappings":";;;AAcA,MAAM,WAA2C,GAAA,CAAC,CAAE,QAAA,GAAW,SAAS,OAAc,CAAA,KAAA;AACpF,EAAA,MAAM,CAAE,CAAM,CAAA,GAAA,cAAA,EAAA,CAAA;AAEd,EAAA,IAAI,OAAS,EAAA;AACX,IAAO,OAAA,IAAA,CAAA;AAAA,GAAA;AAGT,EAAA,2CACG,KAAD,EAAA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,QAAU,EAAA,UAAA;AAAA,MACV,KAAO,EAAA,CAAA;AAAA,MACP,KAAO,EAAA,OAAA;AAAA,MACP,OAAS,EAAA,MAAA;AAAA,MACT,UAAY,EAAA,QAAA;AAAA,MACZ,QAAU,EAAA,EAAA;AAAA,MACV,OAAS,EAAA,GAAA;AAAA,MACT,UAAY,EAAA,sBAAA;AAAA,MACZ,cAAgB,EAAA,QAAA;AAAA,KAAA;AAAA,GAAA,EAGjB,EAAE,CAAG,EAAA,QAAA,CAAA,cAAA,CAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/fileException/index.tsx"],"sourcesContent":["/**\n * @author Glenfiddish <edwinlee0927@hotmail.com>\n * @file File exception layer, determine whether to render FileInvalid or FileError\n * @date 2022-06-07\n */\n\nimport React from 'react';\nimport FileError, { IFileErrorProps } from './FileError';\nimport FileInvalid, { IFileInvalidProps } from './FileInvalid';\n\ninterface IFileExceptionProps {\n errorProps: IFileErrorProps & { isError: boolean };\n invalidProps: IFileInvalidProps;\n fileType: string;\n}\n\nconst FileException: React.FC<IFileExceptionProps> = ({ invalidProps, errorProps, fileType }) => {\n if (!invalidProps.isValid) {\n return <FileInvalid {...{ fileType, ...invalidProps }} />;\n }\n\n if (errorProps.isError) {\n return <FileError {...{ fileType, ...errorProps }} />;\n }\n return null;\n};\n\nexport default FileException;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAgBA,MAAM,aAA+C,GAAA,CAAC,CAAE,YAAA,EAAc,YAAY,QAAe,CAAA,KAAA;AAC/F,EAAI,IAAA,CAAC,aAAa,OAAS,EAAA;AACzB,IAAA,uBAAQ,KAAA,CAAA,aAAA,CAAA,WAAA,EAAD,cAAiB,CAAA,EAAA,EAAA,cAAA,CAAA,CAAE,QAAa,CAAA,EAAA,YAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAGzC,EAAA,IAAI,WAAW,OAAS,EAAA;AACtB,IAAA,uBAAQ,KAAA,CAAA,aAAA,CAAA,SAAA,EAAD,cAAe,CAAA,EAAA,EAAA,cAAA,CAAA,CAAE,QAAa,CAAA,EAAA,UAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAEvC,EAAO,OAAA,IAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PointCloud2DView.js","sources":["../../../src/components/pointCloudView/PointCloud2DView.tsx"],"sourcesContent":["import { getClassName } from '@/utils/dom';\nimport React, { useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { PointCloudContainer } from './PointCloudLayout';\nimport AnnotationView from '@/components/AnnotationView';\nimport { PointCloudContext } from './PointCloudContext';\nimport { connect } from 'react-redux';\nimport { LeftOutlined, RightOutlined } from '@ant-design/icons';\nimport useSize from '@/hooks/useSize';\nimport { useSingleBox } from './hooks/useSingleBox';\nimport { ViewOperation, pointCloudLidar2image } from '@labelbee/lb-annotation';\nimport { useTranslation } from 'react-i18next';\nimport { LabelBeeContext } from '@/store/ctx';\nimport { a2MapStateToProps, IA2MapStateProps } from '@/store/annotation/map';\nimport { toolStyleConverter } from '@labelbee/lb-utils';\n\nconst Toolbar = ({\n onNext,\n onPrev,\n imgLength,\n imgIndex,\n}: {\n onNext: () => void;\n onPrev: () => void;\n imgLength: number;\n imgIndex: number;\n}) => {\n return (\n <div>\n <LeftOutlined onClick={onPrev} />\n <span>\n {' '}\n {imgIndex + 1} / {imgLength}{' '}\n </span>\n\n <RightOutlined onClick={onNext} />\n </div>\n );\n};\n\n// TODO, It will be deleted when the exported type of lb-annotation is work.\ninterface IAnnotationDataTemporarily {\n type: string;\n annotation: any;\n}\n\nconst PointCloud2DView = ({ currentData, config }: IA2MapStateProps) => {\n const [annotations2d, setAnnotations2d] = useState<IAnnotationDataTemporarily[]>([]);\n const { topViewInstance, displayPointCloudList } = useContext(PointCloudContext);\n const [mappingIndex, setMappingIndex] = useState(0);\n const ref = useRef(null);\n const viewRef = useRef<{ toolInstance: ViewOperation }>();\n const { selectedBox } = useSingleBox();\n const size = useSize(ref);\n const { t } = useTranslation();\n\n const mappingData = currentData?.mappingImgList?.[mappingIndex];\n\n useEffect(() => {\n setMappingIndex(0);\n }, [currentData]);\n\n useEffect(() => {\n if (topViewInstance && mappingData) {\n const defaultViewStyle = {\n fill: 'transparent',\n color: 'green',\n };\n\n const newAnnotations2d: IAnnotationDataTemporarily[] = displayPointCloudList.reduce(\n (acc: IAnnotationDataTemporarily[], pointCloudBox) => {\n const viewDataPointList = pointCloudLidar2image(pointCloudBox, mappingData.calib);\n\n const stroke = toolStyleConverter.getColorFromConfig(\n { attribute: pointCloudBox.attribute },\n {\n ...config,\n attributeConfigurable: true,\n },\n {},\n )?.stroke;\n\n return [\n ...acc,\n ...viewDataPointList.map((v: any) => {\n return {\n type: v.type,\n annotation: {\n id: pointCloudBox.id,\n pointList: v.pointList,\n ...defaultViewStyle,\n stroke,\n },\n };\n }),\n ];\n },\n [],\n );\n\n setAnnotations2d(newAnnotations2d);\n }\n }, [displayPointCloudList, mappingData]);\n\n const hiddenData =\n !currentData || !currentData?.mappingImgList || !(currentData?.mappingImgList?.length > 0);\n\n const afterImgOnLoad = useCallback(() => {\n const toolInstance = viewRef.current?.toolInstance;\n\n if (!selectedBox || !toolInstance) {\n return;\n }\n const selected2data = annotations2d.find((v) => v.annotation.id === selectedBox.info.id);\n\n if (selected2data?.annotation.pointList?.length > 0) {\n toolInstance.focusPositionByPointList(selected2data?.annotation.pointList);\n }\n }, [selectedBox, viewRef.current, annotations2d, mappingIndex]);\n\n /**\n * If the status is updated, it needs to\n */\n useEffect(() => {\n afterImgOnLoad();\n }, [afterImgOnLoad]);\n\n return (\n <PointCloudContainer\n className={getClassName('point-cloud-2d-container')}\n title={t('2DView')}\n toolbar={\n hiddenData ? undefined : (\n <Toolbar\n imgIndex={mappingIndex}\n imgLength={currentData.mappingImgList?.length ?? 0}\n onNext={() => {\n if (!currentData || !currentData?.mappingImgList) {\n return;\n }\n\n if (mappingIndex >= currentData?.mappingImgList?.length - 1) {\n return;\n }\n setMappingIndex((v) => v + 1);\n }}\n onPrev={() => {\n if (mappingIndex <= 0) {\n return;\n }\n setMappingIndex((v) => v - 1);\n }}\n />\n )\n }\n style={{ display: hiddenData ? 'none' : 'flex' }}\n >\n <div className={getClassName('point-cloud-2d-image')} ref={ref}>\n <AnnotationView\n src={mappingData?.url ?? ''}\n annotations={annotations2d}\n size={size}\n ref={viewRef}\n globalStyle={{ display: hiddenData ? 'none' : 'block' }}\n afterImgOnLoad={afterImgOnLoad}\n />\n </div>\n </PointCloudContainer>\n );\n};\n\nexport default connect(a2MapStateToProps, null, null, { context: LabelBeeContext })(\n PointCloud2DView,\n);\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PointCloud3DView.js","sources":["../../../src/components/pointCloudView/PointCloud3DView.tsx"],"sourcesContent":["/*\n * @Author: Laoluo luozefeng@sensetime.com\n * @Date: 2022-06-13 19:31:36\n * @LastEditors: Laoluo luozefeng@sensetime.com\n * @LastEditTime: 2022-06-27 19:43:25\n */\n\nimport { getClassName } from '@/utils/dom';\nimport { PointCloud } from '@labelbee/lb-annotation';\nimport {\n EPerspectiveView,\n IPointCloudBox,\n PointCloudUtils,\n toolStyleConverter,\n} from '@labelbee/lb-utils';\nimport classNames from 'classnames';\nimport React, { useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { PointCloudContainer } from './PointCloudLayout';\nimport { PointCloudContext } from './PointCloudContext';\nimport { a2MapStateToProps, IA2MapStateProps } from '@/store/annotation/map';\nimport { connect } from 'react-redux';\nimport { jsonParser } from '@/utils';\nimport { useSingleBox } from './hooks/useSingleBox';\nimport { Switch, Tooltip } from 'antd';\nimport useSize from '@/hooks/useSize';\nimport { usePointCloudViews } from './hooks/usePointCloudViews';\nimport { useTranslation } from 'react-i18next';\nimport { LabelBeeContext } from '@/store/ctx';\n\nconst pointCloudID = 'LABELBEE-POINTCLOUD';\nconst PointCloud3DContext = React.createContext<{\n isActive: boolean;\n setTarget3DView: (perspectiveView: EPerspectiveView) => void;\n reset3DView: () => void;\n followTopView: () => void;\n}>({\n isActive: false,\n setTarget3DView: () => {},\n reset3DView: () => {},\n followTopView: () => {},\n});\n\nconst PointCloudViewIcon = ({\n perspectiveView,\n}: {\n perspectiveView: keyof typeof EPerspectiveView;\n}) => {\n const { isActive, setTarget3DView } = useContext(PointCloud3DContext);\n\n const getTarget3DViewClassName = (position: string) => {\n return classNames({\n [getClassName('point-cloud-3d-view', position)]: true,\n active: isActive,\n });\n };\n\n return (\n <span\n onClick={() => {\n setTarget3DView(EPerspectiveView[perspectiveView]);\n }}\n className={getTarget3DViewClassName(perspectiveView.toLocaleLowerCase())}\n />\n );\n};\n\nconst PointCloud3DSideBar = () => {\n const { reset3DView, followTopView } = useContext(PointCloud3DContext);\n const { t } = useTranslation();\n return (\n <div className={getClassName('point-cloud-3d-sidebar')}>\n <PointCloudViewIcon perspectiveView='Top' />\n <PointCloudViewIcon perspectiveView='Front' />\n <PointCloudViewIcon perspectiveView='Left' />\n <PointCloudViewIcon perspectiveView='Back' />\n <PointCloudViewIcon perspectiveView='Right' />\n <PointCloudViewIcon perspectiveView='LFT' />\n <PointCloudViewIcon perspectiveView='RBT' />\n\n <Tooltip title={t('CameraFollowTopView')}>\n <span\n onClick={() => {\n followTopView();\n }}\n className={getClassName('point-cloud-3d-view', 'followTop')}\n />\n </Tooltip>\n\n <span\n onClick={() => {\n reset3DView();\n }}\n className={getClassName('point-cloud-3d-view', 'reset')}\n />\n </div>\n );\n};\n\nconst PointCloud3D: React.FC<IA2MapStateProps> = ({ currentData, config }) => {\n const ptCtx = useContext(PointCloudContext);\n const [showDirection, setShowDirection] = useState(true);\n const ref = useRef<HTMLDivElement>(null);\n const { initPointCloud3d } = usePointCloudViews();\n const size = useSize(ref);\n const { t } = useTranslation();\n\n useEffect(() => {\n if (!ptCtx.mainViewInstance) {\n return;\n }\n initPointCloud3d?.(size);\n }, [size]);\n const { selectedBox } = useSingleBox();\n\n const setTarget3DView = (perspectiveView: EPerspectiveView) => {\n const box = selectedBox?.info;\n\n if (box) {\n ptCtx.mainViewInstance?.updateCameraByBox(box, perspectiveView);\n }\n };\n\n const reset3DView = () => {\n ptCtx.mainViewInstance?.resetCamera();\n };\n\n const followTopView = () => {\n const topViewCamera = ptCtx.topViewInstance?.pointCloudInstance.camera;\n if (topViewCamera) {\n ptCtx.mainViewInstance?.applyCameraTarget(topViewCamera);\n }\n };\n\n useEffect(() => {\n if (ref.current && currentData?.url) {\n let pointCloud = ptCtx.mainViewInstance;\n if (!pointCloud && size.width) {\n const orthographicParams = {\n left: -size.width / 2,\n right: size.width / 2,\n top: size.height / 2,\n bottom: -size.height / 2,\n near: 100,\n far: -100,\n };\n\n // Need to be showed\n pointCloud = new PointCloud({\n container: ref.current,\n isOrthographicCamera: true,\n orthographicParams,\n config,\n });\n ptCtx.setMainViewInstance(pointCloud);\n }\n }\n }, [size]);\n\n /**\n * Listen for data changes.\n */\n useEffect(() => {\n if (ref.current && currentData?.url) {\n if (currentData.result && ptCtx.mainViewInstance) {\n let pointCloud = ptCtx.mainViewInstance;\n const boxParamsList = PointCloudUtils.getBoxParamsFromResultList(currentData.result);\n\n // Add Init Box\n boxParamsList.forEach((v: IPointCloudBox) => {\n const hex = toolStyleConverter.getColorFromConfig(\n { attribute: v.attribute },\n { ...config, attributeConfigurable: true },\n {},\n )?.hex;\n\n pointCloud?.generateBox(v, hex);\n });\n\n ptCtx.setPointCloudResult(boxParamsList);\n ptCtx.setPointCloudValid(jsonParser(currentData.result)?.valid);\n }\n }\n }, [currentData, ptCtx.mainViewInstance]);\n\n /**\n * Observe selectedID and reset camera to target top-view\n */\n useEffect(() => {\n if (selectedBox) {\n setTarget3DView(EPerspectiveView.Top);\n\n /**\n * 3DView's zoom synchronizes with topView' zoom.\n */\n const zoom = ptCtx.topViewInstance?.pointCloudInstance?.camera.zoom ?? 1;\n ptCtx.mainViewInstance?.updateCameraZoom(zoom);\n }\n }, [selectedBox]);\n\n const ptCloud3DCtx = useMemo(() => {\n return { reset3DView, setTarget3DView, isActive: !!selectedBox, followTopView };\n }, [selectedBox, ptCtx.mainViewInstance]);\n\n const PointCloud3DTitle = (\n <div>\n <span style={{ marginRight: 8 }}>{t('ShowArrows')}</span>\n <Switch\n size='small'\n checked={showDirection}\n onChange={(showDirection) => {\n setShowDirection(showDirection);\n ptCtx.mainViewInstance?.setShowDirection(showDirection);\n }}\n />\n </div>\n );\n\n return (\n <PointCloudContainer\n className={getClassName('point-cloud-3d-container')}\n title={t('3DView')}\n toolbar={PointCloud3DTitle}\n style={{\n height:\n currentData.mappingImgList && currentData.mappingImgList?.length > 0 ? '55%' : '100%',\n }}\n >\n <div className={getClassName('point-cloud-3d-content')}>\n <PointCloud3DContext.Provider value={ptCloud3DCtx}>\n <PointCloud3DSideBar />\n </PointCloud3DContext.Provider>\n <div className={getClassName('point-cloud-3d-view')} id={pointCloudID} ref={ref} />\n </div>\n </PointCloudContainer>\n );\n};\n\nexport default connect(a2MapStateToProps, null, null, { context: LabelBeeContext })(PointCloud3D);\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,MAAM,YAAe,GAAA,qBAAA,CAAA;AACrB,MAAM,mBAAA,GAAsB,MAAM,aAK/B,CAAA;AAAA,EACD,QAAU,EAAA,KAAA;AAAA,EACV,iBAAiB,MAAM;AAAA,GAAA;AAAA,EACvB,aAAa,MAAM;AAAA,GAAA;AAAA,EACnB,eAAe,MAAM;AAAA,GAAA;AAAA,CAAA,CAAA,CAAA;AAGvB,MAAM,qBAAqB,CAAC;AAAA,EAC1B,eAAA;AAAA,CAGI,KAAA;AACJ,EAAM,MAAA,CAAE,QAAU,EAAA,eAAA,CAAA,GAAoB,UAAW,CAAA,mBAAA,CAAA,CAAA;AAEjD,EAAM,MAAA,wBAAA,GAA2B,CAAC,QAAqB,KAAA;AACrD,IAAA,OAAO,UAAW,CAAA;AAAA,MACf,CAAA,YAAA,CAAa,uBAAuB,QAAY,CAAA,GAAA,IAAA;AAAA,MACjD,MAAQ,EAAA,QAAA;AAAA,KAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAIZ,EAAA,2CACG,MAAD,EAAA;AAAA,IACE,SAAS,MAAM;AACb,MAAA,eAAA,CAAgB,gBAAiB,CAAA,eAAA,CAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAEnC,SAAA,EAAW,yBAAyB,eAAgB,CAAA,iBAAA,EAAA,CAAA;AAAA,GAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAK1D,MAAM,sBAAsB,MAAM;AAChC,EAAM,MAAA,CAAE,WAAa,EAAA,aAAA,CAAA,GAAkB,UAAW,CAAA,mBAAA,CAAA,CAAA;AAClD,EAAA,MAAM,CAAE,CAAM,CAAA,GAAA,cAAA,EAAA,CAAA;AACd,EAAA,2CACG,KAAD,EAAA;AAAA,IAAK,WAAW,YAAa,CAAA,wBAAA,CAAA;AAAA,GAAA,sCAC1B,kBAAD,EAAA;AAAA,IAAoB,eAAgB,EAAA,KAAA;AAAA,GAAA,CAAA,sCACnC,kBAAD,EAAA;AAAA,IAAoB,eAAgB,EAAA,OAAA;AAAA,GAAA,CAAA,sCACnC,kBAAD,EAAA;AAAA,IAAoB,eAAgB,EAAA,MAAA;AAAA,GAAA,CAAA,sCACnC,kBAAD,EAAA;AAAA,IAAoB,eAAgB,EAAA,MAAA;AAAA,GAAA,CAAA,sCACnC,kBAAD,EAAA;AAAA,IAAoB,eAAgB,EAAA,OAAA;AAAA,GAAA,CAAA,sCACnC,kBAAD,EAAA;AAAA,IAAoB,eAAgB,EAAA,KAAA;AAAA,GAAA,CAAA,sCACnC,kBAAD,EAAA;AAAA,IAAoB,eAAgB,EAAA,KAAA;AAAA,GAAA,CAAA,sCAEnC,OAAD,EAAA;AAAA,IAAS,OAAO,CAAE,CAAA,qBAAA,CAAA;AAAA,GAAA,sCACf,MAAD,EAAA;AAAA,IACE,SAAS,MAAM;AACb,MAAA,aAAA,EAAA,CAAA;AAAA,KAAA;AAAA,IAEF,SAAA,EAAW,aAAa,qBAAuB,EAAA,WAAA,CAAA;AAAA,GAAA,CAAA,CAAA,sCAIlD,MAAD,EAAA;AAAA,IACE,SAAS,MAAM;AACb,MAAA,WAAA,EAAA,CAAA;AAAA,KAAA;AAAA,IAEF,SAAA,EAAW,aAAa,qBAAuB,EAAA,OAAA,CAAA;AAAA,GAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAMvD,MAAM,YAA2C,GAAA,CAAC,CAAE,WAAA,EAAa,MAAa,CAAA,KAAA;AAlG9E,EAAA,IAAA,EAAA,CAAA;AAmGE,EAAA,MAAM,QAAQ,UAAW,CAAA,iBAAA,CAAA,CAAA;AACzB,EAAM,MAAA,CAAC,aAAe,EAAA,gBAAA,CAAA,GAAoB,QAAS,CAAA,IAAA,CAAA,CAAA;AACnD,EAAA,MAAM,MAAM,MAAuB,CAAA,IAAA,CAAA,CAAA;AACnC,EAAA,MAAM,CAAE,gBAAqB,CAAA,GAAA,kBAAA,EAAA,CAAA;AAC7B,EAAA,MAAM,OAAO,OAAQ,CAAA,GAAA,CAAA,CAAA;AACrB,EAAA,MAAM,CAAE,CAAM,CAAA,GAAA,cAAA,EAAA,CAAA;AAEd,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,CAAC,MAAM,gBAAkB,EAAA;AAC3B,MAAA,OAAA;AAAA,KAAA;AAEF,IAAmB,gBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAA,IAAA,CAAA,CAAA;AAAA,GAAA,EAClB,CAAC,IAAA,CAAA,CAAA,CAAA;AACJ,EAAA,MAAM,CAAE,WAAgB,CAAA,GAAA,YAAA,EAAA,CAAA;AAExB,EAAM,MAAA,eAAA,GAAkB,CAAC,eAAsC,KAAA;AAlHjE,IAAA,IAAA,GAAA,CAAA;AAmHI,IAAA,MAAM,MAAM,WAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAA,IAAA,CAAA;AAEzB,IAAA,IAAI,GAAK,EAAA;AACP,MAAM,CAAA,GAAA,GAAA,KAAA,CAAA,gBAAA,KAAN,IAAwB,GAAA,KAAA,CAAA,GAAA,GAAA,CAAA,iBAAA,CAAkB,GAAK,EAAA,eAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA;AAInD,EAAA,MAAM,cAAc,MAAM;AA1H5B,IAAA,IAAA,GAAA,CAAA;AA2HI,IAAA,CAAA,GAAA,GAAA,KAAA,CAAM,qBAAN,IAAwB,GAAA,KAAA,CAAA,GAAA,GAAA,CAAA,WAAA,EAAA,CAAA;AAAA,GAAA,CAAA;AAG1B,EAAA,MAAM,gBAAgB,MAAM;AA9H9B,IAAA,IAAA,GAAA,EAAA,EAAA,CAAA;AA+HI,IAAA,MAAM,aAAgB,GAAA,CAAA,GAAA,GAAA,KAAA,CAAM,eAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAuB,kBAAmB,CAAA,MAAA,CAAA;AAChE,IAAA,IAAI,aAAe,EAAA;AACjB,MAAM,CAAA,EAAA,GAAA,KAAA,CAAA,gBAAA,KAAN,mBAAwB,iBAAkB,CAAA,aAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA;AAI9C,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,GAAA,CAAI,OAAW,KAAA,WAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAa,GAAK,CAAA,EAAA;AACnC,MAAA,IAAI,aAAa,KAAM,CAAA,gBAAA,CAAA;AACvB,MAAI,IAAA,CAAC,UAAc,IAAA,IAAA,CAAK,KAAO,EAAA;AAC7B,QAAA,MAAM,kBAAqB,GAAA;AAAA,UACzB,IAAA,EAAM,CAAC,IAAA,CAAK,KAAQ,GAAA,CAAA;AAAA,UACpB,KAAA,EAAO,KAAK,KAAQ,GAAA,CAAA;AAAA,UACpB,GAAA,EAAK,KAAK,MAAS,GAAA,CAAA;AAAA,UACnB,MAAA,EAAQ,CAAC,IAAA,CAAK,MAAS,GAAA,CAAA;AAAA,UACvB,IAAM,EAAA,GAAA;AAAA,UACN,GAAK,EAAA,CAAA,GAAA;AAAA,SAAA,CAAA;AAIP,QAAA,UAAA,GAAa,IAAI,UAAW,CAAA;AAAA,UAC1B,WAAW,GAAI,CAAA,OAAA;AAAA,UACf,oBAAsB,EAAA,IAAA;AAAA,UACtB,kBAAA;AAAA,UACA,MAAA;AAAA,SAAA,CAAA,CAAA;AAEF,QAAA,KAAA,CAAM,mBAAoB,CAAA,UAAA,CAAA,CAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GAAA,EAG7B,CAAC,IAAA,CAAA,CAAA,CAAA;AAKJ,EAAA,SAAA,CAAU,MAAM;AAjKlB,IAAA,IAAA,GAAA,CAAA;AAkKI,IAAI,IAAA,GAAA,CAAI,OAAW,KAAA,WAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAa,GAAK,CAAA,EAAA;AACnC,MAAI,IAAA,WAAA,CAAY,MAAU,IAAA,KAAA,CAAM,gBAAkB,EAAA;AAChD,QAAA,IAAI,aAAa,KAAM,CAAA,gBAAA,CAAA;AACvB,QAAM,MAAA,aAAA,GAAgB,eAAgB,CAAA,0BAAA,CAA2B,WAAY,CAAA,MAAA,CAAA,CAAA;AAG7E,QAAc,aAAA,CAAA,OAAA,CAAQ,CAAC,CAAsB,KAAA;AAxKrD,UAAA,IAAA,GAAA,CAAA;AAyKU,UAAA,MAAM,GAAM,GAAA,CAAA,GAAA,GAAA,kBAAA,CAAmB,kBAC7B,CAAA,CAAE,SAAW,EAAA,CAAA,CAAE,SACf,CAAA,EAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EAAK,MAAL,CAAA,EAAA,CAAa,qBAAuB,EAAA,IAAA,CAAA,CAAA,EACpC,QAHU,IAIT,GAAA,KAAA,CAAA,GAAA,GAAA,CAAA,GAAA,CAAA;AAEH,UAAA,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAY,YAAY,CAAG,EAAA,GAAA,CAAA,CAAA;AAAA,SAAA,CAAA,CAAA;AAG7B,QAAA,KAAA,CAAM,mBAAoB,CAAA,aAAA,CAAA,CAAA;AAC1B,QAAA,KAAA,CAAM,kBAAmB,CAAA,CAAA,GAAA,GAAA,UAAA,CAAW,WAAY,CAAA,MAAA,CAAA,KAAvB,IAAgC,GAAA,KAAA,CAAA,GAAA,GAAA,CAAA,KAAA,CAAA,CAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GAG5D,EAAA,CAAC,aAAa,KAAM,CAAA,gBAAA,CAAA,CAAA,CAAA;AAKvB,EAAA,SAAA,CAAU,MAAM;AA3LlB,IAAA,IAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AA4LI,IAAA,IAAI,WAAa,EAAA;AACf,MAAA,eAAA,CAAgB,gBAAiB,CAAA,GAAA,CAAA,CAAA;AAKjC,MAAM,MAAA,IAAA,GAAO,yBAAM,eAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAuB,uBAAvB,IAA2C,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,CAAO,SAAlD,IAA0D,GAAA,EAAA,GAAA,CAAA,CAAA;AACvE,MAAM,CAAA,EAAA,GAAA,KAAA,CAAA,gBAAA,KAAN,mBAAwB,gBAAiB,CAAA,IAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,EAE1C,CAAC,WAAA,CAAA,CAAA,CAAA;AAEJ,EAAM,MAAA,YAAA,GAAe,QAAQ,MAAM;AACjC,IAAA,OAAO,CAAE,WAAa,EAAA,eAAA,EAAiB,QAAU,EAAA,CAAC,CAAC,WAAa,EAAA,aAAA,CAAA,CAAA;AAAA,GAC/D,EAAA,CAAC,aAAa,KAAM,CAAA,gBAAA,CAAA,CAAA,CAAA;AAEvB,EAAA,MAAM,iBACJ,mBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA,IAAA,sCACG,MAAD,EAAA;AAAA,IAAM,KAAA,EAAO,CAAE,WAAa,EAAA,CAAA,CAAA;AAAA,GAAM,EAAA,CAAA,CAAE,YACpC,CAAA,CAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,MAAD,EAAA;AAAA,IACE,IAAK,EAAA,OAAA;AAAA,IACL,OAAS,EAAA,aAAA;AAAA,IACT,QAAA,EAAU,CAAC,cAAkB,KAAA;AAjNrC,MAAA,IAAA,GAAA,CAAA;AAkNU,MAAiB,gBAAA,CAAA,cAAA,CAAA,CAAA;AACjB,MAAM,CAAA,GAAA,GAAA,KAAA,CAAA,gBAAA,KAAN,oBAAwB,gBAAiB,CAAA,cAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA,CAAA,CAAA;AAMjD,EAAA,2CACG,mBAAD,EAAA;AAAA,IACE,WAAW,YAAa,CAAA,0BAAA,CAAA;AAAA,IACxB,OAAO,CAAE,CAAA,QAAA,CAAA;AAAA,IACT,OAAS,EAAA,iBAAA;AAAA,IACT,KAAO,EAAA;AAAA,MACL,MAAA,EACE,YAAY,cAAkB,IAAA,CAAA,CAAA,EAAA,GAAA,WAAA,CAAY,mBAAZ,IAA4B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,IAAS,IAAI,KAAQ,GAAA,MAAA;AAAA,KAAA;AAAA,GAAA,sCAGlF,KAAD,EAAA;AAAA,IAAK,WAAW,YAAa,CAAA,wBAAA,CAAA;AAAA,GAC3B,kBAAA,KAAA,CAAA,aAAA,CAAC,oBAAoB,QAArB,EAAA;AAAA,IAA8B,KAAO,EAAA,YAAA;AAAA,GAAA,kBAClC,KAAA,CAAA,aAAA,CAAA,mBAAA,EAAD,IAEF,CAAA,CAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA;AAAA,IAAK,WAAW,YAAa,CAAA,qBAAA,CAAA;AAAA,IAAwB,EAAI,EAAA,YAAA;AAAA,IAAc,GAAA;AAAA,GAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAM/E,uBAAe,QAAQ,iBAAmB,EAAA,IAAA,EAAM,IAAM,EAAA,CAAE,SAAS,eAAmB,CAAA,CAAA,CAAA,YAAA,CAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PointCloudBackView.js","sources":["../../../src/components/pointCloudView/PointCloudBackView.tsx"],"sourcesContent":["/*\n * @Author: Laoluo luozefeng@sensetime.com\n * @Date: 2022-06-22 11:08:31\n * @LastEditors: Laoluo luozefeng@sensetime.com\n * @LastEditTime: 2022-07-08 11:08:02\n */\nimport {\n getCuboidFromPointCloudBox,\n MathUtils,\n PointCloud,\n PointCloudAnnotation,\n} from '@labelbee/lb-annotation';\nimport { getClassName } from '@/utils/dom';\nimport { PointCloudContainer } from './PointCloudLayout';\nimport React, { useEffect, useRef } from 'react';\nimport { PointCloudContext } from './PointCloudContext';\nimport {\n EPerspectiveView,\n IPointCloudBox,\n IPolygonData,\n IPolygonPoint,\n UpdatePolygonByDragList,\n} from '@labelbee/lb-utils';\nimport { useSingleBox } from './hooks/useSingleBox';\nimport { SizeInfoForView } from './PointCloudInfos';\nimport { connect } from 'react-redux';\nimport { a2MapStateToProps, IA2MapStateProps } from '@/store/annotation/map';\nimport {\n synchronizeSideView,\n synchronizeTopView,\n usePointCloudViews,\n} from './hooks/usePointCloudViews';\nimport useSize from '@/hooks/useSize';\nimport EmptyPage from './components/EmptyPage';\nimport { useTranslation } from 'react-i18next';\nimport { LabelBeeContext } from '@/store/ctx';\n\n/**\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};\nconst updateBackViewByCanvas2D = (\n currentPos: { x: number; y: number },\n zoom: number,\n size: { width: number; height: number },\n selectedPointCloudBox: IPointCloudBox,\n backPointCloud: PointCloud,\n) => {\n const { offsetX, offsetY } = TransferCanvas2WorldOffset(currentPos, size, zoom);\n backPointCloud.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 } = backPointCloud.initCameraPosition;\n backPointCloud.camera.position.set(x + offsetXY, y - offsetXX, z + offsetY);\n }\n backPointCloud.camera.updateProjectionMatrix();\n backPointCloud.render();\n};\n\ninterface IProps {\n checkMode?: boolean;\n}\n\nconst PointCloudSideView = ({ currentData, config, checkMode }: IA2MapStateProps & IProps) => {\n const ptCtx = React.useContext(PointCloudContext);\n const ref = useRef<HTMLDivElement>(null);\n const size = useSize(ref);\n const { selectedBox, updateSelectedBox } = useSingleBox();\n const { t } = useTranslation();\n const { backViewUpdateBox } = usePointCloudViews();\n\n const transferPolygonDataToBoxParams = (\n newPolygon: IPolygonData,\n originPolygon: IPolygonData,\n ) => {\n if (\n !ptCtx.selectedPointCloudBox ||\n !ptCtx.mainViewInstance ||\n !currentData.url ||\n !ptCtx.backViewInstance\n ) {\n return;\n }\n\n const { pointCloudInstance: backPointCloud } = ptCtx.backViewInstance;\n\n // Notice. The sort of polygon is important.\n const [point1, point2, point3] = newPolygon.pointList;\n const [op1, op2, op3] = originPolygon.pointList;\n\n // 2D centerPoint => 3D x & z\n const newCenterPoint = MathUtils.getLineCenterPoint([point1, point3]);\n const oldCenterPoint = MathUtils.getLineCenterPoint([op1, op3]);\n\n const offset = {\n x: newCenterPoint.x - oldCenterPoint.x,\n y: newCenterPoint.y - oldCenterPoint.y,\n };\n\n const offsetCenterPoint = {\n x: offset.x,\n y: 0, // Not be used.\n z: newCenterPoint.y - oldCenterPoint.y,\n };\n\n // 2D height => 3D depth\n const height = MathUtils.getLineLength(point1, point2);\n const oldHeight = MathUtils.getLineLength(op1, op2);\n const offsetHeight = height - oldHeight; // 3D depth\n\n // 2D width => 3D width\n const width = MathUtils.getLineLength(point2, point3);\n const oldWidth = MathUtils.getLineLength(op2, op3);\n const offsetWidth = width - oldWidth; // 3D width\n\n let { newBoxParams } = backPointCloud.getNewBoxByBackUpdate(\n offsetCenterPoint,\n offsetWidth,\n offsetHeight,\n ptCtx.selectedPointCloudBox,\n );\n\n // Update count\n if (ptCtx.mainViewInstance) {\n const { count } = ptCtx.mainViewInstance.getSensesPointZAxisInPolygon(\n getCuboidFromPointCloudBox(newBoxParams).polygonPointList as IPolygonPoint[],\n [\n newBoxParams.center.z - newBoxParams.depth / 2,\n newBoxParams.center.z + newBoxParams.depth / 2,\n ],\n );\n\n newBoxParams = {\n ...newBoxParams,\n count,\n };\n }\n\n synchronizeTopView(newBoxParams, newPolygon, ptCtx.topViewInstance, ptCtx.mainViewInstance);\n synchronizeSideView(newBoxParams, newPolygon, ptCtx.sideViewInstance, currentData.url);\n ptCtx.mainViewInstance.highlightOriginPointCloud([newBoxParams]);\n\n updateSelectedBox(newBoxParams);\n };\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 config,\n checkMode,\n });\n ptCtx.setBackViewInstance(pointCloudAnnotation);\n }\n }, []);\n\n useEffect(() => {\n // By the way as an initialization judgment\n if (!size || !ptCtx.backViewInstance) {\n return;\n }\n\n const {\n pointCloud2dOperation: backPointCloudPolygonOperation,\n pointCloudInstance: backPointCloud,\n } = ptCtx.backViewInstance;\n\n /**\n * Synchronized 3d point cloud view displacement operations\n *\n * Change Orthographic Camera size\n */\n backPointCloudPolygonOperation.singleOn('renderZoom', (zoom: number, currentPos: any) => {\n if (!ptCtx.selectedPointCloudBox) {\n return;\n }\n updateBackViewByCanvas2D(currentPos, zoom, size, ptCtx.selectedPointCloudBox, backPointCloud);\n });\n\n // Synchronized 3d point cloud view displacement operations\n backPointCloudPolygonOperation.singleOn('dragMove', ({ currentPos, zoom }: any) => {\n if (!ptCtx.selectedPointCloudBox) {\n return;\n }\n updateBackViewByCanvas2D(currentPos, zoom, size, ptCtx.selectedPointCloudBox, backPointCloud);\n });\n\n backPointCloudPolygonOperation.singleOn(\n 'updatePolygonByDrag',\n (updateList: UpdatePolygonByDragList) => {\n if (ptCtx.selectedIDs.length === 1 && updateList.length === 1) {\n const { newPolygon, originPolygon } = updateList[0];\n\n if (newPolygon && originPolygon) {\n transferPolygonDataToBoxParams(newPolygon, originPolygon);\n backViewUpdateBox(newPolygon, originPolygon);\n }\n }\n },\n );\n }, [ptCtx, size]);\n\n useEffect(() => {\n // Update Size\n ptCtx?.backViewInstance?.initSize(size);\n }, [size]);\n\n return (\n <PointCloudContainer\n className={getClassName('point-cloud-container', 'back-view')}\n title={t('BackView')}\n toolbar={<SizeInfoForView perspectiveView={EPerspectiveView.Back} />}\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(a2MapStateToProps, null, null, { context: LabelBeeContext })(\n PointCloudSideView,\n);\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PointCloudContext.js","sources":["../../../src/components/pointCloudView/PointCloudContext.tsx"],"sourcesContent":["import { IPointCloudBox, IPointCloudBoxList, IPolygonData } from '@labelbee/lb-utils';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport {\n PointCloud,\n PointCloudAnnotation,\n ActionsHistory,\n EToolName,\n} from '@labelbee/lb-annotation';\n\ninterface IPointCloudContextInstances {\n topViewInstance?: PointCloudAnnotation;\n sideViewInstance?: PointCloudAnnotation;\n backViewInstance?: PointCloudAnnotation;\n mainViewInstance?: PointCloud;\n setTopViewInstance: (instance: PointCloudAnnotation) => void;\n setSideViewInstance: (instance: PointCloudAnnotation) => void;\n setBackViewInstance: (instance: PointCloudAnnotation) => void;\n setMainViewInstance: (instance: PointCloud) => void;\n}\n\ntype AttrPanelLayout = '' | 'left' | 'right';\n\nexport interface IPointCloudContext extends IPointCloudContextInstances {\n pointCloudBoxList: IPointCloudBoxList;\n displayPointCloudList: IPointCloudBoxList;\n selectedIDs: string[];\n setSelectedIDs: (ids?: string[] | string) => void;\n valid: boolean;\n setPointCloudResult: (resultList: IPointCloudBoxList) => void;\n selectedPointCloudBox?: IPointCloudBox;\n setPointCloudValid: (valid?: boolean) => void;\n addSelectedID: (selectedID: string) => void;\n selectedAllBoxes: () => void;\n selectedID: string;\n addPointCloudBox: (boxParams: IPointCloudBox) => IPointCloudBox[];\n\n polygonList: IPolygonData[];\n setPolygonList: (polygonList: IPolygonData[]) => void;\n\n zoom: number;\n setZoom: (zoom: number) => void;\n\n history: ActionsHistory; // Operation History\n hideAttributes: string[];\n setHideAttributes: (hideAttrs: string[]) => void;\n toggleAttributesVisible: (attribute: string) => void;\n reRender: (_displayPointCloudList: IPointCloudBoxList, _polygonList: IPolygonData[]) => void;\n attrPanelLayout: AttrPanelLayout;\n setAttrPanelLayout: (layout: AttrPanelLayout) => void;\n\n syncAllViewPointCloudColor: (newPointCloudList?: IPointCloudBox[]) => void;\n\n defaultAttribute: string;\n setDefaultAttribute: (defaultAttribute: string) => void;\n\n pointCloudPattern: EToolName.Rect | EToolName.Polygon;\n setPointCloudPattern: (toolName: EToolName.Rect | EToolName.Polygon) => void;\n selectSpecAttr: (attr: string) => void;\n}\n\nexport const PointCloudContext = React.createContext<IPointCloudContext>({\n pointCloudBoxList: [],\n displayPointCloudList: [],\n polygonList: [],\n selectedID: '',\n selectedIDs: [],\n valid: true,\n setSelectedIDs: () => {},\n setPointCloudResult: () => {},\n setPointCloudValid: () => {},\n setTopViewInstance: () => {},\n setSideViewInstance: () => {},\n setBackViewInstance: () => {},\n setMainViewInstance: () => {},\n addSelectedID: () => {},\n selectedAllBoxes: () => {},\n addPointCloudBox: () => {\n return [];\n },\n setPolygonList: () => {},\n\n zoom: 1,\n setZoom: () => {},\n history: new ActionsHistory(),\n hideAttributes: [],\n setHideAttributes: () => {},\n toggleAttributesVisible: () => {},\n reRender: () => {},\n setAttrPanelLayout: () => {},\n attrPanelLayout: '',\n syncAllViewPointCloudColor: () => {},\n\n defaultAttribute: '',\n setDefaultAttribute: () => {},\n\n pointCloudPattern: EToolName.Rect,\n setPointCloudPattern: () => {},\n selectSpecAttr: () => {},\n});\n\nexport const PointCloudProvider: React.FC<{}> = ({ children }) => {\n const [pointCloudBoxList, setPointCloudResult] = useState<IPointCloudBoxList>([]);\n const [polygonList, setPolygonList] = useState<IPolygonData[]>([]);\n const [selectedIDs, setSelectedIDsState] = useState<string[]>([]);\n const [valid, setValid] = useState<boolean>(true);\n const [zoom, setZoom] = useState<number>(1);\n const [topViewInstance, setTopViewInstance] = useState<PointCloudAnnotation>();\n const [sideViewInstance, setSideViewInstance] = useState<PointCloudAnnotation>();\n const [backViewInstance, setBackViewInstance] = useState<PointCloudAnnotation>();\n const [mainViewInstance, setMainViewInstance] = useState<PointCloud>();\n const [defaultAttribute, setDefaultAttribute] = useState('');\n const [pointCloudPattern, setPointCloudPattern] = useState<EToolName.Rect | EToolName.Polygon>(\n EToolName.Rect,\n );\n const history = useRef(new ActionsHistory()).current;\n const [hideAttributes, setHideAttributes] = useState<string[]>([]);\n const [attrPanelLayout, setAttrPanelLayout] = useState<AttrPanelLayout>('');\n\n const selectedID = useMemo(() => {\n return selectedIDs.length === 1 ? selectedIDs[0] : '';\n }, [selectedIDs]);\n\n const ptCtx = useMemo(() => {\n const selectedPointCloudBox = pointCloudBoxList.find((v) => v.id === selectedID);\n\n const addPointCloudBox = (box: IPointCloudBox) => {\n const newPointCloudList = pointCloudBoxList.concat(box);\n setPointCloudResult(newPointCloudList);\n return newPointCloudList;\n };\n\n const setPointCloudValid = (valid?: boolean) => {\n setValid(valid === false ? false : true);\n };\n\n const setSelectedIDs = (selectedIDs?: string[] | string) => {\n if (selectedIDs === undefined) {\n setSelectedIDsState([]);\n }\n\n if (typeof selectedIDs === 'string') {\n setSelectedIDsState([selectedIDs]);\n }\n\n if (Array.isArray(selectedIDs)) {\n setSelectedIDsState(Array.from(new Set(selectedIDs)));\n }\n };\n\n /**\n * If selectedID existed, remove selectedID from selectedIDs\n * If selectedID not existed, add selectedID to selectedIDs\n * @param selectedID\n */\n const addSelectedID = (selectedID: string) => {\n if (selectedIDs.includes(selectedID)) {\n setSelectedIDs(selectedIDs.filter((i) => i !== selectedID));\n } else {\n setSelectedIDs([...selectedIDs, selectedID]);\n }\n };\n\n const selectedAllBoxes = () => {\n setSelectedIDs(pointCloudBoxList.map((i) => i.id));\n };\n\n const selectSpecAttr = (attr: string) => {\n setSelectedIDs(pointCloudBoxList.filter((i) => i.attribute === attr).map((i) => i.id));\n };\n\n const displayPointCloudList = pointCloudBoxList.filter(\n (i) => !hideAttributes.includes(i.attribute),\n );\n\n const toggleAttributesVisible = (tAttribute: string) => {\n if (hideAttributes.includes(tAttribute)) {\n setHideAttributes(hideAttributes.filter((attribute) => attribute !== tAttribute));\n } else {\n const updatedHideAttributes = hideAttributes.concat(tAttribute);\n setHideAttributes(updatedHideAttributes);\n }\n };\n\n const reRender = (\n _displayPointCloudList: IPointCloudBoxList = displayPointCloudList,\n _polygonList: IPolygonData[] = polygonList,\n ) => {\n pointCloudBoxList.forEach((v) => {\n mainViewInstance?.removeObjectByName(v.id);\n });\n\n topViewInstance?.updatePolygonList(_displayPointCloudList, _polygonList);\n mainViewInstance?.generateBoxes(_displayPointCloudList);\n syncAllViewPointCloudColor(_displayPointCloudList);\n };\n\n /**\n * Synchronize the highlighted pointCloud for all views.\n * @param pointCloudList\n */\n\n const syncAllViewPointCloudColor = (pointCloudList?: IPointCloudBox[]) => {\n const colorPromise = mainViewInstance?.highlightOriginPointCloud(pointCloudList);\n return new Promise((resolve) => {\n colorPromise?.then((color) => {\n [topViewInstance].forEach((instance) => {\n if (color) {\n instance?.pointCloudInstance?.updateColor(color);\n resolve({ color });\n }\n });\n // TODO: Sync sideView & backView Color.\n });\n });\n };\n\n return {\n selectedID,\n pointCloudBoxList,\n displayPointCloudList,\n selectedIDs,\n setPointCloudResult,\n setSelectedIDs,\n addPointCloudBox,\n valid,\n selectedPointCloudBox,\n setPointCloudValid,\n addSelectedID,\n selectedAllBoxes,\n topViewInstance,\n setTopViewInstance,\n sideViewInstance,\n setSideViewInstance,\n backViewInstance,\n setBackViewInstance,\n mainViewInstance,\n setMainViewInstance,\n polygonList,\n setPolygonList,\n zoom,\n setZoom,\n history,\n toggleAttributesVisible,\n hideAttributes,\n setHideAttributes,\n reRender,\n attrPanelLayout,\n setAttrPanelLayout,\n syncAllViewPointCloudColor,\n defaultAttribute,\n setDefaultAttribute,\n pointCloudPattern,\n setPointCloudPattern,\n selectSpecAttr,\n };\n }, [\n valid,\n selectedIDs,\n pointCloudBoxList,\n polygonList,\n topViewInstance,\n sideViewInstance,\n backViewInstance,\n mainViewInstance,\n zoom,\n hideAttributes,\n attrPanelLayout,\n defaultAttribute,\n pointCloudPattern,\n ]);\n\n const updateSelectedIDsAndRenderAfterHide = () => {\n const pointCloudForFilteredList = pointCloudBoxList.filter((i) =>\n hideAttributes.includes(i.attribute),\n );\n\n const { setSelectedIDs, reRender } = ptCtx;\n\n const filteredIDs = pointCloudForFilteredList.map((i) => i.id);\n\n if (filteredIDs.length > 0) {\n setSelectedIDs(selectedIDs.filter((id) => !filteredIDs.includes(id)));\n }\n\n reRender();\n };\n\n useEffect(() => {\n updateSelectedIDsAndRenderAfterHide();\n topViewInstance?.pointCloud2dOperation?.setHiddenAttributes(hideAttributes);\n }, [hideAttributes]);\n\n return <PointCloudContext.Provider value={ptCtx}>{children}</PointCloudContext.Provider>;\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PointCloudInfos.js","sources":["../../../src/components/pointCloudView/PointCloudInfos.tsx"],"sourcesContent":["/**\n * @author Glenfiddish <edwinlee0927@hotmail.com>\n * @file Display selected box's infos\n * @createdate 2022-07-13\n */\n\nimport { EPerspectiveView, IPointCloudConfig, PointCloudUtils } from '@labelbee/lb-utils';\nimport React, { useEffect, useState } from 'react';\nimport { PointCloudContext } from './PointCloudContext';\nimport { UnitUtils } from '@labelbee/lb-annotation';\nimport { useSingleBox } from './hooks/useSingleBox';\nimport { useTranslation } from 'react-i18next';\n\nconst DECIMAL_PLACES = 2;\n\n/**\n * Display size info for views\n * @param param0\n * @returns\n */\nexport const SizeInfoForView = ({ perspectiveView }: { perspectiveView: EPerspectiveView }) => {\n const { pointCloudBoxList, selectedID } = React.useContext(PointCloudContext);\n const box = pointCloudBoxList.find((i) => i.id === selectedID);\n const trans = useTranslation();\n const { t } = trans;\n\n if (selectedID && box) {\n const { length, width, height } = PointCloudUtils.transferBox2Kitti(box);\n const infos =\n perspectiveView === EPerspectiveView.Back\n ? [\n {\n label: t('Width'),\n value: width,\n },\n {\n label: t('Height'),\n value: height,\n },\n ]\n : [\n {\n label: t('Length'),\n value: length,\n },\n {\n label: t('Height'),\n value: height,\n },\n ];\n\n return (\n <>\n {infos.map((info, index) => (\n <span key={index} style={{ marginRight: index === 0 ? 16 : 0, fontSize: 12 }}>{`${\n info.label\n }: ${info.value.toFixed(DECIMAL_PLACES)}`}</span>\n ))}\n </>\n );\n }\n return null;\n};\n\n/**\n * Display selected box's infos\n */\nexport const BoxInfos = ({\n checkMode,\n config,\n}: {\n checkMode?: boolean;\n config: IPointCloudConfig;\n}) => {\n const ptCtx = React.useContext(PointCloudContext);\n const { selectedBox } = useSingleBox();\n const [infos, setInfos] = useState<Array<{ label: string; value: string }>>([]);\n const trans = useTranslation();\n const { t, i18n } = trans;\n\n useEffect(() => {\n if (!selectedBox) {\n return;\n }\n\n const { length, width, height, rotation_y } = PointCloudUtils.transferBox2Kitti(\n selectedBox.info,\n );\n\n let infos = [\n {\n label: t('Length'),\n value: length.toFixed(DECIMAL_PLACES),\n },\n {\n label: t('Width'),\n value: width.toFixed(DECIMAL_PLACES),\n },\n {\n label: t('Height'),\n value: height.toFixed(DECIMAL_PLACES),\n },\n {\n label: t('Rotation_y'),\n value: UnitUtils.rad2deg(rotation_y).toFixed(DECIMAL_PLACES),\n },\n ];\n\n // Get Point Count.\n ptCtx.mainViewInstance?.filterPointsByBox(selectedBox.info).then((data) => {\n if (!data) {\n setInfos(infos);\n return;\n }\n\n infos.push({\n label: t('PointCount'),\n value: `${data.num}`,\n });\n\n // SubAttribute is shown in checkMode\n if (checkMode === true && selectedBox.info.subAttribute && config) {\n const subAttributeNameList = PointCloudUtils.getSubAttributeName(\n selectedBox.info.subAttribute,\n config,\n );\n subAttributeNameList.forEach((data) => infos.push(data));\n }\n \n setInfos(infos);\n });\n }, [selectedBox, i18n.language]);\n\n if (selectedBox) {\n return (\n <div\n style={{\n position: 'absolute',\n color: 'white',\n backgroundColor: 'rgba(153, 153, 153, 0.3)',\n right: 8,\n top: 8,\n fontSize: 12,\n padding: 8,\n zIndex: 20,\n }}\n >\n {infos.map((i) => (\n <div key={i.label}>{`${i.label}: ${i.value}`}</div>\n ))}\n </div>\n );\n }\n\n return null;\n};\n\nexport const PointCloudValidity = () => {\n const ptCtx = React.useContext(PointCloudContext);\n const { t } = useTranslation();\n\n if (ptCtx.valid === false) {\n return (\n <div\n style={{\n position: 'absolute',\n backgroundColor: 'rgb(242, 101, 73)',\n color: 'white',\n opacity: 0.7,\n left: 0,\n top: 0,\n fontSize: 30,\n padding: '8px 16px',\n zIndex: 20,\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n {t('Invalid')}\n </div>\n );\n }\n return null;\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PointCloudLayout.js","sources":["../../../src/components/pointCloudView/PointCloudLayout.tsx"],"sourcesContent":["import { getClassName } from '@/utils/dom';\nimport classNames from 'classnames';\nimport React from 'react';\n\nexport const PointCloudContainer: React.FC<{\n title: string;\n toolbar?: React.ReactElement;\n className?: string;\n style?: React.CSSProperties;\n}> = ({ title, toolbar, children, className, style }) => {\n return (\n <div className={classNames([className, getClassName('point-cloud-container')])} style={style}>\n <div className={getClassName('point-cloud-container', 'header')}>\n <span className={getClassName('point-cloud-container', 'header-title')}>{title}</span>\n\n {toolbar && (\n <div className={getClassName('point-cloud-container', 'header-toolbar')}>{toolbar}</div>\n )}\n </div>\n\n {children}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;AAIO,MAAM,sBAKR,CAAC,CAAE,OAAO,OAAS,EAAA,QAAA,EAAU,WAAW,KAAY,CAAA,KAAA;AACvD,EAAA,2CACG,KAAD,EAAA;AAAA,IAAK,SAAW,EAAA,UAAA,CAAW,CAAC,SAAA,EAAW,YAAa,CAAA,uBAAA,CAAA,CAAA,CAAA;AAAA,IAA4B,KAAA;AAAA,GAAA,sCAC7E,KAAD,EAAA;AAAA,IAAK,SAAA,EAAW,aAAa,uBAAyB,EAAA,QAAA,CAAA;AAAA,GAAA,sCACnD,MAAD,EAAA;AAAA,IAAM,SAAA,EAAW,aAAa,uBAAyB,EAAA,cAAA,CAAA;AAAA,GAAkB,EAAA,KAAA,CAAA,EAExE,OACC,oBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA;AAAA,IAAK,SAAA,EAAW,aAAa,uBAAyB,EAAA,gBAAA,CAAA;AAAA,GAAA,EAAoB,OAI7E,CAAA,CAAA,EAAA,QAAA,CAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PointCloudListener.js","sources":["../../../src/components/pointCloudView/PointCloudListener.tsx"],"sourcesContent":["import { PointCloudContext } from './PointCloudContext';\nimport { useRotate } from './hooks/useRotate';\nimport { useBoxes } from './hooks/useBoxes';\nimport { useSingleBox } from './hooks/useSingleBox';\nimport React, { useContext, useEffect } from 'react';\nimport { cTool, AttributeUtils, CommonToolUtils, EToolName } from '@labelbee/lb-annotation';\nimport { message } from 'antd';\nimport { connect } from 'react-redux';\nimport { a2MapStateToProps, IA2MapStateProps } from '@/store/annotation/map';\nimport { useCustomToolInstance } from '@/hooks/annotation';\nimport { useStatus } from './hooks/useStatus';\nimport { jsonParser } from '@/utils';\nimport { usePointCloudViews } from './hooks/usePointCloudViews';\nimport { LabelBeeContext } from '@/store/ctx';\nimport { useHistory } from './hooks/useHistory';\nimport { useAttribute } from './hooks/useAttribute';\nimport { ICoordinate } from '@labelbee/lb-utils/dist/types/types/common';\nimport { useConfig } from './hooks/useConfig';\nimport { usePolygon } from './hooks/usePolygon';\nimport { useTranslation } from 'react-i18next';\nimport { IFileItem } from '@/types/data';\n\nconst { EPolygonPattern } = cTool;\n\ninterface IProps extends IA2MapStateProps {\n checkMode?: boolean;\n}\n\nconst PointCloudListener: React.FC<IProps> = ({\n currentData,\n config,\n checkMode,\n configString,\n imgIndex,\n}) => {\n const ptCtx = useContext(PointCloudContext);\n const {\n changeSelectedBoxValid,\n selectNextBox,\n selectPrevBox,\n updateSelectedBox,\n deleteSelectedPointCloudBoxAndPolygon,\n } = useSingleBox();\n const { clearAllResult, updatePointCloudPattern } = useStatus();\n const basicInfo = jsonParser(currentData.result);\n const { copySelectedBoxes, pasteSelectedBoxes, copiedBoxes } = useBoxes({ config });\n const { toolInstanceRef } = useCustomToolInstance({ basicInfo });\n const { updateRotate } = useRotate({ currentData });\n const { updatePointCloudData, topViewSelectedChanged } = usePointCloudViews();\n const { redo, undo, pushHistoryWithList, pushHistoryUnderUpdatePolygon } = useHistory();\n const { syncThreeViewsAttribute } = useAttribute();\n const { syncAllViewsConfig, reRenderTopViewRange } = useConfig();\n const { selectedPolygon } = usePolygon();\n const { t } = useTranslation();\n\n const updatePolygonOffset = (offset: Partial<ICoordinate>) => {\n const { topViewInstance } = ptCtx;\n if (!topViewInstance) {\n return;\n }\n topViewInstance.pointCloud2dOperation?.updateSelectedPolygonsPoints(offset);\n };\n\n const keydownEvents = (lowerCaseKey: string, e: KeyboardEvent) => {\n const { topViewInstance, mainViewInstance } = ptCtx;\n if (!topViewInstance) {\n return;\n }\n\n const { pointCloud2dOperation: TopPointCloudPolygonOperation } = topViewInstance;\n\n switch (lowerCaseKey) {\n case 'q': {\n // Q - anticlockwise\n updateRotate(2);\n break;\n }\n\n case 'e':\n // E - closewise\n updateRotate(-2);\n\n break;\n\n case 'g':\n // G , overturn 180\n updateRotate(180);\n\n break;\n\n case 'u':\n {\n // U , change TopOpereation Pattern\n const newToolName =\n TopPointCloudPolygonOperation.pattern === EPolygonPattern.Normal\n ? EToolName.Rect\n : EToolName.Polygon;\n updatePointCloudPattern(newToolName);\n\n // Tips\n const POLYGON_PATTERN = {\n [EToolName.Polygon]: t('PolygonPattern'),\n [EToolName.Rect]: t('RectPattern'),\n };\n message.success(t('ChangePatternMsg', { pattern: POLYGON_PATTERN[newToolName] }));\n\n // Clear Status\n TopPointCloudPolygonOperation.clearActiveStatus();\n TopPointCloudPolygonOperation.clearDrawingStatus();\n }\n\n break;\n\n // +: Increase points size\n case '+':\n mainViewInstance?.updatePointSize(true);\n break;\n\n // -: Reduce points size\n case '-':\n mainViewInstance?.updatePointSize(false);\n break;\n\n case 'v':\n ptCtx.setPointCloudValid(!ptCtx.valid);\n break;\n\n case 'tab':\n if (e.shiftKey) {\n selectPrevBox();\n break;\n }\n selectNextBox();\n e.preventDefault();\n break;\n\n case 'f':\n changeSelectedBoxValid();\n break;\n\n case 'arrowup':\n updatePolygonOffset({ y: -1 });\n break;\n\n case 'arrowdown':\n updatePolygonOffset({ y: 1 });\n break;\n\n case 'arrowleft':\n updatePolygonOffset({ x: -1 });\n break;\n\n case 'arrowright':\n updatePolygonOffset({ x: 1 });\n break;\n\n case 'delete':\n deleteSelectedPointCloudBoxAndPolygon();\n break;\n\n default: {\n if (config.attributeList?.length > 0) {\n const keyCode2Attribute = AttributeUtils.getAttributeByKeycode(\n e.keyCode,\n config.attributeList,\n );\n\n if (keyCode2Attribute !== undefined) {\n toolInstanceRef.current.setDefaultAttribute(keyCode2Attribute);\n }\n }\n return;\n }\n }\n };\n\n const ctrlKeydownEvents = (lowerCaseKey: string, e: KeyboardEvent) => {\n switch (lowerCaseKey) {\n case 'c':\n copySelectedBoxes();\n break;\n case 'v':\n pasteSelectedBoxes();\n break;\n case 'a':\n e.preventDefault();\n ptCtx.selectedAllBoxes();\n break;\n case 'z': {\n if (e.shiftKey) {\n redo();\n } else {\n undo();\n }\n break;\n }\n\n default:\n break;\n }\n };\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (!CommonToolUtils.hotkeyFilter(e) || checkMode === true) {\n return;\n }\n\n const lowerCaseKey = e.key.toLocaleLowerCase();\n\n if (e.ctrlKey) {\n ctrlKeydownEvents(lowerCaseKey, e);\n return;\n }\n\n keydownEvents(lowerCaseKey, e);\n };\n\n useEffect(() => {\n const { topViewInstance } = ptCtx;\n if (!topViewInstance) {\n return;\n }\n\n window.addEventListener('keydown', onKeyDown);\n\n return () => {\n window.removeEventListener('keydown', onKeyDown);\n };\n }, [ptCtx, copiedBoxes, config, ptCtx.pointCloudBoxList, ptCtx.polygonList]);\n\n useEffect(() => {\n syncAllViewsConfig(config);\n }, [configString]);\n\n useEffect(() => {\n if (config?.radius) {\n reRenderTopViewRange(config?.radius);\n }\n }, [config?.radius]);\n\n // Page switch data initialization\n useEffect(() => {\n updatePointCloudData?.();\n }, [imgIndex, ptCtx.mainViewInstance]);\n\n useEffect(() => {\n ptCtx.setHideAttributes([]);\n }, [imgIndex]);\n\n // Update the listener of toolInstance.\n useEffect(() => {\n toolInstanceRef.current.exportData = () => {\n return [ptCtx.pointCloudBoxList, { valid: ptCtx.valid }];\n };\n\n toolInstanceRef.current.exportCustomData = () => {\n return {\n resultPolygon: ptCtx.polygonList ?? [],\n };\n };\n\n toolInstanceRef.current.setDefaultAttribute = (newAttribute: string) => {\n syncThreeViewsAttribute(newAttribute);\n const selectBox = ptCtx.selectedPointCloudBox;\n if (selectBox) {\n selectBox.attribute = newAttribute;\n\n const newPointCloudList = updateSelectedBox(selectBox);\n\n if (ptCtx.mainViewInstance) {\n // TODO: Poor performance.\n topViewSelectedChanged(selectBox, newPointCloudList);\n }\n }\n if (selectedPolygon) {\n pushHistoryUnderUpdatePolygon({ ...selectedPolygon, attribute: newAttribute });\n }\n };\n\n toolInstanceRef.current.setSubAttribute = (key: string, value: string) => {\n const selectBox = ptCtx.selectedPointCloudBox;\n if (selectBox) {\n const originSubAttribute = selectBox?.subAttribute ?? {};\n\n selectBox.subAttribute = {\n ...originSubAttribute,\n [key]: value,\n };\n\n updateSelectedBox(selectBox);\n }\n };\n toolInstanceRef.current.clearResult = () => {\n clearAllResult?.();\n };\n\n toolInstanceRef.current.redo = () => {\n redo();\n };\n\n toolInstanceRef.current.undo = () => {\n undo();\n };\n\n toolInstanceRef.current.setValid = (valid: boolean) => {\n toolInstanceRef.current.valid = valid;\n\n // Avoid triggering SetState operations in the reducer phase\n setTimeout(() => {\n ptCtx.setPointCloudValid(valid);\n\n if (valid === false) {\n clearAllResult();\n }\n });\n };\n\n /**\n * TopView forbid all operations.\n * @param forbidOperation\n */\n toolInstanceRef.current.setForbidOperation = (forbidOperation: boolean) => {\n ptCtx.topViewInstance?.pointCloud2dOperation?.setForbidOperation(forbidOperation);\n if (forbidOperation === true) {\n // Clear Selected Status.\n ptCtx.setSelectedIDs(undefined);\n }\n };\n\n toolInstanceRef.current.setShowDefaultCursor = (showDefaultCursor: boolean) => {\n ptCtx.topViewInstance?.pointCloud2dOperation?.setShowDefaultCursor(showDefaultCursor);\n };\n\n toolInstanceRef.current.asyncData = (newData: IFileItem) => {\n // Next Tick to update.\n setTimeout(() => {\n updatePointCloudData?.(newData);\n });\n };\n }, [\n ptCtx.pointCloudBoxList,\n ptCtx.selectedID,\n ptCtx.valid,\n ptCtx.polygonList,\n ptCtx.mainViewInstance,\n ]);\n\n useEffect(() => {\n toolInstanceRef.current.history = {\n // Origin Result\n pushHistory: (result: any[]) => {\n // Rewrite\n // TODO, The polygon is out of range.\n pushHistoryWithList({ pointCloudBoxList: result });\n },\n initRecord: () => {},\n };\n }, []);\n\n useEffect(() => {\n const toolInstance = ptCtx.topViewInstance?.pointCloud2dOperation;\n\n if (!toolInstance || checkMode) {\n return;\n }\n // TopViewOperation Emitter\n const syncAttribute = (newAttribute: string) => {\n syncThreeViewsAttribute(newAttribute);\n };\n\n const messageError = (error: string) => {\n message.error(error);\n };\n const messageInfo = (info: string) => {\n message.info(info);\n };\n\n toolInstance.on('syncAttribute', syncAttribute);\n toolInstance.on('messageError', messageError);\n toolInstance.on('messageInfo', messageInfo);\n\n return () => {\n toolInstance.unbind('syncAttribute', syncAttribute);\n toolInstance.unbind('messageError', messageError);\n toolInstance.unbind('messageInfo', messageInfo);\n };\n }, [ptCtx.topViewInstance]);\n\n return null;\n};\n\nexport default connect(a2MapStateToProps, null, null, { context: LabelBeeContext })(\n PointCloudListener,\n);\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
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, UpdatePolygonByDragList } from '@labelbee/lb-utils';\nimport { PointCloudContext } from './PointCloudContext';\nimport { SizeInfoForView } from './PointCloudInfos';\nimport { connect } from 'react-redux';\nimport { a2MapStateToProps, IA2MapStateProps } 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\ninterface IProps {\n checkMode?: boolean\n}\n\nconst PointCloudSideView: React.FC<IA2MapStateProps & IProps> = ({ config, checkMode }) => {\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 config,\n checkMode\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', (updateList: UpdatePolygonByDragList) => {\n if (ptCtx.selectedIDs.length === 1 && updateList.length === 1) {\n const { newPolygon, originPolygon } = updateList[0];\n sideViewUpdateBox(newPolygon, originPolygon);\n }\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(a2MapStateToProps, null, null, { context: LabelBeeContext })(\n PointCloudSideView,\n);\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AA2BA,MAAM,0BAA6B,GAAA,CACjC,UACA,EAAA,IAAA,EACA,OAAO,CACJ,KAAA;AACH,EAAA,MAAM,CAAE,KAAA,EAAO,CAAG,EAAA,MAAA,EAAQ,CAAM,CAAA,GAAA,IAAA,CAAA;AAEhC,EAAA,MAAM,iBAAoB,GAAA;AAAA,IACxB,CAAG,EAAA,UAAA,CAAW,CAAK,GAAA,CAAA,GAAI,IAAQ,GAAA,CAAA;AAAA,IAC/B,CAAG,EAAA,UAAA,CAAW,CAAK,GAAA,CAAA,GAAI,IAAQ,GAAA,CAAA;AAAA,GAAA,CAAA;AAGjC,EAAA,MAAM,gBAAmB,GAAA;AAAA,IACvB,CAAA,EAAG,KAAK,KAAQ,GAAA,CAAA;AAAA,IAChB,CAAA,EAAG,KAAK,MAAS,GAAA,CAAA;AAAA,GAAA,CAAA;AAGnB,EAAO,OAAA;AAAA,IACL,OAAU,EAAA,CAAA,gBAAA,CAAiB,CAAI,GAAA,iBAAA,CAAkB,CAAK,IAAA,IAAA;AAAA,IACtD,OAAS,EAAA,EAAmB,gBAAA,CAAA,CAAA,GAAI,kBAAkB,CAAK,CAAA,GAAA,IAAA;AAAA,GAAA,CAAA;AAAA,CAAA,CAAA;AAI3D,MAAM,2BAA2B,CAC/B,UAAA,EACA,IACA,EAAA,IAAA,EACA,uBACA,cACG,KAAA;AACH,EAAA,MAAM,CAAE,OAAA,EAAS,OAAY,CAAA,GAAA,0BAAA,CAA2B,YAAY,IAAM,EAAA,IAAA,CAAA,CAAA;AAC1E,EAAA,cAAA,CAAe,OAAO,IAAO,GAAA,IAAA,CAAA;AAC7B,EAAA,IAAI,UAAY,EAAA;AACd,IAAM,MAAA,GAAA,GAAM,IAAK,CAAA,GAAA,CAAI,qBAAsB,CAAA,QAAA,CAAA,CAAA;AAC3C,IAAM,MAAA,GAAA,GAAM,IAAK,CAAA,GAAA,CAAI,qBAAsB,CAAA,QAAA,CAAA,CAAA;AAC3C,IAAA,MAAM,WAAW,OAAU,GAAA,GAAA,CAAA;AAC3B,IAAA,MAAM,WAAW,OAAU,GAAA,GAAA,CAAA;AAC3B,IAAA,MAAM,CAAE,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,GAAM,cAAe,CAAA,kBAAA,CAAA;AACnC,IAAA,cAAA,CAAe,OAAO,QAAS,CAAA,GAAA,CAAI,IAAI,QAAU,EAAA,CAAA,GAAI,UAAU,CAAI,GAAA,OAAA,CAAA,CAAA;AAAA,GAAA;AAErE,EAAA,cAAA,CAAe,MAAO,CAAA,sBAAA,EAAA,CAAA;AACtB,EAAe,cAAA,CAAA,MAAA,EAAA,CAAA;AAAA,CAAA,CAAA;AAOjB,MAAM,kBAA0D,GAAA,CAAC,CAAE,MAAA,EAAQ,SAAgB,CAAA,KAAA;AACzF,EAAM,MAAA,KAAA,GAAQ,MAAM,UAAW,CAAA,iBAAA,CAAA,CAAA;AAC/B,EAAA,MAAM,CAAE,iBAAsB,CAAA,GAAA,kBAAA,EAAA,CAAA;AAC9B,EAAA,MAAM,CAAE,WAAgB,CAAA,GAAA,YAAA,EAAA,CAAA;AACxB,EAAA,MAAM,MAAM,MAAuB,CAAA,IAAA,CAAA,CAAA;AACnC,EAAA,MAAM,OAAO,OAAQ,CAAA,GAAA,CAAA,CAAA;AACrB,EAAA,MAAM,CAAE,CAAM,CAAA,GAAA,cAAA,EAAA,CAAA;AAEd,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,IAAI,OAAS,EAAA;AACf,MAAA,MAAM,KAAO,GAAA;AAAA,QACX,KAAA,EAAO,IAAI,OAAQ,CAAA,WAAA;AAAA,QACnB,MAAA,EAAQ,IAAI,OAAQ,CAAA,YAAA;AAAA,OAAA,CAAA;AAGtB,MAAM,MAAA,oBAAA,GAAuB,IAAI,oBAAqB,CAAA;AAAA,QACpD,WAAW,GAAI,CAAA,OAAA;AAAA,QACf,IAAA,EAAA,KAAA;AAAA,QACA,qBAAuB,EAAA,CAAE,iBAAmB,EAAA,KAAA,EAAO,YAAc,EAAA,IAAA,CAAA;AAAA,QACjE,MAAA;AAAA,QACA,SAAA;AAAA,OAAA,CAAA,CAAA;AAEF,MAAA,KAAA,CAAM,mBAAoB,CAAA,oBAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAG3B,EAAA,EAAA,CAAA,CAAA;AAEH,EAAA,SAAA,CAAU,MAAM;AAEd,IAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,KAAA,CAAM,gBAAkB,EAAA;AACpC,MAAA,OAAA;AAAA,KAAA;AAGF,IAAM,MAAA,CAAE,qBAAuB,EAAA,kBAAA,CAAA,GAAuB,KAAM,CAAA,gBAAA,CAAA;AAO5D,IAAA,qBAAA,CAAsB,QAAS,CAAA,YAAA,EAAc,CAAC,IAAA,EAAc,UAAoB,KAAA;AAC9E,MAAI,IAAA,CAAC,MAAM,qBAAuB,EAAA;AAChC,QAAA,OAAA;AAAA,OAAA;AAEF,MAAA,wBAAA,CACE,UACA,EAAA,IAAA,EACA,IACA,EAAA,KAAA,CAAM,qBACN,EAAA,kBAAA,CAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAKJ,IAAA,qBAAA,CAAsB,QAAS,CAAA,UAAA,EAAY,CAAC,CAAE,YAAY,IAAgB,CAAA,KAAA;AACxE,MAAI,IAAA,CAAC,MAAM,qBAAuB,EAAA;AAChC,QAAA,OAAA;AAAA,OAAA;AAEF,MAAA,wBAAA,CACE,UACA,EAAA,IAAA,EACA,IACA,EAAA,KAAA,CAAM,qBACN,EAAA,kBAAA,CAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAIJ,IAAsB,qBAAA,CAAA,QAAA,CAAS,qBAAuB,EAAA,CAAC,UAAwC,KAAA;AAC7F,MAAA,IAAI,MAAM,WAAY,CAAA,MAAA,KAAW,CAAK,IAAA,UAAA,CAAW,WAAW,CAAG,EAAA;AAC7D,QAAM,MAAA,CAAE,UAAY,EAAA,aAAA,CAAA,GAAkB,UAAW,CAAA,CAAA,CAAA,CAAA;AACjD,QAAA,iBAAA,CAAkB,UAAY,EAAA,aAAA,CAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA,CAAA;AAAA,GAAA,EAGjC,CAAC,KAAO,EAAA,IAAA,CAAA,CAAA,CAAA;AAEX,EAAA,SAAA,CAAU,MAAM;AAtJlB,IAAA,IAAA,EAAA,CAAA;AAwJI,IAAO,CAAA,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,gBAAA,KAAP,mBAAyB,QAAS,CAAA,IAAA,CAAA,CAAA;AAAA,GAAA,EACjC,CAAC,IAAA,CAAA,CAAA,CAAA;AAEJ,EAAA,2CACG,mBAAD,EAAA;AAAA,IACE,SAAA,EAAW,aAAa,uBAAyB,EAAA,WAAA,CAAA;AAAA,IACjD,OAAO,CAAE,CAAA,UAAA,CAAA;AAAA,IACT,OAAA,sCAAU,eAAD,EAAA;AAAA,MAAiB,iBAAiB,gBAAiB,CAAA,IAAA;AAAA,KAAA,CAAA;AAAA,GAAA,sCAE3D,KAAD,EAAA;AAAA,IAAK,SAAA,EAAW,aAAa,uBAAyB,EAAA,qBAAA,CAAA;AAAA,GAAA,sCACnD,KAAD,EAAA;AAAA,IAAK,SAAA,EAAW,aAAa,uBAAyB,EAAA,eAAA,CAAA;AAAA,IAAkB,GAAA;AAAA,GACvE,CAAA,EAAA,CAAC,WAAe,oBAAA,KAAA,CAAA,aAAA,CAAC,SAAD,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAMzB,2BAAe,QAAQ,iBAAmB,EAAA,IAAA,EAAM,IAAM,EAAA,CAAE,SAAS,eAC/D,CAAA,CAAA,CAAA,kBAAA,CAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
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, PointCloudUtils, UpdatePolygonByDragList } 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 { a2MapStateToProps, IA2MapStateProps, 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';\nimport { jsonParser } from '@/utils';\nimport { TDrawLayerSlot } from '@/types/main';\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 checkMode,\n}: {\n setZAxisLimit: (value: number) => void;\n zAxisLimit: number;\n checkMode?: boolean;\n}) => {\n if (checkMode) {\n return null;\n }\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\ninterface IProps extends IA2MapStateProps {\n drawLayerSlot?: TDrawLayerSlot;\n checkMode?: boolean;\n}\n\nconst PointCloudTopView: React.FC<IProps> = ({\n currentData,\n imgList,\n stepInfo,\n drawLayerSlot,\n checkMode,\n}) => {\n const [annotationPos, setAnnotationPos] = useState({ zoom: 1, currentPos: { x: 0, y: 0 } });\n const ref = useRef<HTMLDivElement>(null);\n const ptCtx = React.useContext(PointCloudContext);\n const size = useSize(ref);\n const config = jsonParser(stepInfo.config);\n const { setZoom } = useZoom();\n const { hideAttributes } = ptCtx;\n\n const { addPolygon, deletePolygon } = usePolygon();\n const { deletePointCloudBox, changeValidByID } = useSingleBox();\n const [zAxisLimit, setZAxisLimit] = useState<number>(10);\n const { t } = useTranslation();\n const pointCloudViews = usePointCloudViews();\n\n useLayoutEffect(() => {\n if (ptCtx.topViewInstance) {\n return;\n }\n\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 config,\n checkMode,\n });\n\n ptCtx.setTopViewInstance(pointCloudAnnotation);\n }\n }, [currentData]);\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, zoom: number) => {\n if (TopView2dOperation.pattern === EPolygonPattern.Normal || !currentData?.url) {\n /**\n * Notice. The Polygon need to be converted to pointCloud coordinate system for storage.\n */\n const newPolygon = {\n ...polygon,\n pointList: polygon.pointList.map((v) => PointCloudUtils.transferCanvas2World(v, size)),\n };\n\n addPolygon(newPolygon);\n ptCtx.setSelectedIDs(hideAttributes.includes(polygon.attribute) ? '' : polygon.id);\n return;\n }\n\n pointCloudViews.topViewAddBox({\n newPolygon: polygon,\n size,\n imgList,\n trackConfigurable: config.trackConfigurable,\n zoom,\n });\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', (updateList: UpdatePolygonByDragList) => {\n pointCloudViews.topViewUpdateBox?.(updateList, size);\n });\n\n const validUpdate = (id: string) => {\n // UpdateData.\n const newPointCloudList = changeValidByID(id);\n\n // HighLight\n if (newPointCloudList) {\n ptCtx.syncAllViewPointCloudColor(newPointCloudList);\n }\n if (ptCtx.polygonList.find((v) => v.id === id)) {\n ptCtx.topViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(id, true);\n }\n };\n\n TopView2dOperation.on('validUpdate', validUpdate);\n\n return () => {\n TopView2dOperation.unbind('validUpdate', validUpdate);\n };\n }, [ptCtx, size, currentData, pointCloudViews, ptCtx.polygonList]);\n\n useEffect(() => {\n if (!size?.width || !ptCtx.topViewInstance) {\n return;\n }\n /**\n * Init Config\n *\n * 1. Update defaultAttribute by first attribute;\n * */\n const defaultAttribute = config?.attributeList?.[0]?.value;\n if (defaultAttribute) {\n ptCtx.topViewInstance.pointCloud2dOperation.setDefaultAttribute(defaultAttribute);\n }\n\n // 1. Update Size\n ptCtx.topViewInstance.initSize(size);\n ptCtx.topViewInstance.updatePolygonList(ptCtx.displayPointCloudList, ptCtx.polygonList);\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 setAnnotationPos({ zoom, currentPos });\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 setAnnotationPos({ zoom, currentPos });\n });\n }, [size, ptCtx.topViewInstance]);\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 {drawLayerSlot?.(annotationPos)}\n </div>\n\n <BoxInfos checkMode={checkMode} config={config} />\n <ZAxisSlider checkMode={checkMode} zAxisLimit={zAxisLimit} setZAxisLimit={setZAxisLimit} />\n <PointCloudValidity />\n </div>\n </PointCloudContainer>\n );\n};\n\nexport default connect(a2MapStateToProps, null, null, { context: LabelBeeContext })(\n PointCloudTopView,\n);\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/pointCloudView/components/EmptyPage/index.tsx"],"sourcesContent":["/**\n * @file EmptyPage\n * @createDate 2022-08-31\n * @author Ron <ron.f.luo@gmail.com>\n */\nimport React from 'react';\nimport NoDataSvg from '@/assets/annotation/pointCloudTool/nodata.svg';\nimport { getClassName } from '@/utils/dom';\nimport { useTranslation } from 'react-i18next';\n\nconst EmptyPage = () => {\n const { t } = useTranslation();\n\n return (\n <div className={getClassName('point-cloud-container', 'empty-page')}>\n <img src={NoDataSvg} />\n <span className={getClassName('point-cloud-container', 'empty-page', 'text')}>\n {t('NoData')}\n </span>\n </div>\n );\n};\n\nexport default EmptyPage;\n"],"names":["NoDataSvg"],"mappings":";;;;;AAUA,MAAM,YAAY,MAAM;AACtB,EAAA,MAAM,CAAE,CAAM,CAAA,GAAA,cAAA,EAAA,CAAA;AAEd,EAAA,2CACG,KAAD,EAAA;AAAA,IAAK,SAAA,EAAW,aAAa,uBAAyB,EAAA,YAAA,CAAA;AAAA,GAAA,sCACnD,KAAD,EAAA;AAAA,IAAK,GAAK,EAAAA,GAAA;AAAA,GAAA,CAAA,sCACT,MAAD,EAAA;AAAA,IAAM,SAAA,EAAW,YAAa,CAAA,uBAAA,EAAyB,YAAc,EAAA,MAAA,CAAA;AAAA,GAAA,EAClE,CAAE,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/pointCloudView/components/UnifyParamsModal/index.tsx"],"sourcesContent":["import { ESubmitType } from '@/constant';\nimport { BatchUpdateResultByTrackID, ToSubmitFileData } from '@/store/annotation/actionCreators';\nimport { LabelBeeContext, useDispatch } from '@/store/ctx';\nimport { Form, InputNumber, message, Modal, Popover, Select } from 'antd';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { QuestionCircleOutlined } from '@ant-design/icons';\nimport { IPointCloudConfig, PointCloudUtils } from '@labelbee/lb-utils';\nimport { connect } from 'react-redux';\nimport { AppState } from '@/store';\nimport { AnnotationFileList } from '@/types/data';\nimport { useSingleBox } from '../../hooks/useSingleBox';\nimport { MathUtils } from '@labelbee/lb-annotation';\n\ninterface IProps {\n id?: number;\n visible: boolean;\n onCancel: () => void;\n config: IPointCloudConfig;\n imgList: AnnotationFileList;\n imgIndex: number;\n}\n\nconst layout = {\n labelCol: { span: 8 },\n wrapperCol: { span: 16 },\n};\n\nconst defaultNumberRules = [{ required: true, message: '请填写一个数字' }];\nconst defaultSelectedAttribute = [{ required: true, message: '请选择主属性' }];\nconst DECIMAL_PLACES = 2;\n\nconst PrefixTag: React.FC<{ text: string }> = ({ text }) => {\n return (\n <span\n style={{\n borderRadius: '4px 0px 0px 4px',\n padding: '0px 12px',\n background: '#FAFAFA',\n border: '1px solid rgb(217 217 217)',\n borderRight: '0',\n display: 'flex',\n alignItems: 'center',\n height: 32,\n }}\n >\n {text}\n </span>\n );\n};\n\nconst UnifyParamsModal = ({ id, visible, onCancel, config, imgList, imgIndex }: IProps) => {\n const dispatch = useDispatch();\n const { selectedBox } = useSingleBox();\n const [size, setSize] = useState<{ width: number; height: number; depth: number }>();\n\n const [form] = Form.useForm();\n const { t } = useTranslation();\n\n useEffect(() => {\n if (visible === false) {\n // Clear All Data\n form.resetFields();\n setSize(undefined);\n } else {\n // Init\n recalculateSize();\n }\n }, [visible]);\n\n const onFinish = (values: any) => {\n if (!id) {\n return;\n }\n\n if (!size) {\n message.info('该范围不存在更改数据, 请更改统一范围');\n return;\n }\n\n dispatch(ToSubmitFileData(ESubmitType.SyncImgList));\n const newData = {\n attribute: values.attribute,\n };\n\n if (config.secondaryAttributeConfigurable) {\n const newSubAttribute = {};\n config.inputList?.forEach((data) => {\n const subData = values[data.value];\n if (subData !== undefined) {\n Object.assign(newSubAttribute, { [data.value]: subData });\n }\n });\n\n if (Object.keys(newSubAttribute).length > 0) {\n Object.assign(newData, { subAttribute: newSubAttribute });\n }\n }\n\n if (size) {\n Object.assign(newData, size);\n }\n\n dispatch(BatchUpdateResultByTrackID(id, newData, [values.prevPage - 1, values.nextPage - 1]));\n onCancel();\n };\n\n const recalculateSize = useCallback(() => {\n const { prevPage, nextPage } = form.getFieldsValue(['prevPage', 'nextPage']);\n\n // 1. Filter the imgInfo in range.\n const newImgList = imgList.filter((_, i) =>\n MathUtils.isInRange(i, [prevPage - 1, nextPage - 1]),\n );\n\n if (\n !(newImgList?.length > 0) ||\n !selectedBox?.info ||\n selectedBox?.info?.trackID === undefined\n ) {\n setSize(undefined);\n return;\n }\n\n // 2. Get the Max Size of imgList\n const newMaxSize = PointCloudUtils.getMaxSizeFromBox({\n trackID: selectedBox.info.trackID,\n imgList: newImgList as Array<{ result: string }>,\n });\n\n setSize(newMaxSize);\n }, [imgList, selectedBox, imgIndex]);\n\n const onOk = () => form.submit();\n\n const sizeShow = () => {\n if (!size || !selectedBox?.info) {\n return;\n }\n const style = { marginRight: 16 };\n\n const { length, width, height } = PointCloudUtils.transferBox2Kitti({\n ...selectedBox?.info, // Just for the type check\n ...size,\n });\n\n return (\n <div>\n <span style={style}>\n {t('Length')}: {length.toFixed(DECIMAL_PLACES)}\n </span>\n <span style={style}>\n {t('Width')}: {width.toFixed(DECIMAL_PLACES)}\n </span>\n <span style={style}>\n {t('Height')}: {height.toFixed(DECIMAL_PLACES)}\n </span>\n <Popover placement='rightBottom' content='统一尺寸为该ID的所有标注框中最大的尺寸'>\n <QuestionCircleOutlined />\n </Popover>\n </div>\n );\n };\n const selectStyle = {\n width: '200px',\n };\n\n const attributeStyle = {\n marginBottom: '24px',\n display: 'flex',\n alignItems: 'center',\n };\n\n return (\n <Modal\n title={t('UnifyParams')}\n visible={visible}\n onCancel={onCancel}\n onOk={onOk}\n wrapClassName='labelbee-custom-modal'\n >\n <Form {...layout} form={form} onFinish={onFinish}>\n <Form.Item name='id' label={t('UnifyTrackID')}>\n {id}\n </Form.Item>\n\n <Form.Item label={t('UnifyAttributeRange')} required={true}>\n <Form.Item\n style={{ display: 'inline-block' }}\n rules={defaultNumberRules}\n name='prevPage'\n noStyle={true}\n initialValue={1} // First Page \n >\n <InputNumber\n precision={0}\n min={1}\n style={{ width: '80px' }}\n onChange={() => recalculateSize()}\n />\n </Form.Item>\n <span\n style={{\n display: 'inline-block',\n width: '24px',\n textAlign: 'center',\n }}\n >\n -\n </span>\n <Form.Item\n style={{ display: 'inline-block' }}\n rules={defaultNumberRules}\n name='nextPage'\n noStyle={true}\n initialValue={imgList.length} // Last Page \n >\n <InputNumber\n precision={0}\n min={1}\n style={{ width: '80px' }}\n onChange={() => recalculateSize()}\n />\n </Form.Item>\n <span\n style={{\n display: 'inline-block',\n width: '40x',\n marginLeft: '10px',\n textAlign: 'center',\n }}\n >\n {t('Page')}\n </span>\n </Form.Item>\n\n <Form.Item name='UnifySize' label={t('UnifySize')}>\n {sizeShow()}\n </Form.Item>\n\n <Form.Item label={t('UnifyTag')} required={true}>\n <div style={attributeStyle}>\n <PrefixTag text={t('Attribute')} />\n <Form.Item name='attribute' noStyle={true} rules={defaultSelectedAttribute}>\n <Select style={selectStyle}>\n {config.attributeList.map((v) => (\n <Select.Option key={v.value} value={v.value}>\n {v.key}\n </Select.Option>\n ))}\n </Select>\n </Form.Item>\n </div>\n {config.secondaryAttributeConfigurable &&\n config.inputList.map((v) => (\n <div key={v.value} style={attributeStyle}>\n <PrefixTag text={v.key} />\n <Form.Item name={v.value} noStyle={true} required={false}>\n <Select style={selectStyle}>\n {v.subSelected?.map((subData) => (\n <Select.Option key={subData.value} value={subData.value}>\n {subData.key}\n </Select.Option>\n ))}\n </Select>\n </Form.Item>\n </div>\n ))}\n </Form.Item>\n </Form>\n </Modal>\n );\n};\n\nconst mapStateToProps = (state: AppState) => {\n return {\n imgIndex: state.annotation.imgIndex,\n };\n};\n\nexport default connect(mapStateToProps, null, null, { context: LabelBeeContext })(UnifyParamsModal);\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAttribute.js","sources":["../../../../src/components/pointCloudView/hooks/useAttribute.ts"],"sourcesContent":["import { IPointCloudBox } from '@labelbee/lb-utils';\nimport { useContext, useEffect } from 'react';\nimport { PointCloudContext } from '../PointCloudContext';\n\nexport const useAttribute = () => {\n const {\n topViewInstance,\n sideViewInstance,\n backViewInstance,\n mainViewInstance,\n defaultAttribute,\n setDefaultAttribute,\n } = useContext(PointCloudContext);\n\n useEffect(() => {\n if (!topViewInstance?.pointCloud2dOperation) {\n return;\n }\n\n const updateDefaultAttribute = () => {\n setDefaultAttribute(topViewInstance?.pointCloud2dOperation.defaultAttribute);\n };\n\n topViewInstance?.pointCloud2dOperation.on('changeAttributeSidebar', updateDefaultAttribute);\n\n return () => {\n topViewInstance?.pointCloud2dOperation.unbind(\n 'changeAttributeSidebar',\n updateDefaultAttribute,\n );\n };\n }, [topViewInstance?.pointCloud2dOperation]);\n\n const syncThreeViewsAttribute = (attribute?: string) => {\n [\n topViewInstance?.pointCloud2dOperation,\n sideViewInstance?.pointCloud2dOperation,\n backViewInstance?.pointCloud2dOperation,\n ].forEach((instance) => {\n instance?.setDefaultAttribute(attribute);\n });\n };\n\n const updateDefaultAttribute = (attribute?: string) => {\n topViewInstance?.pointCloud2dOperation.setDefaultAttribute(attribute);\n };\n\n const reRenderPointCloud3DBox = (newBox: IPointCloudBox) => {\n mainViewInstance?.generateBox(newBox);\n };\n\n return {\n syncThreeViewsAttribute,\n updateDefaultAttribute,\n reRenderPointCloud3DBox,\n defaultAttribute,\n };\n};\n"],"names":[],"mappings":";;;AAIO,MAAM,eAAe,MAAM;AAChC,EAAM,MAAA;AAAA,IACJ,eAAA;AAAA,IACA,gBAAA;AAAA,IACA,gBAAA;AAAA,IACA,gBAAA;AAAA,IACA,gBAAA;AAAA,IACA,mBAAA;AAAA,GAAA,GACE,UAAW,CAAA,iBAAA,CAAA,CAAA;AAEf,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,qDAAkB,qBAAuB,CAAA,EAAA;AAC3C,MAAA,OAAA;AAAA,KAAA;AAGF,IAAA,MAAM,0BAAyB,MAAM;AACnC,MAAA,mBAAA,CAAoB,mDAAiB,qBAAsB,CAAA,gBAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAG7D,IAAiB,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,qBAAA,CAAsB,GAAG,wBAA0B,EAAA,uBAAA,CAAA,CAAA;AAEpE,IAAA,OAAO,MAAM;AACX,MAAiB,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,qBAAA,CAAsB,OACrC,wBACA,EAAA,uBAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAAA,EAGH,CAAC,eAAiB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,qBAAA,CAAA,CAAA,CAAA;AAErB,EAAM,MAAA,uBAAA,GAA0B,CAAC,SAAuB,KAAA;AACtD,IAAA;AAAA,MACE,eAAiB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,qBAAA;AAAA,MACjB,gBAAkB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAA,qBAAA;AAAA,MAClB,gBAAkB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAA,qBAAA;AAAA,KAClB,CAAA,OAAA,CAAQ,CAAC,QAAa,KAAA;AACtB,MAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,mBAAoB,CAAA,SAAA,CAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAIlC,EAAM,MAAA,sBAAA,GAAyB,CAAC,SAAuB,KAAA;AACrD,IAAA,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAiB,sBAAsB,mBAAoB,CAAA,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAG7D,EAAM,MAAA,uBAAA,GAA0B,CAAC,MAA2B,KAAA;AAC1D,IAAA,gBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAkB,WAAY,CAAA,MAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAGhC,EAAO,OAAA;AAAA,IACL,uBAAA;AAAA,IACA,sBAAA;AAAA,IACA,uBAAA;AAAA,IACA,gBAAA;AAAA,GAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useBoxes.js","sources":["../../../../src/components/pointCloudView/hooks/useBoxes.ts"],"sourcesContent":["import { IPointCloudBoxList, IPointCloudConfig } from '@labelbee/lb-utils';\nimport { useCallback, useContext, useMemo, useState } from 'react';\nimport _ from 'lodash';\nimport { message, Modal } from 'antd';\nimport { usePointCloudViews } from './usePointCloudViews';\nimport { PointCloudContext } from '../PointCloudContext';\nimport { useTranslation } from 'react-i18next';\n\n/**\n * Actions for selected boxes\n */\nexport const useBoxes = ({ config }: { config: IPointCloudConfig }) => {\n const {\n selectedIDs,\n pointCloudBoxList,\n displayPointCloudList,\n setPointCloudResult,\n syncAllViewPointCloudColor,\n } = useContext(PointCloudContext);\n const [copiedBoxes, setCopiedBoxes] = useState<IPointCloudBoxList>([]);\n const { pointCloudBoxListUpdated } = usePointCloudViews();\n const { t, i18n } = useTranslation();\n\n const hasDuplicateID = (checkBoxList: IPointCloudBoxList) => {\n if (config.trackConfigurable !== true) {\n return false;\n }\n\n return pointCloudBoxList.some((item) => {\n return checkBoxList.some((i) => i.trackID === item.trackID);\n });\n };\n\n const selectedBoxes = useMemo(() => {\n return displayPointCloudList.filter((i) => selectedIDs.includes(i.id));\n }, [selectedIDs, displayPointCloudList]);\n\n const copySelectedBoxes = useCallback(() => {\n if (selectedBoxes.length > 0) {\n setCopiedBoxes(_.cloneDeep(selectedBoxes));\n } else {\n setCopiedBoxes([]);\n message.error(t('CopyEmptyInPointCloud'));\n }\n }, [selectedIDs, displayPointCloudList, i18n.language]);\n\n const pasteSelectedBoxes = useCallback(() => {\n if (copiedBoxes.length === 0) {\n message.error(t('PasteEmptyInPointCloud'));\n return;\n }\n\n const hasDuplicate = hasDuplicateID(copiedBoxes);\n\n const updatePointCloudResult = (newPointCloudBoxList: IPointCloudBoxList) => {\n /** Paste succeed and empty */\n setPointCloudResult(newPointCloudBoxList);\n pointCloudBoxListUpdated?.(newPointCloudBoxList);\n setCopiedBoxes([]);\n\n // TODO: It need to update in global.\n syncAllViewPointCloudColor(newPointCloudBoxList);\n };\n\n if (hasDuplicate) {\n Modal.confirm({\n title: t('HasDuplicateIDHeader'),\n content: t('HasDuplicateIDMsg'),\n onOk: () => {\n /**\n * Filter the same trackID in old-pointCloudBoxList.\n */\n const newPointCloudResult = pointCloudBoxList\n .filter((v) => {\n if (copiedBoxes.find((c) => c.trackID === v.trackID)) {\n return false;\n }\n return true;\n })\n .concat(copiedBoxes);\n\n updatePointCloudResult(newPointCloudResult);\n },\n });\n } else {\n /** Paste succeed and empty */\n const newPointCloudResult = [...displayPointCloudList, ...copiedBoxes];\n\n updatePointCloudResult(newPointCloudResult);\n }\n }, [copiedBoxes, displayPointCloudList, i18n.language]);\n\n return { copySelectedBoxes, pasteSelectedBoxes, copiedBoxes, selectedBoxes };\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useConfig.js","sources":["../../../../src/components/pointCloudView/hooks/useConfig.ts"],"sourcesContent":["import { PointCloudContext } from '../PointCloudContext';\nimport { useContext } from 'react';\nimport { IPointCloudConfig } from '@labelbee/lb-utils';\n\nexport const useConfig = () => {\n const { topViewInstance, sideViewInstance, backViewInstance, mainViewInstance } =\n useContext(PointCloudContext);\n\n const syncAllViewsConfig = (config: IPointCloudConfig) => {\n [topViewInstance, sideViewInstance, backViewInstance].forEach((instance) => {\n instance?.updateConfig(config);\n \n /**\n * If update the config, needs to update defaultAttribute.\n */\n const defaultAttribute = config?.attributeList?.[0]?.value;\n if (defaultAttribute) {\n instance?.pointCloud2dOperation.setDefaultAttribute(defaultAttribute);\n }\n });\n mainViewInstance?.setConfig(config);\n };\n\n const reRenderTopViewRange = (radius: number) => {\n topViewInstance?.pointCloudInstance?.generateRange?.(radius);\n topViewInstance?.pointCloudInstance?.render();\n };\n\n return {\n syncAllViewsConfig,\n reRenderTopViewRange,\n };\n};\n"],"names":[],"mappings":";;;AAIO,MAAM,YAAY,MAAM;AAC7B,EAAA,MAAM,CAAE,eAAA,EAAiB,gBAAkB,EAAA,gBAAA,EAAkB,oBAC3D,UAAW,CAAA,iBAAA,CAAA,CAAA;AAEb,EAAM,MAAA,kBAAA,GAAqB,CAAC,MAA8B,KAAA;AACxD,IAAA,CAAC,eAAiB,EAAA,gBAAA,EAAkB,gBAAkB,CAAA,CAAA,OAAA,CAAQ,CAAC,QAAa,KAAA;AAThF,MAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAUM,MAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,YAAa,CAAA,MAAA,CAAA,CAAA;AAKvB,MAAA,MAAM,gBAAmB,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,aAAR,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAwB,OAAxB,IAA4B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,CAAA;AACrD,MAAA,IAAI,gBAAkB,EAAA;AACpB,QAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,sBAAsB,mBAAoB,CAAA,gBAAA,CAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA,CAAA;AAGxD,IAAA,gBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAkB,SAAU,CAAA,MAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAG9B,EAAM,MAAA,oBAAA,GAAuB,CAAC,MAAmB,KAAA;AAvBnD,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAwBI,IAAiB,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,kBAAA,KAAjB,IAAqC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAA,KAArC,IAAqD,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,MAAA,CAAA,CAAA;AACrD,IAAA,CAAA,EAAA,GAAA,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAiB,uBAAjB,IAAqC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,EAAA,CAAA;AAAA,GAAA,CAAA;AAGvC,EAAO,OAAA;AAAA,IACL,kBAAA;AAAA,IACA,oBAAA;AAAA,GAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useHistory.js","sources":["../../../../src/components/pointCloudView/hooks/useHistory.ts"],"sourcesContent":["import { IPointCloudBox, IPointCloudBoxList, IPolygonData } from '@labelbee/lb-utils';\nimport { useContext } from 'react';\nimport { PointCloudContext } from '../PointCloudContext';\n\nexport const useHistory = () => {\n const {\n history,\n setPointCloudResult,\n setSelectedIDs,\n pointCloudBoxList,\n mainViewInstance,\n topViewInstance,\n polygonList,\n setPolygonList,\n syncAllViewPointCloudColor,\n } = useContext(PointCloudContext);\n\n const addHistory = ({\n newBoxParams,\n newPolygon,\n }: {\n newBoxParams?: IPointCloudBox;\n newPolygon?: IPolygonData;\n }) => {\n const historyRecord = {\n pointCloudBoxList,\n polygonList,\n };\n\n if (newBoxParams) {\n historyRecord.pointCloudBoxList = pointCloudBoxList.concat(newBoxParams);\n }\n\n if (newPolygon) {\n historyRecord.polygonList = polygonList.concat(newPolygon);\n }\n\n history.pushHistory(historyRecord);\n };\n\n const pushHistoryWithList = (\n params: Partial<{\n pointCloudBoxList: IPointCloudBoxList;\n polygonList: IPolygonData[];\n }>,\n ) => {\n const historyRecord = {\n pointCloudBoxList,\n polygonList,\n };\n\n if (params.pointCloudBoxList) {\n historyRecord.pointCloudBoxList = params.pointCloudBoxList;\n }\n\n if (params.polygonList) {\n historyRecord.polygonList = params.polygonList;\n }\n\n history.pushHistory(historyRecord);\n };\n\n const pushHistoryUnderUpdatePolygon = (polygon: IPolygonData) => {\n const selectedPolygon = polygonList.find((v) => v.id === polygon.id);\n\n if (selectedPolygon) {\n const newPolygonList = polygonList.map((v) => {\n if (v.id === polygon.id) {\n return polygon;\n }\n return {\n ...v,\n };\n });\n history.pushHistory({\n pointCloudBoxList,\n polygonList: newPolygonList,\n });\n setPolygonList(newPolygonList);\n }\n };\n\n const initHistory = ({\n pointCloudBoxList,\n polygonList,\n }: {\n pointCloudBoxList: IPointCloudBoxList;\n polygonList: IPolygonData[];\n }) => {\n history.initRecord({ pointCloudBoxList, polygonList }, true);\n };\n\n const updatePointCloud = (params?: {\n pointCloudBoxList: IPointCloudBoxList;\n polygonList: IPolygonData[];\n }) => {\n if (!params) {\n return;\n }\n\n const { pointCloudBoxList: newPointCloudBoxList = [], polygonList: newPolygonList = [] } =\n params;\n\n if (newPointCloudBoxList) {\n if (pointCloudBoxList.length !== newPointCloudBoxList.length) {\n setSelectedIDs();\n }\n\n const deletePointCloudList = pointCloudBoxList.filter((v) =>\n newPointCloudBoxList.every((d) => d.id !== v.id),\n );\n const addPointCloudList = newPointCloudBoxList.filter((v) =>\n pointCloudBoxList.every((d) => d.id !== v.id),\n );\n\n // Clear All Data\n deletePointCloudList.forEach((v) => {\n mainViewInstance?.removeObjectByName(v.id);\n });\n\n // Add Init Box\n addPointCloudList.forEach((v) => {\n mainViewInstance?.generateBox(v);\n });\n\n setPointCloudResult(newPointCloudBoxList);\n syncAllViewPointCloudColor(newPointCloudBoxList);\n }\n\n if (newPolygonList) {\n setPolygonList(newPolygonList);\n }\n\n topViewInstance?.updatePolygonList(newPointCloudBoxList ?? [], newPolygonList ?? []);\n };\n\n const redo = () => {\n updatePointCloud(history.redo());\n };\n\n const undo = () => {\n updatePointCloud(history.undo());\n };\n\n return {\n addHistory,\n pushHistoryWithList,\n initHistory,\n pushHistoryUnderUpdatePolygon,\n redo,\n undo,\n };\n};\n"],"names":[],"mappings":"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"}
|