@labelbee/lb-components 1.20.0 → 1.21.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 (119) 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/questionView/index.js +1 -1
  5. package/dist/components/audioAnnotate/textInput/index.js +1 -1
  6. package/dist/components/videoAnnotate/index.js +1 -1
  7. package/dist/components/videoAnnotate/videoClipTool/VideoClipToolContext.js +1 -0
  8. package/dist/components/videoAnnotate/videoClipTool/components/ToolTipForClip.js +1 -0
  9. package/dist/components/videoAnnotate/videoClipTool/components/annotatedList/index.js +1 -0
  10. package/dist/components/videoAnnotate/videoClipTool/components/annotatedList/index.module.scss.js +1 -0
  11. package/dist/components/videoAnnotate/videoClipTool/components/resizableSnippet/index.js +1 -0
  12. package/dist/components/videoAnnotate/videoClipTool/components/resizableSnippet/index.module.scss.js +1 -0
  13. package/dist/components/videoAnnotate/videoClipTool/components/timeSliceRange/index.js +1 -0
  14. package/dist/components/videoAnnotate/videoClipTool/components/timeSliceRange/index.module.scss.js +1 -0
  15. package/dist/components/videoAnnotate/videoClipTool/components/videoClipToolHotkey/index.js +1 -0
  16. package/dist/components/videoAnnotate/videoClipTool/components/videoClipToolHotkey/index.module.scss.js +1 -0
  17. package/dist/components/videoAnnotate/videoClipTool/components/videoTimeSlicesOverVideo/index.js +1 -0
  18. package/dist/components/videoAnnotate/videoClipTool/components/videoTimeSlicesOverVideo/index.module.scss.js +1 -0
  19. package/dist/components/videoAnnotate/videoClipTool/components/videoTrack/index.js +1 -0
  20. package/dist/components/videoAnnotate/videoClipTool/components/videoTrack/index.module.scss.js +1 -0
  21. package/dist/components/videoAnnotate/videoClipTool/constant.js +1 -0
  22. package/dist/components/videoAnnotate/videoClipTool/index.js +1 -0
  23. package/dist/components/videoAnnotate/videoClipTool/index.module.scss.js +1 -0
  24. package/dist/components/videoAnnotate/videoTagTool/TagToolInstanceAdaptor.js +1 -0
  25. package/dist/components/videoAnnotate/videoTextTool/index.js +1 -0
  26. package/dist/components/videoPlayer/VideoTagLayer.js +1 -1
  27. package/dist/components/videoPlayer/VideoTextLayer.js +2 -0
  28. package/dist/components/videoPlayer/components/controller/index.js +1 -1
  29. package/dist/components/videoPlayer/index.js +1 -1
  30. package/dist/components/videoPlayer/utils.js +1 -1
  31. package/dist/index.css +262 -4
  32. package/dist/index.js +1 -1
  33. package/dist/store/annotation/reducer.js +1 -1
  34. package/dist/types/App.d.ts +2 -2
  35. package/dist/types/components/audioAnnotate/index.d.ts +1 -1
  36. package/dist/types/components/pointCloudView/PointCloud2DView.d.ts +1 -1
  37. package/dist/types/components/pointCloudView/PointCloud3DView.d.ts +1 -1
  38. package/dist/types/components/pointCloudView/PointCloudBackView.d.ts +1 -1
  39. package/dist/types/components/pointCloudView/PointCloudListener.d.ts +1 -1
  40. package/dist/types/components/pointCloudView/PointCloudSegment.d.ts +1 -1
  41. package/dist/types/components/pointCloudView/PointCloudSegment2DView.d.ts +1 -1
  42. package/dist/types/components/pointCloudView/PointCloudSegmentListener.d.ts +1 -1
  43. package/dist/types/components/pointCloudView/PointCloudSideView.d.ts +1 -1
  44. package/dist/types/components/pointCloudView/PointCloudTopView.d.ts +3 -3
  45. package/dist/types/components/pointCloudView/index.d.ts +3 -3
  46. package/dist/types/components/videoAnnotate/index.d.ts +19 -7
  47. package/dist/types/components/videoAnnotate/videoClipTool/VideoClipToolContext.d.ts +27 -0
  48. package/dist/types/components/videoAnnotate/videoClipTool/components/ToolTipForClip.d.ts +8 -0
  49. package/dist/types/components/videoAnnotate/videoClipTool/components/annotatedList/index.d.ts +7 -0
  50. package/dist/types/components/videoAnnotate/videoClipTool/components/resizableSnippet/index.d.ts +14 -0
  51. package/dist/types/components/videoAnnotate/videoClipTool/components/timeSliceRange/index.d.ts +18 -0
  52. package/dist/types/components/videoAnnotate/videoClipTool/components/videoClipToolHotkey/index.d.ts +6 -0
  53. package/dist/types/components/videoAnnotate/videoClipTool/components/videoTimeSlicesOverVideo/index.d.ts +3 -0
  54. package/dist/types/components/videoAnnotate/videoClipTool/components/videoTrack/index.d.ts +11 -0
  55. package/dist/types/components/videoAnnotate/videoClipTool/constant.d.ts +26 -0
  56. package/dist/types/components/videoAnnotate/videoClipTool/index.d.ts +136 -0
  57. package/dist/types/components/{videoPlayer → videoAnnotate/videoTagTool}/TagToolInstanceAdaptor.d.ts +14 -10
  58. package/dist/types/components/videoAnnotate/videoTextTool/index.d.ts +61 -0
  59. package/dist/types/components/videoPlayer/VideoTagLayer.d.ts +1 -0
  60. package/dist/types/components/videoPlayer/VideoTextLayer.d.ts +2 -0
  61. package/dist/types/components/videoPlayer/components/controller/index.d.ts +4 -2
  62. package/dist/types/components/videoPlayer/index.d.ts +12 -0
  63. package/dist/types/components/videoPlayer/utils.d.ts +6 -0
  64. package/dist/types/index.d.ts +1 -1
  65. package/dist/types/views/MainView/sidebar/TextToolSidebar/index.d.ts +3 -1
  66. package/dist/utils/audio.js +1 -1
  67. package/dist/views/MainView/LLMLayout/index.js +1 -1
  68. package/dist/views/MainView/index.js +1 -1
  69. package/dist/views/MainView/sidebar/AnnotationText/index.js +1 -1
  70. package/dist/views/MainView/sidebar/SwitchAttributeList/index.js +1 -1
  71. package/dist/views/MainView/sidebar/TagSidebar/index.js +1 -1
  72. package/dist/views/MainView/sidebar/TextToolSidebar/index.js +1 -1
  73. package/dist/views/MainView/sidebar/index.js +1 -1
  74. package/es/assets/annotation/video/icon_timePoint.svg.js +1 -0
  75. package/es/assets/annotation/video/icon_videoCut.svg.js +1 -0
  76. package/es/assets/annotation/video/icon_videoCutting.svg.js +1 -0
  77. package/es/components/LLMToolView/questionView/index.js +1 -1
  78. package/es/components/audioAnnotate/textInput/index.js +1 -1
  79. package/es/components/videoAnnotate/index.js +1 -1
  80. package/es/components/videoAnnotate/videoClipTool/VideoClipToolContext.js +1 -0
  81. package/es/components/videoAnnotate/videoClipTool/components/ToolTipForClip.js +1 -0
  82. package/es/components/videoAnnotate/videoClipTool/components/annotatedList/index.js +1 -0
  83. package/es/components/videoAnnotate/videoClipTool/components/annotatedList/index.module.scss.js +1 -0
  84. package/es/components/videoAnnotate/videoClipTool/components/resizableSnippet/index.js +1 -0
  85. package/es/components/videoAnnotate/videoClipTool/components/resizableSnippet/index.module.scss.js +1 -0
  86. package/es/components/videoAnnotate/videoClipTool/components/timeSliceRange/index.js +1 -0
  87. package/es/components/videoAnnotate/videoClipTool/components/timeSliceRange/index.module.scss.js +1 -0
  88. package/es/components/videoAnnotate/videoClipTool/components/videoClipToolHotkey/index.js +1 -0
  89. package/es/components/videoAnnotate/videoClipTool/components/videoClipToolHotkey/index.module.scss.js +1 -0
  90. package/es/components/videoAnnotate/videoClipTool/components/videoTimeSlicesOverVideo/index.js +1 -0
  91. package/es/components/videoAnnotate/videoClipTool/components/videoTimeSlicesOverVideo/index.module.scss.js +1 -0
  92. package/es/components/videoAnnotate/videoClipTool/components/videoTrack/index.js +1 -0
  93. package/es/components/videoAnnotate/videoClipTool/components/videoTrack/index.module.scss.js +1 -0
  94. package/es/components/videoAnnotate/videoClipTool/constant.js +1 -0
  95. package/es/components/videoAnnotate/videoClipTool/index.js +1 -0
  96. package/es/components/videoAnnotate/videoClipTool/index.module.scss.js +1 -0
  97. package/es/components/videoAnnotate/videoTagTool/TagToolInstanceAdaptor.js +1 -0
  98. package/es/components/videoAnnotate/videoTextTool/index.js +1 -0
  99. package/es/components/videoPlayer/VideoTagLayer.js +1 -1
  100. package/es/components/videoPlayer/VideoTextLayer.js +2 -0
  101. package/es/components/videoPlayer/components/controller/index.js +1 -1
  102. package/es/components/videoPlayer/index.js +1 -1
  103. package/es/components/videoPlayer/utils.js +1 -1
  104. package/es/index.css +262 -4
  105. package/es/index.js +1 -1
  106. package/es/store/annotation/reducer.js +1 -1
  107. package/es/utils/audio.js +1 -1
  108. package/es/views/MainView/index.js +1 -1
  109. package/es/views/MainView/sidebar/AnnotationText/index.js +1 -1
  110. package/es/views/MainView/sidebar/SwitchAttributeList/index.js +1 -1
  111. package/es/views/MainView/sidebar/TagSidebar/index.js +1 -1
  112. package/es/views/MainView/sidebar/TextToolSidebar/index.js +1 -1
  113. package/es/views/MainView/sidebar/index.js +1 -1
  114. package/package.json +6 -4
  115. package/dist/components/videoPlayer/TagToolInstanceAdaptor.js +0 -1
  116. package/es/components/videoPlayer/TagToolInstanceAdaptor.js +0 -1
  117. /package/dist/components/{videoPlayer → videoAnnotate/videoTagTool}/TagToolInstanceAdaptorI18nProvider.js +0 -0
  118. /package/dist/types/components/{videoPlayer → videoAnnotate/videoTagTool}/TagToolInstanceAdaptorI18nProvider.d.ts +0 -0
  119. /package/es/components/{videoPlayer → videoAnnotate/videoTagTool}/TagToolInstanceAdaptorI18nProvider.js +0 -0
