@snapcall/stream-ui 1.12.0 → 1.13.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
@@ -5,6 +5,7 @@ var $jQDcL$reacthottoast = require("react-hot-toast");
5
5
  var $jQDcL$styledcomponents = require("styled-components");
6
6
  var $jQDcL$react = require("react");
7
7
  require("inobounce");
8
+ var $jQDcL$reactquery = require("react-query");
8
9
  var $jQDcL$i18next = require("i18next");
9
10
  var $jQDcL$reacti18next = require("react-i18next");
10
11
  var $jQDcL$bowser = require("bowser");
@@ -19,9 +20,9 @@ var $jQDcL$qrcode = require("qrcode");
19
20
  var $jQDcL$reactstately = require("react-stately");
20
21
  var $jQDcL$classnames = require("classnames");
21
22
  var $jQDcL$reactaria = require("react-aria");
23
+ var $jQDcL$reactariainteractions = require("@react-aria/interactions");
22
24
  var $jQDcL$reactariautils = require("@react-aria/utils");
23
25
  var $jQDcL$reacttransitiongroup = require("react-transition-group");
24
- var $jQDcL$reactariainteractions = require("@react-aria/interactions");
25
26
  var $jQDcL$reactariaoverlays = require("@react-aria/overlays");
26
27
  var $jQDcL$reactcontentloader = require("react-content-loader");
27
28
 
@@ -320,6 +321,24 @@ const $84c6cbcbb594d072$export$3a57e165650c636f = (message, options = {})=>{
320
321
  };
321
322
 
322
323
 
324
+ const $57b7750d9786bf6f$export$1cbfb36c1655a9a = (root, element)=>{
325
+ const mutationObserver = new MutationObserver((mutationRecords)=>{
326
+ mutationRecords.forEach((record)=>{
327
+ record.removedNodes.forEach((node)=>{
328
+ if (node.contains(element)) {
329
+ root.unmount();
330
+ mutationObserver.disconnect();
331
+ }
332
+ });
333
+ });
334
+ });
335
+ mutationObserver.observe(document.documentElement, {
336
+ childList: true,
337
+ subtree: true
338
+ });
339
+ };
340
+
341
+
323
342
 
324
343
 
325
344
 
@@ -496,44 +515,47 @@ const $91fcbf58e59aae79$export$84584c2a98eb6753 = {
496
515
  footerDescription: "Meet SnapCall, the easiest way to add real-time video to platform, product or service."
497
516
  },
498
517
  recorder: {
518
+ limit: "Video recording limited to 5 min.",
499
519
  submissionTitle: "Thank you for your submission!",
500
- submissionDescription: "Your photo/video has been successfully sent. We will review it and get back to you soon.",
501
- confirmRemovalTitle: "Confirm removal",
502
- confirmRemovalDescription: "Are you sure you want to remove this photo/video? This action cannot be undone.",
503
- elementBeingProcessed: "Please wait a moment while your {{ type }} is being processed...",
504
- waitVideo: "It may take up to 15 seconds for a video to be ready.",
505
- elementCaptureSuccess: "{{ type }} successfully captured",
506
- takeNewElement: "Take new {{ type }}",
520
+ submissionDescription: "Your photo/video has been successfully submitted. We will review it and get back to you shortly.",
521
+ confirmRemovalTitle: "Confirm deletion",
522
+ confirmRemovalDescription: "Are you sure you want to delete this photo/video? This action cannot be undone.",
523
+ elementBeingProcessed: "Please wait while your {{ type }} is being processed...",
524
+ waitVideo: "A video may take up to 15 seconds to be ready.",
525
+ elementCaptureSuccess: "{{ type }} captured successfully",
526
+ takeNewElement: "Capture a new {{ type }}",
507
527
  sendElement: "Send {{ type }}",
508
528
  sendElements: "Send {{ count }} elements",
509
529
  allowAccess: "Allow access",
510
530
  okay: "Okay",
511
- allowCamMicAccess: "Allow access to cam/mic",
531
+ allowCamMicAccess: "Allow access to camera and microphone",
512
532
  allowScreenShareAccess: "Allow access to screen sharing",
513
533
  permissionDeniedTitle: "Something went wrong!",
514
- permissionDeniedDescription: "Without camera and microphone access, you can't take photos or videos to share with the support team. Please grant access in your browser settings.",
515
- photoInstructionsTitle: "Ready to take a shot?",
534
+ permissionDeniedDescription: "Without access to the camera and microphone, you won't be able to capture photos or videos to share with the support team. Please grant access in your browser settings.",
535
+ photoInstructionsTitle: "Ready to snap a photo?",
516
536
  videoInstructionsTitle: "Ready to record a video?",
517
- screenShareInstructionsTitle: "Ready to capture your screen?",
537
+ screenShareInstructionsTitle: "Ready to share your screen?",
518
538
  instructions: {
519
- allowAccessOnPrompt: "When prompted, <1>allow access</1> to camera and microphone.",
520
- tapPhotoButton: "Tap the <1 /><2> Camera button</2> to take a photo.",
521
- multiplePhotos: "Don't hesitate to take multiple photos for more detail.",
522
- reviewAndSendPhotos: "You can review your photo and then <1>send it when you're done.</1>",
523
- tapVideoButton: "Tap the <1 /><2> Record button</2> to start a recording.",
524
- videoSpeech: "You can <1>speak during</1> the recording for added detail.",
525
- tapStopVideoButton: "When you're finished, tap the <1 /><2> Stop button</2>.",
526
- reviewAndSendVideos: "You can review your video and then <1>send it when you're done</2>.",
527
- tapScreenShareButton: "Tap on <1> Record my screen</1> to start a recording.",
528
- tapStopScreenShareButton: "When you're finished, tap on <1>Stop recording</1>.",
529
- reviewAnsSendScreenShare: "You can review your video and then <1>send it when you're done</1>."
539
+ allowAccessOnPrompt: "When prompted, <1>allow access</1> to the camera and microphone.",
540
+ tapPhotoButton: "Tap the <1 /><2>Camera button</2> to take a photo.",
541
+ multiplePhotos: "Feel free to take multiple photos for more details.",
542
+ reviewAndSendPhotos: "Review your photo and <1>send it when you're satisfied.</1>",
543
+ reviewAndSendScreenShare: "Review your video and <1>send it when you're satisfied.</1>",
544
+ tapVideoButton: "Tap the <1 /><2>Record button</2> to start recording.",
545
+ videoSpeech: "You can <1>talk during</1> the recording to provide additional information.",
546
+ tapStopVideoButton: "When you're done, tap the <1 /><2>Stop button</2>.",
547
+ reviewAndSendVideos: "Review your video and <1>send it when you're satisfied</1>.",
548
+ tapScreenShareButton: "Tap <1>Record my screen</1> to begin recording.",
549
+ tapStopScreenShareButton: "When you're done, tap <1>Stop recording</1>.",
550
+ screenShareInstruction: "Select the screen or window you wish to record."
530
551
  },
531
- switchToMobileTitle: "Switch to your mobile",
532
- switchToMobileDescription: "Enjoy an even more convenient experience by using your phone to take photos and record videos.",
533
- useDesktopVersion: "Use desktop version",
552
+ switchToMobileTitle: "Switch to your mobile device",
553
+ switchToMobileDescription: "Experience greater convenience by using your phone to take photos and record videos.",
554
+ useDesktopVersion: "Use the desktop version",
534
555
  scanQRCode: "Scan this QR code with a compatible device.",
535
556
  startScreenShareButton: "Record my screen",
536
- stopScreenShareButton: "Stop recording"
557
+ stopScreenShareButton: "Stop recording",
558
+ screenTitle: "Ready to capture your screen?"
537
559
  }
538
560
  }
539
561
  };
@@ -695,44 +717,47 @@ const $e52ca91c2b296e41$export$acb2a88f7d552ebf = {
695
717
  footerDescription: "D\xe9couvrez SnapCall, ajoutez de la vid\xe9o en temps r\xe9el \xe0 n'importe quelle plateforme, produit ou service."
696
718
  },
697
719
  recorder: {
698
- submissionTitle: "Merci pour votre soumission!",
720
+ limit: "Enregistrement vid\xe9o limit\xe9 \xe0 5 min.",
721
+ submissionTitle: "Merci pour votre soumission !",
699
722
  submissionDescription: "Votre photo/vid\xe9o a \xe9t\xe9 envoy\xe9e avec succ\xe8s. Nous l'examinerons et reviendrons vers vous bient\xf4t.",
700
723
  confirmRemovalTitle: "Confirmer la suppression",
701
- confirmRemovalDescription: "Voulez-vous vraiment supprimer cette photo/vid\xe9o? Cette action ne peut pas \xeatre annul\xe9e.",
724
+ confirmRemovalDescription: "Voulez-vous vraiment supprimer cette photo/vid\xe9o ? Cette action ne peut pas \xeatre annul\xe9e.",
702
725
  elementBeingProcessed: "Veuillez patienter un moment pendant que votre {{ type }} est en cours de traitement...",
703
726
  waitVideo: "Cela peut prendre jusqu'\xe0 15 secondes pour qu'une vid\xe9o soit pr\xeate.",
704
- elementCaptureSuccess: "{{ type }} captur\xe9e avec succ\xe8s",
727
+ elementCaptureSuccess: "{{ type }} captur\xe9(e) avec succ\xe8s",
705
728
  takeNewElement: "Prendre une nouvelle {{ type }}",
706
- sendElement: "Envoyer une {{ type }}",
729
+ sendElement: "Envoyer la {{ type }}",
707
730
  sendElements: "Envoyer {{ count }} \xe9l\xe9ments",
708
- allowAccess: "Permettre l'acc\xe8s",
731
+ allowAccess: "Autoriser l'acc\xe8s",
709
732
  okay: "D'accord",
710
- allowCamMicAccess: "Autoriser l'acc\xe8s \xe0 la cam\xe9ra/au micro",
733
+ allowCamMicAccess: "Autoriser l'acc\xe8s \xe0 la cam\xe9ra et au micro",
711
734
  allowScreenShareAccess: "Autoriser l'acc\xe8s au partage d'\xe9cran",
712
- permissionDeniedTitle: "Quelque chose s'est mal pass\xe9!",
735
+ permissionDeniedTitle: "Quelque chose s'est mal pass\xe9 !",
713
736
  permissionDeniedDescription: "Sans acc\xe8s \xe0 la cam\xe9ra et au microphone, vous ne pouvez pas prendre de photos ou de vid\xe9os \xe0 partager avec l'\xe9quipe d'assistance. Veuillez accorder l'acc\xe8s dans les param\xe8tres de votre navigateur.",
714
- photoInstructionsTitle: "Pr\xeat \xe0 prendre une photo?",
715
- videoInstructionsTitle: "Pr\xeat \xe0 enregistrer une vid\xe9o?",
716
- screenShareInstructionsTitle: "Pr\xeat \xe0 capturer votre \xe9cran?",
737
+ photoInstructionsTitle: "Pr\xeat(e) \xe0 prendre une photo ?",
738
+ videoInstructionsTitle: "Pr\xeat(e) \xe0 enregistrer une vid\xe9o ?",
739
+ screenShareInstructionsTitle: "Pr\xeat(e) \xe0 partager votre \xe9cran ?",
717
740
  instructions: {
718
- allowAccessOnPrompt: "Lorsque vous y \xeates invit\xe9, <1>autorisez l'acc\xe8s</1> \xe0 la cam\xe9ra et au microphone.",
741
+ allowAccessOnPrompt: "Lorsque vous y \xeates invit\xe9(e), <1>autorisez l'acc\xe8s</1> \xe0 la cam\xe9ra et au microphone.",
719
742
  tapPhotoButton: "Appuyez sur le <1 /><2>bouton Appareil photo</2> pour prendre une photo.",
720
743
  multiplePhotos: "N'h\xe9sitez pas \xe0 prendre plusieurs photos pour plus de d\xe9tails.",
721
744
  reviewAndSendPhotos: "Vous pouvez revoir votre photo, puis <1>l'envoyer lorsque vous avez termin\xe9.</1>",
722
745
  tapVideoButton: "Appuyez sur le <1 /><2>bouton d'enregistrement</2> pour d\xe9marrer un enregistrement.",
723
- videoSpeech: "Vous pouvez <1>parler pendant</1> l'enregistrement pour plus de d\xe9tails.",
746
+ videoSpeech: "Vous pouvez <1>parler pendant</1> l'enregistrement pour ajouter des d\xe9tails.",
724
747
  tapStopVideoButton: "Lorsque vous avez termin\xe9, appuyez sur le <1 /><2>bouton Arr\xeater</2>.",
725
748
  reviewAndSendVideos: "Vous pouvez revoir votre vid\xe9o, puis <1>l'envoyer lorsque vous avez termin\xe9</2>.",
726
- tapScreenShareButton: "Appuyez sur <1>Enregistrer mon \xe9cran</1> pour d\xe9marrer un enregistrement.",
727
- tapStopScreenShareButton: "Lorsque vous avez termin\xe9, appuyez sur <1>Arr\xeater l'enregistrement</1>.",
728
- reviewAnsSendScreenShare: "Vous pouvez revoir votre vid\xe9o, puis <1>l'envoyer lorsque vous avez termin\xe9</1>."
749
+ tapScreenShareButton: "Appuyez sur <1>Enregistrer \xe9cran</1> pour d\xe9marrer un enregistrement.",
750
+ tapStopScreenShareButton: "Lorsque vous avez termin\xe9, appuyez sur <1>Stop enregistrement</1>.",
751
+ reviewAndSendScreenShare: "Vous pouvez revoir votre vid\xe9o, puis <1>l'envoyer lorsque vous avez termin\xe9.</1>",
752
+ screenShareInstruction: "S\xe9lectionnez l'\xe9cran ou la fen\xeatre que vous souhaitez enregistrer."
729
753
  },
730
- switchToMobileTitle: "Basculez vers votre mobile",
754
+ switchToMobileTitle: "Passez sur votre mobile",
731
755
  switchToMobileDescription: "Profitez d'une exp\xe9rience encore plus pratique en utilisant votre t\xe9l\xe9phone pour prendre des photos et enregistrer des vid\xe9os.",
732
- useDesktopVersion: "Utiliser la version de bureau",
756
+ useDesktopVersion: "Continuer",
733
757
  scanQRCode: "Scannez ce code QR avec un appareil compatible.",
734
- startScreenShareButton: "Enregistrer mon \xe9cran",
735
- stopScreenShareButton: "Arr\xeater d'enregistrer"
758
+ startScreenShareButton: "Enregistrer \xe9cran",
759
+ stopScreenShareButton: "Stop enregistrement",
760
+ screenTitle: "Pr\xeat \xe0 capturer votre \xe9cran ?"
736
761
  }
737
762
  }
738
763
  };
@@ -898,44 +923,47 @@ const $e0ae3d23c2381da3$export$3486a10f30cf1ee4 = {
898
923
  footerDescription: "Incontrare SnapCall, il modo pi\xf9 semplice per aggiungere video in tempo reale a piattaforma, prodotto o servizio."
899
924
  },
900
925
  recorder: {
901
- submissionTitle: "Grazie per la vostra presentazione!",
902
- submissionDescription: "La tua foto/video \xe8 stato inviato con successo. Lo esamineremo e ti ricontatteremo presto.",
903
- confirmRemovalTitle: "Conferma la rimozione",
926
+ limit: "Registrazione video limitata a 5 min.",
927
+ submissionTitle: "Grazie per il tuo invio!",
928
+ submissionDescription: "La tua foto/video \xe8 stata inviata con successo. La esamineremo e ti risponderemo al pi\xf9 presto.",
929
+ confirmRemovalTitle: "Conferma rimozione",
904
930
  confirmRemovalDescription: "Sei sicuro di voler rimuovere questa foto/video? Questa azione non pu\xf2 essere annullata.",
905
- elementBeingProcessed: "Attendi un momento mentre la tua {{ type }} \xe8 in fase di elaborazione...",
906
- waitVideo: "Potrebbero essere necessari fino a 15 secondi prima che un video sia pronto.",
931
+ elementBeingProcessed: "Attendi un momento mentre il tuo {{ type }} viene elaborato...",
932
+ waitVideo: "Potrebbero essere necessari fino a 15 secondi affinch\xe9 un video sia pronto.",
907
933
  elementCaptureSuccess: "{{ type }} catturato con successo",
908
- takeNewElement: "Scatta una nuova {{ type }}",
909
- sendElement: "Invia una {{ type }}",
934
+ takeNewElement: "Cattura un nuovo {{ type }}",
935
+ sendElement: "Invia {{ type }}",
910
936
  sendElements: "Invia {{ count }} elementi",
911
- allowAccess: "Consentire l'accesso",
912
- okay: "Va bene",
913
- allowCamMicAccess: "Consenti l'accesso a cam/microfono",
914
- allowScreenShareAccess: "Consenti l'accesso alla condivisione dello schermo",
937
+ allowAccess: "Consenti accesso",
938
+ okay: "Okay",
939
+ allowCamMicAccess: "Consenti accesso a fotocamera e microfono",
940
+ allowScreenShareAccess: "Consenti accesso alla condivisione dello schermo",
915
941
  permissionDeniedTitle: "Qualcosa \xe8 andato storto!",
916
- permissionDeniedDescription: "Senza l'accesso alla fotocamera e al microfono, non puoi scattare foto o registrare video da condividere con il team di supporto. Concedi l'accesso nelle impostazioni del tuo browser.",
917
- photoInstructionsTitle: "Pronto a fare un tentativo?",
942
+ permissionDeniedDescription: "Senza l'accesso alla fotocamera e al microfono, non \xe8 possibile scattare foto o registrare video da condividere con il team di supporto. Si prega di concedere l'accesso nelle impostazioni del browser.",
943
+ photoInstructionsTitle: "Pronto a scattare una foto?",
918
944
  videoInstructionsTitle: "Pronto a registrare un video?",
919
- screenShareInstructionsTitle: "Pronto a catturare il tuo schermo?",
945
+ screenShareInstructionsTitle: "Pronto a condividere il tuo schermo?",
920
946
  instructions: {
921
- allowAccessOnPrompt: "Quando richiesto, <1>consenti l'accesso</1> alla videocamera e al microfono.",
922
- tapPhotoButton: "Tocca il <1 /><2> pulsante Fotocamera</2> per scattare una foto.",
923
- multiplePhotos: "Non esitate a scattare pi\xf9 foto per maggiori dettagli.",
947
+ allowAccessOnPrompt: "Quando richiesto, <1>consenti l'accesso</1> a fotocamera e microfono.",
948
+ tapPhotoButton: "Tocca il pulsante <1 /><2>Fotocamera</2> per scattare una foto.",
949
+ multiplePhotos: "Non esitare a scattare pi\xf9 foto per maggiori dettagli.",
924
950
  reviewAndSendPhotos: "Puoi rivedere la tua foto e poi <1>inviarla quando hai finito.</1>",
925
- tapVideoButton: "Tocca il <1 /><2> pulsante Registra</2> per avviare una registrazione.",
926
- videoSpeech: "Puoi <1>parlare durante</1> la registrazione per ulteriori dettagli.",
927
- tapStopVideoButton: "Al termine, tocca il <1 /><2> pulsante Interrompi</2>.",
928
- reviewAndSendVideos: "Puoi rivedere il tuo video e poi <1>inviarlo quando hai finito</2>.",
929
- tapScreenShareButton: "Tocca <1> Registra il mio schermo</1> per avviare una registrazione.",
930
- tapStopScreenShareButton: "Al termine, tocca <1>Interrompi registrazione</1>.",
931
- reviewAnsSendScreenShare: "Puoi rivedere il tuo video e poi <1>inviarlo quando hai finito</1>."
951
+ tapVideoButton: "Tocca il pulsante <1 /><2>Registra</2> per avviare una registrazione.",
952
+ videoSpeech: "Puoi <1>parlare durante</1> la registrazione per aggiungere dettagli.",
953
+ tapStopVideoButton: "Quando hai finito, tocca il pulsante <1 /><2>Ferma</2>.",
954
+ reviewAndSendVideos: "Puoi rivedere il tuo video e poi <1>inviarlo quando hai finito</1>.",
955
+ tapScreenShareButton: "Tocca <1>Registra il mio schermo</1> per avviare una registrazione.",
956
+ tapStopScreenShareButton: "Quando hai finito, tocca <1>Ferma registrazione</1>.",
957
+ reviewAndSendScreenShare: "Puoi rivedere il tuo video e poi <1>inviarlo quando hai finito.</1>",
958
+ screenShareInstruction: "Seleziona lo schermo o la finestra che desideri registrare."
932
959
  },
933
- switchToMobileTitle: "Passa al tuo cellulare",
934
- switchToMobileDescription: "Goditi un'esperienza ancora pi\xf9 comoda utilizzando il telefono per scattare foto e registrare video.",
960
+ switchToMobileTitle: "Passa al tuo dispositivo mobile",
961
+ switchToMobileDescription: "Goditi un'esperienza ancora pi\xf9 pratica utilizzando il tuo telefono per scattare foto e registrare video.",
935
962
  useDesktopVersion: "Usa la versione desktop",
936
963
  scanQRCode: "Scansiona questo codice QR con un dispositivo compatibile.",
937
964
  startScreenShareButton: "Registra il mio schermo",
938
- stopScreenShareButton: "Interrompi la registrazione"
965
+ stopScreenShareButton: "Ferma registrazione",
966
+ screenTitle: "Pronto a catturare il tuo schermo?"
939
967
  }
940
968
  }
941
969
  };
@@ -1224,6 +1252,11 @@ const $3575c8a563f2a1da$var$addVideoPlayerWatermarkedCanvas = (canvas, dpr = 1)=
1224
1252
  resolve(canvas);
1225
1253
  };
1226
1254
  watermarkImage.src = blobUrl;
1255
+ if (context) {
1256
+ context.fillStyle = "#00000064";
1257
+ context.fillRect(0, 0, canvas.width, canvas.height);
1258
+ context.restore();
1259
+ }
1227
1260
  });
