@snapcall/stream-ui 1.11.5 → 1.12.1

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.
@@ -6,7 +6,7 @@ import $3Sbms$styledcomponents, {keyframes as $3Sbms$keyframes, ThemeProvider as
6
6
  import $3Sbms$react, {useState as $3Sbms$useState, useRef as $3Sbms$useRef, useEffect as $3Sbms$useEffect, useContext as $3Sbms$useContext, useMemo as $3Sbms$useMemo, createContext as $3Sbms$createContext, useReducer as $3Sbms$useReducer, useLayoutEffect as $3Sbms$useLayoutEffect, useCallback as $3Sbms$useCallback, forwardRef as $3Sbms$forwardRef} from "react";
7
7
  import "inobounce";
8
8
  import $3Sbms$i18next from "i18next";
9
- import {initReactI18next as $3Sbms$initReactI18next, useTranslation as $3Sbms$useTranslation} from "react-i18next";
9
+ import {initReactI18next as $3Sbms$initReactI18next, useTranslation as $3Sbms$useTranslation, Trans as $3Sbms$Trans} from "react-i18next";
10
10
  import {parse as $3Sbms$parse, getParser as $3Sbms$getParser} from "bowser";
11
11
  import {v4 as $3Sbms$v4} from "uuid";
12
12
  import {WebSocketTransport as $3Sbms$WebSocketTransport, Peer as $3Sbms$Peer} from "protoo-client";
@@ -18,11 +18,11 @@ import {createPortal as $3Sbms$createPortal} from "react-dom";
18
18
  import {toCanvas as $3Sbms$toCanvas} from "qrcode";
19
19
  import {useOverlayTriggerState as $3Sbms$useOverlayTriggerState, useToggleState as $3Sbms$useToggleState} from "react-stately";
20
20
  import $3Sbms$classnames from "classnames";
21
- import {useToggleButton as $3Sbms$useToggleButton, useFocusRing as $3Sbms$useFocusRing, useButton as $3Sbms$useButton} from "react-aria";
22
- import {useModalOverlay as $3Sbms$useModalOverlay, Overlay as $3Sbms$Overlay} from "@react-aria/overlays";
21
+ import {useToggleButton as $3Sbms$useToggleButton, useFocusRing as $3Sbms$useFocusRing, useModalOverlay as $3Sbms$useModalOverlay, Overlay as $3Sbms$Overlay, useButton as $3Sbms$useButton} from "react-aria";
23
22
  import {useViewportSize as $3Sbms$useViewportSize} from "@react-aria/utils";
24
23
  import {CSSTransition as $3Sbms$CSSTransition} from "react-transition-group";
25
24
  import {useHover as $3Sbms$useHover} from "@react-aria/interactions";
25
+ import {useModalOverlay as $3Sbms$useModalOverlay1, Overlay as $3Sbms$Overlay1} from "@react-aria/overlays";
26
26
  import $3Sbms$reactcontentloader from "react-content-loader";
27
27
 
28
28
  function $parcel$interopDefault(a) {
@@ -315,6 +315,24 @@ const $a5146f9062d7bf28$export$3a57e165650c636f = (message, options = {})=>{
315
315
  };
316
316
 
317
317
 
318
+ const $35b37252690084e8$export$1cbfb36c1655a9a = (root, element)=>{
319
+ const mutationObserver = new MutationObserver((mutationRecords)=>{
320
+ mutationRecords.forEach((record)=>{
321
+ record.removedNodes.forEach((node)=>{
322
+ if (node.contains(element)) {
323
+ root.unmount();
324
+ mutationObserver.disconnect();
325
+ }
326
+ });
327
+ });
328
+ });
329
+ mutationObserver.observe(document.documentElement, {
330
+ childList: true,
331
+ subtree: true
332
+ });
333
+ };
334
+
335
+
318
336
 
319
337
 
320
338
 
@@ -467,6 +485,8 @@ const $18fb8799f38eb407$export$84584c2a98eb6753 = {
467
485
  someone: "Someone",
468
486
  camera: "Camera",
469
487
  microphone: "Microphone",
488
+ photo: "Photo",
489
+ video: "Video",
470
490
  screen: "Screen",
471
491
  speaker: "Speaker",
472
492
  user: "User",
@@ -474,7 +494,10 @@ const $18fb8799f38eb407$export$84584c2a98eb6753 = {
474
494
  from: "From",
475
495
  accept: "Accept",
476
496
  decline: "Decline",
477
- you: "You"
497
+ you: "You",
498
+ cancel: "Cancel",
499
+ confirm: "Confirm",
500
+ remove: "Remove"
478
501
  },
479
502
  greeting: {
480
503
  mainTitle: "Welcome to SnapCall",
@@ -484,6 +507,46 @@ const $18fb8799f38eb407$export$84584c2a98eb6753 = {
484
507
  nameSubmit: "Join Conversation",
485
508
  footerTitle: "Powered by SnapCall",
486
509
  footerDescription: "Meet SnapCall, the easiest way to add real-time video to platform, product or service."
510
+ },
511
+ recorder: {
512
+ submissionTitle: "Thank you for your submission!",
513
+ submissionDescription: "Your photo/video has been successfully submitted. We will review it and get back to you shortly.",
514
+ confirmRemovalTitle: "Confirm deletion",
515
+ confirmRemovalDescription: "Are you sure you want to delete this photo/video? This action cannot be undone.",
516
+ elementBeingProcessed: "Please wait while your {{ type }} is being processed...",
517
+ waitVideo: "A video may take up to 15 seconds to be ready.",
518
+ elementCaptureSuccess: "{{ type }} captured successfully",
519
+ takeNewElement: "Capture a new {{ type }}",
520
+ sendElement: "Send {{ type }}",
521
+ sendElements: "Send {{ count }} elements",
522
+ allowAccess: "Allow access",
523
+ okay: "Okay",
524
+ allowCamMicAccess: "Allow access to camera and microphone",
525
+ allowScreenShareAccess: "Allow access to screen sharing",
526
+ permissionDeniedTitle: "Something went wrong!",
527
+ 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.",
528
+ photoInstructionsTitle: "Ready to snap a photo?",
529
+ videoInstructionsTitle: "Ready to record a video?",
530
+ screenShareInstructionsTitle: "Ready to share your screen?",
531
+ instructions: {
532
+ allowAccessOnPrompt: "When prompted, <1>allow access</1> to the camera and microphone.",
533
+ tapPhotoButton: "Tap the <1 /><2>Camera button</2> to take a photo.",
534
+ multiplePhotos: "Feel free to take multiple photos for more details.",
535
+ reviewAndSendPhotos: "Review your photo and <1>send it when you're satisfied.</1>",
536
+ reviewAndSendScreenShare: "Review your video and <1>send it when you're satisfied.</1>",
537
+ tapVideoButton: "Tap the <1 /><2>Record button</2> to start recording.",
538
+ videoSpeech: "You can <1>talk during</1> the recording to provide additional information.",
539
+ tapStopVideoButton: "When you're done, tap the <1 /><2>Stop button</2>.",
540
+ reviewAndSendVideos: "Review your video and <1>send it when you're satisfied</1>.",
541
+ tapScreenShareButton: "Tap <1>Record my screen</1> to begin recording.",
542
+ tapStopScreenShareButton: "When you're done, tap <1>Stop recording</1>."
543
+ },
544
+ switchToMobileTitle: "Switch to your mobile device",
545
+ switchToMobileDescription: "Experience greater convenience by using your phone to take photos and record videos.",
546
+ useDesktopVersion: "Use the desktop version",
547
+ scanQRCode: "Scan this QR code with a compatible device.",
548
+ startScreenShareButton: "Record my screen",
549
+ stopScreenShareButton: "Stop recording"
487
550
  }
488
551
  }
489
552
  };
@@ -621,6 +684,8 @@ const $c5472fb74fa04782$export$acb2a88f7d552ebf = {
621
684
  someone: "Quelqu'un",
622
685
  camera: "Cam\xe9ra",
623
686
  microphone: "Micro",
687
+ photo: "Photo",
688
+ video: "Vid\xe9o",
624
689
  screen: "\xc9cran",
625
690
  speaker: "Haut-parleur",
626
691
  user: "Utilisateur",
@@ -628,7 +693,10 @@ const $c5472fb74fa04782$export$acb2a88f7d552ebf = {
628
693
  from: "Depuis",
629
694
  accept: "Accepter",
630
695
  decline: "D\xe9cliner",
631
- you: "Vous"
696
+ you: "Vous",
697
+ cancel: "Annuler",
698
+ confirm: "Confirmer",
699
+ remove: "Enlever"
632
700
  },
633
701
  greeting: {
634
702
  mainTitle: "Bienvenue sur SnapCall",
@@ -638,6 +706,46 @@ const $c5472fb74fa04782$export$acb2a88f7d552ebf = {
638
706
  nameSubmit: "Rejoindre la conversation",
639
707
  footerTitle: "Propuls\xe9 par SnapCall",
640
708
  footerDescription: "D\xe9couvrez SnapCall, ajoutez de la vid\xe9o en temps r\xe9el \xe0 n'importe quelle plateforme, produit ou service."
709
+ },
710
+ recorder: {
711
+ submissionTitle: "Merci pour votre soumission !",
712
+ submissionDescription: "Votre photo/vid\xe9o a \xe9t\xe9 envoy\xe9e avec succ\xe8s. Nous l'examinerons et reviendrons vers vous bient\xf4t.",
713
+ confirmRemovalTitle: "Confirmer la suppression",
714
+ confirmRemovalDescription: "Voulez-vous vraiment supprimer cette photo/vid\xe9o ? Cette action ne peut pas \xeatre annul\xe9e.",
715
+ elementBeingProcessed: "Veuillez patienter un moment pendant que votre {{ type }} est en cours de traitement...",
716
+ waitVideo: "Cela peut prendre jusqu'\xe0 15 secondes pour qu'une vid\xe9o soit pr\xeate.",
717
+ elementCaptureSuccess: "{{ type }} captur\xe9(e) avec succ\xe8s",
718
+ takeNewElement: "Prendre une nouvelle {{ type }}",
719
+ sendElement: "Envoyer la {{ type }}",
720
+ sendElements: "Envoyer {{ count }} \xe9l\xe9ments",
721
+ allowAccess: "Autoriser l'acc\xe8s",
722
+ okay: "D'accord",
723
+ allowCamMicAccess: "Autoriser l'acc\xe8s \xe0 la cam\xe9ra et au micro",
724
+ allowScreenShareAccess: "Autoriser l'acc\xe8s au partage d'\xe9cran",
725
+ permissionDeniedTitle: "Quelque chose s'est mal pass\xe9 !",
726
+ 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.",
727
+ photoInstructionsTitle: "Pr\xeat(e) \xe0 prendre une photo ?",
728
+ videoInstructionsTitle: "Pr\xeat(e) \xe0 enregistrer une vid\xe9o ?",
729
+ screenShareInstructionsTitle: "Pr\xeat(e) \xe0 partager votre \xe9cran ?",
730
+ instructions: {
731
+ allowAccessOnPrompt: "Lorsque vous y \xeates invit\xe9(e), <1>autorisez l'acc\xe8s</1> \xe0 la cam\xe9ra et au microphone.",
732
+ tapPhotoButton: "Appuyez sur le <1 /><2>bouton Appareil photo</2> pour prendre une photo.",
733
+ multiplePhotos: "N'h\xe9sitez pas \xe0 prendre plusieurs photos pour plus de d\xe9tails.",
734
+ reviewAndSendPhotos: "Vous pouvez revoir votre photo, puis <1>l'envoyer lorsque vous avez termin\xe9.</1>",
735
+ tapVideoButton: "Appuyez sur le <1 /><2>bouton d'enregistrement</2> pour d\xe9marrer un enregistrement.",
736
+ videoSpeech: "Vous pouvez <1>parler pendant</1> l'enregistrement pour ajouter des d\xe9tails.",
737
+ tapStopVideoButton: "Lorsque vous avez termin\xe9, appuyez sur le <1 /><2>bouton Arr\xeater</2>.",
738
+ reviewAndSendVideos: "Vous pouvez revoir votre vid\xe9o, puis <1>l'envoyer lorsque vous avez termin\xe9</2>.",
739
+ tapScreenShareButton: "Appuyez sur <1>Enregistrer \xe9cran</1> pour d\xe9marrer un enregistrement.",
740
+ tapStopScreenShareButton: "Lorsque vous avez termin\xe9, appuyez sur <1>Stop enregistrement</1>.",
741
+ reviewAndSendScreenShare: "Vous pouvez revoir votre vid\xe9o, puis <1>l'envoyer lorsque vous avez termin\xe9.</1>"
742
+ },
743
+ switchToMobileTitle: "Passez sur votre mobile",
744
+ switchToMobileDescription: "Profitez d'une exp\xe9rience encore plus pratique en utilisant votre t\xe9l\xe9phone pour prendre des photos et enregistrer des vid\xe9os.",
745
+ useDesktopVersion: "Continuer",
746
+ scanQRCode: "Scannez ce code QR avec un appareil compatible.",
747
+ startScreenShareButton: "Enregistrer \xe9cran",
748
+ stopScreenShareButton: "Stop enregistrement"
641
749
  }
642
750
  }
643
751
  };
@@ -779,6 +887,8 @@ const $b7790fb9e48df5c4$export$3486a10f30cf1ee4 = {
779
887
  someone: "Qualcuno",
780
888
  camera: "Telecamera",
781
889
  microphone: "Microfono",
890
+ photo: "Foto",
891
+ video: "Video",
782
892
  screen: "Schermo",
783
893
  speaker: "Altoparlante",
784
894
  user: "Utente",
@@ -786,7 +896,10 @@ const $b7790fb9e48df5c4$export$3486a10f30cf1ee4 = {
786
896
  from: "Da",
787
897
  accept: "Accettare",
788
898
  decline: "Declinare",
789
- you: "Voi"
899
+ you: "Voi",
900
+ cancel: "Annulla",
901
+ confirm: "Confermare",
902
+ remove: "Rimuovere"
790
903
  },
791
904
  greeting: {
792
905
  mainTitle: "Benvenuto a SnapCall",
@@ -796,6 +909,46 @@ const $b7790fb9e48df5c4$export$3486a10f30cf1ee4 = {
796
909
  nameSubmit: "Partecipa alla conversazione",
797
910
  footerTitle: "Offerto da SnapCall",
798
911
  footerDescription: "Incontrare SnapCall, il modo pi\xf9 semplice per aggiungere video in tempo reale a piattaforma, prodotto o servizio."
912
+ },
913
+ recorder: {
914
+ submissionTitle: "Grazie per il tuo invio!",
915
+ submissionDescription: "La tua foto/video \xe8 stata inviata con successo. La esamineremo e ti risponderemo al pi\xf9 presto.",
916
+ confirmRemovalTitle: "Conferma rimozione",
917
+ confirmRemovalDescription: "Sei sicuro di voler rimuovere questa foto/video? Questa azione non pu\xf2 essere annullata.",
918
+ elementBeingProcessed: "Attendi un momento mentre il tuo {{ type }} viene elaborato...",
919
+ waitVideo: "Potrebbero essere necessari fino a 15 secondi affinch\xe9 un video sia pronto.",
920
+ elementCaptureSuccess: "{{ type }} catturato con successo",
921
+ takeNewElement: "Cattura un nuovo {{ type }}",
922
+ sendElement: "Invia {{ type }}",
923
+ sendElements: "Invia {{ count }} elementi",
924
+ allowAccess: "Consenti accesso",
925
+ okay: "Okay",
926
+ allowCamMicAccess: "Consenti accesso a fotocamera e microfono",
927
+ allowScreenShareAccess: "Consenti accesso alla condivisione dello schermo",
928
+ permissionDeniedTitle: "Qualcosa \xe8 andato storto!",
929
+ 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.",
930
+ photoInstructionsTitle: "Pronto a scattare una foto?",
931
+ videoInstructionsTitle: "Pronto a registrare un video?",
932
+ screenShareInstructionsTitle: "Pronto a condividere il tuo schermo?",
933
+ instructions: {
934
+ allowAccessOnPrompt: "Quando richiesto, <1>consenti l'accesso</1> a fotocamera e microfono.",
935
+ tapPhotoButton: "Tocca il pulsante <1 /><2>Fotocamera</2> per scattare una foto.",
936
+ multiplePhotos: "Non esitare a scattare pi\xf9 foto per maggiori dettagli.",
937
+ reviewAndSendPhotos: "Puoi rivedere la tua foto e poi <1>inviarla quando hai finito.</1>",
938
+ tapVideoButton: "Tocca il pulsante <1 /><2>Registra</2> per avviare una registrazione.",
939
+ videoSpeech: "Puoi <1>parlare durante</1> la registrazione per aggiungere dettagli.",
940
+ tapStopVideoButton: "Quando hai finito, tocca il pulsante <1 /><2>Ferma</2>.",
941
+ reviewAndSendVideos: "Puoi rivedere il tuo video e poi <1>inviarlo quando hai finito</1>.",
942
+ tapScreenShareButton: "Tocca <1>Registra il mio schermo</1> per avviare una registrazione.",
943
+ tapStopScreenShareButton: "Quando hai finito, tocca <1>Ferma registrazione</1>.",
944
+ reviewAndSendScreenShare: "Puoi rivedere il tuo video e poi <1>inviarlo quando hai finito.</1>"
945
+ },
946
+ switchToMobileTitle: "Passa al tuo dispositivo mobile",
947
+ switchToMobileDescription: "Goditi un'esperienza ancora pi\xf9 pratica utilizzando il tuo telefono per scattare foto e registrare video.",
948
+ useDesktopVersion: "Usa la versione desktop",
949
+ scanQRCode: "Scansiona questo codice QR con un dispositivo compatibile.",
950
+ startScreenShareButton: "Registra il mio schermo",
951
+ stopScreenShareButton: "Ferma registrazione"
799
952
  }
800
953
  }
801
954
  };
@@ -1439,6 +1592,49 @@ class $0148b6fd862a22e8$export$2e2bcd8739ae039 {
1439
1592
  }
1440
1593
 
1441
1594
 
1595
+ const $107ba89b5d0109ab$var$audioContextConstructor = window.AudioContext || window.webkitAudioContext;
1596
+ class $107ba89b5d0109ab$export$22ddc20344c01547 {
1597
+ audioSources = {};
1598
+ tracks = {};
1599
+ constructor(){
1600
+ this.audioContext = new $107ba89b5d0109ab$var$audioContextConstructor();
1601
+ this.audioDestination = this.audioContext.createMediaStreamDestination();
1602
+ }
1603
+ getSetting(identifier) {
1604
+ return this.tracks[identifier]?.getSettings();
1605
+ }
1606
+ removeTrack(identifier) {
1607
+ const track = this.tracks[identifier];
1608
+ if (track) {
1609
+ this.audioSources[identifier]?.disconnect();
1610
+ delete this.tracks[identifier];
1611
+ delete this.audioSources[identifier];
1612
+ track.stop();
1613
+ }
1614
+ }
1615
+ addTrack(identifier, track) {
1616
+ if (track.kind === "audio") {
1617
+ this.removeTrack(identifier);
1618
+ const stream = new MediaStream([
1619
+ track
1620
+ ]);
1621
+ const audioSource = this.audioContext.createMediaStreamSource(stream);
1622
+ this.audioSources[identifier] = audioSource;
1623
+ this.tracks[identifier] = track;
1624
+ if (this.audioDestination) audioSource.connect(this.audioDestination);
1625
+ }
1626
+ }
1627
+ getFinalTrack() {
1628
+ return this.audioDestination.stream.getTracks()[0];
1629
+ }
1630
+ removeAll() {
1631
+ Object.keys(this.tracks).forEach((identifier)=>{
1632
+ this.removeTrack(identifier);
1633
+ });
1634
+ }
1635
+ }
1636
+
1637
+
1442
1638
  const $c31e3fb4360572af$var$log = new (0, $0f65a9eaf4a1e910$export$2e2bcd8739ae039)("StreamerClient");
1443
1639
  const $c31e3fb4360572af$export$103bedf43ba882db = {
1444
1640
  WEBRTC_FAILED: "WRTC1",
@@ -1978,6 +2174,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
1978
2174
  this.audioLevel?.release();
1979
2175
  this.audioLevel = undefined;
1980
2176
  if (this.micProducer && this.micProducer.track) {
2177
+ this.audioMedia?.removeTrack("mic");
1981
2178
  this.micProducer?.track?.stop();
1982
2179
  $c31e3fb4360572af$var$log.log("switchMicrophone", "stopping previous track");
1983
2180
  }
@@ -1990,7 +2187,9 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
1990
2187
  }));
