@labelbee/lb-components 1.20.0-alpha.1 → 1.20.0-alpha.10

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 (133) hide show
  1. package/dist/assets/annotation/video/icon_timePoint.svg.js +1 -0
  2. package/dist/assets/annotation/video/icon_videoCut.svg.js +1 -0
  3. package/dist/assets/annotation/video/icon_videoCutting.svg.js +1 -0
  4. package/dist/components/LLMToolView/sidebar/components/answerList/index.js +1 -1
  5. package/dist/components/LLMToolView/sidebar/components/textEditor/index.js +2 -1
  6. package/dist/components/LLMToolView/sidebar/components/textEditor/index.module.scss.js +1 -0
  7. package/dist/components/LLMToolView/sidebar/components/textInputBox/index.js +2 -1
  8. package/dist/components/LLMToolView/sidebar/components/textInputBox/index.module.scss.js +1 -0
  9. package/dist/components/LLMToolView/sidebar/index.js +1 -1
  10. package/dist/components/audioAnnotate/textInput/index.js +1 -1
  11. package/dist/components/latexEditor/constant/config.js +1 -0
  12. package/dist/components/latexEditor/index.js +1 -0
  13. package/dist/components/latexEditor/index.module.scss.js +1 -0
  14. package/dist/components/videoAnnotate/index.js +1 -1
  15. package/dist/components/videoAnnotate/videoClipTool/VideoClipToolContext.js +1 -0
  16. package/dist/components/videoAnnotate/videoClipTool/components/ToolTipForClip.js +1 -0
  17. package/dist/components/videoAnnotate/videoClipTool/components/annotatedList/index.js +1 -0
  18. package/dist/components/videoAnnotate/videoClipTool/components/annotatedList/index.module.scss.js +1 -0
  19. package/dist/components/videoAnnotate/videoClipTool/components/resizableSnippet/index.js +1 -0
  20. package/dist/components/videoAnnotate/videoClipTool/components/resizableSnippet/index.module.scss.js +1 -0
  21. package/dist/components/videoAnnotate/videoClipTool/components/timeSliceRange/index.js +1 -0
  22. package/dist/components/videoAnnotate/videoClipTool/components/timeSliceRange/index.module.scss.js +1 -0
  23. package/dist/components/videoAnnotate/videoClipTool/components/videoClipToolHotkey/index.js +1 -0
  24. package/dist/components/videoAnnotate/videoClipTool/components/videoClipToolHotkey/index.module.scss.js +1 -0
  25. package/dist/components/videoAnnotate/videoClipTool/components/videoTimeSlicesOverVideo/index.js +1 -0
  26. package/dist/components/videoAnnotate/videoClipTool/components/videoTimeSlicesOverVideo/index.module.scss.js +1 -0
  27. package/dist/components/videoAnnotate/videoClipTool/components/videoTrack/index.js +1 -0
  28. package/dist/components/videoAnnotate/videoClipTool/components/videoTrack/index.module.scss.js +1 -0
  29. package/dist/components/videoAnnotate/videoClipTool/constant.js +1 -0
  30. package/dist/components/videoAnnotate/videoClipTool/index.js +1 -0
  31. package/dist/components/videoAnnotate/videoClipTool/index.module.scss.js +1 -0
  32. package/dist/components/videoAnnotate/videoTagTool/TagToolInstanceAdaptor.js +1 -0
  33. package/dist/components/videoAnnotate/videoTextTool/index.js +1 -0
  34. package/dist/components/videoPlayer/VideoTagLayer.js +1 -1
  35. package/dist/components/videoPlayer/VideoTextLayer.js +2 -0
  36. package/dist/components/videoPlayer/components/controller/index.js +1 -1
  37. package/dist/components/videoPlayer/index.js +1 -1
  38. package/dist/components/videoPlayer/utils.js +1 -1
  39. package/dist/index.css +367 -2
  40. package/dist/index.js +1 -1
  41. package/dist/store/annotation/reducer.js +1 -1
  42. package/dist/types/App.d.ts +2 -2
  43. package/dist/types/components/LLMToolView/sidebar/components/textEditor/index.d.ts +1 -0
  44. package/dist/types/components/LLMToolView/types.d.ts +1 -0
  45. package/dist/types/components/audioAnnotate/index.d.ts +1 -1
  46. package/dist/types/components/latexEditor/constant/config.d.ts +18 -0
  47. package/dist/types/components/latexEditor/index.d.ts +12 -0
  48. package/dist/types/components/pointCloudView/PointCloud2DView.d.ts +1 -1
  49. package/dist/types/components/pointCloudView/PointCloud3DView.d.ts +1 -1
  50. package/dist/types/components/pointCloudView/PointCloudBackView.d.ts +1 -1
  51. package/dist/types/components/pointCloudView/PointCloudListener.d.ts +1 -1
  52. package/dist/types/components/pointCloudView/PointCloudSegment.d.ts +1 -1
  53. package/dist/types/components/pointCloudView/PointCloudSegment2DView.d.ts +1 -1
  54. package/dist/types/components/pointCloudView/PointCloudSegmentListener.d.ts +1 -1
  55. package/dist/types/components/pointCloudView/PointCloudSideView.d.ts +1 -1
  56. package/dist/types/components/pointCloudView/PointCloudTopView.d.ts +3 -3
  57. package/dist/types/components/pointCloudView/index.d.ts +3 -3
  58. package/dist/types/components/videoAnnotate/index.d.ts +18 -7
  59. package/dist/types/components/videoAnnotate/videoClipTool/VideoClipToolContext.d.ts +27 -0
  60. package/dist/types/components/videoAnnotate/videoClipTool/components/ToolTipForClip.d.ts +8 -0
  61. package/dist/types/components/videoAnnotate/videoClipTool/components/annotatedList/index.d.ts +7 -0
  62. package/dist/types/components/videoAnnotate/videoClipTool/components/resizableSnippet/index.d.ts +14 -0
  63. package/dist/types/components/videoAnnotate/videoClipTool/components/timeSliceRange/index.d.ts +18 -0
  64. package/dist/types/components/videoAnnotate/videoClipTool/components/videoClipToolHotkey/index.d.ts +6 -0
  65. package/dist/types/components/videoAnnotate/videoClipTool/components/videoTimeSlicesOverVideo/index.d.ts +3 -0
  66. package/dist/types/components/videoAnnotate/videoClipTool/components/videoTrack/index.d.ts +11 -0
  67. package/dist/types/components/videoAnnotate/videoClipTool/constant.d.ts +26 -0
  68. package/dist/types/components/videoAnnotate/videoClipTool/index.d.ts +131 -0
  69. package/dist/types/components/{videoPlayer → videoAnnotate/videoTagTool}/TagToolInstanceAdaptor.d.ts +6 -10
  70. package/dist/types/components/videoAnnotate/videoTextTool/index.d.ts +56 -0
  71. package/dist/types/components/videoPlayer/VideoTagLayer.d.ts +1 -0
  72. package/dist/types/components/videoPlayer/VideoTextLayer.d.ts +2 -0
  73. package/dist/types/components/videoPlayer/components/controller/index.d.ts +4 -2
  74. package/dist/types/components/videoPlayer/index.d.ts +11 -0
  75. package/dist/types/components/videoPlayer/utils.d.ts +6 -0
  76. package/dist/types/index.d.ts +1 -1
  77. package/dist/types/views/MainView/sidebar/TextToolSidebar/index.d.ts +2 -1
  78. package/dist/utils/audio.js +1 -1
  79. package/dist/views/MainView/LLMLayout/index.js +1 -1
  80. package/dist/views/MainView/index.js +1 -1
  81. package/dist/views/MainView/sidebar/TextToolSidebar/index.js +1 -1
  82. package/dist/views/MainView/sidebar/index.js +1 -1
  83. package/es/assets/annotation/video/icon_timePoint.svg.js +1 -0
  84. package/es/assets/annotation/video/icon_videoCut.svg.js +1 -0
  85. package/es/assets/annotation/video/icon_videoCutting.svg.js +1 -0
  86. package/es/components/LLMToolView/sidebar/components/answerList/index.js +1 -1
  87. package/es/components/LLMToolView/sidebar/components/textEditor/index.js +2 -1
  88. package/es/components/LLMToolView/sidebar/components/textEditor/index.module.scss.js +1 -0
  89. package/es/components/LLMToolView/sidebar/components/textInputBox/index.js +2 -1
  90. package/es/components/LLMToolView/sidebar/components/textInputBox/index.module.scss.js +1 -0
  91. package/es/components/LLMToolView/sidebar/index.js +1 -1
  92. package/es/components/audioAnnotate/textInput/index.js +1 -1
  93. package/es/components/latexEditor/constant/config.js +1 -0
  94. package/es/components/latexEditor/index.js +1 -0
  95. package/es/components/latexEditor/index.module.scss.js +1 -0
  96. package/es/components/videoAnnotate/index.js +1 -1
  97. package/es/components/videoAnnotate/videoClipTool/VideoClipToolContext.js +1 -0
  98. package/es/components/videoAnnotate/videoClipTool/components/ToolTipForClip.js +1 -0
  99. package/es/components/videoAnnotate/videoClipTool/components/annotatedList/index.js +1 -0
  100. package/es/components/videoAnnotate/videoClipTool/components/annotatedList/index.module.scss.js +1 -0
  101. package/es/components/videoAnnotate/videoClipTool/components/resizableSnippet/index.js +1 -0
  102. package/es/components/videoAnnotate/videoClipTool/components/resizableSnippet/index.module.scss.js +1 -0
  103. package/es/components/videoAnnotate/videoClipTool/components/timeSliceRange/index.js +1 -0
  104. package/es/components/videoAnnotate/videoClipTool/components/timeSliceRange/index.module.scss.js +1 -0
  105. package/es/components/videoAnnotate/videoClipTool/components/videoClipToolHotkey/index.js +1 -0
  106. package/es/components/videoAnnotate/videoClipTool/components/videoClipToolHotkey/index.module.scss.js +1 -0
  107. package/es/components/videoAnnotate/videoClipTool/components/videoTimeSlicesOverVideo/index.js +1 -0
  108. package/es/components/videoAnnotate/videoClipTool/components/videoTimeSlicesOverVideo/index.module.scss.js +1 -0
  109. package/es/components/videoAnnotate/videoClipTool/components/videoTrack/index.js +1 -0
  110. package/es/components/videoAnnotate/videoClipTool/components/videoTrack/index.module.scss.js +1 -0
  111. package/es/components/videoAnnotate/videoClipTool/constant.js +1 -0
  112. package/es/components/videoAnnotate/videoClipTool/index.js +1 -0
  113. package/es/components/videoAnnotate/videoClipTool/index.module.scss.js +1 -0
  114. package/es/components/videoAnnotate/videoTagTool/TagToolInstanceAdaptor.js +1 -0
  115. package/es/components/videoAnnotate/videoTextTool/index.js +1 -0
  116. package/es/components/videoPlayer/VideoTagLayer.js +1 -1
  117. package/es/components/videoPlayer/VideoTextLayer.js +2 -0
  118. package/es/components/videoPlayer/components/controller/index.js +1 -1
  119. package/es/components/videoPlayer/index.js +1 -1
  120. package/es/components/videoPlayer/utils.js +1 -1
  121. package/es/index.css +367 -2
  122. package/es/index.js +1 -1
  123. package/es/store/annotation/reducer.js +1 -1
  124. package/es/utils/audio.js +1 -1
  125. package/es/views/MainView/index.js +1 -1
  126. package/es/views/MainView/sidebar/TextToolSidebar/index.js +1 -1
  127. package/es/views/MainView/sidebar/index.js +1 -1
  128. package/package.json +6 -4
  129. package/dist/components/videoPlayer/TagToolInstanceAdaptor.js +0 -1
  130. package/es/components/videoPlayer/TagToolInstanceAdaptor.js +0 -1
  131. /package/dist/components/{videoPlayer → videoAnnotate/videoTagTool}/TagToolInstanceAdaptorI18nProvider.js +0 -0
  132. /package/dist/types/components/{videoPlayer → videoAnnotate/videoTagTool}/TagToolInstanceAdaptorI18nProvider.d.ts +0 -0
  133. /package/es/components/{videoPlayer → videoAnnotate/videoTagTool}/TagToolInstanceAdaptorI18nProvider.js +0 -0
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import { IA2MapStateProps } from '@/store/annotation/map';
3
- import { TDrawLayerSlot } from '@/types/main';
3
+ import { DrawLayerSlot } from '@/types/main';
4
4
  interface IProps extends IA2MapStateProps {
5
- drawLayerSlot?: TDrawLayerSlot;
5
+ drawLayerSlot?: DrawLayerSlot;
6
6
  checkMode?: boolean;
7
7
  intelligentFit?: boolean;
8
8
  setIsEnlargeTopView: (value: boolean) => void;
@@ -11,5 +11,5 @@ interface IProps extends IA2MapStateProps {
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
- }, "imgIndex" | "imgList" | "config" | "highlightAttribute" | "loadPCDFileLoading" | "currentData" | "stepInfo" | "configString">>;
14
+ }, "imgIndex" | "imgList" | "config" | "highlightAttribute" | "loadPCDFileLoading" | "stepInfo" | "currentData" | "configString">>;
15
15
  export default _default;