1228
1261
  const $3575c8a563f2a1da$export$674c90a250a8b2c5 = async (video, options = {
1229
1262
  addPlayWatermark: false
@@ -1234,15 +1267,15 @@ const $3575c8a563f2a1da$export$674c90a250a8b2c5 = async (video, options = {
1234
1267
  const sourceHeight = orientation === "landscape" ? videoHeight : videoWidth;
1235
1268
  const sourceX = orientation === "landscape" ? (videoWidth - sourceWidth) / 2 : 0;
1236
1269
  const sourceY = orientation === "portrait" ? (videoHeight - sourceHeight) / 2 : 0;
1237
- const canvas = document.createElement("canvas");
1270
+ let canvas = document.createElement("canvas");
1238
1271
  const ctx = canvas.getContext("2d");
1239
1272
  const dpr = window.devicePixelRatio || 1;
1240
1273
  canvas.width = sourceWidth * dpr;
1241
1274
  canvas.height = sourceHeight * dpr;
1242
1275
  ctx?.scale(dpr, dpr);
1243
1276
  ctx?.drawImage(video, sourceX, sourceY, sourceWidth, sourceHeight, 0, 0, canvas.width / dpr, canvas.height / dpr);
1277
+ if (options.addPlayWatermark) canvas = await $3575c8a563f2a1da$var$addVideoPlayerWatermarkedCanvas(canvas, window.devicePixelRatio);
1244
1278
  const watermarkedCanvas = await $3575c8a563f2a1da$var$getWatermarkedCanvas(canvas, window.devicePixelRatio);
1245
- if (options.addPlayWatermark) return (await $3575c8a563f2a1da$var$addVideoPlayerWatermarkedCanvas(canvas, window.devicePixelRatio)).toDataURL("image/jpeg");
1246
1279
  return watermarkedCanvas.toDataURL("image/jpeg");
1247
1280
  };
1248
1281
  const $3575c8a563f2a1da$export$4a210166cc9cb64b = async (src, options = {
@@ -1257,13 +1290,13 @@ const $3575c8a563f2a1da$export$4a210166cc9cb64b = async (src, options = {
1257
1290
  video.width = settings.width || 0;
1258
1291
  video.height = settings.height || 0;
1259
1292
  await video.play();
1260
- const canvas = document.createElement("canvas");
1293
+ let canvas = document.createElement("canvas");
1261
1294
  const ctx = canvas.getContext("2d");
1262
1295
  canvas.height = video.height;
1263
1296
  canvas.width = video.width;
1264
1297
  ctx?.drawImage(video, 0, 0);
1298
+ if (options.addPlayWatermark) canvas = await $3575c8a563f2a1da$var$addVideoPlayerWatermarkedCanvas(canvas);
1265
1299
  const watermarkedCanvas = await $3575c8a563f2a1da$var$getWatermarkedCanvas(canvas);
1266
- if (options.addPlayWatermark) return (await $3575c8a563f2a1da$var$addVideoPlayerWatermarkedCanvas(canvas)).toDataURL("image/jpeg");
1267
1300
  return watermarkedCanvas.toDataURL("image/jpeg");
1268
1301
  };
1269
1302
 
@@ -2335,6 +2368,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
2335
2368
  this.mediaPipe = undefined;
2336
2369
  }
2337
2370
  this.audioMedia?.removeAll();
2371
+ this.audioMedia = undefined;
2338
2372
  this.webcamTrack?.stop();
2339
2373
  this.webcamTrack = null;
2340
2374
  this.protooTransport.close();
@@ -2493,14 +2527,13 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
2493
2527
  optionalParam.facingMode = this.webcam.facingMode;
2494
2528
  } else {
2495
2529
  const webcams = Array.from(this.webcams.keys());
2496
- const deviceId = this.webcam?.device?.deviceId || "unknow";
2530
+ const deviceId = this.webcam?.device?.deviceId || "unknown";
2497
2531
  let newWebcamIndex = webcams.indexOf(deviceId);
2498
2532
  if (newWebcamIndex < webcams.length - 1) newWebcamIndex++;
2499
2533
  else newWebcamIndex = 0;
2500
2534
  const newWebcamDevice = this.webcams.get(webcams[newWebcamIndex]);
2501
2535
  if (!newWebcamDevice) throw new Error("no webcam device");
2502
2536
  this.webcam.device = newWebcamDevice;
2503
- this.webcam.resolution = "hd";
2504
2537
  optionalParam.deviceId = {
2505
2538
  ideal: this.webcam.device?.deviceId
2506
2539
  };
@@ -2516,8 +2549,9 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
2516
2549
  ideal: this.webcam.device.deviceId
2517
2550
  };
2518
2551
  }
2519
- if (resolution) this.webcam.resolution = resolution;
2520
2552
  }
2553
+ this.webcam.resolution = resolution || this.webcam.resolution || "hd";
2554
+ this.webcam.framerate = frameRate || this.webcam.framerate;
2521
2555
  let usedResolution = $1dedebd5ff3002eb$export$d21ffcc5eb136bfa[resolution || this.webcam.resolution];
2522
2556
  if (this.useVideoBackground) usedResolution = {
2523
2557
  width: {
@@ -2535,7 +2569,6 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
2535
2569
  });
2536
2570
  const mediaStream = await this.handleGetUserMediaError("webcam", navigator.mediaDevices.getUserMedia({
2537
2571
  video: {
2538
- frameRate: frameRate,
2539
2572
  ...optionalParam,
2540
2573
  ...usedResolution
2541
2574
  }
@@ -2577,6 +2610,8 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
2577
2610
  };
2578
2611
  }
2579
2612
  if (!this.webcam.device) throw new Error("no webcam devices");
2613
+ this.webcam.resolution = config?.resolution || this.webcam.resolution || "hd";
2614
+ this.webcam.framerate = config?.frameRate || this.webcam.framerate;
2580
2615
  let usedResolution = $1dedebd5ff3002eb$export$d21ffcc5eb136bfa[config?.resolution || this.webcam.resolution];
2581
2616
  if (this.useVideoBackground) usedResolution = {
2582
2617
  width: {
@@ -9902,7 +9937,7 @@ const $3d1bfd8f074b99b1$var$EndView = ()=>{
9902
9937
  const full = streamState === "full";
9903
9938
  const onGoBackClick = ()=>{
9904
9939
  (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).init();
9905
- setStreamState("streaming");
9940
+ setStreamState("loading");
9906
9941
  };
9907
9942
  (0, $jQDcL$react.useEffect)(()=>{
9908
9943
  if (document.pictureInPictureElement) document.exitPictureInPicture();
@@ -10717,6 +10752,50 @@ const $e3bb2c5d0e5b45b5$export$914ddf2021ea8ee6 = (0, ($parcel$interopDefault($j
10717
10752
 
10718
10753
 
10719
10754
 
10755
+ function $52e751d204780518$export$c74cd098b7a410cb({ mode: mode = "photo" , requestedMedia: requestedMedia = "camera" , permissionBlockedModalState: permissionBlockedModalState , captureThumbnail: captureThumbnail }) {
10756
+ const [currentMode, setMode] = (0, $jQDcL$react.useState)(mode);
10757
+ const [streaming, setStreaming] = (0, $jQDcL$react.useState)(false);
10758
+ const [currentRequestedMedia] = (0, $jQDcL$react.useState)(requestedMedia);
10759
+ const [startRecordTime, setStartRecordTime] = (0, $jQDcL$react.useState)(undefined);
10760
+ const [timer, setTimer] = (0, $jQDcL$react.useState)(0);
10761
+ const [assets, setAssets] = (0, $jQDcL$react.useState)([]);
10762
+ const assetsPopupState = (0, $jQDcL$reactstately.useOverlayTriggerState)({});
10763
+ const [assetLoading, setAssetLoading] = (0, $jQDcL$react.useState)(false);
10764
+ (0, $jQDcL$react.useEffect)(()=>{
10765
+ if (startRecordTime) {
10766
+ const interval = setInterval(()=>{
10767
+ const delta = (Date.now() - startRecordTime) / 1000;
10768
+ setTimer(delta);
10769
+ }, 1000);
10770
+ return ()=>clearInterval(interval);
10771
+ } else setTimer(0);
10772
+ }, [
10773
+ startRecordTime,
10774
+ setTimer
10775
+ ]);
10776
+ return {
10777
+ requestedMedia: currentRequestedMedia,
10778
+ mode: currentMode,
10779
+ setMode: setMode,
10780
+ streaming: streaming,
10781
+ setStreaming: setStreaming,
10782
+ permissionBlockedModalState: permissionBlockedModalState,
10783
+ startRecordTime: startRecordTime,
10784
+ setStartRecordTime: setStartRecordTime,
10785
+ timer: timer,
10786
+ assetsPopupState: assetsPopupState,
10787
+ assets: assets,
10788
+ setAssets: setAssets,
10789
+ assetLoading: assetLoading,
10790
+ setAssetLoading: setAssetLoading,
10791
+ captureThumbnail: captureThumbnail
10792
+ };
10793
+ }
10794
+
10795
+
10796
+
10797
+
10798
+
10720
10799
 
10721
10800
 
10722
10801
 
@@ -10729,7 +10808,7 @@ const $e3bb2c5d0e5b45b5$export$914ddf2021ea8ee6 = (0, ($parcel$interopDefault($j
10729
10808
 
10730
10809
 
10731
10810
 
10732
- function $6e29654b44f114e1$export$61dc559f8a0b9bcf(ref) {
10811
+ function $7c6d19eba05e4d28$export$61dc559f8a0b9bcf(ref) {
10733
10812
  const innerRef = (0, $jQDcL$react.useRef)(null);
10734
10813
  (0, $jQDcL$react.useEffect)(()=>{
10735
10814
  if (!ref) return;
@@ -10738,8 +10817,8 @@ function $6e29654b44f114e1$export$61dc559f8a0b9bcf(ref) {
10738
10817
  });
10739
10818
  return innerRef;
10740
10819
  }
10741
- const $6e29654b44f114e1$export$d2b052e7b4be1756 = /*#__PURE__*/ (0, $jQDcL$react.forwardRef)(function Button({ children: children , ...otherProps }, forwardedRef) {
10742
- const ref = $6e29654b44f114e1$export$61dc559f8a0b9bcf(forwardedRef);
10820
+ const $7c6d19eba05e4d28$export$d2b052e7b4be1756 = /*#__PURE__*/ (0, $jQDcL$react.forwardRef)(function Button({ children: children , ...otherProps }, forwardedRef) {
10821
+ const ref = $7c6d19eba05e4d28$export$61dc559f8a0b9bcf(forwardedRef);
10743
10822
  let state = (0, $jQDcL$reactstately.useToggleState)(otherProps);
10744
10823
  const { buttonProps: buttonProps } = (0, $jQDcL$reactaria.useToggleButton)(otherProps, state, ref);
10745
10824
  const { isFocusVisible: isFocusVisible , focusProps: focusProps } = (0, $jQDcL$reactaria.useFocusRing)();
@@ -10760,6 +10839,218 @@ const $6e29654b44f114e1$export$d2b052e7b4be1756 = /*#__PURE__*/ (0, $jQDcL$react
10760
10839
 
10761
10840
 
10762
10841
 
10842
+ const $9999b4145d63cb7f$export$4e594bceac139abd = (props)=>{
10843
+ const { selfPeerId: selfPeerId } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
10844
+ if (props.state === "request") return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("button", {
10845
+ className: (0, ($parcel$interopDefault($jQDcL$classnames)))("bg-white rounded-full w-[86px] h-[86px] flex items-center justify-center"),
10846
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
10847
+ className: (0, ($parcel$interopDefault($jQDcL$classnames)))("border-[7px] border-white border-b-[#E5484D] border-b-[7px] rounded-[50%] w-[64px] h-[64px] animate-spin")
10848
+ })
10849
+ });
10850
+ if (props.state === "live") return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("button", {
10851
+ className: (0, ($parcel$interopDefault($jQDcL$classnames)))("bg-white rounded-full w-[86px] h-[86px] flex items-center justify-center"),
10852
+ onClick: ()=>{
10853
+ props.onCapturePress();
10854
+ },
10855
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
10856
+ className: "bg-white border-[4px] border-[#E5484D] w-[72px] h-[72px] rounded-full flex items-center justify-center",
10857
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
10858
+ className: "bg-[#E5484D] w-[24px] h-[24px] rounded-[8px] "
10859
+ })
10860
+ })
10861
+ });
10862
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("button", {
10863
+ className: (0, ($parcel$interopDefault($jQDcL$classnames)))("bg-white rounded-full w-[86px] h-[86px] flex items-center justify-center"),
10864
+ onClick: ()=>{
10865
+ if (selfPeerId) props.onCapturePress();
10866
+ },
10867
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
10868
+ className: "bg-[#E5484D] w-[70px] h-[70px] rounded-full flex items-center justify-center",
10869
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
10870
+ className: "bg-[#E5484D] w-[62px] h-[62px] rounded-full border-[3px] border-[#FFFFF]"
10871
+ })
10872
+ })
10873
+ });
10874
+ };
10875
+ const $9999b4145d63cb7f$export$f9da3144ae2525a3 = (props)=>{
10876
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
10877
+ className: (0, ($parcel$interopDefault($jQDcL$classnames)))("bg-white rounded-full w-[72px] h-[72px] p-[3px]"),
10878
+ onClick: ()=>props.onCapturePress(),
10879
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
10880
+ className: "bg-primary rounded-full w-full h-full p-[3px] flex items-center justify-center cursor-pointer",
10881
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
10882
+ className: (0, ($parcel$interopDefault($jQDcL$classnames)))("w-full h-full transition-[transform,border-radius] duration-300", props.state.mode === "photo" ? "bg-white" : "bg-[#f12828]", props.state.streaming ? "rounded-[5px] scale-[0.4]" : "rounded-[60px]")
10883
+ })
10884
+ })
10885
+ });
10886
+ };
10887
+
10888
+
10889
+ const $4f0bbf6285c74007$export$11a6fe490bbc4873 = (props)=>{
10890
+ const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
10891
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
10892
+ className: "flex flex-col bg-primary h-[150px] w-full max-w-[500px] rounded-[15px] p-2.5 gap-2.5",
10893
+ children: [
10894
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
10895
+ className: "flex flex-1 flex-row px-[10px] w-full",
10896
+ children: [
10897
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
10898
+ className: "flex flex-row flex-auto items-center gap-[10px]",
10899
+ children: [
10900
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $6d8b37b4bd2444ef$export$3741e4ac43f04ca2), {}),
10901
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
10902
+ className: " text-white text-base font-medium",
10903
+ children: "SnapCall"
10904
+ })
10905
+ ]
10906
+ }),
10907
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
10908
+ className: "flex flex-row justify-end flex-auto items-center gap-[10px] ",
10909
+ children: [
10910
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $7c6d19eba05e4d28$export$d2b052e7b4be1756), {
10911
+ isSelected: props.state.mode === "photo",
10912
+ onPress: ()=>{
10913
+ if (!props.state.streaming) props.changeMode("photo");
10914
+ },
10915
+ children: t("misc.photo")
10916
+ }),
10917
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $7c6d19eba05e4d28$export$d2b052e7b4be1756), {
10918
+ isSelected: props.state.mode === "video",
10919
+ onPress: ()=>{
10920
+ if (!props.state.streaming) props.changeMode("video");
10921
+ },
10922
+ children: t("misc.video")
10923
+ })
10924
+ ]
10925
+ })
10926
+ ]
10927
+ }),
10928
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
10929
+ className: "flex flex-row flex-1 items-center justify-between w-full ",
10930
+ children: [
10931
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
10932
+ className: "w-[60px] h-[60px]",
10933
+ children: props.thumbnail
10934
+ }),
10935
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $9999b4145d63cb7f$export$f9da3144ae2525a3), {
10936
+ ...props
10937
+ }),
10938
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
10939
+ onClick: props.onSwitch,
10940
+ className: "rounded-full w-[56px] h-[56px] flex items-center justify-center bg-[#565656] cursor-pointer",
10941
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $ec8eb252693ca260$export$aefffb14595958fe), {})
10942
+ })
10943
+ ]
10944
+ })
10945
+ ]
10946
+ });
10947
+ };
10948
+
10949
+
10950
+
10951
+
10952
+
10953
+ const $9a3d89191e7070cd$export$53819c0e58f98d49 = (props)=>{
10954
+ const [countdown, setCountdown] = (0, $jQDcL$react.useState)(props.initialValue);
10955
+ (0, $jQDcL$react.useEffect)(()=>{
10956
+ if (countdown === undefined) return;
10957
+ const t = setTimeout(()=>{
10958
+ if (countdown === 1) props.onFinish();
10959
+ setCountdown(countdown - 1);
10960
+ }, 1000);
10961
+ return ()=>clearTimeout(t);
10962
+ }, [
10963
+ countdown,
10964
+ props
10965
+ ]);
10966
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
10967
+ className: "absolute w-full h-full flex justify-center items-center bg-black/[.6] z-50",
10968
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
10969
+ className: "text-white/80 text-[112px] font-medium",
10970
+ children: countdown
10971
+ })
10972
+ });
10973
+ };
10974
+
10975
+
10976
+
10977
+
10978
+
10979
+
10980
+
10981
+
10982
+ const $b758582ffbe79e9a$export$8c410456846722ea = /*#__PURE__*/ (0, $jQDcL$react.forwardRef)((props, forwardedRef)=>{
10983
+ const ref = (0, $7c6d19eba05e4d28$export$61dc559f8a0b9bcf)(forwardedRef);
10984
+ (0, $jQDcL$react.useEffect)(()=>{
10985
+ const onScreenshareEnabled = ()=>{
10986
+ if (!ref?.current) return;
10987
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).requestLocalScreenshare(ref.current);
10988
+ };
10989
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("screenshareEnabled", onScreenshareEnabled);
10990
+ return ()=>{
10991
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("screenshareEnabled", onScreenshareEnabled);
10992
+ };
10993
+ }, [
10994
+ ref
10995
+ ]);
10996
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("video", {
10997
+ autoPlay: true,
10998
+ muted: true,
10999
+ playsInline: true,
11000
+ ref: ref,
11001
+ className: "rounded-[10px] max-w-[100%] max-h-[100%] object-fit ",
11002
+ children: props.children
11003
+ });
11004
+ });
11005
+ const $b758582ffbe79e9a$export$287f8fcc69caf433 = /*#__PURE__*/ (0, $jQDcL$react.forwardRef)((_, forwardedRef)=>{
11006
+ const ref = (0, $7c6d19eba05e4d28$export$61dc559f8a0b9bcf)(forwardedRef);
11007
+ const [facingMode, setFacingMode] = (0, $jQDcL$react.useState)("user");
11008
+ (0, $jQDcL$react.useEffect)(()=>{
11009
+ const onLocalVideoChange = (event)=>{
11010
+ if (!event.detail?.camera?.device || !ref.current) return;
11011
+ const { facingMode: newFacingMode } = (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).requestLocalVideo(ref?.current);
11012
+ setFacingMode(newFacingMode);
11013
+ };
11014
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("localVideoAvailable", onLocalVideoChange);
11015
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("localVideoChange", onLocalVideoChange);
11016
+ return ()=>{
11017
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("localVideoAvailable", onLocalVideoChange);
11018
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("localVideoChange", onLocalVideoChange);
11019
+ };
11020
+ }, [
11021
+ ref
11022
+ ]);
11023
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("video", {
11024
+ autoPlay: true,
11025
+ muted: true,
11026
+ playsInline: true,
11027
+ ref: ref,
11028
+ className: (0, ($parcel$interopDefault($jQDcL$classnames)))("w-full h-full object-cover rounded-[inherit]", {
11029
+ "scale-x-[-1]": facingMode === "user"
11030
+ })
11031
+ });
11032
+ });
11033
+
11034
+
11035
+
11036
+ const $8e2ec13f9d254ce9$export$1cd1efc78cb52ca5 = ({ asset: asset , onClick: onClick })=>{
11037
+ if (!asset) return null;
11038
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11039
+ className: "flex items-center justify-center w-[60px] h-[60px] cursor-pointer relative overflow-hidden",
11040
+ onClick: onClick,
11041
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("img", {
11042
+ className: "cursor-pointer rounded-[8px] w-[60px] h-[60px] object-cover",
11043
+ src: asset.thumbnailURL || asset.objectUrl,
11044
+ alt: "last shot"
11045
+ })
11046
+ });
11047
+ };
11048
+
11049
+
11050
+
11051
+
11052
+
11053
+
10763
11054
 
10764
11055
 
10765
11056
 