1991
2188
  this.audioLevel = new (0, $67e45b2e30dcc030$export$ea669869acd8f177)(stream, this);
1992
2189
  // this.audioLevel.analyse();
2190
+ this.audioMedia = this.audioMedia || new (0, $107ba89b5d0109ab$export$22ddc20344c01547)();
1993
2191
  const track = stream.getAudioTracks()[0];
2192
+ this.audioMedia.addTrack("mic", track);
1994
2193
  await this.micProducer?.replaceTrack({
1995
2194
  track: track
1996
2195
  });
@@ -2066,10 +2265,12 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2066
2265
  const transport = await this.getTransport("audio", "send");
2067
2266
  this.audioLevel = new (0, $67e45b2e30dcc030$export$ea669869acd8f177)(stream, this);
2068
2267
  // this.audioLevel.analyse();
2268
+ this.audioMedia = this.audioMedia || new (0, $107ba89b5d0109ab$export$22ddc20344c01547)();
2069
2269
  const track = stream.getAudioTracks()[0];
2270
+ this.audioMedia.addTrack("mic", track);
2070
2271
  const deviceType = "microphone";
2071
2272
  const micProducer = await transport.produce({
2072
- track: track,
2273
+ track: this.audioMedia.getFinalTrack(),
2073
2274
  codecOptions: {
2074
2275
  opusStereo: true,
2075
2276
  opusDtx: true
@@ -2146,6 +2347,8 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2146
2347
  this.mediaPipe.clean();
2147
2348
  this.mediaPipe = undefined;
2148
2349
  }
2350
+ this.audioMedia?.removeAll();
2351
+ this.audioMedia = undefined;
2149
2352
  this.webcamTrack?.stop();
2150
2353
  this.webcamTrack = null;
2151
2354
  this.protooTransport.close();
@@ -2304,14 +2507,13 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2304
2507
  optionalParam.facingMode = this.webcam.facingMode;
2305
2508
  } else {
2306
2509
  const webcams = Array.from(this.webcams.keys());
2307
- const deviceId = this.webcam?.device?.deviceId || "unknow";
2510
+ const deviceId = this.webcam?.device?.deviceId || "unknown";
2308
2511
  let newWebcamIndex = webcams.indexOf(deviceId);
2309
2512
  if (newWebcamIndex < webcams.length - 1) newWebcamIndex++;
2310
2513
  else newWebcamIndex = 0;
2311
2514
  const newWebcamDevice = this.webcams.get(webcams[newWebcamIndex]);
2312
2515
  if (!newWebcamDevice) throw new Error("no webcam device");
2313
2516
  this.webcam.device = newWebcamDevice;
2314
- this.webcam.resolution = "hd";
2315
2517
  optionalParam.deviceId = {
2316
2518
  ideal: this.webcam.device?.deviceId
2317
2519
  };
@@ -2327,8 +2529,9 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2327
2529
  ideal: this.webcam.device.deviceId
2328
2530
  };
2329
2531
  }
