@snapcall/stream-ui 1.5.0 → 1.7.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
@@ -1,5 +1,6 @@
1
1
  var $jQDcL$reactjsxruntime = require("react/jsx-runtime");
2
2
  var $jQDcL$reactdom = require("react-dom");
3
+ var $jQDcL$hotjarbrowser = require("@hotjar/browser");
3
4
  var $jQDcL$reacthottoast = require("react-hot-toast");
4
5
  var $jQDcL$styledcomponents = require("styled-components");
5
6
  var $jQDcL$react = require("react");
@@ -12,18 +13,20 @@ var $jQDcL$protooclient = require("protoo-client");
12
13
  var $jQDcL$sentrybrowser = require("@sentry/browser");
13
14
  var $jQDcL$mediasoupclientlibProducer = require("mediasoup-client/lib/Producer");
14
15
  var $jQDcL$mediasoupclient = require("mediasoup-client");
16
+ var $jQDcL$mediapipeselfie_segmentation = require("@mediapipe/selfie_segmentation");
15
17
  var $jQDcL$qrcode = require("qrcode");
16
18
 
17
- function $parcel$export(e, n, v, s) {
18
- Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
19
- }
20
19
  function $parcel$interopDefault(a) {
21
20
  return a && a.__esModule ? a.default : a;
22
21
  }
22
+ function $parcel$export(e, n, v, s) {
23
+ Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
24
+ }
23
25
 
24
26
  $parcel$export(module.exports, "streamUI", () => $e68207026aca356b$export$3f94917203ab7078);
25
27
 
26
28
 