@@ -5,14 +5,14 @@
5
5
  * @date 2022-06-21
6
6
  */
7
7
  import React from 'react';
8
- import { TDrawLayerSlot } from '@/types/main';
8
+ import { DrawLayerSlot } from '@/types/main';
9
9
  import { IA2MapStateProps } from '@/store/annotation/map';
10
10
  interface IProps extends IA2MapStateProps {
11
- drawLayerSlot?: TDrawLayerSlot;
11
+ drawLayerSlot?: DrawLayerSlot;
12
12
  checkMode?: boolean;
13
13
  intelligentFit?: boolean;
14
14
  }
15
15
  declare const _default: import("react-redux").ConnectedComponent<React.FC<IProps>, import("react-redux").Omit<IProps & {
16
16
  children?: React.ReactNode;
17
- }, "imgIndex" | "imgList" | "config" | "highlightAttribute" | "loadPCDFileLoading" | "currentData" | "stepInfo" | "configString">>;
17
+ }, "imgIndex" | "imgList" | "config" | "highlightAttribute" | "loadPCDFileLoading" | "stepInfo" | "currentData" | "configString">>;
18
18
  export default _default;
@@ -4,12 +4,23 @@
4
4
  * @date 2022-06-02
5
5
  */
6
6
  import React from 'react';
7
- import { AnnotationState } from '@/store/annotation/types';
8
- declare const _default: import("react-redux").ConnectedComponent<React.FC<{
9
- annotation: AnnotationState;
10
- }>, import("react-redux").Omit<{
11
- annotation: AnnotationState;
12
- } & {
7
+ import { DrawLayerSlot } from '@/types/main';
8
+ import { IStepInfo } from '@/types/step';
9
+ import { IFileItem } from '@/types/data';
10
+ export interface IVideoAnnotateProps {
11
+ path: string;
12
+ loading: boolean;
13
+ videoContext?: any;
14
+ stepInfo: IStepInfo;
15
+ step: number;
16
+ stepList: IStepInfo[];
17
+ config: any;
18
+ imgIndex: number;
19
+ imgList: IFileItem[];
20
+ drawLayerSlot?: DrawLayerSlot;
21
+ footer?: any;
22
+ }
23
+ declare const _default: import("react-redux").ConnectedComponent<React.FC<IVideoAnnotateProps>, import("react-redux").Omit<IVideoAnnotateProps & {
13
24
  children?: React.ReactNode;
14
- }, "annotation">>;
25
+ }, "stepList" | "step" | "imgIndex" | "imgList" | "config" | "loading" | "path" | "stepInfo">>;
15
26
  export default _default;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @author whq <752342314@qq.com>
