@webitel/ui-sdk 25.10.52 → 25.10.54
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 +14 -1
- package/dist/img/sprite/record-start.svg +7 -0
- package/dist/img/sprite/record-stop.svg +7 -0
- package/dist/img/sprite/screenshot-done.svg +7 -0
- package/dist/img/sprite/screenshot-false.svg +7 -0
- package/dist/img/sprite/screenshot.svg +8 -0
- package/dist/img/sprite/sharing-end.svg +5 -0
- package/dist/{install-hlMLq0U3.js → install-Cvn-xDmg.js} +30453 -31092
- package/dist/ui-sdk.css +1 -1
- package/dist/ui-sdk.js +1 -1
- package/dist/ui-sdk.umd.cjs +1001 -989
- package/dist/vidstack-Bq6c3Bam-S5OrhBq2.js +413 -0
- package/dist/vidstack-D2pY00kU-HK4wj-R2.js +138 -0
- package/dist/vidstack-DDXt6fpN-D1Nzo26r.js +60 -0
- package/dist/vidstack-D_-9AA6_-DBOQembh.js +20 -0
- package/dist/vidstack-Dm1xEU9Q-qSXq3AI-.js +31 -0
- package/dist/vidstack-DqAw8m9J-k1JRevJl.js +29 -0
- package/dist/vidstack-audio-B1snbo-4.js +32 -0
- package/dist/vidstack-dash-BeCOt7Pp.js +403 -0
- package/dist/vidstack-google-cast-iUp-BySZ.js +377 -0
- package/dist/vidstack-hls-DVZy4g9e.js +324 -0
- package/dist/vidstack-krOAtKMi-B4IZWKdc.js +29 -0
- package/dist/vidstack-video-ykJKnrB2.js +181 -0
- package/dist/vidstack-vimeo-Bk8cduzE.js +437 -0
- package/dist/vidstack-youtube-FNzWU8v0.js +236 -0
- package/package.json +3 -3
- package/src/assets/icons/sprite/index.js +14 -1
- package/src/assets/icons/sprite/record-start.svg +7 -0
- package/src/assets/icons/sprite/record-stop.svg +7 -0
- package/src/assets/icons/sprite/screenshot-done.svg +7 -0
- package/src/assets/icons/sprite/screenshot-false.svg +7 -0
- package/src/assets/icons/sprite/screenshot.svg +8 -0
- package/src/assets/icons/sprite/sharing-end.svg +5 -0
- package/src/components/wt-image/wt-image.vue +4 -1
- package/src/components/wt-vidstack-player/components/layouts/video-layout.vue +12 -2
- package/src/components/wt-vidstack-player/components/panels/screen-sharing-control-panel/screen-sharing-control-panel.vue +211 -0
- package/src/components/wt-vidstack-player/types/WtVidstackPlayerControlsMode.ts +7 -0
- package/src/components/wt-vidstack-player/types/WtVidstackPlayerSession.ts +7 -0
- package/src/components/wt-vidstack-player/wt-vidstack-player.vue +24 -3
- package/src/plugins/primevue/theme/components/components.js +1 -2
- package/src/plugins/primevue/theme/extend/player/player.js +15 -0
- package/src/plugins/primevue/theme/webitel-theme.js +6 -1
- package/types/components/wt-image/wt-image.vue.d.ts +12 -2
- package/types/components/wt-vidstack-player/components/layouts/video-layout.vue.d.ts +5 -1
- package/types/components/wt-vidstack-player/components/panels/screen-sharing-control-panel/screen-sharing-control-panel.vue.d.ts +6 -0
- package/types/components/wt-vidstack-player/types/WtVidstackPlayerControlsMode.d.ts +5 -0
- package/types/components/wt-vidstack-player/types/WtVidstackPlayerSession.d.ts +7 -0
- package/types/components/wt-vidstack-player/wt-vidstack-player.vue.d.ts +6 -0
- package/types/plugins/primevue/theme/extend/player/player.d.ts +3 -0
- package/dist/vidstack-54Jpr2Lq-B-3uagaf.js +0 -142
- package/dist/vidstack-BP-l85ST-cd089zs4.js +0 -21
- package/dist/vidstack-BTBUzdbF-BuhaE3ef.js +0 -29
- package/dist/vidstack-Ccp8mxka-Cyoe3N05.js +0 -20
- package/dist/vidstack-Dgd3Tj9x-D_ifpfX9.js +0 -397
- package/dist/vidstack-DscYSLiW-Dk1undJ-.js +0 -33
- package/dist/vidstack-HTyVv8Yq-DRdwbVZd.js +0 -52
- package/dist/vidstack-audio-CFFRqrJ3.js +0 -26
- package/dist/vidstack-dash-BDtu3f4j.js +0 -405
- package/dist/vidstack-google-cast-hKSzmdiF.js +0 -405
- package/dist/vidstack-hls-BLyFYePL.js +0 -328
- package/dist/vidstack-video-BlmYiw-x.js +0 -149
- package/dist/vidstack-vimeo-DhWdWK51.js +0 -434
- package/dist/vidstack-youtube-l9Si5Vl-.js +0 -204
- package/src/plugins/primevue/theme/extend/extend.js +0 -7
- package/src/plugins/primevue/theme/extend/spacings/spacings.js +0 -15
- package/types/plugins/primevue/theme/extend/extend.d.ts +0 -5
- package/types/plugins/primevue/theme/extend/spacings/spacings.d.ts +0 -13
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
var K = Object.defineProperty;
|
|
2
|
+
var B = (r) => {
|
|
3
|
+
throw TypeError(r);
|
|
4
|
+
};
|
|
5
|
+
var N = (r, n, e) => n in r ? K(r, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[n] = e;
|
|
6
|
+
var T = (r, n, e) => N(r, typeof n != "symbol" ? n + "" : n, e), R = (r, n, e) => n.has(r) || B("Cannot " + e);
|
|
7
|
+
var s = (r, n, e) => (R(r, n, "read from private field"), e ? e.call(r) : n.get(r)), p = (r, n, e) => n.has(r) ? B("Cannot add the same private member more than once") : n instanceof WeakSet ? n.add(r) : n.set(r, e), l = (r, n, e, t) => (R(r, n, "write to private field"), t ? t.call(r, e) : n.set(r, e), e), o = (r, n, e) => (R(r, n, "access private method"), e);
|
|
8
|
+
import { y as q, J as z, p as A, e as G, b as H, M as Q, K as C, O as W, t as $, P as X } from "./install-Cvn-xDmg.js";
|
|
9
|
+
import { E as Z } from "./vidstack-DDXt6fpN-D1Nzo26r.js";
|
|
10
|
+
import { resolveYouTubeVideoId as ee } from "./vidstack-Dm1xEU9Q-qSXq3AI-.js";
|
|
11
|
+
const b = {
|
|
12
|
+
Ended: 0,
|
|
13
|
+
Playing: 1,
|
|
14
|
+
Paused: 2,
|
|
15
|
+
Buffering: 3,
|
|
16
|
+
Cued: 5
|
|
17
|
+
};
|
|
18
|
+
var a, k, v, S, P, m, y, i, te, se, D, f, j, Y, F, I, M, x, L, O, V, U;
|
|
19
|
+
class ne extends Z {
|
|
20
|
+
constructor(e, t) {
|
|
21
|
+
super(e);
|
|
22
|
+
p(this, i);
|
|
23
|
+
T(this, "$$PROVIDER_TYPE", "YOUTUBE");
|
|
24
|
+
T(this, "scope", q());
|
|
25
|
+
p(this, a);
|
|
26
|
+
p(this, k, z(""));
|
|
27
|
+
p(this, v, -1);
|
|
28
|
+
p(this, S, null);
|
|
29
|
+
p(this, P, -1);
|
|
30
|
+
p(this, m, !1);
|
|
31
|
+
p(this, y, /* @__PURE__ */ new Map());
|
|
32
|
+
/**
|
|
33
|
+
* Sets the player's interface language. The parameter value is an ISO 639-1 two-letter
|
|
34
|
+
* language code or a fully specified locale. For example, fr and fr-ca are both valid values.
|
|
35
|
+
* Other language input codes, such as IETF language tags (BCP 47) might also be handled properly.
|
|
36
|
+
*
|
|
37
|
+
* The interface language is used for tooltips in the player and also affects the default caption
|
|
38
|
+
* track. Note that YouTube might select a different caption track language for a particular
|
|
39
|
+
* user based on the user's individual language preferences and the availability of caption tracks.
|
|
40
|
+
*
|
|
41
|
+
* @defaultValue 'en'
|
|
42
|
+
*/
|
|
43
|
+
T(this, "language", "en");
|
|
44
|
+
T(this, "color", "red");
|
|
45
|
+
/**
|
|
46
|
+
* Whether cookies should be enabled on the embed. This is turned off by default to be
|
|
47
|
+
* GDPR-compliant.
|
|
48
|
+
*
|
|
49
|
+
* @defaultValue `false`
|
|
50
|
+
*/
|
|
51
|
+
T(this, "cookies", !1);
|
|
52
|
+
l(this, a, t);
|
|
53
|
+
}
|
|
54
|
+
get currentSrc() {
|
|
55
|
+
return s(this, S);
|
|
56
|
+
}
|
|
57
|
+
get type() {
|
|
58
|
+
return "youtube";
|
|
59
|
+
}
|
|
60
|
+
get videoId() {
|
|
61
|
+
return s(this, k).call(this);
|
|
62
|
+
}
|
|
63
|
+
preconnect() {
|
|
64
|
+
A(this.getOrigin());
|
|
65
|
+
}
|
|
66
|
+
setup() {
|
|
67
|
+
super.setup(), G(o(this, i, D).bind(this)), s(this, a).notify("provider-setup", this);
|
|
68
|
+
}
|
|
69
|
+
destroy() {
|
|
70
|
+
o(this, i, O).call(this);
|
|
71
|
+
const e = "provider destroyed";
|
|
72
|
+
for (const t of s(this, y).values())
|
|
73
|
+
for (const { reject: d } of t) d(e);
|
|
74
|
+
s(this, y).clear();
|
|
75
|
+
}
|
|
76
|
+
async play() {
|
|
77
|
+
return o(this, i, f).call(this, "playVideo");
|
|
78
|
+
}
|
|
79
|
+
async pause() {
|
|
80
|
+
return o(this, i, f).call(this, "pauseVideo");
|
|
81
|
+
}
|
|
82
|
+
setMuted(e) {
|
|
83
|
+
e ? o(this, i, f).call(this, "mute") : o(this, i, f).call(this, "unMute");
|
|
84
|
+
}
|
|
85
|
+
setCurrentTime(e) {
|
|
86
|
+
o(this, i, f).call(this, "seekTo", e), s(this, a).notify("seeking", e);
|
|
87
|
+
}
|
|
88
|
+
setVolume(e) {
|
|
89
|
+
o(this, i, f).call(this, "setVolume", e * 100);
|
|
90
|
+
}
|
|
91
|
+
setPlaybackRate(e) {
|
|
92
|
+
o(this, i, f).call(this, "setPlaybackRate", e);
|
|
93
|
+
}
|
|
94
|
+
async loadSource(e) {
|
|
95
|
+
if (!H(e.src)) {
|
|
96
|
+
l(this, S, null), s(this, k).set("");
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const t = ee(e.src);
|
|
100
|
+
s(this, k).set(t ?? ""), l(this, S, e);
|
|
101
|
+
}
|
|
102
|
+
getOrigin() {
|
|
103
|
+
return this.cookies ? "https://www.youtube.com" : "https://www.youtube-nocookie.com";
|
|
104
|
+
}
|
|
105
|
+
buildParams() {
|
|
106
|
+
const { keyDisabled: e } = s(this, a).$props, { muted: t, playsInline: d, nativeControls: u } = s(this, a).$state, h = u();
|
|
107
|
+
return {
|
|
108
|
+
rel: 0,
|
|
109
|
+
autoplay: 0,
|
|
110
|
+
cc_lang_pref: this.language,
|
|
111
|
+
cc_load_policy: h ? 1 : void 0,
|
|
112
|
+
color: this.color,
|
|
113
|
+
controls: h ? 1 : 0,
|
|
114
|
+
disablekb: !h || e() ? 1 : 0,
|
|
115
|
+
enablejsapi: 1,
|
|
116
|
+
fs: 1,
|
|
117
|
+
hl: this.language,
|
|
118
|
+
iv_load_policy: h ? 1 : 3,
|
|
119
|
+
mute: t() ? 1 : 0,
|
|
120
|
+
playsinline: d() ? 1 : 0
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
onLoad() {
|
|
124
|
+
window.setTimeout(() => this.postMessage({ event: "listening" }), 100);
|
|
125
|
+
}
|
|
126
|
+
onMessage({ info: e }, t) {
|
|
127
|
+
var c;
|
|
128
|
+
if (!e) return;
|
|
129
|
+
const { title: d, intrinsicDuration: u, playbackRate: h } = s(this, a).$state;
|
|
130
|
+
if (W(e.videoData) && e.videoData.title !== d() && s(this, a).notify("title-change", e.videoData.title, t), $(e.duration) && e.duration !== u()) {
|
|
131
|
+
if ($(e.videoLoadedFraction)) {
|
|
132
|
+
const g = ((c = e.progressState) == null ? void 0 : c.loaded) ?? e.videoLoadedFraction * e.duration, w = new C(0, e.duration);
|
|
133
|
+
o(this, i, I).call(this, g, w, t);
|
|
134
|
+
}
|
|
135
|
+
s(this, a).notify("duration-change", e.duration, t);
|
|
136
|
+
}
|
|
137
|
+
if ($(e.playbackRate) && e.playbackRate !== h() && s(this, a).notify("rate-change", e.playbackRate, t), e.progressState) {
|
|
138
|
+
const { current: g, seekableStart: w, seekableEnd: E, loaded: J, duration: _ } = e.progressState;
|
|
139
|
+
o(this, i, F).call(this, g, t), o(this, i, I).call(this, J, new C(w, E), t), _ !== u() && s(this, a).notify("duration-change", _, t);
|
|
140
|
+
}
|
|
141
|
+
if ($(e.volume) && X(e.muted) && !s(this, m)) {
|
|
142
|
+
const g = {
|
|
143
|
+
muted: e.muted,
|
|
144
|
+
volume: e.volume / 100
|
|
145
|
+
};
|
|
146
|
+
s(this, a).notify("volume-change", g, t);
|
|
147
|
+
}
|
|
148
|
+
$(e.playerState) && e.playerState !== s(this, v) && o(this, i, L).call(this, e.playerState, t);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
a = new WeakMap(), k = new WeakMap(), v = new WeakMap(), S = new WeakMap(), P = new WeakMap(), m = new WeakMap(), y = new WeakMap(), i = new WeakSet(), te = function(e) {
|
|
152
|
+
var t;
|
|
153
|
+
(t = o(this, i, V).call(this, "playVideo")) == null || t.reject(e);
|
|
154
|
+
}, se = function(e) {
|
|
155
|
+
var t;
|
|
156
|
+
(t = o(this, i, V).call(this, "pauseVideo")) == null || t.reject(e);
|
|
157
|
+
}, D = function() {
|
|
158
|
+
o(this, i, O).call(this);
|
|
159
|
+
const e = s(this, k).call(this);
|
|
160
|
+
if (!e) {
|
|
161
|
+
this.src.set("");
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
this.src.set(`${this.getOrigin()}/embed/${e}`), s(this, a).notify("load-start");
|
|
165
|
+
}, f = function(e, t) {
|
|
166
|
+
let d = Q(), u = s(this, y).get(e);
|
|
167
|
+
return u || s(this, y).set(e, u = []), u.push(d), this.postMessage({
|
|
168
|
+
event: "command",
|
|
169
|
+
func: e,
|
|
170
|
+
args: t ? [t] : void 0
|
|
171
|
+
}), d.promise;
|
|
172
|
+
}, j = function(e) {
|
|
173
|
+
s(this, a).notify("loaded-metadata"), s(this, a).notify("loaded-data"), s(this, a).delegate.ready(void 0, e);
|
|
174
|
+
}, Y = function(e) {
|
|
175
|
+
var t;
|
|
176
|
+
(t = o(this, i, V).call(this, "pauseVideo")) == null || t.resolve(), s(this, a).notify("pause", void 0, e);
|
|
177
|
+
}, F = function(e, t) {
|
|
178
|
+
const { duration: d, realCurrentTime: u } = s(this, a).$state, h = s(this, v) === b.Ended, c = h ? d() : e;
|
|
179
|
+
s(this, a).notify("time-change", c, t), !h && Math.abs(c - u()) > 1 && s(this, a).notify("seeking", c, t);
|
|
180
|
+
}, I = function(e, t, d) {
|
|
181
|
+
const u = {
|
|
182
|
+
buffered: new C(0, e),
|
|
183
|
+
seekable: t
|
|
184
|
+
};
|
|
185
|
+
s(this, a).notify("progress", u, d);
|
|
186
|
+
const { seeking: h, realCurrentTime: c } = s(this, a).$state;
|
|
187
|
+
h() && e > c() && o(this, i, M).call(this, d);
|
|
188
|
+
}, M = function(e) {
|
|
189
|
+
const { paused: t, realCurrentTime: d } = s(this, a).$state;
|
|
190
|
+
window.clearTimeout(s(this, P)), l(this, P, window.setTimeout(
|
|
191
|
+
() => {
|
|
192
|
+
s(this, a).notify("seeked", d(), e), l(this, P, -1);
|
|
193
|
+
},
|
|
194
|
+
t() ? 100 : 0
|
|
195
|
+
));
|
|
196
|
+
}, x = function(e) {
|
|
197
|
+
const { seeking: t } = s(this, a).$state;
|
|
198
|
+
t() && o(this, i, M).call(this, e), s(this, a).notify("pause", void 0, e), s(this, a).notify("end", void 0, e);
|
|
199
|
+
}, L = function(e, t) {
|
|
200
|
+
var E;
|
|
201
|
+
const { paused: d, seeking: u } = s(this, a).$state, h = e === b.Playing, c = e === b.Buffering, g = o(this, i, U).call(this, "playVideo"), w = d() && (c || h);
|
|
202
|
+
if (c && s(this, a).notify("waiting", void 0, t), u() && h && o(this, i, M).call(this, t), s(this, m) && h) {
|
|
203
|
+
this.pause(), l(this, m, !1), this.setMuted(s(this, a).$state.muted());
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
if (!g && w) {
|
|
207
|
+
l(this, m, !0), this.setMuted(!0);
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
switch (w && ((E = o(this, i, V).call(this, "playVideo")) == null || E.resolve(), s(this, a).notify("play", void 0, t)), e) {
|
|
211
|
+
case b.Cued:
|
|
212
|
+
o(this, i, j).call(this, t);
|
|
213
|
+
break;
|
|
214
|
+
case b.Playing:
|
|
215
|
+
s(this, a).notify("playing", void 0, t);
|
|
216
|
+
break;
|
|
217
|
+
case b.Paused:
|
|
218
|
+
o(this, i, Y).call(this, t);
|
|
219
|
+
break;
|
|
220
|
+
case b.Ended:
|
|
221
|
+
o(this, i, x).call(this, t);
|
|
222
|
+
break;
|
|
223
|
+
}
|
|
224
|
+
l(this, v, e);
|
|
225
|
+
}, O = function() {
|
|
226
|
+
l(this, v, -1), l(this, P, -1), l(this, m, !1);
|
|
227
|
+
}, V = function(e) {
|
|
228
|
+
var t;
|
|
229
|
+
return (t = s(this, y).get(e)) == null ? void 0 : t.shift();
|
|
230
|
+
}, U = function(e) {
|
|
231
|
+
var t;
|
|
232
|
+
return !!((t = s(this, y).get(e)) != null && t.length);
|
|
233
|
+
};
|
|
234
|
+
export {
|
|
235
|
+
ne as YouTubeProvider
|
|
236
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webitel/ui-sdk",
|
|
3
|
-
"version": "25.10.
|
|
3
|
+
"version": "25.10.54",
|
|
4
4
|
"private": false,
|
|
5
5
|
"scripts": {
|
|
6
6
|
"make-all": "npm version patch --git-tag-version false && npm run build && (npm run build:types || true) && (npm run lint:fix || true) && npm run publish-lib",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"@vuepic/vue-datepicker": "^4.5.1",
|
|
57
57
|
"@vueuse/components": "^13.0.0",
|
|
58
58
|
"@webitel/api-services": "^0.0.56",
|
|
59
|
-
"@webitel/styleguide": "^24.12.
|
|
59
|
+
"@webitel/styleguide": "^24.12.79",
|
|
60
60
|
"autosize": "^6.0.1",
|
|
61
61
|
"axios": "^1.8.3",
|
|
62
62
|
"clipboard-copy": "^4.0.1",
|
|
@@ -73,12 +73,12 @@
|
|
|
73
73
|
"lodash-es": "^4.17.21",
|
|
74
74
|
"mitt": "^3.0.1",
|
|
75
75
|
"path-browserify": "^1.0.1",
|
|
76
|
+
"vidstack": "^1.12.13",
|
|
76
77
|
"plyr": "^3.7.8",
|
|
77
78
|
"primevue": "^4.3.4",
|
|
78
79
|
"qs-esm": "^7.0.2",
|
|
79
80
|
"sortablejs": "^1.15.3",
|
|
80
81
|
"tailwindcss": "^4.1.7",
|
|
81
|
-
"vidstack": "^1.11.21",
|
|
82
82
|
"vue-i18n": "^11.1.2",
|
|
83
83
|
"vue-multiselect": "^3.1.0",
|
|
84
84
|
"vue-observe-visibility": "^2.0.0-alpha.1",
|
|
@@ -168,6 +168,8 @@ import radio from './radio.svg';
|
|
|
168
168
|
import radioChecked from './radio--checked.svg';
|
|
169
169
|
import rec from './rec.svg';
|
|
170
170
|
import recOff from './rec-off.svg';
|
|
171
|
+
import recordStart from './record-start.svg';
|
|
172
|
+
import recordStop from './record-stop.svg';
|
|
171
173
|
import redo from './redo.svg';
|
|
172
174
|
import refresh from './refresh.svg';
|
|
173
175
|
import reporter from './reporter.svg';
|
|
@@ -176,10 +178,14 @@ import roundedInfo from './rounded-info.svg';
|
|
|
176
178
|
import save from './save.svg';
|
|
177
179
|
import saveAs from './save-as.svg';
|
|
178
180
|
import scorecard from './scorecard.svg';
|
|
181
|
+
import screenshot from './screenshot.svg';
|
|
182
|
+
import screenshotDone from './screenshot-done.svg';
|
|
183
|
+
import screenshotFalse from './screenshot-false.svg';
|
|
179
184
|
import search from './search.svg';
|
|
180
185
|
import selectCustomValueEnter from './select-custom-value-enter.svg';
|
|
181
186
|
import sendArrow from './send-arrow.svg';
|
|
182
187
|
import settings from './settings.svg';
|
|
188
|
+
import sharingEnd from './sharing-end.svg';
|
|
183
189
|
import socialMedia from './social-media.svg';
|
|
184
190
|
import sortArrowDown from './sort-arrow-down.svg';
|
|
185
191
|
import sortArrowUp from './sort-arrow-up.svg';
|
|
@@ -439,5 +445,12 @@ export default objCamelToKebab({
|
|
|
439
445
|
quickReplies,
|
|
440
446
|
checkboxTick,
|
|
441
447
|
log,
|
|
442
|
-
downloadPdf
|
|
448
|
+
downloadPdf,
|
|
449
|
+
|
|
450
|
+
recordStart,
|
|
451
|
+
recordStop,
|
|
452
|
+
screenshot,
|
|
453
|
+
screenshotDone,
|
|
454
|
+
screenshotFalse,
|
|
455
|
+
sharingEnd,
|
|
443
456
|
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M3 16C3.55228 16 4 16.4477 4 17V19C4 19.5523 4.44772 20 5 20H7C7.55228 20 8 20.4477 8 21C8 21.5523 7.55228 22 7 22H5C3.34315 22 2 20.6569 2 19V17C2 16.4477 2.44772 16 3 16Z" />
|
|
3
|
+
<path d="M21 16C21.5523 16 22 16.4477 22 17V19C22 20.6569 20.6569 22 19 22H17C16.4477 22 16 21.5523 16 21C16 20.4477 16.4477 20 17 20H19C19.5523 20 20 19.5523 20 19V17C20 16.4477 20.4477 16 21 16Z" />
|
|
4
|
+
<path d="M7 2C7.55228 2 8 2.44772 8 3C8 3.55228 7.55228 4 7 4H5C4.44772 4 4 4.44772 4 5V7C4 7.55228 3.55228 8 3 8C2.44772 8 2 7.55228 2 7V5C2 3.34315 3.34315 2 5 2H7Z" />
|
|
5
|
+
<path d="M19 2C20.6569 2 22 3.34315 22 5V7C22 7.55228 21.5523 8 21 8C20.4477 8 20 7.55228 20 7V5C20 4.44772 19.5523 4 19 4H17C16.4477 4 16 3.55228 16 3C16 2.44772 16.4477 2 17 2H19Z" />
|
|
6
|
+
<path d="M15 12C15 13.6569 13.6569 15 12 15C10.3431 15 9 13.6569 9 12C9 10.3431 10.3431 9 12 9C13.6569 9 15 10.3431 15 12Z" />
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M3 16C3.55228 16 4 16.4477 4 17V19C4 19.5523 4.44772 20 5 20H7C7.55228 20 8 20.4477 8 21C8 21.5523 7.55228 22 7 22H5C3.34315 22 2 20.6569 2 19V17C2 16.4477 2.44772 16 3 16Z" fill="#454E68"/>
|
|
3
|
+
<path d="M21 16C21.5523 16 22 16.4477 22 17V19C22 20.6569 20.6569 22 19 22H17C16.4477 22 16 21.5523 16 21C16 20.4477 16.4477 20 17 20H19C19.5523 20 20 19.5523 20 19V17C20 16.4477 20.4477 16 21 16Z" fill="#454E68"/>
|
|
4
|
+
<path d="M7 2C7.55228 2 8 2.44772 8 3C8 3.55228 7.55228 4 7 4H5C4.44772 4 4 4.44772 4 5V7C4 7.55228 3.55228 8 3 8C2.44772 8 2 7.55228 2 7V5C2 3.34315 3.34315 2 5 2H7Z" fill="#454E68"/>
|
|
5
|
+
<path d="M19 2C20.6569 2 22 3.34315 22 5V7C22 7.55228 21.5523 8 21 8C20.4477 8 20 7.55228 20 7V5C20 4.44772 19.5523 4 19 4H17C16.4477 4 16 3.55228 16 3C16 2.44772 16.4477 2 17 2H19Z" fill="#454E68"/>
|
|
6
|
+
<path d="M15 14C15 14.5523 14.5523 15 14 15H10C9.44772 15 9 14.5523 9 14L9 10C9 9.44772 9.44772 9 10 9H14C14.5523 9 15 9.44772 15 10V14Z" fill="#E64F4D"/>
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M3 16C3.55228 16 4 16.4477 4 17V19C4 19.5523 4.44772 20 5 20H7C7.55228 20 8 20.4477 8 21C8 21.5523 7.55228 22 7 22H5C3.34315 22 2 20.6569 2 19V17C2 16.4477 2.44772 16 3 16Z" fill="#454E68"/>
|
|
3
|
+
<path d="M21 16C21.5523 16 22 16.4477 22 17V19C22 20.6569 20.6569 22 19 22H17C16.4477 22 16 21.5523 16 21C16 20.4477 16.4477 20 17 20H19C19.5523 20 20 19.5523 20 19V17C20 16.4477 20.4477 16 21 16Z" fill="#454E68"/>
|
|
4
|
+
<path d="M7 2C7.55228 2 8 2.44772 8 3C8 3.55228 7.55228 4 7 4H5C4.44772 4 4 4.44772 4 5V7C4 7.55228 3.55228 8 3 8C2.44772 8 2 7.55228 2 7V5C2 3.34315 3.34315 2 5 2H7Z" fill="#454E68"/>
|
|
5
|
+
<path d="M19 2C20.6569 2 22 3.34315 22 5V7C22 7.55228 21.5523 8 21 8C20.4477 8 20 7.55228 20 7V5C20 4.44772 19.5523 4 19 4H17C16.4477 4 16 3.55228 16 3C16 2.44772 16.4477 2 17 2H19Z" fill="#454E68"/>
|
|
6
|
+
<path d="M13.7001 9.40041C14.0314 8.95864 14.6577 8.86899 15.0995 9.20022C15.5413 9.53155 15.6309 10.1578 15.2997 10.5996L13.0585 13.5889C12.2839 14.6213 10.7481 14.6606 9.92178 13.669L8.23135 11.6406L8.16982 11.5586C7.88636 11.1385 7.9616 10.5629 8.35928 10.2315C8.75704 9.9 9.33696 9.92959 9.69912 10.2842L9.76845 10.3594L11.4589 12.3887L13.7001 9.40041Z" fill="#24A850"/>
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M3 16C3.55228 16 4 16.4477 4 17V19C4 19.5523 4.44772 20 5 20H7C7.55228 20 8 20.4477 8 21C8 21.5523 7.55228 22 7 22H5C3.34315 22 2 20.6569 2 19V17C2 16.4477 2.44772 16 3 16Z" fill="#454E68"/>
|
|
3
|
+
<path d="M21 16C21.5523 16 22 16.4477 22 17V19C22 20.6569 20.6569 22 19 22H17C16.4477 22 16 21.5523 16 21C16 20.4477 16.4477 20 17 20H19C19.5523 20 20 19.5523 20 19V17C20 16.4477 20.4477 16 21 16Z" fill="#454E68"/>
|
|
4
|
+
<path d="M7 2C7.55228 2 8 2.44772 8 3C8 3.55228 7.55228 4 7 4H5C4.44772 4 4 4.44772 4 5V7C4 7.55228 3.55228 8 3 8C2.44772 8 2 7.55228 2 7V5C2 3.34315 3.34315 2 5 2H7Z" fill="#454E68"/>
|
|
5
|
+
<path d="M19 2C20.6569 2 22 3.34315 22 5V7C22 7.55228 21.5523 8 21 8C20.4477 8 20 7.55228 20 7V5C20 4.44772 19.5523 4 19 4H17C16.4477 4 16 3.55228 16 3C16 2.44772 16.4477 2 17 2H19Z" fill="#454E68"/>
|
|
6
|
+
<path d="M13.2929 9.29305C13.6834 8.90257 14.3164 8.90254 14.707 9.29305C15.0974 9.68357 15.0974 10.3166 14.707 10.7071L13.414 12.0001L14.707 13.2931C15.0973 13.6836 15.0974 14.3166 14.707 14.7071C14.3165 15.0976 13.6834 15.0975 13.2929 14.7071L11.9999 13.4141L10.707 14.7071C10.3165 15.0976 9.68343 15.0975 9.29289 14.7071C8.90237 14.3166 8.90237 13.6836 9.29289 13.2931L10.5859 12.0001L9.29289 10.7071C8.90237 10.3166 8.90237 9.68358 9.29289 9.29305C9.68342 8.90257 10.3164 8.90254 10.707 9.29305L11.9999 10.586L13.2929 9.29305Z" fill="#E54F4C"/>
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M3 16C3.55228 16 4 16.4477 4 17V19C4 19.5523 4.44772 20 5 20H7C7.55228 20 8 20.4477 8 21C8 21.5523 7.55228 22 7 22H5C3.34315 22 2 20.6569 2 19V17C2 16.4477 2.44772 16 3 16Z" />
|
|
3
|
+
<path d="M21 16C21.5523 16 22 16.4477 22 17V19C22 20.6569 20.6569 22 19 22H17C16.4477 22 16 21.5523 16 21C16 20.4477 16.4477 20 17 20H19C19.5523 20 20 19.5523 20 19V17C20 16.4477 20.4477 16 21 16Z" />
|
|
4
|
+
<path d="M12 10C13.1046 10 14 10.8954 14 12C14 13.1046 13.1046 14 12 14C10.8954 14 10 13.1046 10 12C10 10.8954 10.8954 10 12 10Z" />
|
|
5
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.0801 5.00684C15.0655 5.07629 15.9484 5.66049 16.3945 6.55273L16.5527 6.86914C16.5927 6.94904 16.6744 6.9999 16.7637 7C17.9986 7 19 8.00138 19 9.23633V15C19 16.6569 17.6569 18 16 18H8C6.34315 18 5 16.6569 5 15V9.23633C5 8.00138 6.00138 7 7.23633 7C7.32564 6.9999 7.40732 6.94904 7.44727 6.86914L7.60547 6.55273C8.08129 5.60108 9.05419 5 10.1182 5H13.8818L14.0801 5.00684ZM10.1182 7C9.81173 7 9.53157 7.17318 9.39453 7.44727L9.23633 7.76367C8.85759 8.52114 8.08319 8.9999 7.23633 9C7.10595 9 7 9.10595 7 9.23633V15C7 15.5523 7.44772 16 8 16H16C16.5523 16 17 15.5523 17 15V9.23633C17 9.10595 16.894 9 16.7637 9C15.9168 8.9999 15.1424 8.52114 14.7637 7.76367L14.6055 7.44727C14.4855 7.20735 14.256 7.04461 13.9951 7.00781L13.8818 7H10.1182Z" />
|
|
6
|
+
<path d="M7 2C7.55228 2 8 2.44772 8 3C8 3.55228 7.55228 4 7 4H5C4.44772 4 4 4.44772 4 5V7C4 7.55228 3.55228 8 3 8C2.44772 8 2 7.55228 2 7V5C2 3.34315 3.34315 2 5 2H7Z" />
|
|
7
|
+
<path d="M19 2C20.6569 2 22 3.34315 22 5V7C22 7.55228 21.5523 8 21 8C20.4477 8 20 7.55228 20 7V5C20 4.44772 19.5523 4 19 4H17C16.4477 4 16 3.55228 16 3C16 2.44772 16.4477 2 17 2H19Z" />
|
|
8
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M15 19.5C15.5523 19.5 16 19.9477 16 20.5C16 21.0523 15.5523 21.5 15 21.5H9C8.44772 21.5 8 21.0523 8 20.5C8 19.9477 8.44772 19.5 9 19.5H15Z" />
|
|
3
|
+
<path d="M13.5352 7.79297C13.9257 7.40257 14.5587 7.40257 14.9492 7.79297C15.3397 8.18346 15.3397 8.8165 14.9492 9.20703L13.5352 10.6211L14.9492 12.0352C15.3397 12.4256 15.3396 13.0587 14.9492 13.4492C14.5587 13.8397 13.9257 13.8397 13.5352 13.4492L12.1211 12.0352L10.707 13.4492C10.3165 13.8397 9.68349 13.8397 9.29297 13.4492C8.90254 13.0587 8.90248 12.4256 9.29297 12.0352L10.707 10.6211L9.29297 9.20703C8.90246 8.81651 8.90245 8.18349 9.29297 7.79297C9.6835 7.40255 10.3165 7.40249 10.707 7.79297L12.1211 9.20703L13.5352 7.79297Z" />
|
|
4
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M19 2.5C20.6569 2.5 22 3.84315 22 5.5V15.5C22 17.1569 20.6569 18.5 19 18.5H5C3.34315 18.5 2 17.1569 2 15.5V5.5C2 3.84315 3.34315 2.5 5 2.5H19ZM5 4.5C4.44772 4.5 4 4.94772 4 5.5V15.5C4 16.0523 4.44772 16.5 5 16.5H19C19.5523 16.5 20 16.0523 20 15.5V5.5C20 4.94772 19.5523 4.5 19 4.5H5Z" />
|
|
5
|
+
</svg>
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
maxHeight,
|
|
11
11
|
cursor: overlayIcon ? 'pointer' : 'auto'
|
|
12
12
|
}"
|
|
13
|
+
@click="emit('click', $event)"
|
|
13
14
|
>
|
|
14
15
|
<!-- @slot Replaces `<img>` tag
|
|
15
16
|
@scope `{ alt, src }`
|
|
@@ -32,7 +33,7 @@
|
|
|
32
33
|
</template>
|
|
33
34
|
|
|
34
35
|
<script setup lang="ts">
|
|
35
|
-
import { computed, defineProps } from 'vue';
|
|
36
|
+
import { computed, defineEmits, defineProps } from 'vue';
|
|
36
37
|
|
|
37
38
|
import { IconColor } from '../../enums';
|
|
38
39
|
|
|
@@ -62,6 +63,8 @@ const props = defineProps<{
|
|
|
62
63
|
overlayIconPrefix?: string;
|
|
63
64
|
}>();
|
|
64
65
|
|
|
66
|
+
const emit = defineEmits(['click']);
|
|
67
|
+
|
|
65
68
|
const width = computed(() => {
|
|
66
69
|
const width = props.size ? sizeToUnits[props.size] : props.width;
|
|
67
70
|
|
|
@@ -12,7 +12,13 @@
|
|
|
12
12
|
|
|
13
13
|
<wt-loader size="sm" color="on-dark"/>
|
|
14
14
|
|
|
15
|
-
<
|
|
15
|
+
<template v-if="props.mode === 'media'">
|
|
16
|
+
<media-control-panel />
|
|
17
|
+
</template>
|
|
18
|
+
|
|
19
|
+
<template v-if="props.mode === 'stream'">
|
|
20
|
+
<screen-sharing-control-panel :session="props.session" />
|
|
21
|
+
</template>
|
|
16
22
|
</media-controls>
|
|
17
23
|
</template>
|
|
18
24
|
|
|
@@ -20,7 +26,10 @@
|
|
|
20
26
|
import {defineEmits, inject} from "vue";
|
|
21
27
|
|
|
22
28
|
import WtLoader from "../../../wt-loader/wt-loader.vue";
|
|
29
|
+
import {WtVidstakPlayerControlsMode} from "../../types/WtVidstackPlayerControlsMode";
|
|
30
|
+
import {WtVidstackPlayerSession} from "../../types/WtVidstackPlayerSession";
|
|
23
31
|
import MediaControlPanel from "../panels/media-control-panel/media-control-panel.vue";
|
|
32
|
+
import ScreenSharingControlPanel from "../panels/screen-sharing-control-panel/screen-sharing-control-panel.vue";
|
|
24
33
|
import VideoDisplayPanel from "../panels/video-display-panel/video-display-panel.vue";
|
|
25
34
|
|
|
26
35
|
const { size } = inject('size');
|
|
@@ -29,12 +38,13 @@ const props = defineProps<{
|
|
|
29
38
|
title?: string;
|
|
30
39
|
username?: string;
|
|
31
40
|
closable?: boolean;
|
|
41
|
+
mode: WtVidstakPlayerControlsMode;
|
|
42
|
+
session: WtVidstackPlayerSession
|
|
32
43
|
}>();
|
|
33
44
|
|
|
34
45
|
const emit = defineEmits<{
|
|
35
46
|
'close-player': [],
|
|
36
47
|
}>();
|
|
37
|
-
|
|
38
48
|
</script>
|
|
39
49
|
|
|
40
50
|
<style scoped lang="scss">
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<media-controls-group class="screen-sharing-control-panel" :class="`screen-sharing-control-panel--${size}`">
|
|
3
|
+
<div
|
|
4
|
+
class="screen-sharing-control-panel__actions"
|
|
5
|
+
>
|
|
6
|
+
<wt-button
|
|
7
|
+
rounded
|
|
8
|
+
contains-icon
|
|
9
|
+
variant="outlined"
|
|
10
|
+
color="secondary"
|
|
11
|
+
:size="size"
|
|
12
|
+
:icon="screenShotIcon"
|
|
13
|
+
@click="makeScreenshot"
|
|
14
|
+
/>
|
|
15
|
+
|
|
16
|
+
<wt-button
|
|
17
|
+
rounded
|
|
18
|
+
contains-icon
|
|
19
|
+
variant="outlined"
|
|
20
|
+
color="secondary"
|
|
21
|
+
:size="size"
|
|
22
|
+
:icon="recordIcon"
|
|
23
|
+
@click="toggleRecordAction"
|
|
24
|
+
/>
|
|
25
|
+
|
|
26
|
+
<wt-button
|
|
27
|
+
icon="sharing-end"
|
|
28
|
+
class="screen-sharing-control-panel__sharing-end"
|
|
29
|
+
color="error"
|
|
30
|
+
variant="outlined"
|
|
31
|
+
:size="size"
|
|
32
|
+
rounded
|
|
33
|
+
contains-icon
|
|
34
|
+
@click="closeSession"
|
|
35
|
+
/>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
<div
|
|
39
|
+
v-if="isRecording" class="screen-sharing-control-panel__indicator"
|
|
40
|
+
>
|
|
41
|
+
<wt-indicator
|
|
42
|
+
color="error"
|
|
43
|
+
size="md"
|
|
44
|
+
/>
|
|
45
|
+
|
|
46
|
+
<span class="screen-sharing-control-panel__time">{{ convertDuration(secondsElapsed) }}</span>
|
|
47
|
+
</div>
|
|
48
|
+
</media-controls-group>
|
|
49
|
+
</template>
|
|
50
|
+
|
|
51
|
+
<script setup lang="ts">
|
|
52
|
+
import convertDuration from '@webitel/ui-sdk/src/scripts/convertDuration';
|
|
53
|
+
import {computed, inject, onUnmounted, ref, watch} from 'vue';
|
|
54
|
+
|
|
55
|
+
import {WtVidstackPlayerSession} from "../../../types/WtVidstackPlayerSession";
|
|
56
|
+
|
|
57
|
+
type ScreenshotStatus = 'done' | 'error'
|
|
58
|
+
|
|
59
|
+
interface Props {
|
|
60
|
+
session: WtVidstackPlayerSession
|
|
61
|
+
}
|
|
62
|
+
const props = defineProps<Props>();
|
|
63
|
+
|
|
64
|
+
const {size} = inject('size');
|
|
65
|
+
const screenshotStatus = ref<ScreenshotStatus | null>(null)
|
|
66
|
+
|
|
67
|
+
const recordIcon = computed(() => (props.session.recordings ? 'record-stop' : 'record-start'));
|
|
68
|
+
const getScreenshotIcon = (status?: ScreenshotStatus) => {
|
|
69
|
+
switch (status) {
|
|
70
|
+
case 'done':
|
|
71
|
+
return 'screenshot-done';
|
|
72
|
+
case 'error':
|
|
73
|
+
return 'screenshot-false';
|
|
74
|
+
default:
|
|
75
|
+
return 'screenshot';
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const screenShotIcon = computed(() => getScreenshotIcon(screenshotStatus.value));
|
|
80
|
+
const isRecording = computed(() => props.session.recordings);
|
|
81
|
+
|
|
82
|
+
const secondsElapsed = ref(0);
|
|
83
|
+
const timerId = ref<number | null>(null);
|
|
84
|
+
|
|
85
|
+
function startTimer() {
|
|
86
|
+
secondsElapsed.value = 0;
|
|
87
|
+
stopTimer();
|
|
88
|
+
timerId.value = window.setInterval(() => {
|
|
89
|
+
secondsElapsed.value++;
|
|
90
|
+
}, 1000);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function stopTimer() {
|
|
94
|
+
if (timerId.value !== null) {
|
|
95
|
+
clearInterval(timerId.value);
|
|
96
|
+
timerId.value = null;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const toggleRecordAction = () => {
|
|
101
|
+
if (isRecording.value) {
|
|
102
|
+
props.session.stopRecord();
|
|
103
|
+
} else {
|
|
104
|
+
props.session.startRecord();
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
const makeScreenshot = () => {
|
|
109
|
+
try {
|
|
110
|
+
props.session.screenshot()
|
|
111
|
+
changeScreenshotStatus('done')
|
|
112
|
+
} catch {
|
|
113
|
+
changeScreenshotStatus('error')
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
const changeScreenshotStatus = (status: ScreenshotStatus) => {
|
|
118
|
+
screenshotStatus.value = status;
|
|
119
|
+
setTimeout(() => {
|
|
120
|
+
screenshotStatus.value = null;
|
|
121
|
+
}, 2000);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const closeSession = () => {
|
|
125
|
+
props.session.close()
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
onUnmounted(() => {
|
|
129
|
+
stopTimer();
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
watch(isRecording, (newVal) => {
|
|
133
|
+
if (newVal) {
|
|
134
|
+
startTimer();
|
|
135
|
+
} else {
|
|
136
|
+
stopTimer();
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
</script>
|
|
140
|
+
|
|
141
|
+
<style scoped lang="scss">
|
|
142
|
+
@use '@webitel/styleguide/typography' as *;
|
|
143
|
+
|
|
144
|
+
.screen-sharing-control-panel {
|
|
145
|
+
position: relative;
|
|
146
|
+
display: flex;
|
|
147
|
+
justify-content: center;
|
|
148
|
+
|
|
149
|
+
&--sm {
|
|
150
|
+
padding: var(--p-player-control-bar-position-padding-sm);
|
|
151
|
+
|
|
152
|
+
.screen-sharing-control-panel__actions {
|
|
153
|
+
width: 100%;
|
|
154
|
+
border-top-left-radius: 0 !important;
|
|
155
|
+
border-top-right-radius: 0 !important;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.screen-sharing-control-panel__indicator {
|
|
159
|
+
right: var(--p-player-counter-position-padding-sm);
|
|
160
|
+
bottom: calc(100% + var(--p-player-counter-position-padding-sm));
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
&--md {
|
|
165
|
+
padding: var(--p-player-control-bar-position-padding-md);
|
|
166
|
+
|
|
167
|
+
.screen-sharing-control-panel__indicator {
|
|
168
|
+
right: var(--p-player-counter-position-padding-md);
|
|
169
|
+
bottom: var(--p-player-counter-position-padding-md);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
&--lg {
|
|
174
|
+
padding: var(--p-player-control-bar-position-padding-lg);
|
|
175
|
+
|
|
176
|
+
.screen-sharing-control-panel__indicator {
|
|
177
|
+
right: var(--p-player-counter-position-padding-lg);
|
|
178
|
+
bottom: var(--p-player-counter-position-padding-lg);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
&__actions {
|
|
183
|
+
display: flex;
|
|
184
|
+
align-items: center;
|
|
185
|
+
justify-content: center;
|
|
186
|
+
background: var(--p-player-control-bar-background);
|
|
187
|
+
box-shadow: var(--elevation-10);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
&__indicator {
|
|
191
|
+
background: var(--content-wrapper-color);
|
|
192
|
+
display: flex;
|
|
193
|
+
align-items: center;
|
|
194
|
+
justify-content: flex-start;
|
|
195
|
+
gap: var(--p-player-counter-gap);
|
|
196
|
+
padding: var(--p-player-counter-padding);
|
|
197
|
+
border-radius: var(--p-player-counter-border-radius);
|
|
198
|
+
box-shadow: var(--elevation-10);
|
|
199
|
+
position: absolute;
|
|
200
|
+
|
|
201
|
+
// Agreed with @Evgeniy Trahtenberg
|
|
202
|
+
width: 100px;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
&__time {
|
|
206
|
+
@extend %typo-body-1;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
</style>
|
|
210
|
+
|
|
211
|
+
|