29
+
27
30
  const $6b4cf4c12c735fdf$var$isObject = (obj)=>{
28
31
  if (typeof obj === "object" && obj !== null) {
29
32
  if (typeof Object.getPrototypeOf === "function") {
@@ -314,6 +317,7 @@ const $84c6cbcbb594d072$export$3a57e165650c636f = (message, options = {})=>{
314
317
 
315
318
 
316
319
 
320
+
317
321
  const $393bda1b33846dfc$export$604ba5624273df44 = ()=>{
318
322
  try {
319
323
  const storedTheme = localStorage.getItem("stream_ui_language");
@@ -348,7 +352,9 @@ const $91fcbf58e59aae79$export$84584c2a98eb6753 = {
348
352
  tooLate: "You arrived too late",
349
353
  callIsOver: "The call is over or deleted",
350
354
  callEnded: "The call is now ended",
351
- callLeft: "You left the call"
355
+ callLeft: "You left the call",
356
+ full: "You can't join this call",
357
+ fullDescription: "The room is full. Please try to join the call later."
352
358
  },
353
359
  menu: {
354
360
  title: "Menu",
@@ -360,6 +366,7 @@ const $91fcbf58e59aae79$export$84584c2a98eb6753 = {
360
366
  },
361
367
  copyLink: {
362
368
  title: "Copy link",
369
+ description: "Copy link into clipboard",
363
370
  error: "An error occured when trying to copy to clipboard",
364
371
  copied: "Link copied to clipboard"
365
372
  },
@@ -393,21 +400,19 @@ const $91fcbf58e59aae79$export$84584c2a98eb6753 = {
393
400
  shareLink: {
394
401
  title: "Share link",
395
402
  title2: "Share a link",
396
- linkUrl: "LINK URL",
397
403
  invalid: "Invalid link",
398
404
  sentToUsers: "Link sent to users",
399
405
  sentToUser: "Link sent to {{user}}",
400
406
  failed: "Failed to send link",
401
- creating: "Link is creating...",
402
407
  poweredBy: "Powered by",
403
408
  invoice: "{{user}} sent you an invoice.",
404
409
  pay: "Pay"
405
410
  },
406
411
  youtube: {
407
- title: "Embed YouTube",
412
+ title: "Watch Together",
408
413
  url: "YOUTUBE URL",
409
414
  invalid: "Invalid YouTube URL",
410
- share: "Share video"
415
+ share: "Watch now"
411
416
  },
412
417
  sharedHistory: {
413
418
  shared: "Shared with you"
@@ -428,13 +433,17 @@ const $91fcbf58e59aae79$export$84584c2a98eb6753 = {
428
433
  request: "{{user}} would like you to share your {{device}}",
429
434
  timedOut: "Your request has timed out.",
430
435
  declined: "Your request has been declined.",
431
- userDeclined: "{{name}} has declined your request."
436
+ userDeclined: "{{user}} has declined your request."
432
437
  },
433
438
  leave: {
434
439
  title: "Leave",
435
440
  leaveCall: "Leave call",
436
441
  endCall: "End call for all"
437
442
  },
443
+ virtualBackground: {
444
+ title: "Virtual Background",
445
+ setBackground: "Set Background"
446
+ },
438
447
  misc: {
439
448
  someone: "Someone",
440
449
  camera: "Camera",
@@ -447,6 +456,20 @@ const $91fcbf58e59aae79$export$84584c2a98eb6753 = {
447
456
  accept: "Accept",
448
457
  decline: "Decline",
449
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."
450
473
  }
451
474
  }
452
475
  };
@@ -474,7 +497,9 @@ const $e52ca91c2b296e41$export$acb2a88f7d552ebf = {
474
497
  tooLate: "Vous \xeates arrivez trop tard",
475
498
  callIsOver: "Cet appel est termin\xe9 ou supprim\xe9",
476
499
  callEnded: "Cet appel est termin\xe9",
477
- callLeft: "Vous avez quitt\xe9 l'appel"
500
+ callLeft: "Vous avez quitt\xe9 l'appel",
501
+ full: "Impossible de rejoindre l'appel",
502
+ fullDescription: "Limite d'utilisateurs atteinte. Merci de rejoindre l'appel ult\xe9rieurement."
478
503
  },
479
504
  menu: {
480
505
  title: "Menu",
@@ -486,6 +511,7 @@ const $e52ca91c2b296e41$export$acb2a88f7d552ebf = {
486
511
  },
487
512
  copyLink: {
488
513
  title: "Copier le lien",
514
+ description: "Copier le lien dans le presse-papiers",
489
515
  error: "Une erreur est survenue pendant la copie du lien dans le presse-papier",
490
516
  copied: "Lien copi\xe9 dans le presse-papier"
491
517
  },
@@ -519,21 +545,19 @@ const $e52ca91c2b296e41$export$acb2a88f7d552ebf = {
519
545
  shareLink: {
520
546
  title: "Partager un lien",
521
547
  title2: "Partager un lien",
522
- linkUrl: "URL DU LIEN",
523
548
  invalid: "Lien invalide",
524
549
  sentToUsers: "Lien envoy\xe9 aux participants",
525
550
  sentToUser: "Lien envoy\xe9 \xe0 {{user}}",
526
551
  failed: "Une erreur est survenue pendant l'envoi du lien",
527
- creating: "Lien en cours de cr\xe9ation...",
528
552
  poweredBy: "Propos\xe9 par",
529
553
  invoice: "{{user}} vous a envoy\xe9 une facture.",
530
554
  pay: "Payer"
531
555
  },
532
556
  youtube: {
533
- title: "YouTube",
557
+ title: "Regardons Ensemble",
534
558
  url: "URL YOUTUBE",
535
559
  invalid: "URL YouTube invalide",
536
- share: "Partager la vid\xe9o"
560
+ share: "Regarder maintenant"
537
561
  },
538
562
  sharedHistory: {
539
563
  shared: "Partag\xe9 avec vous"
@@ -554,12 +578,16 @@ const $e52ca91c2b296e41$export$acb2a88f7d552ebf = {
554
578
  request: "{{user}} voudrait que vous partagiez votre {{device}}",
555
579
  timedOut: "Votre requ\xeate n'a pas eu de r\xe9ponse",
556
580
  declined: "Votre requ\xeate a \xe9t\xe9 refus\xe9.",
557
- userDeclined: "{{name}} a d\xe9clin\xe9 votre requ\xeate."
581
+ userDeclined: "{{user}} a d\xe9clin\xe9 votre requ\xeate."
558
582
  },
559
583
  leave: {
560
584
  title: "Quitter",
561
585
  leaveCall: "Quitter l'appel",
562
- 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"
563
591
  },
564
592
  misc: {
565
593
  someone: "Quelqu'un",
@@ -573,6 +601,20 @@ const $e52ca91c2b296e41$export$acb2a88f7d552ebf = {
573
601
  accept: "Accepter",
574
602
  decline: "D\xe9cliner",
575
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."
576
618
  }
577
619
  }
578
620
  };
@@ -600,7 +642,9 @@ const $e0ae3d23c2381da3$export$3486a10f30cf1ee4 = {
600
642
  tooLate: "Sei arrivato troppo tardi",
601
643
  callIsOver: "Questa chiamata \xe8 finita o \xe8 stata eliminata",
602
644
  callEnded: "Questa chiamata \xe8 finita",
603
- callLeft: "Hai lasciato la chiamata"
645
+ callLeft: "Hai lasciato la chiamata",
646
+ full: "Impossibile partecipare alla chiamata",
647
+ fullDescription: "Limite d'uso attenente."
604
648
  },
605
649
  menu: {
606
650
  title: "Men\xf9",
@@ -612,6 +656,7 @@ const $e0ae3d23c2381da3$export$3486a10f30cf1ee4 = {
612
656
  },
613
657
  copyLink: {
614
658
  title: "Copia il link",
659
+ description: "Copia il link negli appunti",
615
660
  error: "Si \xe8 verificato un errore durante la copia negli Appunti",
616
661
  copied: "Link copiato negli Appunti"
617
662
  },
@@ -645,21 +690,19 @@ const $e0ae3d23c2381da3$export$3486a10f30cf1ee4 = {
645
690
  shareLink: {
646
691
  title: "Condividi un link",
647
692
  title2: "Condividi un link",
648
- linkUrl: "Link URL",
649
693
  invalid: "Collegamento non valido",
650
694
  sentToUsers: "Link inviato ai partecipanti",
651
695
  sentToUser: "Link inviato a {{user}}",
652
696
  failed: "Si \xe8 verificato un errore durante l'invio del link",
653
- creating: "Link che viene creato...",
654
697
  poweredBy: "Proposto da",
655
698
  invoice: "{{User}} ti ha inviato una fattura.",
656
699
  pay: "Paga"
657
700
  },
658
701
  youtube: {
659
- title: "YouTube",
702
+ title: "Vedere Assieme",
660
703
  url: "URL YOUTUBE",
661
704
  invalid: "URL YouTube non valido",
662
- share: "Condividi il video"
705
+ share: "Guarda ora"
663
706
  },
664
707
  sharedHistory: {
665
708
  shared: "Condiviso con te"
@@ -680,13 +723,21 @@ const $e0ae3d23c2381da3$export$3486a10f30cf1ee4 = {
680
723
  request: "{{user}} vorrebbe condividere il tuo {{device}}",
681
724
  timedOut: "La tua richiesta non ha ricevuto risposta",
682
725
  declined: "La tua richiesta \xe8 stata rifiutata.",
683
- userDeclined: "{{name}} ha rifiutato la tua richiesta"
726
+ userDeclined: "{{user}} ha rifiutato la tua richiesta"
684
727
  },
685
728
  leave: {
686
729
  title: "Lasciare",
687
730
  leaveCall: "Lascia la chiamata",
688
731
  endCall: "Termina la chiamata per tutti"
689
732
  },
733
+ virtualBackground: {
734
+ title: "Sfondo virtuale",
735
+ setBackground: "Imposta sfondo"
736
+ },
737
+ virtualbackground: {
738
+ title: "Virtual Background",
739
+ setBackground: "Set Background"
740
+ },
690
741
  misc: {
691
742
  someone: "Qualcuno",
692
743
  camera: "Telecamera",
@@ -699,6 +750,20 @@ const $e0ae3d23c2381da3$export$3486a10f30cf1ee4 = {
699
750
  accept: "Accettare",
700
751
  decline: "Declinare",
701
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."
702
767
  }
703
768
  }
704
769
  };
@@ -728,6 +793,7 @@ var $b45c0bcc142f0b5e$export$2e2bcd8739ae039 = (0, ($parcel$interopDefault($jQDc
728
793
 
729
794
 
730
795
 
796
+
731
797
  const $d0c6baf97675ab49$var$LogLevel = {
732
798
  error: 1,
733
799
  warn: 2,
@@ -1129,13 +1195,165 @@ class $a62e7f17be5cf3a0$export$2e2bcd8739ae039 {
1129
1195
  }
1130
1196
 
1131
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.7.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
+
1132
1349
  const $1dedebd5ff3002eb$var$log = new (0, $d0c6baf97675ab49$export$2e2bcd8739ae039)("StreamerClient");
1133
1350
  const $1dedebd5ff3002eb$export$818d60b2e626da0c = {
1134
1351
  WEBRTC_FAILED: "WRTC1",
1135
1352
  WEBRTC_RECOVER_ERROR: "WRTC2",
1136
1353
  CREATE_TRANSPORT_FAILED: "TRANS1",
1137
1354
  CONSUME_ERROR: "CONS1",
1138
- SOCKET_LOST: "SOCK1"
1355
+ SOCKET_LOST: "SOCK1",
1356
+ USER_LIMIT: "USERLIMIT"
1139
1357
  };
1140
1358
  const $1dedebd5ff3002eb$export$d21ffcc5eb136bfa = {
1141
1359
  qvga: {
@@ -1197,8 +1415,16 @@ class $1dedebd5ff3002eb$var$SnapcallEvent extends CustomEvent {
1197
1415
  }
1198
1416
  }
1199
1417
  const $1dedebd5ff3002eb$var$StreamerEventTargetType = EventTarget;
1418
+ const $1dedebd5ff3002eb$var$defaultMediapipeOptions = {
1419
+ background: undefined,
1420
+ fillColor: "#ffffff",
1421
+ type: "blur",
1422
+ blurLevel: 10
1423
+ };
1200
1424
  class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$StreamerEventTargetType {
1201
1425
  mediasoupTransport = {};
1426
+ mediaPipeOption = $1dedebd5ff3002eb$var$defaultMediapipeOptions;
1427
+ useVideoBackground = false;
1202
1428
  pendingDeviceRequest = {};
1203
1429
  joinOptions = {};
1204
1430
  devicesList = [];
@@ -1363,7 +1589,9 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
1363
1589
  this.protoo.on("close", ()=>$1dedebd5ff3002eb$var$log.log("protoo.on", "close :("));
1364
1590
  this.protoo.on("notification", async (notification)=>{
1365
1591
  $1dedebd5ff3002eb$var$log.log("notification", notification);
1366
- if (notification.method === "newPeer") {
1592
+ if (notification.method === "error") {
1593
+ if (notification.data?.reason === "reached user limit") this.onCriticalError($1dedebd5ff3002eb$export$818d60b2e626da0c.USER_LIMIT);
1594
+ } else if (notification.method === "newPeer") {
1367
1595
  const { id: id , profile: profile } = notification.data;
1368
1596
  this.peers.set(id, {
1369
1597
  id: id,
@@ -1498,9 +1726,13 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
1498
1726
  }
1499
1727
  });
1500
1728
  }
1501
- closeWebrtcTransport(transport) {
1502
- transport?.transport?.close();
1503
- clearTimeout(transport?.disconnectTimeout);
1729
+ closeWebrtcTransport(key) {
1730
+ const transport = this.mediasoupTransport[key];
1731
+ if (transport) {
1732
+ transport?.transport?.close();
1733
+ clearTimeout(transport?.disconnectTimeout);
1734
+ delete this.mediasoupTransport[key];
1735
+ }
1504
1736
  }
1505
1737
  async getTransport(kind, direction) {
1506
1738
  if (!this.streamerMediasoup) throw new Error("streamerMediasoup not initialized");
@@ -1773,7 +2005,11 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
1773
2005
  }
1774
2006
  release() {
1775
2007
  $1dedebd5ff3002eb$var$log.log("release");
1776
- for(let key in this.mediasoupTransport)this.closeWebrtcTransport(this.mediasoupTransport[key]);
2008
+ for(let key in this.mediasoupTransport)this.closeWebrtcTransport(key);
2009
+ if (this.mediaPipe) {
2010
+ this.mediaPipe.clean();
2011
+ this.mediaPipe = undefined;
2012
+ }
1777
2013
  this.webcamTrack?.stop();
1778
2014
  this.webcamTrack = null;
1779
2015
  this.protooTransport.close();
@@ -1875,6 +2111,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
1875
2111
  }
1876
2112
  }
1877
2113
  scaleVideoEncodingsParameter() {
2114
+ if (this.useVideoBackground) return;
1878
2115
  try {
1879
2116
  let videoCount = 0;
1880
2117
  this.consumers.forEach((consumer)=>{
@@ -1902,6 +2139,24 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
1902
2139
  $1dedebd5ff3002eb$var$log.error("scaleVideoEncodingsParameter", "scaleVideo error", error);
1903
2140
  }
1904
2141
  }
2142
+ setVideoBackground(options) {
2143
+ this.mediaPipe?.setOptions(options);
2144
+ this.mediaPipeOption = options;
2145
+ }
2146
+ async initVideoBackground() {
2147
+ if (this.useVideoBackground === true) return;
2148
+ this.useVideoBackground = true;
2149
+ if (!this.webcamProducer || this.webcamProducer.closed) return;
2150
+ await this.switchWebcam({});
2151
+ }
2152
+ async stopVideoBackground() {
2153
+ if (this.useVideoBackground === false) return;
2154
+ this.useVideoBackground = false;
2155
+ await this.mediaPipe?.clean();
2156
+ this.mediaPipe = undefined;
2157
+ if (!this.webcamProducer || this.webcamProducer.closed) return;
2158
+ await this.switchWebcam({});
2159
+ }
1905
2160
  async switchWebcam({ device: device , resolution: resolution , rotate: rotate }) {
1906
2161
  if (!this.webcam.device) throw new Error("no webcam devices");
1907
2162
  if (rotate) {
@@ -1918,18 +2173,32 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
1918
2173
  if (device) this.webcam.device = device;
1919
2174
  if (resolution) this.webcam.resolution = resolution;
1920
2175
  }
1921
- const stream = await this.handleGetUserMediaError("webcam", navigator.mediaDevices.getUserMedia({
2176
+ let usedResolution = $1dedebd5ff3002eb$export$d21ffcc5eb136bfa[resolution || this.webcam.resolution];
2177
+ if (this.useVideoBackground) usedResolution = {
2178
+ width: {
2179
+ ideal: 560
2180
+ },
2181
+ height: {
2182
+ ideal: 400
2183
+ },
2184
+ qualityIndex: 2
2185
+ };
2186
+ const mediaStream = await this.handleGetUserMediaError("webcam", navigator.mediaDevices.getUserMedia({
1922
2187
  video: {
1923
2188
  deviceId: {
1924
2189
  ideal: this.webcam.device.deviceId
1925
2190
  },
1926
- ...$1dedebd5ff3002eb$export$d21ffcc5eb136bfa[resolution || this.webcam.resolution]
2191
+ ...usedResolution
1927
2192
  }
1928
2193
  }));
2194
+ if (this.useVideoBackground) {
2195
+ if (this.mediaPipe) await this.mediaPipe.clean();
2196
+ this.mediaPipe = new (0, $cb913ea078a876a6$export$2e2bcd8739ae039)(mediaStream, this.mediaPipeOption);
2197
+ }
2198
+ const stream = await this.mediaPipe?.createStream() || mediaStream;
1929
2199
  const transport = await this.getTransport("video", "send");
1930
2200
  if (!transport) throw new Error("video transport not found, can not switch");
1931
2201
  const track = stream.getVideoTracks()[0];
1932
- this.webcamTrack = track;
1933
2202
  await this.webcamProducer?.replaceTrack?.({
1934
2203
  track: track
1935
2204
  });
@@ -1950,14 +2219,29 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
1950
2219
  await this.updateWebcams();
1951
2220
  if (config?.device) this.webcam.device = config.device;
1952
2221
  if (!this.webcam.device) throw new Error("no webcam devices");
1953
- const stream = await this.handleGetUserMediaError("webcam", navigator.mediaDevices.getUserMedia({
2222
+ let usedResolution = $1dedebd5ff3002eb$export$d21ffcc5eb136bfa[config?.resolution || this.webcam.resolution];
2223
+ if (this.useVideoBackground) usedResolution = {
2224
+ width: {
2225
+ ideal: 560
2226
+ },
2227
+ height: {
2228
+ ideal: 400
2229
+ },
2230
+ qualityIndex: 2
2231
+ };
2232
+ const mediaStream = await this.handleGetUserMediaError("webcam", navigator.mediaDevices.getUserMedia({
1954
2233
  video: {
1955
2234
  deviceId: {
1956
2235
  ideal: this.webcam.device.deviceId
1957
2236
  },
1958
- ...$1dedebd5ff3002eb$export$d21ffcc5eb136bfa[config?.resolution || this.webcam.resolution]
2237
+ ...usedResolution
1959
2238
  }
1960
2239
  }));
2240
+ if (this.useVideoBackground) {
2241
+ if (this.mediaPipe) await this.mediaPipe.clean();
2242
+ this.mediaPipe = new (0, $cb913ea078a876a6$export$2e2bcd8739ae039)(mediaStream, this.mediaPipeOption);
2243
+ }
2244
+ const stream = await this.mediaPipe?.createStream() || mediaStream;
1961
2245
  await this.updateWebcams();
1962
2246
  const transport = await this.getTransport("video", "send");
1963
2247
  const track = stream.getVideoTracks()[0];
@@ -2117,6 +2401,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
2117
2401
  }
2118
2402
  }
2119
2403
  requestVideo({ mediaId: mediaId , element: element }) {
2404
+ $1dedebd5ff3002eb$var$log.info("requestVideo");
2120
2405
  const consumer = this.consumers.get(mediaId);
2121
2406
  if (consumer) {
2122
2407
  const mediaStream = new MediaStream();
@@ -2134,6 +2419,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
2134
2419
  return image;
2135
2420
  }
2136
2421
  requestLocalVideo(element) {
2422
+ $1dedebd5ff3002eb$var$log.info("requestLocalVideo");
2137
2423
  if (this.webcamProducer) {
2138
2424
  const mediaStream = new MediaStream();
2139
2425
  mediaStream.addTrack(this.webcamProducer.track);
@@ -2653,7 +2939,7 @@ const $cce7f1c9e9c29503$export$6546b255bd3a2004 = ()=>/*#__PURE__*/ (0, $jQDcL$r
2653
2939
  fill: "#fff"
2654
2940
  })
2655
2941
  });
2656
- const $cce7f1c9e9c29503$export$92ce62e1201c4fc0 = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
2942
+ const $cce7f1c9e9c29503$export$92ce62e1201c4fc0 = ({ color: color })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
2657
2943
  width: "24",
2658
2944
  height: "24",
2659
2945
  viewBox: "0 0 24 24",
@@ -2661,10 +2947,10 @@ const $cce7f1c9e9c29503$export$92ce62e1201c4fc0 = ()=>/*#__PURE__*/ (0, $jQDcL$r
2661
2947
  xmlns: "http://www.w3.org/2000/svg",
2662
2948
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
2663
2949
  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",
2664
- fill: "#fff"
2950
+ fill: color || "#fff"
2665
2951
  })
2666
2952
  });
2667
- const $cce7f1c9e9c29503$export$6470d09a29d34d08 = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
2953
+ const $cce7f1c9e9c29503$export$6470d09a29d34d08 = ({ color: color })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
2668
2954
  width: "24",
2669
2955
  height: "24",
2670
2956
  viewBox: "0 0 24 24",
@@ -2672,7 +2958,7 @@ const $cce7f1c9e9c29503$export$6470d09a29d34d08 = ()=>/*#__PURE__*/ (0, $jQDcL$r
2672
2958
  xmlns: "http://www.w3.org/2000/svg",
2673
2959
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
2674
2960
  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",
2675
- fill: "#fff"
2961
+ fill: color || "#fff"
2676
2962
  })
2677
2963
  });
2678
2964
  const $cce7f1c9e9c29503$export$1095c93890fce526 = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
@@ -2727,6 +3013,17 @@ const $cce7f1c9e9c29503$export$5170987d58ae338d = ()=>/*#__PURE__*/ (0, $jQDcL$r
2727
3013
  ]
2728
3014
  })
2729
3015
  });
3016
+ const $cce7f1c9e9c29503$export$d5424e4dfe4be076 = ({ color: color })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
3017
+ width: "24",
3018
+ height: "24",
3019
+ viewBox: "0 0 24 24",
3020
+ fill: "none",
3021
+ xmlns: "http://www.w3.org/2000/svg",
3022
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
3023
+ 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",
3024
+ fill: color || "#fff"
3025
+ })
3026
+ });
2730
3027
 
2731
3028
 
2732
3029
 
@@ -2917,10 +3214,17 @@ const $1949f8f101c8cf77$export$e2457e1974c298c3 = (0, ($parcel$interopDefault($j
2917
3214
  line-height: 16px;
2918
3215
  padding: 4px 12px;
2919
3216
  border-radius: 50px;
3217
+ gap: 5px;
2920
3218
 
2921
3219
  &:hover {
2922
3220
  border: 2px solid ${(props)=>props.theme.controlsHoverBorderColor};
2923
3221
  }
3222
+
3223
+ img,
3224
+ svg {
3225
+ max-width: 15px;
3226
+ max-height: 15px;
3227
+ }
2924
3228
  `;
2925
3229
  const $1949f8f101c8cf77$export$c4e460d5c7d83bc3 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
2926
3230
  position: absolute;
@@ -2948,12 +3252,18 @@ const $7eae5c8ece2c75ff$var$HeaderSettings = ({ baseCategories: baseCategories ,
2948
3252
  ...options,
2949
3253
  ...category.items
2950
3254
  ], []) || [];
2951
- return definedSettingsShortcuts.reduce((shortcutsList, shortcutId)=>{
2952
- const baseShortcut = baseOptions.find((option)=>option.id === shortcutId);
2953
- if (baseShortcut) shortcutsList.push(baseShortcut);
3255
+ return definedSettingsShortcuts.reduce((shortcutsList, shortcut)=>{
3256
+ const baseShortcut = baseOptions.find((option)=>option.id === shortcut.id);
3257
+ if (baseShortcut) shortcutsList.push({
3258
+ ...baseShortcut,
3259
+ displayType: shortcut.displayType
3260
+ });
2954
3261
  else {
2955
- const extraShortcut = extraOptions?.find((option)=>option.id === shortcutId);
2956
- if (extraShortcut) shortcutsList.push(extraShortcut);
3262
+ const extraShortcut = extraOptions?.find((option)=>option.id === shortcut.id);
3263
+ if (extraShortcut) shortcutsList.push({
3264
+ ...extraShortcut,
3265
+ displayType: shortcut.displayType
3266
+ });
2957
3267
  }
2958
3268
  return shortcutsList;
2959
3269
  }, []);
@@ -3010,7 +3320,19 @@ const $7eae5c8ece2c75ff$var$HeaderSettings = ({ baseCategories: baseCategories ,
3010
3320
  const onSettingsButtonClick = ()=>setDisplaySettingsOptions((previousValue)=>!previousValue);
3011
3321
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $1949f8f101c8cf77$export$8376625f8bb18347), {
3012
3322
  children: [
3013
- shortcuts.map((shortcut)=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $1949f8f101c8cf77$export$4297bad962271b02), {
3323
+ shortcuts.map((shortcut)=>{
3324
+ if (shortcut.displayType === "full") return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $1949f8f101c8cf77$export$e2457e1974c298c3), {
3325
+ onClick: shortcut.action,
3326
+ children: [
3327
+ shortcut.jsxIcon && shortcut.jsxIcon,
3328
+ shortcut.srcIcon && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("img", {
3329
+ alt: shortcut.title,
3330
+ src: shortcut.srcIcon
3331
+ }),
3332
+ shortcut.title
3333
+ ]
3334
+ }, shortcut.id);
3335
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $1949f8f101c8cf77$export$4297bad962271b02), {
3014
3336
  onClick: shortcut.action,
3015
3337
  children: [
3016
3338
  shortcut.jsxIcon && shortcut.jsxIcon,
@@ -3019,7 +3341,8 @@ const $7eae5c8ece2c75ff$var$HeaderSettings = ({ baseCategories: baseCategories ,
3019
3341
  src: shortcut.srcIcon
3020
3342
  })
3021
3343
  ]
3022
- }, shortcut.id)),
3344
+ }, shortcut.id);
3345
+ }),
3023
3346
  streamUIOptions.showMenuButton && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $1949f8f101c8cf77$export$a7d9b76c122d0627), {
3024
3347
  children: [
3025
3348
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $1949f8f101c8cf77$export$e2457e1974c298c3), {
@@ -3220,7 +3543,7 @@ const $e1930b467e7d8845$var$multiPiP = new (0, $21395e477f83709c$export$45fabd1c
3220
3543
  const $e1930b467e7d8845$var$browser = $jQDcL$bowser.parse(window.navigator.userAgent);
3221
3544
  const $e1930b467e7d8845$var$Header = ()=>{
3222
3545
  const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
3223
- const { setIsQuickConnectPopupVisible: setIsQuickConnectPopupVisible , setIsSettingsMenuVisible: setIsSettingsMenuVisible , options: options , muted: muted , streaming: streaming } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
3546
+ const { setIsQuickConnectPopupVisible: setIsQuickConnectPopupVisible , setIsSettingsMenuVisible: setIsSettingsMenuVisible , setIsVirtualBackgroundPopupVisible: setIsVirtualBackgroundPopupVisible , options: options , muted: muted , streaming: streaming , } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
3224
3547
  const { streams: streams } = (0, $3f6e908c45fcc5b3$export$b5633a7cfbe42d9f)();
3225
3548
  const [extraOptions, setExtraOptions] = (0, $jQDcL$react.useState)(options.extraSettingsOptions || []);
3226
3549
  const onSetExtraSettingsOptions = (event)=>{
@@ -3269,10 +3592,14 @@ const $e1930b467e7d8845$var$Header = ()=>{
3269
3592
  };
3270
3593
  const onScanQuickConnectClick = ()=>{
3271
3594
  setIsQuickConnectPopupVisible(true);
3595
+ (0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("quickConnectClick");
3272
3596
  };
3273
3597
  const onSettingsMenuClick = ()=>{
3274
3598
  setIsSettingsMenuVisible(true);
3275
3599
  };
3600
+ const onVirtualBackgroundClick = ()=>{
3601
+ setIsVirtualBackgroundPopupVisible(true);
3602
+ };
3276
3603
  const computedCategories = [
3277
3604
  {
3278
3605
  id: "1",
@@ -3314,6 +3641,12 @@ const $e1930b467e7d8845$var$Header = ()=>{
3314
3641
  ]
3315
3642
  },
3316
3643
  ];
3644
+ if ($e1930b467e7d8845$var$browser.platform.type === "desktop" && $e1930b467e7d8845$var$browser.engine.name === "Blink") computedCategories[2].items.push({
3645
+ id: "virtualBackground",
3646
+ title: t("virtualBackground.title"),
3647
+ jsxIcon: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $cce7f1c9e9c29503$export$d5424e4dfe4be076), {}),
3648
+ action: onVirtualBackgroundClick
3649
+ });
3317
3650
  if (document.pictureInPictureEnabled && $e1930b467e7d8845$var$browser.platform.type === "desktop") computedCategories[0].items.push({
3318
3651
  id: "pip",
3319
3652
  title: t("menu.pictureInPicture"),
@@ -3327,6 +3660,7 @@ const $e1930b467e7d8845$var$Header = ()=>{
3327
3660
  options.sharedURL,
3328
3661
  setIsQuickConnectPopupVisible,
3329
3662
  setIsSettingsMenuVisible,
3663
+ setIsVirtualBackgroundPopupVisible,
3330
3664
  t,
3331
3665
  ]);
3332
3666
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $1949f8f101c8cf77$export$1e86fd0e1db89578), {
@@ -3960,7 +4294,7 @@ const $2c45d365ee8aa1ab$export$98d9314e6a208b24 = (0, ($parcel$interopDefault($j
3960
4294
  if (props.full) return (0, $jQDcL$styledcomponents.css)`
3961
4295
  width: 100%;
3962
4296
  height: 100%;
3963
- inset: 0 0 0 0 !important;
4297
+ right: 0px;
3964
4298
  padding: 17px 10px;
3965
4299
  box-sizing: border-box;
3966
4300
  `;
@@ -4818,7 +5152,8 @@ const $8393b5c887e16c8c$var$SelfStreamTile = ({ isSomeonePresenting: isSomeonePr
4818
5152
  const [containerWidth, containerHeight] = (0, $56e1e7a85d8bf4bb$export$2b86bedf890eab8)(videosContainerRef.current);
4819
5153
  const isAlone = streams.length < 1;
4820
5154
  const cursor = streaming && !isAlone && !extended ? "pointer" : "default";
4821
- let tileSize = "100%";
5155
+ let tileWidth = orientation === "landscape" ? "50%" : "100%";
5156
+ let tileHeight = orientation === "landscape" ? "100%" : "50%";
4822
5157
  if (!isAlone) {
4823
5158
  const computedWidth = (0, $7de6ded9bdec6f42$export$a6112fefa8de799d)({
4824
5159
  containerWidth: containerWidth,
@@ -4828,7 +5163,8 @@ const $8393b5c887e16c8c$var$SelfStreamTile = ({ isSomeonePresenting: isSomeonePr
4828
5163
  orientation: orientation,
4829
5164
  extended: extended
4830
5165
  });
4831
- tileSize = `${computedWidth}px`;
5166
+ tileWidth = `${computedWidth}px`;
5167
+ tileHeight = `${computedWidth}px`;
4832
5168
  }
4833
5169
  const onLocalVideoChange = (event)=>{
4834
5170
  if (!event.detail?.camera?.device) return;
@@ -4879,7 +5215,7 @@ const $8393b5c887e16c8c$var$SelfStreamTile = ({ isSomeonePresenting: isSomeonePr
4879
5215
  if (streams.length === 1) {
4880
5216
  const userName = streams[0].profile.name || t("misc.user");
4881
5217
  notificationMessage = t("snapshot.sentToUser", {
4882
- name: userName
5218
+ user: userName
4883
5219
  });
4884
5220
  }
4885
5221
  (0, $84c6cbcbb594d072$export$3a57e165650c636f)(notificationMessage, {
@@ -5067,8 +5403,8 @@ const $8393b5c887e16c8c$var$SelfStreamTile = ({ isSomeonePresenting: isSomeonePr
5067
5403
  ref: SelfTileRef,
5068
5404
  full: isAlone,
5069
5405
  style: {
5070
- width: tileSize,
5071
- height: tileSize
5406
+ width: tileWidth,
5407
+ height: tileHeight
5072
5408
  },
5073
5409
  cursor: cursor,
5074
5410
  onClick: onSelfTileClick,
@@ -5904,8 +6240,113 @@ var $c225be5472ba393a$export$2e2bcd8739ae039 = $c225be5472ba393a$var$Highlighted
5904
6240
 
5905
6241
 
5906
6242
 
6243
+ const $7e6d6d75bd13cce5$export$d653589df987fd93 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
6244
+ display: flex;
6245
+ position: absolute;
6246
+ z-index: 20;
6247
+ left: 0;
6248
+ top: 0;
6249
+ transition: all 0.4s;
6250
+ width: ${({ orientation: orientation })=>orientation === "landscape" ? "50%" : "100%"};
6251
+ height: ${({ orientation: orientation })=>orientation === "landscape" ? "100%" : "50%"};
6252
+ padding: 17px 10px;
6253
+ box-sizing: border-box;
6254
+ `;
6255
+ const $7e6d6d75bd13cce5$export$dd2ac23a70f320dd = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
6256
+ display: flex;
6257
+ flex-direction: column;
6258
+ justify-content: center;
6259
+ align-items: center;
6260
+ position: relative;
6261
+ width: 100%;
6262
+ height: 100%;
6263
+ background-color: ${({ theme: theme })=>theme.streamTileBackgroundColor};
6264
+ border: 2px solid ${({ theme: theme })=>theme.streamTileBorderColor};
6265
+ border-radius: 20px;
6266
+ box-sizing: border-box;
6267
+ color: #fff;
6268
+ font-family: Lato;
6269
+ `;
6270
+ const $7e6d6d75bd13cce5$export$2dabfbe763cc7a4 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).h2`
6271
+ font-weight: 600;
6272
+ font-size: 16px;
6273
+ text-align: center;
6274
+ width: 300px;
6275
+ `;
6276
+ const $7e6d6d75bd13cce5$export$6ed6e36e1b456f96 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
6277
+ position: relative;
6278
+ display: flex;
6279
+ align-items: center;
6280
+ height: 50px;
6281
+ width: 300px;
6282
+ background-color: ${({ theme: theme })=>theme.popupBackgroundSecondaryColor};
6283
+ border: 1px solid ${({ theme: theme })=>theme.popupBorderColor};
6284
+ border-radius: 15px;
6285
+ padding: 0 10px;
6286
+ `;
6287
+ const $7e6d6d75bd13cce5$export$5f759de1870a3e41 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
6288
+ display: flex;
6289
+ align-items: center;
6290
+ width: 100%;
6291
+ gap: 5px;
6292
+
6293
+ svg {
6294
+ width: 20px;
6295
+ height: 20px;
6296
+ }
6297
+ `;
6298
+ const $7e6d6d75bd13cce5$export$c6b180e8ec79154e = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).p`
6299
+ color: #242324;
6300
+ font-size: 15px;
6301
+ font-weight: 600;
6302
+ width: 100%;
6303
+ text-overflow: ellipsis;
6304
+ white-space: nowrap;
6305
+ overflow: hidden;
6306
+ line-height: 15px;
6307
+ `;
6308
+ const $7e6d6d75bd13cce5$export$d7f3ab4b3437ad97 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
6309
+ position: absolute;
6310
+ right: 5px;
6311
+ display: flex;
6312
+ justify-content: center;
6313
+ align-items: center;
6314
+ background-color: ${({ theme: theme })=>theme.primaryColor};
6315
+ border: none;
6316
+ border-radius: 8px;
6317
+ height: 32px;
6318
+ color: #fff;
6319
+ font-weight: 600;
6320
+ font-size: 16px;
6321
+ padding: 8px 12px;
6322
+ line-height: 18px;
6323
+ `;
6324
+ const $7e6d6d75bd13cce5$export$c22678f0e7b404e0 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).p`
6325
+ font-size: 12px;
6326
+ font-weight: 400;
6327
+ width: 300px;
6328
+ text-align: center;
6329
+ `;
6330
+
6331
+
6332
+
6333
+
5907
6334
 
5908
6335
 
6336
+ const $daca1602b495441e$var$Link = ({ color: color })=>{
6337
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
6338
+ width: "24",
6339
+ height: "24",
6340
+ viewBox: "0 0 24 24",
6341
+ fill: "none",
6342
+ xmlns: "http://www.w3.org/2000/svg",
6343
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
6344
+ 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",
6345
+ fill: color || "#fff"
6346
+ })
6347
+ });
6348
+ };
6349
+ var $daca1602b495441e$export$2e2bcd8739ae039 = $daca1602b495441e$var$Link;
5909
6350
 
5910
6351
 
5911
6352
 
@@ -5958,6 +6399,64 @@ const $e8ac63718934c648$export$c7df1b15b59b1df2 = /*#__PURE__*/ (0, $jQDcL$react
5958
6399
  });
5959
6400
 
5960
6401
 
6402
+ const $23c39d8ee81f4f67$var$InvitationTile = ({ orientation: orientation })=>{
6403
+ const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
6404
+ const onCopyCallLinkClick = async ()=>{
6405
+ try {
6406
+ await (0, $0bea101d3ef852fb$export$2e2bcd8739ae039)(window.location.href);
6407
+ (0, $84c6cbcbb594d072$export$3a57e165650c636f)(t("copyLink.copied"), {
6408
+ duration: 2000
6409
+ });
6410
+ } catch (copyError) {
6411
+ console.warn(copyError);
6412
+ (0, $84c6cbcbb594d072$export$3a57e165650c636f)(t("copyLink.error"), {
6413
+ icon: (0, $e8ac63718934c648$export$edf27be85e5f6da0)
6414
+ });
6415
+ }
6416
+ };
6417
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $7e6d6d75bd13cce5$export$d653589df987fd93), {
6418
+ orientation: orientation,
6419
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $7e6d6d75bd13cce5$export$dd2ac23a70f320dd), {
6420
+ orientation: orientation,
6421
+ children: [
6422
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $7e6d6d75bd13cce5$export$2dabfbe763cc7a4), {
6423
+ children: t("invite.title")
6424
+ }),
6425
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $7e6d6d75bd13cce5$export$6ed6e36e1b456f96), {
6426
+ children: [
6427
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $7e6d6d75bd13cce5$export$5f759de1870a3e41), {
6428
+ children: [
6429
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $daca1602b495441e$export$2e2bcd8739ae039), {
6430
+ color: "black"
6431
+ }),
6432
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $7e6d6d75bd13cce5$export$c6b180e8ec79154e), {
6433
+ children: window.location.href
6434
+ })
6435
+ ]
6436
+ }),
6437
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $7e6d6d75bd13cce5$export$d7f3ab4b3437ad97), {
6438
+ onClick: onCopyCallLinkClick,
6439
+ children: t("invite.copy")
6440
+ })
6441
+ ]
6442
+ }),
6443
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $7e6d6d75bd13cce5$export$c22678f0e7b404e0), {
6444
+ children: t("invite.description")
6445
+ })
6446
+ ]
6447
+ })
6448
+ });
6449
+ };
6450
+ var $23c39d8ee81f4f67$export$2e2bcd8739ae039 = $23c39d8ee81f4f67$var$InvitationTile;
6451
+
6452
+
6453
+
6454
+
6455
+
6456
+
6457
+
6458
+
6459
+
5961
6460
  const $537dcc6df507dc4a$var$Container = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