3
+ * @file Store for VideoClipTool
4
+ * @date 2023-12-12
5
+ */
6
+ import React from 'react';
7
+ import { EClipStatus } from './constant';
8
+ import { IInputList, IVideoTimeSlice } from '@labelbee/lb-utils';
9
+ interface IVideoClipToolContext {
10
+ result: IVideoTimeSlice[];
11
+ selectedID: string;
12
+ attributeList: IInputList[];
13
+ videoPlayer?: any;
14
+ clipStatus: EClipStatus;
15
+ selectedAttribute?: string;
16
+ contextToCancel?: (e: any) => void;
17
+ }
18
+ export declare const VideoClipToolContext: React.Context<IVideoClipToolContext>;
19
+ export declare const VideoClipToolContextProvider: React.Provider<IVideoClipToolContext>;
20
+ interface IVideoClipAnnotatedListContext {
21
+ onSelectedTimeSlice: (timeSlice: IVideoTimeSlice) => void;
22
+ removeTimeSlice: (timeSlice: IVideoTimeSlice) => void;
23
+ updateSelectedSliceTimeProperty: (val: number, key: 'start' | 'end') => void;
24
+ }
25
+ export declare const VideoClipAnnotatedListContext: React.Context<IVideoClipAnnotatedListContext>;
26
+ export declare const VideoClipAnnotatedListContextProvider: React.Provider<IVideoClipAnnotatedListContext>;
27
+ export {};
@@ -0,0 +1,8 @@
1
+ import { IVideoTimeSlice, IInputList } from '@labelbee/lb-utils';
2
+ import React from 'react';
3
+ declare const ToolTipForClip: (props: {
4
+ slot: React.ReactElement | undefined;
5
+ item: IVideoTimeSlice;
6
+ attributeList: IInputList[];
7
+ }) => React.JSX.Element | null;
8
+ export default ToolTipForClip;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ declare const _default: import("react-redux").ConnectedComponent<(props: {
3
+ toolInstance: any;
4
+ }) => React.JSX.Element | null, import("react-redux").Omit<{
5
+ toolInstance: any;
6
+ }, "toolInstance">>;
7
+ export default _default;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ interface IProps {
3
+ track: any;
4
+ currentTime: number;
5
+ attributeList: any[];
6
+ readonly: boolean;
7
+ onClipping: boolean;
8
+ onTrackResizeStart: () => void;
9
+ onResize: (direction: any, changedPercentage: number) => void;
10
+ style: React.CSSProperties;
11
+ isSelected?: boolean;
12
+ }
13
+ declare const ResizableSnippet: (props: IProps) => React.JSX.Element;
14
+ export default ResizableSnippet;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @file 视频截取工具,片段截取时间范围
3
+ * @author lijingchi <lijingchi1@sensetime.com>
4
+ * @createdate 2022-11-07
5
+ */
6
+ import { IVideoTimeSlice } from '@labelbee/lb-utils';
7
+ import React from 'react';
8
+ /**
9
+ * 选中的片段进行时间更新的输入模块
10
+ * @returns
11
+ */
12
+ declare const TimeSliceRange: ({ selectedTimeSlice, videoPlayer, updateTimeForSelected, disabled, }: {
13
+ selectedTimeSlice?: IVideoTimeSlice | undefined;
14
+ videoPlayer?: any;
15
+ updateTimeForSelected: (val: number, key: 'start' | 'end') => void;
16
+ disabled: boolean;
17
+ }) => React.JSX.Element | null;
18
+ export default TimeSliceRange;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ declare const VideoClipToolHotkey: ({ toggleClipStatus, addTime, }: {
3
+ toggleClipStatus?: (() => void) | undefined;
4
+ addTime?: (() => void) | undefined;
5
+ }) => React.JSX.Element;
6
+ export default VideoClipToolHotkey;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const VideoTimeSlicesOverVideo: (props: any) => React.JSX.Element;
3
+ export default VideoTimeSlicesOverVideo;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ interface IProps {
3
+ currentTime: number;
4
+ onTrackResize: any;
5
+ readonly: boolean;
6
+ onTrackResizeStart: () => void;
7
+ }
8
+ /** 视频片段的显示内容 */
9
+ export declare const getDisplayContent: (i: any, attributeList: any) => string;
10
+ declare const VideoTrack: (props: IProps) => React.JSX.Element;
11
+ export default VideoTrack;
@@ -0,0 +1,26 @@
1
+ export declare enum EPageChanges {
2
+ /** 往前翻页 */
3
+ AHEAD = 1,
4
+ /** 往后翻页 */
5
+ BACK = -1
6
+ }
7
+ export declare enum EDirection {
8
+ Left = "left",
9
+ Right = "right"
10
+ }
11
+ export declare enum EClipStatus {
12
+ Clipping = 0,
13
+ Stop = 1
14
+ }
15
+ export declare enum ETimeSliceType {
16
+ /** 片段 */
17
+ Period = 0,
18
+ /** 时间点 */
19
+ Time = 1
20
+ }
21
+ export declare const TIME_SLICE_TYPE: {
22
+ [key: number]: string;
23
+ };
24
+ /** 最小允许片段时间 */
25
+ export declare const SLICE_MIN_TIME = 0.05;
26
+ export declare const PER_SLICE_CHANGE = 0.05;
@@ -0,0 +1,131 @@
1
+ import _ from 'lodash';
2
+ import React from 'react';
3
+ import { IVideoTimeSlice } from '@labelbee/lb-utils';
4
+ import { EClipStatus, EDirection } from './constant';
5
+ import { IVideoAnnotateProps } from '@/components/videoAnnotate';
6
+ interface IVideoClipProps extends IVideoAnnotateProps {
7
+ pageForward: () => void;
8
+ pageJump: (page: string) => void;
9
+ pageBackward: () => void;
10
+ onMounted: (instance: any) => void;
11
+ onUnmounted: () => void;
12
+ }
13
+ interface IState {
14
+ result: IVideoTimeSlice[];
15
+ selectedAttribute: string;
16
+ textValue: string;
17
+ clipStatus: EClipStatus;
18
+ selectedID: string;
19
+ loading: boolean;
20
+ videoError: boolean;
21
+ remainingTime: number;
22
+ currentTime: number;
23
+ configLoading: boolean;
24
+ valid: boolean;
25
+ }
26
+ declare class VideoClipTool extends React.Component<IVideoClipProps, IState> {
27
+ get videoUrl(): string;
28
+ get isClipping(): boolean;
29
+ /** 结果JSON */
30
+ get resultJSON(): string | undefined;
31
+ get disabled(): boolean;
32
+ get loading(): boolean;
33
+ get defaultTextAttribute(): string;
34
+ get defaultAttribute(): string;
35
+ get selectedSliceIndex(): number;
36
+ get exportContext(): {
37
+ selectedID: string;
38
+ result: IVideoTimeSlice[];
39
+ clipStatus: EClipStatus;
40
+ videoPlayer: any;
41
+ attributeList: any;
42
+ onSelectedTimeSlice: (i: IVideoTimeSlice) => void;
43
+ removeTimeSlice: (item: IVideoTimeSlice) => void;
44
+ updateSelectedSliceTimeProperty: (val: number, key: "end" | "start") => void;
45
+ };
46
+ fns: Map<string, any[]>;
47
+ videoPlayer?: any;
48
+ videoNode?: HTMLVideoElement;
49
+ videoRef?: HTMLVideoElement;
50
+ throttledUpdateTime: _.DebouncedFunc<(newValue: number) => void>;
51
+ constructor(props: IVideoClipProps);
52
+ get valid(): boolean;
53
+ /** 步骤信息 */
54
+ stepInfo: () => import("../../../types/step").IStepInfo;
55
+ componentDidMount(): void;
56
+ componentWillUnmount(): void;
57
+ shouldComponentUpdate(newProps: any, newState: IState): boolean;
58
+ emitEvent: (event: string) => void;
59
+ singleOn(event: string, func: () => void): void;
60
+ on(event: string, func: () => void): void;
61
+ unbindAll(eventName: string): void;
62
+ setValid: (valid: boolean) => void;
63
+ updateSidebar: () => void;
64
+ exportData: () => (IVideoTimeSlice[] | {
65
+ valid: boolean;
66
+ duration: number;
67
+ })[];
68
+ /**
69
+ * 微调选中截取片段的开始时间(start)
70
+ * @param changeTime
71
+ */
72
+ updateSelectedSliceTimeStartByPer: (changeTime: number) => void;
73
+ /**
74
+ * 微调选中截取片段的最后时间(end)
75
+ * @param changeTime
76
+ */
77
+ updateSelectedSliceTimeEndByPer: (changeTime: number) => void;
78
+ updateSelectedSliceTimeProperty: (val: number, key: 'start' | 'end') => void;
79
+ keyDownEvents: (e: KeyboardEvent) => void;
80
+ videoLoaded: (totalTime?: number) => void;
81
+ setVideoError: (videoError: boolean, errorType: any, curTime: number) => void;
82
+ clearResult: () => void;
83
+ /** 取消截取 */
84
+ cancelClipped: () => void;
85
+ /**
86
+ * 切换截取状态,如为开启则添加end为null的数据,否则将对应截取片段的时间补全
87
+ * @param curTime
88
+ * @returns
89
+ */
90
+ toggleClipStatus: (curTime?: number) => void;
91
+ /** 添加时间点 */
92
+ addTime: () => void;
93
+ /**
94
+ * 视频右键操作
95
+ * @param e
96
+ */
97
+ contextToCancel: (e: MouseEvent) => void;
98
+ /**
99
+ * 重新调整片段长度
100
+ * @param id
101
+ * @param direction
102
+ * @param changedPercent
103
+ */
104
+ onTrackResize: (id: string, direction: EDirection, changedPercent: number) => void;
105
+ /**
106
+ * 渲染页面标注视频组件
107
+ * @returns
108
+ */
109
+ renderMediaContent: () => React.JSX.Element;
110
+ /**
111
+ * 选中片段
112
+ * @param i
113
+ * @returns
114
+ */
115
+ onSelectedTimeSlice: (i: IVideoTimeSlice) => void;
116
+ /** 根据数据删除片段 */
117
+ removeTimeSlice: (item: IVideoTimeSlice) => void;
118
+ setResult: (loading?: boolean, props?: any) => void;
119
+ /**
120
+ * 当前选中的属性改变
121
+ * @param attribute
122
+ */
123
+ setDefaultAttribute: (attribute: string) => void;
124
+ /**
125
+ * 设置当前选中片段的文本
126
+ * @param textValue
127
+ */
128
+ setTextAttribute: (textValue: string) => void;
129
+ render(): React.JSX.Element;
130
+ }
131
+ export default VideoClipTool;
@@ -5,20 +5,15 @@
5
5
  * @date 2022-05-31
