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