5962
6461
  background-color: rgba(45, 45, 45, 0.75);
5963
6462
  display: flex;
@@ -6207,6 +6706,9 @@ const $88b23a8428e67b66$var$Video = ()=>{
6207
6706
  width: tileSize.width,
6208
6707
  height: tileSize.height
6209
6708
  }, stream.id);
6709
+ }),
6710
+ streams.length < 1 && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $23c39d8ee81f4f67$export$2e2bcd8739ae039), {
6711
+ orientation: orientation
6210
6712
  })
6211
6713
  ]
6212
6714
  })
@@ -6225,6 +6727,7 @@ var $88b23a8428e67b66$export$2e2bcd8739ae039 = $88b23a8428e67b66$var$Video;
6225
6727
 
6226
6728
 
6227
6729
 
6730
+
6228
6731
  const $f09948cc22419e6e$var$HangUp = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
6229
6732
  width: "25",
6230
6733
  height: "24",
@@ -6321,7 +6824,8 @@ var $39ceb925b3865754$export$2e2bcd8739ae039 = $39ceb925b3865754$var$Spinner;
6321
6824
 
6322
6825
 
6323
6826
 
6324
- const $3b6953f72db3bb17$var$YoutubeIcon = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
6827
+
6828
+ const $3b6953f72db3bb17$var$YoutubeIcon = ({ color: color })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
6325
6829
  width: "24",
6326
6830
  height: "25",
6327
6831
  viewBox: "0 0 24 25",
@@ -6329,29 +6833,13 @@ const $3b6953f72db3bb17$var$YoutubeIcon = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxr
6329
6833
  xmlns: "http://www.w3.org/2000/svg",
6330
6834
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
6331
6835
  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",
6332
- fill: "#fff"
6836
+ fill: color || "#fff"
6333
6837
  })
6334
6838
  });
6335
6839
  var $3b6953f72db3bb17$export$2e2bcd8739ae039 = $3b6953f72db3bb17$var$YoutubeIcon;
6336
6840
 
6337
6841
 
6338
6842
 
6339
- const $daca1602b495441e$var$Link = ()=>{
6340
- return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
6341
- width: "24",
6342
- height: "24",
6343
- viewBox: "0 0 24 24",
6344
- fill: "none",
6345
- xmlns: "http://www.w3.org/2000/svg",
6346
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
6347
- 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",
6348
- fill: "#fff"
6349
- })
6350
- });
6351
- };
6352
- var $daca1602b495441e$export$2e2bcd8739ae039 = $daca1602b495441e$var$Link;
6353
-
6354
-
6355
6843
 
6356
6844
 
6357
6845
 
