@ray-js/ipc-player-integration 0.0.28 → 0.0.29-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/ctx/ctx.js +10 -2
- package/lib/ctx/multiCameraCtx.d.ts +73 -0
- package/lib/ctx/multiCameraCtx.js +177 -0
- package/lib/features/initPlayerWidgets/index.d.ts +5 -4
- package/lib/features/initPlayerWidgets/index.js +7 -0
- package/lib/features/initPlayerWidgets/multiCamera.d.ts +8 -0
- package/lib/features/initPlayerWidgets/multiCamera.js +78 -0
- package/lib/i18n/index.d.ts +20 -0
- package/lib/i18n/strings.d.ts +10 -0
- package/lib/i18n/strings.js +12 -2
- package/lib/iconfont/iconfont.css +197 -4
- package/lib/iconfont/iconfont.js +13 -13
- package/lib/iconfont/iconfont.json +336 -0
- package/lib/iconfont/iconfont.ttf +0 -0
- package/lib/iconfont/iconfont.woff +0 -0
- package/lib/iconfont/iconfont.woff2 +0 -0
- package/lib/interface.d.ts +90 -4
- package/lib/interface.js +56 -1
- package/lib/ui/constant.d.ts +6 -0
- package/lib/ui/constant.js +6 -0
- package/lib/ui/ui.js +187 -17
- package/lib/ui/ui.less +19 -21
- package/lib/utils/storage/index.d.ts +1 -0
- package/lib/utils/storage/index.js +8 -1
- package/lib/widgets/battery/battery.composition.d.ts +60 -4
- package/lib/widgets/fullScreen/fullScreen.js +5 -3
- package/lib/widgets/index.d.ts +2 -0
- package/lib/widgets/index.js +3 -1
- package/lib/widgets/multiCamera/constants.d.ts +1 -0
- package/lib/widgets/multiCamera/constants.js +1 -0
- package/lib/widgets/multiCamera/index.d.ts +8 -0
- package/lib/widgets/multiCamera/index.js +8 -0
- package/lib/widgets/multiCamera/index.less +214 -0
- package/lib/widgets/multiCamera/landscapeTip.d.ts +6 -0
- package/lib/widgets/multiCamera/landscapeTip.js +40 -0
- package/lib/widgets/multiCamera/moveView/index.d.ts +9 -0
- package/lib/widgets/multiCamera/moveView/index.js +22 -0
- package/lib/widgets/multiCamera/moveView/tyComponent/index.d.ts +1 -0
- package/lib/widgets/multiCamera/moveView/tyComponent/index.js +42 -0
- package/lib/widgets/multiCamera/moveView/tyComponent/index.json +3 -0
- package/lib/widgets/multiCamera/moveView/tyComponent/index.tyml +8 -0
- package/lib/widgets/multiCamera/moveView/tyComponent/index.tyss +4 -0
- package/lib/widgets/multiCamera/moveView/utils.d.ts +1 -0
- package/lib/widgets/multiCamera/moveView/utils.js +29 -0
- package/lib/widgets/multiCamera/moveablePtzControl.d.ts +22 -0
- package/lib/widgets/multiCamera/moveablePtzControl.js +302 -0
- package/lib/widgets/multiCamera/multiPtz.d.ts +11 -0
- package/lib/widgets/multiCamera/multiPtz.js +46 -0
- package/lib/widgets/multiCamera/ptzMoveableTip.d.ts +8 -0
- package/lib/widgets/multiCamera/ptzMoveableTip.js +66 -0
- package/lib/widgets/multiCamera/switchLayout.d.ts +8 -0
- package/lib/widgets/multiCamera/switchLayout.js +57 -0
- package/lib/widgets/multiCamera/tileActions.d.ts +6 -0
- package/lib/widgets/multiCamera/tileActions.js +15 -0
- package/lib/widgets/multiCamera/tileMultiPtz.d.ts +11 -0
- package/lib/widgets/multiCamera/tileMultiPtz.js +48 -0
- package/lib/widgets/multiCamera/tileSwitchLayout.d.ts +8 -0
- package/lib/widgets/multiCamera/tileSwitchLayout.js +38 -0
- package/lib/widgets/multiCamera/tileTip.d.ts +6 -0
- package/lib/widgets/multiCamera/tileTip.js +50 -0
- package/lib/widgets/ptz/ptz.less +15 -8
- package/lib/widgets/smallIntercom/index.d.ts +8 -0
- package/lib/widgets/smallIntercom/index.js +38 -0
- package/lib/widgets/smallIntercom/index.less +4 -0
- package/lib/widgets/voiceIntercom/voiceIntercom.d.ts +30 -2
- package/package.json +6 -5
package/lib/ctx/ctx.js
CHANGED
|
@@ -11,6 +11,7 @@ import { PlayState, IntercomMode } from '../interface';
|
|
|
11
11
|
import { changeIgnoreHideStopPreview } from '../ui/constant';
|
|
12
12
|
import { ClarityType } from '@ray-js/ray-ipc-utils/lib/interface';
|
|
13
13
|
import { getEventInstance } from './event';
|
|
14
|
+
import { useMultiCameraCtx } from './multiCameraCtx';
|
|
14
15
|
const SAVE_TO_ALBUM = 1;
|
|
15
16
|
export const createUseCtx = _ref => {
|
|
16
17
|
let {
|
|
@@ -35,7 +36,8 @@ export const createUseCtx = _ref => {
|
|
|
35
36
|
initBottomRightContent,
|
|
36
37
|
initAbsoluteContent,
|
|
37
38
|
saveToAlbum = SAVE_TO_ALBUM,
|
|
38
|
-
showPtzControlTip = false
|
|
39
|
+
showPtzControlTip = false,
|
|
40
|
+
videoSplitProtocol
|
|
39
41
|
} = _ref2;
|
|
40
42
|
const streamStatus = useRef();
|
|
41
43
|
// 全屏、竖屏
|
|
@@ -231,6 +233,11 @@ export const createUseCtx = _ref => {
|
|
|
231
233
|
});
|
|
232
234
|
});
|
|
233
235
|
};
|
|
236
|
+
const multiCameraCtx = useMultiCameraCtx({
|
|
237
|
+
devId,
|
|
238
|
+
IPCPlayerInstance: IPCPlayerInstance.current,
|
|
239
|
+
videoSplitProtocol
|
|
240
|
+
});
|
|
234
241
|
return {
|
|
235
242
|
devId,
|
|
236
243
|
brandColor,
|
|
@@ -530,7 +537,8 @@ export const createUseCtx = _ref => {
|
|
|
530
537
|
return streamStatus.current;
|
|
531
538
|
},
|
|
532
539
|
toast,
|
|
533
|
-
event: eventRef.current
|
|
540
|
+
event: eventRef.current,
|
|
541
|
+
multiCameraCtx
|
|
534
542
|
};
|
|
535
543
|
};
|
|
536
544
|
};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { MultiCameraLayoutStyle, MultiCameraLenInfo, MultiCameraScreenMode, VideoSplitProtocol } from '../interface';
|
|
2
|
+
interface Props {
|
|
3
|
+
devId: string;
|
|
4
|
+
IPCPlayerInstance: IpcContext;
|
|
5
|
+
videoSplitProtocol?: VideoSplitProtocol;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* 多目摄像头相关状态、方法维护
|
|
9
|
+
*/
|
|
10
|
+
export declare const useMultiCameraCtx: (props: Props) => {
|
|
11
|
+
/**
|
|
12
|
+
* 是否支持多目
|
|
13
|
+
*/
|
|
14
|
+
isSupport: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* 多目分割协议
|
|
17
|
+
*/
|
|
18
|
+
protocol: VideoSplitProtocol;
|
|
19
|
+
/**
|
|
20
|
+
* 布局样式
|
|
21
|
+
*/
|
|
22
|
+
layoutStyle: import("../interface").RetAtom<MultiCameraLayoutStyle>;
|
|
23
|
+
/**
|
|
24
|
+
* 屏幕模式
|
|
25
|
+
*/
|
|
26
|
+
screenMode: import("../interface").RetAtom<MultiCameraScreenMode>;
|
|
27
|
+
/**
|
|
28
|
+
* 下一个布局样式
|
|
29
|
+
*/
|
|
30
|
+
nextLayoutStyle: import("../interface").RetAtom<MultiCameraLayoutStyle>;
|
|
31
|
+
/**
|
|
32
|
+
* 选中镜头信息
|
|
33
|
+
*/
|
|
34
|
+
selectedLenInfo: import("../interface").RetAtom<MultiCameraLenInfo>;
|
|
35
|
+
/**
|
|
36
|
+
* ptz状态
|
|
37
|
+
*/
|
|
38
|
+
ptzStatus: import("../interface").RetAtom<boolean>;
|
|
39
|
+
/**
|
|
40
|
+
* ipcPlayer extendProps
|
|
41
|
+
*/
|
|
42
|
+
extendProps: {
|
|
43
|
+
type: number | undefined;
|
|
44
|
+
onSelectVideoIndex: (this: any, event: any) => void;
|
|
45
|
+
onLayoutStatusChanged: (this: any, event: any) => void;
|
|
46
|
+
onLocalizerViewLocated: (this: any, event: any) => Promise<void>;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* 设置布局样式
|
|
50
|
+
*/
|
|
51
|
+
setLayoutStyle: (style: MultiCameraLayoutStyle) => void;
|
|
52
|
+
/**
|
|
53
|
+
* 设置屏幕模式
|
|
54
|
+
*/
|
|
55
|
+
setScreenMode: (mode: MultiCameraScreenMode) => void;
|
|
56
|
+
/**
|
|
57
|
+
* 设置ptz状态
|
|
58
|
+
*/
|
|
59
|
+
setPtzStatus: (value: boolean | ((prevValue: boolean) => boolean)) => void;
|
|
60
|
+
/**
|
|
61
|
+
* 显示/隐藏镜头名称
|
|
62
|
+
*/
|
|
63
|
+
showLenNames: (value: boolean) => void;
|
|
64
|
+
/**
|
|
65
|
+
* 设置下一个布局样式
|
|
66
|
+
*/
|
|
67
|
+
setNextLayoutStyle: (value: MultiCameraLayoutStyle | ((prevValue: MultiCameraLayoutStyle) => MultiCameraLayoutStyle)) => void;
|
|
68
|
+
/**
|
|
69
|
+
* 获取下一个布局样式
|
|
70
|
+
*/
|
|
71
|
+
getNextLayoutStyle: () => Promise<MultiCameraLayoutStyle>;
|
|
72
|
+
};
|
|
73
|
+
export {};
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { getDpIdByCode, publishDps } from '@ray-js/ray-ipc-utils';
|
|
2
|
+
import { useMemoizedFn } from 'ahooks';
|
|
3
|
+
import { useMemo } from 'react';
|
|
4
|
+
import { MultiCameraLayoutStyle, MultiCameraScreenMode } from '../interface';
|
|
5
|
+
import { useAtom } from './store';
|
|
6
|
+
const DEFAULT_VIDEO_SPLIT_PROTOCOL = {
|
|
7
|
+
total_split_num: 1,
|
|
8
|
+
split_info: [],
|
|
9
|
+
align_info: [],
|
|
10
|
+
p_v: 3
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* 多目摄像头相关状态、方法维护
|
|
14
|
+
*/
|
|
15
|
+
export const useMultiCameraCtx = props => {
|
|
16
|
+
const {
|
|
17
|
+
devId,
|
|
18
|
+
IPCPlayerInstance,
|
|
19
|
+
videoSplitProtocol = DEFAULT_VIDEO_SPLIT_PROTOCOL
|
|
20
|
+
} = props;
|
|
21
|
+
const isSupport = useMemo(() => {
|
|
22
|
+
return (videoSplitProtocol === null || videoSplitProtocol === void 0 ? void 0 : videoSplitProtocol.total_split_num) > 1 && (videoSplitProtocol === null || videoSplitProtocol === void 0 ? void 0 : videoSplitProtocol.p_v) >= 3 && typeof (IPCPlayerInstance === null || IPCPlayerInstance === void 0 ? void 0 : IPCPlayerInstance.switchLayoutStyle) === 'function';
|
|
23
|
+
}, [IPCPlayerInstance, videoSplitProtocol]);
|
|
24
|
+
const [layoutStyleAtom, setLayoutStyle] = useAtom(isSupport ? MultiCameraLayoutStyle.tile : MultiCameraLayoutStyle.pip);
|
|
25
|
+
const [screenModeAtom, setScreenMode] = useAtom(isSupport ? MultiCameraScreenMode.full : MultiCameraScreenMode.short);
|
|
26
|
+
const [selectedLenInfoAtom, setSelectedLenInfo] = useAtom({
|
|
27
|
+
index: 1,
|
|
28
|
+
videoName: '',
|
|
29
|
+
supportPTZ: false,
|
|
30
|
+
supportLocalizer: false,
|
|
31
|
+
supportZoom: false
|
|
32
|
+
});
|
|
33
|
+
const [nextLayoutStyleAtom, setNextLayoutStyle] = useAtom(MultiCameraLayoutStyle.invalid);
|
|
34
|
+
const [ptzStatusAtom, setPtzStatus] = useAtom(false);
|
|
35
|
+
const handleSelectVideoIndex = useMemoizedFn(event => {
|
|
36
|
+
console.info('onSelectVideoIndex', JSON.stringify(event === null || event === void 0 ? void 0 : event.detail));
|
|
37
|
+
setSelectedLenInfo(event.detail);
|
|
38
|
+
});
|
|
39
|
+
const handleLayoutStatusChanged = useMemoizedFn(event => {
|
|
40
|
+
console.info('onLayoutStatusChanged', JSON.stringify(event === null || event === void 0 ? void 0 : event.detail));
|
|
41
|
+
const {
|
|
42
|
+
layoutStyle,
|
|
43
|
+
screenMode
|
|
44
|
+
} = event.detail || {};
|
|
45
|
+
setLayoutStyle(layoutStyle);
|
|
46
|
+
setScreenMode(screenMode);
|
|
47
|
+
});
|
|
48
|
+
const handleLocalizerViewLocated = useMemoizedFn(async event => {
|
|
49
|
+
console.info('onLocalizerViewLocated', JSON.stringify(event === null || event === void 0 ? void 0 : event.detail));
|
|
50
|
+
const dpData = await getDpIdByCode(devId, 'ipc_multi_locate_coors');
|
|
51
|
+
if (dpData.code === 0) {
|
|
52
|
+
const dpId = dpData.data;
|
|
53
|
+
const sndDpValue = JSON.stringify(event.detail);
|
|
54
|
+
publishDps(devId, {
|
|
55
|
+
[dpId]: sndDpValue
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
const extendProps = useMemo(() => {
|
|
60
|
+
return {
|
|
61
|
+
// type: 4 表示多目摄像头
|
|
62
|
+
type: isSupport ? 4 : undefined,
|
|
63
|
+
onSelectVideoIndex: handleSelectVideoIndex,
|
|
64
|
+
onLayoutStatusChanged: handleLayoutStatusChanged,
|
|
65
|
+
onLocalizerViewLocated: handleLocalizerViewLocated
|
|
66
|
+
};
|
|
67
|
+
}, [videoSplitProtocol]);
|
|
68
|
+
const _setLayoutStyle = useMemoizedFn(style => {
|
|
69
|
+
var _IPCPlayerInstance$sw;
|
|
70
|
+
IPCPlayerInstance === null || IPCPlayerInstance === void 0 || (_IPCPlayerInstance$sw = IPCPlayerInstance.switchLayoutStyle) === null || _IPCPlayerInstance$sw === void 0 || _IPCPlayerInstance$sw.call(IPCPlayerInstance, {
|
|
71
|
+
layoutStyle: style,
|
|
72
|
+
success: () => {
|
|
73
|
+
console.info('switchLayoutStyle success');
|
|
74
|
+
},
|
|
75
|
+
fail: err => {
|
|
76
|
+
console.error('switchLayoutStyle fail', err);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
const _setScreenMode = useMemoizedFn(mode => {
|
|
81
|
+
var _IPCPlayerInstance$sw2;
|
|
82
|
+
IPCPlayerInstance === null || IPCPlayerInstance === void 0 || (_IPCPlayerInstance$sw2 = IPCPlayerInstance.switchScreenMode) === null || _IPCPlayerInstance$sw2 === void 0 || _IPCPlayerInstance$sw2.call(IPCPlayerInstance, {
|
|
83
|
+
screenMode: mode,
|
|
84
|
+
success: () => {
|
|
85
|
+
console.info('switchScreenMode success');
|
|
86
|
+
},
|
|
87
|
+
fail: err => {
|
|
88
|
+
console.error('switchScreenMode fail', err);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
const getNextLayoutStyle = useMemoizedFn(() => {
|
|
93
|
+
return new Promise((resolve, reject) => {
|
|
94
|
+
var _IPCPlayerInstance$ne;
|
|
95
|
+
IPCPlayerInstance === null || IPCPlayerInstance === void 0 || (_IPCPlayerInstance$ne = IPCPlayerInstance.nextLayoutStyle) === null || _IPCPlayerInstance$ne === void 0 || _IPCPlayerInstance$ne.call(IPCPlayerInstance, {
|
|
96
|
+
success: result => {
|
|
97
|
+
console.info('get nextLayoutStyle success', result);
|
|
98
|
+
resolve(result);
|
|
99
|
+
},
|
|
100
|
+
fail: err => {
|
|
101
|
+
console.error('get nextLayoutStyle fail', err);
|
|
102
|
+
reject(err);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
const showLenNames = useMemoizedFn(value => {
|
|
108
|
+
var _IPCPlayerInstance$sh;
|
|
109
|
+
IPCPlayerInstance === null || IPCPlayerInstance === void 0 || (_IPCPlayerInstance$sh = IPCPlayerInstance.showLenNames) === null || _IPCPlayerInstance$sh === void 0 || _IPCPlayerInstance$sh.call(IPCPlayerInstance, {
|
|
110
|
+
isShow: value,
|
|
111
|
+
success: () => {
|
|
112
|
+
console.info('showLenNames success', value);
|
|
113
|
+
},
|
|
114
|
+
fail: err => {
|
|
115
|
+
console.error('showLenNames fail', err);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
return {
|
|
120
|
+
/**
|
|
121
|
+
* 是否支持多目
|
|
122
|
+
*/
|
|
123
|
+
isSupport,
|
|
124
|
+
/**
|
|
125
|
+
* 多目分割协议
|
|
126
|
+
*/
|
|
127
|
+
protocol: videoSplitProtocol,
|
|
128
|
+
/**
|
|
129
|
+
* 布局样式
|
|
130
|
+
*/
|
|
131
|
+
layoutStyle: layoutStyleAtom,
|
|
132
|
+
/**
|
|
133
|
+
* 屏幕模式
|
|
134
|
+
*/
|
|
135
|
+
screenMode: screenModeAtom,
|
|
136
|
+
/**
|
|
137
|
+
* 下一个布局样式
|
|
138
|
+
*/
|
|
139
|
+
nextLayoutStyle: nextLayoutStyleAtom,
|
|
140
|
+
/**
|
|
141
|
+
* 选中镜头信息
|
|
142
|
+
*/
|
|
143
|
+
selectedLenInfo: selectedLenInfoAtom,
|
|
144
|
+
/**
|
|
145
|
+
* ptz状态
|
|
146
|
+
*/
|
|
147
|
+
ptzStatus: ptzStatusAtom,
|
|
148
|
+
/**
|
|
149
|
+
* ipcPlayer extendProps
|
|
150
|
+
*/
|
|
151
|
+
extendProps,
|
|
152
|
+
/**
|
|
153
|
+
* 设置布局样式
|
|
154
|
+
*/
|
|
155
|
+
setLayoutStyle: _setLayoutStyle,
|
|
156
|
+
/**
|
|
157
|
+
* 设置屏幕模式
|
|
158
|
+
*/
|
|
159
|
+
setScreenMode: _setScreenMode,
|
|
160
|
+
/**
|
|
161
|
+
* 设置ptz状态
|
|
162
|
+
*/
|
|
163
|
+
setPtzStatus,
|
|
164
|
+
/**
|
|
165
|
+
* 显示/隐藏镜头名称
|
|
166
|
+
*/
|
|
167
|
+
showLenNames,
|
|
168
|
+
/**
|
|
169
|
+
* 设置下一个布局样式
|
|
170
|
+
*/
|
|
171
|
+
setNextLayoutStyle,
|
|
172
|
+
/**
|
|
173
|
+
* 获取下一个布局样式
|
|
174
|
+
*/
|
|
175
|
+
getNextLayoutStyle
|
|
176
|
+
};
|
|
177
|
+
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { UseCtx, WidgetId } from '../../interface';
|
|
3
|
-
import { FullScreen } from '../../widgets
|
|
3
|
+
import { FullScreen } from '../../widgets';
|
|
4
4
|
type Ctx = ReturnType<UseCtx>;
|
|
5
|
-
export
|
|
5
|
+
export type InitPlayerWidgetsOptions = {
|
|
6
6
|
verticalResolutionCustomClick?: boolean;
|
|
7
7
|
hideHorizontalMenu?: boolean;
|
|
8
8
|
hideScreenShotMenu?: boolean;
|
|
@@ -10,6 +10,7 @@ export declare function initPlayerWidgets(ctx: Ctx, options: {
|
|
|
10
10
|
hideResolutionMenu?: boolean;
|
|
11
11
|
hideKbsMenu?: boolean;
|
|
12
12
|
directionControlProps?: Partial<React.ComponentProps<typeof FullScreen>['directionControlProps']>;
|
|
13
|
-
}
|
|
14
|
-
export declare function
|
|
13
|
+
};
|
|
14
|
+
export declare function initPlayerWidgets(ctx: Ctx, options: InitPlayerWidgetsOptions): Promise<boolean>;
|
|
15
|
+
export declare function updatePlayerWidgetProps(ctx: Ctx, area: 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | 'absolute', widgetId: WidgetId, newProps: Record<string, any>): Promise<void>;
|
|
15
16
|
export {};
|
|
@@ -3,8 +3,14 @@ import _cloneDeep from 'lodash/cloneDeep';
|
|
|
3
3
|
import { defaultTopLeftContent, defaultTopRightContent, defaultBottomLeftContent, defaultBottomRightContent } from '../../ctx';
|
|
4
4
|
import { hasDpCode } from '../../utils/device';
|
|
5
5
|
import { MoveInteractiveControlButton } from '../../widgets/moveInteractiveControl';
|
|
6
|
+
import { initMultiCameraPlayerWidgets } from './multiCamera';
|
|
6
7
|
// 根据当前 dp 信息决定设置哪些 plugin
|
|
7
8
|
export async function initPlayerWidgets(ctx, options) {
|
|
9
|
+
// 初始化多目设备控件
|
|
10
|
+
if (ctx.multiCameraCtx.isSupport) {
|
|
11
|
+
initMultiCameraPlayerWidgets(ctx, options);
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
8
14
|
ctx.addContent('topLeft', defaultTopLeftContent);
|
|
9
15
|
const newDefaultBottomLeftContent = _cloneDeep(defaultBottomLeftContent);
|
|
10
16
|
const newDefaultTopRightContent = _cloneDeep(defaultTopRightContent);
|
|
@@ -58,6 +64,7 @@ export async function initPlayerWidgets(ctx, options) {
|
|
|
58
64
|
}, -1);
|
|
59
65
|
}
|
|
60
66
|
});
|
|
67
|
+
return true;
|
|
61
68
|
}
|
|
62
69
|
export async function updatePlayerWidgetProps(ctx, area, widgetId, newProps) {
|
|
63
70
|
const areaContent = ctx.getContent();
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { UseCtx } from '../../interface';
|
|
2
|
+
import { InitPlayerWidgetsOptions } from '.';
|
|
3
|
+
type Ctx = ReturnType<UseCtx>;
|
|
4
|
+
/**
|
|
5
|
+
* 多目设备初始化控件
|
|
6
|
+
*/
|
|
7
|
+
export declare function initMultiCameraPlayerWidgets(ctx: Ctx, options: InitPlayerWidgetsOptions): void;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { FullScreen, MultiPtz, Muted, RecordVideo, Resolution, Screenshot, SmallIntercom, SwitchLayout, VideoBitKBP, TileTip, TileActions, LandscapeTip, MoveablePtzControl, PtzMoveableTip } from '../../widgets';
|
|
2
|
+
import { landscapeTipId, moveablePtzControlId, multiPtzId, ptzMoveableTipId, tileActionsId, tileTipId } from '../../ui/constant';
|
|
3
|
+
import { multiPrefix } from '../../widgets/multiCamera/constants';
|
|
4
|
+
/**
|
|
5
|
+
* 多目设备初始化控件
|
|
6
|
+
*/
|
|
7
|
+
export function initMultiCameraPlayerWidgets(ctx, options) {
|
|
8
|
+
const topRightContent = [{
|
|
9
|
+
id: 'VideoBitKBP',
|
|
10
|
+
content: VideoBitKBP
|
|
11
|
+
}];
|
|
12
|
+
const bottomLeftContent = [{
|
|
13
|
+
id: 'Screenshot',
|
|
14
|
+
content: Screenshot
|
|
15
|
+
}, {
|
|
16
|
+
id: 'RecordVideo',
|
|
17
|
+
content: RecordVideo
|
|
18
|
+
}, {
|
|
19
|
+
id: 'Muted',
|
|
20
|
+
content: Muted
|
|
21
|
+
}, {
|
|
22
|
+
id: 'SmallIntercom',
|
|
23
|
+
content: SmallIntercom
|
|
24
|
+
}, {
|
|
25
|
+
id: multiPtzId,
|
|
26
|
+
content: MultiPtz,
|
|
27
|
+
hidden: true
|
|
28
|
+
}, {
|
|
29
|
+
id: 'Resolution',
|
|
30
|
+
content: Resolution,
|
|
31
|
+
initProps: {
|
|
32
|
+
verticalResolutionCustomClick: options.verticalResolutionCustomClick
|
|
33
|
+
}
|
|
34
|
+
}];
|
|
35
|
+
const bottomRightContent = [{
|
|
36
|
+
id: 'SwitchLayout',
|
|
37
|
+
content: SwitchLayout
|
|
38
|
+
}, {
|
|
39
|
+
id: 'FullScreen',
|
|
40
|
+
content: FullScreen
|
|
41
|
+
}];
|
|
42
|
+
const removeContentById = (content, id) => {
|
|
43
|
+
content.splice(content.findIndex(item => item.id === id), 1);
|
|
44
|
+
};
|
|
45
|
+
options.hideKbsMenu && removeContentById(topRightContent, 'VideoBitKBP');
|
|
46
|
+
options.hideScreenShotMenu && removeContentById(bottomLeftContent, 'Screenshot');
|
|
47
|
+
options.hideRecordVideoMenu && removeContentById(bottomLeftContent, 'RecordVideo');
|
|
48
|
+
options.hideHorizontalMenu && removeContentById(bottomRightContent, 'FullScreen');
|
|
49
|
+
ctx.addContent('topLeft', []);
|
|
50
|
+
ctx.addContent('topRight', topRightContent);
|
|
51
|
+
ctx.addContent('bottomLeft', bottomLeftContent);
|
|
52
|
+
ctx.addContent('bottomRight', bottomRightContent);
|
|
53
|
+
ctx.addContent('absolute', [{
|
|
54
|
+
id: tileTipId,
|
|
55
|
+
content: TileTip,
|
|
56
|
+
absoluteContentClassName: `${multiPrefix}-tile-tip-wrap`,
|
|
57
|
+
hidden: true
|
|
58
|
+
}, {
|
|
59
|
+
id: ptzMoveableTipId,
|
|
60
|
+
content: PtzMoveableTip,
|
|
61
|
+
absoluteContentClassName: `${multiPrefix}-tile-tip-wrap`,
|
|
62
|
+
hidden: true
|
|
63
|
+
}, {
|
|
64
|
+
id: landscapeTipId,
|
|
65
|
+
content: LandscapeTip,
|
|
66
|
+
absoluteContentClassName: `${multiPrefix}-tile-tip-wrap`,
|
|
67
|
+
hidden: true
|
|
68
|
+
}, {
|
|
69
|
+
id: tileActionsId,
|
|
70
|
+
absoluteContentClassName: `${multiPrefix}-actions-wrap`,
|
|
71
|
+
content: TileActions
|
|
72
|
+
}, {
|
|
73
|
+
id: moveablePtzControlId,
|
|
74
|
+
content: MoveablePtzControl,
|
|
75
|
+
absoluteNoCoverView: true,
|
|
76
|
+
hidden: true
|
|
77
|
+
}]);
|
|
78
|
+
}
|
package/lib/i18n/index.d.ts
CHANGED
|
@@ -22,6 +22,11 @@ declare const Strings: kit.I18N<{
|
|
|
22
22
|
ipc_player_change_resolution_success: string;
|
|
23
23
|
ipc_player_ptz_control_tip: string;
|
|
24
24
|
ipc_player_ptz_close_control_tip: string;
|
|
25
|
+
ipc_player_tile_tip_text_step1: string;
|
|
26
|
+
ipc_player_tile_tip_text_step2: string;
|
|
27
|
+
ipc_player_tip_next: string;
|
|
28
|
+
ipc_player_tip_confirm: string;
|
|
29
|
+
ipc_player_ptz_moveable_tip_text: string;
|
|
25
30
|
};
|
|
26
31
|
zh: {
|
|
27
32
|
ipc_player_resolution_HD: string;
|
|
@@ -45,6 +50,11 @@ declare const Strings: kit.I18N<{
|
|
|
45
50
|
ipc_player_change_resolution_success: string;
|
|
46
51
|
ipc_player_ptz_control_tip: string;
|
|
47
52
|
ipc_player_ptz_close_control_tip: string;
|
|
53
|
+
ipc_player_tile_tip_text_step1: string;
|
|
54
|
+
ipc_player_tile_tip_text_step2: string;
|
|
55
|
+
ipc_player_tip_next: string;
|
|
56
|
+
ipc_player_tip_confirm: string;
|
|
57
|
+
ipc_player_ptz_moveable_tip_text: string;
|
|
48
58
|
};
|
|
49
59
|
}, {
|
|
50
60
|
ipc_player_resolution_HD: string;
|
|
@@ -68,6 +78,11 @@ declare const Strings: kit.I18N<{
|
|
|
68
78
|
ipc_player_change_resolution_success: string;
|
|
69
79
|
ipc_player_ptz_control_tip: string;
|
|
70
80
|
ipc_player_ptz_close_control_tip: string;
|
|
81
|
+
ipc_player_tile_tip_text_step1: string;
|
|
82
|
+
ipc_player_tile_tip_text_step2: string;
|
|
83
|
+
ipc_player_tip_next: string;
|
|
84
|
+
ipc_player_tip_confirm: string;
|
|
85
|
+
ipc_player_ptz_moveable_tip_text: string;
|
|
71
86
|
} | {
|
|
72
87
|
ipc_player_resolution_HD: string;
|
|
73
88
|
ipc_player_resolution_SD: string;
|
|
@@ -90,5 +105,10 @@ declare const Strings: kit.I18N<{
|
|
|
90
105
|
ipc_player_change_resolution_success: string;
|
|
91
106
|
ipc_player_ptz_control_tip: string;
|
|
92
107
|
ipc_player_ptz_close_control_tip: string;
|
|
108
|
+
ipc_player_tile_tip_text_step1: string;
|
|
109
|
+
ipc_player_tile_tip_text_step2: string;
|
|
110
|
+
ipc_player_tip_next: string;
|
|
111
|
+
ipc_player_tip_confirm: string;
|
|
112
|
+
ipc_player_ptz_moveable_tip_text: string;
|
|
93
113
|
}>;
|
|
94
114
|
export default Strings;
|
package/lib/i18n/strings.d.ts
CHANGED
|
@@ -21,6 +21,11 @@ declare const _default: {
|
|
|
21
21
|
ipc_player_change_resolution_success: string;
|
|
22
22
|
ipc_player_ptz_control_tip: string;
|
|
23
23
|
ipc_player_ptz_close_control_tip: string;
|
|
24
|
+
ipc_player_tile_tip_text_step1: string;
|
|
25
|
+
ipc_player_tile_tip_text_step2: string;
|
|
26
|
+
ipc_player_tip_next: string;
|
|
27
|
+
ipc_player_tip_confirm: string;
|
|
28
|
+
ipc_player_ptz_moveable_tip_text: string;
|
|
24
29
|
};
|
|
25
30
|
zh: {
|
|
26
31
|
ipc_player_resolution_HD: string;
|
|
@@ -44,6 +49,11 @@ declare const _default: {
|
|
|
44
49
|
ipc_player_change_resolution_success: string;
|
|
45
50
|
ipc_player_ptz_control_tip: string;
|
|
46
51
|
ipc_player_ptz_close_control_tip: string;
|
|
52
|
+
ipc_player_tile_tip_text_step1: string;
|
|
53
|
+
ipc_player_tile_tip_text_step2: string;
|
|
54
|
+
ipc_player_tip_next: string;
|
|
55
|
+
ipc_player_tip_confirm: string;
|
|
56
|
+
ipc_player_ptz_moveable_tip_text: string;
|
|
47
57
|
};
|
|
48
58
|
};
|
|
49
59
|
export default _default;
|
package/lib/i18n/strings.js
CHANGED
|
@@ -20,7 +20,12 @@ export default {
|
|
|
20
20
|
ipc_player_error_record_tip: 'The recording has failed, please try again later.',
|
|
21
21
|
ipc_player_change_resolution_success: 'Switch successful',
|
|
22
22
|
ipc_player_ptz_control_tip: 'Swipe up, down, left, or right to control the PTZ direction.',
|
|
23
|
-
ipc_player_ptz_close_control_tip: 'Close'
|
|
23
|
+
ipc_player_ptz_close_control_tip: 'Close',
|
|
24
|
+
ipc_player_tile_tip_text_step1: 'Click here to expand/collapse the player',
|
|
25
|
+
ipc_player_tile_tip_text_step2: 'Click here to switch the multiple viewing modes of the lens',
|
|
26
|
+
ipc_player_tip_next: 'Next',
|
|
27
|
+
ipc_player_tip_confirm: 'Got it',
|
|
28
|
+
ipc_player_ptz_moveable_tip_text: 'Hold the middle to drag the direction control area'
|
|
24
29
|
},
|
|
25
30
|
zh: {
|
|
26
31
|
ipc_player_resolution_HD: '高清',
|
|
@@ -43,6 +48,11 @@ export default {
|
|
|
43
48
|
ipc_player_error_record_tip: '录制出错了,请稍后再试',
|
|
44
49
|
ipc_player_change_resolution_success: '切换成功',
|
|
45
50
|
ipc_player_ptz_control_tip: '上下左右滑动,控制云台方向',
|
|
46
|
-
ipc_player_ptz_close_control_tip: '关闭'
|
|
51
|
+
ipc_player_ptz_close_control_tip: '关闭',
|
|
52
|
+
ipc_player_tile_tip_text_step1: '点击此处可展开/收起播放窗口',
|
|
53
|
+
ipc_player_tile_tip_text_step2: '点击此处可切换镜头的多种查看方式',
|
|
54
|
+
ipc_player_tip_next: '下一步',
|
|
55
|
+
ipc_player_tip_confirm: '知道了',
|
|
56
|
+
ipc_player_ptz_moveable_tip_text: '长按中间可拖动方向控制区域'
|
|
47
57
|
}
|
|
48
58
|
};
|