@@ -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,136 @@
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 selectedID(): string;
36
+ get selectedSliceIndex(): number;
37
+ get exportContext(): {
38
+ selectedID: string;
39
+ result: IVideoTimeSlice[];
40
+ clipStatus: EClipStatus;
41
+ videoPlayer: any;
42
+ attributeList: any;
43
+ onSelectedTimeSlice: (i: IVideoTimeSlice) => void;
44
+ removeTimeSlice: (item: IVideoTimeSlice) => void;
45
+ updateSelectedSliceTimeProperty: (val: number, key: "end" | "start") => void;
46
+ };
47
+ fns: Map<string, any[]>;
48
+ videoPlayer?: any;
49
+ videoNode?: HTMLVideoElement;
50
+ videoRef?: HTMLVideoElement;
51
+ throttledUpdateTime: _.DebouncedFunc<(newValue: number) => void>;
52
+ constructor(props: IVideoClipProps);
53
+ get valid(): boolean;
54
+ get config(): any;
55
+ get selectedText(): string;
56
+ /** 步骤信息 */
57
+ stepInfo: () => import("../../../types/step").IStepInfo;
58
+ componentDidMount(): void;
59
+ componentWillUnmount(): void;
60
+ shouldComponentUpdate(newProps: any, newState: IState): boolean;
61
+ emitEvent: (event: string) => void;
62
+ singleOn(event: string, func: () => void): void;
63
+ on(event: string, func: () => void): void;
64
+ unbindAll(eventName: string): void;
65
+ setValid: (valid: boolean) => void;
66
+ updateSidebar: () => void;
67
+ exportData: () => (IVideoTimeSlice[] | {
68
+ valid: boolean;
69
+ duration: number;
70
+ })[];
71
+ /**
72
+ * 微调选中截取片段的开始时间(start)
73
+ * @param changeTime
74
+ */
75
+ updateSelectedSliceTimeStartByPer: (changeTime: number) => void;
76
+ /**
77
+ * 微调选中截取片段的最后时间(end)
78
+ * @param changeTime
79
+ */
80
+ updateSelectedSliceTimeEndByPer: (changeTime: number) => void;
81
+ updateSelectedSliceTimeProperty: (val: number, key: 'start' | 'end') => void;
82
+ keyDownEvents: (e: KeyboardEvent) => void;
83
+ videoLoaded: (totalTime?: number) => void;
84
+ setVideoError: (videoError: boolean, errorType: any, curTime: number) => void;
85
+ clearResult: () => void;
86
+ /** 取消截取 */
87
+ cancelClipped: () => void;
88
+ /**
89
+ * 切换截取状态,如为开启则添加end为null的数据,否则将对应截取片段的时间补全
90
+ * @param curTime
91
+ * @returns
92
+ */
93
+ toggleClipStatus: (curTime?: number) => void;
94
+ /** 添加时间点 */
95
+ addTime: () => void;
96
+ /** 更新当前时间 */
97
+ updateCurrentTime: (time: number) => void;
98
+ /**
99
+ * 视频右键操作
100
+ * @param e
101
+ */
102
+ contextToCancel: (e: MouseEvent) => void;
103
+ /**
104
+ * 重新调整片段长度
105
+ * @param id
106
+ * @param direction
107
+ * @param changedPercent
108
+ */
109
+ onTrackResize: (id: string, direction: EDirection, changedPercent: number) => void;
110
+ /**
111
+ * 渲染页面标注视频组件
112
+ * @returns
113
+ */
114
+ renderMediaContent: () => React.JSX.Element;
115
+ /**
116
+ * 选中片段
117
+ * @param i
118
+ * @returns
119
+ */
120
+ onSelectedTimeSlice: (i: IVideoTimeSlice) => void;
121
+ /** 根据数据删除片段 */
122
+ removeTimeSlice: (item: IVideoTimeSlice) => void;
123
+ setResult: (loading?: boolean, props?: any) => void;
124
+ /**
125
+ * 当前选中的属性改变
126
+ * @param attribute
127
+ */
128
+ setDefaultAttribute: (attribute: string) => void;
129
+ /**
130
+ * 设置当前选中片段的文本
131
+ * @param textValue
132
+ */
133
+ textChange: (textValue: string) => void;
134
+ render(): React.JSX.Element;
135
+ }
136
+ 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;
@@ -83,6 +79,14 @@ export declare class TagToolInstanceAdaptor extends React.Component<IVideoTagIns
83
79
  componentDidMount(): void;