@@ -6450,9 +6938,12 @@ const $9dfd9e2286cffa66$var$HighlightButton = ()=>{
6450
6938
  const onScreenshareClick = async ()=>{
6451
6939
  setIsHighlightMenuOpen(false);
6452
6940
  try {
6941
+ (0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("screenshareClick");
6453
6942
  await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableScreenshare();
6943
+ (0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("enableScreenshare");
6454
6944
  } catch (screenshareError) {
6455
6945
  console.warn(screenshareError);
6946
+ (0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("screenshareCancel");
6456
6947
  (0, ($parcel$interopDefault($jQDcL$reacthottoast)))(t("notifications.screensharingError"), {
6457
6948
  className: "error"
6458
6949
  });
@@ -6461,10 +6952,12 @@ const $9dfd9e2286cffa66$var$HighlightButton = ()=>{
6461
6952
  const onYoutubeClick = ()=>{
6462
6953
  setIsHighlightMenuOpen(false);
6463
6954
  setIsYoutubePopupVisible(true);
6955
+ (0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("youtubeClick");
6464
6956
  };
6465
6957
  const onLinkshareClick = ()=>{
6466
6958
  setIsHighlightMenuOpen(false);
6467
6959
  setIsLinksharePopupVisible(true);
6960
+ (0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("linkshareClick");
6468
6961
  };
6469
6962
  const menuCategories = [
6470
6963
  {
@@ -6478,7 +6971,7 @@ const $9dfd9e2286cffa66$var$HighlightButton = ()=>{
6478
6971
  },
6479
6972
  {
6480
6973
  id: "youtube",
6481
- title: "YouTube",
6974
+ title: t("youtube.title"),
6482
6975
  jsxIcon: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3b6953f72db3bb17$export$2e2bcd8739ae039), {}),
6483
6976
  action: onYoutubeClick
6484
6977
  },
@@ -6532,8 +7025,13 @@ const $a21b2aa064cb6c32$var$ControlBar = ()=>{
6532
7025
  const onMicrophoneClick = async ()=>{
6533
7026
  try {
6534
7027
  const devicesState = (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getDevicesState();
6535
- if (devicesState.microphone.enabled) await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).toggleMute();
6536
- else await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableMicrophone();
7028
+ if (devicesState.microphone.enabled) {
7029
+ (0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("toggleMicrophone");
7030
+ await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).toggleMute();
7031
+ } else {
7032
+ (0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("enableMicrophone");
7033
+ await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableMicrophone();
7034
+ }
6537
7035
  } catch (muteError) {
6538
7036
  console.warn(muteError);
6539
7037
  (0, ($parcel$interopDefault($jQDcL$reacthottoast)))(t("notifications.microphoneError"), {
@@ -6543,9 +7041,12 @@ const $a21b2aa064cb6c32$var$ControlBar = ()=>{
6543
7041
  };
6544
7042
  const onCameraClick = async ()=>{
6545
7043
  try {
6546
- if (streaming) await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).disableVideo();
6547
- else {
7044
+ if (streaming) {
7045
+ (0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("disableCamera");
7046
+ await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).disableVideo();
7047
+ } else {
6548
7048
  setIsCameraLoading(true);
7049
+ (0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("enableCamera");
6549
7050
  await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableVideo();
6550
7051
  }
6551
7052
  } catch (cameraError) {
@@ -6559,6 +7060,7 @@ const $a21b2aa064cb6c32$var$ControlBar = ()=>{
6559
7060
  };
6560
7061
  const onRotateClick = async ()=>{
6561
7062
  try {
7063
+ (0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("rotateCamera");
6562
7064
  await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).rotateVideo();
6563
7065
  } catch (rotateError) {
6564
7066
  console.warn(rotateError);
@@ -6665,15 +7167,20 @@ var $a21b2aa064cb6c32$export$2e2bcd8739ae039 = $a21b2aa064cb6c32$var$ControlBar;
6665
7167
 
6666
7168
 
6667
7169
 
7170
+
7171
+
7172
+
7173
+
7174
+
6668
7175
  const $b387679730856fb1$export$9d03e7b857083c37 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
6669
7176
  position: absolute;
6670
7177
  width: 100%;
6671
- bottom: ${(props)=>props.open ? 0 : "-340px"};
7178
+ bottom: ${(props)=>props.open ? 0 : "-500px"};
6672
7179
  transition: all 0.4s;
6673
7180
 
6674
7181
  ${(props)=>{
6675
7182
  if (props.desktop) return (0, $jQDcL$styledcomponents.css)`
6676
- bottom: ${props.open ? 0 : "calc(-340px - (100vh / 2))"};
7183
+ bottom: ${props.open ? 0 : "calc(-500px - (100vh / 2))"};
6677
7184
  height: 100%;
6678
7185
  display: flex;
6679
7186
  justify-content: center;
@@ -6684,11 +7191,12 @@ const $b387679730856fb1$export$9d03e7b857083c37 = (0, ($parcel$interopDefault($j
6684
7191
  const $b387679730856fb1$export$6bc4d6c63b7f8b75 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
6685
7192
  display: flex;
6686
7193
  flex-direction: column;
6687
- height: 340px;
7194
+ height: 500px;
6688
7195
  max-height: 100vh;
6689
- background-color: ${(props)=>props.theme.settingsBackgroundColor};
6690
- color: ${(props)=>props.theme.settingsTextColor};
7196
+ background-color: ${(props)=>props.theme.popupBackgroundPrimaryColor};
7197
+ color: ${(props)=>props.theme.popupTitleColor};
6691
7198
  border-radius: ${(props)=>props.desktop ? "20px" : "20px 20px 0 0"};
7199
+ padding-bottom: ${({ desktop: desktop })=>desktop ? 0 : "12px"};
6692
7200
  `;
6693
7201
  const $b387679730856fb1$export$f8e80e2c9abbb7eb = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
6694
7202
  display: flex;
@@ -6701,15 +7209,30 @@ const $b387679730856fb1$export$f8e80e2c9abbb7eb = (0, ($parcel$interopDefault($j
6701
7209
  font-weight: 600;
6702
7210
  }
6703
7211
  `;
7212
+ const $b387679730856fb1$export$2bd9c7c3b36c82cd = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
7213
+ display: flex;
7214
+ align-items: center;
7215
+
7216
+ h4 {
7217
+ margin: 0 0 0 8px;
7218
+ font-weight: 600;
7219
+ line-height: 19px;
7220
+ }
7221
+
7222
+ svg {
7223
+ width: 20px;
7224
+ height: 20px;
7225
+ }
7226
+ `;
6704
7227
  const $b387679730856fb1$export$b421c25a8e0ea22e = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
6705
7228
  display: flex;
6706
7229
  justify-content: center;
6707
7230
  align-items: center;
6708
7231
  border: none;
6709
- background-color: ${(props)=>props.theme.settingsCloseBackgroundColor};
7232
+ background-color: ${(props)=>props.theme.popupBackgroundSecondaryColor};
6710
7233
  border-radius: 50%;
6711
- height: 24px;
6712
- width: 24px;
7234
+ height: 30px;
7235
+ width: 30px;
6713
7236
  padding: 0;
6714
7237
 
6715
7238
  svg {
@@ -6724,6 +7247,7 @@ const $b387679730856fb1$export$b421c25a8e0ea22e = (0, ($parcel$interopDefault($j
6724
7247
  const $b387679730856fb1$export$dc1a3f6996a97083 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
6725
7248
  display: flex;
6726
7249
  justify-content: center;
7250
+ align-items: center;
6727
7251
  flex: 1;
6728
7252
  height: 0;
6729
7253
 
@@ -6737,15 +7261,59 @@ const $b387679730856fb1$export$51760c3b0f5567d2 = (0, ($parcel$interopDefault($j
6737
7261
  display: flex;
6738
7262
  justify-content: center;
6739
7263
  text-align: center;
6740
- margin: 10px 16% 20px;
7264
+ margin: 0px 16% 20px;
6741
7265
  font-size: 14px;
6742
7266
  `;
6743
-
6744
-
6745
- const $681806ce8015ae4d$var$QuickConnect = ()=>{
6746
- const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
6747
- const QuickConnectContainerRef = (0, $jQDcL$react.useRef)(null);
6748
- const QuickConnectRef = (0, $jQDcL$react.useRef)(null);
7267
+ const $b387679730856fb1$export$6a789d1ce3bcb863 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
7268
+ font-size: 100%;
7269
+ font-family: inherit;
7270
+ font-weight: 700;
7271
+ background-color: inherit;
7272
+ border: 0;
7273
+ padding: 0;
7274
+ margin: 20px 0;
7275
+ display: flex;
7276
+ flex-direction: row;
7277
+ gap: 5px;
7278
+ align-items: center;
7279
+ justify-content: center;
7280
+ color: ${({ theme: theme })=>theme.popupTitleColor};
7281
+ `;
7282
+ const $b387679730856fb1$export$c58a46cd2027881e = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).image`
7283
+ position: absolute;
7284
+ with: 70px;
7285
+ height: 70px;
7286
+ `;
7287
+
7288
+
7289
+
7290
+ const $8745dbdbe55f5ff3$var$QuickConnectLogo = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("svg", {
7291
+ width: "71",
7292
+ height: "70",
7293
+ viewBox: "0 0 71 70",
7294
+ fill: "none",
7295
+ xmlns: "http://www.w3.org/2000/svg",
7296
+ children: [
7297
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
7298
+ 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",
7299
+ fill: "#000",
7300
+ stroke: "#fff",
7301
+ strokeWidth: "3"
7302
+ }),
7303
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
7304
+ 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",
7305
+ fill: "#fff"
7306
+ })
7307
+ ]
7308
+ });
7309
+ var $8745dbdbe55f5ff3$export$2e2bcd8739ae039 = $8745dbdbe55f5ff3$var$QuickConnectLogo;
7310
+
7311
+
7312
+ const $681806ce8015ae4d$var$QuickConnect = ()=>{
7313
+ const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
7314
+ const themeContext = (0, $jQDcL$react.useContext)((0, $jQDcL$styledcomponents.ThemeContext));
7315
+ const QuickConnectContainerRef = (0, $jQDcL$react.useRef)(null);
7316
+ const QuickConnectRef = (0, $jQDcL$react.useRef)(null);
6749
7317
  const { selfPeerId: selfPeerId , profile: profile , isQuickConnectPopupVisible: isQuickConnectPopupVisible , setIsQuickConnectPopupVisible: setIsQuickConnectPopupVisible , options: options , orientation: orientation , } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
6750
7318
  (0, $326cea7dbbcb019a$export$71b2224f1ce5e08e)(QuickConnectContainerRef, ()=>{
6751
7319
  if (isQuickConnectPopupVisible) setIsQuickConnectPopupVisible(false);
@@ -6770,6 +7338,22 @@ const $681806ce8015ae4d$var$QuickConnect = ()=>{
6770
7338
  selfPeerId,
6771
7339
  profile.name
6772
7340
  ]);
7341
+ const onCopyCallLinkClick = (0, $jQDcL$react.useCallback)(async ()=>{
7342
+ try {
7343
+ await (0, $0bea101d3ef852fb$export$2e2bcd8739ae039)(qrCodeURL || window.location.href);
7344
+ (0, $84c6cbcbb594d072$export$3a57e165650c636f)(t("copyLink.copied"), {
7345
+ duration: 2000
7346
+ });
7347
+ } catch (copyError) {
7348
+ console.warn(copyError);
7349
+ (0, $84c6cbcbb594d072$export$3a57e165650c636f)(t("copyLink.error"), {
7350
+ icon: (0, $e8ac63718934c648$export$edf27be85e5f6da0)
7351
+ });
7352
+ }
7353
+ }, [
7354
+ t,
7355
+ qrCodeURL
7356
+ ]);
6773
7357
  const onQuickConnectPopupCloseClick = ()=>setIsQuickConnectPopupVisible(false);
6774
7358
  (0, $jQDcL$react.useEffect)(()=>{
6775
7359
  const onCustomMessage = (event)=>{
@@ -6784,7 +7368,9 @@ const $681806ce8015ae4d$var$QuickConnect = ()=>{
6784
7368
  setIsQuickConnectPopupVisible
6785
7369
  ]);
6786
7370
  (0, $jQDcL$react.useEffect)(()=>{
6787
- $jQDcL$qrcode.toCanvas(QuickConnectRef.current, qrCodeURL);
7371
+ $jQDcL$qrcode.toCanvas(QuickConnectRef.current, qrCodeURL, {
7372
+ errorCorrectionLevel: "M"
7373
+ });
6788
7374
  }, [
6789
7375
  qrCodeURL
6790
7376
  ]);
@@ -6817,8 +7403,15 @@ const $681806ce8015ae4d$var$QuickConnect = ()=>{
6817
7403
  children: [
6818
7404
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $b387679730856fb1$export$f8e80e2c9abbb7eb), {
6819
7405
  children: [
6820
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("h4", {
6821
- children: t("quickConnect.scanTitle")
7406
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $b387679730856fb1$export$2bd9c7c3b36c82cd), {
7407
+ children: [
7408
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $cce7f1c9e9c29503$export$6470d09a29d34d08), {
7409
+ color: themeContext.popupTitleColor
7410
+ }),
7411
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("h4", {
7412
+ children: t("quickConnect.scanTitle")
7413
+ })
7414
+ ]
6822
7415
  }),
6823
7416
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $b387679730856fb1$export$b421c25a8e0ea22e), {
6824
7417
  onClick: onQuickConnectPopupCloseClick,
@@ -6826,13 +7419,27 @@ const $681806ce8015ae4d$var$QuickConnect = ()=>{
6826
7419
  })
6827
7420
  ]
6828
7421
  }),
6829
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $b387679730856fb1$export$dc1a3f6996a97083), {
6830
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("canvas", {
6831
- ref: QuickConnectRef
6832
- })
7422
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $b387679730856fb1$export$dc1a3f6996a97083), {
7423
+ children: [
7424
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $b387679730856fb1$export$c58a46cd2027881e), {
7425
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8745dbdbe55f5ff3$export$2e2bcd8739ae039), {})
7426
+ }),
7427
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("canvas", {
7428
+ ref: QuickConnectRef
7429
+ })
7430
+ ]
6833
7431
  }),
6834
7432
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $b387679730856fb1$export$51760c3b0f5567d2), {
6835
7433
  children: t("quickConnect.scan")
7434
+ }),
7435
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $b387679730856fb1$export$6a789d1ce3bcb863), {
7436
+ onClick: onCopyCallLinkClick,
7437
+ children: [
7438
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $cce7f1c9e9c29503$export$92ce62e1201c4fc0), {
7439
+ color: "#686868"
7440
+ }),
7441
+ t("copyLink.description")
7442
+ ]
6836
7443
  })
6837
7444
  ]
6838
7445
  })
@@ -7610,15 +8217,33 @@ var $7d4fa7ceb4c29739$export$2e2bcd8739ae039 = $7d4fa7ceb4c29739$var$Menu;
7610
8217
 
7611
8218
 
7612
8219
 
8220
+
8221
+ const $57a90aad512ef25e$var$CircledTopArrow = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
8222
+ width: "21",
8223
+ height: "20",
8224
+ viewBox: "0 0 21 20",
8225
+ fill: "none",
8226
+ xmlns: "http://www.w3.org/2000/svg",
8227
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
8228
+ 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",
8229
+ fill: "#fff"
8230
+ })
8231
+ });
8232
+ var $57a90aad512ef25e$export$2e2bcd8739ae039 = $57a90aad512ef25e$var$CircledTopArrow;
8233
+
8234
+
8235
+
8236
+
8237
+ const $219bb3131afe1272$var$modalHeight = (desktop)=>desktop ? "215px" : "227px";
7613
8238
  const $219bb3131afe1272$export$b679a9a7caefa4b1 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
7614
8239
  position: absolute;
7615
8240
  width: 100%;
7616
- bottom: ${(props)=>props.open ? 0 : "-220px"};
8241
+ bottom: ${(props)=>props.open ? 0 : `-${$219bb3131afe1272$var$modalHeight(props.desktop)}`};
7617
8242
  transition: all 0.4s;
7618
8243
 
7619
8244
  ${(props)=>{
7620
8245
  if (props.desktop) return (0, $jQDcL$styledcomponents.css)`
7621
- bottom: ${props.open ? 0 : "calc(-220px - (100vh / 2))"};
8246
+ bottom: ${props.open ? 0 : `calc(-${$219bb3131afe1272$var$modalHeight(props.desktop)} - (100vh / 2))`};
7622
8247
  height: 100%;
7623
8248
  display: flex;
7624
8249
  justify-content: center;
@@ -7630,12 +8255,12 @@ const $219bb3131afe1272$export$c506828286db9a46 = (0, ($parcel$interopDefault($j
7630
8255
  display: flex;
7631
8256
  flex-direction: column;
7632
8257
  width: ${(props)=>props.desktop ? "375px" : "100%"};
7633
- height: 220px;
8258
+ height: ${({ desktop: desktop })=>$219bb3131afe1272$var$modalHeight(desktop)};
7634
8259
  max-height: 100vh;
7635
- background-color: ${(props)=>props.theme.settingsBackgroundColor};
7636
- color: ${(props)=>props.theme.settingsTextColor};
8260
+ background-color: ${(props)=>props.theme.popupBackgroundPrimaryColor};
8261
+ color: ${(props)=>props.theme.popupTitleColor};
7637
8262
  border-radius: ${(props)=>props.desktop ? "20px" : "20px 20px 0 0"};
7638
- padding: 12px 14px 30px;
8263
+ padding: ${({ desktop: desktop })=>desktop ? "16px 14px" : "16px 14px 28px"};
7639
8264
  box-sizing: border-box;
7640
8265
  `;
7641
8266
  const $219bb3131afe1272$export$f39d8ef0ab6ab3de = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
@@ -7664,10 +8289,10 @@ const $219bb3131afe1272$export$7ae684a6a708b51d = (0, ($parcel$interopDefault($j
7664
8289
  justify-content: center;
7665
8290
  align-items: center;
7666
8291
  border: none;
7667
- background-color: ${(props)=>props.theme.settingsCloseBackgroundColor};
8292
+ background-color: ${(props)=>props.theme.popupBackgroundSecondaryColor};
7668
8293
  border-radius: 50%;
7669
- height: 24px;
7670
- width: 24px;
8294
+ height: 30px;
8295
+ width: 30px;
7671
8296
  padding: 0;
7672
8297
 
7673
8298
  svg {
@@ -7699,9 +8324,9 @@ const $219bb3131afe1272$export$176dd61d50c7f3d7 = (0, ($parcel$interopDefault($j
7699
8324
  input {
7700
8325
  padding: 16px 10px 16px 20px;
7701
8326
  border-radius: 15px;
7702
- background-color: #4e4e4e;
7703
- border: 1px solid ${(props)=>props.errored ? "#d84949" : "transparent"};
7704
- color: #fff;
8327
+ background-color: ${({ theme: theme })=>theme.popupBackgroundSecondaryColor};
8328
+ border: 1px solid ${(props)=>props.errored ? "#d84949" : props.theme.popupBorderColor};
8329
+ color: #878787;
7705
8330
 
7706
8331
  &:focus {
7707
8332
  outline: none;
@@ -7722,13 +8347,23 @@ const $219bb3131afe1272$export$baf775d6bf9683d5 = (0, ($parcel$interopDefault($j
7722
8347
  const $219bb3131afe1272$export$3711c5e6a7ba3fdc = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
7723
8348
  background-color: ${({ theme: theme })=>theme.primaryColor};
7724
8349
  padding: 8px 18px;
7725
- border-radius: 50px;
8350
+ width: 100%;
8351
+ height: 46px;
8352
+ border-radius: 15px;
7726
8353
  margin: 30px auto 0;
7727
8354
  border: none;
7728
8355
  color: #fff;
7729
8356
  font-size: 16px;
7730
8357
  font-weight: 700;
7731
8358
  line-height: 18px;
8359
+
8360
+ span {
8361
+ display: flex;
8362
+ flex-direction: row;
8363
+ gap: 5px;
8364
+ alig-items: center;
8365
+ justify-content: center;
8366
+ }
7732
8367
  `;
7733
8368
 
7734
8369
 
@@ -7736,6 +8371,7 @@ const $219bb3131afe1272$export$3711c5e6a7ba3fdc = (0, ($parcel$interopDefault($j
7736
8371
  const $696ded7a5399bcd4$var$youtubeIDRegExp = /.*(?:youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=)([^#&?]*).*/;
7737
8372
  const $696ded7a5399bcd4$var$YoutubePopup = ()=>{
7738
8373
  const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
8374
+ const themeContext = (0, $jQDcL$react.useContext)((0, $jQDcL$styledcomponents.ThemeContext));
7739
8375
  const youtubePopupRef = (0, $jQDcL$react.useRef)(null);
7740
8376
  const [youtubeInputValue, setYoutubeInputValue] = (0, $jQDcL$react.useState)("");
7741
8377
  const [errorMessage, setErrorMessage] = (0, $jQDcL$react.useState)(null);
@@ -7748,6 +8384,7 @@ const $696ded7a5399bcd4$var$YoutubePopup = ()=>{
7748
8384
  const onShareClick = (event)=>{
7749
8385
  event.preventDefault();
7750
8386
  setErrorMessage(null);
8387
+ (0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("youtubeShare");
7751
8388
  const [, videoId] = youtubeInputValue.match($696ded7a5399bcd4$var$youtubeIDRegExp) || [];
7752
8389
  if (videoId) {
7753
8390
  dispatch({
@@ -7782,7 +8419,9 @@ const $696ded7a5399bcd4$var$YoutubePopup = ()=>{
7782
8419
  children: [
7783
8420
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $219bb3131afe1272$export$11781939bbc73f8b), {
7784
8421
  children: [
7785
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3b6953f72db3bb17$export$2e2bcd8739ae039), {}),
8422
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3b6953f72db3bb17$export$2e2bcd8739ae039), {
8423
+ color: themeContext.popupTitleColor
8424
+ }),
7786
8425
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("h4", {
7787
8426
  children: t("youtube.title")
7788
8427
  })
@@ -7800,10 +8439,6 @@ const $696ded7a5399bcd4$var$YoutubePopup = ()=>{
7800
8439
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $219bb3131afe1272$export$176dd61d50c7f3d7), {
7801
8440
  errored: Boolean(errorMessage),
7802
8441
  children: [
7803
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("label", {
7804
- htmlFor: "youtube-popup-input",
7805
- children: t("youtube.url")
7806
- }),
7807
8442
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("input", {
7808
8443
  id: "youtube-popup-input",
7809
8444
  placeholder: "https://www.youtube.com/watch?v=abcdef",
@@ -7820,7 +8455,12 @@ const $696ded7a5399bcd4$var$YoutubePopup = ()=>{
7820
8455
  }),
7821
8456
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $219bb3131afe1272$export$3711c5e6a7ba3fdc), {
7822
8457
  type: "submit",
7823
- children: t("youtube.share")
8458
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("span", {
8459
+ children: [
8460
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $57a90aad512ef25e$export$2e2bcd8739ae039), {}),
8461
+ t("youtube.share")
8462
+ ]
8463
+ })
7824
8464
  })
7825
8465
  ]
7826
8466
  })
@@ -7841,6 +8481,9 @@ var $696ded7a5399bcd4$export$2e2bcd8739ae039 = $696ded7a5399bcd4$var$YoutubePopu
7841
8481
 
7842
8482
 
7843
8483
 
8484
+
8485
+
8486
+
7844
8487
  const $769aee0d2f01a70c$var$PaypalWhite = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
7845
8488
  width: "24",
7846
8489
  height: "24",
@@ -7900,15 +8543,16 @@ var $769aee0d2f01a70c$export$2e2bcd8739ae039 = $769aee0d2f01a70c$var$Paypal;
7900
8543
 
7901
8544
 
7902
8545
 
8546
+ const $2d8fe9775ff247d9$var$modalHeight = (desktop)=>desktop ? "215px" : "227px";
7903
8547
  const $2d8fe9775ff247d9$export$ed0d510542cc4e55 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
7904
8548
  position: absolute;
7905
8549
  width: 100%;
7906
- bottom: ${(props)=>props.open ? 0 : "-220px"};
8550
+ bottom: ${(props)=>props.open ? 0 : `-${$2d8fe9775ff247d9$var$modalHeight(props.desktop)}`};
7907
8551
  transition: all 0.4s;
7908
8552
 
7909
8553
  ${(props)=>{
7910
8554
  if (props.desktop) return (0, $jQDcL$styledcomponents.css)`
7911
- bottom: ${props.open ? 0 : "calc(-220px - (100vh / 2))"};
8555
+ bottom: ${props.open ? 0 : `calc(-${$2d8fe9775ff247d9$var$modalHeight(props.desktop)} - (100vh / 2))`};
7912
8556
  height: 100%;
7913
8557
  display: flex;
7914
8558
  justify-content: center;
@@ -7920,12 +8564,12 @@ const $2d8fe9775ff247d9$export$93c2cc854b34757d = (0, ($parcel$interopDefault($j
7920
8564
  display: flex;
7921
8565
  flex-direction: column;
7922
8566
  width: ${(props)=>props.desktop ? "375px" : "100%"};
7923
- height: 220px;
8567
+ height: ${({ desktop: desktop })=>$2d8fe9775ff247d9$var$modalHeight(desktop)};
7924
8568
  max-height: 100vh;
7925
- background-color: ${(props)=>props.theme.settingsBackgroundColor};
7926
- color: ${(props)=>props.theme.settingsTextColor};
8569
+ background-color: ${(props)=>props.theme.popupBackgroundPrimaryColor};
8570
+ color: ${(props)=>props.theme.popupTitleColor};
7927
8571
  border-radius: ${(props)=>props.desktop ? "20px" : "20px 20px 0 0"};
7928
- padding: 12px 14px 30px;
8572
+ padding: ${({ desktop: desktop })=>desktop ? "16px 14px" : "16px 14px 28px"};
7929
8573
  box-sizing: border-box;
7930
8574
  `;
7931
8575
  const $2d8fe9775ff247d9$export$f0162ebc287dd01 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
@@ -7954,10 +8598,10 @@ const $2d8fe9775ff247d9$export$fcade06574a60ff0 = (0, ($parcel$interopDefault($j
7954
8598
  justify-content: center;
7955
8599
  align-items: center;
7956
8600
  border: none;
7957
- background-color: ${(props)=>props.theme.settingsCloseBackgroundColor};
8601
+ background-color: ${(props)=>props.theme.popupBackgroundSecondaryColor};
7958
8602
  border-radius: 50%;
7959
- height: 24px;
7960
- width: 24px;
8603
+ height: 30px;
8604
+ width: 30px;
7961
8605
  padding: 0;
7962
8606
 
7963
8607
  svg {
@@ -7978,20 +8622,12 @@ const $2d8fe9775ff247d9$export$dcb32b2b413109d8 = (0, ($parcel$interopDefault($j
7978
8622
  flex-direction: column;
7979
8623
  position: relative;
7980
8624
 
7981
- label {
7982
- font-size: 10px;
7983
- font-weight: 700;
7984
- line-height: 10px;
7985
- color: #fff;
7986
- margin-bottom: 10px;
7987
- }
7988
-
7989
8625
  input {
7990
8626
  padding: 16px 10px 16px 20px;
7991
8627
  border-radius: 15px;
7992
- background-color: #4e4e4e;
7993
- border: 1px solid ${(props)=>props.errored ? "#d84949" : "transparent"};
7994
- color: #fff;
8628
+ background-color: ${({ theme: theme })=>theme.popupBackgroundSecondaryColor};
8629
+ border: 1px solid ${(props)=>props.errored ? "#d84949" : props.theme.popupBorderColor};
8630
+ color: #878787;
7995
8631
 
7996
8632
  &:focus {
7997
8633
  outline: none;
@@ -8011,14 +8647,25 @@ const $2d8fe9775ff247d9$export$711a92c06f80c3bd = (0, ($parcel$interopDefault($j
8011
8647
  `;
8012
8648
  const $2d8fe9775ff247d9$export$aec21c9a4da7a1b7 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
8013
8649
  background-color: ${({ theme: theme })=>theme.primaryColor};
8014
- padding: 8px 18px;
8015
- border-radius: 50px;
8650
+ padding: ${({ status: status })=>status !== "waiting" ? "auto" : "8px 18px"};
8651
+ width: ${({ status: status })=>status !== "waiting" ? "46px" : "100%"};
8652
+ height: 46px;
8653
+ border-radius: ${({ status: status })=>status !== "waiting" ? "50%" : "15px"};
8016
8654
  margin: 30px auto 0;
8017
8655
  border: none;
8018
8656
  color: #fff;
8019
8657
  font-size: 16px;
8020
8658
  font-weight: 700;
8021
8659
  line-height: 18px;
8660
+ transition: border-radius 0.3s ease-in, width 0.3s;
8661
+
8662
+ span {
8663
+ display: flex;
8664
+ flex-direction: row;
8665
+ gap: 5px;
8666
+ align-items: center;
8667
+ justify-content: center;
8668
+ }
8022
8669
  `;
8023
8670
  const $2d8fe9775ff247d9$export$9e155375d8fb1f67 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).img`
8024
8671
  width: 36px;
@@ -8027,7 +8674,8 @@ const $2d8fe9775ff247d9$export$9e155375d8fb1f67 = (0, ($parcel$interopDefault($j
8027
8674
  `;
8028
8675
  const $2d8fe9775ff247d9$export$5e3f251c730829 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
8029
8676
  display: flex;
8030
- gap: 5px;
8677
+ align-items: center;
8678
+ justify-content: center;
8031
8679
  `;
8032
8680
 
8033
8681
 
@@ -8069,7 +8717,7 @@ const $e38290b50aaba0e3$var$sendLinkNotification = (data, t)=>{
8069
8717
  const $e38290b50aaba0e3$var$sendPaypalInvoiceNotification = (senderName, url, t)=>{
8070
8718
  const userName = senderName || t("misc.user");
8071
8719
  const title = t("shareLink.invoice", {
8072
- name: userName
8720
+ user: userName
8073
8721
  });
8074
8722
  (0, $84c6cbcbb594d072$export$3a57e165650c636f)(title, {
8075
8723
  button: {
@@ -8095,11 +8743,12 @@ const $e38290b50aaba0e3$var$sendPaypalInvoiceNotification = (senderName, url, t)
8095
8743
  };
8096
8744
  const $e38290b50aaba0e3$var$LinksharePopup = ()=>{
8097
8745
  const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
8746
+ const themeContext = (0, $jQDcL$react.useContext)((0, $jQDcL$styledcomponents.ThemeContext));
8098
8747
  const linksharePopupRef = (0, $jQDcL$react.useRef)(null);
8099
8748
  const linkshareInputRef = (0, $jQDcL$react.useRef)(null);
8100
8749
  const [linkshareInputValue, setLinkshareInputValue] = (0, $jQDcL$react.useState)("");
8101
8750
  const [errorMessage, setErrorMessage] = (0, $jQDcL$react.useState)(null);
8102
- const [isLoading, setIsLoading] = (0, $jQDcL$react.useState)(false);
8751
+ const [status, setStatus] = (0, $jQDcL$react.useState)("waiting");
8103
8752
  const { isLinksharePopupVisible: isLinksharePopupVisible , setIsLinksharePopupVisible: setIsLinksharePopupVisible , orientation: orientation , options: options } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
8104
8753
  const { streams: streams } = (0, $3f6e908c45fcc5b3$export$b5633a7cfbe42d9f)();
8105
8754
  const desktop = orientation === "landscape";
@@ -8118,7 +8767,8 @@ const $e38290b50aaba0e3$var$LinksharePopup = ()=>{
8118
8767
  event.preventDefault();
8119
8768
  if (!linkshareInputValue) return;
8120
8769
  setErrorMessage(null);
8121
- setIsLoading(true);
8770
+ setStatus("loading");
8771
+ (0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("linkshareShare");
8122
8772
  let url;
8123
8773
  try {
8124
8774
  url = new URL(linkshareInputValue);
@@ -8150,7 +8800,7 @@ const $e38290b50aaba0e3$var$LinksharePopup = ()=>{
8150
8800
  if (streams.length < 2) {
8151
8801
  const userName = streams[0]?.profile?.name || t("misc.user");
8152
8802
  (0, ($parcel$interopDefault($jQDcL$reacthottoast)))(t("shareLink.sentToUser", {
8153
- name: userName
8803
+ user: userName
8154
8804
  }));
8155
8805
  } else (0, ($parcel$interopDefault($jQDcL$reacthottoast)))(t("shareLink.sentToUsers"));
8156
8806
  setIsLinksharePopupVisible(false);
@@ -8162,7 +8812,7 @@ const $e38290b50aaba0e3$var$LinksharePopup = ()=>{
8162
8812
  }
8163
8813
  setLinkshareInputValue("");
8164
8814
  }
8165
- setIsLoading(false);
8815
+ setStatus("done");
8166
8816
  };
8167
8817
  const onCloseClick = ()=>setIsLinksharePopupVisible(false);
8168
8818
  (0, $jQDcL$react.useEffect)(()=>{
@@ -8175,6 +8825,7 @@ const $e38290b50aaba0e3$var$LinksharePopup = ()=>{
8175
8825
  ]);
8176
8826
  const onPopupTransitionEnd = ()=>{
8177
8827
  if (isLinksharePopupVisible) linkshareInputRef.current?.focus();
8828
+ if (status === "done") setStatus("waiting");
8178
8829
  };
8179
8830
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $2d8fe9775ff247d9$export$ed0d510542cc4e55), {
8180
8831
  open: isLinksharePopupVisible,
@@ -8188,7 +8839,9 @@ const $e38290b50aaba0e3$var$LinksharePopup = ()=>{
8188
8839
  children: [
8189
8840
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $2d8fe9775ff247d9$export$7563f0d47f114601), {
8190
8841
  children: [
8191
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $daca1602b495441e$export$2e2bcd8739ae039), {}),
8842
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $daca1602b495441e$export$2e2bcd8739ae039), {
8843
+ color: themeContext.popupTitleColor
8844
+ }),
8192
8845
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("h4", {
8193
8846
  children: t("shareLink.title2")
8194
8847
  })
@@ -8206,10 +8859,6 @@ const $e38290b50aaba0e3$var$LinksharePopup = ()=>{
8206
8859
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $2d8fe9775ff247d9$export$dcb32b2b413109d8), {
8207
8860
  errored: Boolean(errorMessage),
8208
8861
  children: [
8209
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("label", {
8210
- htmlFor: "linkshare-popup-input",
8211
- children: t("shareLink.linkUrl")
8212
- }),
8213
8862
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("input", {
8214
8863
  id: "linkshare-popup-input",
8215
8864
  ref: linkshareInputRef,
@@ -8227,17 +8876,18 @@ const $e38290b50aaba0e3$var$LinksharePopup = ()=>{
8227
8876
  }),
8228
8877
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $2d8fe9775ff247d9$export$aec21c9a4da7a1b7), {
8229
8878
  type: "submit",
8230
- disabled: isLoading,
8231
- children: isLoading ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $2d8fe9775ff247d9$export$5e3f251c730829), {
8879
+ disabled: status !== "waiting",
8880
+ status: status,
8881
+ children: status !== "waiting" ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $2d8fe9775ff247d9$export$5e3f251c730829), {
8882
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $39ceb925b3865754$export$2e2bcd8739ae039), {
8883
+ size: "18px"
8884
+ })
8885
+ }) : /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("span", {
8232
8886
  children: [
8233
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $39ceb925b3865754$export$2e2bcd8739ae039), {
8234
- size: "18px"
8235
- }),
8236
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
8237
- children: t("shareLink.creating")
8238
- })
8887
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $57a90aad512ef25e$export$2e2bcd8739ae039), {}),
8888
+ t("shareLink.title")
8239
8889
  ]
8240
- }) : t("shareLink.title")
8890
+ })
8241
8891
  })
8242
8892
  ]
8243
8893
  })
@@ -8249,83 +8899,401 @@ var $e38290b50aaba0e3$export$2e2bcd8739ae039 = $e38290b50aaba0e3$var$LinksharePo
8249
8899
 
8250
8900
 
8251
8901
 
8252
- const $e6950939129bcd4b$export$8376625f8bb18347 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
8253
- position: absolute;
8254
- width: 100%;
8255
- height: 100%;
8256
- background-color: ${(props)=>props.open ? "rgba(0, 0, 0, 0.9)" : "transparent"};
8257
- z-index: ${(props)=>props.open ? 100 : -1};
8258
- overflow: hidden;
8259
- transition: all ${(props)=>props.open ? "0.2s" : "0.6s"};
8260
- `;
8261
8902
 
8262
8903
 
8263
- const $5f509eaff0d9c05a$var$Settings = ()=>{
8264
- const { isQuickConnectPopupVisible: isQuickConnectPopupVisible , isSettingsMenuVisible: isSettingsMenuVisible , isYoutubePopupVisible: isYoutubePopupVisible , isLinksharePopupVisible: isLinksharePopupVisible , } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
8265
- const open = isQuickConnectPopupVisible || isSettingsMenuVisible || isYoutubePopupVisible || isLinksharePopupVisible;
8266
- return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $e6950939129bcd4b$export$8376625f8bb18347), {
8267
- open: open,
8268
- children: [
8269
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $681806ce8015ae4d$export$2e2bcd8739ae039), {}),
8270
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $7d4fa7ceb4c29739$export$2e2bcd8739ae039), {}),
8271
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $696ded7a5399bcd4$export$2e2bcd8739ae039), {}),
8272
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $e38290b50aaba0e3$export$2e2bcd8739ae039), {})
8273
- ]
8274
- });
8275
- };
8276
- var $5f509eaff0d9c05a$export$2e2bcd8739ae039 = $5f509eaff0d9c05a$var$Settings;
8277
8904
 
8278
8905
 
8279
8906
 
8280
8907
 
8281
8908
 
8909
+ const $3e04235fac70629f$var$CircledCheckmark = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
8910
+ width: "20",
8911
+ height: "20",
8912
+ viewBox: "0 0 20 20",
8913
+ fill: "none",
8914
+ xmlns: "http://www.w3.org/2000/svg",
8915
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
8916
+ 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",
8917
+ fill: "#fff"
8918
+ })
8919
+ });
8920
+ var $3e04235fac70629f$export$2e2bcd8739ae039 = $3e04235fac70629f$var$CircledCheckmark;
8282
8921
 
8283
8922
 
8284
8923
 
8924
+ const $32119bad9969854e$var$modalHeight = (desktop)=>desktop ? "420px" : "432px";
8925
+ const $32119bad9969854e$export$b298b737d508d68e = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
8926
+ position: absolute;
8927
+ width: 100%;
8928
+ bottom: ${(props)=>props.open ? 0 : `-${$32119bad9969854e$var$modalHeight(props.desktop)}`};
8929
+ transition: all 0.4s;
8285
8930
 
8286
- const $bbe4b943c376008e$export$104f28dc79f055f4 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
8931
+ ${(props)=>{
8932
+ if (props.desktop) return (0, $jQDcL$styledcomponents.css)`
8933
+ bottom: ${props.open ? 0 : `calc(-${$32119bad9969854e$var$modalHeight(props.desktop)} - (100vh / 2))`};
8934
+ height: 100%;
8935
+ display: flex;
8936
+ justify-content: center;
8937
+ align-items: center;
8938
+ `;
8939
+ }}
8940
+ `;
8941
+ const $32119bad9969854e$export$156bb26b5a0d2f83 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
8287
8942
  display: flex;
8288
- flex: 1;
8289
8943
  flex-direction: column;
8944
+ width: ${(props)=>props.desktop ? "375px" : "100%"};
8945
+ height: ${({ desktop: desktop })=>$32119bad9969854e$var$modalHeight(desktop)};
8946
+ max-height: 100vh;
8947
+ background-color: ${(props)=>props.theme.popupBackgroundPrimaryColor};
8948
+ color: ${(props)=>props.theme.popupTitleColor};
8949
+ border-radius: ${(props)=>props.desktop ? "20px" : "20px 20px 0 0"};
8950
+ padding: 12px 14px 30px;
8951
+ box-sizing: border-box;
8952
+ `;
8953
+ const $32119bad9969854e$export$28a9baece842bd02 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
8954
+ display: flex;
8955
+ justify-content: space-between;
8956
+ align-items: center;
8957
+ margin-bottom: 30px;
8958
+ `;
8959
+ const $32119bad9969854e$export$de75cb5a82158063 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
8960
+ display: flex;
8961
+ align-items: center;
8962
+
8963
+ h4 {
8964
+ margin: 0 0 0 8px;
8965
+ font-weight: 600;
8966
+ line-height: 19px;
8967
+ }
8968
+
8969
+ svg {
8970
+ width: 20px;
8971
+ height: 20px;
8972
+ }
8973
+ `;
8974
+ const $32119bad9969854e$export$ab8c73b78f24745 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
8975
+ display: flex;
8290
8976
  justify-content: center;
8291
8977
  align-items: center;
8292
- background-color: #000;
8293
- color: #fff;
8294
- padding-top: 70px;
8978
+ border: none;
8979
+ background-color: ${(props)=>props.theme.popupBackgroundSecondaryColor};
8980
+ border-radius: 50%;
8981
+ height: 30px;
8982
+ width: 30px;
8983
+ padding: 0;
8984
+
8985
+ svg {
8986
+ width: 15px;
8987
+ height: 15px;
8988
+
8989
+ path {
8990
+ fill: #000;
8991
+ }
8992
+ }
8295
8993
  `;
8296
- const $bbe4b943c376008e$export$51071a7ce784448 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).span`
8297
- font-size: 60px;
8994
+ const $32119bad9969854e$export$8603bdc04df69ddb = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).form`
8995
+ display: flex;
8996
+ flex-direction: column;
8298
8997
  `;
8299
- const $bbe4b943c376008e$export$eebc018855fb0cb6 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).h1`
8300
- font-size: 28px;
8301
- font-weight: 600;
8302
- line-height: 33.6px;
8998
+ const $32119bad9969854e$export$3f7ff862632a81a7 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
8999
+ display: flex;
9000
+ flex-direction: row;
9001
+ flex-wrap: wrap-reverse;
9002
+ gap: 10px 20px;
9003
+ width: 280px;
9004
+ margin: auto;
8303
9005
  `;
8304
- const $bbe4b943c376008e$export$f4e7b895a81715e9 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).p`
8305
- font-size: 22px;
8306
- font-weight: 500;
8307
- line-height: 26.4px;
8308
- margin: 0;
9006
+ const $32119bad9969854e$export$1058440c16b3a127 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).label`
9007
+ display: flex;
9008
+ flex-direction: column;
9009
+ position: relative;
9010
+ justify-content: center;
9011
+ flex-grow: 1;
9012
+
9013
+ font-size: 16px;
9014
+ font-weight: 700;
9015
+ line-height: 10px;
9016
+ color: #686868;
9017
+ input[type='radio'] {
9018
+ appearance: none;
9019
+ border: ${(props)=>props.image ? 0 : `3px solid ${props.theme.popupBorderColor}`};
9020
+ background-color: ${({ theme: theme })=>theme.popupBackgroundThirdColor};
9021
+ background-position: 0 0;
9022
+ background-image: ${({ image: image })=>image ? `url(${image})` : undefined};
9023
+ height: 80px;
9024
+ min-width: 80px;
9025
+ border-radius: 10px;
9026
+ margin: 0;
9027
+ box-sizing: border-box;
9028
+
9029
+ &:checked {
9030
+ background-position: -3px -3px;
9031
+ border: 3px solid ${({ theme: theme })=>theme.primaryColor};
9032
+ }
9033
+
9034
+ &:checked + span {
9035
+ color: ${({ theme: theme })=>theme.primaryColor};
9036
+ }
9037
+ }
9038
+
9039
+ &:hover input[type='radio'],
9040
+ span {
9041
+ cursor: pointer;
9042
+ }
9043
+
9044
+ span {
9045
+ position: absolute;
9046
+ width: 100%;
9047
+ text-align: center;
9048
+ display: ${({ image: image })=>image ? "none" : "inline"};
9049
+ }
8309
9050
  `;
8310
- const $bbe4b943c376008e$export$3a4deda42b6182b7 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
9051
+ const $32119bad9969854e$export$dfc919b3320e9811 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
8311
9052
  background-color: ${({ theme: theme })=>theme.primaryColor};
9053
+ padding: 8px 18px;
9054
+ width: 280px;
9055
+ height: 46px;
9056
+ border-radius: 15px;
9057
+ margin: 20px auto 0;
8312
9058
  border: none;
8313
- border-radius: 50px;
8314
- padding: 12px 18px;
9059
+ color: #fff;
8315
9060
  font-size: 16px;
8316
- font-weight: 600;
9061
+ font-weight: 700;
8317
9062
  line-height: 18px;
8318
- color: #fff;
8319
- margin-top: 30px;
9063
+ transition: border-radius 0.3s ease-in, width 0.3s;
9064
+
9065
+ span {
9066
+ display: flex;
9067
+ flex-direction: row;
9068
+ gap: 5px;
9069
+ align-items: center;
9070
+ justify-content: center;
9071
+ }
8320
9072
  `;
8321
9073
 
8322
9074
 
8323
- const $3d1bfd8f074b99b1$var$EndView = ()=>{
8324
- const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
8325
- const { streamState: streamState , setStreamState: setStreamState } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
8326
- const ended = streamState === "ended";
8327
- const terminated = streamState === "terminated";
9075
+ const $8a52c9358bc52b86$var$backgroundOptions = [
9076
+ {
9077
+ title: "Blue",
9078
+ id: "background-blue",
9079
+ iconUrl: `${"https://stream-assets.snapcall.io/v1.7.0"}/backgrounds/blue_background_icon.png`,
9080
+ value: `${"https://stream-assets.snapcall.io/v1.7.0"}/backgrounds/blue_background.png`
9081
+ },
9082
+ {
9083
+ title: "Cold",
9084
+ id: "background-cold",
9085
+ iconUrl: `${"https://stream-assets.snapcall.io/v1.7.0"}/backgrounds/cold_background_icon.png`,
9086
+ value: `${"https://stream-assets.snapcall.io/v1.7.0"}/backgrounds/cold_background.png`
9087
+ },
9088
+ {
9089
+ title: "Bricks",
9090
+ id: "background-bricks",
9091
+ iconUrl: `${"https://stream-assets.snapcall.io/v1.7.0"}/backgrounds/bricks_background_icon.png`,
9092
+ value: `${"https://stream-assets.snapcall.io/v1.7.0"}/backgrounds/bricks_background.png`
9093
+ },
9094
+ {
9095
+ title: "White",
9096
+ id: "background-white",
9097
+ iconUrl: `${"https://stream-assets.snapcall.io/v1.7.0"}/backgrounds/white_background_icon.png`,
9098
+ value: `${"https://stream-assets.snapcall.io/v1.7.0"}/backgrounds/white_background.png`
9099
+ },
9100
+ {
9101
+ title: "Yellow",
9102
+ id: "background-yellow",
9103
+ iconUrl: `${"https://stream-assets.snapcall.io/v1.7.0"}/backgrounds/yellow_background_icon.png`,
9104
+ value: `${"https://stream-assets.snapcall.io/v1.7.0"}/backgrounds/yellow_background.png`
9105
+ },
9106
+ {
9107
+ title: "Warm",
9108
+ id: "background-warm",
9109
+ iconUrl: `${"https://stream-assets.snapcall.io/v1.7.0"}/backgrounds/warm_background_icon.png`,
9110
+ value: `${"https://stream-assets.snapcall.io/v1.7.0"}/backgrounds/warm_background.png`
9111
+ },
9112
+ {
9113
+ title: "None",
9114
+ value: "none",
9115
+ id: "background-none"
9116
+ },
9117
+ {
9118
+ title: "Blurred",
9119
+ value: "blurred",
9120
+ id: "background-blurred"
9121
+ },
9122
+ ];
9123
+ const $8a52c9358bc52b86$var$VirtualBackgroundPopup = ()=>{
9124
+ const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
9125
+ const virtualBackgroundPopupRef = (0, $jQDcL$react.useRef)(null);
9126
+ const { isVirtualBackgroundPopupVisible: isVirtualBackgroundPopupVisible , setIsVirtualBackgroundPopupVisible: setIsVirtualBackgroundPopupVisible , orientation: orientation } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
9127
+ const desktop = orientation === "landscape";
9128
+ const onSubmit = (e)=>{
9129
+ e.preventDefault();
9130
+ const value = e.currentTarget.elements.background.value;
9131
+ if (value === "none") (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).stopVideoBackground();
9132
+ else if (value === "blurred") {
9133
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).setVideoBackground({
9134
+ blurLevel: 16,
9135
+ type: "blur"
9136
+ });
9137
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).initVideoBackground();
9138
+ } else {
9139
+ const background = new Image();
9140
+ background.src = value;
9141
+ background.crossOrigin = "anonymous";
9142
+ background.onload = ()=>{
9143
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).setVideoBackground({
9144
+ background: background,
9145
+ type: "background"
9146
+ });
9147
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).initVideoBackground();
9148
+ };
9149
+ }
9150
+ setIsVirtualBackgroundPopupVisible(false);
9151
+ };
9152
+ const onCloseClick = ()=>setIsVirtualBackgroundPopupVisible(false);
9153
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $32119bad9969854e$export$b298b737d508d68e), {
9154
+ open: isVirtualBackgroundPopupVisible,
9155
+ desktop: desktop,
9156
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $32119bad9969854e$export$156bb26b5a0d2f83), {
9157
+ ref: virtualBackgroundPopupRef,
9158
+ desktop: desktop,
9159
+ children: [
9160
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $32119bad9969854e$export$28a9baece842bd02), {
9161
+ children: [
9162
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $32119bad9969854e$export$de75cb5a82158063), {
9163
+ children: [
9164
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $cce7f1c9e9c29503$export$d5424e4dfe4be076), {
9165
+ color: "#000"
9166
+ }),
9167
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("h4", {
9168
+ children: t("virtualBackground.title")
9169
+ })
9170
+ ]
9171
+ }),
9172
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $32119bad9969854e$export$ab8c73b78f24745), {
9173
+ onClick: onCloseClick,
9174
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $6f36db3b1217f099$export$2e2bcd8739ae039), {})
9175
+ })
9176
+ ]
9177
+ }),
9178
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $32119bad9969854e$export$8603bdc04df69ddb), {
9179
+ onSubmit: onSubmit,
9180
+ children: [
9181
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $32119bad9969854e$export$3f7ff862632a81a7), {
9182
+ children: $8a52c9358bc52b86$var$backgroundOptions.map(({ id: id , title: title , value: value , iconUrl: iconUrl })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $32119bad9969854e$export$1058440c16b3a127), {
9183
+ htmlFor: id,
9184
+ image: iconUrl,
9185
+ children: [
9186
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("input", {
9187
+ type: "radio",
9188
+ value: value,
9189
+ id: id,
9190
+ name: "background",
9191
+ defaultChecked: value === "none"
9192
+ }),
9193
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
9194
+ children: title
9195
+ })
9196
+ ]
9197
+ }, id))
9198
+ }),
9199
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $32119bad9969854e$export$dfc919b3320e9811), {
9200
+ type: "submit",
9201
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("span", {
9202
+ children: [
9203
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3e04235fac70629f$export$2e2bcd8739ae039), {}),
9204
+ t("virtualBackground.setBackground")
9205
+ ]
9206
+ })
9207
+ })
9208
+ ]
9209
+ })
9210
+ ]
9211
+ })
9212
+ });
9213
+ };
9214
+ var $8a52c9358bc52b86$export$2e2bcd8739ae039 = $8a52c9358bc52b86$var$VirtualBackgroundPopup;
9215
+
9216
+
9217
+
9218
+ const $e6950939129bcd4b$export$8376625f8bb18347 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
9219
+ position: absolute;
9220
+ width: 100%;
9221
+ height: 100%;
9222
+ background-color: ${(props)=>props.open ? "rgba(0, 0, 0, 0.9)" : "transparent"};
9223
+ z-index: ${(props)=>props.open ? 100 : -1};
9224
+ overflow: hidden;
9225
+ transition: all ${(props)=>props.open ? "0.2s" : "0.6s"};
9226
+ `;
9227
+
9228
+
9229
+ const $5f509eaff0d9c05a$var$Settings = ()=>{
9230
+ const { isQuickConnectPopupVisible: isQuickConnectPopupVisible , isSettingsMenuVisible: isSettingsMenuVisible , isYoutubePopupVisible: isYoutubePopupVisible , isLinksharePopupVisible: isLinksharePopupVisible , isVirtualBackgroundPopupVisible: isVirtualBackgroundPopupVisible , } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
9231
+ const open = isQuickConnectPopupVisible || isSettingsMenuVisible || isYoutubePopupVisible || isLinksharePopupVisible || isVirtualBackgroundPopupVisible;
9232
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $e6950939129bcd4b$export$8376625f8bb18347), {
9233
+ open: open,
9234
+ children: [
9235
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $681806ce8015ae4d$export$2e2bcd8739ae039), {}),
9236
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $7d4fa7ceb4c29739$export$2e2bcd8739ae039), {}),
9237
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $696ded7a5399bcd4$export$2e2bcd8739ae039), {}),
9238
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $e38290b50aaba0e3$export$2e2bcd8739ae039), {}),
9239
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8a52c9358bc52b86$export$2e2bcd8739ae039), {})
9240
+ ]
9241
+ });
9242
+ };
9243
+ var $5f509eaff0d9c05a$export$2e2bcd8739ae039 = $5f509eaff0d9c05a$var$Settings;
9244
+
9245
+
9246
+
9247
+
9248
+
9249
+
9250
+
9251
+
9252
+
9253
+ const $bbe4b943c376008e$export$104f28dc79f055f4 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
9254
+ display: flex;
9255
+ flex: 1;
9256
+ flex-direction: column;
9257
+ justify-content: center;
9258
+ align-items: center;
9259
+ background-color: #000;
9260
+ color: #fff;
9261
+ padding-top: 70px;
9262
+ `;
9263
+ const $bbe4b943c376008e$export$51071a7ce784448 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).span`
9264
+ font-size: 60px;
9265
+ `;
9266
+ const $bbe4b943c376008e$export$eebc018855fb0cb6 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).h1`
9267
+ font-size: 28px;
9268
+ font-weight: 600;
9269
+ line-height: 33.6px;
9270
+ `;
9271
+ const $bbe4b943c376008e$export$f4e7b895a81715e9 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).p`
9272
+ font-size: 22px;
9273
+ font-weight: 500;
9274
+ line-height: 26.4px;
9275
+ margin: 0;
9276
+ `;
9277
+ const $bbe4b943c376008e$export$3a4deda42b6182b7 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
9278
+ background-color: ${({ theme: theme })=>theme.primaryColor};
9279
+ border: none;
9280
+ border-radius: 50px;
9281
+ padding: 12px 18px;
9282
+ font-size: 16px;
9283
+ font-weight: 600;
9284
+ line-height: 18px;
9285
+ color: #fff;
9286
+ margin-top: 30px;
9287
+ `;
9288
+
9289
+
9290
+ const $3d1bfd8f074b99b1$var$EndView = ()=>{
9291
+ const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
9292
+ const { streamState: streamState , setStreamState: setStreamState } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
9293
+ const ended = streamState === "ended";
9294
+ const terminated = streamState === "terminated";
8328
9295
  const expired = streamState === "expired";
9296
+ const full = streamState === "full";
8329
9297
  const onGoBackClick = ()=>{
8330
9298
  (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).init();
8331
9299
  setStreamState("streaming");
@@ -8338,24 +9306,28 @@ const $3d1bfd8f074b99b1$var$EndView = ()=>{
8338
9306
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $bbe4b943c376008e$export$51071a7ce784448), {
8339
9307
  children: [
8340
9308
  (ended || terminated) && "\uD83D\uDC4B",
8341
- expired && "\uD83E\uDD7A"
9309
+ (expired || full) && "\uD83E\uDD7A"
8342
9310
  ]
8343
9311
  }),
8344
9312
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $bbe4b943c376008e$export$eebc018855fb0cb6), {
8345
9313
  children: [
8346
9314
  ended && t("endView.callLeft"),
8347
9315
  terminated && t("endView.callEnded"),
8348
- expired && t("endView.tooLate")
9316
+ expired && t("endView.tooLate"),
9317
+ full && t("endView.full")
8349
9318
  ]
8350
9319
  }),
8351
9320
  expired && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $bbe4b943c376008e$export$f4e7b895a81715e9), {
8352
9321
  children: t("endView.callIsOver")
8353
9322
  }),
8354
- ended && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $bbe4b943c376008e$export$3a4deda42b6182b7), {
9323
+ full && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $bbe4b943c376008e$export$f4e7b895a81715e9), {
9324
+ children: t("endView.fullDescription")
9325
+ }),
9326
+ (ended || full) && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $bbe4b943c376008e$export$3a4deda42b6182b7), {
8355
9327
  onClick: onGoBackClick,
8356
9328
  children: t("endView.goBack")
8357
9329
  }),