2330
- if (resolution) this.webcam.resolution = resolution;
2331
2532
  }
2533
+ this.webcam.resolution = resolution || this.webcam.resolution || "hd";
2534
+ this.webcam.framerate = frameRate || this.webcam.framerate;
2332
2535
  let usedResolution = $c31e3fb4360572af$export$d21ffcc5eb136bfa[resolution || this.webcam.resolution];
2333
2536
  if (this.useVideoBackground) usedResolution = {
2334
2537
  width: {
@@ -2346,7 +2549,6 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2346
2549
  });
2347
2550
  const mediaStream = await this.handleGetUserMediaError("webcam", navigator.mediaDevices.getUserMedia({
2348
2551
  video: {
2349
- frameRate: frameRate,
2350
2552
  ...optionalParam,
2351
2553
  ...usedResolution
2352
2554
  }
@@ -2388,6 +2590,8 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2388
2590
  };
2389
2591
  }
2390
2592
  if (!this.webcam.device) throw new Error("no webcam devices");
2593
+ this.webcam.resolution = config?.resolution || this.webcam.resolution || "hd";
2594
+ this.webcam.framerate = config?.frameRate || this.webcam.framerate;
2391
2595
  let usedResolution = $c31e3fb4360572af$export$d21ffcc5eb136bfa[config?.resolution || this.webcam.resolution];
2392
2596
  if (this.useVideoBackground) usedResolution = {
2393
2597
  width: {
@@ -2494,10 +2698,13 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2494
2698
  });
2495
2699
  this.dispatchEvent(event);
2496
2700
  }
2497
- async enableScreenshare() {
2701
+ async enableScreenshare(option = {
2702
+ audioTransportOption: "classic"
2703
+ }) {
2498
2704
  if (!this.permissions.find((permission)=>permission === "screen_sharing")) throw new Error("feature not allowed");
2705
+ if (option.audioTransportOption === "mix" && !this.micProducer) throw new Error("microphone not activated and audio mix transport requested");
2499
2706
  const stream = await this.handleGetUserMediaError("screen", navigator.mediaDevices.getDisplayMedia({
2500
- audio: true,
2707
+ audio: option.audioTransportOption !== "none",
2501
2708
  video: {
2502
2709
  displaySurface: "monitor",
2503
2710
  logicalSurface: true,
@@ -2517,13 +2724,23 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2517
2724
  const audioTransport = await this.getTransport("audio", "send");
2518
2725
  const audioTrack = stream.getAudioTracks()[0];
2519
2726
  if (audioTrack) {
2520
- this.screenshareAudioProducer = await this.streamerMediasoup?.produceAudio(audioTransport, audioTrack, {
2521
- deviceType: deviceType,
2522
- share: true
2523
- });
2524
- this.screenshareVideoProducer?.on("transportclose", ()=>{
2525
- this.screenshareVideoProducer = undefined;
2526
- });
2727
+ if (option.audioTransportOption === "classic") {
2728
+ this.screenshareAudioProducer = await this.streamerMediasoup?.produceAudio(audioTransport, audioTrack, {
2729
+ deviceType: deviceType,
2730
+ share: true
2731
+ });
2732
+ this.screenshareVideoProducer?.on("transportclose", ()=>{
2733
+ this.screenshareVideoProducer = undefined;
2734
+ });
2735
+ } else if (option.audioTransportOption === "mix") {
2736
+ this.audioMedia = this.audioMedia || new (0, $107ba89b5d0109ab$export$22ddc20344c01547)();
2737
+ this.audioMedia.addTrack("screen", audioTrack);
2738
+ const finalTracks = this.audioMedia.getFinalTrack();
2739
+ // currently microphone producer has to be enabled before.
2740
+ if (finalTracks && this.micProducer) this.micProducer.replaceTrack({
2741
+ track: finalTracks
2742
+ });
2743
+ }
2527
2744
  }
2528
2745
  const track = stream.getVideoTracks()[0];
2529
2746
  const videoTransport = await this.getTransport("video", "send");
@@ -2550,6 +2767,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2550
2767
  });
2551
2768
  this.screenshareVideoProducer = undefined;
2552
2769
  }
2770
+ this.audioMedia?.removeTrack("screen");
2553
2771
  if (this.screenshareAudioProducer) {
2554
2772
  this.screenshareAudioProducer.close();
2555
2773
  if (this.protoo.connected) await this.protoo.request("closeProducer", {
@@ -2847,7 +3065,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2847
3065
  return this.webcam;
2848
3066
  }
2849
3067
  getCurrentMicrophoneId() {
2850
- return this.micProducer?.track?.getSettings().deviceId;
3068
+ return this.audioMedia?.getSetting("mic") || this.micProducer?.track?.getSettings().deviceId;
2851
3069
  }
2852
3070
  getCurrentSpeakerId() {
2853
3071
  const audioRendererKeys = Object.keys(this.audioRenderers);
@@ -10521,6 +10739,8 @@ const $4fb4815baa04b470$export$914ddf2021ea8ee6 = (0, $3Sbms$styledcomponents).d
10521
10739
 
10522
10740
 
10523
10741
 
10742
+
10743
+
10524
10744
 
10525
10745
 
10526
10746
 
@@ -10566,6 +10786,61 @@ const $5a48b7481979330f$export$d2b052e7b4be1756 = /*#__PURE__*/ (0, $3Sbms$forwa
10566
10786
 
10567
10787
 
10568
10788
 
10789
+ const $91e337bf8187124b$export$a703eb468fcf7e69 = (props)=>{
10790
+ const { state: state , children: children } = props;
10791
+ const ref = (0, $3Sbms$useRef)(null);
10792
+ const { modalProps: modalProps , underlayProps: underlayProps } = (0, $3Sbms$useModalOverlay)({
10793
+ isDismissable: true,
10794
+ ...props
10795
+ }, state, ref);
10796
+ const [exited, setExited] = (0, $3Sbms$useState)(!state.isOpen);
10797
+ if (!(state.isOpen || !exited)) return null;
10798
+ return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Overlay), {
10799
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$CSSTransition), {
10800
+ in: state.isOpen,
10801
+ appear: true,
10802
+ onEntered: ()=>setExited(false),
10803
+ onExited: ()=>setExited(true),
10804
+ timeout: {
10805
+ enter: 0,
10806
+ exit: 300
10807
+ },
10808
+ classNames: {
10809
+ enter: "opacity-0",
10810
+ enterDone: "opacity-1 transition ease-in",
10811
+ exit: "opacity-0 transition ease-out"
10812
+ },
10813
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
10814
+ className: "fixed z-[100] inset-0 bg-black bg-opacity-90 flex justify-center items-center inter",
10815
+ ...underlayProps,
10816
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$CSSTransition), {
10817
+ in: state.isOpen,
10818
+ appear: true,
10819
+ nodeRef: ref,
10820
+ timeout: {
10821
+ enter: 0,
10822
+ exit: 300
10823
+ },
10824
+ classNames: {
10825
+ appear: "translate-y-2",
10826
+ appearDone: "translate-y-0 transition ease-in",
10827
+ exit: "translate-y-2 transition ease-out"
10828
+ },
10829
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
10830
+ ...modalProps,
10831
+ ref: ref,
10832
+ children: children
10833
+ })
10834
+ })
10835
+ })
10836
+ })
10837
+ });
10838
+ };
10839
+
10840
+
10841
+
10842
+
10843
+
10569
10844
 
10570
10845
 
10571
10846
 
@@ -10581,6 +10856,7 @@ const $0590ee3141e14968$export$353f5b6fc5456de1 = /*#__PURE__*/ (0, $3Sbms$forwa
10581
10856
  primary: (0, $3Sbms$classnames)(isActive ? "bg-primaryLight" : "bg-primary", "text-white disabled:bg-secondaryLight"),
10582
10857
  secondary: (0, $3Sbms$classnames)(isActive ? "bg-graySelected" : "bg-transparent", "text-primary border border-secondaryLight disabled:text-secondaryLight disabled:bg-graySelected"),
10583
10858
  basic: (0, $3Sbms$classnames)(isActive ? "bg-graySelected" : "bg-white", "text-primary disabled:text-secondaryLight disabled:bg-graySelected"),
10859
+ tertiary: (0, $3Sbms$classnames)(isActive ? "bg-tertiarySelected" : "bg-tertiary", "text-mainBlue disabled:opacity-50"),
10584
10860
  custom: ""
10585
10861
  };
