@webitel/ui-sdk 25.12.31 → 25.12.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/img/sprite/index.js +3 -1
- package/dist/img/sprite/video-cam-off--filled.svg +3 -0
- package/dist/{install-CkCE4wb4.js → install-BmP9eUzZ.js} +39152 -46993
- package/dist/{plyr-D5AzYFbZ.js → plyr-x8ciL9Nb.js} +1 -1
- package/dist/ui-sdk.css +1 -1
- package/dist/ui-sdk.js +1 -1
- package/dist/ui-sdk.umd.cjs +2131 -2131
- package/dist/{vidstack-Bq6c3Bam-DLm0nk14.js → vidstack-Bq6c3Bam-DBg3Tj69.js} +2 -2
- package/dist/{vidstack-D2pY00kU-B9Y7vnNb.js → vidstack-D2pY00kU-BJ7fdiO2.js} +2 -2
- package/dist/{vidstack-DDXt6fpN-VFB83UcC.js → vidstack-DDXt6fpN-D9bfpp_X.js} +1 -1
- package/dist/{vidstack-D_-9AA6_-bbRtBltZ.js → vidstack-D_-9AA6_-BbZ9Pvtf.js} +1 -1
- package/dist/{vidstack-DqAw8m9J-BgNg5ph2.js → vidstack-DqAw8m9J-DGmPnOS4.js} +1 -1
- package/dist/{vidstack-audio-DQBbzw_h.js → vidstack-audio-D-4zjl15.js} +2 -2
- package/dist/{vidstack-dash-D19AviQy.js → vidstack-dash-ysOZfmK3.js} +3 -3
- package/dist/{vidstack-google-cast-B4rh-Zyl.js → vidstack-google-cast-D2phhWpC.js} +3 -3
- package/dist/{vidstack-hls-BBl9mEna.js → vidstack-hls-Ao3jAjGg.js} +3 -3
- package/dist/{vidstack-video-NZRlgWyK.js → vidstack-video-eosNCj40.js} +2 -2
- package/dist/{vidstack-vimeo-e6HlIR5k.js → vidstack-vimeo-DoP-LM3_.js} +3 -3
- package/dist/{vidstack-youtube-Cg2euP6_.js → vidstack-youtube-B4Un0dIU.js} +2 -2
- package/dist/{vuex.esm-bundler-Bx9LEGao.js → vuex.esm-bundler-Cab7BktO.js} +1 -1
- package/package.json +9 -1
- package/src/assets/icons/sprite/index.js +3 -1
- package/src/assets/icons/sprite/video-cam-off--filled.svg +3 -0
- package/src/components/wt-switcher/wt-switcher.vue +19 -2
- package/src/components/wt-vidstack-player/components/layouts/video-layout.vue +7 -1
- package/src/components/wt-vidstack-player/components/panels/video-call-controls-panel/video-call-controls-panel.vue +88 -41
- package/src/components/wt-vidstack-player/wt-vidstack-player.vue +51 -40
- package/src/modules/CallSession/index.ts +3 -4
- package/src/modules/CallSession/modules/ScreenSharing/screen-sharing.vue +1 -1
- package/src/modules/CallSession/modules/VideoCall/enums/VideoCallAction.enum.ts +11 -0
- package/src/modules/CallSession/modules/VideoCall/video-call.vue +133 -42
- package/types/components/wt-switcher/wt-switcher.vue.d.ts +6 -4
- package/types/components/wt-vidstack-player/components/panels/video-call-controls-panel/video-call-controls-panel.vue.d.ts +29 -16
- package/types/components/wt-vidstack-player/wt-vidstack-player.vue.d.ts +9 -4
- package/types/modules/CallSession/index.d.ts +3 -3
- package/types/modules/CallSession/modules/VideoCall/enums/VideoCallAction.enum.d.ts +10 -0
- package/types/modules/CallSession/modules/VideoCall/video-call.vue.d.ts +34 -18
- package/types/types/ResultCallbacks.types.d.ts +5 -0
- package/types/types/index.d.ts +1 -0
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
3
|
class="wt-vidstack-player"
|
|
4
|
-
:class="{[`wt-vidstack-player--${size}`]: props.resizable
|
|
4
|
+
:class="{[`wt-vidstack-player--${size}`]: props.resizable,
|
|
5
|
+
'wt-vidstack-player--static': props.staticPosition}"
|
|
5
6
|
>
|
|
6
7
|
<media-player
|
|
7
8
|
ref="player"
|
|
8
|
-
:src="
|
|
9
|
+
:src="normalizedSrc"
|
|
9
10
|
:autoplay="props.autoplay"
|
|
10
11
|
:muted="props.muted"
|
|
11
12
|
class="wt-vidstack-player__player"
|
|
@@ -20,6 +21,7 @@
|
|
|
20
21
|
|
|
21
22
|
<video-layout
|
|
22
23
|
v-if="props.resizable"
|
|
24
|
+
:hide-display-panel="props.hideDisplayPanel"
|
|
23
25
|
:closable="props.closable"
|
|
24
26
|
:autoplay="props.autoplay"
|
|
25
27
|
:title="props.title"
|
|
@@ -50,7 +52,7 @@ import {ComponentSize} from '../../enums';
|
|
|
50
52
|
import {VideoLayout} from "./components";
|
|
51
53
|
|
|
52
54
|
interface Props {
|
|
53
|
-
src
|
|
55
|
+
src?: string | { src: string; type?: string };
|
|
54
56
|
mime?: string;
|
|
55
57
|
autoplay?: boolean;
|
|
56
58
|
muted?: boolean;
|
|
@@ -58,7 +60,10 @@ interface Props {
|
|
|
58
60
|
username?: string;
|
|
59
61
|
closable?: boolean;
|
|
60
62
|
resizable?: boolean;
|
|
63
|
+
staticPosition?: boolean;
|
|
61
64
|
stream?: MediaStream
|
|
65
|
+
componentSize?: keyof typeof ComponentSize
|
|
66
|
+
hideDisplayPanel?: boolean
|
|
62
67
|
}
|
|
63
68
|
|
|
64
69
|
const props = withDefaults(defineProps<Props>(), {
|
|
@@ -68,6 +73,7 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
68
73
|
title: '',
|
|
69
74
|
username: '',
|
|
70
75
|
closable: false,
|
|
76
|
+
staticPosition: false,
|
|
71
77
|
resizable: true,
|
|
72
78
|
});
|
|
73
79
|
|
|
@@ -76,7 +82,7 @@ const emit = defineEmits<{
|
|
|
76
82
|
}>()
|
|
77
83
|
|
|
78
84
|
const player = useTemplateRef<MediaPlayerElement>('player');
|
|
79
|
-
const size = ref(ComponentSize.SM);
|
|
85
|
+
const size = ref(props.componentSize || ComponentSize.SM);
|
|
80
86
|
|
|
81
87
|
const changeSize = (value) => {
|
|
82
88
|
size.value = value;
|
|
@@ -90,58 +96,39 @@ provide('size', {size, changeSize});
|
|
|
90
96
|
|
|
91
97
|
const normalizedType = computed(() => { // https://vidstack.io/docs/wc/player/core-concepts/loading/?styling=css#source-types
|
|
92
98
|
if (props.mime) return props.mime;
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
99
|
+
|
|
100
|
+
if (typeof props.src === 'string') {
|
|
101
|
+
if (props.src.includes('media')) return 'audio/mp3';
|
|
102
|
+
if (props.src.includes('mp3')) return 'audio/mp3';
|
|
103
|
+
if (props.src.includes('ogg') || props.src.includes('oga')) return 'audio/ogg';
|
|
104
|
+
}
|
|
98
105
|
|
|
99
106
|
return 'video/mp4';
|
|
100
107
|
});
|
|
101
108
|
|
|
102
|
-
const
|
|
109
|
+
const normalizedSrc = computed(() => {
|
|
110
|
+
if (props.stream) {
|
|
111
|
+
return {src: props.stream, type: 'video/object'};
|
|
112
|
+
}
|
|
113
|
+
|
|
103
114
|
if (typeof props.src === 'string') {
|
|
104
|
-
return {src: props.src, type: normalizedType.value};
|
|
115
|
+
return { src: props.src, type: normalizedType.value };
|
|
105
116
|
}
|
|
117
|
+
|
|
106
118
|
return {
|
|
107
119
|
src: props.src?.src || '',
|
|
108
120
|
type: props.src?.type || normalizedType.value
|
|
109
121
|
};
|
|
110
122
|
});
|
|
111
123
|
|
|
112
|
-
/** @author @Oleksandr Palonnyi
|
|
113
|
-
* Binds the incoming MediaStream to the Vidstack player after mount.
|
|
114
|
-
* A brief delay ensures the internal <video> element is ready before playback starts.
|
|
115
|
-
*/
|
|
116
|
-
onMounted(() => {
|
|
117
|
-
if (player.value && props.stream) {
|
|
118
|
-
const videoEl = player.value.querySelector('video')
|
|
119
|
-
|
|
120
|
-
videoEl.addEventListener("loadedmetadata", async () => {
|
|
121
|
-
await videoEl.play().catch((err) => console.error('play error:', err))
|
|
122
|
-
})
|
|
123
|
-
|
|
124
|
-
if (videoEl.srcObject !== props.stream) {
|
|
125
|
-
setTimeout(() => {
|
|
126
|
-
videoEl.srcObject = props.stream ?? null
|
|
127
|
-
}, 200)
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
})
|
|
131
|
-
|
|
132
|
-
onBeforeUnmount(() => {
|
|
133
|
-
const videoEl = player.value.querySelector('video')
|
|
134
|
-
if (videoEl && videoEl.srcObject) {
|
|
135
|
-
videoEl.srcObject.getTracks().forEach(t => t.stop())
|
|
136
|
-
videoEl.srcObject = null
|
|
137
|
-
}
|
|
138
|
-
})
|
|
139
124
|
</script>
|
|
140
125
|
|
|
141
126
|
<style scoped lang="scss">
|
|
142
127
|
@use '../wt-popup/mixins.scss' as *;
|
|
143
128
|
|
|
144
129
|
.wt-vidstack-player {
|
|
130
|
+
width: 100%;
|
|
131
|
+
height: 100%;
|
|
145
132
|
transition: var(--transition);
|
|
146
133
|
|
|
147
134
|
&__player {
|
|
@@ -169,17 +156,25 @@ onBeforeUnmount(() => {
|
|
|
169
156
|
}
|
|
170
157
|
|
|
171
158
|
&--md {
|
|
172
|
-
|
|
159
|
+
&--md:not(.wt-vidstack-player--static) {
|
|
160
|
+
@include popup-wrapper;
|
|
161
|
+
|
|
162
|
+
.wt-vidstack-player__player {
|
|
163
|
+
@include popup-container;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
173
167
|
/** @author liza-pohranichna
|
|
174
168
|
* need to use wt-popup styles for md size https://webitel.atlassian.net/browse/WTEL-7723 */
|
|
175
169
|
|
|
176
170
|
.wt-vidstack-player__player {
|
|
177
|
-
@include popup-container;
|
|
178
171
|
position: relative;
|
|
172
|
+
display: block;
|
|
179
173
|
max-width: var(--p-player-wrapper-md-width);
|
|
180
174
|
padding: 0;
|
|
181
175
|
border-radius: var(--p-player-wrapper-md-border-radius);
|
|
182
176
|
overflow: hidden;
|
|
177
|
+
box-shadow: var(--elevation-10);
|
|
183
178
|
}
|
|
184
179
|
}
|
|
185
180
|
|
|
@@ -196,6 +191,22 @@ onBeforeUnmount(() => {
|
|
|
196
191
|
}
|
|
197
192
|
}
|
|
198
193
|
}
|
|
194
|
+
|
|
195
|
+
&--static {
|
|
196
|
+
position: relative;
|
|
197
|
+
right: unset;
|
|
198
|
+
bottom: unset;
|
|
199
|
+
|
|
200
|
+
.wt-vidstack-player__provider {
|
|
201
|
+
padding: 0;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
.wt-vidstack-player__player {
|
|
205
|
+
margin: 0;
|
|
206
|
+
width: 100%;
|
|
207
|
+
height: 100%;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
199
210
|
}
|
|
200
211
|
</style>
|
|
201
212
|
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export { ScreenSharing, VideoCall };
|
|
1
|
+
export { default as ScreenSharing } from './modules/ScreenSharing/screen-sharing.vue';
|
|
2
|
+
export { VideoCallAction } from './modules/VideoCall/enums/VideoCallAction.enum';
|
|
3
|
+
export { default as VideoCall } from './modules/VideoCall/video-call.vue';
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
import {WtVidstackPlayer} from '@webitel/ui-sdk/components';
|
|
36
36
|
import {defineEmits, useAttrs} from 'vue';
|
|
37
37
|
|
|
38
|
-
import {RecordingIndicator,ScreenSharingControlsPanel} from "../../../../components/wt-vidstack-player/components";
|
|
38
|
+
import {RecordingIndicator, ScreenSharingControlsPanel} from "../../../../components/wt-vidstack-player/components";
|
|
39
39
|
import {ScreenSharingSession, ScreenshotStatus} from '../../types';
|
|
40
40
|
|
|
41
41
|
interface Props {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const VideoCallAction = {
|
|
2
|
+
Screenshot: 'screenshot',
|
|
3
|
+
Recordings: 'recordings',
|
|
4
|
+
Mic: 'mic',
|
|
5
|
+
Video: 'video',
|
|
6
|
+
Settings: 'settings',
|
|
7
|
+
Chat: 'chat',
|
|
8
|
+
Hangup: 'hangup',
|
|
9
|
+
} as const;
|
|
10
|
+
|
|
11
|
+
export type VideoCallAction = (typeof VideoCallAction)[keyof typeof VideoCallAction];
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<wt-vidstack-player
|
|
3
3
|
:stream="mainStream"
|
|
4
|
+
:static-position="props.position === 'static'"
|
|
4
5
|
class="video-call"
|
|
5
6
|
autoplay
|
|
6
7
|
muted
|
|
@@ -10,15 +11,36 @@
|
|
|
10
11
|
:class="`video-call-content--${size}`"
|
|
11
12
|
class="video-call-content"
|
|
12
13
|
>
|
|
13
|
-
<
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
14
|
+
<template v-if="!props['receiver:stream'] && !props['sender:video:enabled']">
|
|
15
|
+
<div
|
|
16
|
+
:class="`video-call-sender--${size}`"
|
|
17
|
+
class="video-call-sender video-call-sender--muted"
|
|
18
|
+
>
|
|
19
|
+
<wt-icon :size="receiverVideoMutedIconSizes[size]" icon="video-cam-off--filled" />
|
|
20
|
+
</div>
|
|
21
|
+
</template>
|
|
22
|
+
|
|
23
|
+
<template v-if="!props['receiver:stream'] && !props['receiver:video:enabled']">
|
|
24
|
+
<div
|
|
25
|
+
:class="`video-call-receiver--${size}`"
|
|
26
|
+
class="video-call-receiver video-call-receiver--muted"
|
|
27
|
+
>
|
|
28
|
+
<wt-icon :size="receiverVideoMutedIconSizes[size]" icon="video-cam-off--filled" />
|
|
29
|
+
</div>
|
|
30
|
+
</template>
|
|
31
|
+
|
|
32
|
+
<template v-else-if="props['receiver:stream']">
|
|
33
|
+
<wt-vidstack-player
|
|
34
|
+
:stream="props['receiver:stream']"
|
|
35
|
+
:resizable="false"
|
|
36
|
+
:class="`video-call-receiver--${size}`"
|
|
37
|
+
hide-display-panel
|
|
38
|
+
static-position
|
|
39
|
+
autoplay
|
|
40
|
+
muted
|
|
41
|
+
class="video-call-receiver"
|
|
42
|
+
/>
|
|
43
|
+
</template>
|
|
22
44
|
|
|
23
45
|
<div
|
|
24
46
|
:class="`video-call__indicator--${size}`"
|
|
@@ -34,19 +56,21 @@
|
|
|
34
56
|
|
|
35
57
|
<template #controls-panel>
|
|
36
58
|
<video-call-controls-panel
|
|
59
|
+
:mic:enabled="props['sender:mic:enabled']"
|
|
60
|
+
:mic:accessed="props['sender:mic:accessed']"
|
|
61
|
+
:video:enabled="props['sender:video:enabled']"
|
|
62
|
+
:video:accessed="props['sender:video:accessed']"
|
|
63
|
+
:screenshot:status="props['screenshot:status']"
|
|
64
|
+
:screenshot:loading="props['screenshot:loading']"
|
|
37
65
|
:recordings="props.recordings"
|
|
38
|
-
:
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
:video-callback="props.videoCallback"
|
|
47
|
-
:settings-callback="props.settingsCallback"
|
|
48
|
-
:chat-callback="props.chatCallback"
|
|
49
|
-
:call-state-callback="props.callStateCallback"
|
|
66
|
+
:actions="props.actions"
|
|
67
|
+
@[VideoCallAction.Screenshot]="([payload, options] = []) => emit(`action:${VideoCallAction.Screenshot}`, payload, options)"
|
|
68
|
+
@[VideoCallAction.Recordings]="([payload, options] = []) => emit(`action:${VideoCallAction.Recordings}`, payload, options)"
|
|
69
|
+
@[VideoCallAction.Mic]="([payload, options] = []) => emit(`action:${VideoCallAction.Mic}`, payload, options)"
|
|
70
|
+
@[VideoCallAction.Video]="([payload, options] = []) => emit(`action:${VideoCallAction.Video}`, payload, options)"
|
|
71
|
+
@[VideoCallAction.Settings]="([payload, options] = []) => emit(`action:${VideoCallAction.Settings}`, payload, options)"
|
|
72
|
+
@[VideoCallAction.Chat]="([payload, options] = []) => emit(`action:${VideoCallAction.Chat}`, payload, options)"
|
|
73
|
+
@[VideoCallAction.Hangup]="([payload, options] = []) => emit(`action:${VideoCallAction.Hangup}`, payload, options)"
|
|
50
74
|
/>
|
|
51
75
|
</template>
|
|
52
76
|
</wt-vidstack-player>
|
|
@@ -54,33 +78,61 @@
|
|
|
54
78
|
|
|
55
79
|
<script setup lang="ts">
|
|
56
80
|
import {WtVidstackPlayer} from '@webitel/ui-sdk/components';
|
|
57
|
-
import {computed} from 'vue';
|
|
81
|
+
import {computed } from 'vue';
|
|
58
82
|
|
|
83
|
+
import {WtIcon} from "../../../../components";
|
|
59
84
|
import {RecordingIndicator, VideoCallControlsPanel} from "../../../../components/wt-vidstack-player/components";
|
|
85
|
+
import {ComponentSize} from "../../../../enums";
|
|
86
|
+
import { ResultCallbacks } from '../../../../types';
|
|
60
87
|
import {ScreenshotStatus} from '../../types';
|
|
88
|
+
import { VideoCallAction } from './enums/VideoCallAction.enum';
|
|
61
89
|
|
|
62
|
-
|
|
63
|
-
sender: MediaStream
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
90
|
+
const props = defineProps<{
|
|
91
|
+
'sender:stream'?: MediaStream | null;
|
|
92
|
+
|
|
93
|
+
'sender:mic:enabled'?: boolean;
|
|
94
|
+
'sender:mic:accessed'?: boolean;
|
|
95
|
+
|
|
96
|
+
'sender:video:enabled'?: boolean;
|
|
97
|
+
'sender:video:accessed'?: boolean;
|
|
98
|
+
|
|
99
|
+
'receiver:stream'?: MediaStream | null;
|
|
100
|
+
'receiver:mic:enabled'?: boolean;
|
|
101
|
+
'receiver:video:enabled'?: boolean;
|
|
102
|
+
|
|
103
|
+
'screenshot:status'?: ScreenshotStatus | null;
|
|
104
|
+
'screenshot:loading'?: boolean;
|
|
105
|
+
|
|
106
|
+
recordings?: boolean;
|
|
107
|
+
|
|
108
|
+
position?: 'static' | 'left' | 'right';
|
|
109
|
+
|
|
110
|
+
actions: VideoCallAction[];
|
|
111
|
+
}>();
|
|
112
|
+
|
|
113
|
+
const emit = defineEmits<{
|
|
114
|
+
(e: `action:${typeof VideoCallAction.Screenshot}`, payload?: unknown, options?: ResultCallbacks): void;
|
|
115
|
+
(e: `action:${typeof VideoCallAction.Recordings}`, payload?: unknown, options?: ResultCallbacks): void;
|
|
116
|
+
(e: `action:${typeof VideoCallAction.Mic}`, payload?: unknown, options?: ResultCallbacks): void;
|
|
117
|
+
(e: `action:${typeof VideoCallAction.Video}`, payload?: unknown, options?: ResultCallbacks): void;
|
|
118
|
+
(e: `action:${typeof VideoCallAction.Settings}`, payload?: unknown, options?: ResultCallbacks): void;
|
|
119
|
+
(e: `action:${typeof VideoCallAction.Chat}`, payload?: unknown, options?: ResultCallbacks): void;
|
|
120
|
+
(e: `action:${typeof VideoCallAction.Hangup}`, payload?: unknown, options?: ResultCallbacks): void;
|
|
121
|
+
}>()
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
const mainStream = computed(() => {
|
|
125
|
+
if (!props['sender:video:enabled']) return null;
|
|
80
126
|
|
|
81
|
-
|
|
127
|
+
return props['receiver:stream'] || props['sender:stream'];
|
|
128
|
+
})
|
|
129
|
+
|
|
130
|
+
const receiverVideoMutedIconSizes = {
|
|
131
|
+
[ComponentSize.SM]: ComponentSize.MD,
|
|
132
|
+
[ComponentSize.SM]: ComponentSize.LG,
|
|
133
|
+
[ComponentSize.SM]: ComponentSize.XXL,
|
|
134
|
+
}
|
|
82
135
|
|
|
83
|
-
const mainStream = computed(() => props.receiver || props.sender)
|
|
84
136
|
</script>
|
|
85
137
|
|
|
86
138
|
<style lang="scss" scoped>
|
|
@@ -101,13 +153,42 @@ const mainStream = computed(() => props.receiver || props.sender)
|
|
|
101
153
|
}
|
|
102
154
|
}
|
|
103
155
|
|
|
156
|
+
&-sender {
|
|
157
|
+
background: var(--p-player-wrapper-background);
|
|
158
|
+
position: absolute;
|
|
159
|
+
left: 0;
|
|
160
|
+
top: 0;
|
|
161
|
+
width: 100%;
|
|
162
|
+
height: 100%;
|
|
163
|
+
display: flex;
|
|
164
|
+
align-items: center;
|
|
165
|
+
justify-content: center;
|
|
166
|
+
}
|
|
167
|
+
|
|
104
168
|
&-receiver {
|
|
105
169
|
flex: 0 0 auto;
|
|
106
170
|
|
|
171
|
+
&--muted {
|
|
172
|
+
background: var(--p-player-wrapper-background);
|
|
173
|
+
display: flex;
|
|
174
|
+
align-items: center;
|
|
175
|
+
justify-content: center;
|
|
176
|
+
overflow: hidden;
|
|
177
|
+
}
|
|
178
|
+
|
|
107
179
|
&--sm {
|
|
108
180
|
:deep(video) {
|
|
109
181
|
border-radius: var(--p-player-cam-preview-sm-border-radius);
|
|
110
182
|
}
|
|
183
|
+
|
|
184
|
+
&.video-call-receiver--muted {
|
|
185
|
+
border-radius: var(--p-player-cam-preview-sm-border-radius);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
&.video-call-sender--muted {
|
|
189
|
+
padding-bottom: var(--p-player-control-bar-sm-height);
|
|
190
|
+
}
|
|
191
|
+
|
|
111
192
|
width: var(--p-player-cam-preview-sm-width);
|
|
112
193
|
height: var(--p-player-cam-preview-sm-height);
|
|
113
194
|
position: relative;
|
|
@@ -119,6 +200,11 @@ const mainStream = computed(() => props.receiver || props.sender)
|
|
|
119
200
|
:deep(video) {
|
|
120
201
|
border-radius: var(--p-player-cam-preview-md-border-radius);
|
|
121
202
|
}
|
|
203
|
+
|
|
204
|
+
&.video-call-receiver--muted {
|
|
205
|
+
border-radius: var(--p-player-cam-preview-md-border-radius);
|
|
206
|
+
}
|
|
207
|
+
|
|
122
208
|
width: var(--p-player-cam-preview-md-width);
|
|
123
209
|
height: var(--p-player-cam-preview-md-height);
|
|
124
210
|
position: relative;
|
|
@@ -130,6 +216,11 @@ const mainStream = computed(() => props.receiver || props.sender)
|
|
|
130
216
|
:deep(video) {
|
|
131
217
|
border-radius: var(--p-player-cam-preview-lg-border-radius);
|
|
132
218
|
}
|
|
219
|
+
|
|
220
|
+
&.video-call-receiver--muted {
|
|
221
|
+
border-radius: var(--p-player-cam-preview-lg-border-radius);
|
|
222
|
+
}
|
|
223
|
+
|
|
133
224
|
width: var(--p-player-cam-preview-lg-width);
|
|
134
225
|
height: var(--p-player-cam-preview-lg-height);
|
|
135
226
|
position: relative;
|
|
@@ -7,28 +7,30 @@ interface Props extends ToggleSwitchProps {
|
|
|
7
7
|
labelLeft?: boolean;
|
|
8
8
|
disabled?: boolean;
|
|
9
9
|
labelProps?: LabelProps;
|
|
10
|
+
controlled?: boolean;
|
|
10
11
|
}
|
|
11
12
|
type __VLS_Props = Props;
|
|
12
13
|
type __VLS_PublicProps = __VLS_Props & {
|
|
13
14
|
modelValue?: boolean;
|
|
14
15
|
};
|
|
15
|
-
declare var
|
|
16
|
+
declare var __VLS_13: {
|
|
16
17
|
label: string;
|
|
17
18
|
value: any;
|
|
18
19
|
disabled: boolean;
|
|
19
20
|
};
|
|
20
21
|
type __VLS_Slots = {} & {
|
|
21
|
-
label?: (props: typeof
|
|
22
|
+
label?: (props: typeof __VLS_13) => any;
|
|
22
23
|
};
|
|
23
24
|
declare const __VLS_component: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
24
|
-
"update:modelValue": (
|
|
25
|
+
"update:modelValue": (...args: any[]) => void;
|
|
25
26
|
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
26
|
-
"onUpdate:modelValue"?: (
|
|
27
|
+
"onUpdate:modelValue"?: (...args: any[]) => any;
|
|
27
28
|
}>, {
|
|
28
29
|
disabled: boolean;
|
|
29
30
|
label: string;
|
|
30
31
|
labelProps: LabelProps;
|
|
31
32
|
labelLeft: boolean;
|
|
33
|
+
controlled: boolean;
|
|
32
34
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
33
35
|
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
34
36
|
export default _default;
|
|
@@ -1,18 +1,31 @@
|
|
|
1
|
+
import { VideoCallAction } from '../../../../../modules/CallSession/modules/VideoCall/enums/VideoCallAction.enum';
|
|
1
2
|
import { ScreenshotStatus } from '../../../../../modules/CallSession/types';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
3
|
+
import { ResultCallbacks } from '../../../../../types';
|
|
4
|
+
type __VLS_Props = {
|
|
5
|
+
'actions': VideoCallAction[];
|
|
6
|
+
'mic:enabled': boolean;
|
|
7
|
+
'mic:accessed': boolean;
|
|
8
|
+
'video:enabled': boolean;
|
|
9
|
+
'video:accessed': boolean;
|
|
10
|
+
'screenshot:status': ScreenshotStatus | null;
|
|
11
|
+
'screenshot:loading': boolean;
|
|
12
|
+
'recordings': boolean;
|
|
13
|
+
};
|
|
14
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
15
|
+
chat: (payload?: unknown, options?: ResultCallbacks) => any;
|
|
16
|
+
video: (payload?: unknown, options?: ResultCallbacks) => any;
|
|
17
|
+
settings: (payload?: unknown, options?: ResultCallbacks) => any;
|
|
18
|
+
screenshot: (payload?: unknown, options?: ResultCallbacks) => any;
|
|
19
|
+
recordings: (payload?: unknown, options?: ResultCallbacks) => any;
|
|
20
|
+
mic: (payload?: unknown, options?: ResultCallbacks) => any;
|
|
21
|
+
hangup: (payload?: unknown, options?: ResultCallbacks) => any;
|
|
22
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
23
|
+
onChat?: (payload?: unknown, options?: ResultCallbacks) => any;
|
|
24
|
+
onVideo?: (payload?: unknown, options?: ResultCallbacks) => any;
|
|
25
|
+
onSettings?: (payload?: unknown, options?: ResultCallbacks) => any;
|
|
26
|
+
onScreenshot?: (payload?: unknown, options?: ResultCallbacks) => any;
|
|
27
|
+
onRecordings?: (payload?: unknown, options?: ResultCallbacks) => any;
|
|
28
|
+
onMic?: (payload?: unknown, options?: ResultCallbacks) => any;
|
|
29
|
+
onHangup?: (payload?: unknown, options?: ResultCallbacks) => any;
|
|
30
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
18
31
|
export default _default;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import 'vidstack/player';
|
|
2
2
|
import 'vidstack/player/ui';
|
|
3
|
+
import { ComponentSize } from '../../enums';
|
|
3
4
|
interface Props {
|
|
4
|
-
src
|
|
5
|
+
src?: string | {
|
|
5
6
|
src: string;
|
|
6
7
|
type?: string;
|
|
7
8
|
};
|
|
@@ -12,12 +13,15 @@ interface Props {
|
|
|
12
13
|
username?: string;
|
|
13
14
|
closable?: boolean;
|
|
14
15
|
resizable?: boolean;
|
|
16
|
+
staticPosition?: boolean;
|
|
15
17
|
stream?: MediaStream;
|
|
18
|
+
componentSize?: keyof typeof ComponentSize;
|
|
19
|
+
hideDisplayPanel?: boolean;
|
|
16
20
|
}
|
|
17
21
|
declare var __VLS_24: {
|
|
18
|
-
size: "sm";
|
|
22
|
+
size: "sm" | "XXXS" | "XXS" | "XS" | "SM" | "MD" | "LG" | "XL" | "XXL" | "XXXL";
|
|
19
23
|
}, __VLS_26: {
|
|
20
|
-
size: "sm";
|
|
24
|
+
size: "sm" | "XXXS" | "XXS" | "XS" | "SM" | "MD" | "LG" | "XL" | "XXL" | "XXXL";
|
|
21
25
|
};
|
|
22
26
|
type __VLS_Slots = {} & {
|
|
23
27
|
'controls-panel'?: (props: typeof __VLS_24) => any;
|
|
@@ -36,7 +40,8 @@ declare const __VLS_component: import("vue").DefineComponent<Props, {}, {}, {},
|
|
|
36
40
|
closable: boolean;
|
|
37
41
|
muted: boolean;
|
|
38
42
|
resizable: boolean;
|
|
39
|
-
|
|
43
|
+
staticPosition: boolean;
|
|
44
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
40
45
|
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
41
46
|
export default _default;
|
|
42
47
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export {
|
|
1
|
+
export { default as ScreenSharing } from './modules/ScreenSharing/screen-sharing.vue';
|
|
2
|
+
export { VideoCallAction } from './modules/VideoCall/enums/VideoCallAction.enum';
|
|
3
|
+
export { default as VideoCall } from './modules/VideoCall/video-call.vue';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const VideoCallAction: {
|
|
2
|
+
readonly Screenshot: "screenshot";
|
|
3
|
+
readonly Recordings: "recordings";
|
|
4
|
+
readonly Mic: "mic";
|
|
5
|
+
readonly Video: "video";
|
|
6
|
+
readonly Settings: "settings";
|
|
7
|
+
readonly Chat: "chat";
|
|
8
|
+
readonly Hangup: "hangup";
|
|
9
|
+
};
|
|
10
|
+
export type VideoCallAction = (typeof VideoCallAction)[keyof typeof VideoCallAction];
|
|
@@ -1,20 +1,36 @@
|
|
|
1
|
+
import { ResultCallbacks } from '../../../../types';
|
|
1
2
|
import { ScreenshotStatus } from '../../types';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
|
|
3
|
+
import { VideoCallAction } from './enums/VideoCallAction.enum';
|
|
4
|
+
type __VLS_Props = {
|
|
5
|
+
'sender:stream'?: MediaStream | null;
|
|
6
|
+
'sender:mic:enabled'?: boolean;
|
|
7
|
+
'sender:mic:accessed'?: boolean;
|
|
8
|
+
'sender:video:enabled'?: boolean;
|
|
9
|
+
'sender:video:accessed'?: boolean;
|
|
10
|
+
'receiver:stream'?: MediaStream | null;
|
|
11
|
+
'receiver:mic:enabled'?: boolean;
|
|
12
|
+
'receiver:video:enabled'?: boolean;
|
|
13
|
+
'screenshot:status'?: ScreenshotStatus | null;
|
|
14
|
+
'screenshot:loading'?: boolean;
|
|
15
|
+
recordings?: boolean;
|
|
16
|
+
position?: 'static' | 'left' | 'right';
|
|
17
|
+
actions: VideoCallAction[];
|
|
18
|
+
};
|
|
19
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
20
|
+
"action:screenshot": (payload?: unknown, options?: ResultCallbacks) => any;
|
|
21
|
+
"action:recordings": (payload?: unknown, options?: ResultCallbacks) => any;
|
|
22
|
+
"action:mic": (payload?: unknown, options?: ResultCallbacks) => any;
|
|
23
|
+
"action:video": (payload?: unknown, options?: ResultCallbacks) => any;
|
|
24
|
+
"action:settings": (payload?: unknown, options?: ResultCallbacks) => any;
|
|
25
|
+
"action:chat": (payload?: unknown, options?: ResultCallbacks) => any;
|
|
26
|
+
"action:hangup": (payload?: unknown, options?: ResultCallbacks) => any;
|
|
27
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
28
|
+
"onAction:screenshot"?: (payload?: unknown, options?: ResultCallbacks) => any;
|
|
29
|
+
"onAction:recordings"?: (payload?: unknown, options?: ResultCallbacks) => any;
|
|
30
|
+
"onAction:mic"?: (payload?: unknown, options?: ResultCallbacks) => any;
|
|
31
|
+
"onAction:video"?: (payload?: unknown, options?: ResultCallbacks) => any;
|
|
32
|
+
"onAction:settings"?: (payload?: unknown, options?: ResultCallbacks) => any;
|
|
33
|
+
"onAction:chat"?: (payload?: unknown, options?: ResultCallbacks) => any;
|
|
34
|
+
"onAction:hangup"?: (payload?: unknown, options?: ResultCallbacks) => any;
|
|
35
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
20
36
|
export default _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type { ResultCallbacks } from './ResultCallbacks.types';
|