@snapcall/stream-ui 1.6.0 → 1.8.0

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/stream-ui.js CHANGED
@@ -13,6 +13,7 @@ var $jQDcL$protooclient = require("protoo-client");
13
13
  var $jQDcL$sentrybrowser = require("@sentry/browser");
14
14
  var $jQDcL$mediasoupclientlibProducer = require("mediasoup-client/lib/Producer");
15
15
  var $jQDcL$mediasoupclient = require("mediasoup-client");
16
+ var $jQDcL$mediapipeselfie_segmentation = require("@mediapipe/selfie_segmentation");
16
17
  var $jQDcL$qrcode = require("qrcode");
17
18
 
18
19
  function $parcel$interopDefault(a) {
@@ -365,6 +366,7 @@ const $91fcbf58e59aae79$export$84584c2a98eb6753 = {
365
366
  },
366
367
  copyLink: {
367
368
  title: "Copy link",
369
+ description: "Copy link into clipboard",
368
370
  error: "An error occured when trying to copy to clipboard",
369
371
  copied: "Link copied to clipboard"
370
372
  },
@@ -396,8 +398,8 @@ const $91fcbf58e59aae79$export$84584c2a98eb6753 = {
396
398
  sendResolution: "Send Resolution (maximum)"
397
399
  },
398
400
  shareLink: {
399
- title: "Create link",
400
- title2: "Create a link",
401
+ title: "Share link",
402
+ title2: "Share a link",
401
403
  invalid: "Invalid link",
402
404
  sentToUsers: "Link sent to users",
403
405
  sentToUser: "Link sent to {{user}}",
@@ -407,10 +409,10 @@ const $91fcbf58e59aae79$export$84584c2a98eb6753 = {
407
409
  pay: "Pay"
408
410
  },
409
411
  youtube: {
410
- title: "Embed YouTube",
412
+ title: "Watch Together",
411
413
  url: "YOUTUBE URL",
412
414
  invalid: "Invalid YouTube URL",
413
- share: "Share video"
415
+ share: "Watch now"
414
416
  },
415
417
  sharedHistory: {
416
418
  shared: "Shared with you"
@@ -438,6 +440,10 @@ const $91fcbf58e59aae79$export$84584c2a98eb6753 = {
438
440
  leaveCall: "Leave call",
439
441
  endCall: "End call for all"
440
442
  },
443
+ virtualBackground: {
444
+ title: "Virtual Background",
445
+ setBackground: "Set Background"
446
+ },
441
447
  misc: {
442
448
  someone: "Someone",
443
449
  camera: "Camera",
@@ -450,6 +456,20 @@ const $91fcbf58e59aae79$export$84584c2a98eb6753 = {
450
456
  accept: "Accept",
451
457
  decline: "Decline",
452
458
  you: "You"
459
+ },
460
+ invite: {
461
+ title: "Share link to start a conversation",
462
+ copy: "Copy",
463
+ description: "You are currently the only participant. Invite people to start the conversation."
464
+ },
465
+ greeting: {
466
+ mainTitle: "Welcome to SnapCall",
467
+ sideTitle: "Are you ready to join?",
468
+ sideDescription: "Before joining the room, enter your name. It will displayed to participants.",
469
+ namePlaceholder: "Your name",
470
+ nameSubmit: "Join Conversation",
471
+ footerTitle: "Powered by SnapCall",
472
+ footerDescription: "Meet SnapCall, the easiest way to add real-time video to platform, product or service."
453
473
  }
454
474
  }
455
475
  };
@@ -491,6 +511,7 @@ const $e52ca91c2b296e41$export$acb2a88f7d552ebf = {
491
511
  },
492
512
  copyLink: {
493
513
  title: "Copier le lien",
514
+ description: "Copier le lien dans le presse-papiers",
494
515
  error: "Une erreur est survenue pendant la copie du lien dans le presse-papier",
495
516
  copied: "Lien copi\xe9 dans le presse-papier"
496
517
  },
@@ -533,10 +554,10 @@ const $e52ca91c2b296e41$export$acb2a88f7d552ebf = {
533
554
  pay: "Payer"
534
555
  },
535
556
  youtube: {
536
- title: "YouTube",
557
+ title: "Regardons Ensemble",
537
558
  url: "URL YOUTUBE",
538
559
  invalid: "URL YouTube invalide",
539
- share: "Partager la vid\xe9o"
560
+ share: "Regarder maintenant"
540
561
  },
541
562
  sharedHistory: {
542
563
  shared: "Partag\xe9 avec vous"
@@ -562,7 +583,11 @@ const $e52ca91c2b296e41$export$acb2a88f7d552ebf = {
562
583
  leave: {
563
584
  title: "Quitter",
564
585
  leaveCall: "Quitter l'appel",
565
- endCall: "Terminer l'appel pour tout le monde"
586
+ endCall: "Terminer l'appel"
587
+ },
588
+ virtualBackground: {
589
+ title: "Arri\xe8re plan virtuel",
590
+ setBackground: "Mettre l'arri\xe8re plan"
566
591
  },
567
592
  misc: {
568
593
  someone: "Quelqu'un",
@@ -576,6 +601,20 @@ const $e52ca91c2b296e41$export$acb2a88f7d552ebf = {
576
601
  accept: "Accepter",
577
602
  decline: "D\xe9cliner",
578
603
  you: "Vous"
604
+ },
605
+ invite: {
606
+ title: "Partagez le lien pour commencer une conversation",
607
+ copy: "Copier",
608
+ description: "Vous \xeates actuellement le seul participant. Inviter des personnes pour commencer la conversation."
609
+ },
610
+ greeting: {
611
+ mainTitle: "Bienvenue sur SnapCall",
612
+ sideTitle: "Pr\xeat \xe0 rejoindre ?",
613
+ sideDescription: "Avant de rejoindre la salle, veuillez entrer votre nom.",
614
+ namePlaceholder: "Nom",
615
+ nameSubmit: "Rejoindre la conversation",
616
+ footerTitle: "Propuls\xe9 par SnapCall",
617
+ footerDescription: "D\xe9couvrez SnapCall, ajoutez de la vid\xe9o en temps r\xe9el \xe0 n'importe quelle plateforme, produit ou service."
579
618
  }
580
619
  }
581
620
  };
@@ -617,6 +656,7 @@ const $e0ae3d23c2381da3$export$3486a10f30cf1ee4 = {
617
656
  },
618
657
  copyLink: {
619
658
  title: "Copia il link",
659
+ description: "Copia il link negli appunti",
620
660
  error: "Si \xe8 verificato un errore durante la copia negli Appunti",
621
661
  copied: "Link copiato negli Appunti"
622
662
  },
@@ -659,10 +699,10 @@ const $e0ae3d23c2381da3$export$3486a10f30cf1ee4 = {
659
699
  pay: "Paga"
660
700
  },
661
701
  youtube: {
662
- title: "YouTube",
702
+ title: "Vedere Assieme",
663
703
  url: "URL YOUTUBE",
664
704
  invalid: "URL YouTube non valido",
665
- share: "Condividi il video"
705
+ share: "Guarda ora"
666
706
  },
667
707
  sharedHistory: {
668
708
  shared: "Condiviso con te"
@@ -690,6 +730,14 @@ const $e0ae3d23c2381da3$export$3486a10f30cf1ee4 = {
690
730
  leaveCall: "Lascia la chiamata",
691
731
  endCall: "Termina la chiamata per tutti"
692
732
  },
733
+ virtualBackground: {
734
+ title: "Sfondo virtuale",
735
+ setBackground: "Imposta sfondo"
736
+ },
737
+ virtualbackground: {
738
+ title: "Virtual Background",
739
+ setBackground: "Set Background"
740
+ },
693
741
  misc: {
694
742
  someone: "Qualcuno",
695
743
  camera: "Telecamera",
@@ -702,6 +750,20 @@ const $e0ae3d23c2381da3$export$3486a10f30cf1ee4 = {
702
750
  accept: "Accettare",
703
751
  decline: "Declinare",
704
752
  you: "Voi"
753
+ },
754
+ invite: {
755
+ title: "Condividi link per avviare una conversazione",
756
+ copy: "Copiare",
757
+ description: "Attualmente sei l'unico partecipante. Invita le persone ad iniziare la conversazione."
758
+ },
759
+ greeting: {
760
+ mainTitle: "Benvenuto a SnapCall",
761
+ sideTitle: "Sei pronto per unirti?",
762
+ sideDescription: "Prima di entrare nella stanza, inserisci il tuo nome. Verr\xe0 visualizzato ai partecipanti.",
763
+ namePlaceholder: "Il tuo nome",
764
+ nameSubmit: "Partecipa alla conversazione",
765
+ footerTitle: "Offerto da SnapCall",
766
+ footerDescription: "Incontrare SnapCall, il modo pi\xf9 semplice per aggiungere video in tempo reale a piattaforma, prodotto o servizio."
705
767
  }
706
768
  }
707
769
  };
@@ -1133,6 +1195,157 @@ class $a62e7f17be5cf3a0$export$2e2bcd8739ae039 {
1133
1195
  }
1134
1196
 
1135
1197
 
1198
+
1199
+
1200
+ const $cb913ea078a876a6$var$log = new (0, $d0c6baf97675ab49$export$2e2bcd8739ae039)("MediaPipe");
1201
+ const $cb913ea078a876a6$var$mediapipeUrl = "https://stream-assets.snapcall.io/v1.8.0";
1202
+ let $cb913ea078a876a6$var$selfieSegmentationInitialized = false;
1203
+ const $cb913ea078a876a6$var$selfieSegmentation = new $jQDcL$mediapipeselfie_segmentation.SelfieSegmentation({
1204
+ locateFile: (file, prefix)=>{
1205
+ $cb913ea078a876a6$var$log.debug("selfieSegmentation", file, prefix);
1206
+ if ($cb913ea078a876a6$var$mediapipeUrl) return `${$cb913ea078a876a6$var$mediapipeUrl}/mediapipe/${file}`;
1207
+ const url = window.location.href;
1208
+ const path = url.split("/").slice(0, -1).join("/");
1209
+ return `${path}/mediapipe/${file}`;
1210
+ }
1211
+ });
1212
+ class $cb913ea078a876a6$export$2e2bcd8739ae039 {
1213
+ fillColor = "#000000";
1214
+ type = "blur";
1215
+ live = false;
1216
+ fps = 24;
1217
+ blurLevel = 10;
1218
+ timerWorker = new Worker(new URL("timer.7690fc0b.js", "file:" + __filename), {
1219
+ name: "VirtualBackgroundTimerWorker"
1220
+ });
1221
+ constructor(stream, options){
1222
+ this.stream = stream;
1223
+ this.image = document.createElement("video");
1224
+ this.image.style.display = "none";
1225
+ this.image.setAttribute("autoplay", "");
1226
+ this.image.setAttribute("playsinline", "");
1227
+ this.image.setAttribute("muted", "");
1228
+ this.canvas = document.createElement("canvas");
1229
+ this.canvas.style.display = "none";
1230
+ if (options) this.setOptions(options);
1231
+ }
1232
+ setOptions(options) {
1233
+ this.setType(options.type);
1234
+ this.setFillColor(options.fillColor || this.fillColor);
1235
+ this.setVideoBackground(options.background);
1236
+ this.setBlurLevel(options.blurLevel || this.blurLevel);
1237
+ }
1238
+ setType(type) {
1239
+ this.type = type;
1240
+ }
1241
+ setBlurLevel(level) {
1242
+ this.blurLevel = level;
1243
+ }
1244
+ setVideoBackground(data) {
1245
+ this.background = data;
1246
+ }
1247
+ setFillColor(color) {
1248
+ this.fillColor = color;
1249
+ }
1250
+ drawWithBlur(ctx, results) {
1251
+ ctx.save();
1252
+ ctx.drawImage(results.image, 0, 0, this.canvas.width, this.canvas.height);
1253
+ ctx.globalCompositeOperation = "destination-atop";
1254
+ ctx.drawImage(results.segmentationMask, 0, 0, this.canvas.width, this.canvas.height);
1255
+ // Blur the context for all subsequent draws then set the raw image as the background
1256
+ ctx.filter = `blur(${this.blurLevel}px)`;
1257
+ ctx.globalCompositeOperation = "destination-over";
1258
+ ctx.drawImage(results.image, 0, 0, this.canvas.width, this.canvas.height);
1259
+ // Restore the context's blank state
1260
+ ctx.restore();
1261
+ }
1262
+ drawWithBackground(ctx, results) {
1263
+ ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
1264
+ ctx.drawImage(results.segmentationMask, 0, 0, this.canvas.width, this.canvas.height);
1265
+ ctx.globalCompositeOperation = "source-out";
1266
+ ctx.fillStyle = this.fillColor;
1267
+ if (this.background) ctx.drawImage(this.background, 0, 0, this.canvas.width, this.canvas.height);
1268
+ else ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);
1269
+ ctx.globalCompositeOperation = "destination-atop";
1270
+ ctx.drawImage(results.image, 0, 0, this.canvas.width, this.canvas.height);
1271
+ ctx.restore();
1272
+ }
1273
+ onFrame(results) {
1274
+ this.canvas.width = results.image.width;
1275
+ this.canvas.height = results.image.height;
1276
+ const ctx = this.canvas.getContext("2d");
1277
+ if (ctx) switch(this.type){
1278
+ case "blur":
1279
+ this.drawWithBlur(ctx, results);
1280
+ break;
1281
+ case "background":
1282
+ this.drawWithBackground(ctx, results);
1283
+ break;
1284
+ default:
1285
+ this.drawWithBlur(ctx, results);
1286
+ }
1287
+ }
1288
+ runWithFrameCallback() {
1289
+ if (this.live) this.image.requestVideoFrameCallback(()=>{
1290
+ $cb913ea078a876a6$var$selfieSegmentation.send({
1291
+ image: this.image
1292
+ });
1293
+ this.runWithFrameCallback();
1294
+ });
1295
+ }
1296
+ async createStream() {
1297
+ try {
1298
+ const option = {
1299
+ selfieMode: false,
1300
+ modelSelection: 0
1301
+ };
1302
+ $cb913ea078a876a6$var$selfieSegmentation.setOptions(option);
1303
+ $cb913ea078a876a6$var$log.log("selfie segmentation initialized");
1304
+ if (!$cb913ea078a876a6$var$selfieSegmentationInitialized) {
1305
+ await $cb913ea078a876a6$var$selfieSegmentation.initialize();
1306
+ $cb913ea078a876a6$var$selfieSegmentationInitialized = true;
1307
+ }
1308
+ this.image.srcObject = this.stream;
1309
+ this.image.onplay = async ()=>{
1310
+ this.live = true;
1311
+ try {
1312
+ $cb913ea078a876a6$var$selfieSegmentation.onResults((res)=>{
1313
+ this.onFrame(res);
1314
+ });
1315
+ this.timerWorker.onmessage = ()=>{
1316
+ $cb913ea078a876a6$var$selfieSegmentation.send({
1317
+ image: this.image
1318
+ });
1319
+ };
1320
+ this.timerWorker.postMessage({
1321
+ action: "start",
1322
+ params: this.fps
1323
+ });
1324
+ } catch (err) {
1325
+ $cb913ea078a876a6$var$log.error("createStream:play", err);
1326
+ }
1327
+ };
1328
+ } catch (err) {
1329
+ console.error("createStream", err);
1330
+ }
1331
+ return this.canvas.captureStream();
1332
+ }
1333
+ clean() {
1334
+ return new Promise((resolve)=>{
1335
+ this.live = false;
1336
+ clearInterval(this.runInterval);
1337
+ this.image.srcObject = null;
1338
+ this.stream.getTracks().forEach((track)=>{
1339
+ track.stop();
1340
+ this.stream.removeTrack(track);
1341
+ });
1342
+ this.timerWorker.terminate();
1343
+ resolve();
1344
+ });
1345
+ }
1346
+ }
1347
+
1348
+
1136
1349
  const $1dedebd5ff3002eb$var$log = new (0, $d0c6baf97675ab49$export$2e2bcd8739ae039)("StreamerClient");
1137
1350
  const $1dedebd5ff3002eb$export$818d60b2e626da0c = {
1138
1351
  WEBRTC_FAILED: "WRTC1",
@@ -1202,8 +1415,16 @@ class $1dedebd5ff3002eb$var$SnapcallEvent extends CustomEvent {
1202
1415
  }
1203
1416
  }
1204
1417
  const $1dedebd5ff3002eb$var$StreamerEventTargetType = EventTarget;
1418
+ const $1dedebd5ff3002eb$var$defaultMediapipeOptions = {
1419
+ background: undefined,
1420
+ fillColor: "#ffffff",
1421
+ type: "blur",
1422
+ blurLevel: 10
1423
+ };
1205
1424
  class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$StreamerEventTargetType {
1206
1425
  mediasoupTransport = {};
1426
+ mediaPipeOption = $1dedebd5ff3002eb$var$defaultMediapipeOptions;
1427
+ useVideoBackground = false;
1207
1428
  pendingDeviceRequest = {};
1208
1429
  joinOptions = {};
1209
1430
  devicesList = [];
@@ -1563,10 +1784,15 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
1563
1784
  async joinRoom() {
1564
1785
  this.streamerMediasoup = await (0, $a62e7f17be5cf3a0$export$2e2bcd8739ae039).create(this.protoo, this.config);
1565
1786
  // now we join
1566
- if (this.joinOptions.apiKey && this.joinOptions.email) try {
1567
- const agentInfo = await this.fetchAgentInfo({
1568
- apiKey: this.joinOptions.apiKey,
1569
- email: this.joinOptions.email
1787
+ const { apiKey: apiKey , email: email } = this.joinOptions;
1788
+ if (apiKey) try {
1789
+ let agentInfo = null;
1790
+ if (apiKey && email) agentInfo = await this.fetchAgentInfo({
1791
+ apiKey: apiKey,
1792
+ email: email
1793
+ });
1794
+ else if (apiKey) agentInfo = await this.fetchUserInfo({
1795
+ apiKey: apiKey
1570
1796
  });
1571
1797
  if (agentInfo) this.dispatchEvent(new $1dedebd5ff3002eb$var$SnapcallEvent("agentIdentity", {
1572
1798
  detail: {
@@ -1583,8 +1809,8 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
1583
1809
  }));
1584
1810
  }
1585
1811
  const { peers: peers } = await this.protoo.request("getRoomPeers", {
1586
- apiKey: this.joinOptions.apiKey,
1587
- email: this.joinOptions.email
1812
+ apiKey: apiKey,
1813
+ email: email
1588
1814
  });
1589
1815
  this.peers = new Map(peers.map((peer)=>[
1590
1816
  peer.id || peer.peerId,
@@ -1785,6 +2011,10 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
1785
2011
  release() {
1786
2012
  $1dedebd5ff3002eb$var$log.log("release");
1787
2013
  for(let key in this.mediasoupTransport)this.closeWebrtcTransport(key);
2014
+ if (this.mediaPipe) {
2015
+ this.mediaPipe.clean();
2016
+ this.mediaPipe = undefined;
2017
+ }
1788
2018
  this.webcamTrack?.stop();
1789
2019
  this.webcamTrack = null;
1790
2020
  this.protooTransport.close();
@@ -1886,6 +2116,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
1886
2116
  }
1887
2117
  }
1888
2118
  scaleVideoEncodingsParameter() {
2119
+ if (this.useVideoBackground) return;
1889
2120
  try {
1890
2121
  let videoCount = 0;
1891
2122
  this.consumers.forEach((consumer)=>{
@@ -1913,6 +2144,24 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
1913
2144
  $1dedebd5ff3002eb$var$log.error("scaleVideoEncodingsParameter", "scaleVideo error", error);
1914
2145
  }
1915
2146
  }
2147
+ setVideoBackground(options) {
2148
+ this.mediaPipe?.setOptions(options);
2149
+ this.mediaPipeOption = options;
2150
+ }
2151
+ async initVideoBackground() {
2152
+ if (this.useVideoBackground === true) return;
2153
+ this.useVideoBackground = true;
2154
+ if (!this.webcamProducer || this.webcamProducer.closed) return;
2155
+ await this.switchWebcam({});
2156
+ }
2157
+ async stopVideoBackground() {
2158
+ if (this.useVideoBackground === false) return;
2159
+ this.useVideoBackground = false;
2160
+ await this.mediaPipe?.clean();
2161
+ this.mediaPipe = undefined;
2162
+ if (!this.webcamProducer || this.webcamProducer.closed) return;
2163
+ await this.switchWebcam({});
2164
+ }
1916
2165
  async switchWebcam({ device: device , resolution: resolution , rotate: rotate }) {
1917
2166
  if (!this.webcam.device) throw new Error("no webcam devices");
1918
2167
  if (rotate) {
@@ -1929,18 +2178,32 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
1929
2178
  if (device) this.webcam.device = device;
1930
2179
  if (resolution) this.webcam.resolution = resolution;
1931
2180
  }
1932
- const stream = await this.handleGetUserMediaError("webcam", navigator.mediaDevices.getUserMedia({
2181
+ let usedResolution = $1dedebd5ff3002eb$export$d21ffcc5eb136bfa[resolution || this.webcam.resolution];
2182
+ if (this.useVideoBackground) usedResolution = {
2183
+ width: {
2184
+ ideal: 560
2185
+ },
2186
+ height: {
2187
+ ideal: 400
2188
+ },
2189
+ qualityIndex: 2
2190
+ };
2191
+ const mediaStream = await this.handleGetUserMediaError("webcam", navigator.mediaDevices.getUserMedia({
1933
2192
  video: {
1934
2193
  deviceId: {
1935
2194
  ideal: this.webcam.device.deviceId
1936
2195
  },
1937
- ...$1dedebd5ff3002eb$export$d21ffcc5eb136bfa[resolution || this.webcam.resolution]
2196
+ ...usedResolution
1938
2197
  }
1939
2198
  }));
2199
+ if (this.useVideoBackground) {
2200
+ if (this.mediaPipe) await this.mediaPipe.clean();
2201
+ this.mediaPipe = new (0, $cb913ea078a876a6$export$2e2bcd8739ae039)(mediaStream, this.mediaPipeOption);
2202
+ }
2203
+ const stream = await this.mediaPipe?.createStream() || mediaStream;
1940
2204
  const transport = await this.getTransport("video", "send");
1941
2205
  if (!transport) throw new Error("video transport not found, can not switch");
1942
2206
  const track = stream.getVideoTracks()[0];
1943
- this.webcamTrack = track;
1944
2207
  await this.webcamProducer?.replaceTrack?.({
1945
2208
  track: track
1946
2209
  });
@@ -1961,14 +2224,29 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
1961
2224
  await this.updateWebcams();
1962
2225
  if (config?.device) this.webcam.device = config.device;
1963
2226
  if (!this.webcam.device) throw new Error("no webcam devices");
1964
- const stream = await this.handleGetUserMediaError("webcam", navigator.mediaDevices.getUserMedia({
2227
+ let usedResolution = $1dedebd5ff3002eb$export$d21ffcc5eb136bfa[config?.resolution || this.webcam.resolution];
2228
+ if (this.useVideoBackground) usedResolution = {
2229
+ width: {
2230
+ ideal: 560
2231
+ },
2232
+ height: {
2233
+ ideal: 400
2234
+ },
2235
+ qualityIndex: 2
2236
+ };
2237
+ const mediaStream = await this.handleGetUserMediaError("webcam", navigator.mediaDevices.getUserMedia({
1965
2238
  video: {
1966
2239
  deviceId: {
1967
2240
  ideal: this.webcam.device.deviceId
1968
2241
  },
1969
- ...$1dedebd5ff3002eb$export$d21ffcc5eb136bfa[config?.resolution || this.webcam.resolution]
2242
+ ...usedResolution
1970
2243
  }
1971
2244
  }));
2245
+ if (this.useVideoBackground) {
2246
+ if (this.mediaPipe) await this.mediaPipe.clean();
2247
+ this.mediaPipe = new (0, $cb913ea078a876a6$export$2e2bcd8739ae039)(mediaStream, this.mediaPipeOption);
2248
+ }
2249
+ const stream = await this.mediaPipe?.createStream() || mediaStream;
1972
2250
  await this.updateWebcams();
1973
2251
  const transport = await this.getTransport("video", "send");
1974
2252
  const track = stream.getVideoTracks()[0];
@@ -2128,6 +2406,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
2128
2406
  }
2129
2407
  }
2130
2408
  requestVideo({ mediaId: mediaId , element: element }) {
2409
+ $1dedebd5ff3002eb$var$log.info("requestVideo");
2131
2410
  const consumer = this.consumers.get(mediaId);
2132
2411
  if (consumer) {
2133
2412
  const mediaStream = new MediaStream();
@@ -2145,6 +2424,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
2145
2424
  return image;
2146
2425
  }
2147
2426
  requestLocalVideo(element) {
2427
+ $1dedebd5ff3002eb$var$log.info("requestLocalVideo");
2148
2428
  if (this.webcamProducer) {
2149
2429
  const mediaStream = new MediaStream();
2150
2430
  mediaStream.addTrack(this.webcamProducer.track);
@@ -2408,6 +2688,19 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
2408
2688
  });
2409
2689
  return agent;
2410
2690
  }
2691
+ async fetchUserInfo({ apiKey: apiKey }) {
2692
+ const apiURL = this.config.apiUrl;
2693
+ const user = await fetch(`${apiURL}/users/me`, {
2694
+ method: "get",
2695
+ headers: {
2696
+ Authorization: `Bearer ${apiKey}`
2697
+ }
2698
+ }).then((response)=>{
2699
+ if (response.ok) return response.json();
2700
+ throw new Error("Invalid user info");
2701
+ });
2702
+ return user;
2703
+ }
2411
2704
  setConfig(config) {
2412
2705
  this.config = {
2413
2706
  ...this.config,
@@ -2664,7 +2957,7 @@ const $cce7f1c9e9c29503$export$6546b255bd3a2004 = ()=>/*#__PURE__*/ (0, $jQDcL$r
2664
2957
  fill: "#fff"
2665
2958
  })
2666
2959
  });
2667
- const $cce7f1c9e9c29503$export$92ce62e1201c4fc0 = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
2960
+ const $cce7f1c9e9c29503$export$92ce62e1201c4fc0 = ({ color: color })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
2668
2961
  width: "24",
2669
2962
  height: "24",
2670
2963
  viewBox: "0 0 24 24",
@@ -2672,10 +2965,10 @@ const $cce7f1c9e9c29503$export$92ce62e1201c4fc0 = ()=>/*#__PURE__*/ (0, $jQDcL$r
2672
2965
  xmlns: "http://www.w3.org/2000/svg",
2673
2966
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
2674
2967
  d: "M21 8.94a1.307 1.307 0 0 0-.06-.27v-.09a1.07 1.07 0 0 0-.19-.28l-6-6a1.071 1.071 0 0 0-.28-.19.32.32 0 0 0-.09 0 .88.88 0 0 0-.33-.11H10a3 3 0 0 0-3 3v1H6a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h8a3 3 0 0 0 3-3v-1h1a3 3 0 0 0 3-3V8.94Zm-6-3.53L17.59 8H16a1 1 0 0 1-1-1V5.41ZM15 19a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h1v7a3 3 0 0 0 3 3h5v1Zm4-4a1 1 0 0 1-1 1h-8a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h3v3a3 3 0 0 0 3 3h3v5Z",
2675
- fill: "#fff"
2968
+ fill: color || "#fff"
2676
2969
  })
2677
2970
  });
2678
- const $cce7f1c9e9c29503$export$6470d09a29d34d08 = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
2971
+ const $cce7f1c9e9c29503$export$6470d09a29d34d08 = ({ color: color })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
2679
2972
  width: "24",
2680
2973
  height: "24",
2681
2974
  viewBox: "0 0 24 24",
@@ -2683,7 +2976,7 @@ const $cce7f1c9e9c29503$export$6470d09a29d34d08 = ()=>/*#__PURE__*/ (0, $jQDcL$r
2683
2976
  xmlns: "http://www.w3.org/2000/svg",
2684
2977
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
2685
2978
  d: "M8 21H4a1 1 0 0 1-1-1v-4a1 1 0 1 0-2 0v4a3 3 0 0 0 3 3h4a1 1 0 0 0 0-2Zm14-6a1 1 0 0 0-1 1v4a1 1 0 0 1-1 1h-4a1 1 0 0 0 0 2h4a3 3 0 0 0 3-3v-4a1 1 0 0 0-1-1ZM20 1h-4a1 1 0 1 0 0 2h4a1 1 0 0 1 1 1v4a1 1 0 0 0 2 0V4a3 3 0 0 0-3-3ZM2 9a1 1 0 0 0 1-1V4a1 1 0 0 1 1-1h4a1 1 0 0 0 0-2H4a3 3 0 0 0-3 3v4a1 1 0 0 0 1 1Zm8-4H6a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1ZM9 9H7V7h2v2Zm5 2h4a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1Zm1-4h2v2h-2V7Zm-5 6H6a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1Zm-1 4H7v-2h2v2Zm5-1a1 1 0 0 0 1-1 1 1 0 0 0 0-2h-1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1Zm4-3a1 1 0 0 0-1 1v3a1 1 0 0 0 0 2h1a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1Zm-4 4a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z",
2686
- fill: "#fff"
2979
+ fill: color || "#fff"
2687
2980
  })
2688
2981
  });
2689
2982
  const $cce7f1c9e9c29503$export$1095c93890fce526 = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
@@ -2738,6 +3031,17 @@ const $cce7f1c9e9c29503$export$5170987d58ae338d = ()=>/*#__PURE__*/ (0, $jQDcL$r
2738
3031
  ]
2739
3032
  })
2740
3033
  });
3034
+ const $cce7f1c9e9c29503$export$d5424e4dfe4be076 = ({ color: color })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
3035
+ width: "24",
3036
+ height: "24",
3037
+ viewBox: "0 0 24 24",
3038
+ fill: "none",
3039
+ xmlns: "http://www.w3.org/2000/svg",
3040
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
3041
+ d: "M19 4H5a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3ZM5 18a1 1 0 0 1-1-1v-2.42l3.3-3.29a1 1 0 0 1 1.4 0L15.41 18H5Zm15-1a1 1 0 0 1-1 1h-.77l-3.81-3.83.88-.88a1 1 0 0 1 1.4 0l3.3 3.29V17Zm0-3.24-1.88-1.87a3.06 3.06 0 0 0-4.24 0l-.88.88-2.88-2.88a3.06 3.06 0 0 0-4.24 0L4 11.76V7a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v6.76Z",
3042
+ fill: color || "#fff"
3043
+ })
3044
+ });
2741
3045
 
2742
3046
 
2743
3047
 
@@ -2928,10 +3232,17 @@ const $1949f8f101c8cf77$export$e2457e1974c298c3 = (0, ($parcel$interopDefault($j
2928
3232
  line-height: 16px;
2929
3233
  padding: 4px 12px;
2930
3234
  border-radius: 50px;
3235
+ gap: 5px;
2931
3236
 
2932
3237
  &:hover {
2933
3238
  border: 2px solid ${(props)=>props.theme.controlsHoverBorderColor};
2934
3239
  }
3240
+
3241
+ img,
3242
+ svg {
3243
+ max-width: 15px;
3244
+ max-height: 15px;
3245
+ }
2935
3246
  `;
2936
3247
  const $1949f8f101c8cf77$export$c4e460d5c7d83bc3 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
2937
3248
  position: absolute;
@@ -2959,12 +3270,18 @@ const $7eae5c8ece2c75ff$var$HeaderSettings = ({ baseCategories: baseCategories ,
2959
3270
  ...options,
2960
3271
  ...category.items
2961
3272
  ], []) || [];
2962
- return definedSettingsShortcuts.reduce((shortcutsList, shortcutId)=>{
2963
- const baseShortcut = baseOptions.find((option)=>option.id === shortcutId);
2964
- if (baseShortcut) shortcutsList.push(baseShortcut);
3273
+ return definedSettingsShortcuts.reduce((shortcutsList, shortcut)=>{
3274
+ const baseShortcut = baseOptions.find((option)=>option.id === shortcut.id);
3275
+ if (baseShortcut) shortcutsList.push({
3276
+ ...baseShortcut,
3277
+ displayType: shortcut.displayType
3278
+ });
2965
3279
  else {
2966
- const extraShortcut = extraOptions?.find((option)=>option.id === shortcutId);
2967
- if (extraShortcut) shortcutsList.push(extraShortcut);
3280
+ const extraShortcut = extraOptions?.find((option)=>option.id === shortcut.id);
3281
+ if (extraShortcut) shortcutsList.push({
3282
+ ...extraShortcut,
3283
+ displayType: shortcut.displayType
3284
+ });
2968
3285
  }
2969
3286
  return shortcutsList;
2970
3287
  }, []);
@@ -3021,7 +3338,19 @@ const $7eae5c8ece2c75ff$var$HeaderSettings = ({ baseCategories: baseCategories ,
3021
3338
  const onSettingsButtonClick = ()=>setDisplaySettingsOptions((previousValue)=>!previousValue);
3022
3339
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $1949f8f101c8cf77$export$8376625f8bb18347), {
3023
3340
  children: [
3024
- shortcuts.map((shortcut)=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $1949f8f101c8cf77$export$4297bad962271b02), {
3341
+ shortcuts.map((shortcut)=>{
3342
+ if (shortcut.displayType === "full") return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $1949f8f101c8cf77$export$e2457e1974c298c3), {
3343
+ onClick: shortcut.action,
3344
+ children: [
3345
+ shortcut.jsxIcon && shortcut.jsxIcon,
3346
+ shortcut.srcIcon && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("img", {
3347
+ alt: shortcut.title,
3348
+ src: shortcut.srcIcon
3349
+ }),
3350
+ shortcut.title
3351
+ ]
3352
+ }, shortcut.id);
3353
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $1949f8f101c8cf77$export$4297bad962271b02), {
3025
3354
  onClick: shortcut.action,
3026
3355
  children: [
3027
3356
  shortcut.jsxIcon && shortcut.jsxIcon,
@@ -3030,7 +3359,8 @@ const $7eae5c8ece2c75ff$var$HeaderSettings = ({ baseCategories: baseCategories ,
3030
3359
  src: shortcut.srcIcon
3031
3360
  })
3032
3361
  ]
3033
- }, shortcut.id)),
3362
+ }, shortcut.id);
3363
+ }),
3034
3364
  streamUIOptions.showMenuButton && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $1949f8f101c8cf77$export$a7d9b76c122d0627), {
3035
3365
  children: [
3036
3366
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $1949f8f101c8cf77$export$e2457e1974c298c3), {
@@ -3231,7 +3561,7 @@ const $e1930b467e7d8845$var$multiPiP = new (0, $21395e477f83709c$export$45fabd1c
3231
3561
  const $e1930b467e7d8845$var$browser = $jQDcL$bowser.parse(window.navigator.userAgent);
3232
3562
  const $e1930b467e7d8845$var$Header = ()=>{
3233
3563
  const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
3234
- const { setIsQuickConnectPopupVisible: setIsQuickConnectPopupVisible , setIsSettingsMenuVisible: setIsSettingsMenuVisible , options: options , muted: muted , streaming: streaming } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
3564
+ const { setIsQuickConnectPopupVisible: setIsQuickConnectPopupVisible , setIsSettingsMenuVisible: setIsSettingsMenuVisible , setIsVirtualBackgroundPopupVisible: setIsVirtualBackgroundPopupVisible , options: options , muted: muted , streaming: streaming , } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
3235
3565
  const { streams: streams } = (0, $3f6e908c45fcc5b3$export$b5633a7cfbe42d9f)();
3236
3566
  const [extraOptions, setExtraOptions] = (0, $jQDcL$react.useState)(options.extraSettingsOptions || []);
3237
3567
  const onSetExtraSettingsOptions = (event)=>{
@@ -3285,6 +3615,9 @@ const $e1930b467e7d8845$var$Header = ()=>{
3285
3615
  const onSettingsMenuClick = ()=>{
3286
3616
  setIsSettingsMenuVisible(true);
3287
3617
  };
3618
+ const onVirtualBackgroundClick = ()=>{
3619
+ setIsVirtualBackgroundPopupVisible(true);
3620
+ };
3288
3621
  const computedCategories = [
3289
3622
  {
3290
3623
  id: "1",
@@ -3326,6 +3659,12 @@ const $e1930b467e7d8845$var$Header = ()=>{
3326
3659
  ]
3327
3660
  },
3328
3661
  ];
3662
+ if ($e1930b467e7d8845$var$browser.platform.type === "desktop" && $e1930b467e7d8845$var$browser.engine.name === "Blink") computedCategories[2].items.unshift({
3663
+ id: "virtualBackground",
3664
+ title: t("virtualBackground.title"),
3665
+ jsxIcon: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $cce7f1c9e9c29503$export$d5424e4dfe4be076), {}),
3666
+ action: onVirtualBackgroundClick
3667
+ });
3329
3668
  if (document.pictureInPictureEnabled && $e1930b467e7d8845$var$browser.platform.type === "desktop") computedCategories[0].items.push({
3330
3669
  id: "pip",
3331
3670
  title: t("menu.pictureInPicture"),
@@ -3339,6 +3678,7 @@ const $e1930b467e7d8845$var$Header = ()=>{
3339
3678
  options.sharedURL,
3340
3679
  setIsQuickConnectPopupVisible,
3341
3680
  setIsSettingsMenuVisible,
3681
+ setIsVirtualBackgroundPopupVisible,
3342
3682
  t,
3343
3683
  ]);
3344
3684
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $1949f8f101c8cf77$export$1e86fd0e1db89578), {
@@ -3388,6 +3728,35 @@ const $56e1e7a85d8bf4bb$export$2b86bedf890eab8 = (element)=>{
3388
3728
  ]);
3389
3729
  return size;
3390
3730
  };
3731
+ const $56e1e7a85d8bf4bb$var$defaultState = {
3732
+ bottom: 0,
3733
+ height: 0,
3734
+ left: 0,
3735
+ right: 0,
3736
+ top: 0,
3737
+ width: 0,
3738
+ x: 0,
3739
+ y: 0
3740
+ };
3741
+ function $56e1e7a85d8bf4bb$export$e295b0c537d32d7d() {
3742
+ const [element, ref] = (0, $jQDcL$react.useState)(null);
3743
+ const [rect, setRect] = (0, $jQDcL$react.useState)($56e1e7a85d8bf4bb$var$defaultState);
3744
+ (0, $jQDcL$react.useLayoutEffect)(()=>{
3745
+ if (!element) return;
3746
+ const updateSize = (entries)=>setRect(entries[0].contentRect);
3747
+ const observer = new ResizeObserver(updateSize);
3748
+ observer.observe(element);
3749
+ return ()=>{
3750
+ observer.disconnect();
3751
+ };
3752
+ }, [
3753
+ element
3754
+ ]);
3755
+ return [
3756
+ ref,
3757
+ rect
3758
+ ];
3759
+ }
3391
3760
 
3392
3761
 
3393
3762
 
@@ -3967,16 +4336,6 @@ const $2c45d365ee8aa1ab$export$98d9314e6a208b24 = (0, ($parcel$interopDefault($j
3967
4336
  bottom: 0;
3968
4337
  cursor: ${(props)=>props.cursor};
3969
4338
  transition: all 0.4s;
3970
-
3971
- ${(props)=>{
3972
- if (props.full) return (0, $jQDcL$styledcomponents.css)`
3973
- width: 100%;
3974
- height: 100%;
3975
- inset: 0 0 0 0 !important;
3976
- padding: 17px 10px;
3977
- box-sizing: border-box;
3978
- `;
3979
- }}
3980
4339
  `;
3981
4340
  const $2c45d365ee8aa1ab$export$ba5a75b023bcdce2 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3982
4341
  display: flex;
@@ -4828,20 +5187,18 @@ const $8393b5c887e16c8c$var$SelfStreamTile = ({ isSomeonePresenting: isSomeonePr
4828
5187
  const { videosContainerRef: videosContainerRef , remoteTilesContainerRef: remoteTilesContainerRef , profile: profile , muted: muted , streaming: streaming , orientation: orientation , options: options , } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
4829
5188
  const { streams: streams } = (0, $3f6e908c45fcc5b3$export$b5633a7cfbe42d9f)();
4830
5189
  const [containerWidth, containerHeight] = (0, $56e1e7a85d8bf4bb$export$2b86bedf890eab8)(videosContainerRef.current);
5190
+ const cursor = streaming && !extended ? "pointer" : "default";
5191
+ const computedWidth = (0, $7de6ded9bdec6f42$export$a6112fefa8de799d)({
5192
+ containerWidth: containerWidth,
5193
+ containerHeight: containerHeight,
5194
+ minimumWidth: $8393b5c887e16c8c$var$minimumTileWidth,
5195
+ maximumWidth: $8393b5c887e16c8c$var$maximumTileWidth,
5196
+ orientation: orientation,
5197
+ extended: extended
5198
+ });
5199
+ let tileWidth = `${computedWidth}px`;
5200
+ let tileHeight = `${computedWidth}px`;
4831
5201
  const isAlone = streams.length < 1;
4832
- const cursor = streaming && !isAlone && !extended ? "pointer" : "default";
4833
- let tileSize = "100%";
4834
- if (!isAlone) {
4835
- const computedWidth = (0, $7de6ded9bdec6f42$export$a6112fefa8de799d)({
4836
- containerWidth: containerWidth,
4837
- containerHeight: containerHeight,
4838
- minimumWidth: $8393b5c887e16c8c$var$minimumTileWidth,
4839
- maximumWidth: $8393b5c887e16c8c$var$maximumTileWidth,
4840
- orientation: orientation,
4841
- extended: extended
4842
- });
4843
- tileSize = `${computedWidth}px`;
4844
- }
4845
5202
  const onLocalVideoChange = (event)=>{
4846
5203
  if (!event.detail?.camera?.device) return;
4847
5204
  if (!videoElementRef.current) throw new Error("videoElementRef not available");
@@ -4851,7 +5208,7 @@ const $8393b5c887e16c8c$var$SelfStreamTile = ({ isSomeonePresenting: isSomeonePr
4851
5208
  setZoomAvailable((0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).isVideoZoomAvailable());
4852
5209
  };
4853
5210
  const onSelfTileClick = ()=>{
4854
- if (streaming && !isAlone && !deviceRequest && !extended && SelfTileRef.current) {
5211
+ if (streaming && !deviceRequest && !extended && SelfTileRef.current) {
4855
5212
  (0, $4ee7c4b0b3646a08$export$ab7d69e250642927)({
4856
5213
  element: SelfTileRef.current
4857
5214
  });
@@ -4919,7 +5276,7 @@ const $8393b5c887e16c8c$var$SelfStreamTile = ({ isSomeonePresenting: isSomeonePr
4919
5276
  });
4920
5277
  };
4921
5278
  const onSelfTileMouseDown = (mouseDownEvent)=>{
4922
- if (!isAlone && !extended && SelfTileRef.current && videosContainerRef.current) (0, $4ee7c4b0b3646a08$export$298c6ed7f6695dd6)({
5279
+ if (!extended && SelfTileRef.current && videosContainerRef.current) (0, $4ee7c4b0b3646a08$export$298c6ed7f6695dd6)({
4923
5280
  mouseDownEvent: mouseDownEvent,
4924
5281
  targetElement: SelfTileRef.current,
4925
5282
  containerElement: videosContainerRef.current
@@ -4944,6 +5301,7 @@ const $8393b5c887e16c8c$var$SelfStreamTile = ({ isSomeonePresenting: isSomeonePr
4944
5301
  if (streaming && videoElementRef.current && !videoElementRef.current.srcObject) videoElementRef.current.srcObject = videoMediaProviderRef.current;
4945
5302
  }, [
4946
5303
  streaming,
5304
+ isAlone,
4947
5305
  isSomeonePresenting
4948
5306
  ]);
4949
5307
  (0, $jQDcL$react.useEffect)(()=>{
@@ -4954,12 +5312,6 @@ const $8393b5c887e16c8c$var$SelfStreamTile = ({ isSomeonePresenting: isSomeonePr
4954
5312
  containerWidth,
4955
5313
  containerHeight
4956
5314
  ]);
4957
- (0, $jQDcL$react.useEffect)(()=>{
4958
- if (isAlone && extended) setExtended(false);
4959
- }, [
4960
- isAlone,
4961
- extended
4962
- ]);
4963
5315
  (0, $jQDcL$react.useEffect)(()=>{
4964
5316
  if (!extended) {
4965
5317
  setSnapshotAnimation(false);
@@ -5065,7 +5417,7 @@ const $8393b5c887e16c8c$var$SelfStreamTile = ({ isSomeonePresenting: isSomeonePr
5065
5417
  })
5066
5418
  ]
5067
5419
  });
5068
- if (isSomeonePresenting && remoteTilesContainerRef?.current) return /*#__PURE__*/ (0, $jQDcL$reactdom.createPortal)(/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $66c45b20958474ec$export$798352b46783b18d), {
5420
+ if (remoteTilesContainerRef?.current && (isAlone || isSomeonePresenting)) return /*#__PURE__*/ (0, $jQDcL$reactdom.createPortal)(/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $66c45b20958474ec$export$798352b46783b18d), {
5069
5421
  style: {
5070
5422
  width: `${width}px`,
5071
5423
  height: `${height}px`
@@ -5077,10 +5429,9 @@ const $8393b5c887e16c8c$var$SelfStreamTile = ({ isSomeonePresenting: isSomeonePr
5077
5429
  children: [
5078
5430
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $2c45d365ee8aa1ab$export$98d9314e6a208b24), {
5079
5431
  ref: SelfTileRef,
5080
- full: isAlone,
5081
5432
  style: {
5082
- width: tileSize,
5083
- height: tileSize
5433
+ width: tileWidth,
5434
+ height: tileHeight
5084
5435
  },
5085
5436
  cursor: cursor,
5086
5437
  onClick: onSelfTileClick,
@@ -5916,8 +6267,104 @@ var $c225be5472ba393a$export$2e2bcd8739ae039 = $c225be5472ba393a$var$Highlighted
5916
6267
 
5917
6268
 
5918
6269
 
6270
+ const $7e6d6d75bd13cce5$export$dd2ac23a70f320dd = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
6271
+ display: ${({ show: show })=>show ? "flex" : "none"};
6272
+ flex-direction: column;
6273
+ justify-content: center;
6274
+ align-items: center;
6275
+ position: relative;
6276
+ width: ${({ width: width })=>width};
6277
+ height: ${({ height: height })=>height};
6278
+ background-color: ${({ theme: theme })=>theme.streamTileBackgroundColor};
6279
+ border: 2px solid ${({ theme: theme })=>theme.streamTileBorderColor};
6280
+ border-radius: 20px;
6281
+ box-sizing: border-box;
6282
+ color: #fff;
6283
+ font-family: Lato;
6284
+ padding: 20px;
6285
+ `;
6286
+ const $7e6d6d75bd13cce5$export$2dabfbe763cc7a4 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).h2`
6287
+ font-weight: 600;
6288
+ font-size: 16px;
6289
+ text-align: center;
6290
+ max-width: 300px;
6291
+ `;
6292
+ const $7e6d6d75bd13cce5$export$6ed6e36e1b456f96 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
6293
+ position: relative;
6294
+ display: flex;
6295
+ align-items: center;
6296
+ height: 50px;
6297
+ width: 100%;
6298
+ max-width: 300px;
6299
+ background-color: ${({ theme: theme })=>theme.popupBackgroundSecondaryColor};
6300
+ border: 1px solid ${({ theme: theme })=>theme.popupBorderColor};
6301
+ border-radius: 15px;
6302
+ padding: 0 10px;
6303
+ box-sizing: border-box;
6304
+ `;
6305
+ const $7e6d6d75bd13cce5$export$5f759de1870a3e41 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
6306
+ display: flex;
6307
+ align-items: center;
6308
+ width: 100%;
6309
+ gap: 5px;
6310
+
6311
+ svg {
6312
+ width: 20px;
6313
+ height: 20px;
6314
+ }
6315
+ `;
6316
+ const $7e6d6d75bd13cce5$export$c6b180e8ec79154e = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).p`
6317
+ color: #242324;
6318
+ font-size: 15px;
6319
+ font-weight: 600;
6320
+ width: 100%;
6321
+ text-overflow: ellipsis;
6322
+ white-space: nowrap;
6323
+ overflow: hidden;
6324
+ line-height: 15px;
6325
+ `;
6326
+ const $7e6d6d75bd13cce5$export$d7f3ab4b3437ad97 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
6327
+ position: absolute;
6328
+ right: 5px;
6329
+ display: flex;
6330
+ justify-content: center;
6331
+ align-items: center;
6332
+ background-color: ${({ theme: theme })=>theme.primaryColor};
6333
+ border: none;
6334
+ border-radius: 8px;
6335
+ height: 32px;
6336
+ color: #fff;
6337
+ font-weight: 600;
6338
+ font-size: 16px;
6339
+ padding: 8px 12px;
6340
+ line-height: 18px;
6341
+ `;
6342
+ const $7e6d6d75bd13cce5$export$c22678f0e7b404e0 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).p`
6343
+ font-size: 12px;
6344
+ font-weight: 400;
6345
+ max-width: 300px;
6346
+ text-align: center;
6347
+ `;
6348
+
6349
+
6350
+
6351
+
5919
6352
 
5920
6353
 
6354
+ const $daca1602b495441e$var$Link = ({ color: color })=>{
6355
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
6356
+ width: "24",
6357
+ height: "24",
6358
+ viewBox: "0 0 24 24",
6359
+ fill: "none",
6360
+ xmlns: "http://www.w3.org/2000/svg",
6361
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
6362
+ d: "m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1.004 1.004 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1.004 1.004 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1.004 1.004 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.471 2.471 0 0 1 0 3.5l-3.88 3.88a1.002 1.002 0 0 0 .325 1.639.999.999 0 0 0 1.095-.219l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.92-4.92a1.004 1.004 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z",
6363
+ fill: color || "#fff"
6364
+ })
6365
+ });
6366
+ };
6367
+ var $daca1602b495441e$export$2e2bcd8739ae039 = $daca1602b495441e$var$Link;
5921
6368
 
5922
6369
 
5923
6370
 
@@ -5970,6 +6417,67 @@ const $e8ac63718934c648$export$c7df1b15b59b1df2 = /*#__PURE__*/ (0, $jQDcL$react
5970
6417
  });
5971
6418
 
5972
6419
 
6420
+
6421
+
6422
+ const $23c39d8ee81f4f67$var$InvitationTile = ({ show: show , orientation: orientation , width: width , height: height })=>{
6423
+ const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
6424
+ const { options: options } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
6425
+ const onCopyCallLinkClick = async ()=>{
6426
+ try {
6427
+ await (0, $0bea101d3ef852fb$export$2e2bcd8739ae039)(options.sharedURL || window.location.href);
6428
+ (0, $84c6cbcbb594d072$export$3a57e165650c636f)(t("copyLink.copied"), {
6429
+ duration: 2000
6430
+ });
6431
+ } catch (copyError) {
6432
+ console.warn(copyError);
6433
+ (0, $84c6cbcbb594d072$export$3a57e165650c636f)(t("copyLink.error"), {
6434
+ icon: (0, $e8ac63718934c648$export$edf27be85e5f6da0)
6435
+ });
6436
+ }
6437
+ };
6438
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $7e6d6d75bd13cce5$export$dd2ac23a70f320dd), {
6439
+ show: show,
6440
+ width: width,
6441
+ height: height,
6442
+ orientation: orientation,
6443
+ children: [
6444
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $7e6d6d75bd13cce5$export$2dabfbe763cc7a4), {
6445
+ children: t("invite.title")
6446
+ }),
6447
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $7e6d6d75bd13cce5$export$6ed6e36e1b456f96), {
6448
+ children: [
6449
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $7e6d6d75bd13cce5$export$5f759de1870a3e41), {
6450
+ children: [
6451
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $daca1602b495441e$export$2e2bcd8739ae039), {
6452
+ color: "black"
6453
+ }),
6454
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $7e6d6d75bd13cce5$export$c6b180e8ec79154e), {
6455
+ children: options.sharedURL || window.location.href
6456
+ })
6457
+ ]
6458
+ }),
6459
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $7e6d6d75bd13cce5$export$d7f3ab4b3437ad97), {
6460
+ onClick: onCopyCallLinkClick,
6461
+ children: t("invite.copy")
6462
+ })
6463
+ ]
6464
+ }),
6465
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $7e6d6d75bd13cce5$export$c22678f0e7b404e0), {
6466
+ children: t("invite.description")
6467
+ })
6468
+ ]
6469
+ });
6470
+ };
6471
+ var $23c39d8ee81f4f67$export$2e2bcd8739ae039 = $23c39d8ee81f4f67$var$InvitationTile;
6472
+
6473
+
6474
+
6475
+
6476
+
6477
+
6478
+
6479
+
6480
+
5973
6481
  const $537dcc6df507dc4a$var$Container = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
5974
6482
  background-color: rgba(45, 45, 45, 0.75);
5975
6483
  display: flex;
@@ -6036,6 +6544,7 @@ const $88b23a8428e67b66$var$Video = ()=>{
6036
6544
  });
6037
6545
  const { streams: streams , highlightedTile: highlightedTile , dispatch: dispatch } = (0, $3f6e908c45fcc5b3$export$b5633a7cfbe42d9f)();
6038
6546
  const [containerWidth, containerHeight] = (0, $56e1e7a85d8bf4bb$export$2b86bedf890eab8)(remoteTilesContainerRef.current);
6547
+ const showInvitation = streams.length < 1 && !highlightedTile && containerWidth > 0;
6039
6548
  (0, $jQDcL$react.useEffect)(()=>{
6040
6549
  if (options.GDPRDisclaimer) (0, $537dcc6df507dc4a$export$2e2bcd8739ae039)({
6041
6550
  message: "Para mejorar la calidad de nuestro servicio, esta llamada ser\xe1 grabada",
@@ -6046,9 +6555,10 @@ const $88b23a8428e67b66$var$Video = ()=>{
6046
6555
  options.GDPRDisclaimer
6047
6556
  ]);
6048
6557
  (0, $jQDcL$react.useEffect)(()=>{
6049
- if (remoteTilesContainerRef?.current && containerWidth && containerHeight) {
6558
+ if (remoteTilesContainerRef?.current) {
6050
6559
  const ratio = 1;
6051
- const numberOfTiles = remoteTilesContainerRef.current.childElementCount;
6560
+ let numberOfTiles = remoteTilesContainerRef.current.childElementCount;
6561
+ if (!showInvitation) numberOfTiles -= 1;
6052
6562
  const videoWidth = (0, $7de6ded9bdec6f42$export$4d43009c33055644)({
6053
6563
  availableWidth: containerWidth - 16 * (numberOfTiles - 1),
6054
6564
  availableHeight: containerHeight - 16 * (numberOfTiles - 1),
@@ -6066,7 +6576,8 @@ const $88b23a8428e67b66$var$Video = ()=>{
6066
6576
  containerWidth,
6067
6577
  containerHeight,
6068
6578
  streams.length,
6069
- highlightedTile
6579
+ highlightedTile,
6580
+ showInvitation,
6070
6581
  ]);
6071
6582
  (0, $jQDcL$react.useEffect)(()=>{
6072
6583
  if (userInteractionTriggered) {
@@ -6219,6 +6730,12 @@ const $88b23a8428e67b66$var$Video = ()=>{
6219
6730
  width: tileSize.width,
6220
6731
  height: tileSize.height
6221
6732
  }, stream.id);
6733
+ }),
6734
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $23c39d8ee81f4f67$export$2e2bcd8739ae039), {
6735
+ show: showInvitation,
6736
+ width: `${tileSize.width}px`,
6737
+ height: `${tileSize.height}px`,
6738
+ orientation: orientation
6222
6739
  })
6223
6740
  ]
6224
6741
  })
@@ -6335,7 +6852,7 @@ var $39ceb925b3865754$export$2e2bcd8739ae039 = $39ceb925b3865754$var$Spinner;
6335
6852
 
6336
6853
 
6337
6854
 
6338
- const $3b6953f72db3bb17$var$YoutubeIcon = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
6855
+ const $3b6953f72db3bb17$var$YoutubeIcon = ({ color: color })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
6339
6856
  width: "24",
6340
6857
  height: "25",
6341
6858
  viewBox: "0 0 24 25",
@@ -6343,29 +6860,13 @@ const $3b6953f72db3bb17$var$YoutubeIcon = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxr
6343
6860
  xmlns: "http://www.w3.org/2000/svg",
6344
6861
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
6345
6862
  d: "M23 10.21a8.499 8.499 0 0 0-.91-4.13 2.92 2.92 0 0 0-1.72-1A78.362 78.362 0 0 0 12 4.77a78.45 78.45 0 0 0-8.34.3 2.87 2.87 0 0 0-1.46.74c-.9.83-1 2.25-1.1 3.45a48.29 48.29 0 0 0 0 6.48 9.55 9.55 0 0 0 .3 2c.12.505.365.972.71 1.36a2.86 2.86 0 0 0 1.49.78c2.156.266 4.328.376 6.5.33 3.5.05 6.57 0 10.2-.28a2.88 2.88 0 0 0 1.53-.78c.28-.28.49-.623.61-1 .358-1.097.533-2.246.52-3.4.04-.56.04-3.94.04-4.54ZM9.74 15.35V9.16l5.92 3.11c-1.66.92-3.85 1.96-5.92 3.08Z",
6346
- fill: "#fff"
6863
+ fill: color || "#fff"
6347
6864
  })
6348
6865
  });