6
6
  */
7
7
  import React from 'react';
8
- import { IStepInfo } from '@/types/step';
9
8
  import _ from 'lodash';
10
- import type { ObjectString } from './types';
11
- import { IFileItem } from '@/types/data';
12
- export interface IVideoTagInstanceAdaptorProps {
13
- imgIndex: number;
14
- imgList: IFileItem[];
9
+ import type { ObjectString } from '../../videoPlayer/types';
10
+ import { IVideoAnnotateProps } from '@/components/videoAnnotate';
11
+ export interface IVideoTagInstanceAdaptorProps extends IVideoAnnotateProps {
15
12
  pageForward: () => void;
16
13
  pageJump: (page: string) => void;
17
14
  pageBackward: () => void;
18
- onMounted: (instance: TagToolInstanceAdaptor) => void;
15
+ onMounted: (instance: any) => void;
19
16
  onUnmounted: () => void;
20
- step: number;
21
- stepList: IStepInfo[];
22
17
  }
23
18
  interface IVideoTagInstanceAdaptorState {
24
19
  tagResult: any[];
@@ -29,7 +24,7 @@ export declare class TagToolInstanceAdaptor extends React.Component<IVideoTagIns
29
24
  fns: {
30
25
  [key: string]: () => void;
31
26
  };
32
- videoRef?: HTMLVideoElement;
27
+ videoPlayer?: HTMLVideoElement;
33
28
  labelSelectedList: number[];
34
29
  constructor(props: IVideoTagInstanceAdaptorProps);
35
30
  get config(): any;
@@ -50,6 +45,7 @@ export declare class TagToolInstanceAdaptor extends React.Component<IVideoTagIns
50
45
  })[];
51
46
  singleOn(event: string, func: () => void): void;
52
47
  on(event: string, func: () => void): void;
48
+ unbindAll(eventName: string): void;
53
49
  getTagResultByCode(num1: number, num2?: number): {
54
50
  value: {
55
51
  key: any;
@@ -0,0 +1,56 @@
1
+ import React from 'react';
2
+ import { IVideoAnnotateProps } from '@/components/videoAnnotate';
3
+ export interface IVideoTextInstanceAdaptorProps extends IVideoAnnotateProps {
4
+ pageForward: () => void;
5
+ pageJump: (page: string) => void;
6
+ pageBackward: () => void;
7
+ onMounted: (instance: any) => void;
8
+ onUnmounted: () => void;
9
+ }
10
+ interface IVideoTextInstanceAdaptorState {
11
+ result: any;
12
+ valid: boolean;
13
+ showText: boolean;
14
+ }
15
+ export declare class VideoTextTool extends React.Component<IVideoTextInstanceAdaptorProps, IVideoTextInstanceAdaptorState> {
16
+ fns: {
17
+ [key: string]: () => void;
18
+ };
19
+ videoPlayer?: HTMLVideoElement;
20
+ constructor(props: IVideoTextInstanceAdaptorProps);
21
+ get config(): any;
22
+ /** Just implementation, no actual logic */
23
+ get history(): {
24
+ initRecord: () => void;
25
+ pushHistory: () => void;
26
+ };
27
+ get valid(): boolean;
28
+ get textList(): any[];
29
+ getColor(config?: any, attribute?: string): any;
30
+ clearResult: (sendMsg?: boolean) => void;
31
+ exportData: () => (any[] | {
32
+ valid: boolean;
33
+ duration: number;
34
+ frames: number | undefined;
35
+ videoWidth: number;
36
+ videoHeight: number;
37
+ })[];
38
+ toggleShowText: (v: boolean) => void;
39
+ singleOn(event: string, func: () => void): void;
40
+ on(event: string, func: () => void): void;
41
+ unbindAll(eventName: string): void;
42
+ emitEvent: (event: string) => void;
43
+ updateSidebar: () => void;
44
+ updateTextValue: (key: string, text: string, result?: {
45
+ [key: string]: string;
46
+ } | undefined) => void;
47
+ setResult: (result: any) => void;
48
+ setValid: (valid: boolean) => void;
49
+ componentDidMount(): void;
50
+ componentWillUnmount(): void;
51
+ setResultFromImgList: (props: IVideoTextInstanceAdaptorProps) => void;
52
+ /** Observer imgIndex and set result */
53
+ shouldComponentUpdate(props: IVideoTextInstanceAdaptorProps): boolean;
54
+ render(): React.JSX.Element;
55
+ }
56
+ export {};
@@ -7,6 +7,7 @@ interface IVideoTagLayerProps {
7
7
  };
8
8
  }>;
9
9
  inputList: IInputList[];
10
+ hasPromptLayer?: boolean;
10
11
  }
11
12
  export declare const VideoTagLayer: React.FC<IVideoTagLayerProps>;
12
13
  export {};
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const VideoTextLayer: (props: any) => React.JSX.Element;
@@ -1,4 +1,3 @@
1
- import React from 'react';
2
1
  /**
3
2
  * Format video time to display
4
3
  * Such as 61.9 => 01:01:9
@@ -10,5 +9,8 @@ export declare enum EPlayerType {
10
9
  Video = 0,
11
10
  Audio = 1
12
11
  }
13
- declare const VideoController: () => React.JSX.Element;
12
+ interface IProps {
13
+ footer?: any;
14
+ }
15
+ declare const VideoController: (props: IProps) => any;
14
16
  export default VideoController;
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import React from 'react';
7
7
  import { IFileItem } from '@/types/data';
8
+ export declare const PLAYER_CONTROL_BAR_HEIGHT = 60;
8
9
  export declare const VideoPlayerCtx: React.Context<{
9
10
  videoRef?: React.RefObject<HTMLVideoElement> | null | undefined;
10
11
  isPlay: boolean;
@@ -20,6 +21,8 @@ export declare const VideoPlayerCtx: React.Context<{
20
21
  pageBackward: () => void;
21
22
  pageJump: (page: string) => void;
22
23
  pageForward: () => void;
24
+ addTime?: (() => void) | undefined;
25
+ toggleClipStatus?: (() => void) | undefined;
23
26
  }>;
24
27
  interface IVideoPlayerProps {
25
28
  imgList: IFileItem[];
@@ -29,6 +32,13 @@ interface IVideoPlayerProps {
29
32
  pageForward: () => void;
30
33
  valid: boolean;
31
34
  setVideoRef?: (video: HTMLVideoElement) => void;
35
+ showVideoTrack?: boolean;
36
+ onTrackResize?: any;
37
+ footer?: any;
38
+ dataLoaded?: (totalTime: number) => void;
39
+ addTime?: () => void;
40
+ toggleClipStatus?: () => void;
41
+ drawLayerSlot?: any;
32
42
  }
33
43
  interface IVideoPlayerState {
34
44
  playbackRate: number;
@@ -59,6 +69,7 @@ export declare class VideoPlayer extends React.Component<IVideoPlayerProps, IVid
59
69
  keydown: (event: KeyboardEvent) => void;
60
70
  onPlay: () => void;
61
71
  onPause: () => void;
72
+ onTimeUpdate: () => void;
62
73
  onVideoStopped: () => void;
63
74
  onVideoStart: () => void;
64
75
  resetVideoData: () => void;
@@ -34,3 +34,9 @@ export declare const getKeyCodeNumber: (keyCode: number) => number;
34
34
  * @returns {Number}
35
35
  */
36
36
  export declare const decimalReserved: (num: number, places?: number) => number;
37
+ /**
38
+ * Compute the hash code of given string
39
+ * @param str
40
+ * @returns {Number}
41
+ */
42
+ export declare const hashCode: (str: string | undefined) => number | undefined;
@@ -4,7 +4,7 @@ import PointCloudAnnotationView from '@/components/AnnotationView/pointCloudAnno
4
4
  import QuestionView from '@/components/LLMToolView/questionView';
5
5
  import { i18n } from '@labelbee/lb-utils';
6
6
  import React from 'react';
7
- import { VideoTagTool } from '@/components/videoPlayer/TagToolInstanceAdaptorI18nProvider';
7
+ import { VideoTagTool } from '@/components/videoAnnotate/videoTagTool/TagToolInstanceAdaptorI18nProvider';
8
8
  import './index.scss';
9
9
  import PredictTracking from '@/components/predictTracking';
10
10
  import LLMToolView from '@/components/LLMToolView';
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { IStepInfo } from '@/types/step';
3
3
  import TextToolOperation from '@labelbee/lb-annotation/dist/types/core/toolOperation/TextToolOperation';