@@ -10767,11 +11058,54 @@ const $6e29654b44f114e1$export$d2b052e7b4be1756 = /*#__PURE__*/ (0, $jQDcL$react
10767
11058
 
10768
11059
 
10769
11060
 
11061
+ const $8a9710e5cd0f3440$export$353f5b6fc5456de1 = /*#__PURE__*/ (0, $jQDcL$react.forwardRef)(function Button({ children: children , variant: variant = "primary" , size: size = "medium" , fullWidth: fullWidth = false , form: form , className: className , ...otherProps }, forwardedRef) {
11062
+ const ref = (0, $7c6d19eba05e4d28$export$61dc559f8a0b9bcf)(forwardedRef);
11063
+ const { buttonProps: buttonProps , isPressed: isPressed } = (0, $jQDcL$reactaria.useButton)(otherProps, ref);
11064
+ const { isFocusVisible: isFocusVisible , focusProps: focusProps } = (0, $jQDcL$reactaria.useFocusRing)();
11065
+ const { hoverProps: hoverProps , isHovered: isHovered } = (0, $jQDcL$reactariainteractions.useHover)({
11066
+ isDisabled: buttonProps.disabled
11067
+ });
11068
+ const isActive = isHovered || isFocusVisible || isPressed;
11069
+ const variantStyle = {
11070
+ primary: (0, ($parcel$interopDefault($jQDcL$classnames)))(isActive ? "bg-primaryLight" : "bg-primary", "text-white disabled:bg-secondaryLight"),
11071
+ secondary: (0, ($parcel$interopDefault($jQDcL$classnames)))(isActive ? "bg-graySelected" : "bg-transparent", "text-primary border border-secondaryLight disabled:text-secondaryLight disabled:bg-graySelected"),
11072
+ basic: (0, ($parcel$interopDefault($jQDcL$classnames)))(isActive ? "bg-graySelected" : "bg-white", "text-primary disabled:text-secondaryLight disabled:bg-graySelected"),
11073
+ tertiary: (0, ($parcel$interopDefault($jQDcL$classnames)))(isActive ? "bg-tertiarySelected" : "bg-tertiary", "text-mainBlue disabled:opacity-50"),
11074
+ blue: (0, ($parcel$interopDefault($jQDcL$classnames)))(isActive ? "bg-mainBlueSelected" : "bg-mainBlue", "text-white disabled:opacity-50"),
11075
+ custom: ""
11076
+ };
11077
+ const sizeStyle = {
11078
+ large: "py-3 px-4 text-base rounded-lg",
11079
+ medium: "py-[9px] px-3.5 text-base rounded-lg",
11080
+ small: "py-2 px-3 text-sm rounded-lg",
11081
+ extraSmall: "py-1.5 px-2.5 text-xs rounded-md",
11082
+ custom: ""
11083
+ };
11084
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("button", {
11085
+ className: (0, ($parcel$interopDefault($jQDcL$classnames)))(sizeStyle[size], variantStyle[variant], "flex items-center justify-center gap-[5px] font-medium", "transition-colors ease-in-out", "focus:outline-none", {
11086
+ "ring-[3px] ring-cta": isFocusVisible,
11087
+ "cursor-not-allowed": buttonProps.disabled,
11088
+ "w-full": fullWidth
11089
+ }, className),
11090
+ ...buttonProps,
11091
+ ...focusProps,
11092
+ ...hoverProps,
11093
+ form: form,
11094
+ ref: ref,
11095
+ children: children
11096
+ });
11097
+ });
11098
+
11099
+
11100
+
11101
+
11102
+
11103
+
10770
11104
 
10771
11105
 
10772
11106
 
10773
11107
 
10774
- const $6fa093aef38ba660$export$a703eb468fcf7e69 = (props)=>{
11108
+ const $1ee478167b5d0914$export$a703eb468fcf7e69 = (props)=>{
10775
11109
  const { state: state , children: children } = props;
10776
11110
  const ref = (0, $jQDcL$react.useRef)(null);
10777
11111
  const { modalProps: modalProps , underlayProps: underlayProps } = (0, $jQDcL$reactaria.useModalOverlay)({
@@ -10824,60 +11158,18 @@ const $6fa093aef38ba660$export$a703eb468fcf7e69 = (props)=>{
10824
11158
 
10825
11159
 
10826
11160
 
10827
-
10828
-
10829
-
10830
-
10831
-
10832
- const $f98f91fb267f52c8$export$353f5b6fc5456de1 = /*#__PURE__*/ (0, $jQDcL$react.forwardRef)(function Button({ children: children , variant: variant = "primary" , size: size = "medium" , fullWidth: fullWidth = false , form: form , className: className , ...otherProps }, forwardedRef) {
10833
- const ref = (0, $6e29654b44f114e1$export$61dc559f8a0b9bcf)(forwardedRef);
10834
- const { buttonProps: buttonProps , isPressed: isPressed } = (0, $jQDcL$reactaria.useButton)(otherProps, ref);
10835
- const { isFocusVisible: isFocusVisible , focusProps: focusProps } = (0, $jQDcL$reactaria.useFocusRing)();
10836
- const { hoverProps: hoverProps , isHovered: isHovered } = (0, $jQDcL$reactariainteractions.useHover)({
10837
- isDisabled: buttonProps.disabled
10838
- });
10839
- const isActive = isHovered || isFocusVisible || isPressed;
10840
- const variantStyle = {
10841
- primary: (0, ($parcel$interopDefault($jQDcL$classnames)))(isActive ? "bg-primaryLight" : "bg-primary", "text-white disabled:bg-secondaryLight"),
10842
- secondary: (0, ($parcel$interopDefault($jQDcL$classnames)))(isActive ? "bg-graySelected" : "bg-transparent", "text-primary border border-secondaryLight disabled:text-secondaryLight disabled:bg-graySelected"),
10843
- basic: (0, ($parcel$interopDefault($jQDcL$classnames)))(isActive ? "bg-graySelected" : "bg-white", "text-primary disabled:text-secondaryLight disabled:bg-graySelected"),
10844
- tertiary: (0, ($parcel$interopDefault($jQDcL$classnames)))(isActive ? "bg-tertiarySelected" : "bg-tertiary", "text-mainBlue disabled:opacity-50"),
10845
- custom: ""
10846
- };
10847
- const sizeStyle = {
10848
- large: "py-3 px-4 text-base rounded-lg",
10849
- medium: "py-[9px] px-3.5 text-base rounded-lg",
10850
- small: "py-2 px-3 text-sm rounded-lg",
10851
- extraSmall: "py-1.5 px-2.5 text-xs rounded-md",
10852
- custom: ""
11161
+ function $34b61dca272e1b9a$export$2b77a92f1a5ad772(props) {
11162
+ const { children: children , state: state , size: size = "small" , title: title , description: description , primaryAction: primaryAction , secondaryAction: secondaryAction , centered: centered = false , ...otherProps } = props;
11163
+ const viewport = (0, $jQDcL$reactariautils.useViewportSize)();
11164
+ const maxHeight = viewport.height - 64;
11165
+ const modalSize = {
11166
+ small: "max-w-[400px] mx-[20px]",
11167
+ medium: "max-w-[600px]",
11168
+ large: "max-w-[800px]"
10853
11169
  };
10854
- return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("button", {
10855
- className: (0, ($parcel$interopDefault($jQDcL$classnames)))(sizeStyle[size], variantStyle[variant], "flex items-center justify-center gap-[5px] font-medium", "transition-colors ease-in-out", "focus:outline-none", {
10856
- "ring-[3px] ring-cta": isFocusVisible,
10857
- "cursor-not-allowed": buttonProps.disabled,
10858
- "w-full": fullWidth
10859
- }, className),
10860
- ...buttonProps,
10861
- ...focusProps,
10862
- ...hoverProps,
10863
- form: form,
10864
- ref: ref,
10865
- children: children
10866
- });
10867
- });
10868
-
10869
-
10870
- function $48c2553f62767e40$export$2b77a92f1a5ad772(props) {
10871
- const { children: children , state: state , size: size = "small" , title: title , description: description , primaryAction: primaryAction , secondaryAction: secondaryAction , centered: centered = false } = props;
10872
- const viewport = (0, $jQDcL$reactariautils.useViewportSize)();
10873
- const maxHeight = viewport.height - 64;
10874
- const modalSize = {
10875
- small: "max-w-[400px] mx-[20px]",
10876
- medium: "max-w-[600px]",
10877
- large: "max-w-[800px]"
10878
- };
10879
- return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $6fa093aef38ba660$export$a703eb468fcf7e69), {
11170
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $1ee478167b5d0914$export$a703eb468fcf7e69), {
10880
11171
  state: state,
11172
+ ...otherProps,
10881
11173
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
10882
11174
  className: (0, ($parcel$interopDefault($jQDcL$classnames)))("bg-white rounded-[10px] z-[1] overflow-x-auto focus:outline-none", modalSize[size]),
10883
11175
  style: {
@@ -10910,7 +11202,7 @@ function $48c2553f62767e40$export$2b77a92f1a5ad772(props) {
10910
11202
  (primaryAction || secondaryAction) && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
10911
11203
  className: (0, ($parcel$interopDefault($jQDcL$classnames)))("flex justify-end gap-2.5", centered ? "justify-center" : "justify-end"),
10912
11204
  children: [
10913
- typeof secondaryAction === "string" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $f98f91fb267f52c8$export$353f5b6fc5456de1), {
11205
+ typeof secondaryAction === "string" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8a9710e5cd0f3440$export$353f5b6fc5456de1), {
10914
11206
  variant: "secondary",
10915
11207
  onPress: state.close,
10916
11208
  fullWidth: centered,
@@ -10919,7 +11211,7 @@ function $48c2553f62767e40$export$2b77a92f1a5ad772(props) {
10919
11211
  typeof secondaryAction === "function" && secondaryAction({
10920
11212
  close: state.close
10921
11213
  }),
10922
- typeof primaryAction === "string" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $f98f91fb267f52c8$export$353f5b6fc5456de1), {
11214
+ typeof primaryAction === "string" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8a9710e5cd0f3440$export$353f5b6fc5456de1), {
10923
11215
  onPress: state.close,
10924
11216
  fullWidth: centered,
10925
11217
  children: primaryAction
@@ -10938,7 +11230,70 @@ function $48c2553f62767e40$export$2b77a92f1a5ad772(props) {
10938
11230
 
10939
11231
 
10940
11232
 
10941
- const $bec7bca3a7448591$export$f9da3144ae2525a3 = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("svg", {
11233
+
11234
+ const $1edfa10ad1e88512$export$f9d8408fefd786da = ({ state: state , onClose: onClose })=>{
11235
+ const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
11236
+ const QRCodeRef = (0, $jQDcL$react.useRef)(null);
11237
+ const { options: options } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
11238
+ const [QRCodeContainerRef, { width: QRCodeContainerWidth }] = (0, $56e1e7a85d8bf4bb$export$e295b0c537d32d7d)();
11239
+ (0, $jQDcL$react.useEffect)(()=>{
11240
+ const url = options.sharedURL || window.location.href;
11241
+ $jQDcL$qrcode.toCanvas(QRCodeRef.current, url, {
11242
+ width: QRCodeContainerWidth > 300 ? 300 : QRCodeContainerWidth,
11243
+ errorCorrectionLevel: "Q",
11244
+ margin: 0
11245
+ });
11246
+ }, [
11247
+ QRCodeContainerWidth,
11248
+ options.sharedURL
11249
+ ]);
11250
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $34b61dca272e1b9a$export$2b77a92f1a5ad772), {
11251
+ centered: true,
11252
+ title: t("recorder.switchToMobileTitle"),
11253
+ description: t("recorder.switchToMobileDescription"),
11254
+ isDismissable: false,
11255
+ state: state,
11256
+ primaryAction: ({ close: close })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8a9710e5cd0f3440$export$353f5b6fc5456de1), {
11257
+ fullWidth: true,
11258
+ variant: "blue",
11259
+ onPress: ()=>{
11260
+ close();
11261
+ onClose();
11262
+ },
11263
+ children: t("recorder.useDesktopVersion")
11264
+ }),
11265
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11266
+ className: "flex flex-col gap-[20px]",
11267
+ children: [
11268
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11269
+ ref: QRCodeContainerRef,
11270
+ className: "flex flex-1 items-center justify-center relative",
11271
+ children: [
11272
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11273
+ className: "absolute w-1/3 h-1/3 max-w-[70px] max-h-[70px] flex items-center justify-center",
11274
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8745dbdbe55f5ff3$export$2e2bcd8739ae039), {})
11275
+ }),
11276
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("canvas", {
11277
+ ref: QRCodeRef
11278
+ })
11279
+ ]
11280
+ }),
11281
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("p", {
11282
+ className: "flex items-center justify-center text-xs text-primaryLight text-center",
11283
+ children: t("recorder.scanQRCode")
11284
+ })
11285
+ ]
11286
+ })
11287
+ });
11288
+ };
11289
+
11290
+
11291
+
11292
+
11293
+
11294
+
11295
+
11296
+ const $bec7bca3a7448591$export$f9da3144ae2525a3 = ({ sideColor: sideColor , mainColor: mainColor })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("svg", {
10942
11297
  width: "20",
10943
11298
  height: "21",
10944
11299
  viewBox: "0 0 20 21",
@@ -10951,15 +11306,15 @@ const $bec7bca3a7448591$export$f9da3144ae2525a3 = ()=>/*#__PURE__*/ (0, $jQDcL$r
10951
11306
  children: [
10952
11307
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
10953
11308
  d: "M10 2.167a8.333 8.333 0 1 0 0 16.666 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.333Z",
10954
- fill: "#1D1C20"
11309
+ fill: sideColor || "#1D1C20"
10955
11310
  }),
10956
11311
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
10957
11312
  d: "M6.76 5.65a5.833 5.833 0 1 1 6.481 9.7 5.833 5.833 0 0 1-6.481-9.7Z",
10958
- fill: "#F12828"
11313
+ fill: mainColor || "#F12828"
10959
11314
  })
10960
11315
  ]
10961
11316
  });
10962
- const $bec7bca3a7448591$export$c6a849fd9d9d93a2 = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("svg", {
11317
+ const $bec7bca3a7448591$export$c6a849fd9d9d93a2 = ({ sideColor: sideColor , mainColor: mainColor })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("svg", {
10963
11318
  width: "20",
10964
11319
  height: "20",
10965
11320
  viewBox: "0 0 20 20",
@@ -10972,11 +11327,11 @@ const $bec7bca3a7448591$export$c6a849fd9d9d93a2 = ()=>/*#__PURE__*/ (0, $jQDcL$r
10972
11327
  children: [
10973
11328
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
10974
11329
  d: "M10 1.667a8.333 8.333 0 1 0 0 16.666 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.333Z",
10975
- fill: "#1D1C20"
11330
+ fill: sideColor || "#1D1C20"
10976
11331
  }),
10977
11332
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
10978
11333
  d: "M7.5 6.667h5a.833.833 0 0 1 .833.833v5a.833.833 0 0 1-.834.834h-5a.833.833 0 0 1-.833-.834v-5a.833.833 0 0 1 .833-.833Z",
10979
- fill: "#F12828"
11334
+ fill: mainColor || "#F12828"
10980
11335
  })
10981
11336
  ]
10982
11337
  });
@@ -11006,323 +11361,173 @@ const $bec7bca3a7448591$export$dce36e07153365d = ()=>/*#__PURE__*/ (0, $jQDcL$re
11006
11361
 
11007
11362
 
11008
11363
 
11009
- const $b46da51ab7ae33e7$var$Text = ({ children: children })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
11010
- className: "w-full text-base text-primaryLight font-normal leading-[20px]",
11011
- children: children
11364
+
11365
+ const $f341dd104b321776$var$savedPermissions = {
11366
+ audio: false,
11367
+ video: false
11368
+ };
11369
+ const $f341dd104b321776$export$d791e41b9a4de1f2 = (constraints)=>{
11370
+ const [media, setMedia] = (0, $jQDcL$react.useState)();
11371
+ const state = (0, $jQDcL$reactquery.useMutation)([
11372
+ constraints
11373
+ ], async ()=>{
11374
+ const mediaStream = await navigator.mediaDevices.getUserMedia(constraints);
11375
+ setMedia(mediaStream);
11376
+ if (constraints.audio && !$f341dd104b321776$var$savedPermissions.audio) $f341dd104b321776$var$savedPermissions.audio = true;
11377
+ if (constraints.video && !$f341dd104b321776$var$savedPermissions.video) $f341dd104b321776$var$savedPermissions.video = true;
11378
+ return {
11379
+ media: media,
11380
+ savedPermissions: $f341dd104b321776$var$savedPermissions
11381
+ };
11382
+ });
11383
+ if (state.data == null) media?.getTracks().forEach((track)=>{
11384
+ track.stop();
11385
+ media?.removeTrack(track);
11012
11386
  });
11013
- const $b46da51ab7ae33e7$var$Bold = ({ children: children })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
11387
+ return {
11388
+ ...state,
11389
+ savedPermissions: $f341dd104b321776$var$savedPermissions
11390
+ };
11391
+ };
11392
+
11393
+
11394
+ const $47755bb1d707f6f6$var$Bold = ({ children: children })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
11014
11395
  className: "text-primary font-medium",
11015
11396
  children: children
11016
11397
  });
11017
- const $b46da51ab7ae33e7$var$InstructionRow = ({ children: children , index: index })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11018
- className: "flex flex-row justify-center gap-[5px]",
11019
- children: [
11020
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11021
- className: "flex items-center justify-center min-w-[24px] h-[24px] rounded-[50%] bg-secondaryVLight",
11022
- children: index
11023
- }),
11024
- children
11025
- ]
11026
- });
11027
- const $b46da51ab7ae33e7$export$788cb893d96254c8 = ({ state: state , type: type })=>{
11398
+ const $47755bb1d707f6f6$export$788cb893d96254c8 = ({ state: state , mode: mode , ...props })=>{
11028
11399
  const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
11400
+ const getUserMediaMutation = (0, $f341dd104b321776$export$d791e41b9a4de1f2)({
11401
+ audio: true,
11402
+ video: true
11403
+ });
11029
11404
  const [permissionsState, setPermissionsState] = (0, $jQDcL$react.useState)("idle");
11030
11405
  (0, $jQDcL$react.useEffect)(()=>{
11031
11406
  const { deviceState: deviceState } = (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getState();
11032
- if (deviceState.screenshare.enabled && type === "screen") return setPermissionsState("granted");
11033
- if (deviceState.camera.enabled && type !== "screen") return setPermissionsState("granted");
11407
+ if (deviceState.screenshare.enabled) return setPermissionsState("granted");
11408
+ if (deviceState.camera.enabled) return setPermissionsState("granted");
11034
11409
  setPermissionsState("idle");
11035
11410
  }, [
11036
- type
11411
+ mode
11037
11412
  ]);
11038
- const { deviceState: deviceState } = (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getState();
11039
- const [isRoomReady, setRoomReady] = (0, $jQDcL$react.useState)(false);
11040
11413
  const { orientation: orientation } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
11041
11414
  const device = orientation === "landscape" ? "desktop" : "mobile";
11042
11415
  const videoLength = permissionsState === "granted" ? "short" : "full";
11043
- const videoType = type === "photo" ? "photo" : "video";
11044
- const onEnterRoom = ()=>setRoomReady(true);
11045
- const onLeaveRoom = ()=>setRoomReady(false);
11046
11416
  const ref = (0, $jQDcL$react.useRef)(null);
11047
- const title = (0, $jQDcL$react.useMemo)(()=>{
11048
- if (permissionsState === "refused") return t("recorder.permissionDeniedTitle");
11049
- if (type === "photo") return t("recorder.photoInstructionsTitle");
11050
- else if (type === "video") return t("recorder.videoInstructionsTitle");
11051
- else return t("recorder.screenShareInstructionsTitle");
11052
- }, [
11053
- permissionsState,
11054
- type,
11055
- t
11056
- ]);
11057
- (0, $jQDcL$react.useEffect)(()=>{
11058
- (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("enterRoom", onEnterRoom);
11059
- (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("leaveRoom", onLeaveRoom);
11060
- return ()=>{
11061
- (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("enterRoom", onEnterRoom);
11062
- (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("leaveRoom", onLeaveRoom);
11063
- };
11064
- }, []);
11065
- const permissionsInstructionIndex = Number(permissionsState !== "granted");
11066
- return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $48c2553f62767e40$export$2b77a92f1a5ad772), {
11417
+ const title = mode === "photo" ? t("recorder.photoInstructionsTitle") : t("recorder.videoInstructionsTitle");
11418
+ const mediaInstruction = [
11419
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11420
+ i18nKey: "recorder.instructions.allowAccessOnPrompt",
11421
+ children: [
11422
+ "When prompted, ",
11423
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($47755bb1d707f6f6$var$Bold, {
11424
+ children: "allow access"
11425
+ }),
11426
+ " to camera and microphone."
11427
+ ]
11428
+ })
11429
+ ];
11430
+ const instructionPhoto = [
11431
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11432
+ i18nKey: "recorder.instructions.tapPhotoButton",
11433
+ com: true,
11434
+ children: [
11435
+ "Tap the ",
11436
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $bec7bca3a7448591$export$dce36e07153365d), {}),
11437
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($47755bb1d707f6f6$var$Bold, {
11438
+ children: " Camera button"
11439
+ }),
11440
+ " to take a photo."
11441
+ ]
11442
+ }),
11443
+ t("recorder.instructions.multiplePhotos"),
11444
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11445
+ i18nKey: "recorder.instructions.reviewAndSendPhotos",
11446
+ children: [
11447
+ "You can review your photo and then ",
11448
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($47755bb1d707f6f6$var$Bold, {
11449
+ children: "send it when you're done."
11450
+ })
11451
+ ]
11452
+ })
11453
+ ];
11454
+ const instructionVideo = [
11455
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11456
+ i18nKey: "recorder.instructions.tapVideoButton",
11457
+ children: [
11458
+ "Tap the ",
11459
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $bec7bca3a7448591$export$f9da3144ae2525a3), {}),
11460
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($47755bb1d707f6f6$var$Bold, {
11461
+ children: " Record button"
11462
+ }),
11463
+ " to start a recording."
11464
+ ]
11465
+ }),
11466
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11467
+ i18nKey: "recorder.instructions.videoSpeech",
11468
+ children: [
11469
+ "You can ",
11470
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($47755bb1d707f6f6$var$Bold, {
11471
+ children: "speak during"
11472
+ }),
11473
+ " the recording for added detail."
11474
+ ]
11475
+ }),
11476
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11477
+ i18nKey: "recorder.instructions.tapStopVideoButton",
11478
+ children: [
11479
+ "When you're finished, tap the ",
11480
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $bec7bca3a7448591$export$c6a849fd9d9d93a2), {}),
11481
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($47755bb1d707f6f6$var$Bold, {
11482
+ children: " Stop button"
11483
+ }),
11484
+ "."
11485
+ ]
11486
+ }),
11487
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11488
+ i18nKey: "recorder.instructions.reviewAndSendVideos",
11489
+ children: [
11490
+ "You can review your video and then ",
11491
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($47755bb1d707f6f6$var$Bold, {
11492
+ children: "send it when you're done"
11493
+ }),
11494
+ "."
11495
+ ]
11496
+ })
11497
+ ];
11498
+ const instructions = [];
11499
+ if (!getUserMediaMutation.savedPermissions.audio) instructions.push(...mediaInstruction);
11500
+ instructions.push(...mode === "photo" ? instructionPhoto : instructionVideo);
11501
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $34b61dca272e1b9a$export$2b77a92f1a5ad772), {
11067
11502
  title: title,
11068
11503
  state: state,
11069
- centered: permissionsState !== "refused",
11504
+ centered: true,
11070
11505
  isDismissable: false,
11071
- primaryAction: ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$reactjsxruntime.Fragment), {
11072
- children: permissionsState === "refused" ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $f98f91fb267f52c8$export$353f5b6fc5456de1), {
11073
- fullWidth: true,
11074
- onPress: ()=>window.location.reload(),
11075
- children: t("recorder.allowAccess")
11076
- }) : /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$reactjsxruntime.Fragment), {
11077
- children: permissionsState === "granted" ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $f98f91fb267f52c8$export$353f5b6fc5456de1), {
11078
- fullWidth: true,
11079
- onPress: state.close,
11080
- children: t("recorder.okay")
11081
- }) : /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $f98f91fb267f52c8$export$353f5b6fc5456de1), {
11082
- fullWidth: true,
11083
- isDisabled: permissionsState === "requesting" || isRoomReady === false,
11084
- onPress: async ()=>{
11085
- setPermissionsState("requesting");
11086
- try {
11087
- if (!deviceState.microphone.enabled) {
11088
- const mediaResult = await navigator.mediaDevices.getUserMedia({
11089
- audio: true,
11090
- video: type !== "screen"
11091
- });
11092
- mediaResult.getTracks().forEach((track)=>track.stop());
11093
- }
11094
- if (!deviceState.microphone.enabled) await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableMicrophone();
11095
- if (!deviceState.camera.enabled && type !== "screen") {
11096
- await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).disableScreenshare();
11097
- await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableVideo({
11098
- resolution: "vga",
11099
- frameRate: 20,
11100
- facingMode: "environment"
11101
- });
11102
- }
11103
- if (!deviceState.screenshare.enabled && type === "screen") {
11104
- await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).disableVideo();
11105
- await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableScreenshare({
11106
- audioTransportOption: "mix"
11107
- });
11108
- }
11109
- setPermissionsState("granted");
11110
- state.close();
11111
- } catch (error) {
11112
- console.log("error", error);
11113
- setPermissionsState("refused");
11114
- }
11115
- },
11116
- children: [
11117
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $41e530447f5fd995$export$2e2bcd8739ae039), {}),
11118
- type !== "screen" ? t("recorder.allowCamMicAccess") : t("recorder.allowScreenShareAccess")
11119
- ]
11120
- })
11121
- })
11122
- }),
11506
+ ...props,
11123
11507
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11124
11508
  className: "flex flex-col gap-[20px]",
11125
11509
  children: [
11126
11510
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11127
11511
  className: "flex flex-col gap-[10px]",
11128
11512
  ref: ref,
11129
- children: permissionsState === "refused" ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Text, {
11130
- children: t("recorder.permissionDeniedDescription")
11131
- }) : /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reactjsxruntime.Fragment), {
11132
- children: [
11133
- permissionsState !== "granted" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$InstructionRow, {
11134
- index: 1,
11135
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Text, {
11136
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11137
- i18nKey: "recorder.instructions.allowAccessOnPrompt",
11138
- children: [
11139
- "When prompted, ",
11140
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Bold, {
11141
- children: "allow access"
11142
- }),
11143
- " to camera and microphone."
11144
- ]
11145
- })
11513
+ children: instructions.map((value, index)=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11514
+ className: "flex flex-row justify-center gap-[5px]",
11515
+ children: [
11516
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11517
+ className: "flex items-center justify-center min-w-[24px] h-[24px] rounded-[50%] bg-secondaryVLight",
11518
+ children: index + 1
11519
+ }),
11520
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
11521
+ className: "w-full text-base text-primaryLight font-normal leading-[20px]",
11522
+ children: value
11146
11523
  })
