@labelbee/lb-components 1.6.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/types/components/AnnotationView/index.d.ts +1 -1
  2. package/dist/types/components/pointCloudView/hooks/usePointCloudViews.d.ts +2 -2
  3. package/dist/types/components/videoPlayer/TagToolInstanceAdaptor.d.ts +1 -1
  4. package/dist/types/components/videoPlayer/index.d.ts +1 -1
  5. package/dist/types/components/videoPlayer/types.d.ts +1 -1
  6. package/dist/types/store/annotation/actionCreators.d.ts +4 -4
  7. package/dist/types/store/annotation/reducer.d.ts +1 -1
  8. package/dist/types/store/annotation/types.d.ts +3 -3
  9. package/dist/types/store/imgAttribute/types.d.ts +1 -1
  10. package/dist/types/store/index.d.ts +1 -1
  11. package/dist/types/store/toolStyle/types.d.ts +1 -1
  12. package/dist/types/utils/PageOperator.d.ts +1 -1
  13. package/dist/types/utils/dom.d.ts +3 -3
  14. package/dist/types/views/MainView/sidebar/ToolStyle/index.d.ts +1 -1
  15. package/dist/types/views/MainView/toolFooter/index.d.ts +1 -1
  16. package/dist/types/views/MainView/toolHeader/ExportData/index.d.ts +1 -1
  17. package/dist/views/MainView/annotationOperation/index.js +1 -1
  18. package/dist/views/MainView/sidebar/index.js +1 -1
  19. package/es/assets/annotation/pointCloudTool/unitAttribute.svg.js +4 -0
  20. package/es/assets/annotation/pointCloudTool/unitAttribute.svg.js.map +1 -0
  21. package/es/assets/annotation/pointCloudTool/unitAttributeForbid.svg.js +4 -0
  22. package/es/assets/annotation/pointCloudTool/unitAttributeForbid.svg.js.map +1 -0
  23. package/es/assets/annotation/pointCloudTool/unitAttributeHover.svg.js +4 -0
  24. package/es/assets/annotation/pointCloudTool/unitAttributeHover.svg.js.map +1 -0
  25. package/es/components/pointCloudView/components/UnifiedParamsModal/index.js +228 -0
  26. package/es/components/pointCloudView/components/UnifiedParamsModal/index.js.map +1 -0
  27. package/es/components/pointCloudView/components/UnifyParamsModal/index.js +234 -0
  28. package/es/components/pointCloudView/components/UnifyParamsModal/index.js.map +1 -0
  29. package/es/components/pointCloudView/hooks/useAttribute.js +44 -0
  30. package/es/components/pointCloudView/hooks/useAttribute.js.map +1 -0
  31. package/es/components/pointCloudView/hooks/useConfig.js +16 -11
  32. package/es/components/pointCloudView/hooks/useConfig.js.map +1 -1
  33. package/es/components/pointCloudView/hooks/useHistory.js +121 -0
  34. package/es/components/pointCloudView/hooks/useHistory.js.map +1 -0
  35. package/es/views/MainView/annotationOperation/index.js +1 -1
  36. package/es/views/MainView/annotationOperation/index.js.map +1 -1
  37. package/es/views/MainView/sidebar/GeneralOperation/useOperationList.js +1 -1
  38. package/es/views/MainView/sidebar/PointCloudToolSidebar/components/batchUpdateModal/index.js +122 -0
  39. package/es/views/MainView/sidebar/PointCloudToolSidebar/components/batchUpdateModal/index.js.map +1 -0
  40. package/package.json +3 -4
  41. package/LICENSE +0 -203
@@ -3,7 +3,7 @@
3
3
  * @author laoluo
4
4
  */
5
5
  import React from 'react';