4
+ import { VideoTextTool } from '@/components/videoAnnotate/videoTextTool';
4
5
  interface ITextareaWithFooterProps {
5
6
  textareaProps?: any;
6
7
  footer?: any;
@@ -8,7 +9,7 @@ interface ITextareaWithFooterProps {
8
9
  export declare const TextareaWithFooter: (props: ITextareaWithFooterProps) => React.JSX.Element;
9
10
  interface IProps {
10
11
  dispatch: Function;
11
- toolInstance: TextToolOperation;
12
+ toolInstance: TextToolOperation | VideoTextTool;
12
13
  imgIndex: number;
13
14
  triggerEventAfterIndexChanged: boolean;
14
15
  step: number;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),require("antd");var lbAnnotation=require("@labelbee/lb-annotation");require("lodash");var Decimal=require("decimal.js"),moment=require("moment");function _interopDefaultLegacy(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var Decimal__default=_interopDefaultLegacy(Decimal),moment__default=_interopDefaultLegacy(moment);const{COLORS_ARRAY,ICON_ARRAY,INVALID_ICON,NULL_COLOR,NULL_ICON,WHITE_FONT_COLOR_ARRAY}=lbAnnotation.cStyle,DEFAULT_TEXT_CONFIG_ITEM={label:"\u6587\u672C",key:"text",required:!1,default:"",maxLength:1e3},getAttributeShowText=(t,e)=>{var r,n;try{const o=getAttributeIndex(t,e);return(n=(r=e[o])==null?void 0:r.key)!=null?n:t}catch(o){return t}},getAttributeIndex=(t,e)=>{try{return e.findIndex(n=>n.value===t)}catch(r){return-1}},getAttributeColor=(t,e)=>{try{const r=getAttributeIndex(t,e);return r===-1?NULL_COLOR:COLORS_ARRAY[r%COLORS_ARRAY.length]}catch(r){return NULL_COLOR}},getAttributeFontColor=(t,e)=>{try{const r=getAttributeColor(t,e);return WHITE_FONT_COLOR_ARRAY.includes(r)?"#fff":"#333"}catch(r){return"#333"}},updateColorOpacity=(t,e)=>{var r;try{const n=((r=t.match(/\((.*)\)/))==null?void 0:r[1].split(","))||[];return n.splice(3,1,e.toString()),`rgba(${n.join(",")})`}catch(n){return t}},precisionMinus=(t,e)=>new Decimal__default.default(Number(t)||0).minus(Number(e)||0).toNumber(),precisionAdd=(t,e)=>new Decimal__default.default(t).add(e).toNumber(),generateIsDoubleClick=t=>{let e=null;return n=>e?n.target===(e==null?void 0:e.target):(e=n,setTimeout(()=>{e=null},t),!1)},isDoubleClick=generateIsDoubleClick(300),formatTime=t=>{const e=Math.floor(t*1e3),r=moment__default.default.duration(e);return`${Math.floor(r.asMinutes())}:${moment__default.default.utc(e).format("ss")}`},timeFormat=(t,e="ss.S")=>{const r=Math.floor(t*1e3),n=moment__default.default.duration(r);return`${fillZero(Math.floor(n.asMinutes()))}:${moment__default.default.utc(r).format(e)}`},fillZero=t=>t<10?`0${t}`:t,getCanMoveRange=(t,e)=>{let r=null,n=null;const o=t.length;if(o===0)return{min:r,max:n};let u=0;return e<t[u]?n=t[u]:(t.forEach((i,s)=>{e>i&&(r=i,u=s)}),r&&u<o-1&&(n=t[u+1])),{min:r,max:n}},dispatchResizeEvent=()=>{const t=document.createEvent("Event");t.initEvent("resize",!0,!0),window.dispatchEvent(t)};exports.DEFAULT_TEXT_CONFIG_ITEM=DEFAULT_TEXT_CONFIG_ITEM,exports.dispatchResizeEvent=dispatchResizeEvent,exports.formatTime=formatTime,exports.getAttributeColor=getAttributeColor,exports.getAttributeFontColor=getAttributeFontColor,exports.getAttributeIndex=getAttributeIndex,exports.getAttributeShowText=getAttributeShowText,exports.getCanMoveRange=getCanMoveRange,exports.isDoubleClick=isDoubleClick,exports.precisionAdd=precisionAdd,exports.precisionMinus=precisionMinus,exports.timeFormat=timeFormat,exports.updateColorOpacity=updateColorOpacity;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),require("antd");var lbAnnotation=require("@labelbee/lb-annotation");require("lodash");var Decimal=require("decimal.js"),moment=require("moment");function _interopDefaultLegacy(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var Decimal__default=_interopDefaultLegacy(Decimal),moment__default=_interopDefaultLegacy(moment);const{COLORS_ARRAY,ICON_ARRAY,INVALID_ICON,NULL_COLOR,NULL_ICON,WHITE_FONT_COLOR_ARRAY}=lbAnnotation.cStyle,DEFAULT_TEXT_CONFIG_ITEM={label:"\u6587\u672C",key:"text",required:!1,default:"",maxLength:1e3},getAttributeShowText=(t,e)=>{var r,n;try{const o=getAttributeIndex(t,e);return(n=(r=e[o])==null?void 0:r.key)!=null?n:t}catch(o){return t}},getAttributeIndex=(t,e)=>{try{return e.findIndex(n=>n.value===t)}catch(r){return-1}},getAttributeColor=(t,e)=>{try{const r=getAttributeIndex(t,e);return r===-1?NULL_COLOR:COLORS_ARRAY[r%COLORS_ARRAY.length]}catch(r){return NULL_COLOR}},getAttributeFontColor=(t,e)=>{try{const r=getAttributeColor(t,e);return WHITE_FONT_COLOR_ARRAY.includes(r)?"#fff":"#333"}catch(r){return"#333"}},updateColorOpacity=(t,e)=>{var r;try{const n=((r=t.match(/\((.*)\)/))==null?void 0:r[1].split(","))||[];return n.splice(3,1,e.toString()),`rgba(${n.join(",")})`}catch(n){return t}},precisionMinus=(t,e)=>new Decimal__default.default(Number(t)||0).minus(Number(e)||0).toNumber(),precisionAdd=(t,e)=>new Decimal__default.default(t).add(e).toNumber(),generateIsDoubleClick=t=>{let e=null;return n=>e?n.target===(e==null?void 0:e.target):(e=n,setTimeout(()=>{e=null},t),!1)},isDoubleClick=generateIsDoubleClick(300),formatTime=t=>{const e=Math.floor(t*1e3),r=moment__default.default.duration(e);return`${Math.floor(r.asMinutes())}:${moment__default.default.utc(e).format("ss")}`},timeFormat=(t,e="ss.S")=>{const r=Math.floor(t*1e3),n=moment__default.default.duration(r);return`${fillZero(Math.floor(n.asMinutes()))}:${moment__default.default.utc(r).format(e)}`},fillZero=t=>t<10?`0${t}`:t,getCanMoveRange=(t,e)=>{let r=null,n=null;const o=t.length;if(o===0)return{min:r,max:n};let u=0;return e<t[u]?n=t[u]:(t.forEach((a,i)=>{e>a&&(r=a,u=i)}),r&&u<o-1&&(n=t[u+1])),{min:r,max:n}},dispatchResizeEvent=()=>{const t=document.createEvent("Event");t.initEvent("resize",!0,!0),window.dispatchEvent(t)};function isImageValue(t){try{const e=JSON.parse(t);return typeof e.valid=="boolean"?e.valid:!0}catch(e){return!0}}exports.DEFAULT_TEXT_CONFIG_ITEM=DEFAULT_TEXT_CONFIG_ITEM,exports.dispatchResizeEvent=dispatchResizeEvent,exports.formatTime=formatTime,exports.getAttributeColor=getAttributeColor,exports.getAttributeFontColor=getAttributeFontColor,exports.getAttributeIndex=getAttributeIndex,exports.getAttributeShowText=getAttributeShowText,exports.getCanMoveRange=getCanMoveRange,exports.isDoubleClick=isDoubleClick,exports.isImageValue=isImageValue,exports.precisionAdd=precisionAdd,exports.precisionMinus=precisionMinus,exports.timeFormat=timeFormat,exports.updateColorOpacity=updateColorOpacity;
@@ -1 +1 @@
1
- "use strict";var index$4=require("../../../constant/index.js"),es=require("antd/es"),React=require("react"),index$3=require("../sidebar/index.js"),index$2=require("../toolFooter/index.js"),dom=require("../../../utils/dom.js"),index=require("../../../utils/index.js"),ctx=require("../../../store/ctx.js"),index$1=require("../../../components/LLMToolView/index.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React);const{Sider,Content}=es.Layout,layoutCls=`${index$4.prefix}-layout`,LLMLayout=e=>{var t,a;const[l,i]=React.useState(-1),[r,o]=React.useState([]),[n,s]=React.useState([]);return React__default.default.createElement(es.Layout,{className:dom.getClassName("layout","container")},React__default.default.createElement(ctx.LLMContext.Provider,{value:React.useMemo(()=>({hoverKey:l,setHoverKey:i,modelAPIResponse:r,setModelAPIResponse:o,newAnswerList:n,setNewAnswerList:s}),[l,r,n])},e==null?void 0:e.leftSider,React__default.default.createElement(Content,{className:index.classnames({[`${layoutCls}__content`]:!0,[`${index$4.prefix}-LLMLayout`]:!0})},React__default.default.createElement(index$1,{checkMode:e.checkMode,showTips:e.showTips,tips:e.tips}),React__default.default.createElement(index$2.default,{style:(t=e.style)==null?void 0:t.footer,mode:e.mode,footer:e==null?void 0:e.footer})),React__default.default.createElement(Sider,{className:`${layoutCls}__side`,width:600,style:{position:"relative"}},React__default.default.createElement(index$3.default,{sider:e==null?void 0:e.sider,checkMode:e==null?void 0:e.checkMode}),(a=e.drawLayerSlot)==null?void 0:a.call(e,{}))))};module.exports=LLMLayout;
1
+ "use strict";var index$1=require("../../../constant/index.js"),es=require("antd/es"),React=require("react"),index$4=require("../sidebar/index.js"),index$3=require("../toolFooter/index.js"),dom=require("../../../utils/dom.js"),index=require("../../../utils/index.js"),ctx=require("../../../store/ctx.js"),index$2=require("../../../components/LLMToolView/index.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React);const{Sider,Content}=es.Layout,layoutCls=`${index$1.prefix}-layout`,LLMLayout=e=>{var t,a;const[l,i]=React.useState(-1),[r,o]=React.useState([]),[n,s]=React.useState([]);return React__default.default.createElement(es.Layout,{className:dom.getClassName("layout","container")},React__default.default.createElement(ctx.LLMContext.Provider,{value:React.useMemo(()=>({hoverKey:l,setHoverKey:i,modelAPIResponse:r,setModelAPIResponse:o,newAnswerList:n,setNewAnswerList:s}),[l,r,n])},e==null?void 0:e.leftSider,React__default.default.createElement(Content,{className:index.classnames({[`${layoutCls}__content`]:!0,[`${index$1.prefix}-LLMLayout`]:!0})},React__default.default.createElement(index$2,{checkMode:e.checkMode,showTips:e.showTips,tips:e.tips}),React__default.default.createElement(index$3.default,{style:(t=e.style)==null?void 0:t.footer,mode:e.mode,footer:e==null?void 0:e.footer})),React__default.default.createElement(Sider,{className:`${layoutCls}__side`,width:600,style:{position:"relative"}},React__default.default.createElement(index$4.default,{sider:e==null?void 0:e.sider,checkMode:e==null?void 0:e.checkMode}),(a=e.drawLayerSlot)==null?void 0:a.call(e,{}))))};module.exports=LLMLayout;
@@ -1 +1 @@
1
- "use strict";var index$6=require("../../components/customResizeHook/index.js"),index$4=require("../../constant/index.js"),antd=require("antd"),es=require("antd/es"),React=require("react"),index$a=require("./annotationOperation/index.js"),index$9=require("./annotationTips/index.js"),index$3=require("./sidebar/index.js"),index$b=require("./toolFooter/index.js"),index$8=require("./toolHeader/index.js"),reducer=require("../../store/annotation/reducer.js"),index$5=require("../../components/videoAnnotate/index.js"),reactRedux=require("react-redux"),ToolUtils=require("../../utils/ToolUtils.js"),index$c=require("../../components/pointCloudView/index.js"),dom=require("../../utils/dom.js"),index$7=require("../../utils/index.js"),index$2=require("../../components/predictTracking/previewResult/index.js"),ctx=require("../../store/ctx.js"),ToolType=require("../../data/enums/ToolType.js"),index=require("./LLMLayout/index.js"),index$1=require("../../components/audioAnnotate/index.js"),icons=require("@ant-design/icons"),reactI18next=require("react-i18next"),lbAnnotation=require("@labelbee/lb-annotation");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),__defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__spreadValues=(e,t)=>{for(var n in t||(t={}))__hasOwnProp.call(t,n)&&__defNormalProp(e,n,t[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(t))__propIsEnum.call(t,n)&&__defNormalProp(e,n,t[n]);return e};const{Sider,Content}=es.Layout,layoutCls=`${index$4.prefix}-layout`,ImageAnnotate=e=>{var t;return React__default.default.createElement(React__default.default.Fragment,null,e.showTips===!0&&React__default.default.createElement(index$9,{path:e.path,tips:e.tips}),React__default.default.createElement(index$a,__spreadValues({},e)),React__default.default.createElement(index$b.default,{style:(t=e.style)==null?void 0:t.footer,mode:e.mode,footer:e==null?void 0:e.footer}))},PointCloudAnnotate=e=>{var t;return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(index$c,{drawLayerSlot:e.drawLayerSlot,checkMode:e.checkMode,intelligentFit:e.intelligentFit}),React__default.default.createElement(index$b.default,{style:(t=e.style)==null?void 0:t.footer,mode:e.mode,footer:e==null?void 0:e.footer}))},AnnotatedArea=e=>{var t;const{stepList:n,step:l}=e,r=(t=reducer.getStepConfig(n,l))==null?void 0:t.tool,i=ToolUtils.isVideoTool(r),a=ToolUtils.isPointCloudTool(r);return i?React__default.default.createElement(index$5,__spreadValues({},e)):a?React__default.default.createElement(PointCloudAnnotate,__spreadValues({},e)):React__default.default.createElement(ImageAnnotate,__spreadValues({},e))},ViewportProviderLayout=e=>{var t,n,l;const{t:r}=reactI18next.useTranslation(),{stepList:i,step:a}=e,o=(t=reducer.getStepConfig(i,a))==null?void 0:t.tool,d=![ToolType.EToolName.LLM].includes(o),u=![ToolType.EToolName.LLM].includes(o),c=[lbAnnotation.EPointCloudName.PointCloud].includes(o);return React__default.default.createElement(index$6.ViewportProvider,null,React__default.default.createElement(antd.Spin,{spinning:e.loading,indicator:React__default.default.createElement(icons.LoadingOutlined,null),tip:React__default.default.createElement("span",{style:{marginTop:200}},r("LoadingTips")),delay:500},React__default.default.createElement(es.Layout,{className:index$7.classnames([layoutCls,e.className]),style:(n=e.style)==null?void 0:n.layout},React__default.default.createElement("header",{className:`${layoutCls}__header`,style:(l=e.style)==null?void 0:l.header},React__default.default.createElement(index$8,{header:e==null?void 0:e.header,headerName:e.headerName,goBack:e.goBack,exportData:e.exportData,hasLangNode:d,hasHeaderOption:u,hasPredictTrackingIcon:c})),e.children)))},MainView=e=>{var t,n,l,r,i,a,o;const[d,u]=React.useState(void 0),c=(n=(t=e.style)==null?void 0:t.sider)==null?void 0:n.width,{stepList:m,step:f}=e,s=(l=reducer.getStepConfig(m,f))==null?void 0:l.tool,v=ToolType.EToolName.LLM===s,x=ToolUtils.isAudioTool(s);return v?React__default.default.createElement(ViewportProviderLayout,__spreadValues({},e),React__default.default.createElement(index,__spreadValues({},e))):x?React__default.default.createElement(ViewportProviderLayout,__spreadValues({},e),React__default.default.createElement(index$1,__spreadValues({},e))):React__default.default.createElement(ViewportProviderLayout,__spreadValues({},e),React__default.default.createElement(es.Layout,{className:dom.getClassName("layout","container")},e==null?void 0:e.leftSider,React__default.default.createElement(Content,{className:`${layoutCls}__content`},React__default.default.createElement(AnnotatedArea,__spreadValues({},e)),React__default.default.createElement(index$2,null)),React__default.default.createElement(Sider,{className:`${layoutCls}__side`,width:(r=d!=null?d:c)!=null?r:240,style:(i=e.style)==null?void 0:i.sider},React__default.default.createElement(index$3.default,{sider:e==null?void 0:e.sider,enableColorPicker:e==null?void 0:e.enableColorPicker,setSiderWidth:u,propsSiderWidth:(o=(a=e.style)==null?void 0:a.sider)==null?void 0:o.width}))))},mapStateToProps=({annotation:e})=>{var t,n,l;const{imgList:r,loading:i}=e,a=(t=r[e.imgIndex])!=null?t:{};return{path:(l=(n=a==null?void 0:a.path)!=null?n:a==null?void 0:a.url)!=null?l:"",loading:i}};var MainView$1=reactRedux.connect(mapStateToProps,null,null,{context:ctx.LabelBeeContext})(MainView);module.exports=MainView$1;
1
+ "use strict";var index$6=require("../../components/customResizeHook/index.js"),index$4=require("../../constant/index.js"),antd=require("antd"),es=require("antd/es"),React=require("react"),index$a=require("./annotationOperation/index.js"),index$9=require("./annotationTips/index.js"),index$3=require("./sidebar/index.js"),index$b=require("./toolFooter/index.js"),index$8=require("./toolHeader/index.js"),reducer=require("../../store/annotation/reducer.js"),index$5=require("../../components/videoAnnotate/index.js"),reactRedux=require("react-redux"),ToolUtils=require("../../utils/ToolUtils.js"),index$c=require("../../components/pointCloudView/index.js"),dom=require("../../utils/dom.js"),index$7=require("../../utils/index.js"),index$2=require("../../components/predictTracking/previewResult/index.js"),ctx=require("../../store/ctx.js"),ToolType=require("../../data/enums/ToolType.js"),index=require("./LLMLayout/index.js"),index$1=require("../../components/audioAnnotate/index.js"),icons=require("@ant-design/icons"),reactI18next=require("react-i18next"),lbAnnotation=require("@labelbee/lb-annotation");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),__defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,a)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,__spreadValues=(e,t)=>{for(var a in t||(t={}))__hasOwnProp.call(t,a)&&__defNormalProp(e,a,t[a]);if(__getOwnPropSymbols)for(var a of __getOwnPropSymbols(t))__propIsEnum.call(t,a)&&__defNormalProp(e,a,t[a]);return e};const{Sider,Content}=es.Layout,layoutCls=`${index$4.prefix}-layout`,ImageAnnotate=e=>{var t;return React__default.default.createElement(React__default.default.Fragment,null,e.showTips===!0&&React__default.default.createElement(index$9,{path:e.path,tips:e.tips}),React__default.default.createElement(index$a,__spreadValues({},e)),React__default.default.createElement(index$b.default,{style:(t=e.style)==null?void 0:t.footer,mode:e.mode,footer:e==null?void 0:e.footer}))},PointCloudAnnotate=e=>{var t;return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(index$c,{drawLayerSlot:e.drawLayerSlot,checkMode:e.checkMode,intelligentFit:e.intelligentFit}),React__default.default.createElement(index$b.default,{style:(t=e.style)==null?void 0:t.footer,mode:e.mode,footer:e==null?void 0:e.footer}))},AnnotatedArea=e=>{var t;const{stepList:a,step:l}=e,r=(t=reducer.getStepConfig(a,l))==null?void 0:t.tool,i=ToolUtils.isPointCloudTool(r),n=ToolUtils.isVideoTool(r);return i?React__default.default.createElement(PointCloudAnnotate,__spreadValues({},e)):n?React__default.default.createElement(index$5,{drawLayerSlot:e.drawLayerSlot,footer:e.footer}):React__default.default.createElement(ImageAnnotate,__spreadValues({},e))},ViewportProviderLayout=e=>{var t,a,l;const{t:r}=reactI18next.useTranslation(),{stepList:i,step:n}=e,o=(t=reducer.getStepConfig(i,n))==null?void 0:t.tool,d=![ToolType.EToolName.LLM].includes(o),u=![ToolType.EToolName.LLM].includes(o),c=[lbAnnotation.EPointCloudName.PointCloud].includes(o);return React__default.default.createElement(index$6.ViewportProvider,null,React__default.default.createElement(antd.Spin,{spinning:e.loading,indicator:React__default.default.createElement(icons.LoadingOutlined,null),tip:React__default.default.createElement("span",{style:{marginTop:200}},r("LoadingTips")),delay:500},React__default.default.createElement(es.Layout,{className:index$7.classnames([layoutCls,e.className]),style:(a=e.style)==null?void 0:a.layout},React__default.default.createElement("header",{className:`${layoutCls}__header`,style:(l=e.style)==null?void 0:l.header},React__default.default.createElement(index$8,{header:e==null?void 0:e.header,headerName:e.headerName,goBack:e.goBack,exportData:e.exportData,hasLangNode:d,hasHeaderOption:u,hasPredictTrackingIcon:c})),e.children)))},MainView=e=>{var t,a,l,r,i,n,o;const[d,u]=React.useState(void 0),c=(a=(t=e.style)==null?void 0:t.sider)==null?void 0:a.width,{stepList:m,step:f}=e,s=(l=reducer.getStepConfig(m,f))==null?void 0:l.tool,v=ToolType.EToolName.LLM===s,x=ToolUtils.isAudioTool(s);return v?React__default.default.createElement(ViewportProviderLayout,__spreadValues({},e),React__default.default.createElement(index,__spreadValues({},e))):x?React__default.default.createElement(ViewportProviderLayout,__spreadValues({},e),React__default.default.createElement(index$1,__spreadValues({},e))):React__default.default.createElement(ViewportProviderLayout,__spreadValues({},e),React__default.default.createElement(es.Layout,{className:dom.getClassName("layout","container")},e==null?void 0:e.leftSider,React__default.default.createElement(Content,{className:`${layoutCls}__content`},React__default.default.createElement(AnnotatedArea,__spreadValues({},e)),React__default.default.createElement(index$2,null)),React__default.default.createElement(Sider,{className:`${layoutCls}__side`,width:(r=d!=null?d:c)!=null?r:240,style:(i=e.style)==null?void 0:i.sider},React__default.default.createElement(index$3.default,{sider:e==null?void 0:e.sider,enableColorPicker:e==null?void 0:e.enableColorPicker,setSiderWidth:u,propsSiderWidth:(o=(n=e.style)==null?void 0:n.sider)==null?void 0:o.width}))))},mapStateToProps=({annotation:e})=>{var t,a,l;const{imgList:r,loading:i}=e,n=(t=r[e.imgIndex])!=null?t:{};return{path:(l=(a=n==null?void 0:n.path)!=null?a:n==null?void 0:n.url)!=null?l:"",loading:i}};var MainView$1=reactRedux.connect(mapStateToProps,null,null,{context:ctx.LabelBeeContext})(MainView);module.exports=MainView$1;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var React=require("react"),reactRedux=require("react-redux"),_=require("lodash"),index=require("../../../../utils/index.js"),es=require("antd/es"),lbAnnotation=require("@labelbee/lb-annotation"),actionCreators=require("../../../../store/annotation/actionCreators.js"),ConfigUtils=require("../../../../utils/ConfigUtils.js"),reactI18next=require("react-i18next"),ctx=require("../../../../store/ctx.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),__defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,a)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,__spreadValues=(e,t)=>{for(var a in t||(t={}))__hasOwnProp.call(t,a)&&__defNormalProp(e,a,t[a]);if(__getOwnPropSymbols)for(var a of __getOwnPropSymbols(t))__propIsEnum.call(t,a)&&__defNormalProp(e,a,t[a]);return e};const EKeyCode=lbAnnotation.cKeyCode.default,syntheticEventStopPagination=e=>{e.stopPropagation(),e.nativeEvent.stopPropagation(),e.nativeEvent.stopImmediatePropagation()},TextareaWithFooter=e=>{const{textareaProps:t,footer:a}=e;return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(es.Input.TextArea,__spreadValues({bordered:!1,rows:6,onKeyDown:syntheticEventStopPagination,onKeyUp:syntheticEventStopPagination},t)),React__default.default.createElement("div",{className:index.classnames({textAreaLength:!0})},a))},SingleTextInput=e=>{var t;const a=React.useRef(null),[p,i]=React.useState(!1),[h,x]=React.useState(!1),{t:u}=reactI18next.useTranslation(),{disabled:l,config:s,result:m,updateText:v,index:g,switchToNextTextarea:E,hasMultiple:y,onNext:c}=e,{maxLength:d}=s,f=m?m[s.key]:"",T=(t=f==null?void 0:f.length)!=null?t:0,C=n=>{v&&(v(n,s.key),s.required&&x(!n))},b=y&&E,r={id:`textInput-${g}`,ref:a,disabled:l,value:f,maxLength:d,autoSize:{minRows:2,maxRows:6},onChange:n=>{const P=n.target.value;C(P)},onFocus:()=>{i(!0)},onBlur:n=>{i(!1),s.required&&x(!n.target.value)},style:{resize:"none",wordBreak:"break-all"},onKeyDownCapture:n=>{n.ctrlKey&&n.keyCode===EKeyCode.Enter&&(c&&c(),n.preventDefault()),n.keyCode===EKeyCode.Tab&&b&&(n.preventDefault(),n.nativeEvent.stopImmediatePropagation(),E(g)),n.nativeEvent.stopPropagation()}},o=React__default.default.createElement("div",{className:"textAreaFooter"},React__default.default.createElement("div",{className:"hotkeyTip"},b&&React__default.default.createElement("span",null,`[${u("Switch")}]Tab`),React__default.default.createElement("span",null,`[${u("TurnPage")}]Ctrl+Enter`)),React__default.default.createElement("div",{className:"wordCount"},React__default.default.createElement("span",{className:T>=d?"warning":""},T),"/",React__default.default.createElement("span",null,d)));return React.useEffect(()=>{l&&i(!1)},[l]),React__default.default.createElement("div",{className:"textField"},React__default.default.createElement("div",{className:"label"},React__default.default.createElement("span",{className:index.classnames({required:s.required})},s.label),React__default.default.createElement("i",{className:index.classnames({clearText:!0,disabled:l}),onClick:()=>{l||C("")}})),React__default.default.createElement("div",{className:index.classnames({disabled:l,"textarea-outline":!0,"ant-input-focused":p,textareaContainer:!0,focus:p,invalid:h})},React__default.default.createElement(TextareaWithFooter,{footer:o,textareaProps:r})))},TextToolSidebar=({toolInstance:e,imgIndex:t,dispatch:a,triggerEventAfterIndexChanged:p,step:i,stepList:h,basicResultList:x})=>{var u,l;const[s,m]=React.useState([]),[v,g]=React.useState(0),[,E]=React.useState(0),y=r=>{const o=(r+1)%s.length;c(o)},c=r=>{setTimeout(()=>{const o=document.getElementById(`textInput-${r}`);o&&(g(r),o.focus(),o.select(),o.scrollIntoView({behavior:"smooth",block:"center"}))})};React.useEffect(()=>{e&&(m(_.cloneDeep(e.config.configList)),e.singleOn("valueUpdated",()=>{E(r=>r+1)}))},[e]);const d=(r,o)=>{e.updateTextValue(o,r)};React.useEffect(()=>{t>-1&&p&&c(0)},[t]);const f=(l=(u=e.textList[0])==null?void 0:u.value)!=null?l:{},T=()=>{a(actionCreators.PageForward(!0))},b=ConfigUtils.ConfigUtils.getStepConfig(h,i).dataSourceStep>0&&x.length===0;return React__default.default.createElement("div",{className:"textToolOperationMenu"},s.map((r,o)=>React__default.default.createElement(SingleTextInput,{config:r,key:r.key,index:o,result:f,updateText:d,switchToNextTextarea:y,hasMultiple:s.length>1,focus:v===o,onNext:T,disabled:b})))};function mapStateToProps(e){return{toolInstance:e.annotation.toolInstance,imgIndex:e.annotation.imgIndex,step:e.annotation.step,basicResultList:e.annotation.basicResultList,stepList:e.annotation.stepList,triggerEventAfterIndexChanged:e.annotation.triggerEventAfterIndexChanged}}var TextToolSidebar$1=reactRedux.connect(mapStateToProps,null,null,{context:ctx.LabelBeeContext})(TextToolSidebar);exports.SingleTextInput=SingleTextInput,exports.TextareaWithFooter=TextareaWithFooter,exports.default=TextToolSidebar$1;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var React=require("react"),reactRedux=require("react-redux"),_=require("lodash"),index=require("../../../../utils/index.js"),es=require("antd/es"),lbAnnotation=require("@labelbee/lb-annotation"),actionCreators=require("../../../../store/annotation/actionCreators.js"),ConfigUtils=require("../../../../utils/ConfigUtils.js"),reactI18next=require("react-i18next"),ctx=require("../../../../store/ctx.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),__defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,a)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,__spreadValues=(e,t)=>{for(var a in t||(t={}))__hasOwnProp.call(t,a)&&__defNormalProp(e,a,t[a]);if(__getOwnPropSymbols)for(var a of __getOwnPropSymbols(t))__propIsEnum.call(t,a)&&__defNormalProp(e,a,t[a]);return e};const EKeyCode=lbAnnotation.cKeyCode.default,{EVideoToolName}=lbAnnotation.cTool,syntheticEventStopPagination=e=>{e.stopPropagation(),e.nativeEvent.stopPropagation(),e.nativeEvent.stopImmediatePropagation()},TextareaWithFooter=e=>{const{textareaProps:t,footer:a}=e;return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(es.Input.TextArea,__spreadValues({bordered:!1,rows:6,onKeyDown:syntheticEventStopPagination,onKeyUp:syntheticEventStopPagination},t)),React__default.default.createElement("div",{className:index.classnames({textAreaLength:!0})},a))},SingleTextInput=e=>{var t;const a=React.useRef(null),[x,u]=React.useState(!1),[S,v]=React.useState(!1),{t:c}=reactI18next.useTranslation(),{disabled:s,config:l,result:i,updateText:m,index:g,switchToNextTextarea:T,hasMultiple:w,onNext:E}=e,{maxLength:d}=l,f=i?i[l.key]:"",h=(t=f==null?void 0:f.length)!=null?t:0,p=n=>{m&&(m(n,l.key),l.required&&v(!n))},b=w&&T,C={id:`textInput-${g}`,ref:a,disabled:s,value:f,maxLength:d,autoSize:{minRows:2,maxRows:6},onChange:n=>{const y=n.target.value;p(y)},onFocus:()=>{u(!0)},onBlur:n=>{u(!1),l.required&&v(!n.target.value)},style:{resize:"none",wordBreak:"break-all"},onKeyDownCapture:n=>{n.ctrlKey&&n.keyCode===EKeyCode.Enter&&(E&&E(),n.preventDefault()),n.keyCode===EKeyCode.Tab&&b&&(n.preventDefault(),n.nativeEvent.stopImmediatePropagation(),T(g)),n.nativeEvent.stopPropagation()}},P=React__default.default.createElement("div",{className:"textAreaFooter"},React__default.default.createElement("div",{className:"hotkeyTip"},b&&React__default.default.createElement("span",null,`[${c("Switch")}]Tab`),React__default.default.createElement("span",null,`[${c("TurnPage")}]Ctrl+Enter`)),React__default.default.createElement("div",{className:"wordCount"},React__default.default.createElement("span",{className:h>=d?"warning":""},h),"/",React__default.default.createElement("span",null,d)));return React.useEffect(()=>{s&&u(!1)},[s]),React__default.default.createElement("div",{className:"textField"},React__default.default.createElement("div",{className:"label"},React__default.default.createElement("span",{className:index.classnames({required:l.required})},l.label),React__default.default.createElement("i",{className:index.classnames({clearText:!0,disabled:s}),onClick:()=>{s||p("")}})),React__default.default.createElement("div",{className:index.classnames({disabled:s,"textarea-outline":!0,"ant-input-focused":x,textareaContainer:!0,focus:x,invalid:S})},React__default.default.createElement(TextareaWithFooter,{footer:P,textareaProps:C})))},TextToolSidebar=({toolInstance:e,imgIndex:t,dispatch:a,triggerEventAfterIndexChanged:x,step:u,stepList:S,basicResultList:v})=>{var c,s,l;const[i,m]=React.useState([]),[g,T]=React.useState(0),[w,E]=React.useState(!0),[,d]=React.useState(0),{t:f}=reactI18next.useTranslation(),h=r=>{const o=(r+1)%i.length;p(o)},p=r=>{setTimeout(()=>{const o=document.getElementById(`textInput-${r}`);o&&(T(r),o.focus(),o.select(),o.scrollIntoView({behavior:"smooth",block:"center"}))})};React.useEffect(()=>{e&&(m(_.cloneDeep(e.config.configList)),e.singleOn("valueUpdated",()=>{d(r=>r+1)}))},[e]);const b=(l=(s=(c=e==null?void 0:e.textList)==null?void 0:c[0])==null?void 0:s.value)!=null?l:{},C=(r,o)=>{var N,q;(q=e==null?void 0:e.updateTextValue)==null||q.call(e,o,r,(N=e==null?void 0:e.textList)==null?void 0:N[0])};React.useEffect(()=>{t>-1&&x&&p(0)},[t]);const P=()=>{a(actionCreators.PageForward(!0))},n=r=>{E(r),e==null||e.toggleShowText(r)},y=ConfigUtils.ConfigUtils.getStepConfig(S,u),L=y.dataSourceStep>0&&v.length===0,F=y.tool===EVideoToolName.VideoTextTool;return e&&React__default.default.createElement("div",{className:"textToolOperationMenu"},i.map((r,o)=>React__default.default.createElement(SingleTextInput,{config:r,key:r.key,index:o,result:b,updateText:C,switchToNextTextarea:h,hasMultiple:i.length>1,focus:g===o,onNext:P,disabled:L})),F&&React__default.default.createElement("div",{className:"textToolSwitchItem"},f("toggleShowText"),React__default.default.createElement(es.Switch,{style:{alignSelf:"center"},checked:w,onChange:r=>{n(r)}})))};function mapStateToProps(e){return{toolInstance:e.annotation.toolInstance,imgIndex:e.annotation.imgIndex,step:e.annotation.step,basicResultList:e.annotation.basicResultList,stepList:e.annotation.stepList,triggerEventAfterIndexChanged:e.annotation.triggerEventAfterIndexChanged}}var TextToolSidebar$1=reactRedux.connect(mapStateToProps,null,null,{context:ctx.LabelBeeContext})(TextToolSidebar);exports.SingleTextInput=SingleTextInput,exports.TextareaWithFooter=TextareaWithFooter,exports.default=TextToolSidebar$1;