10586
10862
  const sizeStyle = {
@@ -10608,12 +10884,6 @@ const $0590ee3141e14968$export$353f5b6fc5456de1 = /*#__PURE__*/ (0, $3Sbms$forwa
10608
10884
 
10609
10885
  function $c0bb66c3d546ed81$export$2b77a92f1a5ad772(props) {
10610
10886
  const { children: children , state: state , size: size = "small" , title: title , description: description , primaryAction: primaryAction , secondaryAction: secondaryAction , centered: centered = false } = props;
10611
- const ref = (0, $3Sbms$react).useRef(null);
10612
- const { modalProps: modalProps , underlayProps: underlayProps } = (0, $3Sbms$useModalOverlay)({
10613
- isDismissable: true,
10614
- ...props
10615
- }, state, ref);
10616
- const [exited, setExited] = (0, $3Sbms$useState)(!state.isOpen);
10617
10887
  const viewport = (0, $3Sbms$useViewportSize)();
10618
10888
  const maxHeight = viewport.height - 64;
10619
10889
  const modalSize = {
@@ -10621,96 +10891,60 @@ function $c0bb66c3d546ed81$export$2b77a92f1a5ad772(props) {
10621
10891
  medium: "max-w-[600px]",
10622
10892
  large: "max-w-[800px]"
10623
10893
  };
10624
- // Don't render anything if the modal is not open and we're not animating out.
10625
- if (!(state.isOpen || !exited)) return null;
10626
- return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Overlay), {
10627
- children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$CSSTransition), {
10628
- in: state.isOpen,
10629
- appear: true,
10630
- onEntered: ()=>setExited(false),
10631
- onExited: ()=>setExited(true),
10632
- timeout: {
10633
- enter: 0,
10634
- exit: 300
10635
- },
10636
- classNames: {
10637
- enter: "opacity-0",
10638
- enterDone: "opacity-1 transition ease-in",
10639
- exit: "opacity-0 transition ease-out"
10894
+ return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $91e337bf8187124b$export$a703eb468fcf7e69), {
10895
+ state: state,
10896
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
10897
+ className: (0, $3Sbms$classnames)("bg-white rounded-[10px] z-[1] overflow-x-auto focus:outline-none", modalSize[size]),
10898
+ style: {
10899
+ maxHeight: `${maxHeight}px`
10640
10900
  },
10641
- children: /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
10642
- className: "fixed z-[100] inset-0 bg-black bg-opacity-90 flex justify-center items-center inter",
10643
- ...underlayProps,
10644
- children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$CSSTransition), {
10645
- in: state.isOpen,
10646
- appear: true,
10647
- nodeRef: ref,
10648
- timeout: {
10649
- enter: 0,
10650
- exit: 300
10651
- },
10652
- classNames: {
10653
- appear: "translate-y-2",
10654
- appearDone: "translate-y-0 transition ease-in",
10655
- exit: "translate-y-2 transition ease-out"
10656
- },
10657
- children: /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
10658
- ...modalProps,
10659
- ref: ref,
10660
- className: (0, $3Sbms$classnames)("bg-white rounded-[10px] z-[1] overflow-x-auto focus:outline-none", modalSize[size]),
10661
- style: {
10662
- maxHeight: `${maxHeight}px`
10663
- },
10664
- children: /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
10665
- className: "flex flex-col gap-5 px-5 py-[25px] max-h-[inherit]",
10666
- children: [
10667
- /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
10668
- className: "flex flex-col gap-5 overflow-auto",
10669
- children: [
10670
- /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
10671
- className: (0, $3Sbms$classnames)("flex flex-col gap-[5px]", {
10672
- "text-center": centered
10673
- }),
10674
- children: [
10675
- /*#__PURE__*/ (0, $3Sbms$jsx)("h2", {
10676
- className: "text-xl font-medium",
10677
- children: title
10678
- }),
10679
- description && /*#__PURE__*/ (0, $3Sbms$jsx)("p", {
10680
- className: "text-sm text-secondary",
10681
- children: description
10682
- })
10683
- ]
10684
- }),
10685
- children
10686
- ]
10901
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
10902
+ className: "flex flex-col gap-5 px-5 py-[25px] max-h-[inherit]",
10903
+ children: [
10904
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
10905
+ className: "flex flex-col gap-5 overflow-auto",
10906
+ children: [
10907
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
10908
+ className: (0, $3Sbms$classnames)("flex flex-col gap-[5px]", {
10909
+ "text-center": centered
10687
10910
  }),
10688
- (primaryAction || secondaryAction) && /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
10689
- className: (0, $3Sbms$classnames)("flex justify-end gap-2.5", centered ? "justify-center" : "justify-end"),
10690
- children: [
10691
- typeof secondaryAction === "string" && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $0590ee3141e14968$export$353f5b6fc5456de1), {
10692
- variant: "secondary",
10693
- onPress: state.close,
10694
- fullWidth: centered,
10695
- children: secondaryAction
10696
- }),
10697
- typeof secondaryAction === "function" && secondaryAction({
10698
- close: state.close
10699
- }),
10700
- typeof primaryAction === "string" && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $0590ee3141e14968$export$353f5b6fc5456de1), {
10701
- onPress: state.close,
10702
- fullWidth: centered,
10703
- children: primaryAction
10704
- }),
10705
- typeof primaryAction === "function" && primaryAction({
10706
- close: state.close
10707
- })
10708
- ]
10709
- })
10710
- ]
10711
- })
10911
+ children: [
10912
+ /*#__PURE__*/ (0, $3Sbms$jsx)("h2", {
10913
+ className: "text-xl font-medium",
10914
+ children: title
10915
+ }),
10916
+ description && /*#__PURE__*/ (0, $3Sbms$jsx)("p", {
10917
+ className: "text-sm text-secondary",
10918
+ children: description
10919
+ })
10920
+ ]
10921
+ }),
10922
+ children
10923
+ ]
10924
+ }),
10925
+ (primaryAction || secondaryAction) && /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
10926
+ className: (0, $3Sbms$classnames)("flex justify-end gap-2.5", centered ? "justify-center" : "justify-end"),
10927
+ children: [
10928
+ typeof secondaryAction === "string" && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $0590ee3141e14968$export$353f5b6fc5456de1), {
10929
+ variant: "secondary",
10930
+ onPress: state.close,
10931
+ fullWidth: centered,
10932
+ children: secondaryAction
10933
+ }),
10934
+ typeof secondaryAction === "function" && secondaryAction({
10935
+ close: state.close
10936
+ }),
10937
+ typeof primaryAction === "string" && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $0590ee3141e14968$export$353f5b6fc5456de1), {
10938
+ onPress: state.close,
10939
+ fullWidth: centered,
10940
+ children: primaryAction
10941
+ }),
10942
+ typeof primaryAction === "function" && primaryAction({
10943
+ close: state.close
10944
+ })
10945
+ ]
10712
10946
  })
10713
- })
10947
+ ]
10714
10948
  })
10715
10949
  })
10716
10950
  });
@@ -10806,32 +11040,39 @@ const $96999d2514f71e51$var$InstructionRow = ({ children: children , index: inde
10806
11040
  ]
10807
11041
  });
10808
11042
  const $96999d2514f71e51$export$788cb893d96254c8 = ({ state: state , type: type })=>{
11043
+ const { t: t } = (0, $3Sbms$useTranslation)();
10809
11044
  const [permissionsState, setPermissionsState] = (0, $3Sbms$useState)("idle");
11045
+ (0, $3Sbms$useEffect)(()=>{
11046
+ const { deviceState: deviceState } = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).getState();
11047
+ if (deviceState.screenshare.enabled && type === "screen") return setPermissionsState("granted");
11048
+ if (deviceState.camera.enabled && type !== "screen") return setPermissionsState("granted");
11049
+ setPermissionsState("idle");
11050
+ }, [
11051
+ type
11052
+ ]);
11053
+ const { deviceState: deviceState } = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).getState();
10810
11054
  const [isRoomReady, setRoomReady] = (0, $3Sbms$useState)(false);
10811
11055
  const { orientation: orientation } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
10812
11056
  const device = orientation === "landscape" ? "desktop" : "mobile";
10813
11057
  const videoLength = permissionsState === "granted" ? "short" : "full";
10814
- const videoType = type === "picture" ? "photo" : "video";
10815
- const onDeviceEnabled = ()=>setPermissionsState("granted");
11058
+ const videoType = type === "photo" ? "photo" : "video";
10816
11059
  const onEnterRoom = ()=>setRoomReady(true);
10817
11060
  const onLeaveRoom = ()=>setRoomReady(false);
10818
11061
  const ref = (0, $3Sbms$useRef)(null);
10819
11062
  const title = (0, $3Sbms$useMemo)(()=>{
10820
- if (permissionsState === "refused") return "Something went wrong!";
10821
- if (type === "picture") return "Ready to take a shot?";
10822
- return "Ready to record a video?";
11063
+ if (permissionsState === "refused") return t("recorder.permissionDeniedTitle");
11064
+ if (type === "photo") return t("recorder.photoInstructionsTitle");
11065
+ else if (type === "video") return t("recorder.videoInstructionsTitle");
11066
+ else return t("recorder.screenShareInstructionsTitle");
10823
11067
  }, [
10824
11068
  permissionsState,
10825
- type
11069
+ type,
11070
+ t
10826
11071
  ]);
10827
11072
  (0, $3Sbms$useEffect)(()=>{
10828
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("localVideoAvailable", onDeviceEnabled);
10829
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("microphoneEnabled", onDeviceEnabled);
10830
11073
  (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("enterRoom", onEnterRoom);
10831
11074
  (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("leaveRoom", onLeaveRoom);
10832
11075
  return ()=>{
10833
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("localVideoAvailable", onDeviceEnabled);
10834
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("microphoneEnabled", onDeviceEnabled);
10835
11076
  (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("enterRoom", onEnterRoom);
10836
11077
  (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("leaveRoom", onLeaveRoom);
10837
11078
  };
@@ -10846,36 +11087,50 @@ const $96999d2514f71e51$export$788cb893d96254c8 = ({ state: state , type: type
10846
11087
  children: permissionsState === "refused" ? /*#__PURE__*/ (0, $3Sbms$jsx)((0, $0590ee3141e14968$export$353f5b6fc5456de1), {
10847
11088
  fullWidth: true,
10848
11089
  onPress: ()=>window.location.reload(),
10849
- children: "Allow access"
11090
+ children: t("recorder.allowAccess")
10850
11091
  }) : /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Fragment), {
10851
11092
  children: permissionsState === "granted" ? /*#__PURE__*/ (0, $3Sbms$jsx)((0, $0590ee3141e14968$export$353f5b6fc5456de1), {
10852
11093
  fullWidth: true,
10853
11094
  onPress: state.close,
10854
- children: "Okay"
11095
+ children: t("recorder.okay")
10855
11096
  }) : /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $0590ee3141e14968$export$353f5b6fc5456de1), {
10856
11097
  fullWidth: true,
10857
11098
  isDisabled: permissionsState === "requesting" || isRoomReady === false,
10858
11099
  onPress: async ()=>{
10859
11100
  setPermissionsState("requesting");
10860
11101
  try {
10861
- const mediaResult = await navigator.mediaDevices.getUserMedia({
10862
- audio: true,
10863
- video: true
10864
- });
10865
- mediaResult.getTracks().forEach((track)=>track.stop());
10866
- await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).enableMicrophone();
10867
- await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).enableVideo({
10868
- resolution: "vga",
10869
- frameRate: 20,
10870
- facingMode: "environment"
10871
- });
10872
- } catch {
11102
+ if (!deviceState.microphone.enabled) {
11103
+ const mediaResult = await navigator.mediaDevices.getUserMedia({
11104
+ audio: true,
11105
+ video: type !== "screen"
11106
+ });
11107
+ mediaResult.getTracks().forEach((track)=>track.stop());
11108
+ }
11109
+ if (!deviceState.microphone.enabled) await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).enableMicrophone();
11110
+ if (!deviceState.camera.enabled && type !== "screen") {
11111
+ await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).disableScreenshare();
11112
+ await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).enableVideo({
11113
+ resolution: "vga",
11114
+ frameRate: 20,
11115
+ facingMode: "environment"
11116
+ });
11117
+ }
11118
+ if (!deviceState.screenshare.enabled && type === "screen") {
11119
+ await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).disableVideo();
11120
+ await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).enableScreenshare({
11121
+ audioTransportOption: "mix"
11122
+ });
11123
+ }
11124
+ setPermissionsState("granted");
11125
+ state.close();
11126
+ } catch (error) {
11127
+ console.log("error", error);
10873
11128
  setPermissionsState("refused");
10874
11129
  }
10875
11130
  },
10876
11131
  children: [
10877
11132
  /*#__PURE__*/ (0, $3Sbms$jsx)((0, $910dd7d7d872a463$export$2e2bcd8739ae039), {}),
10878
- "Allow access to cam/mic"
11133
+ type !== "screen" ? t("recorder.allowCamMicAccess") : t("recorder.allowScreenShareAccess")
10879
11134
  ]
10880
11135
  })
10881
11136
  })
@@ -10887,51 +11142,61 @@ const $96999d2514f71e51$export$788cb893d96254c8 = ({ state: state , type: type
10887
11142
  className: "flex flex-col gap-[10px]",
10888
11143
  ref: ref,
10889
11144
  children: permissionsState === "refused" ? /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Text, {
10890
- children: "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."
11145
+ children: t("recorder.permissionDeniedDescription")
10891
11146
  }) : /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Fragment), {
10892
11147
  children: [
10893
11148
  permissionsState !== "granted" && /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$InstructionRow, {
10894
11149
  index: 1,
10895
- children: /*#__PURE__*/ (0, $3Sbms$jsxs)($96999d2514f71e51$var$Text, {
10896
- children: [
10897
- "When prompted, ",
10898
- /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Bold, {
10899
- children: "allow access"
10900
- }),
10901
- " to camera and microphone."
10902
- ]
11150
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Text, {
11151
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Trans), {
11152
+ i18nKey: "recorder.instructions.allowAccessOnPrompt",
11153
+ children: [
11154
+ "When prompted, ",
11155
+ /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Bold, {
11156
+ children: "allow access"
11157
+ }),
11158
+ " to camera and microphone."
11159
+ ]
11160
+ })
10903
11161
  })
10904
11162
  }),
10905
- type === "picture" && /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Fragment), {
11163
+ type === "photo" && /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Fragment), {
10906
11164
  children: [
10907
11165
  /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$InstructionRow, {
10908
11166
  index: 1 + permissionsInstructionIndex,
10909
- children: /*#__PURE__*/ (0, $3Sbms$jsxs)($96999d2514f71e51$var$Text, {
10910
- children: [
10911
- "Tap the ",
10912
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $444e1dd9fa8f6883$export$dce36e07153365d), {}),
10913
- /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Bold, {
10914
- children: " Camera button"
10915
- }),
10916
- " to take a photo."
10917
- ]
11167
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Text, {
11168
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Trans), {
11169
+ i18nKey: "recorder.instructions.tapPhotoButton",
11170
+ com: true,
11171
+ children: [
11172
+ "Tap the ",
11173
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $444e1dd9fa8f6883$export$dce36e07153365d), {}),
11174
+ /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Bold, {
11175
+ children: " Camera button"
11176
+ }),
11177
+ " to take a photo."
11178
+ ]
11179
+ })
10918
11180
  })