6349
6866
  var $3b6953f72db3bb17$export$2e2bcd8739ae039 = $3b6953f72db3bb17$var$YoutubeIcon;
6350
6867
 
6351
6868
 
6352
6869
 
6353
- const $daca1602b495441e$var$Link = ({ color: color })=>{
6354
- return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
6355
- width: "24",
6356
- height: "24",
6357
- viewBox: "0 0 24 24",
6358
- fill: "none",
6359
- xmlns: "http://www.w3.org/2000/svg",
6360
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
6361
- d: "m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1.004 1.004 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1.004 1.004 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1.004 1.004 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.471 2.471 0 0 1 0 3.5l-3.88 3.88a1.002 1.002 0 0 0 .325 1.639.999.999 0 0 0 1.095-.219l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.92-4.92a1.004 1.004 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z",
6362
- fill: color || "#fff"
6363
- })
6364
- });
6365
- };
6366
- var $daca1602b495441e$export$2e2bcd8739ae039 = $daca1602b495441e$var$Link;
6367
-
6368
-
6369
6870
 
6370
6871
 
6371
6872
 
@@ -6497,7 +6998,7 @@ const $9dfd9e2286cffa66$var$HighlightButton = ()=>{
6497
6998
  },
6498
6999
  {
6499
7000
  id: "youtube",
6500
- title: "YouTube",
7001
+ title: t("youtube.title"),
6501
7002
  jsxIcon: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3b6953f72db3bb17$export$2e2bcd8739ae039), {}),