11147
- }),
11148
- type === "photo" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reactjsxruntime.Fragment), {
11149
- children: [
11150
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$InstructionRow, {
11151
- index: 1 + permissionsInstructionIndex,
11152
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Text, {
11153
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11154
- i18nKey: "recorder.instructions.tapPhotoButton",
11155
- com: true,
11156
- children: [
11157
- "Tap the ",
11158
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $bec7bca3a7448591$export$dce36e07153365d), {}),
11159
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Bold, {
11160
- children: " Camera button"
11161
- }),
11162
- " to take a photo."
11163
- ]
11164
- })
11165
- })
11166
- }),
11167
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$InstructionRow, {
11168
- index: 2 + permissionsInstructionIndex,
11169
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Text, {
11170
- children: t("recorder.instructions.multiplePhotos")
11171
- })
11172
- }),
11173
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$InstructionRow, {
11174
- index: 3 + permissionsInstructionIndex,
11175
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Text, {
11176
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11177
- i18nKey: "recorder.instructions.reviewAndSendPhotos",
11178
- children: [
11179
- "You can review your photo and then ",
11180
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Bold, {
11181
- children: "send it when you're done."
11182
- })
11183
- ]
11184
- })
11185
- })
11186
- })
11187
- ]
11188
- }),
11189
- type === "video" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reactjsxruntime.Fragment), {
11190
- children: [
11191
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$InstructionRow, {
11192
- index: 1 + permissionsInstructionIndex,
11193
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Text, {
11194
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11195
- i18nKey: "recorder.instructions.tapVideoButton",
11196
- children: [
11197
- "Tap the ",
11198
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $bec7bca3a7448591$export$f9da3144ae2525a3), {}),
11199
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Bold, {
11200
- children: " Record button"
11201
- }),
11202
- " to start a recording."
11203
- ]
11204
- })
11205
- })
11206
- }),
11207
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$InstructionRow, {
11208
- index: 2 + permissionsInstructionIndex,
11209
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Text, {
11210
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11211
- i18nKey: "recorder.instructions.videoSpeech",
11212
- children: [
11213
- "You can ",
11214
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Bold, {
11215
- children: "speak during"
11216
- }),
11217
- " the recording for added detail."
11218
- ]
11219
- })
11220
- })
11221
- }),
11222
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$InstructionRow, {
11223
- index: 3 + permissionsInstructionIndex,
11224
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Text, {
11225
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11226
- i18nKey: "recorder.instructions.tapStopVideoButton",
11227
- children: [
11228
- "When you're finished, tap the ",
11229
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $bec7bca3a7448591$export$c6a849fd9d9d93a2), {}),
11230
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Bold, {
11231
- children: " Stop button"
11232
- }),
11233
- "."
11234
- ]
11235
- })
11236
- })
11237
- }),
11238
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$InstructionRow, {
11239
- index: 4 + permissionsInstructionIndex,
11240
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Text, {
11241
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11242
- i18nKey: "recorder.instructions.reviewAndSendVideos",
11243
- children: [
11244
- "You can review your video and then ",
11245
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Bold, {
11246
- children: "send it when you're done"
11247
- }),
11248
- "."
11249
- ]
11250
- })
11251
- })
11252
- })
11253
- ]
11254
- }),
11255
- type === "screen" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reactjsxruntime.Fragment), {
11256
- children: [
11257
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$InstructionRow, {
11258
- index: 1 + permissionsInstructionIndex,
11259
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Text, {
11260
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11261
- i18nKey: "recorder.instructions.tapScreenShareButton",
11262
- children: [
11263
- "Tap on",
11264
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Bold, {
11265
- children: " Record my screen"
11266
- }),
11267
- " to start a recording."
11268
- ]
11269
- })
11270
- })
11271
- }),
11272
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$InstructionRow, {
11273
- index: 2 + permissionsInstructionIndex,
11274
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Text, {
11275
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11276
- i18nKey: "recorder.instructions.videoSpeech",
11277
- children: [
11278
- "You can ",
11279
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Bold, {
11280
- children: "speak during"
11281
- }),
11282
- " the recording for added detail."
11283
- ]
11284
- })
11285
- })
11286
- }),
11287
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$InstructionRow, {
11288
- index: 3 + permissionsInstructionIndex,
11289
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Text, {
11290
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11291
- i18nKey: "recorder.instructions.tapStopScreenShareButton",
11292
- children: [
11293
- "When you're finished, tap on ",
11294
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Bold, {
11295
- children: "Stop recording"
11296
- }),
11297
- "."
11298
- ]
11299
- })
11300
- })
11301
- }),
11302
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$InstructionRow, {
11303
- index: 4 + permissionsInstructionIndex,
11304
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Text, {
11305
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11306
- i18nKey: "recorder.instructions.reviewAnsSendScreenShare",
11307
- children: [
11308
- "You can review your video and then ",
11309
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($b46da51ab7ae33e7$var$Bold, {
11310
- children: "send it when you're done"
11311
- }),
11312
- "."
11313
- ]
11314
- })
11315
- })
11316
- })
11317
- ]
11318
- })
11319
- ]
11320
- })
11524
+ ]
11525
+ }, index))
11321
11526
  }),
11322
- permissionsState !== "refused" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11527
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11323
11528
  className: "flex items-center justify-center rounded-[8px] overflow-hidden",
11324
11529
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("video", {
11325
- src: `${"https://stream-assets.snapcall.io"}/animations/${device}-assist-onboarding-${videoType}-${videoLength}.mp4`,
11530
+ src: `${"https://stream-assets.snapcall.io"}/animations/${device}-assist-onboarding-${mode}-${videoLength}.mp4`,
11326
11531
  playsInline: true,
11327
11532
  autoPlay: true,
11328
11533
  muted: true,
@@ -11335,108 +11540,192 @@ const $b46da51ab7ae33e7$export$788cb893d96254c8 = ({ state: state , type: type
11335
11540
  };
11336
11541
 
11337
11542
 
11543
+ const $1b7ebf084d46efa9$export$cc010f6d61e5dce8 = (delta)=>{
11544
+ const d = [
11545
+ Math.floor(delta / 60),
11546
+ Math.round(delta % 60)
11547
+ ].map((n)=>`${n < 10 ? "0" : ""}${n}`);
11548
+ return d.join(":");
11549
+ };
11550
+ function $1b7ebf084d46efa9$export$3ae94a2503e890a1(date) {
11551
+ const dateFormat = new Intl.DateTimeFormat("default", {
11552
+ dateStyle: "short"
11553
+ });
11554
+ const timeFormat = new Intl.DateTimeFormat("default", {
11555
+ hour: "numeric",
11556
+ minute: "2-digit"
11557
+ });
11558
+ return `${dateFormat.format(date)} at ${timeFormat.format(date)}`;
11559
+ }
11338
11560
 
11339
11561
 
11340
11562
 
11341
11563
 
11342
11564
 
11343
-
11344
-
11345
-
11346
-
11347
- const $4dac51e936eb334f$export$f9d8408fefd786da = ({ state: state , setReady: setReady })=>{
11565
+ const $674454a6d2a40e95$var$browser = (0, ($parcel$interopDefault($jQDcL$bowser))).parse(window.navigator.userAgent);
11566
+ const $674454a6d2a40e95$export$5b8e641151f8011d = ({ recorderState: recorderState })=>{
11348
11567
  const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
11349
- const QRCodeRef = (0, $jQDcL$react.useRef)(null);
11350
- const { options: options } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
11351
- const [QRCodeContainerRef, { width: QRCodeContainerWidth }] = (0, $56e1e7a85d8bf4bb$export$e295b0c537d32d7d)();
11352
- (0, $jQDcL$react.useEffect)(()=>{
11353
- const url = options.sharedURL || window.location.href;
11354
- $jQDcL$qrcode.toCanvas(QRCodeRef.current, url, {
11355
- width: QRCodeContainerWidth > 300 ? 300 : QRCodeContainerWidth,
11356
- errorCorrectionLevel: "Q",
11357
- margin: 0
11568
+ const { selfPeerId: selfPeerId } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
11569
+ const getUserMediaMutation = (0, $f341dd104b321776$export$d791e41b9a4de1f2)({
11570
+ audio: true,
11571
+ video: true
11572
+ });
11573
+ const [countdownVisible, setCountdownVisible] = (0, $jQDcL$react.useState)(false);
11574
+ const videoElementRef = (0, $jQDcL$react.useRef)(null);
11575
+ const isDesktop = $674454a6d2a40e95$var$browser.platform.type === "desktop";
11576
+ const instructionModalState = (0, $jQDcL$reactstately.useOverlayTriggerState)({
11577
+ defaultOpen: !isDesktop
11578
+ });
11579
+ const [isInstructionVideoDisplayed, setInstructionVideoDisplayed] = (0, $jQDcL$react.useState)(false);
11580
+ const [isInstructionPhotoDisplayed, setInstructionPhotoDisplayed] = (0, $jQDcL$react.useState)(false);
11581
+ const qrCodeModalState = (0, $jQDcL$reactstately.useOverlayTriggerState)({
11582
+ defaultOpen: isDesktop
11583
+ });
11584
+ const [flashAnimation, setFlashAnimation] = (0, $jQDcL$react.useState)(false);
11585
+ const exitStreaming = (0, $jQDcL$react.useCallback)(()=>{
11586
+ setCountdownVisible(false);
11587
+ }, []);
11588
+ const onPhotoCapture = async (videoElement)=>{
11589
+ const timestamp = Date.now();
11590
+ recorderState.setAssetLoading(true);
11591
+ const image = await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).captureVideo(videoElement);
11592
+ const { url: url , assetId: assetId } = await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).saveCapture(image);
11593
+ recorderState.setAssetLoading(false);
11594
+ recorderState.setAssets([
11595
+ ...recorderState.assets,
11596
+ {
11597
+ type: "photo",
11598
+ timestamp: timestamp,
11599
+ objectUrl: url,
11600
+ assetId: assetId
11601
+ }
11602
+ ]);
11603
+ };
11604
+ const enableMedia = async ()=>{
11605
+ getUserMediaMutation.mutate(undefined, {
11606
+ onError: ()=>{
11607
+ recorderState.permissionBlockedModalState.setOpen(true);
11608
+ },
11609
+ onSettled: ()=>undefined,
11610
+ onSuccess: async ()=>{
11611
+ instructionModalState.close();
11612
+ const { deviceState: deviceState } = (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getState();
11613
+ getUserMediaMutation.reset();
11614
+ if (!deviceState.microphone.enabled) await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableMicrophone();
11615
+ if (!deviceState.camera.enabled) await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableVideo({
11616
+ resolution: "vga",
11617
+ frameRate: 20,
11618
+ facingMode: "environment"
11619
+ });
11620
+ }
11358
11621
  });
11622
+ };
11623
+ (0, $jQDcL$react.useEffect)(()=>{
11624
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("recordStopped", exitStreaming);
11625
+ return ()=>{
11626
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("recordStopped", exitStreaming);
11627
+ };
11359
11628
  }, [
11360
- QRCodeContainerWidth,
11361
- options.sharedURL
11629
+ exitStreaming
11362
11630
  ]);
11363
- return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $48c2553f62767e40$export$2b77a92f1a5ad772), {
11364
- centered: true,
11365
- title: t("recorder.switchToMobileTitle"),
11366
- description: t("recorder.switchToMobileDescription"),
11367
- isDismissable: false,
11368
- state: state,
11369
- primaryAction: ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $f98f91fb267f52c8$export$353f5b6fc5456de1), {
11370
- fullWidth: true,
11371
- onPress: ()=>{
11372
- setReady(true);
11373
- state.close();
11374
- },
11375
- children: t("recorder.useDesktopVersion")
11631
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11632
+ className: (0, ($parcel$interopDefault($jQDcL$classnames)))("bg-[#000] w-full h-full justify-center flex flex-col antialiased inter", {}),
11633
+ children: [
11634
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $47755bb1d707f6f6$export$788cb893d96254c8), {
11635
+ state: instructionModalState,
11636
+ mode: recorderState.mode,
11637
+ primaryAction: ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8a9710e5cd0f3440$export$353f5b6fc5456de1), {
11638
+ fullWidth: true,
11639
+ variant: "blue",
11640
+ isDisabled: !selfPeerId || getUserMediaMutation.isLoading,
11641
+ onPress: ()=>{
11642
+ if (!getUserMediaMutation.savedPermissions.audio) return enableMedia();
11643
+ instructionModalState.close();
11644
+ },
11645
+ children: !getUserMediaMutation?.savedPermissions.audio ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reactjsxruntime.Fragment), {
11646
+ children: [
11647
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $41e530447f5fd995$export$2e2bcd8739ae039), {}),
11648
+ t("recorder.allowCamMicAccess")
11649
+ ]
11650
+ }) : t("recorder.okay")
11651
+ })
11376
11652
  }),
11377
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11378
- className: "flex flex-col gap-[20px]",
11379
- children: [
11380
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11381
- ref: QRCodeContainerRef,
11382
- className: "flex flex-1 items-center justify-center relative",
11653
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $1edfa10ad1e88512$export$f9d8408fefd786da), {
11654
+ state: qrCodeModalState,
11655
+ onClose: instructionModalState.open
11656
+ }),
11657
+ (recorderState.mode === "video" || recorderState.streaming) && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11658
+ className: "text-base text-white text-center font-medium pt-2.5",
11659
+ children: (0, $1b7ebf084d46efa9$export$cc010f6d61e5dce8)(recorderState.timer)
11660
+ }),
11661
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11662
+ className: "flex-1 min-h-0 p-2.5 ",
11663
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11664
+ className: "relative w-full h-full rounded-[10px] ",
11383
11665
  children: [
11384
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11385
- className: "absolute w-1/3 h-1/3 max-w-[70px] max-h-[70px] flex items-center justify-center",
11386
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8745dbdbe55f5ff3$export$2e2bcd8739ae039), {})
11666
+ countdownVisible && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $9a3d89191e7070cd$export$53819c0e58f98d49), {
11667
+ initialValue: 3,
11668
+ onFinish: ()=>{
11669
+ setCountdownVisible(false);
11670
+ recorderState.setStartRecordTime(Date.now());
11671
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).startRecord().then(()=>{
11672
+ if (videoElementRef.current) recorderState.captureThumbnail(videoElementRef.current);
11673
+ });
11674
+ }
11387
11675
  }),
11388
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("canvas", {
11389
- ref: QRCodeRef
11676
+ flashAnimation && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $2c45d365ee8aa1ab$export$2b501aee548bae06), {
11677
+ onAnimationEnd: ()=>{
11678
+ setFlashAnimation(false);
11679
+ recorderState.assetsPopupState.open();
11680
+ }
11681
+ }),
11682
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $b758582ffbe79e9a$export$287f8fcc69caf433), {
11683
+ ref: videoElementRef
11390
11684
  })
11391
11685
  ]
11392
- }),
11393
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("p", {
11394
- className: "flex items-center justify-center text-xs text-primaryLight text-center",
11395
- children: t("recorder.scanQRCode")
11396
11686
  })
11397
- ]
11398
- })
11399
- });
11400
- };
11401
-
11402
-
11403
- function $d7eacc710221ffb1$export$fc3bf4634b488af8({ mode: mode }) {
11404
- const { orientation: orientation } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
11405
- const desktop = orientation === "landscape";
11406
- const [ready, setReady] = (0, $jQDcL$react.useState)(mode === "screen" || !desktop);
11407
- const [isInstructionsModalOpen, setIsInstructionsModalOpen] = (0, $jQDcL$react.useState)(ready);
11408
- const modalState = (0, $jQDcL$reactstately.useOverlayTriggerState)({
11409
- isOpen: isInstructionsModalOpen && ready,
11410
- onOpenChange: setIsInstructionsModalOpen
11411
- });
11412
- (0, $jQDcL$react.useEffect)(()=>{
11413
- setIsInstructionsModalOpen(true);
11414
- }, [
11415
- ready,
11416
- mode
11417
- ]);
11418
- return {
11419
- mode: mode,
11420
- modalState: modalState,
11421
- ready: ready,
11422
- setReady: setReady
11423
- };
11424
- }
11425
- const $d7eacc710221ffb1$export$bee10e8ab511933f = ({ state: state })=>{
11426
- const [isSwitchToMobileModalOpen, setIsSwitchToMobileOpen] = (0, $jQDcL$react.useState)(!state.ready);
11427
- const switchToMobileModalState = (0, $jQDcL$reactstately.useOverlayTriggerState)({
11428
- isOpen: isSwitchToMobileModalOpen,
11429
- onOpenChange: setIsSwitchToMobileOpen
11430
- });
11431
- return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reactjsxruntime.Fragment), {
11432
- children: [
11433
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $b46da51ab7ae33e7$export$788cb893d96254c8), {
11434
- state: state.modalState,
11435
- type: state.mode
11436
11687
  }),
11437
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $4dac51e936eb334f$export$f9d8408fefd786da), {
11438
- state: switchToMobileModalState,
11439
- setReady: state.setReady
11688
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11689
+ className: "flex justify-center px-2.5 pb-2.5 z-10",
11690
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $4f0bbf6285c74007$export$11a6fe490bbc4873), {
11691
+ state: recorderState,
11692
+ changeMode: (mode)=>{
11693
+ recorderState.setMode(mode);
11694
+ if (mode === "photo" && !isInstructionPhotoDisplayed) {
11695
+ setInstructionPhotoDisplayed(true);
11696
+ instructionModalState.open();
11697
+ }
11698
+ if (mode === "video" && !isInstructionVideoDisplayed) {
11699
+ setInstructionVideoDisplayed(true);
11700
+ instructionModalState.open();
11701
+ }
11702
+ },
11703
+ thumbnail: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8e2ec13f9d254ce9$export$1cd1efc78cb52ca5), {
11704
+ asset: recorderState.assets[recorderState.assets.length - 1],
11705
+ onClick: recorderState.assetsPopupState.open
11706
+ }),
11707
+ onSwitch: ()=>{
11708
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).rotateVideo();
11709
+ },
11710
+ onCapturePress: ()=>{
11711
+ if (recorderState.mode === "photo" && videoElementRef.current) {
11712
+ onPhotoCapture(videoElementRef.current);
11713
+ setFlashAnimation(true);
11714
+ }
11715
+ if (recorderState.mode !== "photo" && !recorderState.streaming) {
11716
+ recorderState.setStreaming(true);
11717
+ setCountdownVisible(true);
11718
+ }
11719
+ if (recorderState.mode !== "photo" && recorderState.streaming) {
11720
+ exitStreaming();
11721
+ if (recorderState.startRecordTime) {
11722
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).stopRecord();
11723
+ recorderState.setAssetLoading(true);
11724
+ recorderState.assetsPopupState.open();
11725
+ }
11726
+ }
11727
+ }
11728
+ })
11440
11729
  })
11441
11730
  ]
11442
11731
  });
@@ -11446,128 +11735,232 @@ const $d7eacc710221ffb1$export$bee10e8ab511933f = ({ state: state })=>{
11446
11735
 
11447
11736
 
11448
11737
 
11449
- const $a55fb1fbe863b99c$export$4e594bceac139abd = (props)=>{
11738
+
11739
+
11740
+
11741
+
11742
+
11743
+
11744
+
11745
+
11746
+
11747
+ const $62f98fb6dc42877d$var$Bold = ({ children: children })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
11748
+ className: "text-white font-medium",
11749
+ children: children
11750
+ });
11751
+ const $62f98fb6dc42877d$export$f361d4ae234b90f4 = ()=>{
11450
11752
  const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
11451
- return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11452
- className: (0, ($parcel$interopDefault($jQDcL$classnames)))("flex rounded-full h-[40px] p-[10px] border-2 border-white text-white justify-center items-center align-middle", "font-semibold", "cursor-pointer", {
11453
- "bg-[#f12828]": !props.state.streaming
11753
+ const instructions = [
11754
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11755
+ i18nKey: "recorder.instructions.tapVideoButton",
11756
+ children: [
11757
+ "Tap the ",
11758
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $bec7bca3a7448591$export$f9da3144ae2525a3), {
11759
+ sideColor: "#FFFFFF",
11760
+ mainColor: "#E5484D"
11761
+ }),
11762
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($62f98fb6dc42877d$var$Bold, {
11763
+ children: " Record button"
11764
+ }),
11765
+ " to start a recording."
11766
+ ]
11454
11767
  }),
11455
- onClick: ()=>props.onCapturePress(),
11456
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11457
- children: props.state.streaming ? t("recorder.stopScreenShareButton") : t("recorder.startScreenShareButton")
11768
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$reacti18next.Trans), {
11769
+ i18nKey: "recorder.instructions.screenShareInstruction"
11770
+ }),
11771
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11772
+ i18nKey: "recorder.instructions.videoSpeech",
11773
+ children: [
11774
+ "You can ",
11775
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($62f98fb6dc42877d$var$Bold, {
11776
+ children: "speak during"
11777
+ }),
11778
+ " the recording for added detail."
11779
+ ]
11780
+ }),
11781
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11782
+ i18nKey: "recorder.instructions.tapStopVideoButton",
11783
+ children: [
11784
+ "When you're finished, tap the ",
11785
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $bec7bca3a7448591$export$c6a849fd9d9d93a2), {
11786
+ sideColor: "#FFFFFF",
11787
+ mainColor: "#E5484D"
11788
+ }),
11789
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($62f98fb6dc42877d$var$Bold, {
11790
+ children: " Stop button"
11791
+ }),
11792
+ "."
11793
+ ]
11794
+ }),
11795
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reacti18next.Trans), {
11796
+ i18nKey: "recorder.instructions.reviewAndSendVideos",
11797
+ children: [
11798
+ "You can review your video and then ",
11799
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($62f98fb6dc42877d$var$Bold, {
11800
+ children: "send it when you're done"
11801
+ }),
11802
+ "."
11803
+ ]
11458
11804
  })
11459
- });
11460
- };
11461
- const $a55fb1fbe863b99c$export$f9da3144ae2525a3 = (props)=>{
11462
- return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11463
- className: (0, ($parcel$interopDefault($jQDcL$classnames)))("bg-white rounded-full w-[72px] h-[72px] p-[3px]"),
11464
- onClick: ()=>props.onCapturePress(),
11465
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11466
- className: "bg-primary rounded-full w-full h-full p-[3px] flex items-center justify-center cursor-pointer",
11467
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11468
- className: (0, ($parcel$interopDefault($jQDcL$classnames)))("w-full h-full transition-[transform,border-radius] duration-300", props.state.mode === "photo" ? "bg-white" : "bg-[#f12828]", props.state.streaming ? "rounded-[5px] scale-[0.4]" : "rounded-[60px]")
11805
+ ];
11806
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11807
+ className: "flex flex-row gap-[20px] w-full justify-between px-[60px]",
11808
+ children: [
11809
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11810
+ className: "flex flex-col gap-[10px] w-[50%] items-start justify-center",
11811
+ children: [
11812
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
11813
+ className: " text-white font-semibold text-lg pb-[20px]",
11814
+ children: t("recorder.screenTitle")
11815
+ }),
11816
+ instructions.map((value, index)=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11817
+ className: "flex flex-row items-center justify-center gap-[20px]",
11818
+ children: [
11819
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11820
+ className: "flex items-center justify-center min-w-[24px] h-[24px] rounded-[50%] bg-[#171717] text-white",
11821
+ children: index + 1
11822
+ }),
11823
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
11824
+ className: "w-full text-base text-white font-normal leading-[20px]",
11825
+ children: value
11826
+ })
11827
+ ]
11828
+ }, index))
11829
+ ]
11830
+ }),
11831
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11832
+ className: "flex items-center justify-center overflow-hidden w-[50%] box-border",
11833
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("video", {
11834
+ src: `${"https://stream-assets.snapcall.io"}/animations/desktop-assist-onboarding-screen.mp4`,
11835
+ playsInline: true,
11836
+ autoPlay: true,
11837
+ muted: true,
11838
+ loop: true,
11839
+ className: "object-fit border-[white] border-[2px] rounded-[8px]"
11840
+ })
11469
11841
  })
11470
- })
11842
+ ]
11471
11843
  });
11472
11844
  };
11473
11845
 
11474
11846
 