10919
11181
  }),
10920
11182
  /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$InstructionRow, {
10921
11183
  index: 2 + permissionsInstructionIndex,
10922
11184
  children: /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Text, {
10923
- children: "Don't hesitate to take multiple photos for more detail."
11185
+ children: t("recorder.instructions.multiplePhotos")
10924
11186
  })
10925
11187
  }),
10926
11188
  /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$InstructionRow, {
10927
11189
  index: 3 + permissionsInstructionIndex,
10928
- children: /*#__PURE__*/ (0, $3Sbms$jsxs)($96999d2514f71e51$var$Text, {
10929
- children: [
10930
- "You can review your photo and then ",
10931
- /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Bold, {
10932
- children: "send it when you're done."
10933
- })
10934
- ]
11190
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Text, {
11191
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Trans), {
11192
+ i18nKey: "recorder.instructions.reviewAndSendPhotos",
11193
+ children: [
11194
+ "You can review your photo and then ",
11195
+ /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Bold, {
11196
+ children: "send it when you're done."
11197
+ })
11198
+ ]
11199
+ })
10935
11200
  })
10936
11201
  })
10937
11202
  ]
@@ -10940,52 +11205,127 @@ const $96999d2514f71e51$export$788cb893d96254c8 = ({ state: state , type: type
10940
11205
  children: [
10941
11206
  /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$InstructionRow, {
10942
11207
  index: 1 + permissionsInstructionIndex,
10943
- children: /*#__PURE__*/ (0, $3Sbms$jsxs)($96999d2514f71e51$var$Text, {
10944
- children: [
10945
- "Tap the ",
10946
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $444e1dd9fa8f6883$export$f9da3144ae2525a3), {}),
10947
- /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Bold, {
10948
- children: " Record button"
10949
- }),
10950
- " to start a recording."
10951
- ]
11208
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Text, {
11209
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Trans), {
11210
+ i18nKey: "recorder.instructions.tapVideoButton",
11211
+ children: [
11212
+ "Tap the ",
11213
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $444e1dd9fa8f6883$export$f9da3144ae2525a3), {}),
11214
+ /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Bold, {
11215
+ children: " Record button"
11216
+ }),
11217
+ " to start a recording."
11218
+ ]
11219
+ })
11220
+ })
11221
+ }),
11222
+ /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$InstructionRow, {
11223
+ index: 2 + permissionsInstructionIndex,
11224
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Text, {
11225
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Trans), {
11226
+ i18nKey: "recorder.instructions.videoSpeech",
11227
+ children: [
11228
+ "You can ",
11229
+ /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Bold, {
11230
+ children: "speak during"
11231
+ }),
11232
+ " the recording for added detail."
11233
+ ]
11234
+ })
11235
+ })
11236
+ }),
11237
+ /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$InstructionRow, {
11238
+ index: 3 + permissionsInstructionIndex,
11239
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Text, {
11240
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Trans), {
11241
+ i18nKey: "recorder.instructions.tapStopVideoButton",
11242
+ children: [
11243
+ "When you're finished, tap the ",
11244
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $444e1dd9fa8f6883$export$c6a849fd9d9d93a2), {}),
11245
+ /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Bold, {
11246
+ children: " Stop button"
11247
+ }),
11248
+ "."
11249
+ ]
11250
+ })
11251
+ })
11252
+ }),
11253
+ /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$InstructionRow, {
11254
+ index: 4 + permissionsInstructionIndex,
11255
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Text, {
11256
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Trans), {
11257
+ i18nKey: "recorder.instructions.reviewAndSendVideos",
11258
+ children: [
11259
+ "You can review your video and then ",
11260
+ /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Bold, {
11261
+ children: "send it when you're done"
11262
+ }),
11263
+ "."
11264
+ ]
11265
+ })
11266
+ })
11267
+ })
11268
+ ]
11269
+ }),
11270
+ type === "screen" && /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Fragment), {
11271
+ children: [
11272
+ /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$InstructionRow, {
11273
+ index: 1 + permissionsInstructionIndex,
11274
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Text, {
11275
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Trans), {
11276
+ i18nKey: "recorder.instructions.tapScreenShareButton",
11277
+ children: [
11278
+ "Tap on",
11279
+ /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Bold, {
11280
+ children: " Record my screen"
11281
+ }),
11282
+ " to start a recording."
11283
+ ]
11284
+ })
10952
11285
  })
10953
11286
  }),
10954
11287
  /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$InstructionRow, {
10955
11288
  index: 2 + permissionsInstructionIndex,
10956
- children: /*#__PURE__*/ (0, $3Sbms$jsxs)($96999d2514f71e51$var$Text, {
10957
- children: [
10958
- "You can ",
10959
- /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Bold, {
10960
- children: "speak during"
10961
- }),
10962
- " the recording for added detail."
10963
- ]
11289
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Text, {
11290
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Trans), {
11291
+ i18nKey: "recorder.instructions.videoSpeech",
11292
+ children: [
11293
+ "You can ",
11294
+ /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Bold, {
11295
+ children: "speak during"
11296
+ }),
11297
+ " the recording for added detail."
11298
+ ]
11299
+ })
10964
11300
  })
10965
11301
  }),
10966
11302
  /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$InstructionRow, {
10967
11303
  index: 3 + permissionsInstructionIndex,
10968
- children: /*#__PURE__*/ (0, $3Sbms$jsxs)($96999d2514f71e51$var$Text, {
10969
- children: [
10970
- "When you're finished, tap the ",
10971
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $444e1dd9fa8f6883$export$c6a849fd9d9d93a2), {}),
10972
- /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Bold, {
10973
- children: " Stop button"
10974
- }),
10975
- "."
10976
- ]
11304
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Text, {
11305
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Trans), {
11306
+ i18nKey: "recorder.instructions.tapStopScreenShareButton",
11307
+ children: [
11308
+ "When you're finished, tap on ",
11309
+ /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Bold, {
11310
+ children: "Stop recording"
11311
+ }),
11312
+ "."
11313
+ ]
11314
+ })
10977
11315
  })
10978
11316
  }),
10979
11317
  /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$InstructionRow, {
10980
11318
  index: 4 + permissionsInstructionIndex,
10981
- children: /*#__PURE__*/ (0, $3Sbms$jsxs)($96999d2514f71e51$var$Text, {
10982
- children: [
10983
- "You can review your video and then ",
10984
- /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Bold, {
10985
- children: "send it when you're done"
10986
- }),
10987
- "."
10988
- ]
11319
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Text, {
11320
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Trans), {
11321
+ i18nKey: "recorder.instructions.reviewAndSendScreenShare",
11322
+ children: [
11323
+ "You can review your video and then ",
11324
+ /*#__PURE__*/ (0, $3Sbms$jsx)($96999d2514f71e51$var$Bold, {
11325
+ children: "send it when you're done."
11326
+ })
11327
+ ]
11328
+ })
10989
11329
  })
10990
11330
  })
10991
11331
  ]
@@ -11017,7 +11357,9 @@ const $96999d2514f71e51$export$788cb893d96254c8 = ({ state: state , type: type
11017
11357
 
11018
11358
 
11019
11359
 
11360
+
11020
11361
  const $1c8fc500105e5c78$export$f9d8408fefd786da = ({ state: state , setReady: setReady })=>{
11362
+ const { t: t } = (0, $3Sbms$useTranslation)();
11021
11363
  const QRCodeRef = (0, $3Sbms$useRef)(null);
11022
11364
  const { options: options } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
11023
11365
  const [QRCodeContainerRef, { width: QRCodeContainerWidth }] = (0, $af23c74942bdcae7$export$e295b0c537d32d7d)();
@@ -11034,8 +11376,8 @@ const $1c8fc500105e5c78$export$f9d8408fefd786da = ({ state: state , setReady: se
11034
11376
  ]);
11035
11377
  return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $c0bb66c3d546ed81$export$2b77a92f1a5ad772), {
11036
11378
  centered: true,
11037
- title: "Switch to your mobile",
11038
- description: "Enjoy an even more convenient experience by using your phone to take photos and record videos.",
11379
+ title: t("recorder.switchToMobileTitle"),
11380
+ description: t("recorder.switchToMobileDescription"),
11039
11381
  isDismissable: false,
11040
11382
  state: state,
11041
11383
  primaryAction: ()=>/*#__PURE__*/ (0, $3Sbms$jsx)((0, $0590ee3141e14968$export$353f5b6fc5456de1), {
@@ -11044,7 +11386,7 @@ const $1c8fc500105e5c78$export$f9d8408fefd786da = ({ state: state , setReady: se
11044
11386
  setReady(true);
11045
11387
  state.close();
11046
11388
  },
11047
- children: "Use desktop version"
11389
+ children: t("recorder.useDesktopVersion")
11048
11390
  }),
11049
11391
  children: /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
11050
11392
  className: "flex flex-col gap-[20px]",
@@ -11064,7 +11406,7 @@ const $1c8fc500105e5c78$export$f9d8408fefd786da = ({ state: state , setReady: se
11064
11406
  }),
11065
11407
  /*#__PURE__*/ (0, $3Sbms$jsx)("p", {
11066
11408
  className: "flex items-center justify-center text-xs text-primaryLight text-center",
11067
- children: "Scan this QR code with a compatible device."
11409
+ children: t("recorder.scanQRCode")
11068
11410
  })
11069
11411
  ]
11070
11412
  })
@@ -11075,29 +11417,21 @@ const $1c8fc500105e5c78$export$f9d8408fefd786da = ({ state: state , setReady: se
11075
11417
  function $d48329960b5b412c$export$fc3bf4634b488af8({ mode: mode }) {
11076
11418
  const { orientation: orientation } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
11077
11419
  const desktop = orientation === "landscape";
11078
- const [ready, setReady] = (0, $3Sbms$useState)(!desktop);
11420
+ const [ready, setReady] = (0, $3Sbms$useState)(mode === "screen" || !desktop);
11421
+ const [isInstructionsModalOpen, setIsInstructionsModalOpen] = (0, $3Sbms$useState)(ready);
11422
+ const modalState = (0, $3Sbms$useOverlayTriggerState)({
11423
+ isOpen: isInstructionsModalOpen && ready,
11424
+ onOpenChange: setIsInstructionsModalOpen
11425
+ });
11079
11426
  (0, $3Sbms$useEffect)(()=>{
11080
- if (ready) {
11081
- setIsPhotoInstructionsModalOpen(mode === "photo" && ready);
11082
- setIsVideoInstructionsModalOpen(mode === "video" && ready);
11083
- }
11427
+ setIsInstructionsModalOpen(true);
11084
11428
  }, [
11085
11429
  ready,
11086
11430
  mode
11087
11431
  ]);
11088
- const [isPhotoInstructionsModalOpen, setIsPhotoInstructionsModalOpen] = (0, $3Sbms$useState)(mode === "photo" && ready);
11089
- const [isVideoInstructionsModalOpen, setIsVideoInstructionsModalOpen] = (0, $3Sbms$useState)(mode === "video" && ready);
11090
- const photoInstructionsModalState = (0, $3Sbms$useOverlayTriggerState)({
11091
- isOpen: isPhotoInstructionsModalOpen,
11092
- onOpenChange: setIsPhotoInstructionsModalOpen
11093
- });
11094
- const videoInstructionsModalState = (0, $3Sbms$useOverlayTriggerState)({
11095
- isOpen: isVideoInstructionsModalOpen,
11096
- onOpenChange: setIsVideoInstructionsModalOpen
11097
- });
11098
11432
  return {
11099
- photoInstructionsModalState: photoInstructionsModalState,
11100
- videoInstructionsModalState: videoInstructionsModalState,
11433
+ mode: mode,
11434
+ modalState: modalState,
11101
11435
  ready: ready,
11102
11436
  setReady: setReady
11103
11437
  };
@@ -11111,12 +11445,8 @@ const $d48329960b5b412c$export$bee10e8ab511933f = ({ state: state })=>{
11111
11445
  return /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Fragment), {
11112
11446
  children: [
11113
11447
  /*#__PURE__*/ (0, $3Sbms$jsx)((0, $96999d2514f71e51$export$788cb893d96254c8), {
11114
- state: state.photoInstructionsModalState,
11115
- type: "picture"
11116
- }),
11117
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $96999d2514f71e51$export$788cb893d96254c8), {
11118
- state: state.videoInstructionsModalState,
11119
- type: "video"
11448
+ state: state.modalState,
11449
+ type: state.mode
11120
11450
  }),
11121
11451
  /*#__PURE__*/ (0, $3Sbms$jsx)((0, $1c8fc500105e5c78$export$f9d8408fefd786da), {
11122
11452
  state: switchToMobileModalState,
@@ -11127,22 +11457,54 @@ const $d48329960b5b412c$export$bee10e8ab511933f = ({ state: state })=>{
11127
11457
  };
11128
11458
 
11129
11459
 
11130
- function $a94f21ef9007b90a$export$bd7b6af6aa16550c({ photo: photo = true }) {
11131
- const [isPhoto, setPhoto] = (0, $3Sbms$useState)(photo);
11460
+
11461
+
11462
+
11463
+ const $39932392769664d0$export$4e594bceac139abd = (props)=>{
11464
+ const { t: t } = (0, $3Sbms$useTranslation)();
11465
+ return /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
11466
+ className: (0, $3Sbms$classnames)("flex rounded-full h-[40px] p-[10px] border-2 border-white text-white justify-center items-center align-middle", "font-semibold", "cursor-pointer", {
11467
+ "bg-[#f12828]": !props.state.streaming
11468
+ }),
11469
+ onClick: ()=>props.onCapturePress(),
11470
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
11471
+ children: props.state.streaming ? t("recorder.stopScreenShareButton") : t("recorder.startScreenShareButton")
11472
+ })
11473
+ });
11474
+ };
11475
+ const $39932392769664d0$export$f9da3144ae2525a3 = (props)=>{
11476
+ return /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
11477
+ className: (0, $3Sbms$classnames)("bg-white rounded-full w-[72px] h-[72px] p-[3px]"),
11478
+ onClick: ()=>props.onCapturePress(),
11479
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
11480
+ className: "bg-primary rounded-full w-full h-full p-[3px] flex items-center justify-center cursor-pointer",
11481
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
11482
+ className: (0, $3Sbms$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]")
11483
+ })
11484
+ })
11485
+ });
11486
+ };
11487
+
11488
+
11489
+ function $a94f21ef9007b90a$export$bd7b6af6aa16550c({ state: state = "photo" }) {
11490
+ const [currentMode, setMode] = (0, $3Sbms$useState)(state);
11132
11491
  const [streaming, setStreaming] = (0, $3Sbms$useState)(false);
11133
11492
  return {
11134
- photo: isPhoto,
11135
- setPhoto: setPhoto,
11493
+ mode: currentMode,
11494
+ setMode: (mode)=>{
11495
+ setMode(mode);
11496
+ },
11136
11497
  streaming: streaming,
11137
11498
  setStreaming: setStreaming
11138
11499
  };
11139
11500
  }