6502
7003
  action: onYoutubeClick
6503
7004
  },
@@ -6693,15 +7194,20 @@ var $a21b2aa064cb6c32$export$2e2bcd8739ae039 = $a21b2aa064cb6c32$var$ControlBar;
6693
7194
 
6694
7195
 
6695
7196
 
6696
- const $b387679730856fb1$export$9d03e7b857083c37 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
6697
- position: absolute;
6698
- width: 100%;
6699
- bottom: ${(props)=>props.open ? 0 : "-340px"};
7197
+
7198
+
7199
+
7200
+
7201
+
7202
+ const $b387679730856fb1$export$9d03e7b857083c37 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
7203
+ position: absolute;
7204
+ width: 100%;
7205
+ bottom: ${(props)=>props.open ? 0 : "-500px"};
6700
7206
  transition: all 0.4s;
6701
7207
 
6702
7208
  ${(props)=>{
6703
7209
  if (props.desktop) return (0, $jQDcL$styledcomponents.css)`
6704
- bottom: ${props.open ? 0 : "calc(-340px - (100vh / 2))"};
7210
+ bottom: ${props.open ? 0 : "calc(-500px - (100vh / 2))"};
6705
7211
  height: 100%;
6706
7212
  display: flex;
6707
7213
  justify-content: center;
@@ -6712,11 +7218,12 @@ const $b387679730856fb1$export$9d03e7b857083c37 = (0, ($parcel$interopDefault($j
6712
7218
  const $b387679730856fb1$export$6bc4d6c63b7f8b75 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
6713
7219
  display: flex;
6714
7220
  flex-direction: column;
6715
- height: 340px;
7221
+ height: 500px;
6716
7222
  max-height: 100vh;
6717
- background-color: ${(props)=>props.theme.settingsBackgroundColor};
6718
- color: ${(props)=>props.theme.settingsTextColor};
7223
+ background-color: ${(props)=>props.theme.popupBackgroundPrimaryColor};
7224
+ color: ${(props)=>props.theme.popupTitleColor};
6719
7225
  border-radius: ${(props)=>props.desktop ? "20px" : "20px 20px 0 0"};
7226
+ padding-bottom: ${({ desktop: desktop })=>desktop ? 0 : "12px"};
6720
7227
  `;
6721
7228
  const $b387679730856fb1$export$f8e80e2c9abbb7eb = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
6722
7229
  display: flex;
@@ -6729,15 +7236,30 @@ const $b387679730856fb1$export$f8e80e2c9abbb7eb = (0, ($parcel$interopDefault($j
6729
7236
  font-weight: 600;
6730
7237
  }
6731
7238
  `;
7239
+ const $b387679730856fb1$export$2bd9c7c3b36c82cd = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
7240
+ display: flex;
7241
+ align-items: center;
7242
+
7243
+ h4 {
7244
+ margin: 0 0 0 8px;
7245
+ font-weight: 600;
7246
+ line-height: 19px;
7247
+ }
7248
+
7249
+ svg {
7250
+ width: 20px;
7251
+ height: 20px;
7252
+ }
7253
+ `;
6732
7254
  const $b387679730856fb1$export$b421c25a8e0ea22e = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
6733
7255
  display: flex;
6734
7256
  justify-content: center;
6735
7257
  align-items: center;
6736
7258
  border: none;
6737
- background-color: ${(props)=>props.theme.settingsCloseBackgroundColor};
7259
+ background-color: ${(props)=>props.theme.popupBackgroundSecondaryColor};
6738
7260
  border-radius: 50%;
6739
- height: 24px;
6740
- width: 24px;
7261
+ height: 30px;
7262
+ width: 30px;
6741
7263
  padding: 0;
6742
7264
 
6743
7265
  svg {
@@ -6752,6 +7274,7 @@ const $b387679730856fb1$export$b421c25a8e0ea22e = (0, ($parcel$interopDefault($j
6752
7274
  const $b387679730856fb1$export$dc1a3f6996a97083 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
6753
7275
  display: flex;
6754
7276
  justify-content: center;
7277
+ align-items: center;
6755
7278
  flex: 1;
6756
7279
  height: 0;
6757
7280
 
@@ -6765,13 +7288,57 @@ const $b387679730856fb1$export$51760c3b0f5567d2 = (0, ($parcel$interopDefault($j
6765
7288
  display: flex;
6766
7289
  justify-content: center;
6767
7290
  text-align: center;
6768
- margin: 10px 16% 20px;
7291
+ margin: 0px 16% 20px;
6769
7292
  font-size: 14px;
6770
7293
  `;
7294
+ const $b387679730856fb1$export$6a789d1ce3bcb863 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
7295
+ font-size: 100%;
7296
+ font-family: inherit;
7297
+ font-weight: 700;
7298
+ background-color: inherit;
7299
+ border: 0;
7300
+ padding: 0;
7301
+ margin: 20px 0;
7302
+ display: flex;
7303
+ flex-direction: row;
7304
+ gap: 5px;
7305
+ align-items: center;
7306
+ justify-content: center;
7307
+ color: ${({ theme: theme })=>theme.popupTitleColor};
7308
+ `;
7309
+ const $b387679730856fb1$export$c58a46cd2027881e = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).image`
7310
+ position: absolute;
7311
+ with: 70px;
7312
+ height: 70px;
7313
+ `;
7314
+
7315
+
7316
+
7317
+ const $8745dbdbe55f5ff3$var$QuickConnectLogo = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("svg", {
7318
+ width: "71",
7319
+ height: "70",
7320
+ viewBox: "0 0 71 70",
7321
+ fill: "none",
7322
+ xmlns: "http://www.w3.org/2000/svg",
7323
+ children: [
7324
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
7325
+ d: "M2 35c0-7.171.386-12.832 1.38-17.303.99-4.454 2.562-7.635 4.872-9.945 2.31-2.31 5.491-3.882 9.945-4.872C22.668 1.886 28.33 1.5 35.5 1.5c7.171 0 12.832.386 17.303 1.38 4.454.99 7.635 2.562 9.945 4.872 2.31 2.31 3.882 5.491 4.872 9.945C68.614 22.168 69 27.83 69 35c0 7.171-.386 12.832-1.38 17.303-.99 4.454-2.562 7.635-4.872 9.945-2.31 2.31-5.491 3.882-9.945 4.872-4.471.994-10.132 1.38-17.303 1.38-7.171 0-12.832-.386-17.303-1.38-4.454-.99-7.635-2.562-9.945-4.872-2.31-2.31-3.882-5.491-4.872-9.945C2.386 47.832 2 42.17 2 35Z",
7326
+ fill: "#000",
7327
+ stroke: "#fff",
7328
+ strokeWidth: "3"
7329
+ }),
7330
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
7331
+ d: "M35.72 55.833c2.3 0 4.229-1.91 3.518-4.099a13.01 13.01 0 0 0-3.045-5.058c-2.365-2.43-5.572-3.794-8.917-3.794-3.344 0-6.551 1.365-8.916 3.794a13.01 13.01 0 0 0-3.045 5.058c-.711 2.189 1.217 4.099 3.518 4.099H35.72ZM35.28 14.167c-2.3 0-4.229 1.91-3.518 4.099a13.008 13.008 0 0 0 3.045 5.058c2.365 2.43 5.572 3.793 8.917 3.793 3.344 0 6.551-1.364 8.916-3.793a13.005 13.005 0 0 0 3.045-5.058c.711-2.189-1.217-4.099-3.519-4.099H35.281ZM43.724 51.667c0 2.301 1.916 4.231 4.087 3.467a12.565 12.565 0 0 0 4.829-3.094c2.365-2.428 3.693-5.722 3.693-9.157 0-3.435-1.328-6.729-3.693-9.158a12.565 12.565 0 0 0-4.829-3.093c-2.17-.764-4.087 1.166-4.087 3.467v17.568ZM27.277 18.333c0-2.3-1.917-4.23-4.088-3.467a12.565 12.565 0 0 0-4.829 3.094c-2.364 2.429-3.693 5.723-3.693 9.157 0 3.435 1.329 6.729 3.693 9.158a12.565 12.565 0 0 0 4.83 3.093c2.17.764 4.087-1.166 4.087-3.467V18.333Z",
7332
+ fill: "#fff"
7333
+ })
7334
+ ]
7335
+ });
7336
+ var $8745dbdbe55f5ff3$export$2e2bcd8739ae039 = $8745dbdbe55f5ff3$var$QuickConnectLogo;
6771
7337
 
6772
7338
 
6773
7339
  const $681806ce8015ae4d$var$QuickConnect = ()=>{
6774
7340
  const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
7341
+ const themeContext = (0, $jQDcL$react.useContext)((0, $jQDcL$styledcomponents.ThemeContext));
6775
7342
  const QuickConnectContainerRef = (0, $jQDcL$react.useRef)(null);
6776
7343
  const QuickConnectRef = (0, $jQDcL$react.useRef)(null);
6777
7344
  const { selfPeerId: selfPeerId , profile: profile , isQuickConnectPopupVisible: isQuickConnectPopupVisible , setIsQuickConnectPopupVisible: setIsQuickConnectPopupVisible , options: options , orientation: orientation , } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
@@ -6798,6 +7365,22 @@ const $681806ce8015ae4d$var$QuickConnect = ()=>{
6798
7365
  selfPeerId,
6799
7366
  profile.name
6800
7367
  ]);
7368
+ const onCopyCallLinkClick = (0, $jQDcL$react.useCallback)(async ()=>{
7369
+ try {
7370
+ await (0, $0bea101d3ef852fb$export$2e2bcd8739ae039)(qrCodeURL || window.location.href);
7371
+ (0, $84c6cbcbb594d072$export$3a57e165650c636f)(t("copyLink.copied"), {
7372
+ duration: 2000
7373
+ });
7374
+ } catch (copyError) {
7375
+ console.warn(copyError);
7376
+ (0, $84c6cbcbb594d072$export$3a57e165650c636f)(t("copyLink.error"), {
7377
+ icon: (0, $e8ac63718934c648$export$edf27be85e5f6da0)
7378
+ });
7379
+ }
7380
+ }, [
7381
+ t,
7382
+ qrCodeURL
7383
+ ]);
6801
7384
  const onQuickConnectPopupCloseClick = ()=>setIsQuickConnectPopupVisible(false);
6802
7385
  (0, $jQDcL$react.useEffect)(()=>{
6803
7386
  const onCustomMessage = (event)=>{
@@ -6812,7 +7395,9 @@ const $681806ce8015ae4d$var$QuickConnect = ()=>{
6812
7395
  setIsQuickConnectPopupVisible
6813
7396
  ]);
6814
7397
  (0, $jQDcL$react.useEffect)(()=>{
6815
- $jQDcL$qrcode.toCanvas(QuickConnectRef.current, qrCodeURL);
7398
+ $jQDcL$qrcode.toCanvas(QuickConnectRef.current, qrCodeURL, {
7399
+ errorCorrectionLevel: "M"
7400
+ });
6816
7401
  }, [
6817
7402
  qrCodeURL
6818
7403
  ]);
@@ -6845,8 +7430,15 @@ const $681806ce8015ae4d$var$QuickConnect = ()=>{
6845
7430
  children: [
6846
7431
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $b387679730856fb1$export$f8e80e2c9abbb7eb), {
6847
7432
  children: [
6848
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("h4", {
6849
- children: t("quickConnect.scanTitle")
7433
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $b387679730856fb1$export$2bd9c7c3b36c82cd), {
7434
+ children: [
7435
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $cce7f1c9e9c29503$export$6470d09a29d34d08), {
7436
+ color: themeContext.popupTitleColor
7437
+ }),
7438
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("h4", {
7439
+ children: t("quickConnect.scanTitle")
7440
+ })
7441
+ ]
6850
7442
  }),
6851
7443
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $b387679730856fb1$export$b421c25a8e0ea22e), {
6852
7444
  onClick: onQuickConnectPopupCloseClick,
@@ -6854,13 +7446,27 @@ const $681806ce8015ae4d$var$QuickConnect = ()=>{
6854
7446
  })
6855
7447
  ]
6856
7448
  }),
6857
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $b387679730856fb1$export$dc1a3f6996a97083), {
6858
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("canvas", {
6859
- ref: QuickConnectRef
6860
- })
7449
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $b387679730856fb1$export$dc1a3f6996a97083), {
7450
+ children: [
7451
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $b387679730856fb1$export$c58a46cd2027881e), {
7452
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8745dbdbe55f5ff3$export$2e2bcd8739ae039), {})
7453
+ }),
7454
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("canvas", {
7455
+ ref: QuickConnectRef
7456
+ })
7457
+ ]
6861
7458
  }),