84
80
  componentWillUnmount(): void;
85
81
  setResultFromImgList: (props: IVideoTagInstanceAdaptorProps) => void;
82
+ /**
83
+ * 获取初始值结果列表
84
+ */
85
+ getInitResultList: () => {
86
+ id: string;
87
+ sourceID: any;
88
+ result: any;
89
+ }[];
86
90
  /** Observer imgIndex and set tagResult */
87
91
  shouldComponentUpdate(props: IVideoTagInstanceAdaptorProps): boolean;
88
92
  render(): React.JSX.Element;
@@ -0,0 +1,61 @@
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 needConfirm(): any;
29
+ get textList(): any[];
30
+ getColor(config?: any, attribute?: string): any;
31
+ clearResult: (sendMsg?: boolean) => void;
32
+ exportData: () => (any[] | {
33
+ valid: boolean;
34
+ duration: number;
35
+ frames: number | undefined;
36
+ videoWidth: number;
37
+ videoHeight: number;
38
+ })[];
39
+ toggleShowText: (v: boolean) => void;
40
+ singleOn: (event: string, func: () => void) => void;
41
+ on: (event: string, func: () => void) => void;
42
+ unbindAll: (eventName: string) => void;
43
+ emitEvent: (event: string) => void;
44
+ updateSidebar: () => void;
45
+ updateTextValue: (key: string, text: string, update: boolean, result?: {
46
+ [key: string]: string;
47
+ } | undefined) => void;
48
+ setResult: (result: any) => void;
49
+ setValid: (valid: boolean) => void;
50
+ componentDidMount(): void;
51
+ componentWillUnmount(): void;
52
+ setResultFromImgList: (props: IVideoTextInstanceAdaptorProps) => void;
53
+ /**
54
+ * 获取初始值
55
+ */
56
+ getInitTextValue: () => any;
57
+ /** Observer imgIndex and set result */
58
+ shouldComponentUpdate(props: IVideoTextInstanceAdaptorProps): boolean;
59
+ render(): React.JSX.Element;
60
+ }
61
+ 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,14 @@ 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;
42
+ updateCurrentTime?: (time: number) => void;
32
43
  }