11140
11501
  const $a94f21ef9007b90a$export$11a6fe490bbc4873 = (props)=>{
11502
+ const { t: t } = (0, $3Sbms$useTranslation)();
11141
11503
  const setupModalsState = (0, $d48329960b5b412c$export$fc3bf4634b488af8)({
11142
- mode: props.state.photo ? "photo" : "video"
11504
+ mode: props.state.mode
11143
11505
  });
11144
11506
  return /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
11145
- className: "flex flex-col bg-primary h-[150px] w-full max-w-[400px] rounded-[15px] p-2.5 gap-2.5",
11507
+ className: "flex flex-col bg-primary h-[150px] w-full max-w-[500px] rounded-[15px] p-2.5 gap-2.5",
11146
11508
  children: [
11147
11509
  /*#__PURE__*/ (0, $3Sbms$jsx)((0, $d48329960b5b412c$export$bee10e8ab511933f), {
11148
11510
  state: setupModalsState
@@ -11163,25 +11525,39 @@ const $a94f21ef9007b90a$export$11a6fe490bbc4873 = (props)=>{
11163
11525
  /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
11164
11526
  className: "flex flex-row justify-end flex-auto items-center gap-[10px] ",
11165
11527
  children: [
11166
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $5a48b7481979330f$export$d2b052e7b4be1756), {
11167
- onPress: ()=>{
11168
- if (!props.state.streaming) {
11169
- props.state.setPhoto(true);
11170
- setupModalsState.photoInstructionsModalState.open();
11171
- }
11172
- },
11173
- isSelected: props.state.photo,
11174
- children: "Photo"
11528
+ props.state.mode !== "screen" && /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Fragment), {
11529
+ children: [
11530
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $5a48b7481979330f$export$d2b052e7b4be1756), {
11531
+ onPress: ()=>{
11532
+ if (!props.state.streaming) {
11533
+ props.state.setMode("photo");
11534
+ setupModalsState.modalState.open();
11535
+ }
11536
+ },
11537
+ isSelected: props.state.mode === "photo",
11538
+ children: t("misc.photo")
11539
+ }),
11540
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $5a48b7481979330f$export$d2b052e7b4be1756), {
11541
+ onPress: ()=>{
11542
+ if (!props.state.streaming) {
11543
+ props.state.setMode("video");
11544
+ setupModalsState.modalState.open();
11545
+ }
11546
+ },
11547
+ isSelected: props.state.mode === "video",
11548
+ children: t("misc.video")
11549
+ })
11550
+ ]
11175
11551
  }),
11176
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $5a48b7481979330f$export$d2b052e7b4be1756), {
11552
+ props.state.mode === "screen" && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $5a48b7481979330f$export$d2b052e7b4be1756), {
11177
11553
  onPress: ()=>{
11178
11554
  if (!props.state.streaming) {
11179
- props.state.setPhoto(false);
11180
- setupModalsState.videoInstructionsModalState.open();
11555
+ props.state.setMode("screen");
11556
+ setupModalsState.modalState.open();
11181
11557
  }
11182
11558
  },
11183
- isSelected: !props.state.photo,
11184
- children: "Video"
11559
+ isSelected: props.state.mode === "screen",
11560
+ children: t("misc.screen")
11185
11561
  })
11186
11562
  ]
11187
11563
  })
@@ -11194,20 +11570,18 @@ const $a94f21ef9007b90a$export$11a6fe490bbc4873 = (props)=>{
11194
11570
  className: "w-[60px] h-[60px]",
11195
11571
  children: props.thumbnail
11196
11572
  }),
11197
- /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
11198
- className: "bg-white rounded-full w-[72px] h-[72px] p-[3px]",
11199
- onClick: ()=>props.onCapturePress(),
11200
- children: /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
11201
- className: "bg-primary rounded-full w-full h-full p-[3px] flex items-center justify-center cursor-pointer",
11202
- children: /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
11203
- className: (0, $3Sbms$classnames)("w-full h-full transition-[transform,border-radius] duration-300", props.state.photo ? "bg-white" : "bg-[#f12828]", props.state.streaming ? "rounded-[5px] scale-[0.4]" : "rounded-[60px]")
11204
- })
11205
- })
11573
+ props.state.mode === "screen" && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $39932392769664d0$export$4e594bceac139abd), {
11574
+ ...props
11575
+ }),
11576
+ props.state.mode !== "screen" && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $39932392769664d0$export$f9da3144ae2525a3), {
11577
+ ...props
11206
11578
  }),
11207
11579
  /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
11208
11580
  onClick: props.onSwitch,
11209
- className: "bg-[#565656] rounded-full w-[56px] h-[56px] flex items-center justify-center cursor-pointer",
11210
- children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $58d405d56c1abe95$export$aefffb14595958fe), {})
11581
+ className: (0, $3Sbms$classnames)("rounded-full w-[56px] h-[56px] flex items-center justify-center", {
11582
+ "bg-[#565656] cursor-pointer": props.state.mode !== "screen"
11583
+ }),
11584
+ children: props.state.mode !== "screen" && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $58d405d56c1abe95$export$aefffb14595958fe), {})
11211
11585
  })
11212
11586
  ]
11213
11587
  })