6862
7459
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $b387679730856fb1$export$51760c3b0f5567d2), {
6863
7460
  children: t("quickConnect.scan")
7461
+ }),
7462
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $b387679730856fb1$export$6a789d1ce3bcb863), {
7463
+ onClick: onCopyCallLinkClick,
7464
+ children: [
7465
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $cce7f1c9e9c29503$export$92ce62e1201c4fc0), {
7466
+ color: "#686868"
7467
+ }),
7468
+ t("copyLink.description")
7469
+ ]
6864
7470
  })
6865
7471
  ]
6866
7472
  })
@@ -7639,15 +8245,32 @@ var $7d4fa7ceb4c29739$export$2e2bcd8739ae039 = $7d4fa7ceb4c29739$var$Menu;
7639
8245
 
7640
8246
 
7641
8247
 
8248
+ const $57a90aad512ef25e$var$CircledTopArrow = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
8249
+ width: "21",
8250
+ height: "20",
8251
+ viewBox: "0 0 21 20",
8252
+ fill: "none",
8253
+ xmlns: "http://www.w3.org/2000/svg",
8254
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
8255
+ d: "M11.091 6.908a.833.833 0 0 0-.275-.175.833.833 0 0 0-.633 0 .833.833 0 0 0-.275.175l-2.5 2.5a.837.837 0 1 0 1.183 1.184l1.075-1.084V12.5a.833.833 0 1 0 1.667 0V9.508l1.075 1.084a.833.833 0 0 0 1.183 0 .833.833 0 0 0 0-1.184l-2.5-2.5Zm-.592-5.242a8.333 8.333 0 1 0 0 16.667 8.333 8.333 0 0 0 0-16.666Zm0 15a6.667 6.667 0 1 1 0-13.334 6.667 6.667 0 0 1 0 13.334Z",
8256
+ fill: "#fff"
8257
+ })
8258
+ });
8259
+ var $57a90aad512ef25e$export$2e2bcd8739ae039 = $57a90aad512ef25e$var$CircledTopArrow;
8260
+
8261
+
8262
+
8263
+
8264
+ const $219bb3131afe1272$var$modalHeight = (desktop)=>desktop ? "215px" : "227px";
7642
8265
  const $219bb3131afe1272$export$b679a9a7caefa4b1 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