8358
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $65bf10a117819168$export$ad5f39c592532e2d), {})
9330
+ !full && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $65bf10a117819168$export$ad5f39c592532e2d), {})
8359
9331
  ]
8360
9332
  });
8361
9333
  };
@@ -8427,7 +9399,6 @@ var $5dcd9e6925c7037c$export$2e2bcd8739ae039 = $5dcd9e6925c7037c$var$Sounds;
8427
9399
 
8428
9400
 
8429
9401
 
8430
-
8431
9402
  const $e66cc5db58913155$var$iconsMap = {
8432
9403
  error: (0, $e8ac63718934c648$export$edf27be85e5f6da0),
8433
9404
  critical: (0, $e8ac63718934c648$export$c7df1b15b59b1df2)
@@ -8540,7 +9511,12 @@ const $9295e87e6b93e693$export$f30cb9bc4f736419 = {
8540
9511
  settingsBackgroundColor: "#fff",
8541
9512
  settingsHeaderTextColor: "#000",
8542
9513
  settingsTextColor: "#000",
8543
- settingsCloseBackgroundColor: "#eaebec"
9514
+ settingsCloseBackgroundColor: "#eaebec",
9515
+ popupBackgroundPrimaryColor: "#fff",
9516
+ popupBackgroundSecondaryColor: "#f3f3f3",
9517
+ popupBackgroundThirdColor: "#f7f7f7",
9518
+ popupBorderColor: "#d4d4d4",
9519
+ popupTitleColor: "#2d2d2d"
8544
9520
  };
8545
9521
  const $9295e87e6b93e693$export$3e936a8db52a10a0 = {
8546
9522
  primaryColor: "#268AFA",
@@ -8556,7 +9532,12 @@ const $9295e87e6b93e693$export$3e936a8db52a10a0 = {
8556
9532
  settingsBackgroundColor: "#242324",
8557
9533
  settingsHeaderTextColor: "#f9f9f9",
8558
9534
  settingsTextColor: "#fff",
8559
- settingsCloseBackgroundColor: "#7b7c7e"
9535
+ settingsCloseBackgroundColor: "#7b7c7e",
9536
+ popupBackgroundPrimaryColor: "#fff",
9537
+ popupBackgroundSecondaryColor: "#f3f3f3",
9538
+ popupBackgroundThirdColor: "#f7f7f7",
9539
+ popupBorderColor: "#d4d4d4",
9540
+ popupTitleColor: "#2d2d2d"
8560
9541
  };
8561
9542
 
8562
9543
 
@@ -8702,6 +9683,13 @@ const $e41262de25602ed2$var$SvgDefinitions = ()=>/*#__PURE__*/ (0, $jQDcL$reactj
8702
9683
  fill: "#fff",
8703
9684
  d: "M0 0h24v24H0z"
8704
9685
  })
9686
+ }),
9687
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("clipPath", {
9688
+ id: "greetingSnapcallLogo",
9689
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
9690
+ fill: "#fff",
9691
+ d: "M0 0h72v72H0z"
9692
+ })
8705
9693
  })