@@ -11227,18 +11601,19 @@ const $a94f21ef9007b90a$export$11a6fe490bbc4873 = (props)=>{
11227
11601
 
11228
11602
 
11229
11603
 
11604
+
11230
11605
  function $38cdd553fb158eaa$export$4589ed81930b555c(props) {
11231
11606
  const { children: children , state: state } = props;
11232
11607
  const ref = (0, $3Sbms$react).useRef(null);
11233
11608
  const { orientation: orientation } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
11234
- const { modalProps: modalProps , underlayProps: underlayProps } = (0, $3Sbms$useModalOverlay)(props, state, ref);
11609
+ const { modalProps: modalProps , underlayProps: underlayProps } = (0, $3Sbms$useModalOverlay1)(props, state, ref);
11235
11610
  const [exited, setExited] = (0, $3Sbms$useState)(!state.isOpen);
11236
11611
  const viewport = (0, $3Sbms$useViewportSize)();
11237
11612
  const maxHeight = viewport.height - 64;
11238
11613
  const desktop = orientation === "landscape";
11239
11614
  // Don't render anything if the modal is not open and we're not animating out.
11240
11615
  if (!(state.isOpen || !exited)) return null;
11241
- return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Overlay), {
11616
+ return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Overlay1), {
11242
11617
  children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$CSSTransition), {
11243
11618
  in: state.isOpen,
11244
11619
  appear: true,
@@ -11294,6 +11669,8 @@ function $38cdd553fb158eaa$export$4589ed81930b555c(props) {
11294
11669
 
11295
11670
 
11296
11671
 
11672
+
11673
+
11297
11674
  const $4425c0dfad3f82bb$export$480db61f4dcd7727 = ()=>/*#__PURE__*/ (0, $3Sbms$jsx)("svg", {
11298
11675
  width: "12",
11299
11676
  height: "15",
@@ -11350,26 +11727,61 @@ const $a879d6bc7f43b0c5$export$28e1ba20e0688eb7 = ()=>/*#__PURE__*/ (0, $3Sbms$j
11350
11727
  });
11351
11728
 
11352
11729
 
11353
- const $77fb06ba253d6f7c$var$dateFormat = new Intl.DateTimeFormat("default", {
11354
- dateStyle: "short"
11355
- });
11356
- const $77fb06ba253d6f7c$var$timeFormat = new Intl.DateTimeFormat("default", {
11357
- hour: "numeric",
11358
- minute: "2-digit"
11359
- });
11360
- function $77fb06ba253d6f7c$var$formatDate(date) {
11361
- const ampm = date.getHours() % 12 >= 12 ? "PM" : "AM";
11362
- return `${$77fb06ba253d6f7c$var$dateFormat.format(date)} at ${$77fb06ba253d6f7c$var$timeFormat.format(date)} ${ampm}`;
11363
- }
11730
+
11731
+
11732
+
11733
+ const $a4b1c68ef470f35c$export$f56b3b5841ad32ae = ({ asset: asset , state: state })=>{
11734
+ return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $91e337bf8187124b$export$a703eb468fcf7e69), {
11735
+ state: state,
11736
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
11737
+ className: "flex flex-col items-center w-screen h-screen p-[15px] gap-[10px]",
11738
+ children: [
11739
+ /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
11740
+ className: "flex items-center max-w-[400px] w-full h-full",
11741
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
11742
+ className: "min-w-full rounded-[10px] overflow-hidden",
11743
+ children: [
11744
+ asset.type === "picture" && /*#__PURE__*/ (0, $3Sbms$jsx)("img", {
11745
+ src: asset.objectUrl,
11746
+ alt: `Asset-${asset.assetId}`,
11747
+ className: "object-fill"
11748
+ }),
11749
+ asset.type === "video" && /*#__PURE__*/ (0, $3Sbms$jsx)("video", {
11750
+ src: asset.objectUrl,
11751
+ playsInline: true,
11752
+ autoPlay: true,
11753
+ controls: true
11754
+ })
11755
+ ]
11756
+ })
11757
+ }),
11758
+ /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
11759
+ className: "max-w-[135px] w-1/3",
11760
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $0590ee3141e14968$export$353f5b6fc5456de1), {
11761
+ onPress: state.close,
11762
+ variant: "tertiary",
11763
+ size: "large",
11764
+ fullWidth: true,
11765
+ children: "Close"
11766
+ })
11767
+ })
11768
+ ]
11769
+ })
11770
+ });
11771
+ };
11772
+
11773
+
11364
11774
  const $77fb06ba253d6f7c$export$c9169049516d8bcf = ({ asset: asset , index: index , removeAsset: removeAsset })=>{
11775
+ const { t: t } = (0, $3Sbms$useTranslation)();
11365
11776
  const confirmRemovalModalState = (0, $3Sbms$useOverlayTriggerState)({});
11777
+ const previewAssetModalProps = (0, $3Sbms$useOverlayTriggerState)({});
11366
11778
  return /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
11367
11779
  className: "flex flex-row justify-between items-center",
11368
11780
  children: [
11369
11781
  /*#__PURE__*/ (0, $3Sbms$jsx)((0, $c0bb66c3d546ed81$export$2b77a92f1a5ad772), {
11370
- title: "Confirm removal",
11782
+ title: t("recorder.confirmRemovalTitle"),
11371
11783
  state: confirmRemovalModalState,
11372
- description: "Are you sure you want to remove this photo/video? This action cannot be undone.",
11784
+ description: t("recorder.confirmRemovalDescription"),
11373
11785
  primaryAction: ({ close: close })=>/*#__PURE__*/ (0, $3Sbms$jsxs)((0, $0590ee3141e14968$export$353f5b6fc5456de1), {
11374
11786
  onPress: async ()=>{
11375
11787
  await removeAsset(asset);
@@ -11377,29 +11789,34 @@ const $77fb06ba253d6f7c$export$c9169049516d8bcf = ({ asset: asset , index: index
11377
11789
  },
11378
11790
  children: [
11379
11791
  /*#__PURE__*/ (0, $3Sbms$jsx)((0, $a879d6bc7f43b0c5$export$28e1ba20e0688eb7), {}),
11380
- "Confirm"
11792
+ t("misc.confirm")
11381
11793
  ]
11382
11794
  }),
11383
- secondaryAction: "Cancel"
11795
+ secondaryAction: t("misc.cancel")
11384
11796
  }),
11385
11797
  /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
11386
11798
  className: "flex flex-row gap-[10px] items-center",
11387
11799
  children: [
11388
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $c7542aa0d9bb5f39$export$1cd1efc78cb52ca5), {
11800
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $a4b1c68ef470f35c$export$f56b3b5841ad32ae), {
11801
+ state: previewAssetModalProps,
11389
11802
  asset: asset
11390
11803
  }),
11804
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $c7542aa0d9bb5f39$export$1cd1efc78cb52ca5), {
11805
+ asset: asset,
11806
+ onClick: previewAssetModalProps.open
11807
+ }),
11391
11808
  /*#__PURE__*/ (0, $3Sbms$jsxs)("span", {
11392
11809
  className: "text-sm",
11393
11810
  style: {
11394
11811
  hyphens: "manual"
11395
11812
  },
11396
11813
  children: [
11397
- asset.type === "picture" ? "Photo" : "Video",
11814
+ asset.type === "picture" ? t("misc.photo") : t("misc.video"),
11398
11815
  " ",
11399
11816
  index + 1,
11400
11817
  " \xb7",
11401
11818
  " ",
11402
- $77fb06ba253d6f7c$var$formatDate(new Date(asset.timestamp))
11819
+ (0, $92672d57809ea9d3$export$3ae94a2503e890a1)(new Date(asset.timestamp))
11403
11820
  ]
11404
11821
  })
11405
11822
  ]
@@ -11407,7 +11824,7 @@ const $77fb06ba253d6f7c$export$c9169049516d8bcf = ({ asset: asset , index: index
11407
11824
  /*#__PURE__*/ (0, $3Sbms$jsx)("span", {
11408
11825
  className: "text-xs font-bold underline cursor-pointer ml-[10px]",
11409
11826
  onClick: confirmRemovalModalState.open,
11410
- children: "Remove"
11827
+ children: t("misc.remove")
11411
11828
  })
11412
11829
  ]
11413
11830
  }, asset.assetId);