7643
8266
  position: absolute;
7644
8267
  width: 100%;
7645
- bottom: ${(props)=>props.open ? 0 : "-220px"};
8268
+ bottom: ${(props)=>props.open ? 0 : `-${$219bb3131afe1272$var$modalHeight(props.desktop)}`};
7646
8269
  transition: all 0.4s;
7647
8270
 
7648
8271
  ${(props)=>{
7649
8272
  if (props.desktop) return (0, $jQDcL$styledcomponents.css)`
7650
- bottom: ${props.open ? 0 : "calc(-220px - (100vh / 2))"};
8273
+ bottom: ${props.open ? 0 : `calc(-${$219bb3131afe1272$var$modalHeight(props.desktop)} - (100vh / 2))`};
7651
8274
  height: 100%;
7652
8275
  display: flex;
7653
8276
  justify-content: center;
@@ -7659,12 +8282,12 @@ const $219bb3131afe1272$export$c506828286db9a46 = (0, ($parcel$interopDefault($j
7659
8282
  display: flex;
7660
8283
  flex-direction: column;
7661
8284
  width: ${(props)=>props.desktop ? "375px" : "100%"};
7662
- height: 220px;
8285
+ height: ${({ desktop: desktop })=>$219bb3131afe1272$var$modalHeight(desktop)};
7663
8286
  max-height: 100vh;
7664
- background-color: ${(props)=>props.theme.settingsBackgroundColor};
7665
- color: ${(props)=>props.theme.settingsTextColor};
8287
+ background-color: ${(props)=>props.theme.popupBackgroundPrimaryColor};
8288
+ color: ${(props)=>props.theme.popupTitleColor};
7666
8289
  border-radius: ${(props)=>props.desktop ? "20px" : "20px 20px 0 0"};
7667
- padding: 12px 14px 30px;
8290
+ padding: ${({ desktop: desktop })=>desktop ? "16px 14px" : "16px 14px 28px"};
7668
8291
  box-sizing: border-box;
7669
8292
  `;
7670
8293
  const $219bb3131afe1272$export$f39d8ef0ab6ab3de = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
@@ -7693,10 +8316,10 @@ const $219bb3131afe1272$export$7ae684a6a708b51d = (0, ($parcel$interopDefault($j
7693
8316
  justify-content: center;
7694
8317
  align-items: center;
7695
8318
  border: none;
7696
- background-color: ${(props)=>props.theme.settingsCloseBackgroundColor};
8319
+ background-color: ${(props)=>props.theme.popupBackgroundSecondaryColor};
7697
8320
  border-radius: 50%;
7698
- height: 24px;
7699
- width: 24px;
8321
+ height: 30px;
8322
+ width: 30px;
7700
8323
  padding: 0;
7701
8324
 
7702
8325
  svg {
@@ -7728,9 +8351,9 @@ const $219bb3131afe1272$export$176dd61d50c7f3d7 = (0, ($parcel$interopDefault($j
7728
8351
  input {
7729
8352
  padding: 16px 10px 16px 20px;
7730
8353
  border-radius: 15px;
7731
- background-color: #4e4e4e;
7732
- border: 1px solid ${(props)=>props.errored ? "#d84949" : "transparent"};
7733
- color: #fff;
8354
+ background-color: ${({ theme: theme })=>theme.popupBackgroundSecondaryColor};
8355
+ border: 1px solid ${(props)=>props.errored ? "#d84949" : props.theme.popupBorderColor};
8356
+ color: #878787;
7734
8357
 
7735
8358
  &:focus {
7736
8359
  outline: none;
@@ -7751,13 +8374,23 @@ const $219bb3131afe1272$export$baf775d6bf9683d5 = (0, ($parcel$interopDefault($j
7751
8374
  const $219bb3131afe1272$export$3711c5e6a7ba3fdc = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
7752
8375
  background-color: ${({ theme: theme })=>theme.primaryColor};
7753
8376
  padding: 8px 18px;
7754
- border-radius: 50px;
8377
+ width: 100%;
8378
+ height: 46px;
8379
+ border-radius: 15px;
7755
8380
  margin: 30px auto 0;
7756
8381
  border: none;
7757
8382
  color: #fff;
7758
8383
  font-size: 16px;
7759
8384
  font-weight: 700;
7760
8385
  line-height: 18px;
8386
+
8387
+ span {
8388
+ display: flex;
8389
+ flex-direction: row;
8390
+ gap: 5px;
8391
+ alig-items: center;
8392
+ justify-content: center;
8393
+ }
7761
8394
  `;
7762
8395
 
7763
8396
 
@@ -7765,6 +8398,7 @@ const $219bb3131afe1272$export$3711c5e6a7ba3fdc = (0, ($parcel$interopDefault($j
7765
8398
  const $696ded7a5399bcd4$var$youtubeIDRegExp = /.*(?:youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=)([^#&?]*).*/;
7766
8399
  const $696ded7a5399bcd4$var$YoutubePopup = ()=>{
7767
8400
  const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
8401
+ const themeContext = (0, $jQDcL$react.useContext)((0, $jQDcL$styledcomponents.ThemeContext));
7768
8402
  const youtubePopupRef = (0, $jQDcL$react.useRef)(null);
7769
8403
  const [youtubeInputValue, setYoutubeInputValue] = (0, $jQDcL$react.useState)("");
7770
8404
  const [errorMessage, setErrorMessage] = (0, $jQDcL$react.useState)(null);
@@ -7812,7 +8446,9 @@ const $696ded7a5399bcd4$var$YoutubePopup = ()=>{
7812
8446
  children: [
7813
8447
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $219bb3131afe1272$export$11781939bbc73f8b), {
7814
8448
  children: [
7815
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3b6953f72db3bb17$export$2e2bcd8739ae039), {}),
8449
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3b6953f72db3bb17$export$2e2bcd8739ae039), {
8450
+ color: themeContext.popupTitleColor
8451
+ }),
7816
8452
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("h4", {
7817
8453
  children: t("youtube.title")
7818
8454
  })
@@ -7830,10 +8466,6 @@ const $696ded7a5399bcd4$var$YoutubePopup = ()=>{
7830
8466
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $219bb3131afe1272$export$176dd61d50c7f3d7), {
7831
8467
  errored: Boolean(errorMessage),
7832
8468
  children: [
7833
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("label", {
7834
- htmlFor: "youtube-popup-input",
7835
- children: t("youtube.url")
7836
- }),
7837
8469
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("input", {
7838
8470
  id: "youtube-popup-input",
7839
8471
  placeholder: "https://www.youtube.com/watch?v=abcdef",
@@ -7850,7 +8482,12 @@ const $696ded7a5399bcd4$var$YoutubePopup = ()=>{
7850
8482
  }),
7851
8483
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $219bb3131afe1272$export$3711c5e6a7ba3fdc), {
7852
8484
  type: "submit",
7853
- children: t("youtube.share")
8485
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("span", {
8486
+ children: [
8487
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $57a90aad512ef25e$export$2e2bcd8739ae039), {}),
8488
+ t("youtube.share")
8489
+ ]
8490
+ })
7854
8491
  })
7855
8492
  ]
7856
8493
  })
@@ -7870,20 +8507,6 @@ var $696ded7a5399bcd4$export$2e2bcd8739ae039 = $696ded7a5399bcd4$var$YoutubePopu
7870
8507
 
7871
8508
 
7872
8509
 
7873
- const $57a90aad512ef25e$var$CircledTopArrow = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
7874
- width: "21",
7875
- height: "20",
7876
- viewBox: "0 0 21 20",
7877
- fill: "none",
7878
- xmlns: "http://www.w3.org/2000/svg",
7879
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
7880
- d: "M11.091 6.908a.833.833 0 0 0-.275-.175.833.833 0 0 0-.633 0 .833.833 0 0 0-.275.175l-2.5 2.5a.837.837 0 1 0 1.183 1.184l1.075-1.084V12.5a.833.833 0 1 0 1.667 0V9.508l1.075 1.084a.833.833 0 0 0 1.183 0 .833.833 0 0 0 0-1.184l-2.5-2.5Zm-.592-5.242a8.333 8.333 0 1 0 0 16.667 8.333 8.333 0 0 0 0-16.666Zm0 15a6.667 6.667 0 1 1 0-13.334 6.667 6.667 0 0 1 0 13.334Z",
7881
- fill: "#fff"
7882
- })
7883
- });
7884
- var $57a90aad512ef25e$export$2e2bcd8739ae039 = $57a90aad512ef25e$var$CircledTopArrow;
7885
-
7886
-
7887
8510
 
7888
8511
 
7889
8512
 
@@ -8004,8 +8627,8 @@ const $2d8fe9775ff247d9$export$fcade06574a60ff0 = (0, ($parcel$interopDefault($j
8004
8627
  border: none;
8005
8628
  background-color: ${(props)=>props.theme.popupBackgroundSecondaryColor};
8006
8629
  border-radius: 50%;
8007
- height: 24px;
8008
- width: 24px;
8630
+ height: 30px;
8631
+ width: 30px;
8009
8632
  padding: 0;
8010
8633
 
8011
8634
  svg {
@@ -8303,80 +8926,397 @@ var $e38290b50aaba0e3$export$2e2bcd8739ae039 = $e38290b50aaba0e3$var$LinksharePo
8303
8926
 
8304
8927
 
8305
8928
 
8306
- const $e6950939129bcd4b$export$8376625f8bb18347 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
8307
- position: absolute;
8308
- width: 100%;
8309
- height: 100%;
8310
- background-color: ${(props)=>props.open ? "rgba(0, 0, 0, 0.9)" : "transparent"};
8311
- z-index: ${(props)=>props.open ? 100 : -1};
8312
- overflow: hidden;
8313
- transition: all ${(props)=>props.open ? "0.2s" : "0.6s"};
8314
- `;
8315
8929
 
8316
8930
 
8317
- const $5f509eaff0d9c05a$var$Settings = ()=>{
8318
- const { isQuickConnectPopupVisible: isQuickConnectPopupVisible , isSettingsMenuVisible: isSettingsMenuVisible , isYoutubePopupVisible: isYoutubePopupVisible , isLinksharePopupVisible: isLinksharePopupVisible , } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
8319
- const open = isQuickConnectPopupVisible || isSettingsMenuVisible || isYoutubePopupVisible || isLinksharePopupVisible;
8320
- return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $e6950939129bcd4b$export$8376625f8bb18347), {
8321
- open: open,
8322
- children: [
8323
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $681806ce8015ae4d$export$2e2bcd8739ae039), {}),
8324
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $7d4fa7ceb4c29739$export$2e2bcd8739ae039), {}),
8325
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $696ded7a5399bcd4$export$2e2bcd8739ae039), {}),
8326
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $e38290b50aaba0e3$export$2e2bcd8739ae039), {})
8327
- ]
8328
- });
8329
- };
8330
- var $5f509eaff0d9c05a$export$2e2bcd8739ae039 = $5f509eaff0d9c05a$var$Settings;
8331
8931
 
8332
8932
 
8333
8933
 
8334
8934
 
8335
8935
 
8936
+ const $3e04235fac70629f$var$CircledCheckmark = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
8937
+ width: "20",
8938
+ height: "20",
8939
+ viewBox: "0 0 20 20",
8940
+ fill: "none",
8941
+ xmlns: "http://www.w3.org/2000/svg",
8942
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
8943
+ d: "M12.266 7.325 8.691 10.91 7.316 9.534a.833.833 0 1 0-1.175 1.175l1.958 1.966a.831.831 0 0 0 .592.242.833.833 0 0 0 .583-.242l4.167-4.166a.833.833 0 1 0-1.175-1.184ZM9.999 1.667a8.333 8.333 0 1 0 0 16.667 8.333 8.333 0 0 0 0-16.667Zm0 15a6.667 6.667 0 1 1 0-13.334 6.667 6.667 0 0 1 0 13.334Z",
8944
+ fill: "#fff"
8945
+ })
8946
+ });
8947
+ var $3e04235fac70629f$export$2e2bcd8739ae039 = $3e04235fac70629f$var$CircledCheckmark;
8336
8948
 