11475
- function $6f223c293b335d40$export$bd7b6af6aa16550c({ state: state = "photo" }) {
11476
- const [currentMode, setMode] = (0, $jQDcL$react.useState)(state);
11477
- const [streaming, setStreaming] = (0, $jQDcL$react.useState)(false);
11478
- return {
11479
- mode: currentMode,
11480
- setMode: (mode)=>{
11481
- setMode(mode);
11482
- },
11483
- streaming: streaming,
11484
- setStreaming: setStreaming
11485
- };
11486
- }
11487
- const $6f223c293b335d40$export$11a6fe490bbc4873 = (props)=>{
11847
+ const $1be61d90bb5f5865$export$2d78fbe400238869 = ({ recorderState: recorderState })=>{
11848
+ const videoElementRef = (0, $jQDcL$react.useRef)(null);
11488
11849
  const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
11489
- const setupModalsState = (0, $d7eacc710221ffb1$export$fc3bf4634b488af8)({
11490
- mode: props.state.mode
11850
+ const getUserMediaMutation = (0, $f341dd104b321776$export$d791e41b9a4de1f2)({
11851
+ audio: true
11491
11852
  });
11853
+ const [state, setState] = (0, $jQDcL$react.useState)("base");
11854
+ (0, $jQDcL$react.useEffect)(()=>{
11855
+ if (recorderState.mode !== "video") recorderState.setMode("video");
11856
+ }, [
11857
+ recorderState
11858
+ ]);
11859
+ const screenshareDisabled = (0, $jQDcL$react.useCallback)(()=>{
11860
+ recorderState.assetsPopupState.setOpen(true);
11861
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).stopRecord();
11862
+ setState("base");
11863
+ }, [
11864
+ recorderState
11865
+ ]);
11866
+ (0, $jQDcL$react.useEffect)(()=>{
11867
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("screenshareDisabled", screenshareDisabled);
11868
+ return ()=>{
11869
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("screenshareDisabled", screenshareDisabled);
11870
+ };
11871
+ }, [
11872
+ screenshareDisabled
11873
+ ]);
11874
+ (0, $jQDcL$react.useEffect)(()=>{
11875
+ const onStopRecord = ()=>{
11876
+ recorderState.assetsPopupState.setOpen(true);
11877
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).disableScreenshare();
11878
+ setState("base");
11879
+ };
11880
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("recordStopped", onStopRecord);
11881
+ return ()=>{
11882
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("recordStopped", onStopRecord);
11883
+ };
11884
+ }, [
11885
+ recorderState.assetsPopupState
11886
+ ]);
11492
11887
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11493
- className: "flex flex-col bg-primary h-[150px] w-full max-w-[500px] rounded-[15px] p-2.5 gap-2.5",
11888
+ className: "w-full h-full bg-black flex flex-col items-center justify-center py-[125px]",
11494
11889
  children: [
11495
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $d7eacc710221ffb1$export$bee10e8ab511933f), {
11496
- state: setupModalsState
11497
- }),
11498
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11499
- className: "flex flex-1 flex-row px-[10px] w-full",
11890
+ state !== "live" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11891
+ className: "relative bg-cover box-border rounded-[8px] w-full h-full max-w-[1116px] bg-[url('https://cdn.snapcall.io/img/assist/gradient-bg.jpg')] flex flex-col items-center justify-center ",
11500
11892
  children: [
11893
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $62f98fb6dc42877d$export$f361d4ae234b90f4), {}),
11501
11894
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11502
- className: "flex flex-row flex-auto items-center gap-[10px]",
11895
+ className: "absolute w-[486px] bottom-[-85px] left-[calc(50%-243px)] flex flex-col gap-[7px] items-center justify-center",
11503
11896
  children: [
11504
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $6d8b37b4bd2444ef$export$3741e4ac43f04ca2), {}),
11505
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11506
- className: " text-white text-base font-medium",
11507
- children: "SnapCall"
11508
- })
11509
- ]
11510
- }),
11511
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11512
- className: "flex flex-row justify-end flex-auto items-center gap-[10px] ",
11513
- children: [
11514
- props.state.mode !== "screen" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reactjsxruntime.Fragment), {
11515
- children: [
11516
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $6e29654b44f114e1$export$d2b052e7b4be1756), {
11517
- onPress: ()=>{
11518
- if (!props.state.streaming) {
11519
- props.state.setMode("photo");
11520
- setupModalsState.modalState.open();
11521
- }
11897
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $9999b4145d63cb7f$export$4e594bceac139abd), {
11898
+ state: state,
11899
+ onCapturePress: ()=>{
11900
+ setState("request");
11901
+ recorderState.setStreaming(true);
11902
+ getUserMediaMutation.mutate(undefined, {
11903
+ onError: ()=>{
11904
+ recorderState.permissionBlockedModalState.setOpen(true);
11522
11905
  },
11523
- isSelected: props.state.mode === "photo",
11524
- children: t("misc.photo")
11525
- }),
11526
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $6e29654b44f114e1$export$d2b052e7b4be1756), {
11527
- onPress: ()=>{
11528
- if (!props.state.streaming) {
11529
- props.state.setMode("video");
11530
- setupModalsState.modalState.open();
11906
+ onSuccess: async ()=>{
11907
+ try {
11908
+ const { deviceState: deviceState } = (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getState();
11909
+ getUserMediaMutation.reset();
11910
+ if (!deviceState.microphone.enabled) await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableMicrophone();
11911
+ await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableScreenshare({
11912
+ audioTransportOption: "mix"
11913
+ });
11914
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).startRecord().then(()=>{
11915
+ setTimeout(()=>{
11916
+ if (videoElementRef.current) recorderState.captureThumbnail(videoElementRef.current);
11917
+ }, 1000);
11918
+ });
11919
+ setState("live");
11920
+ recorderState.setStartRecordTime(Date.now());
11921
+ } catch (err) {
11922
+ console.log(err);
11923
+ recorderState.permissionBlockedModalState.setOpen(true);
11531
11924
  }
11532
- },
11533
- isSelected: props.state.mode === "video",
11534
- children: t("misc.video")
11535
- })
11536
- ]
11925
+ }
11926
+ });
11927
+ }
11537
11928
  }),
11538
- props.state.mode === "screen" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $6e29654b44f114e1$export$d2b052e7b4be1756), {
11539
- onPress: ()=>{
11540
- if (!props.state.streaming) {
11541
- props.state.setMode("screen");
11542
- setupModalsState.modalState.open();
11543
- }
11544
- },
11545
- isSelected: props.state.mode === "screen",
11546
- children: t("misc.screen")
11929
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
11930
+ className: "text-white text-center font-small text-sm overflow-visible",
11931
+ children: t("recorder.limit")
11547
11932
  })
11548
11933
  ]
11549
11934
  })
11550
11935
  ]
11551
11936
  }),
11552
11937
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11553
- className: "flex flex-row flex-1 items-center justify-between w-full ",
11938
+ className: (0, ($parcel$interopDefault($jQDcL$classnames)))("relative", {
11939
+ "w-0 h-0": state !== "live",
11940
+ "min-w-[200px] max-h-[100%]": state === "live"
11941
+ }),
11554
11942
  children: [
11555
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11556
- className: "w-[60px] h-[60px]",
11557
- children: props.thumbnail
11558
- }),
11559
- props.state.mode === "screen" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $a55fb1fbe863b99c$export$4e594bceac139abd), {
11560
- ...props
11943
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $b758582ffbe79e9a$export$8c410456846722ea), {
11944
+ ref: videoElementRef
11561
11945
  }),
11562
- props.state.mode !== "screen" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $a55fb1fbe863b99c$export$f9da3144ae2525a3), {
11563
- ...props
11564
- }),
11565
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11566
- onClick: props.onSwitch,
11567
- className: (0, ($parcel$interopDefault($jQDcL$classnames)))("rounded-full w-[56px] h-[56px] flex items-center justify-center", {
11568
- "bg-[#565656] cursor-pointer": props.state.mode !== "screen"
11569
- }),
11570
- children: props.state.mode !== "screen" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $ec8eb252693ca260$export$aefffb14595958fe), {})
11946
+ state === "live" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11947
+ className: "absolute w-[86px] h-[86px] bottom-[-65px] left-[calc(50%-43px)]",
11948
+ children: [
11949
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $9999b4145d63cb7f$export$4e594bceac139abd), {
11950
+ onCapturePress: ()=>{
11951
+ recorderState.setAssetLoading(true);
11952
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).disableScreenshare();
11953
+ },
11954
+ state: state
11955
+ }),
11956
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("span", {
11957
+ className: "text-white font-small text-sm text-center pt-[14px]",
11958
+ children: [
11959
+ (0, $1b7ebf084d46efa9$export$cc010f6d61e5dce8)(recorderState.timer),
11960
+ " / 05:00"
11961
+ ]
11962
+ })
11963
+ ]
11571
11964
  })
11572
11965
  ]
11573
11966
  })
@@ -11581,6 +11974,34 @@ const $6f223c293b335d40$export$11a6fe490bbc4873 = (props)=>{
11581
11974
 
11582
11975
 
11583
11976
 
11977
+ const $2256a219b427127c$export$c31ece446899894 = ({ state: state })=>{
11978
+ const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
11979
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $34b61dca272e1b9a$export$2b77a92f1a5ad772), {
11980
+ title: t("recorder.permissionDeniedTitle"),
11981
+ state: state,
11982
+ centered: false,
11983
+ isDismissable: false,
11984
+ primaryAction: ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8a9710e5cd0f3440$export$353f5b6fc5456de1), {
11985
+ variant: "blue",
11986
+ fullWidth: true,
11987
+ onPress: ()=>window.location.reload(),
11988
+ children: t("recorder.allowAccess")
11989
+ }),
11990
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11991
+ className: "flex flex-col gap-[20px]",
11992
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11993
+ className: "flex flex-col gap-[10px]",
11994
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
11995
+ className: "w-full text-base text-primaryLight font-normal leading-[20px]",
11996
+ children: t("recorder.permissionDeniedDescription")
11997
+ })
11998
+ })
11999
+ })
12000
+ });
12001
+ };
12002
+
12003
+
12004
+
11584
12005
 
11585
12006
 
11586
12007
 
@@ -11588,7 +12009,12 @@ const $6f223c293b335d40$export$11a6fe490bbc4873 = (props)=>{
11588
12009
 
11589
12010
 
11590
12011
 
11591
- function $14fb55a0ce44e022$export$4589ed81930b555c(props) {
12012
+
12013
+
12014
+
12015
+
12016
+
12017
+ function $d18f0aac05a3d3a7$export$4589ed81930b555c(props) {
11592
12018
  const { children: children , state: state } = props;
11593
12019
  const ref = (0, ($parcel$interopDefault($jQDcL$react))).useRef(null);
11594
12020
  const { orientation: orientation } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
@@ -11596,7 +12022,7 @@ function $14fb55a0ce44e022$export$4589ed81930b555c(props) {
11596
12022
  const [exited, setExited] = (0, $jQDcL$react.useState)(!state.isOpen);
11597
12023
  const viewport = (0, $jQDcL$reactariautils.useViewportSize)();
11598
12024
  const maxHeight = viewport.height - 64;
11599
- const desktop = orientation === "landscape";
12025
+ const [desktop] = (0, $jQDcL$react.useState)(orientation === "landscape");
11600
12026
  // Don't render anything if the modal is not open and we're not animating out.
11601
12027
  if (!(state.isOpen || !exited)) return null;
11602
12028
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$reactariaoverlays.Overlay), {
@@ -11615,7 +12041,7 @@ function $14fb55a0ce44e022$export$4589ed81930b555c(props) {
11615
12041
  exit: "opacity-0 transition ease-out"
11616
12042
  },
11617
12043
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11618
- className: (0, ($parcel$interopDefault($jQDcL$classnames)))("fixed z-[100] inset-0 bg-underlay flex justify-center inter", desktop ? "items-center" : "items-end"),
12044
+ className: (0, ($parcel$interopDefault($jQDcL$classnames)))("fixed z-[100] inset-0 bg-underlay flex justify-center inter", desktop ? "items-center" : "items-end h-full"),
11619
12045
  ...underlayProps,
11620
12046
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$reacttransitiongroup.CSSTransition), {
11621
12047
  in: state.isOpen,
@@ -11657,49 +12083,6 @@ function $14fb55a0ce44e022$export$4589ed81930b555c(props) {
11657
12083
 
11658
12084
 
11659
12085
 
11660
- const $f4dfc8739f142557$export$480db61f4dcd7727 = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
11661
- width: "12",
11662
- height: "15",
11663
- viewBox: "0 0 12 15",
11664
- fill: "none",
11665
- xmlns: "http://www.w3.org/2000/svg",
11666
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
11667
- d: "M11.103 5.747 2.677.272A1.614 1.614 0 0 0 1.773 0a1.62 1.62 0 0 0-.9.288 1.886 1.886 0 0 0-.64.733A2.235 2.235 0 0 0 0 2.025v10.95c0 .352.08.699.233 1.004.154.305.375.558.64.733.273.186.584.285.9.288.317.003.63-.091.904-.272l8.426-5.475c.272-.173.498-.427.656-.736.158-.308.241-.66.241-1.017a2.24 2.24 0 0 0-.24-1.017 1.884 1.884 0 0 0-.657-.736Z",
11668
- fill: "#fff"
11669
- })
11670
- });
11671
-
11672
-
11673
- const $dc46069ab394f8fc$export$1cd1efc78cb52ca5 = ({ asset: asset , onClick: onClick })=>{
11674
- if (!asset) return null;
11675
- return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11676
- className: "flex items-center justify-center w-[60px] h-[60px] rounded-[8px] cursor-pointer bg-white relative overflow-hidden",
11677
- onClick: onClick,
11678
- children: [
11679
- asset?.type === "picture" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("img", {
11680
- className: "cursor-pointer bg-white",
11681
- src: asset.objectUrl,
11682
- alt: "last shot"
11683
- }),
11684
- asset?.type === "video" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reactjsxruntime.Fragment), {
11685
- children: [
11686
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("video", {
11687
- src: asset.objectUrl,
11688
- className: "min-w-[100%] min-h-[100%] object-cover"
11689
- }),
11690
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11691
- className: "absolute left-0 top-0 flex items-center justify-center w-[60px] h-[60px] bg-primary opacity-50",
11692
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $f4dfc8739f142557$export$480db61f4dcd7727), {})
11693
- })
11694
- ]
11695
- })
11696
- ]
11697
- });
11698
- };
11699
-
11700
-
11701
-
11702
-
11703
12086
  const $b0f41bfff6a6128d$export$28e1ba20e0688eb7 = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
11704
12087
  width: "18",
11705
12088
  height: "19",
@@ -11716,40 +12099,30 @@ const $b0f41bfff6a6128d$export$28e1ba20e0688eb7 = ()=>/*#__PURE__*/ (0, $jQDcL$r
11716
12099
 
11717
12100
 
11718
12101
 
11719
- const $af5bf6f1b1afdb63$export$f56b3b5841ad32ae = ({ asset: asset , state: state })=>{
11720
- return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $6fa093aef38ba660$export$a703eb468fcf7e69), {
12102
+ const $73f0764a988d9270$export$f56b3b5841ad32ae = ({ asset: asset , state: state })=>{
12103
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $1ee478167b5d0914$export$a703eb468fcf7e69), {
11721
12104
  state: state,
11722
12105
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11723
- className: "flex flex-col items-center w-screen h-screen p-[15px] gap-[10px]",
12106
+ className: "flex flex-col items-center justify-center w-screen h-screen p-[15px] gap-[10px]",
11724
12107
  children: [
11725
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11726
- className: "flex items-center max-w-[400px] w-full h-full",
11727
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11728
- className: "min-w-full rounded-[10px] overflow-hidden",
11729
- children: [
11730
- asset.type === "picture" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("img", {
11731
- src: asset.objectUrl,
11732
- alt: `Asset-${asset.assetId}`,
11733
- className: "object-fill"
11734
- }),
11735
- asset.type === "video" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("video", {
11736
- src: asset.objectUrl,
11737
- playsInline: true,
11738
- autoPlay: true,
11739
- controls: true
11740
- })
11741
- ]
11742
- })
12108
+ asset.type === "photo" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("img", {
12109
+ src: asset.objectUrl,
12110
+ alt: `Asset-${asset.assetId}`,
12111
+ className: "flex-1 object-cover rounded-[10px] max-h-[90%] max-w-[90%] mb-[9px]"
12112
+ }),
12113
+ asset.type === "video" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("video", {
12114
+ src: asset.objectUrl,
12115
+ playsInline: true,
12116
+ autoPlay: true,
12117
+ controls: true,
12118
+ className: "flex-1 rounded-[10px] min-w-full max-h-[90%] max-w-[90%] pb-[9px]"
11743
12119
  }),
11744
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11745
- className: "max-w-[135px] w-1/3",
11746
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $f98f91fb267f52c8$export$353f5b6fc5456de1), {
11747
- onPress: state.close,
11748
- variant: "tertiary",
11749
- size: "large",
11750
- fullWidth: true,
11751
- children: "Close"
11752
- })
12120
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8a9710e5cd0f3440$export$353f5b6fc5456de1), {
12121
+ onPress: state.close,
12122
+ variant: "tertiary",
12123
+ size: "large",
12124
+ className: "w-[135px]",
12125
+ children: "Close"
11753
12126
  })
11754
12127
  ]
11755
12128
  })
@@ -11757,20 +12130,23 @@ const $af5bf6f1b1afdb63$export$f56b3b5841ad32ae = ({ asset: asset , state: state
11757
12130
  };
11758
12131
 
11759
12132
 
11760
- const $1571ff3dce984dbd$export$c9169049516d8bcf = ({ asset: asset , index: index , removeAsset: removeAsset })=>{
12133
+
12134
+ const $30551f17e9f1f660$export$c9169049516d8bcf = ({ asset: asset , index: index , removeAsset: removeAsset })=>{
11761
12135
  const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
11762
12136
  const confirmRemovalModalState = (0, $jQDcL$reactstately.useOverlayTriggerState)({});
11763
12137
  const previewAssetModalProps = (0, $jQDcL$reactstately.useOverlayTriggerState)({});
11764
12138
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11765
- className: "flex flex-row justify-between items-center",
12139
+ className: "flex flex-row justify-between items-center ",
11766
12140
  children: [
11767
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $48c2553f62767e40$export$2b77a92f1a5ad772), {
12141
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $34b61dca272e1b9a$export$2b77a92f1a5ad772), {
11768
12142
  title: t("recorder.confirmRemovalTitle"),
11769
12143
  state: confirmRemovalModalState,
11770
12144
  description: t("recorder.confirmRemovalDescription"),
11771
- primaryAction: ({ close: close })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $f98f91fb267f52c8$export$353f5b6fc5456de1), {
12145
+ primaryAction: ({ close: close })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $8a9710e5cd0f3440$export$353f5b6fc5456de1), {
12146
+ fullWidth: true,
12147
+ variant: "blue",
11772
12148
  onPress: async ()=>{
11773
- await removeAsset(asset);
12149
+ await removeAsset?.(asset);
11774
12150
  close();
11775
12151
  },
11776
12152
  children: [
@@ -11778,16 +12154,20 @@ const $1571ff3dce984dbd$export$c9169049516d8bcf = ({ asset: asset , index: index
11778
12154
  t("misc.confirm")
11779
12155
  ]
11780
12156
  }),
11781
- secondaryAction: t("misc.cancel")
12157
+ secondaryAction: ({ close: close })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8a9710e5cd0f3440$export$353f5b6fc5456de1), {
12158
+ fullWidth: true,
12159
+ variant: "tertiary",
12160
+ children: t("misc.cancel")
12161
+ })
11782
12162
  }),
11783
12163
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11784
- className: "flex flex-row gap-[10px] items-center",
12164
+ className: "flex flex-row gap-[10px] items-center justify-between",
11785
12165
  children: [
11786
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $af5bf6f1b1afdb63$export$f56b3b5841ad32ae), {
12166
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $73f0764a988d9270$export$f56b3b5841ad32ae), {
11787
12167
  state: previewAssetModalProps,
11788
12168
  asset: asset
11789
12169
  }),
11790
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $dc46069ab394f8fc$export$1cd1efc78cb52ca5), {
12170
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8e2ec13f9d254ce9$export$1cd1efc78cb52ca5), {
11791
12171
  asset: asset,
11792
12172
  onClick: previewAssetModalProps.open
11793
12173
  }),
@@ -11797,17 +12177,17 @@ const $1571ff3dce984dbd$export$c9169049516d8bcf = ({ asset: asset , index: index
11797
12177
  hyphens: "manual"
11798
12178
  },
11799
12179
  children: [
11800
- asset.type === "picture" ? t("misc.photo") : t("misc.video"),
12180
+ asset.type === "photo" ? t("misc.photo") : t("misc.video"),
11801
12181
  " ",
11802
12182
  index + 1,
11803
12183
  " \xb7",
11804
12184
  " ",
11805
- (0, $7925c01e7577d264$export$3ae94a2503e890a1)(new Date(asset.timestamp))
12185
+ (0, $1b7ebf084d46efa9$export$3ae94a2503e890a1)(new Date(asset.timestamp))
11806
12186
  ]
11807
12187
  })
11808
12188
  ]
11809
12189
  }),
11810
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
12190
+ removeAsset && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
11811
12191
  className: "text-xs font-bold underline cursor-pointer ml-[10px]",
11812
12192
  onClick: confirmRemovalModalState.open,
11813
12193
  children: t("misc.remove")
