@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.
Files changed (39) hide show
  1. package/dist/img/sprite/index.js +3 -1
  2. package/dist/img/sprite/video-cam-off--filled.svg +3 -0
  3. package/dist/{install-CkCE4wb4.js → install-BmP9eUzZ.js} +39152 -46993
  4. package/dist/{plyr-D5AzYFbZ.js → plyr-x8ciL9Nb.js} +1 -1
  5. package/dist/ui-sdk.css +1 -1
  6. package/dist/ui-sdk.js +1 -1
  7. package/dist/ui-sdk.umd.cjs +2131 -2131
  8. package/dist/{vidstack-Bq6c3Bam-DLm0nk14.js → vidstack-Bq6c3Bam-DBg3Tj69.js} +2 -2
  9. package/dist/{vidstack-D2pY00kU-B9Y7vnNb.js → vidstack-D2pY00kU-BJ7fdiO2.js} +2 -2
  10. package/dist/{vidstack-DDXt6fpN-VFB83UcC.js → vidstack-DDXt6fpN-D9bfpp_X.js} +1 -1
  11. package/dist/{vidstack-D_-9AA6_-bbRtBltZ.js → vidstack-D_-9AA6_-BbZ9Pvtf.js} +1 -1
  12. package/dist/{vidstack-DqAw8m9J-BgNg5ph2.js → vidstack-DqAw8m9J-DGmPnOS4.js} +1 -1
  13. package/dist/{vidstack-audio-DQBbzw_h.js → vidstack-audio-D-4zjl15.js} +2 -2
  14. package/dist/{vidstack-dash-D19AviQy.js → vidstack-dash-ysOZfmK3.js} +3 -3
  15. package/dist/{vidstack-google-cast-B4rh-Zyl.js → vidstack-google-cast-D2phhWpC.js} +3 -3
  16. package/dist/{vidstack-hls-BBl9mEna.js → vidstack-hls-Ao3jAjGg.js} +3 -3
  17. package/dist/{vidstack-video-NZRlgWyK.js → vidstack-video-eosNCj40.js} +2 -2
  18. package/dist/{vidstack-vimeo-e6HlIR5k.js → vidstack-vimeo-DoP-LM3_.js} +3 -3
  19. package/dist/{vidstack-youtube-Cg2euP6_.js → vidstack-youtube-B4Un0dIU.js} +2 -2
  20. package/dist/{vuex.esm-bundler-Bx9LEGao.js → vuex.esm-bundler-Cab7BktO.js} +1 -1
  21. package/package.json +9 -1
  22. package/src/assets/icons/sprite/index.js +3 -1
  23. package/src/assets/icons/sprite/video-cam-off--filled.svg +3 -0
  24. package/src/components/wt-switcher/wt-switcher.vue +19 -2
  25. package/src/components/wt-vidstack-player/components/layouts/video-layout.vue +7 -1
  26. package/src/components/wt-vidstack-player/components/panels/video-call-controls-panel/video-call-controls-panel.vue +88 -41
  27. package/src/components/wt-vidstack-player/wt-vidstack-player.vue +51 -40
  28. package/src/modules/CallSession/index.ts +3 -4
  29. package/src/modules/CallSession/modules/ScreenSharing/screen-sharing.vue +1 -1
  30. package/src/modules/CallSession/modules/VideoCall/enums/VideoCallAction.enum.ts +11 -0
  31. package/src/modules/CallSession/modules/VideoCall/video-call.vue +133 -42
  32. package/types/components/wt-switcher/wt-switcher.vue.d.ts +6 -4
  33. package/types/components/wt-vidstack-player/components/panels/video-call-controls-panel/video-call-controls-panel.vue.d.ts +29 -16
  34. package/types/components/wt-vidstack-player/wt-vidstack-player.vue.d.ts +9 -4
  35. package/types/modules/CallSession/index.d.ts +3 -3
  36. package/types/modules/CallSession/modules/VideoCall/enums/VideoCallAction.enum.d.ts +10 -0
  37. package/types/modules/CallSession/modules/VideoCall/video-call.vue.d.ts +34 -18
  38. package/types/types/ResultCallbacks.types.d.ts +5 -0
  39. 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="playerSrc"
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: string | { src: string; type?: string };
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
- if (props.src.includes('media')) return 'audio/mp3';
96
- if (props.src.includes('mp3')) return 'audio/mp3';
97
- if (props.src.includes('ogg') || props.src.includes('oga')) return 'audio/ogg';
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 playerSrc = computed(() => {
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
- @include popup-wrapper;
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
- import ScreenSharing from './modules/ScreenSharing/screen-sharing.vue';
2
- import VideoCall from './modules/VideoCall/video-call.vue';
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
- <wt-vidstack-player
14
- :stream="props.receiver"
15
- :resizable="false"
16
- :class="`video-call-receiver--${size}`"
17
- static
18
- autoplay
19
- muted
20
- class="receiver"
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
- :is-mic-muted="props.isMicMuted"
39
- :is-video-muted="props.isVideoMuted"
40
- :is-call-started="props.isCallStarted"
41
- :screenshot-status="props.screenshotStatus"
42
- :screenshot-is-loading="props.screenshotIsLoading"
43
- :screenshot-callback="props.screenshotCallback"
44
- :recordings-callback="props.recordingsCallback"
45
- :mic-callback="props.micCallback"
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
- interface Props {
63
- sender: MediaStream
64
- receiver: MediaStream
65
- isMicMuted: boolean
66
- isVideoMuted: boolean
67
- isCallStarted: boolean
68
- recordings: boolean
69
- screenshotStatus: ScreenshotStatus | null
70
- screenshotIsLoading: boolean
71
-
72
- screenshotCallback?: () => void
73
- recordingsCallback?: () => void
74
- micCallback?: () => void
75
- videoCallback?: () => void
76
- settingsCallback?: () => void
77
- chatCallback?: () => void
78
- callStateCallback?: () => void
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
- const props = defineProps<Props>();
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 __VLS_9: {
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 __VLS_9) => any;
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": (value: boolean) => any;
25
+ "update:modelValue": (...args: any[]) => void;
25
26
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
26
- "onUpdate:modelValue"?: (value: boolean) => any;
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
- interface Props {
3
- recordings: boolean;
4
- isMicMuted: boolean;
5
- isVideoMuted: boolean;
6
- isCallStarted: boolean;
7
- screenshotIsLoading: boolean;
8
- screenshotStatus: ScreenshotStatus | null;
9
- screenshotCallback?: () => void;
10
- recordingsCallback?: () => void;
11
- micCallback?: () => void;
12
- videoCallback?: () => void;
13
- settingsCallback?: () => void;
14
- chatCallback?: () => void;
15
- callStateCallback?: () => void;
16
- }
17
- declare const _default: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
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: string | {
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
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
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
- import ScreenSharing from './modules/ScreenSharing/screen-sharing.vue';
2
- import VideoCall from './modules/VideoCall/video-call.vue';
3
- 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';
@@ -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
- interface Props {
3
- sender: MediaStream;
4
- receiver: MediaStream;
5
- isMicMuted: boolean;
6
- isVideoMuted: boolean;
7
- isCallStarted: boolean;
8
- recordings: boolean;
9
- screenshotStatus: ScreenshotStatus | null;
10
- screenshotIsLoading: boolean;
11
- screenshotCallback?: () => void;
12
- recordingsCallback?: () => void;
13
- micCallback?: () => void;
14
- videoCallback?: () => void;
15
- settingsCallback?: () => void;
16
- chatCallback?: () => void;
17
- callStateCallback?: () => void;
18
- }
19
- declare const _default: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
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,5 @@
1
+ export type ResultCallbacks = {
2
+ onSuccess?: () => void;
3
+ onError?: (error: Error) => void;
4
+ onComplete?: () => void;
5
+ };
@@ -0,0 +1 @@
1
+ export type { ResultCallbacks } from './ResultCallbacks.types';