33
44
  interface IVideoPlayerState {
34
45
  playbackRate: number;
@@ -59,6 +70,7 @@ export declare class VideoPlayer extends React.Component<IVideoPlayerProps, IVid
59
70
  keydown: (event: KeyboardEvent) => void;
60
71
  onPlay: () => void;
61
72
  onPause: () => void;
73
+ onTimeUpdate: () => void;
62
74
  onVideoStopped: () => void;
63
75
  onVideoStart: () => void;
64
76
  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,12 +9,13 @@ 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;
15
16
  stepList: IStepInfo[];
16
17
  basicResultList: any[];
18
+ disabled?: boolean;
17
19
  }
18
20
  export declare const SingleTextInput: (props: any) => React.JSX.Element;
19
21
  declare const _default: import("react-redux").ConnectedComponent<React.FC<IProps>, import("react-redux").Omit<IProps & {
@@ -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";var React=require("react"),es=require("antd/es"),index=require("../TextAreaFormat/index.js"),TextUtils=require("../../../../utils/TextUtils.js"),reactRedux=require("react-redux"),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 AnnotationText=({toolInstance:e})=>{var u;const[,n]=React.useState(0);if(React.useEffect(()=>{e&&(e.singleOn("selectedChange",()=>{n(r=>r+1)}),e.singleOn("updateTextAttribute",()=>{n(r=>r+1)}),e.singleOn("messageError",r=>{es.message.error(r)}))},[e]),!e)return null;const{config:t}=e;return React__default.default.createElement("div",null,((u=e==null?void 0:e.config)==null?void 0:u.textConfigurable)&&e.selectedID&&React__default.default.createElement(index,{onChange:e.textChange,textValue:e.selectedText,checkString:TextUtils.TextUtils.checkString(t==null?void 0:t.textCheckType,t==null?void 0:t.customFormat),textCheckType:t.textCheckType}))};function mapStateToProps(e){return{toolInstance:e.annotation.toolInstance}}var AnnotationText$1=reactRedux.connect(mapStateToProps,null,null,{context:ctx.LabelBeeContext})(AnnotationText);module.exports=AnnotationText$1;
1
+ "use strict";var React=require("react"),es=require("antd/es"),index=require("../TextAreaFormat/index.js"),TextUtils=require("../../../../utils/TextUtils.js"),reactRedux=require("react-redux"),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 AnnotationText=({toolInstance:e})=>{var u;const[,i]=React.useState(0);if(React.useEffect(()=>{e&&(e.singleOn("selectedChange",()=>{i(r=>r+1)}),e.singleOn("updateTextAttribute",()=>{i(r=>r+1)}),e.singleOn("messageError",r=>{es.message.error(r)}))},[e]),!e)return null;const{config:t}=e;return((u=e==null?void 0:e.config)==null?void 0:u.textConfigurable)&&e.selectedID&&React__default.default.createElement(index,{onChange:e.textChange,textValue:e.selectedText,checkString:TextUtils.TextUtils.checkString(t==null?void 0:t.textCheckType,t==null?void 0:t.customFormat),textCheckType:t.textCheckType})};function mapStateToProps(e){return{toolInstance:e.annotation.toolInstance}}var AnnotationText$1=reactRedux.connect(mapStateToProps,null,null,{context:ctx.LabelBeeContext})(AnnotationText);module.exports=AnnotationText$1;
@@ -1 +1 @@
1
- "use strict";var React=require("react"),reactRedux=require("react-redux"),index$1=require("../../../../components/attributeList/index.js"),StepUtils=require("../../../../utils/StepUtils.js"),index=require("../../../../utils/index.js"),reactI18next=require("react-i18next"),ToolType=require("../../../../data/enums/ToolType.js"),ctx=require("../../../../store/ctx.js");function _interopDefaultLegacy(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var React__default=_interopDefaultLegacy(React);const SwitchAttributeList=t=>{var r;const[s,u]=React.useState(0),i=React.useRef(null),{toolInstance:e}=t,{t:f}=reactI18next.useTranslation();if(React.useEffect(()=>(e&&e.singleOn("changeAttributeSidebar",a=>{var c;u(n=>n+1),!!i.current&&((c=i.current.children[a])==null||c.scrollIntoView({block:"center"}))}),()=>{e==null||e.unbindAll("changeAttributeSidebar")}),[e,i]),!t.stepInfo)return null;const l=index.jsonParser(t.stepInfo.config),o=t.stepInfo.tool===ToolType.EToolName.ScribbleTool;if(l.attributeConfigurable!==!0&&!o)return null;if((l.attributeConfigurable===!0||o)&&(l==null?void 0:l.attributeList)){const a=l.attributeList.map(n=>({label:n.key,value:n.value,color:n==null?void 0:n.color}));o||a.unshift({label:f("NoAttribute"),value:""});const c=n=>{e.setDefaultAttribute(n),u(d=>d+1)};return React__default.default.createElement("div",null,React__default.default.createElement(index$1.default,{list:a,attributeChanged:c,selectedAttribute:(r=e==null?void 0:e.defaultAttribute)!=null?r:"",ref:i,forbidDefault:o}))}return null},mapStateToProps=t=>{var r,s;const u=StepUtils.getCurrentStepInfo((r=t.annotation)==null?void 0:r.step,(s=t.annotation)==null?void 0:s.stepList);return{toolInstance:t.annotation.toolInstance,stepInfo:u}};var SwitchAttributeList$1=reactRedux.connect(mapStateToProps,null,null,{context:ctx.LabelBeeContext})(SwitchAttributeList);module.exports=SwitchAttributeList$1;
1
+ "use strict";var React=require("react"),reactRedux=require("react-redux"),index$1=require("../../../../components/attributeList/index.js"),StepUtils=require("../../../../utils/StepUtils.js"),index=require("../../../../utils/index.js"),reactI18next=require("react-i18next"),ToolType=require("../../../../data/enums/ToolType.js"),ctx=require("../../../../store/ctx.js");function _interopDefaultLegacy(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var React__default=_interopDefaultLegacy(React);const SwitchAttributeList=t=>{var n;const[c,u]=React.useState(0),i=React.useRef(null),{toolInstance:e}=t,{t:f}=reactI18next.useTranslation();if(React.useEffect(()=>(e&&e.singleOn("changeAttributeSidebar",a=>{var s;u(r=>r+1),!!i.current&&((s=i.current.children[a])==null||s.scrollIntoView({block:"center"}))}),()=>{e==null||e.unbindAll("changeAttributeSidebar")}),[e,i]),!t.stepInfo)return null;const l=index.jsonParser(t.stepInfo.config),o=t.stepInfo.tool===ToolType.EToolName.ScribbleTool;if(l.attributeConfigurable!==!0&&!o)return null;if((l.attributeConfigurable===!0||o)&&(l==null?void 0:l.attributeList)){const a=l.attributeList.map(r=>({label:r.key,value:r.value,color:r==null?void 0:r.color}));o||a.unshift({label:f("NoAttribute"),value:""});const s=r=>{e.setDefaultAttribute(r),u(b=>b+1)};return React__default.default.createElement(index$1.default,{list:a,attributeChanged:s,selectedAttribute:(n=e==null?void 0:e.defaultAttribute)!=null?n:"",ref:i,forbidDefault:o})}return null},mapStateToProps=t=>{var n,c;const u=StepUtils.getCurrentStepInfo((n=t.annotation)==null?void 0:n.step,(c=t.annotation)==null?void 0:c.stepList);return{toolInstance:t.annotation.toolInstance,stepInfo:u}};var SwitchAttributeList$1=reactRedux.connect(mapStateToProps,null,null,{context:ctx.LabelBeeContext})(SwitchAttributeList);module.exports=SwitchAttributeList$1;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var index$1=require("../../../../components/attributeList/index.js"),index=require("../../../../components/checkboxList/index.js"),icons=require("@ant-design/icons"),es=require("antd/es"),_=require("lodash"),React=require("react"),icon_clearSmall=require("../../../../assets/annotation/common/icon_clearSmall.svg.js"),icon_clearSmall_a=require("../../../../assets/annotation/common/icon_clearSmall_a.svg.js"),lbAnnotation=require("@labelbee/lb-annotation"),reactRedux=require("react-redux"),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);const{Panel}=es.Collapse,expandIconFuc=({isActive:e})=>React__default.default.createElement(icons.CaretRightOutlined,{rotate:e?90:0}),TagSidebar=({toolInstance:e,imgIndex:C})=>{const[u,v]=React.useState([]),s=React.useRef(null),[,q]=React.useState(0),[R,f]=React.useState(-1),{t:m}=reactI18next.useTranslation();React.useEffect(()=>{e&&(v(e.config.inputList.map(t=>t.value)),e.singleOn("render",()=>{q(t=>t+1)}))},[e]),React.useEffect(()=>{if(e&&(e.singleOn("expend",T),e.labelSelectedList.length===1)){let t=0;for(let a=0;a<e.labelSelectedList[0];a++)t+=46,n[a]&&u[a]!==""&&n[a].subSelected.forEach(r=>{t+=40});s.current&&(s.current.children[0].scrollTop=t)}}),React.useEffect(()=>{s.current&&(s.current.children[0].scrollTop=0)},[C]);const T=()=>{var t;const a=e.labelSelectedList[0],r=(t=n.filter((l,o)=>o===a)[0])==null?void 0:t.value;p(a,r,!0)},p=React.useCallback((t,a,r)=>{const l=_.cloneDeep(u);l[t]===""||r===!0?l[t]=a:l[t]="",v(l)},[u]);if(!e)return null;const{labelSelectedList:c,config:{inputList:n},currentTagResult:i,setLabel:g}=e,j=t=>c.length>0&&c[0]===t?React__default.default.createElement("span",{className:"keyDownIconActive"},t+1):React__default.default.createElement("span",{className:"keyDownIcon"},t+1),b=(t,a=-1)=>t?t.map((r,l)=>{var o,y,E,h,L;if(r.subSelected){const k=lbAnnotation.TagUtils.judgeResultIsInInputList(r.value,(o=i==null?void 0:i.result)==null?void 0:o[r.value],n);return React__default.default.createElement(es.Collapse,{bordered:!1,expandIcon:expandIconFuc,key:`collapse_${l}_${a+1}`,onChange:()=>p(l,r.value),activeKey:[u[l]]},React__default.default.createElement(Panel,{header:React__default.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",flex:1}},React__default.default.createElement("span",null,r.key,React__default.default.createElement(es.Tooltip,{placement:"bottom",title:m("ClearThisOption")},React__default.default.createElement("img",{style:{marginLeft:5,cursor:"pointer"},onClick:N=>{N.stopPropagation(),e.clearResult(!0,r.value)},src:R===l||k?icon_clearSmall_a:icon_clearSmall,onMouseEnter:()=>{f(l)},onMouseLeave:()=>{f(-1)}})),k&&u[l]===""&&React__default.default.createElement(es.Badge,{color:"#87d068"})),(n==null?void 0:n.length)>1&&j(l)),key:r.value},React__default.default.createElement("div",{className:"level",style:{backgroundColor:c.length>0&&c[0]===l?"rgba(158, 158, 158, 0.18)":""}},b(r.subSelected,l))))}const d=(n==null?void 0:n[a])?n==null?void 0:n[a].value:0,S=((h=(E=(y=i==null?void 0:i.result)==null?void 0:y[d])==null?void 0:E.split(";"))==null?void 0:h.indexOf(r.value))>-1?r.value:"";return((L=n==null?void 0:n[a])==null?void 0:L.isMulti)===!0?React__default.default.createElement("div",{className:"singleBar",key:`${d}_${a}_${l}`},React__default.default.createElement(index,{attributeChanged:()=>g(a,l),selectedAttribute:[S],list:[{value:r.value,label:r.key}],num:l+1})):React__default.default.createElement("div",{className:"singleBar",key:`${d}_${a}_${l}`},React__default.default.createElement(index$1.default,{forbidColor:!0,attributeChanged:()=>g(a,l),selectedAttribute:S,list:[{value:r.value,label:r.key}],num:l+1}))}):null,x=window.innerHeight-61-80;return React__default.default.createElement("div",{className:"tagOperationMenu",ref:s},(n==null?void 0:n.length)===0?React__default.default.createElement("div",{style:{padding:20,textAlign:"center"}},m("NoConfiguration")):React__default.default.createElement("div",{className:"main",style:{height:x}},b(n)))};function mapStateToProps(e){return{toolInstance:e.annotation.toolInstance,imgIndex:e.annotation.imgIndex}}var TagSidebar$1=reactRedux.connect(mapStateToProps,null,null,{context:ctx.LabelBeeContext})(TagSidebar);exports.default=TagSidebar$1,exports.expandIconFuc=expandIconFuc;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var index$1=require("../../../../components/attributeList/index.js"),index=require("../../../../components/checkboxList/index.js"),icons=require("@ant-design/icons"),es=require("antd/es"),_=require("lodash"),React=require("react"),icon_clearSmall=require("../../../../assets/annotation/common/icon_clearSmall.svg.js"),icon_clearSmall_a=require("../../../../assets/annotation/common/icon_clearSmall_a.svg.js"),lbAnnotation=require("@labelbee/lb-annotation"),reactRedux=require("react-redux"),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);const{Panel}=es.Collapse,expandIconFuc=({isActive:e})=>React__default.default.createElement(icons.CaretRightOutlined,{rotate:e?90:0}),TagSidebar=({toolInstance:e,imgIndex:C})=>{const[u,v]=React.useState([]),s=React.useRef(null),[,q]=React.useState(0),[R,f]=React.useState(-1),{t:m}=reactI18next.useTranslation();React.useEffect(()=>{var r,l;e&&(v((l=(r=e.config)==null?void 0:r.inputList)==null?void 0:l.map(t=>t.value)),e.singleOn("render",()=>{q(t=>t+1)}))},[e]),React.useEffect(()=>{if(e&&(e.singleOn("expend",T),e.labelSelectedList.length===1)){let r=0;for(let l=0;l<e.labelSelectedList[0];l++)r+=46,n[l]&&u[l]!==""&&n[l].subSelected.forEach(t=>{r+=40});s.current&&(s.current.children[0].scrollTop=r)}}),React.useEffect(()=>{s.current&&(s.current.children[0].scrollTop=0)},[C]);const T=()=>{var r;const l=e.labelSelectedList[0],t=(r=n.filter((a,o)=>o===l)[0])==null?void 0:r.value;p(l,t,!0)},p=React.useCallback((r,l,t)=>{const a=_.cloneDeep(u);a[r]===""||t===!0?a[r]=l:a[r]="",v(a)},[u]);if(!e)return null;const{labelSelectedList:c,config:{inputList:n},currentTagResult:i,setLabel:g}=e,j=r=>c.length>0&&c[0]===r?React__default.default.createElement("span",{className:"keyDownIconActive"},r+1):React__default.default.createElement("span",{className:"keyDownIcon"},r+1),b=(r,l=-1)=>r?r.map((t,a)=>{var o,y,E,h,L;if(t.subSelected){const k=lbAnnotation.TagUtils.judgeResultIsInInputList(t.value,(o=i==null?void 0:i.result)==null?void 0:o[t.value],n);return React__default.default.createElement(es.Collapse,{bordered:!1,expandIcon:expandIconFuc,key:`collapse_${a}_${l+1}`,onChange:()=>p(a,t.value),activeKey:[u[a]]},React__default.default.createElement(Panel,{header:React__default.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",flex:1}},React__default.default.createElement("span",null,t.key,React__default.default.createElement(es.Tooltip,{placement:"bottom",title:m("ClearThisOption")},React__default.default.createElement("img",{style:{marginLeft:5,cursor:"pointer"},onClick:N=>{N.stopPropagation(),e.clearResult(!0,t.value)},src:R===a||k?icon_clearSmall_a:icon_clearSmall,onMouseEnter:()=>{f(a)},onMouseLeave:()=>{f(-1)}})),k&&u[a]===""&&React__default.default.createElement(es.Badge,{color:"#87d068"})),(n==null?void 0:n.length)>1&&j(a)),key:t.value},React__default.default.createElement("div",{className:"level",style:{backgroundColor:c.length>0&&c[0]===a?"rgba(158, 158, 158, 0.18)":""}},b(t.subSelected,a))))}const d=(n==null?void 0:n[l])?n==null?void 0:n[l].value:0,S=((h=(E=(y=i==null?void 0:i.result)==null?void 0:y[d])==null?void 0:E.split(";"))==null?void 0:h.indexOf(t.value))>-1?t.value:"";return((L=n==null?void 0:n[l])==null?void 0:L.isMulti)===!0?React__default.default.createElement("div",{className:"singleBar",key:`${d}_${l}_${a}`},React__default.default.createElement(index,{attributeChanged:()=>g(l,a),selectedAttribute:[S],list:[{value:t.value,label:t.key}],num:a+1})):React__default.default.createElement("div",{className:"singleBar",key:`${d}_${l}_${a}`},React__default.default.createElement(index$1.default,{forbidColor:!0,attributeChanged:()=>g(l,a),selectedAttribute:S,list:[{value:t.value,label:t.key}],num:a+1}))}):null,x=window.innerHeight-61-80;return React__default.default.createElement("div",{className:"tagOperationMenu",ref:s},(n==null?void 0:n.length)===0?React__default.default.createElement("div",{style:{padding:20,textAlign:"center"}},m("NoConfiguration")):React__default.default.createElement("div",{className:"main",style:{height:x}},b(n)))};function mapStateToProps(e){return{toolInstance:e.annotation.toolInstance,imgIndex:e.annotation.imgIndex}}var TagSidebar$1=reactRedux.connect(mapStateToProps,null,null,{context:ctx.LabelBeeContext})(TagSidebar);exports.default=TagSidebar$1,exports.expandIconFuc=expandIconFuc;
@@ -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,r)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,__spreadValues=(e,t)=>{for(var r in t||(t={}))__hasOwnProp.call(t,r)&&__defNormalProp(e,r,t[r]);if(__getOwnPropSymbols)for(var r of __getOwnPropSymbols(t))__propIsEnum.call(t,r)&&__defNormalProp(e,r,t[r]);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:r}=e;return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(es.Input.TextArea,__spreadValues({key:`${t.id}-${t.defaultValue}`,bordered:!1,rows:6,onKeyDown:syntheticEventStopPagination,onKeyUp:syntheticEventStopPagination},t)),React__default.default.createElement("div",{className:index.classnames({textAreaLength:!0})},r))},SingleTextInput=e=>{var t;const r=React.useRef(null),[m,c]=React.useState(!1),[S,w]=React.useState(!1),{t:T}=reactI18next.useTranslation(),{disabled:s,config:l,result:d,updateText:f,index:u,switchToNextTextarea:E,hasMultiple:C,onNext:h}=e,{maxLength:v}=l,i=d?d[l.key]:"",[y,b]=React.useState((t=i==null?void 0:i.length)!=null?t:0);React.useEffect(()=>{var a;b((a=i==null?void 0:i.length)!=null?a:0)},[i]);const p=(a,g)=>{f&&(f(a,l.key,g),l.required&&w(!a))},x=C&&E,N={id:`textInput-${u}`,ref:r,disabled:s,defaultValue:i,maxLength:v,autoSize:{minRows:2,maxRows:6},onChange:a=>{const g=a.target.value;b(a.target.value.length),p(g,!1)},onFocus:()=>{c(!0)},onBlur:a=>{c(!1),p(a.target.value,!0),l.required&&w(!a.target.value)},style:{resize:"none",wordBreak:"break-all"},onKeyDownCapture:a=>{a.ctrlKey&&a.keyCode===EKeyCode.Enter&&(h&&h(),a.preventDefault()),a.keyCode===EKeyCode.Tab&&x&&(a.preventDefault(),a.nativeEvent.stopImmediatePropagation(),E(u)),a.nativeEvent.stopPropagation()}},P=React__default.default.createElement("div",{className:"textAreaFooter"},React__default.default.createElement("div",{className:"hotkeyTip"},x&&React__default.default.createElement("span",null,`[${T("Switch")}]Tab`),React__default.default.createElement("span",null,`[${T("TurnPage")}]Ctrl+Enter`)),React__default.default.createElement("div",{className:"wordCount"},React__default.default.createElement("span",{className:y>=v?"warning":""},y),"/",React__default.default.createElement("span",null,v)));return React.useEffect(()=>{s&&c(!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("",!0)}})),React__default.default.createElement("div",{className:index.classnames({disabled:s,"textarea-outline":!0,"ant-input-focused":m,textareaContainer:!0,focus:m,invalid:S})},React__default.default.createElement(TextareaWithFooter,{footer:P,textareaProps:N})))},TextToolSidebar=({toolInstance:e,imgIndex:t,dispatch:r,triggerEventAfterIndexChanged:m,step:c,stepList:S,basicResultList:w,disabled:T})=>{var s,l,d,f;const[u,E]=React.useState([]),[C,h]=React.useState(0),[v,i]=React.useState(!0),[,y]=React.useState(0),{t:b}=reactI18next.useTranslation(),p=n=>{const o=(n+1)%u.length;x(o)},x=n=>{setTimeout(()=>{const o=document.getElementById(`textInput-${n}`);o&&(h(n),o.focus(),o.select(),o.scrollIntoView({behavior:"smooth",block:"center"}))})};React.useEffect(()=>{e&&e.singleOn("valueUpdated",()=>{y(n=>n+1)})},[e]),React.useEffect(()=>{var n;e&&E(_.cloneDeep((n=e==null?void 0:e.config)==null?void 0:n.configList))},[JSON.stringify((s=e==null?void 0:e.config)==null?void 0:s.configList)]);const N=(f=(d=(l=e==null?void 0:e.textList)==null?void 0:l[0])==null?void 0:d.value)!=null?f:{},P=(n,o,O=!1)=>{var L,q;(q=e==null?void 0:e.updateTextValue)==null||q.call(e,o,n,O,(L=e==null?void 0:e.textList)==null?void 0:L[0])};React.useEffect(()=>{t>-1&&m&&x(0)},[t]);const a=()=>{r(actionCreators.PageForward(!0))},g=n=>{i(n),e==null||e.toggleShowText(n)},F=ConfigUtils.ConfigUtils.getStepConfig(S,c).tool===EVideoToolName.VideoTextTool;return e&&React__default.default.createElement("div",{className:"textToolOperationMenu"},u.map((n,o)=>React__default.default.createElement(SingleTextInput,{config:n,key:n.key,index:o,result:N,updateText:P,switchToNextTextarea:p,hasMultiple:u.length>1,focus:C===o,onNext:a,disabled:T})),F&&React__default.default.createElement("div",{className:"textToolSwitchItem"},b("toggleShowText"),React__default.default.createElement(es.Switch,{style:{alignSelf:"center"},checked:v,onChange:n=>{g(n)}})))};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;