@@ -11819,7 +12199,7 @@ const $1571ff3dce984dbd$export$c9169049516d8bcf = ({ asset: asset , index: index
11819
12199
 
11820
12200
 
11821
12201
 
11822
- const $aaab1e39040d455b$export$4fa52f68b1c78fbf = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
12202
+ const $30be7d469592d2e5$export$4fa52f68b1c78fbf = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11823
12203
  className: "w-screen max-w-[400px] h-[235px] px-[20px] py-[25px] gap-[10px]",
11824
12204
  children: [
11825
12205
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
@@ -11827,7 +12207,7 @@ const $aaab1e39040d455b$export$4fa52f68b1c78fbf = ()=>/*#__PURE__*/ (0, $jQDcL$r
11827
12207
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, ($parcel$interopDefault($jQDcL$reactcontentloader))), {
11828
12208
  width: 360,
11829
12209
  height: 93,
11830
- foregroundColor: "#EBEBEB",
12210
+ foregroundColor: "#C7DEFF",
11831
12211
  children: [
11832
12212
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("rect", {
11833
12213
  x: 0,
@@ -11857,11 +12237,11 @@ const $aaab1e39040d455b$export$4fa52f68b1c78fbf = ()=>/*#__PURE__*/ (0, $jQDcL$r
11857
12237
  })
11858
12238
  }),
11859
12239
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11860
- className: "flex items-center justify-center w-full h-[40px] rounded-[8px] border border-primaryLight mt-[10px]",
12240
+ className: "flex items-center justify-center w-full h-[40px] rounded-[8px] bg-[#F7F7F7] mt-[10px]",
11861
12241
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, ($parcel$interopDefault($jQDcL$reactcontentloader))), {
11862
12242
  width: 120,
11863
12243
  height: 14,
11864
- foregroundColor: "#EBEBEB",
12244
+ foregroundColor: "#C7DEFF",
11865
12245
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("rect", {
11866
12246
  x: 0,
11867
12247
  y: 0,
@@ -11873,11 +12253,11 @@ const $aaab1e39040d455b$export$4fa52f68b1c78fbf = ()=>/*#__PURE__*/ (0, $jQDcL$r
11873
12253
  })
11874
12254
  }),
11875
12255
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11876
- className: "flex items-center justify-center w-full h-[40px] rounded-[8px] bg-primary mt-[10px]",
12256
+ className: "flex items-center justify-center w-full h-[40px] rounded-[8px] bg-[#C7DEFF] mt-[10px]",
11877
12257
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, ($parcel$interopDefault($jQDcL$reactcontentloader))), {
11878
12258
  width: 120,
11879
12259
  height: 14,
11880
- foregroundColor: "#EBEBEB",
12260
+ foregroundColor: "#C7DEFF",
11881
12261
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("rect", {
11882
12262
  x: 0,
11883
12263
  y: 0,
@@ -11892,35 +12272,28 @@ const $aaab1e39040d455b$export$4fa52f68b1c78fbf = ()=>/*#__PURE__*/ (0, $jQDcL$r
11892
12272
  });
11893
12273
 
11894
12274
 
11895
- const $0bca8bbbf74ddff9$export$5c334f209b1aa661 = ({ assets: assets , state: state , onSendAssets: onSendAssets , removeAsset: removeAsset , loading: loading })=>{
12275
+ const $d83aaaf1128cb8b7$export$5c334f209b1aa661 = ({ assets: assets , state: state , onSendAssets: onSendAssets , removeAsset: removeAsset , loading: loading , recorderState: recorderState })=>{
11896
12276
  const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
11897
- const ref = (0, $jQDcL$react.useRef)(null);
11898
- const [assetKind, setAssetKind] = (0, $jQDcL$react.useState)(assets[assets.length - 1]?.type === "picture" ? "photo" : "video");
11899
12277
  const { orientation: orientation } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
11900
- const desktop = orientation === "landscape";
11901
- (0, $jQDcL$react.useEffect)(()=>{
11902
- if (assets.length < 1) return;
11903
- setAssetKind(assets[assets.length - 1]?.type === "picture" ? "photo" : "video");
11904
- }, [
11905
- assets
11906
- ]);
11907
- return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reactjsxruntime.Fragment), {
11908
- children: [
11909
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$reacttransitiongroup.CSSTransition), {
11910
- in: state.isOpen,
11911
- appear: true,
11912
- timeout: {
11913
- enter: 0,
11914
- exit: 300
11915
- },
11916
- classNames: {
11917
- enter: "opacity-0",
11918
- enterDone: "opacity-90 transition ease-in",
11919
- exit: "opacity-0 transition ease-out"
11920
- },
11921
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11922
- className: (0, ($parcel$interopDefault($jQDcL$classnames)))("fixed justify-center w-screen h-screen top-0 left-0 bg-black z-[1]", state.isOpen ? "flex" : "hidden"),
11923
- children: loading && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
12278
+ const [desktop] = (0, $jQDcL$react.useState)(orientation === "landscape");
12279
+ const mode = recorderState.mode;
12280
+ const assetTitle = mode === "photo" ? t("misc.photo") : t("misc.video");
12281
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$reactjsxruntime.Fragment), {
12282
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$reacttransitiongroup.CSSTransition), {
12283
+ in: state.isOpen,
12284
+ timeout: {
12285
+ enter: 0,
12286
+ exit: 300
12287
+ },
12288
+ classNames: {
12289
+ enter: "opacity-0",
12290
+ enterDone: "opacity-90 transition ease-in",
12291
+ exit: "opacity-0 transition ease-out"
12292
+ },
12293
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
12294
+ className: (0, ($parcel$interopDefault($jQDcL$classnames)))("fixed justify-center w-screen h-screen top-0 left-0 bg-black z-[1]", state.isOpen ? "flex" : "hidden"),
12295
+ children: [
12296
+ loading && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11924
12297
  className: (0, ($parcel$interopDefault($jQDcL$classnames)))("flex mt-[50px] h-fit opacity-1", desktop ? "flex-row items-center w-[450px]" : "flex-col items-center text-center w-[320px]"),
11925
12298
  children: [
11926
12299
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
@@ -11931,74 +12304,75 @@ const $0bca8bbbf74ddff9$export$5c334f209b1aa661 = ({ assets: assets , state: sta
11931
12304
  className: "text-sm text-white",
11932
12305
  children: [
11933
12306
  t("recorder.elementBeingProcessed", {
11934
- type: loading === "picture" ? t("misc.photo").toLocaleLowerCase() : t("misc.video").toLocaleLowerCase()
12307
+ type: assetTitle.toLocaleLowerCase()
11935
12308
  }),
11936
- loading === "video" && t("recorder.waitVideo")
12309
+ " ",
12310
+ mode === "video" && t("recorder.waitVideo")
11937
12311
  ]
11938
12312
  })
11939
12313
  ]
11940
- })
11941
- })
11942
- }),
11943
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $14fb55a0ce44e022$export$4589ed81930b555c), {
11944
- state: {
11945
- ...state,
11946
- close: loading ? ()=>{} : state.close
11947
- },
11948
- children: loading ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $aaab1e39040d455b$export$4fa52f68b1c78fbf), {}) : /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11949
- ref: ref,
11950
- className: "flex flex-col w-screen max-w-[400px] text-primary",
11951
- children: [
11952
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11953
- className: "flex flex-row justify-between p-[12px]",
11954
- children: [
11955
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("h1", {
11956
- className: "text-lg first-letter:capitalize",
11957
- children: t("recorder.elementCaptureSuccess", {
11958
- type: t(`misc.${assetKind}`)
11959
- })
11960
- }),
11961
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
11962
- className: "flex justify-center items-center rounded-full bg-[#f3f3f3] h-[30px] w-[30px] cursor-pointer",
11963
- onClick: state.close,
11964
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $6f36db3b1217f099$export$2e2bcd8739ae039), {
11965
- color: "#565656"
11966
- })
11967
- })
11968
- ]
11969
- }),
11970
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
11971
- className: "flex flex-col px-[20px] pb-[25px] gap-[10px]",
12314
+ }),
12315
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $d18f0aac05a3d3a7$export$4589ed81930b555c), {
12316
+ state: {
12317
+ ...state,
12318
+ close: loading ? ()=>{} : state.close
12319
+ },
12320
+ children: loading ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $30be7d469592d2e5$export$4fa52f68b1c78fbf), {}) : /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
12321
+ className: "flex flex-col max-w-[400px] text-primary",
11972
12322
  children: [
11973
- assets.map((asset, index)=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $1571ff3dce984dbd$export$c9169049516d8bcf), {
11974
- asset: asset,
11975
- index: index,
11976
- removeAsset: removeAsset
11977
- }, asset.assetId)),
11978
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $f98f91fb267f52c8$export$353f5b6fc5456de1), {
11979
- variant: "secondary",
11980
- onPress: state.close,
11981
- children: t("recorder.takeNewElement", {
11982
- type: t(`misc.${assetKind}`).toLocaleLowerCase()
11983
- })
12323
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
12324
+ className: "flex flex-row justify-between p-[12px]",
12325
+ children: [
12326
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("h1", {
12327
+ className: "text-lg first-letter:capitalize",
12328
+ children: t("recorder.elementCaptureSuccess", {
12329
+ type: assetTitle
12330
+ })
12331
+ }),
12332
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
12333
+ className: "flex justify-center items-center rounded-full bg-[#f3f3f3] h-[30px] w-[30px] cursor-pointer",
12334
+ onClick: state.close,
12335
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $6f36db3b1217f099$export$2e2bcd8739ae039), {
12336
+ color: "#565656"
12337
+ })
12338
+ })
12339
+ ]
11984
12340
  }),
11985
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $f98f91fb267f52c8$export$353f5b6fc5456de1), {
11986
- onPress: ()=>{
11987
- onSendAssets();
11988
- state.close();
11989
- },
11990
- children: assets.length > 1 ? t("recorder.sendElements", {
11991
- count: assets.length
11992
- }) : t("recorder.sendElement", {
11993
- type: t(`misc.${assetKind}`).toLocaleLowerCase()
11994
- })
12341
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
12342
+ className: "flex flex-col px-[20px] pb-[25px] gap-[10px]",
12343
+ children: [
12344
+ assets.map((asset, index)=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $30551f17e9f1f660$export$c9169049516d8bcf), {
12345
+ asset: asset,
12346
+ index: index,
12347
+ removeAsset: removeAsset
12348
+ }, asset.assetId)),
12349
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8a9710e5cd0f3440$export$353f5b6fc5456de1), {
12350
+ variant: "tertiary",
12351
+ onPress: state.close,
12352
+ children: t("recorder.takeNewElement", {
12353
+ type: assetTitle.toLocaleLowerCase()
12354
+ })
12355
+ }),
12356
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8a9710e5cd0f3440$export$353f5b6fc5456de1), {
12357
+ variant: "blue",
12358
+ onPress: ()=>{
12359
+ onSendAssets();
12360
+ state.close();
12361
+ },
12362
+ children: assets.length > 1 ? t("recorder.sendElements", {
12363
+ count: assets.length
12364
+ }) : t("recorder.sendElement", {
12365
+ type: assetTitle.toLocaleLowerCase()
12366
+ })
12367
+ })
12368
+ ]
11995
12369
  })
11996
12370
  ]
11997
12371
  })
11998
- ]
11999
- })
12372
+ })
12373
+ ]
12000
12374
  })
12001
- ]
12375
+ })
12002
12376
  });
12003
12377
  };
12004
12378
 
@@ -12007,118 +12381,35 @@ const $0bca8bbbf74ddff9$export$5c334f209b1aa661 = ({ assets: assets , state: sta
12007
12381
 
12008
12382
 
12009
12383
 
12010
-
12011
- const $47dee8347993fb81$export$53819c0e58f98d49 = (props)=>{
12012
- const [countdown, setCountdown] = (0, $jQDcL$react.useState)(props.initialValue);
12013
- (0, $jQDcL$react.useEffect)(()=>{
12014
- if (countdown === undefined) return;
12015
- const t = setTimeout(()=>{
12016
- if (countdown === 1) props.onFinish();
12017
- setCountdown(countdown - 1);
12018
- }, 1000);
12019
- return ()=>clearTimeout(t);
12020
- }, [
12021
- countdown,
12022
- props
12023
- ]);
12024
- return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
12025
- className: "absolute w-full h-full flex justify-center items-center bg-black/[.6] z-50",
12026
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
12027
- className: "text-white/80 text-[112px] font-medium",
12028
- children: countdown
12029
- })
12384
+ const $e664dff7377882d8$export$3646917cb6200e2e = ({ state: state , assets: assets })=>{
12385
+ const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
12386
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $34b61dca272e1b9a$export$2b77a92f1a5ad772), {
12387
+ title: t("recorder.submissionTitle"),
12388
+ state: state,
12389
+ isDismissable: false,
12390
+ children: [
12391
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
12392
+ className: "text-base text-primaryLight",
12393
+ children: t("recorder.submissionDescription")
12394
+ }),
12395
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
12396
+ className: "flex flex-col gap-[20px] border-t border-secondaryVLight pt-[20px]",
12397
+ children: assets.map((asset, index)=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $30551f17e9f1f660$export$c9169049516d8bcf), {
12398
+ asset: asset,
12399
+ index: index,
12400
+ removeAsset: undefined
12401
+ }, asset.assetId))
12402
+ })
12403
+ ]
12030
12404
  });
12031
12405
  };
12032
12406
 
12033
12407
 
12034
-
12035
- const $7925c01e7577d264$var$timerText = (delta)=>{
12036
- const d = [
12037
- Math.floor(delta / 60),
12038
- Math.round(delta % 60)
12039
- ].map((n)=>`${n < 10 ? "0" : ""}${n}`);
12040
- return d.join(":");
12041
- };
12042
- const $7925c01e7577d264$var$dateFormat = new Intl.DateTimeFormat("default", {
12043
- dateStyle: "short"
12044
- });
12045
- const $7925c01e7577d264$var$timeFormat = new Intl.DateTimeFormat("default", {
12046
- hour: "numeric",
12047
- minute: "2-digit"
12048
- });
12049
- function $7925c01e7577d264$export$3ae94a2503e890a1(date) {
12050
- return `${$7925c01e7577d264$var$dateFormat.format(date)} at ${$7925c01e7577d264$var$timeFormat.format(date)}`;
12051
- }
12052
- const $7925c01e7577d264$export$336a011955157f9a = ()=>{
12053
- const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
12408
+ const $b939cb69b1cbeb59$export$336a011955157f9a = ()=>{
12054
12409
  const { options: options } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
12055
- const [startRecordTime, setStartRecordTime] = (0, $jQDcL$react.useState)(undefined);
12056
- const [timer, setTimer] = (0, $jQDcL$react.useState)(0);
12057
- const [countdownVisible, setCountdownVisible] = (0, $jQDcL$react.useState)(false);
12058
- const videoElementRef = (0, $jQDcL$react.useRef)(null);
12059
- const [assets, setAssets] = (0, $jQDcL$react.useState)([]);
12060
- const [assetLoading, setAssetLoading] = (0, $jQDcL$react.useState)(null);
12061
- const [isAssetsPopupStateOpen, setIsAssetsPopupStateOpen] = (0, $jQDcL$react.useState)(false);
12062
- const [facingMode, setFacingMode] = (0, $jQDcL$react.useState)("user");
12063
- const assetsPopupState = (0, $jQDcL$reactstately.useOverlayTriggerState)({
12064
- isOpen: isAssetsPopupStateOpen,
12065
- onOpenChange: setIsAssetsPopupStateOpen
12066
- });
12067
- const sendAssetsModalState = (0, $jQDcL$reactstately.useOverlayTriggerState)({});
12068
- const [flashAnimation, setFlashAnimation] = (0, $jQDcL$react.useState)(false);
12069
- const menuBarState = (0, $6f223c293b335d40$export$bd7b6af6aa16550c)({
12070
- state: options?.recorder?.defaultState || "photo"
12071
- });
12072
- const exitStreaming = (0, $jQDcL$react.useCallback)(()=>{
12073
- menuBarState.setStreaming(false);
12074
- setStartRecordTime(undefined);
12075
- setCountdownVisible(false);
12076
- setTimer(0);
12077
- }, [
12078
- menuBarState
12079
- ]);
12080
- const onLocalVideoChange = (event)=>{
12081
- if (!event.detail?.camera?.device || !videoElementRef.current) return;
12082
- const { facingMode: newFacingMode } = (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).requestLocalVideo(videoElementRef?.current);
12083
- setFacingMode(newFacingMode);
12084
- };
12085
- const onScreenshareEnabled = (event)=>{
12086
- if (!videoElementRef.current) return;
12087
- (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).requestLocalScreenshare(videoElementRef.current);
12088
- };
12089
- const onStopRecord = (0, $jQDcL$react.useCallback)((event)=>{
12090
- const { url: url , assetId: assetId } = event.detail;
12091
- exitStreaming();
12092
- setAssetLoading(null);
12093
- setAssets([
12094
- ...assets,
12095
- {
12096
- type: "video",
12097
- timestamp: Date.now(),
12098
- objectUrl: url,
12099
- assetId: assetId
12100
- }
12101
- ]);
12102
- }, [
12103
- assets,
12104
- exitStreaming
12105
- ]);
12106
- const onPhotoCapture = async (videoElement)=>{
12107
- const timestamp = Date.now();
12108
- setAssetLoading("picture");
12109
- const image = await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).captureVideo(videoElement);
12110
- const { url: url , assetId: assetId } = await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).saveCapture(image);
12111
- setAssetLoading(null);
12112
- setAssets([
12113
- ...assets,
12114
- {
12115
- type: "picture",
12116
- timestamp: timestamp,
12117
- objectUrl: url,
12118
- assetId: assetId
12119
- }
12120
- ]);
12121
- };
12410
+ const submitAssetsModalState = (0, $jQDcL$reactstately.useOverlayTriggerState)({});
12411
+ const permissionBlockedModalState = (0, $jQDcL$reactstately.useOverlayTriggerState)({});
12412
+ const [thumbnailURL, setLastThumbnailURL] = (0, $jQDcL$react.useState)(undefined);
12122
12413
  const captureThumbnail = async (videoElement)=>{
12123
12414
  let image = await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).captureVideo(undefined, {
12124
12415
  addPlayWatermark: true
@@ -12126,173 +12417,83 @@ const $7925c01e7577d264$export$336a011955157f9a = ()=>{
12126
12417
  if (!image) image = await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).captureVideo(videoElement, {
12127
12418
  addPlayWatermark: true
12128
12419
  });
12129
- await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).saveThumbnail(image);
12420
+ const { url: url } = await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).saveThumbnail(image);
12421
+ setLastThumbnailURL(url);
12130
12422
  };
12423
+ const recorderState = (0, $52e751d204780518$export$c74cd098b7a410cb)({
12424
+ mode: options?.recorder?.defaultMode || "photo",
12425
+ requestedMedia: options?.recorder?.defaultMedia || "camera",
12426
+ permissionBlockedModalState: permissionBlockedModalState,
12427
+ captureThumbnail: captureThumbnail
12428
+ });
12131
12429
  const removeAsset = (0, $jQDcL$react.useCallback)(async (asset)=>{
12132
12430
  if (!asset.assetId) return;
12133
12431
  (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).deleteCapture(asset.assetId);
12134
- const newAssets = assets.filter((item)=>item.assetId !== asset.assetId);
12135
- setAssets(newAssets);
12136
- if (newAssets.length < 1) setIsAssetsPopupStateOpen(false);
12432
+ const newAssets = recorderState.assets.filter((item)=>item.assetId !== asset.assetId);
12433
+ recorderState.setAssets(newAssets);
12434
+ if (newAssets.length < 1) recorderState.assetsPopupState.close();
12137
12435
  }, [
12138
- assets
12436
+ recorderState
12139
12437
  ]);
12140
- (0, $jQDcL$react.useEffect)(()=>{
12141
- if (startRecordTime === undefined) return;
12142
- const interval = setInterval(()=>{
12143
- const delta = (Date.now() - startRecordTime) / 1000;
12144
- setTimer(delta);
12145
- }, 1000);
12146
- return ()=>clearInterval(interval);
12438
+ const exitStreaming = (0, $jQDcL$react.useCallback)(()=>{
12439
+ recorderState.setStreaming(false);
12440
+ recorderState.setStartRecordTime(undefined);
12441
+ }, [
12442
+ recorderState
12443
+ ]);
12444
+ const onStopRecord = (0, $jQDcL$react.useCallback)((event)=>{
12445
+ const { url: url , assetId: assetId } = event.detail;
12446
+ exitStreaming();
12447
+ recorderState.setAssetLoading(false);
12448
+ recorderState.setAssets([
12449
+ ...recorderState.assets,
12450
+ {
12451
+ type: "video",
12452
+ timestamp: Date.now(),
12453
+ objectUrl: url,
12454
+ assetId: assetId,
12455
+ thumbnailURL: thumbnailURL
12456
+ }
12457
+ ]);
12147
12458
  }, [
12148
- startRecordTime
12459
+ exitStreaming,
12460
+ recorderState,
12461
+ thumbnailURL
12149
12462
  ]);
12150
12463
  (0, $jQDcL$react.useEffect)(()=>{
12151
- (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("localVideoAvailable", onLocalVideoChange);
12152
- (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("screenshareEnabled", onScreenshareEnabled);
12153
- (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("localVideoChange", onLocalVideoChange);
12154
12464
  (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("recordStopped", onStopRecord);
12155
12465
  return ()=>{
12156
- (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("localVideoChange", onLocalVideoChange);
12157
- (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("screenshareEnabled", onScreenshareEnabled);
12158
- (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("localVideoAvailable", onLocalVideoChange);
12159
12466
  (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("recordStopped", onStopRecord);
12160
12467
  };
12161
12468
  }, [
12162
12469
  onStopRecord
12163
12470
  ]);
12164
12471
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
12165
- className: (0, ($parcel$interopDefault($jQDcL$classnames)))("bg-[#000] w-full h-full justify-center flex flex-col antialiased inter", {
12166
- "bg-[url('https://cdn.snapcall.io/img/assist/gradient-bg.jpg')] bg-cover": menuBarState.mode === "screen"
12167
- }),
12472
+ className: "w-full h-full ",
12168
12473
  children: [
12169
- (menuBarState.mode === "video" || menuBarState.mode === "screen" && menuBarState.streaming) && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
12170
- className: "text-base text-white text-center font-medium pt-2.5",
12171
- children: $7925c01e7577d264$var$timerText(timer)
12474
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $2256a219b427127c$export$c31ece446899894), {
12475
+ state: permissionBlockedModalState
12172
12476
  }),
12173
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
12174
- className: "flex-1 min-h-0 p-2.5 ",
12175
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
12176
- className: "relative w-full h-full rounded-[10px] ",
12177
- children: [
12178
- countdownVisible && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $47dee8347993fb81$export$53819c0e58f98d49), {
12179
- initialValue: 3,
12180
- onFinish: ()=>{
12181
- setCountdownVisible(false);
12182
- setStartRecordTime(Date.now());
12183
- (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).startRecord().then(()=>{
12184
- if (videoElementRef.current) captureThumbnail(videoElementRef.current);
12185
- });
12186
- }
12187
- }),
12188
- flashAnimation && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $2c45d365ee8aa1ab$export$2b501aee548bae06), {
12189
- onAnimationEnd: ()=>{
12190
- setFlashAnimation(false);
12191
- assetsPopupState.open();
12192
- }
12193
- }),
12194
- menuBarState.mode === "screen" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
12195
- className: "object-fit h-full",
12196
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("video", {
12197
- autoPlay: true,
12198
- muted: true,
12199
- playsInline: true,
12200
- ref: videoElementRef,
12201
- className: (0, ($parcel$interopDefault($jQDcL$classnames)))("w-full h-full rounded-[inherit]", {
12202
- "scale-x-[-1]": facingMode === "user" && menuBarState.mode !== "screen",
12203
- "max-w-[screen]": menuBarState.mode === "screen"
12204
- })
12205
- })
12206
- }),
12207
- menuBarState.mode !== "screen" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("video", {
12208
- autoPlay: true,
12209
- muted: true,
12210
- playsInline: true,
12211
- ref: videoElementRef,
12212
- className: (0, ($parcel$interopDefault($jQDcL$classnames)))("w-full h-full object-cover rounded-[inherit]", {
12213
- "scale-x-[-1]": facingMode === "user"
12214
- })
12215
- })
12216
- ]
12217
- })
12477
+ recorderState.requestedMedia === "camera" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $674454a6d2a40e95$export$5b8e641151f8011d), {
12478
+ recorderState: recorderState
12218
12479
  }),
12219
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
12220
- className: "flex justify-center px-2.5 pb-2.5 z-10",
12221
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $6f223c293b335d40$export$11a6fe490bbc4873), {
12222
- state: menuBarState,
12223
- thumbnail: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $dc46069ab394f8fc$export$1cd1efc78cb52ca5), {
12224
- asset: assets[assets.length - 1],
12225
- onClick: assetsPopupState.open
12226
- }),
12227
- onSwitch: ()=>{
12228
- (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).rotateVideo();
12229
- },
12230
- onCapturePress: ()=>{
12231
- if (menuBarState.mode === "photo" && videoElementRef.current) {
12232
- onPhotoCapture(videoElementRef.current);
12233
- setFlashAnimation(true);
12234
- }
12235
- if (menuBarState.mode !== "photo" && !menuBarState.streaming) {
12236
- menuBarState.setStreaming(true);
12237
- setTimer(0);
12238
- setCountdownVisible(true);
12239
- }
12240
- if (menuBarState.mode !== "photo" && menuBarState.streaming) {
12241
- exitStreaming();
12242
- if (startRecordTime) {
12243
- (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).stopRecord();
12244
- setAssetLoading("video");
12245
- assetsPopupState.open();
12246
- }
12247
- }
12248
- }
12249
- })
12480
+ recorderState.requestedMedia === "screen" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $1be61d90bb5f5865$export$2d78fbe400238869), {
12481
+ recorderState: recorderState
12250
12482
  }),
12251
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $0bca8bbbf74ddff9$export$5c334f209b1aa661), {
12252
- assets: assets,
12253
- state: assetsPopupState,
12483
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $d83aaaf1128cb8b7$export$5c334f209b1aa661), {
12484
+ assets: recorderState.assets,
12485
+ state: recorderState.assetsPopupState,
12254
12486
  onSendAssets: ()=>{
12255
12487
  (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).release();
12256
- sendAssetsModalState.open();
12488
+ submitAssetsModalState.open();
12257
12489
  },
12258
12490
  removeAsset: removeAsset,
12259
- loading: assetLoading
12491
+ loading: recorderState.assetLoading,
12492
+ recorderState: recorderState
12260
12493
  }),
12261
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $48c2553f62767e40$export$2b77a92f1a5ad772), {
12262
- title: t("recorder.submissionTitle"),
12263
- state: sendAssetsModalState,
12264
- isDismissable: false,
12265
- children: [
12266
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
12267
- className: "text-base text-primaryLight",
12268
- children: t("recorder.submissionDescription")
12269
- }),
12270
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
12271
- className: "flex flex-col gap-[20px] border-t border-secondaryVLight pt-[20px]",
12272
- children: assets.map((asset, index)=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
12273
- className: "flex flex-row items-center gap-[10px]",
12274
- children: [
12275
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $dc46069ab394f8fc$export$1cd1efc78cb52ca5), {
12276
- asset: asset
12277
- }),
12278
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("span", {
12279
- className: "text-sm",
12280
- style: {
12281
- hyphens: "manual"
12282
- },
12283
- children: [
12284
- asset.type === "picture" ? "Photo" : "Video",
12285
- " ",
12286
- index + 1,
12287
- " \xb7",
12288
- " ",
12289
- $7925c01e7577d264$export$3ae94a2503e890a1(new Date(asset.timestamp))
12290
- ]
12291
- })
12292
- ]
12293
- }))
12294
- })
12295
- ]
12494
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $e664dff7377882d8$export$3646917cb6200e2e), {
12495
+ state: submitAssetsModalState,
12496
+ assets: recorderState.assets
12296
12497
  })
