@snapcall/stream-ui 1.24.1 → 1.25.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/stream-ui.esm.js +1130 -611
- package/dist/stream-ui.js +1127 -608
- package/dist/types.d.ts +41 -32
- package/package.json +13 -8
- package/dist/stream-ui.umd.js +0 -2121
- package/dist/streamerClient/index.js +0 -4
- package/dist/streamerClient/timer.ed477f04.js +0 -1
- package/dist/timer.ed477f04.js +0 -1
package/dist/stream-ui.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
var $jQDcL$reactjsxruntime = require("react/jsx-runtime");
|
|
2
2
|
var $jQDcL$reactdomclient = require("react-dom/client");
|
|
3
|
-
var $jQDcL$hotjarbrowser = require("@hotjar/browser");
|
|
4
3
|
var $jQDcL$bowser = require("bowser");
|
|
5
4
|
var $jQDcL$reacthottoast = require("react-hot-toast");
|
|
6
5
|
var $jQDcL$styledcomponents = require("styled-components");
|
|
@@ -37,7 +36,6 @@ $parcel$export(module.exports, "streamUI", () => $e68207026aca356b$export$3f9491
|
|
|
37
36
|
|
|
38
37
|
|
|
39
38
|
|
|
40
|
-
|
|
41
39
|
// https://github.com/voodoocreation/ts-deepmerge/blob/master/src/index.ts
|
|
42
40
|
const $6b4cf4c12c735fdf$var$isObject = (obj)=>{
|
|
43
41
|
if (typeof obj === "object" && obj !== null) {
|
|
@@ -348,7 +346,6 @@ const $57b7750d9786bf6f$export$1cbfb36c1655a9a = (root, element)=>{
|
|
|
348
346
|
|
|
349
347
|
|
|
350
348
|
|
|
351
|
-
|
|
352
349
|
const $393bda1b33846dfc$export$604ba5624273df44 = ()=>{
|
|
353
350
|
try {
|
|
354
351
|
const storedTheme = localStorage.getItem("stream_ui_language");
|
|
@@ -362,27 +359,27 @@ const $393bda1b33846dfc$export$604ba5624273df44 = ()=>{
|
|
|
362
359
|
|
|
363
360
|
|
|
364
361
|
var $20859e1dad0fd138$exports = {};
|
|
365
|
-
$20859e1dad0fd138$exports = JSON.parse('{"header":{"free":"Free version"},"loader":{"connection":"Connecting..."},"common":{"new":"new"},"notifications":{"screensharingError":"An error occured when trying to toggle screensharing","microphoneError":"An error occured when trying to toggle the microphone","cameraError":"An error occured when trying to toggle the camera","cameraRotateError":"An error occured when trying to rotate the camera","noCamera":"No camera available","blockedMicrophonePopupTitle":"Camera and microphone are blocked","blockedMicrophonePopup":"SnapCall requires access to your camera and microphone. Click the camera blocked icon in your browser\'s address bar.","reload":"Reload","criticalError":"A critical error has occurred (error {{code}}).","agentJoinError":"An error occured while trying to join the room as an agent","close":"Close","connectedTo":"Connected to {{name}}","recording":"Recording in progress","invitationSentToFailed":"Sent to {{ name }} failed.","uploadError":"An error occured during the upload, please try again later."},"recordingPopup":{"recordingStartTitle":"Recording about to start.","recordingStartText":"This call will be recorded shortly. If you\u2019d rather not be recorded, you\u2019re welcome to leave the call at this time.","dismiss":"Dismiss"},"requestAccess":{"wantToJoin":"<bold>{{name}}</bold> wants to join!","deny":"Deny","admit":"Admit","defaultName":"An user"},"endView":{"goBack":"Go back to call","tooLate":"You arrived too late","callIsOver":"The call is over or deleted","callEnded":"The call is now ended","callLeft":"You left the call","full":"You can\'t join this call","fullDescription":"The room is full. Please try to join the call later."},"menu":{"title":"Menu","new":"NEW","openNewTab":"Open new tab","quickConnect":"Quick Connect","pictureInPicture":"Picture-in-Picture","screenSharing":"Screen sharing","stopRecord":"Stop record","startRecord":"Record call"},"blockedFeature":{"titleConnected":"Upgrade to Pro","titleGuest":"Feature not available","descriptionConnected":"On a free plan, you can\'t use this feature. Upgrade your plan to enjoy all in-call features.","descriptionGuest":"You are participating in a call created with a free version of SnapCall. This feature is only available with a Pro version.","dismissGuest":"Okay","dismissConnected":"Upgrade to Pro"},"copyLink":{"title":"Copy link","description":"Copy link into clipboard","error":"An error occured when trying to copy to clipboard","copied":"Link copied to clipboard","copy":"Copy"},"quickConnect":{"title":"Quick Connect","scanTitle":"Scan QR Code","scan":"Scan this QR code with your phone camera to open the call."},"settings":{"title":"Settings","preferences":"Preferences","language":"Language","devices":"Devices","help":"Help","helpCenter":"Go to help center"},"audioMenu":{"title":"Audio","blockedMicrophone":"Microphone is blocked.","microphonePermissions":"Please accept microphone sharing before accessing these options."},"videoMenu":{"title":"Video","lowDef":"Low definition (240p)","standardDef":"Standard definition (480p)","highDef":"High definition (720p)","blockedCamera":"Camera is blocked.","cameraPermissions":"Please accept camera sharing before accessing these options.","sendResolution":"Send Resolution (maximum)"},"shareLink":{"title":"Share link","title2":"Share a link","invalid":"Invalid link","sentToUsers":"Link sent to users","sentToUser":"Link sent to {{user}}","failed":"Failed to send link","poweredBy":"Powered by","invoice":"{{user}} sent you an invoice.","pay":"Pay"},"invitePeople":{"PublicLink":"Public link","invitePeople":"Invite people","joinTheCall":"Join the call","inviteRecordClip":"Invite to record clip","inviteRecordVideo":"Record a video","inviteRecordAudio":"Record an audio","inviteRecordScreen":"Record a screen","inviteRecordPhoto":"Take a photo","inviteCall":"Invite to join call","sharePublicLink":"Share public link","inviteByEmail":"Invite by email","inviteByEmailOrNumber":"Invite by email or sms","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","addEmailToInvite":"Add an email to invite.","email":"Email","emailPlaceholder":"Eg. john@acme.com","invite":"Invite","linkToJoinCall":"Link to join the call","linkToRecordAClip":"Link to record a clip","invalidEmail":"Invalid email format.","invalidEmailOrNumber":"Invalid email or number format.","addEmails":"Add emails...","invitationSentTo_one":"Sent to {{ name }}","invitationSentTo_other":"Sent to {{ name }} and {{ otherEmailsCount }}+","error":"Failed to send, please try again later.","inviteCallDefaultMessage":"Hey! You\'re invited to join our video call. Click the link to connect instantly.","inviteClipDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","message":"Message"},"youtube":{"title":"Watch Together","url":"YOUTUBE URL","invalid":"Invalid YouTube URL","share":"Watch now"},"sharedHistory":{"shared":"Shared with you"},"snapshot":{"title":"Snapshot","shared":"Snapshot shared.","sentToUsers":"Snapshot sent to users.","sentToUser":"Snapshot sent to {{user}}","save":"Save photo","error":"An error occured when trying to send the snapshot"},"gdpr":{"recordedWarning":"To improve the quality of our service, this call will be recorded."},"requestDevice":{"requestInput":"Request input devices","request":"{{user}} would like you to share your {{device}}","timedOut":"Your request has timed out.","declined":"Your request has been declined.","userDeclined":"{{user}} has declined your request."},"leave":{"title":"Leave","leaveCall":"Leave call","endCall":"End call for all"},"virtualBackground":{"title":"Virtual Background","setBackground":"Set Background"},"misc":{"someone":"Someone","camera":"Camera","microphone":"Microphone","photo":"Photo","video":"Video","screen":"Screen","screenshot":"Screenshot","speaker":"Speaker","user":"User","open":"Open","from":"From","accept":"Accept","decline":"Decline","you":"You","cancel":"Cancel","confirm":"Confirm","remove":"Remove","proceed":"Proceed","audio":"Audio"},"greeting":{"mainTitle":"Welcome to SnapCall","sideTitle":"Hold tight, you\'re next!","sideDescription":"Please enter your name and adjust your camera and microphone","namePlaceholder":"Eg. Lucy or Peter","nameSubmit":"Join Conversation","footerTitle":"Powered by SnapCall","footerDescription":"Meet SnapCall, the easiest way to add real-time video to platform, product or service.","cameraDisabled":"Camera is Off","microphoneDisabled":"Microphone is Off","cameraEnabled":"Camera is On","microphoneEnabled":"Microphone is On","scheduleACall":"Schedule a call","requestACall":"Request a call","name":"Name","nameDescription":"This name will be displayed to all participants in the call.","setting":"Settings","askToJoin":"Ask to join","youWillJoinWhenSomeoneLetsYou":"You will join the call when someone from {{ companyName }} lets you in.","cantJoinCall":"You can\u2019t join this call","someoneDenied":"Someone in the call denied your request to join.","askingLetIn":"Asking to be let in...","takeFewMinute":"This may take a few minutes depending on the availability of the participants.","cantWait":"Can\'t wait?","whatYouCanDo":"Here\u2019s what you can do","leaveMessage":"Leave a message","cantWaitLeaveMessage":"Can\u2019t wait? You can leave a message and you will be contacted as soon as possible.","recordVideo":"Record video","recordVoice":"Record voice","canceledCallRequest":"The call request will be canceled and you will be redirected to the call scheduling page.","mediaDenied":"Microphone and camera access denied","clickOnLock":"Click on the <1></1> lock icon in your browser\'s bar."},"recorder":{"addMore":"Add more","addNewClip":"Add new clip","limit":"Video recording limited to 5 min.","replyAttached":"Your reply has been attached","elementRecordedAndAttached":"Your clip has been sent and attached to the thread.","goBackToTicket":"Go back to ticket","openThread":"Open thread","clipSubmissionTitle_one":"Your clip has been sent","clipSubmissionTitle_other":"Your clips have been sent","clipSubmissionDescription":"Thank you for using SnapCall.","submissionTitle":"Thank you for your submission!","submissionDescription":"Your photo/video has been successfully submitted. We will review it and get back to you shortly.","confirmRemovalTitle":"Confirm deletion","confirmRemovalDescription":"Are you sure you want to delete this photo/video? This action cannot be undone.","elementBeingProcessed":"Please wait while your {{ type }} is being processed...","waitVideo":"A video may take up to 15 seconds to be ready.","elementCaptureSuccess":"{{ type }} captured successfully","takeNewElement":"Capture a new {{ type }}","send":"Send","sendElements_one":"Send {{ type }}","sendElements_other":"Send {{ count }} elements","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","attachElements_one":"Attach {{ type }} to ticket","attachElements_other":"Attach {{ count }} elements","allowAccess":"Allow access","okay":"Okay","allowCamMicAccess":"Allow access to cam/mic","allowScreenShareAccess":"Allow access to screen sharing","permissionDeniedTitle":"Something went wrong!","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.","photoInstructionsTitle":"Ready to snap a photo?","videoInstructionsTitle":"Ready to record a video?","screenShareInstructionsTitle":"Ready to share your screen?","audioInstructionsTitle":"Ready to record a voice message?","instructions":{"selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","allowAccessOnPrompt":"When prompted, <bold>allow access</bold> to camera and microphone.","multiplePhotos":"Take a <bold>photo or multiple</bold> for detail, then review.","reviewAndSendPhotos":"<bold>Validate your photos</bold>, and they will be sent to us automatically.","tapVideoButton":"<bold>Tap the record button</bold> to begin and feel free to provide commentary.","videoSpeech":"You can <bold>talk during</bold> the recording to provide additional information.","tapStopVideoButton":"<bold>Tap stop</bold> when you are done.","reviewAndSendVideos":"<bold>Review your videos</bold>, and they will be sent to us automatically.","screenShareInstruction":"Select the screen or window you wish to record.","privacyPolicy":"By proceeding, you agree to our <bold>Privacy Policy</bold>.","tapAudioButton":"<bold>Tap the record button</bold> to start recording your audio message.","speakClearly":"<bold>Speak clearly</bold> and say what you need to convey.","reviewAndSendAudios":"<bold>Review your audios</bold>, and they will be sent to us automatically."},"switchToMobileTitle":"Switch to your mobile device","switchToMobileDescription":"Experience greater convenience by using your phone to take photos and record videos.","useDesktopVersion":"Use the desktop version","scanQRCode":"Scan this QR code with a compatible device.","startScreenShareButton":"Record my screen","stopScreenShareButton":"Stop recording","screenTitle":"Ready to capture your screen?","loggedAs":"Logged as","logIn":"Log in","audioLevelNotification":{"shortVideo":{"title":"Short video.","description":"This video is too short to get context."},"noSound":{"title":"No sound detected.","description":"Make sure your microphone is activated."},"spokenWordsQuestion":{"title":"Spoken words.","description":"Does your video include enough spoken details?"},"spokenWordsWarning":{"title":"No spoken words.","description":"The clip includes barely any spoken words."}},"audioLevelToast":{"continueSpeaking":"Continue speaking for clearer context.","rememberSpeaking":"Remember to speak to provide context.","noSound":"No sound detected."},"chooseWhatYouWantToShare":"Choose what you want to share","startScreenRecording":"Start screen recording","noCameraAndMicrophoneAccess":"No camera & microphone access","noCameraAccess":"No camera access","noMicrophoneAccess":"No microphone access","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","showQrCode":"Show QR code","upload":"Upload"}}');
|
|
362
|
+
$20859e1dad0fd138$exports = JSON.parse('{"header":{"free":"Free version"},"loader":{"connection":"Connecting..."},"common":{"new":"new"},"notifications":{"error":"Error","screensharingError":"An error occured when trying to toggle screensharing","microphoneError":"An error occured when trying to toggle the microphone","cameraError":"An error occured when trying to toggle the camera","cameraRotateError":"An error occured when trying to rotate the camera","noCamera":"No camera available","blockedMicrophonePopupTitle":"Camera and microphone are blocked","blockedMicrophonePopup":"SnapCall requires access to your camera and microphone. Click the camera blocked icon in your browser\'s address bar.","reload":"Reload","criticalError":"A critical error has occurred (error {{code}}).","agentJoinError":"An error occured while trying to join the room as an agent","close":"Close","connectedTo":"Connected to {{name}}","recording":"Recording in progress","invitationSentToFailed":"Sent to {{ name }} failed.","errorOccuredCode":"An error occured (error {{code}})."},"recordingPopup":{"recordingStartTitle":"Recording about to start.","recordingStartText":"This call will be recorded shortly. If you\u2019d rather not be recorded, you\u2019re welcome to leave the call at this time.","dismiss":"Dismiss"},"requestAccess":{"wantToJoin":"<bold>{{name}}</bold> wants to join!","deny":"Deny","admit":"Admit","defaultName":"An user"},"endView":{"goBack":"Go back to call","callEnded":"The call has ended","callNoLongerActive":"This call is no longer active. Thank you for participating.","callLeft":"You have left the call","ifMistakeRejoin":"If this was a mistake, you can rejoin using the button below.","full":"You can\'t join this call","fullDescription":"The room is full. Please try to join the call later.","invalidLink":"Invalid link","invalidOrExpired":"This link is invalid or expired.","openDashboard":"Open dashboard"},"menu":{"title":"Menu","new":"NEW","openNewTab":"Open new tab","quickConnect":"Quick Connect","pictureInPicture":"Picture-in-Picture","screenSharing":"Screen sharing","stopRecord":"Stop record","startRecord":"Record call"},"blockedFeature":{"titleConnected":"Upgrade to Pro","titleGuest":"Feature not available","descriptionConnected":"On a free plan, you can\'t use this feature. Upgrade your plan to enjoy all in-call features.","descriptionGuest":"You are participating in a call created with a free version of SnapCall. This feature is only available with a Pro version.","dismissGuest":"Okay","dismissConnected":"Upgrade to Pro"},"copyLink":{"title":"Copy link","description":"Copy link into clipboard","error":"An error occured when trying to copy to clipboard","copied":"Link copied to clipboard","copy":"Copy"},"quickConnect":{"title":"Quick Connect","scanTitle":"Scan QR Code","scan":"Scan this QR code with your phone camera to open the call."},"settings":{"title":"Settings","preferences":"Preferences","language":"Language","devices":"Devices","help":"Help","helpCenter":"Go to help center","selectYourMicrophone":"Select your preferred microphone","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language"},"audioMenu":{"title":"Audio","blockedMicrophone":"Microphone is blocked.","microphonePermissions":"Please accept microphone sharing before accessing these options."},"videoMenu":{"title":"Video","lowDef":"Low definition (240p)","standardDef":"Standard definition (480p)","highDef":"High definition (720p)","blockedCamera":"Camera is blocked.","cameraPermissions":"Please accept camera sharing before accessing these options.","sendResolution":"Send Resolution (maximum)"},"shareLink":{"title":"Share link","title2":"Share a link","invalid":"Invalid link","sentToUsers":"Link sent to users","sentToUser":"Link sent to {{user}}","failed":"Failed to send link","poweredBy":"Powered by","invoice":"{{user}} sent you an invoice.","pay":"Pay"},"invitePeople":{"PublicLink":"Public link","invitePeople":"Invite people","joinTheCall":"Join the call","inviteRecordClip":"Invite to record clip","inviteRecordVideo":"Record a video","inviteRecordAudio":"Record an audio","inviteRecordScreen":"Record a screen","inviteRecordPhoto":"Take a photo","inviteCall":"Invite to join call","sharePublicLink":"Share public link","inviteByEmail":"Invite by email","inviteByEmailOrNumber":"Invite by email or sms","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","addEmailToInvite":"Add an email to invite.","email":"Email","emailPlaceholder":"Eg. john@acme.com","invite":"Invite","linkToJoinCall":"Link to join the call","linkToRecordAClip":"Link to record a clip","invalidEmail":"Invalid email format.","invalidEmailOrNumber":"Invalid email or number format.","addEmails":"Add emails...","invitationSentTo_one":"Sent to {{ name }}","invitationSentTo_other":"Sent to {{ name }} and {{ otherEmailsCount }}+","error":"Failed to send, please try again later.","inviteCallDefaultMessage":"Hey! You\'re invited to join our video call. Click the link to connect instantly.","inviteClipDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","message":"Message"},"youtube":{"title":"Watch Together","url":"YOUTUBE URL","invalid":"Invalid YouTube URL","share":"Watch now"},"sharedHistory":{"shared":"Shared with you"},"snapshot":{"title":"Snapshot","shared":"Snapshot shared.","sentToUsers":"Snapshot sent to users.","sentToUser":"Snapshot sent to {{user}}","save":"Save photo","error":"An error occured when trying to send the snapshot"},"gdpr":{"recordedWarning":"To improve the quality of our service, this call will be recorded."},"requestDevice":{"requestInput":"Request input devices","request":"{{user}} would like you to share your {{device}}","timedOut":"Your request has timed out.","declined":"Your request has been declined.","userDeclined":"{{user}} has declined your request."},"leave":{"title":"Leave","leaveCall":"Leave call","endCall":"End call for all"},"virtualBackground":{"title":"Virtual Background","setBackground":"Set Background"},"misc":{"someone":"Someone","camera":"Camera","microphone":"Microphone","photo":"Photo","video":"Video","screen":"Screen","screenshot":"Screenshot","speaker":"Speaker","user":"User","open":"Open","from":"From","accept":"Accept","decline":"Decline","you":"You","cancel":"Cancel","confirm":"Confirm","remove":"Remove","proceed":"Proceed","audio":"Audio"},"greeting":{"mainTitle":"Welcome to SnapCall","sideTitle":"Hold tight, you\'re next!","sideDescription":"Please enter your name and adjust your camera and microphone","namePlaceholder":"Eg. Lucy or Peter","nameSubmit":"Join Conversation","footerTitle":"Powered by SnapCall","footerDescription":"Meet SnapCall, the easiest way to add real-time video to platform, product or service.","cameraDisabled":"Camera is Off","microphoneDisabled":"Microphone is Off","cameraEnabled":"Camera is On","microphoneEnabled":"Microphone is On","scheduleACall":"Schedule a call","requestACall":"Request a call","name":"Name","nameDescription":"This name will be displayed to all participants in the call.","setting":"Settings","askToJoin":"Ask to join","youWillJoinWhenSomeoneLetsYou":"You will join the call when someone from {{ companyName }} lets you in.","cantJoinCall":"You can\u2019t join this call","someoneDenied":"Someone in the call denied your request to join.","askingLetIn":"Asking to be let in...","takeFewMinute":"This may take a few minutes depending on the availability of the participants.","cantWait":"Can\'t wait?","whatYouCanDo":"Here\u2019s what you can do","leaveMessage":"Leave a message","cantWaitLeaveMessage":"Can\u2019t wait? You can leave a message and you will be contacted as soon as possible.","recordVideo":"Record video","recordVoice":"Record voice","canceledCallRequest":"The call request will be canceled and you will be redirected to the call scheduling page.","mediaDenied":"Microphone and camera access denied","clickOnLock":"Click on the <1></1> lock icon in your browser\'s bar."},"recorder":{"addMore":"Add more","addNewClip":"Add new clip","limit":"Video recording limited to 5 min.","replyAttached":"Your reply has been attached","elementRecordedAndAttached":"Your clip has been sent and attached to the thread.","goBackToTicket":"Go back to ticket","openThread":"Open thread","clipSubmissionTitle_one":"Your clip has been sent","clipSubmissionTitle_other":"Your clips have been sent","clipSubmissionDescription":"Thank you for using SnapCall.","submissionTitle":"Thank you for your submission!","submissionDescription":"Your photo/video has been successfully submitted. We will review it and get back to you shortly.","confirmRemovalTitle":"Confirm deletion","confirmRemovalDescription":"Are you sure you want to delete this photo/video? This action cannot be undone.","elementBeingProcessed":"Please wait while your {{ type }} is being processed...","waitVideo":"A video may take up to 15 seconds to be ready.","elementCaptureSuccess":"{{ type }} captured successfully","takeNewElement":"Capture a new {{ type }}","send":"Send","sendElements_one":"Send {{ type }}","sendElements_other":"Send {{ count }} elements","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","attachElements_one":"Attach {{ type }} to ticket","attachElements_other":"Attach {{ count }} elements","allowAccess":"Allow access","okay":"Okay","allowCamMicAccess":"Allow access to cam/mic","allowScreenShareAccess":"Allow access to screen sharing","permissionDeniedTitle":"Something went wrong!","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.","photoInstructionsTitle":"Ready to snap a photo?","videoInstructionsTitle":"Ready to record a video?","screenShareInstructionsTitle":"Ready to share your screen?","audioInstructionsTitle":"Ready to record a voice message?","instructions":{"selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","allowAccessOnPrompt":"When prompted, <bold>allow access</bold> to camera and microphone.","multiplePhotos":"Take a <bold>photo or multiple</bold> for detail, then review.","reviewAndSendPhotos":"<bold>Validate your photos</bold>, and they will be sent to us automatically.","tapVideoButton":"<bold>Tap the record button</bold> to begin and feel free to provide commentary.","videoSpeech":"You can <bold>talk during</bold> the recording to provide additional information.","tapStopVideoButton":"<bold>Tap stop</bold> when you are done.","reviewAndSendVideos":"<bold>Review your videos</bold>, and they will be sent to us automatically.","screenShareInstruction":"Select the screen or window you wish to record.","privacyPolicy":"By proceeding, you agree to our <bold>Privacy Policy</bold>.","tapAudioButton":"<bold>Tap the record button</bold> to start recording your audio message.","speakClearly":"<bold>Speak clearly</bold> and say what you need to convey.","reviewAndSendAudios":"<bold>Review your audios</bold>, and they will be sent to us automatically."},"switchToMobileTitle":"Switch to your mobile device","switchToMobileDescription":"Experience greater convenience by using your phone to take photos and record videos.","useDesktopVersion":"Use the desktop version","scanQRCode":"Scan this QR code with a compatible device.","startScreenShareButton":"Record my screen","stopScreenShareButton":"Stop recording","screenTitle":"Ready to capture your screen?","loggedAs":"Logged as","logIn":"Log in","audioLevelNotification":{"shortVideo":{"title":"Short video.","description":"This video is too short to get context."},"noSound":{"title":"No sound detected.","description":"Make sure your microphone is activated."},"spokenWordsQuestion":{"title":"Spoken words.","description":"Does your video include enough spoken details?"},"spokenWordsWarning":{"title":"No spoken words.","description":"The clip includes barely any spoken words."}},"audioLevelToast":{"continueSpeaking":"Continue speaking for clearer context.","rememberSpeaking":"Remember to speak to provide context.","noSound":"No sound detected."},"chooseWhatYouWantToShare":"Choose what you want to share","startScreenRecording":"Start screen recording","noCameraAndMicrophoneAccess":"No camera & microphone access","noCameraAccess":"No camera access","noMicrophoneAccess":"No microphone access","chooseWhatYouWantToShareDescription":"Select the screen or tab you want to share and start recording.","noCameraAndMicrophoneAccessDescription":"No camera & microphone access Allow microphone and camera access in your browser.","noMicrophoneAccessDescription":"No microphone access Allow microphone access in your browser.","noCameraAccessDescription":"No camera access Allow camera access in your browser.","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","showQrCode":"Show QR code","upload":"Upload"}}');
|
|
366
363
|
|
|
367
364
|
|
|
368
365
|
var $a8febdc80ac5353b$exports = {};
|
|
369
|
-
$a8febdc80ac5353b$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"Microphone is blocked.","microphonePermissions":"Please accept microphone sharing before accessing these options.","title":"Audio"},"blockedFeature":{"descriptionConnected":"On a free plan, you can\'t use this feature. Upgrade your plan to enjoy all in-call features.","descriptionGuest":"You are participating in a call created with a free version of SnapCall. This feature is only available with a Pro version.","dismissConnected":"Upgrade to Pro","dismissGuest":"Okay","titleConnected":"Upgrade to Pro","titleGuest":"Feature not available"},"common":{"new":"new"},"copyLink":{"copied":"Link copied to clipboard","copy":"Copy","description":"Copy link into clipboard","error":"An error occured when trying to copy to clipboard","title":"Copy link"},"endView":{"callEnded":"The call is now ended","callIsOver":"The call is over or deleted","callLeft":"You left the call","full":"You can\'t join this call","fullDescription":"The room is full. Please try to join the call later.","goBack":"Go back to call","tooLate":"You arrived too late"},"gdpr":{"recordedWarning":"To improve the quality of our service, this call will be recorded."},"greeting":{"askToJoin":"Ask to join","askingLetIn":"Asking to be let in...","cameraDisabled":"Camera is Off","cameraEnabled":"Camera is On","canceledCallRequest":"The call request will be canceled and you will be redirected to the call scheduling page.","cantJoinCall":"You can\u2019t join this call","cantWait":"Can\'t wait?","cantWaitLeaveMessage":"Can\u2019t wait? You can leave a message and you will be contacted as soon as possible.","clickOnLock":"Click on the <1></1> lock icon in your browser\'s bar.","footerDescription":"Meet SnapCall, the easiest way to add real-time video to platform, product or service.","footerTitle":"Powered by SnapCall","leaveMessage":"Leave a message","mainTitle":"Welcome to SnapCall","mediaDenied":"Microphone and camera access denied","microphoneDisabled":"Microphone is Off","microphoneEnabled":"Microphone is On","name":"Name","nameDescription":"This name will be displayed to all participants in the call.","namePlaceholder":"Eg. Lucy or Peter","nameSubmit":"Join Conversation","recordVideo":"Record video","recordVoice":"Record voice","requestACall":"Request a call","scheduleACall":"Schedule a call","setting":"Settings","sideDescription":"Please enter your name and adjust your camera and microphone","sideTitle":"Hold tight, you\'re next!","someoneDenied":"Someone in the call denied your request to join.","takeFewMinute":"This may take a few minutes depending on the availability of the participants.","whatYouCanDo":"Here\u2019s what you can do","youWillJoinWhenSomeoneLetsYou":"You will join the call when someone from {{ companyName }} lets you in."},"header":{"free":"Free version"},"invitePeople":{"PublicLink":"Public link","addEmailToInvite":"Add an email to invite.","addEmails":"Add emails...","copyCallLinkDescription":"Copy this link and send it to anyone you wish to invite to join the call.","copyClipLinkDescription":"Copy this link and send it to anyone you wish to invite to record a clip.","email":"Email","emailPlaceholder":"Eg. john@acme.com","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","error":"Failed to send, please try again later.","invalidEmail":"Invalid email format.","invalidEmailOrNumber":"Invalid email or number format.","invitationSentTo_one":"Sent to {{ name }}","invitationSentTo_other":"Sent to {{ name }} and {{ otherEmailsCount }}+","invite":"Invite","inviteByEmail":"Invite by email","inviteByEmailOrNumber":"Invite by email or sms","inviteCall":"Invite to join call","inviteCallDefaultMessage":"Hey! You\'re invited to join our video call. Click the link to connect instantly.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipDefaultMessage":"Hey! Please record your video clip now and provide us with more context to assist you better.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","invitePeople":"Invite people","inviteRecordAudio":"Record an audio","inviteRecordClip":"Invite to record clip","inviteRecordPhoto":"Take a photo","inviteRecordScreen":"Record a screen","inviteRecordVideo":"Record a video","joinTheCall":"Join the call","linkToJoinCall":"Link to join the call","linkToRecordAClip":"Link to record a clip","message":"Message","sharePublicLink":"Share public link"},"leave":{"endCall":"End call for all","leaveCall":"Leave call","title":"Leave"},"loader":{"connection":"Connecting..."},"menu":{"new":"NEW","openNewTab":"Open new tab","pictureInPicture":"Picture-in-Picture","quickConnect":"Quick Connect","screenSharing":"Screen sharing","startRecord":"Record call","stopRecord":"Stop record","title":"Menu"},"misc":{"accept":"Accept","audio":"Audio","camera":"Camera","cancel":"Cancel","confirm":"Confirm","decline":"Decline","from":"From","microphone":"Microphone","open":"Open","photo":"Photo","proceed":"Proceed","remove":"Remove","screen":"Screen","screenshot":"Screenshot","someone":"Someone","speaker":"Speaker","user":"User","video":"Video","you":"You"},"notifications":{"agentJoinError":"An error occured while trying to join the room as an agent","blockedMicrophonePopup":"SnapCall requires access to your camera and microphone. Click the camera blocked icon in your browser\'s address bar.","blockedMicrophonePopupTitle":"Camera and microphone are blocked","cameraError":"An error occured when trying to toggle the camera","cameraRotateError":"An error occured when trying to rotate the camera","close":"Close","connectedTo":"Connected to {{name}}","criticalError":"A critical error has occurred (error {{code}}).","invitationSentToFailed":"Sent to {{ name }} failed.","microphoneError":"An error occured when trying to toggle the microphone","noCamera":"No camera available","recording":"Recording in progress","reload":"Reload","screensharingError":"An error occured when trying to toggle screensharing","uploadError":"An error occured during the upload, please try again later."},"quickConnect":{"scan":"Scan this QR code with your phone camera to open the call.","scanTitle":"Scan QR Code","title":"Quick Connect"},"recorder":{"addMore":"Add more","addNewClip":"Add new clip","allowAccess":"Allow access","allowCamMicAccess":"Allow access to cam/mic","allowScreenShareAccess":"Allow access to screen sharing","attachElements_one":"Attach {{ type }} to ticket","attachElements_other":"Attach {{ count }} elements","audioInstructionsTitle":"Ready to record a voice message?","audioLevelNotification":{"noSound":{"description":"Make sure your microphone is activated.","title":"No sound detected."},"shortVideo":{"description":"This video is too short to get context.","title":"Short video."},"spokenWordsQuestion":{"description":"Does your video include enough spoken details?","title":"Spoken words."},"spokenWordsWarning":{"description":"The clip includes barely any spoken words.","title":"No spoken words."}},"audioLevelToast":{"continueSpeaking":"Continue speaking for clearer context.","noSound":"No sound detected.","rememberSpeaking":"Remember to speak to provide context."},"chooseWhatYouWantToShare":"Choose what you want to share","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","clipSubmissionDescription":"Thank you for using SnapCall.","clipSubmissionTitle_one":"Your clip has been sent","clipSubmissionTitle_other":"Your clips have been sent","confirmRemovalDescription":"Are you sure you want to delete this photo/video? This action cannot be undone.","confirmRemovalTitle":"Confirm deletion","elementBeingProcessed":"Please wait while your {{ type }} is being processed...","elementCaptureSuccess":"{{ type }} captured successfully","elementRecordedAndAttached":"Your clip has been sent and attached to the thread.","goBackToTicket":"Go back to ticket","instructions":{"allowAccessOnPrompt":"When prompted, <bold>allow access</bold> to camera and microphone.","multiplePhotos":"Take a <bold>photo or multiple</bold> for detail, then review.","privacyPolicy":"By proceeding, you agree to our <bold>Privacy Policy</bold>.","reviewAndSendAudios":"<bold>Review your audios</bold>, and they will be sent to us automatically.","reviewAndSendPhotos":"<bold>Validate your photos</bold>, and they will be sent to us automatically.","reviewAndSendVideos":"<bold>Review your videos</bold>, and they will be sent to us automatically.","screenShareInstruction":"Select the screen or window you wish to record.","selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakClearly":"<bold>Speak clearly</bold> and say what you need to convey.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","tapAudioButton":"<bold>Tap the record button</bold> to start recording your audio message.","tapStopVideoButton":"<bold>Tap stop</bold> when you are done.","tapVideoButton":"<bold>Tap the record button</bold> to begin and feel free to provide commentary.","videoSpeech":"You can <bold>talk during</bold> the recording to provide additional information."},"limit":"Video recording limited to 5 min.","logIn":"Log in","loggedAs":"Logged as","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","noCameraAccess":"No camera access","noCameraAndMicrophoneAccess":"No camera & microphone access","noMicrophoneAccess":"No microphone access","okay":"Okay","openThread":"Open thread","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.","permissionDeniedTitle":"Something went wrong!","photoInstructionsTitle":"Ready to snap a photo?","replyAttached":"Your reply has been attached","scanQRCode":"Scan this QR code with a compatible device.","screenShareInstructionsTitle":"Ready to share your screen?","screenTitle":"Ready to capture your screen?","send":"Send","sendElements_one":"Send {{ type }}","sendElements_other":"Send {{ count }} elements","showQrCode":"Show QR code","startScreenRecording":"Start screen recording","startScreenShareButton":"Record my screen","stopScreenShareButton":"Stop recording","submissionDescription":"Your photo/video has been successfully submitted. We will review it and get back to you shortly.","submissionTitle":"Thank you for your submission!","switchToMobileDescription":"Experience greater convenience by using your phone to take photos and record videos.","switchToMobileTitle":"Switch to your mobile device","takeNewElement":"Capture a new {{ type }}","upload":"Upload","useDesktopVersion":"Use the desktop version","videoInstructionsTitle":"Ready to record a video?","waitVideo":"A video may take up to 15 seconds to be ready."},"recordingPopup":{"dismiss":"Dismiss","recordingStartText":"This call will be recorded shortly. If you\u2019d rather not be recorded, you\u2019re welcome to leave the call at this time.","recordingStartTitle":"Recording about to start."},"requestAccess":{"admit":"Admit","defaultName":"An user","deny":"Deny","wantToJoin":"<bold>{{name}}</bold> wants to join!"},"requestDevice":{"declined":"Your request has been declined.","request":"{{user}} would like you to share your {{device}}","requestInput":"Request input devices","timedOut":"Your request has timed out.","userDeclined":"{{user}} has declined your request."},"settings":{"devices":"Devices","help":"Help","helpCenter":"Go to help center","language":"Language","preferences":"Preferences","title":"Settings"},"shareLink":{"failed":"Failed to send link","invalid":"Invalid link","invoice":"{{user}} sent you an invoice.","pay":"Pay","poweredBy":"Powered by","sentToUser":"Link sent to {{user}}","sentToUsers":"Link sent to users","title":"Share link","title2":"Share a link"},"sharedHistory":{"shared":"Shared with you"},"snapshot":{"error":"An error occured when trying to send the snapshot","save":"Save photo","sentToUser":"Snapshot sent to {{user}}","sentToUsers":"Snapshot sent to users.","shared":"Snapshot shared.","title":"Snapshot"},"videoMenu":{"blockedCamera":"Camera is blocked.","cameraPermissions":"Please accept camera sharing before accessing these options.","highDef":"High definition (720p)","lowDef":"Low definition (240p)","sendResolution":"Send Resolution (maximum)","standardDef":"Standard definition (480p)","title":"Video"},"virtualBackground":{"setBackground":"Set Background","title":"Virtual Background"},"youtube":{"invalid":"Invalid YouTube URL","share":"Watch now","title":"Watch Together","url":"YOUTUBE URL"}}');
|
|
366
|
+
$a8febdc80ac5353b$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"Microphone is blocked.","microphonePermissions":"Please accept microphone sharing before accessing these options.","title":"Audio"},"blockedFeature":{"descriptionConnected":"On a free plan, you can\'t use this feature. Upgrade your plan to enjoy all in-call features.","descriptionGuest":"You are participating in a call created with a free version of SnapCall. This feature is only available with a Pro version.","dismissConnected":"Upgrade to Pro","dismissGuest":"Okay","titleConnected":"Upgrade to Pro","titleGuest":"Feature not available"},"common":{"new":"new"},"copyLink":{"copied":"Link copied to clipboard","copy":"Copy","description":"Copy link into clipboard","error":"An error occured when trying to copy to clipboard","title":"Copy link"},"endView":{"callEnded":"The call is now ended","callIsOver":"The call is over or deleted","callLeft":"You left the call","callNoLongerActive":"This call is no longer active. Thank you for participating.","full":"You can\'t join this call","fullDescription":"The room is full. Please try to join the call later.","goBack":"Go back to call","ifMistakeRejoin":"If this was a mistake, you can rejoin using the button below.","invalidLink":"Invalid link","invalidOrExpired":"This link is invalid or expired.","openDashboard":"Open dashboard","tooLate":"You arrived too late"},"gdpr":{"recordedWarning":"To improve the quality of our service, this call will be recorded."},"greeting":{"askToJoin":"Ask to join","askingLetIn":"Asking to be let in...","cameraDisabled":"Camera is Off","cameraEnabled":"Camera is On","canceledCallRequest":"The call request will be canceled and you will be redirected to the call scheduling page.","cantJoinCall":"You can\u2019t join this call","cantWait":"Can\'t wait?","cantWaitLeaveMessage":"Can\u2019t wait? You can leave a message and you will be contacted as soon as possible.","clickOnLock":"Click on the <1></1> lock icon in your browser\'s bar.","footerDescription":"Meet SnapCall, the easiest way to add real-time video to platform, product or service.","footerTitle":"Powered by SnapCall","leaveMessage":"Leave a message","mainTitle":"Welcome to SnapCall","mediaDenied":"Microphone and camera access denied","microphoneDisabled":"Microphone is Off","microphoneEnabled":"Microphone is On","name":"Name","nameDescription":"This name will be displayed to all participants in the call.","namePlaceholder":"Eg. Lucy or Peter","nameSubmit":"Join Conversation","recordVideo":"Record video","recordVoice":"Record voice","requestACall":"Request a call","scheduleACall":"Schedule a call","setting":"Settings","sideDescription":"Please enter your name and adjust your camera and microphone","sideTitle":"Hold tight, you\'re next!","someoneDenied":"Someone in the call denied your request to join.","takeFewMinute":"This may take a few minutes depending on the availability of the participants.","whatYouCanDo":"Here\u2019s what you can do","youWillJoinWhenSomeoneLetsYou":"You will join the call when someone from {{ companyName }} lets you in."},"header":{"free":"Free version"},"invitePeople":{"PublicLink":"Public link","addEmailToInvite":"Add an email to invite.","addEmails":"Add emails...","copyCallLinkDescription":"Copy this link and send it to anyone you wish to invite to join the call.","copyClipLinkDescription":"Copy this link and send it to anyone you wish to invite to record a clip.","email":"Email","emailPlaceholder":"Eg. john@acme.com","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","error":"Failed to send, please try again later.","invalidEmail":"Invalid email format.","invalidEmailOrNumber":"Invalid email or number format.","invitationSentTo_one":"Sent to {{ name }}","invitationSentTo_other":"Sent to {{ name }} and {{ otherEmailsCount }}+","invite":"Invite","inviteByEmail":"Invite by email","inviteByEmailOrNumber":"Invite by email or sms","inviteCall":"Invite to join call","inviteCallDefaultMessage":"Hey! You\'re invited to join our video call. Click the link to connect instantly.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipDefaultMessage":"Hey! Please record your video clip now and provide us with more context to assist you better.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","invitePeople":"Invite people","inviteRecordAudio":"Record an audio","inviteRecordClip":"Invite to record clip","inviteRecordPhoto":"Take a photo","inviteRecordScreen":"Record a screen","inviteRecordVideo":"Record a video","joinTheCall":"Join the call","linkToJoinCall":"Link to join the call","linkToRecordAClip":"Link to record a clip","message":"Message","sharePublicLink":"Share public link"},"leave":{"endCall":"End call for all","leaveCall":"Leave call","title":"Leave"},"loader":{"connection":"Connecting..."},"menu":{"new":"NEW","openNewTab":"Open new tab","pictureInPicture":"Picture-in-Picture","quickConnect":"Quick Connect","screenSharing":"Screen sharing","startRecord":"Record call","stopRecord":"Stop record","title":"Menu"},"misc":{"accept":"Accept","audio":"Audio","camera":"Camera","cancel":"Cancel","confirm":"Confirm","decline":"Decline","from":"From","microphone":"Microphone","open":"Open","photo":"Photo","proceed":"Proceed","remove":"Remove","screen":"Screen","screenshot":"Screenshot","someone":"Someone","speaker":"Speaker","user":"User","video":"Video","you":"You"},"notifications":{"agentJoinError":"An error occured while trying to join the room as an agent","blockedMicrophonePopup":"SnapCall requires access to your camera and microphone. Click the camera blocked icon in your browser\'s address bar.","blockedMicrophonePopupTitle":"Camera and microphone are blocked","cameraError":"An error occured when trying to toggle the camera","cameraRotateError":"An error occured when trying to rotate the camera","close":"Close","connectedTo":"Connected to {{name}}","criticalError":"A critical error has occurred (error {{code}}).","error":"Error","errorOccuredCode":"An error occured (error {{code}}).","invitationSentToFailed":"Sent to {{ name }} failed.","microphoneError":"An error occured when trying to toggle the microphone","noCamera":"No camera available","recording":"Recording in progress","reload":"Reload","screensharingError":"An error occured when trying to toggle screensharing","uploadError":"An error occured during the upload, please try again later."},"quickConnect":{"scan":"Scan this QR code with your phone camera to open the call.","scanTitle":"Scan QR Code","title":"Quick Connect"},"recorder":{"addMore":"Add more","addNewClip":"Add new clip","allowAccess":"Allow access","allowCamMicAccess":"Allow access to cam/mic","allowScreenShareAccess":"Allow access to screen sharing","attachElements_one":"Attach {{ type }} to ticket","attachElements_other":"Attach {{ count }} elements","audioInstructionsTitle":"Ready to record a voice message?","audioLevelNotification":{"noSound":{"description":"Make sure your microphone is activated.","title":"No sound detected."},"shortVideo":{"description":"This video is too short to get context.","title":"Short video."},"spokenWordsQuestion":{"description":"Does your video include enough spoken details?","title":"Spoken words."},"spokenWordsWarning":{"description":"The clip includes barely any spoken words.","title":"No spoken words."}},"audioLevelToast":{"continueSpeaking":"Continue speaking for clearer context.","noSound":"No sound detected.","rememberSpeaking":"Remember to speak to provide context."},"chooseWhatYouWantToShare":"Choose what you want to share","chooseWhatYouWantToShareDescription":"Select the screen or tab you want to share and start recording.","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","clipSubmissionDescription":"Thank you for using SnapCall.","clipSubmissionTitle_one":"Your clip has been sent","clipSubmissionTitle_other":"Your clips have been sent","confirmRemovalDescription":"Are you sure you want to delete this photo/video? This action cannot be undone.","confirmRemovalTitle":"Confirm deletion","elementBeingProcessed":"Please wait while your {{ type }} is being processed...","elementCaptureSuccess":"{{ type }} captured successfully","elementRecordedAndAttached":"Your clip has been sent and attached to the thread.","goBackToTicket":"Go back to ticket","instructions":{"allowAccessOnPrompt":"When prompted, <bold>allow access</bold> to camera and microphone.","multiplePhotos":"Take a <bold>photo or multiple</bold> for detail, then review.","privacyPolicy":"By proceeding, you agree to our <bold>Privacy Policy</bold>.","reviewAndSendAudios":"<bold>Review your audios</bold>, and they will be sent to us automatically.","reviewAndSendPhotos":"<bold>Validate your photos</bold>, and they will be sent to us automatically.","reviewAndSendVideos":"<bold>Review your videos</bold>, and they will be sent to us automatically.","screenShareInstruction":"Select the screen or window you wish to record.","selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakClearly":"<bold>Speak clearly</bold> and say what you need to convey.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","tapAudioButton":"<bold>Tap the record button</bold> to start recording your audio message.","tapStopVideoButton":"<bold>Tap stop</bold> when you are done.","tapVideoButton":"<bold>Tap the record button</bold> to begin and feel free to provide commentary.","videoSpeech":"You can <bold>talk during</bold> the recording to provide additional information."},"limit":"Video recording limited to 5 min.","logIn":"Log in","loggedAs":"Logged as","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","noCameraAccess":"No camera access","noCameraAccessDescription":"No camera access Allow camera access in your browser.","noCameraAndMicrophoneAccess":"No camera & microphone access","noCameraAndMicrophoneAccessDescription":"No camera & microphone access Allow microphone and camera access in your browser.","noMicrophoneAccess":"No microphone access","noMicrophoneAccessDescription":"No microphone access Allow microphone access in your browser.","okay":"Okay","openThread":"Open thread","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.","permissionDeniedTitle":"Something went wrong!","photoInstructionsTitle":"Ready to snap a photo?","replyAttached":"Your reply has been attached","scanQRCode":"Scan this QR code with a compatible device.","screenShareInstructionsTitle":"Ready to share your screen?","screenTitle":"Ready to capture your screen?","send":"Send","sendElements_one":"Send {{ type }}","sendElements_other":"Send {{ count }} elements","showQrCode":"Show QR code","startScreenRecording":"Start screen recording","startScreenShareButton":"Record my screen","stopScreenShareButton":"Stop recording","submissionDescription":"Your photo/video has been successfully submitted. We will review it and get back to you shortly.","submissionTitle":"Thank you for your submission!","switchToMobileDescription":"Experience greater convenience by using your phone to take photos and record videos.","switchToMobileTitle":"Switch to your mobile device","takeNewElement":"Capture a new {{ type }}","upload":"Upload","useDesktopVersion":"Use the desktop version","videoInstructionsTitle":"Ready to record a video?","waitVideo":"A video may take up to 15 seconds to be ready."},"recordingPopup":{"dismiss":"Dismiss","recordingStartText":"This call will be recorded shortly. If you\u2019d rather not be recorded, you\u2019re welcome to leave the call at this time.","recordingStartTitle":"Recording about to start."},"requestAccess":{"admit":"Admit","defaultName":"An user","deny":"Deny","wantToJoin":"<bold>{{name}}</bold> wants to join!"},"requestDevice":{"declined":"Your request has been declined.","request":"{{user}} would like you to share your {{device}}","requestInput":"Request input devices","timedOut":"Your request has timed out.","userDeclined":"{{user}} has declined your request."},"settings":{"devices":"Devices","help":"Help","helpCenter":"Go to help center","language":"Language","preferences":"Preferences","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language","selectYourMicrophone":"Select your preferred microphone","title":"Settings"},"shareLink":{"failed":"Failed to send link","invalid":"Invalid link","invoice":"{{user}} sent you an invoice.","pay":"Pay","poweredBy":"Powered by","sentToUser":"Link sent to {{user}}","sentToUsers":"Link sent to users","title":"Share link","title2":"Share a link"},"sharedHistory":{"shared":"Shared with you"},"snapshot":{"error":"An error occured when trying to send the snapshot","save":"Save photo","sentToUser":"Snapshot sent to {{user}}","sentToUsers":"Snapshot sent to users.","shared":"Snapshot shared.","title":"Snapshot"},"videoMenu":{"blockedCamera":"Camera is blocked.","cameraPermissions":"Please accept camera sharing before accessing these options.","highDef":"High definition (720p)","lowDef":"Low definition (240p)","sendResolution":"Send Resolution (maximum)","standardDef":"Standard definition (480p)","title":"Video"},"virtualBackground":{"setBackground":"Set Background","title":"Virtual Background"},"youtube":{"invalid":"Invalid YouTube URL","share":"Watch now","title":"Watch Together","url":"YOUTUBE URL"}}');
|
|
370
367
|
|
|
371
368
|
|
|
372
369
|
var $32156cf38812b83d$exports = {};
|
|
373
|
-
$32156cf38812b83d$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"Votre micro est bloqu\xe9.","microphonePermissions":"Please accept microphone sharing before accessing these options.","title":"Audio"},"blockedFeature":{"descriptionConnected":"Vous n\'avez pas acc\xe8s \xe0 cette fonctionnalit\xe9. Souscrivez au plan Pro pour d\xe9bloquer toutes les fonctionnalit\xe9s de SnapCall.","descriptionGuest":"Vous participez \xe0 un appel cr\xe9\xe9 avec la version gratuite de SnapCall. Cette fonctionnalit\xe9 n\'est disponible qu\'avec une version Pro.","dismissConnected":"Souscrire \xe0 Pro","dismissGuest":"D\'accord","titleConnected":"Souscrire au plan Pro","titleGuest":"Fonctionnalit\xe9 non disponible"},"common":{"new":"new"},"copyLink":{"copied":"Lien copi\xe9 dans le presse-papier","copy":"Copier","description":"Copier le lien dans le presse-papiers","error":"Une erreur est survenue pendant la copie du lien dans le presse-papier","title":"Copier le lien"},"endView":{"callEnded":"Cet appel est termin\xe9","callIsOver":"Cet appel est termin\xe9 ou supprim\xe9","callLeft":"Vous avez quitt\xe9 l\'appel","full":"Impossible de rejoindre l\'appel","fullDescription":"Limite d\'utilisateurs atteinte. Merci de rejoindre l\'appel ult\xe9rieurement.","goBack":"Retourner dans l\'appel","tooLate":"Vous \xeates arriv\xe9 trop tard"},"gdpr":{"recordedWarning":"Pour am\xe9liorer la qualit\xe9 de notre service, cet appel va \xeatre enregistr\xe9."},"greeting":{"askToJoin":"Demander \xe0 rejoindre","askingLetIn":"Demande de participation...","cameraDisabled":"Cam\xe9ra d\xe9sactiv\xe9e","cameraEnabled":"Cam\xe9ra activ\xe9e","canceledCallRequest":"La demande d\'appel sera annul\xe9e et vous serez redirig\xe9 vers la page de planification des appels.","cantJoinCall":"Vous ne pouvez pas rejoindre cet appel","cantWait":"Vous ne souhaitez pas attendre ?","cantWaitLeaveMessage":"Vous ne pouvez pas attendre ? Vous pouvez laisser un message et vous serez contact\xe9 dans les plus brefs d\xe9lais.","clickOnLock":"Cliquez sur l\'ic\xf4ne de verrouillage <1></1> dans la barre de votre navigateur.","footerDescription":"D\xe9couvrez SnapCall, ajoutez de la vid\xe9o en temps r\xe9el \xe0 n\'importe quelle plateforme, produit ou service.","footerTitle":"Propuls\xe9 par SnapCall","leaveMessage":"Laisser un message","mainTitle":"Bienvenue sur SnapCall","mediaDenied":"Acc\xe8s au microphone et \xe0 la cam\xe9ra refus\xe9","microphoneDisabled":"Microphone d\xe9sactiv\xe9","microphoneEnabled":"Microphone activ\xe9","name":"Nom","nameDescription":"Ce nom sera affich\xe9 \xe0 tous les participants","namePlaceholder":"Ex. Lucie ou Pierre","nameSubmit":"Rejoindre la conversation","recordVideo":"Enregistrer une vid\xe9o","recordVoice":"Enregistrer un message vocal","requestACall":"Solliciter un appel maintenant","scheduleACall":"Planifier un appel","setting":"Param\xe8tres","sideDescription":"Veuillez entrer votre nom et configurer votre cam\xe9ra et microphone.","sideTitle":"C\'est bient\xf4t votre tour !","someoneDenied":"Quelqu\'un lors de l\'appel a refus\xe9 votre demande de participation.","takeFewMinute":"Cela peut prendre quelques minutes selon la disponibilit\xe9 des participants.","whatYouCanDo":"Voici ce que vous pouvez faire","youWillJoinWhenSomeoneLetsYou":"Votre acc\xe8s \xe0 l\'appel sera autoris\xe9 par un membre de l\'\xe9quipe {{ companyName }}."},"header":{"free":"Version gratuite"},"invitePeople":{"PublicLink":"Public link","addEmailToInvite":"Ajoutez un e-mail pour inviter.","addEmails":"Ajouter des e-mails...","copyCallLinkDescription":"Copiez ce lien et envoyez-le \xe0 toute personne que vous souhaitez inviter \xe0 rejoindre l\'appel.","copyClipLinkDescription":"Copiez ce lien et envoyez-le \xe0 toute personne que vous souhaitez inviter \xe0 enregistrer un clip.","email":"Email","emailPlaceholder":"Ex. jean@acme.com","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","error":"\xc9chec de l\'envoi, veuillez r\xe9essayer plus tard.","invalidEmail":"Format d\'email invalide.","invalidEmailOrNumber":"Invalid email or number format.","invitationSentTo_one":"Envoy\xe9 \xe0 {{ name }}","invitationSentTo_other":"Envoy\xe9 \xe0 {{ name }} et {{ otherEmailsCount }}+","invite":"Inviter","inviteByEmail":"Inviter par email","inviteByEmailOrNumber":"Invite by email or sms","inviteCall":"Inviter \xe0 rejoindre l\'appel","inviteCallDefaultMessage":"Vous \xeates invit\xe9 \xe0 rejoindre notre appel vid\xe9o. Cliquez sur le lien pour vous connecter instantan\xe9ment.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipDefaultMessage":"Veuillez enregistrer votre clip vid\xe9o maintenant et nous fournir plus de contexte pour mieux vous aider.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","invitePeople":"Invite people","inviteRecordAudio":"Record an audio","inviteRecordClip":"Inviter \xe0 enregistrer un clip","inviteRecordPhoto":"Take a photo","inviteRecordScreen":"Record a screen","inviteRecordVideo":"Record a video","joinTheCall":"Join the call","linkToJoinCall":"Lien pour rejoindre l\'appel","linkToRecordAClip":"Lien pour enregistrer un clip","message":"Message","sharePublicLink":"Partager le lien public"},"leave":{"endCall":"Terminer l\'appel","leaveCall":"Quitter l\'appel","title":"Quitter"},"loader":{"connection":"Connexion..."},"menu":{"new":"NOUVEAU","openNewTab":"Ouvrir un nouvel onglet","pictureInPicture":"Picture-in-Picture","quickConnect":"Quick Connect","screenSharing":"Partage d\'\xe9cran","startRecord":"Enregistrer l\'appel","stopRecord":"Arr\xeater l\'enregistrement","title":"Menu"},"misc":{"accept":"Accepter","audio":"Audio","camera":"Cam\xe9ra","cancel":"Annuler","confirm":"Confirmer","decline":"D\xe9cliner","from":"Depuis","microphone":"Micro","open":"Ouvrir","photo":"Photo","proceed":"Proc\xe9der","remove":"Enlever","screen":"\xc9cran","screenshot":"Capture d\'\xe9cran","someone":"Quelqu\'un","speaker":"Haut-parleur","user":"Utilisateur","video":"Vid\xe9o","you":"Vous"},"notifications":{"agentJoinError":"Une erreur est survenue en essayant de rejoindre la salle en tant qu\'agent","blockedMicrophonePopup":"SnapCall a besoin d\'acc\xe9der \xe0 votre cam\xe9ra et micro. Cliquez sur l\'ic\xf4ne de cam\xe9ra bloqu\xe9e dans la barre d\'adresse du navigateur.","blockedMicrophonePopupTitle":"Votre cam\xe9ra et micro sont bloqu\xe9s","cameraError":"Une erreur est survenue pendant l\'activation de la cam\xe9ra","cameraRotateError":"Une erreur est survenue pendant la rotation de la cam\xe9ra","close":"Fermer","connectedTo":"Connect\xe9 \xe0 {{name}}","criticalError":"Une erreur critique est survenue (erreur {{code}}).","invitationSentToFailed":"Sent to {{ name }} failed.","microphoneError":"Une erreur est survenue pendant l\'activation du micro","noCamera":"Aucune cam\xe9ra disponible","recording":"Enregistrement en cours","reload":"Recharger","screensharingError":"Une erreur est survenue pendant l\'activation du partage d\'\xe9cran","uploadError":"An error occured during the upload, please try again later."},"quickConnect":{"scan":"Scannez ce QR code avec votre t\xe9l\xe9phone pour ouvrir l\'appel.","scanTitle":"Scannez le QR Code","title":"Quick Connect"},"recorder":{"addMore":"Ajouter plus","addNewClip":"Ajouter un nouveau clip","allowAccess":"Autoriser l\'acc\xe8s","allowCamMicAccess":"Autoriser acc\xe8s cam\xe9ra/micro","allowScreenShareAccess":"Autoriser l\'acc\xe8s au partage d\'\xe9cran","attachElements_one":"Joindre {{ type }} au ticket","attachElements_other":"Joindre {{ count }} \xe9l\xe9ments","audioInstructionsTitle":"Pr\xeat \xe0 enregistrer un message vocal\xa0?","audioLevelNotification":{"noSound":{"description":"Assurez-vous que votre microphone est activ\xe9.","title":"Aucun son d\xe9tect\xe9."},"shortVideo":{"description":"Cette vid\xe9o semble assez courte, ne fournit pas assez de d\xe9tails.","title":"Vid\xe9o courte."},"spokenWordsQuestion":{"description":"Votre vid\xe9o offre-t-elle une explication d\xe9taill\xe9e et claire ?","title":"Avez-vous tout expliqu\xe9 ?"},"spokenWordsWarning":{"description":"La vid\xe9o ne comprend pratiquement aucun mot prononc\xe9.","title":"Aucun mot prononc\xe9."}},"audioLevelToast":{"continueSpeaking":"Continuez \xe0 parler pour expliquer.","noSound":"Aucun son d\xe9tect\xe9.","rememberSpeaking":"Veuillez parler \xe0 voix-haute."},"chooseWhatYouWantToShare":"Choose what you want to share","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","clipSubmissionDescription":"Merci d\'utiliser SnapCall.","clipSubmissionTitle_one":"Votre clip a \xe9t\xe9 envoy\xe9","clipSubmissionTitle_other":"Vos clips ont \xe9t\xe9 envoy\xe9s","confirmRemovalDescription":"Voulez-vous vraiment supprimer cette photo/vid\xe9o ? Cette action ne peut pas \xeatre annul\xe9e.","confirmRemovalTitle":"Confirmer la suppression","elementBeingProcessed":"Veuillez patienter un moment pendant que votre {{ type }} est en cours de traitement...","elementCaptureSuccess":"{{ type }} captur\xe9(e) avec succ\xe8s","elementRecordedAndAttached":"Votre clip a \xe9t\xe9 envoy\xe9 et joint au fil de discussion.","goBackToTicket":"Revenir au billet","instructions":{"allowAccessOnPrompt":"<bold>Autorisez l\'acc\xe8s</bold> \xe0 la cam\xe9ra et au micro lorsque demand\xe9.","multiplePhotos":"Prenez <bold>une ou plusieurs photos</bold> pour donner plus de d\xe9tails.","privacyPolicy":"En continuant, vous acceptez notre <bold>Politique de confidentialit\xe9</bold>.","reviewAndSendAudios":"<bold>V\xe9rifiez vos audios</bold>, et ils seront envoy\xe9s automatiquement \xe0 nous.","reviewAndSendPhotos":"<bold>Validez vos photos</bold>, et elles nous seront envoy\xe9es automatiquement.","reviewAndSendVideos":"<bold>Validez vos vid\xe9os</bold>, et elles nous seront envoy\xe9es automatiquement.","screenShareInstruction":"S\xe9lectionnez l\'\xe9cran ou la fen\xeatre que vous souhaitez enregistrer.","selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakClearly":"<bold>Parlez clairement</bold> et dites ce que vous devez transmettre.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","tapAudioButton":"<bold>Appuyez sur le bouton d\'enregistrement</bold> pour commencer \xe0 enregistrer votre message audio.","tapStopVideoButton":"<bold>Appuyez sur Arr\xeat</bold> lorsque vous avez termin\xe9.","tapVideoButton":"<bold>Appuyez sur Enregistrer</bold>. Pensez \xe0 commenter.","videoSpeech":"Vous pouvez <bold>parler pendant</bold> l\'enregistrement pour ajouter des d\xe9tails."},"limit":"Enregistrement vid\xe9o limit\xe9 \xe0 5 min.","logIn":"Se connecter","loggedAs":"Connect\xe9 en tant que","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","noCameraAccess":"No camera access","noCameraAndMicrophoneAccess":"No camera & microphone access","noMicrophoneAccess":"No microphone access","okay":"D\'accord","openThread":"Ouvrir le fil de discussion","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.","permissionDeniedTitle":"Quelque chose s\'est mal pass\xe9 !","photoInstructionsTitle":"Pr\xeat \xe0 prendre une photo ?","replyAttached":"Votre r\xe9ponse a \xe9t\xe9 jointe","scanQRCode":"Scannez ce code QR avec un appareil compatible.","screenShareInstructionsTitle":"Pr\xeat \xe0 partager votre \xe9cran ?","screenTitle":"Pr\xeat \xe0 capturer votre \xe9cran ?","send":"Envoyer","sendElements_one":"Envoyer la {{ type }}","sendElements_other":"Envoyer {{ count }} \xe9l\xe9ments","showQrCode":"Show QR code","startScreenRecording":"Start screen recording","startScreenShareButton":"Enregistrer \xe9cran","stopScreenShareButton":"Stop enregistrement","submissionDescription":"Votre photo/vid\xe9o a \xe9t\xe9 envoy\xe9e avec succ\xe8s. Nous l\'examinerons et reviendrons vers vous bient\xf4t.","submissionTitle":"Merci pour votre soumission !","switchToMobileDescription":"Profitez d\'une exp\xe9rience encore plus pratique en utilisant votre t\xe9l\xe9phone pour prendre des photos et enregistrer des vid\xe9os.","switchToMobileTitle":"Passez sur votre mobile","takeNewElement":"Prendre une nouvelle {{ type }}","upload":"Upload","useDesktopVersion":"Continuer","videoInstructionsTitle":"Pr\xeat \xe0 enregistrer une vid\xe9o ?","waitVideo":"Cela peut prendre jusqu\'\xe0 15 secondes pour qu\'une vid\xe9o soit pr\xeate."},"recordingPopup":{"dismiss":"Fermer","recordingStartText":"Cet appel sera enregistr\xe9 sous peu. Si vous pr\xe9f\xe9rez ne pas \xeatre enregistr\xe9, vous \xeates libre de quitter l\'appel \xe0 tout moment.","recordingStartTitle":"L\'enregistrement va commencer."},"requestAccess":{"admit":"Accepter","defaultName":"Un utilisateur","deny":"Refuser","wantToJoin":"{{name}} souhaite rejoindre!"},"requestDevice":{"declined":"Votre requ\xeate a \xe9t\xe9 refus\xe9.","request":"{{user}} voudrait que vous partagiez votre {{device}}","requestInput":"Demander l\'activation","timedOut":"Votre requ\xeate n\'a pas eu de r\xe9ponse","userDeclined":"{{user}} a d\xe9clin\xe9 votre requ\xeate."},"settings":{"devices":"Appareils","help":"Aide","helpCenter":"Acc\xe9der au centre d\'aide","language":"Langage","preferences":"Pr\xe9f\xe9rences","title":"Param\xe8tres"},"shareLink":{"failed":"Une erreur est survenue pendant l\'envoi du lien","invalid":"Lien invalide","invoice":"{{user}} vous a envoy\xe9 une facture.","pay":"Payer","poweredBy":"Propos\xe9 par","sentToUser":"Lien envoy\xe9 \xe0 {{user}}","sentToUsers":"Lien envoy\xe9 aux participants","title":"Partager un lien","title2":"Partager un lien"},"sharedHistory":{"shared":"Partag\xe9 avec vous"},"snapshot":{"error":"Une erreur est survenue pendant l\'envoi du snapshot","save":"Sauvegarder l\'image","sentToUser":"Snapshot envoy\xe9 \xe0 {{user}}","sentToUsers":"Snapshot envoy\xe9 aux participants.","shared":"Snapshot envoy\xe9.","title":"Snapshot"},"videoMenu":{"blockedCamera":"Votre cam\xe9ra est bloqu\xe9.","cameraPermissions":"Please accept camera sharing before accessing these options.","highDef":"Haute d\xe9finition (720p)","lowDef":"Basse d\xe9finition (240p)","sendResolution":"R\xe9solution envoy\xe9e (max)","standardDef":"D\xe9finition standard (480p)","title":"Video"},"virtualBackground":{"setBackground":"Mettre l\'arri\xe8re plan","title":"Arri\xe8re plan virtuel"},"youtube":{"invalid":"URL YouTube invalide","share":"Regarder maintenant","title":"Regardons Ensemble","url":"URL YOUTUBE"}}');
|
|
370
|
+
$32156cf38812b83d$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"Votre micro est bloqu\xe9.","microphonePermissions":"Please accept microphone sharing before accessing these options.","title":"Audio"},"blockedFeature":{"descriptionConnected":"Vous n\'avez pas acc\xe8s \xe0 cette fonctionnalit\xe9. Souscrivez au plan Pro pour d\xe9bloquer toutes les fonctionnalit\xe9s de SnapCall.","descriptionGuest":"Vous participez \xe0 un appel cr\xe9\xe9 avec la version gratuite de SnapCall. Cette fonctionnalit\xe9 n\'est disponible qu\'avec une version Pro.","dismissConnected":"Souscrire \xe0 Pro","dismissGuest":"D\'accord","titleConnected":"Souscrire au plan Pro","titleGuest":"Fonctionnalit\xe9 non disponible"},"common":{"new":"new"},"copyLink":{"copied":"Lien copi\xe9 dans le presse-papier","copy":"Copier","description":"Copier le lien dans le presse-papiers","error":"Une erreur est survenue pendant la copie du lien dans le presse-papier","title":"Copier le lien"},"endView":{"callEnded":"Cet appel est termin\xe9","callIsOver":"Cet appel est termin\xe9 ou supprim\xe9","callLeft":"Vous avez quitt\xe9 l\'appel","callNoLongerActive":"This call is no longer active. Thank you for participating.","full":"Impossible de rejoindre l\'appel","fullDescription":"Limite d\'utilisateurs atteinte. Merci de rejoindre l\'appel ult\xe9rieurement.","goBack":"Retourner dans l\'appel","ifMistakeRejoin":"If this was a mistake, you can rejoin using the button below.","invalidLink":"Invalid link","invalidOrExpired":"This link is invalid or expired.","openDashboard":"Open dashboard","tooLate":"Vous \xeates arriv\xe9 trop tard"},"gdpr":{"recordedWarning":"Pour am\xe9liorer la qualit\xe9 de notre service, cet appel va \xeatre enregistr\xe9."},"greeting":{"askToJoin":"Demander \xe0 rejoindre","askingLetIn":"Demande de participation...","cameraDisabled":"Cam\xe9ra d\xe9sactiv\xe9e","cameraEnabled":"Cam\xe9ra activ\xe9e","canceledCallRequest":"La demande d\'appel sera annul\xe9e et vous serez redirig\xe9 vers la page de planification des appels.","cantJoinCall":"Vous ne pouvez pas rejoindre cet appel","cantWait":"Vous ne souhaitez pas attendre ?","cantWaitLeaveMessage":"Vous ne pouvez pas attendre ? Vous pouvez laisser un message et vous serez contact\xe9 dans les plus brefs d\xe9lais.","clickOnLock":"Cliquez sur l\'ic\xf4ne de verrouillage <1></1> dans la barre de votre navigateur.","footerDescription":"D\xe9couvrez SnapCall, ajoutez de la vid\xe9o en temps r\xe9el \xe0 n\'importe quelle plateforme, produit ou service.","footerTitle":"Propuls\xe9 par SnapCall","leaveMessage":"Laisser un message","mainTitle":"Bienvenue sur SnapCall","mediaDenied":"Acc\xe8s au microphone et \xe0 la cam\xe9ra refus\xe9","microphoneDisabled":"Microphone d\xe9sactiv\xe9","microphoneEnabled":"Microphone activ\xe9","name":"Nom","nameDescription":"Ce nom sera affich\xe9 \xe0 tous les participants","namePlaceholder":"Ex. Lucie ou Pierre","nameSubmit":"Rejoindre la conversation","recordVideo":"Enregistrer une vid\xe9o","recordVoice":"Enregistrer un message vocal","requestACall":"Solliciter un appel maintenant","scheduleACall":"Planifier un appel","setting":"Param\xe8tres","sideDescription":"Veuillez entrer votre nom et configurer votre cam\xe9ra et microphone.","sideTitle":"C\'est bient\xf4t votre tour !","someoneDenied":"Quelqu\'un lors de l\'appel a refus\xe9 votre demande de participation.","takeFewMinute":"Cela peut prendre quelques minutes selon la disponibilit\xe9 des participants.","whatYouCanDo":"Voici ce que vous pouvez faire","youWillJoinWhenSomeoneLetsYou":"Votre acc\xe8s \xe0 l\'appel sera autoris\xe9 par un membre de l\'\xe9quipe {{ companyName }}."},"header":{"free":"Version gratuite"},"invitePeople":{"PublicLink":"Public link","addEmailToInvite":"Ajoutez un e-mail pour inviter.","addEmails":"Ajouter des e-mails...","copyCallLinkDescription":"Copiez ce lien et envoyez-le \xe0 toute personne que vous souhaitez inviter \xe0 rejoindre l\'appel.","copyClipLinkDescription":"Copiez ce lien et envoyez-le \xe0 toute personne que vous souhaitez inviter \xe0 enregistrer un clip.","email":"Email","emailPlaceholder":"Ex. jean@acme.com","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","error":"\xc9chec de l\'envoi, veuillez r\xe9essayer plus tard.","invalidEmail":"Format d\'email invalide.","invalidEmailOrNumber":"Invalid email or number format.","invitationSentTo_one":"Envoy\xe9 \xe0 {{ name }}","invitationSentTo_other":"Envoy\xe9 \xe0 {{ name }} et {{ otherEmailsCount }}+","invite":"Inviter","inviteByEmail":"Inviter par email","inviteByEmailOrNumber":"Invite by email or sms","inviteCall":"Inviter \xe0 rejoindre l\'appel","inviteCallDefaultMessage":"Vous \xeates invit\xe9 \xe0 rejoindre notre appel vid\xe9o. Cliquez sur le lien pour vous connecter instantan\xe9ment.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipDefaultMessage":"Veuillez enregistrer votre clip vid\xe9o maintenant et nous fournir plus de contexte pour mieux vous aider.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","invitePeople":"Invite people","inviteRecordAudio":"Record an audio","inviteRecordClip":"Inviter \xe0 enregistrer un clip","inviteRecordPhoto":"Take a photo","inviteRecordScreen":"Record a screen","inviteRecordVideo":"Record a video","joinTheCall":"Join the call","linkToJoinCall":"Lien pour rejoindre l\'appel","linkToRecordAClip":"Lien pour enregistrer un clip","message":"Message","sharePublicLink":"Partager le lien public"},"leave":{"endCall":"Terminer l\'appel","leaveCall":"Quitter l\'appel","title":"Quitter"},"loader":{"connection":"Connexion..."},"menu":{"new":"NOUVEAU","openNewTab":"Ouvrir un nouvel onglet","pictureInPicture":"Picture-in-Picture","quickConnect":"Quick Connect","screenSharing":"Partage d\'\xe9cran","startRecord":"Enregistrer l\'appel","stopRecord":"Arr\xeater l\'enregistrement","title":"Menu"},"misc":{"accept":"Accepter","audio":"Audio","camera":"Cam\xe9ra","cancel":"Annuler","confirm":"Confirmer","decline":"D\xe9cliner","from":"Depuis","microphone":"Micro","open":"Ouvrir","photo":"Photo","proceed":"Proc\xe9der","remove":"Enlever","screen":"\xc9cran","screenshot":"Capture d\'\xe9cran","someone":"Quelqu\'un","speaker":"Haut-parleur","user":"Utilisateur","video":"Vid\xe9o","you":"Vous"},"notifications":{"agentJoinError":"Une erreur est survenue en essayant de rejoindre la salle en tant qu\'agent","blockedMicrophonePopup":"SnapCall a besoin d\'acc\xe9der \xe0 votre cam\xe9ra et micro. Cliquez sur l\'ic\xf4ne de cam\xe9ra bloqu\xe9e dans la barre d\'adresse du navigateur.","blockedMicrophonePopupTitle":"Votre cam\xe9ra et micro sont bloqu\xe9s","cameraError":"Une erreur est survenue pendant l\'activation de la cam\xe9ra","cameraRotateError":"Une erreur est survenue pendant la rotation de la cam\xe9ra","close":"Fermer","connectedTo":"Connect\xe9 \xe0 {{name}}","criticalError":"Une erreur critique est survenue (erreur {{code}}).","error":"Error","errorOccuredCode":"An error occured (error {{code}}).","invitationSentToFailed":"Sent to {{ name }} failed.","microphoneError":"Une erreur est survenue pendant l\'activation du micro","noCamera":"Aucune cam\xe9ra disponible","recording":"Enregistrement en cours","reload":"Recharger","screensharingError":"Une erreur est survenue pendant l\'activation du partage d\'\xe9cran","uploadError":"An error occured during the upload, please try again later."},"quickConnect":{"scan":"Scannez ce QR code avec votre t\xe9l\xe9phone pour ouvrir l\'appel.","scanTitle":"Scannez le QR Code","title":"Quick Connect"},"recorder":{"addMore":"Ajouter plus","addNewClip":"Ajouter un nouveau clip","allowAccess":"Autoriser l\'acc\xe8s","allowCamMicAccess":"Autoriser acc\xe8s cam\xe9ra/micro","allowScreenShareAccess":"Autoriser l\'acc\xe8s au partage d\'\xe9cran","attachElements_one":"Joindre {{ type }} au ticket","attachElements_other":"Joindre {{ count }} \xe9l\xe9ments","audioInstructionsTitle":"Pr\xeat \xe0 enregistrer un message vocal\xa0?","audioLevelNotification":{"noSound":{"description":"Assurez-vous que votre microphone est activ\xe9.","title":"Aucun son d\xe9tect\xe9."},"shortVideo":{"description":"Cette vid\xe9o semble assez courte, ne fournit pas assez de d\xe9tails.","title":"Vid\xe9o courte."},"spokenWordsQuestion":{"description":"Votre vid\xe9o offre-t-elle une explication d\xe9taill\xe9e et claire ?","title":"Avez-vous tout expliqu\xe9 ?"},"spokenWordsWarning":{"description":"La vid\xe9o ne comprend pratiquement aucun mot prononc\xe9.","title":"Aucun mot prononc\xe9."}},"audioLevelToast":{"continueSpeaking":"Continuez \xe0 parler pour expliquer.","noSound":"Aucun son d\xe9tect\xe9.","rememberSpeaking":"Veuillez parler \xe0 voix-haute."},"chooseWhatYouWantToShare":"Choose what you want to share","chooseWhatYouWantToShareDescription":"Select the screen or tab you want to share and start recording.","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","clipSubmissionDescription":"Merci d\'utiliser SnapCall.","clipSubmissionTitle_one":"Votre clip a \xe9t\xe9 envoy\xe9","clipSubmissionTitle_other":"Vos clips ont \xe9t\xe9 envoy\xe9s","confirmRemovalDescription":"Voulez-vous vraiment supprimer cette photo/vid\xe9o ? Cette action ne peut pas \xeatre annul\xe9e.","confirmRemovalTitle":"Confirmer la suppression","elementBeingProcessed":"Veuillez patienter un moment pendant que votre {{ type }} est en cours de traitement...","elementCaptureSuccess":"{{ type }} captur\xe9(e) avec succ\xe8s","elementRecordedAndAttached":"Votre clip a \xe9t\xe9 envoy\xe9 et joint au fil de discussion.","goBackToTicket":"Revenir au billet","instructions":{"allowAccessOnPrompt":"<bold>Autorisez l\'acc\xe8s</bold> \xe0 la cam\xe9ra et au micro lorsque demand\xe9.","multiplePhotos":"Prenez <bold>une ou plusieurs photos</bold> pour donner plus de d\xe9tails.","privacyPolicy":"En continuant, vous acceptez notre <bold>Politique de confidentialit\xe9</bold>.","reviewAndSendAudios":"<bold>V\xe9rifiez vos audios</bold>, et ils seront envoy\xe9s automatiquement \xe0 nous.","reviewAndSendPhotos":"<bold>Validez vos photos</bold>, et elles nous seront envoy\xe9es automatiquement.","reviewAndSendVideos":"<bold>Validez vos vid\xe9os</bold>, et elles nous seront envoy\xe9es automatiquement.","screenShareInstruction":"S\xe9lectionnez l\'\xe9cran ou la fen\xeatre que vous souhaitez enregistrer.","selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakClearly":"<bold>Parlez clairement</bold> et dites ce que vous devez transmettre.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","tapAudioButton":"<bold>Appuyez sur le bouton d\'enregistrement</bold> pour commencer \xe0 enregistrer votre message audio.","tapStopVideoButton":"<bold>Appuyez sur Arr\xeat</bold> lorsque vous avez termin\xe9.","tapVideoButton":"<bold>Appuyez sur Enregistrer</bold>. Pensez \xe0 commenter.","videoSpeech":"Vous pouvez <bold>parler pendant</bold> l\'enregistrement pour ajouter des d\xe9tails."},"limit":"Enregistrement vid\xe9o limit\xe9 \xe0 5 min.","logIn":"Se connecter","loggedAs":"Connect\xe9 en tant que","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","noCameraAccess":"No camera access","noCameraAccessDescription":"No camera access Allow camera access in your browser.","noCameraAndMicrophoneAccess":"No camera & microphone access","noCameraAndMicrophoneAccessDescription":"No camera & microphone access Allow microphone and camera access in your browser.","noMicrophoneAccess":"No microphone access","noMicrophoneAccessDescription":"No microphone access Allow microphone access in your browser.","okay":"D\'accord","openThread":"Ouvrir le fil de discussion","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.","permissionDeniedTitle":"Quelque chose s\'est mal pass\xe9 !","photoInstructionsTitle":"Pr\xeat \xe0 prendre une photo ?","replyAttached":"Votre r\xe9ponse a \xe9t\xe9 jointe","scanQRCode":"Scannez ce code QR avec un appareil compatible.","screenShareInstructionsTitle":"Pr\xeat \xe0 partager votre \xe9cran ?","screenTitle":"Pr\xeat \xe0 capturer votre \xe9cran ?","send":"Envoyer","sendElements_one":"Envoyer la {{ type }}","sendElements_other":"Envoyer {{ count }} \xe9l\xe9ments","showQrCode":"Show QR code","startScreenRecording":"Start screen recording","startScreenShareButton":"Enregistrer \xe9cran","stopScreenShareButton":"Stop enregistrement","submissionDescription":"Votre photo/vid\xe9o a \xe9t\xe9 envoy\xe9e avec succ\xe8s. Nous l\'examinerons et reviendrons vers vous bient\xf4t.","submissionTitle":"Merci pour votre soumission !","switchToMobileDescription":"Profitez d\'une exp\xe9rience encore plus pratique en utilisant votre t\xe9l\xe9phone pour prendre des photos et enregistrer des vid\xe9os.","switchToMobileTitle":"Passez sur votre mobile","takeNewElement":"Prendre une nouvelle {{ type }}","upload":"Upload","useDesktopVersion":"Continuer","videoInstructionsTitle":"Pr\xeat \xe0 enregistrer une vid\xe9o ?","waitVideo":"Cela peut prendre jusqu\'\xe0 15 secondes pour qu\'une vid\xe9o soit pr\xeate."},"recordingPopup":{"dismiss":"Fermer","recordingStartText":"Cet appel sera enregistr\xe9 sous peu. Si vous pr\xe9f\xe9rez ne pas \xeatre enregistr\xe9, vous \xeates libre de quitter l\'appel \xe0 tout moment.","recordingStartTitle":"L\'enregistrement va commencer."},"requestAccess":{"admit":"Accepter","defaultName":"Un utilisateur","deny":"Refuser","wantToJoin":"{{name}} souhaite rejoindre!"},"requestDevice":{"declined":"Votre requ\xeate a \xe9t\xe9 refus\xe9.","request":"{{user}} voudrait que vous partagiez votre {{device}}","requestInput":"Demander l\'activation","timedOut":"Votre requ\xeate n\'a pas eu de r\xe9ponse","userDeclined":"{{user}} a d\xe9clin\xe9 votre requ\xeate."},"settings":{"devices":"Appareils","help":"Aide","helpCenter":"Acc\xe9der au centre d\'aide","language":"Langage","preferences":"Pr\xe9f\xe9rences","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language","selectYourMicrophone":"Select your preferred microphone","title":"Param\xe8tres"},"shareLink":{"failed":"Une erreur est survenue pendant l\'envoi du lien","invalid":"Lien invalide","invoice":"{{user}} vous a envoy\xe9 une facture.","pay":"Payer","poweredBy":"Propos\xe9 par","sentToUser":"Lien envoy\xe9 \xe0 {{user}}","sentToUsers":"Lien envoy\xe9 aux participants","title":"Partager un lien","title2":"Partager un lien"},"sharedHistory":{"shared":"Partag\xe9 avec vous"},"snapshot":{"error":"Une erreur est survenue pendant l\'envoi du snapshot","save":"Sauvegarder l\'image","sentToUser":"Snapshot envoy\xe9 \xe0 {{user}}","sentToUsers":"Snapshot envoy\xe9 aux participants.","shared":"Snapshot envoy\xe9.","title":"Snapshot"},"videoMenu":{"blockedCamera":"Votre cam\xe9ra est bloqu\xe9.","cameraPermissions":"Please accept camera sharing before accessing these options.","highDef":"Haute d\xe9finition (720p)","lowDef":"Basse d\xe9finition (240p)","sendResolution":"R\xe9solution envoy\xe9e (max)","standardDef":"D\xe9finition standard (480p)","title":"Video"},"virtualBackground":{"setBackground":"Mettre l\'arri\xe8re plan","title":"Arri\xe8re plan virtuel"},"youtube":{"invalid":"URL YouTube invalide","share":"Regarder maintenant","title":"Regardons Ensemble","url":"URL YOUTUBE"}}');
|
|
374
371
|
|
|
375
372
|
|
|
376
373
|
var $2cbf9baa8030dfd2$exports = {};
|
|
377
|
-
$2cbf9baa8030dfd2$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"Il tuo microfono \xe8 bloccato.","microphonePermissions":"Si prega di accettare la condivisione del microfono prima di accedere a queste opzioni.","title":"Audio"},"blockedFeature":{"descriptionConnected":"Su un piano gratuito, non puoi utilizzare questa funzione. Aggiorna il tuo piano per usufruire di tutte le funzionalit\xe0 in chiamata.","descriptionGuest":"Stai partecipando a una chiamata creata con una versione gratuita di SnapCall. Questa funzione \xe8 disponibile solo con una versione Pro.","dismissConnected":"L\'aggiornamento a Pro","dismissGuest":"Okay","titleConnected":"L\'aggiornamento a Pro","titleGuest":"Funzione non disponibile"},"common":{"new":"new"},"copyLink":{"copied":"Link copiato negli Appunti","copy":"Copia","description":"Copia il link negli appunti","error":"Si \xe8 verificato un errore durante la copia negli Appunti","title":"Copia il link"},"endView":{"callEnded":"Questa chiamata \xe8 finita","callIsOver":"Questa chiamata \xe8 finita o \xe8 stata eliminata","callLeft":"Hai lasciato la chiamata","full":"Impossibile partecipare alla chiamata","fullDescription":"Limite d\'uso attenente.","goBack":"Torna alla chiamata","tooLate":"Sei arrivato troppo tardi"},"gdpr":{"recordedWarning":"Per migliorare la qualit\xe0 del nostro servizio, questa chiamata verr\xe0 registrata."},"greeting":{"askToJoin":"Chiedi di partecipare","askingLetIn":"Chiedo di essere fatto entrare...","cameraDisabled":"Fotocamera \xe8 spenta","cameraEnabled":"Fotocamera \xe8 accesa","canceledCallRequest":"La richiesta di chiamata verr\xe0 annullata e verrai reindirizzato alla pagina di pianificazione delle chiamate","cantJoinCall":"Non puoi partecipare a questa chiamata","cantWait":"Non vedo l\'ora?","cantWaitLeaveMessage":"Non vedi l\'ora? Puoi lasciare un messaggio e sarai contattato il prima possibile.","clickOnLock":"Fai clic sull\'icona del lucchetto <1></1> nella barra del browser.","footerDescription":"Incontrare SnapCall, il modo pi\xf9 semplice per aggiungere video in tempo reale a piattaforma, prodotto o servizio.","footerTitle":"Offerto da SnapCall","leaveMessage":"Lascia un messaggio","mainTitle":"Benvenuto a SnapCall","mediaDenied":"Accesso al microfono e alla fotocamera negato","microphoneDisabled":"Microfono \xe8 spento","microphoneEnabled":"Microfono \xe8 acceso","name":"Nome","nameDescription":"Questo nome verr\xe0 visualizzato a tutti i partecipanti alla chiamata.","namePlaceholder":"Per esempio. Lucia o Pietro","nameSubmit":"Partecipa alla conversazione","recordVideo":"Registra video","recordVoice":"Registra voce","requestACall":"Richiedi una chiamata","scheduleACall":"Pianifica una chiamata","setting":"Impostazioni","sideDescription":"Inserisci il tuo nome e regola la fotocamera e il microfono","sideTitle":"Tieni duro, il prossimo sei tu!","someoneDenied":"Qualcuno nella chiamata ha rifiutato la tua richiesta di partecipazione.","takeFewMinute":"L\'operazione potrebbe richiedere alcuni minuti a seconda della disponibilit\xe0 dei partecipanti.","whatYouCanDo":"Ecco cosa puoi fare","youWillJoinWhenSomeoneLetsYou":"Parteciperai alla chiamata quando qualcuno di {{ companyName }} ti far\xe0 entrare."},"header":{"free":"Versione gratuita"},"invitePeople":{"PublicLink":"Public link","addEmailToInvite":"Aggiungi un\'e-mail per invitare.","addEmails":"Aggiungi email...","copyCallLinkDescription":"Copia questo link e invialo a chiunque desideri invitare a partecipare alla chiamata.","copyClipLinkDescription":"Copia questo collegamento e invialo a chiunque desideri invitare a registrare una clip.","email":"Email","emailPlaceholder":"Es. john@acme.com","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","error":"Impossibile inviare, riprova pi\xf9 tardi.","invalidEmail":"Formato email non valido.","invalidEmailOrNumber":"Invalid email or number format.","invitationSentTo_one":"Inviato a {{ name }}","invitationSentTo_other":"Inviato a {{ name }} e {{ otherEmailsCount }}+","invite":"Invita","inviteByEmail":"Invita via email","inviteByEmailOrNumber":"Invite by email or sms","inviteCall":"Invita a partecipare alla chiamata","inviteCallDefaultMessage":"Sei invitato a partecipare alla nostra videochiamata. Fare clic sul collegamento per connettersi immediatamente.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipDefaultMessage":"Registra subito il tuo videoclip e forniscici pi\xf9 contesto per assisterti meglio.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","invitePeople":"Invite people","inviteRecordAudio":"Record an audio","inviteRecordClip":"Invita a registrare la clip","inviteRecordPhoto":"Take a photo","inviteRecordScreen":"Record a screen","inviteRecordVideo":"Record a video","joinTheCall":"Join the call","linkToJoinCall":"Link per partecipare alla chiamata","linkToRecordAClip":"Collegamento per registrare una clip","message":"Messaggio","sharePublicLink":"Condividi link"},"leave":{"endCall":"Termina la chiamata per tutti","leaveCall":"Lascia la chiamata","title":"Lasciare"},"loader":{"connection":"Connessione..."},"menu":{"new":"NUOVO","openNewTab":"Apri una nuova scheda","pictureInPicture":"Immagine nell\'immagine","quickConnect":"Connessione Rapida","screenSharing":"Condivisione dello schermo","startRecord":"Registra chiamata","stopRecord":"Interrompere la registrazione","title":"Men\xf9"},"misc":{"accept":"Accettare","audio":"Audio","camera":"Telecamera","cancel":"Annulla","confirm":"Confermare","decline":"Declinare","from":"Da","microphone":"Microfono","open":"Aprire","photo":"Foto","proceed":"Procedere","remove":"Rimuovere","screen":"Schermo","screenshot":"Schermata","someone":"Qualcuno","speaker":"Altoparlante","user":"Utente","video":"Video","you":"Voi"},"notifications":{"agentJoinError":"Si \xe8 verificato un errore cercando di entrare nella conversazione come agente","blockedMicrophonePopup":"SnapCall ha bisogno di accedere alla fotocamera e al microfono. Fare clic sull\'icona della fotocamera bloccata nella barra degli indirizzi del browser.","blockedMicrophonePopupTitle":"La tua fotocamera e il tuo microfono sono bloccati","cameraError":"Si \xe8 verificato un errore durante l\'attivazione della fotocamera","cameraRotateError":"Si \xe8 verificato un errore durante la rotazione della fotocamera","close":"Chiudere","connectedTo":"Connesso a {{name}}","criticalError":"Si \xe8 verificato un errore critico (errore {{code}}).","invitationSentToFailed":"Sent to {{ name }} failed.","microphoneError":"Si \xe8 verificato un errore durante l\'attivazione del microfono","noCamera":"Nessuna fotocamera disponibile","recording":"Registrazione in corso","reload":"Ricaricare","screensharingError":"Si \xe8 verificato un errore durante l\'attivazione della condivisione dello schermo","uploadError":"An error occured during the upload, please try again later."},"quickConnect":{"scan":"Scansiona questo codice QR con il telefono per aprire la chiamata.","scanTitle":"Scansiona il codice QR","title":"Connessione Rapida"},"recorder":{"addMore":"Aggiungere altro","addNewClip":"Aggiungi una nuova clip","allowAccess":"Consenti accesso","allowCamMicAccess":"Consenti l\'accesso a cam/mic","allowScreenShareAccess":"Consenti accesso alla condivisione dello schermo","attachElements_one":"Allega {{ type }} al biglietto","attachElements_other":"Allega {{ count }} elementi","audioInstructionsTitle":"Pronti per registrare un messaggio vocale?","audioLevelNotification":{"noSound":{"description":"Assicurati che il microfono sia attivato.","title":"Nessun suono rilevato."},"shortVideo":{"description":"Questo video \xe8 troppo breve per avere un contesto.","title":"Breve video."},"spokenWordsQuestion":{"description":"Il tuo video include abbastanza dettagli parlati?","title":"Parole pronunciate."},"spokenWordsWarning":{"description":"La clip include a malapena parole pronunciate.","title":"Nessuna parola detta."}},"audioLevelToast":{"continueSpeaking":"Continua a parlare per un contesto pi\xf9 chiaro.","noSound":"Nessun suono rilevato.","rememberSpeaking":"Ricordati di parlare per fornire il contesto."},"chooseWhatYouWantToShare":"Choose what you want to share","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","clipSubmissionDescription":"Grazie per aver utilizzato SnapCall.","clipSubmissionTitle_one":"La tua clip \xe8 stata inviata","clipSubmissionTitle_other":"I tuoi clip sono stati inviati","confirmRemovalDescription":"Sei sicuro di voler rimuovere questa foto/video? Questa azione non pu\xf2 essere annullata.","confirmRemovalTitle":"Conferma rimozione","elementBeingProcessed":"Attendi un momento mentre il tuo {{ type }} viene elaborato...","elementCaptureSuccess":"{{ type }} catturato con successo","elementRecordedAndAttached":"La tua clip \xe8 stata inviata e allegata al thread.","goBackToTicket":"Torna al biglietto","instructions":{"allowAccessOnPrompt":"<bold>Consenti l\'accesso</bold> alla fotocamera e al microfono.","multiplePhotos":"Scatta <bold>una foto o pi\xf9</bold> di una per i dettagli.","privacyPolicy":"Procedendo, accetti la nostra <bold>Politica sulla Privacy.</bold>","reviewAndSendAudios":"<bold>Rivedi i tuoi audio</bold> e verranno inviati automaticamente a noi.","reviewAndSendPhotos":"<bold>Convalida le tue foto</bold> e verranno inviate automaticamente a noi.","reviewAndSendVideos":"<bold>Convalida i tuoi video</bold> e verranno inviati automaticamente a noi.","screenShareInstruction":"Seleziona lo schermo o la finestra che desideri registrare.","selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakClearly":"<bold>Parla chiaramente</bold> e d\xec ci\xf2 che devi comunicare.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","tapAudioButton":"<bold>Premi il pulsante di registrazione</bold> per iniziare a registrare il tuo messaggio vocale.","tapStopVideoButton":"<bold>Premi Stop</bold> quando hai finito.","tapVideoButton":"<bold>Premi Registra</bold>. Ricordati di commentare.","videoSpeech":"Puoi <bold>parlare durante</bold> la registrazione per aggiungere dettagli."},"limit":"Registrazione video limitata a 5 min.","logIn":"Login","loggedAs":"Registrato come","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","noCameraAccess":"No camera access","noCameraAndMicrophoneAccess":"No camera & microphone access","noMicrophoneAccess":"No microphone access","okay":"Okay","openThread":"Apri il thread","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.","permissionDeniedTitle":"Qualcosa \xe8 andato storto!","photoInstructionsTitle":"Pronto a scattare una foto?","replyAttached":"La tua risposta \xe8 stata allegata","scanQRCode":"Scansiona questo codice QR con un dispositivo compatibile.","screenShareInstructionsTitle":"Pronto a condividere il tuo schermo?","screenTitle":"Pronto a catturare il tuo schermo?","send":"Invia","sendElements_one":"Invia {{ type }}","sendElements_other":"Invia {{ count }} elementi","showQrCode":"Show QR code","startScreenRecording":"Start screen recording","startScreenShareButton":"Registra il mio schermo","stopScreenShareButton":"Ferma registrazione","submissionDescription":"La tua foto/video \xe8 stata inviata con successo. La esamineremo e ti risponderemo al pi\xf9 presto.","submissionTitle":"Grazie per il tuo invio!","switchToMobileDescription":"Goditi un\'esperienza ancora pi\xf9 pratica utilizzando il tuo telefono per scattare foto e registrare video.","switchToMobileTitle":"Passa al tuo dispositivo mobile","takeNewElement":"Cattura un nuovo {{ type }}","upload":"Upload","useDesktopVersion":"Usa la versione desktop","videoInstructionsTitle":"Pronto a registrare un video?","waitVideo":"Potrebbero essere necessari fino a 15 secondi affinch\xe9 un video sia pronto."},"recordingPopup":{"dismiss":"Chiudi","recordingStartText":"Questa chiamata verr\xe0 registrata a breve. Se preferisci non essere registrato, sei libero di lasciare la chiamata in questo momento.","recordingStartTitle":"Registrazione in procinto di iniziare."},"requestAccess":{"admit":"Ammettere","defaultName":"Un utente","deny":"Negare","wantToJoin":"<bold>{{name}}</bold> vuole unirsi!"},"requestDevice":{"declined":"La tua richiesta \xe8 stata rifiutata.","request":"{{user}} vorrebbe condividere il tuo {{device}}","requestInput":"Richiesta di attivazione","timedOut":"La tua richiesta non ha ricevuto risposta","userDeclined":"{{user}} ha rifiutato la tua richiesta"},"settings":{"devices":"Dispositivi","help":"Aiuto","helpCenter":"Accedi all\'Assistenza","language":"Linguaggio","preferences":"Preferenze","title":"Impostazioni"},"shareLink":{"failed":"Si \xe8 verificato un errore durante l\'invio del link","invalid":"Collegamento non valido","invoice":"{{user}} ti ha inviato una fattura.","pay":"Paga","poweredBy":"Proposto da","sentToUser":"Link inviato a {{user}}","sentToUsers":"Link inviato ai partecipanti","title":"Condividi un link","title2":"Condividi un link"},"sharedHistory":{"shared":"Condiviso con te"},"snapshot":{"error":"Si \xe8 verificato un errore durante l\'invio della schermata","save":"Salva l\'immagine","sentToUser":"Schermata inviata a {{user}}","sentToUsers":"Schermanta inviata ai partecipanti","shared":"Schermata inviata","title":"Schermata"},"videoMenu":{"blockedCamera":"La fotocamera \xe8 bloccata.","cameraPermissions":"Si prega di accettare la condivisione della fotocamera prima di accedere a queste opzioni.","highDef":"Alta definizione (720p)","lowDef":"Definizione bassa (240p)","sendResolution":"Risoluzione inviata (max)","standardDef":"Definizione standard (480p)","title":"Video"},"virtualBackground":{"setBackground":"Imposta sfondo","title":"Sfondo virtuale"},"youtube":{"invalid":"URL YouTube non valido","share":"Guarda ora","title":"Vedere Assieme","url":"URL YOUTUBE"}}');
|
|
374
|
+
$2cbf9baa8030dfd2$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"Il tuo microfono \xe8 bloccato.","microphonePermissions":"Si prega di accettare la condivisione del microfono prima di accedere a queste opzioni.","title":"Audio"},"blockedFeature":{"descriptionConnected":"Su un piano gratuito, non puoi utilizzare questa funzione. Aggiorna il tuo piano per usufruire di tutte le funzionalit\xe0 in chiamata.","descriptionGuest":"Stai partecipando a una chiamata creata con una versione gratuita di SnapCall. Questa funzione \xe8 disponibile solo con una versione Pro.","dismissConnected":"L\'aggiornamento a Pro","dismissGuest":"Okay","titleConnected":"L\'aggiornamento a Pro","titleGuest":"Funzione non disponibile"},"common":{"new":"new"},"copyLink":{"copied":"Link copiato negli Appunti","copy":"Copia","description":"Copia il link negli appunti","error":"Si \xe8 verificato un errore durante la copia negli Appunti","title":"Copia il link"},"endView":{"callEnded":"Questa chiamata \xe8 finita","callIsOver":"Questa chiamata \xe8 finita o \xe8 stata eliminata","callLeft":"Hai lasciato la chiamata","callNoLongerActive":"This call is no longer active. Thank you for participating.","full":"Impossibile partecipare alla chiamata","fullDescription":"Limite d\'uso attenente.","goBack":"Torna alla chiamata","ifMistakeRejoin":"If this was a mistake, you can rejoin using the button below.","invalidLink":"Invalid link","invalidOrExpired":"This link is invalid or expired.","openDashboard":"Open dashboard","tooLate":"Sei arrivato troppo tardi"},"gdpr":{"recordedWarning":"Per migliorare la qualit\xe0 del nostro servizio, questa chiamata verr\xe0 registrata."},"greeting":{"askToJoin":"Chiedi di partecipare","askingLetIn":"Chiedo di essere fatto entrare...","cameraDisabled":"Fotocamera \xe8 spenta","cameraEnabled":"Fotocamera \xe8 accesa","canceledCallRequest":"La richiesta di chiamata verr\xe0 annullata e verrai reindirizzato alla pagina di pianificazione delle chiamate","cantJoinCall":"Non puoi partecipare a questa chiamata","cantWait":"Non vedo l\'ora?","cantWaitLeaveMessage":"Non vedi l\'ora? Puoi lasciare un messaggio e sarai contattato il prima possibile.","clickOnLock":"Fai clic sull\'icona del lucchetto <1></1> nella barra del browser.","footerDescription":"Incontrare SnapCall, il modo pi\xf9 semplice per aggiungere video in tempo reale a piattaforma, prodotto o servizio.","footerTitle":"Offerto da SnapCall","leaveMessage":"Lascia un messaggio","mainTitle":"Benvenuto a SnapCall","mediaDenied":"Accesso al microfono e alla fotocamera negato","microphoneDisabled":"Microfono \xe8 spento","microphoneEnabled":"Microfono \xe8 acceso","name":"Nome","nameDescription":"Questo nome verr\xe0 visualizzato a tutti i partecipanti alla chiamata.","namePlaceholder":"Per esempio. Lucia o Pietro","nameSubmit":"Partecipa alla conversazione","recordVideo":"Registra video","recordVoice":"Registra voce","requestACall":"Richiedi una chiamata","scheduleACall":"Pianifica una chiamata","setting":"Impostazioni","sideDescription":"Inserisci il tuo nome e regola la fotocamera e il microfono","sideTitle":"Tieni duro, il prossimo sei tu!","someoneDenied":"Qualcuno nella chiamata ha rifiutato la tua richiesta di partecipazione.","takeFewMinute":"L\'operazione potrebbe richiedere alcuni minuti a seconda della disponibilit\xe0 dei partecipanti.","whatYouCanDo":"Ecco cosa puoi fare","youWillJoinWhenSomeoneLetsYou":"Parteciperai alla chiamata quando qualcuno di {{ companyName }} ti far\xe0 entrare."},"header":{"free":"Versione gratuita"},"invitePeople":{"PublicLink":"Public link","addEmailToInvite":"Aggiungi un\'e-mail per invitare.","addEmails":"Aggiungi email...","copyCallLinkDescription":"Copia questo link e invialo a chiunque desideri invitare a partecipare alla chiamata.","copyClipLinkDescription":"Copia questo collegamento e invialo a chiunque desideri invitare a registrare una clip.","email":"Email","emailPlaceholder":"Es. john@acme.com","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","error":"Impossibile inviare, riprova pi\xf9 tardi.","invalidEmail":"Formato email non valido.","invalidEmailOrNumber":"Invalid email or number format.","invitationSentTo_one":"Inviato a {{ name }}","invitationSentTo_other":"Inviato a {{ name }} e {{ otherEmailsCount }}+","invite":"Invita","inviteByEmail":"Invita via email","inviteByEmailOrNumber":"Invite by email or sms","inviteCall":"Invita a partecipare alla chiamata","inviteCallDefaultMessage":"Sei invitato a partecipare alla nostra videochiamata. Fare clic sul collegamento per connettersi immediatamente.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipDefaultMessage":"Registra subito il tuo videoclip e forniscici pi\xf9 contesto per assisterti meglio.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","invitePeople":"Invite people","inviteRecordAudio":"Record an audio","inviteRecordClip":"Invita a registrare la clip","inviteRecordPhoto":"Take a photo","inviteRecordScreen":"Record a screen","inviteRecordVideo":"Record a video","joinTheCall":"Join the call","linkToJoinCall":"Link per partecipare alla chiamata","linkToRecordAClip":"Collegamento per registrare una clip","message":"Messaggio","sharePublicLink":"Condividi link"},"leave":{"endCall":"Termina la chiamata per tutti","leaveCall":"Lascia la chiamata","title":"Lasciare"},"loader":{"connection":"Connessione..."},"menu":{"new":"NUOVO","openNewTab":"Apri una nuova scheda","pictureInPicture":"Immagine nell\'immagine","quickConnect":"Connessione Rapida","screenSharing":"Condivisione dello schermo","startRecord":"Registra chiamata","stopRecord":"Interrompere la registrazione","title":"Men\xf9"},"misc":{"accept":"Accettare","audio":"Audio","camera":"Telecamera","cancel":"Annulla","confirm":"Confermare","decline":"Declinare","from":"Da","microphone":"Microfono","open":"Aprire","photo":"Foto","proceed":"Procedere","remove":"Rimuovere","screen":"Schermo","screenshot":"Schermata","someone":"Qualcuno","speaker":"Altoparlante","user":"Utente","video":"Video","you":"Voi"},"notifications":{"agentJoinError":"Si \xe8 verificato un errore cercando di entrare nella conversazione come agente","blockedMicrophonePopup":"SnapCall ha bisogno di accedere alla fotocamera e al microfono. Fare clic sull\'icona della fotocamera bloccata nella barra degli indirizzi del browser.","blockedMicrophonePopupTitle":"La tua fotocamera e il tuo microfono sono bloccati","cameraError":"Si \xe8 verificato un errore durante l\'attivazione della fotocamera","cameraRotateError":"Si \xe8 verificato un errore durante la rotazione della fotocamera","close":"Chiudere","connectedTo":"Connesso a {{name}}","criticalError":"Si \xe8 verificato un errore critico (errore {{code}}).","error":"Error","errorOccuredCode":"An error occured (error {{code}}).","invitationSentToFailed":"Sent to {{ name }} failed.","microphoneError":"Si \xe8 verificato un errore durante l\'attivazione del microfono","noCamera":"Nessuna fotocamera disponibile","recording":"Registrazione in corso","reload":"Ricaricare","screensharingError":"Si \xe8 verificato un errore durante l\'attivazione della condivisione dello schermo","uploadError":"An error occured during the upload, please try again later."},"quickConnect":{"scan":"Scansiona questo codice QR con il telefono per aprire la chiamata.","scanTitle":"Scansiona il codice QR","title":"Connessione Rapida"},"recorder":{"addMore":"Aggiungere altro","addNewClip":"Aggiungi una nuova clip","allowAccess":"Consenti accesso","allowCamMicAccess":"Consenti l\'accesso a cam/mic","allowScreenShareAccess":"Consenti accesso alla condivisione dello schermo","attachElements_one":"Allega {{ type }} al biglietto","attachElements_other":"Allega {{ count }} elementi","audioInstructionsTitle":"Pronti per registrare un messaggio vocale?","audioLevelNotification":{"noSound":{"description":"Assicurati che il microfono sia attivato.","title":"Nessun suono rilevato."},"shortVideo":{"description":"Questo video \xe8 troppo breve per avere un contesto.","title":"Breve video."},"spokenWordsQuestion":{"description":"Il tuo video include abbastanza dettagli parlati?","title":"Parole pronunciate."},"spokenWordsWarning":{"description":"La clip include a malapena parole pronunciate.","title":"Nessuna parola detta."}},"audioLevelToast":{"continueSpeaking":"Continua a parlare per un contesto pi\xf9 chiaro.","noSound":"Nessun suono rilevato.","rememberSpeaking":"Ricordati di parlare per fornire il contesto."},"chooseWhatYouWantToShare":"Choose what you want to share","chooseWhatYouWantToShareDescription":"Select the screen or tab you want to share and start recording.","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","clipSubmissionDescription":"Grazie per aver utilizzato SnapCall.","clipSubmissionTitle_one":"La tua clip \xe8 stata inviata","clipSubmissionTitle_other":"I tuoi clip sono stati inviati","confirmRemovalDescription":"Sei sicuro di voler rimuovere questa foto/video? Questa azione non pu\xf2 essere annullata.","confirmRemovalTitle":"Conferma rimozione","elementBeingProcessed":"Attendi un momento mentre il tuo {{ type }} viene elaborato...","elementCaptureSuccess":"{{ type }} catturato con successo","elementRecordedAndAttached":"La tua clip \xe8 stata inviata e allegata al thread.","goBackToTicket":"Torna al biglietto","instructions":{"allowAccessOnPrompt":"<bold>Consenti l\'accesso</bold> alla fotocamera e al microfono.","multiplePhotos":"Scatta <bold>una foto o pi\xf9</bold> di una per i dettagli.","privacyPolicy":"Procedendo, accetti la nostra <bold>Politica sulla Privacy.</bold>","reviewAndSendAudios":"<bold>Rivedi i tuoi audio</bold> e verranno inviati automaticamente a noi.","reviewAndSendPhotos":"<bold>Convalida le tue foto</bold> e verranno inviate automaticamente a noi.","reviewAndSendVideos":"<bold>Convalida i tuoi video</bold> e verranno inviati automaticamente a noi.","screenShareInstruction":"Seleziona lo schermo o la finestra che desideri registrare.","selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakClearly":"<bold>Parla chiaramente</bold> e d\xec ci\xf2 che devi comunicare.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","tapAudioButton":"<bold>Premi il pulsante di registrazione</bold> per iniziare a registrare il tuo messaggio vocale.","tapStopVideoButton":"<bold>Premi Stop</bold> quando hai finito.","tapVideoButton":"<bold>Premi Registra</bold>. Ricordati di commentare.","videoSpeech":"Puoi <bold>parlare durante</bold> la registrazione per aggiungere dettagli."},"limit":"Registrazione video limitata a 5 min.","logIn":"Login","loggedAs":"Registrato come","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","noCameraAccess":"No camera access","noCameraAccessDescription":"No camera access Allow camera access in your browser.","noCameraAndMicrophoneAccess":"No camera & microphone access","noCameraAndMicrophoneAccessDescription":"No camera & microphone access Allow microphone and camera access in your browser.","noMicrophoneAccess":"No microphone access","noMicrophoneAccessDescription":"No microphone access Allow microphone access in your browser.","okay":"Okay","openThread":"Apri il thread","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.","permissionDeniedTitle":"Qualcosa \xe8 andato storto!","photoInstructionsTitle":"Pronto a scattare una foto?","replyAttached":"La tua risposta \xe8 stata allegata","scanQRCode":"Scansiona questo codice QR con un dispositivo compatibile.","screenShareInstructionsTitle":"Pronto a condividere il tuo schermo?","screenTitle":"Pronto a catturare il tuo schermo?","send":"Invia","sendElements_one":"Invia {{ type }}","sendElements_other":"Invia {{ count }} elementi","showQrCode":"Show QR code","startScreenRecording":"Start screen recording","startScreenShareButton":"Registra il mio schermo","stopScreenShareButton":"Ferma registrazione","submissionDescription":"La tua foto/video \xe8 stata inviata con successo. La esamineremo e ti risponderemo al pi\xf9 presto.","submissionTitle":"Grazie per il tuo invio!","switchToMobileDescription":"Goditi un\'esperienza ancora pi\xf9 pratica utilizzando il tuo telefono per scattare foto e registrare video.","switchToMobileTitle":"Passa al tuo dispositivo mobile","takeNewElement":"Cattura un nuovo {{ type }}","upload":"Upload","useDesktopVersion":"Usa la versione desktop","videoInstructionsTitle":"Pronto a registrare un video?","waitVideo":"Potrebbero essere necessari fino a 15 secondi affinch\xe9 un video sia pronto."},"recordingPopup":{"dismiss":"Chiudi","recordingStartText":"Questa chiamata verr\xe0 registrata a breve. Se preferisci non essere registrato, sei libero di lasciare la chiamata in questo momento.","recordingStartTitle":"Registrazione in procinto di iniziare."},"requestAccess":{"admit":"Ammettere","defaultName":"Un utente","deny":"Negare","wantToJoin":"<bold>{{name}}</bold> vuole unirsi!"},"requestDevice":{"declined":"La tua richiesta \xe8 stata rifiutata.","request":"{{user}} vorrebbe condividere il tuo {{device}}","requestInput":"Richiesta di attivazione","timedOut":"La tua richiesta non ha ricevuto risposta","userDeclined":"{{user}} ha rifiutato la tua richiesta"},"settings":{"devices":"Dispositivi","help":"Aiuto","helpCenter":"Accedi all\'Assistenza","language":"Linguaggio","preferences":"Preferenze","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language","selectYourMicrophone":"Select your preferred microphone","title":"Impostazioni"},"shareLink":{"failed":"Si \xe8 verificato un errore durante l\'invio del link","invalid":"Collegamento non valido","invoice":"{{user}} ti ha inviato una fattura.","pay":"Paga","poweredBy":"Proposto da","sentToUser":"Link inviato a {{user}}","sentToUsers":"Link inviato ai partecipanti","title":"Condividi un link","title2":"Condividi un link"},"sharedHistory":{"shared":"Condiviso con te"},"snapshot":{"error":"Si \xe8 verificato un errore durante l\'invio della schermata","save":"Salva l\'immagine","sentToUser":"Schermata inviata a {{user}}","sentToUsers":"Schermanta inviata ai partecipanti","shared":"Schermata inviata","title":"Schermata"},"videoMenu":{"blockedCamera":"La fotocamera \xe8 bloccata.","cameraPermissions":"Si prega di accettare la condivisione della fotocamera prima di accedere a queste opzioni.","highDef":"Alta definizione (720p)","lowDef":"Definizione bassa (240p)","sendResolution":"Risoluzione inviata (max)","standardDef":"Definizione standard (480p)","title":"Video"},"virtualBackground":{"setBackground":"Imposta sfondo","title":"Sfondo virtuale"},"youtube":{"invalid":"URL YouTube non valido","share":"Guarda ora","title":"Vedere Assieme","url":"URL YOUTUBE"}}');
|
|
378
375
|
|
|
379
376
|
|
|
380
377
|
var $22b1236afc8abe7b$exports = {};
|
|
381
|
-
$22b1236afc8abe7b$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"El micr\xf3fono est\xe1 bloqueado.","microphonePermissions":"Please accept microphone sharing before accessing these options.","title":"Audio"},"blockedFeature":{"descriptionConnected":"On a free plan, you can\'t use this feature. Upgrade your plan to enjoy all in-call features.","descriptionGuest":"You are participating in a call created with a free version of SnapCall. This feature is only available with a Pro version.","dismissConnected":"Upgrade to Pro","dismissGuest":"Okay","titleConnected":"Upgrade to Pro","titleGuest":"Feature not available"},"common":{"new":"new"},"copyLink":{"copied":"Link copied to clipboard","copy":"Copy","description":"Copy link into clipboard","error":"An error occured when trying to copy to clipboard","title":"Copy link"},"endView":{"callEnded":"The call is now ended","callIsOver":"The call is over or deleted","callLeft":"You left the call","full":"You can\'t join this call","fullDescription":"The room is full. Please try to join the call later.","goBack":"Go back to call","tooLate":"You arrived too late"},"gdpr":{"recordedWarning":"To improve the quality of our service, this call will be recorded."},"greeting":{"askToJoin":"Ask to join","askingLetIn":"Asking to be let in...","cameraDisabled":"Camera is Off","cameraEnabled":"Camera is On","canceledCallRequest":"The call request will be canceled and you will be redirected to the call scheduling page.","cantJoinCall":"You can\u2019t join this call","cantWait":"Can\'t wait?","cantWaitLeaveMessage":"Can\u2019t wait? You can leave a message and you will be contacted as soon as possible.","clickOnLock":"Click on the <1></1> lock icon in your browser\'s bar.","footerDescription":"Meet SnapCall, the easiest way to add real-time video to platform, product or service.","footerTitle":"Powered by SnapCall","leaveMessage":"Leave a message","mainTitle":"Welcome to SnapCall","mediaDenied":"Microphone and camera access denied","microphoneDisabled":"Microphone is Off","microphoneEnabled":"Microphone is On","name":"Name","nameDescription":"This name will be displayed to all participants in the call.","namePlaceholder":"Eg. Lucy or Peter","nameSubmit":"Join Conversation","recordVideo":"Record video","recordVoice":"Record voice","requestACall":"Request a call","scheduleACall":"Schedule a call","setting":"Settings","sideDescription":"Please enter your name and adjust your camera and microphone","sideTitle":"Hold tight, you\'re next!","someoneDenied":"Someone in the call denied your request to join.","takeFewMinute":"This may take a few minutes depending on the availability of the participants.","whatYouCanDo":"Here\u2019s what you can do","youWillJoinWhenSomeoneLetsYou":"You will join the call when someone from {{ companyName }} lets you in."},"header":{"free":"Free version"},"invitePeople":{"PublicLink":"Public link","addEmailToInvite":"Add an email to invite.","addEmails":"Add emails...","copyCallLinkDescription":"Copy this link and send it to anyone you wish to invite to join the call.","copyClipLinkDescription":"Copy this link and send it to anyone you wish to invite to record a clip.","email":"Email","emailPlaceholder":"Eg. john@acme.com","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","error":"Failed to send, please try again later.","invalidEmail":"Invalid email format.","invalidEmailOrNumber":"Invalid email or number format.","invitationSentTo_one":"Sent to {{ name }}","invitationSentTo_other":"Sent to {{ name }} and {{ otherEmailsCount }}+","invite":"Invite","inviteByEmail":"Invite by email","inviteByEmailOrNumber":"Invite by email or sms","inviteCall":"Invite to join call","inviteCallDefaultMessage":"Hey! You\'re invited to join our video call. Click the link to connect instantly.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","invitePeople":"Invite people","inviteRecordAudio":"Record an audio","inviteRecordClip":"Invite to record clip","inviteRecordPhoto":"Take a photo","inviteRecordScreen":"Record a screen","inviteRecordVideo":"Record a video","joinTheCall":"Join the call","linkToJoinCall":"Link to join the call","linkToRecordAClip":"Link to record a clip","message":"Message","sharePublicLink":"Share public link"},"leave":{"endCall":"End call for all","leaveCall":"Leave call","title":"Leave"},"loader":{"connection":"Connecting..."},"menu":{"new":"NEW","openNewTab":"Open new tab","pictureInPicture":"Picture-in-Picture","quickConnect":"Quick Connect","screenSharing":"Screen sharing","startRecord":"Record call","stopRecord":"Stop record","title":"Menu"},"misc":{"accept":"Accept","audio":"Audio","camera":"Camera","cancel":"Cancel","confirm":"Confirm","decline":"Decline","from":"From","microphone":"Microphone","open":"Open","photo":"Photo","proceed":"Proceed","remove":"Remove","screen":"Screen","screenshot":"Screenshot","someone":"Someone","speaker":"Speaker","user":"User","video":"Video","you":"You"},"notifications":{"agentJoinError":"An error occured while trying to join the room as an agent","blockedMicrophonePopup":"SnapCall requires access to your camera and microphone. Click the camera blocked icon in your browser\'s address bar.","blockedMicrophonePopupTitle":"Camera and microphone are blocked","cameraError":"An error occured when trying to toggle the camera","cameraRotateError":"An error occured when trying to rotate the camera","close":"Close","connectedTo":"Connected to {{name}}","criticalError":"A critical error has occurred (error {{code}}).","invitationSentToFailed":"Sent to {{ name }} failed.","microphoneError":"An error occured when trying to toggle the microphone","noCamera":"No camera available","recording":"Recording in progress","reload":"Reload","screensharingError":"An error occured when trying to toggle screensharing","uploadError":"An error occured during the upload, please try again later."},"quickConnect":{"scan":"Scan this QR code with your phone camera to open the call.","scanTitle":"Scan QR Code","title":"Quick Connect"},"recorder":{"addMore":"Add more","addNewClip":"Add new clip","allowAccess":"Allow access","allowCamMicAccess":"Allow access to cam/mic","allowScreenShareAccess":"Allow access to screen sharing","attachElements_one":"Attach {{ type }} to ticket","attachElements_other":"Attach {{ count }} elements","audioInstructionsTitle":"Ready to record a voice message?","audioLevelNotification":{"noSound":{"description":"Make sure your microphone is activated.","title":"No sound detected."},"shortVideo":{"description":"This video is too short to get context.","title":"Short video."},"spokenWordsQuestion":{"description":"Does your video include enough spoken details?","title":"Spoken words."},"spokenWordsWarning":{"description":"The clip includes barely any spoken words.","title":"No spoken words."}},"audioLevelToast":{"continueSpeaking":"Continue speaking for clearer context.","noSound":"No sound detected.","rememberSpeaking":"Remember to speak to provide context."},"chooseWhatYouWantToShare":"Choose what you want to share","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","clipSubmissionDescription":"Thank you for using SnapCall.","clipSubmissionTitle_one":"Your clip has been sent","clipSubmissionTitle_other":"Your clips have been sent","confirmRemovalDescription":"Are you sure you want to delete this photo/video? This action cannot be undone.","confirmRemovalTitle":"Confirm deletion","elementBeingProcessed":"Please wait while your {{ type }} is being processed...","elementCaptureSuccess":"{{ type }} captured successfully","elementRecordedAndAttached":"Your clip has been sent and attached to the thread.","goBackToTicket":"Go back to ticket","instructions":{"allowAccessOnPrompt":"When prompted, <bold>allow access</bold> to camera and microphone.","multiplePhotos":"Take a <bold>photo or multiple</bold> for detail, then review.","privacyPolicy":"By proceeding, you agree to our <bold>Privacy Policy</bold>.","reviewAndSendAudios":"<bold>Review your audios</bold>, and they will be sent to us automatically.","reviewAndSendPhotos":"<bold>Validate your photos</bold>, and they will be sent to us automatically.","reviewAndSendVideos":"<bold>Review your videos</bold>, and they will be sent to us automatically.","screenShareInstruction":"Select the screen or window you wish to record.","selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakClearly":"<bold>Speak clearly</bold> and say what you need to convey.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","tapAudioButton":"<bold>Tap the record button</bold> to start recording your audio message.","tapStopVideoButton":"<bold>Tap stop</bold> when you are done.","tapVideoButton":"<bold>Tap the record button</bold> to begin and feel free to provide commentary.","videoSpeech":"You can <bold>talk during</bold> the recording to provide additional information."},"limit":"Video recording limited to 5 min.","logIn":"Log in","loggedAs":"Logged as","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","noCameraAccess":"No camera access","noCameraAndMicrophoneAccess":"No camera & microphone access","noMicrophoneAccess":"No microphone access","okay":"Okay","openThread":"Open thread","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.","permissionDeniedTitle":"Something went wrong!","photoInstructionsTitle":"Ready to snap a photo?","replyAttached":"Your reply has been attached","scanQRCode":"Scan this QR code with a compatible device.","screenShareInstructionsTitle":"Ready to share your screen?","screenTitle":"Ready to capture your screen?","send":"Send","sendElements_one":"Send {{ type }}","sendElements_other":"Send {{ count }} elements","showQrCode":"Show QR code","startScreenRecording":"Start screen recording","startScreenShareButton":"Record my screen","stopScreenShareButton":"Stop recording","submissionDescription":"Your photo/video has been successfully submitted. We will review it and get back to you shortly.","submissionTitle":"Thank you for your submission!","switchToMobileDescription":"Experience greater convenience by using your phone to take photos and record videos.","switchToMobileTitle":"Switch to your mobile device","takeNewElement":"Capture a new {{ type }}","upload":"Upload","useDesktopVersion":"Use the desktop version","videoInstructionsTitle":"Ready to record a video?","waitVideo":"A video may take up to 15 seconds to be ready."},"recordingPopup":{"dismiss":"Dismiss","recordingStartText":"This call will be recorded shortly. If you\u2019d rather not be recorded, you\u2019re welcome to leave the call at this time.","recordingStartTitle":"Recording about to start."},"requestAccess":{"admit":"Admit","defaultName":"An user","deny":"Deny","wantToJoin":"<bold>{{name}}</bold> wants to join!"},"requestDevice":{"declined":"Your request has been declined.","request":"{{user}} would like you to share your {{device}}","requestInput":"Request input devices","timedOut":"Your request has timed out.","userDeclined":"{{user}} has declined your request."},"settings":{"devices":"Devices","help":"Help","helpCenter":"Go to help center","language":"Language","preferences":"Preferences","title":"Settings"},"shareLink":{"failed":"Failed to send link","invalid":"Invalid link","invoice":"{{user}} sent you an invoice.","pay":"Pay","poweredBy":"Powered by","sentToUser":"Link sent to {{user}}","sentToUsers":"Link sent to users","title":"Share link","title2":"Share a link"},"sharedHistory":{"shared":"Shared with you"},"snapshot":{"error":"An error occured when trying to send the snapshot","save":"Save photo","sentToUser":"Snapshot sent to {{user}}","sentToUsers":"Snapshot sent to users.","shared":"Snapshot shared.","title":"Snapshot"},"videoMenu":{"blockedCamera":"Camera is blocked.","cameraPermissions":"Please accept camera sharing before accessing these options.","highDef":"High definition (720p)","lowDef":"Low definition (240p)","sendResolution":"Send Resolution (maximum)","standardDef":"Standard definition (480p)","title":"Video"},"virtualBackground":{"setBackground":"Set Background","title":"Virtual Background"},"youtube":{"invalid":"Invalid YouTube URL","share":"Watch now","title":"Watch Together","url":"YOUTUBE URL"}}');
|
|
378
|
+
$22b1236afc8abe7b$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"El micr\xf3fono est\xe1 bloqueado.","microphonePermissions":"Please accept microphone sharing before accessing these options.","title":"Audio"},"blockedFeature":{"descriptionConnected":"On a free plan, you can\'t use this feature. Upgrade your plan to enjoy all in-call features.","descriptionGuest":"You are participating in a call created with a free version of SnapCall. This feature is only available with a Pro version.","dismissConnected":"Upgrade to Pro","dismissGuest":"Okay","titleConnected":"Upgrade to Pro","titleGuest":"Feature not available"},"common":{"new":"new"},"copyLink":{"copied":"Link copied to clipboard","copy":"Copy","description":"Copy link into clipboard","error":"An error occured when trying to copy to clipboard","title":"Copy link"},"endView":{"callEnded":"The call has ended","callIsOver":"The call is over or deleted","callLeft":"You have left the call","callNoLongerActive":"This call is no longer active. Thank you for participating.","full":"You can\'t join this call","fullDescription":"The room is full. Please try to join the call later.","goBack":"Go back to call","ifMistakeRejoin":"If this was a mistake, you can rejoin using the button below.","invalidLink":"Invalid link","invalidOrExpired":"This link is invalid or expired.","openDashboard":"Open dashboard","tooLate":"You arrived too late"},"gdpr":{"recordedWarning":"To improve the quality of our service, this call will be recorded."},"greeting":{"askToJoin":"Ask to join","askingLetIn":"Asking to be let in...","cameraDisabled":"Camera is Off","cameraEnabled":"Camera is On","canceledCallRequest":"The call request will be canceled and you will be redirected to the call scheduling page.","cantJoinCall":"You can\u2019t join this call","cantWait":"Can\'t wait?","cantWaitLeaveMessage":"Can\u2019t wait? You can leave a message and you will be contacted as soon as possible.","clickOnLock":"Click on the <1></1> lock icon in your browser\'s bar.","footerDescription":"Meet SnapCall, the easiest way to add real-time video to platform, product or service.","footerTitle":"Powered by SnapCall","leaveMessage":"Leave a message","mainTitle":"Welcome to SnapCall","mediaDenied":"Microphone and camera access denied","microphoneDisabled":"Microphone is Off","microphoneEnabled":"Microphone is On","name":"Name","nameDescription":"This name will be displayed to all participants in the call.","namePlaceholder":"Eg. Lucy or Peter","nameSubmit":"Join Conversation","recordVideo":"Record video","recordVoice":"Record voice","requestACall":"Request a call","scheduleACall":"Schedule a call","setting":"Settings","sideDescription":"Please enter your name and adjust your camera and microphone","sideTitle":"Hold tight, you\'re next!","someoneDenied":"Someone in the call denied your request to join.","takeFewMinute":"This may take a few minutes depending on the availability of the participants.","whatYouCanDo":"Here\u2019s what you can do","youWillJoinWhenSomeoneLetsYou":"You will join the call when someone from {{ companyName }} lets you in."},"header":{"free":"Free version"},"invitePeople":{"PublicLink":"Public link","addEmailToInvite":"Add an email to invite.","addEmails":"Add emails...","copyCallLinkDescription":"Copy this link and send it to anyone you wish to invite to join the call.","copyClipLinkDescription":"Copy this link and send it to anyone you wish to invite to record a clip.","email":"Email","emailPlaceholder":"Eg. john@acme.com","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","error":"Failed to send, please try again later.","invalidEmail":"Invalid email format.","invalidEmailOrNumber":"Invalid email or number format.","invitationSentTo_one":"Sent to {{ name }}","invitationSentTo_other":"Sent to {{ name }} and {{ otherEmailsCount }}+","invite":"Invite","inviteByEmail":"Invite by email","inviteByEmailOrNumber":"Invite by email or sms","inviteCall":"Invite to join call","inviteCallDefaultMessage":"Hey! You\'re invited to join our video call. Click the link to connect instantly.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","invitePeople":"Invite people","inviteRecordAudio":"Record an audio","inviteRecordClip":"Invite to record clip","inviteRecordPhoto":"Take a photo","inviteRecordScreen":"Record a screen","inviteRecordVideo":"Record a video","joinTheCall":"Join the call","linkToJoinCall":"Link to join the call","linkToRecordAClip":"Link to record a clip","message":"Message","sharePublicLink":"Share public link"},"leave":{"endCall":"End call for all","leaveCall":"Leave call","title":"Leave"},"loader":{"connection":"Connecting..."},"menu":{"new":"NEW","openNewTab":"Open new tab","pictureInPicture":"Picture-in-Picture","quickConnect":"Quick Connect","screenSharing":"Screen sharing","startRecord":"Record call","stopRecord":"Stop record","title":"Menu"},"misc":{"accept":"Accept","audio":"Audio","camera":"Camera","cancel":"Cancel","confirm":"Confirm","decline":"Decline","from":"From","microphone":"Microphone","open":"Open","photo":"Photo","proceed":"Proceed","remove":"Remove","screen":"Screen","screenshot":"Screenshot","someone":"Someone","speaker":"Speaker","user":"User","video":"Video","you":"You"},"notifications":{"agentJoinError":"An error occured while trying to join the room as an agent","blockedMicrophonePopup":"SnapCall requires access to your camera and microphone. Click the camera blocked icon in your browser\'s address bar.","blockedMicrophonePopupTitle":"Camera and microphone are blocked","cameraError":"An error occured when trying to toggle the camera","cameraRotateError":"An error occured when trying to rotate the camera","close":"Close","connectedTo":"Connected to {{name}}","criticalError":"A critical error has occurred (error {{code}}).","error":"Error","errorOccuredCode":"An error occured (error {{code}}).","invitationSentToFailed":"Sent to {{ name }} failed.","microphoneError":"An error occured when trying to toggle the microphone","noCamera":"No camera available","recording":"Recording in progress","reload":"Reload","screensharingError":"An error occured when trying to toggle screensharing","uploadError":"An error occured during the upload, please try again later."},"quickConnect":{"scan":"Scan this QR code with your phone camera to open the call.","scanTitle":"Scan QR Code","title":"Quick Connect"},"recorder":{"addMore":"Add more","addNewClip":"Add new clip","allowAccess":"Allow access","allowCamMicAccess":"Allow access to cam/mic","allowScreenShareAccess":"Allow access to screen sharing","attachElements_one":"Attach {{ type }} to ticket","attachElements_other":"Attach {{ count }} elements","audioInstructionsTitle":"Ready to record a voice message?","audioLevelNotification":{"noSound":{"description":"Make sure your microphone is activated.","title":"No sound detected."},"shortVideo":{"description":"This video is too short to get context.","title":"Short video."},"spokenWordsQuestion":{"description":"Does your video include enough spoken details?","title":"Spoken words."},"spokenWordsWarning":{"description":"The clip includes barely any spoken words.","title":"No spoken words."}},"audioLevelToast":{"continueSpeaking":"Continue speaking for clearer context.","noSound":"No sound detected.","rememberSpeaking":"Remember to speak to provide context."},"chooseWhatYouWantToShare":"Choose what you want to share","chooseWhatYouWantToShareDescription":"Select the screen or tab you want to share and start recording.","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","clipSubmissionDescription":"Thank you for using SnapCall.","clipSubmissionTitle_one":"Your clip has been sent","clipSubmissionTitle_other":"Your clips have been sent","confirmRemovalDescription":"Are you sure you want to delete this photo/video? This action cannot be undone.","confirmRemovalTitle":"Confirm deletion","elementBeingProcessed":"Please wait while your {{ type }} is being processed...","elementCaptureSuccess":"{{ type }} captured successfully","elementRecordedAndAttached":"Your clip has been sent and attached to the thread.","goBackToTicket":"Go back to ticket","instructions":{"allowAccessOnPrompt":"When prompted, <bold>allow access</bold> to camera and microphone.","multiplePhotos":"Take a <bold>photo or multiple</bold> for detail, then review.","privacyPolicy":"By proceeding, you agree to our <bold>Privacy Policy</bold>.","reviewAndSendAudios":"<bold>Review your audios</bold>, and they will be sent to us automatically.","reviewAndSendPhotos":"<bold>Validate your photos</bold>, and they will be sent to us automatically.","reviewAndSendVideos":"<bold>Review your videos</bold>, and they will be sent to us automatically.","screenShareInstruction":"Select the screen or window you wish to record.","selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakClearly":"<bold>Speak clearly</bold> and say what you need to convey.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","tapAudioButton":"<bold>Tap the record button</bold> to start recording your audio message.","tapStopVideoButton":"<bold>Tap stop</bold> when you are done.","tapVideoButton":"<bold>Tap the record button</bold> to begin and feel free to provide commentary.","videoSpeech":"You can <bold>talk during</bold> the recording to provide additional information."},"limit":"Video recording limited to 5 min.","logIn":"Log in","loggedAs":"Logged as","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","noCameraAccess":"No camera access","noCameraAccessDescription":"No camera access Allow camera access in your browser.","noCameraAndMicrophoneAccess":"No camera & microphone access","noCameraAndMicrophoneAccessDescription":"No camera & microphone access Allow microphone and camera access in your browser.","noMicrophoneAccess":"No microphone access","noMicrophoneAccessDescription":"No microphone access Allow microphone access in your browser.","okay":"Okay","openThread":"Open thread","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.","permissionDeniedTitle":"Something went wrong!","photoInstructionsTitle":"Ready to snap a photo?","replyAttached":"Your reply has been attached","scanQRCode":"Scan this QR code with a compatible device.","screenShareInstructionsTitle":"Ready to share your screen?","screenTitle":"Ready to capture your screen?","send":"Send","sendElements_one":"Send {{ type }}","sendElements_other":"Send {{ count }} elements","showQrCode":"Show QR code","startScreenRecording":"Start screen recording","startScreenShareButton":"Record my screen","stopScreenShareButton":"Stop recording","submissionDescription":"Your photo/video has been successfully submitted. We will review it and get back to you shortly.","submissionTitle":"Thank you for your submission!","switchToMobileDescription":"Experience greater convenience by using your phone to take photos and record videos.","switchToMobileTitle":"Switch to your mobile device","takeNewElement":"Capture a new {{ type }}","upload":"Upload","useDesktopVersion":"Use the desktop version","videoInstructionsTitle":"Ready to record a video?","waitVideo":"A video may take up to 15 seconds to be ready."},"recordingPopup":{"dismiss":"Dismiss","recordingStartText":"This call will be recorded shortly. If you\u2019d rather not be recorded, you\u2019re welcome to leave the call at this time.","recordingStartTitle":"Recording about to start."},"requestAccess":{"admit":"Admit","defaultName":"An user","deny":"Deny","wantToJoin":"<bold>{{name}}</bold> wants to join!"},"requestDevice":{"declined":"Your request has been declined.","request":"{{user}} would like you to share your {{device}}","requestInput":"Request input devices","timedOut":"Your request has timed out.","userDeclined":"{{user}} has declined your request."},"settings":{"devices":"Devices","help":"Help","helpCenter":"Go to help center","language":"Language","preferences":"Preferences","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language","selectYourMicrophone":"Select your preferred microphone","title":"Settings"},"shareLink":{"failed":"Failed to send link","invalid":"Invalid link","invoice":"{{user}} sent you an invoice.","pay":"Pay","poweredBy":"Powered by","sentToUser":"Link sent to {{user}}","sentToUsers":"Link sent to users","title":"Share link","title2":"Share a link"},"sharedHistory":{"shared":"Shared with you"},"snapshot":{"error":"An error occured when trying to send the snapshot","save":"Save photo","sentToUser":"Snapshot sent to {{user}}","sentToUsers":"Snapshot sent to users.","shared":"Snapshot shared.","title":"Snapshot"},"videoMenu":{"blockedCamera":"Camera is blocked.","cameraPermissions":"Please accept camera sharing before accessing these options.","highDef":"High definition (720p)","lowDef":"Low definition (240p)","sendResolution":"Send Resolution (maximum)","standardDef":"Standard definition (480p)","title":"Video"},"virtualBackground":{"setBackground":"Set Background","title":"Virtual Background"},"youtube":{"invalid":"Invalid YouTube URL","share":"Watch now","title":"Watch Together","url":"YOUTUBE URL"}}');
|
|
382
379
|
|
|
383
380
|
|
|
384
381
|
var $f712a7b52924c1d6$exports = {};
|
|
385
|
-
$f712a7b52924c1d6$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"Mikrofon jest zablokowany.","microphonePermissions":"Please accept microphone sharing before accessing these options.","title":"Audio"},"blockedFeature":{"descriptionConnected":"On a free plan, you can\'t use this feature. Upgrade your plan to enjoy all in-call features.","descriptionGuest":"You are participating in a call created with a free version of SnapCall. This feature is only available with a Pro version.","dismissConnected":"Upgrade to Pro","dismissGuest":"Okay","titleConnected":"Upgrade to Pro","titleGuest":"Feature not available"},"common":{"new":"new"},"copyLink":{"copied":"Link copied to clipboard","copy":"Copy","description":"Copy link into clipboard","error":"An error occured when trying to copy to clipboard","title":"Copy link"},"endView":{"callEnded":"The call is now ended","callIsOver":"The call is over or deleted","callLeft":"You left the call","full":"You can\'t join this call","fullDescription":"The room is full. Please try to join the call later.","goBack":"Go back to call","tooLate":"You arrived too late"},"gdpr":{"recordedWarning":"To improve the quality of our service, this call will be recorded."},"greeting":{"askToJoin":"Ask to join","askingLetIn":"Asking to be let in...","cameraDisabled":"Camera is Off","cameraEnabled":"Camera is On","canceledCallRequest":"The call request will be canceled and you will be redirected to the call scheduling page.","cantJoinCall":"You can\u2019t join this call","cantWait":"Can\'t wait?","cantWaitLeaveMessage":"Can\u2019t wait? You can leave a message and you will be contacted as soon as possible.","clickOnLock":"Click on the <1></1> lock icon in your browser\'s bar.","footerDescription":"Meet SnapCall, the easiest way to add real-time video to platform, product or service.","footerTitle":"Powered by SnapCall","leaveMessage":"Leave a message","mainTitle":"Welcome to SnapCall","mediaDenied":"Microphone and camera access denied","microphoneDisabled":"Microphone is Off","microphoneEnabled":"Microphone is On","name":"Name","nameDescription":"This name will be displayed to all participants in the call.","namePlaceholder":"Eg. Lucy or Peter","nameSubmit":"Join Conversation","recordVideo":"Record video","recordVoice":"Record voice","requestACall":"Request a call","scheduleACall":"Schedule a call","setting":"Settings","sideDescription":"Please enter your name and adjust your camera and microphone","sideTitle":"Hold tight, you\'re next!","someoneDenied":"Someone in the call denied your request to join.","takeFewMinute":"This may take a few minutes depending on the availability of the participants.","whatYouCanDo":"Here\u2019s what you can do","youWillJoinWhenSomeoneLetsYou":"You will join the call when someone from {{ companyName }} lets you in."},"header":{"free":"Free version"},"invitePeople":{"PublicLink":"Public link","addEmailToInvite":"Add an email to invite.","addEmails":"Add emails...","copyCallLinkDescription":"Copy this link and send it to anyone you wish to invite to join the call.","copyClipLinkDescription":"Copy this link and send it to anyone you wish to invite to record a clip.","email":"Email","emailPlaceholder":"Eg. john@acme.com","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","error":"Failed to send, please try again later.","invalidEmail":"Invalid email format.","invalidEmailOrNumber":"Invalid email or number format.","invitationSentTo_one":"Sent to {{ name }}","invitationSentTo_other":"Sent to {{ name }} and {{ otherEmailsCount }}+","invite":"Invite","inviteByEmail":"Invite by email","inviteByEmailOrNumber":"Invite by email or sms","inviteCall":"Invite to join call","inviteCallDefaultMessage":"Hey! You\'re invited to join our video call. Click the link to connect instantly.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","invitePeople":"Invite people","inviteRecordAudio":"Record an audio","inviteRecordClip":"Invite to record clip","inviteRecordPhoto":"Take a photo","inviteRecordScreen":"Record a screen","inviteRecordVideo":"Record a video","joinTheCall":"Join the call","linkToJoinCall":"Link to join the call","linkToRecordAClip":"Link to record a clip","message":"Message","sharePublicLink":"Share public link"},"leave":{"endCall":"End call for all","leaveCall":"Leave call","title":"Leave"},"loader":{"connection":"Connecting..."},"menu":{"new":"NEW","openNewTab":"Open new tab","pictureInPicture":"Picture-in-Picture","quickConnect":"Quick Connect","screenSharing":"Screen sharing","startRecord":"Record call","stopRecord":"Stop record","title":"Menu"},"misc":{"accept":"Accept","audio":"Audio","camera":"Camera","cancel":"Cancel","confirm":"Confirm","decline":"Decline","from":"From","microphone":"Microphone","open":"Open","photo":"Photo","proceed":"Proceed","remove":"Remove","screen":"Screen","screenshot":"Screenshot","someone":"Someone","speaker":"Speaker","user":"User","video":"Video","you":"You"},"notifications":{"agentJoinError":"An error occured while trying to join the room as an agent","blockedMicrophonePopup":"SnapCall requires access to your camera and microphone. Click the camera blocked icon in your browser\'s address bar.","blockedMicrophonePopupTitle":"Camera and microphone are blocked","cameraError":"An error occured when trying to toggle the camera","cameraRotateError":"An error occured when trying to rotate the camera","close":"Close","connectedTo":"Connected to {{name}}","criticalError":"A critical error has occurred (error {{code}}).","invitationSentToFailed":"Sent to {{ name }} failed.","microphoneError":"An error occured when trying to toggle the microphone","noCamera":"No camera available","recording":"Recording in progress","reload":"Reload","screensharingError":"An error occured when trying to toggle screensharing","uploadError":"An error occured during the upload, please try again later."},"quickConnect":{"scan":"Scan this QR code with your phone camera to open the call.","scanTitle":"Scan QR Code","title":"Quick Connect"},"recorder":{"addMore":"Add more","addNewClip":"Add new clip","allowAccess":"Allow access","allowCamMicAccess":"Allow access to cam/mic","allowScreenShareAccess":"Allow access to screen sharing","attachElements_one":"Attach {{ type }} to ticket","attachElements_other":"Attach {{ count }} elements","audioInstructionsTitle":"Ready to record a voice message?","audioLevelNotification":{"noSound":{"description":"Make sure your microphone is activated.","title":"No sound detected."},"shortVideo":{"description":"This video is too short to get context.","title":"Short video."},"spokenWordsQuestion":{"description":"Does your video include enough spoken details?","title":"Spoken words."},"spokenWordsWarning":{"description":"The clip includes barely any spoken words.","title":"No spoken words."}},"audioLevelToast":{"continueSpeaking":"Continue speaking for clearer context.","noSound":"No sound detected.","rememberSpeaking":"Remember to speak to provide context."},"chooseWhatYouWantToShare":"Choose what you want to share","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","clipSubmissionDescription":"Thank you for using SnapCall.","clipSubmissionTitle_one":"Your clip has been sent","clipSubmissionTitle_other":"Your clips have been sent","confirmRemovalDescription":"Are you sure you want to delete this photo/video? This action cannot be undone.","confirmRemovalTitle":"Confirm deletion","elementBeingProcessed":"Please wait while your {{ type }} is being processed...","elementCaptureSuccess":"{{ type }} captured successfully","elementRecordedAndAttached":"Your clip has been sent and attached to the thread.","goBackToTicket":"Go back to ticket","instructions":{"allowAccessOnPrompt":"When prompted, <bold>allow access</bold> to camera and microphone.","multiplePhotos":"Take a <bold>photo or multiple</bold> for detail, then review.","privacyPolicy":"By proceeding, you agree to our <bold>Privacy Policy</bold>.","reviewAndSendAudios":"<bold>Review your audios</bold>, and they will be sent to us automatically.","reviewAndSendPhotos":"<bold>Validate your photos</bold>, and they will be sent to us automatically.","reviewAndSendVideos":"<bold>Review your videos</bold>, and they will be sent to us automatically.","screenShareInstruction":"Select the screen or window you wish to record.","selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakClearly":"<bold>Speak clearly</bold> and say what you need to convey.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","tapAudioButton":"<bold>Tap the record button</bold> to start recording your audio message.","tapStopVideoButton":"<bold>Tap stop</bold> when you are done.","tapVideoButton":"<bold>Tap the record button</bold> to begin and feel free to provide commentary.","videoSpeech":"You can <bold>talk during</bold> the recording to provide additional information."},"limit":"Video recording limited to 5 min.","logIn":"Log in","loggedAs":"Logged as","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","noCameraAccess":"No camera access","noCameraAndMicrophoneAccess":"No camera & microphone access","noMicrophoneAccess":"No microphone access","okay":"Okay","openThread":"Open thread","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.","permissionDeniedTitle":"Something went wrong!","photoInstructionsTitle":"Ready to snap a photo?","replyAttached":"Your reply has been attached","scanQRCode":"Scan this QR code with a compatible device.","screenShareInstructionsTitle":"Ready to share your screen?","screenTitle":"Ready to capture your screen?","send":"Send","sendElements_one":"Send {{ type }}","sendElements_other":"Send {{ count }} elements","showQrCode":"Show QR code","startScreenRecording":"Start screen recording","startScreenShareButton":"Record my screen","stopScreenShareButton":"Stop recording","submissionDescription":"Your photo/video has been successfully submitted. We will review it and get back to you shortly.","submissionTitle":"Thank you for your submission!","switchToMobileDescription":"Experience greater convenience by using your phone to take photos and record videos.","switchToMobileTitle":"Switch to your mobile device","takeNewElement":"Capture a new {{ type }}","upload":"Upload","useDesktopVersion":"Use the desktop version","videoInstructionsTitle":"Ready to record a video?","waitVideo":"A video may take up to 15 seconds to be ready."},"recordingPopup":{"dismiss":"Dismiss","recordingStartText":"This call will be recorded shortly. If you\u2019d rather not be recorded, you\u2019re welcome to leave the call at this time.","recordingStartTitle":"Recording about to start."},"requestAccess":{"admit":"Admit","defaultName":"An user","deny":"Deny","wantToJoin":"<bold>{{name}}</bold> wants to join!"},"requestDevice":{"declined":"Your request has been declined.","request":"{{user}} would like you to share your {{device}}","requestInput":"Request input devices","timedOut":"Your request has timed out.","userDeclined":"{{user}} has declined your request."},"settings":{"devices":"Devices","help":"Help","helpCenter":"Go to help center","language":"Language","preferences":"Preferences","title":"Settings"},"shareLink":{"failed":"Failed to send link","invalid":"Invalid link","invoice":"{{user}} sent you an invoice.","pay":"Pay","poweredBy":"Powered by","sentToUser":"Link sent to {{user}}","sentToUsers":"Link sent to users","title":"Share link","title2":"Share a link"},"sharedHistory":{"shared":"Shared with you"},"snapshot":{"error":"An error occured when trying to send the snapshot","save":"Save photo","sentToUser":"Snapshot sent to {{user}}","sentToUsers":"Snapshot sent to users.","shared":"Snapshot shared.","title":"Snapshot"},"videoMenu":{"blockedCamera":"Camera is blocked.","cameraPermissions":"Please accept camera sharing before accessing these options.","highDef":"High definition (720p)","lowDef":"Low definition (240p)","sendResolution":"Send Resolution (maximum)","standardDef":"Standard definition (480p)","title":"Video"},"virtualBackground":{"setBackground":"Set Background","title":"Virtual Background"},"youtube":{"invalid":"Invalid YouTube URL","share":"Watch now","title":"Watch Together","url":"YOUTUBE URL"}}');
|
|
382
|
+
$f712a7b52924c1d6$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"Mikrofon jest zablokowany.","microphonePermissions":"Please accept microphone sharing before accessing these options.","title":"Audio"},"blockedFeature":{"descriptionConnected":"On a free plan, you can\'t use this feature. Upgrade your plan to enjoy all in-call features.","descriptionGuest":"You are participating in a call created with a free version of SnapCall. This feature is only available with a Pro version.","dismissConnected":"Upgrade to Pro","dismissGuest":"Okay","titleConnected":"Upgrade to Pro","titleGuest":"Feature not available"},"common":{"new":"new"},"copyLink":{"copied":"Link copied to clipboard","copy":"Copy","description":"Copy link into clipboard","error":"An error occured when trying to copy to clipboard","title":"Copy link"},"endView":{"callEnded":"The call has ended","callIsOver":"The call is over or deleted","callLeft":"You have left the call","callNoLongerActive":"This call is no longer active. Thank you for participating.","full":"You can\'t join this call","fullDescription":"The room is full. Please try to join the call later.","goBack":"Go back to call","ifMistakeRejoin":"If this was a mistake, you can rejoin using the button below.","invalidLink":"Invalid link","invalidOrExpired":"This link is invalid or expired.","openDashboard":"Open dashboard","tooLate":"You arrived too late"},"gdpr":{"recordedWarning":"To improve the quality of our service, this call will be recorded."},"greeting":{"askToJoin":"Ask to join","askingLetIn":"Asking to be let in...","cameraDisabled":"Camera is Off","cameraEnabled":"Camera is On","canceledCallRequest":"The call request will be canceled and you will be redirected to the call scheduling page.","cantJoinCall":"You can\u2019t join this call","cantWait":"Can\'t wait?","cantWaitLeaveMessage":"Can\u2019t wait? You can leave a message and you will be contacted as soon as possible.","clickOnLock":"Click on the <1></1> lock icon in your browser\'s bar.","footerDescription":"Meet SnapCall, the easiest way to add real-time video to platform, product or service.","footerTitle":"Powered by SnapCall","leaveMessage":"Leave a message","mainTitle":"Welcome to SnapCall","mediaDenied":"Microphone and camera access denied","microphoneDisabled":"Microphone is Off","microphoneEnabled":"Microphone is On","name":"Name","nameDescription":"This name will be displayed to all participants in the call.","namePlaceholder":"Eg. Lucy or Peter","nameSubmit":"Join Conversation","recordVideo":"Record video","recordVoice":"Record voice","requestACall":"Request a call","scheduleACall":"Schedule a call","setting":"Settings","sideDescription":"Please enter your name and adjust your camera and microphone","sideTitle":"Hold tight, you\'re next!","someoneDenied":"Someone in the call denied your request to join.","takeFewMinute":"This may take a few minutes depending on the availability of the participants.","whatYouCanDo":"Here\u2019s what you can do","youWillJoinWhenSomeoneLetsYou":"You will join the call when someone from {{ companyName }} lets you in."},"header":{"free":"Free version"},"invitePeople":{"PublicLink":"Public link","addEmailToInvite":"Add an email to invite.","addEmails":"Add emails...","copyCallLinkDescription":"Copy this link and send it to anyone you wish to invite to join the call.","copyClipLinkDescription":"Copy this link and send it to anyone you wish to invite to record a clip.","email":"Email","emailPlaceholder":"Eg. john@acme.com","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","error":"Failed to send, please try again later.","invalidEmail":"Invalid email format.","invalidEmailOrNumber":"Invalid email or number format.","invitationSentTo_one":"Sent to {{ name }}","invitationSentTo_other":"Sent to {{ name }} and {{ otherEmailsCount }}+","invite":"Invite","inviteByEmail":"Invite by email","inviteByEmailOrNumber":"Invite by email or sms","inviteCall":"Invite to join call","inviteCallDefaultMessage":"Hey! You\'re invited to join our video call. Click the link to connect instantly.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","invitePeople":"Invite people","inviteRecordAudio":"Record an audio","inviteRecordClip":"Invite to record clip","inviteRecordPhoto":"Take a photo","inviteRecordScreen":"Record a screen","inviteRecordVideo":"Record a video","joinTheCall":"Join the call","linkToJoinCall":"Link to join the call","linkToRecordAClip":"Link to record a clip","message":"Message","sharePublicLink":"Share public link"},"leave":{"endCall":"End call for all","leaveCall":"Leave call","title":"Leave"},"loader":{"connection":"Connecting..."},"menu":{"new":"NEW","openNewTab":"Open new tab","pictureInPicture":"Picture-in-Picture","quickConnect":"Quick Connect","screenSharing":"Screen sharing","startRecord":"Record call","stopRecord":"Stop record","title":"Menu"},"misc":{"accept":"Accept","audio":"Audio","camera":"Camera","cancel":"Cancel","confirm":"Confirm","decline":"Decline","from":"From","microphone":"Microphone","open":"Open","photo":"Photo","proceed":"Proceed","remove":"Remove","screen":"Screen","screenshot":"Screenshot","someone":"Someone","speaker":"Speaker","user":"User","video":"Video","you":"You"},"notifications":{"agentJoinError":"An error occured while trying to join the room as an agent","blockedMicrophonePopup":"SnapCall requires access to your camera and microphone. Click the camera blocked icon in your browser\'s address bar.","blockedMicrophonePopupTitle":"Camera and microphone are blocked","cameraError":"An error occured when trying to toggle the camera","cameraRotateError":"An error occured when trying to rotate the camera","close":"Close","connectedTo":"Connected to {{name}}","criticalError":"A critical error has occurred (error {{code}}).","error":"Error","errorOccuredCode":"An error occured (error {{code}}).","invitationSentToFailed":"Sent to {{ name }} failed.","microphoneError":"An error occured when trying to toggle the microphone","noCamera":"No camera available","recording":"Recording in progress","reload":"Reload","screensharingError":"An error occured when trying to toggle screensharing","uploadError":"An error occured during the upload, please try again later."},"quickConnect":{"scan":"Scan this QR code with your phone camera to open the call.","scanTitle":"Scan QR Code","title":"Quick Connect"},"recorder":{"addMore":"Add more","addNewClip":"Add new clip","allowAccess":"Allow access","allowCamMicAccess":"Allow access to cam/mic","allowScreenShareAccess":"Allow access to screen sharing","attachElements_one":"Attach {{ type }} to ticket","attachElements_other":"Attach {{ count }} elements","audioInstructionsTitle":"Ready to record a voice message?","audioLevelNotification":{"noSound":{"description":"Make sure your microphone is activated.","title":"No sound detected."},"shortVideo":{"description":"This video is too short to get context.","title":"Short video."},"spokenWordsQuestion":{"description":"Does your video include enough spoken details?","title":"Spoken words."},"spokenWordsWarning":{"description":"The clip includes barely any spoken words.","title":"No spoken words."}},"audioLevelToast":{"continueSpeaking":"Continue speaking for clearer context.","noSound":"No sound detected.","rememberSpeaking":"Remember to speak to provide context."},"chooseWhatYouWantToShare":"Choose what you want to share","chooseWhatYouWantToShareDescription":"Select the screen or tab you want to share and start recording.","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","clipSubmissionDescription":"Thank you for using SnapCall.","clipSubmissionTitle_one":"Your clip has been sent","clipSubmissionTitle_other":"Your clips have been sent","confirmRemovalDescription":"Are you sure you want to delete this photo/video? This action cannot be undone.","confirmRemovalTitle":"Confirm deletion","elementBeingProcessed":"Please wait while your {{ type }} is being processed...","elementCaptureSuccess":"{{ type }} captured successfully","elementRecordedAndAttached":"Your clip has been sent and attached to the thread.","goBackToTicket":"Go back to ticket","instructions":{"allowAccessOnPrompt":"When prompted, <bold>allow access</bold> to camera and microphone.","multiplePhotos":"Take a <bold>photo or multiple</bold> for detail, then review.","privacyPolicy":"By proceeding, you agree to our <bold>Privacy Policy</bold>.","reviewAndSendAudios":"<bold>Review your audios</bold>, and they will be sent to us automatically.","reviewAndSendPhotos":"<bold>Validate your photos</bold>, and they will be sent to us automatically.","reviewAndSendVideos":"<bold>Review your videos</bold>, and they will be sent to us automatically.","screenShareInstruction":"Select the screen or window you wish to record.","selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakClearly":"<bold>Speak clearly</bold> and say what you need to convey.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","tapAudioButton":"<bold>Tap the record button</bold> to start recording your audio message.","tapStopVideoButton":"<bold>Tap stop</bold> when you are done.","tapVideoButton":"<bold>Tap the record button</bold> to begin and feel free to provide commentary.","videoSpeech":"You can <bold>talk during</bold> the recording to provide additional information."},"limit":"Video recording limited to 5 min.","logIn":"Log in","loggedAs":"Logged as","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","noCameraAccess":"No camera access","noCameraAccessDescription":"No camera access Allow camera access in your browser.","noCameraAndMicrophoneAccess":"No camera & microphone access","noCameraAndMicrophoneAccessDescription":"No camera & microphone access Allow microphone and camera access in your browser.","noMicrophoneAccess":"No microphone access","noMicrophoneAccessDescription":"No microphone access Allow microphone access in your browser.","okay":"Okay","openThread":"Open thread","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.","permissionDeniedTitle":"Something went wrong!","photoInstructionsTitle":"Ready to snap a photo?","replyAttached":"Your reply has been attached","scanQRCode":"Scan this QR code with a compatible device.","screenShareInstructionsTitle":"Ready to share your screen?","screenTitle":"Ready to capture your screen?","send":"Send","sendElements_one":"Send {{ type }}","sendElements_other":"Send {{ count }} elements","showQrCode":"Show QR code","startScreenRecording":"Start screen recording","startScreenShareButton":"Record my screen","stopScreenShareButton":"Stop recording","submissionDescription":"Your photo/video has been successfully submitted. We will review it and get back to you shortly.","submissionTitle":"Thank you for your submission!","switchToMobileDescription":"Experience greater convenience by using your phone to take photos and record videos.","switchToMobileTitle":"Switch to your mobile device","takeNewElement":"Capture a new {{ type }}","upload":"Upload","useDesktopVersion":"Use the desktop version","videoInstructionsTitle":"Ready to record a video?","waitVideo":"A video may take up to 15 seconds to be ready."},"recordingPopup":{"dismiss":"Dismiss","recordingStartText":"This call will be recorded shortly. If you\u2019d rather not be recorded, you\u2019re welcome to leave the call at this time.","recordingStartTitle":"Recording about to start."},"requestAccess":{"admit":"Admit","defaultName":"An user","deny":"Deny","wantToJoin":"<bold>{{name}}</bold> wants to join!"},"requestDevice":{"declined":"Your request has been declined.","request":"{{user}} would like you to share your {{device}}","requestInput":"Request input devices","timedOut":"Your request has timed out.","userDeclined":"{{user}} has declined your request."},"settings":{"devices":"Devices","help":"Help","helpCenter":"Go to help center","language":"Language","preferences":"Preferences","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language","selectYourMicrophone":"Select your preferred microphone","title":"Settings"},"shareLink":{"failed":"Failed to send link","invalid":"Invalid link","invoice":"{{user}} sent you an invoice.","pay":"Pay","poweredBy":"Powered by","sentToUser":"Link sent to {{user}}","sentToUsers":"Link sent to users","title":"Share link","title2":"Share a link"},"sharedHistory":{"shared":"Shared with you"},"snapshot":{"error":"An error occured when trying to send the snapshot","save":"Save photo","sentToUser":"Snapshot sent to {{user}}","sentToUsers":"Snapshot sent to users.","shared":"Snapshot shared.","title":"Snapshot"},"videoMenu":{"blockedCamera":"Camera is blocked.","cameraPermissions":"Please accept camera sharing before accessing these options.","highDef":"High definition (720p)","lowDef":"Low definition (240p)","sendResolution":"Send Resolution (maximum)","standardDef":"Standard definition (480p)","title":"Video"},"virtualBackground":{"setBackground":"Set Background","title":"Virtual Background"},"youtube":{"invalid":"Invalid YouTube URL","share":"Watch now","title":"Watch Together","url":"YOUTUBE URL"}}');
|
|
386
383
|
|
|
387
384
|
|
|
388
385
|
const $b45c0bcc142f0b5e$export$150b732325d14d04 = {
|
|
@@ -433,7 +430,6 @@ var $b45c0bcc142f0b5e$export$2e2bcd8739ae039 = (0, ($parcel$interopDefault($jQDc
|
|
|
433
430
|
|
|
434
431
|
|
|
435
432
|
|
|
436
|
-
|
|
437
433
|
/* eslint-disable no-console */
|
|
438
434
|
const $d0c6baf97675ab49$var$LogLevel = {
|
|
439
435
|
error: 1,
|
|
@@ -526,6 +522,12 @@ class $6a90fae7e584afd4$export$ea669869acd8f177 {
|
|
|
526
522
|
this.listener = listener;
|
|
527
523
|
this.stream = stream;
|
|
528
524
|
this.audioContext = new $6a90fae7e584afd4$var$audioContextConstructor();
|
|
525
|
+
this.voiceAnalyser = this.audioContext.createAnalyser();
|
|
526
|
+
this.voiceAudioStreamSource = this.audioContext.createMediaStreamSource(this.stream);
|
|
527
|
+
this.voiceAnalyser.fftSize = 32;
|
|
528
|
+
this.voiceAnalyser.minDecibels = -90;
|
|
529
|
+
this.voiceAnalyser.maxDecibels = -10;
|
|
530
|
+
this.voiceAudioStreamSource.connect(this.voiceAnalyser);
|
|
529
531
|
this.analyser = this.audioContext.createAnalyser();
|
|
530
532
|
this.audioStreamSource = this.audioContext.createMediaStreamSource(this.stream);
|
|
531
533
|
this.analyser.fftSize = 512;
|
|
@@ -582,7 +584,7 @@ class $6a90fae7e584afd4$export$ea669869acd8f177 {
|
|
|
582
584
|
}
|
|
583
585
|
getInstantAudioLevel() {
|
|
584
586
|
const FFTDataArray = new Uint8Array(this.analyser.frequencyBinCount);
|
|
585
|
-
this.
|
|
587
|
+
this.voiceAnalyser.getByteFrequencyData(FFTDataArray);
|
|
586
588
|
const rms = this.computeRMS(FFTDataArray);
|
|
587
589
|
return rms > 0 ? 100 * rms / 255 : 0;
|
|
588
590
|
}
|
|
@@ -634,6 +636,7 @@ class $6a90fae7e584afd4$export$ea669869acd8f177 {
|
|
|
634
636
|
});
|
|
635
637
|
try {
|
|
636
638
|
this.audioStreamSource.disconnect(this.analyser);
|
|
639
|
+
this.voiceAudioStreamSource.disconnect(this.voiceAnalyser);
|
|
637
640
|
} catch (err) {
|
|
638
641
|
$6a90fae7e584afd4$var$log.error("release", "audioStreamSource failed to disconnect", err);
|
|
639
642
|
}
|
|
@@ -1252,7 +1255,10 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
|
|
|
1252
1255
|
min: 0,
|
|
1253
1256
|
max: 0
|
|
1254
1257
|
};
|
|
1255
|
-
this.
|
|
1258
|
+
this.microphone = {
|
|
1259
|
+
device: null,
|
|
1260
|
+
muted: false
|
|
1261
|
+
};
|
|
1256
1262
|
this.roomId = "";
|
|
1257
1263
|
this.companyId = 0;
|
|
1258
1264
|
this.peerId = "";
|
|
@@ -1298,7 +1304,6 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
|
|
|
1298
1304
|
peerId: this.peerId,
|
|
1299
1305
|
profile: this.profile,
|
|
1300
1306
|
joinOptions: this.joinOptions,
|
|
1301
|
-
callId: undefined,
|
|
1302
1307
|
deviceState: this.getDevicesState(),
|
|
1303
1308
|
peers: peers
|
|
1304
1309
|
};
|
|
@@ -1427,10 +1432,6 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
|
|
|
1427
1432
|
});
|
|
1428
1433
|
open = true;
|
|
1429
1434
|
onOpen();
|
|
1430
|
-
if (this.joinOptions.recorder) {
|
|
1431
|
-
await this.joinRecorder();
|
|
1432
|
-
return;
|
|
1433
|
-
}
|
|
1434
1435
|
});
|
|
1435
1436
|
this.protoo.on("failed", ()=>{
|
|
1436
1437
|
err = new Error("failure");
|
|
@@ -1635,6 +1636,9 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
|
|
|
1635
1636
|
};
|
|
1636
1637
|
if (open) onOpen(err);
|
|
1637
1638
|
});
|
|
1639
|
+
this.dispatchEvent(new $1dedebd5ff3002eb$var$SnapcallEvent("initialized", {
|
|
1640
|
+
detail: initResult
|
|
1641
|
+
}));
|
|
1638
1642
|
return initResult;
|
|
1639
1643
|
}
|
|
1640
1644
|
closeWebrtcTransport(key) {
|
|
@@ -1719,9 +1723,9 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
|
|
|
1719
1723
|
}
|
|
1720
1724
|
}
|
|
1721
1725
|
}
|
|
1722
|
-
|
|
1726
|
+
acceptAccessRequest(id) {
|
|
1723
1727
|
if (!this.protoo) throw new Error("not connected");
|
|
1724
|
-
|
|
1728
|
+
return this.protoo.request("acceptAccessRequest", {
|
|
1725
1729
|
id: id
|
|
1726
1730
|
});
|
|
1727
1731
|
}
|
|
@@ -1732,9 +1736,9 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
|
|
|
1732
1736
|
token: stepToken
|
|
1733
1737
|
});
|
|
1734
1738
|
}
|
|
1735
|
-
|
|
1739
|
+
denyAccessRequest(id) {
|
|
1736
1740
|
if (!this.protoo) throw new Error("stream client not initiated");
|
|
1737
|
-
|
|
1741
|
+
return this.protoo.request("denyAccessRequest", {
|
|
1738
1742
|
id: id
|
|
1739
1743
|
});
|
|
1740
1744
|
}
|
|
@@ -1764,28 +1768,20 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
|
|
|
1764
1768
|
if (!this.protoo) throw new Error("stream client not initiated");
|
|
1765
1769
|
this.streamerMediasoup = await (0, $a62e7f17be5cf3a0$export$2e2bcd8739ae039).create(this.protoo, this.config);
|
|
1766
1770
|
// now we join
|
|
1767
|
-
const { peers: peers, videoRecordStarted: videoRecordStarted, videoRecording: videoRecording
|
|
1771
|
+
const { peers: peers, videoRecordStarted: videoRecordStarted, videoRecording: videoRecording } = await this.protoo.request("getRoomPeers");
|
|
1768
1772
|
this.peers = new Map(peers.map((peer)=>[
|
|
1769
|
-
peer.id
|
|
1773
|
+
peer.id,
|
|
1770
1774
|
{
|
|
1771
1775
|
...peer,
|
|
1772
|
-
peerId: peer.id
|
|
1776
|
+
peerId: peer.id
|
|
1773
1777
|
}
|
|
1774
1778
|
]));
|
|
1775
|
-
const callId = await this.getCallId();
|
|
1776
1779
|
this.dispatchEvent(new $1dedebd5ff3002eb$var$SnapcallEvent("enterRoom", {
|
|
1777
1780
|
detail: {
|
|
1778
|
-
waitingRequests: waitingRequests,
|
|
1779
1781
|
videoRecording: videoRecording,
|
|
1780
1782
|
videoRecordStarted: videoRecordStarted,
|
|
1781
1783
|
peerId: this.peerId,
|
|
1782
|
-
peers: peers.
|
|
1783
|
-
return {
|
|
1784
|
-
...peer,
|
|
1785
|
-
peerId: peer.id || peer.peerId
|
|
1786
|
-
};
|
|
1787
|
-
}),
|
|
1788
|
-
callId: callId,
|
|
1784
|
+
peers: Array.from(this.peers.values()),
|
|
1789
1785
|
plan: this.plan,
|
|
1790
1786
|
permissions: this.permissions
|
|
1791
1787
|
}
|
|
@@ -1796,7 +1792,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
|
|
|
1796
1792
|
// Consume Peers
|
|
1797
1793
|
peers.forEach((peer)=>{
|
|
1798
1794
|
this.consumePeer({
|
|
1799
|
-
peerId: peer.id
|
|
1795
|
+
peerId: peer.id,
|
|
1800
1796
|
producersData: peer.producersData
|
|
1801
1797
|
});
|
|
1802
1798
|
});
|
|
@@ -1804,7 +1800,6 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
|
|
|
1804
1800
|
async joinRecorder() {
|
|
1805
1801
|
if (!this.protoo) throw new Error("stream client not initiated");
|
|
1806
1802
|
this.streamerMediasoup = await (0, $a62e7f17be5cf3a0$export$2e2bcd8739ae039).create(this.protoo, this.config);
|
|
1807
|
-
const callId = await this.getCallId();
|
|
1808
1803
|
if (this.joinOptions.apiKey) this.setAgentIdentity({
|
|
1809
1804
|
apiKey: this.joinOptions.apiKey
|
|
1810
1805
|
});
|
|
@@ -1817,10 +1812,8 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
|
|
|
1817
1812
|
videoRecordStarted: false,
|
|
1818
1813
|
peerId: this.peerId,
|
|
1819
1814
|
peers: [],
|
|
1820
|
-
callId: callId,
|
|
1821
1815
|
plan: this.plan,
|
|
1822
|
-
permissions: this.permissions
|
|
1823
|
-
waitingRequests: []
|
|
1816
|
+
permissions: this.permissions
|
|
1824
1817
|
}
|
|
1825
1818
|
}));
|
|
1826
1819
|
}
|
|
@@ -1850,6 +1843,9 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
|
|
|
1850
1843
|
track: track
|
|
1851
1844
|
});
|
|
1852
1845
|
$1dedebd5ff3002eb$var$log.log("switchMicrophone", "switched Microphone");
|
|
1846
|
+
const trackSettings = track.getSettings();
|
|
1847
|
+
const device = this.devicesList.find((it)=>it.deviceId === trackSettings.deviceId);
|
|
1848
|
+
this.microphone.device = device || null;
|
|
1853
1849
|
} catch (error) {
|
|
1854
1850
|
$1dedebd5ff3002eb$var$log.error("switchMicrophone error", error);
|
|
1855
1851
|
await this.closeMicrophoneProducer();
|
|
@@ -1925,6 +1921,8 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
|
|
|
1925
1921
|
this.audioMedia = this.audioMedia || new (0, $93041e14f6aa3f24$export$22ddc20344c01547)();
|
|
1926
1922
|
const track = stream.getAudioTracks()[0];
|
|
1927
1923
|
this.audioMedia.addTrack("mic", track);
|
|
1924
|
+
const trackSettings = track.getSettings();
|
|
1925
|
+
const device = this.devicesList.find((it)=>it.deviceId === trackSettings.deviceId && it.kind === "audioinput");
|
|
1928
1926
|
const deviceType = "microphone";
|
|
1929
1927
|
const micProducer = await transport.produce({
|
|
1930
1928
|
track: this.audioMedia.getFinalTrack(),
|
|
@@ -1947,7 +1945,8 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
|
|
|
1947
1945
|
if (navigator.mediaDevices.ondevicechange === undefined) this.closeMicrophoneProducer();
|
|
1948
1946
|
});
|
|
1949
1947
|
this.micProducer = micProducer;
|
|
1950
|
-
this.
|
|
1948
|
+
this.microphone.device = device || null;
|
|
1949
|
+
this.microphone.muted = false;
|
|
1951
1950
|
const event = new $1dedebd5ff3002eb$var$SnapcallEvent("microphoneEnabled", {
|
|
1952
1951
|
detail: {}
|
|
1953
1952
|
});
|
|
@@ -1958,7 +1957,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
|
|
|
1958
1957
|
if (this.micProducer) {
|
|
1959
1958
|
this.onStopSpeak();
|
|
1960
1959
|
this.micProducer.pause();
|
|
1961
|
-
this.muted = true;
|
|
1960
|
+
this.microphone.muted = true;
|
|
1962
1961
|
const device = "microphone";
|
|
1963
1962
|
this.protoo?.notify("mute", {
|
|
1964
1963
|
device: device
|
|
@@ -1973,7 +1972,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
|
|
|
1973
1972
|
if (this.micProducer) {
|
|
1974
1973
|
this.micProducer.resume();
|
|
1975
1974
|
this.resolvePendingDeviceRequest("microphone", true);
|
|
1976
|
-
this.muted = false;
|
|
1975
|
+
this.microphone.muted = false;
|
|
1977
1976
|
const device = "microphone";
|
|
1978
1977
|
this.protoo?.notify("unmute", {
|
|
1979
1978
|
device: device
|
|
@@ -1985,7 +1984,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
|
|
|
1985
1984
|
}
|
|
1986
1985
|
}
|
|
1987
1986
|
async toggleMute() {
|
|
1988
|
-
if (this.muted) {
|
|
1987
|
+
if (this.microphone.muted) {
|
|
1989
1988
|
await this.unMuteMicrophone();
|
|
1990
1989
|
return {
|
|
1991
1990
|
muted: false
|
|
@@ -2262,11 +2261,11 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
|
|
|
2262
2261
|
...usedResolution
|
|
2263
2262
|
}
|
|
2264
2263
|
}));
|
|
2264
|
+
const trackSettings = mediaStream.getVideoTracks()[0].getSettings();
|
|
2265
|
+
if (trackSettings.deviceId) this.webcam.device = this.webcams.get(trackSettings.deviceId) || null;
|
|
2265
2266
|
if (config?.facingMode) try {
|
|
2266
|
-
|
|
2267
|
-
if (!capabilities?.facingMode || capabilities.facingMode.length === 0) throw new Error("no facing mod");
|
|
2267
|
+
if (!trackSettings.facingMode) throw new Error("no facing mode");
|
|
2268
2268
|
} catch {
|
|
2269
|
-
this.webcam.device = this.webcams.values().next().value;
|
|
2270
2269
|
this.webcam.facingMode = undefined;
|
|
2271
2270
|
}
|
|
2272
2271
|
if (this.useVideoBackground) {
|
|
@@ -2625,15 +2624,6 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
|
|
|
2625
2624
|
denyDeviceRequest(deviceType) {
|
|
2626
2625
|
this.resolvePendingDeviceRequest(deviceType, false, "user denied permission");
|
|
2627
2626
|
}
|
|
2628
|
-
async getCallId() {
|
|
2629
|
-
try {
|
|
2630
|
-
const { callId: callId } = await this.protoo?.request("getCallId");
|
|
2631
|
-
return callId;
|
|
2632
|
-
} catch (err) {
|
|
2633
|
-
$1dedebd5ff3002eb$var$log.error("getCallId", "Failed to get callId");
|
|
2634
|
-
throw err;
|
|
2635
|
-
}
|
|
2636
|
-
}
|
|
2637
2627
|
getConsumers() {
|
|
2638
2628
|
return this.consumers;
|
|
2639
2629
|
}
|
|
@@ -2644,10 +2634,12 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
|
|
|
2644
2634
|
return {
|
|
2645
2635
|
microphone: {
|
|
2646
2636
|
enabled: microphoneEnabled,
|
|
2647
|
-
muted: this.muted
|
|
2637
|
+
muted: this.microphone.muted,
|
|
2638
|
+
device: this.microphone.device
|
|
2648
2639
|
},
|
|
2649
2640
|
camera: {
|
|
2650
|
-
enabled: cameraEnabled
|
|
2641
|
+
enabled: cameraEnabled,
|
|
2642
|
+
device: this.webcam.device
|
|
2651
2643
|
},
|
|
2652
2644
|
screenshare: {
|
|
2653
2645
|
enabled: screenshareEnabled
|
|
@@ -2802,6 +2794,10 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$Str
|
|
|
2802
2794
|
}
|
|
2803
2795
|
})).json();
|
|
2804
2796
|
}
|
|
2797
|
+
getWaitingRequests() {
|
|
2798
|
+
if (!this.protoo) throw new Error("not connected");
|
|
2799
|
+
return this.protoo?.request("waitingRequests");
|
|
2800
|
+
}
|
|
2805
2801
|
}
|
|
2806
2802
|
|
|
2807
2803
|
|
|
@@ -3828,7 +3824,6 @@ const $24108d3063533819$export$d9f09da0f8d1c822 = ()=>/*#__PURE__*/ (0, $jQDcL$r
|
|
|
3828
3824
|
|
|
3829
3825
|
|
|
3830
3826
|
|
|
3831
|
-
|
|
3832
3827
|
const $daca1602b495441e$var$Link = ({ color: color })=>{
|
|
3833
3828
|
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
|
|
3834
3829
|
width: "24",
|
|
@@ -4409,7 +4404,6 @@ const $e38290b50aaba0e3$var$LinksharePopup = ()=>{
|
|
|
4409
4404
|
if (!linkshareInputValue) return;
|
|
4410
4405
|
setErrorMessage(null);
|
|
4411
4406
|
setStatus("loading");
|
|
4412
|
-
(0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("linkshareShare");
|
|
4413
4407
|
let url;
|
|
4414
4408
|
try {
|
|
4415
4409
|
url = new URL(linkshareInputValue);
|
|
@@ -5020,6 +5014,7 @@ const $bdd080364d556ec5$export$1712c8fcb05f49a6 = ({ modalState: modalState, ...
|
|
|
5020
5014
|
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$snapcalldesignsystem.Button), {
|
|
5021
5015
|
size: "sm",
|
|
5022
5016
|
disabled: requestRunning,
|
|
5017
|
+
type: "submit",
|
|
5023
5018
|
children: [
|
|
5024
5019
|
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.Send3Icon), {
|
|
5025
5020
|
size: 16,
|
|
@@ -5098,10 +5093,8 @@ const $e1930b467e7d8845$var$Header = ()=>{
|
|
|
5098
5093
|
(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).endCall();
|
|
5099
5094
|
};
|
|
5100
5095
|
const onScanQuickConnectClick = ()=>{
|
|
5101
|
-
if (permissions.find((permission)=>permission === "quick_connect"))
|
|
5102
|
-
|
|
5103
|
-
(0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("quickConnectClick");
|
|
5104
|
-
} else setBlockedFeaturePopupOpen(true);
|
|
5096
|
+
if (permissions.find((permission)=>permission === "quick_connect")) setIsQuickConnectPopupVisible(true);
|
|
5097
|
+
else setBlockedFeaturePopupOpen(true);
|
|
5105
5098
|
};
|
|
5106
5099
|
const onSettingsMenuClick = ()=>{
|
|
5107
5100
|
setIsSettingsMenuVisible(true);
|
|
@@ -7807,6 +7800,23 @@ const $88b23a8428e67b66$var$Video = ()=>{
|
|
|
7807
7800
|
}, [
|
|
7808
7801
|
dispatch
|
|
7809
7802
|
]);
|
|
7803
|
+
(0, $jQDcL$react.useEffect)(()=>{
|
|
7804
|
+
const initTiles = async ()=>{
|
|
7805
|
+
const getRoomPeersResult = await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getRoomPeers();
|
|
7806
|
+
const roomStreams = getRoomPeersResult.peers.map((peer)=>({
|
|
7807
|
+
id: peer.id,
|
|
7808
|
+
profile: peer.profile,
|
|
7809
|
+
muted: peer.muted
|
|
7810
|
+
}));
|
|
7811
|
+
dispatch({
|
|
7812
|
+
type: (0, $a4027a5418fcd07a$export$96a9662a3eda31f6).SET_STREAMS,
|
|
7813
|
+
payload: roomStreams
|
|
7814
|
+
});
|
|
7815
|
+
};
|
|
7816
|
+
initTiles();
|
|
7817
|
+
}, [
|
|
7818
|
+
dispatch
|
|
7819
|
+
]);
|
|
7810
7820
|
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $66c45b20958474ec$export$b302ef9d8310f71), {
|
|
7811
7821
|
ref: videosContainerRef,
|
|
7812
7822
|
direction: orientation === "portrait" ? "column" : "row",
|
|
@@ -7860,7 +7870,6 @@ var $88b23a8428e67b66$export$2e2bcd8739ae039 = $88b23a8428e67b66$var$Video;
|
|
|
7860
7870
|
|
|
7861
7871
|
|
|
7862
7872
|
|
|
7863
|
-
|
|
7864
7873
|
const $f09948cc22419e6e$var$HangUp = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
|
|
7865
7874
|
width: "25",
|
|
7866
7875
|
height: "24",
|
|
@@ -7916,7 +7925,6 @@ var $ec8eb252693ca260$export$2e2bcd8739ae039 = $ec8eb252693ca260$var$Rotate;
|
|
|
7916
7925
|
|
|
7917
7926
|
|
|
7918
7927
|
|
|
7919
|
-
|
|
7920
7928
|
const $3b6953f72db3bb17$var$YoutubeIcon = ({ color: color })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
|
|
7921
7929
|
width: "24",
|
|
7922
7930
|
height: "25",
|
|
@@ -8031,12 +8039,9 @@ const $9dfd9e2286cffa66$var$HighlightButton = ()=>{
|
|
|
8031
8039
|
if (permissions.find((permission)=>permission === "screen_sharing")) {
|
|
8032
8040
|
setIsHighlightMenuOpen(false);
|
|
8033
8041
|
try {
|
|
8034
|
-
(0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("screenshareClick");
|
|
8035
8042
|
await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableScreenshare();
|
|
8036
|
-
(0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("enableScreenshare");
|
|
8037
8043
|
} catch (screenshareError) {
|
|
8038
8044
|
console.warn(screenshareError);
|
|
8039
|
-
(0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("screenshareCancel");
|
|
8040
8045
|
(0, ($parcel$interopDefault($jQDcL$reacthottoast)))(t("notifications.screensharingError"), {
|
|
8041
8046
|
className: "error"
|
|
8042
8047
|
});
|
|
@@ -8046,13 +8051,11 @@ const $9dfd9e2286cffa66$var$HighlightButton = ()=>{
|
|
|
8046
8051
|
const onYoutubeClick = ()=>{
|
|
8047
8052
|
setIsHighlightMenuOpen(false);
|
|
8048
8053
|
setIsYoutubePopupVisible(true);
|
|
8049
|
-
(0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("youtubeClick");
|
|
8050
8054
|
};
|
|
8051
8055
|
const onLinkshareClick = ()=>{
|
|
8052
8056
|
if (permissions.find((permission)=>permission === "share_link")) {
|
|
8053
8057
|
setIsHighlightMenuOpen(false);
|
|
8054
8058
|
setIsLinksharePopupVisible(true);
|
|
8055
|
-
(0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("linkshareClick");
|
|
8056
8059
|
} else setBlockedFeaturePopupOpen(true);
|
|
8057
8060
|
};
|
|
8058
8061
|
const menuCategories = [
|
|
@@ -8121,13 +8124,8 @@ const $a21b2aa064cb6c32$var$ControlBar = ()=>{
|
|
|
8121
8124
|
const onMicrophoneClick = async ()=>{
|
|
8122
8125
|
try {
|
|
8123
8126
|
const devicesState = (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getDevicesState();
|
|
8124
|
-
if (devicesState.microphone.enabled)
|
|
8125
|
-
|
|
8126
|
-
await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).toggleMute();
|
|
8127
|
-
} else {
|
|
8128
|
-
(0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("enableMicrophone");
|
|
8129
|
-
await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableMicrophone();
|
|
8130
|
-
}
|
|
8127
|
+
if (devicesState.microphone.enabled) await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).toggleMute();
|
|
8128
|
+
else await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableMicrophone();
|
|
8131
8129
|
} catch (muteError) {
|
|
8132
8130
|
console.warn(muteError);
|
|
8133
8131
|
(0, ($parcel$interopDefault($jQDcL$reacthottoast)))(t("notifications.microphoneError"), {
|
|
@@ -8137,12 +8135,9 @@ const $a21b2aa064cb6c32$var$ControlBar = ()=>{
|
|
|
8137
8135
|
};
|
|
8138
8136
|
const onCameraClick = async ()=>{
|
|
8139
8137
|
try {
|
|
8140
|
-
if (streaming)
|
|
8141
|
-
|
|
8142
|
-
await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).disableVideo();
|
|
8143
|
-
} else {
|
|
8138
|
+
if (streaming) await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).disableVideo();
|
|
8139
|
+
else {
|
|
8144
8140
|
setIsCameraLoading(true);
|
|
8145
|
-
(0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("enableCamera");
|
|
8146
8141
|
await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableVideo();
|
|
8147
8142
|
}
|
|
8148
8143
|
} catch (cameraError) {
|
|
@@ -8156,7 +8151,6 @@ const $a21b2aa064cb6c32$var$ControlBar = ()=>{
|
|
|
8156
8151
|
};
|
|
8157
8152
|
const onRotateClick = async ()=>{
|
|
8158
8153
|
try {
|
|
8159
|
-
(0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("rotateCamera");
|
|
8160
8154
|
await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).rotateVideo();
|
|
8161
8155
|
} catch (rotateError) {
|
|
8162
8156
|
console.warn(rotateError);
|
|
@@ -9387,7 +9381,6 @@ var $7d4fa7ceb4c29739$export$2e2bcd8739ae039 = $7d4fa7ceb4c29739$var$Menu;
|
|
|
9387
9381
|
|
|
9388
9382
|
|
|
9389
9383
|
|
|
9390
|
-
|
|
9391
9384
|
const $219bb3131afe1272$var$modalHeight = (desktop)=>desktop ? "215px" : "227px";
|
|
9392
9385
|
const $219bb3131afe1272$export$b679a9a7caefa4b1 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
|
|
9393
9386
|
position: absolute;
|
|
@@ -9538,7 +9531,6 @@ const $696ded7a5399bcd4$var$YoutubePopup = ()=>{
|
|
|
9538
9531
|
const onShareClick = (event)=>{
|
|
9539
9532
|
event.preventDefault();
|
|
9540
9533
|
setErrorMessage(null);
|
|
9541
|
-
(0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).event("youtubeShare");
|
|
9542
9534
|
const [, videoId] = youtubeInputValue.match($696ded7a5399bcd4$var$youtubeIDRegExp) || [];
|
|
9543
9535
|
if (videoId) {
|
|
9544
9536
|
dispatch({
|
|
@@ -9777,7 +9769,7 @@ const $32119bad9969854e$export$1058440c16b3a127 = (0, ($parcel$interopDefault($j
|
|
|
9777
9769
|
}
|
|
9778
9770
|
`;
|
|
9779
9771
|
const $32119bad9969854e$export$dfc919b3320e9811 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
|
|
9780
|
-
background-color: ${({ theme: theme })=>theme.primaryColor};
|
|
9772
|
+
background-color: ${({ theme: theme })=>theme.primaryColor} !important;
|
|
9781
9773
|
padding: 8px 18px;
|
|
9782
9774
|
width: 280px;
|
|
9783
9775
|
height: 46px;
|
|
@@ -10293,55 +10285,36 @@ var $5f509eaff0d9c05a$export$2e2bcd8739ae039 = $5f509eaff0d9c05a$var$Settings;
|
|
|
10293
10285
|
|
|
10294
10286
|
|
|
10295
10287
|
|
|
10296
|
-
const $
|
|
10297
|
-
display: flex;
|
|
10298
|
-
flex: 1;
|
|
10299
|
-
flex-direction: column;
|
|
10300
|
-
justify-content: center;
|
|
10301
|
-
align-items: center;
|
|
10302
|
-
background-color: #000;
|
|
10303
|
-
color: #fff;
|
|
10304
|
-
padding-top: 70px;
|
|
10305
|
-
`;
|
|
10306
|
-
const $bbe4b943c376008e$export$51071a7ce784448 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).span`
|
|
10307
|
-
font-size: 60px;
|
|
10308
|
-
`;
|
|
10309
|
-
const $bbe4b943c376008e$export$eebc018855fb0cb6 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).h1`
|
|
10310
|
-
font-size: 28px;
|
|
10311
|
-
font-weight: 600;
|
|
10312
|
-
line-height: 33.6px;
|
|
10313
|
-
`;
|
|
10314
|
-
const $bbe4b943c376008e$export$f4e7b895a81715e9 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).p`
|
|
10315
|
-
font-size: 22px;
|
|
10316
|
-
font-weight: 500;
|
|
10317
|
-
line-height: 26.4px;
|
|
10318
|
-
margin: 0;
|
|
10319
|
-
`;
|
|
10320
|
-
const $bbe4b943c376008e$export$3a4deda42b6182b7 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
|
|
10321
|
-
background-color: ${({ theme: theme })=>theme.primaryColor};
|
|
10322
|
-
border: none;
|
|
10323
|
-
border-radius: 50px;
|
|
10324
|
-
padding: 12px 18px;
|
|
10325
|
-
font-size: 16px;
|
|
10326
|
-
font-weight: 600;
|
|
10327
|
-
line-height: 18px;
|
|
10328
|
-
color: #fff;
|
|
10329
|
-
margin-top: 30px;
|
|
10330
|
-
`;
|
|
10331
|
-
|
|
10332
|
-
|
|
10333
|
-
const $3d1bfd8f074b99b1$var$EndView = ()=>{
|
|
10288
|
+
const $3d1bfd8f074b99b1$var$EndView = ({ state: state })=>{
|
|
10334
10289
|
const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
|
|
10335
|
-
const {
|
|
10336
|
-
const
|
|
10337
|
-
|
|
10338
|
-
|
|
10339
|
-
|
|
10290
|
+
const { setStreamState: setStreamState, options: options } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
|
|
10291
|
+
const statesData = {
|
|
10292
|
+
ended: {
|
|
10293
|
+
title: t("endView.callLeft"),
|
|
10294
|
+
description: t("endView.ifMistakeRejoin"),
|
|
10295
|
+
icon: "\uD83D\uDC4B"
|
|
10296
|
+
},
|
|
10297
|
+
terminated: {
|
|
10298
|
+
title: t("endView.callEnded"),
|
|
10299
|
+
description: t("endView.callNoLongerActive"),
|
|
10300
|
+
icon: "\u260E\uFE0F"
|
|
10301
|
+
},
|
|
10302
|
+
expired: {
|
|
10303
|
+
title: t("endView.invalidLink"),
|
|
10304
|
+
description: t("endView.invalidOrExpired"),
|
|
10305
|
+
icon: "\uD83D\uDEAB"
|
|
10306
|
+
},
|
|
10307
|
+
full: {
|
|
10308
|
+
title: t("endView.full"),
|
|
10309
|
+
description: t("endView.fullDescription"),
|
|
10310
|
+
icon: "\uD83D\uDD12"
|
|
10311
|
+
}
|
|
10312
|
+
};
|
|
10313
|
+
const stateData = statesData[state];
|
|
10340
10314
|
const onGoBackClick = async ()=>{
|
|
10341
10315
|
try {
|
|
10342
10316
|
setStreamState("loading");
|
|
10343
10317
|
await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).init();
|
|
10344
|
-
await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).joinRoom();
|
|
10345
10318
|
if (options.controls?.microphone?.enabled) (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableMicrophone().catch((error)=>{
|
|
10346
10319
|
console.error("enable microphone", error);
|
|
10347
10320
|
});
|
|
@@ -10356,33 +10329,79 @@ const $3d1bfd8f074b99b1$var$EndView = ()=>{
|
|
|
10356
10329
|
(0, $jQDcL$react.useEffect)(()=>{
|
|
10357
10330
|
if (document.pictureInPictureElement) document.exitPictureInPicture();
|
|
10358
10331
|
}, []);
|
|
10359
|
-
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)(
|
|
10332
|
+
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
10333
|
+
className: "flex flex-col w-full h-full bg-gray-25 dark-theme p-4 md:p-6",
|
|
10360
10334
|
children: [
|
|
10361
|
-
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.
|
|
10362
|
-
children:
|
|
10363
|
-
|
|
10364
|
-
|
|
10365
|
-
|
|
10335
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
|
|
10336
|
+
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $6d8b37b4bd2444ef$export$194e6397ae7c260), {})
|
|
10337
|
+
}),
|
|
10338
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
|
|
10339
|
+
className: "flex flex-1 justify-center items-center",
|
|
10340
|
+
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
10341
|
+
className: "flex flex-col items-center gap-6 w-full p-4 md:w-[500px] md:p-6 bg-gray-50 border-2 border-gray-100 rounded-lg",
|
|
10342
|
+
children: [
|
|
10343
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
|
|
10344
|
+
className: "text-4xl",
|
|
10345
|
+
children: stateData.icon
|
|
10346
|
+
}),
|
|
10347
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
10348
|
+
className: "flex flex-col items-center gap-1",
|
|
10349
|
+
children: [
|
|
10350
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("h2", {
|
|
10351
|
+
className: "text-2xl font-medium text-gray-1000",
|
|
10352
|
+
children: stateData.title
|
|
10353
|
+
}),
|
|
10354
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("p", {
|
|
10355
|
+
className: "text-sm text-gray-700",
|
|
10356
|
+
children: stateData.description
|
|
10357
|
+
})
|
|
10358
|
+
]
|
|
10359
|
+
}),
|
|
10360
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
10361
|
+
className: "flex gap-2",
|
|
10362
|
+
children: [
|
|
10363
|
+
state === "ended" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$snapcalldesignsystem.Button), {
|
|
10364
|
+
variant: "outline",
|
|
10365
|
+
size: "sm",
|
|
10366
|
+
className: "bg-gray-25 select-none",
|
|
10367
|
+
onClick: onGoBackClick,
|
|
10368
|
+
children: [
|
|
10369
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.FlipBackwardIcon), {
|
|
10370
|
+
size: 16,
|
|
10371
|
+
className: "text-gray-1000"
|
|
10372
|
+
}),
|
|
10373
|
+
t("endView.goBack")
|
|
10374
|
+
]
|
|
10375
|
+
}),
|
|
10376
|
+
options.apiKey && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("a", {
|
|
10377
|
+
href: "https://app.snapcall.io",
|
|
10378
|
+
target: "_blank",
|
|
10379
|
+
rel: "noreferrer",
|
|
10380
|
+
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$snapcalldesignsystem.Button), {
|
|
10381
|
+
variant: "outline",
|
|
10382
|
+
size: "sm",
|
|
10383
|
+
className: "bg-gray-25 select-none",
|
|
10384
|
+
children: [
|
|
10385
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.ArrowUpRightIcon), {
|
|
10386
|
+
size: 16,
|
|
10387
|
+
className: "text-gray-1000"
|
|
10388
|
+
}),
|
|
10389
|
+
t("endView.openDashboard")
|
|
10390
|
+
]
|
|
10391
|
+
})
|
|
10392
|
+
})
|
|
10393
|
+
]
|
|
10394
|
+
})
|
|
10395
|
+
]
|
|
10396
|
+
})
|
|
10366
10397
|
}),
|
|
10367
|
-
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)(
|
|
10398
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
10399
|
+
className: "flex gap-2 justify-center items-center text-xs text-gray-1000 [&>svg]:h-4 [&>svg]:w-auto",
|
|
10368
10400
|
children: [
|
|
10369
|
-
|
|
10370
|
-
|
|
10371
|
-
expired && t("endView.tooLate"),
|
|
10372
|
-
full && t("endView.full")
|
|
10401
|
+
t("shareLink.poweredBy"),
|
|
10402
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $6d8b37b4bd2444ef$export$194e6397ae7c260), {})
|
|
10373
10403
|
]
|
|
10374
|
-
})
|
|
10375
|
-
expired && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $bbe4b943c376008e$export$f4e7b895a81715e9), {
|
|
10376
|
-
children: t("endView.callIsOver")
|
|
10377
|
-
}),
|
|
10378
|
-
full && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $bbe4b943c376008e$export$f4e7b895a81715e9), {
|
|
10379
|
-
children: t("endView.fullDescription")
|
|
10380
|
-
}),
|
|
10381
|
-
(ended || full) && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $bbe4b943c376008e$export$3a4deda42b6182b7), {
|
|
10382
|
-
onClick: onGoBackClick,
|
|
10383
|
-
children: t("endView.goBack")
|
|
10384
|
-
}),
|
|
10385
|
-
!full && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $65bf10a117819168$export$ad5f39c592532e2d), {})
|
|
10404
|
+
})
|
|
10386
10405
|
]
|
|
10387
10406
|
});
|
|
10388
10407
|
};
|
|
@@ -11029,6 +11048,17 @@ const $c3d5253d9d597eb5$export$494039379563c94d = async (options)=>{
|
|
|
11029
11048
|
|
|
11030
11049
|
|
|
11031
11050
|
|
|
11051
|
+
const $67040444b405b263$export$5964c316e853650f = ()=>{
|
|
11052
|
+
const renderRef = (0, $jQDcL$react.useRef)(true);
|
|
11053
|
+
if (renderRef.current === true) {
|
|
11054
|
+
renderRef.current = false;
|
|
11055
|
+
return true;
|
|
11056
|
+
}
|
|
11057
|
+
return renderRef.current;
|
|
11058
|
+
};
|
|
11059
|
+
|
|
11060
|
+
|
|
11061
|
+
|
|
11032
11062
|
const $e3bb2c5d0e5b45b5$export$20f257fc407da7a3 = (0, $jQDcL$styledcomponents.createGlobalStyle)`
|
|
11033
11063
|
::-webkit-scrollbar {
|
|
11034
11064
|
display: none;
|
|
@@ -11135,6 +11165,30 @@ const $30ad72ee44a52bf1$export$7f78f4f57f8852d5 = (seconds)=>{
|
|
|
11135
11165
|
|
|
11136
11166
|
|
|
11137
11167
|
|
|
11168
|
+
|
|
11169
|
+
|
|
11170
|
+
|
|
11171
|
+
const $8dfcca373a03b9e8$export$5a5695b638d078e7 = ()=>{
|
|
11172
|
+
const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
|
|
11173
|
+
const { toast: toast } = (0, $jQDcL$snapcalldesignsystem.useToast)();
|
|
11174
|
+
const reportError = (0, $jQDcL$react.useCallback)(({ code: code, error: error })=>{
|
|
11175
|
+
toast({
|
|
11176
|
+
title: t("notifications.error"),
|
|
11177
|
+
description: t("notifications.errorOccuredCode", {
|
|
11178
|
+
code: code
|
|
11179
|
+
}),
|
|
11180
|
+
variant: "destructive",
|
|
11181
|
+
duration: Infinity
|
|
11182
|
+
});
|
|
11183
|
+
console.error(`An error occured (${code}): ${error || "/"}`);
|
|
11184
|
+
}, [
|
|
11185
|
+
toast,
|
|
11186
|
+
t
|
|
11187
|
+
]);
|
|
11188
|
+
return reportError;
|
|
11189
|
+
};
|
|
11190
|
+
|
|
11191
|
+
|
|
11138
11192
|
const $ccbd73eb953b0bd0$var$fileToDataUrl = (file)=>{
|
|
11139
11193
|
return new Promise((resolve, reject)=>{
|
|
11140
11194
|
const reader = new FileReader();
|
|
@@ -11146,7 +11200,7 @@ const $ccbd73eb953b0bd0$var$fileToDataUrl = (file)=>{
|
|
|
11146
11200
|
const $ccbd73eb953b0bd0$export$b3fd96a52c80b3af = ()=>{
|
|
11147
11201
|
const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
|
|
11148
11202
|
const { openAssetsModal: openAssetsModal, addAsset: addAsset, setIncomingAsset: setIncomingAsset, isRecording: isRecording } = (0, $098350f721a0bb52$export$2174f25d572f9f31)();
|
|
11149
|
-
const
|
|
11203
|
+
const reportError = (0, $8dfcca373a03b9e8$export$5a5695b638d078e7)();
|
|
11150
11204
|
const fileInputRef = (0, $jQDcL$react.useRef)(null);
|
|
11151
11205
|
const isMedium = window.matchMedia("(min-width: 768px)").matches;
|
|
11152
11206
|
const onUploadClick = async (event)=>{
|
|
@@ -11169,13 +11223,12 @@ const $ccbd73eb953b0bd0$export$b3fd96a52c80b3af = ()=>{
|
|
|
11169
11223
|
createdAt: createdAt
|
|
11170
11224
|
});
|
|
11171
11225
|
openAssetsModal();
|
|
11172
|
-
} catch (
|
|
11173
|
-
|
|
11174
|
-
|
|
11175
|
-
|
|
11226
|
+
} catch (error) {
|
|
11227
|
+
reportError({
|
|
11228
|
+
code: "UPLD_1",
|
|
11229
|
+
error: error
|
|
11176
11230
|
});
|
|
11177
11231
|
setIncomingAsset(null);
|
|
11178
|
-
console.error(err);
|
|
11179
11232
|
}
|
|
11180
11233
|
}
|
|
11181
11234
|
};
|
|
@@ -11184,7 +11237,7 @@ const $ccbd73eb953b0bd0$export$b3fd96a52c80b3af = ()=>{
|
|
|
11184
11237
|
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("input", {
|
|
11185
11238
|
ref: fileInputRef,
|
|
11186
11239
|
type: "file",
|
|
11187
|
-
accept: ".jpg,.JPG,.png,.PNG",
|
|
11240
|
+
accept: ".jpg,.JPG,.png,.PNG,.jpeg,.JPEG",
|
|
11188
11241
|
className: "hidden",
|
|
11189
11242
|
onChange: onUploadClick
|
|
11190
11243
|
}),
|
|
@@ -11207,75 +11260,6 @@ const $ccbd73eb953b0bd0$export$b3fd96a52c80b3af = ()=>{
|
|
|
11207
11260
|
};
|
|
11208
11261
|
|
|
11209
11262
|
|
|
11210
|
-
const $48ac80173d63a751$var$browser = (0, ($parcel$interopDefault($jQDcL$bowser))).parse(window.navigator.userAgent);
|
|
11211
|
-
const $48ac80173d63a751$export$aa00db7a33d4c484 = ()=>{
|
|
11212
|
-
const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
|
|
11213
|
-
const { mode: mode, hasVideo: hasVideo, isRecording: isRecording, openQRCodeModal: openQRCodeModal } = (0, $098350f721a0bb52$export$2174f25d572f9f31)();
|
|
11214
|
-
const [showQrCodeToast, setShowQrCodeToast] = (0, $jQDcL$react.useState)($48ac80173d63a751$var$browser.platform.type === "desktop");
|
|
11215
|
-
const [timer, setTimer] = (0, $jQDcL$react.useState)(0);
|
|
11216
|
-
const timerInterval = (0, $jQDcL$react.useRef)(0);
|
|
11217
|
-
const isMedium = window.matchMedia("(min-width: 768px)").matches;
|
|
11218
|
-
(0, $jQDcL$react.useEffect)(()=>{
|
|
11219
|
-
if (isRecording) {
|
|
11220
|
-
clearInterval(timerInterval.current);
|
|
11221
|
-
timerInterval.current = window.setInterval(()=>setTimer((t)=>t + 1), 1000);
|
|
11222
|
-
} else {
|
|
11223
|
-
clearInterval(timerInterval.current);
|
|
11224
|
-
setTimer(0);
|
|
11225
|
-
}
|
|
11226
|
-
}, [
|
|
11227
|
-
isRecording
|
|
11228
|
-
]);
|
|
11229
|
-
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
11230
|
-
className: "flex items-start justify-between z-50",
|
|
11231
|
-
children: [
|
|
11232
|
-
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $ccbd73eb953b0bd0$export$b3fd96a52c80b3af), {}),
|
|
11233
|
-
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
11234
|
-
className: "flex flex-col items-center gap-4",
|
|
11235
|
-
children: [
|
|
11236
|
-
mode !== "photo" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
11237
|
-
className: (0, ($parcel$interopDefault($jQDcL$classnames)))("flex items-center gap-2.5 px-3.5 py-2 text-md text-white font-medium border rounded-full", hasVideo ? "bg-gray-25/50 border-white/10 backdrop-blur-lg" : "bg-gray-50 border-gray-200"),
|
|
11238
|
-
children: [
|
|
11239
|
-
isRecording && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
|
|
11240
|
-
className: "w-2 h-2 rounded-full bg-red-700 pulse-red-700"
|
|
11241
|
-
}),
|
|
11242
|
-
(0, $30ad72ee44a52bf1$export$7f78f4f57f8852d5)(timer)
|
|
11243
|
-
]
|
|
11244
|
-
}),
|
|
11245
|
-
showQrCodeToast && mode !== "screen" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.RawToast), {
|
|
11246
|
-
className: "bg-gray-25",
|
|
11247
|
-
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.ToastContent), {
|
|
11248
|
-
title: t("recorder.switchToMobileTitle"),
|
|
11249
|
-
icon: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.QrCode1Icon), {
|
|
11250
|
-
className: "text-white"
|
|
11251
|
-
}),
|
|
11252
|
-
onClose: ()=>setShowQrCodeToast(false),
|
|
11253
|
-
actions: [
|
|
11254
|
-
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.ToastAction), {
|
|
11255
|
-
altText: t("recorder.showQrCode"),
|
|
11256
|
-
variant: "primary",
|
|
11257
|
-
onClick: openQRCodeModal,
|
|
11258
|
-
children: t("recorder.showQrCode")
|
|
11259
|
-
}, "showQrCode")
|
|
11260
|
-
]
|
|
11261
|
-
})
|
|
11262
|
-
})
|
|
11263
|
-
]
|
|
11264
|
-
}),
|
|
11265
|
-
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$snapcalldesignsystem.Button), {
|
|
11266
|
-
className: "bg-gray-25/50 hover:bg-gray-25/60 active:bg-gray-25/70 rounded-full invisible",
|
|
11267
|
-
icon: !isMedium,
|
|
11268
|
-
children: [
|
|
11269
|
-
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.Settings1Icon), {
|
|
11270
|
-
size: 18,
|
|
11271
|
-
className: "text-white"
|
|
11272
|
-
}),
|
|
11273
|
-
isMedium && t("settings.title")
|
|
11274
|
-
]
|
|
11275
|
-
})
|
|
11276
|
-
]
|
|
11277
|
-
});
|
|
11278
|
-
};
|
|
11279
11263
|
|
|
11280
11264
|
|
|
11281
11265
|
|
|
@@ -11284,52 +11268,296 @@ const $48ac80173d63a751$export$aa00db7a33d4c484 = ()=>{
|
|
|
11284
11268
|
|
|
11285
11269
|
|
|
11286
11270
|
|
|
11287
|
-
const $
|
|
11288
|
-
|
|
11289
|
-
|
|
11290
|
-
|
|
11271
|
+
const $9277d94be7423d29$var$SheetDialogContext = /*#__PURE__*/ (0, $jQDcL$react.createContext)({
|
|
11272
|
+
type: "dialog",
|
|
11273
|
+
showClose: true
|
|
11274
|
+
});
|
|
11275
|
+
const $9277d94be7423d29$export$56d72fe406945300 = ({ type: type = "dialog", showClose: showClose = true, children: children })=>{
|
|
11276
|
+
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($9277d94be7423d29$var$SheetDialogContext.Provider, {
|
|
11277
|
+
value: {
|
|
11278
|
+
type: type,
|
|
11279
|
+
showClose: showClose
|
|
11280
|
+
},
|
|
11281
|
+
children: children
|
|
11291
11282
|
});
|
|
11292
|
-
|
|
11293
|
-
|
|
11294
|
-
})
|
|
11295
|
-
|
|
11296
|
-
|
|
11297
|
-
|
|
11298
|
-
|
|
11299
|
-
|
|
11300
|
-
|
|
11301
|
-
|
|
11302
|
-
|
|
11303
|
-
|
|
11304
|
-
|
|
11305
|
-
|
|
11306
|
-
|
|
11307
|
-
|
|
11308
|
-
|
|
11309
|
-
|
|
11310
|
-
|
|
11311
|
-
|
|
11312
|
-
|
|
11313
|
-
|
|
11314
|
-
|
|
11315
|
-
|
|
11316
|
-
|
|
11317
|
-
|
|
11318
|
-
|
|
11319
|
-
|
|
11320
|
-
|
|
11321
|
-
|
|
11322
|
-
|
|
11323
|
-
|
|
11324
|
-
|
|
11325
|
-
|
|
11326
|
-
|
|
11327
|
-
|
|
11328
|
-
|
|
11329
|
-
|
|
11330
|
-
|
|
11331
|
-
|
|
11332
|
-
|
|
11283
|
+
};
|
|
11284
|
+
const $9277d94be7423d29$export$e943710ec76a9465 = (props)=>{
|
|
11285
|
+
const { type: type } = (0, $jQDcL$react.useContext)($9277d94be7423d29$var$SheetDialogContext);
|
|
11286
|
+
if (type === "dialog") return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.Dialog), {
|
|
11287
|
+
...props
|
|
11288
|
+
});
|
|
11289
|
+
else return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.Sheet), {
|
|
11290
|
+
...props
|
|
11291
|
+
});
|
|
11292
|
+
};
|
|
11293
|
+
const $9277d94be7423d29$export$76259cff208cccae = (props)=>{
|
|
11294
|
+
const { type: type } = (0, $jQDcL$react.useContext)($9277d94be7423d29$var$SheetDialogContext);
|
|
11295
|
+
if (type === "dialog") return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.DialogTrigger), {
|
|
11296
|
+
...props
|
|
11297
|
+
});
|
|
11298
|
+
else return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SheetTrigger), {
|
|
11299
|
+
...props
|
|
11300
|
+
});
|
|
11301
|
+
};
|
|
11302
|
+
const $9277d94be7423d29$export$ae085f72dad73e20 = (props)=>{
|
|
11303
|
+
const { type: type, showClose: showClose } = (0, $jQDcL$react.useContext)($9277d94be7423d29$var$SheetDialogContext);
|
|
11304
|
+
if (type === "dialog") return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.DialogHeader), {
|
|
11305
|
+
...props
|
|
11306
|
+
});
|
|
11307
|
+
else {
|
|
11308
|
+
const { children: children, ...other } = props;
|
|
11309
|
+
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$snapcalldesignsystem.SheetHeader), {
|
|
11310
|
+
...other,
|
|
11311
|
+
children: [
|
|
11312
|
+
children,
|
|
11313
|
+
showClose && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SheetClose), {})
|
|
11314
|
+
]
|
|
11315
|
+
});
|
|
11316
|
+
}
|
|
11317
|
+
};
|
|
11318
|
+
const $9277d94be7423d29$export$4cf67c05c32f37ce = (props)=>{
|
|
11319
|
+
const { type: type, showClose: showClose } = (0, $jQDcL$react.useContext)($9277d94be7423d29$var$SheetDialogContext);
|
|
11320
|
+
if (type === "dialog") return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.DialogContent), {
|
|
11321
|
+
showClose: showClose,
|
|
11322
|
+
...props
|
|
11323
|
+
});
|
|
11324
|
+
else return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SheetContent), {
|
|
11325
|
+
side: "bottom",
|
|
11326
|
+
...props
|
|
11327
|
+
});
|
|
11328
|
+
};
|
|
11329
|
+
const $9277d94be7423d29$export$5e9fc1357420b7eb = (props)=>{
|
|
11330
|
+
const { type: type } = (0, $jQDcL$react.useContext)($9277d94be7423d29$var$SheetDialogContext);
|
|
11331
|
+
if (type === "dialog") return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.DialogTitle), {
|
|
11332
|
+
...props
|
|
11333
|
+
});
|
|
11334
|
+
else return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SheetTitle), {
|
|
11335
|
+
...props
|
|
11336
|
+
});
|
|
11337
|
+
};
|
|
11338
|
+
const $9277d94be7423d29$export$51c201eb88940e0f = (props)=>{
|
|
11339
|
+
const { type: type } = (0, $jQDcL$react.useContext)($9277d94be7423d29$var$SheetDialogContext);
|
|
11340
|
+
if (type === "dialog") return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.DialogDescription), {
|
|
11341
|
+
...props
|
|
11342
|
+
});
|
|
11343
|
+
else return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SheetDescription), {
|
|
11344
|
+
...props
|
|
11345
|
+
});
|
|
11346
|
+
};
|
|
11347
|
+
const $9277d94be7423d29$export$2cf3a8077f66b4f6 = (props)=>{
|
|
11348
|
+
const { type: type } = (0, $jQDcL$react.useContext)($9277d94be7423d29$var$SheetDialogContext);
|
|
11349
|
+
if (type === "dialog") return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.DialogDescription), {
|
|
11350
|
+
...props
|
|
11351
|
+
});
|
|
11352
|
+
else return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SheetDescription), {
|
|
11353
|
+
...props
|
|
11354
|
+
});
|
|
11355
|
+
};
|
|
11356
|
+
|
|
11357
|
+
|
|
11358
|
+
|
|
11359
|
+
|
|
11360
|
+
|
|
11361
|
+
const $f718706dd298ae4f$export$3315c1cc2d5487ba = ({ title: title, icon: icon, isActive: isActive, onClick: onClick })=>{
|
|
11362
|
+
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
11363
|
+
className: (0, ($parcel$interopDefault($jQDcL$classnames)))("flex items-center justify-center md:justify-start gap-2.5 p-2 rounded-lg cursor-pointer select-none", "bg-gray-50 hover:bg-gray-50 border border-gray-200 md:border-0", isActive ? "md:bg-gray-50" : "md:bg-transparent"),
|
|
11364
|
+
onClick: onClick,
|
|
11365
|
+
children: [
|
|
11366
|
+
icon && /*#__PURE__*/ (0, $jQDcL$react.cloneElement)(icon, {
|
|
11367
|
+
size: 18,
|
|
11368
|
+
className: (0, ($parcel$interopDefault($jQDcL$classnames)))("text-gray-1000 shrink-0", icon.props.className)
|
|
11369
|
+
}),
|
|
11370
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("label", {
|
|
11371
|
+
className: "text-sm font-semibold truncate cursor-pointer",
|
|
11372
|
+
children: title
|
|
11373
|
+
})
|
|
11374
|
+
]
|
|
11375
|
+
});
|
|
11376
|
+
};
|
|
11377
|
+
|
|
11378
|
+
|
|
11379
|
+
|
|
11380
|
+
|
|
11381
|
+
|
|
11382
|
+
|
|
11383
|
+
const $01fe82556a919c03$export$50a2cb5c859687d3 = ({ id: id, title: title, description: description, action: action })=>{
|
|
11384
|
+
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
11385
|
+
className: "flex flex-col gap-1 items-start md:flex-row md:gap-8 md:items-center",
|
|
11386
|
+
children: [
|
|
11387
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
11388
|
+
className: "flex flex-col gap-1 flex-1",
|
|
11389
|
+
children: [
|
|
11390
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("label", {
|
|
11391
|
+
className: "text-sm font-medium truncate",
|
|
11392
|
+
htmlFor: id,
|
|
11393
|
+
children: title
|
|
11394
|
+
}),
|
|
11395
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("p", {
|
|
11396
|
+
className: "text-sm text-gray-700 truncate hidden md:block",
|
|
11397
|
+
children: description
|
|
11398
|
+
})
|
|
11399
|
+
]
|
|
11400
|
+
}),
|
|
11401
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
|
|
11402
|
+
className: "shrink-0 w-full md:w-auto",
|
|
11403
|
+
children: action
|
|
11404
|
+
})
|
|
11405
|
+
]
|
|
11406
|
+
});
|
|
11407
|
+
};
|
|
11408
|
+
|
|
11409
|
+
|
|
11410
|
+
|
|
11411
|
+
|
|
11412
|
+
|
|
11413
|
+
const $8f65e34d23588915$var$languages = Object.keys((0, $b45c0bcc142f0b5e$export$150b732325d14d04)).filter((it)=>it !== "dev").map((it)=>({
|
|
11414
|
+
id: it,
|
|
11415
|
+
name: (0, $b45c0bcc142f0b5e$export$150b732325d14d04)[it].name
|
|
11416
|
+
}));
|
|
11417
|
+
const $8f65e34d23588915$export$9ee2a145b590ce4b = ()=>{
|
|
11418
|
+
const { i18n: i18n, t: t } = (0, $jQDcL$reacti18next.useTranslation)();
|
|
11419
|
+
const { setLanguage: setLanguage } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
|
|
11420
|
+
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$reactjsxruntime.Fragment), {
|
|
11421
|
+
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $01fe82556a919c03$export$50a2cb5c859687d3), {
|
|
11422
|
+
id: "language",
|
|
11423
|
+
title: t("settings.language"),
|
|
11424
|
+
description: t("settings.selectYourLanguage"),
|
|
11425
|
+
action: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$snapcalldesignsystem.Select), {
|
|
11426
|
+
value: i18n.language,
|
|
11427
|
+
onValueChange: (value)=>setLanguage(value),
|
|
11428
|
+
children: [
|
|
11429
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SelectTrigger), {
|
|
11430
|
+
className: "bg-gray-50",
|
|
11431
|
+
id: "language",
|
|
11432
|
+
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SelectValue), {})
|
|
11433
|
+
}),
|
|
11434
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SelectContent), {
|
|
11435
|
+
children: $8f65e34d23588915$var$languages.map((language)=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SelectItem), {
|
|
11436
|
+
value: language.id,
|
|
11437
|
+
children: language.name
|
|
11438
|
+
}, language.id))
|
|
11439
|
+
})
|
|
11440
|
+
]
|
|
11441
|
+
})
|
|
11442
|
+
})
|
|
11443
|
+
});
|
|
11444
|
+
};
|
|
11445
|
+
|
|
11446
|
+
|
|
11447
|
+
|
|
11448
|
+
|
|
11449
|
+
|
|
11450
|
+
|
|
11451
|
+
|
|
11452
|
+
const $cf45aa5122d1e9ea$export$6aa26f5ebe6471fc = ({ kind: kind, includeDefault: includeDefault = false } = {})=>{
|
|
11453
|
+
const getMediaDevices = async ()=>{
|
|
11454
|
+
const devices = await navigator.mediaDevices.enumerateDevices();
|
|
11455
|
+
const filteredDevices = devices.filter((device)=>{
|
|
11456
|
+
if (device.deviceId === "default" && !includeDefault) return false;
|
|
11457
|
+
if (kind && kind !== device.kind) return false;
|
|
11458
|
+
return true;
|
|
11459
|
+
});
|
|
11460
|
+
return filteredDevices;
|
|
11461
|
+
};
|
|
11462
|
+
return (0, $jQDcL$reactquery.useQuery)({
|
|
11463
|
+
queryKey: [
|
|
11464
|
+
"mediaDevices",
|
|
11465
|
+
kind || "all",
|
|
11466
|
+
includeDefault
|
|
11467
|
+
],
|
|
11468
|
+
queryFn: getMediaDevices,
|
|
11469
|
+
retry: false,
|
|
11470
|
+
refetchOnWindowFocus: false,
|
|
11471
|
+
staleTime: Infinity
|
|
11472
|
+
});
|
|
11473
|
+
};
|
|
11474
|
+
|
|
11475
|
+
|
|
11476
|
+
|
|
11477
|
+
|
|
11478
|
+
const $c1f57aebcca9b882$export$9f1846b6ccad1893 = ()=>{
|
|
11479
|
+
return (0, $jQDcL$reactquery.useQuery)({
|
|
11480
|
+
queryKey: [
|
|
11481
|
+
"devicesState"
|
|
11482
|
+
],
|
|
11483
|
+
queryFn: ()=>(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getDevicesState(),
|
|
11484
|
+
retry: false,
|
|
11485
|
+
refetchOnWindowFocus: false,
|
|
11486
|
+
staleTime: Infinity
|
|
11487
|
+
});
|
|
11488
|
+
};
|
|
11489
|
+
|
|
11490
|
+
|
|
11491
|
+
|
|
11492
|
+
|
|
11493
|
+
const $e10783d7d081fd73$export$20144d37f30919ab = ()=>{
|
|
11494
|
+
const queryClient = (0, $jQDcL$reactquery.useQueryClient)();
|
|
11495
|
+
return (0, $jQDcL$reactquery.useMutation)({
|
|
11496
|
+
mutationFn: (device)=>{
|
|
11497
|
+
if (device.kind === "audioinput") return (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).switchMicrophone(device.deviceId);
|
|
11498
|
+
else if (device.kind === "videoinput") return (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).switchWebcam({
|
|
11499
|
+
device: device
|
|
11500
|
+
});
|
|
11501
|
+
else if (device.kind === "audiooutput") throw new Error("Audio output not supported");
|
|
11502
|
+
throw new Error("Unsupported device info");
|
|
11503
|
+
},
|
|
11504
|
+
onSettled: ()=>queryClient.invalidateQueries([
|
|
11505
|
+
"devicesState"
|
|
11506
|
+
])
|
|
11507
|
+
});
|
|
11508
|
+
};
|
|
11509
|
+
|
|
11510
|
+
|
|
11511
|
+
|
|
11512
|
+
|
|
11513
|
+
|
|
11514
|
+
|
|
11515
|
+
const $8229feab219a258c$export$15073df9b5e6c63e = (constraints)=>{
|
|
11516
|
+
const optimisticPermissions = (0, $jQDcL$react.useRef)({
|
|
11517
|
+
audio: false,
|
|
11518
|
+
video: false
|
|
11519
|
+
});
|
|
11520
|
+
const handleVideoState = (0, $jQDcL$react.useCallback)(async ({ optimisticVideoState: optimisticVideoState } = {
|
|
11521
|
+
optimisticVideoState: false
|
|
11522
|
+
})=>{
|
|
11523
|
+
const devicesState = (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getDevicesState();
|
|
11524
|
+
if (constraints.video && !devicesState.camera.enabled && !optimisticVideoState) {
|
|
11525
|
+
optimisticPermissions.current.video = true;
|
|
11526
|
+
try {
|
|
11527
|
+
await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableVideo({
|
|
11528
|
+
resolution: "vga",
|
|
11529
|
+
frameRate: 20,
|
|
11530
|
+
facingMode: "environment"
|
|
11531
|
+
});
|
|
11532
|
+
} catch (err) {
|
|
11533
|
+
console.error(err);
|
|
11534
|
+
optimisticPermissions.current.video = false;
|
|
11535
|
+
}
|
|
11536
|
+
} else if (!constraints.video && devicesState.camera.enabled) try {
|
|
11537
|
+
await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).disableVideo();
|
|
11538
|
+
optimisticPermissions.current.video = false;
|
|
11539
|
+
} catch (err) {
|
|
11540
|
+
console.error(err);
|
|
11541
|
+
}
|
|
11542
|
+
}, [
|
|
11543
|
+
constraints.video
|
|
11544
|
+
]);
|
|
11545
|
+
const handleMicrophoneState = (0, $jQDcL$react.useCallback)(async ({ optimisticAudioState: optimisticAudioState } = {
|
|
11546
|
+
optimisticAudioState: false
|
|
11547
|
+
})=>{
|
|
11548
|
+
const devicesState = (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getDevicesState();
|
|
11549
|
+
if (constraints.audio && !devicesState.microphone.enabled && !optimisticAudioState) {
|
|
11550
|
+
optimisticPermissions.current.audio = true;
|
|
11551
|
+
try {
|
|
11552
|
+
await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableMicrophone();
|
|
11553
|
+
} catch (err) {
|
|
11554
|
+
console.error(err);
|
|
11555
|
+
optimisticPermissions.current.audio = false;
|
|
11556
|
+
}
|
|
11557
|
+
}
|
|
11558
|
+
}, [
|
|
11559
|
+
constraints.audio
|
|
11560
|
+
]);
|
|
11333
11561
|
const query = (0, $jQDcL$reactquery.useQuery)({
|
|
11334
11562
|
queryKey: [
|
|
11335
11563
|
constraints
|
|
@@ -11386,6 +11614,371 @@ const $8229feab219a258c$export$15073df9b5e6c63e = (constraints)=>{
|
|
|
11386
11614
|
};
|
|
11387
11615
|
|
|
11388
11616
|
|
|
11617
|
+
const $8dc2b756952b64e5$export$75b44b566abc4e9c = ()=>{
|
|
11618
|
+
const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
|
|
11619
|
+
const audioGUM = (0, $8229feab219a258c$export$15073df9b5e6c63e)({
|
|
11620
|
+
audio: true,
|
|
11621
|
+
video: true
|
|
11622
|
+
});
|
|
11623
|
+
const audioInputDevices = (0, $cf45aa5122d1e9ea$export$6aa26f5ebe6471fc)({
|
|
11624
|
+
kind: "audioinput",
|
|
11625
|
+
includeDefault: true
|
|
11626
|
+
});
|
|
11627
|
+
const devicesState = (0, $c1f57aebcca9b882$export$9f1846b6ccad1893)();
|
|
11628
|
+
const updateDevice = (0, $e10783d7d081fd73$export$20144d37f30919ab)();
|
|
11629
|
+
const filteredAudioInputDevices = (0, $jQDcL$react.useMemo)(()=>{
|
|
11630
|
+
if (audioInputDevices.data) return audioInputDevices.data.filter((it)=>it.deviceId !== "default");
|
|
11631
|
+
return [];
|
|
11632
|
+
}, [
|
|
11633
|
+
audioInputDevices.data
|
|
11634
|
+
]);
|
|
11635
|
+
const selectedAudioDevice = (0, $jQDcL$react.useMemo)(()=>{
|
|
11636
|
+
const deviceId = devicesState.data?.microphone.device?.deviceId;
|
|
11637
|
+
if (audioInputDevices.data && deviceId === "default") {
|
|
11638
|
+
const defaultDevice = audioInputDevices.data.find((it)=>it.deviceId === "default");
|
|
11639
|
+
const realDevice = audioInputDevices.data.find((it)=>it.groupId === defaultDevice?.groupId && it.deviceId !== "default");
|
|
11640
|
+
if (realDevice) return realDevice.deviceId;
|
|
11641
|
+
}
|
|
11642
|
+
return deviceId || "";
|
|
11643
|
+
}, [
|
|
11644
|
+
audioInputDevices.data,
|
|
11645
|
+
devicesState.data
|
|
11646
|
+
]);
|
|
11647
|
+
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$reactjsxruntime.Fragment), {
|
|
11648
|
+
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $01fe82556a919c03$export$50a2cb5c859687d3), {
|
|
11649
|
+
id: "microphone",
|
|
11650
|
+
title: t("misc.microphone"),
|
|
11651
|
+
description: t("settings.selectYourMicrophone"),
|
|
11652
|
+
action: audioGUM.isSuccess ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$snapcalldesignsystem.Select), {
|
|
11653
|
+
value: selectedAudioDevice,
|
|
11654
|
+
onValueChange: (deviceId)=>{
|
|
11655
|
+
const device = filteredAudioInputDevices.find((it)=>it.deviceId === deviceId);
|
|
11656
|
+
if (device) updateDevice.mutate(device);
|
|
11657
|
+
},
|
|
11658
|
+
children: [
|
|
11659
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SelectTrigger), {
|
|
11660
|
+
className: "bg-gray-50",
|
|
11661
|
+
id: "microphone",
|
|
11662
|
+
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SelectValue), {
|
|
11663
|
+
children: updateDevice.isLoading ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$reactjsxruntime.Fragment), {
|
|
11664
|
+
children: updateDevice.variables?.label
|
|
11665
|
+
}) : undefined
|
|
11666
|
+
})
|
|
11667
|
+
}),
|
|
11668
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SelectContent), {
|
|
11669
|
+
children: filteredAudioInputDevices.map((device)=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SelectItem), {
|
|
11670
|
+
value: device.deviceId,
|
|
11671
|
+
children: device.label
|
|
11672
|
+
}, device.deviceId))
|
|
11673
|
+
})
|
|
11674
|
+
]
|
|
11675
|
+
}) : audioGUM.isError ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
|
|
11676
|
+
children: t("recorder.allowCamMicAccess")
|
|
11677
|
+
}) : /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SpinnerIcon), {
|
|
11678
|
+
size: 28,
|
|
11679
|
+
className: "animate-spin text-blue-700"
|
|
11680
|
+
})
|
|
11681
|
+
})
|
|
11682
|
+
});
|
|
11683
|
+
};
|
|
11684
|
+
|
|
11685
|
+
|
|
11686
|
+
|
|
11687
|
+
|
|
11688
|
+
|
|
11689
|
+
|
|
11690
|
+
|
|
11691
|
+
|
|
11692
|
+
|
|
11693
|
+
|
|
11694
|
+
|
|
11695
|
+
const $2736f94642df39f3$export$40214e6b2a12030d = ()=>{
|
|
11696
|
+
const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
|
|
11697
|
+
const videoGUM = (0, $8229feab219a258c$export$15073df9b5e6c63e)({
|
|
11698
|
+
audio: true,
|
|
11699
|
+
video: true
|
|
11700
|
+
});
|
|
11701
|
+
const videoInputDevices = (0, $cf45aa5122d1e9ea$export$6aa26f5ebe6471fc)({
|
|
11702
|
+
kind: "videoinput"
|
|
11703
|
+
});
|
|
11704
|
+
const devicesState = (0, $c1f57aebcca9b882$export$9f1846b6ccad1893)();
|
|
11705
|
+
const updateDevice = (0, $e10783d7d081fd73$export$20144d37f30919ab)();
|
|
11706
|
+
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$reactjsxruntime.Fragment), {
|
|
11707
|
+
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $01fe82556a919c03$export$50a2cb5c859687d3), {
|
|
11708
|
+
id: "camera",
|
|
11709
|
+
title: t("misc.camera"),
|
|
11710
|
+
description: t("settings.selectYourCamera"),
|
|
11711
|
+
action: videoGUM.isSuccess ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$snapcalldesignsystem.Select), {
|
|
11712
|
+
value: devicesState.data?.camera.device?.deviceId,
|
|
11713
|
+
onValueChange: (deviceId)=>{
|
|
11714
|
+
const device = videoInputDevices.data?.find((it)=>it.deviceId === deviceId);
|
|
11715
|
+
if (device) updateDevice.mutate(device);
|
|
11716
|
+
},
|
|
11717
|
+
children: [
|
|
11718
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SelectTrigger), {
|
|
11719
|
+
className: "bg-gray-50",
|
|
11720
|
+
id: "camera",
|
|
11721
|
+
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SelectValue), {
|
|
11722
|
+
placeholder: "/",
|
|
11723
|
+
children: updateDevice.isLoading ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$reactjsxruntime.Fragment), {
|
|
11724
|
+
children: updateDevice.variables?.label
|
|
11725
|
+
}) : undefined
|
|
11726
|
+
})
|
|
11727
|
+
}),
|
|
11728
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SelectContent), {
|
|
11729
|
+
children: videoInputDevices.data && videoInputDevices.data.map((device)=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SelectItem), {
|
|
11730
|
+
value: device.deviceId,
|
|
11731
|
+
children: device.label
|
|
11732
|
+
}, device.deviceId))
|
|
11733
|
+
})
|
|
11734
|
+
]
|
|
11735
|
+
}) : videoGUM.isError ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
|
|
11736
|
+
children: t("recorder.allowCamMicAccess")
|
|
11737
|
+
}) : /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SpinnerIcon), {
|
|
11738
|
+
size: 28,
|
|
11739
|
+
className: "animate-spin text-blue-700"
|
|
11740
|
+
})
|
|
11741
|
+
})
|
|
11742
|
+
});
|
|
11743
|
+
};
|
|
11744
|
+
|
|
11745
|
+
|
|
11746
|
+
const $e9d4b4657e98cb84$export$c197ce1a352372f = ({ state: state })=>{
|
|
11747
|
+
const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
|
|
11748
|
+
const menuItems = (0, $jQDcL$react.useMemo)(()=>[
|
|
11749
|
+
{
|
|
11750
|
+
id: "audio",
|
|
11751
|
+
title: t("misc.audio"),
|
|
11752
|
+
icon: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.VolumeMaxIcon), {
|
|
11753
|
+
duotone: true
|
|
11754
|
+
}),
|
|
11755
|
+
content: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8dc2b756952b64e5$export$75b44b566abc4e9c), {})
|
|
11756
|
+
},
|
|
11757
|
+
{
|
|
11758
|
+
id: "video",
|
|
11759
|
+
title: t("misc.video"),
|
|
11760
|
+
icon: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.VideoRecorderIcon), {
|
|
11761
|
+
duotone: true
|
|
11762
|
+
}),
|
|
11763
|
+
content: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $2736f94642df39f3$export$40214e6b2a12030d), {})
|
|
11764
|
+
},
|
|
11765
|
+
{
|
|
11766
|
+
id: "preferences",
|
|
11767
|
+
title: t("settings.preferences"),
|
|
11768
|
+
icon: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.Settings3Icon), {
|
|
11769
|
+
duotone: true
|
|
11770
|
+
}),
|
|
11771
|
+
content: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8f65e34d23588915$export$9ee2a145b590ce4b), {})
|
|
11772
|
+
}
|
|
11773
|
+
], [
|
|
11774
|
+
t
|
|
11775
|
+
]);
|
|
11776
|
+
const isMedium = window.matchMedia("(min-width: 768px)").matches;
|
|
11777
|
+
const [selectedMenuItem, setSelectedMenuItem] = (0, $jQDcL$react.useState)(isMedium ? menuItems[0] : null);
|
|
11778
|
+
(0, $jQDcL$react.useEffect)(()=>{
|
|
11779
|
+
if (isMedium && !selectedMenuItem) setSelectedMenuItem(menuItems[0]);
|
|
11780
|
+
}, [
|
|
11781
|
+
isMedium,
|
|
11782
|
+
selectedMenuItem,
|
|
11783
|
+
menuItems
|
|
11784
|
+
]);
|
|
11785
|
+
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $9277d94be7423d29$export$e943710ec76a9465), {
|
|
11786
|
+
open: state.isOpen,
|
|
11787
|
+
onOpenChange: state.setOpen,
|
|
11788
|
+
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $9277d94be7423d29$export$56d72fe406945300), {
|
|
11789
|
+
type: isMedium ? "dialog" : "sheet",
|
|
11790
|
+
showClose: !isMedium,
|
|
11791
|
+
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $9277d94be7423d29$export$4cf67c05c32f37ce), {
|
|
11792
|
+
className: (0, ($parcel$interopDefault($jQDcL$classnames)))("dark-theme flex flex-col md:w-[1000px] md:h-[550px] md:max-w-[90vw] bg-gray-100", "md:gap-0 md:p-0 md:divide-y divide-gray-200 text-gray-1000"),
|
|
11793
|
+
children: [
|
|
11794
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $9277d94be7423d29$export$ae085f72dad73e20), {
|
|
11795
|
+
children: isMedium ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
11796
|
+
className: "flex justify-between items-center p-3",
|
|
11797
|
+
children: [
|
|
11798
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
11799
|
+
className: "flex gap-2 items-center",
|
|
11800
|
+
children: [
|
|
11801
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.Settings1Icon), {
|
|
11802
|
+
size: 18,
|
|
11803
|
+
className: "text-white"
|
|
11804
|
+
}),
|
|
11805
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $9277d94be7423d29$export$5e9fc1357420b7eb), {
|
|
11806
|
+
className: "text-sm",
|
|
11807
|
+
children: t("settings.title")
|
|
11808
|
+
})
|
|
11809
|
+
]
|
|
11810
|
+
}),
|
|
11811
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.Button), {
|
|
11812
|
+
variant: "outline",
|
|
11813
|
+
size: "xs",
|
|
11814
|
+
className: "bg-gray-25",
|
|
11815
|
+
onClick: state.close,
|
|
11816
|
+
icon: true,
|
|
11817
|
+
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.XCloseIcon), {
|
|
11818
|
+
size: 12
|
|
11819
|
+
})
|
|
11820
|
+
})
|
|
11821
|
+
]
|
|
11822
|
+
}) : /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
11823
|
+
className: "flex gap-4 items-center",
|
|
11824
|
+
children: [
|
|
11825
|
+
selectedMenuItem && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.Button), {
|
|
11826
|
+
variant: "secondary",
|
|
11827
|
+
size: "sm",
|
|
11828
|
+
onClick: ()=>setSelectedMenuItem(null),
|
|
11829
|
+
icon: true,
|
|
11830
|
+
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.ArrowLeftIcon), {
|
|
11831
|
+
size: 12,
|
|
11832
|
+
className: "text-white"
|
|
11833
|
+
})
|
|
11834
|
+
}),
|
|
11835
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
11836
|
+
className: "flex gap-2 items-center",
|
|
11837
|
+
children: [
|
|
11838
|
+
!selectedMenuItem && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.Settings1Icon), {
|
|
11839
|
+
size: 18,
|
|
11840
|
+
className: "text-white"
|
|
11841
|
+
}),
|
|
11842
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $9277d94be7423d29$export$5e9fc1357420b7eb), {
|
|
11843
|
+
className: "text-lg",
|
|
11844
|
+
children: selectedMenuItem ? selectedMenuItem.title : t("settings.title")
|
|
11845
|
+
})
|
|
11846
|
+
]
|
|
11847
|
+
})
|
|
11848
|
+
]
|
|
11849
|
+
})
|
|
11850
|
+
}),
|
|
11851
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
11852
|
+
className: "w-full h-full flex divide-x divide-gray-200",
|
|
11853
|
+
children: [
|
|
11854
|
+
(isMedium || !selectedMenuItem) && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
11855
|
+
className: "flex flex-col w-full md:w-[300px] md:p-4 shrink-0",
|
|
11856
|
+
children: [
|
|
11857
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
|
|
11858
|
+
className: "flex flex-col gap-2 flex-1",
|
|
11859
|
+
children: menuItems.map((item)=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $f718706dd298ae4f$export$3315c1cc2d5487ba), {
|
|
11860
|
+
title: item.title,
|
|
11861
|
+
icon: item.icon,
|
|
11862
|
+
isActive: item.id === selectedMenuItem?.id,
|
|
11863
|
+
onClick: ()=>setSelectedMenuItem(item)
|
|
11864
|
+
}, item.id))
|
|
11865
|
+
}),
|
|
11866
|
+
isMedium && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("a", {
|
|
11867
|
+
href: "https://help.snapcall.io",
|
|
11868
|
+
target: "_blank",
|
|
11869
|
+
rel: "noreferrer",
|
|
11870
|
+
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $f718706dd298ae4f$export$3315c1cc2d5487ba), {
|
|
11871
|
+
title: t("settings.helpCenter"),
|
|
11872
|
+
icon: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.HelpCircleIcon), {
|
|
11873
|
+
duotone: true
|
|
11874
|
+
})
|
|
11875
|
+
})
|
|
11876
|
+
})
|
|
11877
|
+
]
|
|
11878
|
+
}),
|
|
11879
|
+
selectedMenuItem && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
11880
|
+
className: "w-full md:p-8 divide-y divide-gray-200",
|
|
11881
|
+
children: [
|
|
11882
|
+
isMedium && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("h2", {
|
|
11883
|
+
className: "text-md font-semibold mb-2",
|
|
11884
|
+
children: selectedMenuItem.title
|
|
11885
|
+
}),
|
|
11886
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
|
|
11887
|
+
className: "md:pt-4",
|
|
11888
|
+
children: selectedMenuItem.content
|
|
11889
|
+
})
|
|
11890
|
+
]
|
|
11891
|
+
})
|
|
11892
|
+
]
|
|
11893
|
+
})
|
|
11894
|
+
]
|
|
11895
|
+
})
|
|
11896
|
+
})
|
|
11897
|
+
});
|
|
11898
|
+
};
|
|
11899
|
+
|
|
11900
|
+
|
|
11901
|
+
const $48ac80173d63a751$var$browser = (0, ($parcel$interopDefault($jQDcL$bowser))).parse(window.navigator.userAgent);
|
|
11902
|
+
const $48ac80173d63a751$export$aa00db7a33d4c484 = ()=>{
|
|
11903
|
+
const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
|
|
11904
|
+
const { mode: mode, hasVideo: hasVideo, isRecording: isRecording, openQRCodeModal: openQRCodeModal } = (0, $098350f721a0bb52$export$2174f25d572f9f31)();
|
|
11905
|
+
const [showQrCodeToast, setShowQrCodeToast] = (0, $jQDcL$react.useState)($48ac80173d63a751$var$browser.platform.type === "desktop");
|
|
11906
|
+
const [timer, setTimer] = (0, $jQDcL$react.useState)(0);
|
|
11907
|
+
const timerInterval = (0, $jQDcL$react.useRef)(0);
|
|
11908
|
+
const settingsDialogState = (0, $jQDcL$reactstately.useOverlayTriggerState)({});
|
|
11909
|
+
const isMedium = window.matchMedia("(min-width: 768px)").matches;
|
|
11910
|
+
(0, $jQDcL$react.useEffect)(()=>{
|
|
11911
|
+
if (isRecording) {
|
|
11912
|
+
clearInterval(timerInterval.current);
|
|
11913
|
+
timerInterval.current = window.setInterval(()=>setTimer((t)=>t + 1), 1000);
|
|
11914
|
+
} else {
|
|
11915
|
+
clearInterval(timerInterval.current);
|
|
11916
|
+
setTimer(0);
|
|
11917
|
+
}
|
|
11918
|
+
}, [
|
|
11919
|
+
isRecording
|
|
11920
|
+
]);
|
|
11921
|
+
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
11922
|
+
className: "flex items-start justify-between z-50",
|
|
11923
|
+
children: [
|
|
11924
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $ccbd73eb953b0bd0$export$b3fd96a52c80b3af), {}),
|
|
11925
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
11926
|
+
className: "flex flex-col items-center gap-4 overflow-hidden",
|
|
11927
|
+
children: [
|
|
11928
|
+
mode !== "photo" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
11929
|
+
className: (0, ($parcel$interopDefault($jQDcL$classnames)))("flex items-center gap-2.5 px-3.5 py-2 text-md text-white font-medium border rounded-full", hasVideo ? "bg-gray-25/50 border-white/10 backdrop-blur-lg" : "bg-gray-50 border-gray-200"),
|
|
11930
|
+
children: [
|
|
11931
|
+
isRecording && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
|
|
11932
|
+
className: "w-2 h-2 rounded-full bg-red-700 pulse-red-700"
|
|
11933
|
+
}),
|
|
11934
|
+
(0, $30ad72ee44a52bf1$export$7f78f4f57f8852d5)(timer)
|
|
11935
|
+
]
|
|
11936
|
+
}),
|
|
11937
|
+
showQrCodeToast && mode !== "screen" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.RawToast), {
|
|
11938
|
+
className: "bg-gray-25",
|
|
11939
|
+
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.ToastContent), {
|
|
11940
|
+
title: t("recorder.switchToMobileTitle"),
|
|
11941
|
+
icon: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.QrCode1Icon), {
|
|
11942
|
+
className: "text-white"
|
|
11943
|
+
}),
|
|
11944
|
+
onClose: ()=>setShowQrCodeToast(false),
|
|
11945
|
+
actions: [
|
|
11946
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.ToastAction), {
|
|
11947
|
+
altText: t("recorder.showQrCode"),
|
|
11948
|
+
variant: "primary",
|
|
11949
|
+
onClick: openQRCodeModal,
|
|
11950
|
+
children: t("recorder.showQrCode")
|
|
11951
|
+
}, "showQrCode")
|
|
11952
|
+
]
|
|
11953
|
+
})
|
|
11954
|
+
})
|
|
11955
|
+
]
|
|
11956
|
+
}),
|
|
11957
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$snapcalldesignsystem.Button), {
|
|
11958
|
+
className: "bg-gray-25/50 hover:bg-gray-25/60 active:bg-gray-25/70 rounded-full",
|
|
11959
|
+
icon: !isMedium,
|
|
11960
|
+
onClick: settingsDialogState.open,
|
|
11961
|
+
children: [
|
|
11962
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.Settings1Icon), {
|
|
11963
|
+
size: 18,
|
|
11964
|
+
className: "text-white"
|
|
11965
|
+
}),
|
|
11966
|
+
isMedium && t("settings.title")
|
|
11967
|
+
]
|
|
11968
|
+
}),
|
|
11969
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $e9d4b4657e98cb84$export$c197ce1a352372f), {
|
|
11970
|
+
state: settingsDialogState
|
|
11971
|
+
})
|
|
11972
|
+
]
|
|
11973
|
+
});
|
|
11974
|
+
};
|
|
11975
|
+
|
|
11976
|
+
|
|
11977
|
+
|
|
11978
|
+
|
|
11979
|
+
|
|
11980
|
+
|
|
11981
|
+
|
|
11389
11982
|
|
|
11390
11983
|
|
|
11391
11984
|
const $a33432a0233f49a9$var$audioModes = [
|
|
@@ -11400,6 +11993,7 @@ const $a33432a0233f49a9$var$videoModes = [
|
|
|
11400
11993
|
];
|
|
11401
11994
|
const $a33432a0233f49a9$export$ca9d588768f0d0da = ({ children: children })=>{
|
|
11402
11995
|
const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
|
|
11996
|
+
const reportError = (0, $8dfcca373a03b9e8$export$5a5695b638d078e7)();
|
|
11403
11997
|
const { mode: mode } = (0, $098350f721a0bb52$export$2174f25d572f9f31)();
|
|
11404
11998
|
const hasAudio = $a33432a0233f49a9$var$audioModes.includes(mode);
|
|
11405
11999
|
const hasVideo = $a33432a0233f49a9$var$videoModes.includes(mode);
|
|
@@ -11422,7 +12016,7 @@ const $a33432a0233f49a9$export$ca9d588768f0d0da = ({ children: children })=>{
|
|
|
11422
12016
|
}),
|
|
11423
12017
|
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("p", {
|
|
11424
12018
|
className: "text-sm text-gray-900",
|
|
11425
|
-
children: "
|
|
12019
|
+
children: mode === "screen" ? t("recorder.chooseWhatYouWantToShareDescription") : hasAudio && hasVideo ? t("recorder.noCameraAndMicrophoneAccessDescription") : hasAudio ? t("recorder.noMicrophoneAccessDescription") : hasVideo ? t("recorder.noCameraAccessDescription") : "/"
|
|
11426
12020
|
})
|
|
11427
12021
|
]
|
|
11428
12022
|
}),
|
|
@@ -11436,7 +12030,10 @@ const $a33432a0233f49a9$export$ca9d588768f0d0da = ({ children: children })=>{
|
|
|
11436
12030
|
onClick: ()=>{
|
|
11437
12031
|
if (mode === "screen") (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableScreenshare({
|
|
11438
12032
|
audioTransportOption: "mix"
|
|
11439
|
-
})
|
|
12033
|
+
}).catch((error)=>reportError({
|
|
12034
|
+
code: "SC_3",
|
|
12035
|
+
error: error
|
|
12036
|
+
}));
|
|
11440
12037
|
else getUserMedia.refetch();
|
|
11441
12038
|
},
|
|
11442
12039
|
children: mode === "screen" ? t("recorder.startScreenRecording") : t("recorder.allowAccess")
|
|
@@ -11592,95 +12189,6 @@ const $c6c03cb1324fb0c3$export$e9b744e15e8fe06f = ()=>{
|
|
|
11592
12189
|
|
|
11593
12190
|
|
|
11594
12191
|
|
|
11595
|
-
const $9277d94be7423d29$var$SheetDialogContext = /*#__PURE__*/ (0, $jQDcL$react.createContext)({
|
|
11596
|
-
type: "dialog",
|
|
11597
|
-
showClose: true
|
|
11598
|
-
});
|
|
11599
|
-
const $9277d94be7423d29$export$56d72fe406945300 = ({ type: type = "dialog", showClose: showClose = true, children: children })=>{
|
|
11600
|
-
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($9277d94be7423d29$var$SheetDialogContext.Provider, {
|
|
11601
|
-
value: {
|
|
11602
|
-
type: type,
|
|
11603
|
-
showClose: showClose
|
|
11604
|
-
},
|
|
11605
|
-
children: children
|
|
11606
|
-
});
|
|
11607
|
-
};
|
|
11608
|
-
const $9277d94be7423d29$export$e943710ec76a9465 = (props)=>{
|
|
11609
|
-
const { type: type } = (0, $jQDcL$react.useContext)($9277d94be7423d29$var$SheetDialogContext);
|
|
11610
|
-
if (type === "dialog") return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.Dialog), {
|
|
11611
|
-
...props
|
|
11612
|
-
});
|
|
11613
|
-
else return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.Sheet), {
|
|
11614
|
-
...props
|
|
11615
|
-
});
|
|
11616
|
-
};
|
|
11617
|
-
const $9277d94be7423d29$export$76259cff208cccae = (props)=>{
|
|
11618
|
-
const { type: type } = (0, $jQDcL$react.useContext)($9277d94be7423d29$var$SheetDialogContext);
|
|
11619
|
-
if (type === "dialog") return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.DialogTrigger), {
|
|
11620
|
-
...props
|
|
11621
|
-
});
|
|
11622
|
-
else return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SheetTrigger), {
|
|
11623
|
-
...props
|
|
11624
|
-
});
|
|
11625
|
-
};
|
|
11626
|
-
const $9277d94be7423d29$export$ae085f72dad73e20 = (props)=>{
|
|
11627
|
-
const { type: type, showClose: showClose } = (0, $jQDcL$react.useContext)($9277d94be7423d29$var$SheetDialogContext);
|
|
11628
|
-
if (type === "dialog") return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.DialogHeader), {
|
|
11629
|
-
...props
|
|
11630
|
-
});
|
|
11631
|
-
else {
|
|
11632
|
-
const { children: children, ...other } = props;
|
|
11633
|
-
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$snapcalldesignsystem.SheetHeader), {
|
|
11634
|
-
...other,
|
|
11635
|
-
children: [
|
|
11636
|
-
children,
|
|
11637
|
-
showClose && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SheetClose), {})
|
|
11638
|
-
]
|
|
11639
|
-
});
|
|
11640
|
-
}
|
|
11641
|
-
};
|
|
11642
|
-
const $9277d94be7423d29$export$4cf67c05c32f37ce = (props)=>{
|
|
11643
|
-
const { type: type, showClose: showClose } = (0, $jQDcL$react.useContext)($9277d94be7423d29$var$SheetDialogContext);
|
|
11644
|
-
if (type === "dialog") return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.DialogContent), {
|
|
11645
|
-
showClose: showClose,
|
|
11646
|
-
...props
|
|
11647
|
-
});
|
|
11648
|
-
else return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SheetContent), {
|
|
11649
|
-
side: "bottom",
|
|
11650
|
-
...props
|
|
11651
|
-
});
|
|
11652
|
-
};
|
|
11653
|
-
const $9277d94be7423d29$export$5e9fc1357420b7eb = (props)=>{
|
|
11654
|
-
const { type: type } = (0, $jQDcL$react.useContext)($9277d94be7423d29$var$SheetDialogContext);
|
|
11655
|
-
if (type === "dialog") return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.DialogTitle), {
|
|
11656
|
-
...props
|
|
11657
|
-
});
|
|
11658
|
-
else return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SheetTitle), {
|
|
11659
|
-
...props
|
|
11660
|
-
});
|
|
11661
|
-
};
|
|
11662
|
-
const $9277d94be7423d29$export$51c201eb88940e0f = (props)=>{
|
|
11663
|
-
const { type: type } = (0, $jQDcL$react.useContext)($9277d94be7423d29$var$SheetDialogContext);
|
|
11664
|
-
if (type === "dialog") return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.DialogDescription), {
|
|
11665
|
-
...props
|
|
11666
|
-
});
|
|
11667
|
-
else return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SheetDescription), {
|
|
11668
|
-
...props
|
|
11669
|
-
});
|
|
11670
|
-
};
|
|
11671
|
-
const $9277d94be7423d29$export$2cf3a8077f66b4f6 = (props)=>{
|
|
11672
|
-
const { type: type } = (0, $jQDcL$react.useContext)($9277d94be7423d29$var$SheetDialogContext);
|
|
11673
|
-
if (type === "dialog") return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.DialogDescription), {
|
|
11674
|
-
...props
|
|
11675
|
-
});
|
|
11676
|
-
else return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SheetDescription), {
|
|
11677
|
-
...props
|
|
11678
|
-
});
|
|
11679
|
-
};
|
|
11680
|
-
|
|
11681
|
-
|
|
11682
|
-
|
|
11683
|
-
|
|
11684
12192
|
|
|
11685
12193
|
|
|
11686
12194
|
|
|
@@ -12073,9 +12581,9 @@ const $e399416dd32d3252$export$c01bb29adf88f117 = ({ state: state })=>{
|
|
|
12073
12581
|
|
|
12074
12582
|
const $d0ded347a490aa03$export$aab864ee9e2aed8d = ()=>{
|
|
12075
12583
|
const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
|
|
12076
|
-
const {
|
|
12584
|
+
const { recorderOptions: recorderOptions } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
|
|
12077
12585
|
const { mode: mode, setMode: setMode, hasVideo: hasVideo } = (0, $098350f721a0bb52$export$2174f25d572f9f31)();
|
|
12078
|
-
const enabledModes =
|
|
12586
|
+
const enabledModes = recorderOptions?.enabledModes || [
|
|
12079
12587
|
"photo",
|
|
12080
12588
|
"video",
|
|
12081
12589
|
"audio",
|
|
@@ -12114,6 +12622,7 @@ const $d0ded347a490aa03$export$aab864ee9e2aed8d = ()=>{
|
|
|
12114
12622
|
|
|
12115
12623
|
|
|
12116
12624
|
|
|
12625
|
+
|
|
12117
12626
|
const $a9c4bfaa4df801e6$var$zoomOptions = [
|
|
12118
12627
|
"1",
|
|
12119
12628
|
"2"
|
|
@@ -12121,15 +12630,23 @@ const $a9c4bfaa4df801e6$var$zoomOptions = [
|
|
|
12121
12630
|
const $a9c4bfaa4df801e6$export$50c18ae22f50c0e = ()=>{
|
|
12122
12631
|
const [isZoomAvailable, setIsZoomAvailable] = (0, $jQDcL$react.useState)(false);
|
|
12123
12632
|
const [zoom, setZoom] = (0, $jQDcL$react.useState)("1");
|
|
12633
|
+
const reportError = (0, $8dfcca373a03b9e8$export$5a5695b638d078e7)();
|
|
12124
12634
|
(0, $jQDcL$react.useEffect)(()=>{
|
|
12125
12635
|
if (isZoomAvailable) {
|
|
12126
12636
|
const numberZoom = Number(zoom);
|
|
12127
|
-
if (numberZoom > 1) (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).zoomVideo()
|
|
12128
|
-
|
|
12637
|
+
if (numberZoom > 1) (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).zoomVideo().catch((error)=>reportError({
|
|
12638
|
+
code: "ZM_1",
|
|
12639
|
+
error: error
|
|
12640
|
+
}));
|
|
12641
|
+
else (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).unzoomVideo().catch((error)=>reportError({
|
|
12642
|
+
code: "ZM_2",
|
|
12643
|
+
error: error
|
|
12644
|
+
}));
|
|
12129
12645
|
}
|
|
12130
12646
|
}, [
|
|
12131
12647
|
zoom,
|
|
12132
|
-
isZoomAvailable
|
|
12648
|
+
isZoomAvailable,
|
|
12649
|
+
reportError
|
|
12133
12650
|
]);
|
|
12134
12651
|
(0, $jQDcL$react.useEffect)(()=>{
|
|
12135
12652
|
const onLocalVideo = ()=>{
|
|
@@ -12199,9 +12716,11 @@ const $9a3d89191e7070cd$export$53819c0e58f98d49 = (props)=>{
|
|
|
12199
12716
|
|
|
12200
12717
|
|
|
12201
12718
|
|
|
12719
|
+
|
|
12202
12720
|
const $e86e3e83467d5bba$export$f9da3144ae2525a3 = ()=>{
|
|
12203
12721
|
const { streamUIContainerRef: streamUIContainerRef } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
|
|
12204
12722
|
const { mode: mode, isRecording: isRecording, setIsRecording: setIsRecording, videoElementRef: videoElementRef, addAsset: addAsset, setIncomingAsset: setIncomingAsset, openAssetsModal: openAssetsModal } = (0, $098350f721a0bb52$export$2174f25d572f9f31)();
|
|
12723
|
+
const reportError = (0, $8dfcca373a03b9e8$export$5a5695b638d078e7)();
|
|
12205
12724
|
const recordButtonRef = (0, $jQDcL$react.useRef)(null);
|
|
12206
12725
|
const [showFlashAnimation, setShowFlashAnimation] = (0, $jQDcL$react.useState)(false);
|
|
12207
12726
|
const [showCountdown, setShowCountdown] = (0, $jQDcL$react.useState)(false);
|
|
@@ -12217,45 +12736,79 @@ const $e86e3e83467d5bba$export$f9da3144ae2525a3 = ()=>{
|
|
|
12217
12736
|
createdAt: createdAt
|
|
12218
12737
|
});
|
|
12219
12738
|
openAssetsModal();
|
|
12220
|
-
|
|
12221
|
-
|
|
12222
|
-
|
|
12223
|
-
|
|
12224
|
-
|
|
12225
|
-
|
|
12226
|
-
|
|
12227
|
-
|
|
12228
|
-
|
|
12739
|
+
try {
|
|
12740
|
+
const image = await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).captureVideo(videoElementRef.current);
|
|
12741
|
+
const { url: url, assetId: assetId } = await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).saveCapture(image);
|
|
12742
|
+
addAsset({
|
|
12743
|
+
id: assetId,
|
|
12744
|
+
mode: "photo",
|
|
12745
|
+
url: url,
|
|
12746
|
+
thumbnailUrl: url,
|
|
12747
|
+
createdAt: createdAt
|
|
12748
|
+
});
|
|
12749
|
+
} catch (error) {
|
|
12750
|
+
reportError({
|
|
12751
|
+
code: "CAP_1",
|
|
12752
|
+
error: error
|
|
12753
|
+
});
|
|
12754
|
+
setIncomingAsset(null);
|
|
12755
|
+
}
|
|
12229
12756
|
openAssetsModal();
|
|
12230
12757
|
}
|
|
12231
12758
|
};
|
|
12232
12759
|
const onRecordClick = async ()=>{
|
|
12233
12760
|
if (isRecording) {
|
|
12234
12761
|
openAssetsModal();
|
|
12235
|
-
|
|
12762
|
+
try {
|
|
12763
|
+
await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).stopRecord();
|
|
12764
|
+
if (mode === "screen") (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).disableScreenshare().catch((error)=>reportError({
|
|
12765
|
+
code: "REC_3",
|
|
12766
|
+
error: error
|
|
12767
|
+
}));
|
|
12768
|
+
} catch (error) {
|
|
12769
|
+
reportError({
|
|
12770
|
+
code: "REC_1",
|
|
12771
|
+
error: error
|
|
12772
|
+
});
|
|
12773
|
+
}
|
|
12236
12774
|
} else setShowCountdown((prev)=>{
|
|
12237
12775
|
const next = !prev;
|
|
12238
12776
|
const { screenshare: screenshare } = (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getDevicesState();
|
|
12239
|
-
if (next === false && screenshare.enabled) (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).disableScreenshare()
|
|
12777
|
+
if (next === false && screenshare.enabled) (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).disableScreenshare().catch((error)=>reportError({
|
|
12778
|
+
code: "SC_2",
|
|
12779
|
+
error: error
|
|
12780
|
+
}));
|
|
12240
12781
|
return next;
|
|
12241
12782
|
});
|
|
12242
12783
|
};
|
|
12243
12784
|
const onCountdownFinish = async ()=>{
|
|
12244
|
-
|
|
12245
|
-
|
|
12246
|
-
|
|
12247
|
-
|
|
12248
|
-
|
|
12249
|
-
|
|
12250
|
-
|
|
12251
|
-
|
|
12252
|
-
|
|
12785
|
+
try {
|
|
12786
|
+
await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).startRecord();
|
|
12787
|
+
(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).audioLevel?.startAverageAnalysis();
|
|
12788
|
+
setShowCountdown(false);
|
|
12789
|
+
setIsRecording(true);
|
|
12790
|
+
const createdAt = Date.now();
|
|
12791
|
+
let thumbnail;
|
|
12792
|
+
try {
|
|
12793
|
+
if (mode !== "audio" && videoElementRef.current) {
|
|
12794
|
+
thumbnail = await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).captureVideo(undefined).catch(console.error);
|
|
12795
|
+
if (!thumbnail) thumbnail = await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).captureVideo(videoElementRef.current).catch(console.error);
|
|
12796
|
+
}
|
|
12797
|
+
} catch (err) {
|
|
12798
|
+
console.warn("Couldn't capture video for thumbnail", err);
|
|
12799
|
+
}
|
|
12800
|
+
setIncomingAsset({
|
|
12801
|
+
mode: mode,
|
|
12802
|
+
thumbnailUrl: thumbnail || undefined,
|
|
12803
|
+
createdAt: createdAt
|
|
12804
|
+
});
|
|
12805
|
+
} catch (error) {
|
|
12806
|
+
reportError({
|
|
12807
|
+
code: "REC_2",
|
|
12808
|
+
error: error
|
|
12809
|
+
});
|
|
12810
|
+
setShowCountdown(false);
|
|
12253
12811
|
}
|
|
12254
|
-
setIncomingAsset({
|
|
12255
|
-
mode: mode,
|
|
12256
|
-
thumbnailUrl: thumbnail || undefined,
|
|
12257
|
-
createdAt: createdAt
|
|
12258
|
-
});
|
|
12259
12812
|
};
|
|
12260
12813
|
(0, $jQDcL$react.useEffect)(()=>{
|
|
12261
12814
|
if (devicesState.screenshare.enabled && mode === "screen") recordButtonRef.current?.click();
|
|
@@ -12268,12 +12821,6 @@ const $e86e3e83467d5bba$export$f9da3144ae2525a3 = ()=>{
|
|
|
12268
12821
|
}, [
|
|
12269
12822
|
mode
|
|
12270
12823
|
]);
|
|
12271
|
-
(0, $jQDcL$react.useEffect)(()=>{
|
|
12272
|
-
const { screenshare: screenshare } = (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getDevicesState();
|
|
12273
|
-
if (!isRecording && screenshare.enabled) (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).disableScreenshare();
|
|
12274
|
-
}, [
|
|
12275
|
-
isRecording
|
|
12276
|
-
]);
|
|
12277
12824
|
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reactjsxruntime.Fragment), {
|
|
12278
12825
|
children: [
|
|
12279
12826
|
showFlashAnimation && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $2c45d365ee8aa1ab$export$2b501aee548bae06), {
|
|
@@ -12363,12 +12910,17 @@ const $d2c20674130d0e96$export$9ea2b4f70e201d7f = ({ className: className })=>{
|
|
|
12363
12910
|
|
|
12364
12911
|
|
|
12365
12912
|
|
|
12913
|
+
|
|
12366
12914
|
const $385bdeffb4b25e1f$export$c7c44baae9d9f25f = ()=>{
|
|
12367
12915
|
const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
|
|
12916
|
+
const reportError = (0, $8dfcca373a03b9e8$export$5a5695b638d078e7)();
|
|
12368
12917
|
const { mode: mode, isRecording: isRecording, assets: assets, openAssetsModal: openAssetsModal } = (0, $098350f721a0bb52$export$2174f25d572f9f31)();
|
|
12369
12918
|
const rotateVideo = ()=>{
|
|
12370
12919
|
const devicesState = (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getDevicesState();
|
|
12371
|
-
if (devicesState.camera.enabled) (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).rotateVideo()
|
|
12920
|
+
if (devicesState.camera.enabled) (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).rotateVideo().catch((error)=>reportError({
|
|
12921
|
+
code: "ROTT_1",
|
|
12922
|
+
error: error
|
|
12923
|
+
}));
|
|
12372
12924
|
};
|
|
12373
12925
|
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("div", {
|
|
12374
12926
|
className: "flex flex-col items-center gap-6 md:gap-4 w-full max-w-[500px] mx-auto z-50",
|
|
@@ -12702,10 +13254,11 @@ const $ae4a316f3f6b930e$export$54c6bcb39df9c9b9 = ({ state: state, flow: flow })
|
|
|
12702
13254
|
};
|
|
12703
13255
|
|
|
12704
13256
|
|
|
13257
|
+
|
|
12705
13258
|
const $3753c01d669182c5$var$browser = (0, ($parcel$interopDefault($jQDcL$bowser))).parse(window.navigator.userAgent);
|
|
12706
13259
|
const $3753c01d669182c5$export$336a011955157f9a = ()=>{
|
|
12707
|
-
const {
|
|
12708
|
-
const [mode, setMode] = (0, $jQDcL$react.useState)(
|
|
13260
|
+
const { flow: flow, flowV0: flowV0, recorderOptions: recorderOptions } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
|
|
13261
|
+
const [mode, setMode] = (0, $jQDcL$react.useState)(recorderOptions?.defaultMode || "photo");
|
|
12709
13262
|
const [assets, setAssets] = (0, $jQDcL$react.useState)([]);
|
|
12710
13263
|
const [isRecording, setIsRecording] = (0, $jQDcL$react.useState)(false);
|
|
12711
13264
|
const [incomingAsset, setIncomingAsset] = (0, $jQDcL$react.useState)(null);
|
|
@@ -12720,6 +13273,7 @@ const $3753c01d669182c5$export$336a011955157f9a = ()=>{
|
|
|
12720
13273
|
const switchToMobileModalState = (0, $jQDcL$reactstately.useOverlayTriggerState)({
|
|
12721
13274
|
defaultOpen: $3753c01d669182c5$var$browser.platform.type === "desktop" && !flow && !flowV0
|
|
12722
13275
|
});
|
|
13276
|
+
const reportError = (0, $8dfcca373a03b9e8$export$5a5695b638d078e7)();
|
|
12723
13277
|
const { company: company } = (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getState();
|
|
12724
13278
|
const devicesState = (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getDevicesState();
|
|
12725
13279
|
const hasVideo = devicesState.camera.enabled || devicesState.screenshare.enabled;
|
|
@@ -12731,8 +13285,15 @@ const $3753c01d669182c5$export$336a011955157f9a = ()=>{
|
|
|
12731
13285
|
setIncomingAsset(null);
|
|
12732
13286
|
}, []);
|
|
12733
13287
|
const removeAsset = async (assetId)=>{
|
|
12734
|
-
|
|
12735
|
-
|
|
13288
|
+
try {
|
|
13289
|
+
await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).deleteCapture(assetId);
|
|
13290
|
+
setAssets((currentAssets)=>currentAssets.filter((asset)=>asset.id !== assetId));
|
|
13291
|
+
} catch (error) {
|
|
13292
|
+
reportError({
|
|
13293
|
+
code: "DEL_CAP_1",
|
|
13294
|
+
error: error
|
|
13295
|
+
});
|
|
13296
|
+
}
|
|
12736
13297
|
};
|
|
12737
13298
|
(0, $jQDcL$react.useEffect)(()=>{
|
|
12738
13299
|
const onRecordStopped = (event)=>{
|
|
@@ -12773,9 +13334,13 @@ const $3753c01d669182c5$export$336a011955157f9a = ()=>{
|
|
|
12773
13334
|
]);
|
|
12774
13335
|
(0, $jQDcL$react.useEffect)(()=>{
|
|
12775
13336
|
const screenshareState = (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getDevicesState().screenshare;
|
|
12776
|
-
if (screenshareState.enabled && mode !== "screen") (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).disableScreenshare()
|
|
13337
|
+
if (screenshareState.enabled && mode !== "screen") (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).disableScreenshare().catch((error)=>reportError({
|
|
13338
|
+
code: "SC_1",
|
|
13339
|
+
error: error
|
|
13340
|
+
}));
|
|
12777
13341
|
}, [
|
|
12778
|
-
mode
|
|
13342
|
+
mode,
|
|
13343
|
+
reportError
|
|
12779
13344
|
]);
|
|
12780
13345
|
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
|
|
12781
13346
|
className: "antialiased inter dark-theme h-full",
|
|
@@ -12840,65 +13405,12 @@ const $3753c01d669182c5$export$336a011955157f9a = ()=>{
|
|
|
12840
13405
|
|
|
12841
13406
|
|
|
12842
13407
|
|
|
12843
|
-
|
|
12844
|
-
const $c5be709b60f6ba50$export$7f7cbe89f1eacd2 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
|
|
12845
|
-
border: 2px solid #ffffff;
|
|
12846
|
-
border-top: 2px solid #000000;
|
|
12847
|
-
border-radius: 50%;
|
|
12848
|
-
width: 24px;
|
|
12849
|
-
height: 24px;
|
|
12850
|
-
animation: spin 1s linear infinite;
|
|
12851
|
-
@keyframes spin {
|
|
12852
|
-
0% {
|
|
12853
|
-
transform: rotate(0deg);
|
|
12854
|
-
}
|
|
12855
|
-
100% {
|
|
12856
|
-
transform: rotate(360deg);
|
|
12857
|
-
}
|
|
12858
|
-
}
|
|
12859
|
-
`;
|
|
12860
|
-
const $c5be709b60f6ba50$export$3b0d6d7590275603 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
|
|
12861
|
-
position: absolute;
|
|
12862
|
-
background-color: #000000;
|
|
12863
|
-
opacity: 0.9;
|
|
12864
|
-
z-index: 999999;
|
|
12865
|
-
display: flex;
|
|
12866
|
-
vertical-align: middle;
|
|
12867
|
-
align-items: center;
|
|
12868
|
-
top: 0px;
|
|
12869
|
-
right: 0px;
|
|
12870
|
-
bottom: 0px;
|
|
12871
|
-
left: 0px;
|
|
12872
|
-
gap: 0.25rem;
|
|
12873
|
-
`;
|
|
12874
|
-
const $c5be709b60f6ba50$export$42a852a2b6b56249 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
|
|
12875
|
-
display: flex;
|
|
12876
|
-
gap: 25px;
|
|
12877
|
-
width: 100%;
|
|
12878
|
-
margin-left: auto;
|
|
12879
|
-
margin-right: auto;
|
|
12880
|
-
justify-content: center;
|
|
12881
|
-
align-items: center;
|
|
12882
|
-
vertical-align: middle;
|
|
12883
|
-
`;
|
|
12884
|
-
const $c5be709b60f6ba50$export$52e284bf30d0364a = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).h2`
|
|
12885
|
-
color: #ffffff;
|
|
12886
|
-
font-weight: 500;
|
|
12887
|
-
font-size: 14px;
|
|
12888
|
-
font-family: 'Lato';
|
|
12889
|
-
`;
|
|
12890
|
-
|
|
12891
|
-
|
|
12892
13408
|
const $7ce296d839195d38$export$669f6ea7d267feaf = ()=>{
|
|
12893
|
-
|
|
12894
|
-
|
|
12895
|
-
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.
|
|
12896
|
-
|
|
12897
|
-
|
|
12898
|
-
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $c5be709b60f6ba50$export$52e284bf30d0364a), {
|
|
12899
|
-
children: t("loader.connection")
|
|
12900
|
-
})
|
|
12901
|
-
]
|
|
13409
|
+
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("div", {
|
|
13410
|
+
className: "w-full h-full flex justify-center items-center bg-gray-1000",
|
|
13411
|
+
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.SpinnerIcon), {
|
|
13412
|
+
className: "animate-spin text-blue-700",
|
|
13413
|
+
size: 48
|
|
12902
13414
|
})
|
|
12903
13415
|
});
|
|
12904
13416
|
};
|
|
@@ -13641,62 +14153,63 @@ const $151f85d85248cda3$var$Bold = ({ children: children })=>/*#__PURE__*/ (0, $
|
|
|
13641
14153
|
});
|
|
13642
14154
|
const $151f85d85248cda3$export$ed71079a84f20635 = ()=>{
|
|
13643
14155
|
const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
|
|
13644
|
-
const
|
|
13645
|
-
const
|
|
13646
|
-
|
|
13647
|
-
|
|
13648
|
-
|
|
13649
|
-
|
|
13650
|
-
|
|
13651
|
-
|
|
14156
|
+
const queryClient = (0, $jQDcL$reactquery.useQueryClient)();
|
|
14157
|
+
const waitingRequests = (0, $jQDcL$reactquery.useQuery)({
|
|
14158
|
+
queryKey: [
|
|
14159
|
+
"waitingRequests"
|
|
14160
|
+
],
|
|
14161
|
+
queryFn: ()=>(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getWaitingRequests(),
|
|
14162
|
+
retry: false,
|
|
14163
|
+
refetchOnWindowFocus: false
|
|
14164
|
+
});
|
|
14165
|
+
const acceptWaitingRequest = (0, $jQDcL$reactquery.useMutation)({
|
|
14166
|
+
mutationFn: (id)=>(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).acceptAccessRequest(id),
|
|
14167
|
+
onSettled: ()=>queryClient.invalidateQueries([
|
|
14168
|
+
"waitingRequests"
|
|
14169
|
+
])
|
|
14170
|
+
});
|
|
14171
|
+
const denyWaitingRequest = (0, $jQDcL$reactquery.useMutation)({
|
|
14172
|
+
mutationFn: (id)=>(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).denyAccessRequest(id),
|
|
14173
|
+
onSettled: ()=>queryClient.invalidateQueries([
|
|
14174
|
+
"waitingRequests"
|
|
14175
|
+
])
|
|
14176
|
+
});
|
|
14177
|
+
const hasWaitingRequests = (waitingRequests.data?.length || 0) > 0;
|
|
14178
|
+
const firstWaitingRequest = waitingRequests.data?.[0];
|
|
14179
|
+
const isProcessingWaitingRequest = acceptWaitingRequest.isLoading || denyWaitingRequest.isLoading;
|
|
13652
14180
|
(0, $jQDcL$react.useEffect)(()=>{
|
|
13653
14181
|
const onAccessRequest = (event)=>{
|
|
13654
|
-
|
|
13655
|
-
|
|
13656
|
-
|
|
13657
|
-
|
|
13658
|
-
|
|
13659
|
-
|
|
13660
|
-
|
|
13661
|
-
|
|
13662
|
-
|
|
13663
|
-
|
|
13664
|
-
|
|
13665
|
-
modalState,
|
|
13666
|
-
requests
|
|
13667
|
-
]);
|
|
13668
|
-
(0, $jQDcL$react.useEffect)(()=>{
|
|
13669
|
-
const onEnterRoom = async (event)=>{
|
|
13670
|
-
setRequests(event.detail.waitingRequests);
|
|
13671
|
-
};
|
|
13672
|
-
(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("enterRoom", onEnterRoom);
|
|
13673
|
-
return ()=>{
|
|
13674
|
-
(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("enterRoom", onEnterRoom);
|
|
14182
|
+
queryClient.setQueryData([
|
|
14183
|
+
"waitingRequests"
|
|
14184
|
+
], (oldData)=>{
|
|
14185
|
+
if (oldData) return [
|
|
14186
|
+
...oldData,
|
|
14187
|
+
event.detail
|
|
14188
|
+
];
|
|
14189
|
+
return [
|
|
14190
|
+
event.detail
|
|
14191
|
+
];
|
|
14192
|
+
});
|
|
13675
14193
|
};
|
|
13676
|
-
}, [
|
|
13677
|
-
modalState
|
|
13678
|
-
]);
|
|
13679
|
-
(0, $jQDcL$react.useEffect)(()=>{
|
|
13680
14194
|
const onCancelAccessRequest = async (event)=>{
|
|
13681
|
-
|
|
13682
|
-
|
|
13683
|
-
|
|
14195
|
+
queryClient.setQueryData([
|
|
14196
|
+
"waitingRequests"
|
|
14197
|
+
], (oldData)=>{
|
|
14198
|
+
if (oldData) return oldData.filter((data)=>data.id !== event.detail.id);
|
|
14199
|
+
return [];
|
|
13684
14200
|
});
|
|
13685
|
-
setRequests(removeCanceled);
|
|
13686
14201
|
};
|
|
14202
|
+
(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("accessRequest", onAccessRequest);
|
|
13687
14203
|
(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("cancelAccessRequest", onCancelAccessRequest);
|
|
13688
14204
|
return ()=>{
|
|
14205
|
+
(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("accessRequest", onAccessRequest);
|
|
13689
14206
|
(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("cancelAccessRequest", onCancelAccessRequest);
|
|
13690
14207
|
};
|
|
13691
14208
|
}, [
|
|
13692
|
-
|
|
13693
|
-
requests
|
|
14209
|
+
queryClient
|
|
13694
14210
|
]);
|
|
13695
14211
|
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.AlertDialog), {
|
|
13696
|
-
open:
|
|
13697
|
-
onOpenChange: (open)=>{
|
|
13698
|
-
modalState.setOpen(open);
|
|
13699
|
-
},
|
|
14212
|
+
open: hasWaitingRequests,
|
|
13700
14213
|
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$snapcalldesignsystem.AlertDialogContent), {
|
|
13701
14214
|
children: [
|
|
13702
14215
|
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.AlertDialogHeader), {
|
|
@@ -13705,14 +14218,14 @@ const $151f85d85248cda3$export$ed71079a84f20635 = ()=>{
|
|
|
13705
14218
|
children: [
|
|
13706
14219
|
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.Avatar), {
|
|
13707
14220
|
className: "w-[54px] h-[54px] text-3xl font-semibold",
|
|
13708
|
-
name:
|
|
14221
|
+
name: firstWaitingRequest?.profile?.name || t("requestAccess.defaultName")
|
|
13709
14222
|
}),
|
|
13710
14223
|
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
|
|
13711
14224
|
className: "w-full text-center text-lg font-normal",
|
|
13712
14225
|
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$reacti18next.Trans), {
|
|
13713
14226
|
i18nKey: "requestAccess.wantToJoin",
|
|
13714
14227
|
values: {
|
|
13715
|
-
name:
|
|
14228
|
+
name: firstWaitingRequest?.profile?.name || t("requestAccess.defaultName")
|
|
13716
14229
|
},
|
|
13717
14230
|
components: {
|
|
13718
14231
|
bold: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($151f85d85248cda3$var$Bold, {})
|
|
@@ -13727,19 +14240,17 @@ const $151f85d85248cda3$export$ed71079a84f20635 = ()=>{
|
|
|
13727
14240
|
children: [
|
|
13728
14241
|
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.AlertDialogCancel), {
|
|
13729
14242
|
className: "w-full",
|
|
14243
|
+
disabled: isProcessingWaitingRequest,
|
|
13730
14244
|
onClick: ()=>{
|
|
13731
|
-
(
|
|
13732
|
-
requests.shift();
|
|
13733
|
-
setRequests(requests);
|
|
14245
|
+
if (firstWaitingRequest) denyWaitingRequest.mutate(firstWaitingRequest.id);
|
|
13734
14246
|
},
|
|
13735
14247
|
children: t("requestAccess.deny")
|
|
13736
14248
|
}),
|
|
13737
14249
|
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.AlertDialogAction), {
|
|
13738
14250
|
className: "w-full",
|
|
14251
|
+
disabled: isProcessingWaitingRequest,
|
|
13739
14252
|
onClick: ()=>{
|
|
13740
|
-
(
|
|
13741
|
-
requests.shift();
|
|
13742
|
-
setRequests(requests);
|
|
14253
|
+
if (firstWaitingRequest) acceptWaitingRequest.mutate(firstWaitingRequest.id);
|
|
13743
14254
|
},
|
|
13744
14255
|
variant: "primary",
|
|
13745
14256
|
children: t("requestAccess.admit")
|
|
@@ -13756,13 +14267,19 @@ const $ee8cb448c2c74888$var$currentTheme = (0, $9295e87e6b93e693$export$3bfd0d52
|
|
|
13756
14267
|
const $ee8cb448c2c74888$var$currentLanguage = (0, $393bda1b33846dfc$export$604ba5624273df44)();
|
|
13757
14268
|
const $ee8cb448c2c74888$var$queryClient = new (0, $jQDcL$reactquery.QueryClient)();
|
|
13758
14269
|
let $ee8cb448c2c74888$var$timestampCriticalError = -1;
|
|
13759
|
-
const $ee8cb448c2c74888$var$
|
|
14270
|
+
const $ee8cb448c2c74888$var$endViewStates = [
|
|
14271
|
+
"ended",
|
|
14272
|
+
"terminated",
|
|
14273
|
+
"expired",
|
|
14274
|
+
"full"
|
|
14275
|
+
];
|
|
14276
|
+
const $ee8cb448c2c74888$var$StreamUI = ({ options: options })=>{
|
|
13760
14277
|
const { t: t } = (0, $jQDcL$reacti18next.useTranslation)();
|
|
13761
14278
|
const [selfPeerId, setSelfPeerId] = (0, $jQDcL$react.useState)(undefined);
|
|
13762
14279
|
const streamUIContainerRef = (0, $jQDcL$react.useRef)(null);
|
|
13763
14280
|
const videosContainerRef = (0, $jQDcL$react.useRef)(null);
|
|
13764
14281
|
const remoteTilesContainerRef = (0, $jQDcL$react.useRef)(null);
|
|
13765
|
-
const [streamState, setStreamState] = (0, $jQDcL$react.useState)(options.
|
|
14282
|
+
const [streamState, setStreamState] = (0, $jQDcL$react.useState)(options.greeting ? "greeting" : "loading");
|
|
13766
14283
|
const [isQuickConnectPopupVisible, setIsQuickConnectPopupVisible] = (0, $jQDcL$react.useState)(false);
|
|
13767
14284
|
const [isSettingsMenuVisible, setIsSettingsMenuVisible] = (0, $jQDcL$react.useState)(false);
|
|
13768
14285
|
const [isYoutubePopupVisible, setIsYoutubePopupVisible] = (0, $jQDcL$react.useState)(false);
|
|
@@ -13786,6 +14303,9 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options, flow: flow, flowV0:
|
|
|
13786
14303
|
const [isRecordingStartPopupOpen, setRecordingStartPopupOpen] = (0, $jQDcL$react.useState)(false);
|
|
13787
14304
|
const [permissions, setPermissions] = (0, $jQDcL$react.useState)([]);
|
|
13788
14305
|
const [plan, setPlan] = (0, $jQDcL$react.useState)(undefined);
|
|
14306
|
+
const [flows, setFlows] = (0, $jQDcL$react.useState)({});
|
|
14307
|
+
const [recorderOptions, setRecorderOptions] = (0, $jQDcL$react.useState)(options.recorder);
|
|
14308
|
+
const isFirstRender = (0, $67040444b405b263$export$5964c316e853650f)();
|
|
13789
14309
|
const orientation = (containerWidth || window.screen.width) > (containerHeight || window.screen.height) ? "landscape" : "portrait";
|
|
13790
14310
|
const styledTheme = theme === "dark" ? (0, $9295e87e6b93e693$export$3e936a8db52a10a0) : (0, $9295e87e6b93e693$export$f30cb9bc4f736419);
|
|
13791
14311
|
const onWebcamUpdate = (event)=>{
|
|
@@ -13866,9 +14386,6 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options, flow: flow, flowV0:
|
|
|
13866
14386
|
name: name,
|
|
13867
14387
|
avatarUrl: avatarUrl
|
|
13868
14388
|
});
|
|
13869
|
-
if (email) (0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).identify(null, {
|
|
13870
|
-
email: email
|
|
13871
|
-
});
|
|
13872
14389
|
} else (0, ($parcel$interopDefault($jQDcL$reacthottoast)))("An error occured while trying to join the room as an agent", {
|
|
13873
14390
|
className: "error"
|
|
13874
14391
|
});
|
|
@@ -13893,6 +14410,49 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options, flow: flow, flowV0:
|
|
|
13893
14410
|
duration: duration
|
|
13894
14411
|
});
|
|
13895
14412
|
};
|
|
14413
|
+
const onClientInitialized = (0, $jQDcL$react.useCallback)(async (event)=>{
|
|
14414
|
+
const { flow: flow, flowV0: flowV0 } = event.detail;
|
|
14415
|
+
const flowStep = flow?.steps[0];
|
|
14416
|
+
if (flowStep) {
|
|
14417
|
+
const flowStepMode = flowStep.type === "image" ? "photo" : flowStep.type;
|
|
14418
|
+
setRecorderOptions({
|
|
14419
|
+
enabledModes: [
|
|
14420
|
+
flowStepMode
|
|
14421
|
+
],
|
|
14422
|
+
enabled: true,
|
|
14423
|
+
defaultMode: flowStepMode,
|
|
14424
|
+
skipOnboarding: false
|
|
14425
|
+
});
|
|
14426
|
+
await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).setStep(flowStep.token);
|
|
14427
|
+
}
|
|
14428
|
+
const isRecorder = options.recorder?.enabled || Boolean(flowStep);
|
|
14429
|
+
if (!options.greeting) {
|
|
14430
|
+
if (isRecorder) await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).joinRecorder();
|
|
14431
|
+
else await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).joinRoom();
|
|
14432
|
+
}
|
|
14433
|
+
const state = (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getState();
|
|
14434
|
+
const peerId = state.peerId;
|
|
14435
|
+
setPlan(state.plan);
|
|
14436
|
+
setPermissions(state.permissions);
|
|
14437
|
+
setSelfPeerId(peerId);
|
|
14438
|
+
setFlows({
|
|
14439
|
+
flow: flow,
|
|
14440
|
+
flowV0: flowV0
|
|
14441
|
+
});
|
|
14442
|
+
if (!isRecorder && !options.greeting) try {
|
|
14443
|
+
if (!options.headless) await (0, $c3d5253d9d597eb5$export$494039379563c94d)(options);
|
|
14444
|
+
if (options.controls?.microphone?.enabled) await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableMicrophone();
|
|
14445
|
+
if (options.controls?.camera?.enabled) await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableVideo();
|
|
14446
|
+
setUserInteractionTriggered(true);
|
|
14447
|
+
} catch (userInteractionError) {
|
|
14448
|
+
setBlockedDevicesPopupOpen(true);
|
|
14449
|
+
console.error("User interaction trigger failed", userInteractionError);
|
|
14450
|
+
} finally{
|
|
14451
|
+
setStreamState("streaming");
|
|
14452
|
+
}
|
|
14453
|
+
}, [
|
|
14454
|
+
options
|
|
14455
|
+
]);
|
|
13896
14456
|
(0, $jQDcL$react.useEffect)(()=>{
|
|
13897
14457
|
try {
|
|
13898
14458
|
localStorage.setItem("stream_ui_theme", theme);
|
|
@@ -13903,7 +14463,9 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options, flow: flow, flowV0:
|
|
|
13903
14463
|
theme
|
|
13904
14464
|
]);
|
|
13905
14465
|
(0, $jQDcL$react.useEffect)(()=>{
|
|
13906
|
-
|
|
14466
|
+
const translationLanguage = (0, $b45c0bcc142f0b5e$export$150b732325d14d04)[language];
|
|
14467
|
+
if (!translationLanguage) setLanguage("en");
|
|
14468
|
+
else try {
|
|
13907
14469
|
localStorage.setItem("stream_ui_language", language);
|
|
13908
14470
|
(0, $b45c0bcc142f0b5e$export$2e2bcd8739ae039).changeLanguage(language);
|
|
13909
14471
|
} catch (localStorageError) {
|
|
@@ -13913,6 +14475,7 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options, flow: flow, flowV0:
|
|
|
13913
14475
|
language
|
|
13914
14476
|
]);
|
|
13915
14477
|
(0, $jQDcL$react.useEffect)(()=>{
|
|
14478
|
+
(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("initialized", onClientInitialized);
|
|
13916
14479
|
(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("localVideoAvailable", onWebcamUpdate);
|
|
13917
14480
|
(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("localVideoUnavailable", onWebcamUpdate);
|
|
13918
14481
|
(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("screenshareEnabled", onScreenshareUpdate);
|
|
@@ -13931,6 +14494,7 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options, flow: flow, flowV0:
|
|
|
13931
14494
|
(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("videoRecordingStopped", onVideoRecordingStopped);
|
|
13932
14495
|
(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("videoRecordingRequested", onVideoRecordingRequested);
|
|
13933
14496
|
return ()=>{
|
|
14497
|
+
(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("initialized", onClientInitialized);
|
|
13934
14498
|
(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("localVideoAvailable", onWebcamUpdate);
|
|
13935
14499
|
(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("localVideoUnavailable", onWebcamUpdate);
|
|
13936
14500
|
(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("screenshareEnabled", onScreenshareUpdate);
|
|
@@ -13950,30 +14514,9 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options, flow: flow, flowV0:
|
|
|
13950
14514
|
(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("videoRecordingRequested", onVideoRecordingRequested);
|
|
13951
14515
|
};
|
|
13952
14516
|
}, [
|
|
13953
|
-
onVideoRecordingRequested
|
|
14517
|
+
onVideoRecordingRequested,
|
|
14518
|
+
onClientInitialized
|
|
13954
14519
|
]);
|
|
13955
|
-
(0, $jQDcL$react.useEffect)(()=>{
|
|
13956
|
-
const startStreaming = async ()=>{
|
|
13957
|
-
if (!options.greeting && !options.recorder?.enabled) await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).joinRoom();
|
|
13958
|
-
const state = (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getState();
|
|
13959
|
-
const peerId = state.peerId;
|
|
13960
|
-
setPlan(state.plan);
|
|
13961
|
-
setPermissions(state.permissions);
|
|
13962
|
-
setSelfPeerId(peerId);
|
|
13963
|
-
if (!options.recorder?.enabled && !options.greeting) try {
|
|
13964
|
-
if (!options.headless) await (0, $c3d5253d9d597eb5$export$494039379563c94d)(options);
|
|
13965
|
-
if (options.controls?.microphone?.enabled) await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableMicrophone();
|
|
13966
|
-
if (options.controls?.camera?.enabled) await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableVideo();
|
|
13967
|
-
setUserInteractionTriggered(true);
|
|
13968
|
-
} catch (userInteractionError) {
|
|
13969
|
-
setBlockedDevicesPopupOpen(true);
|
|
13970
|
-
console.error("User interaction trigger failed", userInteractionError);
|
|
13971
|
-
} finally{
|
|
13972
|
-
setStreamState("streaming");
|
|
13973
|
-
}
|
|
13974
|
-
};
|
|
13975
|
-
startStreaming();
|
|
13976
|
-
}, []);
|
|
13977
14520
|
(0, $jQDcL$react.useEffect)(()=>{
|
|
13978
14521
|
const onEnterRoom = async (event)=>{
|
|
13979
14522
|
setVideoRecording(event.detail.videoRecording || {
|
|
@@ -13987,21 +14530,38 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options, flow: flow, flowV0:
|
|
|
13987
14530
|
fontWeight: 600
|
|
13988
14531
|
}
|
|
13989
14532
|
});
|
|
13990
|
-
if (
|
|
14533
|
+
if (recorderOptions?.enabled) setStreamState("recorder");
|
|
14534
|
+
else setStreamState("streaming");
|
|
13991
14535
|
};
|
|
13992
14536
|
(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("enterRoom", onEnterRoom);
|
|
13993
14537
|
return ()=>{
|
|
13994
14538
|
(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("enterRoom", onEnterRoom);
|
|
13995
14539
|
};
|
|
13996
14540
|
}, [
|
|
13997
|
-
|
|
14541
|
+
recorderOptions,
|
|
13998
14542
|
t
|
|
13999
14543
|
]);
|
|
14544
|
+
(0, $jQDcL$react.useEffect)(()=>{
|
|
14545
|
+
if (isFirstRender) {
|
|
14546
|
+
if (options.token) (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).init(options.token, {
|
|
14547
|
+
languageCode: options.language,
|
|
14548
|
+
flowToken: options.flowToken,
|
|
14549
|
+
recorder: options.recorder?.enabled,
|
|
14550
|
+
apiKey: options.apiKey,
|
|
14551
|
+
email: options.email,
|
|
14552
|
+
profile: options.profile,
|
|
14553
|
+
authKey: options.authKey
|
|
14554
|
+
}).catch((err)=>console.error(err));
|
|
14555
|
+
else setStreamState("expired");
|
|
14556
|
+
}
|
|
14557
|
+
}, [
|
|
14558
|
+
options,
|
|
14559
|
+
isFirstRender
|
|
14560
|
+
]);
|
|
14000
14561
|
return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$reactquery.QueryClientProvider), {
|
|
14001
14562
|
client: $ee8cb448c2c74888$var$queryClient,
|
|
14002
14563
|
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8b39f32976a7698a$export$2e2bcd8739ae039).Provider, {
|
|
14003
14564
|
value: {
|
|
14004
|
-
token: options.token || "",
|
|
14005
14565
|
videoRecording: videoRecording,
|
|
14006
14566
|
setVideoRecording: setVideoRecording,
|
|
14007
14567
|
headless: Boolean(options.headless),
|
|
@@ -14039,9 +14599,9 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options, flow: flow, flowV0:
|
|
|
14039
14599
|
isAgent: isAgent,
|
|
14040
14600
|
userInteractionTriggered: userInteractionTriggered,
|
|
14041
14601
|
orientation: orientation,
|
|
14042
|
-
flow: flow,
|
|
14043
|
-
flowV0: flowV0,
|
|
14044
|
-
|
|
14602
|
+
flow: flows.flow,
|
|
14603
|
+
flowV0: flows.flowV0,
|
|
14604
|
+
recorderOptions: recorderOptions
|
|
14045
14605
|
},
|
|
14046
14606
|
children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$styledcomponents.ThemeProvider), {
|
|
14047
14607
|
theme: styledTheme,
|
|
@@ -14051,7 +14611,6 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options, flow: flow, flowV0:
|
|
|
14051
14611
|
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $e3bb2c5d0e5b45b5$export$914ddf2021ea8ee6), {
|
|
14052
14612
|
ref: streamUIContainerRef,
|
|
14053
14613
|
children: [
|
|
14054
|
-
streamState === "loading" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $7ce296d839195d38$export$669f6ea7d267feaf), {}),
|
|
14055
14614
|
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $e66cc5db58913155$export$2e2bcd8739ae039), {}),
|
|
14056
14615
|
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$snapcalldesignsystem.Toaster), {
|
|
14057
14616
|
duration: 3000,
|
|
@@ -14064,20 +14623,17 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options, flow: flow, flowV0:
|
|
|
14064
14623
|
setBlockedDevicesPopupOpen(false);
|
|
14065
14624
|
}
|
|
14066
14625
|
}),
|
|
14067
|
-
streamState === "greeting"
|
|
14068
|
-
|
|
14069
|
-
|
|
14070
|
-
|
|
14071
|
-
|
|
14072
|
-
|
|
14073
|
-
|
|
14074
|
-
|
|
14075
|
-
|
|
14076
|
-
|
|
14077
|
-
|
|
14078
|
-
})
|
|
14079
|
-
}),
|
|
14080
|
-
(streamState === "ended" || streamState === "terminated" || streamState === "full" || streamState === "expired") && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3d1bfd8f074b99b1$export$2e2bcd8739ae039), {})
|
|
14626
|
+
streamState === "loading" ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $7ce296d839195d38$export$669f6ea7d267feaf), {}) : streamState === "greeting" ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $317aa81f07421dfd$export$2e2bcd8739ae039), {}) : streamState === "recorder" ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3753c01d669182c5$export$336a011955157f9a), {}) : streamState === "streaming" ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $3f6e908c45fcc5b3$export$74636703cfe1eecf), {
|
|
14627
|
+
children: [
|
|
14628
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $151f85d85248cda3$export$ed71079a84f20635), {}),
|
|
14629
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $e1930b467e7d8845$export$2e2bcd8739ae039), {}),
|
|
14630
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $88b23a8428e67b66$export$2e2bcd8739ae039), {}),
|
|
14631
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $a21b2aa064cb6c32$export$2e2bcd8739ae039), {}),
|
|
14632
|
+
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f509eaff0d9c05a$export$2e2bcd8739ae039), {})
|
|
14633
|
+
]
|
|
14634
|
+
}) : $ee8cb448c2c74888$var$endViewStates.includes(streamState) ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3d1bfd8f074b99b1$export$2e2bcd8739ae039), {
|
|
14635
|
+
state: streamState
|
|
14636
|
+
}) : /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $7ce296d839195d38$export$669f6ea7d267feaf), {})
|
|
14081
14637
|
]
|
|
14082
14638
|
})
|
|
14083
14639
|
]
|
|
@@ -14089,17 +14645,9 @@ var $ee8cb448c2c74888$export$2e2bcd8739ae039 = $ee8cb448c2c74888$var$StreamUI;
|
|
|
14089
14645
|
|
|
14090
14646
|
|
|
14091
14647
|
|
|
14092
|
-
// https://help.hotjar.com/hc/en-us/articles/360033640653-Identify-API-Reference#01G2A279ZXW4JT60NKXKX69G49
|
|
14093
|
-
// prettier-ignore
|
|
14094
|
-
// @ts-ignore
|
|
14095
|
-
window.hj = window.hj || function() {
|
|
14096
|
-
(hj.q = hj.q || []).push(arguments);
|
|
14097
|
-
};
|
|
14098
|
-
|
|
14099
|
-
|
|
14100
14648
|
|
|
14101
14649
|
var $54541b0286afc2de$exports = {};
|
|
14102
|
-
$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-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\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: #93c5fd80;\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 --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\n}\n\n.container {\n width: 100%;\n}\n\n@media (width >= 640px) {\n .container {\n max-width: 640px;\n }\n}\n\n@media (width >= 768px) {\n .container {\n max-width: 768px;\n }\n}\n\n@media (width >= 1024px) {\n .container {\n max-width: 1024px;\n }\n}\n\n@media (width >= 1280px) {\n .container {\n max-width: 1280px;\n }\n}\n\n@media (width >= 1536px) {\n .container {\n max-width: 1536px;\n }\n}\n\n.sr-only {\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n position: absolute;\n overflow: hidden;\n}\n\n.pointer-events-auto {\n pointer-events: auto;\n}\n\n.visible {\n visibility: visible;\n}\n\n.invisible {\n visibility: hidden;\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.inset-x-0 {\n left: 0;\n right: 0;\n}\n\n.inset-y-0 {\n top: 0;\n bottom: 0;\n}\n\n.-bottom-12 {\n bottom: -3rem;\n}\n\n.-left-12 {\n left: -3rem;\n}\n\n.-right-12 {\n right: -3rem;\n}\n\n.-top-12 {\n top: -3rem;\n}\n\n.bottom-0 {\n bottom: 0;\n}\n\n.bottom-2 {\n bottom: .5rem;\n}\n\n.left-0 {\n left: 0;\n}\n\n.left-1 {\n left: .25rem;\n}\n\n.left-1\\/2 {\n left: 50%;\n}\n\n.left-2 {\n left: .5rem;\n}\n\n.left-\\[50\\%\\] {\n left: 50%;\n}\n\n.right-0 {\n right: 0;\n}\n\n.right-1 {\n right: .25rem;\n}\n\n.right-2 {\n right: .5rem;\n}\n\n.right-6 {\n right: 1.5rem;\n}\n\n.top-0 {\n top: 0;\n}\n\n.top-1\\/2 {\n top: 50%;\n}\n\n.top-2 {\n top: .5rem;\n}\n\n.top-6 {\n top: 1.5rem;\n}\n\n.top-8 {\n top: 2rem;\n}\n\n.top-\\[50\\%\\] {\n top: 50%;\n}\n\n.top-auto {\n top: auto;\n}\n\n.z-40 {\n z-index: 40;\n}\n\n.z-50 {\n z-index: 50;\n}\n\n.z-\\[100\\] {\n z-index: 100;\n}\n\n.z-\\[150\\] {\n z-index: 150;\n}\n\n.-mx-1 {\n margin-left: -.25rem;\n margin-right: -.25rem;\n}\n\n.mx-1 {\n margin-left: .25rem;\n margin-right: .25rem;\n}\n\n.mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n\n.my-1 {\n margin-top: .25rem;\n margin-bottom: .25rem;\n}\n\n.-ml-4 {\n margin-left: -1rem;\n}\n\n.-mr-2 {\n margin-right: -.5rem;\n}\n\n.-mt-4 {\n margin-top: -1rem;\n}\n\n.mb-4 {\n margin-bottom: 1rem;\n}\n\n.mb-6 {\n margin-bottom: 1.5rem;\n}\n\n.mb-\\[9px\\] {\n margin-bottom: 9px;\n}\n\n.ml-1 {\n margin-left: .25rem;\n}\n\n.mr-2 {\n margin-right: .5rem;\n}\n\n.mr-2\\.5 {\n margin-right: .625rem;\n}\n\n.mr-9 {\n margin-right: 2.25rem;\n}\n\n.mt-1 {\n margin-top: .25rem;\n}\n\n.mt-2 {\n margin-top: .5rem;\n}\n\n.box-border {\n box-sizing: border-box;\n}\n\n.block {\n display: block;\n}\n\n.inline-block {\n display: inline-block;\n}\n\n.inline {\n display: inline;\n}\n\n.flex {\n display: flex;\n}\n\n.inline-flex {\n display: inline-flex;\n}\n\n.table {\n display: table;\n}\n\n.grid {\n display: grid;\n}\n\n.hidden {\n display: none;\n}\n\n.aspect-square {\n aspect-ratio: 1;\n}\n\n.h-1\\/3 {\n height: 33.3333%;\n}\n\n.h-10 {\n height: 2.5rem;\n}\n\n.h-12 {\n height: 3rem;\n}\n\n.h-14 {\n height: 3.5rem;\n}\n\n.h-16 {\n height: 4rem;\n}\n\n.h-2 {\n height: .5rem;\n}\n\n.h-3 {\n height: .75rem;\n}\n\n.h-4 {\n height: 1rem;\n}\n\n.h-6 {\n height: 1.5rem;\n}\n\n.h-8 {\n height: 2rem;\n}\n\n.h-9 {\n height: 2.25rem;\n}\n\n.h-\\[100px\\] {\n height: 100px;\n}\n\n.h-\\[16px\\] {\n height: 16px;\n}\n\n.h-\\[1px\\] {\n height: 1px;\n}\n\n.h-\\[200px\\] {\n height: 200px;\n}\n\n.h-\\[24px\\] {\n height: 24px;\n}\n\n.h-\\[36px\\] {\n height: 36px;\n}\n\n.h-\\[400px\\] {\n height: 400px;\n}\n\n.h-\\[45px\\] {\n height: 45px;\n}\n\n.h-\\[54px\\] {\n height: 54px;\n}\n\n.h-\\[70px\\] {\n height: 70px;\n}\n\n.h-\\[72px\\] {\n height: 72px;\n}\n\n.h-\\[8px\\] {\n height: 8px;\n}\n\n.h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n}\n\n.h-full {\n height: 100%;\n}\n\n.h-px {\n height: 1px;\n}\n\n.h-screen {\n height: 100vh;\n}\n\n.max-h-\\[180px\\] {\n max-height: 180px;\n}\n\n.max-h-\\[300px\\] {\n max-height: 300px;\n}\n\n.max-h-\\[70px\\] {\n max-height: 70px;\n}\n\n.max-h-\\[90\\%\\] {\n max-height: 90%;\n}\n\n.max-h-\\[90vh\\] {\n max-height: 90vh;\n}\n\n.max-h-screen {\n max-height: 100vh;\n}\n\n.min-h-0 {\n min-height: 0;\n}\n\n.min-h-9 {\n min-height: 2.25rem;\n}\n\n.min-h-\\[20px\\] {\n min-height: 20px;\n}\n\n.min-h-\\[80px\\] {\n min-height: 80px;\n}\n\n.w-1\\/3 {\n width: 33.3333%;\n}\n\n.w-10 {\n width: 2.5rem;\n}\n\n.w-12 {\n width: 3rem;\n}\n\n.w-16 {\n width: 4rem;\n}\n\n.w-2 {\n width: .5rem;\n}\n\n.w-3 {\n width: .75rem;\n}\n\n.w-3\\/4 {\n width: 75%;\n}\n\n.w-4 {\n width: 1rem;\n}\n\n.w-6 {\n width: 1.5rem;\n}\n\n.w-72 {\n width: 18rem;\n}\n\n.w-8 {\n width: 2rem;\n}\n\n.w-\\[100px\\] {\n width: 100px;\n}\n\n.w-\\[16px\\] {\n width: 16px;\n}\n\n.w-\\[24px\\] {\n width: 24px;\n}\n\n.w-\\[334px\\] {\n width: 334px;\n}\n\n.w-\\[36px\\] {\n width: 36px;\n}\n\n.w-\\[400px\\] {\n width: 400px;\n}\n\n.w-\\[42px\\] {\n width: 42px;\n}\n\n.w-\\[45px\\] {\n width: 45px;\n}\n\n.w-\\[54px\\] {\n width: 54px;\n}\n\n.w-\\[70px\\] {\n width: 70px;\n}\n\n.w-\\[72px\\] {\n width: 72px;\n}\n\n.w-\\[8px\\] {\n width: 8px;\n}\n\n.w-auto {\n width: auto;\n}\n\n.w-full {\n width: 100%;\n}\n\n.w-max {\n width: max-content;\n}\n\n.min-w-0 {\n min-width: 0;\n}\n\n.min-w-\\[144px\\] {\n min-width: 144px;\n}\n\n.min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n}\n\n.min-w-full {\n min-width: 100%;\n}\n\n.max-w-\\[315px\\] {\n max-width: 315px;\n}\n\n.max-w-\\[400px\\] {\n max-width: 400px;\n}\n\n.max-w-\\[500px\\] {\n max-width: 500px;\n}\n\n.max-w-\\[70px\\] {\n max-width: 70px;\n}\n\n.max-w-\\[800px\\] {\n max-width: 800px;\n}\n\n.max-w-\\[90\\%\\] {\n max-width: 90%;\n}\n\n.max-w-\\[90vw\\] {\n max-width: 90vw;\n}\n\n.max-w-full {\n max-width: 100%;\n}\n\n.flex-1 {\n flex: 1;\n}\n\n.flex-shrink-0, .shrink-0 {\n flex-shrink: 0;\n}\n\n.flex-grow, .grow {\n flex-grow: 1;\n}\n\n.grow-0 {\n flex-grow: 0;\n}\n\n.basis-full {\n flex-basis: 100%;\n}\n\n.caption-bottom {\n caption-side: bottom;\n}\n\n.border-collapse {\n border-collapse: collapse;\n}\n\n.-translate-x-1\\/2 {\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 --tw-translate-x: -50%;\n}\n\n.-translate-y-1\\/2 {\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 --tw-translate-y: -50%;\n}\n\n.translate-x-0 {\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 --tw-translate-x: 0px;\n}\n\n.translate-x-0\\.5 {\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 --tw-translate-x: .125rem;\n}\n\n.translate-x-\\[-50\\%\\] {\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 --tw-translate-x: -50%;\n}\n\n.translate-y-0 {\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 --tw-translate-y: 0px;\n}\n\n.translate-y-\\[-50\\%\\] {\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 --tw-translate-y: -50%;\n}\n\n.-scale-x-\\[1\\], .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 --tw-scale-x: -1;\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 pulse {\n 50% {\n opacity: .5;\n }\n}\n\n.animate-pulse {\n animation: 2s cubic-bezier(.4, 0, .6, 1) infinite pulse;\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-default {\n cursor: default;\n}\n\n.cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.select-none {\n -webkit-user-select: none;\n user-select: none;\n}\n\n.resize {\n resize: both;\n}\n\n.appearance-none {\n appearance: none;\n}\n\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n.flex-row {\n flex-direction: row;\n}\n\n.flex-col {\n flex-direction: column;\n}\n\n.flex-col-reverse {\n flex-direction: column-reverse;\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.items-stretch {\n align-items: stretch;\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-0 {\n gap: 0;\n}\n\n.gap-0\\.5 {\n gap: .125rem;\n}\n\n.gap-1 {\n gap: .25rem;\n}\n\n.gap-1\\.5 {\n gap: .375rem;\n}\n\n.gap-12 {\n gap: 3rem;\n}\n\n.gap-2 {\n gap: .5rem;\n}\n\n.gap-2\\.5 {\n gap: .625rem;\n}\n\n.gap-3 {\n gap: .75rem;\n}\n\n.gap-4 {\n gap: 1rem;\n}\n\n.gap-6 {\n gap: 1.5rem;\n}\n\n.gap-8 {\n gap: 2rem;\n}\n\n.space-x-1 > :not([hidden]) ~ :not([hidden]) {\n margin-right: calc(.25rem * var(--tw-space-x-reverse));\n margin-left: calc(.25rem * calc(1 - var(--tw-space-x-reverse)));\n --tw-space-x-reverse: 0;\n}\n\n.space-y-1 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(.25rem * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n}\n\n.space-y-1\\.5 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(.375rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(.375rem * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n}\n\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n}\n\n.space-y-5 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1.25rem * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n}\n\n.space-y-6 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1.5rem * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n}\n\n.self-center {\n align-self: center;\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-y-auto {\n overflow-y: auto;\n}\n\n.overflow-x-hidden {\n overflow-x: hidden;\n}\n\n.truncate {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.whitespace-nowrap {\n white-space: nowrap;\n}\n\n.whitespace-pre-line {\n white-space: pre-line;\n}\n\n.rounded {\n border-radius: .25rem;\n}\n\n.rounded-2xl {\n border-radius: 1rem;\n}\n\n.rounded-\\[10px\\] {\n border-radius: 10px;\n}\n\n.rounded-\\[3px\\] {\n border-radius: 3px;\n}\n\n.rounded-\\[4px\\] {\n border-radius: 4px;\n}\n\n.rounded-\\[6px\\] {\n border-radius: 6px;\n}\n\n.rounded-\\[8px\\] {\n border-radius: 8px;\n}\n\n.rounded-\\[inherit\\] {\n border-radius: inherit;\n}\n\n.rounded-full {\n border-radius: 9999px;\n}\n\n.rounded-lg {\n border-radius: .5rem;\n}\n\n.rounded-md {\n border-radius: .375rem;\n}\n\n.rounded-xl {\n border-radius: .75rem;\n}\n\n.rounded-b-3xl {\n border-bottom-right-radius: 1.5rem;\n border-bottom-left-radius: 1.5rem;\n}\n\n.rounded-t-3xl {\n border-top-left-radius: 1.5rem;\n border-top-right-radius: 1.5rem;\n}\n\n.border {\n border-width: 1px;\n}\n\n.border-2 {\n border-width: 2px;\n}\n\n.border-b {\n border-bottom-width: 1px;\n}\n\n.border-l {\n border-left-width: 1px;\n}\n\n.border-r {\n border-right-width: 1px;\n}\n\n.border-t {\n border-top-width: 1px;\n}\n\n.border-amber-700 {\n border-color: rgb(var(--color-amber-700) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-blue-700 {\n border-color: rgb(var(--color-blue-700) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-gray-1000 {\n border-color: rgb(var(--color-gray-1000) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-gray-200 {\n border-color: rgb(var(--color-gray-200) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-gray-600 {\n border-color: rgb(var(--color-gray-600) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-red-700 {\n border-color: rgb(var(--color-red-700) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-white\\/10 {\n border-color: #ffffff1a;\n}\n\n.bg-\\[\\#292929\\] {\n background-color: rgb(41 41 41 / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-amber-100 {\n background-color: rgb(var(--color-amber-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-amber-200 {\n background-color: rgb(var(--color-amber-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-amber-700 {\n background-color: rgb(var(--color-amber-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-black\\/25 {\n background-color: #00000040;\n}\n\n.bg-black\\/60 {\n background-color: #0009;\n}\n\n.bg-blue-100 {\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-blue-300 {\n background-color: rgb(var(--color-blue-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-blue-700 {\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-bronze-300 {\n background-color: rgb(var(--color-bronze-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-brown-100 {\n background-color: rgb(var(--color-brown-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-brown-300 {\n background-color: rgb(var(--color-brown-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-brown-700 {\n background-color: rgb(var(--color-brown-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-crimson-100 {\n background-color: rgb(var(--color-crimson-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-crimson-300 {\n background-color: rgb(var(--color-crimson-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-crimson-700 {\n background-color: rgb(var(--color-crimson-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-cyan-100 {\n background-color: rgb(var(--color-cyan-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-cyan-300 {\n background-color: rgb(var(--color-cyan-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-cyan-700 {\n background-color: rgb(var(--color-cyan-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gold-300 {\n background-color: rgb(var(--color-gold-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-grass-300 {\n background-color: rgb(var(--color-grass-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-100 {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-1000 {\n background-color: rgb(var(--color-gray-1000) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-1000\\/25 {\n background-color: rgb(var(--color-gray-1000) / .25);\n}\n\n.bg-gray-1000\\/80 {\n background-color: rgb(var(--color-gray-1000) / .8);\n}\n\n.bg-gray-200 {\n background-color: rgb(var(--color-gray-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-25 {\n background-color: rgb(var(--color-gray-25) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-25\\/50 {\n background-color: rgb(var(--color-gray-25) / .5);\n}\n\n.bg-gray-300 {\n background-color: rgb(var(--color-gray-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-50 {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-600 {\n background-color: rgb(var(--color-gray-600) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-900 {\n background-color: rgb(var(--color-gray-900) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-green-100 {\n background-color: rgb(var(--color-green-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-green-300 {\n background-color: rgb(var(--color-green-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-green-700 {\n background-color: rgb(var(--color-green-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-indigo-300 {\n background-color: rgb(var(--color-indigo-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-lime-300 {\n background-color: rgb(var(--color-lime-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-orange-100 {\n background-color: rgb(var(--color-orange-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-orange-700 {\n background-color: rgb(var(--color-orange-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-plum-300 {\n background-color: rgb(var(--color-plum-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-purple-300 {\n background-color: rgb(var(--color-purple-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-red-100 {\n background-color: rgb(var(--color-red-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-red-300 {\n background-color: rgb(var(--color-red-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-red-700 {\n background-color: rgb(var(--color-red-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-red-700\\/60 {\n background-color: rgb(var(--color-red-700) / .6);\n}\n\n.bg-teal-100 {\n background-color: rgb(var(--color-teal-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-teal-300 {\n background-color: rgb(var(--color-teal-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-teal-700 {\n background-color: rgb(var(--color-teal-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-transparent {\n background-color: #0000;\n}\n\n.bg-violet-100 {\n background-color: rgb(var(--color-violet-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-violet-300 {\n background-color: rgb(var(--color-violet-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-violet-700 {\n background-color: rgb(var(--color-violet-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-white {\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-yellow-300 {\n background-color: rgb(var(--color-yellow-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-cover {\n background-size: cover;\n}\n\n.bg-center {\n background-position: center;\n}\n\n.object-contain {\n object-fit: contain;\n}\n\n.object-cover {\n object-fit: cover;\n}\n\n.p-0 {\n padding: 0;\n}\n\n.p-1 {\n padding: .25rem;\n}\n\n.p-1\\.5 {\n padding: .375rem;\n}\n\n.p-2 {\n padding: .5rem;\n}\n\n.p-2\\.5 {\n padding: .625rem;\n}\n\n.p-3 {\n padding: .75rem;\n}\n\n.p-4 {\n padding: 1rem;\n}\n\n.p-5 {\n padding: 1.25rem;\n}\n\n.p-6 {\n padding: 1.5rem;\n}\n\n.p-8 {\n padding: 2rem;\n}\n\n.p-\\[11px\\] {\n padding: 11px;\n}\n\n.px-2 {\n padding-left: .5rem;\n padding-right: .5rem;\n}\n\n.px-2\\.5 {\n padding-left: .625rem;\n padding-right: .625rem;\n}\n\n.px-3 {\n padding-left: .75rem;\n padding-right: .75rem;\n}\n\n.px-3\\.5 {\n padding-left: .875rem;\n padding-right: .875rem;\n}\n\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n.py-0 {\n padding-top: 0;\n padding-bottom: 0;\n}\n\n.py-0\\.5 {\n padding-top: .125rem;\n padding-bottom: .125rem;\n}\n\n.py-1 {\n padding-top: .25rem;\n padding-bottom: .25rem;\n}\n\n.py-1\\.5 {\n padding-top: .375rem;\n padding-bottom: .375rem;\n}\n\n.py-12 {\n padding-top: 3rem;\n padding-bottom: 3rem;\n}\n\n.py-2 {\n padding-top: .5rem;\n padding-bottom: .5rem;\n}\n\n.py-2\\.5 {\n padding-top: .625rem;\n padding-bottom: .625rem;\n}\n\n.py-3 {\n padding-top: .75rem;\n padding-bottom: .75rem;\n}\n\n.pb-2 {\n padding-bottom: .5rem;\n}\n\n.pb-\\[9px\\] {\n padding-bottom: 9px;\n}\n\n.pl-2 {\n padding-left: .5rem;\n}\n\n.pl-4 {\n padding-left: 1rem;\n}\n\n.pr-2 {\n padding-right: .5rem;\n}\n\n.pt-1 {\n padding-top: .25rem;\n}\n\n.pt-10 {\n padding-top: 2.5rem;\n}\n\n.pt-4 {\n padding-top: 1rem;\n}\n\n.text-left {\n text-align: left;\n}\n\n.text-center {\n text-align: center;\n}\n\n.align-middle {\n vertical-align: middle;\n}\n\n.text-2xl {\n letter-spacing: -.02em;\n font-size: 24px;\n line-height: 32px;\n}\n\n.text-3xl {\n letter-spacing: -.02em;\n font-size: 30px;\n line-height: 38px;\n}\n\n.text-\\[10px\\] {\n font-size: 10px;\n}\n\n.text-\\[112px\\] {\n font-size: 112px;\n}\n\n.text-\\[30px\\] {\n font-size: 30px;\n}\n\n.text-lg {\n letter-spacing: -.02em;\n font-size: 18px;\n line-height: 22px;\n}\n\n.text-md {\n letter-spacing: -.02em;\n font-size: 16px;\n line-height: 20px;\n}\n\n.text-sm {\n letter-spacing: -.02em;\n font-size: 14px;\n line-height: 20px;\n}\n\n.text-xs {\n letter-spacing: -.02em;\n font-size: 12px;\n line-height: 16px;\n}\n\n.font-bold {\n font-weight: 700;\n}\n\n.font-medium {\n font-weight: 500;\n}\n\n.font-normal {\n font-weight: 400;\n}\n\n.font-semibold {\n font-weight: 600;\n}\n\n.leading-none {\n line-height: 1;\n}\n\n.text-\\[\\#707070\\] {\n color: rgb(112 112 112 / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-amber-700 {\n color: rgb(var(--color-amber-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-blue-700 {\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-bronze-700 {\n color: rgb(var(--color-bronze-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-brown-700 {\n color: rgb(var(--color-brown-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-crimson-700 {\n color: rgb(var(--color-crimson-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-current {\n color: currentColor;\n}\n\n.text-cyan-700 {\n color: rgb(var(--color-cyan-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-gold-700 {\n color: rgb(var(--color-gold-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-grass-700 {\n color: rgb(var(--color-grass-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-gray-1000 {\n color: rgb(var(--color-gray-1000) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-gray-700 {\n color: rgb(var(--color-gray-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-gray-900 {\n color: rgb(var(--color-gray-900) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-green-700 {\n color: rgb(var(--color-green-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-indigo-700 {\n color: rgb(var(--color-indigo-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-lime-700 {\n color: rgb(var(--color-lime-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-orange-700 {\n color: rgb(var(--color-orange-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-plum-700 {\n color: rgb(var(--color-plum-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-primary {\n color: rgb(29 28 32 / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-purple-700 {\n color: rgb(var(--color-purple-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-red-700 {\n color: rgb(var(--color-red-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-teal-700 {\n color: rgb(var(--color-teal-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-violet-700 {\n color: rgb(var(--color-violet-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-white {\n color: rgb(255 255 255 / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-white\\/80 {\n color: #fffc;\n}\n\n.text-yellow-700 {\n color: rgb(var(--color-yellow-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.underline {\n text-decoration-line: underline;\n}\n\n.underline-offset-8 {\n text-underline-offset: 8px;\n}\n\n.antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.opacity-50 {\n opacity: .5;\n}\n\n.shadow-dropdown-sm {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n --tw-shadow: 0px 1px 2px 0px #1018280f, 0px 1px 3px 0px #1018281a;\n --tw-shadow-colored: 0px 1px 2px 0px var(--tw-shadow-color), 0px 1px 3px 0px var(--tw-shadow-color);\n}\n\n.shadow-lg {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n --tw-shadow: 0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n}\n\n.shadow-md {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n --tw-shadow: 0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n}\n\n.shadow-sm {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n --tw-shadow: 0 1px 2px 0 #0000000d;\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n}\n\n.outline-none {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.outline {\n outline-style: solid;\n}\n\n.ring-1 {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\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(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.ring-2 {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\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(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.ring-4 {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\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(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.ring-\\[3px\\] {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\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}\n\n.ring-inset {\n --tw-ring-inset: inset;\n}\n\n.ring-amber-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-amber-300) / var(--tw-ring-opacity));\n}\n\n.ring-blue-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-300) / var(--tw-ring-opacity));\n}\n\n.ring-blue-700 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-700) / var(--tw-ring-opacity));\n}\n\n.ring-brown-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-brown-300) / var(--tw-ring-opacity));\n}\n\n.ring-crimson-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-crimson-300) / var(--tw-ring-opacity));\n}\n\n.ring-cyan-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-cyan-300) / var(--tw-ring-opacity));\n}\n\n.ring-gray-200 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-gray-200) / var(--tw-ring-opacity));\n}\n\n.ring-green-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-green-300) / var(--tw-ring-opacity));\n}\n\n.ring-orange-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-orange-300) / var(--tw-ring-opacity));\n}\n\n.ring-red-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-red-300) / var(--tw-ring-opacity));\n}\n\n.ring-teal-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-teal-300) / var(--tw-ring-opacity));\n}\n\n.ring-violet-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-violet-300) / var(--tw-ring-opacity));\n}\n\n.ring-white {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(255 255 255 / var(--tw-ring-opacity));\n}\n\n.ring-white\\/20 {\n --tw-ring-color: #fff3;\n}\n\n.ring-offset-0 {\n --tw-ring-offset-width: 0px;\n}\n\n.ring-offset-white {\n --tw-ring-offset-color: #fff;\n}\n\n.blur {\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 --tw-blur: blur(8px);\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.backdrop-blur-\\[30px\\] {\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n --tw-backdrop-blur: blur(30px);\n}\n\n.backdrop-blur-lg {\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n --tw-backdrop-blur: blur(16px);\n}\n\n.backdrop-blur-sm {\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n --tw-backdrop-blur: blur(4px);\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-all {\n transition-property: all;\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 {\n transition-property: transform;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.duration-200 {\n transition-duration: .2s;\n}\n\n.duration-500 {\n transition-duration: .5s;\n}\n\n.duration-700 {\n transition-duration: .7s;\n}\n\n.ease-in-out {\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.ease-linear {\n transition-timing-function: linear;\n}\n\n.ease-out {\n transition-timing-function: cubic-bezier(0, 0, .2, 1);\n}\n\n.will-change-transform {\n will-change: transform;\n}\n\n@keyframes enter {\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n\n.animate-in {\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n animation-name: enter;\n animation-duration: .15s;\n}\n\n.fade-in, .fade-in-0 {\n --tw-enter-opacity: 0;\n}\n\n.fade-out {\n --tw-exit-opacity: 0;\n}\n\n.zoom-in-95 {\n --tw-enter-scale: .95;\n}\n\n.duration-200 {\n animation-duration: .2s;\n}\n\n.duration-500 {\n animation-duration: .5s;\n}\n\n.duration-700 {\n animation-duration: .7s;\n}\n\n.ease-in-out {\n animation-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.ease-linear {\n animation-timing-function: linear;\n}\n\n.ease-out {\n animation-timing-function: cubic-bezier(0, 0, .2, 1);\n}\n\n.paused {\n animation-play-state: paused;\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.pulse-red-700 {\n animation: 2s infinite pulse-red-700;\n transform: scale(1);\n box-shadow: 0 0 #e5484d;\n}\n\n@keyframes pulse-red-700 {\n 0% {\n transform: scale(.95);\n box-shadow: 0 0 #e5484db3;\n }\n\n 70% {\n transform: scale(1);\n box-shadow: 0 0 0 6px #e5484d00;\n }\n\n 100% {\n transform: scale(.95);\n box-shadow: 0 0 #e5484d00;\n }\n}\n\n.placeholder\\:text-gray-700::placeholder {\n color: rgb(var(--color-gray-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.placeholder\\:text-gray-900::placeholder {\n color: rgb(var(--color-gray-900) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.focus-within\\:relative:focus-within {\n position: relative;\n}\n\n.focus-within\\:z-20:focus-within {\n z-index: 20;\n}\n\n.focus-within\\:border-gray-200:focus-within {\n border-color: rgb(var(--color-gray-200) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.focus-within\\:bg-gray-100:focus-within {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.focus-within\\:outline:focus-within {\n outline-style: solid;\n}\n\n.focus-within\\:outline-\\[2px\\]:focus-within {\n outline-width: 2px;\n}\n\n.focus-within\\:outline-offset-\\[2px\\]:focus-within {\n outline-offset: 2px;\n}\n\n.focus-within\\:outline-blue-300:focus-within {\n outline-color: rgb(var(--color-blue-300) / 1);\n}\n\n.focus-within\\:outline-red-700:focus-within {\n outline-color: rgb(var(--color-red-700) / 1);\n}\n\n.hover\\:bg-black\\/10:hover {\n background-color: #0000001a;\n}\n\n.hover\\:bg-blue-100:hover {\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-blue-50:hover {\n background-color: rgb(var(--color-blue-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-blue-700:hover {\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-blue-800:hover {\n background-color: rgb(var(--color-blue-800) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-gray-100:hover {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-gray-200:hover {\n background-color: rgb(var(--color-gray-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-gray-25\\/60:hover {\n background-color: rgb(var(--color-gray-25) / .6);\n}\n\n.hover\\:bg-gray-50:hover {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-red-100:hover {\n background-color: rgb(var(--color-red-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-red-800:hover {\n background-color: rgb(var(--color-red-800) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:text-blue-700:hover {\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.hover\\:text-white:hover {\n color: rgb(255 255 255 / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.hover\\:underline:hover {\n text-decoration-line: underline;\n}\n\n.focus\\:bg-gray-100:focus {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.focus\\:outline-none:focus {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.focus\\:ring-1:focus {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\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(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.focus\\:ring-2:focus {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\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(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.focus\\:ring-offset-2:focus {\n --tw-ring-offset-width: 2px;\n}\n\n.focus-visible\\:outline-none:focus-visible {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.focus-visible\\:ring-2:focus-visible {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\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(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.focus-visible\\:ring-blue-1000:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-1000) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-blue-300:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-300) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-blue-700:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-700) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-gray-1000:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-gray-1000) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-red-1000:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-red-1000) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-red-700:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-red-700) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-offset-2:focus-visible {\n --tw-ring-offset-width: 2px;\n}\n\n.active\\:bg-blue-200:active {\n background-color: rgb(var(--color-blue-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-blue-900:active {\n background-color: rgb(var(--color-blue-900) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-gray-100:active {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-gray-200:active {\n background-color: rgb(var(--color-gray-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-gray-25\\/70:active {\n background-color: rgb(var(--color-gray-25) / .7);\n}\n\n.active\\:bg-gray-500:active {\n background-color: rgb(var(--color-gray-500) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-red-200:active {\n background-color: rgb(var(--color-red-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-red-900:active {\n background-color: rgb(var(--color-red-900) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:text-blue-700:active {\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.active\\:text-blue-900:active {\n color: rgb(var(--color-blue-900) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.disabled\\:pointer-events-none:disabled {\n pointer-events: none;\n}\n\n.disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n\n.disabled\\:opacity-40:disabled {\n opacity: .4;\n}\n\n.disabled\\:opacity-50:disabled {\n opacity: .5;\n}\n\n.group:focus-within .group-focus-within\\:bg-gray-100 {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.group:hover .group-hover\\:bg-gray-50 {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.group:active .group-active\\:bg-gray-100 {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.peer:disabled ~ .peer-disabled\\:cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.peer:disabled ~ .peer-disabled\\:opacity-70 {\n opacity: .7;\n}\n\n.aria-selected\\:bg-blue-100[aria-selected=\"true\"] {\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.aria-selected\\:text-blue-700[aria-selected=\"true\"] {\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.aria-selected\\:opacity-100[aria-selected=\"true\"] {\n opacity: 1;\n}\n\n.data-\\[disabled\\]\\:pointer-events-none[data-disabled] {\n pointer-events: none;\n}\n\n.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=\"bottom\"] {\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 --tw-translate-y: .25rem;\n}\n\n.data-\\[side\\=left\\]\\:-translate-x-1[data-side=\"left\"] {\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 --tw-translate-x: -.25rem;\n}\n\n.data-\\[side\\=right\\]\\:translate-x-1[data-side=\"right\"] {\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 --tw-translate-x: .25rem;\n}\n\n.data-\\[side\\=top\\]\\:-translate-y-1[data-side=\"top\"] {\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 --tw-translate-y: -.25rem;\n}\n\n.data-\\[state\\=checked\\]\\:translate-x-5[data-state=\"checked\"] {\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 --tw-translate-x: 1.25rem;\n}\n\n.data-\\[swipe\\=cancel\\]\\:translate-x-0[data-swipe=\"cancel\"] {\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 --tw-translate-x: 0px;\n}\n\n.data-\\[swipe\\=end\\]\\:translate-x-\\[var\\(--radix-toast-swipe-end-x\\)\\][data-swipe=\"end\"] {\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 --tw-translate-x: var(--radix-toast-swipe-end-x);\n}\n\n.data-\\[swipe\\=move\\]\\:translate-x-\\[var\\(--radix-toast-swipe-move-x\\)\\][data-swipe=\"move\"] {\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 --tw-translate-x: var(--radix-toast-swipe-move-x);\n}\n\n@keyframes accordion-up {\n from {\n height: var(--radix-accordion-content-height);\n }\n\n to {\n height: 0;\n }\n}\n\n.data-\\[state\\=closed\\]\\:animate-accordion-up[data-state=\"closed\"] {\n animation: .2s ease-out accordion-up;\n}\n\n@keyframes accordion-down {\n from {\n height: 0;\n }\n\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n\n.data-\\[state\\=open\\]\\:animate-accordion-down[data-state=\"open\"] {\n animation: .2s ease-out accordion-down;\n}\n\n.data-\\[disabled\\]\\:cursor-not-allowed[data-disabled] {\n cursor: not-allowed;\n}\n\n.data-\\[state\\=checked\\]\\:border-blue-700[data-state=\"checked\"], .data-\\[state\\=on\\]\\:border-blue-700[data-state=\"on\"] {\n border-color: rgb(var(--color-blue-700) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.data-\\[disabled\\]\\:data-\\[state\\=unchecked\\]\\:bg-gray-300[data-state=\"unchecked\"][data-disabled] {\n background-color: rgb(var(--color-gray-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[selected\\=true\\]\\:bg-gray-50[data-selected=\"true\"] {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-amber-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-amber-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-blue-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-bronze-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-bronze-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-brown-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-brown-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-crimson-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-crimson-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-cyan-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-cyan-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-gold-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-gold-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-grass-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-grass-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-gray-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-gray-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-green-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-green-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-indigo-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-indigo-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-lime-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-lime-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-plum-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-plum-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-purple-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-purple-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-red-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-red-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-teal-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-teal-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-violet-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-violet-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-yellow-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-yellow-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=active\\]\\:bg-white[data-state=\"active\"] {\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=checked\\]\\:bg-blue-700[data-state=\"checked\"] {\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=checked\\]\\:bg-gray-50[data-state=\"checked\"] {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=checked\\]\\:bg-white[data-state=\"checked\"] {\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=selected\\]\\:bg-gray-50[data-state=\"selected\"] {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=active\\]\\:text-blue-700[data-state=\"active\"] {\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.data-\\[state\\=active\\]\\:text-gray-25[data-state=\"active\"] {\n color: rgb(var(--color-gray-25) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.data-\\[disabled\\]\\:opacity-40[data-disabled] {\n opacity: .4;\n}\n\n.data-\\[disabled\\]\\:opacity-50[data-disabled] {\n opacity: .5;\n}\n\n.data-\\[state\\=active\\]\\:shadow-sm[data-state=\"active\"] {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n --tw-shadow: 0 1px 2px 0 #0000000d;\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n}\n\n.data-\\[swipe\\=move\\]\\:transition-none[data-swipe=\"move\"] {\n transition-property: none;\n}\n\n.data-\\[state\\=closed\\]\\:duration-300[data-state=\"closed\"] {\n transition-duration: .3s;\n}\n\n.data-\\[state\\=open\\]\\:duration-500[data-state=\"open\"] {\n transition-duration: .5s;\n}\n\n.data-\\[state\\=open\\]\\:animate-in[data-state=\"open\"] {\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n animation-name: enter;\n animation-duration: .15s;\n}\n\n.data-\\[state\\=closed\\]\\:animate-out[data-state=\"closed\"], .data-\\[swipe\\=end\\]\\:animate-out[data-swipe=\"end\"] {\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n animation-name: exit;\n animation-duration: .15s;\n}\n\n.data-\\[state\\=closed\\]\\:fade-out[data-state=\"closed\"], .data-\\[state\\=closed\\]\\:fade-out-0[data-state=\"closed\"] {\n --tw-exit-opacity: 0;\n}\n\n.data-\\[state\\=closed\\]\\:fade-out-80[data-state=\"closed\"] {\n --tw-exit-opacity: .8;\n}\n\n.data-\\[state\\=open\\]\\:fade-in-0[data-state=\"open\"] {\n --tw-enter-opacity: 0;\n}\n\n.data-\\[state\\=closed\\]\\:zoom-out-95[data-state=\"closed\"] {\n --tw-exit-scale: .95;\n}\n\n.data-\\[state\\=open\\]\\:zoom-in-95[data-state=\"open\"] {\n --tw-enter-scale: .95;\n}\n\n.data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=\"bottom\"] {\n --tw-enter-translate-y: -.5rem;\n}\n\n.data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=\"left\"] {\n --tw-enter-translate-x: .5rem;\n}\n\n.data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=\"right\"] {\n --tw-enter-translate-x: -.5rem;\n}\n\n.data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=\"top\"] {\n --tw-enter-translate-y: .5rem;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-bottom[data-state=\"closed\"], .data-\\[state\\=closed\\]\\:slide-out-to-bottom-\\[100\\%\\][data-state=\"closed\"] {\n --tw-exit-translate-y: 100%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-left[data-state=\"closed\"] {\n --tw-exit-translate-x: -100%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-left-1\\/2[data-state=\"closed\"], .data-\\[state\\=closed\\]\\:slide-out-to-left-\\[50\\%\\][data-state=\"closed\"] {\n --tw-exit-translate-x: -50%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-right[data-state=\"closed\"] {\n --tw-exit-translate-x: 100%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-top[data-state=\"closed\"] {\n --tw-exit-translate-y: -100%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-top-\\[48\\%\\][data-state=\"closed\"] {\n --tw-exit-translate-y: -48%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-bottom[data-state=\"open\"], .data-\\[state\\=open\\]\\:slide-in-from-bottom-\\[100\\%\\][data-state=\"open\"] {\n --tw-enter-translate-y: 100%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-left[data-state=\"open\"] {\n --tw-enter-translate-x: -100%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-left-1\\/2[data-state=\"open\"], .data-\\[state\\=open\\]\\:slide-in-from-left-\\[50\\%\\][data-state=\"open\"] {\n --tw-enter-translate-x: -50%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-right[data-state=\"open\"] {\n --tw-enter-translate-x: 100%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-top[data-state=\"open\"] {\n --tw-enter-translate-y: -100%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-top-\\[48\\%\\][data-state=\"open\"] {\n --tw-enter-translate-y: -48%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-top-full[data-state=\"open\"] {\n --tw-enter-translate-y: -100%;\n}\n\n.data-\\[state\\=closed\\]\\:duration-300[data-state=\"closed\"] {\n animation-duration: .3s;\n}\n\n.data-\\[state\\=open\\]\\:duration-500[data-state=\"open\"] {\n animation-duration: .5s;\n}\n\n.group[data-state=\"open\"] .group-data-\\[state\\=open\\]\\:rotate-180 {\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 --tw-rotate: 180deg;\n}\n\n.group[data-disabled] .group-data-\\[disabled\\]\\:cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.group[data-state=\"on\"] .group-data-\\[state\\=on\\]\\:border-blue-700 {\n border-color: rgb(var(--color-blue-700) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.group[data-state=\"checked\"] .group-data-\\[state\\=checked\\]\\:bg-gray-50 {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.group[data-state=\"off\"] .group-data-\\[state\\=off\\]\\:bg-transparent {\n background-color: #0000;\n}\n\n.group[data-state=\"off\"] .group-data-\\[state\\=off\\]\\:text-transparent {\n color: #0000;\n}\n\n.group[data-disabled] .group-data-\\[disabled\\]\\:opacity-50 {\n opacity: .5;\n}\n\n@media not all and (width >= 1024px) {\n .max-lg\\:mt-8 {\n margin-top: 2rem;\n }\n\n .max-lg\\:hidden {\n display: none;\n }\n\n .max-lg\\:h-\\[250px\\] {\n height: 250px;\n }\n\n .max-lg\\:w-full {\n width: 100%;\n }\n\n .max-lg\\:flex-col {\n flex-direction: column;\n }\n}\n\n@media not all and (width >= 640px) {\n .max-sm\\:gap-4 {\n gap: 1rem;\n }\n\n .max-sm\\:p-4 {\n padding: 1rem;\n }\n}\n\n@media (width >= 640px) {\n .sm\\:mt-0 {\n margin-top: 0;\n }\n\n .sm\\:w-1\\/2 {\n width: 50%;\n }\n\n .sm\\:max-w-sm {\n max-width: 24rem;\n }\n\n .sm\\:flex-row {\n flex-direction: row;\n }\n\n .sm\\:flex-col {\n flex-direction: column;\n }\n\n .sm\\:justify-end {\n justify-content: flex-end;\n }\n\n .sm\\:justify-center {\n justify-content: center;\n }\n\n .sm\\:space-x-2 > :not([hidden]) ~ :not([hidden]) {\n margin-right: calc(.5rem * var(--tw-space-x-reverse));\n margin-left: calc(.5rem * calc(1 - var(--tw-space-x-reverse)));\n --tw-space-x-reverse: 0;\n }\n\n .sm\\:space-x-4 > :not([hidden]) ~ :not([hidden]) {\n margin-right: calc(1rem * var(--tw-space-x-reverse));\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n --tw-space-x-reverse: 0;\n }\n\n .sm\\:space-y-0 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0px * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n }\n\n .data-\\[state\\=open\\]\\:sm\\:slide-in-from-bottom-full[data-state=\"open\"] {\n --tw-enter-translate-y: 100%;\n }\n}\n\n@media (width >= 768px) {\n .md\\:w-\\[334px\\] {\n width: 334px;\n }\n\n .md\\:w-full {\n width: 100%;\n }\n\n .md\\:w-screen {\n width: 100vw;\n }\n\n .md\\:max-w-\\[420px\\] {\n max-width: 420px;\n }\n\n .md\\:gap-4 {\n gap: 1rem;\n }\n}\n\n@media (width >= 1024px) {\n .lg\\:flex-col {\n flex-direction: column;\n }\n\n .lg\\:items-center {\n align-items: center;\n }\n\n .lg\\:gap-2 {\n gap: .5rem;\n }\n\n .lg\\:gap-8 {\n gap: 2rem;\n }\n\n .lg\\:rounded-lg {\n border-radius: .5rem;\n }\n\n .lg\\:border {\n border-width: 1px;\n }\n\n .lg\\:border-gray-200 {\n border-color: rgb(var(--color-gray-200) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n }\n\n .lg\\:bg-pattern {\n background-image: radial-gradient(50% 50%, #006aff33 0%, #006aff00 100%), linear-gradient(#0000 0%, #fff 100%), linear-gradient(0deg, #0000 0%, #ffffffbf 100%), url(\"data:image/svg+xml,%3Csvg width='40' height='40' viewBox='0 0 40 40' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M40 40V41H41V40H40ZM39 0V40H41V0H39ZM40 39H0V41H40V39Z' fill='%23E8E8E8' mask='url(%23path-1-inside-1_124_242)'/%3E%3C/svg%3E\");\n }\n\n .lg\\:p-6 {\n padding: 1.5rem;\n }\n\n .lg\\:text-center {\n text-align: center;\n }\n\n .lg\\:text-4xl {\n letter-spacing: -.02em;\n font-size: 36px;\n line-height: 44px;\n }\n}\n\n@media (width >= 1280px) {\n .xl\\:rounded-none {\n border-radius: 0;\n }\n}\n\n.\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:bg-blue-100:has([aria-selected]) {\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.first\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-l-md:has([aria-selected]):first-child {\n border-top-left-radius: .375rem;\n border-bottom-left-radius: .375rem;\n}\n\n.last\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-r-md:has([aria-selected]):last-child {\n border-top-right-radius: .375rem;\n border-bottom-right-radius: .375rem;\n}\n\n.\\[\\&\\:has\\(\\[role\\=checkbox\\]\\)\\]\\:pr-0:has([role=\"checkbox\"]) {\n padding-right: 0;\n}\n\n.\\[\\&\\:not\\(\\[aria-selected\\]\\)\\]\\:hover\\:bg-gray-100:hover:not([aria-selected]) {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.\\[\\&\\>\\*\\]\\:fill-white > * {\n fill: #fff;\n}\n\n.\\[\\&\\>\\[role\\=checkbox\\]\\]\\:translate-y-\\[2px\\] > [role=\"checkbox\"] {\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 --tw-translate-y: 2px;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading] {\n padding-left: .5rem;\n padding-right: .5rem;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading] {\n padding-top: .375rem;\n padding-bottom: .375rem;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-sm [cmdk-group-heading] {\n letter-spacing: -.02em;\n font-size: 14px;\n line-height: 20px;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading] {\n font-weight: 500;\n}\n\n.\\[\\&_tr\\:active\\]\\:bg-gray-50 tr:active, .\\[\\&_tr\\:hover\\:active\\]\\:bg-gray-50 tr:hover:active {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.\\[\\&_tr\\:hover\\]\\:bg-gray-25 tr:hover {\n background-color: rgb(var(--color-gray-25) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.\\[\\&_tr\\:last-child\\]\\:border-0 tr:last-child {\n border-width: 0;\n}\n\n.\\[\\&_tr\\]\\:border-b tr {\n border-bottom-width: 1px;\n}\n";
|
|
14650
|
+
$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-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\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: #93c5fd80;\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 --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\n}\n\n.container {\n width: 100%;\n}\n\n@media (width >= 640px) {\n .container {\n max-width: 640px;\n }\n}\n\n@media (width >= 768px) {\n .container {\n max-width: 768px;\n }\n}\n\n@media (width >= 1024px) {\n .container {\n max-width: 1024px;\n }\n}\n\n@media (width >= 1280px) {\n .container {\n max-width: 1280px;\n }\n}\n\n@media (width >= 1536px) {\n .container {\n max-width: 1536px;\n }\n}\n\n.sr-only {\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n position: absolute;\n overflow: hidden;\n}\n\n.pointer-events-auto {\n pointer-events: auto;\n}\n\n.visible {\n visibility: visible;\n}\n\n.invisible {\n visibility: hidden;\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.inset-x-0 {\n left: 0;\n right: 0;\n}\n\n.inset-y-0 {\n top: 0;\n bottom: 0;\n}\n\n.-bottom-12 {\n bottom: -3rem;\n}\n\n.-left-12 {\n left: -3rem;\n}\n\n.-right-12 {\n right: -3rem;\n}\n\n.-top-12 {\n top: -3rem;\n}\n\n.bottom-0 {\n bottom: 0;\n}\n\n.bottom-2 {\n bottom: .5rem;\n}\n\n.left-0 {\n left: 0;\n}\n\n.left-1 {\n left: .25rem;\n}\n\n.left-1\\/2 {\n left: 50%;\n}\n\n.left-2 {\n left: .5rem;\n}\n\n.left-\\[50\\%\\] {\n left: 50%;\n}\n\n.right-0 {\n right: 0;\n}\n\n.right-1 {\n right: .25rem;\n}\n\n.right-2 {\n right: .5rem;\n}\n\n.right-6 {\n right: 1.5rem;\n}\n\n.top-0 {\n top: 0;\n}\n\n.top-1\\/2 {\n top: 50%;\n}\n\n.top-2 {\n top: .5rem;\n}\n\n.top-6 {\n top: 1.5rem;\n}\n\n.top-8 {\n top: 2rem;\n}\n\n.top-\\[50\\%\\] {\n top: 50%;\n}\n\n.top-auto {\n top: auto;\n}\n\n.z-40 {\n z-index: 40;\n}\n\n.z-50 {\n z-index: 50;\n}\n\n.z-\\[100\\] {\n z-index: 100;\n}\n\n.z-\\[150\\] {\n z-index: 150;\n}\n\n.-mx-1 {\n margin-left: -.25rem;\n margin-right: -.25rem;\n}\n\n.mx-1 {\n margin-left: .25rem;\n margin-right: .25rem;\n}\n\n.mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n\n.my-1 {\n margin-top: .25rem;\n margin-bottom: .25rem;\n}\n\n.-ml-4 {\n margin-left: -1rem;\n}\n\n.-mr-2 {\n margin-right: -.5rem;\n}\n\n.-mt-4 {\n margin-top: -1rem;\n}\n\n.mb-2 {\n margin-bottom: .5rem;\n}\n\n.mb-4 {\n margin-bottom: 1rem;\n}\n\n.mb-6 {\n margin-bottom: 1.5rem;\n}\n\n.mb-\\[9px\\] {\n margin-bottom: 9px;\n}\n\n.ml-1 {\n margin-left: .25rem;\n}\n\n.mr-2 {\n margin-right: .5rem;\n}\n\n.mr-2\\.5 {\n margin-right: .625rem;\n}\n\n.mr-9 {\n margin-right: 2.25rem;\n}\n\n.mt-1 {\n margin-top: .25rem;\n}\n\n.mt-2 {\n margin-top: .5rem;\n}\n\n.box-border {\n box-sizing: border-box;\n}\n\n.block {\n display: block;\n}\n\n.inline-block {\n display: inline-block;\n}\n\n.inline {\n display: inline;\n}\n\n.flex {\n display: flex;\n}\n\n.inline-flex {\n display: inline-flex;\n}\n\n.table {\n display: table;\n}\n\n.grid {\n display: grid;\n}\n\n.hidden {\n display: none;\n}\n\n.aspect-square {\n aspect-ratio: 1;\n}\n\n.h-1\\/3 {\n height: 33.3333%;\n}\n\n.h-10 {\n height: 2.5rem;\n}\n\n.h-12 {\n height: 3rem;\n}\n\n.h-14 {\n height: 3.5rem;\n}\n\n.h-16 {\n height: 4rem;\n}\n\n.h-2 {\n height: .5rem;\n}\n\n.h-3 {\n height: .75rem;\n}\n\n.h-4 {\n height: 1rem;\n}\n\n.h-6 {\n height: 1.5rem;\n}\n\n.h-8 {\n height: 2rem;\n}\n\n.h-9 {\n height: 2.25rem;\n}\n\n.h-\\[100px\\] {\n height: 100px;\n}\n\n.h-\\[16px\\] {\n height: 16px;\n}\n\n.h-\\[1px\\] {\n height: 1px;\n}\n\n.h-\\[200px\\] {\n height: 200px;\n}\n\n.h-\\[24px\\] {\n height: 24px;\n}\n\n.h-\\[36px\\] {\n height: 36px;\n}\n\n.h-\\[400px\\] {\n height: 400px;\n}\n\n.h-\\[45px\\] {\n height: 45px;\n}\n\n.h-\\[54px\\] {\n height: 54px;\n}\n\n.h-\\[70px\\] {\n height: 70px;\n}\n\n.h-\\[72px\\] {\n height: 72px;\n}\n\n.h-\\[8px\\] {\n height: 8px;\n}\n\n.h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n}\n\n.h-full {\n height: 100%;\n}\n\n.h-px {\n height: 1px;\n}\n\n.h-screen {\n height: 100vh;\n}\n\n.max-h-\\[180px\\] {\n max-height: 180px;\n}\n\n.max-h-\\[300px\\] {\n max-height: 300px;\n}\n\n.max-h-\\[70px\\] {\n max-height: 70px;\n}\n\n.max-h-\\[90\\%\\] {\n max-height: 90%;\n}\n\n.max-h-\\[90vh\\] {\n max-height: 90vh;\n}\n\n.max-h-screen {\n max-height: 100vh;\n}\n\n.min-h-0 {\n min-height: 0;\n}\n\n.min-h-9 {\n min-height: 2.25rem;\n}\n\n.min-h-\\[20px\\] {\n min-height: 20px;\n}\n\n.min-h-\\[80px\\] {\n min-height: 80px;\n}\n\n.w-1\\/3 {\n width: 33.3333%;\n}\n\n.w-10 {\n width: 2.5rem;\n}\n\n.w-12 {\n width: 3rem;\n}\n\n.w-16 {\n width: 4rem;\n}\n\n.w-2 {\n width: .5rem;\n}\n\n.w-3 {\n width: .75rem;\n}\n\n.w-3\\/4 {\n width: 75%;\n}\n\n.w-4 {\n width: 1rem;\n}\n\n.w-6 {\n width: 1.5rem;\n}\n\n.w-72 {\n width: 18rem;\n}\n\n.w-8 {\n width: 2rem;\n}\n\n.w-\\[100px\\] {\n width: 100px;\n}\n\n.w-\\[16px\\] {\n width: 16px;\n}\n\n.w-\\[24px\\] {\n width: 24px;\n}\n\n.w-\\[334px\\] {\n width: 334px;\n}\n\n.w-\\[36px\\] {\n width: 36px;\n}\n\n.w-\\[400px\\] {\n width: 400px;\n}\n\n.w-\\[42px\\] {\n width: 42px;\n}\n\n.w-\\[45px\\] {\n width: 45px;\n}\n\n.w-\\[54px\\] {\n width: 54px;\n}\n\n.w-\\[70px\\] {\n width: 70px;\n}\n\n.w-\\[72px\\] {\n width: 72px;\n}\n\n.w-\\[8px\\] {\n width: 8px;\n}\n\n.w-auto {\n width: auto;\n}\n\n.w-full {\n width: 100%;\n}\n\n.w-max {\n width: max-content;\n}\n\n.min-w-0 {\n min-width: 0;\n}\n\n.min-w-\\[144px\\] {\n min-width: 144px;\n}\n\n.min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n}\n\n.min-w-full {\n min-width: 100%;\n}\n\n.max-w-\\[315px\\] {\n max-width: 315px;\n}\n\n.max-w-\\[400px\\] {\n max-width: 400px;\n}\n\n.max-w-\\[500px\\] {\n max-width: 500px;\n}\n\n.max-w-\\[70px\\] {\n max-width: 70px;\n}\n\n.max-w-\\[800px\\] {\n max-width: 800px;\n}\n\n.max-w-\\[90\\%\\] {\n max-width: 90%;\n}\n\n.max-w-\\[90vw\\] {\n max-width: 90vw;\n}\n\n.max-w-full {\n max-width: 100%;\n}\n\n.flex-1 {\n flex: 1;\n}\n\n.flex-shrink-0, .shrink-0 {\n flex-shrink: 0;\n}\n\n.flex-grow, .grow {\n flex-grow: 1;\n}\n\n.grow-0 {\n flex-grow: 0;\n}\n\n.basis-full {\n flex-basis: 100%;\n}\n\n.caption-bottom {\n caption-side: bottom;\n}\n\n.border-collapse {\n border-collapse: collapse;\n}\n\n.-translate-x-1\\/2 {\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 --tw-translate-x: -50%;\n}\n\n.-translate-y-1\\/2 {\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 --tw-translate-y: -50%;\n}\n\n.translate-x-0 {\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 --tw-translate-x: 0px;\n}\n\n.translate-x-0\\.5 {\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 --tw-translate-x: .125rem;\n}\n\n.translate-x-\\[-50\\%\\] {\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 --tw-translate-x: -50%;\n}\n\n.translate-y-0 {\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 --tw-translate-y: 0px;\n}\n\n.translate-y-\\[-50\\%\\] {\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 --tw-translate-y: -50%;\n}\n\n.-scale-x-\\[1\\], .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 --tw-scale-x: -1;\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 pulse {\n 50% {\n opacity: .5;\n }\n}\n\n.animate-pulse {\n animation: 2s cubic-bezier(.4, 0, .6, 1) infinite pulse;\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-default {\n cursor: default;\n}\n\n.cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.select-none {\n -webkit-user-select: none;\n user-select: none;\n}\n\n.resize {\n resize: both;\n}\n\n.appearance-none {\n appearance: none;\n}\n\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n.flex-row {\n flex-direction: row;\n}\n\n.flex-col {\n flex-direction: column;\n}\n\n.flex-col-reverse {\n flex-direction: column-reverse;\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.items-stretch {\n align-items: stretch;\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-0 {\n gap: 0;\n}\n\n.gap-0\\.5 {\n gap: .125rem;\n}\n\n.gap-1 {\n gap: .25rem;\n}\n\n.gap-1\\.5 {\n gap: .375rem;\n}\n\n.gap-12 {\n gap: 3rem;\n}\n\n.gap-2 {\n gap: .5rem;\n}\n\n.gap-2\\.5 {\n gap: .625rem;\n}\n\n.gap-3 {\n gap: .75rem;\n}\n\n.gap-4 {\n gap: 1rem;\n}\n\n.gap-6 {\n gap: 1.5rem;\n}\n\n.gap-8 {\n gap: 2rem;\n}\n\n.space-x-1 > :not([hidden]) ~ :not([hidden]) {\n margin-right: calc(.25rem * var(--tw-space-x-reverse));\n margin-left: calc(.25rem * calc(1 - var(--tw-space-x-reverse)));\n --tw-space-x-reverse: 0;\n}\n\n.space-y-1 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(.25rem * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n}\n\n.space-y-1\\.5 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(.375rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(.375rem * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n}\n\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n}\n\n.space-y-5 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1.25rem * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n}\n\n.space-y-6 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1.5rem * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n}\n\n.divide-x > :not([hidden]) ~ :not([hidden]) {\n border-right-width: calc(1px * var(--tw-divide-x-reverse));\n border-left-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));\n --tw-divide-x-reverse: 0;\n}\n\n.divide-y > :not([hidden]) ~ :not([hidden]) {\n border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n border-bottom-width: calc(1px * var(--tw-divide-y-reverse));\n --tw-divide-y-reverse: 0;\n}\n\n.divide-gray-200 > :not([hidden]) ~ :not([hidden]) {\n border-color: rgb(var(--color-gray-200) / var(--tw-divide-opacity));\n --tw-divide-opacity: 1;\n}\n\n.self-center {\n align-self: center;\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-y-auto {\n overflow-y: auto;\n}\n\n.overflow-x-hidden {\n overflow-x: hidden;\n}\n\n.truncate {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.whitespace-nowrap {\n white-space: nowrap;\n}\n\n.whitespace-pre-line {\n white-space: pre-line;\n}\n\n.rounded {\n border-radius: .25rem;\n}\n\n.rounded-2xl {\n border-radius: 1rem;\n}\n\n.rounded-\\[10px\\] {\n border-radius: 10px;\n}\n\n.rounded-\\[3px\\] {\n border-radius: 3px;\n}\n\n.rounded-\\[4px\\] {\n border-radius: 4px;\n}\n\n.rounded-\\[6px\\] {\n border-radius: 6px;\n}\n\n.rounded-\\[8px\\] {\n border-radius: 8px;\n}\n\n.rounded-\\[inherit\\] {\n border-radius: inherit;\n}\n\n.rounded-full {\n border-radius: 9999px;\n}\n\n.rounded-lg {\n border-radius: .5rem;\n}\n\n.rounded-md {\n border-radius: .375rem;\n}\n\n.rounded-xl {\n border-radius: .75rem;\n}\n\n.rounded-b-3xl {\n border-bottom-right-radius: 1.5rem;\n border-bottom-left-radius: 1.5rem;\n}\n\n.rounded-t-3xl {\n border-top-left-radius: 1.5rem;\n border-top-right-radius: 1.5rem;\n}\n\n.border {\n border-width: 1px;\n}\n\n.border-2 {\n border-width: 2px;\n}\n\n.border-b {\n border-bottom-width: 1px;\n}\n\n.border-l {\n border-left-width: 1px;\n}\n\n.border-r {\n border-right-width: 1px;\n}\n\n.border-t {\n border-top-width: 1px;\n}\n\n.border-amber-700 {\n border-color: rgb(var(--color-amber-700) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-blue-700 {\n border-color: rgb(var(--color-blue-700) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-gray-100 {\n border-color: rgb(var(--color-gray-100) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-gray-1000 {\n border-color: rgb(var(--color-gray-1000) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-gray-200 {\n border-color: rgb(var(--color-gray-200) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-gray-600 {\n border-color: rgb(var(--color-gray-600) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-red-700 {\n border-color: rgb(var(--color-red-700) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-white\\/10 {\n border-color: #ffffff1a;\n}\n\n.bg-\\[\\#292929\\] {\n background-color: rgb(41 41 41 / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-amber-100 {\n background-color: rgb(var(--color-amber-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-amber-200 {\n background-color: rgb(var(--color-amber-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-amber-700 {\n background-color: rgb(var(--color-amber-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-black\\/25 {\n background-color: #00000040;\n}\n\n.bg-black\\/60 {\n background-color: #0009;\n}\n\n.bg-blue-100 {\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-blue-300 {\n background-color: rgb(var(--color-blue-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-blue-700 {\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-bronze-300 {\n background-color: rgb(var(--color-bronze-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-brown-100 {\n background-color: rgb(var(--color-brown-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-brown-300 {\n background-color: rgb(var(--color-brown-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-brown-700 {\n background-color: rgb(var(--color-brown-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-crimson-100 {\n background-color: rgb(var(--color-crimson-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-crimson-300 {\n background-color: rgb(var(--color-crimson-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-crimson-700 {\n background-color: rgb(var(--color-crimson-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-cyan-100 {\n background-color: rgb(var(--color-cyan-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-cyan-300 {\n background-color: rgb(var(--color-cyan-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-cyan-700 {\n background-color: rgb(var(--color-cyan-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gold-300 {\n background-color: rgb(var(--color-gold-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-grass-300 {\n background-color: rgb(var(--color-grass-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-100 {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-1000 {\n background-color: rgb(var(--color-gray-1000) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-1000\\/25 {\n background-color: rgb(var(--color-gray-1000) / .25);\n}\n\n.bg-gray-1000\\/80 {\n background-color: rgb(var(--color-gray-1000) / .8);\n}\n\n.bg-gray-200 {\n background-color: rgb(var(--color-gray-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-25 {\n background-color: rgb(var(--color-gray-25) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-25\\/50 {\n background-color: rgb(var(--color-gray-25) / .5);\n}\n\n.bg-gray-300 {\n background-color: rgb(var(--color-gray-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-50 {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-600 {\n background-color: rgb(var(--color-gray-600) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-900 {\n background-color: rgb(var(--color-gray-900) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-green-100 {\n background-color: rgb(var(--color-green-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-green-300 {\n background-color: rgb(var(--color-green-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-green-700 {\n background-color: rgb(var(--color-green-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-indigo-300 {\n background-color: rgb(var(--color-indigo-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-lime-300 {\n background-color: rgb(var(--color-lime-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-orange-100 {\n background-color: rgb(var(--color-orange-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-orange-700 {\n background-color: rgb(var(--color-orange-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-plum-300 {\n background-color: rgb(var(--color-plum-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-purple-300 {\n background-color: rgb(var(--color-purple-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-red-100 {\n background-color: rgb(var(--color-red-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-red-300 {\n background-color: rgb(var(--color-red-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-red-700 {\n background-color: rgb(var(--color-red-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-red-700\\/60 {\n background-color: rgb(var(--color-red-700) / .6);\n}\n\n.bg-teal-100 {\n background-color: rgb(var(--color-teal-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-teal-300 {\n background-color: rgb(var(--color-teal-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-teal-700 {\n background-color: rgb(var(--color-teal-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-transparent {\n background-color: #0000;\n}\n\n.bg-violet-100 {\n background-color: rgb(var(--color-violet-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-violet-300 {\n background-color: rgb(var(--color-violet-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-violet-700 {\n background-color: rgb(var(--color-violet-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-white {\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-yellow-300 {\n background-color: rgb(var(--color-yellow-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-cover {\n background-size: cover;\n}\n\n.bg-center {\n background-position: center;\n}\n\n.object-contain {\n object-fit: contain;\n}\n\n.object-cover {\n object-fit: cover;\n}\n\n.p-0 {\n padding: 0;\n}\n\n.p-1 {\n padding: .25rem;\n}\n\n.p-1\\.5 {\n padding: .375rem;\n}\n\n.p-2 {\n padding: .5rem;\n}\n\n.p-2\\.5 {\n padding: .625rem;\n}\n\n.p-3 {\n padding: .75rem;\n}\n\n.p-4 {\n padding: 1rem;\n}\n\n.p-5 {\n padding: 1.25rem;\n}\n\n.p-6 {\n padding: 1.5rem;\n}\n\n.p-8 {\n padding: 2rem;\n}\n\n.p-\\[11px\\] {\n padding: 11px;\n}\n\n.px-2 {\n padding-left: .5rem;\n padding-right: .5rem;\n}\n\n.px-2\\.5 {\n padding-left: .625rem;\n padding-right: .625rem;\n}\n\n.px-3 {\n padding-left: .75rem;\n padding-right: .75rem;\n}\n\n.px-3\\.5 {\n padding-left: .875rem;\n padding-right: .875rem;\n}\n\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n.py-0 {\n padding-top: 0;\n padding-bottom: 0;\n}\n\n.py-0\\.5 {\n padding-top: .125rem;\n padding-bottom: .125rem;\n}\n\n.py-1 {\n padding-top: .25rem;\n padding-bottom: .25rem;\n}\n\n.py-1\\.5 {\n padding-top: .375rem;\n padding-bottom: .375rem;\n}\n\n.py-12 {\n padding-top: 3rem;\n padding-bottom: 3rem;\n}\n\n.py-2 {\n padding-top: .5rem;\n padding-bottom: .5rem;\n}\n\n.py-2\\.5 {\n padding-top: .625rem;\n padding-bottom: .625rem;\n}\n\n.py-3 {\n padding-top: .75rem;\n padding-bottom: .75rem;\n}\n\n.pb-2 {\n padding-bottom: .5rem;\n}\n\n.pb-\\[9px\\] {\n padding-bottom: 9px;\n}\n\n.pl-2 {\n padding-left: .5rem;\n}\n\n.pl-4 {\n padding-left: 1rem;\n}\n\n.pr-2 {\n padding-right: .5rem;\n}\n\n.pt-1 {\n padding-top: .25rem;\n}\n\n.pt-10 {\n padding-top: 2.5rem;\n}\n\n.pt-4 {\n padding-top: 1rem;\n}\n\n.text-left {\n text-align: left;\n}\n\n.text-center {\n text-align: center;\n}\n\n.align-middle {\n vertical-align: middle;\n}\n\n.text-2xl {\n letter-spacing: -.02em;\n font-size: 24px;\n line-height: 32px;\n}\n\n.text-3xl {\n letter-spacing: -.02em;\n font-size: 30px;\n line-height: 38px;\n}\n\n.text-4xl {\n letter-spacing: -.02em;\n font-size: 36px;\n line-height: 44px;\n}\n\n.text-\\[10px\\] {\n font-size: 10px;\n}\n\n.text-\\[112px\\] {\n font-size: 112px;\n}\n\n.text-\\[30px\\] {\n font-size: 30px;\n}\n\n.text-lg {\n letter-spacing: -.02em;\n font-size: 18px;\n line-height: 22px;\n}\n\n.text-md {\n letter-spacing: -.02em;\n font-size: 16px;\n line-height: 20px;\n}\n\n.text-sm {\n letter-spacing: -.02em;\n font-size: 14px;\n line-height: 20px;\n}\n\n.text-xs {\n letter-spacing: -.02em;\n font-size: 12px;\n line-height: 16px;\n}\n\n.font-bold {\n font-weight: 700;\n}\n\n.font-medium {\n font-weight: 500;\n}\n\n.font-normal {\n font-weight: 400;\n}\n\n.font-semibold {\n font-weight: 600;\n}\n\n.leading-none {\n line-height: 1;\n}\n\n.text-\\[\\#707070\\] {\n color: rgb(112 112 112 / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-amber-700 {\n color: rgb(var(--color-amber-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-blue-700 {\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-bronze-700 {\n color: rgb(var(--color-bronze-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-brown-700 {\n color: rgb(var(--color-brown-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-crimson-700 {\n color: rgb(var(--color-crimson-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-current {\n color: currentColor;\n}\n\n.text-cyan-700 {\n color: rgb(var(--color-cyan-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-gold-700 {\n color: rgb(var(--color-gold-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-grass-700 {\n color: rgb(var(--color-grass-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-gray-1000 {\n color: rgb(var(--color-gray-1000) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-gray-700 {\n color: rgb(var(--color-gray-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-gray-900 {\n color: rgb(var(--color-gray-900) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-green-700 {\n color: rgb(var(--color-green-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-indigo-700 {\n color: rgb(var(--color-indigo-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-inherit {\n color: inherit;\n}\n\n.text-lime-700 {\n color: rgb(var(--color-lime-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-orange-700 {\n color: rgb(var(--color-orange-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-plum-700 {\n color: rgb(var(--color-plum-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-primary {\n color: rgb(29 28 32 / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-purple-700 {\n color: rgb(var(--color-purple-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-red-700 {\n color: rgb(var(--color-red-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-teal-700 {\n color: rgb(var(--color-teal-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-violet-700 {\n color: rgb(var(--color-violet-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-white {\n color: rgb(255 255 255 / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-white\\/80 {\n color: #fffc;\n}\n\n.text-yellow-700 {\n color: rgb(var(--color-yellow-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.underline {\n text-decoration-line: underline;\n}\n\n.underline-offset-8 {\n text-underline-offset: 8px;\n}\n\n.antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.opacity-50 {\n opacity: .5;\n}\n\n.shadow-dropdown-sm {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n --tw-shadow: 0px 1px 2px 0px #1018280f, 0px 1px 3px 0px #1018281a;\n --tw-shadow-colored: 0px 1px 2px 0px var(--tw-shadow-color), 0px 1px 3px 0px var(--tw-shadow-color);\n}\n\n.shadow-lg {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n --tw-shadow: 0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n}\n\n.shadow-md {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n --tw-shadow: 0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n}\n\n.shadow-sm {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n --tw-shadow: 0 1px 2px 0 #0000000d;\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n}\n\n.outline-none {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.outline {\n outline-style: solid;\n}\n\n.ring-1 {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\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(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.ring-2 {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\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(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.ring-4 {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\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(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.ring-\\[3px\\] {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\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}\n\n.ring-inset {\n --tw-ring-inset: inset;\n}\n\n.ring-amber-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-amber-300) / var(--tw-ring-opacity));\n}\n\n.ring-blue-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-300) / var(--tw-ring-opacity));\n}\n\n.ring-blue-700 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-700) / var(--tw-ring-opacity));\n}\n\n.ring-brown-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-brown-300) / var(--tw-ring-opacity));\n}\n\n.ring-crimson-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-crimson-300) / var(--tw-ring-opacity));\n}\n\n.ring-cyan-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-cyan-300) / var(--tw-ring-opacity));\n}\n\n.ring-gray-200 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-gray-200) / var(--tw-ring-opacity));\n}\n\n.ring-green-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-green-300) / var(--tw-ring-opacity));\n}\n\n.ring-orange-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-orange-300) / var(--tw-ring-opacity));\n}\n\n.ring-red-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-red-300) / var(--tw-ring-opacity));\n}\n\n.ring-teal-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-teal-300) / var(--tw-ring-opacity));\n}\n\n.ring-violet-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-violet-300) / var(--tw-ring-opacity));\n}\n\n.ring-white {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(255 255 255 / var(--tw-ring-opacity));\n}\n\n.ring-white\\/20 {\n --tw-ring-color: #fff3;\n}\n\n.ring-offset-0 {\n --tw-ring-offset-width: 0px;\n}\n\n.ring-offset-white {\n --tw-ring-offset-color: #fff;\n}\n\n.blur {\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 --tw-blur: blur(8px);\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.backdrop-blur-\\[30px\\] {\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n --tw-backdrop-blur: blur(30px);\n}\n\n.backdrop-blur-lg {\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n --tw-backdrop-blur: blur(16px);\n}\n\n.backdrop-blur-sm {\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n --tw-backdrop-blur: blur(4px);\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-all {\n transition-property: all;\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 {\n transition-property: transform;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.duration-200 {\n transition-duration: .2s;\n}\n\n.duration-500 {\n transition-duration: .5s;\n}\n\n.duration-700 {\n transition-duration: .7s;\n}\n\n.ease-in-out {\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.ease-linear {\n transition-timing-function: linear;\n}\n\n.ease-out {\n transition-timing-function: cubic-bezier(0, 0, .2, 1);\n}\n\n.will-change-transform {\n will-change: transform;\n}\n\n@keyframes enter {\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n\n.animate-in {\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n animation-name: enter;\n animation-duration: .15s;\n}\n\n.fade-in, .fade-in-0 {\n --tw-enter-opacity: 0;\n}\n\n.fade-out {\n --tw-exit-opacity: 0;\n}\n\n.zoom-in-95 {\n --tw-enter-scale: .95;\n}\n\n.duration-200 {\n animation-duration: .2s;\n}\n\n.duration-500 {\n animation-duration: .5s;\n}\n\n.duration-700 {\n animation-duration: .7s;\n}\n\n.ease-in-out {\n animation-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.ease-linear {\n animation-timing-function: linear;\n}\n\n.ease-out {\n animation-timing-function: cubic-bezier(0, 0, .2, 1);\n}\n\n.paused {\n animation-play-state: paused;\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.pulse-red-700 {\n animation: 2s infinite pulse-red-700;\n transform: scale(1);\n box-shadow: 0 0 #e5484d;\n}\n\n@keyframes pulse-red-700 {\n 0% {\n transform: scale(.95);\n box-shadow: 0 0 #e5484db3;\n }\n\n 70% {\n transform: scale(1);\n box-shadow: 0 0 0 6px #e5484d00;\n }\n\n 100% {\n transform: scale(.95);\n box-shadow: 0 0 #e5484d00;\n }\n}\n\n.placeholder\\:text-gray-700::placeholder {\n color: rgb(var(--color-gray-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.placeholder\\:text-gray-900::placeholder {\n color: rgb(var(--color-gray-900) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.focus-within\\:relative:focus-within {\n position: relative;\n}\n\n.focus-within\\:z-20:focus-within {\n z-index: 20;\n}\n\n.focus-within\\:border-gray-200:focus-within {\n border-color: rgb(var(--color-gray-200) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.focus-within\\:bg-gray-100:focus-within {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.focus-within\\:outline:focus-within {\n outline-style: solid;\n}\n\n.focus-within\\:outline-\\[2px\\]:focus-within {\n outline-width: 2px;\n}\n\n.focus-within\\:outline-offset-\\[2px\\]:focus-within {\n outline-offset: 2px;\n}\n\n.focus-within\\:outline-blue-300:focus-within {\n outline-color: rgb(var(--color-blue-300) / 1);\n}\n\n.focus-within\\:outline-red-700:focus-within {\n outline-color: rgb(var(--color-red-700) / 1);\n}\n\n.hover\\:bg-black\\/10:hover {\n background-color: #0000001a;\n}\n\n.hover\\:bg-blue-100:hover {\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-blue-50:hover {\n background-color: rgb(var(--color-blue-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-blue-700:hover {\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-blue-800:hover {\n background-color: rgb(var(--color-blue-800) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-gray-100:hover {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-gray-200:hover {\n background-color: rgb(var(--color-gray-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-gray-25\\/60:hover {\n background-color: rgb(var(--color-gray-25) / .6);\n}\n\n.hover\\:bg-gray-50:hover {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-red-100:hover {\n background-color: rgb(var(--color-red-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-red-800:hover {\n background-color: rgb(var(--color-red-800) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:text-blue-700:hover {\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.hover\\:text-white:hover {\n color: rgb(255 255 255 / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.hover\\:underline:hover {\n text-decoration-line: underline;\n}\n\n.focus\\:bg-gray-100:focus {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.focus\\:outline-none:focus {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.focus\\:ring-1:focus {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\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(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.focus\\:ring-2:focus {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\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(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.focus\\:ring-offset-2:focus {\n --tw-ring-offset-width: 2px;\n}\n\n.focus-visible\\:outline-none:focus-visible {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.focus-visible\\:ring-2:focus-visible {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\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(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.focus-visible\\:ring-blue-1000:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-1000) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-blue-300:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-300) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-blue-700:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-700) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-gray-1000:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-gray-1000) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-red-1000:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-red-1000) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-red-700:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-red-700) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-offset-2:focus-visible {\n --tw-ring-offset-width: 2px;\n}\n\n.active\\:bg-blue-200:active {\n background-color: rgb(var(--color-blue-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-blue-900:active {\n background-color: rgb(var(--color-blue-900) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-gray-100:active {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-gray-200:active {\n background-color: rgb(var(--color-gray-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-gray-25\\/70:active {\n background-color: rgb(var(--color-gray-25) / .7);\n}\n\n.active\\:bg-gray-500:active {\n background-color: rgb(var(--color-gray-500) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-red-200:active {\n background-color: rgb(var(--color-red-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-red-900:active {\n background-color: rgb(var(--color-red-900) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:text-blue-700:active {\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.active\\:text-blue-900:active {\n color: rgb(var(--color-blue-900) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.disabled\\:pointer-events-none:disabled {\n pointer-events: none;\n}\n\n.disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n\n.disabled\\:select-none:disabled {\n -webkit-user-select: none;\n user-select: none;\n}\n\n.disabled\\:opacity-40:disabled {\n opacity: .4;\n}\n\n.disabled\\:opacity-50:disabled {\n opacity: .5;\n}\n\n.group:focus-within .group-focus-within\\:bg-gray-100 {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.group:hover .group-hover\\:bg-gray-50 {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.group:active .group-active\\:bg-gray-100 {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.peer:disabled ~ .peer-disabled\\:cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.peer:disabled ~ .peer-disabled\\:opacity-70 {\n opacity: .7;\n}\n\n.aria-selected\\:bg-blue-100[aria-selected=\"true\"] {\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.aria-selected\\:text-blue-700[aria-selected=\"true\"] {\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.aria-selected\\:opacity-100[aria-selected=\"true\"] {\n opacity: 1;\n}\n\n.data-\\[disabled\\]\\:pointer-events-none[data-disabled] {\n pointer-events: none;\n}\n\n.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=\"bottom\"] {\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 --tw-translate-y: .25rem;\n}\n\n.data-\\[side\\=left\\]\\:-translate-x-1[data-side=\"left\"] {\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 --tw-translate-x: -.25rem;\n}\n\n.data-\\[side\\=right\\]\\:translate-x-1[data-side=\"right\"] {\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 --tw-translate-x: .25rem;\n}\n\n.data-\\[side\\=top\\]\\:-translate-y-1[data-side=\"top\"] {\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 --tw-translate-y: -.25rem;\n}\n\n.data-\\[state\\=checked\\]\\:translate-x-5[data-state=\"checked\"] {\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 --tw-translate-x: 1.25rem;\n}\n\n.data-\\[swipe\\=cancel\\]\\:translate-x-0[data-swipe=\"cancel\"] {\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 --tw-translate-x: 0px;\n}\n\n.data-\\[swipe\\=end\\]\\:translate-x-\\[var\\(--radix-toast-swipe-end-x\\)\\][data-swipe=\"end\"] {\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 --tw-translate-x: var(--radix-toast-swipe-end-x);\n}\n\n.data-\\[swipe\\=move\\]\\:translate-x-\\[var\\(--radix-toast-swipe-move-x\\)\\][data-swipe=\"move\"] {\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 --tw-translate-x: var(--radix-toast-swipe-move-x);\n}\n\n@keyframes accordion-up {\n from {\n height: var(--radix-accordion-content-height);\n }\n\n to {\n height: 0;\n }\n}\n\n.data-\\[state\\=closed\\]\\:animate-accordion-up[data-state=\"closed\"] {\n animation: .2s ease-out accordion-up;\n}\n\n@keyframes accordion-down {\n from {\n height: 0;\n }\n\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n\n.data-\\[state\\=open\\]\\:animate-accordion-down[data-state=\"open\"] {\n animation: .2s ease-out accordion-down;\n}\n\n.data-\\[disabled\\]\\:cursor-not-allowed[data-disabled] {\n cursor: not-allowed;\n}\n\n.data-\\[state\\=checked\\]\\:border-blue-700[data-state=\"checked\"], .data-\\[state\\=on\\]\\:border-blue-700[data-state=\"on\"] {\n border-color: rgb(var(--color-blue-700) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.data-\\[disabled\\]\\:data-\\[state\\=unchecked\\]\\:bg-gray-300[data-state=\"unchecked\"][data-disabled] {\n background-color: rgb(var(--color-gray-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[selected\\=true\\]\\:bg-gray-50[data-selected=\"true\"] {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-amber-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-amber-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-blue-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-bronze-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-bronze-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-brown-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-brown-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-crimson-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-crimson-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-cyan-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-cyan-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-gold-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-gold-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-grass-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-grass-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-gray-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-gray-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-green-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-green-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-indigo-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-indigo-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-lime-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-lime-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-plum-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-plum-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-purple-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-purple-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-red-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-red-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-teal-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-teal-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-violet-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-violet-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-yellow-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-yellow-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=active\\]\\:bg-white[data-state=\"active\"] {\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=checked\\]\\:bg-blue-700[data-state=\"checked\"] {\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=checked\\]\\:bg-gray-50[data-state=\"checked\"] {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=checked\\]\\:bg-white[data-state=\"checked\"] {\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=selected\\]\\:bg-gray-50[data-state=\"selected\"] {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=active\\]\\:text-blue-700[data-state=\"active\"] {\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.data-\\[state\\=active\\]\\:text-gray-25[data-state=\"active\"] {\n color: rgb(var(--color-gray-25) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.data-\\[disabled\\]\\:opacity-40[data-disabled] {\n opacity: .4;\n}\n\n.data-\\[disabled\\]\\:opacity-50[data-disabled] {\n opacity: .5;\n}\n\n.data-\\[state\\=active\\]\\:shadow-sm[data-state=\"active\"] {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n --tw-shadow: 0 1px 2px 0 #0000000d;\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n}\n\n.data-\\[swipe\\=move\\]\\:transition-none[data-swipe=\"move\"] {\n transition-property: none;\n}\n\n.data-\\[state\\=closed\\]\\:duration-300[data-state=\"closed\"] {\n transition-duration: .3s;\n}\n\n.data-\\[state\\=open\\]\\:duration-500[data-state=\"open\"] {\n transition-duration: .5s;\n}\n\n.data-\\[state\\=open\\]\\:animate-in[data-state=\"open\"] {\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n animation-name: enter;\n animation-duration: .15s;\n}\n\n.data-\\[state\\=closed\\]\\:animate-out[data-state=\"closed\"], .data-\\[swipe\\=end\\]\\:animate-out[data-swipe=\"end\"] {\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n animation-name: exit;\n animation-duration: .15s;\n}\n\n.data-\\[state\\=closed\\]\\:fade-out[data-state=\"closed\"], .data-\\[state\\=closed\\]\\:fade-out-0[data-state=\"closed\"] {\n --tw-exit-opacity: 0;\n}\n\n.data-\\[state\\=closed\\]\\:fade-out-80[data-state=\"closed\"] {\n --tw-exit-opacity: .8;\n}\n\n.data-\\[state\\=open\\]\\:fade-in-0[data-state=\"open\"] {\n --tw-enter-opacity: 0;\n}\n\n.data-\\[state\\=closed\\]\\:zoom-out-95[data-state=\"closed\"] {\n --tw-exit-scale: .95;\n}\n\n.data-\\[state\\=open\\]\\:zoom-in-95[data-state=\"open\"] {\n --tw-enter-scale: .95;\n}\n\n.data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=\"bottom\"] {\n --tw-enter-translate-y: -.5rem;\n}\n\n.data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=\"left\"] {\n --tw-enter-translate-x: .5rem;\n}\n\n.data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=\"right\"] {\n --tw-enter-translate-x: -.5rem;\n}\n\n.data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=\"top\"] {\n --tw-enter-translate-y: .5rem;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-bottom[data-state=\"closed\"], .data-\\[state\\=closed\\]\\:slide-out-to-bottom-\\[100\\%\\][data-state=\"closed\"] {\n --tw-exit-translate-y: 100%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-left[data-state=\"closed\"] {\n --tw-exit-translate-x: -100%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-left-1\\/2[data-state=\"closed\"], .data-\\[state\\=closed\\]\\:slide-out-to-left-\\[50\\%\\][data-state=\"closed\"] {\n --tw-exit-translate-x: -50%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-right[data-state=\"closed\"] {\n --tw-exit-translate-x: 100%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-top[data-state=\"closed\"] {\n --tw-exit-translate-y: -100%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-top-\\[48\\%\\][data-state=\"closed\"] {\n --tw-exit-translate-y: -48%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-bottom[data-state=\"open\"], .data-\\[state\\=open\\]\\:slide-in-from-bottom-\\[100\\%\\][data-state=\"open\"] {\n --tw-enter-translate-y: 100%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-left[data-state=\"open\"] {\n --tw-enter-translate-x: -100%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-left-1\\/2[data-state=\"open\"], .data-\\[state\\=open\\]\\:slide-in-from-left-\\[50\\%\\][data-state=\"open\"] {\n --tw-enter-translate-x: -50%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-right[data-state=\"open\"] {\n --tw-enter-translate-x: 100%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-top[data-state=\"open\"] {\n --tw-enter-translate-y: -100%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-top-\\[48\\%\\][data-state=\"open\"] {\n --tw-enter-translate-y: -48%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-top-full[data-state=\"open\"] {\n --tw-enter-translate-y: -100%;\n}\n\n.data-\\[state\\=closed\\]\\:duration-300[data-state=\"closed\"] {\n animation-duration: .3s;\n}\n\n.data-\\[state\\=open\\]\\:duration-500[data-state=\"open\"] {\n animation-duration: .5s;\n}\n\n.group[data-state=\"open\"] .group-data-\\[state\\=open\\]\\:rotate-180 {\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 --tw-rotate: 180deg;\n}\n\n.group[data-disabled] .group-data-\\[disabled\\]\\:cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.group[data-state=\"on\"] .group-data-\\[state\\=on\\]\\:border-blue-700 {\n border-color: rgb(var(--color-blue-700) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.group[data-state=\"checked\"] .group-data-\\[state\\=checked\\]\\:bg-gray-50 {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.group[data-state=\"off\"] .group-data-\\[state\\=off\\]\\:bg-transparent {\n background-color: #0000;\n}\n\n.group[data-state=\"off\"] .group-data-\\[state\\=off\\]\\:text-transparent {\n color: #0000;\n}\n\n.group[data-disabled] .group-data-\\[disabled\\]\\:opacity-50 {\n opacity: .5;\n}\n\n@media not all and (width >= 1024px) {\n .max-lg\\:mt-8 {\n margin-top: 2rem;\n }\n\n .max-lg\\:hidden {\n display: none;\n }\n\n .max-lg\\:h-\\[250px\\] {\n height: 250px;\n }\n\n .max-lg\\:w-full {\n width: 100%;\n }\n\n .max-lg\\:flex-col {\n flex-direction: column;\n }\n}\n\n@media not all and (width >= 640px) {\n .max-sm\\:gap-4 {\n gap: 1rem;\n }\n\n .max-sm\\:p-4 {\n padding: 1rem;\n }\n}\n\n@media (width >= 640px) {\n .sm\\:mt-0 {\n margin-top: 0;\n }\n\n .sm\\:w-1\\/2 {\n width: 50%;\n }\n\n .sm\\:max-w-sm {\n max-width: 24rem;\n }\n\n .sm\\:flex-row {\n flex-direction: row;\n }\n\n .sm\\:flex-col {\n flex-direction: column;\n }\n\n .sm\\:justify-end {\n justify-content: flex-end;\n }\n\n .sm\\:justify-center {\n justify-content: center;\n }\n\n .sm\\:space-x-2 > :not([hidden]) ~ :not([hidden]) {\n margin-right: calc(.5rem * var(--tw-space-x-reverse));\n margin-left: calc(.5rem * calc(1 - var(--tw-space-x-reverse)));\n --tw-space-x-reverse: 0;\n }\n\n .sm\\:space-x-4 > :not([hidden]) ~ :not([hidden]) {\n margin-right: calc(1rem * var(--tw-space-x-reverse));\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n --tw-space-x-reverse: 0;\n }\n\n .sm\\:space-y-0 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0px * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n }\n\n .data-\\[state\\=open\\]\\:sm\\:slide-in-from-bottom-full[data-state=\"open\"] {\n --tw-enter-translate-y: 100%;\n }\n}\n\n@media (width >= 768px) {\n .md\\:block {\n display: block;\n }\n\n .md\\:h-\\[550px\\] {\n height: 550px;\n }\n\n .md\\:w-\\[1000px\\] {\n width: 1000px;\n }\n\n .md\\:w-\\[300px\\] {\n width: 300px;\n }\n\n .md\\:w-\\[334px\\] {\n width: 334px;\n }\n\n .md\\:w-\\[500px\\] {\n width: 500px;\n }\n\n .md\\:w-auto {\n width: auto;\n }\n\n .md\\:w-full {\n width: 100%;\n }\n\n .md\\:w-screen {\n width: 100vw;\n }\n\n .md\\:max-w-\\[420px\\] {\n max-width: 420px;\n }\n\n .md\\:max-w-\\[90vw\\] {\n max-width: 90vw;\n }\n\n .md\\:flex-row {\n flex-direction: row;\n }\n\n .md\\:items-center {\n align-items: center;\n }\n\n .md\\:justify-start {\n justify-content: flex-start;\n }\n\n .md\\:gap-0 {\n gap: 0;\n }\n\n .md\\:gap-4 {\n gap: 1rem;\n }\n\n .md\\:gap-8 {\n gap: 2rem;\n }\n\n .md\\:divide-y > :not([hidden]) ~ :not([hidden]) {\n border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n border-bottom-width: calc(1px * var(--tw-divide-y-reverse));\n --tw-divide-y-reverse: 0;\n }\n\n .md\\:border-0 {\n border-width: 0;\n }\n\n .md\\:bg-gray-50 {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n }\n\n .md\\:bg-transparent {\n background-color: #0000;\n }\n\n .md\\:p-0 {\n padding: 0;\n }\n\n .md\\:p-4 {\n padding: 1rem;\n }\n\n .md\\:p-6 {\n padding: 1.5rem;\n }\n\n .md\\:p-8 {\n padding: 2rem;\n }\n\n .md\\:pt-4 {\n padding-top: 1rem;\n }\n}\n\n@media (width >= 1024px) {\n .lg\\:flex-col {\n flex-direction: column;\n }\n\n .lg\\:items-center {\n align-items: center;\n }\n\n .lg\\:gap-2 {\n gap: .5rem;\n }\n\n .lg\\:gap-8 {\n gap: 2rem;\n }\n\n .lg\\:rounded-lg {\n border-radius: .5rem;\n }\n\n .lg\\:border {\n border-width: 1px;\n }\n\n .lg\\:border-gray-200 {\n border-color: rgb(var(--color-gray-200) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n }\n\n .lg\\:bg-pattern {\n background-image: radial-gradient(50% 50%, #006aff33 0%, #006aff00 100%), linear-gradient(#0000 0%, #fff 100%), linear-gradient(0deg, #0000 0%, #ffffffbf 100%), url(\"data:image/svg+xml,%3Csvg width='40' height='40' viewBox='0 0 40 40' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M40 40V41H41V40H40ZM39 0V40H41V0H39ZM40 39H0V41H40V39Z' fill='%23E8E8E8' mask='url(%23path-1-inside-1_124_242)'/%3E%3C/svg%3E\");\n }\n\n .lg\\:p-6 {\n padding: 1.5rem;\n }\n\n .lg\\:text-center {\n text-align: center;\n }\n\n .lg\\:text-4xl {\n letter-spacing: -.02em;\n font-size: 36px;\n line-height: 44px;\n }\n}\n\n@media (width >= 1280px) {\n .xl\\:rounded-none {\n border-radius: 0;\n }\n}\n\n.\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:bg-blue-100:has([aria-selected]) {\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.first\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-l-md:has([aria-selected]):first-child {\n border-top-left-radius: .375rem;\n border-bottom-left-radius: .375rem;\n}\n\n.last\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-r-md:has([aria-selected]):last-child {\n border-top-right-radius: .375rem;\n border-bottom-right-radius: .375rem;\n}\n\n.\\[\\&\\:has\\(\\[role\\=checkbox\\]\\)\\]\\:pr-0:has([role=\"checkbox\"]) {\n padding-right: 0;\n}\n\n.\\[\\&\\:not\\(\\[aria-selected\\]\\)\\]\\:hover\\:bg-gray-100:hover:not([aria-selected]) {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.\\[\\&\\>\\*\\]\\:fill-white > * {\n fill: #fff;\n}\n\n.\\[\\&\\>\\[role\\=checkbox\\]\\]\\:translate-y-\\[2px\\] > [role=\"checkbox\"] {\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 --tw-translate-y: 2px;\n}\n\n.\\[\\&\\>svg\\]\\:h-4 > svg {\n height: 1rem;\n}\n\n.\\[\\&\\>svg\\]\\:w-auto > svg {\n width: auto;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading] {\n padding-left: .5rem;\n padding-right: .5rem;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading] {\n padding-top: .375rem;\n padding-bottom: .375rem;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-sm [cmdk-group-heading] {\n letter-spacing: -.02em;\n font-size: 14px;\n line-height: 20px;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading] {\n font-weight: 500;\n}\n\n.\\[\\&_tr\\:active\\]\\:bg-gray-50 tr:active, .\\[\\&_tr\\:hover\\:active\\]\\:bg-gray-50 tr:hover:active {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.\\[\\&_tr\\:hover\\]\\:bg-gray-25 tr:hover {\n background-color: rgb(var(--color-gray-25) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.\\[\\&_tr\\:last-child\\]\\:border-0 tr:last-child {\n border-width: 0;\n}\n\n.\\[\\&_tr\\]\\:border-b tr {\n border-bottom-width: 1px;\n}\n";
|
|
14103
14651
|
|
|
14104
14652
|
|
|
14105
14653
|
var $3243e6167f48b6be$exports = {};
|
|
@@ -14151,15 +14699,12 @@ const $e68207026aca356b$var$defaultOptions = {
|
|
|
14151
14699
|
},
|
|
14152
14700
|
streamApiURL: String("https://apistream.snapcall.io"),
|
|
14153
14701
|
apiUrl: String("https://api.snapcall.io/v2"),
|
|
14154
|
-
tracking: false
|
|
14155
|
-
token: undefined,
|
|
14156
|
-
profile: undefined,
|
|
14157
|
-
apiKey: undefined
|
|
14702
|
+
tracking: false
|
|
14158
14703
|
};
|
|
14159
14704
|
let $e68207026aca356b$var$streamUIOption = {};
|
|
14160
14705
|
const $e68207026aca356b$export$3f94917203ab7078 = {
|
|
14161
|
-
init: (
|
|
14162
|
-
$e68207026aca356b$var$streamUIOption =
|
|
14706
|
+
init: (options)=>{
|
|
14707
|
+
$e68207026aca356b$var$streamUIOption = options;
|
|
14163
14708
|
},
|
|
14164
14709
|
joinRoom: async (token, option)=>{
|
|
14165
14710
|
return $e68207026aca356b$export$3f94917203ab7078.initV2({
|
|
@@ -14181,29 +14726,6 @@ const $e68207026aca356b$export$3f94917203ab7078 = {
|
|
|
14181
14726
|
defaultMode: "video",
|
|
14182
14727
|
skipOnboarding: false
|
|
14183
14728
|
};
|
|
14184
|
-
const { flow: flow, flowV0: flowV0 } = await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).init(options.token, {
|
|
14185
|
-
languageCode: options.language,
|
|
14186
|
-
flowToken: options.flowToken,
|
|
14187
|
-
recorder: options.recorder?.enabled,
|
|
14188
|
-
apiKey: options.apiKey,
|
|
14189
|
-
email: options.email,
|
|
14190
|
-
profile: options.profile,
|
|
14191
|
-
authKey: options.authKey
|
|
14192
|
-
});
|
|
14193
|
-
if (flow) {
|
|
14194
|
-
const step = flow.steps[0];
|
|
14195
|
-
if (step) {
|
|
14196
|
-
options.recorder = {
|
|
14197
|
-
enabledModes: [
|
|
14198
|
-
step.type === "image" ? "photo" : step.type
|
|
14199
|
-
],
|
|
14200
|
-
enabled: true,
|
|
14201
|
-
defaultMode: step.type === "image" ? "photo" : step.type,
|
|
14202
|
-
skipOnboarding: false
|
|
14203
|
-
};
|
|
14204
|
-
await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).setStep(flow?.steps[0].token);
|
|
14205
|
-
}
|
|
14206
|
-
}
|
|
14207
14729
|
if (options.recorder?.defaultMode === "screen" && !isDesktop) options.recorder.defaultMode = "video";
|
|
14208
14730
|
if (element?.nodeType !== window.Node.ELEMENT_NODE) throw new Error('The "element" property must be a valid element!');
|
|
14209
14731
|
const mergedOptions = (0, $6b4cf4c12c735fdf$export$6969335ea1e4e77c)($e68207026aca356b$var$defaultOptions, options);
|
|
@@ -14234,13 +14756,10 @@ const $e68207026aca356b$export$3f94917203ab7078 = {
|
|
|
14234
14756
|
href: "https://rsms.me/inter/inter.css"
|
|
14235
14757
|
}),
|
|
14236
14758
|
/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $ee8cb448c2c74888$export$2e2bcd8739ae039), {
|
|
14237
|
-
options: mergedOptions
|
|
14238
|
-
flow: flow,
|
|
14239
|
-
flowV0: flowV0
|
|
14759
|
+
options: mergedOptions
|
|
14240
14760
|
})
|
|
14241
14761
|
]
|
|
14242
14762
|
}));
|
|
14243
|
-
if (mergedOptions.tracking) (0, ($parcel$interopDefault($jQDcL$hotjarbrowser))).init(3111933, 6);
|
|
14244
14763
|
(0, $57b7750d9786bf6f$export$1cbfb36c1655a9a)(rootElement, element);
|
|
14245
14764
|
},
|
|
14246
14765
|
setExtraSettingsOptions: (extraOptions)=>{
|