8337
8949
 
8338
8950
 
8951
+ const $32119bad9969854e$var$modalHeight = (desktop)=>desktop ? "420px" : "432px";
8952
+ const $32119bad9969854e$export$b298b737d508d68e = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
8953
+ position: absolute;
8954
+ width: 100%;
8955
+ bottom: ${(props)=>props.open ? 0 : `-${$32119bad9969854e$var$modalHeight(props.desktop)}`};
8956
+ transition: all 0.4s;
8339
8957
 
8340
- const $bbe4b943c376008e$export$104f28dc79f055f4 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
8958
+ ${(props)=>{
8959
+ if (props.desktop) return (0, $jQDcL$styledcomponents.css)`
8960
+ bottom: ${props.open ? 0 : `calc(-${$32119bad9969854e$var$modalHeight(props.desktop)} - (100vh / 2))`};
8961
+ height: 100%;
8962
+ display: flex;
8963
+ justify-content: center;
8964
+ align-items: center;
8965
+ `;
8966
+ }}
8967
+ `;
8968
+ const $32119bad9969854e$export$156bb26b5a0d2f83 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
8341
8969
  display: flex;
8342
- flex: 1;
8343
8970
  flex-direction: column;
8344
- justify-content: center;
8971
+ width: ${(props)=>props.desktop ? "375px" : "100%"};
8972
+ height: ${({ desktop: desktop })=>$32119bad9969854e$var$modalHeight(desktop)};
8973
+ max-height: 100vh;
8974
+ background-color: ${(props)=>props.theme.popupBackgroundPrimaryColor};
8975
+ color: ${(props)=>props.theme.popupTitleColor};
8976
+ border-radius: ${(props)=>props.desktop ? "20px" : "20px 20px 0 0"};
8977
+ padding: 12px 14px 30px;
8978
+ box-sizing: border-box;
8979
+ `;
8980
+ const $32119bad9969854e$export$28a9baece842bd02 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
8981
+ display: flex;
8982
+ justify-content: space-between;
8345
8983
  align-items: center;
8346
- background-color: #000;
8347
- color: #fff;
8348
- padding-top: 70px;
8984
+ margin-bottom: 30px;
8349
8985
  `;
8350
- const $bbe4b943c376008e$export$51071a7ce784448 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).span`
8351
- font-size: 60px;
8986
+ const $32119bad9969854e$export$de75cb5a82158063 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
8987
+ display: flex;
8988
+ align-items: center;
8989
+
8990
+ h4 {
8991
+ margin: 0 0 0 8px;
8992
+ font-weight: 600;
8993
+ line-height: 19px;
8994
+ }
8995
+
8996
+ svg {
8997
+ width: 20px;
8998
+ height: 20px;
8999
+ }
8352
9000
  `;
8353
- const $bbe4b943c376008e$export$eebc018855fb0cb6 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).h1`
8354
- font-size: 28px;
8355
- font-weight: 600;
8356
- line-height: 33.6px;
9001
+ const $32119bad9969854e$export$ab8c73b78f24745 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
9002
+ display: flex;
9003
+ justify-content: center;
9004
+ align-items: center;
9005
+ border: none;
9006
+ background-color: ${(props)=>props.theme.popupBackgroundSecondaryColor};
9007
+ border-radius: 50%;
9008
+ height: 30px;
9009
+ width: 30px;
9010
+ padding: 0;
9011
+
9012
+ svg {
9013
+ width: 15px;
9014
+ height: 15px;
9015
+
9016
+ path {
9017
+ fill: #000;
9018
+ }
9019
+ }
8357
9020
  `;
8358
- const $bbe4b943c376008e$export$f4e7b895a81715e9 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).p`
8359
- font-size: 22px;
8360
- font-weight: 500;
8361
- line-height: 26.4px;
8362
- margin: 0;
9021
+ const $32119bad9969854e$export$8603bdc04df69ddb = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).form`
9022
+ display: flex;
9023
+ flex-direction: column;
8363
9024
  `;
8364
- const $bbe4b943c376008e$export$3a4deda42b6182b7 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
8365
- background-color: ${({ theme: theme })=>theme.primaryColor};
8366
- border: none;
8367
- border-radius: 50px;
8368
- padding: 12px 18px;
8369
- font-size: 16px;
8370
- font-weight: 600;
8371
- line-height: 18px;
8372
- color: #fff;
8373
- margin-top: 30px;
9025
+ const $32119bad9969854e$export$3f7ff862632a81a7 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
9026
+ display: flex;
9027
+ flex-direction: row;
9028
+ flex-wrap: wrap-reverse;
9029
+ gap: 10px 20px;
9030
+ width: 280px;
9031
+ margin: auto;
8374
9032
  `;
9033
+ const $32119bad9969854e$export$1058440c16b3a127 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).label`
9034
+ display: flex;
9035
+ flex-direction: column;
9036
+ position: relative;
9037
+ justify-content: center;
9038
+ flex-grow: 1;
8375
9039
 