12297
12498
  ]
12298
12499
  });
@@ -12365,15 +12566,17 @@ const $7ce296d839195d38$export$669f6ea7d267feaf = ()=>{
12365
12566
  };
12366
12567
 
12367
12568
 
12569
+
12368
12570
  const $ee8cb448c2c74888$var$currentTheme = (0, $9295e87e6b93e693$export$3bfd0d5209a8006a)();
12369
12571
  const $ee8cb448c2c74888$var$currentLanguage = (0, $393bda1b33846dfc$export$604ba5624273df44)();
12572
+ const $ee8cb448c2c74888$var$queryClient = new (0, $jQDcL$reactquery.QueryClient)();
12370
12573
  let $ee8cb448c2c74888$var$timestampCriticalError = -1;
12371
12574
  const $ee8cb448c2c74888$var$StreamUI = ({ options: options })=>{
12372
12575
  const [selfPeerId, setSelfPeerId] = (0, $jQDcL$react.useState)(undefined);
12373
12576
  const streamUIContainerRef = (0, $jQDcL$react.useRef)(null);
12374
12577
  const videosContainerRef = (0, $jQDcL$react.useRef)(null);
12375
12578
  const remoteTilesContainerRef = (0, $jQDcL$react.useRef)(null);
12376
- const [streamState, setStreamState] = (0, $jQDcL$react.useState)(options.recorder?.enabled ? "recorder" : "streaming");
12579
+ const [streamState, setStreamState] = (0, $jQDcL$react.useState)(options.recorder?.enabled ? "recorder" : "loading");
12377
12580
  const [isQuickConnectPopupVisible, setIsQuickConnectPopupVisible] = (0, $jQDcL$react.useState)(false);
12378
12581
  const [isSettingsMenuVisible, setIsSettingsMenuVisible] = (0, $jQDcL$react.useState)(false);
12379
12582
  const [isYoutubePopupVisible, setIsYoutubePopupVisible] = (0, $jQDcL$react.useState)(false);
@@ -12384,7 +12587,6 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options })=>{
12384
12587
  const [profile, setProfile] = (0, $jQDcL$react.useState)({});
12385
12588
  const [muted, setMuted] = (0, $jQDcL$react.useState)(true);
12386
12589
  const [streaming, setStreaming] = (0, $jQDcL$react.useState)(false);
12387
- const [isLoading, setLoading] = (0, $jQDcL$react.useState)(!options.recorder?.enabled);
12388
12590
  const [screensharing, setScreensharing] = (0, $jQDcL$react.useState)(false);
12389
12591
  const [isAgent, setIsAgent] = (0, $jQDcL$react.useState)(false);
12390
12592
  const [userInteractionTriggered, setUserInteractionTriggered] = (0, $jQDcL$react.useState)(false);
@@ -12532,7 +12734,7 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options })=>{
12532
12734
  setBlockedDevicesPopupOpen(true);
12533
12735
  console.error("User interaction trigger failed", userInteractionError);
12534
12736
  } finally{
12535
- setLoading(false);
12737
+ setStreamState("streaming");
12536
12738
  }
12537
12739
  };
12538
12740
  (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("enterRoom", onEnterRoom);
@@ -12542,73 +12744,76 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options })=>{
12542
12744
  }, [
12543
12745
  options
12544
12746
  ]);
12545
- return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8b39f32976a7698a$export$2e2bcd8739ae039).Provider, {
12546
- value: {
12547
- plan: plan,
12548
- permissions: permissions,
12549
- selfPeerId: selfPeerId,
12550
- streamUIContainerRef: streamUIContainerRef,
12551
- videosContainerRef: videosContainerRef,
12552
- remoteTilesContainerRef: remoteTilesContainerRef,
12553
- streamState: streamState,
12554
- setStreamState: setStreamState,
12555
- isQuickConnectPopupVisible: isQuickConnectPopupVisible,
12556
- setIsQuickConnectPopupVisible: setIsQuickConnectPopupVisible,
12557
- isSettingsMenuVisible: isSettingsMenuVisible,
12558
- setIsSettingsMenuVisible: setIsSettingsMenuVisible,
12559
- isYoutubePopupVisible: isYoutubePopupVisible,
12560
- setIsYoutubePopupVisible: setIsYoutubePopupVisible,
12561
- isLinksharePopupVisible: isLinksharePopupVisible,
12562
- setIsLinksharePopupVisible: setIsLinksharePopupVisible,
12563
- isVirtualBackgroundPopupVisible: isVirtualBackgroundPopupVisible,
12564
- setIsVirtualBackgroundPopupVisible: setIsVirtualBackgroundPopupVisible,
12565
- isBlockedFeaturePopupOpen: isBlockedFeaturePopupOpen,
12566
- setBlockedFeaturePopupOpen: setBlockedFeaturePopupOpen,
12567
- theme: theme,
12568
- setTheme: setTheme,
12569
- language: language,
12570
- setLanguage: setLanguage,
12571
- options: options,
12572
- profile: profile,
12573
- muted: muted,
12574
- streaming: streaming,
12575
- screensharing: screensharing,
12576
- isAgent: isAgent,
12577
- userInteractionTriggered: userInteractionTriggered,
12578
- orientation: orientation
12579
- },
12580
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$styledcomponents.ThemeProvider), {
12581
- theme: styledTheme,
12582
- children: [
12583
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $e3bb2c5d0e5b45b5$export$20f257fc407da7a3), {}),
12584
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $e41262de25602ed2$export$2e2bcd8739ae039), {}),
12585
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $e3bb2c5d0e5b45b5$export$914ddf2021ea8ee6), {
12586
- ref: streamUIContainerRef,
12587
- children: [
12588
- isLoading && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $7ce296d839195d38$export$669f6ea7d267feaf), {}),
12589
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $e66cc5db58913155$export$2e2bcd8739ae039), {}),
12590
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5dcd9e6925c7037c$export$2e2bcd8739ae039), {}),
12591
- isBlockedDevicesPopupOpen && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $77862aeb490f36a3$export$2e2bcd8739ae039), {
12592
- close: ()=>{
12593
- setUserInteractionTriggered(true);
12594
- setBlockedDevicesPopupOpen(false);
12595
- }
12596
- }),
12597
- streamState === "recorder" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $7925c01e7577d264$export$336a011955157f9a), {}),
12598
- streamState === "streaming" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$reactjsxruntime.Fragment), {
12599
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $3f6e908c45fcc5b3$export$74636703cfe1eecf), {
12600
- children: [
12601
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $e1930b467e7d8845$export$2e2bcd8739ae039), {}),
12602
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $88b23a8428e67b66$export$2e2bcd8739ae039), {}),
12603
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $a21b2aa064cb6c32$export$2e2bcd8739ae039), {}),
12604
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f509eaff0d9c05a$export$2e2bcd8739ae039), {})
12605
- ]
12606
- })
12607
- }),
12608
- (streamState === "ended" || streamState === "terminated" || streamState === "full" || streamState === "expired") && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3d1bfd8f074b99b1$export$2e2bcd8739ae039), {})
12609
- ]
12610
- })
12611
- ]
12747
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$reactquery.QueryClientProvider), {
12748
+ client: $ee8cb448c2c74888$var$queryClient,
12749
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8b39f32976a7698a$export$2e2bcd8739ae039).Provider, {
12750
+ value: {
12751
+ plan: plan,
12752
+ permissions: permissions,
12753
+ selfPeerId: selfPeerId,
12754
+ streamUIContainerRef: streamUIContainerRef,
12755
+ videosContainerRef: videosContainerRef,
12756
+ remoteTilesContainerRef: remoteTilesContainerRef,
12757
+ streamState: streamState,
12758
+ setStreamState: setStreamState,
12759
+ isQuickConnectPopupVisible: isQuickConnectPopupVisible,
12760
+ setIsQuickConnectPopupVisible: setIsQuickConnectPopupVisible,
12761
+ isSettingsMenuVisible: isSettingsMenuVisible,
12762
+ setIsSettingsMenuVisible: setIsSettingsMenuVisible,
12763
+ isYoutubePopupVisible: isYoutubePopupVisible,
12764
+ setIsYoutubePopupVisible: setIsYoutubePopupVisible,
12765
+ isLinksharePopupVisible: isLinksharePopupVisible,
12766
+ setIsLinksharePopupVisible: setIsLinksharePopupVisible,
12767
+ isVirtualBackgroundPopupVisible: isVirtualBackgroundPopupVisible,
12768
+ setIsVirtualBackgroundPopupVisible: setIsVirtualBackgroundPopupVisible,
12769
+ isBlockedFeaturePopupOpen: isBlockedFeaturePopupOpen,
12770
+ setBlockedFeaturePopupOpen: setBlockedFeaturePopupOpen,
12771
+ theme: theme,
12772
+ setTheme: setTheme,
12773
+ language: language,
12774
+ setLanguage: setLanguage,
12775
+ options: options,
12776
+ profile: profile,
12777
+ muted: muted,
12778
+ streaming: streaming,
12779
+ screensharing: screensharing,
12780
+ isAgent: isAgent,
12781
+ userInteractionTriggered: userInteractionTriggered,
12782
+ orientation: orientation
12783
+ },
12784
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$styledcomponents.ThemeProvider), {
12785
+ theme: styledTheme,
12786
+ children: [
12787
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $e3bb2c5d0e5b45b5$export$20f257fc407da7a3), {}),
12788
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $e41262de25602ed2$export$2e2bcd8739ae039), {}),
12789
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $e3bb2c5d0e5b45b5$export$914ddf2021ea8ee6), {
12790
+ ref: streamUIContainerRef,
12791
+ children: [
12792
+ streamState === "loading" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $7ce296d839195d38$export$669f6ea7d267feaf), {}),
12793
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $e66cc5db58913155$export$2e2bcd8739ae039), {}),
12794
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5dcd9e6925c7037c$export$2e2bcd8739ae039), {}),
12795
+ isBlockedDevicesPopupOpen && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $77862aeb490f36a3$export$2e2bcd8739ae039), {
12796
+ close: ()=>{
12797
+ setUserInteractionTriggered(true);
12798
+ setBlockedDevicesPopupOpen(false);
12799
+ }
12800
+ }),
12801
+ streamState === "recorder" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $b939cb69b1cbeb59$export$336a011955157f9a), {}),
12802
+ (streamState === "streaming" || streamState === "loading") && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$reactjsxruntime.Fragment), {
12803
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $3f6e908c45fcc5b3$export$74636703cfe1eecf), {
12804
+ children: [
12805
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $e1930b467e7d8845$export$2e2bcd8739ae039), {}),
12806
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $88b23a8428e67b66$export$2e2bcd8739ae039), {}),
12807
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $a21b2aa064cb6c32$export$2e2bcd8739ae039), {}),
12808
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f509eaff0d9c05a$export$2e2bcd8739ae039), {})
12809
+ ]
12810
+ })
12811
+ }),
12812
+ (streamState === "ended" || streamState === "terminated" || streamState === "full" || streamState === "expired") && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3d1bfd8f074b99b1$export$2e2bcd8739ae039), {})
12813
+ ]
12814
+ })
12815
+ ]
12816
+ })
12612
12817
  })
12613
12818
  });
12614
12819
  };
@@ -13041,7 +13246,7 @@ var $3305ca02e86dabd1$export$2e2bcd8739ae039 = $3305ca02e86dabd1$var$GreetingVie
13041
13246
 
13042
13247
 
13043
13248
  var $54541b0286afc2de$exports = {};