@@ -11490,6 +11907,7 @@ const $7436fc0a14c16764$export$4fa52f68b1c78fbf = ()=>/*#__PURE__*/ (0, $3Sbms$j
11490
11907
 
11491
11908
 
11492
11909
  const $d4d374dc7955cc18$export$5c334f209b1aa661 = ({ assets: assets , state: state , onSendAssets: onSendAssets , removeAsset: removeAsset , loading: loading })=>{
11910
+ const { t: t } = (0, $3Sbms$useTranslation)();
11493
11911
  const ref = (0, $3Sbms$useRef)(null);
11494
11912
  const [assetKind, setAssetKind] = (0, $3Sbms$useState)(assets[assets.length - 1]?.type === "picture" ? "photo" : "video");
11495
11913
  const { orientation: orientation } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
@@ -11517,7 +11935,7 @@ const $d4d374dc7955cc18$export$5c334f209b1aa661 = ({ assets: assets , state: sta
11517
11935
  children: /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
11518
11936
  className: (0, $3Sbms$classnames)("fixed justify-center w-screen h-screen top-0 left-0 bg-black z-[1]", state.isOpen ? "flex" : "hidden"),
11519
11937
  children: loading && /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
11520
- className: (0, $3Sbms$classnames)("flex mt-[50px] h-fit opacity-1", desktop ? "flex-row items-center w-[400px]" : "flex-col items-center text-center w-[320px]"),
11938
+ className: (0, $3Sbms$classnames)("flex mt-[50px] h-fit opacity-1", desktop ? "flex-row items-center w-[450px]" : "flex-col items-center text-center w-[320px]"),
11521
11939
  children: [
11522
11940
  /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
11523
11941
  className: "w-[24px] h-[24px] m-[10px]",
@@ -11526,10 +11944,10 @@ const $d4d374dc7955cc18$export$5c334f209b1aa661 = ({ assets: assets , state: sta
11526
11944
  /*#__PURE__*/ (0, $3Sbms$jsxs)("span", {
11527
11945
  className: "text-sm text-white",
11528
11946
  children: [
11529
- "Please wait a moment while your ",
11530
- loading,
11531
- " is being processed...",
11532
- loading === "video" ? " It may take up to 15 seconds for a video to be ready." : ""
11947
+ t("recorder.elementBeingProcessed", {
11948
+ type: loading === "picture" ? t("misc.photo").toLocaleLowerCase() : t("misc.video").toLocaleLowerCase()
11949
+ }),
11950
+ loading === "video" && t("recorder.waitVideo")
11533
11951
  ]
11534
11952
  })
11535
11953
  ]
@@ -11548,12 +11966,11 @@ const $d4d374dc7955cc18$export$5c334f209b1aa661 = ({ assets: assets , state: sta
11548
11966
  /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
11549
11967
  className: "flex flex-row justify-between p-[12px]",
11550
11968
  children: [
11551
- /*#__PURE__*/ (0, $3Sbms$jsxs)("h1", {
11969
+ /*#__PURE__*/ (0, $3Sbms$jsx)("h1", {
11552
11970
  className: "text-lg first-letter:capitalize",
11553
- children: [
11554
- assetKind,
11555
- " successfully captured"
11556
- ]
11971
+ children: t("recorder.elementCaptureSuccess", {
11972
+ type: t(`misc.${assetKind}`)
11973
+ })
11557
11974
  }),
11558
11975
  /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
11559
11976
  className: "flex justify-center items-center rounded-full bg-[#f3f3f3] h-[30px] w-[30px] cursor-pointer",
@@ -11572,23 +11989,23 @@ const $d4d374dc7955cc18$export$5c334f209b1aa661 = ({ assets: assets , state: sta
11572
11989
  index: index,
11573
11990
  removeAsset: removeAsset
11574
11991
  }, asset.assetId)),
11575
- /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $0590ee3141e14968$export$353f5b6fc5456de1), {
11992
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $0590ee3141e14968$export$353f5b6fc5456de1), {
11576
11993
  variant: "secondary",
11577
11994
  onPress: state.close,
11578
- children: [
11579
- "Take new ",
11580
- assetKind
11581
- ]
11995
+ children: t("recorder.takeNewElement", {
11996
+ type: t(`misc.${assetKind}`).toLocaleLowerCase()
11997
+ })
11582
11998
  }),
11583
- /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $0590ee3141e14968$export$353f5b6fc5456de1), {
11999
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $0590ee3141e14968$export$353f5b6fc5456de1), {
11584
12000
  onPress: ()=>{
11585
12001
  onSendAssets();
11586
12002
  state.close();
11587
12003
  },
11588
- children: [
11589
- "Send ",
11590
- assets.length > 1 ? `${assets.length} elements` : assetKind
11591
- ]
12004
+ children: assets.length > 1 ? t("recorder.sendElements", {
12005
+ count: assets.length
12006
+ }) : t("recorder.sendElement", {
12007
+ type: t(`misc.${assetKind}`).toLocaleLowerCase()
12008
+ })
11592
12009
  })
11593
12010
  ]
11594
12011
  })
@@ -11636,7 +12053,18 @@ const $92672d57809ea9d3$var$timerText = (delta)=>{
11636
12053
  ].map((n)=>`${n < 10 ? "0" : ""}${n}`);
11637
12054
  return d.join(":");
11638
12055
  };
12056
+ const $92672d57809ea9d3$var$dateFormat = new Intl.DateTimeFormat("default", {
12057
+ dateStyle: "short"
12058
+ });
12059
+ const $92672d57809ea9d3$var$timeFormat = new Intl.DateTimeFormat("default", {
12060
+ hour: "numeric",
12061
+ minute: "2-digit"
12062
+ });
12063
+ function $92672d57809ea9d3$export$3ae94a2503e890a1(date) {
12064
+ return `${$92672d57809ea9d3$var$dateFormat.format(date)} at ${$92672d57809ea9d3$var$timeFormat.format(date)}`;
12065
+ }
11639
12066
  const $92672d57809ea9d3$export$336a011955157f9a = ()=>{
12067
+ const { t: t } = (0, $3Sbms$useTranslation)();
11640
12068
  const { options: options } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
11641
12069
  const [startRecordTime, setStartRecordTime] = (0, $3Sbms$useState)(undefined);
11642
12070
  const [timer, setTimer] = (0, $3Sbms$useState)(0);
@@ -11653,7 +12081,7 @@ const $92672d57809ea9d3$export$336a011955157f9a = ()=>{
11653
12081
  const sendAssetsModalState = (0, $3Sbms$useOverlayTriggerState)({});
11654
12082
  const [flashAnimation, setFlashAnimation] = (0, $3Sbms$useState)(false);
11655
12083
  const menuBarState = (0, $a94f21ef9007b90a$export$bd7b6af6aa16550c)({
11656
- photo: options?.recorder?.defaultState !== "video"
12084
+ state: options?.recorder?.defaultState || "photo"
11657
12085
  });
11658
12086
  const exitStreaming = (0, $3Sbms$useCallback)(()=>{
11659
12087
  menuBarState.setStreaming(false);
@@ -11668,6 +12096,10 @@ const $92672d57809ea9d3$export$336a011955157f9a = ()=>{
11668
12096
  const { facingMode: newFacingMode } = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).requestLocalVideo(videoElementRef?.current);
11669
12097
  setFacingMode(newFacingMode);
11670
12098
  };
12099
+ const onScreenshareEnabled = (event)=>{
12100
+ if (!videoElementRef.current) return;
12101
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).requestLocalScreenshare(videoElementRef.current);
12102
+ };
11671
12103
  const onStopRecord = (0, $3Sbms$useCallback)((event)=>{
11672
12104
  const { url: url , assetId: assetId } = event.detail;
11673
12105
  exitStreaming();
@@ -11731,10 +12163,12 @@ const $92672d57809ea9d3$export$336a011955157f9a = ()=>{
11731
12163
  ]);
11732
12164
  (0, $3Sbms$useEffect)(()=>{
11733
12165
  (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("localVideoAvailable", onLocalVideoChange);
12166
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("screenshareEnabled", onScreenshareEnabled);
11734
12167
  (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("localVideoChange", onLocalVideoChange);
11735
12168
  (0, $c9e496369b59be7a$export$2f377c2162fd02b2).addEventListener("recordStopped", onStopRecord);
11736
12169
  return ()=>{
11737
12170
  (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("localVideoChange", onLocalVideoChange);
12171
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("screenshareEnabled", onScreenshareEnabled);
11738
12172
  (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("localVideoAvailable", onLocalVideoChange);
11739
12173
  (0, $c9e496369b59be7a$export$2f377c2162fd02b2).removeEventListener("recordStopped", onStopRecord);
11740
12174
  };
@@ -11742,16 +12176,18 @@ const $92672d57809ea9d3$export$336a011955157f9a = ()=>{
11742
12176
  onStopRecord
11743
12177
  ]);
11744
12178
  return /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
11745
- className: "bg-[#000] w-full h-full justify-center flex flex-col antialiased inter",
12179
+ className: (0, $3Sbms$classnames)("bg-[#000] w-full h-full justify-center flex flex-col antialiased inter", {
12180
+ "bg-[url('https://cdn.snapcall.io/img/assist/gradient-bg.jpg')] bg-cover": menuBarState.mode === "screen"
12181
+ }),
11746
12182
  children: [
11747
- !menuBarState.photo && /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
12183
+ (menuBarState.mode === "video" || menuBarState.mode === "screen" && menuBarState.streaming) && /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
11748
12184
  className: "text-base text-white text-center font-medium pt-2.5",
11749
12185
  children: $92672d57809ea9d3$var$timerText(timer)
11750
12186
  }),
11751
12187
  /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
11752
- className: "flex-1 min-h-0 p-2.5",
12188
+ className: "flex-1 min-h-0 p-2.5 ",
11753
12189
  children: /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
11754
- className: "relative w-full h-full rounded-[10px]",
12190
+ className: "relative w-full h-full rounded-[10px] ",
11755
12191
  children: [
11756
12192
  countdownVisible && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $db82628e5503d51b$export$53819c0e58f98d49), {
11757
12193
  initialValue: 3,
@@ -11769,7 +12205,20 @@ const $92672d57809ea9d3$export$336a011955157f9a = ()=>{
11769
12205
  assetsPopupState.open();
11770
12206
  }
11771
12207
  }),
11772
- /*#__PURE__*/ (0, $3Sbms$jsx)("video", {
12208
+ menuBarState.mode === "screen" && /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
12209
+ className: "object-fit h-full",
12210
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)("video", {
12211
+ autoPlay: true,
12212
+ muted: true,
12213
+ playsInline: true,
12214
+ ref: videoElementRef,
12215
+ className: (0, $3Sbms$classnames)("w-full h-full rounded-[inherit]", {
12216
+ "scale-x-[-1]": facingMode === "user" && menuBarState.mode !== "screen",
12217
+ "max-w-[screen]": menuBarState.mode === "screen"
12218
+ })
12219
+ })
12220
+ }),
12221
+ menuBarState.mode !== "screen" && /*#__PURE__*/ (0, $3Sbms$jsx)("video", {
11773
12222
  autoPlay: true,
11774
12223
  muted: true,
11775
12224
  playsInline: true,
@@ -11782,7 +12231,7 @@ const $92672d57809ea9d3$export$336a011955157f9a = ()=>{
11782
12231
  })
11783
12232
  }),
11784
12233
  /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
11785
- className: "flex justify-center px-2.5 pb-2.5",
12234
+ className: "flex justify-center px-2.5 pb-2.5 z-10",
11786
12235
  children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $a94f21ef9007b90a$export$11a6fe490bbc4873), {
11787
12236
  state: menuBarState,
11788
12237
  thumbnail: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $c7542aa0d9bb5f39$export$1cd1efc78cb52ca5), {
@@ -11793,16 +12242,16 @@ const $92672d57809ea9d3$export$336a011955157f9a = ()=>{
11793
12242
  (0, $c9e496369b59be7a$export$2f377c2162fd02b2).rotateVideo();
11794
12243
  },
11795
12244
  onCapturePress: ()=>{
11796
- if (menuBarState.photo && videoElementRef.current) {
12245
+ if (menuBarState.mode === "photo" && videoElementRef.current) {
11797
12246
  onPhotoCapture(videoElementRef.current);
11798
12247
  setFlashAnimation(true);
11799
12248
  }
11800
- if (!menuBarState.photo && !menuBarState.streaming) {
12249
+ if (menuBarState.mode !== "photo" && !menuBarState.streaming) {
11801
12250
  menuBarState.setStreaming(true);
11802
12251
  setTimer(0);
11803
12252
  setCountdownVisible(true);
11804
12253
  }
11805
- if (!menuBarState.photo && menuBarState.streaming) {
12254
+ if (menuBarState.mode !== "photo" && menuBarState.streaming) {
11806
12255
  exitStreaming();
11807
12256
  if (startRecordTime) {
11808
12257
  (0, $c9e496369b59be7a$export$2f377c2162fd02b2).stopRecord();
@@ -11823,14 +12272,41 @@ const $92672d57809ea9d3$export$336a011955157f9a = ()=>{
11823
12272
  removeAsset: removeAsset,
11824
12273
  loading: assetLoading
11825
12274
  }),
11826
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $c0bb66c3d546ed81$export$2b77a92f1a5ad772), {
11827
- title: "Thank you for your submission!",
12275
+ /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $c0bb66c3d546ed81$export$2b77a92f1a5ad772), {
12276
+ title: t("recorder.submissionTitle"),
11828
12277
  state: sendAssetsModalState,
11829
12278
  isDismissable: false,
11830
- children: /*#__PURE__*/ (0, $3Sbms$jsx)("span", {
11831
- className: "text-base text-primaryLight",
11832
- children: "Your photo/video has been successfully sent. We will review it and get back to you soon."
11833
- })
12279
+ children: [
12280
+ /*#__PURE__*/ (0, $3Sbms$jsx)("span", {
12281
+ className: "text-base text-primaryLight",
12282
+ children: t("recorder.submissionDescription")
12283
+ }),
12284
+ /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
12285
+ className: "flex flex-col gap-[20px] border-t border-secondaryVLight pt-[20px]",
12286
+ children: assets.map((asset, index)=>/*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
12287
+ className: "flex flex-row items-center gap-[10px]",
12288
+ children: [
12289
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $c7542aa0d9bb5f39$export$1cd1efc78cb52ca5), {
12290
+ asset: asset
12291
+ }),
12292
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("span", {
12293
+ className: "text-sm",
12294
+ style: {
12295
+ hyphens: "manual"
12296
+ },
12297
+ children: [
12298
+ asset.type === "picture" ? "Photo" : "Video",
12299
+ " ",
12300
+ index + 1,
12301
+ " \xb7",
12302
+ " ",
12303
+ $92672d57809ea9d3$export$3ae94a2503e890a1(new Date(asset.timestamp))
12304
+ ]
12305
+ })
12306
+ ]
12307
+ }))
12308
+ })
12309
+ ]
11834
12310
  })
11835
12311
  ]
11836
12312
  });
@@ -12579,7 +13055,7 @@ var $f8d57e3d223f5089$export$2e2bcd8739ae039 = $f8d57e3d223f5089$var$GreetingVie
12579
13055
 
12580
13056
 
12581
13057
  var $1e2747ca72d0ab49$exports = {};
12582
- $1e2747ca72d0ab49$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-50 {\n z-index: 50;\n}\n\n.z-\\[100\\] {\n z-index: 100;\n}\n\n.z-\\[1\\] {\n z-index: 1;\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-full {\n height: 100%;\n}\n\n.h-\\[150px\\] {\n height: 150px;\n}\n\n.h-\\[60px\\] {\n height: 60px;\n}\n\n.h-\\[72px\\] {\n height: 72px;\n}\n\n.h-\\[56px\\] {\n height: 56px;\n}\n\n.h-\\[40px\\] {\n height: 40px;\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-\\[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-full {\n width: 100%;\n}\n\n.w-\\[60px\\] {\n width: 60px;\n}\n\n.w-\\[72px\\] {\n width: 72px;\n}\n\n.w-\\[56px\\] {\n width: 56px;\n}\n\n.w-\\[76px\\] {\n width: 76px;\n}\n\n.w-screen {\n width: 100vw;\n}\n\n.w-\\[360px\\] {\n width: 360px;\n}\n\n.w-\\[400px\\] {\n width: 400px;\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.w-1\\/3 {\n width: 33.3333%;\n}\n\n.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-\\[600px\\] {\n max-width: 600px;\n}\n\n.max-w-\\[800px\\] {\n max-width: 800px;\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-\\[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-x-auto {\n overflow-x: auto;\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-\\[10px\\] {\n border-radius: 10px;\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-secondaryLight {\n --tw-border-opacity: 1;\n border-color: rgb(179 179 179 / 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-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-black\\/\\[\\.6\\] {\n background-color: #0009;\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-\\[\\#565656\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(86 86 86 / var(--tw-bg-opacity));\n}\n\n.bg-black, .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.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.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.pb-\\[25px\\] {\n padding-bottom: 25px;\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-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-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-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";
13058
+ $1e2747ca72d0ab49$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";
12583
13059
 
12584
13060
 
12585
13061
  var $e02c50a47b475960$exports = {};
@@ -12652,12 +13128,14 @@ const $24075a5d702d64b3$export$3f94917203ab7078 = {
12652
13128
  ]
12653
13129
  }));
12654
13130
  if (mergedOptions.tracking) (0, $3Sbms$hotjarbrowser).init(3111933, 6);
13131
+ (0, $35b37252690084e8$export$1cbfb36c1655a9a)(rootElement, element);
12655
13132
  },
12656
13133
  initGreeting: (element, onGreetingDone)=>{
12657
13134
  const rootElement = (0, $3Sbms$createRoot)(element);
12658
13135
  rootElement.render(/*#__PURE__*/ (0, $3Sbms$jsx)((0, $f8d57e3d223f5089$export$2e2bcd8739ae039), {
12659
13136
  onGreetingDone: onGreetingDone
12660
13137
  }));
13138
+ (0, $35b37252690084e8$export$1cbfb36c1655a9a)(rootElement, element);
12661
13139
  },
12662
13140
  setExtraSettingsOptions: (extraOptions)=>{
12663
13141
  const event = new CustomEvent("streamUISetExtraSettingsOptions", {