8706
9694
  ]
8707
9695
  })
@@ -9069,6 +10057,12 @@ const $e3bb2c5d0e5b45b5$export$20f257fc407da7a3 = (0, $jQDcL$styledcomponents.cr
9069
10057
  src: url('https://cdn.snapcall.io/fonts/Lato/Bold.woff2') format('woff2'),
9070
10058
  url('https://cdn.snapcall.io/fonts/Lato/Bold.woff') format('woff');
9071
10059
  }
10060
+ @font-face {
10061
+ font-family: 'Gazpacho';
10062
+ font-weight: 700;
10063
+ src: url('https://cdn.snapcall.io/fonts/Gazpacho/Bold.woff2') format('woff2'),
10064
+ url('https://cdn.snapcall.io/fonts/Gazpacho/Bold.woff') format('woff');
10065
+ }
9072
10066
  `;
9073
10067
  const $e3bb2c5d0e5b45b5$export$914ddf2021ea8ee6 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
9074
10068
  display: flex;
@@ -9111,6 +10105,7 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options })=>{
9111
10105
  const [isSettingsMenuVisible, setIsSettingsMenuVisible] = (0, $jQDcL$react.useState)(false);
9112
10106
  const [isYoutubePopupVisible, setIsYoutubePopupVisible] = (0, $jQDcL$react.useState)(false);
9113
10107
  const [isLinksharePopupVisible, setIsLinksharePopupVisible] = (0, $jQDcL$react.useState)(false);
10108
+ const [isVirtualBackgroundPopupVisible, setIsVirtualBackgroundPopupVisible] = (0, $jQDcL$react.useState)(false);
9114
10109
  const [theme, setTheme] = (0, $jQDcL$react.useState)($ee8cb448c2c74888$var$currentTheme);
9115
10110
  const [language, setLanguage] = (0, $jQDcL$react.useState)(options.language || $ee8cb448c2c74888$var$currentLanguage);
9116
10111
  const [profile1, setProfile] = (0, $jQDcL$react.useState)({});
@@ -9121,7 +10116,7 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options })=>{
9121
10116
  const [userInteractionTriggered, setUserInteractionTriggered] = (0, $jQDcL$react.useState)(false);
9122
10117
  const [containerWidth, containerHeight] = (0, $56e1e7a85d8bf4bb$export$2b86bedf890eab8)(streamUIContainerRef.current);
9123
10118
  const [isBlockedDevicesPopupOpen, setBlockedDevicesPopupOpen] = (0, $jQDcL$react.useState)(false);
9124
- const orientation = containerWidth > containerHeight ? "landscape" : "portrait";
10119
+ const orientation = (containerWidth || window.screen.width) > (containerHeight || window.screen.height) ? "landscape" : "portrait";
9125
10120
  const styledTheme = theme === "dark" ? (0, $9295e87e6b93e693$export$3e936a8db52a10a0) : (0, $9295e87e6b93e693$export$f30cb9bc4f736419);
9126
10121
  const onEnterRoom = async (event)=>{
9127
10122
  const peerId = event.detail.peerId;
@@ -9176,15 +10171,23 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options })=>{
9176
10171
  setStreamState("expired");
9177
10172
  };
9178
10173
  const onAgentIdentity = (event)=>{
9179
- const { success: success } = event.detail;
9180
- if (success) setIsAgent(true);
9181
- else (0, ($parcel$interopDefault($jQDcL$reacthottoast)))("An error occured while trying to join the room as an agent", {
10174
+ const { success: success , email: email } = event.detail;
10175
+ if (success) {
10176
+ setIsAgent(true);
10177
+ if (email) (0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).identify(null, {
10178
+ email: email
10179
+ });
10180
+ } else (0, ($parcel$interopDefault($jQDcL$reacthottoast)))("An error occured while trying to join the room as an agent", {
9182
10181
  className: "error"
9183
10182
  });
9184
10183
  };
9185
10184
  const onCriticalError = (event)=>{
9186
10185
  const duration = 20000;
9187
10186
  const now = Date.now();
10187
+ if (event.detail.code === "USERLIMIT") {
10188
+ setStreamState("full");
10189
+ return;
10190
+ }
9188
10191
  if ($ee8cb448c2c74888$var$timestampCriticalError !== -1 && $ee8cb448c2c74888$var$timestampCriticalError + duration > now) return;
9189
10192
  $ee8cb448c2c74888$var$timestampCriticalError = now;
9190
10193
  (0, $84c6cbcbb594d072$export$3a57e165650c636f)(`A critical error has occurred (error ${event.detail.code}).`, {
@@ -9267,6 +10270,8 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options })=>{
9267
10270
  setIsYoutubePopupVisible: setIsYoutubePopupVisible,
9268
10271
  isLinksharePopupVisible: isLinksharePopupVisible,
9269
10272
  setIsLinksharePopupVisible: setIsLinksharePopupVisible,
10273
+ isVirtualBackgroundPopupVisible: isVirtualBackgroundPopupVisible,
10274
+ setIsVirtualBackgroundPopupVisible: setIsVirtualBackgroundPopupVisible,
9270
10275
  theme: theme,
9271
10276
  setTheme: setTheme,
9272
10277
  language: language,
@@ -9306,7 +10311,7 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options })=>{
9306
10311
  ]
9307
10312
  })
9308
10313
  }),
9309
- (streamState === "ended" || streamState === "terminated" || streamState === "expired") && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3d1bfd8f074b99b1$export$2e2bcd8739ae039), {})
10314
+ (streamState === "ended" || streamState === "terminated" || streamState === "full" || streamState === "expired") && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3d1bfd8f074b99b1$export$2e2bcd8739ae039), {})
9310
10315
  ]
9311
10316
  })
9312
10317
  ]
@@ -9317,6 +10322,432 @@ var $ee8cb448c2c74888$export$2e2bcd8739ae039 = $ee8cb448c2c74888$var$StreamUI;
9317
10322
 
9318
10323
 
9319
10324
 
10325
+ // https://help.hotjar.com/hc/en-us/articles/360033640653-Identify-API-Reference#01G2A279ZXW4JT60NKXKX69G49
10326
+ // prettier-ignore
10327
+ // @ts-ignore
10328
+ window.hj = window.hj || function() {
10329
+ (hj.q = hj.q || []).push(arguments);
10330
+ };
10331
+
10332
+
10333
+
10334
+
10335
+
10336
+
10337
+
10338
+
10339
+ const $d9d258dccafa26ef$var$GreetingSnapcallLogo = ()=>{
10340
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
10341
+ width: "72",
10342
+ height: "72",
10343
+ viewBox: "0 0 72 72",
10344
+ fill: "none",
10345
+ xmlns: "http://www.w3.org/2000/svg",
10346
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("g", {
10347
+ clipPath: "url(#greetingSnapcallLogo)",
10348
+ children: [
10349
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
10350
+ d: "M0 36C0 6.354 6.354 0 36 0s36 6.354 36 36-6.354 36-36 36S0 65.646 0 36Z",
10351
+ fill: "#000"
10352
+ }),
10353
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
10354
+ 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",
10355
+ fill: "#fff"
10356
+ })
10357
+ ]
10358
+ })
10359
+ });
10360
+ };
10361
+ var $d9d258dccafa26ef$export$2e2bcd8739ae039 = $d9d258dccafa26ef$var$GreetingSnapcallLogo;
10362
+
10363
+
10364
+
10365
+
10366
+ const $5fd6e456b33aeaa7$export$d653589df987fd93 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
10367
+ height: 100%;
10368
+ display: flex;
10369
+ flex-direction: column;
10370
+ align-items: center;
10371
+ color: #1d1c20;
10372
+ padding-top: 76px;
10373
+ font-family: Lato;
10374
+ box-sizing: border-box;
10375
+ `;
10376
+ const $5fd6e456b33aeaa7$export$d43ffeaaec0b2a58 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
10377
+ display: flex;
10378
+ align-items: center;
10379
+ justify-content: center;
10380
+ width: 72px;
10381
+ height: 72px;
10382
+ svg {
10383
+ width: 50px;
10384
+ height: 50px;
10385
+ }
10386
+ background-color: black;
10387
+ border-radius: 25px;
10388
+ box-sizing: border-box;
10389
+ `;
10390
+ const $5fd6e456b33aeaa7$export$873b7756313e36bb = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).h1`
10391
+ font-size: 32px;
10392
+ line-height: 39px;
10393
+ font-weight: 700;
10394
+ font-family: Gazpacho;
10395
+ text-align: center;
10396
+ `;
10397
+ const $5fd6e456b33aeaa7$export$b7a7fefc0b349825 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
10398
+ display: flex;
10399
+ align-items: center;
10400
+ gap: 10px;
10401
+ `;
10402
+ const $5fd6e456b33aeaa7$export$b302ef9d8310f71 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
10403
+ position: relative;
10404
+ width: 350px;
10405
+ height: 350px;
10406
+ display: flex;
10407
+ align-items: center;
10408
+ justify-content: center;
10409
+ `;
10410
+ const $5fd6e456b33aeaa7$export$ae01dedf5c052bb = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).video`
10411
+ width: 300px;
10412
+ height: 300px;
10413
+ background-color: black;
10414
+ border-radius: 15px;
10415
+ object-fit: cover;
10416
+ `;
10417
+ const $5fd6e456b33aeaa7$export$778ed67917f5eacf = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
10418
+ display: flex;
10419
+ position: absolute;
10420
+ top: 8px;
10421
+ left: 8px;
10422
+ gap: 8px;
10423
+ z-index: 15;
10424
+ `;
10425
+ const $5fd6e456b33aeaa7$export$92fe811838849d7d = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
10426
+ display: flex;
10427
+ justify-content: center;
10428
+ align-items: center;
10429
+ width: 26px;
10430
+ height: 26px;
10431
+ border-radius: 50%;
10432
+ background-color: rgba(28, 32, 36, 0.25);
10433
+ z-index: 2;
10434
+ `;
10435
+ const $5fd6e456b33aeaa7$export$65550b47dde6d016 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
10436
+ position: absolute;
10437
+ width: 300px;
10438
+ height: 300px;
10439
+ background-color: black;
10440
+ border-radius: 15px;
10441
+ z-index: 1;
10442
+ display: ${({ webcamEnabled: webcamEnabled })=>webcamEnabled ? "none" : "flex"};
10443
+ align-items: center;
10444
+ justify-content: center;
10445
+ `;
10446
+ const $5fd6e456b33aeaa7$export$48377ae1c677702b = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
10447
+ position: absolute;
10448
+ bottom: 45px;
10449
+ display: flex;
10450
+ width: 100%;
10451
+ justify-content: center;
10452
+ gap: 13px;
10453
+ z-index: 2;
10454
+ `;
10455
+ const $5fd6e456b33aeaa7$export$6e8af0bd0a2aaa77 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
10456
+ display: flex;
10457
+ align-items: center;
10458
+ justify-content: center;
10459
+ min-width: 48px;
10460
+ min-height: 48px;
10461
+ background-color: ${({ danger: danger })=>danger ? "#d84949" : "#2d2d2d"};
10462
+ border: none;
10463
+ border-radius: 15px;
10464
+ padding: 0 8px;
10465
+ gap: 8px;
10466
+ cursor: pointer;
10467
+
10468
+ p {
10469
+ color: white;
10470
+ font-size: 14px;
10471
+ font-weight: 600;
10472
+ margin: 0;
10473
+ }
10474
+
10475
+ &:hover {
10476
+ border: 2px solid ${({ danger: danger })=>danger ? "#fc7d7d" : "#8d8d8d"};
10477
+ }
10478
+
10479
+ svg {
10480
+ width: 24px;
10481
+ height: 24px;
10482
+ }
10483
+ `;
10484
+ const $5fd6e456b33aeaa7$export$c7a6f02121c3b3b5 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
10485
+ display: flex;
10486
+ flex-direction: column;
10487
+ align-items: flex-start;
10488
+ width: 350px;
10489
+
10490
+ h3 {
10491
+ margin: 0;
10492
+ }
10493
+ `;
10494
+ const $5fd6e456b33aeaa7$export$916d4667067f956a = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).h3`
10495
+ font-size: 20px;
10496
+ line-height: 24px;
10497
+ font-weight: 700;
10498
+ margin: 0;
10499
+ font-family: Gazpacho;
10500
+ `;
10501
+ const $5fd6e456b33aeaa7$export$190947c3048e2d5d = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).p`
10502
+ font-size: 16px;
10503
+ line-height: 22px;
10504
+ font-weight: 400;
10505
+ `;
10506
+ const $5fd6e456b33aeaa7$export$f5b8910cec6cf069 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).input`
10507
+ width: 100%;
10508
+ border: 1px solid #c9c9ca;
10509
+ border-radius: 8px;
10510
+ height: 50px;
10511
+ padding: 14px 12px;
10512
+ box-sizing: border-box;
10513
+ margin-top: 40px;
10514
+ font-size: 16px;
10515
+ `;
10516
+ const $5fd6e456b33aeaa7$export$353f5b6fc5456de1 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
10517
+ width: 100%;
10518
+ background-color: #1d1c20;
10519
+ color: white;
10520
+ padding: 0;
10521
+ outline: inherit;
10522
+ height: 50px;
10523
+ border: 0;
10524
+ border-radius: 8px;
10525
+ margin-top: 15px;
10526
+ font-size: 16px;
10527
+ line-height: 19px;
10528
+ font-weight: 500;
10529
+ cursor: pointer;
10530
+ `;
10531
+ const $5fd6e456b33aeaa7$export$a06f1c675e846f6f = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).footer`
10532
+ display: flex;
10533
+ flex: 1;
10534
+ justify-content: flex-end;
10535
+ flex-direction: column;
10536
+ margin-bottom: 30px;
10537
+ align-items: center;
10538
+ text-align: center;
10539
+ width: 300px;
10540
+ `;
10541
+ const $5fd6e456b33aeaa7$export$53e4a0ea45e729a2 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).h5`
10542
+ font-weight: 700;
10543
+ font-size: 16px;
10544
+ line-height: 19px;
10545
+ margin: 0;
10546
+ font-family: Gazpacho;
10547
+ `;
10548
+ const $5fd6e456b33aeaa7$export$eb20cbaff2d739a5 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).p`
10549
+ font-weight: 400;
10550
+ font-size: 12px;
10551
+ line-height: 14px;
10552
+ color: black;
10553
+ margin-bottom: 0;
10554
+ margin-top: 10px;
10555
+ `;
10556
+ const $5fd6e456b33aeaa7$export$d4a1a815e49dfefd = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
10557
+ display: flex;
10558
+ flex-direction: column;
10559
+ align-items: center;
10560
+ justify-content: center;
10561
+ background-color: #fff;
10562
+ color: #1d1c20;
10563
+ height: 100%;
10564
+ `;
10565
+
10566
+
10567
+
10568
+
10569
+
10570
+ const $3305ca02e86dabd1$var$getUserMedia = async (device)=>{
10571
+ try {
10572
+ const stream = navigator.mediaDevices.getUserMedia({
10573
+ video: device === "webcam",
10574
+ audio: device === "microphone"
10575
+ });
10576
+ return stream;
10577
+ } catch (err) {
10578
+ console.error("Get User Media Failed: ", err);
10579
+ return null;
10580
+ }
10581
+ };
10582
+ let $3305ca02e86dabd1$var$videoTrack;
10583
+ const $3305ca02e86dabd1$var$GreetingView = ({ onGreetingDone: onGreetingDone })=>{
10584
+ const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
10585
+ const mainContainerRef = (0, $jQDcL$react.useRef)(null);
10586
+ const videoRef = (0, $jQDcL$react.useRef)(null);
10587
+ const inputRef = (0, $jQDcL$react.useRef)(null);
10588
+ const stream = (0, $jQDcL$react.useMemo)(()=>new MediaStream(), []);
10589
+ const [webcamEnabled, setWebcamEnabled] = (0, $jQDcL$react.useState)(false);
10590
+ const [micEnabled, setMicEnabled] = (0, $jQDcL$react.useState)(false);
10591
+ const [joining, setJoining] = (0, $jQDcL$react.useState)(false);
10592
+ const [firstRender, setFirstRender] = (0, $jQDcL$react.useState)(true);
10593
+ const [width, height] = (0, $56e1e7a85d8bf4bb$export$2b86bedf890eab8)(mainContainerRef.current);
10594
+ const desktop = width >= height;
10595
+ const onSubmit = ()=>{
10596
+ const displayName = inputRef.current?.value;
10597
+ setJoining(true);
10598
+ setTimeout(()=>{
10599
+ onGreetingDone({
10600
+ cameraEnabled: webcamEnabled,
10601
+ micEnabled: micEnabled,
10602
+ displayName: displayName
10603
+ });
10604
+ }, 4000);
10605
+ };
10606
+ const onCameraClick = (0, $jQDcL$react.useCallback)(()=>{
10607
+ if (!webcamEnabled) $3305ca02e86dabd1$var$getUserMedia("webcam").then((videoStream)=>{
10608
+ if (!videoStream || !videoRef.current) return;
10609
+ $3305ca02e86dabd1$var$videoTrack = videoStream.getVideoTracks()[0];
10610
+ stream.addTrack($3305ca02e86dabd1$var$videoTrack);
10611
+ setWebcamEnabled(true);
10612
+ if (!videoRef.current.srcObject) videoRef.current.srcObject = stream;
10613
+ });
10614
+ else {
10615
+ if ($3305ca02e86dabd1$var$videoTrack) stream.removeTrack($3305ca02e86dabd1$var$videoTrack);
10616
+ $3305ca02e86dabd1$var$videoTrack = undefined;
10617
+ setWebcamEnabled(false);
10618
+ }
10619
+ }, [
10620
+ webcamEnabled,
10621
+ stream
10622
+ ]);
10623
+ const onMicrophoneClick = (0, $jQDcL$react.useCallback)(async ()=>{
10624
+ if (!micEnabled) $3305ca02e86dabd1$var$getUserMedia("microphone").then(()=>{
10625
+ if (!videoRef.current) return;
10626
+ setMicEnabled(true);
10627
+ });
10628
+ else setMicEnabled(false);
10629
+ }, [
10630
+ micEnabled
10631
+ ]);
10632
+ (0, $jQDcL$react.useEffect)(()=>{
10633
+ if (!firstRender) return;
10634
+ try {
10635
+ onCameraClick();
10636
+ onMicrophoneClick();
10637
+ } catch (err) {
10638
+ console.error("Error: ", err);
10639
+ } finally{
10640
+ setFirstRender(false);
10641
+ }
10642
+ }, [
10643
+ firstRender,
10644
+ onCameraClick,
10645
+ onMicrophoneClick
10646
+ ]);
10647
+ if (joining === true) return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$d4a1a815e49dfefd), {
10648
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("img", {
10649
+ src: `${"https://stream-assets.snapcall.io/v1.7.0"}/animations/snapcall-logo-animation.gif`,
10650
+ alt: "Snapcall logo animation",
10651
+ height: 40
10652
+ })
10653
+ });
10654
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5fd6e456b33aeaa7$export$d653589df987fd93), {
10655
+ ref: mainContainerRef,
10656
+ children: [
10657
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $e3bb2c5d0e5b45b5$export$20f257fc407da7a3), {}),
10658
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $d9d258dccafa26ef$export$2e2bcd8739ae039), {}),
10659
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$873b7756313e36bb), {
10660
+ children: t("greeting.mainTitle")
10661
+ }),
10662
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5fd6e456b33aeaa7$export$b7a7fefc0b349825), {
10663
+ children: [
10664
+ desktop && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5fd6e456b33aeaa7$export$b302ef9d8310f71), {
10665
+ children: [
10666
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$ae01dedf5c052bb), {
10667
+ webcamEnabled: webcamEnabled,
10668
+ ref: videoRef,
10669
+ autoPlay: true
10670
+ }),
10671
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5fd6e456b33aeaa7$export$65550b47dde6d016), {
10672
+ webcamEnabled: webcamEnabled,
10673
+ children: [
10674
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5fd6e456b33aeaa7$export$778ed67917f5eacf), {
10675
+ children: [
10676
+ !micEnabled && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$92fe811838849d7d), {
10677
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $0ac48791ff0bcc8e$export$2e2bcd8739ae039), {
10678
+ status: !micEnabled
10679
+ })
10680
+ }),
10681
+ !webcamEnabled && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$92fe811838849d7d), {
10682
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $ab00aedf8a706bfe$export$2e2bcd8739ae039), {
10683
+ status: !webcamEnabled
10684
+ })
10685
+ })
10686
+ ]
10687
+ }),
10688
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$6e8af0bd0a2aaa77), {
10689
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $0319693440f03062$export$2e2bcd8739ae039), {})
10690
+ })
10691
+ ]
10692
+ }),
10693
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5fd6e456b33aeaa7$export$48377ae1c677702b), {
10694
+ children: [
10695
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$6e8af0bd0a2aaa77), {
10696
+ onClick: onMicrophoneClick,
10697
+ danger: !micEnabled,
10698
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $0ac48791ff0bcc8e$export$2e2bcd8739ae039), {
10699
+ status: !micEnabled
10700
+ })
10701
+ }),
10702
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$6e8af0bd0a2aaa77), {
10703
+ onClick: onCameraClick,
10704
+ danger: !webcamEnabled,
10705
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $ab00aedf8a706bfe$export$2e2bcd8739ae039), {
10706
+ status: !webcamEnabled
10707
+ })
10708
+ })
10709
+ ]
10710
+ })
10711
+ ]
10712
+ }),
10713
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5fd6e456b33aeaa7$export$c7a6f02121c3b3b5), {
10714
+ children: [
10715
+ desktop && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$916d4667067f956a), {
10716
+ children: t("greeting.sideTitle")
10717
+ }),
10718
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$190947c3048e2d5d), {
10719
+ children: t("greeting.sideDescription")
10720
+ }),
10721
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$f5b8910cec6cf069), {
10722
+ ref: inputRef,
10723
+ name: "displayName",
10724
+ type: "text",
10725
+ placeholder: t("greeting.namePlaceholder"),
10726
+ autoFocus: true
10727
+ }),
10728
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$353f5b6fc5456de1), {
10729
+ onClick: onSubmit,
10730
+ children: t("greeting.nameSubmit")
10731
+ })
10732
+ ]
10733
+ })
10734
+ ]
10735
+ }),
10736
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5fd6e456b33aeaa7$export$a06f1c675e846f6f), {
10737
+ children: [
10738
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$53e4a0ea45e729a2), {
10739
+ children: t("greeting.footerTitle")
10740
+ }),
10741
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5fd6e456b33aeaa7$export$eb20cbaff2d739a5), {
10742
+ children: t("greeting.footerDescription")
10743
+ })
10744
+ ]
10745
+ })
10746
+ ]
10747
+ });
10748
+ };
10749
+ var $3305ca02e86dabd1$export$2e2bcd8739ae039 = $3305ca02e86dabd1$var$GreetingView;
10750
+
9320
10751
 
9321
10752
  const $e68207026aca356b$var$currentURL = new URL(window.location.href);
9322
10753
  const $e68207026aca356b$var$microphoneEnabled = $e68207026aca356b$var$currentURL.searchParams.get("microphone-enabled") !== "0";
@@ -9324,6 +10755,12 @@ const $e68207026aca356b$var$cameraEnabled = $e68207026aca356b$var$currentURL.sea
9324
10755
  const $e68207026aca356b$var$defaultOptions = {
9325
10756
  sharedURL: window.location.href,
9326
10757
  showMenuButton: true,
10758
+ settingsShortcuts: [
10759
+ {
10760
+ id: "pip",
10761
+ displayType: "icon"
10762
+ }
10763
+ ],
9327
10764
  controls: {
9328
10765
  microphone: {
9329
10766
  available: true,
@@ -9337,7 +10774,8 @@ const $e68207026aca356b$var$defaultOptions = {
9337
10774
  available: true
9338
10775
  }
9339
10776
  },
9340
- streamApiURL: String("https://apistream.snapcall.io")
10777
+ streamApiURL: String("https://apistream.snapcall.io"),
10778
+ tracking: false
9341
10779
  };
9342
10780
  const $e68207026aca356b$export$3f94917203ab7078 = {
9343
10781
  init: ({ element: element , ...options })=>{
@@ -9346,6 +10784,12 @@ const $e68207026aca356b$export$3f94917203ab7078 = {
9346
10784
  (0, $jQDcL$reactdom.render)(/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $ee8cb448c2c74888$export$2e2bcd8739ae039), {
9347
10785
  options: mergedOptions
9348
10786
  }), element);
10787
+ if (mergedOptions.tracking) (0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).init(3111933, 6);
10788
+ },
10789
+ initGreeting: (element, onGreetingDone)=>{
10790
+ (0, $jQDcL$reactdom.render)(/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3305ca02e86dabd1$export$2e2bcd8739ae039), {
10791
+ onGreetingDone: onGreetingDone
10792
+ }), element);
9349
10793
  },
9350
10794
  setExtraSettingsOptions: (extraOptions)=>{
9351
10795
  const event = new CustomEvent("streamUISetExtraSettingsOptions", {