6
- declare type TAfterImgOnLoad = (img: HTMLImageElement) => void;
6
+ type TAfterImgOnLoad = (img: HTMLImageElement) => void;
7
7
  interface IProps {
8
8
  src: string;
9
9
  size?: {
@@ -19,7 +19,7 @@ export declare const transferCanvas2World: (currentPos: {
19
19
  x: number;
20
20
  y: number;
21
21
  };
22
- export declare const topViewPolygon2PointCloud: (newPolygon: any, size: ISize, pointCloud?: PointCloud | undefined, selectedPointCloudBox?: IPointCloudBox | undefined, defaultValue?: {
22
+ export declare const topViewPolygon2PointCloud: (newPolygon: any, size: ISize, pointCloud?: PointCloud, selectedPointCloudBox?: IPointCloudBox, defaultValue?: {
23
23
  [v: string]: any;
24
24
  } | undefined) => Omit<IPointCloudBox, "trackID">;
25
25
  /**
@@ -39,7 +39,7 @@ export declare const synchronizeBackView: (boxParams: IPointCloudBox, newPolygon
39
39
  * @param boxParams
40
40
  * @param newPolygon TODO! Need to add type
41
41
  */
42
- export declare const synchronizeTopView: (newBoxParams: IPointCloudBox, newPolygon: any, topViewInstance?: PointCloudAnnotation | undefined, mainViewInstance?: PointCloud | undefined) => void;
42
+ export declare const synchronizeTopView: (newBoxParams: IPointCloudBox, newPolygon: any, topViewInstance?: PointCloudAnnotation, mainViewInstance?: PointCloud) => void;
43
43
  export declare const usePointCloudViews: () => {
44
44
  topViewAddBox: () => void;
45
45
  topViewSelectedChanged: () => void;
@@ -40,7 +40,7 @@ export declare class TagToolInstanceAdaptor extends React.Component<IVideoTagIns
40
40
  };
41
41
  get currentTagResult(): any;
42
42
  get valid(): boolean;
43
- clearResult: (sendMsg?: boolean, value?: string | undefined) => void;
43
+ clearResult: (sendMsg?: boolean, value?: string) => void;
44
44
  exportData: () => (any[] | {
45
45
  valid: boolean;
46
46
  duration: number;
@@ -9,7 +9,7 @@ export declare const VideoPlayerCtx: React.Context<{
9
9
  videoRef?: React.RefObject<HTMLVideoElement> | null | undefined;
10
10
  isPlay: boolean;
11
11
  playPause: () => void;
12
- updateNextPlaybackRate: (isForward?: boolean | undefined) => void;
12
+ updateNextPlaybackRate: (isForward?: boolean) => void;
13
13
  setCurrentTime: (time: number) => void;
14
14
  playbackRate: number;
15
15
  currentTime: number;
@@ -2,7 +2,7 @@ export interface ITagLabelItem {
2
2
  keyLabel: string;
3
3
  valuesLabelArray: string[];
4
4
  }
5
- export declare type ITagLabelsArray = ITagLabelItem[];
5
+ export type ITagLabelsArray = ITagLabelItem[];
6
6
  export interface ObjectString {
7
7
  [key: string]: string | undefined;
8
8
  }
@@ -36,12 +36,12 @@ export declare function InitTaskData({ onSubmit, onSave, onPageChange, onStepCha
36
36
  */
37
37
  export declare function UpdateInjectFunc({ onSubmit, onSave, onPageChange, onStepChange, getFileData, pageSize, loadFileList, stepList, beforeRotate }: any): any;
38
38
  /** 切换到下一步 */
39
- export declare const ToNextStep: (pageNumber?: number | undefined) => (dispatch: any, getState: any) => any[];
39
+ export declare const ToNextStep: (pageNumber?: number) => (dispatch: any, getState: any) => any[];
40
40
  /**
41
41
  * 更新当前操作的步骤
42
42
  * @param {number} toStep
43
43
  */
44
- export declare const UpdateProcessingStep: (toStep: number, index?: number | undefined) => (dispatch: any, getState: any) => any[];
44
+ export declare const UpdateProcessingStep: (toStep: number, index?: number) => (dispatch: any, getState: any) => any[];
45
45
  /**
46
46
  * 提交当前的文件数据
47
47
  * @param submitType
@@ -63,7 +63,7 @@ export declare const PageJump: (toIndex: number, triggerEventAfterIndexChanged?:
63
63
  * @param nextIndex 需要加载的图片index
64
64
  * @param isInitial // 是否为初始化加载
65
65
  */
66
- export declare const loadImgList: (dispatch: any, getState: any, nextIndex: number, isInitial?: boolean | undefined) => Promise<true | undefined>;
66
+ export declare const loadImgList: (dispatch: any, getState: any, nextIndex: number, isInitial?: boolean) => Promise<true | undefined>;
67
67
  /**
68
68
  * 判断翻页还是切换依赖数据
69
69
  * @param dispatch
@@ -71,7 +71,7 @@ export declare const loadImgList: (dispatch: any, getState: any, nextIndex: numb
71
71
  * @param pageTurningOperation
72
72
  * @param toIndex
73
73
  */
74
- export declare const DispatcherTurning: (dispatch: any, getState: any, pageTurningOperation: EPageTurningOperation, triggerEventAfterIndexChanged?: boolean, toIndex?: number | undefined) => Promise<any>;
74
+ export declare const DispatcherTurning: (dispatch: any, getState: any, pageTurningOperation: EPageTurningOperation, triggerEventAfterIndexChanged?: boolean, toIndex?: number) => Promise<any>;
75
75
  /**
76
76
  * 保存当前页数据
77
77
  * */
@@ -10,5 +10,5 @@ export declare const getTotalPage: (state: AnnotationState) => number;
10
10
  * @param nextIndex
11
11
  * @param nextBasicIndex
12
12
  */
13
- export declare const LoadFileAndFileData: (nextIndex: number, nextBasicIndex?: number | undefined) => any;
13
+ export declare const LoadFileAndFileData: (nextIndex: number, nextBasicIndex?: number) => any;
14
14
  export declare const annotationReducer: (state: AnnotationState | undefined, action: AnnotationActionTypes) => AnnotationState;
@@ -3,8 +3,8 @@ import { ANNOTATION_ACTIONS } from '@/store/Actions';
3
3
  import { IStepInfo } from '@/types/step';
4
4
  import { OnSubmit, IFileItem, GetFileData, OnSave, OnPageChange, OnStepChange, LoadFileList } from '@/types/data';
5
5
  import { ESubmitType } from '@/constant';
6
- export declare type GraphToolInstance = RectOperation | PointOperation | PolygonOperation | LineToolOperation;
7
- export declare type ToolInstance = GraphToolInstance | TagOperation | TextToolOperation;
6
+ export type GraphToolInstance = RectOperation | PointOperation | PolygonOperation | LineToolOperation;
7
+ export type ToolInstance = GraphToolInstance | TagOperation | TextToolOperation;
8
8
  interface CommonActions {
9
9
  type: string;
10
10
  payload?: any;
@@ -127,5 +127,5 @@ interface UpdateGetFileList {
127
127
  interface CopyBackWordResult extends CommonActions {
128
128
  type: typeof ANNOTATION_ACTIONS.COPY_BACKWARD_RESULT;
129
129
  }
130
- export declare type AnnotationActionTypes = UpdateToolInstance | UpdateImgList | UpdateAnnotationConfig | SubmitFileData | LoadFileData | SetTaskConfig | InitTool | UpdateOnSubmit | UpdateOnPageChange | UpdateOnStepChange | UpdateGetFileData | UpdatePageSize | UpdateGetFileList | CopyBackWordResult | UpdateOnSave;
130
+ export type AnnotationActionTypes = UpdateToolInstance | UpdateImgList | UpdateAnnotationConfig | SubmitFileData | LoadFileData | SetTaskConfig | InitTool | UpdateOnSubmit | UpdateOnPageChange | UpdateOnStepChange | UpdateGetFileData | UpdatePageSize | UpdateGetFileList | CopyBackWordResult | UpdateOnSave;
131
131
  export {};
@@ -19,5 +19,5 @@ interface InitImgAttribute {
19
19
  type: typeof IMAGE_ATTRIBUTE_ACTIONS.INIT_IMG_ATTRIBUTE;
20
20
  payload: {};
21
21
  }
22
- export declare type ImgAttributeActionTypes = UpdateImgAttribute | InitImgAttribute;
22
+ export type ImgAttributeActionTypes = UpdateImgAttribute | InitImgAttribute;
23
23
  export {};
@@ -1,3 +1,3 @@
1
1
  import { CombinedState } from 'redux';
2
2
  export declare const rootReducer: CombinedState<any>;
3
- export declare type AppState = ReturnType<typeof rootReducer>;
3
+ export type AppState = ReturnType<typeof rootReducer>;
@@ -19,5 +19,5 @@ interface InitToolStyleConfig {
19
19
  type: typeof TOOL_STYLE_ACTIONS.INIT_TOOL_STYLE_CONFIG;
20
20
  payload: undefined;
21
21
  }
22
- export declare type ToolStyleActionTypes = InitToolStyleConfig | UpdateToolStyleConfig;
22
+ export type ToolStyleActionTypes = InitToolStyleConfig | UpdateToolStyleConfig;
23
23
  export {};
@@ -43,6 +43,6 @@ declare class PageOperator {
43
43
  * @param pageTurningOperation
44
44
  * @param fileIndex
45
45
  */
46
- static getNextFileIndex: (pageTurningOperation: EPageTurningOperation, pageInfo: IPageInfo, fileIndex?: number | undefined) => number;
46
+ static getNextFileIndex: (pageTurningOperation: EPageTurningOperation, pageInfo: IPageInfo, fileIndex?: number) => number;
47
47
  }
48
48
  export default PageOperator;
@@ -1,11 +1,11 @@
1
1
  import { MutableRefObject } from 'react';
2
- export declare type BasicTarget<T = HTMLElement> = (() => T | null) | T | null | MutableRefObject<T | null | undefined>;
3
- declare type TargetElement = HTMLElement | Element | Document | Window;
2
+ export type BasicTarget<T = HTMLElement> = (() => T | null) | T | null | MutableRefObject<T | null | undefined>;
3
+ type TargetElement = HTMLElement | Element | Document | Window;
4
4
  export declare function getTargetElement(target?: BasicTarget<TargetElement>, defaultElement?: TargetElement): TargetElement | undefined | null;
5
5
  /**
6
6
  * Get class like BEM
7
7
  * @param elm
8
8
  * @param modify
9
9
  */
10
- export declare const getClassName: (block: string, elm?: string | undefined, modify?: string | undefined) => string;
10
+ export declare const getClassName: (block: string, elm?: string, modify?: string) => string;
11
11
  export {};
@@ -3,5 +3,5 @@ interface IProps {
3
3
  toolStyle: ToolStyleState;
4
4
  config: string;
5
5
  }
6
- declare const _default: import("react-redux").ConnectedComponent<(props: IProps) => JSX.Element, import("react-redux").Omit<IProps, "toolStyle" | "config">>;
6
+ declare const _default: import("react-redux").ConnectedComponent<(props: IProps) => JSX.Element, import("react-redux").Omit<IProps, "config" | "toolStyle">>;
7
7
  export default _default;
@@ -1,7 +1,7 @@
1
1
  import { RenderFooter } from '@/types/main';
2
2
  import { IStepInfo } from '@/types/step';
3
3
  import React from 'react';
4
- export declare type FooterTheme = 'light' | 'dark';
4
+ export type FooterTheme = 'light' | 'dark';
5
5
  interface IProps {
6
6
  totalPage: number;
7
7
  imgIndex: number;
@@ -11,5 +11,5 @@ interface IProps {
11
11
  }
12
12
  declare const _default: import("react-redux").ConnectedComponent<React.FC<IProps>, import("react-redux").Omit<IProps & {
13
13
  children?: React.ReactNode;
14
- }, "imgList" | "onSubmit" | "toolInstance" | "dispatch">>;
14
+ }, "imgList" | "toolInstance" | "onSubmit" | "dispatch">>;
15
15
  export default _default;
@@ -1 +1 @@
1
- "use strict";var index=require("../../../index.js"),ctx=require("../../../store/ctx.js"),es=require("antd/es"),_=require("lodash"),React=require("react"),reactRedux=require("react-redux"),FileError=require("../../../components/fileException/FileError.js"),useSize=require("../../../hooks/useSize.js"),actionCreators=require("../../../store/toolStyle/actionCreators.js"),lbAnnotation=require("@labelbee/lb-annotation"),lbUtils=require("@labelbee/lb-utils"),StepUtils=require("../../../utils/StepUtils.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var ___default=_interopDefaultLegacy(_),React__default=_interopDefaultLegacy(React),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,n,r)=>n in e?__defProp(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r,__spreadValues=(e,n)=>{for(var r in n||(n={}))__hasOwnProp.call(n,r)&&__defNormalProp(e,r,n[r]);if(__getOwnPropSymbols)for(var r of __getOwnPropSymbols(n))__propIsEnum.call(n,r)&&__defNormalProp(e,r,n[r]);return e},__spreadProps=(e,n)=>__defProps(e,__getOwnPropDescs(n));const AnnotationOperation=e=>{const[,n]=React.useState(0),{imgAttribute:r,toolStyle:s,toolInstance:t,annotationEngine:o,imgList:f,imgIndex:b,dataInjectionAtCreation:d,renderEnhance:g,customRenderStyle:c,stepList:p,step:y,drawLayerSlot:v}=e,[E,m]=React.useState({zoom:1,currentPos:{x:0,y:0}}),S=React.useRef(null),I=React.useRef(null),l=useSize(S);React.useEffect(()=>{index.store.dispatch(actionCreators.InitToolStyleConfig())},[]),React.useEffect(()=>{if(!!o){switch(lbUtils.i18n.language){case"cn":case"en":o.setLang(lbUtils.i18n.language);break}o==null||o.setDataInjectionAtCreation(d),o==null||o.setRenderEnhance(g),c&&(o==null||o.setCustomRenderStyle(c))}},[o,d,g,c]),React.useEffect(()=>{const i=(a,P)=>{m({zoom:a,currentPos:P})},u=a=>{m(a)};return t&&(t.singleOn("messageError",a=>{es.message.error(a)}),t.singleOn("messageInfo",a=>{es.message.info(a)}),t.singleOn("changeAnnotationShow",()=>{n(a=>a+1)}),t.on("renderZoom",i),t.on("dragMove",u)),()=>{t&&(t.unbind("renderZoom",i),t.unbind("dragMove",u))}},[t]),React.useEffect(()=>{t&&t.setImgAttribute(r)},[r]),React.useEffect(()=>{t&&t.setStyle(s),o&&o.setStyle(s)},[s]),React.useEffect(()=>{(t==null?void 0:t.setSize)&&t.setSize(l),o&&o.setSize(l)},[l]),React.useEffect(()=>{const i=StepUtils.getCurrentStepInfo(y,p);t==null||t.setConfig(i.config)},[p]);const O=()=>{const i=f==null?void 0:f[b];!(i==null?void 0:i.url)||lbAnnotation.ImgUtils.load(i.url).then(u=>{o.setImgNode(u)})};return React__default.default.createElement("div",{ref:S,className:"annotationOperation"},React__default.default.createElement("div",{className:"canvas",ref:I,style:l,id:"toolContainer"},v==null?void 0:v(E)),(t==null?void 0:t.isImgError)===!0&&React__default.default.createElement(FileError,__spreadProps(__spreadValues({},l),{reloadImage:O,backgroundColor:"#e2e2e2",ignoreOffsetY:!0})))},mapStateToProps=e=>{const n=___default.default.pickBy(e.annotation,(r,s)=>["imgList","imgIndex","stepList","step","toolInstance","annotationEngine","loading"].includes(s));return __spreadValues({imgAttribute:e.imgAttribute,toolStyle:e.toolStyle},n)};var AnnotationOperation$1=reactRedux.connect(mapStateToProps,null,null,{context:ctx.LabelBeeContext})(AnnotationOperation);module.exports=AnnotationOperation$1;
1
+ "use strict";var index=require("../../../index.js"),ctx=require("../../../store/ctx.js"),es=require("antd/es"),_=require("lodash"),React=require("react"),reactRedux=require("react-redux"),FileError=require("../../../components/fileException/FileError.js"),useSize=require("../../../hooks/useSize.js"),actionCreators=require("../../../store/toolStyle/actionCreators.js"),lbAnnotation=require("@labelbee/lb-annotation"),lbUtils=require("@labelbee/lb-utils"),StepUtils=require("../../../utils/StepUtils.js");function _interopDefaultLegacy(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var ___default=_interopDefaultLegacy(_),React__default=_interopDefaultLegacy(React),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(t,r,o)=>r in t?__defProp(t,r,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[r]=o,__spreadValues=(t,r)=>{for(var o in r||(r={}))__hasOwnProp.call(r,o)&&__defNormalProp(t,o,r[o]);if(__getOwnPropSymbols)for(var o of __getOwnPropSymbols(r))__propIsEnum.call(r,o)&&__defNormalProp(t,o,r[o]);return t},__spreadProps=(t,r)=>__defProps(t,__getOwnPropDescs(r));const AnnotationOperation=t=>{const[,r]=React.useState(0),{imgAttribute:o,toolStyle:s,toolInstance:e,annotationEngine:n,imgList:f,imgIndex:b,dataInjectionAtCreation:d,renderEnhance:g,customRenderStyle:c,stepList:v,step:y,drawLayerSlot:p}=t,[E,m]=React.useState({zoom:1,currentPos:{x:0,y:0}}),S=React.useRef(null),I=React.useRef(null),l=useSize(S);React.useEffect(()=>{index.store.dispatch(actionCreators.InitToolStyleConfig())},[]),React.useEffect(()=>{if(!!n){switch(lbUtils.i18n.language){case"cn":case"en":n.setLang(lbUtils.i18n.language);break}n==null||n.setDataInjectionAtCreation(d),n==null||n.setRenderEnhance(g),c&&(n==null||n.setCustomRenderStyle(c))}},[n,d,g,c]),React.useEffect(()=>{const a=(i,P)=>{m({zoom:i,currentPos:P})},u=i=>{m(i)};return e&&(e.singleOn("messageError",i=>{es.message.error(i)}),e.singleOn("messageInfo",i=>{es.message.info(i)}),e.singleOn("changeAnnotationShow",()=>{r(i=>i+1)}),e.on("renderZoom",a),e.on("dragMove",u)),()=>{e&&(e.unbind("renderZoom",a),e.unbind("dragMove",u))}},[e]),React.useEffect(()=>{var a;(n==null?void 0:n.setImgAttribute)?n.setImgAttribute(o):(a=e==null?void 0:e.setImgAttribute)==null||a.call(e,o)},[o,n]),React.useEffect(()=>{e&&e.setStyle(s),n&&n.setStyle(s)},[s]),React.useEffect(()=>{(e==null?void 0:e.setSize)&&e.setSize(l),n&&n.setSize(l)},[l]),React.useEffect(()=>{const a=StepUtils.getCurrentStepInfo(y,v);e==null||e.setConfig(a.config)},[v]);const O=()=>{const a=f==null?void 0:f[b];!(a==null?void 0:a.url)||lbAnnotation.ImgUtils.load(a.url).then(u=>{n.setImgNode(u)})};return React__default.default.createElement("div",{ref:S,className:"annotationOperation"},React__default.default.createElement("div",{className:"canvas",ref:I,style:l,id:"toolContainer"},p==null?void 0:p(E)),(e==null?void 0:e.isImgError)===!0&&React__default.default.createElement(FileError,__spreadProps(__spreadValues({},l),{reloadImage:O,backgroundColor:"#e2e2e2",ignoreOffsetY:!0})))},mapStateToProps=t=>{const r=___default.default.pickBy(t.annotation,(o,s)=>["imgList","imgIndex","stepList","step","toolInstance","annotationEngine","loading"].includes(s));return __spreadValues({imgAttribute:t.imgAttribute,toolStyle:t.toolStyle},r)};var AnnotationOperation$1=reactRedux.connect(mapStateToProps,null,null,{context:ctx.LabelBeeContext})(AnnotationOperation);module.exports=AnnotationOperation$1;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var index=require("../../../constant/index.js"),ToolType=require("../../../data/enums/ToolType.js"),StepUtils=require("../../../utils/StepUtils.js"),es=require("antd/es"),React=require("react"),reactI18next=require("react-i18next"),index$9=require("./AnnotationText/index.js"),index$2=require("./ClearIcon/index.js"),index$6=require("./GeneralOperation/index.js"),index$3=require("./ImgAttributeInfo/index.js"),index$8=require("./SwitchAttributeList/index.js"),index$1=require("./TagSidebar/index.js"),index$4=require("./TextToolSidebar/index.js"),index$5=require("./PointCloudToolSidebar/index.js"),index$7=require("./ToolStyle/index.js"),lbAnnotation=require("@labelbee/lb-annotation"),index$a=require("./ScribbleSidebar/index.js"),ToolIcons=require("./ToolIcons.js"),ctx=require("../../../store/ctx.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React);const{EVideoToolName,EPointCloudName}=lbAnnotation.cTool,{Panel}=es.Collapse,sidebarCls=`${index.prefix}-sidebar`,Sidebar=({sider:e})=>{const o=ctx.useSelector(a=>StepUtils.getCurrentStepInfo(a.annotation.step,a.annotation.stepList)),t=o==null?void 0:o.tool,{t:i}=reactI18next.useTranslation();if(!t)return null;const E=a=>{const m=React__default.default.createElement(index$7,null);return React__default.default.createElement(Panel,{header:i("Style"),className:"panel",key:a},m)},u=React__default.default.createElement(ToolIcons.ToolIcons,{toolName:t,onChange:()=>{}}),n=React__default.default.createElement(index$8,null),d=React__default.default.createElement(index$9,null),c=React__default.default.createElement(es.Collapse,{defaultActiveKey:["1","imgAttribute"],bordered:!1,expandIconPosition:"right",className:`${sidebarCls}__content`,expandIcon:index$1.expandIconFuc},E("1")),s=React__default.default.createElement(es.Collapse,{defaultActiveKey:["1","imgAttribute"],bordered:!1,expandIconPosition:"right",className:`${sidebarCls}__content`,expandIcon:index$1.expandIconFuc},React__default.default.createElement(Panel,{header:React__default.default.createElement("div",null,i("Adjust"),React__default.default.createElement(index$2,null)),className:"panel",key:"imgAttribute"},React__default.default.createElement(index$3,null))),l=React__default.default.createElement(index$6.default,null),x=React__default.default.createElement(index$1.default,null),v=React__default.default.createElement(index$4.default,null),f=React__default.default.createElement(index$a,{onChange:(a,m)=>{}}),r=React__default.default.createElement("div",{className:`${sidebarCls}__horizontal`}),p=React__default.default.createElement(index$5,null),T=React__default.default.createElement(index$6.PointCloudOperation,null);return e?typeof e=="function"?React__default.default.createElement("div",{className:`${sidebarCls}`},e({toolIcon:u,attributeList:n,annotationText:d,toolStyle:c,imageAttributeInfo:s,operation:l,tagToolSideBar:x,textToolSideBar:v,horizontal:r,pointCloudToolSidebar:p,pointCloudOperation:T,scribbleSidebar:f})):e:[ToolType.EToolName.Rect,ToolType.EToolName.Point,ToolType.EToolName.Line,ToolType.EToolName.Rect,ToolType.EToolName.Polygon].includes(t)?React__default.default.createElement("div",{className:`${sidebarCls}`},u,r,n,d,r,React__default.default.createElement("div",{className:`${sidebarCls}__content`},c,s),l):t===ToolType.EToolName.Tag?React__default.default.createElement("div",{className:`${sidebarCls}`},React__default.default.createElement(index$1.default,null)):t===EVideoToolName.VideoTagTool?React__default.default.createElement("div",{className:`${sidebarCls}`},React__default.default.createElement("div",{className:`${sidebarCls}__content`},React__default.default.createElement(index$1.default,null)),l):t===ToolType.EToolName.Text?React__default.default.createElement("div",{className:`${sidebarCls}`},React__default.default.createElement(index$4.default,null)):t===EPointCloudName.PointCloud?React__default.default.createElement("div",{className:`${sidebarCls}`},React__default.default.createElement("div",{className:`${sidebarCls}__content`},React__default.default.createElement(index$5,null)),React__default.default.createElement(index$6.PointCloudOperation,null)):t===ToolType.EToolName.ScribbleTool?React__default.default.createElement("div",{className:`${sidebarCls}`},React__default.default.createElement("div",{className:`${sidebarCls}__content`},f,n),l):null};exports.default=Sidebar,exports.sidebarCls=sidebarCls;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var index=require("../../../constant/index.js"),ToolType=require("../../../data/enums/ToolType.js"),StepUtils=require("../../../utils/StepUtils.js"),es=require("antd/es"),React=require("react"),reactI18next=require("react-i18next"),index$8=require("./AnnotationText/index.js"),index$2=require("./ClearIcon/index.js"),index$6=require("./GeneralOperation/index.js"),index$3=require("./ImgAttributeInfo/index.js"),index$7=require("./SwitchAttributeList/index.js"),index$1=require("./TagSidebar/index.js"),index$4=require("./TextToolSidebar/index.js"),index$5=require("./PointCloudToolSidebar/index.js"),index$a=require("./ToolStyle/index.js"),lbAnnotation=require("@labelbee/lb-annotation"),index$9=require("./ScribbleSidebar/index.js"),ToolIcons=require("./ToolIcons.js"),ctx=require("../../../store/ctx.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React);const{EVideoToolName,EPointCloudName}=lbAnnotation.cTool,{Panel}=es.Collapse,sidebarCls=`${index.prefix}-sidebar`,Sidebar=({sider:e})=>{const o=ctx.useSelector(a=>StepUtils.getCurrentStepInfo(a.annotation.step,a.annotation.stepList)),t=o==null?void 0:o.tool,{t:i}=reactI18next.useTranslation();if(!t)return null;const E=a=>{const m=React__default.default.createElement(index$a,null);return React__default.default.createElement(Panel,{header:i("Style"),className:"panel",key:a},m)},u=React__default.default.createElement(ToolIcons.ToolIcons,{toolName:t,onChange:()=>{}}),n=React__default.default.createElement(index$7,null),d=React__default.default.createElement(index$8,null),c=React__default.default.createElement(es.Collapse,{defaultActiveKey:["1","imgAttribute"],bordered:!1,expandIconPosition:"right",className:`${sidebarCls}__content`,expandIcon:index$1.expandIconFuc},E("1")),s=React__default.default.createElement(es.Collapse,{defaultActiveKey:["1","imgAttribute"],bordered:!1,expandIconPosition:"right",className:`${sidebarCls}__content`,expandIcon:index$1.expandIconFuc},React__default.default.createElement(Panel,{header:React__default.default.createElement("div",null,i("Adjust"),React__default.default.createElement(index$2,null)),className:"panel",key:"imgAttribute"},React__default.default.createElement(index$3,null))),l=React__default.default.createElement(index$6.default,null),x=React__default.default.createElement(index$1.default,null),v=React__default.default.createElement(index$4.default,null),f=React__default.default.createElement(index$9,{onChange:(a,m)=>{}}),r=React__default.default.createElement("div",{className:`${sidebarCls}__horizontal`}),p=React__default.default.createElement(index$5,null),T=React__default.default.createElement(index$6.PointCloudOperation,null);return e?typeof e=="function"?React__default.default.createElement("div",{className:`${sidebarCls}`},e({toolIcon:u,attributeList:n,annotationText:d,toolStyle:c,imageAttributeInfo:s,operation:l,tagToolSideBar:x,textToolSideBar:v,horizontal:r,pointCloudToolSidebar:p,pointCloudOperation:T,scribbleSidebar:f})):e:[ToolType.EToolName.Rect,ToolType.EToolName.Point,ToolType.EToolName.Line,ToolType.EToolName.Rect,ToolType.EToolName.Polygon].includes(t)?React__default.default.createElement("div",{className:`${sidebarCls}`},u,r,n,d,r,React__default.default.createElement("div",{className:`${sidebarCls}__content`},c,s),l):t===ToolType.EToolName.Tag?React__default.default.createElement("div",{className:`${sidebarCls}`},React__default.default.createElement(index$1.default,null)):t===EVideoToolName.VideoTagTool?React__default.default.createElement("div",{className:`${sidebarCls}`},React__default.default.createElement("div",{className:`${sidebarCls}__content`},React__default.default.createElement(index$1.default,null)),l):t===ToolType.EToolName.Text?React__default.default.createElement("div",{className:`${sidebarCls}`},React__default.default.createElement(index$4.default,null)):t===EPointCloudName.PointCloud?React__default.default.createElement("div",{className:`${sidebarCls}`},React__default.default.createElement("div",{className:`${sidebarCls}__content`},React__default.default.createElement(index$5,null)),React__default.default.createElement(index$6.PointCloudOperation,null)):t===ToolType.EToolName.ScribbleTool?React__default.default.createElement("div",{className:`${sidebarCls}`},React__default.default.createElement("div",{className:`${sidebarCls}__content`},f,n),l):null};exports.default=Sidebar,exports.sidebarCls=sidebarCls;
@@ -0,0 +1,4 @@
1
+ var img = "data:image/svg+xml,%3csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cpath d='M12.0355 1.96447L8.5 5.5L12.0354 9.03545L15.571 5.49991L12.0355 1.96447Z' stroke='%23666666' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e %3cpath d='M18.5355 8.46447L15 12L18.5354 15.5354L22.071 11.9999L18.5355 8.46447Z' stroke='%23666666' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e %3cpath d='M5.53553 8.46447L2 12L5.53544 15.5354L9.07098 11.9999L5.53553 8.46447Z' stroke='%23666666' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e %3cpath d='M12.0355 14.9645L8.5 18.5L12.0354 22.0354L15.571 18.4999L12.0355 14.9645Z' stroke='%23666666' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e%3c/svg%3e";
2
+
3
+ export { img as default };
4
+ //# sourceMappingURL=unitAttribute.svg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unitAttribute.svg.js","sources":["../../../../src/assets/annotation/pointCloudTool/unitAttribute.svg"],"sourcesContent":["var img = \"data:image/svg+xml,%3csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cpath d='M12.0355 1.96447L8.5 5.5L12.0354 9.03545L15.571 5.49991L12.0355 1.96447Z' stroke='%23666666' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e %3cpath d='M18.5355 8.46447L15 12L18.5354 15.5354L22.071 11.9999L18.5355 8.46447Z' stroke='%23666666' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e %3cpath d='M5.53553 8.46447L2 12L5.53544 15.5354L9.07098 11.9999L5.53553 8.46447Z' stroke='%23666666' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e %3cpath d='M12.0355 14.9645L8.5 18.5L12.0354 22.0354L15.571 18.4999L12.0355 14.9645Z' stroke='%23666666' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e%3c/svg%3e\";\n export default img;"],"names":[],"mappings":"AAAG,IAAC,GAAG,GAAG;;;;"}
@@ -0,0 +1,4 @@
1
+ var img = "data:image/svg+xml,%3csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cpath d='M12.0355 1.96447L8.5 5.5L12.0354 9.03545L15.571 5.49991L12.0355 1.96447Z' stroke='%23CCCCCC' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e %3cpath d='M18.5355 8.46447L15 12L18.5354 15.5354L22.071 11.9999L18.5355 8.46447Z' stroke='%23CCCCCC' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e %3cpath d='M5.53553 8.46447L2 12L5.53544 15.5354L9.07098 11.9999L5.53553 8.46447Z' stroke='%23CCCCCC' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e %3cpath d='M12.0355 14.9645L8.5 18.5L12.0354 22.0354L15.571 18.4999L12.0355 14.9645Z' stroke='%23CCCCCC' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e%3c/svg%3e";
2
+
3
+ export { img as default };
4
+ //# sourceMappingURL=unitAttributeForbid.svg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unitAttributeForbid.svg.js","sources":["../../../../src/assets/annotation/pointCloudTool/unitAttributeForbid.svg"],"sourcesContent":["var img = \"data:image/svg+xml,%3csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cpath d='M12.0355 1.96447L8.5 5.5L12.0354 9.03545L15.571 5.49991L12.0355 1.96447Z' stroke='%23CCCCCC' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e %3cpath d='M18.5355 8.46447L15 12L18.5354 15.5354L22.071 11.9999L18.5355 8.46447Z' stroke='%23CCCCCC' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e %3cpath d='M5.53553 8.46447L2 12L5.53544 15.5354L9.07098 11.9999L5.53553 8.46447Z' stroke='%23CCCCCC' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e %3cpath d='M12.0355 14.9645L8.5 18.5L12.0354 22.0354L15.571 18.4999L12.0355 14.9645Z' stroke='%23CCCCCC' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e%3c/svg%3e\";\n export default img;"],"names":[],"mappings":"AAAG,IAAC,GAAG,GAAG;;;;"}
@@ -0,0 +1,4 @@
1
+ var img = "data:image/svg+xml,%3csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cpath d='M12.0355 1.96447L8.5 5.5L12.0354 9.03545L15.571 5.49991L12.0355 1.96447Z' stroke='%23666FFF' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e %3cpath d='M18.5355 8.46447L15 12L18.5354 15.5354L22.071 11.9999L18.5355 8.46447Z' stroke='%23666FFF' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e %3cpath d='M5.53553 8.46447L2 12L5.53544 15.5354L9.07098 11.9999L5.53553 8.46447Z' stroke='%23666FFF' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e %3cpath d='M12.0355 14.9645L8.5 18.5L12.0354 22.0354L15.571 18.4999L12.0355 14.9645Z' stroke='%23666FFF' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e%3c/svg%3e";
2
+
3
+ export { img as default };
4
+ //# sourceMappingURL=unitAttributeHover.svg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unitAttributeHover.svg.js","sources":["../../../../src/assets/annotation/pointCloudTool/unitAttributeHover.svg"],"sourcesContent":["var img = \"data:image/svg+xml,%3csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cpath d='M12.0355 1.96447L8.5 5.5L12.0354 9.03545L15.571 5.49991L12.0355 1.96447Z' stroke='%23666FFF' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e %3cpath d='M18.5355 8.46447L15 12L18.5354 15.5354L22.071 11.9999L18.5355 8.46447Z' stroke='%23666FFF' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e %3cpath d='M5.53553 8.46447L2 12L5.53544 15.5354L9.07098 11.9999L5.53553 8.46447Z' stroke='%23666FFF' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e %3cpath d='M12.0355 14.9645L8.5 18.5L12.0354 22.0354L15.571 18.4999L12.0355 14.9645Z' stroke='%23666FFF' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e%3c/svg%3e\";\n export default img;"],"names":[],"mappings":"AAAG,IAAC,GAAG,GAAG;;;;"}
@@ -0,0 +1,228 @@
1
+ import { ESubmitType } from '../../../../constant/index.js';
2
+ import { ToSubmitFileData, BatchUpdateResultByTrackID } from '../../../../store/annotation/actionCreators.js';
3
+ import { LabelBeeContext, useDispatch } from '../../../../store/ctx.js';
4
+ import { Form, Modal, InputNumber, Select, Popover, message } from 'antd';
5
+ import React, { useState, useEffect, useCallback } from 'react';
6
+ import { useTranslation } from 'react-i18next';
7
+ import { QuestionCircleOutlined } from '@ant-design/icons';
8
+ import { PointCloudUtils } from '@labelbee/lb-utils';
9
+ import { connect } from 'react-redux';
10
+ import { useSingleBox } from '../../hooks/useSingleBox.js';
11
+ import { MathUtils } from '@labelbee/lb-annotation';
12
+
13
+ var __defProp = Object.defineProperty;
14
+ var __defProps = Object.defineProperties;
15
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
16
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
17
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
18
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
19
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {enumerable: true, configurable: true, writable: true, value}) : obj[key] = value;
20
+ var __spreadValues = (a, b) => {
21
+ for (var prop in b || (b = {}))
22
+ if (__hasOwnProp.call(b, prop))
23
+ __defNormalProp(a, prop, b[prop]);
24
+ if (__getOwnPropSymbols)
25
+ for (var prop of __getOwnPropSymbols(b)) {
26
+ if (__propIsEnum.call(b, prop))
27
+ __defNormalProp(a, prop, b[prop]);
28
+ }
29
+ return a;
30
+ };
31
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
32
+ const layout = {
33
+ labelCol: {span: 8},
34
+ wrapperCol: {span: 16}
35
+ };
36
+ const defaultNumberRules = [{required: true, message: "\u8BF7\u586B\u5199\u4E00\u4E2A\u6570\u5B57"}];
37
+ const defaultSelectedAttribute = [{required: true, message: "\u8BF7\u9009\u62E9\u4E3B\u5C5E\u6027"}];
38
+ const PrefixTag = ({text}) => {
39
+ return /* @__PURE__ */ React.createElement("span", {
40
+ style: {
41
+ borderRadius: "4px 0px 0px 4px",
42
+ padding: "0px 12px",
43
+ background: "#FAFAFA",
44
+ border: "1px solid rgb(217 217 217)",
45
+ borderRight: "0",
46
+ display: "flex",
47
+ alignItems: "center",
48
+ height: 32
49
+ }
50
+ }, text);
51
+ };
52
+ const UnifiedParamsModal = ({id, visible, onCancel, config, imgList, imgIndex}) => {
53
+ const dispatch = useDispatch();
54
+ const {selectedBox} = useSingleBox();
55
+ const [size, setSize] = useState();
56
+ const [form] = Form.useForm();
57
+ const {t} = useTranslation();
58
+ useEffect(() => {
59
+ if (visible === false) {
60
+ form.resetFields();
61
+ setSize(void 0);
62
+ }
63
+ }, [visible]);
64
+ const onFinish = (values) => {
65
+ var _a;
66
+ if (!id) {
67
+ return;
68
+ }
69
+ if (!size) {
70
+ message.info("\u8BE5\u8303\u56F4\u4E0D\u5B58\u5728\u66F4\u6539\u6570\u636E, \u8BF7\u66F4\u6539\u7EDF\u4E00\u8303\u56F4");
71
+ return;
72
+ }
73
+ dispatch(ToSubmitFileData(ESubmitType.SyncImgList));
74
+ const newData = {
75
+ attribute: values.attribute
76
+ };
77
+ if (config.secondaryAttributeConfigurable) {
78
+ const newSubAttribute = {};
79
+ (_a = config.inputList) == null ? void 0 : _a.forEach((data) => {
80
+ const subData = values[data.value];
81
+ if (subData !== void 0) {
82
+ Object.assign(newSubAttribute, {[data.value]: subData});
83
+ }
84
+ });
85
+ if (Object.keys(newSubAttribute).length > 0) {
86
+ Object.assign(newData, {subAttribute: newSubAttribute});
87
+ }
88
+ }
89
+ if (size) {
90
+ Object.assign(newData, size);
91
+ }
92
+ dispatch(BatchUpdateResultByTrackID(id, newData, [values.prevPage - 1, values.nextPage - 1]));
93
+ onCancel();
94
+ };
95
+ const recalculateSize = useCallback(() => {
96
+ var _a;
97
+ const {prevPage, nextPage} = form.getFieldsValue(["prevPage", "nextPage"]);
98
+ const newImgList = imgList.filter((_, i) => MathUtils.isInRange(i, [prevPage - 1, nextPage - 1]));
99
+ if (!((newImgList == null ? void 0 : newImgList.length) > 0) || !(selectedBox == null ? void 0 : selectedBox.info) || ((_a = selectedBox == null ? void 0 : selectedBox.info) == null ? void 0 : _a.trackID) === void 0) {
100
+ setSize(void 0);
101
+ return;
102
+ }
103
+ const newMaxSize = PointCloudUtils.getMaxSizeFromBox({
104
+ trackID: selectedBox.info.trackID,
105
+ imgList: newImgList
106
+ });
107
+ setSize(newMaxSize);
108
+ }, [imgList, selectedBox, imgIndex]);
109
+ const onOk = () => form.submit();
110
+ const sizeShow = () => {
111
+ if (!size || !(selectedBox == null ? void 0 : selectedBox.info)) {
112
+ return;
113
+ }
114
+ const style = {marginRight: 16};
115
+ const {length, width, height} = PointCloudUtils.transferBox2Kitti(__spreadValues(__spreadValues({}, selectedBox == null ? void 0 : selectedBox.info), size));
116
+ return /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("span", {
117
+ style
118
+ }, t("Length"), ": ", length.toFixed(2)), /* @__PURE__ */ React.createElement("span", {
119
+ style
120
+ }, t("Width"), ": ", width.toFixed(2)), /* @__PURE__ */ React.createElement("span", {
121
+ style
122
+ }, t("Height"), ": ", height.toFixed(2)), /* @__PURE__ */ React.createElement(Popover, {
123
+ placement: "rightBottom",
124
+ content: "\u7EDF\u4E00\u5C3A\u5BF8\u4E3A\u8BE5ID\u7684\u6240\u6709\u6807\u6CE8\u6846\u4E2D\u6700\u5927\u7684\u5C3A\u5BF8"
125
+ }, /* @__PURE__ */ React.createElement(QuestionCircleOutlined, null)));
126
+ };
127
+ const selectStyle = {
128
+ width: "200px"
129
+ };
130
+ const attributeStyle = {
131
+ marginBottom: "24px",
132
+ display: "flex",
133
+ alignItems: "center"
134
+ };
135
+ return /* @__PURE__ */ React.createElement(Modal, {
136
+ title: t("UnifiedParams"),
137
+ visible,
138
+ onCancel,
139
+ onOk,
140
+ wrapClassName: "labelbee-custom-modal"
141
+ }, /* @__PURE__ */ React.createElement(Form, __spreadProps(__spreadValues({}, layout), {
142
+ form,
143
+ onFinish
144
+ }), /* @__PURE__ */ React.createElement(Form.Item, {
145
+ name: "id",
146
+ label: t("CurrentBoxTrackIDs")
147
+ }, id), /* @__PURE__ */ React.createElement(Form.Item, {
148
+ label: t("UnifiedTrackIDRange"),
149
+ required: true
150
+ }, /* @__PURE__ */ React.createElement(Form.Item, {
151
+ style: {display: "inline-block"},
152
+ rules: defaultNumberRules,
153
+ name: "prevPage",
154
+ noStyle: true
155
+ }, /* @__PURE__ */ React.createElement(InputNumber, {
156
+ min: 1,
157
+ style: {width: "80px"},
158
+ onChange: () => recalculateSize()
159
+ })), /* @__PURE__ */ React.createElement("span", {
160
+ style: {
161
+ display: "inline-block",
162
+ width: "24px",
163
+ textAlign: "center"
164
+ }
165
+ }, "-"), /* @__PURE__ */ React.createElement(Form.Item, {
166
+ style: {display: "inline-block"},
167
+ rules: defaultNumberRules,
168
+ name: "nextPage",
169
+ noStyle: true
170
+ }, /* @__PURE__ */ React.createElement(InputNumber, {
171
+ min: 1,
172
+ style: {width: "80px"},
173
+ onChange: () => recalculateSize()
174
+ })), /* @__PURE__ */ React.createElement("span", {
175
+ style: {
176
+ display: "inline-block",
177
+ width: "40x",
178
+ marginLeft: "10px",
179
+ textAlign: "center"
180
+ }
181
+ }, t("Page"))), /* @__PURE__ */ React.createElement(Form.Item, {
182
+ name: "UnifiedSize",
183
+ label: t("UnifiedSize")
184
+ }, sizeShow()), /* @__PURE__ */ React.createElement(Form.Item, {
185
+ label: t("UnifiedTag"),
186
+ required: true
187
+ }, /* @__PURE__ */ React.createElement("div", {
188
+ style: attributeStyle
189
+ }, /* @__PURE__ */ React.createElement(PrefixTag, {
190
+ text: t("Attribute")
191
+ }), /* @__PURE__ */ React.createElement(Form.Item, {
192
+ name: "attribute",
193
+ noStyle: true,
194
+ rules: defaultSelectedAttribute
195
+ }, /* @__PURE__ */ React.createElement(Select, {
196
+ style: selectStyle
197
+ }, config.attributeList.map((v) => /* @__PURE__ */ React.createElement(Select.Option, {
198
+ key: v.value,
199
+ value: v.value
200
+ }, v.key))))), config.secondaryAttributeConfigurable && config.inputList.map((v) => {
201
+ var _a;
202
+ return /* @__PURE__ */ React.createElement("div", {
203
+ key: v.value,
204
+ style: attributeStyle
205
+ }, /* @__PURE__ */ React.createElement(PrefixTag, {
206
+ text: v.key
207
+ }), /* @__PURE__ */ React.createElement(Form.Item, {
208
+ name: v.value,
209
+ noStyle: true,
210
+ required: false
211
+ }, /* @__PURE__ */ React.createElement(Select, {
212
+ style: selectStyle
213
+ }, (_a = v.subSelected) == null ? void 0 : _a.map((subData) => /* @__PURE__ */ React.createElement(Select.Option, {
214
+ key: subData.value,
215
+ value: subData.value
216
+ }, subData.key)))));
217
+ }))));
218
+ };
219
+ const mapStateToProps = (state) => {
220
+ return {
221
+ imgList: state.annotation.imgList,
222
+ imgIndex: state.annotation.imgIndex
223
+ };
224
+ };
225
+ var UnifiedParamsModal$1 = connect(mapStateToProps, null, null, {context: LabelBeeContext})(UnifiedParamsModal);
226
+
227
+ export { UnifiedParamsModal$1 as default };
228
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/pointCloudView/components/UnifiedParamsModal/index.tsx"],"sourcesContent":["import { ESubmitType } from '@/constant';\nimport { BatchUpdateResultByTrackID, ToSubmitFileData } from '@/store/annotation/actionCreators';\nimport { LabelBeeContext, useDispatch } from '@/store/ctx';\nimport { Form, InputNumber, message, Modal, Popover, Select } from 'antd';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { QuestionCircleOutlined } from '@ant-design/icons';\nimport { IPointCloudConfig, PointCloudUtils } from '@labelbee/lb-utils';\nimport { connect } from 'react-redux';\nimport { AppState } from '@/store';\nimport { AnnotationFileList } from '@/types/data';\nimport { useSingleBox } from '../../hooks/useSingleBox';\nimport { MathUtils } from '@labelbee/lb-annotation';\n\ninterface IProps {\n id?: number;\n visible: boolean;\n onCancel: () => void;\n config: IPointCloudConfig;\n imgList: AnnotationFileList;\n imgIndex: number;\n}\n\nconst layout = {\n labelCol: { span: 8 },\n wrapperCol: { span: 16 },\n};\n\nconst defaultNumberRules = [{ required: true, message: '请填写一个数字' }];\nconst defaultSelectedAttribute = [{ required: true, message: '请选择主属性' }];\nconst DECIMAL_PLACES = 2;\n\nconst PrefixTag: React.FC<{ text: string }> = ({ text }) => {\n return (\n <span\n style={{\n borderRadius: '4px 0px 0px 4px',\n padding: '0px 12px',\n background: '#FAFAFA',\n border: '1px solid rgb(217 217 217)',\n borderRight: '0',\n display: 'flex',\n alignItems: 'center',\n height: 32,\n }}\n >\n {text}\n </span>\n );\n};\n\nconst UnifiedParamsModal = ({ id, visible, onCancel, config, imgList, imgIndex }: IProps) => {\n const dispatch = useDispatch();\n const { selectedBox } = useSingleBox();\n const [size, setSize] = useState<{ width: number; height: number; depth: number }>();\n\n const [form] = Form.useForm();\n const { t } = useTranslation();\n\n useEffect(() => {\n if (visible === false) {\n // Clear All Data\n form.resetFields();\n setSize(undefined);\n }\n }, [visible]);\n\n const onFinish = (values: any) => {\n if (!id) {\n return;\n }\n\n if (!size) {\n message.info('该范围不存在更改数据, 请更改统一范围');\n return;\n }\n\n dispatch(ToSubmitFileData(ESubmitType.SyncImgList));\n const newData = {\n attribute: values.attribute,\n };\n\n if (config.secondaryAttributeConfigurable) {\n const newSubAttribute = {};\n config.inputList?.forEach((data) => {\n const subData = values[data.value];\n if (subData !== undefined) {\n Object.assign(newSubAttribute, { [data.value]: subData });\n }\n });\n\n if (Object.keys(newSubAttribute).length > 0) {\n Object.assign(newData, { subAttribute: newSubAttribute });\n }\n }\n\n if (size) {\n Object.assign(newData, size);\n }\n\n dispatch(BatchUpdateResultByTrackID(id, newData, [values.prevPage - 1, values.nextPage - 1]));\n onCancel();\n };\n\n const recalculateSize = useCallback(() => {\n const { prevPage, nextPage } = form.getFieldsValue(['prevPage', 'nextPage']);\n\n // 1. Filter the imgInfo in range.\n const newImgList = imgList.filter((_, i) =>\n MathUtils.isInRange(i, [prevPage - 1, nextPage - 1]),\n );\n\n if (\n !(newImgList?.length > 0) ||\n !selectedBox?.info ||\n selectedBox?.info?.trackID === undefined\n ) {\n setSize(undefined);\n return;\n }\n\n // 2. Get the Max Size of imgList\n const newMaxSize = PointCloudUtils.getMaxSizeFromBox({\n trackID: selectedBox.info.trackID,\n imgList: newImgList as Array<{ result: string }>,\n });\n\n setSize(newMaxSize);\n }, [imgList, selectedBox, imgIndex]);\n\n const onOk = () => form.submit();\n\n const sizeShow = () => {\n if (!size || !selectedBox?.info) {\n return;\n }\n const style = { marginRight: 16 };\n\n const { length, width, height } = PointCloudUtils.transferBox2Kitti({\n ...selectedBox?.info, // Just for the type check\n ...size,\n });\n\n return (\n <div>\n <span style={style}>\n {t('Length')}: {length.toFixed(2)}\n </span>\n <span style={style}>\n {t('Width')}: {width.toFixed(2)}\n </span>\n <span style={style}>\n {t('Height')}: {height.toFixed(2)}\n </span>\n <Popover placement='rightBottom' content='统一尺寸为该ID的所有标注框中最大的尺寸'>\n <QuestionCircleOutlined />\n </Popover>\n </div>\n );\n };\n const selectStyle = {\n width: '200px',\n };\n\n const attributeStyle = {\n marginBottom: '24px',\n display: 'flex',\n alignItems: 'center',\n };\n\n return (\n <Modal\n title={t('UnifiedParams')}\n visible={visible}\n onCancel={onCancel}\n onOk={onOk}\n wrapClassName='labelbee-custom-modal'\n >\n <Form {...layout} form={form} onFinish={onFinish}>\n <Form.Item name='id' label={t('CurrentBoxTrackIDs')}>\n {id}\n </Form.Item>\n\n <Form.Item label={t('UnifiedTrackIDRange')} required={true}>\n <Form.Item\n style={{ display: 'inline-block' }}\n rules={defaultNumberRules}\n name='prevPage'\n noStyle={true}\n >\n <InputNumber min={1} style={{ width: '80px' }} onChange={() => recalculateSize()} />\n </Form.Item>\n <span\n style={{\n display: 'inline-block',\n width: '24px',\n textAlign: 'center',\n }}\n >\n -\n </span>\n <Form.Item\n style={{ display: 'inline-block' }}\n rules={defaultNumberRules}\n name='nextPage'\n noStyle={true}\n >\n <InputNumber min={1} style={{ width: '80px' }} onChange={() => recalculateSize()} />\n </Form.Item>\n <span\n style={{\n display: 'inline-block',\n width: '40x',\n marginLeft: '10px',\n textAlign: 'center',\n }}\n >\n {t('Page')}\n </span>\n </Form.Item>\n\n <Form.Item name='UnifiedSize' label={t('UnifiedSize')}>\n {sizeShow()}\n </Form.Item>\n\n <Form.Item label={t('UnifiedTag')} required={true}>\n <div style={attributeStyle}>\n <PrefixTag text={t('Attribute')} />\n <Form.Item name='attribute' noStyle={true} rules={defaultSelectedAttribute}>\n <Select style={selectStyle}>\n {config.attributeList.map((v) => (\n <Select.Option key={v.value} value={v.value}>\n {v.key}\n </Select.Option>\n ))}\n </Select>\n </Form.Item>\n </div>\n {config.secondaryAttributeConfigurable &&\n config.inputList.map((v) => (\n <div key={v.value} style={attributeStyle}>\n <PrefixTag text={v.key} />\n <Form.Item name={v.value} noStyle={true} required={false}>\n <Select style={selectStyle}>\n {v.subSelected?.map((subData) => (\n <Select.Option key={subData.value} value={subData.value}>\n {subData.key}\n </Select.Option>\n ))}\n </Select>\n </Form.Item>\n </div>\n ))}\n </Form.Item>\n </Form>\n </Modal>\n );\n};\n\nconst mapStateToProps = (state: AppState) => {\n return {\n imgList: state.annotation.imgList,\n imgIndex: state.annotation.imgIndex,\n };\n};\n\nexport default connect(mapStateToProps, null, null, { context: LabelBeeContext })(\n UnifiedParamsModal,\n);\n"],"names":[],"mappings":"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"}