8376
-
8377
- const $3d1bfd8f074b99b1$var$EndView = ()=>{
8378
- const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
8379
- const { streamState: streamState , setStreamState: setStreamState } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
9040
+ font-size: 16px;
9041
+ font-weight: 700;
9042
+ line-height: 10px;
9043
+ color: #686868;
9044
+ input[type='radio'] {
9045
+ appearance: none;
9046
+ border: ${(props)=>props.image ? 0 : `3px solid ${props.theme.popupBorderColor}`};
9047
+ background-color: ${({ theme: theme })=>theme.popupBackgroundThirdColor};
9048
+ background-position: 0 0;
9049
+ background-image: ${({ image: image })=>image ? `url(${image})` : undefined};
9050
+ height: 80px;
9051
+ min-width: 80px;
9052
+ border-radius: 10px;
9053
+ margin: 0;
9054
+ box-sizing: border-box;
9055
+
9056
+ &:checked {
9057
+ background-position: -3px -3px;
9058
+ border: 3px solid ${({ theme: theme })=>theme.primaryColor};
9059
+ }
9060
+
9061
+ &:checked + span {
9062
+ color: ${({ theme: theme })=>theme.primaryColor};
9063
+ }
9064
+ }
9065
+
9066
+ &:hover input[type='radio'],
9067
+ span {
9068
+ cursor: pointer;
9069
+ }
9070
+
9071
+ span {
9072
+ position: absolute;
9073
+ width: 100%;
9074
+ text-align: center;
9075
+ display: ${({ image: image })=>image ? "none" : "inline"};
9076
+ }
9077
+ `;
9078
+ const $32119bad9969854e$export$dfc919b3320e9811 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
9079
+ background-color: ${({ theme: theme })=>theme.primaryColor};
9080
+ padding: 8px 18px;
9081
+ width: 280px;
9082
+ height: 46px;
9083
+ border-radius: 15px;
9084
+ margin: 20px auto 0;
9085
+ border: none;
9086
+ color: #fff;
9087
+ font-size: 16px;
9088
+ font-weight: 700;
9089
+ line-height: 18px;
9090
+ transition: border-radius 0.3s ease-in, width 0.3s;
9091
+
9092
+ span {
9093
+ display: flex;
9094
+ flex-direction: row;
9095
+ gap: 5px;
9096
+ align-items: center;
9097
+ justify-content: center;
9098
+ }
9099
+ `;
9100
+
9101
+
9102
+ const $8a52c9358bc52b86$var$backgroundOptions = [
9103
+ {
9104
+ title: "Blue",
9105
+ id: "background-blue",
9106
+ iconUrl: `${"https://stream-assets.snapcall.io/v1.8.0"}/backgrounds/blue_background_icon.png`,
9107
+ value: `${"https://stream-assets.snapcall.io/v1.8.0"}/backgrounds/blue_background.png`
9108
+ },
9109
+ {
9110
+ title: "Cold",
9111
+ id: "background-cold",
9112
+ iconUrl: `${"https://stream-assets.snapcall.io/v1.8.0"}/backgrounds/cold_background_icon.png`,
9113
+ value: `${"https://stream-assets.snapcall.io/v1.8.0"}/backgrounds/cold_background.png`
9114
+ },
9115
+ {
9116
+ title: "Bricks",
9117
+ id: "background-bricks",
9118
+ iconUrl: `${"https://stream-assets.snapcall.io/v1.8.0"}/backgrounds/bricks_background_icon.png`,
9119
+ value: `${"https://stream-assets.snapcall.io/v1.8.0"}/backgrounds/bricks_background.png`
9120
+ },
9121
+ {
9122
+ title: "White",
9123
+ id: "background-white",
9124
+ iconUrl: `${"https://stream-assets.snapcall.io/v1.8.0"}/backgrounds/white_background_icon.png`,
9125
+ value: `${"https://stream-assets.snapcall.io/v1.8.0"}/backgrounds/white_background.png`
9126
+ },
9127
+ {
9128
+ title: "Yellow",
9129
+ id: "background-yellow",
9130
+ iconUrl: `${"https://stream-assets.snapcall.io/v1.8.0"}/backgrounds/yellow_background_icon.png`,
9131
+ value: `${"https://stream-assets.snapcall.io/v1.8.0"}/backgrounds/yellow_background.png`
9132
+ },
9133
+ {
9134
+ title: "Warm",
9135
+ id: "background-warm",
9136
+ iconUrl: `${"https://stream-assets.snapcall.io/v1.8.0"}/backgrounds/warm_background_icon.png`,
9137
+ value: `${"https://stream-assets.snapcall.io/v1.8.0"}/backgrounds/warm_background.png`
9138
+ },
9139
+ {
9140
+ title: "None",
9141
+ value: "none",
9142
+ id: "background-none"
9143
+ },
9144
+ {
9145
+ title: "Blurred",
9146
+ value: "blurred",
9147
+ id: "background-blurred"
9148
+ },
9149
+ ];
9150
+ const $8a52c9358bc52b86$var$VirtualBackgroundPopup = ()=>{
9151
+ const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
9152
+ const virtualBackgroundPopupRef = (0, $jQDcL$react.useRef)(null);
9153
+ const { isVirtualBackgroundPopupVisible: isVirtualBackgroundPopupVisible , setIsVirtualBackgroundPopupVisible: setIsVirtualBackgroundPopupVisible , orientation: orientation } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
9154
+ const desktop = orientation === "landscape";
9155
+ const onSubmit = (e)=>{
9156
+ e.preventDefault();
9157
+ const value = e.currentTarget.elements.background.value;
9158
+ if (value === "none") (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).stopVideoBackground();
9159
+ else if (value === "blurred") {
9160
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).setVideoBackground({
9161
+ blurLevel: 16,
9162
+ type: "blur"
9163
+ });
9164
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).initVideoBackground();
9165
+ } else {
9166
+ const background = new Image();
9167
+ background.src = value;
9168
+ background.crossOrigin = "anonymous";
9169
+ background.onload = ()=>{
9170
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).setVideoBackground({
9171
+ background: background,
9172
+ type: "background"
9173
+ });
9174
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).initVideoBackground();
9175
+ };
9176
+ }
9177
+ setIsVirtualBackgroundPopupVisible(false);
9178
+ };
9179
+ const onCloseClick = ()=>setIsVirtualBackgroundPopupVisible(false);
9180
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $32119bad9969854e$export$b298b737d508d68e), {
9181
+ open: isVirtualBackgroundPopupVisible,
9182
+ desktop: desktop,
9183
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $32119bad9969854e$export$156bb26b5a0d2f83), {
9184
+ ref: virtualBackgroundPopupRef,
9185
+ desktop: desktop,
9186
+ children: [
9187
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $32119bad9969854e$export$28a9baece842bd02), {
9188
+ children: [
9189
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $32119bad9969854e$export$de75cb5a82158063), {
9190
+ children: [
9191
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $cce7f1c9e9c29503$export$d5424e4dfe4be076), {
9192
+ color: "#000"
9193
+ }),
9194
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("h4", {
9195
+ children: t("virtualBackground.title")
9196
+ })
9197
+ ]
9198
+ }),
9199
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $32119bad9969854e$export$ab8c73b78f24745), {
9200
+ onClick: onCloseClick,
9201
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $6f36db3b1217f099$export$2e2bcd8739ae039), {})
9202
+ })
9203
+ ]
9204
+ }),
9205
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $32119bad9969854e$export$8603bdc04df69ddb), {
9206
+ onSubmit: onSubmit,
9207
+ children: [
9208
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $32119bad9969854e$export$3f7ff862632a81a7), {
9209
+ children: $8a52c9358bc52b86$var$backgroundOptions.map(({ id: id , title: title , value: value , iconUrl: iconUrl })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $32119bad9969854e$export$1058440c16b3a127), {
9210
+ htmlFor: id,
9211
+ image: iconUrl,
9212
+ children: [
9213
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("input", {
9214
+ type: "radio",
9215
+ value: value,
9216
+ id: id,
9217
+ name: "background",
9218
+ defaultChecked: value === "none"
9219
+ }),
9220
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
9221
+ children: title
9222
+ })
9223
+ ]
9224
+ }, id))
9225
+ }),
9226
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $32119bad9969854e$export$dfc919b3320e9811), {
9227
+ type: "submit",
9228
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("span", {
9229
+ children: [
9230
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3e04235fac70629f$export$2e2bcd8739ae039), {}),
9231
+ t("virtualBackground.setBackground")
9232
+ ]
9233
+ })
9234
+ })
9235
+ ]
9236
+ })
9237
+ ]
9238
+ })
9239
+ });
9240
+ };
9241
+ var $8a52c9358bc52b86$export$2e2bcd8739ae039 = $8a52c9358bc52b86$var$VirtualBackgroundPopup;
9242
+
9243
+
9244
+
9245
+ const $e6950939129bcd4b$export$8376625f8bb18347 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
9246
+ position: absolute;
9247
+ width: 100%;
9248
+ height: 100%;
9249
+ background-color: ${(props)=>props.open ? "rgba(0, 0, 0, 0.9)" : "transparent"};
9250
+ z-index: ${(props)=>props.open ? 100 : -1};
9251
+ overflow: hidden;
9252
+ transition: all ${(props)=>props.open ? "0.2s" : "0.6s"};
9253
+ `;
9254
+
9255
+
9256
+ const $5f509eaff0d9c05a$var$Settings = ()=>{
9257
+ const { isQuickConnectPopupVisible: isQuickConnectPopupVisible , isSettingsMenuVisible: isSettingsMenuVisible , isYoutubePopupVisible: isYoutubePopupVisible , isLinksharePopupVisible: isLinksharePopupVisible , isVirtualBackgroundPopupVisible: isVirtualBackgroundPopupVisible , } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
9258
+ const open = isQuickConnectPopupVisible || isSettingsMenuVisible || isYoutubePopupVisible || isLinksharePopupVisible || isVirtualBackgroundPopupVisible;
9259
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $e6950939129bcd4b$export$8376625f8bb18347), {
9260
+ open: open,
9261
+ children: [
9262
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $681806ce8015ae4d$export$2e2bcd8739ae039), {}),
9263
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $7d4fa7ceb4c29739$export$2e2bcd8739ae039), {}),
9264
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $696ded7a5399bcd4$export$2e2bcd8739ae039), {}),
9265
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $e38290b50aaba0e3$export$2e2bcd8739ae039), {}),
9266
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8a52c9358bc52b86$export$2e2bcd8739ae039), {})
9267
+ ]
9268
+ });
9269
+ };
9270
+ var $5f509eaff0d9c05a$export$2e2bcd8739ae039 = $5f509eaff0d9c05a$var$Settings;
9271
+
9272
+
9273
+
9274
+
9275
+
9276
+
9277
+
9278
+
9279
+
9280
+ const $bbe4b943c376008e$export$104f28dc79f055f4 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
9281
+ display: flex;
9282
+ flex: 1;
9283
+ flex-direction: column;
9284
+ justify-content: center;
9285
+ align-items: center;
9286
+ background-color: #000;
9287
+ color: #fff;
9288
+ padding-top: 70px;
9289
+ `;
9290
+ const $bbe4b943c376008e$export$51071a7ce784448 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).span`
9291
+ font-size: 60px;
9292
+ `;
9293
+ const $bbe4b943c376008e$export$eebc018855fb0cb6 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).h1`
9294
+ font-size: 28px;
9295
+ font-weight: 600;
9296
+ line-height: 33.6px;
9297
+ `;
9298
+ const $bbe4b943c376008e$export$f4e7b895a81715e9 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).p`
9299
+ font-size: 22px;
9300
+ font-weight: 500;
9301
+ line-height: 26.4px;
9302
+ margin: 0;
9303
+ `;
9304
+ const $bbe4b943c376008e$export$3a4deda42b6182b7 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
9305
+ background-color: ${({ theme: theme })=>theme.primaryColor};
9306
+ border: none;
9307
+ border-radius: 50px;
9308
+ padding: 12px 18px;
9309
+ font-size: 16px;
9310
+ font-weight: 600;
9311
+ line-height: 18px;
9312
+ color: #fff;
9313
+ margin-top: 30px;
9314
+ `;
9315
+
9316
+
9317
+ const $3d1bfd8f074b99b1$var$EndView = ()=>{
9318
+ const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
9319
+ const { streamState: streamState , setStreamState: setStreamState } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
8380
9320
  const ended = streamState === "ended";
8381
9321
  const terminated = streamState === "terminated";
8382
9322
  const expired = streamState === "expired";
@@ -8486,7 +9426,6 @@ var $5dcd9e6925c7037c$export$2e2bcd8739ae039 = $5dcd9e6925c7037c$var$Sounds;
8486
9426
 
8487
9427
 
8488
9428
 
8489
-
8490
9429
  const $e66cc5db58913155$var$iconsMap = {
8491
9430
  error: (0, $e8ac63718934c648$export$edf27be85e5f6da0),
8492
9431
  critical: (0, $e8ac63718934c648$export$c7df1b15b59b1df2)
@@ -8602,6 +9541,7 @@ const $9295e87e6b93e693$export$f30cb9bc4f736419 = {
8602
9541
  settingsCloseBackgroundColor: "#eaebec",
8603
9542
  popupBackgroundPrimaryColor: "#fff",
8604
9543
  popupBackgroundSecondaryColor: "#f3f3f3",
9544
+ popupBackgroundThirdColor: "#f7f7f7",
8605
9545
  popupBorderColor: "#d4d4d4",
8606
9546
  popupTitleColor: "#2d2d2d"
8607
9547
  };
@@ -8622,6 +9562,7 @@ const $9295e87e6b93e693$export$3e936a8db52a10a0 = {
8622
9562
  settingsCloseBackgroundColor: "#7b7c7e",
8623
9563
  popupBackgroundPrimaryColor: "#fff",
8624
9564
  popupBackgroundSecondaryColor: "#f3f3f3",
9565
+ popupBackgroundThirdColor: "#f7f7f7",
8625
9566
  popupBorderColor: "#d4d4d4",
8626
9567
  popupTitleColor: "#2d2d2d"
8627
9568
  };
@@ -8769,6 +9710,13 @@ const $e41262de25602ed2$var$SvgDefinitions = ()=>/*#__PURE__*/ (0, $jQDcL$reactj
8769
9710
  fill: "#fff",
8770
9711
  d: "M0 0h24v24H0z"
8771
9712
  })
9713
+ }),
9714
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("clipPath", {
9715
+ id: "greetingSnapcallLogo",
9716
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
9717
+ fill: "#fff",
9718
+ d: "M0 0h72v72H0z"
9719
+ })
8772
9720
  })
8773
9721
  ]
8774
9722
  })
@@ -9079,7 +10027,7 @@ const $c3d5253d9d597eb5$var$audioSource = new Blob([
9079
10027
  const $c3d5253d9d597eb5$var$audioURL = URL.createObjectURL($c3d5253d9d597eb5$var$audioSource);
9080
10028
  let $c3d5253d9d597eb5$var$mediaResult = undefined;
9081
10029
  const $c3d5253d9d597eb5$export$716eeec86fd18da7 = ()=>{
9082
- $c3d5253d9d597eb5$var$mediaResult?.getAudioTracks().forEach((track)=>{
10030
+ $c3d5253d9d597eb5$var$mediaResult?.getTracks().forEach((track)=>{
9083
10031
  track.stop();
9084
10032
  });
9085
10033
  $c3d5253d9d597eb5$var$mediaResult = undefined;
@@ -9091,7 +10039,8 @@ const $c3d5253d9d597eb5$export$494039379563c94d = async ()=>{
9091
10039
  } catch (err) {
9092
10040
  console.warn("User interaction is required, asking audio GUM");
9093
10041
  $c3d5253d9d597eb5$var$mediaResult = await navigator.mediaDevices.getUserMedia({
9094
- audio: true
10042
+ audio: true,
10043
+ video: true
9095
10044
  });
9096
10045
  }
9097
10046
  };
@@ -9136,6 +10085,12 @@ const $e3bb2c5d0e5b45b5$export$20f257fc407da7a3 = (0, $jQDcL$styledcomponents.cr
9136
10085
  src: url('https://cdn.snapcall.io/fonts/Lato/Bold.woff2') format('woff2'),
9137
10086
  url('https://cdn.snapcall.io/fonts/Lato/Bold.woff') format('woff');
9138
10087
  }
10088
+ @font-face {
10089
+ font-family: 'Gazpacho';
10090
+ font-weight: 700;
10091
+ src: url('https://cdn.snapcall.io/fonts/Gazpacho/Bold.woff2') format('woff2'),
10092
+ url('https://cdn.snapcall.io/fonts/Gazpacho/Bold.woff') format('woff');
10093
+ }
9139
10094
  `;
9140
10095
  const $e3bb2c5d0e5b45b5$export$914ddf2021ea8ee6 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
9141
10096
  display: flex;
