@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,119 +0,0 @@
|
|
|
1
|
-
import { useContext, useMemo, useCallback } from 'react';
|
|
2
|
-
import _ from 'lodash';
|
|
3
|
-
import { PointCloudContext } from '../PointCloudContext.js';
|
|
4
|
-
import { cAnnotation } from '@labelbee/lb-annotation';
|
|
5
|
-
import { useHistory } from './useHistory.js';
|
|
6
|
-
|
|
7
|
-
const {ESortDirection} = cAnnotation;
|
|
8
|
-
const usePointCloudBoxes = () => {
|
|
9
|
-
const {
|
|
10
|
-
pointCloudBoxList,
|
|
11
|
-
setPointCloudResult,
|
|
12
|
-
topViewInstance,
|
|
13
|
-
backViewInstance,
|
|
14
|
-
sideViewInstance,
|
|
15
|
-
selectedIDs,
|
|
16
|
-
selectedID,
|
|
17
|
-
mainViewInstance,
|
|
18
|
-
setSelectedIDs
|
|
19
|
-
} = useContext(PointCloudContext);
|
|
20
|
-
const {pushHistoryWithList} = useHistory();
|
|
21
|
-
const selectedBox = useMemo(() => {
|
|
22
|
-
const boxIndex = pointCloudBoxList.findIndex((i) => i.id === selectedID);
|
|
23
|
-
if (boxIndex > -1) {
|
|
24
|
-
return {info: pointCloudBoxList[boxIndex], index: boxIndex};
|
|
25
|
-
}
|
|
26
|
-
}, [selectedID, pointCloudBoxList]);
|
|
27
|
-
const updateSelectedBox = useCallback((params) => {
|
|
28
|
-
if (selectedBox == null ? void 0 : selectedBox.info) {
|
|
29
|
-
pointCloudBoxList.splice(selectedBox.index, 1, _.merge(selectedBox.info, params));
|
|
30
|
-
const newPointCloudBoxList = _.cloneDeep(pointCloudBoxList);
|
|
31
|
-
setPointCloudResult(newPointCloudBoxList);
|
|
32
|
-
pushHistoryWithList({pointCloudBoxList: newPointCloudBoxList});
|
|
33
|
-
}
|
|
34
|
-
}, [selectedID, pointCloudBoxList]);
|
|
35
|
-
const updateBoxByID = useCallback((params, id) => {
|
|
36
|
-
const boxIndex = pointCloudBoxList.findIndex((v) => v.id === id);
|
|
37
|
-
if (boxIndex > -1) {
|
|
38
|
-
pointCloudBoxList.splice(boxIndex, 1, _.merge(pointCloudBoxList[boxIndex], params));
|
|
39
|
-
setPointCloudResult(_.cloneDeep(pointCloudBoxList));
|
|
40
|
-
}
|
|
41
|
-
}, [pointCloudBoxList]);
|
|
42
|
-
const changePolygonViewValid = useCallback((id) => {
|
|
43
|
-
topViewInstance == null ? void 0 : topViewInstance.pointCloud2dOperation.setPolygonValidAndRender(id, true);
|
|
44
|
-
sideViewInstance == null ? void 0 : sideViewInstance.pointCloud2dOperation.setPolygonValidAndRender(id, true);
|
|
45
|
-
backViewInstance == null ? void 0 : backViewInstance.pointCloud2dOperation.setPolygonValidAndRender(id, true);
|
|
46
|
-
}, [topViewInstance, sideViewInstance, backViewInstance]);
|
|
47
|
-
const changeSelectedBoxValid = useCallback(() => {
|
|
48
|
-
if (selectedBox == null ? void 0 : selectedBox.info) {
|
|
49
|
-
const {id, valid = true} = selectedBox.info;
|
|
50
|
-
updateSelectedBox({valid: !valid});
|
|
51
|
-
changePolygonViewValid(id);
|
|
52
|
-
}
|
|
53
|
-
}, [changePolygonViewValid, selectedBox]);
|
|
54
|
-
const changeBoxValidByID = useCallback((id) => {
|
|
55
|
-
const boxInfo = pointCloudBoxList.find((v) => v.id === id);
|
|
56
|
-
if (boxInfo) {
|
|
57
|
-
const {id: id2, valid = true} = boxInfo;
|
|
58
|
-
updateBoxByID({valid: !valid}, id2);
|
|
59
|
-
changePolygonViewValid(id2);
|
|
60
|
-
}
|
|
61
|
-
}, [changePolygonViewValid, pointCloudBoxList]);
|
|
62
|
-
const switchToNextBox = useCallback((sort = ESortDirection.ascend) => {
|
|
63
|
-
if (!topViewInstance || selectedIDs.length > 1) {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
const {pointCloud2dOperation} = topViewInstance;
|
|
67
|
-
const newSelectedIDs = pointCloud2dOperation.switchToNextPolygon(sort);
|
|
68
|
-
if (newSelectedIDs) {
|
|
69
|
-
setSelectedIDs(newSelectedIDs);
|
|
70
|
-
}
|
|
71
|
-
}, [topViewInstance]);
|
|
72
|
-
const selectPrevBox = () => {
|
|
73
|
-
switchToNextBox(ESortDirection.descend);
|
|
74
|
-
};
|
|
75
|
-
const deletePointCloudBox = (id) => {
|
|
76
|
-
setPointCloudResult(pointCloudBoxList.filter((v) => v.id !== id));
|
|
77
|
-
mainViewInstance == null ? void 0 : mainViewInstance.removeObjectByName(id);
|
|
78
|
-
mainViewInstance == null ? void 0 : mainViewInstance.render();
|
|
79
|
-
};
|
|
80
|
-
const selectedBoxes = useMemo(() => {
|
|
81
|
-
return pointCloudBoxList.filter((i) => selectedIDs.includes(i.id));
|
|
82
|
-
}, [selectedIDs, pointCloudBoxList]);
|
|
83
|
-
const updateSelectedBoxes = useCallback((updateList) => {
|
|
84
|
-
const newPointCloudBoxList = _.cloneDeep(pointCloudBoxList);
|
|
85
|
-
let hasModify = false;
|
|
86
|
-
updateList.forEach((i) => {
|
|
87
|
-
const index = newPointCloudBoxList.findIndex((p) => p.id === i.id);
|
|
88
|
-
if (index > -1) {
|
|
89
|
-
const updatedBoxParam = _.merge(newPointCloudBoxList[index], i);
|
|
90
|
-
newPointCloudBoxList.splice(index, 1, updatedBoxParam);
|
|
91
|
-
mainViewInstance == null ? void 0 : mainViewInstance.generateBox(updatedBoxParam);
|
|
92
|
-
hasModify = true;
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
if (hasModify) {
|
|
96
|
-
setPointCloudResult(newPointCloudBoxList);
|
|
97
|
-
pushHistoryWithList({pointCloudBoxList: newPointCloudBoxList});
|
|
98
|
-
mainViewInstance == null ? void 0 : mainViewInstance.render();
|
|
99
|
-
}
|
|
100
|
-
}, [selectedIDs, pointCloudBoxList]);
|
|
101
|
-
const getPointCloudByID = useCallback((id) => {
|
|
102
|
-
return pointCloudBoxList.find((i) => i.id === id);
|
|
103
|
-
}, [pointCloudBoxList]);
|
|
104
|
-
return {
|
|
105
|
-
selectedBox,
|
|
106
|
-
updateSelectedBox,
|
|
107
|
-
changeSelectedBoxValid,
|
|
108
|
-
changeBoxValidByID,
|
|
109
|
-
selectNextBox: switchToNextBox,
|
|
110
|
-
selectPrevBox,
|
|
111
|
-
deletePointCloudBox,
|
|
112
|
-
selectedBoxes,
|
|
113
|
-
updateSelectedBoxes,
|
|
114
|
-
getPointCloudByID
|
|
115
|
-
};
|
|
116
|
-
};
|
|
117
|
-
|
|
118
|
-
export { usePointCloudBoxes };
|
|
119
|
-
//# sourceMappingURL=usePointCloudBoxes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usePointCloudBoxes.js","sources":["../../../../src/components/pointCloudView/hooks/usePointCloudBoxes.ts"],"sourcesContent":["import { IPointCloudBox, PartialIPointCloudBoxList } from '@labelbee/lb-utils';\nimport { useCallback, useContext, useMemo } from 'react';\nimport _ from 'lodash';\nimport { PointCloudContext } from '../PointCloudContext';\nimport { cAnnotation } from '@labelbee/lb-annotation';\nimport { useHistory } from './useHistory';\n\nconst { ESortDirection } = cAnnotation;\n\n/**\n * Actions for selected boxes\n * @returns\n */\nexport const usePointCloudBoxes = () => {\n const {\n pointCloudBoxList,\n setPointCloudResult,\n topViewInstance,\n backViewInstance,\n sideViewInstance,\n selectedIDs,\n selectedID,\n mainViewInstance,\n setSelectedIDs,\n } = useContext(PointCloudContext);\n\n const { pushHistoryWithList } = useHistory();\n\n /** Returns { info: selected box, index: selected box index } */\n const selectedBox = useMemo(() => {\n const boxIndex = pointCloudBoxList.findIndex((i: { id: string }) => i.id === selectedID);\n if (boxIndex > -1) {\n return { info: pointCloudBoxList[boxIndex], index: boxIndex };\n }\n }, [selectedID, pointCloudBoxList]);\n\n /** Use Partial<IPointCloudBox> to update selected box */\n const updateSelectedBox = useCallback(\n (params: Partial<IPointCloudBox>) => {\n if (selectedBox?.info) {\n pointCloudBoxList.splice(selectedBox.index, 1, _.merge(selectedBox.info, params));\n const newPointCloudBoxList = _.cloneDeep(pointCloudBoxList);\n setPointCloudResult(newPointCloudBoxList);\n pushHistoryWithList({ pointCloudBoxList: newPointCloudBoxList });\n }\n },\n [selectedID, pointCloudBoxList],\n );\n\n /** Use Partial<IPointCloudBox> to update box by ID */\n const updateBoxByID = useCallback(\n (params: Partial<IPointCloudBox>, id: string) => {\n const boxIndex = pointCloudBoxList.findIndex((v) => v.id === id);\n\n if (boxIndex > -1) {\n pointCloudBoxList.splice(boxIndex, 1, _.merge(pointCloudBoxList[boxIndex], params));\n setPointCloudResult(_.cloneDeep(pointCloudBoxList));\n }\n },\n [pointCloudBoxList],\n );\n\n /**\n * Change all polygonView Valid.\n */\n const changePolygonViewValid = useCallback(\n (id: string) => {\n topViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(id, true);\n sideViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(id, true);\n backViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(id, true);\n },\n [topViewInstance, sideViewInstance, backViewInstance],\n );\n\n /** Toggle selected box‘s validity */\n const changeSelectedBoxValid = useCallback(() => {\n if (selectedBox?.info) {\n const { id, valid = true } = selectedBox.info;\n\n // PointCloud\n updateSelectedBox({ valid: !valid });\n\n changePolygonViewValid(id);\n }\n }, [changePolygonViewValid, selectedBox]);\n\n const changeBoxValidByID = useCallback(\n (id: string) => {\n const boxInfo = pointCloudBoxList.find((v) => v.id === id);\n\n if (boxInfo) {\n const { id, valid = true } = boxInfo;\n\n // PointCloud\n updateBoxByID({ valid: !valid }, id);\n\n changePolygonViewValid(id);\n }\n },\n [changePolygonViewValid, pointCloudBoxList],\n );\n\n /** PointCloud select next/prev one */\n const switchToNextBox = useCallback(\n (sort = ESortDirection.ascend) => {\n if (!topViewInstance || selectedIDs.length > 1) {\n return;\n }\n\n const { pointCloud2dOperation } = topViewInstance;\n\n const newSelectedIDs = pointCloud2dOperation.switchToNextPolygon(sort);\n if (newSelectedIDs) {\n setSelectedIDs(newSelectedIDs);\n }\n },\n [topViewInstance],\n );\n\n const selectPrevBox = () => {\n switchToNextBox(ESortDirection.descend);\n };\n\n const deletePointCloudBox = (id: string) => {\n setPointCloudResult(pointCloudBoxList.filter((v) => v.id !== id));\n mainViewInstance?.removeObjectByName(id);\n mainViewInstance?.render();\n // TODO Clear Highlight.\n };\n\n /**\n * According to selectedIDs, return selected pointCloudList\n * @returns pointCloudList {IPointCloudBoxList}\n */\n const selectedBoxes = useMemo(() => {\n return pointCloudBoxList.filter((i) => selectedIDs.includes(i.id));\n }, [selectedIDs, pointCloudBoxList]);\n\n /**\n * Update point cloud boxes list by updateList\n * @param updateList {PartialIPointCloudBoxList}\n */\n const updateSelectedBoxes = useCallback(\n (updateList: PartialIPointCloudBoxList) => {\n const newPointCloudBoxList = _.cloneDeep(pointCloudBoxList);\n let hasModify = false;\n\n updateList.forEach((i) => {\n const index = newPointCloudBoxList.findIndex((p) => p.id === i.id);\n\n if (index > -1) {\n const updatedBoxParam = _.merge(newPointCloudBoxList[index], i);\n newPointCloudBoxList.splice(index, 1, updatedBoxParam);\n mainViewInstance?.generateBox(updatedBoxParam);\n hasModify = true;\n }\n });\n\n if (hasModify) {\n setPointCloudResult(newPointCloudBoxList);\n pushHistoryWithList({ pointCloudBoxList: newPointCloudBoxList });\n mainViewInstance?.render();\n }\n },\n [selectedIDs, pointCloudBoxList],\n );\n\n /**\n * @param id {string}\n * @returns pointCloud {IPointCloudBox | undefined }\n */\n const getPointCloudByID = useCallback(\n (id: string) => {\n return pointCloudBoxList.find((i) => i.id === id);\n },\n [pointCloudBoxList],\n );\n\n return {\n selectedBox,\n updateSelectedBox,\n changeSelectedBoxValid,\n changeBoxValidByID,\n selectNextBox: switchToNextBox,\n selectPrevBox,\n deletePointCloudBox,\n selectedBoxes,\n updateSelectedBoxes,\n getPointCloudByID,\n };\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usePointCloudViews.js","sources":["../../../../src/components/pointCloudView/hooks/usePointCloudViews.ts"],"sourcesContent":["/**\n * @file Point cloud interface for crud\n * @author Glenfiddish <edwinlee0927@hotmail.com>\n * @createdate 2022-08-17\n */\nimport {\n PointCloudAnnotation,\n PointCloud,\n MathUtils,\n getCuboidFromPointCloudBox,\n} from '@labelbee/lb-annotation';\nimport {\n IPointCloudBox,\n EPerspectiveView,\n PointCloudUtils,\n IPolygonPoint,\n UpdatePolygonByDragList,\n} from '@labelbee/lb-utils';\nimport { useContext } from 'react';\nimport { PointCloudContext } from '../PointCloudContext';\nimport { useSingleBox } from './useSingleBox';\nimport { ISize } from '@/types/main';\nimport _ from 'lodash';\nimport { useDispatch, useSelector } from '@/store/ctx';\nimport { AppState } from '@/store';\nimport StepUtils from '@/utils/StepUtils';\nimport { jsonParser } from '@/utils';\nimport { SetPointCloudLoading } from '@/store/annotation/actionCreators';\nimport { message } from 'antd';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from './useHistory';\nimport { usePolygon } from './usePolygon';\nimport { IFileItem } from '@/types/data';\n\nconst DEFAULT_SCOPE = 5;\nconst DEFAULT_RADIUS = 90;\n\nconst PointCloudView = {\n '3D': '3D',\n Top: 'Top',\n Side: 'Side',\n Back: 'Back',\n};\n\nexport const topViewPolygon2PointCloud = (\n newPolygon: any,\n size: ISize,\n pointCloud?: PointCloud,\n selectedPointCloudBox?: IPointCloudBox,\n defaultValue?: { [v: string]: any },\n) => {\n const [point1, point2, point3, point4] = newPolygon.pointList.map((v: any) =>\n PointCloudUtils.transferCanvas2World(v, size),\n );\n\n const centerPoint = MathUtils.getLineCenterPoint([point1, point3]);\n const height = MathUtils.getLineLength(point1, point2);\n const width = MathUtils.getLineLength(point2, point3);\n const rotation = MathUtils.getRadiusFromQuadrangle(newPolygon.pointList);\n let z = 0;\n let depth = 1;\n let extraData = {};\n\n // Init PointCloud Data\n if (pointCloud) {\n const zInfo = pointCloud.getSensesPointZAxisInPolygon([point1, point2, point3, point4]);\n z = (zInfo.maxZ + zInfo.minZ) / 2;\n depth = zInfo.maxZ - zInfo.minZ;\n extraData = {\n count: zInfo.zCount,\n };\n }\n\n if (selectedPointCloudBox) {\n z = selectedPointCloudBox.center.z;\n depth = selectedPointCloudBox.depth;\n }\n\n const newPosition = {\n center: {\n x: centerPoint.x,\n y: centerPoint.y,\n z,\n },\n width,\n height,\n depth,\n rotation,\n id: newPolygon.id,\n };\n\n /** TrackID will append before it pushed */\n const boxParams: Omit<IPointCloudBox, 'trackID'> = selectedPointCloudBox\n ? {\n ...selectedPointCloudBox,\n ...newPosition,\n ...extraData,\n }\n : {\n // Init Data\n ...newPosition,\n attribute: '',\n valid: true,\n ...extraData,\n };\n\n if (defaultValue) {\n Object.assign(boxParams, defaultValue);\n }\n\n return boxParams;\n};\n\nconst sideViewPolygon2PointCloud = (\n newPolygon: any,\n originPolygon: any,\n selectedPointCloudBox: IPointCloudBox,\n pointCloudInstance: PointCloud,\n) => {\n const [point1, point2, point3] = newPolygon.pointList;\n const [op1, op2, op3] = originPolygon.pointList;\n\n // 2D centerPoint => 3D x & z\n const newCenterPoint = MathUtils.getLineCenterPoint([point1, point3]);\n const oldCenterPoint = MathUtils.getLineCenterPoint([op1, op3]);\n\n const offset = {\n x: newCenterPoint.x - oldCenterPoint.x,\n y: newCenterPoint.y - oldCenterPoint.y,\n };\n\n /**\n * The key of sideView change is x & z, y isn't used.\n */\n const offsetCenterPoint = {\n x: offset.x,\n y: 0,\n z: newCenterPoint.y - oldCenterPoint.y,\n };\n\n // 2D height => 3D depth\n const height = MathUtils.getLineLength(point1, point2);\n const oldHeight = MathUtils.getLineLength(op1, op2);\n const offsetHeight = height - oldHeight; // 3D depth\n\n // 2D width => 3D width\n const width = MathUtils.getLineLength(point2, point3);\n const oldWidth = MathUtils.getLineLength(op2, op3);\n const offsetWidth = width - oldWidth; // 3D width\n\n const { newBoxParams } = pointCloudInstance.getNewBoxBySideUpdate(\n offsetCenterPoint,\n offsetWidth,\n offsetHeight,\n selectedPointCloudBox,\n );\n\n return newBoxParams;\n};\n\nconst backViewPolygon2PointCloud = (\n newPolygon: any,\n originPolygon: any,\n selectedPointCloudBox: IPointCloudBox,\n pointCloudInstance: PointCloud,\n) => {\n // Notice. The sort of polygon is important.\n const [point1, point2, point3] = newPolygon.pointList;\n const [op1, op2, op3] = originPolygon.pointList;\n\n // 2D centerPoint => 3D x & z\n const newCenterPoint = MathUtils.getLineCenterPoint([point1, point3]);\n const oldCenterPoint = MathUtils.getLineCenterPoint([op1, op3]);\n\n const offset = {\n x: newCenterPoint.x - oldCenterPoint.x,\n y: newCenterPoint.y - oldCenterPoint.y,\n };\n\n const offsetCenterPoint = {\n x: offset.x,\n y: 0, // Not be used.\n z: newCenterPoint.y - oldCenterPoint.y,\n };\n\n // 2D height => 3D depth\n const height = MathUtils.getLineLength(point1, point2);\n const oldHeight = MathUtils.getLineLength(op1, op2);\n const offsetHeight = height - oldHeight; // 3D depth\n\n // 2D width => 3D width\n const width = MathUtils.getLineLength(point2, point3);\n const oldWidth = MathUtils.getLineLength(op2, op3);\n const offsetWidth = width - oldWidth; // 3D width\n\n let { newBoxParams } = pointCloudInstance.getNewBoxByBackUpdate(\n offsetCenterPoint,\n offsetWidth,\n offsetHeight,\n selectedPointCloudBox,\n );\n\n return newBoxParams;\n};\n/**\n * NewBox synchronize sideView\n * @param boxParams\n * @param newPolygon TODO! Need to add type\n */\nexport const synchronizeSideView = (\n boxParams: IPointCloudBox,\n newPolygon: any,\n sideViewInstance: PointCloudAnnotation | undefined,\n url: string,\n) => {\n if (!sideViewInstance) {\n return;\n }\n\n const { pointCloud2dOperation, pointCloudInstance } = sideViewInstance;\n\n // Create PointCloud\n pointCloudInstance.loadPCDFileByBox(url, boxParams, {\n width: DEFAULT_SCOPE,\n depth: DEFAULT_SCOPE,\n });\n const { cameraPositionVector } = pointCloudInstance.updateOrthoCamera(\n boxParams,\n EPerspectiveView.Left,\n );\n\n pointCloudInstance.setInitCameraPosition(cameraPositionVector);\n\n // Create Draw Polygon\n const { polygon2d, zoom } = pointCloudInstance.getBoxSidePolygon2DCoordinate(boxParams);\n\n // Synchronize SidePointCloud zoom with PointCloud2dOperation\n pointCloudInstance.camera.zoom = zoom;\n pointCloudInstance.camera.updateProjectionMatrix();\n pointCloudInstance.render();\n\n // Update PolygonView to default zoom and currentPos.\n pointCloud2dOperation.initPosition();\n pointCloud2dOperation.zoomChangeOnCenter(zoom);\n pointCloud2dOperation.setResultAndSelectedID(\n [\n {\n id: newPolygon.id,\n valid: boxParams.valid,\n pointList: polygon2d,\n textAttribute: '',\n isRect: true,\n attribute: boxParams.attribute,\n },\n ],\n newPolygon.id,\n );\n};\n\n/**\n * NewBox synchronize backView\n * @param boxParams\n * @param newPolygon TODO! Need to add type\n */\nexport const synchronizeBackView = (\n boxParams: IPointCloudBox,\n newPolygon: any,\n BackViewInstance: PointCloudAnnotation,\n url: string,\n) => {\n if (!BackViewInstance) {\n return;\n }\n\n const {\n pointCloud2dOperation: backPointCloudPolygonOperation,\n pointCloudInstance: backPointCloud,\n } = BackViewInstance;\n\n // Create PointCloud\n backPointCloud.loadPCDFileByBox(url, boxParams, { height: DEFAULT_SCOPE, depth: DEFAULT_SCOPE });\n const { cameraPositionVector } = backPointCloud.updateOrthoCamera(\n boxParams,\n EPerspectiveView.Back,\n );\n\n backPointCloud.setInitCameraPosition(cameraPositionVector);\n\n // Create Draw Polygon\n const { polygon2d, zoom } = backPointCloud.getBoxBackPolygon2DCoordinate(boxParams);\n\n // Synchronize SidePointCloud zoom with PointCloud2dOperation\n backPointCloud.camera.zoom = zoom;\n backPointCloud.camera.updateProjectionMatrix();\n backPointCloud.render();\n\n // Update PolygonView to default zoom and currentPos.\n backPointCloudPolygonOperation.initPosition();\n backPointCloudPolygonOperation.zoomChangeOnCenter(zoom);\n backPointCloudPolygonOperation.setResultAndSelectedID(\n [\n {\n id: newPolygon.id,\n valid: boxParams.valid,\n pointList: polygon2d,\n textAttribute: '',\n isRect: true,\n attribute: boxParams.attribute,\n },\n ],\n newPolygon.id,\n );\n};\n\n/**\n * NewBox synchronize TopView\n * @param boxParams\n * @param newPolygon TODO! Need to add type\n */\nexport const synchronizeTopView = (\n newBoxParams: IPointCloudBox,\n newPolygon: any,\n topViewInstance?: PointCloudAnnotation,\n mainViewInstance?: PointCloud,\n) => {\n if (!topViewInstance || !mainViewInstance) {\n return;\n }\n\n // Control the 3D view data to create box\n mainViewInstance.generateBox(newBoxParams, newPolygon.id);\n mainViewInstance.updateCameraByBox(newBoxParams, EPerspectiveView.Top);\n mainViewInstance.render();\n\n const { pointCloud2dOperation, pointCloudInstance } = topViewInstance;\n\n const { polygon2d } = pointCloudInstance.getBoxTopPolygon2DCoordinate(newBoxParams);\n\n const newPolygonList = [...pointCloud2dOperation.polygonList];\n const oldPolygon = newPolygonList.find((v) => v.id === newPolygon.id);\n if (oldPolygon) {\n oldPolygon.pointList = polygon2d;\n } else {\n newPolygonList.push({\n id: newPolygon.id,\n pointList: polygon2d,\n textAttribute: '',\n isRect: true,\n valid: newBoxParams.valid ?? true,\n });\n }\n\n pointCloud2dOperation.setResultAndSelectedID(newPolygonList, newPolygon.id);\n};\n\nexport const usePointCloudViews = () => {\n const ptCtx = useContext(PointCloudContext);\n const {\n topViewInstance,\n sideViewInstance,\n backViewInstance,\n mainViewInstance,\n addPointCloudBox,\n setSelectedIDs,\n selectedIDs,\n pointCloudBoxList,\n hideAttributes,\n } = ptCtx;\n const { addHistory, initHistory, pushHistoryUnderUpdatePolygon } = useHistory();\n const { selectedPolygon } = usePolygon();\n\n const { updateSelectedBox, updateSelectedBoxes, getPointCloudByID } = useSingleBox();\n const { currentData, config } = useSelector((state: AppState) => {\n const { stepList, step, imgList, imgIndex } = state.annotation;\n\n return {\n currentData: imgList[imgIndex],\n config: jsonParser(StepUtils.getCurrentStepInfo(step, stepList).config),\n };\n });\n const dispatch = useDispatch();\n const { selectedBox } = useSingleBox();\n const { t } = useTranslation();\n\n const selectedPointCloudBox = selectedBox?.info;\n\n if (!topViewInstance || !sideViewInstance || !backViewInstance) {\n return {\n topViewAddBox: () => {},\n topViewSelectedChanged: () => {},\n sideViewUpdateBox: () => {},\n backViewUpdateBox: () => {},\n };\n }\n\n const { pointCloudInstance: topViewPointCloud } = topViewInstance;\n\n const mainViewGenBox = (boxParams: IPointCloudBox) => {\n mainViewInstance?.generateBox(boxParams);\n mainViewInstance?.controls.update();\n mainViewInstance?.render();\n };\n\n /** Top-view create box from 2D */\n const topViewAddBox = ({\n newPolygon,\n size,\n imgList,\n trackConfigurable,\n zoom,\n }: {\n newPolygon: any;\n size: ISize;\n imgList: IFileItem[];\n trackConfigurable?: boolean;\n zoom: number;\n }) => {\n const extraData = {\n attribute: topViewInstance.pointCloud2dOperation.defaultAttribute ?? '',\n };\n\n if (trackConfigurable === true) {\n Object.assign(extraData, {\n trackID: PointCloudUtils.getNextTrackID({\n imgList: [], // Just calculate by the pointCloudBoxList in current page.\n extraBoxList: pointCloudBoxList,\n }),\n });\n }\n\n const newParams = topViewPolygon2PointCloud(\n newPolygon,\n size,\n topViewPointCloud,\n undefined,\n extraData,\n );\n const polygonOperation = topViewInstance?.pointCloud2dOperation;\n\n const boxParams: IPointCloudBox = newParams;\n\n // If the count is less than lowerLimitPointsNumInBox, needs to delete it\n if (\n config?.lowerLimitPointsNumInBox &&\n typeof newParams.count === 'number' &&\n newParams.count < config.lowerLimitPointsNumInBox\n ) {\n message.info(t('LowerLimitPointsNumInBox', { num: config.lowerLimitPointsNumInBox }));\n polygonOperation.deletePolygon(newParams.id);\n return;\n }\n\n const isBoxHidden = hideAttributes.includes(newPolygon.attribute);\n const newPointCloudList = addPointCloudBox(boxParams);\n\n /** If new box is hidden will not active target point box */\n if (isBoxHidden) {\n setSelectedIDs([]);\n } else {\n setSelectedIDs(boxParams.id);\n polygonOperation.setSelectedIDs([newPolygon.id]);\n syncPointCloudViews(PointCloudView.Top, newPolygon, boxParams, zoom, newPointCloudList);\n }\n\n addHistory({ newBoxParams: boxParams });\n };\n\n /** Top-view selected changed and render to other view */\n const topViewSelectedChanged = (\n newSelectedBox?: IPointCloudBox,\n newPointCloudList?: IPointCloudBox[],\n ) => {\n const boxParams = newSelectedBox ?? selectedBox?.info;\n const polygonOperation = topViewInstance?.pointCloud2dOperation;\n\n polygonOperation.setSelectedIDs(selectedIDs);\n\n if (selectedIDs.length === 0 || !polygonOperation) {\n return;\n }\n\n const polygon = polygonOperation.selectedPolygon;\n\n if (selectedIDs.length === 1 && boxParams) {\n syncPointCloudViews(PointCloudView.Top, polygon, boxParams, undefined, newPointCloudList);\n return;\n }\n };\n\n /**\n * Update box from view\n * @param newPolygon\n * @param originPolygon\n * @param fromView Back or Side\n */\n const viewUpdateBox = (newPolygon: any, originPolygon: any, fromView: string) => {\n if (selectedPointCloudBox) {\n let transfer2PointCloud;\n let newBoxParams;\n\n // Switch the right function.\n switch (fromView) {\n case PointCloudView.Back:\n transfer2PointCloud = backViewPolygon2PointCloud;\n break;\n case PointCloudView.Side:\n transfer2PointCloud = sideViewPolygon2PointCloud;\n break;\n\n default:\n transfer2PointCloud = sideViewPolygon2PointCloud;\n break;\n }\n\n newBoxParams = transfer2PointCloud(\n newPolygon,\n originPolygon,\n selectedPointCloudBox,\n sideViewInstance.pointCloudInstance,\n );\n // Update count\n if (mainViewInstance) {\n const { count } = mainViewInstance.getSensesPointZAxisInPolygon(\n getCuboidFromPointCloudBox(newBoxParams).polygonPointList as IPolygonPoint[],\n [\n newBoxParams.center.z - newBoxParams.depth / 2,\n newBoxParams.center.z + newBoxParams.depth / 2,\n ],\n );\n\n newBoxParams = {\n ...newBoxParams,\n count,\n };\n }\n\n const newPointCloudList = updateSelectedBox(newBoxParams);\n syncPointCloudViews(fromView, newPolygon, newBoxParams, undefined, newPointCloudList);\n return newPointCloudList;\n }\n };\n\n const sideViewUpdateBox = (newPolygon: any, originPolygon: any) => {\n viewUpdateBox(newPolygon, originPolygon, PointCloudView.Side);\n };\n\n const backViewUpdateBox = (newPolygon: any, originPolygon: any) => {\n viewUpdateBox(newPolygon, originPolygon, PointCloudView.Back);\n };\n\n /**\n * Top view box updated and sync views\n * @param polygon\n * @param size\n */\n const topViewUpdateBox = (updateList: UpdatePolygonByDragList, size: ISize) => {\n // If the selected Object is Polygon.\n if (selectedPolygon) {\n /**\n * Notice. The Polygon need to be converted to pointCloud coordinate system for storage.\n */\n const polygon = updateList[0].newPolygon;\n polygon.pointList = polygon.pointList.map((v) =>\n PointCloudUtils.transferCanvas2World(v, size),\n );\n\n pushHistoryUnderUpdatePolygon(updateList[0].newPolygon);\n return;\n }\n\n const updatePointCloudList: IPointCloudBox[] = updateList.map(({ newPolygon: polygon }) => {\n const pointCloudBox = getPointCloudByID(polygon.id);\n\n const newBoxParams = topViewPolygon2PointCloud(\n polygon,\n size,\n topViewInstance.pointCloudInstance,\n pointCloudBox,\n );\n\n return newBoxParams;\n });\n\n /**\n * If single target updated, use syncPointCloudViews to sync all views and render\n * If multi targets updated, use updateSelectedBoxes and update highlight by syncAllViewPointCloudColor\n */\n if (updatePointCloudList.length === 1) {\n const { newPolygon: polygon } = updateList[0];\n const newPointCloudBoxList = updateSelectedBoxes(updatePointCloudList);\n\n syncPointCloudViews(\n PointCloudView.Top,\n polygon,\n updatePointCloudList[0],\n undefined,\n newPointCloudBoxList,\n );\n } else {\n const newPointCloudBoxList = updateSelectedBoxes(updatePointCloudList);\n if (newPointCloudBoxList) {\n ptCtx.syncAllViewPointCloudColor(newPointCloudBoxList);\n }\n }\n };\n\n /**\n * Sync views' data from omit view, regenerate and highlight box on 3D-view\n * @param omitView\n * @param polygon\n * @param boxParams\n */\n const syncPointCloudViews = async (\n omitView: string,\n polygon: any,\n boxParams: IPointCloudBox,\n zoom?: number,\n newPointCloudBoxList?: IPointCloudBox[],\n ) => {\n const dataUrl = currentData?.url;\n\n if (newPointCloudBoxList) {\n // Wait for the mainPointCloudData.\n await ptCtx.syncAllViewPointCloudColor(newPointCloudBoxList);\n }\n\n const viewToBeUpdated = {\n [PointCloudView.Side]: () => {\n synchronizeSideView(boxParams, polygon, sideViewInstance, dataUrl);\n },\n [PointCloudView.Back]: () => {\n if (backViewInstance) {\n synchronizeBackView(boxParams, polygon, backViewInstance, dataUrl);\n }\n },\n [PointCloudView.Top]: () => {\n synchronizeTopView(boxParams, polygon, topViewInstance, mainViewInstance);\n },\n };\n\n Object.keys(viewToBeUpdated).forEach((key) => {\n if (key !== omitView) {\n viewToBeUpdated[key]();\n }\n });\n if (zoom) {\n mainViewInstance?.updateCameraZoom(zoom);\n }\n\n mainViewGenBox(boxParams);\n };\n\n const pointCloudBoxListUpdated = (newBoxes: IPointCloudBox[]) => {\n topViewInstance.updatePolygonList(newBoxes);\n mainViewInstance?.generateBoxes(newBoxes);\n };\n\n const initPointCloud3d = (size: ISize) => {\n if (!mainViewInstance) {\n return;\n }\n\n const orthographicParams = {\n left: -size.width / 2,\n right: size.width / 2,\n top: size.height / 2,\n bottom: -size.height / 2,\n near: 100,\n far: -100,\n };\n\n mainViewInstance.initOrthographicCamera(orthographicParams);\n mainViewInstance.initRenderer();\n mainViewInstance.render();\n };\n\n /**\n * Update the data of pointCloudView when the page change.\n * @returns\n */\n const updatePointCloudData = async (newData = currentData) => {\n if (!newData?.url || !mainViewInstance) {\n return;\n }\n\n SetPointCloudLoading(dispatch, true);\n await mainViewInstance.loadPCDFile(newData.url, config?.radius ?? DEFAULT_RADIUS);\n\n // Clear All Data\n pointCloudBoxList.forEach((v) => {\n mainViewInstance?.removeObjectByName(v.id);\n });\n\n let boxParamsList: any[] = [];\n let polygonList = [];\n if (newData.result) {\n boxParamsList = PointCloudUtils.getBoxParamsFromResultList(newData.result);\n polygonList = PointCloudUtils.getPolygonListFromResultList(newData.result);\n\n // Add Init Box\n boxParamsList.forEach((v: IPointCloudBox) => {\n mainViewInstance?.generateBox(v);\n });\n\n ptCtx.syncAllViewPointCloudColor(boxParamsList);\n ptCtx.setPointCloudResult(boxParamsList);\n ptCtx.setPolygonList(polygonList);\n } else {\n ptCtx.setPointCloudResult([]);\n ptCtx.setPolygonList([]);\n }\n initHistory({ pointCloudBoxList: boxParamsList, polygonList });\n\n mainViewInstance.updateTopCamera();\n\n const valid = jsonParser(newData.result)?.valid ?? true;\n ptCtx.setPointCloudValid(valid);\n\n // Clear other view data during initialization\n ptCtx.sideViewInstance?.clearAllData();\n ptCtx.backViewInstance?.clearAllData();\n\n // TopView Data Update\n /**\n * Listen to flip\n * 1. Init\n * 2. Reload PointCloud\n * 3. Clear Polygon\n */\n topViewInstance.updateData(newData.url, newData.result, {\n radius: config?.radius ?? DEFAULT_RADIUS,\n });\n SetPointCloudLoading(dispatch, false);\n };\n\n return {\n topViewAddBox,\n topViewSelectedChanged,\n topViewUpdateBox,\n sideViewUpdateBox,\n backViewUpdateBox,\n pointCloudBoxListUpdated,\n initPointCloud3d,\n updatePointCloudData,\n };\n};\n"],"names":["this"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usePolygon.js","sources":["../../../../src/components/pointCloudView/hooks/usePolygon.ts"],"sourcesContent":["import { IPolygonData } from '@labelbee/lb-utils';\nimport { useContext } from 'react';\nimport { PointCloudContext } from '../PointCloudContext';\nimport { useHistory } from './useHistory';\n\n/**\n * PointCloud Polygon Hook\n * @returns\n */\nexport const usePolygon = () => {\n const { polygonList, setPolygonList, selectedID } = useContext(PointCloudContext);\n const { addHistory, pushHistoryWithList } = useHistory();\n\n const selectedPolygon = polygonList.find((v) => v.id === selectedID);\n\n const addPolygon = (polygon: IPolygonData) => {\n setPolygonList(polygonList.concat(polygon));\n addHistory({ newPolygon: polygon });\n };\n\n const deletePolygon = (id: string) => {\n const newPolygonList = polygonList.filter((v) => v.id !== id).map((v) => ({ ...v }));\n setPolygonList(newPolygonList);\n pushHistoryWithList({ polygonList: newPolygonList });\n };\n\n const updateSelectedPolygon = (polygon: IPolygonData) => {\n if (selectedPolygon) {\n setPolygonList(\n polygonList.map((v) => {\n if (v.id === selectedID) {\n return polygon;\n }\n return v;\n }),\n );\n }\n };\n\n const updatePolygonValidByID = (id: string) => {\n const polygon = polygonList.find((v) => v.id === id);\n if (polygon) {\n setPolygonList(\n polygonList.map((v) => {\n if (v.id === id) {\n return {\n ...v,\n valid: !v.valid,\n };\n }\n return v;\n }),\n );\n }\n };\n\n return {\n addPolygon,\n deletePolygon,\n selectedPolygon,\n updateSelectedPolygon,\n updatePolygonValidByID,\n };\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AASO,MAAM,aAAa,MAAM;AAC9B,EAAA,MAAM,CAAE,WAAA,EAAa,cAAgB,EAAA,UAAA,CAAA,GAAe,UAAW,CAAA,iBAAA,CAAA,CAAA;AAC/D,EAAM,MAAA,CAAE,YAAY,mBAAwB,CAAA,GAAA,UAAA,EAAA,CAAA;AAE5C,EAAA,MAAM,kBAAkB,WAAY,CAAA,IAAA,CAAK,CAAC,CAAA,KAAM,EAAE,EAAO,KAAA,UAAA,CAAA,CAAA;AAEzD,EAAM,MAAA,UAAA,GAAa,CAAC,OAA0B,KAAA;AAC5C,IAAA,cAAA,CAAe,YAAY,MAAO,CAAA,OAAA,CAAA,CAAA,CAAA;AAClC,IAAA,UAAA,CAAW,CAAE,UAAY,EAAA,OAAA,CAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAG3B,EAAM,MAAA,aAAA,GAAgB,CAAC,EAAe,KAAA;AACpC,IAAM,MAAA,cAAA,GAAiB,WAAY,CAAA,MAAA,CAAO,CAAC,CAAA,KAAM,CAAE,CAAA,EAAA,KAAO,EAAI,CAAA,CAAA,GAAA,CAAI,CAAC,CAAA,KAAO,cAAK,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;AAC/E,IAAe,cAAA,CAAA,cAAA,CAAA,CAAA;AACf,IAAA,mBAAA,CAAoB,CAAE,WAAa,EAAA,cAAA,CAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAGrC,EAAM,MAAA,qBAAA,GAAwB,CAAC,OAA0B,KAAA;AACvD,IAAA,IAAI,eAAiB,EAAA;AACnB,MACE,cAAA,CAAA,WAAA,CAAY,GAAI,CAAA,CAAC,CAAM,KAAA;AACrB,QAAI,IAAA,CAAA,CAAE,OAAO,UAAY,EAAA;AACvB,UAAO,OAAA,OAAA,CAAA;AAAA,SAAA;AAET,QAAO,OAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA;AAMf,EAAM,MAAA,sBAAA,GAAyB,CAAC,EAAe,KAAA;AAC7C,IAAA,MAAM,UAAU,WAAY,CAAA,IAAA,CAAK,CAAC,CAAA,KAAM,EAAE,EAAO,KAAA,EAAA,CAAA,CAAA;AACjD,IAAA,IAAI,OAAS,EAAA;AACX,MACE,cAAA,CAAA,WAAA,CAAY,GAAI,CAAA,CAAC,CAAM,KAAA;AACrB,QAAI,IAAA,CAAA,CAAE,OAAO,EAAI,EAAA;AACf,UAAA,OAAO,iCACF,CADE,CAAA,EAAA;AAAA,YAEL,KAAA,EAAO,CAAC,CAAE,CAAA,KAAA;AAAA,WAAA,CAAA,CAAA;AAAA,SAAA;AAGd,QAAO,OAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA;AAMf,EAAO,OAAA;AAAA,IACL,UAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA,qBAAA;AAAA,IACA,sBAAA;AAAA,GAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useRotate.js","sources":["../../../../src/components/pointCloudView/hooks/useRotate.ts"],"sourcesContent":["import { useCallback, useContext } from 'react';\nimport { IAnnotationStateProps } from '@/store/annotation/map';\nimport { synchronizeBackView, synchronizeSideView } from './usePointCloudViews';\nimport { useSingleBox } from './useSingleBox';\nimport { PointCloudContext } from '../PointCloudContext';\nimport { cAnnotation } from '@labelbee/lb-annotation';\nimport { PointCloudUtils } from '@labelbee/lb-utils';\n\nconst { ERotateDirection } = cAnnotation;\n\n/**\n * PointCloud Rotate Hook\n * @returns\n */\nexport const useRotate = ({ currentData }: IAnnotationStateProps) => {\n const ptCtx = useContext(PointCloudContext);\n const { selectedBox, updateSelectedBox } = useSingleBox();\n\n const updateRotate = useCallback(\n (angle: number) => {\n const { topViewInstance, mainViewInstance, syncAllViewPointCloudColor } = ptCtx;\n if (!topViewInstance || !mainViewInstance) {\n return;\n }\n\n const { pointCloud2dOperation: TopPointCloudPolygonOperation } = topViewInstance;\n\n const selectedPointCloudBox = selectedBox?.info;\n\n if (!selectedPointCloudBox || !currentData?.url || !ptCtx.backViewInstance) {\n return;\n }\n\n const newPointCloudList = updateSelectedBox({\n rotation: PointCloudUtils.restrictAngleRange(\n selectedPointCloudBox.rotation + Number(Math.PI * angle) / 180,\n ),\n });\n\n TopPointCloudPolygonOperation.rotatePolygon(angle, ERotateDirection.Anticlockwise);\n const selectedPolygon = TopPointCloudPolygonOperation.selectedPolygon;\n\n mainViewInstance.generateBox(selectedPointCloudBox);\n syncAllViewPointCloudColor(newPointCloudList);\n synchronizeSideView(\n selectedPointCloudBox,\n selectedPolygon,\n ptCtx.sideViewInstance,\n currentData.url,\n );\n synchronizeBackView(\n selectedPointCloudBox,\n selectedPolygon,\n ptCtx.backViewInstance,\n currentData.url,\n );\n mainViewInstance.render();\n },\n [\n ptCtx.selectedID,\n ptCtx.pointCloudBoxList,\n ptCtx.setPointCloudResult,\n ptCtx.topViewInstance,\n currentData,\n ],\n );\n\n return { updateRotate };\n};\n"],"names":[],"mappings":";;;;;;;AAQA,MAAM,CAAE,gBAAqB,CAAA,GAAA,WAAA,CAAA;AAMhB,MAAA,SAAA,GAAY,CAAC,CAAE,WAAyC,CAAA,KAAA;AACnE,EAAA,MAAM,QAAQ,UAAW,CAAA,iBAAA,CAAA,CAAA;AACzB,EAAM,MAAA,CAAE,aAAa,iBAAsB,CAAA,GAAA,YAAA,EAAA,CAAA;AAE3C,EAAM,MAAA,YAAA,GAAe,WACnB,CAAA,CAAC,KAAkB,KAAA;AACjB,IAAM,MAAA,CAAE,eAAiB,EAAA,gBAAA,EAAkB,0BAA+B,CAAA,GAAA,KAAA,CAAA;AAC1E,IAAI,IAAA,CAAC,eAAmB,IAAA,CAAC,gBAAkB,EAAA;AACzC,MAAA,OAAA;AAAA,KAAA;AAGF,IAAM,MAAA,CAAE,uBAAuB,6BAAkC,CAAA,GAAA,eAAA,CAAA;AAEjE,IAAA,MAAM,wBAAwB,WAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAA,IAAA,CAAA;AAE3C,IAAA,IAAI,CAAC,qBAAyB,IAAA,6CAAc,GAAO,CAAA,IAAA,CAAC,MAAM,gBAAkB,EAAA;AAC1E,MAAA,OAAA;AAAA,KAAA;AAGF,IAAA,MAAM,oBAAoB,iBAAkB,CAAA;AAAA,MAC1C,QAAA,EAAU,gBAAgB,kBACxB,CAAA,qBAAA,CAAsB,WAAW,MAAO,CAAA,IAAA,CAAK,KAAK,KAAS,CAAA,GAAA,GAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAI/D,IAA8B,6BAAA,CAAA,aAAA,CAAc,OAAO,gBAAiB,CAAA,aAAA,CAAA,CAAA;AACpE,IAAA,MAAM,kBAAkB,6BAA8B,CAAA,eAAA,CAAA;AAEtD,IAAA,gBAAA,CAAiB,WAAY,CAAA,qBAAA,CAAA,CAAA;AAC7B,IAA2B,0BAAA,CAAA,iBAAA,CAAA,CAAA;AAC3B,IAAA,mBAAA,CACE,qBACA,EAAA,eAAA,EACA,KAAM,CAAA,gBAAA,EACN,WAAY,CAAA,GAAA,CAAA,CAAA;AAEd,IAAA,mBAAA,CACE,qBACA,EAAA,eAAA,EACA,KAAM,CAAA,gBAAA,EACN,WAAY,CAAA,GAAA,CAAA,CAAA;AAEd,IAAiB,gBAAA,CAAA,MAAA,EAAA,CAAA;AAAA,GAEnB,EAAA;AAAA,IACE,KAAM,CAAA,UAAA;AAAA,IACN,KAAM,CAAA,iBAAA;AAAA,IACN,KAAM,CAAA,mBAAA;AAAA,IACN,KAAM,CAAA,eAAA;AAAA,IACN,WAAA;AAAA,GAAA,CAAA,CAAA;AAIJ,EAAA,OAAO,CAAE,YAAA,CAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSingleBox.js","sources":["../../../../src/components/pointCloudView/hooks/useSingleBox.ts"],"sourcesContent":["import { IPointCloudBox, PartialIPointCloudBoxList } from '@labelbee/lb-utils';\nimport { useCallback, useContext, useMemo } from 'react';\nimport _ from 'lodash';\nimport { PointCloudContext } from '../PointCloudContext';\nimport { cAnnotation } from '@labelbee/lb-annotation';\nimport { useHistory } from './useHistory';\nimport { usePolygon } from './usePolygon';\n\nconst { ESortDirection } = cAnnotation;\n\n/** Actions for single selected box */\nexport const useSingleBox = () => {\n const {\n pointCloudBoxList,\n setPointCloudResult,\n topViewInstance,\n backViewInstance,\n sideViewInstance,\n selectedIDs,\n selectedID,\n mainViewInstance,\n setSelectedIDs,\n syncAllViewPointCloudColor,\n polygonList,\n } = useContext(PointCloudContext);\n const { selectedPolygon, updateSelectedPolygon, updatePolygonValidByID, deletePolygon } =\n usePolygon();\n\n const { pushHistoryWithList } = useHistory();\n\n /** Returns { info: selected box, index: selected box index } */\n const selectedBox = useMemo(() => {\n const boxIndex = pointCloudBoxList.findIndex((i: { id: string }) => i.id === selectedID);\n if (boxIndex > -1) {\n return { info: pointCloudBoxList[boxIndex], index: boxIndex };\n }\n }, [selectedID, pointCloudBoxList]);\n\n /** Use Partial<IPointCloudBox> to update selected box */\n const updateSelectedBox = useCallback(\n (params: Partial<IPointCloudBox>) => {\n if (selectedBox?.info) {\n pointCloudBoxList.splice(selectedBox.index, 1, _.merge(selectedBox.info, params));\n const newPointCloudBoxList = _.cloneDeep(pointCloudBoxList);\n setPointCloudResult(newPointCloudBoxList);\n pushHistoryWithList({ pointCloudBoxList: newPointCloudBoxList });\n return newPointCloudBoxList;\n }\n\n return pointCloudBoxList;\n },\n [selectedID, pointCloudBoxList],\n );\n\n /** Use Partial<IPointCloudBox> to update box by ID */\n const updateBoxByID = useCallback(\n (params: Partial<IPointCloudBox>, id: string) => {\n const boxIndex = pointCloudBoxList.findIndex((v) => v.id === id);\n\n if (boxIndex > -1) {\n pointCloudBoxList.splice(boxIndex, 1, _.merge(pointCloudBoxList[boxIndex], params));\n const newPointCloudBoxList = _.cloneDeep(pointCloudBoxList);\n setPointCloudResult(newPointCloudBoxList);\n return newPointCloudBoxList;\n }\n return pointCloudBoxList;\n },\n [pointCloudBoxList],\n );\n\n /**\n * Change all polygonView Valid.\n */\n const changePolygonViewValid = useCallback(\n (id: string) => {\n topViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(id, true);\n sideViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(id, true);\n backViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(id, true);\n },\n [topViewInstance, sideViewInstance, backViewInstance],\n );\n\n /** Toggle selected box‘s validity */\n const changeSelectedBoxValid = useCallback(() => {\n if (selectedBox?.info) {\n const { id, valid = true } = selectedBox.info;\n\n // PointCloud\n const newPointCloudList = updateSelectedBox({ valid: !valid });\n\n // Async\n syncAllViewPointCloudColor(newPointCloudList);\n changePolygonViewValid(id);\n }\n\n if (selectedPolygon) {\n updateSelectedPolygon({ ...selectedPolygon, valid: !selectedPolygon.valid });\n topViewInstance?.pointCloud2dOperation.setPolygonValidAndRender(selectedPolygon.id, true);\n }\n }, [changePolygonViewValid, selectedBox, selectedPolygon]);\n\n const changeValidByID = useCallback(\n (id: string) => {\n const boxInfo = pointCloudBoxList.find((v) => v.id === id);\n\n if (boxInfo) {\n const { id, valid = true } = boxInfo;\n\n // PointCloud\n const newPointCloudBoxList = updateBoxByID({ valid: !valid }, id);\n\n changePolygonViewValid(id);\n\n return newPointCloudBoxList;\n }\n updatePolygonValidByID(id);\n },\n [changePolygonViewValid, pointCloudBoxList, polygonList],\n );\n\n /** PointCloud select next/prev one */\n const switchToNextBox = useCallback(\n (sort = ESortDirection.ascend) => {\n if (!topViewInstance || selectedIDs.length > 1) {\n return;\n }\n\n const { pointCloud2dOperation } = topViewInstance;\n\n const newSelectedIDs = pointCloud2dOperation.switchToNextPolygon(sort);\n if (newSelectedIDs) {\n setSelectedIDs(newSelectedIDs);\n }\n },\n [topViewInstance],\n );\n\n const selectPrevBox = () => {\n switchToNextBox(ESortDirection.descend);\n };\n\n const deletePointCloudBox = (id: string) => {\n const newPointCloudList = pointCloudBoxList.filter((v) => v.id !== id);\n setPointCloudResult(newPointCloudList);\n mainViewInstance?.removeObjectByName(id);\n mainViewInstance?.render();\n syncAllViewPointCloudColor(newPointCloudList);\n };\n\n /**\n * Delete all polygon by hotkey.\n */\n const deleteSelectedPointCloudBoxAndPolygon = () => {\n if (selectedBox) {\n deletePointCloudBox(selectedBox.info.id);\n topViewInstance?.pointCloud2dOperation.deletePolygon(selectedBox.info.id);\n }\n\n if (selectedPolygon) {\n deletePolygon(selectedPolygon.id);\n topViewInstance?.pointCloud2dOperation.deletePolygon(selectedPolygon.id);\n }\n };\n\n /**\n * According to selectedIDs, return selected pointCloudList\n * @returns pointCloudList {IPointCloudBoxList}\n */\n const selectedBoxes = useMemo(() => {\n return pointCloudBoxList.filter((i) => selectedIDs.includes(i.id));\n }, [selectedIDs, pointCloudBoxList]);\n\n /**\n * Update point cloud boxes list by updateList\n * @param updateList {PartialIPointCloudBoxList}\n */\n const updateSelectedBoxes = useCallback(\n (updateList: PartialIPointCloudBoxList) => {\n const newPointCloudBoxList = _.cloneDeep(pointCloudBoxList);\n let hasModify = false;\n\n updateList.forEach((i) => {\n const index = newPointCloudBoxList.findIndex((p) => p.id === i.id);\n\n if (index > -1) {\n const updatedBoxParam = _.merge(newPointCloudBoxList[index], i);\n newPointCloudBoxList.splice(index, 1, updatedBoxParam);\n mainViewInstance?.generateBox(updatedBoxParam);\n hasModify = true;\n }\n });\n\n if (hasModify) {\n setPointCloudResult(newPointCloudBoxList);\n pushHistoryWithList({ pointCloudBoxList: newPointCloudBoxList });\n mainViewInstance?.render();\n return newPointCloudBoxList;\n }\n },\n\n [selectedIDs, pointCloudBoxList],\n );\n\n /**\n * @param id {string}\n * @returns pointCloud {IPointCloudBox | undefined }\n */\n const getPointCloudByID = useCallback(\n (id: string) => {\n return pointCloudBoxList.find((i) => i.id === id);\n },\n [pointCloudBoxList],\n );\n\n return {\n selectedBox,\n updateSelectedBox,\n changeSelectedBoxValid,\n changeValidByID,\n selectNextBox: switchToNextBox,\n selectPrevBox,\n deletePointCloudBox,\n selectedBoxes,\n updateSelectedBoxes,\n getPointCloudByID,\n deleteSelectedPointCloudBoxAndPolygon,\n };\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useStatus.js","sources":["../../../../src/components/pointCloudView/hooks/useStatus.ts"],"sourcesContent":["/**\n * @file Update PointCloud Status\n * @createDate 2022-08-26\n * @author Ron <ron.f.luo@gmail.com>\n */\n\nimport { useContext } from 'react';\nimport { PointCloudContext } from '../PointCloudContext';\nimport { cTool } from '@labelbee/lb-annotation';\nimport { useHistory } from './useHistory';\n\nconst { EToolName, EPolygonPattern } = cTool;\n\nexport const useStatus = () => {\n const {\n topViewInstance,\n mainViewInstance,\n pointCloudBoxList,\n setPointCloudResult,\n setPolygonList,\n pointCloudPattern,\n setPointCloudPattern,\n syncAllViewPointCloudColor\n } = useContext(PointCloudContext);\n const { pushHistoryWithList } = useHistory();\n\n // Clear All PointView Data\n const clearAllResult = () => {\n pointCloudBoxList.forEach((v) => {\n mainViewInstance?.removeObjectByName(v.id);\n });\n mainViewInstance?.render();\n\n setPointCloudResult([]);\n setPolygonList([]);\n\n topViewInstance?.pointCloud2dOperation.clearActiveStatus();\n topViewInstance?.pointCloud2dOperation.clearResult();\n \n syncAllViewPointCloudColor([]);\n\n // Add History\n pushHistoryWithList({ pointCloudBoxList: [], polygonList: [] });\n };\n\n const updatePointCloudPattern = (toolName: any) => {\n const polygon2dOperation = topViewInstance?.pointCloud2dOperation;\n if (!polygon2dOperation) {\n return;\n }\n\n polygon2dOperation.clearActiveStatus();\n\n if (toolName === pointCloudPattern) {\n return;\n }\n\n switch (toolName) {\n case EToolName.Rect:\n polygon2dOperation.setPattern(EPolygonPattern.Rect);\n setPointCloudPattern(EToolName.Rect);\n break;\n case EToolName.Polygon:\n polygon2dOperation.setPattern(EPolygonPattern.Normal);\n setPointCloudPattern(EToolName.Polygon);\n break;\n }\n };\n\n return {\n clearAllResult,\n updatePointCloudPattern,\n pointCloudPattern,\n };\n};\n"],"names":[],"mappings":";;;;;AAWA,MAAM,CAAE,WAAW,eAAoB,CAAA,GAAA,KAAA,CAAA;AAEhC,MAAM,YAAY,MAAM;AAC7B,EAAM,MAAA;AAAA,IACJ,eAAA;AAAA,IACA,gBAAA;AAAA,IACA,iBAAA;AAAA,IACA,mBAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,GAAA,GACE,UAAW,CAAA,iBAAA,CAAA,CAAA;AACf,EAAA,MAAM,CAAE,mBAAwB,CAAA,GAAA,UAAA,EAAA,CAAA;AAGhC,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAkB,iBAAA,CAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AAC/B,MAAA,gBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAkB,mBAAmB,CAAE,CAAA,EAAA,CAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAEzC,IAAkB,gBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAA,MAAA,EAAA,CAAA;AAElB,IAAoB,mBAAA,CAAA,EAAA,CAAA,CAAA;AACpB,IAAe,cAAA,CAAA,EAAA,CAAA,CAAA;AAEf,IAAA,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAiB,qBAAsB,CAAA,iBAAA,EAAA,CAAA;AACvC,IAAA,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAiB,qBAAsB,CAAA,WAAA,EAAA,CAAA;AAEvC,IAA2B,0BAAA,CAAA,EAAA,CAAA,CAAA;AAG3B,IAAoB,mBAAA,CAAA,CAAE,iBAAmB,EAAA,EAAA,EAAI,WAAa,EAAA,EAAA,CAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAG5D,EAAM,MAAA,uBAAA,GAA0B,CAAC,QAAkB,KAAA;AACjD,IAAA,MAAM,qBAAqB,eAAiB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,qBAAA,CAAA;AAC5C,IAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,MAAA,OAAA;AAAA,KAAA;AAGF,IAAmB,kBAAA,CAAA,iBAAA,EAAA,CAAA;AAEnB,IAAA,IAAI,aAAa,iBAAmB,EAAA;AAClC,MAAA,OAAA;AAAA,KAAA;AAGF,IAAQ,QAAA,QAAA;AAAA,MAAA,KACD,SAAU,CAAA,IAAA;AACb,QAAA,kBAAA,CAAmB,WAAW,eAAgB,CAAA,IAAA,CAAA,CAAA;AAC9C,QAAA,oBAAA,CAAqB,SAAU,CAAA,IAAA,CAAA,CAAA;AAC/B,QAAA,MAAA;AAAA,MAAA,KACG,SAAU,CAAA,OAAA;AACb,QAAA,kBAAA,CAAmB,WAAW,eAAgB,CAAA,MAAA,CAAA,CAAA;AAC9C,QAAA,oBAAA,CAAqB,SAAU,CAAA,OAAA,CAAA,CAAA;AAC/B,QAAA,MAAA;AAAA,KAAA;AAAA,GAAA,CAAA;AAIN,EAAO,OAAA;AAAA,IACL,cAAA;AAAA,IACA,uBAAA;AAAA,IACA,iBAAA;AAAA,GAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useZoom.js","sources":["../../../../src/components/pointCloudView/hooks/useZoom.ts"],"sourcesContent":["/**\n * @file Zoom Updated by PointCloud\n * @createDate 2022-09-04\n * @author Ron <ron.f.luo@gmail.com>\n */\n import { useContext } from 'react';\n import { PointCloudContext } from '../PointCloudContext';\n\nexport const useZoom = () => {\n const { topViewInstance } = useContext(PointCloudContext);\n const { zoom, setZoom } = useContext(PointCloudContext); \n\n const initialPosition = () => {\n topViewInstance?.pointCloud2dOperation.initImgPos();\n };\n\n const zoomOut = () => {\n topViewInstance?.pointCloud2dOperation.zoomChanged(false);\n };\n\n const zoomIn = () => {\n topViewInstance?.pointCloud2dOperation.zoomChanged(true);\n };\n\n return {\n zoom, \n setZoom,\n initialPosition,\n zoomOut,\n zoomIn\n }\n}\n"],"names":[],"mappings":";;;AAQO,MAAM,UAAU,MAAM;AAC3B,EAAM,MAAA,CAAE,mBAAoB,UAAW,CAAA,iBAAA,CAAA,CAAA;AACvC,EAAM,MAAA,CAAE,IAAM,EAAA,OAAA,CAAA,GAAY,UAAW,CAAA,iBAAA,CAAA,CAAA;AAErC,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAiB,qBAAsB,CAAA,UAAA,EAAA,CAAA;AAAA,GAAA,CAAA;AAGzC,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAiB,sBAAsB,WAAY,CAAA,KAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAGrD,EAAA,MAAM,SAAS,MAAM;AACnB,IAAA,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAiB,sBAAsB,WAAY,CAAA,IAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAGrD,EAAO,OAAA;AAAA,IACL,IAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,GAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/pointCloudView/index.tsx"],"sourcesContent":["/*\n * @Author: Laoluo luozefeng@sensetime.com\n * @Date: 2022-07-04 14:39:44\n * @LastEditors: Laoluo luozefeng@sensetime.com\n * @LastEditTime: 2022-07-08 10:01:08\n */\n/**\n * @author Glenfiddish <edwinlee0927@hotmail.com>\n * @file Point cloud tool view\n * Includes 2D-view、3Dview、top-view、side-view、back-view\n * @date 2022-06-21\n */\n\nimport { getClassName } from '@/utils/dom';\nimport React from 'react';\nimport PointCloud3DView from './PointCloud3DView';\nimport PointCloudBackView from './PointCloudBackView';\nimport PointCloudTopView from './PointCloudTopView';\nimport PointCloudSideView from './PointCloudSideView';\nimport PointCloud2DView from './PointCloud2DView';\nimport PointCloudListener from './PointCloudListener';\nimport { AppState } from '@/store';\nimport { connect } from 'react-redux';\nimport { IFileItem } from '@/types/data';\nimport { LabelBeeContext } from '@/store/ctx';\nimport {\n AnnotatedAttributesPanelFixedLeft,\n AnnotatedAttributesPanelFixedRight,\n} from '@/views/MainView/toolFooter/AnnotatedAttributes';\nimport { TDrawLayerSlot } from '@/types/main';\n\ninterface IProps {\n imgList: IFileItem[];\n drawLayerSlot?: TDrawLayerSlot;\n checkMode?: boolean;\n}\n\nconst PointCloudView: React.FC<IProps> = ({ imgList, drawLayerSlot, checkMode }) => {\n if (imgList.length === 0) {\n return null;\n }\n\n return (\n <>\n <PointCloudListener checkMode={checkMode} />\n <div className={getClassName('point-cloud-layout')} onContextMenu={(e) => e.preventDefault()}>\n <div className={getClassName('point-cloud-wrapper')}>\n <AnnotatedAttributesPanelFixedLeft />\n\n <div className={getClassName('point-cloud-content')}>\n <div className={getClassName('point-cloud-container', 'left')}>\n <PointCloud2DView />\n <PointCloud3DView />\n </div>\n\n <div className={getClassName('point-cloud-container', 'right')}>\n <PointCloudTopView drawLayerSlot={drawLayerSlot} checkMode={checkMode} />\n <div className={getClassName('point-cloud-container', 'right-bottom')}>\n <PointCloudSideView />\n <PointCloudBackView />\n </div>\n </div>\n </div>\n\n <AnnotatedAttributesPanelFixedRight />\n </div>\n </div>\n </>\n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n imgList: state.annotation.imgList,\n});\n\nexport default connect(mapStateToProps, null, null, { context: LabelBeeContext })(PointCloudView);\n"],"names":[],"mappings":";;;;;;;;;;;;AAqCA,MAAM,cAAmC,GAAA,CAAC,CAAE,OAAA,EAAS,eAAe,SAAgB,CAAA,KAAA;AAClF,EAAI,IAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;AACxB,IAAO,OAAA,IAAA,CAAA;AAAA,GAAA;AAGT,EACE,uBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,sCACG,kBAAD,EAAA;AAAA,IAAoB,SAAA;AAAA,GAAA,CAAA,sCACnB,KAAD,EAAA;AAAA,IAAK,WAAW,YAAa,CAAA,oBAAA,CAAA;AAAA,IAAuB,aAAA,EAAe,CAAC,CAAA,KAAM,CAAE,CAAA,cAAA,EAAA;AAAA,GAAA,sCACzE,KAAD,EAAA;AAAA,IAAK,WAAW,YAAa,CAAA,qBAAA,CAAA;AAAA,GAAA,kBAC1B,KAAA,CAAA,aAAA,CAAA,iCAAA,EAAD,IAEA,CAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA;AAAA,IAAK,WAAW,YAAa,CAAA,qBAAA,CAAA;AAAA,GAAA,sCAC1B,KAAD,EAAA;AAAA,IAAK,SAAA,EAAW,aAAa,uBAAyB,EAAA,MAAA,CAAA;AAAA,GAAA,sCACnD,gBAAD,EAAA,IAAA,CAAA,sCACC,gBAAD,EAAA,IAAA,CAAA,CAAA,sCAGD,KAAD,EAAA;AAAA,IAAK,SAAA,EAAW,aAAa,uBAAyB,EAAA,OAAA,CAAA;AAAA,GAAA,sCACnD,iBAAD,EAAA;AAAA,IAAmB,aAAA;AAAA,IAA8B,SAAA;AAAA,GAAA,CAAA,sCAChD,KAAD,EAAA;AAAA,IAAK,SAAA,EAAW,aAAa,uBAAyB,EAAA,cAAA,CAAA;AAAA,GAAA,sCACnD,kBAAD,EAAA,IAAA,CAAA,sCACC,kBAAD,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA,sCAKL,kCAAD,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAOV,MAAM,eAAA,GAAkB,CAAC,KAAqB,MAAA;AAAA,EAC5C,OAAA,EAAS,MAAM,UAAW,CAAA,OAAA;AAAA,CAAA,CAAA,CAAA;AAG5B,uBAAe,QAAQ,eAAiB,EAAA,IAAA,EAAM,IAAM,EAAA,CAAE,SAAS,eAAmB,CAAA,CAAA,CAAA,cAAA,CAAA;;;;"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { useContext, useMemo, useCallback } from 'react';
|
|
2
|
-
import _ from 'lodash';
|
|
3
|
-
import { PointCloudContext } from './PointCloudContext.js';
|
|
4
|
-
|
|
5
|
-
const useSingleBox = () => {
|
|
6
|
-
const {pointCloudBoxList, setPointCloudResult, topViewInstance, selectedIDs, selectedID} = useContext(PointCloudContext);
|
|
7
|
-
const selectedBox = useMemo(() => {
|
|
8
|
-
const boxIndex = pointCloudBoxList.findIndex((i) => i.id === selectedID);
|
|
9
|
-
if (boxIndex > -1) {
|
|
10
|
-
return {info: pointCloudBoxList[boxIndex], index: boxIndex};
|
|
11
|
-
}
|
|
12
|
-
}, [selectedID, pointCloudBoxList]);
|
|
13
|
-
const updateSelectedBox = useCallback((params) => {
|
|
14
|
-
if (selectedBox == null ? void 0 : selectedBox.info) {
|
|
15
|
-
pointCloudBoxList.splice(selectedBox.index, 1, _.merge(selectedBox.info, params));
|
|
16
|
-
setPointCloudResult(_.cloneDeep(pointCloudBoxList));
|
|
17
|
-
}
|
|
18
|
-
}, [selectedID]);
|
|
19
|
-
const changeSelectedBoxValid = useCallback(() => {
|
|
20
|
-
if (selectedBox == null ? void 0 : selectedBox.info) {
|
|
21
|
-
updateSelectedBox({valid: !selectedBox.info.valid});
|
|
22
|
-
}
|
|
23
|
-
}, [selectedID]);
|
|
24
|
-
const switchToNextBox = useCallback((sort = ESortDirection.ascend) => {
|
|
25
|
-
if (!topViewInstance || selectedIDs.length > 1) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
const {pointCloud2dOperation} = topViewInstance;
|
|
29
|
-
pointCloud2dOperation.switchToNextPolygon(sort);
|
|
30
|
-
}, [topViewInstance]);
|
|
31
|
-
const selectPrevBox = () => {
|
|
32
|
-
switchToNextBox(ESortDirection.descend);
|
|
33
|
-
};
|
|
34
|
-
return {
|
|
35
|
-
selectedBox,
|
|
36
|
-
updateSelectedBox,
|
|
37
|
-
changeSelectedBoxValid,
|
|
38
|
-
selectNextBox: switchToNextBox,
|
|
39
|
-
selectPrevBox
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
export { useSingleBox };
|
|
44
|
-
//# sourceMappingURL=useSingleBox.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSingleBox.js","sources":["../../../src/components/pointCloudView/useSingleBox.tsx"],"sourcesContent":["import { IPointCloudBox } from '@labelbee/lb-utils';\nimport { useCallback, useContext, useMemo } from 'react';\nimport _ from 'lodash';\nimport { PointCloudContext } from './PointCloudContext';\n\n/** Actions for single selected box */\n\nexport const useSingleBox = () => {\n const { pointCloudBoxList, setPointCloudResult, topViewInstance, selectedIDs, selectedID } = useContext(PointCloudContext);\n\n /** Returns { info: selected box, index: selected box index } */\n const selectedBox = useMemo(() => {\n const boxIndex = pointCloudBoxList.findIndex((i: { id: string; }) => i.id === selectedID);\n if (boxIndex > -1) {\n return { info: pointCloudBoxList[boxIndex], index: boxIndex };\n }\n }, [selectedID, pointCloudBoxList]);\n\n /** Use Partial<IPointCloudBox> to update selected box */\n const updateSelectedBox = useCallback(\n (params: Partial<IPointCloudBox>) => {\n if (selectedBox?.info) {\n pointCloudBoxList.splice(selectedBox.index, 1, _.merge(selectedBox.info, params));\n setPointCloudResult(_.cloneDeep(pointCloudBoxList));\n }\n },\n [selectedID]\n );\n\n /** Toggle selected box‘s validity */\n const changeSelectedBoxValid = useCallback(() => {\n if (selectedBox?.info) {\n updateSelectedBox({ valid: !selectedBox.info.valid });\n }\n }, [selectedID]);\n\n /** PointCloud select next/prev one */\n const switchToNextBox = useCallback(\n (sort = ESortDirection.ascend) => {\n if (!topViewInstance || selectedIDs.length > 1) {\n return;\n }\n\n const { pointCloud2dOperation } = topViewInstance;\n\n pointCloud2dOperation.switchToNextPolygon(sort);\n },\n [topViewInstance]\n );\n\n const selectPrevBox = () => {\n switchToNextBox(ESortDirection.descend);\n };\n\n return {\n selectedBox,\n updateSelectedBox,\n changeSelectedBoxValid,\n selectNextBox: switchToNextBox,\n selectPrevBox,\n };\n};\n"],"names":[],"mappings":";;;;AAOO,MAAM,eAAe,MAAM;AAChC,EAAA,MAAM,CAAE,iBAAmB,EAAA,mBAAA,EAAqB,eAAiB,EAAA,WAAA,EAAa,cAAe,UAAW,CAAA,iBAAA,CAAA,CAAA;AAGxG,EAAM,MAAA,WAAA,GAAc,QAAQ,MAAM;AAChC,IAAA,MAAM,WAAW,iBAAkB,CAAA,SAAA,CAAU,CAAC,CAAA,KAAuB,EAAE,EAAO,KAAA,UAAA,CAAA,CAAA;AAC9E,IAAA,IAAI,WAAW,CAAI,CAAA,EAAA;AACjB,MAAA,OAAO,CAAE,IAAA,EAAM,iBAAkB,CAAA,QAAA,CAAA,EAAW,KAAO,EAAA,QAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,EAEpD,CAAC,UAAY,EAAA,iBAAA,CAAA,CAAA,CAAA;AAGhB,EAAM,MAAA,iBAAA,GAAoB,WACxB,CAAA,CAAC,MAAoC,KAAA;AACnC,IAAA,IAAI,2CAAa,IAAM,EAAA;AACrB,MAAA,iBAAA,CAAkB,OAAO,WAAY,CAAA,KAAA,EAAO,GAAG,CAAE,CAAA,KAAA,CAAM,YAAY,IAAM,EAAA,MAAA,CAAA,CAAA,CAAA;AACzE,MAAA,mBAAA,CAAoB,EAAE,SAAU,CAAA,iBAAA,CAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,EAGpC,CAAC,UAAA,CAAA,CAAA,CAAA;AAIH,EAAM,MAAA,sBAAA,GAAyB,YAAY,MAAM;AAC/C,IAAA,IAAI,2CAAa,IAAM,EAAA;AACrB,MAAA,iBAAA,CAAkB,CAAE,KAAA,EAAO,CAAC,WAAA,CAAY,IAAK,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,EAE9C,CAAC,UAAA,CAAA,CAAA,CAAA;AAGJ,EAAA,MAAM,eAAkB,GAAA,WAAA,CACtB,CAAC,IAAA,GAAO,eAAe,MAAW,KAAA;AAChC,IAAA,IAAI,CAAC,eAAA,IAAmB,WAAY,CAAA,MAAA,GAAS,CAAG,EAAA;AAC9C,MAAA,OAAA;AAAA,KAAA;AAGF,IAAA,MAAM,CAAE,qBAA0B,CAAA,GAAA,eAAA,CAAA;AAElC,IAAA,qBAAA,CAAsB,mBAAoB,CAAA,IAAA,CAAA,CAAA;AAAA,GAAA,EAE5C,CAAC,eAAA,CAAA,CAAA,CAAA;AAGH,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,eAAA,CAAgB,cAAe,CAAA,OAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAGjC,EAAO,OAAA;AAAA,IACL,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,sBAAA;AAAA,IACA,aAAe,EAAA,eAAA;AAAA,IACf,aAAA;AAAA,GAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/videoAnnotate/index.tsx"],"sourcesContent":["/**\n * @author Glenfiddish <edwinlee0927@hotmail.com>\n * @file connect store & TagToolInstanceAdaptor\n * @date 2022-06-02\n */\n\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport { useDispatch, LabelBeeContext } from '@/store/ctx';\nimport { AppState } from '@/store';\nimport { ANNOTATION_ACTIONS } from '@/store/Actions';\nimport { AnnotationState } from '@/store/annotation/types';\nimport { PageBackward, PageForward, PageJump } from '@/store/annotation/actionCreators';\nimport { TagToolInstanceAdaptor } from '@/components/videoPlayer/TagToolInstanceAdaptor';\n\nconst VideoAnnotate: React.FC<{ annotation: AnnotationState }> = (props) => {\n const { imgList, imgIndex, stepList, step } = props.annotation;\n const dispatch = useDispatch();\n const onMounted = (instance: TagToolInstanceAdaptor) => {\n dispatch({\n type: ANNOTATION_ACTIONS.SET_TOOL,\n payload: {\n instance,\n },\n });\n };\n\n const onUnmounted = () => {\n dispatch({\n type: ANNOTATION_ACTIONS.SET_TOOL,\n payload: {\n instance: undefined,\n },\n });\n };\n\n return (\n <TagToolInstanceAdaptor\n imgIndex={imgIndex}\n imgList={imgList}\n pageBackward={() => dispatch(PageBackward())}\n pageForward={() => dispatch(PageForward())}\n pageJump={(page) => dispatch(PageJump(~~page))}\n onMounted={onMounted}\n onUnmounted={onUnmounted}\n stepList={stepList}\n step={step}\n />\n );\n};\n\nexport default connect(({ annotation }: AppState) => ({ annotation }), null, null, {\n context: LabelBeeContext,\n})(VideoAnnotate);\n"],"names":[],"mappings":";;;;;;;AAeA,MAAM,aAAA,GAA2D,CAAC,KAAU,KAAA;AAC1E,EAAA,MAAM,CAAE,OAAA,EAAS,QAAU,EAAA,QAAA,EAAU,QAAS,KAAM,CAAA,UAAA,CAAA;AACpD,EAAA,MAAM,QAAW,GAAA,WAAA,EAAA,CAAA;AACjB,EAAM,MAAA,SAAA,GAAY,CAAC,QAAqC,KAAA;AACtD,IAAS,QAAA,CAAA;AAAA,MACP,MAAM,kBAAmB,CAAA,QAAA;AAAA,MACzB,OAAS,EAAA;AAAA,QACP,QAAA;AAAA,OAAA;AAAA,KAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAKN,EAAA,MAAM,cAAc,MAAM;AACxB,IAAS,QAAA,CAAA;AAAA,MACP,MAAM,kBAAmB,CAAA,QAAA;AAAA,MACzB,OAAS,EAAA;AAAA,QACP,QAAU,EAAA,KAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAKhB,EAAA,2CACG,sBAAD,EAAA;AAAA,IACE,QAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA,EAAc,MAAM,QAAS,CAAA,YAAA,EAAA,CAAA;AAAA,IAC7B,WAAA,EAAa,MAAM,QAAS,CAAA,WAAA,EAAA,CAAA;AAAA,IAC5B,UAAU,CAAC,IAAA,KAAS,QAAS,CAAA,QAAA,CAAS,CAAC,CAAC,IAAA,CAAA,CAAA;AAAA,IACxC,SAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,GAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAKN,sBAAe,QAAQ,CAAC,CAAE,iBAA8B,CAAA,UAAA,CAAA,CAAA,EAAe,MAAM,IAAM,EAAA;AAAA,EACjF,OAAS,EAAA,eAAA;AAAA,CACR,CAAA,CAAA,aAAA,CAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TagToolInstanceAdaptor.js","sources":["../../../src/components/videoPlayer/TagToolInstanceAdaptor.tsx"],"sourcesContent":["/**\n * @file Implement TagTool interaction through class components.\n * Refer to: packages/lb-annotation/src/core/toolOperation/tagOperation.ts\n * @author Glenfiddish <edwinlee0927@hotmail.com>\n * @date 2022-05-31\n */\n\nimport React from 'react';\nimport { CommonToolUtils, uuid } from '@labelbee/lb-annotation';\nimport StepUtils from '@/utils/StepUtils';\nimport { jsonParser } from '@/utils';\nimport { VideoPlayer } from './index';\nimport { VideoTagLayer } from './VideoTagLayer';\nimport { IStepInfo } from '@/types/step';\nimport _ from 'lodash';\nimport type { ObjectString } from './types';\nimport { getKeyCodeNumber } from './utils';\nimport { IFileItem } from '@/types/data';\n\nexport interface IVideoTagInstanceAdaptorProps {\n imgIndex: number;\n imgList: IFileItem[];\n pageForward: () => void;\n pageJump: (page: string) => void;\n pageBackward: () => void;\n onMounted: (instance: TagToolInstanceAdaptor) => void;\n onUnmounted: () => void;\n step: number;\n stepList: IStepInfo[];\n}\n\ninterface IVideoTagInstanceAdaptorState {\n // TODO: Use ITagResult from 'lb-annotation'\n tagResult: any[];\n labelSelectedList: number[];\n valid: boolean;\n}\n\nexport class TagToolInstanceAdaptor extends React.Component<\n IVideoTagInstanceAdaptorProps,\n IVideoTagInstanceAdaptorState\n> {\n public fns: { [key: string]: () => void } = {};\n public videoRef?: HTMLVideoElement;\n public labelSelectedList: number[] = [];\n\n public constructor(props: IVideoTagInstanceAdaptorProps) {\n super(props);\n this.state = {\n tagResult: [],\n labelSelectedList: [],\n valid: true,\n };\n }\n\n public get config() {\n const stepInfo = StepUtils.getCurrentStepInfo(this.props.step, this.props.stepList);\n return jsonParser(stepInfo?.config);\n }\n\n /** Just implementation, no actual logic */\n public get history() {\n return { initRecord: () => {}, pushHistory: () => {} };\n }\n\n public get currentTagResult() {\n return this.state.tagResult[0] ?? {};\n }\n\n public get valid() {\n return this.state.valid;\n }\n\n public clearResult = (sendMsg = true, value?: string) => {\n const newTag = value\n ? this.state.tagResult.map((v) => {\n if (v?.result[value]) {\n delete v.result[value];\n }\n return v;\n })\n : [];\n\n this.setState(\n {\n tagResult: newTag,\n },\n () => this.emitEvent('render'),\n );\n };\n\n public exportData = () => {\n const duration = this.videoRef?.duration ?? 0;\n const videoQulity = this.videoRef?.getVideoPlaybackQuality();\n const frames = videoQulity?.totalVideoFrames;\n const videoWidth = this.videoRef?.videoWidth ?? 0;\n const videoHeight = this.videoRef?.videoHeight ?? 0;\n\n return [\n this.state.tagResult,\n { valid: this.state.valid, duration, frames, videoWidth, videoHeight },\n ];\n };\n\n public singleOn(event: string, func: () => void) {\n this.fns[event] = func;\n }\n\n public on(event: string, func: () => void) {\n this.singleOn(event, func);\n }\n\n public getTagResultByCode(num1: number, num2?: number) {\n try {\n const inputList = this.config?.inputList ?? [];\n const mulitTags = inputList.length > 1;\n const keycode1 = num2 !== undefined ? num1 : 0;\n const keycode2 = num2 !== undefined ? num2 : num1;\n const primaryTagConfig = mulitTags ? inputList[keycode1] : inputList[0];\n const secondaryTagConfig = (primaryTagConfig.subSelected ?? [])[keycode2];\n\n if (primaryTagConfig && secondaryTagConfig) {\n return {\n value: {\n key: primaryTagConfig.value,\n value: secondaryTagConfig.value,\n },\n isMulti: primaryTagConfig.isMulti,\n };\n }\n } catch {\n return;\n }\n }\n\n public setLabelBySelectedList(num1: number, num2?: number) {\n const newTagConfig = this.getTagResultByCode(num1, num2);\n\n if (newTagConfig) {\n const tagRes = this.combineResult(newTagConfig, this.state.tagResult[0]?.result ?? {});\n\n const tagResult = [\n {\n sourceID: CommonToolUtils.getSourceID(),\n id: this.currentTagResult?.id ?? uuid(8, 62),\n result: tagRes,\n },\n ];\n\n this.setState(\n {\n tagResult,\n },\n () => this.emitEvent('render'),\n );\n }\n }\n\n public emitEvent = (event: string) => {\n if (this.fns[event]) {\n this.fns[event]();\n }\n };\n\n /**\n * Combine result with inputValue and existValue\n * @param inputValue\n * @param existValue\n * @returns newValue\n */\n public combineResult = (\n inputValue: { value: { key: string; value: string }; isMulti: boolean },\n existValue: ObjectString = {},\n ) => {\n const { isMulti } = inputValue;\n const { key, value } = inputValue.value;\n\n if (isMulti) {\n let valuesArray = existValue[key]?.split(';') ?? [];\n if (valuesArray.includes(value)) {\n valuesArray = valuesArray.filter((i) => i !== value);\n } else {\n valuesArray.push(value);\n }\n\n const valuesSet = new Set(valuesArray);\n existValue[key] = Array.from(valuesSet).join(';');\n return _.pickBy(existValue, (v) => v);\n }\n\n existValue[key] = existValue[key] === value ? undefined : value;\n\n return _.pickBy(existValue, (v) => v);\n };\n\n public setResult = (tagResult: any[]) => {\n this.setState({\n tagResult,\n });\n\n if (this.fns['render']) {\n this.fns['render']();\n }\n };\n\n public setLabel = (num1: number, num2: number) => {\n this.setLabelBySelectedList(num1, num2);\n };\n\n /**\n * Keydown event for recording keycode input(numeric only)\n * @param event\n */\n public keydown = (event: KeyboardEvent) => {\n const keyCode = getKeyCodeNumber(event.keyCode);\n\n if (keyCode) {\n const keyIndex = keyCode - 1;\n\n if (this.config.inputList.length === 1) {\n // 说明标签只有一层\n this.labelSelectedList = [0, keyIndex];\n this.setLabel(0, keyIndex);\n setTimeout(() => {\n this.labelSelectedList = [];\n this.emitEvent('render');\n }, 500);\n\n return;\n }\n\n if (this.labelSelectedList.length === 1) {\n this.labelSelectedList = [this.labelSelectedList[0], keyIndex];\n this.setLabel(this.labelSelectedList[0], keyIndex);\n setTimeout(() => {\n this.labelSelectedList = [];\n this.emitEvent('render');\n }, 500);\n } else {\n this.labelSelectedList = [keyIndex];\n this.emitEvent('expend');\n }\n }\n };\n\n public setValid = (valid: boolean) => {\n this.setState({ valid });\n if (valid === false) {\n this.setState({ tagResult: [] });\n }\n\n this.emitEvent('render');\n };\n\n public componentDidMount() {\n document.addEventListener('keydown', this.keydown);\n this.props.onMounted(this);\n this.setResultFromImgList(this.props);\n }\n\n public componentWillUnmount() {\n document.addEventListener('keydown', this.keydown);\n this.props.onUnmounted();\n }\n\n public setResultFromImgList = (props: IVideoTagInstanceAdaptorProps) => {\n const { imgList, imgIndex, step } = props;\n\n if (!imgList[imgIndex]) {\n return;\n }\n const res = jsonParser(imgList[imgIndex].result);\n const stepRes = res[`step_${step}`];\n\n this.setState({\n tagResult: stepRes?.result ?? [],\n valid: res?.valid === undefined ? true : res.valid,\n });\n };\n\n /** Observer imgIndex and set tagResult */\n public shouldComponentUpdate(props: IVideoTagInstanceAdaptorProps) {\n if (props.imgIndex !== this.props.imgIndex) {\n this.setResultFromImgList(props);\n }\n return true;\n }\n\n public render() {\n const { imgIndex, imgList, pageForward, pageJump, pageBackward } = this.props;\n const { tagResult, valid } = this.state;\n\n return (\n <div style={{ height: '100%', width: '100%', position: 'relative' }}>\n <VideoPlayer\n imgIndex={imgIndex}\n imgList={imgList}\n pageBackward={pageBackward}\n pageForward={pageForward}\n pageJump={pageJump}\n valid={valid}\n setVideoRef={(video) => {\n this.videoRef = video;\n }}\n />\n <VideoTagLayer result={tagResult} inputList={this.config?.inputList} />\n </div>\n );\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TagToolInstanceAdaptorI18nProvider.js","sources":["../../../src/components/videoPlayer/TagToolInstanceAdaptorI18nProvider.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { i18n } from '@labelbee/lb-utils';\nimport { I18nextProvider } from 'react-i18next';\nimport { IVideoTagInstanceAdaptorProps, TagToolInstanceAdaptor } from './TagToolInstanceAdaptor';\n\n/**\n * I18n provider for InstanceAdaptorI18nProvider\n * @param props\n */\nexport const VideoTagTool = (props: IVideoTagInstanceAdaptorProps & { lang?: string }) => {\n useEffect(() => {\n i18n.changeLanguage(props.lang);\n }, [props.lang]);\n\n return (\n <I18nextProvider i18n={i18n}>\n <TagToolInstanceAdaptor {...props} />\n </I18nextProvider>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AASa,MAAA,YAAA,GAAe,CAAC,KAA6D,KAAA;AACxF,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAA,CAAK,eAAe,KAAM,CAAA,IAAA,CAAA,CAAA;AAAA,GAAA,EACzB,CAAC,KAAM,CAAA,IAAA,CAAA,CAAA,CAAA;AAEV,EAAA,2CACG,eAAD,EAAA;AAAA,IAAiB,IAAA;AAAA,GACf,kBAAA,KAAA,CAAA,aAAA,CAAC,wBAAD,cAA4B,CAAA,EAAA,EAAA,KAAA,CAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"VideoTagLayer.js","sources":["../../../src/components/videoPlayer/VideoTagLayer.tsx"],"sourcesContent":["import React from 'react';\nimport { result2LabelKey } from './utils';\nimport type { ITagLabelsArray } from './types';\nimport { IInputList } from '@/types/main';\n\ninterface IVideoTagLayerProps {\n result: Array<{ result: { [key: string]: string } }>;\n inputList: IInputList[];\n}\n\nconst tagLayerCSSProperty: React.CSSProperties = {\n position: 'absolute',\n zIndex: 20,\n padding: '0 20px',\n color: 'white',\n fontSize: 15,\n lineHeight: '32px',\n background: 'rgba(0, 255, 255, 0.32)',\n top: 0,\n right: 0,\n maxHeight: 'calc(100% - 80px)',\n overflowY: 'scroll',\n};\n\nexport const VideoTagLayer: React.FC<IVideoTagLayerProps> = ({ result, inputList }) => {\n const tagsLabel: ITagLabelsArray = result2LabelKey(result, inputList);\n return (\n <div style={tagLayerCSSProperty}>\n <table>\n <tbody>\n {tagsLabel.map(({ keyLabel, valuesLabelArray }) => (\n <tr key={keyLabel}>\n <td style={{ paddingRight: 8 }}>{`${keyLabel}:`}</td>\n <td>{`${valuesLabelArray.join('、')}`}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n};\n"],"names":[],"mappings":";;;AAUA,MAAM,mBAA2C,GAAA;AAAA,EAC/C,QAAU,EAAA,UAAA;AAAA,EACV,MAAQ,EAAA,EAAA;AAAA,EACR,OAAS,EAAA,QAAA;AAAA,EACT,KAAO,EAAA,OAAA;AAAA,EACP,QAAU,EAAA,EAAA;AAAA,EACV,UAAY,EAAA,MAAA;AAAA,EACZ,UAAY,EAAA,yBAAA;AAAA,EACZ,GAAK,EAAA,CAAA;AAAA,EACL,KAAO,EAAA,CAAA;AAAA,EACP,SAAW,EAAA,mBAAA;AAAA,EACX,SAAW,EAAA,QAAA;AAAA,CAAA,CAAA;AAGN,MAAM,aAA+C,GAAA,CAAC,CAAE,MAAA,EAAQ,SAAgB,CAAA,KAAA;AACrF,EAAM,MAAA,SAAA,GAA6B,gBAAgB,MAAQ,EAAA,SAAA,CAAA,CAAA;AAC3D,EAAA,2CACG,KAAD,EAAA;AAAA,IAAK,KAAO,EAAA,mBAAA;AAAA,GAAA,kBACT,KAAA,CAAA,aAAA,CAAA,OAAA,EAAD,IACE,kBAAA,KAAA,CAAA,aAAA,CAAC,OAAD,EAAA,IAAA,EACG,SAAU,CAAA,GAAA,CAAI,CAAC,CAAE,QAAU,EAAA,gBAAA,CAAA,yCACzB,IAAD,EAAA;AAAA,IAAI,GAAK,EAAA,QAAA;AAAA,GAAA,sCACN,IAAD,EAAA;AAAA,IAAI,KAAA,EAAO,CAAE,YAAc,EAAA,CAAA,CAAA;AAAA,GAAA,EAAM,GAAG,QACpC,CAAA,CAAA,CAAA,CAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,MAAD,IAAK,EAAA,CAAA,EAAG,iBAAiB,IAAK,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/videoPlayer/components/controller/index.tsx"],"sourcesContent":["import React from 'react';\nimport { getClassName } from '@/utils/dom';\nimport {\n CaretRightOutlined,\n CaretUpOutlined,\n CaretDownOutlined,\n PauseOutlined,\n} from '@ant-design/icons';\nimport { VideoPlayerCtx } from '../..';\nimport { Pagination } from '@/views/MainView/toolFooter/Pagination';\nimport hotkey from '@/assets/annotation/video/icon_keyboard_h.svg';\nimport ToolHotKey from '@/views/MainView/toolFooter/FooterTips/ToolHotKey';\nimport { useTranslation } from 'react-i18next';\nimport { decimalReserved } from '../../utils';\nimport { cTool } from '@labelbee/lb-annotation';\nconst { EVideoToolName } = cTool;\n\n/**\n * Format video time to display\n * Such as 61.9 => 01:01:9\n * @param {Number} time\n * @returns {String} displayTime (min:sec:mircoSec)\n */\nconst videoTimeFormat = (time: number) => {\n const min = Math.floor(time / 60);\n const sec = ~~(time % 60).toFixed();\n const minSec = (time * 10).toString().split('').pop();\n const fillZero = (num: number) => (num < 10 ? `0${num}` : num);\n return `${fillZero(min)}:${fillZero(sec)}:${minSec}`;\n};\n\nconst VideoProgress = () => {\n const { currentTime, duration, buffered, setCurrentTime } = React.useContext(VideoPlayerCtx);\n const progressRef = React.useRef<HTMLDivElement>(null);\n const bufferLoadedPercent = `${decimalReserved((buffered / duration) * 100, 1)}%`;\n const playedPercent = `${decimalReserved((currentTime / duration) * 100, 1)}%`;\n const toCurrentTime = (event: React.MouseEvent<HTMLDivElement>) => {\n if (progressRef.current) {\n const offsetX = event.clientX;\n const width = progressRef.current.clientWidth;\n const toTime = decimalReserved((offsetX / width) * duration, 1);\n setCurrentTime(toTime);\n }\n };\n\n return (\n <div\n className={getClassName('video-progress')}\n ref={progressRef}\n onClick={(event: React.MouseEvent<HTMLDivElement>) => {\n event.stopPropagation();\n event.nativeEvent.stopImmediatePropagation();\n toCurrentTime(event);\n }}\n >\n <div className={getClassName('video-slider')}>\n <div className={getClassName('video-slider', 'played')} style={{ width: playedPercent }} />\n <div\n className={getClassName('video-slider', 'loaded')}\n style={{ width: bufferLoadedPercent }}\n />\n <div className={getClassName('video-slider', 'played')} style={{ width: playedPercent }} />\n </div>\n\n <div className={getClassName('video-slider-bar')} style={{ left: playedPercent }} />\n </div>\n );\n};\n\nconst VideoSpeedButton = () => {\n const { updateNextPlaybackRate, playbackRate } = React.useContext(VideoPlayerCtx);\n const { t } = useTranslation();\n\n return (\n <span className={getClassName('video-controller', 'speed')}>\n <span>{t('Speed')}</span>\n <span className={getClassName('video-controller', 'speedNum')}>{`${playbackRate}x`}</span>\n <span className={getClassName('video-controller', 'speedButton')}>\n <CaretUpOutlined\n onClick={() => {\n updateNextPlaybackRate();\n }}\n />\n <CaretDownOutlined\n onClick={() => {\n updateNextPlaybackRate(false);\n }}\n />\n </span>\n </span>\n );\n};\n\nconst VideoHotKeys = () => {\n const { t } = useTranslation();\n return (\n <ToolHotKey\n title={\n <span className={getClassName('video-controller', 'hotkey')}>\n <img src={hotkey} />\n {t('Hotkeys')}\n </span>\n }\n style={{}}\n toolName={EVideoToolName.VideoTagTool}\n />\n );\n};\n\nconst VideoPageChange = () => {\n const { imgIndex, imgList, pageBackward, pageJump, pageForward } =\n React.useContext(VideoPlayerCtx);\n\n return (\n <Pagination\n isVideo={true}\n pageBackward={pageBackward}\n imgIndex={imgIndex}\n pageJump={pageJump}\n totalPage={imgList.length}\n pageForward={pageForward}\n footerCls={getClassName('video-controller')}\n />\n );\n};\n\nconst VideoTime = () => {\n const { currentTime, duration } = React.useContext(VideoPlayerCtx);\n const remained10x = duration * 10 - currentTime * 10;\n const remaingTime = (remained10x > 0 ? remained10x : 0) / 10;\n\n return (\n <div className={getClassName('video-controller', 'time')}>\n {`${videoTimeFormat(currentTime)} / -${videoTimeFormat(remaingTime)}`}\n </div>\n );\n};\n\nconst VideoController = () => {\n const { playPause, isPlay } = React.useContext(VideoPlayerCtx);\n\n return (\n <div className={getClassName('video-controller', 'wrapper')}>\n <VideoProgress />\n <div className={getClassName('video-controller')}>\n <span\n onClick={() => {\n playPause();\n }}\n className={getClassName('video-controller', 'playButton')}\n >\n {isPlay ? <PauseOutlined /> : <CaretRightOutlined />}\n </span>\n <VideoTime />\n <VideoSpeedButton />\n <div className={getClassName('video-controller', 'holder')} />\n <VideoPageChange />\n <VideoHotKeys />\n </div>\n </div>\n );\n};\n\nexport default VideoController;\n"],"names":["hotkey"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/videoPlayer/index.tsx"],"sourcesContent":["/**\n * @author Glenfiddish <edwinlee0927@hotmail.com>\n * @file Implement video player, including mouse and keyboard event\n * @date 2022-06-02\n */\n\nimport React from 'react';\nimport VideoController from './components/controller';\nimport { getClassName } from '@/utils/dom';\nimport { cKeyCode } from '@labelbee/lb-annotation';\nimport { IFileItem } from '@/types/data';\nimport { decimalReserved } from './utils';\nimport FileException from '../fileException';\n\nconst EKeyCode = cKeyCode.default;\n\nexport const VideoPlayerCtx = React.createContext<{\n videoRef?: React.RefObject<HTMLVideoElement> | null;\n isPlay: boolean;\n playPause: () => void;\n updateNextPlaybackRate: (isForward?: boolean) => void;\n setCurrentTime: (time: number) => void;\n playbackRate: number;\n currentTime: number;\n duration: number;\n buffered: number;\n imgList: IFileItem[];\n imgIndex: number;\n pageBackward: () => void;\n pageJump: (page: string) => void;\n pageForward: () => void;\n}>({\n isPlay: false,\n playPause: () => {},\n updateNextPlaybackRate: () => {},\n playbackRate: 1,\n currentTime: 0,\n duration: 0,\n buffered: 0,\n setCurrentTime: () => {},\n imgList: [],\n imgIndex: -1,\n pageBackward: () => {},\n pageJump: (page: string) => {},\n pageForward: () => {},\n});\n\nconst PER_INTERVAL = 50;\nconst PER_FORWARD = 0.1;\nconst PLAYBACK_RATES = [0.5, 1, 1.5, 2, 4, 6, 8, 16];\n\ninterface IVideoPlayerProps {\n imgList: IFileItem[];\n imgIndex: number;\n pageBackward: () => void;\n pageJump: (page: string) => void;\n pageForward: () => void;\n valid: boolean;\n setVideoRef?: (video: HTMLVideoElement) => void;\n}\n\ninterface IVideoPlayerState {\n playbackRate: number;\n currentTime: number;\n isPlay: boolean;\n duration: number;\n buffered: number;\n error: boolean;\n}\n\nexport class VideoPlayer extends React.Component<IVideoPlayerProps, IVideoPlayerState> {\n public videoRef?: React.RefObject<HTMLVideoElement>;\n public timeInterval?: number;\n\n public constructor(props: IVideoPlayerProps) {\n super(props);\n this.state = {\n playbackRate: 1,\n currentTime: 0,\n isPlay: false,\n duration: 0,\n buffered: 0,\n error: false,\n };\n this.videoRef = React.createRef();\n }\n\n public get videoElm() {\n return this.videoRef?.current;\n }\n\n public get videoSrc() {\n const { imgIndex, imgList } = this.props;\n return imgIndex > -1 ? imgList[imgIndex]?.url ?? '' : '';\n }\n\n public changePlaybackPate = (playbackRate: number) => {\n if (this.videoElm) {\n this.videoElm.playbackRate = playbackRate;\n this.setState({\n playbackRate,\n });\n }\n };\n\n public playPause = () => {\n if (this.videoElm?.paused) {\n this.videoElm?.play();\n } else {\n this.videoElm?.pause();\n }\n };\n\n public updateNextPlaybackRate = (isForward = true) => {\n const idx = PLAYBACK_RATES.findIndex((r) => r === this.state.playbackRate);\n let nextIdx = isForward ? Math.min(idx + 1, PLAYBACK_RATES.length - 1) : Math.max(idx - 1, 0);\n this.changePlaybackPate(PLAYBACK_RATES[nextIdx]);\n };\n\n public fastForward = () => {\n if (this.videoElm) {\n this.setCurrentTime(this.videoElm.currentTime + PER_FORWARD);\n }\n };\n\n public rewind = () => {\n if (this.videoElm) {\n this.setCurrentTime(this.videoElm.currentTime - PER_FORWARD);\n }\n };\n\n /**\n * Implement Video's keydown\n * Play / Pause - Space\n * Rewind / FastForward - ⬅️ / ➡️\n * Speed - ⬆️ / ⬇\n * @param event\n */\n public keydown = (event: KeyboardEvent) => {\n if (event.keyCode === EKeyCode.Space) {\n event.preventDefault();\n this.playPause();\n }\n\n if (event.keyCode === EKeyCode.Up) {\n event.preventDefault();\n this.updateNextPlaybackRate();\n }\n\n if (event.keyCode === EKeyCode.Down) {\n event.preventDefault();\n this.updateNextPlaybackRate(false);\n }\n\n if (event.keyCode === EKeyCode.Left) {\n event.preventDefault();\n this.rewind();\n }\n\n if (event.keyCode === EKeyCode.Right) {\n event.preventDefault();\n this.fastForward();\n }\n };\n\n public onPlay = () => {\n this.setState(\n {\n isPlay: true,\n },\n this.onVideoStart,\n );\n };\n\n public onPause = () => {\n this.onVideoStopped();\n };\n\n public onVideoStopped = () => {\n this.setState({\n isPlay: false,\n });\n\n if (this.timeInterval) {\n clearInterval(this.timeInterval);\n this.timeInterval = undefined;\n }\n\n /** Due to speedrate can less than PER_INTERVAL, it need to set current time after stopped */\n if (this.videoElm) {\n this.setCurrentTime(this.videoElm.currentTime);\n }\n };\n\n public onVideoStart = () => {\n this.timeInterval = window.setInterval(() => {\n if (this.videoElm) {\n try {\n if (this.videoElm?.buffered.length > 0) {\n const buffered = this.videoElm?.buffered.end(0);\n\n this.setState({\n currentTime: decimalReserved(this.videoElm?.currentTime, 1),\n buffered,\n });\n }\n } catch (error) {\n console.error(error);\n }\n }\n }, PER_INTERVAL);\n };\n\n public resetVideoData = () => {\n this.setState({\n currentTime: 0,\n buffered: 0,\n error: false,\n isPlay: false,\n });\n\n if (this.videoElm) {\n this.videoElm.playbackRate = this.state.playbackRate;\n }\n this.onVideoStopped();\n };\n\n public setDuration = () => {\n if (this.videoElm) {\n const duration = decimalReserved(this.videoElm?.duration, 1);\n\n this.setState({\n duration,\n });\n }\n };\n\n public setCurrentTime = (currentTime: number) => {\n if (this.videoElm) {\n this.videoElm.currentTime = currentTime;\n this.setState({\n currentTime,\n });\n }\n };\n\n public reload = () => {\n this.videoElm?.load();\n };\n\n public onError = () => {\n this.resetVideoData();\n this.setState({ error: true });\n };\n\n public componentDidMount() {\n window.addEventListener('keydown', this.keydown);\n if (this.videoRef?.current && this.props.setVideoRef) {\n this.props.setVideoRef(this.videoRef?.current as HTMLVideoElement);\n }\n }\n\n public componentWillUnmount() {\n window.removeEventListener('keydown', this.keydown);\n }\n\n public render() {\n const { isPlay, playbackRate, currentTime, duration, buffered, error } = this.state;\n const { imgList, imgIndex, pageBackward, pageJump, pageForward, valid } = this.props;\n\n const {\n playPause,\n updateNextPlaybackRate,\n onPause,\n onPlay,\n resetVideoData,\n setDuration,\n setCurrentTime,\n onError,\n videoRef,\n videoSrc,\n } = this;\n\n return (\n <VideoPlayerCtx.Provider\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n value={{\n videoRef: this.videoRef,\n isPlay,\n playPause,\n updateNextPlaybackRate,\n playbackRate,\n currentTime,\n duration,\n buffered,\n setCurrentTime,\n imgIndex,\n imgList,\n pageBackward,\n pageJump,\n pageForward,\n }}\n >\n <div className={getClassName('video-wrapper')}>\n <div className={getClassName('video-container')}>\n <video\n ref={videoRef}\n className={getClassName('video')}\n src={videoSrc}\n onPause={onPause}\n onPlay={onPlay}\n onLoadedMetadata={resetVideoData}\n onError={onError}\n onDurationChange={setDuration}\n width='100%'\n height='100%'\n onClick={playPause}\n />\n\n <FileException\n fileType='video'\n errorProps={{\n reloadImage: this.reload,\n backgroundColor: '#e2e2e2',\n ignoreOffsetY: true,\n isError: error,\n }}\n invalidProps={{\n isValid: valid,\n }}\n />\n </div>\n <VideoController />\n </div>\n </VideoPlayerCtx.Provider>\n );\n }\n}\n\nexport default VideoPlayer;\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../src/components/videoPlayer/utils.ts"],"sourcesContent":["import type { ITagLabelsArray } from './types';\n\n/**\n * Find key and value to display label through inputList\n * @param key\n * @param value\n * @param inputList\n */\nexport const findTagLabel = (key: string, value: string, inputList: any[]) => {\n const primaryTagConfig = inputList.find((i) => i.value === key);\n const secondaryTagConfig = primaryTagConfig.subSelected.find(\n (i: { value: string }) => i.value === value,\n );\n return { keyLabel: primaryTagConfig.key, valueLabel: secondaryTagConfig.key };\n};\n\n/**\n * Sort tags through inputList\n * @param tagsKeys\n * @param inputList\n */\nexport const tagsSortThruInputList = (tagsKeys: string[], inputList: any[]) => {\n return tagsKeys.sort((key1, key2) => {\n const key1Idx = inputList.findIndex((input) => key1 === input.value);\n const key2Idx = inputList.findIndex((input) => key2 === input.value);\n return key1Idx - key2Idx;\n });\n};\n\n/**\n * Convent result's array to array of showing the labels\n * @param result\n * @param inputList\n * @returns {ITagLabelsArray}\n */\nexport const result2LabelKey = (result: any[], inputList: any[]) => {\n try {\n return (\n result?.reduce((exitsTags: ITagLabelsArray, res: { result: { [key: string]: string } }) => {\n tagsSortThruInputList(Object.keys(res.result), inputList).forEach((key) => {\n const valuesArray = res.result[key]?.split(';');\n findLabelFromValuesArray(valuesArray, key, inputList, exitsTags);\n });\n return exitsTags;\n }, []) ?? []\n );\n } catch (error) {\n return [];\n }\n};\n\n/**\n * find label from valuesArray and push to exitsTags\n * @param valuesArray\n * @param key\n * @param inputList\n * @param exitsTags\n */\nconst findLabelFromValuesArray = (\n valuesArray: string[],\n key: string,\n inputList: any[],\n exitsTags: ITagLabelsArray,\n) => {\n valuesArray.forEach((value) => {\n const { keyLabel, valueLabel } = findTagLabel(key, value, inputList);\n const tagHasAssign = exitsTags.find((i) => i.keyLabel === keyLabel);\n if (tagHasAssign) {\n tagHasAssign.valuesLabelArray.push(valueLabel);\n } else {\n exitsTags.push({ keyLabel, valuesLabelArray: [valueLabel] });\n }\n });\n};\n\n/**\n * Get key number through keyCode, Such as 49(keycode) => 1(number)\n * @param {Number} keyCode\n * @returns {Number} keyCode in scope if it greater than 0\n */\nexport const getKeyCodeNumber = (keyCode: number) => {\n if (keyCode <= 57 && keyCode >= 49) {\n return keyCode - 48;\n }\n\n if (keyCode <= 105 && keyCode >= 97) {\n return keyCode - 96;\n }\n\n return 0;\n};\n\n/**\n * Preserve decimals for number\n * @param num\n * @param places\n * @returns {Number}\n */\nexport const decimalReserved = (num: number, places = 2) =>\n typeof num === 'number' ? parseFloat(num.toFixed(places)) : num;\n"],"names":[],"mappings":"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"}
|
package/es/configureStore.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configureStore.js","sources":["../src/configureStore.ts"],"sourcesContent":["import { createStore, applyMiddleware } from 'redux';\nimport thunk from 'redux-thunk';\nimport { rootReducer } from './store';\n\nexport default function configureStore() {\n return createStore(rootReducer, applyMiddleware(thunk));\n}\n"],"names":[],"mappings":";;;;AAIyC,SAAA,cAAA,GAAA;AACvC,EAAO,OAAA,WAAA,CAAY,aAAa,eAAgB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
|
package/es/constant/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/constant/index.tsx"],"sourcesContent":["export enum EStepType {\n Check = 0, // 查看模式\n ANNOTATION = 1, // 正常标注\n QUALITY_INSPECTION, // 标注质检\n PRE_ANNOTATION, // 预标注\n MANUAL_CORRECTION, // 人工修正\n}\n\nexport enum ESubmitType {\n Backward = 1, // 向前翻页\n Forward = 2, // 向后翻页\n Jump = 3, // 分页器的跳页翻页\n Quit = 4, // 左上角后退触发\n Export = 5, // 数据导出时\n StepChanged = 6, // 切换步骤\n Save = 7, // 点击保存\n BatchUpdateTrackID = 8, // 批量更改 TrackID (PointCloud)\n SyncImgList = 10001, // 仅更改数据\n SyncCurrentPageData = 10002, // 同步当页数据\n}\n// css 命名前缀\nexport const prefix = 'bee';\nexport const componentCls = `${prefix}-component`;\n"],"names":[],"mappings":"AAAY,IAAA,UAAA;AAAL,CAAA,SAAK,UAAL,EAAA;AACL,EAAA,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAQ,CAAR,CAAA,GAAA,OAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAa,CAAb,CAAA,GAAA,YAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,oBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,oBAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAA,CAAA;AAAA,CALU,EAAA,SAAA,KAAA,SAAA,GAAA,EAAA,CAAA,CAAA,CAAA;AAQA,IAAA,YAAA;AAAL,CAAA,SAAK,YAAL,EAAA;AACL,EAAA,YAAA,CAAA,YAAA,CAAA,UAAA,CAAA,GAAW,CAAX,CAAA,GAAA,UAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,SAAA,CAAA,GAAU,CAAV,CAAA,GAAA,SAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAO,CAAP,CAAA,GAAA,MAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAO,CAAP,CAAA,GAAA,MAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,QAAA,CAAA,GAAS,CAAT,CAAA,GAAA,QAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,aAAA,CAAA,GAAc,CAAd,CAAA,GAAA,aAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAO,CAAP,CAAA,GAAA,MAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,oBAAA,CAAA,GAAqB,CAArB,CAAA,GAAA,oBAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,aAAA,CAAA,GAAc,KAAd,CAAA,GAAA,aAAA,CAAA;AACA,EAAA,YAAA,CAAA,YAAA,CAAA,qBAAA,CAAA,GAAsB,KAAtB,CAAA,GAAA,qBAAA,CAAA;AAAA,CAVU,EAAA,WAAA,KAAA,WAAA,GAAA,EAAA,CAAA,CAAA,CAAA;AAaL,MAAM,MAAS,GAAA,MAAA;AACf,MAAM,eAAe,CAAG,EAAA,MAAA,CAAA,UAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"styleString.js","sources":["../../src/constant/styleString.ts"],"sourcesContent":["const styleString = `{\"color\":1,\"width\":2,\"borderOpacity\":9,\"fillOpacity\":9,\"toolColor\":{\"1\":{\"valid\":{\"stroke\":\"rgba(0,0,255,0.50)\",\"fill\":\"rgba(0,0,255,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validSelected\":{\"stroke\":\"rgba(0,15,255,1.00)\",\"fill\":\"rgba(0,15,255,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,0.80)\",\"fill\":\"rgba(255,153,102,0.19)\"},\"validHover\":{\"stroke\":\"rgba(0,15,255,0.80)\",\"fill\":\"rgba(0,15,255,0.51)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,0.50)\",\"fill\":\"rgba(255,153,102,0.32)\"}},\"3\":{\"valid\":{\"stroke\":\"rgba(0,255,255,0.50)\",\"fill\":\"rgba(0,255,255,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validSelected\":{\"stroke\":\"rgba(0,212,255,1.00)\",\"fill\":\"rgba(0,212,255,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,0.80)\",\"fill\":\"rgba(255,153,102,0.19)\"},\"validHover\":{\"stroke\":\"rgba(0,212,255,0.80)\",\"fill\":\"rgba(0,212,255,0.51)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,0.50)\",\"fill\":\"rgba(255,153,102,0.32)\"}},\"5\":{\"valid\":{\"stroke\":\"rgba(0,255,0,0.50)\",\"fill\":\"rgba(0,255,0,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validSelected\":{\"stroke\":\"rgba(149,255,1.00)\",\"fill\":\"rgba(149,255,0,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,0.80)\",\"fill\":\"rgba(255,153,102,0.19)\"},\"validHover\":{\"stroke\":\"rgba(149,255,0,0.80)\",\"fill\":\"rgba(149,255,0,0.51)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,0.50)\",\"fill\":\"rgba(255,153,102,0.32)\"}},\"7\":{\"valid\":{\"stroke\":\"rgba(255,255,0,0.50)\",\"fill\":\"rgba(255,255,0,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validSelected\":{\"stroke\":\"rgba(255,230,102,1.00)\",\"fill\":\"rgba(255,213,0,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,0.80)\",\"fill\":\"rgba(255,153,102,0.19)\"},\"validHover\":{\"stroke\":\"rgba(255,230,102,0.80)\",\"fill\":\"rgba(255,230,102,0.51)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,0.50)\",\"fill\":\"rgba(255,153,102,0.32)\"}},\"9\":{\"valid\":{\"stroke\":\"rgba(255,0,255,0.50)\",\"fill\":\"rgba(255,0,255,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validSelected\":{\"stroke\":\"rgba(230,102,255,1.00)\",\"fill\":\"rgba(213,0,255,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,0.80)\",\"fill\":\"rgba(255,153,102,0.19)\"},\"validHover\":{\"stroke\":\"rgba(230,102,255,0.80)\",\"fill\":\"rgba(230,102,255,0.51)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,0.50)\",\"fill\":\"rgba(255,153,102,0.32)\"}}},\"attributeColor\":[{\"valid\":{\"stroke\":\"rgba(204,204,204,1.00)\",\"fill\":\"rgba(204,204,204,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.32)\"},\"validSelected\":{\"stroke\":\"rgba(204,204,204,1.00)\",\"fill\":\"rgba(204,204,204,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validHover\":{\"stroke\":\"rgba(204,204,204,1.00)\",\"fill\":\"rgba(204,204,204,0.64)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"}},{\"valid\":{\"stroke\":\"rgba(128,12,249,1.00)\",\"fill\":\"rgba(128,12,249,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.32)\"},\"validSelected\":{\"stroke\":\"rgba(128,12,249,1.00)\",\"fill\":\"rgba(128,12,249,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validHover\":{\"stroke\":\"rgba(128,12,249,1.00)\",\"fill\":\"rgba(128,12,249,0.64)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"}},{\"valid\":{\"stroke\":\"rgba(0,255,48,1.00)\",\"fill\":\"rgba(0,255,48,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.32)\"},\"validSelected\":{\"stroke\":\"rgba(0,255,48,1.00)\",\"fill\":\"rgba(0,255,48,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validHover\":{\"stroke\":\"rgba(0,255,48,1.00)\",\"fill\":\"rgba(0,255,48,0.64)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"}},{\"valid\":{\"stroke\":\"rgba(255,136,247,1.00)\",\"fill\":\"rgba(255,136,247,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.32)\"},\"validSelected\":{\"stroke\":\"rgba(255,136,247,1.00)\",\"fill\":\"rgba(255,136,247,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validHover\":{\"stroke\":\"rgba(255,136,247,1.00)\",\"fill\":\"rgba(255,136,247,0.64)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"}},{\"valid\":{\"stroke\":\"rgba(255,226,50,1.00)\",\"fill\":\"rgba(255,226,50,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.32)\"},\"validSelected\":{\"stroke\":\"rgba(255,226,50,1.00)\",\"fill\":\"rgba(255,226,50,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validHover\":{\"stroke\":\"rgba(255,226,50,1.00)\",\"fill\":\"rgba(255,226,50,0.64)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"}},{\"valid\":{\"stroke\":\"rgba(153,66,23,1.00)\",\"fill\":\"rgba(153,66,23,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.32)\"},\"validSelected\":{\"stroke\":\"rgba(153,66,23,1.00)\",\"fill\":\"rgba(153,66,23,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validHover\":{\"stroke\":\"rgba(153,66,23,1.00)\",\"fill\":\"rgba(153,66,23,0.64)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"}},{\"valid\":{\"stroke\":\"rgba(2,130,250,1.00)\",\"fill\":\"rgba(2,130,250,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.32)\"},\"validSelected\":{\"stroke\":\"rgba(2,130,250,1.00)\",\"fill\":\"rgba(2,130,250,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validHover\":{\"stroke\":\"rgba(2,130,250,1.00)\",\"fill\":\"rgba(2,130,250,0.64)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"}},{\"valid\":{\"stroke\":\"rgba(255,35,35,1.00)\",\"fill\":\"rgba(255,35,35,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.32)\"},\"validSelected\":{\"stroke\":\"rgba(255,35,35,1.00)\",\"fill\":\"rgba(255,35,35,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validHover\":{\"stroke\":\"rgba(255,35,35,1.00)\",\"fill\":\"rgba(255,35,35,0.64)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"}},{\"valid\":{\"stroke\":\"rgba(0,255,234,1.00)\",\"fill\":\"rgba(0,255,234,0.32)\"},\"invalid\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.32)\"},\"validSelected\":{\"stroke\":\"rgba(0,255,234,1.00)\",\"fill\":\"rgba(0,255,234,0.64)\"},\"invalidSelected\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"},\"validHover\":{\"stroke\":\"rgba(0,255,234,1.00)\",\"fill\":\"rgba(0,255,234,0.64)\"},\"invalidHover\":{\"stroke\":\"rgba(255,153,102,1.00)\",\"fill\":\"rgba(255,153,102,0.64)\"}}],\"lineColor\":{\"1\":\"rgba(102, 111, 255, 1 )\",\"3\":\"rgba(102, 230, 255, 1)\",\"5\":\"rgba(191, 255, 102, 1)\",\"7\":\"rgba(255, 230, 102, 1)\",\"9\":\"rgba(230, 102, 255, 1)\"},\"attributeLineColor\":[\"rgba(204, 204, 204, 1)\",\"rgba(128, 12, 249, 1)\",\"rgba(0, 255, 48, 1)\",\"rgba(255, 136, 247, 1)\",\"rgba(255, 226, 50, 1)\",\"rgba(153, 66, 23, 1)\",\"rgba(2, 130, 250, 1)\",\"rgba(255, 35, 35, 1)\",\"rgba(0, 255, 234, 1)\"]}`;\n\nexport default styleString;\n"],"names":[],"mappings":"AAAA,MAAM,WAAc,GAAA,CAAA,ujOAAA;;;;"}
|
package/es/data/Style.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Style.js","sources":["../../src/data/Style.ts"],"sourcesContent":["export const COLORS_ARRAY = [\n 'rgba(128, 12, 249, 1)', // 6\n 'rgba(0, 255, 48, 1)', // 3\n 'rgba(255, 136, 247, 1)', // 7\n 'rgba(255, 226, 50, 1)', // 2\n 'rgba(153, 66, 23, 1)', // 8\n 'rgba(2, 130, 250, 1)', // 5\n 'rgba(255, 35, 35, 1)', // 1\n 'rgba(0, 255, 234, 1)', // 4\n];\n\nexport const NULL_COLOR = 'rgba(204, 204, 204, 1)';\n\nexport const DEFAULT_COLOR = {\n valid: {\n stroke: 'rgba(102, 111, 255, 0.6)',\n fill: 'rgba(102, 111, 255, 0.3)',\n },\n invalid: {\n stroke: 'rgba(255, 153, 102,1)',\n fill: 'rgba(255, 153, 102, 0.5)',\n },\n validSelected: {\n stroke: 'rgba(0, 15, 255, 0.8)',\n fill: 'rgba(0, 15, 255, 0.4)',\n },\n invalidSelected: {\n stroke: 'rgba(255,153,102,0.8)',\n fill: 'rgba(255,153,102,0.3)',\n },\n validHover: {\n stroke: 'rgba(0, 15, 255, 1)',\n fill: 'rgba(0, 15, 255, 0.5)',\n },\n\n invalidHover: {\n stroke: 'rgba(255,153,102,1)',\n fill: 'rgba(255,153,102,0.5)',\n },\n};\n\nexport const CHANGE_COLOR: { [a: number]: any } = {\n 1: {\n valid: 'rgba(0, 0, 255, 0.5)',\n select: {\n stroke: 'rgba(0, 15, 255, 1)',\n fill: 'rgba(0,15,255, 1)',\n },\n hover: 'rgba(0, 15, 255, 0.8)',\n line: 'rgba(102, 111, 255, 1 )',\n },\n 3: {\n valid: 'rgba(0, 255, 255, 0.5)',\n select: {\n stroke: 'rgba(0, 212, 255, 1)',\n fill: 'rgba(0,212,255, 1)',\n },\n hover: 'rgba(0, 212, 255, 0.8)',\n line: 'rgba(102, 230, 255, 1)',\n },\n 5: {\n valid: 'rgba(0, 255, 0, 0.5)',\n select: {\n stroke: 'rgba(149, 255, 1)',\n fill: 'rgba(149,255,0, 1)',\n },\n hover: 'rgba(149, 255, 0, 0.8)',\n line: 'rgba(191, 255, 102, 1)',\n },\n 7: {\n valid: 'rgba(255, 255, 0, 0.5)',\n select: {\n stroke: 'rgba(255, 230, 102, 1)',\n fill: 'rgba(255,213,0, 1)',\n },\n hover: 'rgba(255, 230, 102, 0.8)',\n line: 'rgba(255, 230, 102, 1)',\n },\n 9: {\n valid: 'rgba(255, 0, 255, 0.5)',\n select: {\n stroke: 'rgba(230, 102, 255, 1)',\n fill: 'rgba(213,0,255, 1)',\n },\n hover: 'rgba(230, 102, 255, 0.8)',\n line: 'rgba(230, 102, 255, 1)',\n },\n};\n\nexport const BORDER_OPACITY_LEVEL: { [a: number]: number } = {\n 1: 0.2,\n 3: 0.4,\n 5: 0.6,\n 7: 0.8,\n 9: 1.0,\n};\n\nexport const FILL_OPACITY_LEVEL: { [a: number]: number } = {\n 1: 0,\n 3: 0.2,\n 5: 0.4,\n 7: 0.6,\n 9: 0.8,\n};\n"],"names":[],"mappings":"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"}
|