13044
- $54541b0286afc2de$exports = "*, :before, :after, ::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: #3b82f680;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n.visible {\n visibility: visible;\n}\n\n.fixed {\n position: fixed;\n}\n\n.absolute {\n position: absolute;\n}\n\n.relative {\n position: relative;\n}\n\n.inset-0 {\n inset: 0;\n}\n\n.left-0 {\n left: 0;\n}\n\n.top-0 {\n top: 0;\n}\n\n.z-\\[100\\] {\n z-index: 100;\n}\n\n.z-50 {\n z-index: 50;\n}\n\n.z-\\[1\\] {\n z-index: 1;\n}\n\n.z-10 {\n z-index: 10;\n}\n\n.m-\\[10px\\] {\n margin: 10px;\n}\n\n.mx-\\[20px\\] {\n margin-left: 20px;\n margin-right: 20px;\n}\n\n.ml-\\[10px\\] {\n margin-left: 10px;\n}\n\n.mt-\\[10px\\] {\n margin-top: 10px;\n}\n\n.mt-\\[50px\\] {\n margin-top: 50px;\n}\n\n.block {\n display: block;\n}\n\n.inline {\n display: inline;\n}\n\n.flex {\n display: flex;\n}\n\n.table {\n display: table;\n}\n\n.hidden {\n display: none;\n}\n\n.h-screen {\n height: 100vh;\n}\n\n.h-full {\n height: 100%;\n}\n\n.h-\\[150px\\] {\n height: 150px;\n}\n\n.h-\\[60px\\] {\n height: 60px;\n}\n\n.h-\\[56px\\] {\n height: 56px;\n}\n\n.h-\\[40px\\] {\n height: 40px;\n}\n\n.h-\\[72px\\] {\n height: 72px;\n}\n\n.h-\\[235px\\] {\n height: 235px;\n}\n\n.h-\\[93px\\] {\n height: 93px;\n}\n\n.h-fit {\n height: -moz-fit-content;\n height: fit-content;\n}\n\n.h-\\[24px\\] {\n height: 24px;\n}\n\n.h-\\[30px\\] {\n height: 30px;\n}\n\n.h-1\\/3 {\n height: 33.3333%;\n}\n\n.max-h-\\[inherit\\] {\n max-height: inherit;\n}\n\n.max-h-\\[70px\\] {\n max-height: 70px;\n}\n\n.min-h-0 {\n min-height: 0;\n}\n\n.min-h-\\[100\\%\\] {\n min-height: 100%;\n}\n\n.w-screen {\n width: 100vw;\n}\n\n.w-full {\n width: 100%;\n}\n\n.w-1\\/3 {\n width: 33.3333%;\n}\n\n.w-\\[60px\\] {\n width: 60px;\n}\n\n.w-\\[56px\\] {\n width: 56px;\n}\n\n.w-\\[72px\\] {\n width: 72px;\n}\n\n.w-\\[76px\\] {\n width: 76px;\n}\n\n.w-\\[360px\\] {\n width: 360px;\n}\n\n.w-\\[450px\\] {\n width: 450px;\n}\n\n.w-\\[320px\\] {\n width: 320px;\n}\n\n.w-\\[24px\\] {\n width: 24px;\n}\n\n.w-\\[30px\\] {\n width: 30px;\n}\n\n.min-w-full, .min-w-\\[100\\%\\] {\n min-width: 100%;\n}\n\n.min-w-\\[24px\\] {\n min-width: 24px;\n}\n\n.max-w-\\[400px\\] {\n max-width: 400px;\n}\n\n.max-w-\\[135px\\] {\n max-width: 135px;\n}\n\n.max-w-\\[500px\\] {\n max-width: 500px;\n}\n\n.max-w-\\[600px\\] {\n max-width: 600px;\n}\n\n.max-w-\\[800px\\] {\n max-width: 800px;\n}\n\n.max-w-\\[screen\\] {\n max-width: screen;\n}\n\n.max-w-\\[70px\\] {\n max-width: 70px;\n}\n\n.flex-1 {\n flex: 1;\n}\n\n.flex-auto {\n flex: auto;\n}\n\n.flex-grow {\n flex-grow: 1;\n}\n\n.translate-y-2 {\n --tw-translate-y: .5rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.translate-y-0 {\n --tw-translate-y: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.translate-y-\\[200\\%\\] {\n --tw-translate-y: 200%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.translate-y-full {\n --tw-translate-y: 100%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.scale-\\[0\\.4\\] {\n --tw-scale-x: .4;\n --tw-scale-y: .4;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.scale-x-\\[-1\\] {\n --tw-scale-x: -1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.resize {\n resize: both;\n}\n\n.flex-row {\n flex-direction: row;\n}\n\n.flex-col {\n flex-direction: column;\n}\n\n.flex-wrap {\n flex-wrap: wrap;\n}\n\n.items-end {\n align-items: flex-end;\n}\n\n.items-center {\n align-items: center;\n}\n\n.justify-end {\n justify-content: flex-end;\n}\n\n.justify-center {\n justify-content: center;\n}\n\n.justify-between {\n justify-content: space-between;\n}\n\n.gap-\\[10px\\] {\n gap: 10px;\n}\n\n.gap-\\[5px\\] {\n gap: 5px;\n}\n\n.gap-2\\.5 {\n gap: .625rem;\n}\n\n.gap-2 {\n gap: .5rem;\n}\n\n.gap-5 {\n gap: 1.25rem;\n}\n\n.gap-\\[20px\\] {\n gap: 20px;\n}\n\n.overflow-auto {\n overflow: auto;\n}\n\n.overflow-hidden {\n overflow: hidden;\n}\n\n.overflow-x-auto {\n overflow-x: auto;\n}\n\n.rounded-\\[10px\\] {\n border-radius: 10px;\n}\n\n.rounded-lg {\n border-radius: .5rem;\n}\n\n.rounded-md {\n border-radius: .375rem;\n}\n\n.rounded-\\[15px\\] {\n border-radius: 15px;\n}\n\n.rounded-full {\n border-radius: 9999px;\n}\n\n.rounded-\\[5px\\] {\n border-radius: 5px;\n}\n\n.rounded-\\[60px\\] {\n border-radius: 60px;\n}\n\n.rounded-\\[inherit\\] {\n border-radius: inherit;\n}\n\n.rounded-\\[8px\\] {\n border-radius: 8px;\n}\n\n.rounded-\\[50\\%\\] {\n border-radius: 50%;\n}\n\n.rounded-t-\\[15px\\] {\n border-top-left-radius: 15px;\n border-top-right-radius: 15px;\n}\n\n.border {\n border-width: 1px;\n}\n\n.border-2 {\n border-width: 2px;\n}\n\n.border-t {\n border-top-width: 1px;\n}\n\n.border-secondaryLight {\n --tw-border-opacity: 1;\n border-color: rgb(179 179 179 / var(--tw-border-opacity));\n}\n\n.border-white {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n\n.border-secondaryVLight {\n --tw-border-opacity: 1;\n border-color: rgb(235 235 235 / var(--tw-border-opacity));\n}\n\n.border-primaryLight {\n --tw-border-opacity: 1;\n border-color: rgb(86 86 86 / var(--tw-border-opacity));\n}\n\n.bg-black {\n --tw-bg-opacity: 1;\n background-color: rgb(0 0 0 / var(--tw-bg-opacity));\n}\n\n.bg-primaryLight {\n --tw-bg-opacity: 1;\n background-color: rgb(86 86 86 / var(--tw-bg-opacity));\n}\n\n.bg-primary {\n --tw-bg-opacity: 1;\n background-color: rgb(29 28 32 / var(--tw-bg-opacity));\n}\n\n.bg-graySelected {\n --tw-bg-opacity: 1;\n background-color: rgb(245 245 245 / var(--tw-bg-opacity));\n}\n\n.bg-transparent {\n background-color: #0000;\n}\n\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n.bg-tertiarySelected {\n --tw-bg-opacity: 1;\n background-color: rgb(216 216 216 / var(--tw-bg-opacity));\n}\n\n.bg-tertiary {\n --tw-bg-opacity: 1;\n background-color: rgb(245 245 245 / var(--tw-bg-opacity));\n}\n\n.bg-black\\/\\[\\.6\\] {\n background-color: #0009;\n}\n\n.bg-\\[\\#565656\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(86 86 86 / var(--tw-bg-opacity));\n}\n\n.bg-\\[\\#f12828\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(241 40 40 / var(--tw-bg-opacity));\n}\n\n.bg-\\[\\#000\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(0 0 0 / var(--tw-bg-opacity));\n}\n\n.bg-\\[\\#FFFFFF\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n.bg-underlay {\n background-color: #00000040;\n}\n\n.bg-\\[\\#f3f3f3\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(243 243 243 / var(--tw-bg-opacity));\n}\n\n.bg-secondaryVLight {\n --tw-bg-opacity: 1;\n background-color: rgb(235 235 235 / var(--tw-bg-opacity));\n}\n\n.bg-opacity-90 {\n --tw-bg-opacity: .9;\n}\n\n.bg-\\[url\\(\\'https\\:\\/\\/cdn\\.snapcall\\.io\\/img\\/assist\\/gradient-bg\\.jpg\\'\\)\\] {\n background-image: url(\"https://cdn.snapcall.io/img/assist/gradient-bg.jpg\");\n}\n\n.bg-cover {\n background-size: cover;\n}\n\n.object-cover {\n object-fit: cover;\n}\n\n.object-fill {\n object-fit: fill;\n}\n\n.p-\\[15px\\] {\n padding: 15px;\n}\n\n.p-2\\.5 {\n padding: .625rem;\n}\n\n.p-2 {\n padding: .5rem;\n}\n\n.p-\\[10px\\] {\n padding: 10px;\n}\n\n.p-\\[3px\\] {\n padding: 3px;\n}\n\n.p-\\[12px\\] {\n padding: 12px;\n}\n\n.py-3 {\n padding-top: .75rem;\n padding-bottom: .75rem;\n}\n\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n.py-\\[9px\\] {\n padding-top: 9px;\n padding-bottom: 9px;\n}\n\n.px-3\\.5 {\n padding-left: .875rem;\n padding-right: .875rem;\n}\n\n.px-3 {\n padding-left: .75rem;\n padding-right: .75rem;\n}\n\n.py-2 {\n padding-top: .5rem;\n padding-bottom: .5rem;\n}\n\n.py-1\\.5 {\n padding-top: .375rem;\n padding-bottom: .375rem;\n}\n\n.px-2\\.5 {\n padding-left: .625rem;\n padding-right: .625rem;\n}\n\n.py-1 {\n padding-top: .25rem;\n padding-bottom: .25rem;\n}\n\n.px-2 {\n padding-left: .5rem;\n padding-right: .5rem;\n}\n\n.px-\\[10px\\] {\n padding-left: 10px;\n padding-right: 10px;\n}\n\n.px-5 {\n padding-left: 1.25rem;\n padding-right: 1.25rem;\n}\n\n.py-\\[25px\\] {\n padding-top: 25px;\n padding-bottom: 25px;\n}\n\n.px-\\[20px\\] {\n padding-left: 20px;\n padding-right: 20px;\n}\n\n.pt-2\\.5 {\n padding-top: .625rem;\n}\n\n.pt-2 {\n padding-top: .5rem;\n}\n\n.pb-2\\.5 {\n padding-bottom: .625rem;\n}\n\n.pb-2 {\n padding-bottom: .5rem;\n}\n\n.pt-\\[20px\\] {\n padding-top: 20px;\n}\n\n.pb-\\[25px\\] {\n padding-bottom: 25px;\n}\n\n.text-center {\n text-align: center;\n}\n\n.align-middle {\n vertical-align: middle;\n}\n\n.text-base {\n letter-spacing: -.02em;\n font-size: 16px;\n line-height: 19px;\n}\n\n.text-sm {\n letter-spacing: -.02em;\n font-size: 14px;\n line-height: 17px;\n}\n\n.text-xs {\n letter-spacing: -.02em;\n font-size: 12px;\n line-height: 14px;\n}\n\n.text-\\[112px\\] {\n font-size: 112px;\n}\n\n.text-xl {\n letter-spacing: -.02em;\n font-size: 20px;\n line-height: 24px;\n}\n\n.text-lg {\n letter-spacing: -.02em;\n font-size: 18px;\n line-height: 22px;\n}\n\n.font-medium {\n font-weight: 500;\n}\n\n.font-semibold {\n font-weight: 600;\n}\n\n.font-bold {\n font-weight: 700;\n}\n\n.font-normal {\n font-weight: 400;\n}\n\n.leading-\\[20px\\] {\n line-height: 20px;\n}\n\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n.text-primary {\n --tw-text-opacity: 1;\n color: rgb(29 28 32 / var(--tw-text-opacity));\n}\n\n.text-mainBlue {\n --tw-text-opacity: 1;\n color: rgb(0 106 255 / var(--tw-text-opacity));\n}\n\n.text-white\\/80 {\n color: #fffc;\n}\n\n.text-secondary {\n --tw-text-opacity: 1;\n color: rgb(134 134 134 / var(--tw-text-opacity));\n}\n\n.text-primaryLight {\n --tw-text-opacity: 1;\n color: rgb(86 86 86 / var(--tw-text-opacity));\n}\n\n.text-black {\n --tw-text-opacity: 1;\n color: rgb(0 0 0 / var(--tw-text-opacity));\n}\n\n.underline {\n text-decoration-line: underline;\n}\n\n.antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.opacity-0 {\n opacity: 0;\n}\n\n.opacity-50 {\n opacity: .5;\n}\n\n.opacity-\\[0\\.4\\] {\n opacity: .4;\n}\n\n.opacity-90 {\n opacity: .9;\n}\n\n.outline {\n outline-style: solid;\n}\n\n.ring-\\[3px\\] {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.ring-cta {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(38 138 250 / var(--tw-ring-opacity));\n}\n\n.blur {\n --tw-blur: blur(8px);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.transition {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter, backdrop-filter;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.transition-\\[transform\\,border-radius\\] {\n transition-property: transform, border-radius;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.duration-300 {\n transition-duration: .3s;\n}\n\n.ease-in {\n transition-timing-function: cubic-bezier(.4, 0, 1, 1);\n}\n\n.ease-out {\n transition-timing-function: cubic-bezier(0, 0, .2, 1);\n}\n\n.ease-in-out {\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.inter {\n font-family: Inter, sans-serif;\n}\n\n@supports (font-variation-settings: normal) {\n .inter {\n font-family: Inter var, sans-serif;\n }\n}\n\n.first-letter\\:capitalize:first-letter {\n text-transform: capitalize;\n}\n\n.focus\\:outline-none:focus {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.disabled\\:bg-secondaryLight:disabled {\n --tw-bg-opacity: 1;\n background-color: rgb(179 179 179 / var(--tw-bg-opacity));\n}\n\n.disabled\\:bg-graySelected:disabled {\n --tw-bg-opacity: 1;\n background-color: rgb(245 245 245 / var(--tw-bg-opacity));\n}\n\n.disabled\\:text-secondaryLight:disabled {\n --tw-text-opacity: 1;\n color: rgb(179 179 179 / var(--tw-text-opacity));\n}\n\n.disabled\\:opacity-50:disabled {\n opacity: .5;\n}\n\n";
13249
+ $54541b0286afc2de$exports = "*, :before, :after, ::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: #3b82f680;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n.visible {\n visibility: visible;\n}\n\n.fixed {\n position: fixed;\n}\n\n.absolute {\n position: absolute;\n}\n\n.relative {\n position: relative;\n}\n\n.inset-0 {\n inset: 0;\n}\n\n.bottom-\\[-85px\\] {\n bottom: -85px;\n}\n\n.left-\\[calc\\(50\\%-243px\\)\\] {\n left: calc(50% - 243px);\n}\n\n.bottom-\\[-65px\\] {\n bottom: -65px;\n}\n\n.left-\\[calc\\(50\\%-43px\\)\\] {\n left: calc(50% - 43px);\n}\n\n.top-0 {\n top: 0;\n}\n\n.left-0 {\n left: 0;\n}\n\n.z-10 {\n z-index: 10;\n}\n\n.z-50 {\n z-index: 50;\n}\n\n.z-\\[1\\] {\n z-index: 1;\n}\n\n.z-\\[100\\] {\n z-index: 100;\n}\n\n.m-\\[10px\\] {\n margin: 10px;\n}\n\n.mx-\\[20px\\] {\n margin-left: 20px;\n margin-right: 20px;\n}\n\n.ml-\\[10px\\] {\n margin-left: 10px;\n}\n\n.mt-\\[10px\\] {\n margin-top: 10px;\n}\n\n.mt-\\[50px\\] {\n margin-top: 50px;\n}\n\n.mb-\\[9px\\] {\n margin-bottom: 9px;\n}\n\n.box-border {\n box-sizing: border-box;\n}\n\n.block {\n display: block;\n}\n\n.inline {\n display: inline;\n}\n\n.flex {\n display: flex;\n}\n\n.table {\n display: table;\n}\n\n.hidden {\n display: none;\n}\n\n.h-full {\n height: 100%;\n}\n\n.h-0 {\n height: 0;\n}\n\n.h-\\[86px\\] {\n height: 86px;\n}\n\n.h-\\[150px\\] {\n height: 150px;\n}\n\n.h-\\[60px\\] {\n height: 60px;\n}\n\n.h-\\[56px\\] {\n height: 56px;\n}\n\n.h-\\[64px\\] {\n height: 64px;\n}\n\n.h-\\[72px\\] {\n height: 72px;\n}\n\n.h-\\[24px\\] {\n height: 24px;\n}\n\n.h-\\[70px\\] {\n height: 70px;\n}\n\n.h-\\[62px\\] {\n height: 62px;\n}\n\n.h-\\[40px\\] {\n height: 40px;\n}\n\n.h-1\\/3 {\n height: 33.3333%;\n}\n\n.h-\\[235px\\] {\n height: 235px;\n}\n\n.h-\\[93px\\] {\n height: 93px;\n}\n\n.h-screen {\n height: 100vh;\n}\n\n.h-fit {\n height: -moz-fit-content;\n height: fit-content;\n}\n\n.h-\\[30px\\] {\n height: 30px;\n}\n\n.max-h-\\[100\\%\\] {\n max-height: 100%;\n}\n\n.max-h-\\[inherit\\] {\n max-height: inherit;\n}\n\n.max-h-\\[70px\\] {\n max-height: 70px;\n}\n\n.max-h-\\[90\\%\\] {\n max-height: 90%;\n}\n\n.min-h-0 {\n min-height: 0;\n}\n\n.w-full {\n width: 100%;\n}\n\n.w-\\[486px\\] {\n width: 486px;\n}\n\n.w-0 {\n width: 0;\n}\n\n.w-\\[86px\\] {\n width: 86px;\n}\n\n.w-\\[60px\\] {\n width: 60px;\n}\n\n.w-\\[56px\\] {\n width: 56px;\n}\n\n.w-\\[64px\\] {\n width: 64px;\n}\n\n.w-\\[72px\\] {\n width: 72px;\n}\n\n.w-\\[24px\\] {\n width: 24px;\n}\n\n.w-\\[70px\\] {\n width: 70px;\n}\n\n.w-\\[62px\\] {\n width: 62px;\n}\n\n.w-\\[50\\%\\] {\n width: 50%;\n}\n\n.w-\\[76px\\] {\n width: 76px;\n}\n\n.w-1\\/3 {\n width: 33.3333%;\n}\n\n.w-screen {\n width: 100vw;\n}\n\n.w-\\[360px\\] {\n width: 360px;\n}\n\n.w-\\[450px\\] {\n width: 450px;\n}\n\n.w-\\[320px\\] {\n width: 320px;\n}\n\n.w-\\[30px\\] {\n width: 30px;\n}\n\n.w-\\[135px\\] {\n width: 135px;\n}\n\n.min-w-\\[200px\\] {\n min-width: 200px;\n}\n\n.min-w-\\[24px\\] {\n min-width: 24px;\n}\n\n.min-w-full {\n min-width: 100%;\n}\n\n.max-w-\\[1116px\\] {\n max-width: 1116px;\n}\n\n.max-w-\\[500px\\] {\n max-width: 500px;\n}\n\n.max-w-\\[400px\\] {\n max-width: 400px;\n}\n\n.max-w-\\[600px\\] {\n max-width: 600px;\n}\n\n.max-w-\\[800px\\] {\n max-width: 800px;\n}\n\n.max-w-\\[100\\%\\] {\n max-width: 100%;\n}\n\n.max-w-\\[70px\\] {\n max-width: 70px;\n}\n\n.max-w-\\[90\\%\\] {\n max-width: 90%;\n}\n\n.flex-1 {\n flex: 1;\n}\n\n.flex-auto {\n flex: auto;\n}\n\n.flex-grow {\n flex-grow: 1;\n}\n\n.translate-y-\\[200\\%\\] {\n --tw-translate-y: 200%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.translate-y-full {\n --tw-translate-y: 100%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.translate-y-0 {\n --tw-translate-y: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.translate-y-2 {\n --tw-translate-y: .5rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.scale-\\[0\\.4\\] {\n --tw-scale-x: .4;\n --tw-scale-y: .4;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.scale-x-\\[-1\\] {\n --tw-scale-x: -1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.animate-spin {\n animation: 1s linear infinite spin;\n}\n\n.cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.resize {\n resize: both;\n}\n\n.flex-row {\n flex-direction: row;\n}\n\n.flex-col {\n flex-direction: column;\n}\n\n.flex-wrap {\n flex-wrap: wrap;\n}\n\n.items-start {\n align-items: flex-start;\n}\n\n.items-end {\n align-items: flex-end;\n}\n\n.items-center {\n align-items: center;\n}\n\n.justify-end {\n justify-content: flex-end;\n}\n\n.justify-center {\n justify-content: center;\n}\n\n.justify-between {\n justify-content: space-between;\n}\n\n.gap-\\[7px\\] {\n gap: 7px;\n}\n\n.gap-\\[5px\\] {\n gap: 5px;\n}\n\n.gap-2\\.5 {\n gap: .625rem;\n}\n\n.gap-2 {\n gap: .5rem;\n}\n\n.gap-\\[10px\\] {\n gap: 10px;\n}\n\n.gap-5 {\n gap: 1.25rem;\n}\n\n.gap-\\[20px\\] {\n gap: 20px;\n}\n\n.overflow-auto {\n overflow: auto;\n}\n\n.overflow-hidden {\n overflow: hidden;\n}\n\n.overflow-visible {\n overflow: visible;\n}\n\n.overflow-x-auto {\n overflow-x: auto;\n}\n\n.rounded-\\[10px\\] {\n border-radius: 10px;\n}\n\n.rounded-\\[8px\\] {\n border-radius: 8px;\n}\n\n.rounded-lg {\n border-radius: .5rem;\n}\n\n.rounded-md {\n border-radius: .375rem;\n}\n\n.rounded-\\[15px\\] {\n border-radius: 15px;\n}\n\n.rounded-full {\n border-radius: 9999px;\n}\n\n.rounded-\\[50\\%\\] {\n border-radius: 50%;\n}\n\n.rounded-\\[5px\\] {\n border-radius: 5px;\n}\n\n.rounded-\\[60px\\] {\n border-radius: 60px;\n}\n\n.rounded-\\[inherit\\] {\n border-radius: inherit;\n}\n\n.rounded-t-\\[15px\\] {\n border-top-left-radius: 15px;\n border-top-right-radius: 15px;\n}\n\n.border {\n border-width: 1px;\n}\n\n.border-\\[7px\\] {\n border-width: 7px;\n}\n\n.border-\\[4px\\] {\n border-width: 4px;\n}\n\n.border-\\[3px\\] {\n border-width: 3px;\n}\n\n.border-\\[2px\\] {\n border-width: 2px;\n}\n\n.border-b-\\[7px\\] {\n border-bottom-width: 7px;\n}\n\n.border-t {\n border-top-width: 1px;\n}\n\n.border-secondaryLight {\n --tw-border-opacity: 1;\n border-color: rgb(179 179 179 / var(--tw-border-opacity));\n}\n\n.border-white {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n\n.border-\\[\\#E5484D\\] {\n --tw-border-opacity: 1;\n border-color: rgb(229 72 77 / var(--tw-border-opacity));\n}\n\n.border-\\[\\#FFFFF\\] {\n border-color: #FFFFF;\n}\n\n.border-\\[white\\] {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n\n.border-secondaryVLight {\n --tw-border-opacity: 1;\n border-color: rgb(235 235 235 / var(--tw-border-opacity));\n}\n\n.border-b-\\[\\#E5484D\\] {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(229 72 77 / var(--tw-border-opacity));\n}\n\n.bg-\\[\\#000\\], .bg-black {\n --tw-bg-opacity: 1;\n background-color: rgb(0 0 0 / var(--tw-bg-opacity));\n}\n\n.bg-primaryLight {\n --tw-bg-opacity: 1;\n background-color: rgb(86 86 86 / var(--tw-bg-opacity));\n}\n\n.bg-primary {\n --tw-bg-opacity: 1;\n background-color: rgb(29 28 32 / var(--tw-bg-opacity));\n}\n\n.bg-graySelected {\n --tw-bg-opacity: 1;\n background-color: rgb(245 245 245 / var(--tw-bg-opacity));\n}\n\n.bg-transparent {\n background-color: #0000;\n}\n\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n.bg-tertiarySelected {\n --tw-bg-opacity: 1;\n background-color: rgb(216 216 216 / var(--tw-bg-opacity));\n}\n\n.bg-tertiary {\n --tw-bg-opacity: 1;\n background-color: rgb(245 245 245 / var(--tw-bg-opacity));\n}\n\n.bg-mainBlueSelected {\n --tw-bg-opacity: 1;\n background-color: rgb(0 90 218 / var(--tw-bg-opacity));\n}\n\n.bg-mainBlue {\n --tw-bg-opacity: 1;\n background-color: rgb(0 106 255 / var(--tw-bg-opacity));\n}\n\n.bg-black\\/\\[\\.6\\] {\n background-color: #0009;\n}\n\n.bg-\\[\\#565656\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(86 86 86 / var(--tw-bg-opacity));\n}\n\n.bg-\\[\\#E5484D\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(229 72 77 / var(--tw-bg-opacity));\n}\n\n.bg-\\[\\#f12828\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(241 40 40 / var(--tw-bg-opacity));\n}\n\n.bg-\\[\\#171717\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(23 23 23 / var(--tw-bg-opacity));\n}\n\n.bg-\\[\\#FFFFFF\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n.bg-underlay {\n background-color: #00000040;\n}\n\n.bg-\\[\\#F7F7F7\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(247 247 247 / var(--tw-bg-opacity));\n}\n\n.bg-\\[\\#C7DEFF\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(199 222 255 / var(--tw-bg-opacity));\n}\n\n.bg-\\[\\#f3f3f3\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(243 243 243 / var(--tw-bg-opacity));\n}\n\n.bg-secondaryVLight {\n --tw-bg-opacity: 1;\n background-color: rgb(235 235 235 / var(--tw-bg-opacity));\n}\n\n.bg-opacity-90 {\n --tw-bg-opacity: .9;\n}\n\n.bg-\\[url\\(\\'https\\:\\/\\/cdn\\.snapcall\\.io\\/img\\/assist\\/gradient-bg\\.jpg\\'\\)\\] {\n background-image: url(\"https://cdn.snapcall.io/img/assist/gradient-bg.jpg\");\n}\n\n.bg-cover {\n background-size: cover;\n}\n\n.object-cover {\n object-fit: cover;\n}\n\n.p-2\\.5 {\n padding: .625rem;\n}\n\n.p-2 {\n padding: .5rem;\n}\n\n.p-\\[3px\\] {\n padding: 3px;\n}\n\n.p-\\[12px\\] {\n padding: 12px;\n}\n\n.p-\\[15px\\] {\n padding: 15px;\n}\n\n.px-2\\.5 {\n padding-left: .625rem;\n padding-right: .625rem;\n}\n\n.px-2 {\n padding-left: .5rem;\n padding-right: .5rem;\n}\n\n.py-\\[125px\\] {\n padding-top: 125px;\n padding-bottom: 125px;\n}\n\n.py-3 {\n padding-top: .75rem;\n padding-bottom: .75rem;\n}\n\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n.py-\\[9px\\] {\n padding-top: 9px;\n padding-bottom: 9px;\n}\n\n.px-3\\.5 {\n padding-left: .875rem;\n padding-right: .875rem;\n}\n\n.px-3 {\n padding-left: .75rem;\n padding-right: .75rem;\n}\n\n.py-2 {\n padding-top: .5rem;\n padding-bottom: .5rem;\n}\n\n.py-1\\.5 {\n padding-top: .375rem;\n padding-bottom: .375rem;\n}\n\n.py-1 {\n padding-top: .25rem;\n padding-bottom: .25rem;\n}\n\n.px-\\[10px\\] {\n padding-left: 10px;\n padding-right: 10px;\n}\n\n.px-5 {\n padding-left: 1.25rem;\n padding-right: 1.25rem;\n}\n\n.py-\\[25px\\] {\n padding-top: 25px;\n padding-bottom: 25px;\n}\n\n.px-\\[60px\\] {\n padding-left: 60px;\n padding-right: 60px;\n}\n\n.px-\\[20px\\] {\n padding-left: 20px;\n padding-right: 20px;\n}\n\n.pt-2\\.5 {\n padding-top: .625rem;\n}\n\n.pt-2 {\n padding-top: .5rem;\n}\n\n.pb-2\\.5 {\n padding-bottom: .625rem;\n}\n\n.pb-2 {\n padding-bottom: .5rem;\n}\n\n.pt-\\[14px\\] {\n padding-top: 14px;\n}\n\n.pb-\\[20px\\] {\n padding-bottom: 20px;\n}\n\n.pb-\\[25px\\] {\n padding-bottom: 25px;\n}\n\n.pb-\\[9px\\] {\n padding-bottom: 9px;\n}\n\n.pt-\\[20px\\] {\n padding-top: 20px;\n}\n\n.text-center {\n text-align: center;\n}\n\n.text-base {\n letter-spacing: -.02em;\n font-size: 16px;\n line-height: 19px;\n}\n\n.text-sm {\n letter-spacing: -.02em;\n font-size: 14px;\n line-height: 17px;\n}\n\n.text-xs {\n letter-spacing: -.02em;\n font-size: 12px;\n line-height: 14px;\n}\n\n.text-\\[112px\\] {\n font-size: 112px;\n}\n\n.text-xl {\n letter-spacing: -.02em;\n font-size: 20px;\n line-height: 24px;\n}\n\n.text-lg {\n letter-spacing: -.02em;\n font-size: 18px;\n line-height: 22px;\n}\n\n.font-medium {\n font-weight: 500;\n}\n\n.font-semibold {\n font-weight: 600;\n}\n\n.font-normal {\n font-weight: 400;\n}\n\n.font-bold {\n font-weight: 700;\n}\n\n.leading-\\[20px\\] {\n line-height: 20px;\n}\n\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n.text-primary {\n --tw-text-opacity: 1;\n color: rgb(29 28 32 / var(--tw-text-opacity));\n}\n\n.text-mainBlue {\n --tw-text-opacity: 1;\n color: rgb(0 106 255 / var(--tw-text-opacity));\n}\n\n.text-white\\/80 {\n color: #fffc;\n}\n\n.text-secondary {\n --tw-text-opacity: 1;\n color: rgb(134 134 134 / var(--tw-text-opacity));\n}\n\n.text-black {\n --tw-text-opacity: 1;\n color: rgb(0 0 0 / var(--tw-text-opacity));\n}\n\n.text-primaryLight {\n --tw-text-opacity: 1;\n color: rgb(86 86 86 / var(--tw-text-opacity));\n}\n\n.underline {\n text-decoration-line: underline;\n}\n\n.antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.opacity-\\[0\\.4\\] {\n opacity: .4;\n}\n\n.opacity-0 {\n opacity: 0;\n}\n\n.opacity-90 {\n opacity: .9;\n}\n\n.outline {\n outline-style: solid;\n}\n\n.ring-\\[3px\\] {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.ring-cta {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(38 138 250 / var(--tw-ring-opacity));\n}\n\n.blur {\n --tw-blur: blur(8px);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.transition {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter, backdrop-filter;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.transition-\\[transform\\,border-radius\\] {\n transition-property: transform, border-radius;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.duration-300 {\n transition-duration: .3s;\n}\n\n.ease-in-out {\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.ease-in {\n transition-timing-function: cubic-bezier(.4, 0, 1, 1);\n}\n\n.ease-out {\n transition-timing-function: cubic-bezier(0, 0, .2, 1);\n}\n\n.inter {\n font-family: Inter, sans-serif;\n}\n\n@supports (font-variation-settings: normal) {\n .inter {\n font-family: Inter var, sans-serif;\n }\n}\n\n.first-letter\\:capitalize:first-letter {\n text-transform: capitalize;\n}\n\n.focus\\:outline-none:focus {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.disabled\\:bg-secondaryLight:disabled {\n --tw-bg-opacity: 1;\n background-color: rgb(179 179 179 / var(--tw-bg-opacity));\n}\n\n.disabled\\:bg-graySelected:disabled {\n --tw-bg-opacity: 1;\n background-color: rgb(245 245 245 / var(--tw-bg-opacity));\n}\n\n.disabled\\:text-secondaryLight:disabled {\n --tw-text-opacity: 1;\n color: rgb(179 179 179 / var(--tw-text-opacity));\n}\n\n.disabled\\:opacity-50:disabled {\n opacity: .5;\n}\n\n";
13045
13250
 
13046
13251
 
13047
13252
  var $9833f4335ab609cd$exports = {};
@@ -13051,7 +13256,8 @@ $9833f4335ab609cd$exports = "*, :before, :after {\n box-sizing: border-box;\n
13051
13256
  const $e68207026aca356b$var$defaultOptions = {
13052
13257
  recorder: {
13053
13258
  enabled: false,
13054
- defaultState: "photo"
13259
+ defaultMode: "photo",
13260
+ defaultMedia: "camera"
13055
13261
  },
13056
13262
  sharedURL: window.location.href,
13057
13263
  showMenuButton: true,
@@ -13081,7 +13287,8 @@ const $e68207026aca356b$export$3f94917203ab7078 = {
13081
13287
  init: ({ element: element , ...options })=>{
13082
13288
  if (typeof options.recorder === "boolean") options.recorder = {
13083
13289
  enabled: options.recorder,
13084
- defaultState: "photo"
13290
+ defaultMode: "photo",
13291
+ defaultMedia: "camera"
13085
13292
  };
13086
13293
  if (element?.nodeType !== window.Node.ELEMENT_NODE) throw new Error('The "element" property must be a valid element!');
13087
13294
  const mergedOptions = (0, $6b4cf4c12c735fdf$export$6969335ea1e4e77c)($e68207026aca356b$var$defaultOptions, options);
@@ -13114,12 +13321,14 @@ const $e68207026aca356b$export$3f94917203ab7078 = {
13114
13321
  ]
13115
13322
  }));
13116
13323
  if (mergedOptions.tracking) (0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).init(3111933, 6);
13324
+ (0, $57b7750d9786bf6f$export$1cbfb36c1655a9a)(rootElement, element);
13117
13325
  },
13118
13326
  initGreeting: (element, onGreetingDone)=>{
13119
13327
  const rootElement = (0, $jQDcL$reactdomclient.createRoot)(element);
13120
13328
  rootElement.render(/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3305ca02e86dabd1$export$2e2bcd8739ae039), {
13121
13329
  onGreetingDone: onGreetingDone
13122
13330
  }));
13331
+ (0, $57b7750d9786bf6f$export$1cbfb36c1655a9a)(rootElement, element);
13123
13332
  },
13124
13333
  setExtraSettingsOptions: (extraOptions)=>{
13125
13334
  const event = new CustomEvent("streamUISetExtraSettingsOptions", {