@@ -9178,6 +10133,7 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options })=>{
9178
10133
  const [isSettingsMenuVisible, setIsSettingsMenuVisible] = (0, $jQDcL$react.useState)(false);
9179
10134
  const [isYoutubePopupVisible, setIsYoutubePopupVisible] = (0, $jQDcL$react.useState)(false);
9180
10135
  const [isLinksharePopupVisible, setIsLinksharePopupVisible] = (0, $jQDcL$react.useState)(false);
10136
+ const [isVirtualBackgroundPopupVisible, setIsVirtualBackgroundPopupVisible] = (0, $jQDcL$react.useState)(false);
9181
10137
  const [theme, setTheme] = (0, $jQDcL$react.useState)($ee8cb448c2c74888$var$currentTheme);
9182
10138
  const [language, setLanguage] = (0, $jQDcL$react.useState)(options.language || $ee8cb448c2c74888$var$currentLanguage);
9183
10139
  const [profile1, setProfile] = (0, $jQDcL$react.useState)({});
@@ -9188,7 +10144,7 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options })=>{
9188
10144
  const [userInteractionTriggered, setUserInteractionTriggered] = (0, $jQDcL$react.useState)(false);
9189
10145
  const [containerWidth, containerHeight] = (0, $56e1e7a85d8bf4bb$export$2b86bedf890eab8)(streamUIContainerRef.current);
9190
10146
  const [isBlockedDevicesPopupOpen, setBlockedDevicesPopupOpen] = (0, $jQDcL$react.useState)(false);
9191
- const orientation = containerWidth > containerHeight ? "landscape" : "portrait";
10147
+ const orientation = (containerWidth || window.screen.width) > (containerHeight || window.screen.height) ? "landscape" : "portrait";
9192
10148
  const styledTheme = theme === "dark" ? (0, $9295e87e6b93e693$export$3e936a8db52a10a0) : (0, $9295e87e6b93e693$export$f30cb9bc4f736419);
9193
10149
  const onEnterRoom = async (event)=>{
9194
10150
  const peerId = event.detail.peerId;
@@ -9342,6 +10298,8 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options })=>{
9342
10298
  setIsYoutubePopupVisible: setIsYoutubePopupVisible,
9343
10299
  isLinksharePopupVisible: isLinksharePopupVisible,
9344
10300
  setIsLinksharePopupVisible: setIsLinksharePopupVisible,
10301
+ isVirtualBackgroundPopupVisible: isVirtualBackgroundPopupVisible,
10302
+ setIsVirtualBackgroundPopupVisible: setIsVirtualBackgroundPopupVisible,
9345
10303
  theme: theme,
9346
10304
  setTheme: setTheme,
9347
10305
  language: language,
@@ -9401,12 +10359,432 @@ window.hj = window.hj || function() {
9401
10359
 
9402
10360
 
9403
10361
 
10362
+
10363
+
10364
+
10365
+
10366
+ const $d9d258dccafa26ef$var$GreetingSnapcallLogo = ()=>{
10367
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
10368
+ width: "72",
10369
+ height: "72",
10370
+ viewBox: "0 0 72 72",
10371
+ fill: "none",
10372
+ xmlns: "http://www.w3.org/2000/svg",
10373
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("g", {
10374
+ clipPath: "url(#greetingSnapcallLogo)",
10375
+ children: [
10376
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
10377
+ d: "M0 36C0 6.354 6.354 0 36 0s36 6.354 36 36-6.354 36-36 36S0 65.646 0 36Z",
10378
+ fill: "#000"
10379
+ }),
10380
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
10381
+ d: "M36.225 57.428c2.367 0 4.35-1.964 3.62-4.215a13.38 13.38 0 0 0-3.133-5.203c-2.432-2.498-5.73-3.902-9.17-3.902-3.44 0-6.74 1.404-9.172 3.902a13.381 13.381 0 0 0-3.132 5.203c-.731 2.25 1.252 4.215 3.62 4.215h17.367ZM35.775 14.572c-2.367 0-4.35 1.965-3.62 4.216a13.381 13.381 0 0 0 3.133 5.203c2.432 2.498 5.73 3.901 9.17 3.901 3.44 0 6.74-1.403 9.172-3.901a13.375 13.375 0 0 0 3.132-5.203c.731-2.252-1.252-4.216-3.62-4.216H35.776ZM44.459 53.143c0 2.367 1.971 4.352 4.204 3.566a12.924 12.924 0 0 0 4.967-3.182c2.432-2.498 3.799-5.886 3.799-9.419 0-3.533-1.367-6.921-3.8-9.42a12.923 12.923 0 0 0-4.966-3.181c-2.233-.786-4.204 1.2-4.204 3.566v18.07ZM27.541 18.857c0-2.367-1.971-4.352-4.204-3.566a12.923 12.923 0 0 0-4.967 3.182c-2.432 2.498-3.799 5.886-3.799 9.42 0 3.532 1.367 6.92 3.8 9.418a12.923 12.923 0 0 0 4.966 3.182c2.233.786 4.204-1.2 4.204-3.566v-18.07Z",
10382
+ fill: "#fff"
10383
+ })
10384
+ ]
10385
+ })
10386
+ });
10387
+ };
10388
+ var $d9d258dccafa26ef$export$2e2bcd8739ae039 = $d9d258dccafa26ef$var$GreetingSnapcallLogo;
10389
+
10390
+
10391
+
10392
+
10393
+ const $5fd6e456b33aeaa7$export$d653589df987fd93 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
10394
+ height: 100%;
10395
+ display: flex;
10396
+ flex-direction: column;
10397
+ align-items: center;
10398
+ color: #1d1c20;
10399
+ padding-top: 76px;
10400
+ font-family: Lato;
10401
+ box-sizing: border-box;
10402
+ `;
10403
+ const $5fd6e456b33aeaa7$export$d43ffeaaec0b2a58 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
10404
+ display: flex;
10405
+ align-items: center;
10406
+ justify-content: center;
10407
+ width: 72px;
10408
+ height: 72px;
10409
+ svg {
10410
+ width: 50px;
10411
+ height: 50px;
10412
+ }
10413
+ background-color: black;
10414
+ border-radius: 25px;
10415
+ box-sizing: border-box;
10416
+ `;
10417
+ const $5fd6e456b33aeaa7$export$873b7756313e36bb = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).h1`
10418
+ font-size: 32px;
10419
+ line-height: 39px;
10420
+ font-weight: 700;
10421
+ font-family: Gazpacho;
10422
+ text-align: center;
10423
+ `;
10424
+ const $5fd6e456b33aeaa7$export$b7a7fefc0b349825 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
10425
+ display: flex;
10426
+ align-items: center;
10427
+ gap: 10px;
10428
+ `;
10429
+ const $5fd6e456b33aeaa7$export$b302ef9d8310f71 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
10430
+ position: relative;
10431
+ width: 350px;
10432
+ height: 350px;
10433
+ display: flex;
10434
+ align-items: center;
10435
+ justify-content: center;
10436
+ `;
10437
+ const $5fd6e456b33aeaa7$export$ae01dedf5c052bb = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).video`
10438
+ width: 300px;
10439
+ height: 300px;
10440
+ background-color: black;
10441
+ border-radius: 15px;
10442
+ object-fit: cover;
10443
+ `;
10444
+ const $5fd6e456b33aeaa7$export$778ed67917f5eacf = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
10445
+ display: flex;
10446
+ position: absolute;
10447
+ top: 8px;
10448
+ left: 8px;
10449
+ gap: 8px;
10450
+ z-index: 15;
10451
+ `;
10452
+ const $5fd6e456b33aeaa7$export$92fe811838849d7d = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
10453
+ display: flex;
10454
+ justify-content: center;
10455
+ align-items: center;
10456
+ width: 26px;
10457
+ height: 26px;
10458
+ border-radius: 50%;
10459
+ background-color: rgba(28, 32, 36, 0.25);
10460
+ z-index: 2;
10461
+ `;
10462
+ const $5fd6e456b33aeaa7$export$65550b47dde6d016 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
10463
+ position: absolute;
10464
+ width: 300px;
10465
+ height: 300px;
10466
+ background-color: black;
10467
+ border-radius: 15px;
10468
+ z-index: 1;
10469
+ display: ${({ webcamEnabled: webcamEnabled })=>webcamEnabled ? "none" : "flex"};
10470
+ align-items: center;
10471
+ justify-content: center;
10472
+ `;
10473
+ const $5fd6e456b33aeaa7$export$48377ae1c677702b = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
10474
+ position: absolute;
10475
+ bottom: 45px;
10476
+ display: flex;
10477
+ width: 100%;
10478
+ justify-content: center;
10479
+ gap: 13px;
10480
+ z-index: 2;
10481
+ `;
10482
+ const $5fd6e456b33aeaa7$export$6e8af0bd0a2aaa77 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
10483
+ display: flex;
10484
+ align-items: center;
10485
+ justify-content: center;
10486
+ min-width: 48px;
10487
+ min-height: 48px;
10488
+ background-color: ${({ danger: danger })=>danger ? "#d84949" : "#2d2d2d"};
10489
+ border: none;
10490
+ border-radius: 15px;
10491
+ padding: 0 8px;
10492
+ gap: 8px;
10493
+ cursor: pointer;
10494
+
10495
+ p {
10496
+ color: white;
10497
+ font-size: 14px;
10498
+ font-weight: 600;
10499
+ margin: 0;
10500
+ }
10501
+
10502
+ &:hover {
10503
+ border: 2px solid ${({ danger: danger })=>danger ? "#fc7d7d" : "#8d8d8d"};
10504
+ }
10505
+
10506
+ svg {
10507
+ width: 24px;
10508
+ height: 24px;
10509
+ }
10510
+ `;
10511
+ const $5fd6e456b33aeaa7$export$c7a6f02121c3b3b5 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
10512
+ display: flex;
10513
+ flex-direction: column;
10514
+ align-items: flex-start;
10515
+ width: 350px;
10516
+
10517
+ h3 {
10518
+ margin: 0;
10519
+ }
10520
+ `;
10521
+ const $5fd6e456b33aeaa7$export$916d4667067f956a = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).h3`
10522
+ font-size: 20px;
10523
+ line-height: 24px;
10524
+ font-weight: 700;
10525
+ margin: 0;
10526
+ font-family: Gazpacho;
10527
+ `;
10528
+ const $5fd6e456b33aeaa7$export$190947c3048e2d5d = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).p`
10529
+ font-size: 16px;
10530
+ line-height: 22px;
10531
+ font-weight: 400;
10532
+ `;
10533
+ const $5fd6e456b33aeaa7$export$f5b8910cec6cf069 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).input`
10534
+ width: 100%;
10535
+ border: 1px solid #c9c9ca;
10536
+ border-radius: 8px;
10537
+ height: 50px;
10538
+ padding: 14px 12px;
10539
+ box-sizing: border-box;
10540
+ margin-top: 40px;
10541
+ font-size: 16px;
10542
+ `;
10543
+ const $5fd6e456b33aeaa7$export$353f5b6fc5456de1 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
10544
+ width: 100%;
10545
+ background-color: #1d1c20;
10546
+ color: white;
10547
+ padding: 0;
10548
+ outline: inherit;
10549
+ height: 50px;
10550
+ border: 0;
10551
+ border-radius: 8px;
10552
+ margin-top: 15px;
10553
+ font-size: 16px;
10554
+ line-height: 19px;
10555
+ font-weight: 500;
10556
+ cursor: pointer;
10557
+ `;
10558
+ const $5fd6e456b33aeaa7$export$a06f1c675e846f6f = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).footer`
10559
+ display: flex;
10560
+ flex: 1;
10561
+ justify-content: flex-end;
10562
+ flex-direction: column;
10563
+ margin-bottom: 30px;
10564
+ align-items: center;
10565
+ text-align: center;
10566
+ width: 300px;
10567
+ `;
10568
+ const $5fd6e456b33aeaa7$export$53e4a0ea45e729a2 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).h5`
10569
+ font-weight: 700;
10570
+ font-size: 16px;
10571
+ line-height: 19px;
10572
+ margin: 0;
10573
+ font-family: Gazpacho;
10574
+ `;
10575
+ const $5fd6e456b33aeaa7$export$eb20cbaff2d739a5 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).p`
10576
+ font-weight: 400;
10577
+ font-size: 12px;
10578
+ line-height: 14px;
10579
+ color: black;
10580
+ margin-bottom: 0;
10581
+ margin-top: 10px;
10582
+ `;
10583
+ const $5fd6e456b33aeaa7$export$d4a1a815e49dfefd = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
10584
+ display: flex;
10585
+ flex-direction: column;
10586
+ align-items: center;
10587
+ justify-content: center;
10588
+ background-color: #fff;
10589
+ color: #1d1c20;
10590
+ height: 100%;
10591
+ `;
10592
+
10593
+
10594
+
10595
+
10596
+
10597
+
10598
+ const $3305ca02e86dabd1$var$GreetingView = ({ onGreetingDone: onGreetingDone })=>{
10599
+ const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
10600
+ const [mainContainerRef, { width: width , height: height }] = (0, $56e1e7a85d8bf4bb$export$e295b0c537d32d7d)();
10601
+ const inputRef = (0, $jQDcL$react.useRef)(null);
10602
+ const videoRef = (0, $jQDcL$react.useRef)(null);
10603
+ const [videoTrack1, setVideoTrack] = (0, $jQDcL$react.useState)(undefined);
10604
+ const [micEnabled, setMicEnabled] = (0, $jQDcL$react.useState)(false);
10605
+ const [joining, setJoining] = (0, $jQDcL$react.useState)(false);
10606
+ const desktop = width >= height;
10607
+ const onSubmit = ()=>{
10608
+ const displayName = inputRef.current?.value;
10609
+ const cameraEnabled = Boolean(videoTrack1);
10610
+ videoTrack1?.stop();
10611
+ setJoining(true);
10612
+ setTimeout(()=>{
10613
+ onGreetingDone({
10614
+ cameraEnabled: cameraEnabled,
10615
+ micEnabled: micEnabled,
10616
+ displayName: displayName
10617
+ });
10618
+ }, 4000);
10619
+ };
10620
+ const getUserMedia = async (opt)=>{
10621
+ try {
10622
+ const stream = await navigator.mediaDevices.getUserMedia(opt);
10623
+ const videoTrack = stream.getVideoTracks()[0];
10624
+ const audioTrack = stream.getAudioTracks()[0];
10625
+ if (videoTrack) setVideoTrack(videoTrack);
10626
+ if (audioTrack) setMicEnabled(true);
10627
+ audioTrack?.stop();
10628
+ } catch (err) {
10629
+ console.error("Get User Media Failed: ", err);
10630
+ }
10631
+ };
10632
+ const onCameraClick = (0, $jQDcL$react.useCallback)(async ()=>{
10633
+ if (!videoTrack1) await getUserMedia({
10634
+ video: true
10635
+ });
10636
+ else {
10637
+ videoTrack1.stop();
10638
+ setVideoTrack(undefined);
10639
+ }
10640
+ }, [
10641
+ videoTrack1
10642
+ ]);
10643
+ const onMicrophoneClick = (0, $jQDcL$react.useCallback)(async ()=>{
10644
+ if (!micEnabled) await getUserMedia({
10645
+ audio: true
10646
+ });
10647
+ else setMicEnabled(false);
10648
+ }, [
10649
+ micEnabled
10650
+ ]);
10651
+ (0, $jQDcL$react.useEffect)(()=>{
10652
+ if (videoRef.current) {
10653
+ if (videoTrack1) videoRef.current.srcObject = new MediaStream([
10654
+ videoTrack1
10655
+ ]);
10656
+ else videoRef.current.srcObject = null;
10657
+ }
10658
+ }, [
10659
+ videoRef,
10660
+ videoTrack1,
10661
+ width,
10662
+ height
10663
+ ]);
10664
+ (0, $jQDcL$react.useEffect)(()=>{
10665
+ getUserMedia({
10666
+ audio: true,
10667
+ video: true
10668
+ });
10669
+ }, []);
10670
+ if (joining === true) return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$d4a1a815e49dfefd), {
10671
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("img", {
10672
+ src: `${"https://stream-assets.snapcall.io/v1.8.0"}/animations/snapcall-logo-animation.gif`,
10673
+ alt: "Snapcall logo animation",
10674
+ height: 40
10675
+ })
10676
+ });
10677
+ const webcamEnabled = Boolean(videoTrack1);
10678
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5fd6e456b33aeaa7$export$d653589df987fd93), {
10679
+ ref: mainContainerRef,
10680
+ children: [
10681
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $e3bb2c5d0e5b45b5$export$20f257fc407da7a3), {}),
10682
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $d9d258dccafa26ef$export$2e2bcd8739ae039), {}),
10683
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$873b7756313e36bb), {
10684
+ children: t("greeting.mainTitle")
10685
+ }),
10686
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5fd6e456b33aeaa7$export$b7a7fefc0b349825), {
10687
+ children: [
10688
+ desktop && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5fd6e456b33aeaa7$export$b302ef9d8310f71), {
10689
+ children: [
10690
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$ae01dedf5c052bb), {
10691
+ webcamEnabled: webcamEnabled,
10692
+ ref: videoRef,
10693
+ autoPlay: true
10694
+ }),
10695
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5fd6e456b33aeaa7$export$65550b47dde6d016), {
10696
+ webcamEnabled: webcamEnabled,
10697
+ children: [
10698
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5fd6e456b33aeaa7$export$778ed67917f5eacf), {
10699
+ children: [
10700
+ !micEnabled && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$92fe811838849d7d), {
10701
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $0ac48791ff0bcc8e$export$2e2bcd8739ae039), {
10702
+ status: !micEnabled
10703
+ })
10704
+ }),
10705
+ !webcamEnabled && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$92fe811838849d7d), {
10706
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $ab00aedf8a706bfe$export$2e2bcd8739ae039), {
10707
+ status: !webcamEnabled
10708
+ })
10709
+ })
10710
+ ]
10711
+ }),
10712
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$6e8af0bd0a2aaa77), {
10713
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $0319693440f03062$export$2e2bcd8739ae039), {})
10714
+ })
10715
+ ]
10716
+ }),
10717
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5fd6e456b33aeaa7$export$48377ae1c677702b), {
10718
+ children: [
10719
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$6e8af0bd0a2aaa77), {
10720
+ onClick: onMicrophoneClick,
10721
+ danger: !micEnabled,
10722
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $0ac48791ff0bcc8e$export$2e2bcd8739ae039), {
10723
+ status: !micEnabled
10724
+ })
10725
+ }),
10726
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$6e8af0bd0a2aaa77), {
10727
+ onClick: onCameraClick,
10728
+ danger: !webcamEnabled,
10729
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $ab00aedf8a706bfe$export$2e2bcd8739ae039), {
10730
+ status: !webcamEnabled
10731
+ })
10732
+ })
10733
+ ]
10734
+ })
10735
+ ]
10736
+ }),
10737
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5fd6e456b33aeaa7$export$c7a6f02121c3b3b5), {
10738
+ children: [
10739
+ desktop && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$916d4667067f956a), {
10740
+ children: t("greeting.sideTitle")
10741
+ }),
10742
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$190947c3048e2d5d), {
10743
+ children: t("greeting.sideDescription")
10744
+ }),
10745
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$f5b8910cec6cf069), {
10746
+ ref: inputRef,
10747
+ name: "displayName",
10748
+ type: "text",
10749
+ placeholder: t("greeting.namePlaceholder"),
10750
+ autoFocus: true
10751
+ }),
10752
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$353f5b6fc5456de1), {
10753
+ onClick: onSubmit,
10754
+ children: t("greeting.nameSubmit")
10755
+ })
10756
+ ]
10757
+ })
10758
+ ]
10759
+ }),
10760
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5fd6e456b33aeaa7$export$a06f1c675e846f6f), {
10761
+ children: [
10762
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$53e4a0ea45e729a2), {
10763
+ children: t("greeting.footerTitle")
10764
+ }),
10765
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$eb20cbaff2d739a5), {
10766
+ children: t("greeting.footerDescription")
10767
+ })
10768
+ ]
10769
+ })
10770
+ ]
10771
+ });
10772
+ };
10773
+ var $3305ca02e86dabd1$export$2e2bcd8739ae039 = $3305ca02e86dabd1$var$GreetingView;
10774
+
10775
+
9404
10776
  const $e68207026aca356b$var$currentURL = new URL(window.location.href);
9405
10777
  const $e68207026aca356b$var$microphoneEnabled = $e68207026aca356b$var$currentURL.searchParams.get("microphone-enabled") !== "0";
9406
10778
  const $e68207026aca356b$var$cameraEnabled = $e68207026aca356b$var$currentURL.searchParams.get("camera-enabled") === "1";
9407
10779
  const $e68207026aca356b$var$defaultOptions = {
9408
10780
  sharedURL: window.location.href,
9409
10781
  showMenuButton: true,
10782
+ settingsShortcuts: [
10783
+ {
10784
+ id: "pip",
10785
+ displayType: "icon"
10786
+ }
10787
+ ],
9410
10788
  controls: {
9411
10789
  microphone: {
9412
10790
  available: true,
@@ -9432,6 +10810,11 @@ const $e68207026aca356b$export$3f94917203ab7078 = {
9432
10810
  }), element);
9433
10811
  if (mergedOptions.tracking) (0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).init(3111933, 6);
9434
10812
  },
10813
+ initGreeting: (element, onGreetingDone)=>{
10814
+ (0, $jQDcL$reactdom.render)(/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3305ca02e86dabd1$export$2e2bcd8739ae039), {
10815
+ onGreetingDone: onGreetingDone
10816
+ }), element);
10817
+ },
9435
10818
  setExtraSettingsOptions: (extraOptions)=>{
9436
10819
  const event = new CustomEvent("streamUISetExtraSettingsOptions", {
9437
10820
  detail: {