@snapcall/stream-ui 1.34.0 → 1.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,16 +8,16 @@ import {toast as $3Sbms$toast, useToast as $3Sbms$useToast, useDialogState as $3
8
8
  import {useState as $3Sbms$useState, useRef as $3Sbms$useRef, useCallback as $3Sbms$useCallback, useEffect as $3Sbms$useEffect, useContext as $3Sbms$useContext, useMemo as $3Sbms$useMemo, createContext as $3Sbms$createContext, useReducer as $3Sbms$useReducer, Fragment as $3Sbms$Fragment1, cloneElement as $3Sbms$cloneElement, useLayoutEffect as $3Sbms$useLayoutEffect, forwardRef as $3Sbms$forwardRef} from "react";
9
9
  import $3Sbms$classnames from "classnames";
10
10
  import "inobounce";
11
- import {Recording3Icon as $3Sbms$Recording3Icon, InfoCircleIcon as $3Sbms$InfoCircleIcon, Speedometer4Icon as $3Sbms$Speedometer4Icon, Copy7Icon as $3Sbms$Copy7Icon, LinkExternal1Icon as $3Sbms$LinkExternal1Icon, QrCode1Icon as $3Sbms$QrCode1Icon, UserPlus1Icon as $3Sbms$UserPlus1Icon, Settings1Icon as $3Sbms$Settings1Icon, PhoneCall1Icon as $3Sbms$PhoneCall1Icon, VideoRecorderIcon as $3Sbms$VideoRecorderIcon, Recording2Icon as $3Sbms$Recording2Icon, Monitor2Icon as $3Sbms$Monitor2Icon, Camera2Icon as $3Sbms$Camera2Icon, Copy5Icon as $3Sbms$Copy5Icon, CheckIcon as $3Sbms$CheckIcon, XCircleIcon as $3Sbms$XCircleIcon, Send3Icon as $3Sbms$Send3Icon, AlertTriangleIcon as $3Sbms$AlertTriangleIcon, CopyIcon as $3Sbms$CopyIcon, Link1Icon as $3Sbms$Link1Icon, VolumeMaxIcon as $3Sbms$VolumeMaxIcon, Settings3Icon as $3Sbms$Settings3Icon, UserSquareIcon as $3Sbms$UserSquareIcon, XCloseIcon as $3Sbms$XCloseIcon, ArrowLeftIcon as $3Sbms$ArrowLeftIcon, HelpCircleIcon as $3Sbms$HelpCircleIcon, SpinnerIcon as $3Sbms$SpinnerIcon, User1Icon as $3Sbms$User1Icon, Microphone1Icon as $3Sbms$Microphone1Icon, MicrophoneOff1Icon as $3Sbms$MicrophoneOff1Icon, VideoRecorderOffIcon as $3Sbms$VideoRecorderOffIcon, CameraPlusIcon as $3Sbms$CameraPlusIcon, Minimize1Icon as $3Sbms$Minimize1Icon, Maximize1Icon as $3Sbms$Maximize1Icon, CheckCircleIcon as $3Sbms$CheckCircleIcon, Download1Icon as $3Sbms$Download1Icon, RefreshCcw2Icon as $3Sbms$RefreshCcw2Icon, YoutubeIcon as $3Sbms$YoutubeIcon, Upload3Icon as $3Sbms$Upload3Icon, LogIn2Icon as $3Sbms$LogIn2Icon, FlipBackwardIcon as $3Sbms$FlipBackwardIcon, ArrowUpRightIcon as $3Sbms$ArrowUpRightIcon, PlusCircleIcon as $3Sbms$PlusCircleIcon, Star1Icon as $3Sbms$Star1Icon, ImageXIcon as $3Sbms$ImageXIcon, Upload1Icon as $3Sbms$Upload1Icon, Trash3Icon as $3Sbms$Trash3Icon, TrashIcon as $3Sbms$TrashIcon, Image1Icon as $3Sbms$Image1Icon, RefreshCw3Icon as $3Sbms$RefreshCw3Icon, Camera1Icon as $3Sbms$Camera1Icon, PlayIcon as $3Sbms$PlayIcon, QrCodeIcon as $3Sbms$QrCodeIcon, WifiOffIcon as $3Sbms$WifiOffIcon, Hourglass3Icon as $3Sbms$Hourglass3Icon, MicrophoneOffIcon as $3Sbms$MicrophoneOffIcon, MarkerPin4Icon as $3Sbms$MarkerPin4Icon, SlashCircle1Icon as $3Sbms$SlashCircle1Icon, CalendarIcon as $3Sbms$CalendarIcon, AlertCircleIcon as $3Sbms$AlertCircleIcon, Lock1Icon as $3Sbms$Lock1Icon, Lock3Icon as $3Sbms$Lock3Icon, VoicemailIcon as $3Sbms$VoicemailIcon} from "@snapcall/design-system/icons";
11
+ import {Recording3Icon as $3Sbms$Recording3Icon, InfoCircleIcon as $3Sbms$InfoCircleIcon, Speedometer4Icon as $3Sbms$Speedometer4Icon, Copy7Icon as $3Sbms$Copy7Icon, LinkExternal1Icon as $3Sbms$LinkExternal1Icon, QrCode1Icon as $3Sbms$QrCode1Icon, UserPlus1Icon as $3Sbms$UserPlus1Icon, Settings1Icon as $3Sbms$Settings1Icon, PhoneCall1Icon as $3Sbms$PhoneCall1Icon, VideoRecorderIcon as $3Sbms$VideoRecorderIcon, Recording2Icon as $3Sbms$Recording2Icon, Monitor2Icon as $3Sbms$Monitor2Icon, Camera2Icon as $3Sbms$Camera2Icon, Copy5Icon as $3Sbms$Copy5Icon, CheckIcon as $3Sbms$CheckIcon, XCircleIcon as $3Sbms$XCircleIcon, Send3Icon as $3Sbms$Send3Icon, AlertTriangleIcon as $3Sbms$AlertTriangleIcon, CopyIcon as $3Sbms$CopyIcon, Link1Icon as $3Sbms$Link1Icon, VolumeMaxIcon as $3Sbms$VolumeMaxIcon, Settings3Icon as $3Sbms$Settings3Icon, UserSquareIcon as $3Sbms$UserSquareIcon, XCloseIcon as $3Sbms$XCloseIcon, ArrowLeftIcon as $3Sbms$ArrowLeftIcon, HelpCircleIcon as $3Sbms$HelpCircleIcon, SpinnerIcon as $3Sbms$SpinnerIcon, User1Icon as $3Sbms$User1Icon, Microphone1Icon as $3Sbms$Microphone1Icon, MicrophoneOff1Icon as $3Sbms$MicrophoneOff1Icon, VideoRecorderOffIcon as $3Sbms$VideoRecorderOffIcon, CameraPlusIcon as $3Sbms$CameraPlusIcon, Minimize1Icon as $3Sbms$Minimize1Icon, Maximize1Icon as $3Sbms$Maximize1Icon, CheckCircleIcon as $3Sbms$CheckCircleIcon, Download1Icon as $3Sbms$Download1Icon, RefreshCcw2Icon as $3Sbms$RefreshCcw2Icon, YoutubeIcon as $3Sbms$YoutubeIcon, Upload3Icon as $3Sbms$Upload3Icon, LogIn2Icon as $3Sbms$LogIn2Icon, FlipBackwardIcon as $3Sbms$FlipBackwardIcon, ArrowUpRightIcon as $3Sbms$ArrowUpRightIcon, PlusCircleIcon as $3Sbms$PlusCircleIcon, Star1Icon as $3Sbms$Star1Icon, ImageXIcon as $3Sbms$ImageXIcon, Upload1Icon as $3Sbms$Upload1Icon, Trash3Icon as $3Sbms$Trash3Icon, TrashIcon as $3Sbms$TrashIcon, Image1Icon as $3Sbms$Image1Icon, RefreshCw3Icon as $3Sbms$RefreshCw3Icon, Camera1Icon as $3Sbms$Camera1Icon, File2Icon as $3Sbms$File2Icon, PlayIcon as $3Sbms$PlayIcon, FileQuestion3Icon as $3Sbms$FileQuestion3Icon, QrCodeIcon as $3Sbms$QrCodeIcon, WifiOffIcon as $3Sbms$WifiOffIcon, Hourglass3Icon as $3Sbms$Hourglass3Icon, MicrophoneOffIcon as $3Sbms$MicrophoneOffIcon, MarkerPin4Icon as $3Sbms$MarkerPin4Icon, SlashCircle1Icon as $3Sbms$SlashCircle1Icon, CalendarIcon as $3Sbms$CalendarIcon, AlertCircleIcon as $3Sbms$AlertCircleIcon, Lock1Icon as $3Sbms$Lock1Icon, Lock3Icon as $3Sbms$Lock3Icon, VoicemailIcon as $3Sbms$VoicemailIcon} from "@snapcall/design-system/icons";
12
12
  import {Form as $3Sbms$Form, FormField as $3Sbms$FormField, FormItem as $3Sbms$FormItem, FormLabel as $3Sbms$FormLabel, FormControl as $3Sbms$FormControl, FormMessage as $3Sbms$FormMessage} from "@snapcall/design-system/form";
13
13
  import {useForm as $3Sbms$useForm} from "react-hook-form";
14
14
  import {v4 as $3Sbms$v4} from "uuid";
15
15
  import {WebSocketTransport as $3Sbms$WebSocketTransport, Peer as $3Sbms$Peer} from "protoo-client";
16
16
  import {Producer as $3Sbms$Producer} from "mediasoup-client/lib/Producer";
17
17
  import {Device as $3Sbms$Device} from "mediasoup-client";
18
+ import {Buffer as $3Sbms$Buffer} from "buffer";
18
19
  import {SelfieSegmentation as $3Sbms$SelfieSegmentation} from "@mediapipe/selfie_segmentation";
19
20
  import "./timer.43cfcbcc.js";
20
- import {Buffer as $3Sbms$Buffer} from "buffer";
21
21
  import {toCanvas as $3Sbms$toCanvas, toDataURL as $3Sbms$toDataURL} from "qrcode";
22
22
  import {createPortal as $3Sbms$createPortal} from "react-dom";
23
23
  import $3Sbms$reactmarkdown from "react-markdown";
@@ -48,27 +48,27 @@ const $a3e657fb86ae23f3$export$604ba5624273df44 = ()=>{
48
48
 
49
49
 
50
50
  var $cdb0576f0fea19f0$exports = {};
51
- $cdb0576f0fea19f0$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","recordingStopped":"Recording stopped","invitationSentToFailed":"Sent to {{ name }} failed.","errorOccuredCode":"An error occured (error {{code}}).","unableToZoom":"Unable to zoom","unableToUnzoom":"Unable to unzoom","unableToSwitchCamera":"Unable to switch camera","uploadFailed":"Upload failed","permissionToShareScreenDenied":"Permission to share screen denied","somethingWentWrong":"Oops! Something went wrong","failedToMuteUnmuteMicrophone":"Failed to mute / unmute the microphone","failedToEnableMicrophone":"Failed to enable microphone","failedToEnableVideo":"Failed to enable video","failedToDisableVideo":"Failed to disable video","aQuickRefreshShouldFix":"A quick refresh should get things back on track","networkStability":"Network stability","yourInternetConnectionIsUnstable":"Your internet connection is unstable","locationIsRequired":"Location is required","locationIsBlocked":"Location is blocked","pleaseEnableLocation":"Please enable location services in your settings.","allow":"Allow"},"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","howWasYourExperience":"How was your experience?","pleaseRateYourExperienceBelow":"Please rate your experience below","thankYouForYourFeedback":"Thank you for your feedback.","yourFeedbackHelpsUs":"Your feedback helps us improve. See you soon!","addAdditionalMedia":"Add additional media","allowsYouToShareMoreMedia":"This option allows you to share one or more media to add more context."},"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 your plan","titleGuest":"Feature not available","descriptionConnected":"This feature is only available on paid plans. Upgrade your plan to unlock all in-call features.","descriptionGuest":"You are participating in a call created with a free version of SnapCall. This feature is only available on paid plans.","dismissGuest":"Okay","dismissConnected":"Upgrade"},"copyLink":{"title":"Copy link","description":"Copy link to 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 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","callSettings":"Call settings","tools":"Tools","enableVideo":"Enable video","manageRecording":"Manage recording","startRecording":"Start recording","stopRecording":"Stop recording"},"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","description":"Share a YouTube video with other participants."},"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","aSnapshotHasBeenShared":"A snapshot has been shared."},"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.","askForDevice":"Ask for {{device}}","waitingForDevice":"Waiting for {{name}}\'s {{device}}","deviceActivated":"{{device}} activated","deviceActivationDeclined":"{{device}} activation declined","userWouldLikeYouToActivateYourDevice":"{{name}} would like you to activate your {{device}}."},"leave":{"title":"Leave","leaveCall":"Leave call","endCall":"End call for all"},"virtualBackground":{"title":"Virtual Background","setBackground":"Set Background","default":"Default","custom":"Custom","noCustomBackgrounds":"No custom backgrounds yet. Please contact your admin.","none":"None","blur":"Blur"},"iframe":{"featureNotAvailableInContext":"This feature is not available in the current context."},"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","download":"Download","add":"Add"},"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."},"networkIssue":{"title":"Network issue","description":"The clip information may be damaged."},"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","startByClickingOnTheButton":"Start by clicking on the round button below! \uD83D\uDC47","feelFreeToTalkGiveMoreContext":"\uD83D\uDDE3\uFE0F Feel free to talk to give me more context.","yourMedia":"Your media","thanksForYourMedia":"Thanks for your media!","videoBotThinking":"Thinking...","videoBotError":"Sorry, an error has occured.","mySuggestion":"My suggestion","recordNewMedia":"Record new media"}}');
51
+ $cdb0576f0fea19f0$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","recordingStopped":"Recording stopped","invitationSentToFailed":"Sent to {{ name }} failed.","errorOccuredCode":"An error occured (error {{code}}).","unableToZoom":"Unable to zoom","unableToUnzoom":"Unable to unzoom","unableToSwitchCamera":"Unable to switch camera","uploadFailed":"Upload failed","permissionToShareScreenDenied":"Permission to share screen denied","somethingWentWrong":"Oops! Something went wrong","failedToMuteUnmuteMicrophone":"Failed to mute / unmute the microphone","failedToEnableMicrophone":"Failed to enable microphone","failedToEnableVideo":"Failed to enable video","failedToDisableVideo":"Failed to disable video","aQuickRefreshShouldFix":"A quick refresh should get things back on track","networkStability":"Network stability","yourInternetConnectionIsUnstable":"Your internet connection is unstable","locationIsRequired":"Location is required","locationIsBlocked":"Location is blocked","pleaseEnableLocation":"Please enable location services in your settings.","allow":"Allow"},"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","howWasYourExperience":"How was your experience?","pleaseRateYourExperienceBelow":"Please rate your experience below","thankYouForYourFeedback":"Thank you for your feedback.","yourFeedbackHelpsUs":"Your feedback helps us improve. See you soon!","addAdditionalMedia":"Add additional media","allowsYouToShareMoreMedia":"This option allows you to share one or more media to add more context."},"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 your plan","titleGuest":"Feature not available","descriptionConnected":"This feature is only available on paid plans. Upgrade your plan to unlock all in-call features.","descriptionGuest":"You are participating in a call created with a free version of SnapCall. This feature is only available on paid plans.","dismissGuest":"Okay","dismissConnected":"Upgrade"},"copyLink":{"title":"Copy link","description":"Copy link to 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 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","callSettings":"Call settings","tools":"Tools","enableVideo":"Enable video","manageRecording":"Manage recording","startRecording":"Start recording","stopRecording":"Stop recording"},"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","description":"Share a YouTube video with other participants."},"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","aSnapshotHasBeenShared":"A snapshot has been shared."},"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.","askForDevice":"Ask for {{device}}","waitingForDevice":"Waiting for {{name}}\'s {{device}}","deviceActivated":"{{device}} activated","deviceActivationDeclined":"{{device}} activation declined","userWouldLikeYouToActivateYourDevice":"{{name}} would like you to activate your {{device}}."},"leave":{"title":"Leave","leaveCall":"Leave call","endCall":"End call for all"},"virtualBackground":{"title":"Virtual Background","setBackground":"Set Background","default":"Default","custom":"Custom","noCustomBackgrounds":"No custom backgrounds yet. Please contact your admin.","none":"None","blur":"Blur"},"iframe":{"featureNotAvailableInContext":"This feature is not available in the current context."},"misc":{"someone":"Someone","camera":"Camera","pdf":"PDF","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","download":"Download","add":"Add"},"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."},"networkIssue":{"title":"Network issue","description":"The clip information may be damaged."},"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","startByClickingOnTheButton":"Start by clicking on the round button below! \uD83D\uDC47","feelFreeToTalkGiveMoreContext":"\uD83D\uDDE3\uFE0F Feel free to talk to give me more context.","yourMedia":"Your media","thanksForYourMedia":"Thanks for your media!","videoBotThinking":"Thinking...","videoBotError":"Sorry, an error has occured.","mySuggestion":"My suggestion","recordNewMedia":"Record new media"}}');
52
52
 
53
53
 
54
54
  var $d94166210f763d5e$exports = {};
55
- $d94166210f763d5e$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":{"addAdditionalMedia":"Add additional media","allowsYouToShareMoreMedia":"This option allows you to share one or more media to add more context.","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","howWasYourExperience":"How was your experience?","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","pleaseRateYourExperienceBelow":"Please rate your experience below","thankYouForYourFeedback":"Thank you for your feedback.","tooLate":"You arrived too late","yourFeedbackHelpsUs":"Your feedback helps us improve. See you soon!"},"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"},"iframe":{"featureNotAvailableInContext":"This feature is not available in the current context."},"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","add":"Add","audio":"Audio","camera":"Camera","cancel":"Cancel","confirm":"Confirm","decline":"Decline","download":"Download","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"},"networkIssue":{"description":"The clip information may be damaged.","title":"Network issue"},"notifications":{"aQuickRefreshShouldFix":"A quick refresh should get things back on track","agentJoinError":"An error occured while trying to join the room as an agent","allow":"Allow","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}}).","failedToDisableVideo":"Failed to disable video","failedToEnableMicrophone":"Failed to enable microphone","failedToEnableVideo":"Failed to enable video","failedToMuteUnmuteMicrophone":"Failed to mute / unmute the microphone","invitationSentToFailed":"Sent to {{ name }} failed.","locationIsBlocked":"Location is blocked","locationIsRequired":"Location is required","microphoneError":"An error occured when trying to toggle the microphone","networkStability":"Network stability","noCamera":"No camera available","permissionToShareScreenDenied":"Permission to share screen denied","pleaseEnableLocation":"Please enable location services in your settings.","recording":"Recording in progress","recordingStopped":"Recording stopped","reload":"Reload","screensharingError":"An error occured when trying to toggle screensharing","somethingWentWrong":"Oops! Something went wrong","unableToSwitchCamera":"Unable to switch camera","unableToUnzoom":"Unable to unzoom","unableToZoom":"Unable to zoom","uploadError":"An error occured during the upload, please try again later.","uploadFailed":"Upload failed","yourInternetConnectionIsUnstable":"Your internet connection is unstable"},"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.","feelFreeToTalkGiveMoreContext":"\uD83D\uDDE3\uFE0F Feel free to talk to give me more context.","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","mySuggestion":"My suggestion","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?","recordNewMedia":"Record new media","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","startByClickingOnTheButton":"Start by clicking on the round button below! \uD83D\uDC47","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 }}","thanksForYourMedia":"Thanks for your media!","upload":"Upload","useDesktopVersion":"Use the desktop version","videoBotError":"Sorry, an error has occured.","videoBotThinking":"Thinking...","videoInstructionsTitle":"Ready to record a video?","waitVideo":"A video may take up to 15 seconds to be ready.","yourMedia":"Your media"},"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":{"askForDevice":"Ask for {{device}}","declined":"Your request has been declined.","deviceActivated":"{{device}} activated","deviceActivationDeclined":"{{device}} activation 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.","userWouldLikeYouToActivateYourDevice":"{{name}} would like you to activate your {{device}}.","waitingForDevice":"Waiting for {{name}}\'s {{device}}"},"settings":{"callSettings":"Call settings","devices":"Devices","enableVideo":"Enable video","help":"Help","helpCenter":"Go to help center","language":"Language","manageRecording":"Manage recording","preferences":"Preferences","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language","selectYourMicrophone":"Select your preferred microphone","startRecording":"Start recording","stopRecording":"Stop recording","title":"Settings","tools":"Tools"},"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":{"aSnapshotHasBeenShared":"A snapshot has been shared.","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":{"blur":"Blur","custom":"Custom","default":"Default","noCustomBackgrounds":"No custom backgrounds yet. Please contact your admin.","none":"None","setBackground":"Set Background","title":"Virtual Background"},"youtube":{"description":"Share a YouTube video with other participants.","invalid":"Invalid YouTube URL","share":"Watch now","title":"Watch Together","url":"YOUTUBE URL"}}');
55
+ $d94166210f763d5e$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":{"addAdditionalMedia":"Add additional media","allowsYouToShareMoreMedia":"This option allows you to share one or more media to add more context.","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","howWasYourExperience":"How was your experience?","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","pleaseRateYourExperienceBelow":"Please rate your experience below","thankYouForYourFeedback":"Thank you for your feedback.","tooLate":"You arrived too late","yourFeedbackHelpsUs":"Your feedback helps us improve. See you soon!"},"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"},"iframe":{"featureNotAvailableInContext":"This feature is not available in the current context."},"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","add":"Add","audio":"Audio","camera":"Camera","cancel":"Cancel","confirm":"Confirm","decline":"Decline","download":"Download","from":"From","microphone":"Microphone","open":"Open","pdf":"PDF","photo":"Photo","proceed":"Proceed","remove":"Remove","screen":"Screen","screenshot":"Screenshot","someone":"Someone","speaker":"Speaker","user":"User","video":"Video","you":"You"},"networkIssue":{"description":"The clip information may be damaged.","title":"Network issue"},"notifications":{"aQuickRefreshShouldFix":"A quick refresh should get things back on track","agentJoinError":"An error occured while trying to join the room as an agent","allow":"Allow","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}}).","failedToDisableVideo":"Failed to disable video","failedToEnableMicrophone":"Failed to enable microphone","failedToEnableVideo":"Failed to enable video","failedToMuteUnmuteMicrophone":"Failed to mute / unmute the microphone","invitationSentToFailed":"Sent to {{ name }} failed.","locationIsBlocked":"Location is blocked","locationIsRequired":"Location is required","microphoneError":"An error occured when trying to toggle the microphone","networkStability":"Network stability","noCamera":"No camera available","permissionToShareScreenDenied":"Permission to share screen denied","pleaseEnableLocation":"Please enable location services in your settings.","recording":"Recording in progress","recordingStopped":"Recording stopped","reload":"Reload","screensharingError":"An error occured when trying to toggle screensharing","somethingWentWrong":"Oops! Something went wrong","unableToSwitchCamera":"Unable to switch camera","unableToUnzoom":"Unable to unzoom","unableToZoom":"Unable to zoom","uploadError":"An error occured during the upload, please try again later.","uploadFailed":"Upload failed","yourInternetConnectionIsUnstable":"Your internet connection is unstable"},"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.","feelFreeToTalkGiveMoreContext":"\uD83D\uDDE3\uFE0F Feel free to talk to give me more context.","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","mySuggestion":"My suggestion","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?","recordNewMedia":"Record new media","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","startByClickingOnTheButton":"Start by clicking on the round button below! \uD83D\uDC47","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 }}","thanksForYourMedia":"Thanks for your media!","upload":"Upload","useDesktopVersion":"Use the desktop version","videoBotError":"Sorry, an error has occured.","videoBotThinking":"Thinking...","videoInstructionsTitle":"Ready to record a video?","waitVideo":"A video may take up to 15 seconds to be ready.","yourMedia":"Your media"},"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":{"askForDevice":"Ask for {{device}}","declined":"Your request has been declined.","deviceActivated":"{{device}} activated","deviceActivationDeclined":"{{device}} activation 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.","userWouldLikeYouToActivateYourDevice":"{{name}} would like you to activate your {{device}}.","waitingForDevice":"Waiting for {{name}}\'s {{device}}"},"settings":{"callSettings":"Call settings","devices":"Devices","enableVideo":"Enable video","help":"Help","helpCenter":"Go to help center","language":"Language","manageRecording":"Manage recording","preferences":"Preferences","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language","selectYourMicrophone":"Select your preferred microphone","startRecording":"Start recording","stopRecording":"Stop recording","title":"Settings","tools":"Tools"},"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":{"aSnapshotHasBeenShared":"A snapshot has been shared.","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":{"blur":"Blur","custom":"Custom","default":"Default","noCustomBackgrounds":"No custom backgrounds yet. Please contact your admin.","none":"None","setBackground":"Set Background","title":"Virtual Background"},"youtube":{"description":"Share a YouTube video with other participants.","invalid":"Invalid YouTube URL","share":"Watch now","title":"Watch Together","url":"YOUTUBE URL"}}');
56
56
 
57
57
 
58
58
  var $dcf57489ec338826$exports = {};
59
- $dcf57489ec338826$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":"nouveau"},"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":{"addAdditionalMedia":"Ajouter des m\xe9dias suppl\xe9mentaires","allowsYouToShareMoreMedia":"Cette option vous permet de partager un ou plusieurs m\xe9dias pour ajouter plus de contexte.","callEnded":"Cet appel est termin\xe9","callIsOver":"Cet appel est termin\xe9 ou supprim\xe9","callLeft":"Vous avez quitt\xe9 l\'appel","callNoLongerActive":"Cet appel n\u2019est plus actif. Merci de votre participation.","full":"Impossible de rejoindre l\'appel","fullDescription":"Limite d\'utilisateurs atteinte. Merci de rejoindre l\'appel ult\xe9rieurement.","goBack":"Retourner dans l\'appel","howWasYourExperience":"Comment s\'est d\xe9roul\xe9e votre exp\xe9rience ?","ifMistakeRejoin":"S\'il s\'agit d\'une erreur, vous pouvez retourner dans l\'appel en utilisant le bouton ci-dessous.","invalidLink":"Lien invalide","invalidOrExpired":"Ce lien n\'est pas valide ou a expir\xe9.","openDashboard":"Ouvrir le dashboard","pleaseRateYourExperienceBelow":"Veuillez \xe9valuer votre exp\xe9rience ci-dessous","thankYouForYourFeedback":"Nous vous remercions pour votre avis.","tooLate":"Vous \xeates arriv\xe9 trop tard","yourFeedbackHelpsUs":"Vos commentaires nous aident \xe0 nous am\xe9liorer. A bient\xf4t !"},"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"},"iframe":{"featureNotAvailableInContext":"This feature is not available in the current context."},"invitePeople":{"PublicLink":"Lien public","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":"Par exemple: john@acme.com ou +33612345678","error":"\xc9chec de l\'envoi, veuillez r\xe9essayer plus tard.","invalidEmail":"Format d\'email invalide.","invalidEmailOrNumber":"Format d\'email ou de num\xe9ro invalide.","invitationSentTo_one":"Envoy\xe9 \xe0 {{ name }}","invitationSentTo_other":"Envoy\xe9 \xe0 {{ name }} et {{ otherEmailsCount }}+","invite":"Inviter","inviteByEmail":"Inviter par email","inviteByEmailOrNumber":"Inviter par e-mail ou 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":"Veuillez enregistrer un message audio et nous fournir plus de contexte pour mieux vous aider.","inviteClipDefaultMessage":"Veuillez enregistrer votre clip vid\xe9o et nous fournir plus de contexte pour mieux vous aider.","inviteClipPhotoDefaultMessage":"Veuillez prendre une photo et nous fournir plus de contexte pour mieux vous aider.","inviteClipScreenDefaultMessage":"Veuillez enregistrer votre \xe9cran et nous fournir plus de contexte pour mieux vous aider.","inviteClipVideoDefaultMessage":"Enregistrez votre vid\xe9o et donnez-nous plus de d\xe9tails pour que nous puissions mieux vous aider.","invitePeople":"Inviter des personnes","inviteRecordAudio":"Enregistrer un audio","inviteRecordClip":"Inviter \xe0 enregistrer un clip","inviteRecordPhoto":"Prendre une photo","inviteRecordScreen":"Enregistrer l\'\xe9cran","inviteRecordVideo":"Enregistrer une vid\xe9o","joinTheCall":"Rejoindre l\u2019appel","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","add":"Ajouter","audio":"Audio","camera":"Cam\xe9ra","cancel":"Annuler","confirm":"Confirmer","decline":"D\xe9cliner","download":"T\xe9l\xe9charger","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"},"networkIssue":{"description":"The clip information may be damaged.","title":"Network issue"},"notifications":{"aQuickRefreshShouldFix":"A quick refresh should get things back on track","agentJoinError":"Une erreur est survenue en essayant de rejoindre la salle en tant qu\'agent","allow":"Allow","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":"Erreur","errorOccuredCode":"Une erreur s\'est produite (erreur {{code}}).","failedToDisableVideo":"Failed to disable video","failedToEnableMicrophone":"Failed to enable microphone","failedToEnableVideo":"Failed to enable video","failedToMuteUnmuteMicrophone":"Failed to mute / unmute the microphone","invitationSentToFailed":"L\'envoi \xe0 {{ name }} a \xe9chou\xe9.","locationIsBlocked":"Location is blocked","locationIsRequired":"Location is required","microphoneError":"Une erreur est survenue pendant l\'activation du micro","networkStability":"Network stability","noCamera":"Aucune cam\xe9ra disponible","permissionToShareScreenDenied":"Permission to share screen denied","pleaseEnableLocation":"Please enable location services in your settings.","recording":"Enregistrement en cours","recordingStopped":"Recording stopped","reload":"Recharger","screensharingError":"Une erreur est survenue pendant l\'activation du partage d\'\xe9cran","somethingWentWrong":"Oops! Something went wrong","unableToSwitchCamera":"Unable to switch camera","unableToUnzoom":"Unable to unzoom","unableToZoom":"Unable to zoom","uploadError":"Une erreur s\'est produite pendant le t\xe9l\xe9chargement, veuillez r\xe9essayer plus tard.","uploadFailed":"Upload failed","yourInternetConnectionIsUnstable":"Your internet connection is unstable"},"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":"Choisissez ce que vous souhaitez partager","chooseWhatYouWantToShareDescription":"S\xe9lectionnez l\'\xe9cran ou l\'onglet que vous souhaitez partager et commencez l\'enregistrement.","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.","feelFreeToTalkGiveMoreContext":"\uD83D\uDDE3\uFE0F Feel free to talk to give me more context.","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":"Appuyez sur Enregistrer mon \xe9cran et s\xe9lectionnez l\'\xe9cran ou la fen\xeatre que vous souhaitez enregistrer.","speakClearly":"<bold>Parlez clairement</bold> et dites ce que vous devez transmettre.","speakDuringRecord":"Vous pouvez parler pendant l\'enregistrement pour ajouter des d\xe9tails.","stopScreenOnFinish":"Appuyez sur le bouton Stop lorsque vous avez termin\xe9. La vid\xe9o nous sera envoy\xe9e automatiquement.","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 }} m\xe9dia","mediaCount_other":"{{ count }} m\xe9dias","mediaSent_one":"Votre m\xe9dia a \xe9t\xe9 envoy\xe9","mediaSent_other":"Votre m\xe9dia a \xe9t\xe9 envoy\xe9","mySuggestion":"My suggestion","noCameraAccess":"Pas d\'acc\xe8s \xe0 la cam\xe9ra","noCameraAccessDescription":"Pas d\'acc\xe8s \xe0 la cam\xe9ra Autoriser l\'acc\xe8s \xe0 la cam\xe9ra dans votre navigateur.","noCameraAndMicrophoneAccess":"Pas d\'acc\xe8s \xe0 la cam\xe9ra et au microphone","noCameraAndMicrophoneAccessDescription":"Pas d\'acc\xe8s \xe0 la cam\xe9ra et au microphone Autoriser l\'acc\xe8s au microphone et \xe0 la cam\xe9ra dans votre navigateur.","noMicrophoneAccess":"Pas d\'acc\xe8s au microphone","noMicrophoneAccessDescription":"Pas d\'acc\xe8s au microphone Autoriser l\'acc\xe8s au microphone dans votre navigateur.","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 ?","recordNewMedia":"Record new media","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":"Afficher le QR code","startByClickingOnTheButton":"Start by clicking on the round button below! \uD83D\uDC47","startScreenRecording":"D\xe9marrer l\'enregistrement de l\'\xe9cran","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 }}","thanksForYourMedia":"Thanks for your media!","upload":"Importer","useDesktopVersion":"Continuer","videoBotError":"Sorry, an error has occured.","videoBotThinking":"Thinking...","videoInstructionsTitle":"Pr\xeat \xe0 enregistrer une vid\xe9o ?","waitVideo":"Cela peut prendre jusqu\'\xe0 15 secondes pour qu\'une vid\xe9o soit pr\xeate.","yourMedia":"Your media"},"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":{"askForDevice":"Demander l\'activation de {{device}}","declined":"Votre requ\xeate a \xe9t\xe9 refus\xe9.","deviceActivated":"{{device}} activ\xe9","deviceActivationDeclined":"{{device}} - activation refus\xe9e","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.","userWouldLikeYouToActivateYourDevice":"{{name}} souhaite que vous activiez votre {{device}}.","waitingForDevice":"En attente du {{device}} de {{name}}"},"settings":{"callSettings":"Call settings","devices":"Appareils","enableVideo":"Enable video","help":"Aide","helpCenter":"Acc\xe9der au centre d\'aide","language":"Langage","manageRecording":"Manage recording","preferences":"Pr\xe9f\xe9rences","selectYourCamera":"S\xe9lectionnez votre cam\xe9ra pr\xe9f\xe9r\xe9","selectYourLanguage":"S\xe9lectionnez votre langue pr\xe9f\xe9r\xe9e","selectYourMicrophone":"S\xe9lectionnez votre microphone pr\xe9f\xe9r\xe9","startRecording":"Start recording","stopRecording":"Stop recording","title":"Param\xe8tres","tools":"Tools"},"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":{"aSnapshotHasBeenShared":"Un instantan\xe9 a \xe9t\xe9 partag\xe9.","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":{"blur":"Blur","custom":"Custom","default":"Default","noCustomBackgrounds":"No custom backgrounds yet. Please contact your admin.","none":"None","setBackground":"Mettre l\'arri\xe8re plan","title":"Arri\xe8re plan virtuel"},"youtube":{"description":"Share a YouTube video with other participants.","invalid":"URL YouTube invalide","share":"Regarder maintenant","title":"Regardons Ensemble","url":"URL YOUTUBE"}}');
59
+ $dcf57489ec338826$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":"nouveau"},"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":{"addAdditionalMedia":"Ajouter des m\xe9dias suppl\xe9mentaires","allowsYouToShareMoreMedia":"Cette option vous permet de partager un ou plusieurs m\xe9dias pour ajouter plus de contexte.","callEnded":"Cet appel est termin\xe9","callIsOver":"Cet appel est termin\xe9 ou supprim\xe9","callLeft":"Vous avez quitt\xe9 l\'appel","callNoLongerActive":"Cet appel n\u2019est plus actif. Merci de votre participation.","full":"Impossible de rejoindre l\'appel","fullDescription":"Limite d\'utilisateurs atteinte. Merci de rejoindre l\'appel ult\xe9rieurement.","goBack":"Retourner dans l\'appel","howWasYourExperience":"Comment s\'est d\xe9roul\xe9e votre exp\xe9rience ?","ifMistakeRejoin":"S\'il s\'agit d\'une erreur, vous pouvez retourner dans l\'appel en utilisant le bouton ci-dessous.","invalidLink":"Lien invalide","invalidOrExpired":"Ce lien n\'est pas valide ou a expir\xe9.","openDashboard":"Ouvrir le dashboard","pleaseRateYourExperienceBelow":"Veuillez \xe9valuer votre exp\xe9rience ci-dessous","thankYouForYourFeedback":"Nous vous remercions pour votre avis.","tooLate":"Vous \xeates arriv\xe9 trop tard","yourFeedbackHelpsUs":"Vos commentaires nous aident \xe0 nous am\xe9liorer. A bient\xf4t !"},"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"},"iframe":{"featureNotAvailableInContext":"This feature is not available in the current context."},"invitePeople":{"PublicLink":"Lien public","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":"Par exemple: john@acme.com ou +33612345678","error":"\xc9chec de l\'envoi, veuillez r\xe9essayer plus tard.","invalidEmail":"Format d\'email invalide.","invalidEmailOrNumber":"Format d\'email ou de num\xe9ro invalide.","invitationSentTo_one":"Envoy\xe9 \xe0 {{ name }}","invitationSentTo_other":"Envoy\xe9 \xe0 {{ name }} et {{ otherEmailsCount }}+","invite":"Inviter","inviteByEmail":"Inviter par email","inviteByEmailOrNumber":"Inviter par e-mail ou 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":"Veuillez enregistrer un message audio et nous fournir plus de contexte pour mieux vous aider.","inviteClipDefaultMessage":"Veuillez enregistrer votre clip vid\xe9o et nous fournir plus de contexte pour mieux vous aider.","inviteClipPhotoDefaultMessage":"Veuillez prendre une photo et nous fournir plus de contexte pour mieux vous aider.","inviteClipScreenDefaultMessage":"Veuillez enregistrer votre \xe9cran et nous fournir plus de contexte pour mieux vous aider.","inviteClipVideoDefaultMessage":"Enregistrez votre vid\xe9o et donnez-nous plus de d\xe9tails pour que nous puissions mieux vous aider.","invitePeople":"Inviter des personnes","inviteRecordAudio":"Enregistrer un audio","inviteRecordClip":"Inviter \xe0 enregistrer un clip","inviteRecordPhoto":"Prendre une photo","inviteRecordScreen":"Enregistrer l\'\xe9cran","inviteRecordVideo":"Enregistrer une vid\xe9o","joinTheCall":"Rejoindre l\u2019appel","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","add":"Ajouter","audio":"Audio","camera":"Cam\xe9ra","cancel":"Annuler","confirm":"Confirmer","decline":"D\xe9cliner","download":"T\xe9l\xe9charger","from":"Depuis","microphone":"Micro","open":"Ouvrir","pdf":"PDF","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"},"networkIssue":{"description":"The clip information may be damaged.","title":"Network issue"},"notifications":{"aQuickRefreshShouldFix":"A quick refresh should get things back on track","agentJoinError":"Une erreur est survenue en essayant de rejoindre la salle en tant qu\'agent","allow":"Allow","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":"Erreur","errorOccuredCode":"Une erreur s\'est produite (erreur {{code}}).","failedToDisableVideo":"Failed to disable video","failedToEnableMicrophone":"Failed to enable microphone","failedToEnableVideo":"Failed to enable video","failedToMuteUnmuteMicrophone":"Failed to mute / unmute the microphone","invitationSentToFailed":"L\'envoi \xe0 {{ name }} a \xe9chou\xe9.","locationIsBlocked":"Location is blocked","locationIsRequired":"Location is required","microphoneError":"Une erreur est survenue pendant l\'activation du micro","networkStability":"Network stability","noCamera":"Aucune cam\xe9ra disponible","permissionToShareScreenDenied":"Permission to share screen denied","pleaseEnableLocation":"Please enable location services in your settings.","recording":"Enregistrement en cours","recordingStopped":"Recording stopped","reload":"Recharger","screensharingError":"Une erreur est survenue pendant l\'activation du partage d\'\xe9cran","somethingWentWrong":"Oops! Something went wrong","unableToSwitchCamera":"Unable to switch camera","unableToUnzoom":"Unable to unzoom","unableToZoom":"Unable to zoom","uploadError":"Une erreur s\'est produite pendant le t\xe9l\xe9chargement, veuillez r\xe9essayer plus tard.","uploadFailed":"Upload failed","yourInternetConnectionIsUnstable":"Your internet connection is unstable"},"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":"Choisissez ce que vous souhaitez partager","chooseWhatYouWantToShareDescription":"S\xe9lectionnez l\'\xe9cran ou l\'onglet que vous souhaitez partager et commencez l\'enregistrement.","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.","feelFreeToTalkGiveMoreContext":"\uD83D\uDDE3\uFE0F Feel free to talk to give me more context.","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":"Appuyez sur Enregistrer mon \xe9cran et s\xe9lectionnez l\'\xe9cran ou la fen\xeatre que vous souhaitez enregistrer.","speakClearly":"<bold>Parlez clairement</bold> et dites ce que vous devez transmettre.","speakDuringRecord":"Vous pouvez parler pendant l\'enregistrement pour ajouter des d\xe9tails.","stopScreenOnFinish":"Appuyez sur le bouton Stop lorsque vous avez termin\xe9. La vid\xe9o nous sera envoy\xe9e automatiquement.","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 }} m\xe9dia","mediaCount_other":"{{ count }} m\xe9dias","mediaSent_one":"Votre m\xe9dia a \xe9t\xe9 envoy\xe9","mediaSent_other":"Votre m\xe9dia a \xe9t\xe9 envoy\xe9","mySuggestion":"My suggestion","noCameraAccess":"Pas d\'acc\xe8s \xe0 la cam\xe9ra","noCameraAccessDescription":"Pas d\'acc\xe8s \xe0 la cam\xe9ra Autoriser l\'acc\xe8s \xe0 la cam\xe9ra dans votre navigateur.","noCameraAndMicrophoneAccess":"Pas d\'acc\xe8s \xe0 la cam\xe9ra et au microphone","noCameraAndMicrophoneAccessDescription":"Pas d\'acc\xe8s \xe0 la cam\xe9ra et au microphone Autoriser l\'acc\xe8s au microphone et \xe0 la cam\xe9ra dans votre navigateur.","noMicrophoneAccess":"Pas d\'acc\xe8s au microphone","noMicrophoneAccessDescription":"Pas d\'acc\xe8s au microphone Autoriser l\'acc\xe8s au microphone dans votre navigateur.","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 ?","recordNewMedia":"Record new media","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":"Afficher le QR code","startByClickingOnTheButton":"Start by clicking on the round button below! \uD83D\uDC47","startScreenRecording":"D\xe9marrer l\'enregistrement de l\'\xe9cran","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 }}","thanksForYourMedia":"Thanks for your media!","upload":"Importer","useDesktopVersion":"Continuer","videoBotError":"Sorry, an error has occured.","videoBotThinking":"Thinking...","videoInstructionsTitle":"Pr\xeat \xe0 enregistrer une vid\xe9o ?","waitVideo":"Cela peut prendre jusqu\'\xe0 15 secondes pour qu\'une vid\xe9o soit pr\xeate.","yourMedia":"Your media"},"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":{"askForDevice":"Demander l\'activation de {{device}}","declined":"Votre requ\xeate a \xe9t\xe9 refus\xe9.","deviceActivated":"{{device}} activ\xe9","deviceActivationDeclined":"{{device}} - activation refus\xe9e","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.","userWouldLikeYouToActivateYourDevice":"{{name}} souhaite que vous activiez votre {{device}}.","waitingForDevice":"En attente du {{device}} de {{name}}"},"settings":{"callSettings":"Call settings","devices":"Appareils","enableVideo":"Enable video","help":"Aide","helpCenter":"Acc\xe9der au centre d\'aide","language":"Langage","manageRecording":"Manage recording","preferences":"Pr\xe9f\xe9rences","selectYourCamera":"S\xe9lectionnez votre cam\xe9ra pr\xe9f\xe9r\xe9","selectYourLanguage":"S\xe9lectionnez votre langue pr\xe9f\xe9r\xe9e","selectYourMicrophone":"S\xe9lectionnez votre microphone pr\xe9f\xe9r\xe9","startRecording":"Start recording","stopRecording":"Stop recording","title":"Param\xe8tres","tools":"Tools"},"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":{"aSnapshotHasBeenShared":"Un instantan\xe9 a \xe9t\xe9 partag\xe9.","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":{"blur":"Blur","custom":"Custom","default":"Default","noCustomBackgrounds":"No custom backgrounds yet. Please contact your admin.","none":"None","setBackground":"Mettre l\'arri\xe8re plan","title":"Arri\xe8re plan virtuel"},"youtube":{"description":"Share a YouTube video with other participants.","invalid":"URL YouTube invalide","share":"Regarder maintenant","title":"Regardons Ensemble","url":"URL YOUTUBE"}}');
60
60
 
61
61
 
62
62
  var $1856f22a9907f785$exports = {};
63
- $1856f22a9907f785$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"Das Mikrofon ist blockiert.","microphonePermissions":"Bitte akzeptieren Sie die gemeinsame Nutzung des Mikrofons, bevor Sie auf diese Optionen zugreifen.","title":"Audio"},"blockedFeature":{"descriptionConnected":"Bei einem kostenlosen Tarif kannst du diese Funktion nicht nutzen. Aktualisieren Sie Ihren Tarif, um alle In-Call-Funktionen nutzen zu k\xf6nnen.","descriptionGuest":"Sie nehmen an einem Anruf teil, der mit einer kostenlosen Version von SnapCall erstellt wurde. Diese Funktion ist nur in einer Pro-Version verf\xfcgbar.","dismissConnected":"Auf Pro upgraden","dismissGuest":"Okay","titleConnected":"Auf Pro upgraden","titleGuest":"Funktion nicht verf\xfcgbar"},"common":{"new":"New"},"copyLink":{"copied":"Link in die Zwischenablage kopiert","copy":"Copy","description":"Link in die Zwischenablage kopieren","error":"Beim Versuch, in die Zwischenablage zu kopieren, ist ein Fehler aufgetreten","title":"LINK KOPIEREN"},"endView":{"addAdditionalMedia":"Add additional media","allowsYouToShareMoreMedia":"This option allows you to share one or more media to add more context.","callEnded":"Der Anruf ist beendet","callIsOver":"Der Anruf ist beendet oder gel\xf6scht","callLeft":"Sie haben den Anruf verlassen","callNoLongerActive":"Dieser Anruf ist nicht mehr aktiv. Danke f\xfcr Ihre Teilnahme.","full":"Sie k\xf6nnen an diesem Anruf nicht teilnehmen","fullDescription":"Das Zimmer ist voll. Bitte versuchen Sie sp\xe4ter, dem Anruf beizutreten.","goBack":"Geh zur\xfcck zum Anruf","howWasYourExperience":"How was your experience?","ifMistakeRejoin":"Wenn dies ein Fehler war, k\xf6nnen Sie \xfcber die Schaltfl\xe4che unten erneut beitreten.","invalidLink":"Ung\xfcltiger Link","invalidOrExpired":"Dieser Link ist ung\xfcltig oder abgelaufen.","openDashboard":"Dashboard \xf6ffnen","pleaseRateYourExperienceBelow":"Please rate your experience below","thankYouForYourFeedback":"Thank you for your feedback.","tooLate":"Du bist zu sp\xe4t gekommen","yourFeedbackHelpsUs":"Your feedback helps us improve. See you soon!"},"gdpr":{"recordedWarning":"Um die Qualit\xe4t unseres Service zu verbessern, wird dieser Anruf aufgezeichnet."},"greeting":{"askToJoin":"Bitten Sie um Beitritt","askingLetIn":"Ich bitte darum, eingelassen zu werden...","cameraDisabled":"Kamera ist aus","cameraEnabled":"Kamera ist an","canceledCallRequest":"Die Anrufanfrage wird storniert und Sie werden auf die Seite zur Anrufplanung weitergeleitet.","cantJoinCall":"Sie k\xf6nnen an diesem Anruf nicht teilnehmen","cantWait":"Kannst du es kaum erwarten?","cantWaitLeaveMessage":"Kannst du es kaum erwarten? Sie k\xf6nnen eine Nachricht hinterlassen und Sie werden so schnell wie m\xf6glich kontaktiert.","clickOnLock":"Klicken Sie in der Leiste Ihres Browsers auf das <1> </1> Schlosssymbol.","footerDescription":"Lernen Sie SnapCall kennen, den einfachsten Weg, um Echtzeitvideos zu einer Plattform, einem Produkt oder einer Dienstleistung hinzuzuf\xfcgen.","footerTitle":"Bereitgestellt von SnapCall","leaveMessage":"Hinterlassen Sie eine Nachricht","mainTitle":"Willkommen bei SnapCall","mediaDenied":"Zugriff auf Mikrofon und Kamera verweigert","microphoneDisabled":"Mikrofon ist aus","microphoneEnabled":"Mikrofon ist an","name":"Nome","nameDescription":"Dieser Name wird allen Teilnehmern des Anrufs angezeigt.","namePlaceholder":"z. B. Lucy oder Peter","nameSubmit":"An der Konversation teilnehmen","recordVideo":"Video aufzeichnen","recordVoice":"Stimme aufnehmen","requestACall":"Fordern Sie einen Anruf an","scheduleACall":"Einen Anruf vereinbaren","setting":"Einstellungen","sideDescription":"Bitte gib deinen Namen ein und passe deine Kamera und dein Mikrofon an","sideTitle":"Halt dich fest, du bist der N\xe4chste!","someoneDenied":"Jemand in dem Anruf hat Ihre Beitrittsanfrage abgelehnt.","takeFewMinute":"Dies kann je nach Verf\xfcgbarkeit der Teilnehmer einige Minuten dauern.","whatYouCanDo":"Folgendes k\xf6nnen Sie tun","youWillJoinWhenSomeoneLetsYou":"Sie nehmen an dem Anruf teil, wenn Sie jemand von {{ companyName }} hereinl\xe4sst."},"header":{"free":"Kostenlose Version"},"iframe":{"featureNotAvailableInContext":"This feature is not available in the current context."},"invitePeople":{"PublicLink":"\xd6ffentlicher Link","addEmailToInvite":"F\xfcgen Sie eine E-Mail zur Einladung hinzu.","addEmails":"E-Mails hinzuf\xfcgen...","copyCallLinkDescription":"Kopieren Sie diesen Link und senden Sie ihn an alle, die Sie zur Teilnahme an der Telefonkonferenz einladen m\xf6chten.","copyClipLinkDescription":"Kopieren Sie diesen Link und senden Sie ihn an alle, die Sie zur Aufnahme eines Clips einladen m\xf6chten.","email":"E-Mail","emailPlaceholder":"Z. B. john@acme.com","emailsOrNumberPlaceholder":"Z. B. john@acme.com oder +33612345678","error":"Fehler beim Senden, bitte versuchen Sie es sp\xe4ter erneut.","invalidEmail":"Ung\xfcltiges E-Mail-Format.","invalidEmailOrNumber":"Ung\xfcltiges E-Mail- oder Zahlenformat.","invitationSentTo_one":"Gesendet an {{ name }}","invitationSentTo_other":"Gesendet an {{ name }} und {{ otherEmailsCount }} +","invite":"Einladen","inviteByEmail":"Per E-Mail einladen","inviteByEmailOrNumber":"Per E-Mail oder SMS einladen","inviteCall":"Zum Telefongespr\xe4ch einladen","inviteCallDefaultMessage":"Hallo! Du bist eingeladen, an unserem Videoanruf teilzunehmen. Klicken Sie auf den Link, um sofort eine Verbindung herzustellen.","inviteClipAudioDefaultMessage":"Hallo! Bitte nehmen Sie jetzt eine Audionachricht auf und geben Sie uns mehr Kontext, um Ihnen besser helfen zu k\xf6nnen.","inviteClipDefaultMessage":"Hallo! Bitte nehmen Sie jetzt Ihr Video auf und geben Sie uns mehr Kontext, um Ihnen besser helfen zu k\xf6nnen.","inviteClipPhotoDefaultMessage":"Hallo! Bitte machen Sie ein Foto und geben Sie uns mehr Kontext, um Ihnen besser helfen zu k\xf6nnen.","inviteClipScreenDefaultMessage":"Hallo! Bitte nehmen Sie jetzt Ihren Bildschirm auf und geben Sie uns mehr Kontext, um Ihnen besser helfen zu k\xf6nnen.","inviteClipVideoDefaultMessage":"Hallo! Bitte nehmen Sie jetzt Ihr Video auf und geben Sie uns mehr Kontext, um Ihnen besser helfen zu k\xf6nnen.","invitePeople":"Leute einladen","inviteRecordAudio":"Nehmen Sie ein Audio auf","inviteRecordClip":"Laden Sie zum Aufnehmen eines Clips ein","inviteRecordPhoto":"Mache ein Foto","inviteRecordScreen":"Nehmen Sie einen Bildschirm auf","inviteRecordVideo":"Nehmen Sie ein Video auf","joinTheCall":"Nehmen Sie an der Telefonkonferenz teil","linkToJoinCall":"Link, um an der Telefonkonferenz teilzunehmen","linkToRecordAClip":"Link zum Aufnehmen eines Clips","message":"Nachricht","sharePublicLink":"\xd6ffentlichen Link teilen"},"leave":{"endCall":"Anruf f\xfcr alle beenden","leaveCall":"Anruf hinterlassen","title":"Verlassen Sie"},"loader":{"connection":"Verbindung wird hergestellt..."},"menu":{"new":"New","openNewTab":"Neuen Tab \xf6ffnen","pictureInPicture":"Bild-im-Bild","quickConnect":"Schnelle Verbindung","screenSharing":"Bildschirm\xfcbertragung","startRecord":"Anruf aufzeichnen","stopRecord":"Aufnahme beenden","title":"Men\xfc"},"misc":{"accept":"Akzeptieren","add":"Add","audio":"Audio","camera":"Kamera","cancel":"Abbrechen","confirm":"Confirm","decline":"R\xfcckgang","download":"Download","from":"vom","microphone":"Mikrofon","open":"\xd6ffnen Sie","photo":"Foto","proceed":"Proceed","remove":"entfernen","screen":"Bildschirm","screenshot":"Bildschirmfoto","someone":"Jemand","speaker":"Sprecher","user":"Nutzer","video":"Video","you":"Du"},"networkIssue":{"description":"The clip information may be damaged.","title":"Network issue"},"notifications":{"aQuickRefreshShouldFix":"A quick refresh should get things back on track","agentJoinError":"Beim Versuch, dem Raum als Agent beizutreten, ist ein Fehler aufgetreten","allow":"Allow","blockedMicrophonePopup":"SnapCall ben\xf6tigt Zugriff auf Ihre Kamera und Ihr Mikrofon. Klicken Sie in der Adressleiste Ihres Browsers auf das Symbol \u201EKamera blockiert\u201C.","blockedMicrophonePopupTitle":"Kamera und Mikrofon sind blockiert","cameraError":"Beim Versuch, die Kamera umzuschalten, ist ein Fehler aufgetreten","cameraRotateError":"Beim Versuch, die Kamera zu drehen, ist ein Fehler aufgetreten","close":"Schlie\xdfen","connectedTo":"Verbunden mit {{name}}","criticalError":"Ein kritischer Fehler ist aufgetreten (Fehler{{code}}).","error":"Fehler ","errorOccuredCode":"Ein Fehler ist aufgetreten (Fehler{{code}}).","failedToDisableVideo":"Failed to disable video","failedToEnableMicrophone":"Failed to enable microphone","failedToEnableVideo":"Failed to enable video","failedToMuteUnmuteMicrophone":"Failed to mute / unmute the microphone","invitationSentToFailed":"Gesendet an {{ name }} fehlgeschlagen.","locationIsBlocked":"Location is blocked","locationIsRequired":"Location is required","microphoneError":"Beim Versuch, das Mikrofon umzuschalten, ist ein Fehler aufgetreten","networkStability":"Network stability","noCamera":"Keine Kamera verf\xfcgbar","permissionToShareScreenDenied":"Permission to share screen denied","pleaseEnableLocation":"Please enable location services in your settings.","recording":"Aufnahme l\xe4uft","recordingStopped":"Recording stopped","reload":" Erneut laden ","screensharingError":"Beim Versuch, die Bildschirm\xfcbertragung umzuschalten, ist ein Fehler aufgetreten","somethingWentWrong":"Oops! Something went wrong","unableToSwitchCamera":"Unable to switch camera","unableToUnzoom":"Unable to unzoom","unableToZoom":"Unable to zoom","uploadError":"Beim Upload ist ein Fehler aufgetreten. Bitte versuchen Sie es sp\xe4ter erneut.","uploadFailed":"Upload failed","yourInternetConnectionIsUnstable":"Your internet connection is unstable"},"quickConnect":{"scan":"Scannen Sie diesen QR-Code mit Ihrer Handykamera, um den Anruf zu \xf6ffnen.","scanTitle":"QR-Code scannen","title":"Schnelle Verbindung"},"recorder":{"addMore":"Weitere hinzuf\xfcgen","addNewClip":"Neuen Clip hinzuf\xfcgen","allowAccess":"Zugriff erlauben","allowCamMicAccess":"Zugriff auf Kamera/Mikrofon erlauben","allowScreenShareAccess":"Zugriff auf Bildschirm\xfcbertragung zulassen","attachElements_one":"Dem Ticket {{ type }} beif\xfcgen","attachElements_other":"{{ count }}Elemente anh\xe4ngen","audioInstructionsTitle":"Bereit, eine Sprachnachricht aufzunehmen?","audioLevelNotification":{"noSound":{"description":"Vergewissern Sie sich, dass Ihr Mikrofon aktiviert ist.","title":"Es wurde kein Ton erkannt."},"shortVideo":{"description":"Dieses Video ist zu kurz, um den Kontext zu verstehen.","title":"Kurzes Video."},"spokenWordsQuestion":{"description":"Enth\xe4lt Ihr Video gen\xfcgend gesprochene Details?","title":"Gesprochene Worte."},"spokenWordsWarning":{"description":"Der Clip enth\xe4lt kaum gesprochene Worte.","title":"Keine gesprochenen Worte."}},"audioLevelToast":{"continueSpeaking":"Sprechen Sie weiter, um einen klareren Kontext zu erhalten.","noSound":"Es wurde kein Ton erkannt.","rememberSpeaking":"Denken Sie daran, zu sprechen, um den Kontext zu vermitteln."},"chooseWhatYouWantToShare":"W\xe4hle aus, was du teilen m\xf6chtest","chooseWhatYouWantToShareDescription":"W\xe4hlen Sie den Bildschirm oder die Registerkarte aus, die Sie teilen m\xf6chten, und starten Sie die Aufnahme.","clipCount_one":"{{ count }}Clip","clipCount_other":"{{ count }}Clips","clipSubmissionDescription":"Vielen Dank, dass Sie SnapCall verwenden.","clipSubmissionTitle_one":"Ihr Clip wurde gesendet","clipSubmissionTitle_other":"Deine Clips wurden gesendet","confirmRemovalDescription":"Bist du sicher, dass du dieses Foto/Video l\xf6schen m\xf6chtest? Diese Aktion kann nicht r\xfcckg\xe4ngig gemacht werden.","confirmRemovalTitle":"L\xf6schen best\xe4tigen","elementBeingProcessed":"Bitte warten Sie, Ihre {{ type }} wird bearbeitet...","elementCaptureSuccess":"{{ type }}erfolgreich erfasst","elementRecordedAndAttached":"Ihr Clip wurde gesendet und an den Thread angeh\xe4ngt.","feelFreeToTalkGiveMoreContext":"\uD83D\uDDE3\uFE0F Feel free to talk to give me more context.","goBackToTicket":"Gehe zur\xfcck zum Ticket","instructions":{"allowAccessOnPrompt":"<bold>Erlauben Sie den Zugriff auf Kamera und Mikrofon</bold>, wenn Sie dazu aufgefordert werden.","multiplePhotos":"Nehmen Sie ein oder mehrere <bold> Fotos auf, </bold> um weitere Informationen zu erhalten, und \xfcberpr\xfcfen Sie es dann.","privacyPolicy":"Indem Sie fortfahren, stimmen Sie unseren <bold> Datenschutzbestimmungen zu</bold>.","reviewAndSendAudios":"<bold>\xdcberpr\xfcfe deine Audios </bold> und sie werden automatisch an uns gesendet.","reviewAndSendPhotos":"<bold>Best\xe4tigen Sie Ihre Fotos </bold> und sie werden automatisch an uns gesendet.","reviewAndSendVideos":"<bold>\xdcberpr\xfcfe deine Videos </bold> und sie werden automatisch an uns gesendet.","screenShareInstruction":"W\xe4hlen Sie den Bildschirm oder das Fenster aus, das Sie aufnehmen m\xf6chten.","selectScreenshare":"Tippen Sie auf Meinen Bildschirm aufnehmen und w\xe4hlen Sie den Bildschirm oder das Fenster aus, das Sie aufnehmen m\xf6chten.","speakClearly":"<bold>Sprechen Sie deutlich </bold> und sagen Sie, was Sie vermitteln m\xfcssen.","speakDuringRecord":"Sie k\xf6nnen w\xe4hrend der Aufnahme sprechen, um Details hinzuzuf\xfcgen.","stopScreenOnFinish":"Dr\xfccken Sie die Stopp-Taste, wenn Sie fertig sind. Das Video wird automatisch an uns gesendet.","tapAudioButton":"<bold>Tippen Sie auf die Aufnahmetaste</bold>, um mit der Aufnahme Ihrer Audionachricht zu beginnen.","tapStopVideoButton":"<bold>Tippe auf Stopp</bold>, wenn du fertig bist.","tapVideoButton":"<bold>Tippen Sie auf die Aufnahmetaste</bold>, um zu beginnen, und Sie k\xf6nnen gerne einen Kommentar abgeben.","videoSpeech":"Sie k\xf6nnen w\xe4hrend </bold> der Aufnahme <bold> sprechen, um zus\xe4tzliche Informationen bereitzustellen."},"limit":"Videoaufnahme begrenzt auf 5 min.","logIn":"LOG IN","loggedAs":"Eingeloggt als","mediaCount_one":"{{ count }}Medien","mediaCount_other":"{{ count }}Medien","mediaSent_one":"Ihre Medien wurden gesendet","mediaSent_other":"Ihre Medien wurden gesendet","mySuggestion":"My suggestion","noCameraAccess":"Kein Kamerazugriff","noCameraAccessDescription":"Kein Kamerazugriff Erlauben Sie den Kamerazugriff in Ihrem Browser.","noCameraAndMicrophoneAccess":"Kein Kamera- und Mikrofonzugang","noCameraAndMicrophoneAccessDescription":"Kein Zugriff auf Kamera und Mikrofon Erlauben Sie den Zugriff auf Mikrofon und Kamera in Ihrem Browser.","noMicrophoneAccess":"Kein Mikrofonzugang","noMicrophoneAccessDescription":"Kein Mikrofonzugriff Erlauben Sie den Mikrofonzugriff in Ihrem Browser.","okay":"Okay","openThread":"Thread \xf6ffnen","permissionDeniedDescription":"Ohne Zugriff auf Kamera und Mikrofon k\xf6nnen Sie keine Fotos oder Videos aufnehmen, um sie mit dem Support-Team zu teilen. Bitte gew\xe4hren Sie Zugriff in Ihren Browsereinstellungen.","permissionDeniedTitle":"Etwas ist schief gelaufen!","photoInstructionsTitle":"Bereit, ein Foto zu machen?","recordNewMedia":"Record new media","replyAttached":"Ihre Antwort wurde angeh\xe4ngt","scanQRCode":"Scannen Sie diesen QR-Code mit einem kompatiblen Ger\xe4t.","screenShareInstructionsTitle":"Bereit, deinen Bildschirm zu teilen?","screenTitle":"Bereit, deinen Bildschirm aufzunehmen?","send":"Absschicken","sendElements_one":"Senden {{ type }}","sendElements_other":"{{ count }}Elemente senden","showQrCode":"QR Code anzeigen","startByClickingOnTheButton":"Start by clicking on the round button below! \uD83D\uDC47","startScreenRecording":"Bildschirmaufnahme starten","startScreenShareButton":"Meinen Bildschirm aufnehmen","stopScreenShareButton":"Aufnahme beenden","submissionDescription":"Ihr Foto/Video wurde erfolgreich eingereicht. Wir werden es \xfcberpr\xfcfen und uns in K\xfcrze bei Ihnen melden.","submissionTitle":"Danke f\xfcr deine Einreichung!","switchToMobileDescription":"Erleben Sie mehr Komfort, indem Sie Ihr Telefon zum Aufnehmen von Fotos und Videos verwenden.","switchToMobileTitle":"Wechseln Sie zu Ihrem Mobilger\xe4t","takeNewElement":"Erfassen Sie ein neues {{ type }}","thanksForYourMedia":"Thanks for your media!","upload":"Upload","useDesktopVersion":"Verwenden Sie die Desktop-Version","videoBotError":"Sorry, an error has occured.","videoBotThinking":"Thinking...","videoInstructionsTitle":"Bereit, ein Video aufzunehmen?","waitVideo":"Es kann bis zu 15 Sekunden dauern, bis ein Video fertig ist.","yourMedia":"Your media"},"recordingPopup":{"dismiss":"Abweisen","recordingStartText":"Dieser Anruf wird in K\xfcrze aufgezeichnet. Wenn Sie nicht aufgezeichnet werden m\xf6chten, k\xf6nnen Sie den Anruf gerne zu diesem Zeitpunkt verlassen.","recordingStartTitle":"Die Aufnahme beginnt gleich."},"requestAccess":{"admit":"Gib zu","defaultName":"Ein Nutzer","deny":"Verweigern","wantToJoin":"<bold>{{name}}</bold>will mitmachen!"},"requestDevice":{"askForDevice":"Ask for {{device}}","declined":"Ihre Anfrage wurde abgelehnt.","deviceActivated":"{{device}} activated","deviceActivationDeclined":"{{device}} activation declined","request":"{{user}}Ich m\xf6chte, dass du deine teilst {{device}}","requestInput":"Eingabeger\xe4te anfordern","timedOut":"Ihre Anfrage ist abgelaufen.","userDeclined":"{{user}}hat Ihre Anfrage abgelehnt.","userWouldLikeYouToActivateYourDevice":"{{name}} would like you to activate your {{device}}.","waitingForDevice":"Waiting for {{name}}\'s {{device}}"},"settings":{"callSettings":"Call settings","devices":"Ger\xe4te","enableVideo":"Enable video","help":"Hilfe","helpCenter":"Gehe zum Hilfecenter","language":"Sprache","manageRecording":"Manage recording","preferences":"Pr\xe4ferenzen","selectYourCamera":"W\xe4hlen Sie Ihre bevorzugte Kamera","selectYourLanguage":"W\xe4hlen Sie Ihre gew\xfcnschte Sprache","selectYourMicrophone":"W\xe4hlen Sie Ihr bevorzugtes Mikrofon","startRecording":"Start recording","stopRecording":"Stop recording","title":"Einstellungen","tools":"Tools"},"shareLink":{"failed":"Link konnte nicht gesendet werden","invalid":"Ung\xfcltiger Link","invoice":"{{user}}Ich habe dir eine Rechnung geschickt.","pay":"Zahlen","poweredBy":"Angetrieben von","sentToUser":"Link gesendet an {{user}}","sentToUsers":"Link an Benutzer gesendet","title":"Link teilen","title2":"Einen Link teilen"},"sharedHistory":{"shared":"Mit dir geteilt"},"snapshot":{"aSnapshotHasBeenShared":"A snapshot has been shared.","error":"Beim Versuch, den Snapshot zu senden, ist ein Fehler aufgetreten","save":"Foto speichern","sentToUser":"Snapshot gesendet an {{user}}","sentToUsers":"Snapshot wurde an Benutzer gesendet.","shared":"Schnappschuss geteilt.","title":"Schnappschuss"},"videoMenu":{"blockedCamera":"Die Kamera ist blockiert.","cameraPermissions":"Bitte akzeptieren Sie die gemeinsame Nutzung von Kameras, bevor Sie auf diese Optionen zugreifen.","highDef":"Hochaufl\xf6send (720p)","lowDef":"Niedrige Aufl\xf6sung (240p)","sendResolution":"Aufl\xf6sung senden (maximal)","standardDef":"Standardaufl\xf6sung (480p)","title":"Video"},"virtualBackground":{"blur":"Blur","custom":"Custom","default":"Default","noCustomBackgrounds":"No custom backgrounds yet. Please contact your admin.","none":"None","setBackground":"Hintergrund festlegen","title":"Virtueller Hintergrund"},"youtube":{"description":"Share a YouTube video with other participants.","invalid":"Ung\xfcltige YouTube-URL","share":"Jetzt ansehen","title":"Zusammen ansehen","url":"YOUTUBE-URL"}}');
63
+ $1856f22a9907f785$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"Das Mikrofon ist blockiert.","microphonePermissions":"Bitte akzeptieren Sie die gemeinsame Nutzung des Mikrofons, bevor Sie auf diese Optionen zugreifen.","title":"Audio"},"blockedFeature":{"descriptionConnected":"Bei einem kostenlosen Tarif kannst du diese Funktion nicht nutzen. Aktualisieren Sie Ihren Tarif, um alle In-Call-Funktionen nutzen zu k\xf6nnen.","descriptionGuest":"Sie nehmen an einem Anruf teil, der mit einer kostenlosen Version von SnapCall erstellt wurde. Diese Funktion ist nur in einer Pro-Version verf\xfcgbar.","dismissConnected":"Auf Pro upgraden","dismissGuest":"Okay","titleConnected":"Auf Pro upgraden","titleGuest":"Funktion nicht verf\xfcgbar"},"common":{"new":"New"},"copyLink":{"copied":"Link in die Zwischenablage kopiert","copy":"Copy","description":"Link in die Zwischenablage kopieren","error":"Beim Versuch, in die Zwischenablage zu kopieren, ist ein Fehler aufgetreten","title":"LINK KOPIEREN"},"endView":{"addAdditionalMedia":"Add additional media","allowsYouToShareMoreMedia":"This option allows you to share one or more media to add more context.","callEnded":"Der Anruf ist beendet","callIsOver":"Der Anruf ist beendet oder gel\xf6scht","callLeft":"Sie haben den Anruf verlassen","callNoLongerActive":"Dieser Anruf ist nicht mehr aktiv. Danke f\xfcr Ihre Teilnahme.","full":"Sie k\xf6nnen an diesem Anruf nicht teilnehmen","fullDescription":"Das Zimmer ist voll. Bitte versuchen Sie sp\xe4ter, dem Anruf beizutreten.","goBack":"Geh zur\xfcck zum Anruf","howWasYourExperience":"How was your experience?","ifMistakeRejoin":"Wenn dies ein Fehler war, k\xf6nnen Sie \xfcber die Schaltfl\xe4che unten erneut beitreten.","invalidLink":"Ung\xfcltiger Link","invalidOrExpired":"Dieser Link ist ung\xfcltig oder abgelaufen.","openDashboard":"Dashboard \xf6ffnen","pleaseRateYourExperienceBelow":"Please rate your experience below","thankYouForYourFeedback":"Thank you for your feedback.","tooLate":"Du bist zu sp\xe4t gekommen","yourFeedbackHelpsUs":"Your feedback helps us improve. See you soon!"},"gdpr":{"recordedWarning":"Um die Qualit\xe4t unseres Service zu verbessern, wird dieser Anruf aufgezeichnet."},"greeting":{"askToJoin":"Bitten Sie um Beitritt","askingLetIn":"Ich bitte darum, eingelassen zu werden...","cameraDisabled":"Kamera ist aus","cameraEnabled":"Kamera ist an","canceledCallRequest":"Die Anrufanfrage wird storniert und Sie werden auf die Seite zur Anrufplanung weitergeleitet.","cantJoinCall":"Sie k\xf6nnen an diesem Anruf nicht teilnehmen","cantWait":"Kannst du es kaum erwarten?","cantWaitLeaveMessage":"Kannst du es kaum erwarten? Sie k\xf6nnen eine Nachricht hinterlassen und Sie werden so schnell wie m\xf6glich kontaktiert.","clickOnLock":"Klicken Sie in der Leiste Ihres Browsers auf das <1> </1> Schlosssymbol.","footerDescription":"Lernen Sie SnapCall kennen, den einfachsten Weg, um Echtzeitvideos zu einer Plattform, einem Produkt oder einer Dienstleistung hinzuzuf\xfcgen.","footerTitle":"Bereitgestellt von SnapCall","leaveMessage":"Hinterlassen Sie eine Nachricht","mainTitle":"Willkommen bei SnapCall","mediaDenied":"Zugriff auf Mikrofon und Kamera verweigert","microphoneDisabled":"Mikrofon ist aus","microphoneEnabled":"Mikrofon ist an","name":"Nome","nameDescription":"Dieser Name wird allen Teilnehmern des Anrufs angezeigt.","namePlaceholder":"z. B. Lucy oder Peter","nameSubmit":"An der Konversation teilnehmen","recordVideo":"Video aufzeichnen","recordVoice":"Stimme aufnehmen","requestACall":"Fordern Sie einen Anruf an","scheduleACall":"Einen Anruf vereinbaren","setting":"Einstellungen","sideDescription":"Bitte gib deinen Namen ein und passe deine Kamera und dein Mikrofon an","sideTitle":"Halt dich fest, du bist der N\xe4chste!","someoneDenied":"Jemand in dem Anruf hat Ihre Beitrittsanfrage abgelehnt.","takeFewMinute":"Dies kann je nach Verf\xfcgbarkeit der Teilnehmer einige Minuten dauern.","whatYouCanDo":"Folgendes k\xf6nnen Sie tun","youWillJoinWhenSomeoneLetsYou":"Sie nehmen an dem Anruf teil, wenn Sie jemand von {{ companyName }} hereinl\xe4sst."},"header":{"free":"Kostenlose Version"},"iframe":{"featureNotAvailableInContext":"This feature is not available in the current context."},"invitePeople":{"PublicLink":"\xd6ffentlicher Link","addEmailToInvite":"F\xfcgen Sie eine E-Mail zur Einladung hinzu.","addEmails":"E-Mails hinzuf\xfcgen...","copyCallLinkDescription":"Kopieren Sie diesen Link und senden Sie ihn an alle, die Sie zur Teilnahme an der Telefonkonferenz einladen m\xf6chten.","copyClipLinkDescription":"Kopieren Sie diesen Link und senden Sie ihn an alle, die Sie zur Aufnahme eines Clips einladen m\xf6chten.","email":"E-Mail","emailPlaceholder":"Z. B. john@acme.com","emailsOrNumberPlaceholder":"Z. B. john@acme.com oder +33612345678","error":"Fehler beim Senden, bitte versuchen Sie es sp\xe4ter erneut.","invalidEmail":"Ung\xfcltiges E-Mail-Format.","invalidEmailOrNumber":"Ung\xfcltiges E-Mail- oder Zahlenformat.","invitationSentTo_one":"Gesendet an {{ name }}","invitationSentTo_other":"Gesendet an {{ name }} und {{ otherEmailsCount }} +","invite":"Einladen","inviteByEmail":"Per E-Mail einladen","inviteByEmailOrNumber":"Per E-Mail oder SMS einladen","inviteCall":"Zum Telefongespr\xe4ch einladen","inviteCallDefaultMessage":"Hallo! Du bist eingeladen, an unserem Videoanruf teilzunehmen. Klicken Sie auf den Link, um sofort eine Verbindung herzustellen.","inviteClipAudioDefaultMessage":"Hallo! Bitte nehmen Sie jetzt eine Audionachricht auf und geben Sie uns mehr Kontext, um Ihnen besser helfen zu k\xf6nnen.","inviteClipDefaultMessage":"Hallo! Bitte nehmen Sie jetzt Ihr Video auf und geben Sie uns mehr Kontext, um Ihnen besser helfen zu k\xf6nnen.","inviteClipPhotoDefaultMessage":"Hallo! Bitte machen Sie ein Foto und geben Sie uns mehr Kontext, um Ihnen besser helfen zu k\xf6nnen.","inviteClipScreenDefaultMessage":"Hallo! Bitte nehmen Sie jetzt Ihren Bildschirm auf und geben Sie uns mehr Kontext, um Ihnen besser helfen zu k\xf6nnen.","inviteClipVideoDefaultMessage":"Hallo! Bitte nehmen Sie jetzt Ihr Video auf und geben Sie uns mehr Kontext, um Ihnen besser helfen zu k\xf6nnen.","invitePeople":"Leute einladen","inviteRecordAudio":"Nehmen Sie ein Audio auf","inviteRecordClip":"Laden Sie zum Aufnehmen eines Clips ein","inviteRecordPhoto":"Mache ein Foto","inviteRecordScreen":"Nehmen Sie einen Bildschirm auf","inviteRecordVideo":"Nehmen Sie ein Video auf","joinTheCall":"Nehmen Sie an der Telefonkonferenz teil","linkToJoinCall":"Link, um an der Telefonkonferenz teilzunehmen","linkToRecordAClip":"Link zum Aufnehmen eines Clips","message":"Nachricht","sharePublicLink":"\xd6ffentlichen Link teilen"},"leave":{"endCall":"Anruf f\xfcr alle beenden","leaveCall":"Anruf hinterlassen","title":"Verlassen Sie"},"loader":{"connection":"Verbindung wird hergestellt..."},"menu":{"new":"New","openNewTab":"Neuen Tab \xf6ffnen","pictureInPicture":"Bild-im-Bild","quickConnect":"Schnelle Verbindung","screenSharing":"Bildschirm\xfcbertragung","startRecord":"Anruf aufzeichnen","stopRecord":"Aufnahme beenden","title":"Men\xfc"},"misc":{"accept":"Akzeptieren","add":"Add","audio":"Audio","camera":"Kamera","cancel":"Abbrechen","confirm":"Confirm","decline":"R\xfcckgang","download":"Download","from":"vom","microphone":"Mikrofon","open":"\xd6ffnen Sie","pdf":"PDF","photo":"Foto","proceed":"Proceed","remove":"entfernen","screen":"Bildschirm","screenshot":"Bildschirmfoto","someone":"Jemand","speaker":"Sprecher","user":"Nutzer","video":"Video","you":"Du"},"networkIssue":{"description":"The clip information may be damaged.","title":"Network issue"},"notifications":{"aQuickRefreshShouldFix":"A quick refresh should get things back on track","agentJoinError":"Beim Versuch, dem Raum als Agent beizutreten, ist ein Fehler aufgetreten","allow":"Allow","blockedMicrophonePopup":"SnapCall ben\xf6tigt Zugriff auf Ihre Kamera und Ihr Mikrofon. Klicken Sie in der Adressleiste Ihres Browsers auf das Symbol \u201EKamera blockiert\u201C.","blockedMicrophonePopupTitle":"Kamera und Mikrofon sind blockiert","cameraError":"Beim Versuch, die Kamera umzuschalten, ist ein Fehler aufgetreten","cameraRotateError":"Beim Versuch, die Kamera zu drehen, ist ein Fehler aufgetreten","close":"Schlie\xdfen","connectedTo":"Verbunden mit {{name}}","criticalError":"Ein kritischer Fehler ist aufgetreten (Fehler{{code}}).","error":"Fehler ","errorOccuredCode":"Ein Fehler ist aufgetreten (Fehler{{code}}).","failedToDisableVideo":"Failed to disable video","failedToEnableMicrophone":"Failed to enable microphone","failedToEnableVideo":"Failed to enable video","failedToMuteUnmuteMicrophone":"Failed to mute / unmute the microphone","invitationSentToFailed":"Gesendet an {{ name }} fehlgeschlagen.","locationIsBlocked":"Location is blocked","locationIsRequired":"Location is required","microphoneError":"Beim Versuch, das Mikrofon umzuschalten, ist ein Fehler aufgetreten","networkStability":"Network stability","noCamera":"Keine Kamera verf\xfcgbar","permissionToShareScreenDenied":"Permission to share screen denied","pleaseEnableLocation":"Please enable location services in your settings.","recording":"Aufnahme l\xe4uft","recordingStopped":"Recording stopped","reload":" Erneut laden ","screensharingError":"Beim Versuch, die Bildschirm\xfcbertragung umzuschalten, ist ein Fehler aufgetreten","somethingWentWrong":"Oops! Something went wrong","unableToSwitchCamera":"Unable to switch camera","unableToUnzoom":"Unable to unzoom","unableToZoom":"Unable to zoom","uploadError":"Beim Upload ist ein Fehler aufgetreten. Bitte versuchen Sie es sp\xe4ter erneut.","uploadFailed":"Upload failed","yourInternetConnectionIsUnstable":"Your internet connection is unstable"},"quickConnect":{"scan":"Scannen Sie diesen QR-Code mit Ihrer Handykamera, um den Anruf zu \xf6ffnen.","scanTitle":"QR-Code scannen","title":"Schnelle Verbindung"},"recorder":{"addMore":"Weitere hinzuf\xfcgen","addNewClip":"Neuen Clip hinzuf\xfcgen","allowAccess":"Zugriff erlauben","allowCamMicAccess":"Zugriff auf Kamera/Mikrofon erlauben","allowScreenShareAccess":"Zugriff auf Bildschirm\xfcbertragung zulassen","attachElements_one":"Dem Ticket {{ type }} beif\xfcgen","attachElements_other":"{{ count }}Elemente anh\xe4ngen","audioInstructionsTitle":"Bereit, eine Sprachnachricht aufzunehmen?","audioLevelNotification":{"noSound":{"description":"Vergewissern Sie sich, dass Ihr Mikrofon aktiviert ist.","title":"Es wurde kein Ton erkannt."},"shortVideo":{"description":"Dieses Video ist zu kurz, um den Kontext zu verstehen.","title":"Kurzes Video."},"spokenWordsQuestion":{"description":"Enth\xe4lt Ihr Video gen\xfcgend gesprochene Details?","title":"Gesprochene Worte."},"spokenWordsWarning":{"description":"Der Clip enth\xe4lt kaum gesprochene Worte.","title":"Keine gesprochenen Worte."}},"audioLevelToast":{"continueSpeaking":"Sprechen Sie weiter, um einen klareren Kontext zu erhalten.","noSound":"Es wurde kein Ton erkannt.","rememberSpeaking":"Denken Sie daran, zu sprechen, um den Kontext zu vermitteln."},"chooseWhatYouWantToShare":"W\xe4hle aus, was du teilen m\xf6chtest","chooseWhatYouWantToShareDescription":"W\xe4hlen Sie den Bildschirm oder die Registerkarte aus, die Sie teilen m\xf6chten, und starten Sie die Aufnahme.","clipCount_one":"{{ count }}Clip","clipCount_other":"{{ count }}Clips","clipSubmissionDescription":"Vielen Dank, dass Sie SnapCall verwenden.","clipSubmissionTitle_one":"Ihr Clip wurde gesendet","clipSubmissionTitle_other":"Deine Clips wurden gesendet","confirmRemovalDescription":"Bist du sicher, dass du dieses Foto/Video l\xf6schen m\xf6chtest? Diese Aktion kann nicht r\xfcckg\xe4ngig gemacht werden.","confirmRemovalTitle":"L\xf6schen best\xe4tigen","elementBeingProcessed":"Bitte warten Sie, Ihre {{ type }} wird bearbeitet...","elementCaptureSuccess":"{{ type }}erfolgreich erfasst","elementRecordedAndAttached":"Ihr Clip wurde gesendet und an den Thread angeh\xe4ngt.","feelFreeToTalkGiveMoreContext":"\uD83D\uDDE3\uFE0F Feel free to talk to give me more context.","goBackToTicket":"Gehe zur\xfcck zum Ticket","instructions":{"allowAccessOnPrompt":"<bold>Erlauben Sie den Zugriff auf Kamera und Mikrofon</bold>, wenn Sie dazu aufgefordert werden.","multiplePhotos":"Nehmen Sie ein oder mehrere <bold> Fotos auf, </bold> um weitere Informationen zu erhalten, und \xfcberpr\xfcfen Sie es dann.","privacyPolicy":"Indem Sie fortfahren, stimmen Sie unseren <bold> Datenschutzbestimmungen zu</bold>.","reviewAndSendAudios":"<bold>\xdcberpr\xfcfe deine Audios </bold> und sie werden automatisch an uns gesendet.","reviewAndSendPhotos":"<bold>Best\xe4tigen Sie Ihre Fotos </bold> und sie werden automatisch an uns gesendet.","reviewAndSendVideos":"<bold>\xdcberpr\xfcfe deine Videos </bold> und sie werden automatisch an uns gesendet.","screenShareInstruction":"W\xe4hlen Sie den Bildschirm oder das Fenster aus, das Sie aufnehmen m\xf6chten.","selectScreenshare":"Tippen Sie auf Meinen Bildschirm aufnehmen und w\xe4hlen Sie den Bildschirm oder das Fenster aus, das Sie aufnehmen m\xf6chten.","speakClearly":"<bold>Sprechen Sie deutlich </bold> und sagen Sie, was Sie vermitteln m\xfcssen.","speakDuringRecord":"Sie k\xf6nnen w\xe4hrend der Aufnahme sprechen, um Details hinzuzuf\xfcgen.","stopScreenOnFinish":"Dr\xfccken Sie die Stopp-Taste, wenn Sie fertig sind. Das Video wird automatisch an uns gesendet.","tapAudioButton":"<bold>Tippen Sie auf die Aufnahmetaste</bold>, um mit der Aufnahme Ihrer Audionachricht zu beginnen.","tapStopVideoButton":"<bold>Tippe auf Stopp</bold>, wenn du fertig bist.","tapVideoButton":"<bold>Tippen Sie auf die Aufnahmetaste</bold>, um zu beginnen, und Sie k\xf6nnen gerne einen Kommentar abgeben.","videoSpeech":"Sie k\xf6nnen w\xe4hrend </bold> der Aufnahme <bold> sprechen, um zus\xe4tzliche Informationen bereitzustellen."},"limit":"Videoaufnahme begrenzt auf 5 min.","logIn":"LOG IN","loggedAs":"Eingeloggt als","mediaCount_one":"{{ count }}Medien","mediaCount_other":"{{ count }}Medien","mediaSent_one":"Ihre Medien wurden gesendet","mediaSent_other":"Ihre Medien wurden gesendet","mySuggestion":"My suggestion","noCameraAccess":"Kein Kamerazugriff","noCameraAccessDescription":"Kein Kamerazugriff Erlauben Sie den Kamerazugriff in Ihrem Browser.","noCameraAndMicrophoneAccess":"Kein Kamera- und Mikrofonzugang","noCameraAndMicrophoneAccessDescription":"Kein Zugriff auf Kamera und Mikrofon Erlauben Sie den Zugriff auf Mikrofon und Kamera in Ihrem Browser.","noMicrophoneAccess":"Kein Mikrofonzugang","noMicrophoneAccessDescription":"Kein Mikrofonzugriff Erlauben Sie den Mikrofonzugriff in Ihrem Browser.","okay":"Okay","openThread":"Thread \xf6ffnen","permissionDeniedDescription":"Ohne Zugriff auf Kamera und Mikrofon k\xf6nnen Sie keine Fotos oder Videos aufnehmen, um sie mit dem Support-Team zu teilen. Bitte gew\xe4hren Sie Zugriff in Ihren Browsereinstellungen.","permissionDeniedTitle":"Etwas ist schief gelaufen!","photoInstructionsTitle":"Bereit, ein Foto zu machen?","recordNewMedia":"Record new media","replyAttached":"Ihre Antwort wurde angeh\xe4ngt","scanQRCode":"Scannen Sie diesen QR-Code mit einem kompatiblen Ger\xe4t.","screenShareInstructionsTitle":"Bereit, deinen Bildschirm zu teilen?","screenTitle":"Bereit, deinen Bildschirm aufzunehmen?","send":"Absschicken","sendElements_one":"Senden {{ type }}","sendElements_other":"{{ count }}Elemente senden","showQrCode":"QR Code anzeigen","startByClickingOnTheButton":"Start by clicking on the round button below! \uD83D\uDC47","startScreenRecording":"Bildschirmaufnahme starten","startScreenShareButton":"Meinen Bildschirm aufnehmen","stopScreenShareButton":"Aufnahme beenden","submissionDescription":"Ihr Foto/Video wurde erfolgreich eingereicht. Wir werden es \xfcberpr\xfcfen und uns in K\xfcrze bei Ihnen melden.","submissionTitle":"Danke f\xfcr deine Einreichung!","switchToMobileDescription":"Erleben Sie mehr Komfort, indem Sie Ihr Telefon zum Aufnehmen von Fotos und Videos verwenden.","switchToMobileTitle":"Wechseln Sie zu Ihrem Mobilger\xe4t","takeNewElement":"Erfassen Sie ein neues {{ type }}","thanksForYourMedia":"Thanks for your media!","upload":"Upload","useDesktopVersion":"Verwenden Sie die Desktop-Version","videoBotError":"Sorry, an error has occured.","videoBotThinking":"Thinking...","videoInstructionsTitle":"Bereit, ein Video aufzunehmen?","waitVideo":"Es kann bis zu 15 Sekunden dauern, bis ein Video fertig ist.","yourMedia":"Your media"},"recordingPopup":{"dismiss":"Abweisen","recordingStartText":"Dieser Anruf wird in K\xfcrze aufgezeichnet. Wenn Sie nicht aufgezeichnet werden m\xf6chten, k\xf6nnen Sie den Anruf gerne zu diesem Zeitpunkt verlassen.","recordingStartTitle":"Die Aufnahme beginnt gleich."},"requestAccess":{"admit":"Gib zu","defaultName":"Ein Nutzer","deny":"Verweigern","wantToJoin":"<bold>{{name}}</bold>will mitmachen!"},"requestDevice":{"askForDevice":"Ask for {{device}}","declined":"Ihre Anfrage wurde abgelehnt.","deviceActivated":"{{device}} activated","deviceActivationDeclined":"{{device}} activation declined","request":"{{user}}Ich m\xf6chte, dass du deine teilst {{device}}","requestInput":"Eingabeger\xe4te anfordern","timedOut":"Ihre Anfrage ist abgelaufen.","userDeclined":"{{user}}hat Ihre Anfrage abgelehnt.","userWouldLikeYouToActivateYourDevice":"{{name}} would like you to activate your {{device}}.","waitingForDevice":"Waiting for {{name}}\'s {{device}}"},"settings":{"callSettings":"Call settings","devices":"Ger\xe4te","enableVideo":"Enable video","help":"Hilfe","helpCenter":"Gehe zum Hilfecenter","language":"Sprache","manageRecording":"Manage recording","preferences":"Pr\xe4ferenzen","selectYourCamera":"W\xe4hlen Sie Ihre bevorzugte Kamera","selectYourLanguage":"W\xe4hlen Sie Ihre gew\xfcnschte Sprache","selectYourMicrophone":"W\xe4hlen Sie Ihr bevorzugtes Mikrofon","startRecording":"Start recording","stopRecording":"Stop recording","title":"Einstellungen","tools":"Tools"},"shareLink":{"failed":"Link konnte nicht gesendet werden","invalid":"Ung\xfcltiger Link","invoice":"{{user}}Ich habe dir eine Rechnung geschickt.","pay":"Zahlen","poweredBy":"Angetrieben von","sentToUser":"Link gesendet an {{user}}","sentToUsers":"Link an Benutzer gesendet","title":"Link teilen","title2":"Einen Link teilen"},"sharedHistory":{"shared":"Mit dir geteilt"},"snapshot":{"aSnapshotHasBeenShared":"A snapshot has been shared.","error":"Beim Versuch, den Snapshot zu senden, ist ein Fehler aufgetreten","save":"Foto speichern","sentToUser":"Snapshot gesendet an {{user}}","sentToUsers":"Snapshot wurde an Benutzer gesendet.","shared":"Schnappschuss geteilt.","title":"Schnappschuss"},"videoMenu":{"blockedCamera":"Die Kamera ist blockiert.","cameraPermissions":"Bitte akzeptieren Sie die gemeinsame Nutzung von Kameras, bevor Sie auf diese Optionen zugreifen.","highDef":"Hochaufl\xf6send (720p)","lowDef":"Niedrige Aufl\xf6sung (240p)","sendResolution":"Aufl\xf6sung senden (maximal)","standardDef":"Standardaufl\xf6sung (480p)","title":"Video"},"virtualBackground":{"blur":"Blur","custom":"Custom","default":"Default","noCustomBackgrounds":"No custom backgrounds yet. Please contact your admin.","none":"None","setBackground":"Hintergrund festlegen","title":"Virtueller Hintergrund"},"youtube":{"description":"Share a YouTube video with other participants.","invalid":"Ung\xfcltige YouTube-URL","share":"Jetzt ansehen","title":"Zusammen ansehen","url":"YOUTUBE-URL"}}');
64
64
 
65
65
 
66
66
  var $8af7f345a966aef3$exports = {};
67
- $8af7f345a966aef3$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":{"addAdditionalMedia":"Add additional media","allowsYouToShareMoreMedia":"This option allows you to share one or more media to add more context.","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","howWasYourExperience":"How was your experience?","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","pleaseRateYourExperienceBelow":"Please rate your experience below","thankYouForYourFeedback":"Thank you for your feedback.","tooLate":"Sei arrivato troppo tardi","yourFeedbackHelpsUs":"Your feedback helps us improve. See you soon!"},"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"},"iframe":{"featureNotAvailableInContext":"This feature is not available in the current context."},"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","add":"Add","audio":"Audio","camera":"Telecamera","cancel":"Annulla","confirm":"Confermare","decline":"Declinare","download":"Download","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"},"networkIssue":{"description":"The clip information may be damaged.","title":"Network issue"},"notifications":{"aQuickRefreshShouldFix":"A quick refresh should get things back on track","agentJoinError":"Si \xe8 verificato un errore cercando di entrare nella conversazione come agente","allow":"Allow","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}}).","failedToDisableVideo":"Failed to disable video","failedToEnableMicrophone":"Failed to enable microphone","failedToEnableVideo":"Failed to enable video","failedToMuteUnmuteMicrophone":"Failed to mute / unmute the microphone","invitationSentToFailed":"Sent to {{ name }} failed.","locationIsBlocked":"Location is blocked","locationIsRequired":"Location is required","microphoneError":"Si \xe8 verificato un errore durante l\'attivazione del microfono","networkStability":"Network stability","noCamera":"Nessuna fotocamera disponibile","permissionToShareScreenDenied":"Permission to share screen denied","pleaseEnableLocation":"Please enable location services in your settings.","recording":"Registrazione in corso","recordingStopped":"Recording stopped","reload":"Ricaricare","screensharingError":"Si \xe8 verificato un errore durante l\'attivazione della condivisione dello schermo","somethingWentWrong":"Oops! Something went wrong","unableToSwitchCamera":"Unable to switch camera","unableToUnzoom":"Unable to unzoom","unableToZoom":"Unable to zoom","uploadError":"An error occured during the upload, please try again later.","uploadFailed":"Upload failed","yourInternetConnectionIsUnstable":"Your internet connection is unstable"},"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.","feelFreeToTalkGiveMoreContext":"\uD83D\uDDE3\uFE0F Feel free to talk to give me more context.","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","mySuggestion":"My suggestion","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?","recordNewMedia":"Record new media","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","startByClickingOnTheButton":"Start by clicking on the round button below! \uD83D\uDC47","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 }}","thanksForYourMedia":"Thanks for your media!","upload":"Upload","useDesktopVersion":"Usa la versione desktop","videoBotError":"Sorry, an error has occured.","videoBotThinking":"Thinking...","videoInstructionsTitle":"Pronto a registrare un video?","waitVideo":"Potrebbero essere necessari fino a 15 secondi affinch\xe9 un video sia pronto.","yourMedia":"Your media"},"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":{"askForDevice":"Ask for {{device}}","declined":"La tua richiesta \xe8 stata rifiutata.","deviceActivated":"{{device}} activated","deviceActivationDeclined":"{{device}} activation declined","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","userWouldLikeYouToActivateYourDevice":"{{name}} would like you to activate your {{device}}.","waitingForDevice":"Waiting for {{name}}\'s {{device}}"},"settings":{"callSettings":"Call settings","devices":"Dispositivi","enableVideo":"Enable video","help":"Aiuto","helpCenter":"Accedi all\'Assistenza","language":"Linguaggio","manageRecording":"Manage recording","preferences":"Preferenze","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language","selectYourMicrophone":"Select your preferred microphone","startRecording":"Start recording","stopRecording":"Stop recording","title":"Impostazioni","tools":"Tools"},"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":{"aSnapshotHasBeenShared":"A snapshot has been shared.","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":{"blur":"Blur","custom":"Custom","default":"Default","noCustomBackgrounds":"No custom backgrounds yet. Please contact your admin.","none":"None","setBackground":"Imposta sfondo","title":"Sfondo virtuale"},"youtube":{"description":"Share a YouTube video with other participants.","invalid":"URL YouTube non valido","share":"Guarda ora","title":"Vedere Assieme","url":"URL YOUTUBE"}}');
67
+ $8af7f345a966aef3$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":{"addAdditionalMedia":"Add additional media","allowsYouToShareMoreMedia":"This option allows you to share one or more media to add more context.","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","howWasYourExperience":"How was your experience?","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","pleaseRateYourExperienceBelow":"Please rate your experience below","thankYouForYourFeedback":"Thank you for your feedback.","tooLate":"Sei arrivato troppo tardi","yourFeedbackHelpsUs":"Your feedback helps us improve. See you soon!"},"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"},"iframe":{"featureNotAvailableInContext":"This feature is not available in the current context."},"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","add":"Add","audio":"Audio","camera":"Telecamera","cancel":"Annulla","confirm":"Confermare","decline":"Declinare","download":"Download","from":"Da","microphone":"Microfono","open":"Aprire","pdf":"PDF","photo":"Foto","proceed":"Procedere","remove":"Rimuovere","screen":"Schermo","screenshot":"Schermata","someone":"Qualcuno","speaker":"Altoparlante","user":"Utente","video":"Video","you":"Voi"},"networkIssue":{"description":"The clip information may be damaged.","title":"Network issue"},"notifications":{"aQuickRefreshShouldFix":"A quick refresh should get things back on track","agentJoinError":"Si \xe8 verificato un errore cercando di entrare nella conversazione come agente","allow":"Allow","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}}).","failedToDisableVideo":"Failed to disable video","failedToEnableMicrophone":"Failed to enable microphone","failedToEnableVideo":"Failed to enable video","failedToMuteUnmuteMicrophone":"Failed to mute / unmute the microphone","invitationSentToFailed":"Sent to {{ name }} failed.","locationIsBlocked":"Location is blocked","locationIsRequired":"Location is required","microphoneError":"Si \xe8 verificato un errore durante l\'attivazione del microfono","networkStability":"Network stability","noCamera":"Nessuna fotocamera disponibile","permissionToShareScreenDenied":"Permission to share screen denied","pleaseEnableLocation":"Please enable location services in your settings.","recording":"Registrazione in corso","recordingStopped":"Recording stopped","reload":"Ricaricare","screensharingError":"Si \xe8 verificato un errore durante l\'attivazione della condivisione dello schermo","somethingWentWrong":"Oops! Something went wrong","unableToSwitchCamera":"Unable to switch camera","unableToUnzoom":"Unable to unzoom","unableToZoom":"Unable to zoom","uploadError":"An error occured during the upload, please try again later.","uploadFailed":"Upload failed","yourInternetConnectionIsUnstable":"Your internet connection is unstable"},"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.","feelFreeToTalkGiveMoreContext":"\uD83D\uDDE3\uFE0F Feel free to talk to give me more context.","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","mySuggestion":"My suggestion","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?","recordNewMedia":"Record new media","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","startByClickingOnTheButton":"Start by clicking on the round button below! \uD83D\uDC47","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 }}","thanksForYourMedia":"Thanks for your media!","upload":"Upload","useDesktopVersion":"Usa la versione desktop","videoBotError":"Sorry, an error has occured.","videoBotThinking":"Thinking...","videoInstructionsTitle":"Pronto a registrare un video?","waitVideo":"Potrebbero essere necessari fino a 15 secondi affinch\xe9 un video sia pronto.","yourMedia":"Your media"},"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":{"askForDevice":"Ask for {{device}}","declined":"La tua richiesta \xe8 stata rifiutata.","deviceActivated":"{{device}} activated","deviceActivationDeclined":"{{device}} activation declined","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","userWouldLikeYouToActivateYourDevice":"{{name}} would like you to activate your {{device}}.","waitingForDevice":"Waiting for {{name}}\'s {{device}}"},"settings":{"callSettings":"Call settings","devices":"Dispositivi","enableVideo":"Enable video","help":"Aiuto","helpCenter":"Accedi all\'Assistenza","language":"Linguaggio","manageRecording":"Manage recording","preferences":"Preferenze","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language","selectYourMicrophone":"Select your preferred microphone","startRecording":"Start recording","stopRecording":"Stop recording","title":"Impostazioni","tools":"Tools"},"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":{"aSnapshotHasBeenShared":"A snapshot has been shared.","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":{"blur":"Blur","custom":"Custom","default":"Default","noCustomBackgrounds":"No custom backgrounds yet. Please contact your admin.","none":"None","setBackground":"Imposta sfondo","title":"Sfondo virtuale"},"youtube":{"description":"Share a YouTube video with other participants.","invalid":"URL YouTube non valido","share":"Guarda ora","title":"Vedere Assieme","url":"URL YOUTUBE"}}');
68
68
 
69
69
 
70
70
  var $45ea11a9715fe658$exports = {};
71
- $45ea11a9715fe658$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"O microfone est\xe1 bloqueado.","microphonePermissions":"Aceite o compartilhamento do microfone antes de acessar essas op\xe7\xf5es.","title":"\xc1udio"},"blockedFeature":{"descriptionConnected":"Em um plano gratuito, voc\xea n\xe3o pode usar esse recurso. Atualize seu plano para aproveitar todos os recursos de chamada.","descriptionGuest":"Voc\xea est\xe1 participando de uma chamada criada com uma vers\xe3o gratuita do SnapCall. Esse recurso s\xf3 est\xe1 dispon\xedvel com a vers\xe3o Pro.","dismissConnected":"Atualize para o Pro","dismissGuest":"OK","titleConnected":"Atualize para o Pro","titleGuest":"Recurso n\xe3o dispon\xedvel"},"common":{"new":"Novo"},"copyLink":{"copied":"Link copiado para \xe1rea de transfer\xeancia","copy":"Copiar","description":"Copie o link para a prancheta","error":"Ocorreu um erro ao tentar copiar para a \xe1rea de transfer\xeancia","title":"Copiar link"},"endView":{"addAdditionalMedia":"Adicionar m\xeddia adicional","allowsYouToShareMoreMedia":"Essa op\xe7\xe3o permite que voc\xea compartilhe uma ou mais m\xeddias para adicionar mais contexto.","callEnded":"A chamada terminou","callIsOver":"A chamada foi encerrada ou exclu\xedda","callLeft":"Voc\xea deixou a liga\xe7\xe3o","callNoLongerActive":"Essa chamada n\xe3o est\xe1 mais ativa. Obrigado por participar.","full":"Voc\xea n\xe3o pode participar desta chamada","fullDescription":"A sala est\xe1 cheia. Tente participar da chamada mais tarde.","goBack":"Volte a ligar","howWasYourExperience":"Como foi sua experi\xeancia?","ifMistakeRejoin":"Se isso foi um erro, voc\xea pode entrar novamente usando o bot\xe3o abaixo.","invalidLink":"Link inv\xe1lido","invalidOrExpired":"Esse link \xe9 inv\xe1lido ou expirou.","openDashboard":"Abra o painel","pleaseRateYourExperienceBelow":"Avalie sua experi\xeancia abaixo","thankYouForYourFeedback":"Obrigado pelo seu feedback.","tooLate":"Voc\xea chegou tarde demais","yourFeedbackHelpsUs":"Seu feedback nos ajuda a melhorar. Te vejo em breve!"},"gdpr":{"recordedWarning":"Para melhorar a qualidade do nosso servi\xe7o, essa chamada ser\xe1 gravada."},"greeting":{"askToJoin":"Pe\xe7a para participar","askingLetIn":"Pedindo permiss\xe3o para entrar...","cameraDisabled":"A c\xe2mera est\xe1 desligada","cameraEnabled":"A c\xe2mera est\xe1 ligada","canceledCallRequest":"A solicita\xe7\xe3o de chamada ser\xe1 cancelada e voc\xea ser\xe1 redirecionado para a p\xe1gina de agendamento de chamadas.","cantJoinCall":"Voc\xea n\xe3o pode participar desta chamada","cantWait":"Mal posso esperar?","cantWaitLeaveMessage":"Mal posso esperar? Voc\xea pode deixar uma mensagem e ser\xe1 contatado o mais r\xe1pido poss\xedvel.","clickOnLock":"Clique no \xedcone de <1> </1> cadeado na barra do seu navegador.","footerDescription":"Conhe\xe7a o SnapCall, a maneira mais f\xe1cil de adicionar v\xeddeo em tempo real \xe0 plataforma, produto ou servi\xe7o.","footerTitle":"Desenvolvido por SnapCall","leaveMessage":"Deixe uma mensagem","mainTitle":"Bem-vindo ao SnapCall","mediaDenied":"Acesso negado ao microfone e \xe0 c\xe2mera","microphoneDisabled":"O microfone est\xe1 desligado","microphoneEnabled":"O microfone est\xe1 ligado","name":"Nome","nameDescription":"Esse nome ser\xe1 exibido para todos os participantes da chamada.","namePlaceholder":"Ex. Lucy ou Peter","nameSubmit":"Participe da conversa","recordVideo":"Gravar v\xeddeo","recordVoice":"Gravar voz","requestACall":"Solicite uma liga\xe7\xe3o","scheduleACall":"Agende uma liga\xe7\xe3o","setting":"Configura\xe7\xf5es","sideDescription":"Digite seu nome e ajuste sua c\xe2mera e microfone","sideTitle":"Aguente firme, voc\xea \xe9 o pr\xf3ximo!","someoneDenied":"Algu\xe9m na liga\xe7\xe3o negou sua solicita\xe7\xe3o de ades\xe3o.","takeFewMinute":"Isso pode levar alguns minutos, dependendo da disponibilidade dos participantes.","whatYouCanDo":"Aqui est\xe1 o que voc\xea pode fazer","youWillJoinWhenSomeoneLetsYou":"Voc\xea participar\xe1 da chamada quando algu\xe9m {{ companyName }} deixar voc\xea entrar."},"header":{"free":"Vers\xe3o gratuita"},"iframe":{"featureNotAvailableInContext":"This feature is not available in the current context."},"invitePeople":{"PublicLink":"Link p\xfablico","addEmailToInvite":"Adicione um e-mail para convidar.","addEmails":"Adicionar e-mails...","copyCallLinkDescription":"Copie este link e envie-o para qualquer pessoa que voc\xea queira convidar para participar da chamada.","copyClipLinkDescription":"Copie este link e envie-o para qualquer pessoa que voc\xea queira convidar para gravar um clipe.","email":"E-mail","emailPlaceholder":"Por exemplo, john@acme.com","emailsOrNumberPlaceholder":"Por exemplo, john@acme.com ou +33612345678","error":"Falha ao enviar, tente novamente mais tarde.","invalidEmail":"Formato de e-mail inv\xe1lido.","invalidEmailOrNumber":"Formato de e-mail ou n\xfamero inv\xe1lido.","invitationSentTo_one":"Enviado para {{ name }}","invitationSentTo_other":"Enviado para {{ name }} e {{ otherEmailsCount }} +","invite":"Convide","inviteByEmail":"Convide por e-mail","inviteByEmailOrNumber":"Convide por e-mail ou sms","inviteCall":"Convide para participar da chamada","inviteCallDefaultMessage":"Ei! Voc\xea est\xe1 convidado a participar da nossa videochamada. Clique no link para se conectar instantaneamente.","inviteClipAudioDefaultMessage":"Ei! Grave uma mensagem de \xe1udio agora e forne\xe7a mais contexto para ajud\xe1-lo melhor.","inviteClipDefaultMessage":"Ei! Grave seu v\xeddeo agora e forne\xe7a mais contexto para ajud\xe1-lo melhor.","inviteClipPhotoDefaultMessage":"Ei! Tire uma foto e forne\xe7a mais contexto para ajud\xe1-lo melhor.","inviteClipScreenDefaultMessage":"Ei! Grave sua tela agora e nos forne\xe7a mais contexto para ajud\xe1-lo melhor.","inviteClipVideoDefaultMessage":"Ei! Grave seu v\xeddeo agora e forne\xe7a mais contexto para ajud\xe1-lo melhor.","invitePeople":"Convide pessoas","inviteRecordAudio":"Grave um \xe1udio","inviteRecordClip":"Convide para gravar clipe","inviteRecordPhoto":"Tirar uma fotografia","inviteRecordScreen":"Gravar uma tela","inviteRecordVideo":"Grave um v\xeddeo","joinTheCall":"Participe da chamada","linkToJoinCall":"Link para participar da chamada","linkToRecordAClip":"Link para gravar um clipe","message":"Mensagem","sharePublicLink":"Compartilhar link p\xfablico"},"leave":{"endCall":"Encerrar chamada para todos","leaveCall":"Sair da chamada","title":"Deixar"},"loader":{"connection":"Conectando..."},"menu":{"new":"Novo","openNewTab":"Abrir nova aba","pictureInPicture":"Imagem em imagem","quickConnect":"Conex\xe3o r\xe1pida","screenSharing":"Compartilhamento de tela","startRecord":"Gravar chamada","stopRecord":"Pare o registro","title":"Menu"},"misc":{"accept":"Aceitar","add":"Adicione","audio":"\xc1udio","camera":"C\xe2mera","cancel":"Cancel","confirm":"Confirme","decline":"Decl\xednio","download":"FA\xc7A O DOWNLOAD","from":"De","microphone":"Microfone","open":"Abrir","photo":"foto","proceed":"Proceder","remove":"Remover","screen":"Ecr\xe3","screenshot":"Captura de tela","someone":"Algu\xe9m","speaker":"Alto-falante","user":"Utilizador","video":"V\xeddeo","you":"voc\xea"},"networkIssue":{"description":"The clip information may be damaged.","title":"Network issue"},"notifications":{"aQuickRefreshShouldFix":"A quick refresh should get things back on track","agentJoinError":"Ocorreu um erro ao tentar entrar na sala como agente","allow":"Allow","blockedMicrophonePopup":"O SnapCall requer acesso \xe0 sua c\xe2mera e microfone. Clique no \xedcone de c\xe2mera bloqueada na barra de endere\xe7o do seu navegador.","blockedMicrophonePopupTitle":"A c\xe2mera e o microfone est\xe3o bloqueados","cameraError":"Ocorreu um erro ao tentar alternar a c\xe2mera","cameraRotateError":"Ocorreu um erro ao tentar girar a c\xe2mera","close":"Fechar","connectedTo":"Conectado a {{name}}","criticalError":"Ocorreu um erro cr\xedtico (erro{{code}}).","error":"Erro","errorOccuredCode":"Ocorreu um erro (erro{{code}}).","failedToDisableVideo":"Failed to disable video","failedToEnableMicrophone":"Failed to enable microphone","failedToEnableVideo":"Failed to enable video","failedToMuteUnmuteMicrophone":"Failed to mute / unmute the microphone","invitationSentToFailed":"Enviado para {{ name }} falhou.","locationIsBlocked":"Location is blocked","locationIsRequired":"Location is required","microphoneError":"Ocorreu um erro ao tentar alternar o microfone","networkStability":"Network stability","noCamera":"Nenhuma c\xe2mera dispon\xedvel","permissionToShareScreenDenied":"Permission to share screen denied","pleaseEnableLocation":"Please enable location services in your settings.","recording":"Grava\xe7\xe3o em andamento","recordingStopped":"Recording stopped","reload":"Recarregue","screensharingError":"Ocorreu um erro ao tentar ativar o compartilhamento de tela","somethingWentWrong":"Oops! Something went wrong","unableToSwitchCamera":"Unable to switch camera","unableToUnzoom":"Unable to unzoom","unableToZoom":"Unable to zoom","uploadError":"Ocorreu um erro durante o carregamento. Tente novamente mais tarde.","uploadFailed":"Upload failed","yourInternetConnectionIsUnstable":"Your internet connection is unstable"},"quickConnect":{"scan":"Digitalize esse c\xf3digo QR com a c\xe2mera do telefone para abrir a chamada.","scanTitle":"Digitalize o c\xf3digo QR","title":"Conex\xe3o r\xe1pida"},"recorder":{"addMore":"Adicione mais","addNewClip":"Adicionar novo clipe","allowAccess":"Permitir acesso","allowCamMicAccess":"Permitir acesso \xe0 cam/microfone","allowScreenShareAccess":"Permitir acesso ao compartilhamento de tela","attachElements_one":"Anexar {{ type }} ao t\xedquete","attachElements_other":"Anexar {{ count }} elementos","audioInstructionsTitle":"Pronto para gravar uma mensagem de voz?","audioLevelNotification":{"noSound":{"description":"Verifique se o microfone est\xe1 ativado.","title":"Nenhum som detectado."},"shortVideo":{"description":"Este v\xeddeo \xe9 muito curto para contextualizar.","title":"V\xeddeo curto."},"spokenWordsQuestion":{"description":"Seu v\xeddeo inclui detalhes falados suficientes?","title":"Palavras faladas."},"spokenWordsWarning":{"description":"O clipe quase n\xe3o inclui palavras faladas.","title":"Sem palavras faladas."}},"audioLevelToast":{"continueSpeaking":"Continue falando para obter um contexto mais claro.","noSound":"Nenhum som detectado.","rememberSpeaking":"Lembre-se de falar para fornecer contexto."},"chooseWhatYouWantToShare":"Escolha o que voc\xea quer compartilhar","chooseWhatYouWantToShareDescription":"Selecione a tela ou guia que voc\xea deseja compartilhar e comece a gravar.","clipCount_one":"{{ count }}clipe","clipCount_other":"{{ count }}clipes","clipSubmissionDescription":"Obrigado por usar o SnapCall.","clipSubmissionTitle_one":"Seu clipe foi enviado","clipSubmissionTitle_other":"Seus clipes foram enviados","confirmRemovalDescription":"Tem certeza de que deseja excluir esta foto/v\xeddeo? Essa a\xe7\xe3o n\xe3o pode ser desfeita.","confirmRemovalTitle":"Confirme a exclus\xe3o","elementBeingProcessed":"Aguarde enquanto o seu {{ type }} est\xe1 sendo processado...","elementCaptureSuccess":"{{ type }}capturado com sucesso","elementRecordedAndAttached":"Seu clipe foi enviado e anexado ao t\xf3pico.","feelFreeToTalkGiveMoreContext":"\uD83D\uDDE3\uFE0F Feel free to talk to give me more context.","goBackToTicket":"Voltar ao ingresso","instructions":{"allowAccessOnPrompt":"Quando solicitado, <bold> permita o acesso </bold> \xe0 c\xe2mera e ao microfone.","multiplePhotos":"Tire uma <bold> foto ou v\xe1rias </bold> para obter detalhes e revise.","privacyPolicy":"Ao continuar, voc\xea concorda com nossa <bold> Pol\xedtica de Privacidade</bold>.","reviewAndSendAudios":"<bold>Revise seus \xe1udios </bold> e eles ser\xe3o enviados para n\xf3s automaticamente.","reviewAndSendPhotos":"<bold>Valide suas fotos </bold> e elas ser\xe3o enviadas para n\xf3s automaticamente.","reviewAndSendVideos":"<bold>Revise seus v\xeddeos </bold> e eles ser\xe3o enviados para n\xf3s automaticamente.","screenShareInstruction":"Selecione a tela ou janela que voc\xea deseja gravar.","selectScreenshare":"Toque em Gravar minha tela e selecione a tela ou janela que voc\xea deseja gravar.","speakClearly":"<bold>Fale com clareza </bold> e diga o que voc\xea precisa transmitir.","speakDuringRecord":"Voc\xea pode falar durante a grava\xe7\xe3o para adicionar detalhes.","stopScreenOnFinish":"Pressione o bot\xe3o Parar quando terminar. O v\xeddeo ser\xe1 enviado para n\xf3s automaticamente.","tapAudioButton":"<bold>Toque no bot\xe3o de grava\xe7\xe3o </bold> para come\xe7ar a gravar sua mensagem de \xe1udio.","tapStopVideoButton":"<bold>Toque em parar </bold> quando terminar.","tapVideoButton":"<bold>Toque no bot\xe3o de grava\xe7\xe3o </bold> para come\xe7ar e sinta-se \xe0 vontade para comentar.","videoSpeech":"Voc\xea pode <bold> conversar durante </bold> a grava\xe7\xe3o para fornecer informa\xe7\xf5es adicionais."},"limit":"Grava\xe7\xe3o de v\xeddeo limitada a 5 min.","logIn":"Log in","loggedAs":"Registrado como","mediaCount_one":"{{ count }}m\xeddia","mediaCount_other":"{{ count }}m\xeddia","mediaSent_one":"Sua m\xeddia foi enviada","mediaSent_other":"Sua m\xeddia foi enviada","mySuggestion":"My suggestion","noCameraAccess":"Sem acesso \xe0 c\xe2mera","noCameraAccessDescription":"Sem acesso \xe0 c\xe2mera Permita o acesso \xe0 c\xe2mera em seu navegador.","noCameraAndMicrophoneAccess":"Sem acesso \xe0 c\xe2mera e ao microfone","noCameraAndMicrophoneAccessDescription":"Sem acesso \xe0 c\xe2mera e ao microfone Permita o acesso ao microfone e \xe0 c\xe2mera no seu navegador.","noMicrophoneAccess":"Sem acesso ao microfone","noMicrophoneAccessDescription":"Sem acesso ao microfone Permita o acesso ao microfone em seu navegador.","okay":"OK","openThread":"T\xf3pico aberto","permissionDeniedDescription":"Sem acesso \xe0 c\xe2mera e ao microfone, voc\xea n\xe3o poder\xe1 capturar fotos ou v\xeddeos para compartilhar com a equipe de suporte. Conceda acesso nas configura\xe7\xf5es do seu navegador.","permissionDeniedTitle":"Algo correu mal!","photoInstructionsTitle":"Pronto para tirar uma foto?","recordNewMedia":"Record new media","replyAttached":"Sua resposta foi anexada","scanQRCode":"Escaneie esse c\xf3digo QR com um dispositivo compat\xedvel.","screenShareInstructionsTitle":"Pronto para compartilhar sua tela?","screenTitle":"Pronto para capturar sua tela?","send":"Enviar","sendElements_one":"Enviar {{ type }}","sendElements_other":"Enviar {{ count }} elementos","showQrCode":"Mostrar c\xf3digo QR","startByClickingOnTheButton":"Start by clicking on the round button below! \uD83D\uDC47","startScreenRecording":"Iniciar grava\xe7\xe3o de tela","startScreenShareButton":"Gravar minha tela","stopScreenShareButton":"Pare de gravar","submissionDescription":"Sua foto/v\xeddeo foi enviada com sucesso. Vamos analis\xe1-lo e entrar em contato com voc\xea em breve.","submissionTitle":"Obrigado por sua submiss\xe3o!","switchToMobileDescription":"Experimente maior comodidade ao usar seu telefone para tirar fotos e gravar v\xeddeos.","switchToMobileTitle":"Mude para o seu dispositivo m\xf3vel","takeNewElement":"Capture um novo {{ type }}","thanksForYourMedia":"Thanks for your media!","upload":"upload","useDesktopVersion":"Use a vers\xe3o para desktop","videoBotError":"Sorry, an error has occured.","videoBotThinking":"Thinking...","videoInstructionsTitle":"Pronto para gravar um v\xeddeo?","waitVideo":"Um v\xeddeo pode levar at\xe9 15 segundos para ficar pronto.","yourMedia":"Your media"},"recordingPopup":{"dismiss":"Ignorar","recordingStartText":"Essa liga\xe7\xe3o ser\xe1 gravada em breve. Se voc\xea preferir n\xe3o ser gravado, sinta-se \xe0 vontade para sair da liga\xe7\xe3o neste momento.","recordingStartTitle":"A grava\xe7\xe3o est\xe1 prestes a come\xe7ar."},"requestAccess":{"admit":"Admitem","defaultName":"Um usu\xe1rio","deny":"Negar","wantToJoin":"<bold>{{name}}</bold>quer se juntar!"},"requestDevice":{"askForDevice":"Pergunte por {{device}}","declined":"Sua solicita\xe7\xe3o foi recusada.","deviceActivated":"{{device}}ativado","deviceActivationDeclined":"{{device}}ativa\xe7\xe3o declinada","request":"{{user}}gostaria que voc\xea compartilhasse seu {{device}}","requestInput":"Solicitar dispositivos de entrada","timedOut":"Sua solicita\xe7\xe3o atingiu o tempo limite.","userDeclined":"{{user}}recusou sua solicita\xe7\xe3o.","userWouldLikeYouToActivateYourDevice":"{{name}}gostaria que voc\xea ativasse seu{{device}}.","waitingForDevice":"Esperando por {{name}} n\xf3s {{device}}"},"settings":{"callSettings":"Call settings","devices":"Dispositivos","enableVideo":"Enable video","help":"Socorro","helpCenter":"Acesse a Central de Ajuda","language":"Idioma","manageRecording":"Manage recording","preferences":"Prefer\xeancias","selectYourCamera":"Selecione sua c\xe2mera preferida","selectYourLanguage":"Selecione seu idioma preferido","selectYourMicrophone":"Selecione seu microfone preferido","startRecording":"Start recording","stopRecording":"Stop recording","title":"Configura\xe7\xf5es","tools":"Tools"},"shareLink":{"failed":"Falha ao enviar o link","invalid":"Link inv\xe1lido","invoice":"{{user}}enviou uma fatura para voc\xea.","pay":"Pagar","poweredBy":"Desenvolvido por","sentToUser":"Link enviado para {{user}}","sentToUsers":"Link enviado aos usu\xe1rios","title":"Compartilhar link","title2":"Compartilhe um link"},"sharedHistory":{"shared":"Compartilhado com voc\xea"},"snapshot":{"aSnapshotHasBeenShared":"Um instant\xe2neo foi compartilhado.","error":"Ocorreu um erro ao tentar enviar o instant\xe2neo","save":"Salvar foto","sentToUser":"Instant\xe2neo enviado para {{user}}","sentToUsers":"Instant\xe2neo enviado aos usu\xe1rios.","shared":"Instant\xe2neo compartilhado.","title":"Instant\xe2neo"},"videoMenu":{"blockedCamera":"A c\xe2mera est\xe1 bloqueada.","cameraPermissions":"Aceite o compartilhamento da c\xe2mera antes de acessar essas op\xe7\xf5es.","highDef":"Alta defini\xe7\xe3o (720p)","lowDef":"Baixa defini\xe7\xe3o (240p)","sendResolution":"Resolu\xe7\xe3o de envio (m\xe1xima)","standardDef":"Defini\xe7\xe3o padr\xe3o (480p)","title":"V\xeddeo"},"virtualBackground":{"blur":"Blur","custom":"Custom","default":"Default","noCustomBackgrounds":"No custom backgrounds yet. Please contact your admin.","none":"None","setBackground":"Definir plano de fundo","title":"Plano de fundo virtual"},"youtube":{"description":"Share a YouTube video with other participants.","invalid":"URL inv\xe1lida do YouTube","share":"Assista agora","title":"Assista juntos","url":"URL DO YOUTUBE"}}');
71
+ $45ea11a9715fe658$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"O microfone est\xe1 bloqueado.","microphonePermissions":"Aceite o compartilhamento do microfone antes de acessar essas op\xe7\xf5es.","title":"\xc1udio"},"blockedFeature":{"descriptionConnected":"Em um plano gratuito, voc\xea n\xe3o pode usar esse recurso. Atualize seu plano para aproveitar todos os recursos de chamada.","descriptionGuest":"Voc\xea est\xe1 participando de uma chamada criada com uma vers\xe3o gratuita do SnapCall. Esse recurso s\xf3 est\xe1 dispon\xedvel com a vers\xe3o Pro.","dismissConnected":"Atualize para o Pro","dismissGuest":"OK","titleConnected":"Atualize para o Pro","titleGuest":"Recurso n\xe3o dispon\xedvel"},"common":{"new":"Novo"},"copyLink":{"copied":"Link copiado para \xe1rea de transfer\xeancia","copy":"Copiar","description":"Copie o link para a prancheta","error":"Ocorreu um erro ao tentar copiar para a \xe1rea de transfer\xeancia","title":"Copiar link"},"endView":{"addAdditionalMedia":"Adicionar m\xeddia adicional","allowsYouToShareMoreMedia":"Essa op\xe7\xe3o permite que voc\xea compartilhe uma ou mais m\xeddias para adicionar mais contexto.","callEnded":"A chamada terminou","callIsOver":"A chamada foi encerrada ou exclu\xedda","callLeft":"Voc\xea deixou a liga\xe7\xe3o","callNoLongerActive":"Essa chamada n\xe3o est\xe1 mais ativa. Obrigado por participar.","full":"Voc\xea n\xe3o pode participar desta chamada","fullDescription":"A sala est\xe1 cheia. Tente participar da chamada mais tarde.","goBack":"Volte a ligar","howWasYourExperience":"Como foi sua experi\xeancia?","ifMistakeRejoin":"Se isso foi um erro, voc\xea pode entrar novamente usando o bot\xe3o abaixo.","invalidLink":"Link inv\xe1lido","invalidOrExpired":"Esse link \xe9 inv\xe1lido ou expirou.","openDashboard":"Abra o painel","pleaseRateYourExperienceBelow":"Avalie sua experi\xeancia abaixo","thankYouForYourFeedback":"Obrigado pelo seu feedback.","tooLate":"Voc\xea chegou tarde demais","yourFeedbackHelpsUs":"Seu feedback nos ajuda a melhorar. Te vejo em breve!"},"gdpr":{"recordedWarning":"Para melhorar a qualidade do nosso servi\xe7o, essa chamada ser\xe1 gravada."},"greeting":{"askToJoin":"Pe\xe7a para participar","askingLetIn":"Pedindo permiss\xe3o para entrar...","cameraDisabled":"A c\xe2mera est\xe1 desligada","cameraEnabled":"A c\xe2mera est\xe1 ligada","canceledCallRequest":"A solicita\xe7\xe3o de chamada ser\xe1 cancelada e voc\xea ser\xe1 redirecionado para a p\xe1gina de agendamento de chamadas.","cantJoinCall":"Voc\xea n\xe3o pode participar desta chamada","cantWait":"Mal posso esperar?","cantWaitLeaveMessage":"Mal posso esperar? Voc\xea pode deixar uma mensagem e ser\xe1 contatado o mais r\xe1pido poss\xedvel.","clickOnLock":"Clique no \xedcone de <1> </1> cadeado na barra do seu navegador.","footerDescription":"Conhe\xe7a o SnapCall, a maneira mais f\xe1cil de adicionar v\xeddeo em tempo real \xe0 plataforma, produto ou servi\xe7o.","footerTitle":"Desenvolvido por SnapCall","leaveMessage":"Deixe uma mensagem","mainTitle":"Bem-vindo ao SnapCall","mediaDenied":"Acesso negado ao microfone e \xe0 c\xe2mera","microphoneDisabled":"O microfone est\xe1 desligado","microphoneEnabled":"O microfone est\xe1 ligado","name":"Nome","nameDescription":"Esse nome ser\xe1 exibido para todos os participantes da chamada.","namePlaceholder":"Ex. Lucy ou Peter","nameSubmit":"Participe da conversa","recordVideo":"Gravar v\xeddeo","recordVoice":"Gravar voz","requestACall":"Solicite uma liga\xe7\xe3o","scheduleACall":"Agende uma liga\xe7\xe3o","setting":"Configura\xe7\xf5es","sideDescription":"Digite seu nome e ajuste sua c\xe2mera e microfone","sideTitle":"Aguente firme, voc\xea \xe9 o pr\xf3ximo!","someoneDenied":"Algu\xe9m na liga\xe7\xe3o negou sua solicita\xe7\xe3o de ades\xe3o.","takeFewMinute":"Isso pode levar alguns minutos, dependendo da disponibilidade dos participantes.","whatYouCanDo":"Aqui est\xe1 o que voc\xea pode fazer","youWillJoinWhenSomeoneLetsYou":"Voc\xea participar\xe1 da chamada quando algu\xe9m {{ companyName }} deixar voc\xea entrar."},"header":{"free":"Vers\xe3o gratuita"},"iframe":{"featureNotAvailableInContext":"This feature is not available in the current context."},"invitePeople":{"PublicLink":"Link p\xfablico","addEmailToInvite":"Adicione um e-mail para convidar.","addEmails":"Adicionar e-mails...","copyCallLinkDescription":"Copie este link e envie-o para qualquer pessoa que voc\xea queira convidar para participar da chamada.","copyClipLinkDescription":"Copie este link e envie-o para qualquer pessoa que voc\xea queira convidar para gravar um clipe.","email":"E-mail","emailPlaceholder":"Por exemplo, john@acme.com","emailsOrNumberPlaceholder":"Por exemplo, john@acme.com ou +33612345678","error":"Falha ao enviar, tente novamente mais tarde.","invalidEmail":"Formato de e-mail inv\xe1lido.","invalidEmailOrNumber":"Formato de e-mail ou n\xfamero inv\xe1lido.","invitationSentTo_one":"Enviado para {{ name }}","invitationSentTo_other":"Enviado para {{ name }} e {{ otherEmailsCount }} +","invite":"Convide","inviteByEmail":"Convide por e-mail","inviteByEmailOrNumber":"Convide por e-mail ou sms","inviteCall":"Convide para participar da chamada","inviteCallDefaultMessage":"Ei! Voc\xea est\xe1 convidado a participar da nossa videochamada. Clique no link para se conectar instantaneamente.","inviteClipAudioDefaultMessage":"Ei! Grave uma mensagem de \xe1udio agora e forne\xe7a mais contexto para ajud\xe1-lo melhor.","inviteClipDefaultMessage":"Ei! Grave seu v\xeddeo agora e forne\xe7a mais contexto para ajud\xe1-lo melhor.","inviteClipPhotoDefaultMessage":"Ei! Tire uma foto e forne\xe7a mais contexto para ajud\xe1-lo melhor.","inviteClipScreenDefaultMessage":"Ei! Grave sua tela agora e nos forne\xe7a mais contexto para ajud\xe1-lo melhor.","inviteClipVideoDefaultMessage":"Ei! Grave seu v\xeddeo agora e forne\xe7a mais contexto para ajud\xe1-lo melhor.","invitePeople":"Convide pessoas","inviteRecordAudio":"Grave um \xe1udio","inviteRecordClip":"Convide para gravar clipe","inviteRecordPhoto":"Tirar uma fotografia","inviteRecordScreen":"Gravar uma tela","inviteRecordVideo":"Grave um v\xeddeo","joinTheCall":"Participe da chamada","linkToJoinCall":"Link para participar da chamada","linkToRecordAClip":"Link para gravar um clipe","message":"Mensagem","sharePublicLink":"Compartilhar link p\xfablico"},"leave":{"endCall":"Encerrar chamada para todos","leaveCall":"Sair da chamada","title":"Deixar"},"loader":{"connection":"Conectando..."},"menu":{"new":"Novo","openNewTab":"Abrir nova aba","pictureInPicture":"Imagem em imagem","quickConnect":"Conex\xe3o r\xe1pida","screenSharing":"Compartilhamento de tela","startRecord":"Gravar chamada","stopRecord":"Pare o registro","title":"Menu"},"misc":{"accept":"Aceitar","add":"Adicione","audio":"\xc1udio","camera":"C\xe2mera","cancel":"Cancel","confirm":"Confirme","decline":"Decl\xednio","download":"FA\xc7A O DOWNLOAD","from":"De","microphone":"Microfone","open":"Abrir","pdf":"PDF","photo":"foto","proceed":"Proceder","remove":"Remover","screen":"Ecr\xe3","screenshot":"Captura de tela","someone":"Algu\xe9m","speaker":"Alto-falante","user":"Utilizador","video":"V\xeddeo","you":"voc\xea"},"networkIssue":{"description":"The clip information may be damaged.","title":"Network issue"},"notifications":{"aQuickRefreshShouldFix":"A quick refresh should get things back on track","agentJoinError":"Ocorreu um erro ao tentar entrar na sala como agente","allow":"Allow","blockedMicrophonePopup":"O SnapCall requer acesso \xe0 sua c\xe2mera e microfone. Clique no \xedcone de c\xe2mera bloqueada na barra de endere\xe7o do seu navegador.","blockedMicrophonePopupTitle":"A c\xe2mera e o microfone est\xe3o bloqueados","cameraError":"Ocorreu um erro ao tentar alternar a c\xe2mera","cameraRotateError":"Ocorreu um erro ao tentar girar a c\xe2mera","close":"Fechar","connectedTo":"Conectado a {{name}}","criticalError":"Ocorreu um erro cr\xedtico (erro{{code}}).","error":"Erro","errorOccuredCode":"Ocorreu um erro (erro{{code}}).","failedToDisableVideo":"Failed to disable video","failedToEnableMicrophone":"Failed to enable microphone","failedToEnableVideo":"Failed to enable video","failedToMuteUnmuteMicrophone":"Failed to mute / unmute the microphone","invitationSentToFailed":"Enviado para {{ name }} falhou.","locationIsBlocked":"Location is blocked","locationIsRequired":"Location is required","microphoneError":"Ocorreu um erro ao tentar alternar o microfone","networkStability":"Network stability","noCamera":"Nenhuma c\xe2mera dispon\xedvel","permissionToShareScreenDenied":"Permission to share screen denied","pleaseEnableLocation":"Please enable location services in your settings.","recording":"Grava\xe7\xe3o em andamento","recordingStopped":"Recording stopped","reload":"Recarregue","screensharingError":"Ocorreu um erro ao tentar ativar o compartilhamento de tela","somethingWentWrong":"Oops! Something went wrong","unableToSwitchCamera":"Unable to switch camera","unableToUnzoom":"Unable to unzoom","unableToZoom":"Unable to zoom","uploadError":"Ocorreu um erro durante o carregamento. Tente novamente mais tarde.","uploadFailed":"Upload failed","yourInternetConnectionIsUnstable":"Your internet connection is unstable"},"quickConnect":{"scan":"Digitalize esse c\xf3digo QR com a c\xe2mera do telefone para abrir a chamada.","scanTitle":"Digitalize o c\xf3digo QR","title":"Conex\xe3o r\xe1pida"},"recorder":{"addMore":"Adicione mais","addNewClip":"Adicionar novo clipe","allowAccess":"Permitir acesso","allowCamMicAccess":"Permitir acesso \xe0 cam/microfone","allowScreenShareAccess":"Permitir acesso ao compartilhamento de tela","attachElements_one":"Anexar {{ type }} ao t\xedquete","attachElements_other":"Anexar {{ count }} elementos","audioInstructionsTitle":"Pronto para gravar uma mensagem de voz?","audioLevelNotification":{"noSound":{"description":"Verifique se o microfone est\xe1 ativado.","title":"Nenhum som detectado."},"shortVideo":{"description":"Este v\xeddeo \xe9 muito curto para contextualizar.","title":"V\xeddeo curto."},"spokenWordsQuestion":{"description":"Seu v\xeddeo inclui detalhes falados suficientes?","title":"Palavras faladas."},"spokenWordsWarning":{"description":"O clipe quase n\xe3o inclui palavras faladas.","title":"Sem palavras faladas."}},"audioLevelToast":{"continueSpeaking":"Continue falando para obter um contexto mais claro.","noSound":"Nenhum som detectado.","rememberSpeaking":"Lembre-se de falar para fornecer contexto."},"chooseWhatYouWantToShare":"Escolha o que voc\xea quer compartilhar","chooseWhatYouWantToShareDescription":"Selecione a tela ou guia que voc\xea deseja compartilhar e comece a gravar.","clipCount_one":"{{ count }}clipe","clipCount_other":"{{ count }}clipes","clipSubmissionDescription":"Obrigado por usar o SnapCall.","clipSubmissionTitle_one":"Seu clipe foi enviado","clipSubmissionTitle_other":"Seus clipes foram enviados","confirmRemovalDescription":"Tem certeza de que deseja excluir esta foto/v\xeddeo? Essa a\xe7\xe3o n\xe3o pode ser desfeita.","confirmRemovalTitle":"Confirme a exclus\xe3o","elementBeingProcessed":"Aguarde enquanto o seu {{ type }} est\xe1 sendo processado...","elementCaptureSuccess":"{{ type }}capturado com sucesso","elementRecordedAndAttached":"Seu clipe foi enviado e anexado ao t\xf3pico.","feelFreeToTalkGiveMoreContext":"\uD83D\uDDE3\uFE0F Feel free to talk to give me more context.","goBackToTicket":"Voltar ao ingresso","instructions":{"allowAccessOnPrompt":"Quando solicitado, <bold> permita o acesso </bold> \xe0 c\xe2mera e ao microfone.","multiplePhotos":"Tire uma <bold> foto ou v\xe1rias </bold> para obter detalhes e revise.","privacyPolicy":"Ao continuar, voc\xea concorda com nossa <bold> Pol\xedtica de Privacidade</bold>.","reviewAndSendAudios":"<bold>Revise seus \xe1udios </bold> e eles ser\xe3o enviados para n\xf3s automaticamente.","reviewAndSendPhotos":"<bold>Valide suas fotos </bold> e elas ser\xe3o enviadas para n\xf3s automaticamente.","reviewAndSendVideos":"<bold>Revise seus v\xeddeos </bold> e eles ser\xe3o enviados para n\xf3s automaticamente.","screenShareInstruction":"Selecione a tela ou janela que voc\xea deseja gravar.","selectScreenshare":"Toque em Gravar minha tela e selecione a tela ou janela que voc\xea deseja gravar.","speakClearly":"<bold>Fale com clareza </bold> e diga o que voc\xea precisa transmitir.","speakDuringRecord":"Voc\xea pode falar durante a grava\xe7\xe3o para adicionar detalhes.","stopScreenOnFinish":"Pressione o bot\xe3o Parar quando terminar. O v\xeddeo ser\xe1 enviado para n\xf3s automaticamente.","tapAudioButton":"<bold>Toque no bot\xe3o de grava\xe7\xe3o </bold> para come\xe7ar a gravar sua mensagem de \xe1udio.","tapStopVideoButton":"<bold>Toque em parar </bold> quando terminar.","tapVideoButton":"<bold>Toque no bot\xe3o de grava\xe7\xe3o </bold> para come\xe7ar e sinta-se \xe0 vontade para comentar.","videoSpeech":"Voc\xea pode <bold> conversar durante </bold> a grava\xe7\xe3o para fornecer informa\xe7\xf5es adicionais."},"limit":"Grava\xe7\xe3o de v\xeddeo limitada a 5 min.","logIn":"Log in","loggedAs":"Registrado como","mediaCount_one":"{{ count }}m\xeddia","mediaCount_other":"{{ count }}m\xeddia","mediaSent_one":"Sua m\xeddia foi enviada","mediaSent_other":"Sua m\xeddia foi enviada","mySuggestion":"My suggestion","noCameraAccess":"Sem acesso \xe0 c\xe2mera","noCameraAccessDescription":"Sem acesso \xe0 c\xe2mera Permita o acesso \xe0 c\xe2mera em seu navegador.","noCameraAndMicrophoneAccess":"Sem acesso \xe0 c\xe2mera e ao microfone","noCameraAndMicrophoneAccessDescription":"Sem acesso \xe0 c\xe2mera e ao microfone Permita o acesso ao microfone e \xe0 c\xe2mera no seu navegador.","noMicrophoneAccess":"Sem acesso ao microfone","noMicrophoneAccessDescription":"Sem acesso ao microfone Permita o acesso ao microfone em seu navegador.","okay":"OK","openThread":"T\xf3pico aberto","permissionDeniedDescription":"Sem acesso \xe0 c\xe2mera e ao microfone, voc\xea n\xe3o poder\xe1 capturar fotos ou v\xeddeos para compartilhar com a equipe de suporte. Conceda acesso nas configura\xe7\xf5es do seu navegador.","permissionDeniedTitle":"Algo correu mal!","photoInstructionsTitle":"Pronto para tirar uma foto?","recordNewMedia":"Record new media","replyAttached":"Sua resposta foi anexada","scanQRCode":"Escaneie esse c\xf3digo QR com um dispositivo compat\xedvel.","screenShareInstructionsTitle":"Pronto para compartilhar sua tela?","screenTitle":"Pronto para capturar sua tela?","send":"Enviar","sendElements_one":"Enviar {{ type }}","sendElements_other":"Enviar {{ count }} elementos","showQrCode":"Mostrar c\xf3digo QR","startByClickingOnTheButton":"Start by clicking on the round button below! \uD83D\uDC47","startScreenRecording":"Iniciar grava\xe7\xe3o de tela","startScreenShareButton":"Gravar minha tela","stopScreenShareButton":"Pare de gravar","submissionDescription":"Sua foto/v\xeddeo foi enviada com sucesso. Vamos analis\xe1-lo e entrar em contato com voc\xea em breve.","submissionTitle":"Obrigado por sua submiss\xe3o!","switchToMobileDescription":"Experimente maior comodidade ao usar seu telefone para tirar fotos e gravar v\xeddeos.","switchToMobileTitle":"Mude para o seu dispositivo m\xf3vel","takeNewElement":"Capture um novo {{ type }}","thanksForYourMedia":"Thanks for your media!","upload":"upload","useDesktopVersion":"Use a vers\xe3o para desktop","videoBotError":"Sorry, an error has occured.","videoBotThinking":"Thinking...","videoInstructionsTitle":"Pronto para gravar um v\xeddeo?","waitVideo":"Um v\xeddeo pode levar at\xe9 15 segundos para ficar pronto.","yourMedia":"Your media"},"recordingPopup":{"dismiss":"Ignorar","recordingStartText":"Essa liga\xe7\xe3o ser\xe1 gravada em breve. Se voc\xea preferir n\xe3o ser gravado, sinta-se \xe0 vontade para sair da liga\xe7\xe3o neste momento.","recordingStartTitle":"A grava\xe7\xe3o est\xe1 prestes a come\xe7ar."},"requestAccess":{"admit":"Admitem","defaultName":"Um usu\xe1rio","deny":"Negar","wantToJoin":"<bold>{{name}}</bold>quer se juntar!"},"requestDevice":{"askForDevice":"Pergunte por {{device}}","declined":"Sua solicita\xe7\xe3o foi recusada.","deviceActivated":"{{device}}ativado","deviceActivationDeclined":"{{device}}ativa\xe7\xe3o declinada","request":"{{user}}gostaria que voc\xea compartilhasse seu {{device}}","requestInput":"Solicitar dispositivos de entrada","timedOut":"Sua solicita\xe7\xe3o atingiu o tempo limite.","userDeclined":"{{user}}recusou sua solicita\xe7\xe3o.","userWouldLikeYouToActivateYourDevice":"{{name}}gostaria que voc\xea ativasse seu{{device}}.","waitingForDevice":"Esperando por {{name}} n\xf3s {{device}}"},"settings":{"callSettings":"Call settings","devices":"Dispositivos","enableVideo":"Enable video","help":"Socorro","helpCenter":"Acesse a Central de Ajuda","language":"Idioma","manageRecording":"Manage recording","preferences":"Prefer\xeancias","selectYourCamera":"Selecione sua c\xe2mera preferida","selectYourLanguage":"Selecione seu idioma preferido","selectYourMicrophone":"Selecione seu microfone preferido","startRecording":"Start recording","stopRecording":"Stop recording","title":"Configura\xe7\xf5es","tools":"Tools"},"shareLink":{"failed":"Falha ao enviar o link","invalid":"Link inv\xe1lido","invoice":"{{user}}enviou uma fatura para voc\xea.","pay":"Pagar","poweredBy":"Desenvolvido por","sentToUser":"Link enviado para {{user}}","sentToUsers":"Link enviado aos usu\xe1rios","title":"Compartilhar link","title2":"Compartilhe um link"},"sharedHistory":{"shared":"Compartilhado com voc\xea"},"snapshot":{"aSnapshotHasBeenShared":"Um instant\xe2neo foi compartilhado.","error":"Ocorreu um erro ao tentar enviar o instant\xe2neo","save":"Salvar foto","sentToUser":"Instant\xe2neo enviado para {{user}}","sentToUsers":"Instant\xe2neo enviado aos usu\xe1rios.","shared":"Instant\xe2neo compartilhado.","title":"Instant\xe2neo"},"videoMenu":{"blockedCamera":"A c\xe2mera est\xe1 bloqueada.","cameraPermissions":"Aceite o compartilhamento da c\xe2mera antes de acessar essas op\xe7\xf5es.","highDef":"Alta defini\xe7\xe3o (720p)","lowDef":"Baixa defini\xe7\xe3o (240p)","sendResolution":"Resolu\xe7\xe3o de envio (m\xe1xima)","standardDef":"Defini\xe7\xe3o padr\xe3o (480p)","title":"V\xeddeo"},"virtualBackground":{"blur":"Blur","custom":"Custom","default":"Default","noCustomBackgrounds":"No custom backgrounds yet. Please contact your admin.","none":"None","setBackground":"Definir plano de fundo","title":"Plano de fundo virtual"},"youtube":{"description":"Share a YouTube video with other participants.","invalid":"URL inv\xe1lida do YouTube","share":"Assista agora","title":"Assista juntos","url":"URL DO YOUTUBE"}}');
72
72
 
73
73
 
74
74
  const $384d985bb9605c35$export$150b732325d14d04 = {
@@ -904,7 +904,7 @@ class $82e31ca38889c079$var$AudioRenderer {
904
904
  var $82e31ca38889c079$export$2e2bcd8739ae039 = $82e31ca38889c079$var$AudioRenderer;
905
905
 
906
906
 
907
- const $15ddac3121cc3a5d$export$674c90a250a8b2c5 = async (video)=>{
907
+ const $15ddac3121cc3a5d$var$captureSnapShot = async (video)=>{
908
908
  let { videoWidth: videoWidth, videoHeight: videoHeight } = video;
909
909
  let width = video.offsetWidth;
910
910
  let height = video.offsetHeight;
@@ -952,12 +952,41 @@ const $15ddac3121cc3a5d$export$674c90a250a8b2c5 = async (video)=>{
952
952
  ctx?.drawImage(video, x, y, videoWidth, videoHeight, 0, 0, canvas.width, canvas.height);
953
953
  return canvas.toDataURL('image/jpeg');
954
954
  };
955
+ const $15ddac3121cc3a5d$export$674c90a250a8b2c5 = async (htmlVideo, camera)=>{
956
+ const mediaStream = htmlVideo.srcObject;
957
+ const track = mediaStream.getVideoTracks()[0];
958
+ if (!track) throw new Error('no video track found');
959
+ const trackConstraint = track.getConstraints();
960
+ // assume that 4096 by 4096 is the best quality actually.
961
+ if (trackConstraint.width && trackConstraint.height) {
962
+ const width = htmlVideo.videoWidth;
963
+ const height = htmlVideo.videoHeight;
964
+ await track.applyConstraints({
965
+ width: {
966
+ ideal: 4096
967
+ },
968
+ height: {
969
+ ideal: 4096
970
+ },
971
+ advanced: [
972
+ {
973
+ aspectRatio: Math.round(width * 100 / height) / 100
974
+ },
975
+ ...camera.trackConstraint.advanced
976
+ ]
977
+ });
978
+ }
979
+ const snapshot = await $15ddac3121cc3a5d$var$captureSnapShot(htmlVideo);
980
+ await camera.applyConstraints();
981
+ return snapshot;
982
+ };
955
983
  const $15ddac3121cc3a5d$export$4a210166cc9cb64b = async (src)=>{
956
984
  const video = document.createElement('video');
957
985
  const stream = new MediaStream();
958
986
  stream.addTrack(src);
959
987
  video.srcObject = stream;
960
988
  video.setAttribute('muted', 'true');
989
+ video.setAttribute('playsinline', 'true');
961
990
  const settings = src.getSettings();
962
991
  video.width = settings.width || 0;
963
992
  video.height = settings.height || 0;
@@ -1131,6 +1160,185 @@ class $a2f0e3c29b11c88e$export$2e2bcd8739ae039 {
1131
1160
  }
1132
1161
 
1133
1162
 
1163
+ const $107ba89b5d0109ab$var$audioContextConstructor = window.AudioContext || window.webkitAudioContext;
1164
+ class $107ba89b5d0109ab$export$22ddc20344c01547 {
1165
+ constructor(){
1166
+ this.audioSources = {};
1167
+ this.tracks = {};
1168
+ this.audioContext = new $107ba89b5d0109ab$var$audioContextConstructor();
1169
+ this.audioDestination = this.audioContext.createMediaStreamDestination();
1170
+ }
1171
+ getSetting(identifier) {
1172
+ return this.tracks[identifier]?.getSettings();
1173
+ }
1174
+ removeTrack(identifier) {
1175
+ const track = this.tracks[identifier];
1176
+ if (track) {
1177
+ this.audioSources[identifier]?.disconnect();
1178
+ delete this.tracks[identifier];
1179
+ delete this.audioSources[identifier];
1180
+ track.enabled = false;
1181
+ }
1182
+ }
1183
+ setTrackEnabled(identifier, enabled) {
1184
+ const track = this.tracks[identifier];
1185
+ if (track) track.enabled = enabled;
1186
+ else console.warn(`Track ${identifier} not found`);
1187
+ }
1188
+ addTrack(identifier, track) {
1189
+ if (track.kind === 'audio') {
1190
+ this.removeTrack(identifier);
1191
+ const stream = new MediaStream([
1192
+ track
1193
+ ]);
1194
+ const audioSource = this.audioContext.createMediaStreamSource(stream);
1195
+ this.audioSources[identifier] = audioSource;
1196
+ this.tracks[identifier] = track;
1197
+ this.tracks[identifier].enabled = true;
1198
+ if (this.audioDestination) audioSource.connect(this.audioDestination);
1199
+ }
1200
+ }
1201
+ getFinalTrack() {
1202
+ return this.audioDestination.stream.getTracks()[0];
1203
+ }
1204
+ removeAll() {
1205
+ Object.keys(this.tracks).forEach((identifier)=>{
1206
+ this.removeTrack(identifier);
1207
+ });
1208
+ }
1209
+ }
1210
+
1211
+
1212
+
1213
+ const $8c9dca4cd56e4637$export$8a48322ecc4782be = async (url, streamToken, file)=>{
1214
+ const searchParams = new URLSearchParams({
1215
+ filename: file
1216
+ });
1217
+ const result = await fetch(`${url}/public/streams/${streamToken}/temporary-assets?${searchParams}`, {
1218
+ method: 'get',
1219
+ headers: {
1220
+ 'Content-Type': 'application/json'
1221
+ }
1222
+ }).then((response)=>response.json());
1223
+ return result;
1224
+ };
1225
+ const $8c9dca4cd56e4637$export$df987b50509121ea = async (url, streamToken, file)=>{
1226
+ const searchParams = new URLSearchParams({
1227
+ filename: file
1228
+ });
1229
+ const result = await fetch(`${url}/public/streams/${streamToken}/temporary-assets?${searchParams}`, {
1230
+ method: 'delete',
1231
+ headers: {
1232
+ 'Content-Type': 'application/json'
1233
+ }
1234
+ }).then((response)=>response.json());
1235
+ return result;
1236
+ };
1237
+
1238
+
1239
+
1240
+ var $2114f1d49575b676$require$Buffer = $3Sbms$Buffer;
1241
+ const $2114f1d49575b676$export$bfc52a1c1f84ba66 = async (apiUrl, { token: token, base64Image: base64Image, recordingGroup: recordingGroup })=>{
1242
+ const file = `${(0, $3Sbms$v4)()}.jpeg`;
1243
+ const uploadBody = $2114f1d49575b676$require$Buffer.from(String(base64Image).replace(/^data:image\/\w+;base64,/, ''), 'base64');
1244
+ const { url: url, headers: headers, filename: filename } = await fetch(`${apiUrl}/public/streams/${token}/events/upload`, {
1245
+ method: 'POST',
1246
+ headers: {
1247
+ 'Content-Type': 'application/json'
1248
+ },
1249
+ body: JSON.stringify({
1250
+ type: 'image',
1251
+ filename: file,
1252
+ contentLength: uploadBody.length,
1253
+ recordingGroup: recordingGroup
1254
+ })
1255
+ }).then((res)=>res.json());
1256
+ await fetch(url, {
1257
+ method: 'PUT',
1258
+ headers: {
1259
+ ...headers,
1260
+ 'Content-Type': 'image/*',
1261
+ 'Content-Length': uploadBody.length
1262
+ },
1263
+ body: uploadBody
1264
+ });
1265
+ const { url: assetUrl } = await (0, $8c9dca4cd56e4637$export$8a48322ecc4782be)(apiUrl, token, filename);
1266
+ return {
1267
+ filename: filename,
1268
+ url: assetUrl
1269
+ };
1270
+ };
1271
+
1272
+
1273
+ const $120418cdeb6706cf$export$de363e709c412c8a = (fn, wait = 300)=>{
1274
+ let inThrottle, lastFn, lastTime;
1275
+ return function() {
1276
+ const context = this, args = arguments;
1277
+ if (!inThrottle) {
1278
+ fn.apply(context, args);
1279
+ lastTime = Date.now();
1280
+ inThrottle = true;
1281
+ } else {
1282
+ clearTimeout(lastFn);
1283
+ lastFn = setTimeout(()=>{
1284
+ if (Date.now() - lastTime >= wait) {
1285
+ fn.apply(context, args);
1286
+ lastTime = Date.now();
1287
+ }
1288
+ }, Math.max(wait - (Date.now() - lastTime), 0));
1289
+ }
1290
+ };
1291
+ };
1292
+
1293
+
1294
+
1295
+
1296
+ const $07e4bc01ab825269$export$6ad2c48011488f7 = async (apiUrl, { file: file, token: token, type: type, recordingGroup: recordingGroup })=>{
1297
+ if (!file) throw new Error(`Missing file on "${file}"`);
1298
+ const upload = await fetch(`${apiUrl}/public/streams/${token}/events/upload`, {
1299
+ method: 'POST',
1300
+ headers: {
1301
+ 'Content-Type': 'application/json'
1302
+ },
1303
+ body: JSON.stringify({
1304
+ filename: file.name,
1305
+ contentLength: file.size,
1306
+ type: type,
1307
+ recordingGroup: recordingGroup
1308
+ })
1309
+ });
1310
+ const { url: url, headers: headers, filename: filename } = await upload.json();
1311
+ const uploadResponse = await fetch(url, {
1312
+ method: 'PUT',
1313
+ headers: {
1314
+ ...headers,
1315
+ 'Content-Type': file.type,
1316
+ 'Content-Length': String(file.size)
1317
+ },
1318
+ body: file
1319
+ });
1320
+ const { url: assetUrl } = await (0, $8c9dca4cd56e4637$export$8a48322ecc4782be)(apiUrl, token, filename);
1321
+ if (!uploadResponse.ok) throw new Error('Upload failed');
1322
+ return {
1323
+ filename: filename,
1324
+ url: assetUrl
1325
+ };
1326
+ };
1327
+
1328
+
1329
+ const $7a4afee3d30fe755$export$c30017717ce2168e = async (apiUrl, token, asset)=>{
1330
+ const event = await fetch(`${apiUrl}/public/streams/${token}/events/batch`, {
1331
+ method: 'POST',
1332
+ headers: {
1333
+ 'Content-Type': 'application/json'
1334
+ },
1335
+ body: JSON.stringify({
1336
+ medias: asset
1337
+ })
1338
+ });
1339
+ if (event.ok) return event.json();
1340
+ throw new Error(` request failed ${event.status} `);
1341
+ };
1134
1342
 
1135
1343
 
1136
1344
  async function $ab40fd7a219a4259$export$9b072140089cdb1b(constraints = {
@@ -1208,12 +1416,12 @@ class $ab40fd7a219a4259$export$2e2bcd8739ae039 {
1208
1416
  const { needToAskAudio: needToAskAudio, needToAskVideo: needToAskVideo } = this.needToAskMedias(constraintsCopy);
1209
1417
  constraintsCopy.audio = needToAskAudio ? constraintsCopy.audio : false;
1210
1418
  constraintsCopy.video = needToAskVideo ? constraintsCopy.video : false;
1419
+ let res = undefined;
1211
1420
  if (needToAskAudio || needToAskVideo) {
1212
1421
  this.cleanAllStreams({
1213
1422
  audio: needToAskAudio,
1214
1423
  video: needToAskVideo
1215
1424
  });
1216
- let res = undefined;
1217
1425
  try {
1218
1426
  this.isAskingPermissions = true;
1219
1427
  res = await $ab40fd7a219a4259$export$9b072140089cdb1b(constraintsCopy);
@@ -1295,395 +1503,56 @@ class $ab40fd7a219a4259$export$2e2bcd8739ae039 {
1295
1503
  }
1296
1504
 
1297
1505
 
1298
- const $0148b6fd862a22e8$var$log = new (0, $0f65a9eaf4a1e910$export$2e2bcd8739ae039)('MediaPipe');
1299
- const $0148b6fd862a22e8$var$mediapipeUrl = "https://stream-assets.snapcall.io";
1300
- let $0148b6fd862a22e8$var$selfieSegmentationInitialized = false;
1301
- const $0148b6fd862a22e8$var$selfieSegmentation = new $3Sbms$SelfieSegmentation({
1302
- locateFile: (file, prefix)=>{
1303
- $0148b6fd862a22e8$var$log.debug('selfieSegmentation', file, prefix);
1304
- if ($0148b6fd862a22e8$var$mediapipeUrl) return `${$0148b6fd862a22e8$var$mediapipeUrl}/mediapipe/${file}`;
1305
- const url = window.location.href;
1306
- const path = url.split('/').slice(0, -1).join('/');
1307
- return `${path}/mediapipe/${file}`;
1308
- }
1309
- });
1310
- class $0148b6fd862a22e8$export$2e2bcd8739ae039 {
1311
- constructor(stream, options){
1312
- this.fillColor = '#000000';
1313
- this.type = 'blur';
1314
- this.live = false;
1315
- this.fps = 24;
1316
- this.blurLevel = 10;
1317
- this.timerWorker = new Worker(new URL("timer.43cfcbcc.js", import.meta.url), {
1318
- name: 'VirtualBackgroundTimerWorker'
1319
- });
1320
- this.stream = new MediaStream();
1321
- this.stream.addTrack(stream.getVideoTracks()[0]);
1322
- this.image = document.createElement('video');
1323
- this.image.style.display = 'none';
1324
- this.image.setAttribute('autoplay', '');
1325
- this.image.setAttribute('playsinline', '');
1326
- this.image.setAttribute('muted', '');
1327
- this.canvas = document.createElement('canvas');
1328
- this.canvas.style.display = 'none';
1329
- if (options) this.setOptions(options);
1330
- }
1331
- setOptions(options) {
1332
- this.setType(options.type);
1333
- this.setFillColor(options.fillColor || this.fillColor);
1334
- this.setVideoBackground(options.background);
1335
- this.setBlurLevel(options.blurLevel || this.blurLevel);
1336
- }
1337
- setType(type) {
1338
- this.type = type;
1339
- }
1340
- setBlurLevel(level) {
1341
- this.blurLevel = level;
1342
- }
1343
- setVideoBackground(data) {
1344
- this.background = data;
1345
- }
1346
- setFillColor(color) {
1347
- this.fillColor = color;
1348
- }
1349
- drawWithBlur(ctx, results) {
1350
- ctx.save();
1351
- ctx.drawImage(results.image, 0, 0, this.canvas.width, this.canvas.height);
1352
- ctx.globalCompositeOperation = 'destination-atop';
1353
- ctx.drawImage(results.segmentationMask, 0, 0, this.canvas.width, this.canvas.height);
1354
- // Blur the context for all subsequent draws then set the raw image as the background
1355
- ctx.filter = `blur(${this.blurLevel}px)`;
1356
- ctx.globalCompositeOperation = 'destination-over';
1357
- ctx.drawImage(results.image, 0, 0, this.canvas.width, this.canvas.height);
1358
- // Restore the context's blank state
1359
- ctx.restore();
1360
- }
1361
- drawWithBackground(ctx, results) {
1362
- ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
1363
- ctx.drawImage(results.segmentationMask, 0, 0, this.canvas.width, this.canvas.height);
1364
- ctx.globalCompositeOperation = 'source-out';
1365
- ctx.fillStyle = this.fillColor;
1366
- if (this.background) ctx.drawImage(this.background, 0, 0, this.canvas.width, this.canvas.height);
1367
- else ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);
1368
- ctx.globalCompositeOperation = 'destination-atop';
1369
- ctx.drawImage(results.image, 0, 0, this.canvas.width, this.canvas.height);
1370
- ctx.restore();
1371
- }
1372
- onFrame(results) {
1373
- this.canvas.width = results.image.width;
1374
- this.canvas.height = results.image.height;
1375
- const ctx = this.canvas.getContext('2d');
1376
- if (ctx) switch(this.type){
1377
- case 'blur':
1378
- this.drawWithBlur(ctx, results);
1379
- break;
1380
- case 'background':
1381
- this.drawWithBackground(ctx, results);
1382
- break;
1383
- default:
1384
- this.drawWithBlur(ctx, results);
1385
- }
1386
- }
1387
- runWithFrameCallback() {
1388
- if (this.live) this.image.requestVideoFrameCallback(()=>{
1389
- $0148b6fd862a22e8$var$selfieSegmentation.send({
1390
- image: this.image
1391
- });
1392
- this.runWithFrameCallback();
1393
- });
1394
- }
1395
- async createStream() {
1396
- try {
1397
- const option = {
1398
- selfieMode: false,
1399
- modelSelection: 0
1400
- };
1401
- $0148b6fd862a22e8$var$selfieSegmentation.setOptions(option);
1402
- $0148b6fd862a22e8$var$log.log('selfie segmentation initialized');
1403
- if (!$0148b6fd862a22e8$var$selfieSegmentationInitialized) {
1404
- await $0148b6fd862a22e8$var$selfieSegmentation.initialize();
1405
- $0148b6fd862a22e8$var$selfieSegmentationInitialized = true;
1406
- }
1407
- this.image.srcObject = this.stream;
1408
- this.image.onplay = async ()=>{
1409
- this.live = true;
1410
- try {
1411
- $0148b6fd862a22e8$var$selfieSegmentation.onResults((res)=>{
1412
- this.onFrame(res);
1413
- });
1414
- this.timerWorker.onmessage = ()=>{
1415
- $0148b6fd862a22e8$var$selfieSegmentation.send({
1416
- image: this.image
1417
- });
1418
- };
1419
- this.timerWorker.postMessage({
1420
- action: 'start',
1421
- params: this.fps
1422
- });
1423
- } catch (err) {
1424
- $0148b6fd862a22e8$var$log.error('createStream:play', err);
1425
- }
1426
- };
1427
- } catch (err) {
1428
- console.error('createStream', err);
1429
- }
1430
- return this.canvas.captureStream();
1431
- }
1432
- clean() {
1433
- return new Promise((resolve)=>{
1434
- this.live = false;
1435
- this.stream.removeTrack(this.stream.getTracks()[0]);
1436
- clearInterval(this.runInterval);
1437
- this.image.srcObject = null;
1438
- this.timerWorker.terminate();
1439
- resolve();
1440
- });
1441
- }
1442
- printState() {
1443
- console.log('MediaPipe', {
1444
- stream: this.stream.id,
1445
- type: this.type,
1446
- live: this.live
1447
- });
1448
- this.stream.getTracks().forEach((track)=>{
1449
- (0, $ab40fd7a219a4259$export$ba898f35a9cd5eb4)(track, `linked to MediaPipe.stream ${this.stream.id}`);
1450
- });
1451
- }
1452
- }
1453
-
1454
-
1455
- const $107ba89b5d0109ab$var$audioContextConstructor = window.AudioContext || window.webkitAudioContext;
1456
- class $107ba89b5d0109ab$export$22ddc20344c01547 {
1457
- constructor(){
1458
- this.audioSources = {};
1459
- this.tracks = {};
1460
- this.audioContext = new $107ba89b5d0109ab$var$audioContextConstructor();
1461
- this.audioDestination = this.audioContext.createMediaStreamDestination();
1462
- }
1463
- getSetting(identifier) {
1464
- return this.tracks[identifier]?.getSettings();
1465
- }
1466
- removeTrack(identifier) {
1467
- const track = this.tracks[identifier];
1468
- if (track) {
1469
- this.audioSources[identifier]?.disconnect();
1470
- delete this.tracks[identifier];
1471
- delete this.audioSources[identifier];
1472
- track.enabled = false;
1473
- }
1474
- }
1475
- setTrackEnabled(identifier, enabled) {
1476
- const track = this.tracks[identifier];
1477
- if (track) track.enabled = enabled;
1478
- else console.warn(`Track ${identifier} not found`);
1479
- }
1480
- addTrack(identifier, track) {
1481
- if (track.kind === 'audio') {
1482
- this.removeTrack(identifier);
1483
- const stream = new MediaStream([
1484
- track
1485
- ]);
1486
- const audioSource = this.audioContext.createMediaStreamSource(stream);
1487
- this.audioSources[identifier] = audioSource;
1488
- this.tracks[identifier] = track;
1489
- this.tracks[identifier].enabled = true;
1490
- if (this.audioDestination) audioSource.connect(this.audioDestination);
1491
- }
1492
- }
1493
- getFinalTrack() {
1494
- return this.audioDestination.stream.getTracks()[0];
1495
- }
1496
- removeAll() {
1497
- Object.keys(this.tracks).forEach((identifier)=>{
1498
- this.removeTrack(identifier);
1499
- });
1500
- }
1501
- }
1502
-
1503
-
1504
-
1505
- const $8c9dca4cd56e4637$export$8a48322ecc4782be = async (url, streamToken, file)=>{
1506
- const searchParams = new URLSearchParams({
1507
- filename: file
1508
- });
1509
- const result = await fetch(`${url}/public/streams/${streamToken}/temporary-assets?${searchParams}`, {
1510
- method: 'get',
1511
- headers: {
1512
- 'Content-Type': 'application/json'
1513
- }
1514
- }).then((response)=>response.json());
1515
- return result;
1516
- };
1517
- const $8c9dca4cd56e4637$export$df987b50509121ea = async (url, streamToken, file)=>{
1518
- const searchParams = new URLSearchParams({
1519
- filename: file
1520
- });
1521
- const result = await fetch(`${url}/public/streams/${streamToken}/temporary-assets?${searchParams}`, {
1522
- method: 'delete',
1523
- headers: {
1524
- 'Content-Type': 'application/json'
1525
- }
1526
- }).then((response)=>response.json());
1527
- return result;
1528
- };
1529
-
1530
-
1531
-
1532
- var $2114f1d49575b676$require$Buffer = $3Sbms$Buffer;
1533
- const $2114f1d49575b676$export$bfc52a1c1f84ba66 = async (apiUrl, { token: token, base64Image: base64Image, recordingGroup: recordingGroup })=>{
1534
- const file = `${(0, $3Sbms$v4)()}.jpeg`;
1535
- const uploadBody = $2114f1d49575b676$require$Buffer.from(String(base64Image).replace(/^data:image\/\w+;base64,/, ''), 'base64');
1536
- const { url: url, headers: headers, filename: filename } = await fetch(`${apiUrl}/public/streams/${token}/events/upload`, {
1537
- method: 'POST',
1538
- headers: {
1539
- 'Content-Type': 'application/json'
1540
- },
1541
- body: JSON.stringify({
1542
- type: 'image',
1543
- filename: file,
1544
- contentLength: uploadBody.length,
1545
- recordingGroup: recordingGroup
1546
- })
1547
- }).then((res)=>res.json());
1548
- await fetch(url, {
1549
- method: 'PUT',
1550
- headers: {
1551
- ...headers,
1552
- 'Content-Type': 'image/*',
1553
- 'Content-Length': uploadBody.length
1554
- },
1555
- body: uploadBody
1556
- });
1557
- const { url: assetUrl } = await (0, $8c9dca4cd56e4637$export$8a48322ecc4782be)(apiUrl, token, filename);
1558
- return {
1559
- filename: filename,
1560
- url: assetUrl
1561
- };
1562
- };
1563
-
1564
-
1565
- const $120418cdeb6706cf$export$de363e709c412c8a = (fn, wait = 300)=>{
1566
- let inThrottle, lastFn, lastTime;
1567
- return function() {
1568
- const context = this, args = arguments;
1569
- if (!inThrottle) {
1570
- fn.apply(context, args);
1571
- lastTime = Date.now();
1572
- inThrottle = true;
1573
- } else {
1574
- clearTimeout(lastFn);
1575
- lastFn = setTimeout(()=>{
1576
- if (Date.now() - lastTime >= wait) {
1577
- fn.apply(context, args);
1578
- lastTime = Date.now();
1579
- }
1580
- }, Math.max(wait - (Date.now() - lastTime), 0));
1581
- }
1582
- };
1583
- };
1584
-
1585
-
1586
-
1587
-
1588
- const $07e4bc01ab825269$export$6ad2c48011488f7 = async (apiUrl, { file: file, token: token, type: type, recordingGroup: recordingGroup })=>{
1589
- if (!file) throw new Error(`Missing file on "${file}"`);
1590
- const upload = await fetch(`${apiUrl}/public/streams/${token}/events/upload`, {
1591
- method: 'POST',
1592
- headers: {
1593
- 'Content-Type': 'application/json'
1594
- },
1595
- body: JSON.stringify({
1596
- filename: file.name,
1597
- contentLength: file.size,
1598
- type: type,
1599
- recordingGroup: recordingGroup
1600
- })
1601
- });
1602
- const { url: url, headers: headers, filename: filename } = await upload.json();
1603
- const uploadResponse = await fetch(url, {
1604
- method: 'PUT',
1605
- headers: {
1606
- ...headers,
1607
- 'Content-Type': file.type,
1608
- 'Content-Length': String(file.size)
1609
- },
1610
- body: file
1611
- });
1612
- const { url: assetUrl } = await (0, $8c9dca4cd56e4637$export$8a48322ecc4782be)(apiUrl, token, filename);
1613
- if (!uploadResponse.ok) throw new Error('Upload failed');
1614
- return {
1615
- filename: filename,
1616
- url: assetUrl
1617
- };
1618
- };
1619
-
1620
-
1621
- const $7a4afee3d30fe755$export$c30017717ce2168e = async (apiUrl, token, asset)=>{
1622
- const event = await fetch(`${apiUrl}/public/streams/${token}/events/batch`, {
1623
- method: 'POST',
1624
- headers: {
1625
- 'Content-Type': 'application/json'
1626
- },
1627
- body: JSON.stringify({
1628
- medias: asset
1629
- })
1630
- });
1631
- if (event.ok) return event.json();
1632
- throw new Error(` request failed ${event.status} `);
1633
- };
1634
-
1635
-
1636
-
1637
-
1638
- const $47936294be4c1914$var$log = new (0, $0f65a9eaf4a1e910$export$2e2bcd8739ae039)('TransportMonitor');
1639
- const $47936294be4c1914$var$debugLevel = {
1640
- audio: 0,
1641
- video: 0,
1642
- 'ice-network': 0,
1643
- 'outbound-rtp': 0
1644
- };
1645
- const $47936294be4c1914$var$DURATION_MS = 3000;
1646
- const $47936294be4c1914$var$MONITOR_INTERVAL_DURATION_MS = 200;
1647
- const $47936294be4c1914$var$TICK_MAX = $47936294be4c1914$var$DURATION_MS / $47936294be4c1914$var$MONITOR_INTERVAL_DURATION_MS;
1648
- const $47936294be4c1914$var$RTX_PERCENT_THRESHOLD = 30;
1649
- const $47936294be4c1914$var$RTT_MS_THRESHOLD = 400;
1650
- const $47936294be4c1914$var$transportStatTypes = [
1651
- 'audio',
1652
- 'video',
1653
- 'ice-network',
1654
- 'outbound-rtp'
1655
- ];
1656
- class $47936294be4c1914$export$2e2bcd8739ae039 {
1657
- constructor(transport, listener, description){
1658
- this.tick = 0;
1659
- this.activeMonitors = {
1660
- audio: false,
1661
- video: false,
1662
- 'ice-network': false,
1663
- 'outbound-rtp': false
1664
- };
1665
- this.activeMonitorsCount = 0;
1666
- this.monitorFuncs = {
1667
- audio: this.monitorAudio.bind(this),
1668
- video: this.monitorVideo.bind(this),
1669
- 'ice-network': this.monitorIceNetwork.bind(this),
1670
- 'outbound-rtp': this.monitorOutboundRtp.bind(this)
1671
- };
1672
- this.isConnected = false;
1673
- this.issues = 0;
1674
- // ice disconnections
1675
- this.disconnectsCount = 0;
1676
- this.disconnectsThreshold = 4;
1677
- // RTT
1678
- this.allTimeAverageRTT = 0;
1679
- this.lastStateRttOk = true;
1680
- // RTX for all media sources
1681
- this.mediaSourceStats = {};
1682
- this.transport = transport;
1683
- this.description = description;
1684
- this.listener = listener;
1685
- this.transport.on('connectionstatechange', this.onConnectionStateChange.bind(this));
1686
- this.recentRTTs = new Array($47936294be4c1914$var$TICK_MAX).fill(0);
1506
+
1507
+ const $47936294be4c1914$var$log = new (0, $0f65a9eaf4a1e910$export$2e2bcd8739ae039)('TransportMonitor');
1508
+ const $47936294be4c1914$var$debugLevel = {
1509
+ audio: 0,
1510
+ video: 0,
1511
+ 'ice-network': 0,
1512
+ 'outbound-rtp': 0
1513
+ };
1514
+ const $47936294be4c1914$var$DURATION_MS = 3000;
1515
+ const $47936294be4c1914$var$MONITOR_INTERVAL_DURATION_MS = 200;
1516
+ const $47936294be4c1914$var$TICK_MAX = $47936294be4c1914$var$DURATION_MS / $47936294be4c1914$var$MONITOR_INTERVAL_DURATION_MS;
1517
+ const $47936294be4c1914$var$RTX_PERCENT_THRESHOLD = 30;
1518
+ const $47936294be4c1914$var$RTT_MS_THRESHOLD = 400;
1519
+ const $47936294be4c1914$var$transportStatTypes = [
1520
+ 'audio',
1521
+ 'video',
1522
+ 'ice-network',
1523
+ 'outbound-rtp'
1524
+ ];
1525
+ class $47936294be4c1914$export$2e2bcd8739ae039 {
1526
+ constructor(transport, listener, description){
1527
+ this.tick = 0;
1528
+ this.activeMonitors = {
1529
+ audio: false,
1530
+ video: false,
1531
+ 'ice-network': false,
1532
+ 'outbound-rtp': false
1533
+ };
1534
+ this.activeMonitorsCount = 0;
1535
+ this.monitorFuncs = {
1536
+ audio: this.monitorAudio.bind(this),
1537
+ video: this.monitorVideo.bind(this),
1538
+ 'ice-network': this.monitorIceNetwork.bind(this),
1539
+ 'outbound-rtp': this.monitorOutboundRtp.bind(this)
1540
+ };
1541
+ this.isConnected = false;
1542
+ this.issues = 0;
1543
+ // ice disconnections
1544
+ this.disconnectsCount = 0;
1545
+ this.disconnectsThreshold = 4;
1546
+ // RTT
1547
+ this.allTimeAverageRTT = 0;
1548
+ this.lastStateRttOk = true;
1549
+ // RTX for all media sources
1550
+ this.mediaSourceStats = {};
1551
+ this.transport = transport;
1552
+ this.description = description;
1553
+ this.listener = listener;
1554
+ this.transport.on('connectionstatechange', this.onConnectionStateChange.bind(this));
1555
+ this.recentRTTs = new Array($47936294be4c1914$var$TICK_MAX).fill(0);
1687
1556
  }
1688
1557
  isTransportConnected() {
1689
1558
  return this.isConnected;
@@ -1851,107 +1720,259 @@ class $47936294be4c1914$export$2e2bcd8739ae039 {
1851
1720
  this.updateTransportState({
1852
1721
  isRttOk: isRttOk
1853
1722
  });
1854
- this.lastStateRttOk = isRttOk;
1855
- }
1856
- if (rttAverageMs > 250) this.listener?.onNetworkLog(this.transport, {
1857
- rtt: rttAverageMs
1723
+ this.lastStateRttOk = isRttOk;
1724
+ }
1725
+ if (rttAverageMs > 250) this.listener?.onNetworkLog(this.transport, {
1726
+ rtt: rttAverageMs
1727
+ });
1728
+ if ($47936294be4c1914$var$debugLevel['ice-network'] >= 1) {
1729
+ console.log(`Last ${$47936294be4c1914$var$DURATION_MS}ms average RTT: ${rttAverageMs}ms`, `\nAll time average RTT: ${this.allTimeAverageRTT}ms`);
1730
+ if (!isRttOk) console.warn(`High RTT detected:`, rttAverageMs);
1731
+ }
1732
+ }
1733
+ async monitorOutboundRtp() {
1734
+ if (!this.rtcStatsReports) return;
1735
+ this.rtcStatsReports.forEach((stat)=>{
1736
+ if (stat.type === 'outbound-rtp') {
1737
+ if (!stat.ssrc || !stat.kind || stat.packetsSent === undefined || stat.retransmittedPacketsSent === undefined) {
1738
+ $47936294be4c1914$var$log.error('monitorOutboundRtp', `Missing data in the stats report for transport ${this.transport.id}.\nStoppping monitoring.`);
1739
+ this.stopMonitoring([
1740
+ 'outbound-rtp'
1741
+ ]);
1742
+ return;
1743
+ }
1744
+ if ($47936294be4c1914$var$debugLevel['outbound-rtp'] >= 2) console.log(`Outbound RTP stats for transport (description: ${this.description}):
1745
+ - ssrc: ${stat.ssrc}
1746
+ - kind: ${stat.kind}
1747
+ - packets sent: ${stat.packetsSent}
1748
+ - packets rtx: ${stat.retransmittedPacketsSent}
1749
+ - retransmission %: ${100 * stat.retransmittedPacketsSent / stat.packetsSent}
1750
+ - sli count: ${stat.sliCount}
1751
+ - nack count: ${stat.nackCount}`);
1752
+ if (!this.mediaSourceStats[stat.ssrc]) this.mediaSourceStats[stat.ssrc] = {
1753
+ ssrc: stat.ssrc,
1754
+ kind: stat.kind,
1755
+ averagesRtxPercent: [],
1756
+ recentPacketsSent: new Array($47936294be4c1914$var$TICK_MAX).fill(0),
1757
+ recentPacketsRtx: new Array($47936294be4c1914$var$TICK_MAX).fill(0),
1758
+ lastStateRtxOK: true
1759
+ };
1760
+ const mss = this.mediaSourceStats[stat.ssrc];
1761
+ mss.recentPacketsSent[this.tick] = stat.packetsSent;
1762
+ mss.recentPacketsRtx[this.tick] = stat.retransmittedPacketsSent;
1763
+ }
1764
+ });
1765
+ if (this.tick === 0) Object.values(this.mediaSourceStats).forEach((mss)=>{
1766
+ this.checkOutboundRtp(mss);
1767
+ });
1768
+ }
1769
+ checkOutboundRtp(mss) {
1770
+ const oldestTick = (this.tick + 1) % $47936294be4c1914$var$TICK_MAX;
1771
+ const packetsSentSum = mss.recentPacketsSent[this.tick] - mss.recentPacketsSent[oldestTick];
1772
+ const packetsRtxSum = mss.recentPacketsRtx[this.tick] - mss.recentPacketsRtx[oldestTick];
1773
+ const rtxPercent = packetsSentSum === 0 ? 0 : 100 * packetsRtxSum / packetsSentSum;
1774
+ const rtxPercentAllTime = 100 * mss.recentPacketsRtx[this.tick] / mss.recentPacketsSent[this.tick];
1775
+ mss.averagesRtxPercent.push(rtxPercent);
1776
+ const isRtxOk = Boolean(rtxPercent <= $47936294be4c1914$var$RTX_PERCENT_THRESHOLD);
1777
+ if (isRtxOk !== mss.lastStateRtxOK) {
1778
+ console.warn(`Transport: ${this.transport.id}\n[ssrc ${mss.ssrc} ${mss.kind || '?'}] RTX state changed to:`, isRtxOk);
1779
+ this.updateTransportState({
1780
+ isRtxOk: isRtxOk
1781
+ });
1782
+ }
1783
+ mss.lastStateRtxOK = isRtxOk;
1784
+ if (!isRtxOk) this.listener?.onNetworkLog(this.transport, {
1785
+ rtxPercent: rtxPercent,
1786
+ kind: mss.kind
1787
+ });
1788
+ if ($47936294be4c1914$var$debugLevel['outbound-rtp'] >= 1) {
1789
+ console.log(`[ssrc ${mss.ssrc} ${mss.kind || '?'}] For the last ${$47936294be4c1914$var$DURATION_MS}ms:
1790
+ - packets sent: ${packetsSentSum}
1791
+ - packets rtx: ${packetsRtxSum}
1792
+ - rtx %: ${Math.round(100 * rtxPercent) / 100}`, `\nAll time average rtx %:`, Math.round(100 * rtxPercentAllTime) / 100);
1793
+ if (!isRtxOk) console.warn(`High ${mss.kind || ''} packets rtx % detected:`, Math.round(100 * rtxPercent) / 100);
1794
+ }
1795
+ }
1796
+ }
1797
+
1798
+
1799
+ const $8c39e5124b37cb3b$export$e1228c246580bf68 = async (apiUrl, token, recordingGroup)=>{
1800
+ const answer = await fetch(`${apiUrl}/public/streams/${token}/live/${recordingGroup}`, {
1801
+ method: 'GET',
1802
+ headers: {
1803
+ 'Content-Type': 'application/json'
1804
+ }
1805
+ });
1806
+ if (answer.ok) return answer.json();
1807
+ throw new Error(` request failed ${answer.status} `);
1808
+ };
1809
+
1810
+
1811
+
1812
+
1813
+
1814
+
1815
+
1816
+ const $0148b6fd862a22e8$var$log = new (0, $0f65a9eaf4a1e910$export$2e2bcd8739ae039)('MediaPipe');
1817
+ const $0148b6fd862a22e8$var$mediapipeUrl = "https://stream-assets.snapcall.io";
1818
+ let $0148b6fd862a22e8$var$selfieSegmentationInitialized = false;
1819
+ const $0148b6fd862a22e8$var$selfieSegmentation = new $3Sbms$SelfieSegmentation({
1820
+ locateFile: (file, prefix)=>{
1821
+ $0148b6fd862a22e8$var$log.debug('selfieSegmentation', file, prefix);
1822
+ if ($0148b6fd862a22e8$var$mediapipeUrl) return `${$0148b6fd862a22e8$var$mediapipeUrl}/mediapipe/${file}`;
1823
+ const url = window.location.href;
1824
+ const path = url.split('/').slice(0, -1).join('/');
1825
+ return `${path}/mediapipe/${file}`;
1826
+ }
1827
+ });
1828
+ class $0148b6fd862a22e8$export$2e2bcd8739ae039 {
1829
+ constructor(stream, options){
1830
+ this.fillColor = '#000000';
1831
+ this.type = 'blur';
1832
+ this.live = false;
1833
+ this.fps = 24;
1834
+ this.blurLevel = 10;
1835
+ this.timerWorker = new Worker(new URL("timer.43cfcbcc.js", import.meta.url), {
1836
+ name: 'VirtualBackgroundTimerWorker'
1837
+ });
1838
+ this.stream = new MediaStream();
1839
+ this.stream.addTrack(stream.getVideoTracks()[0]);
1840
+ this.image = document.createElement('video');
1841
+ this.image.style.display = 'none';
1842
+ this.image.setAttribute('autoplay', '');
1843
+ this.image.setAttribute('playsinline', '');
1844
+ this.image.setAttribute('muted', '');
1845
+ this.canvas = document.createElement('canvas');
1846
+ this.canvas.style.display = 'none';
1847
+ if (options) this.setOptions(options);
1848
+ }
1849
+ setOptions(options) {
1850
+ this.setType(options.type);
1851
+ this.setFillColor(options.fillColor || this.fillColor);
1852
+ this.setVideoBackground(options.background);
1853
+ this.setBlurLevel(options.blurLevel || this.blurLevel);
1854
+ }
1855
+ setType(type) {
1856
+ this.type = type;
1857
+ }
1858
+ setBlurLevel(level) {
1859
+ this.blurLevel = level;
1860
+ }
1861
+ setVideoBackground(data) {
1862
+ this.background = data;
1863
+ }
1864
+ setFillColor(color) {
1865
+ this.fillColor = color;
1866
+ }
1867
+ drawWithBlur(ctx, results) {
1868
+ ctx.save();
1869
+ ctx.drawImage(results.image, 0, 0, this.canvas.width, this.canvas.height);
1870
+ ctx.globalCompositeOperation = 'destination-atop';
1871
+ ctx.drawImage(results.segmentationMask, 0, 0, this.canvas.width, this.canvas.height);
1872
+ // Blur the context for all subsequent draws then set the raw image as the background
1873
+ ctx.filter = `blur(${this.blurLevel}px)`;
1874
+ ctx.globalCompositeOperation = 'destination-over';
1875
+ ctx.drawImage(results.image, 0, 0, this.canvas.width, this.canvas.height);
1876
+ // Restore the context's blank state
1877
+ ctx.restore();
1878
+ }
1879
+ drawWithBackground(ctx, results) {
1880
+ ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
1881
+ ctx.drawImage(results.segmentationMask, 0, 0, this.canvas.width, this.canvas.height);
1882
+ ctx.globalCompositeOperation = 'source-out';
1883
+ ctx.fillStyle = this.fillColor;
1884
+ if (this.background) ctx.drawImage(this.background, 0, 0, this.canvas.width, this.canvas.height);
1885
+ else ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);
1886
+ ctx.globalCompositeOperation = 'destination-atop';
1887
+ ctx.drawImage(results.image, 0, 0, this.canvas.width, this.canvas.height);
1888
+ ctx.restore();
1889
+ }
1890
+ onFrame(results) {
1891
+ this.canvas.width = results.image.width;
1892
+ this.canvas.height = results.image.height;
1893
+ const ctx = this.canvas.getContext('2d');
1894
+ if (ctx) switch(this.type){
1895
+ case 'blur':
1896
+ this.drawWithBlur(ctx, results);
1897
+ break;
1898
+ case 'background':
1899
+ this.drawWithBackground(ctx, results);
1900
+ break;
1901
+ default:
1902
+ this.drawWithBlur(ctx, results);
1903
+ }
1904
+ }
1905
+ runWithFrameCallback() {
1906
+ if (this.live) this.image.requestVideoFrameCallback(()=>{
1907
+ $0148b6fd862a22e8$var$selfieSegmentation.send({
1908
+ image: this.image
1909
+ });
1910
+ this.runWithFrameCallback();
1858
1911
  });
1859
- if ($47936294be4c1914$var$debugLevel['ice-network'] >= 1) {
1860
- console.log(`Last ${$47936294be4c1914$var$DURATION_MS}ms average RTT: ${rttAverageMs}ms`, `\nAll time average RTT: ${this.allTimeAverageRTT}ms`);
1861
- if (!isRttOk) console.warn(`High RTT detected:`, rttAverageMs);
1862
- }
1863
1912
  }
1864
- async monitorOutboundRtp() {
1865
- if (!this.rtcStatsReports) return;
1866
- this.rtcStatsReports.forEach((stat)=>{
1867
- if (stat.type === 'outbound-rtp') {
1868
- if (!stat.ssrc || !stat.kind || stat.packetsSent === undefined || stat.retransmittedPacketsSent === undefined) {
1869
- $47936294be4c1914$var$log.error('monitorOutboundRtp', `Missing data in the stats report for transport ${this.transport.id}.\nStoppping monitoring.`);
1870
- this.stopMonitoring([
1871
- 'outbound-rtp'
1872
- ]);
1873
- return;
1874
- }
1875
- if ($47936294be4c1914$var$debugLevel['outbound-rtp'] >= 2) console.log(`Outbound RTP stats for transport (description: ${this.description}):
1876
- - ssrc: ${stat.ssrc}
1877
- - kind: ${stat.kind}
1878
- - packets sent: ${stat.packetsSent}
1879
- - packets rtx: ${stat.retransmittedPacketsSent}
1880
- - retransmission %: ${100 * stat.retransmittedPacketsSent / stat.packetsSent}
1881
- - sli count: ${stat.sliCount}
1882
- - nack count: ${stat.nackCount}`);
1883
- if (!this.mediaSourceStats[stat.ssrc]) this.mediaSourceStats[stat.ssrc] = {
1884
- ssrc: stat.ssrc,
1885
- kind: stat.kind,
1886
- averagesRtxPercent: [],
1887
- recentPacketsSent: new Array($47936294be4c1914$var$TICK_MAX).fill(0),
1888
- recentPacketsRtx: new Array($47936294be4c1914$var$TICK_MAX).fill(0),
1889
- lastStateRtxOK: true
1890
- };
1891
- const mss = this.mediaSourceStats[stat.ssrc];
1892
- mss.recentPacketsSent[this.tick] = stat.packetsSent;
1893
- mss.recentPacketsRtx[this.tick] = stat.retransmittedPacketsSent;
1913
+ async createStream() {
1914
+ try {
1915
+ const option = {
1916
+ selfieMode: false,
1917
+ modelSelection: 0
1918
+ };
1919
+ $0148b6fd862a22e8$var$selfieSegmentation.setOptions(option);
1920
+ $0148b6fd862a22e8$var$log.log('selfie segmentation initialized');
1921
+ if (!$0148b6fd862a22e8$var$selfieSegmentationInitialized) {
1922
+ await $0148b6fd862a22e8$var$selfieSegmentation.initialize();
1923
+ $0148b6fd862a22e8$var$selfieSegmentationInitialized = true;
1894
1924
  }
1895
- });
1896
- if (this.tick === 0) Object.values(this.mediaSourceStats).forEach((mss)=>{
1897
- this.checkOutboundRtp(mss);
1925
+ this.image.srcObject = this.stream;
1926
+ this.image.onplay = async ()=>{
1927
+ this.live = true;
1928
+ try {
1929
+ $0148b6fd862a22e8$var$selfieSegmentation.onResults((res)=>{
1930
+ this.onFrame(res);
1931
+ });
1932
+ this.timerWorker.onmessage = ()=>{
1933
+ $0148b6fd862a22e8$var$selfieSegmentation.send({
1934
+ image: this.image
1935
+ });
1936
+ };
1937
+ this.timerWorker.postMessage({
1938
+ action: 'start',
1939
+ params: this.fps
1940
+ });
1941
+ } catch (err) {
1942
+ $0148b6fd862a22e8$var$log.error('createStream:play', err);
1943
+ }
1944
+ };
1945
+ } catch (err) {
1946
+ console.error('createStream', err);
1947
+ }
1948
+ return this.canvas.captureStream();
1949
+ }
1950
+ clean() {
1951
+ return new Promise((resolve)=>{
1952
+ this.live = false;
1953
+ this.stream.removeTrack(this.stream.getTracks()[0]);
1954
+ clearInterval(this.runInterval);
1955
+ this.image.srcObject = null;
1956
+ this.timerWorker.terminate();
1957
+ resolve();
1898
1958
  });
1899
1959
  }
1900
- checkOutboundRtp(mss) {
1901
- const oldestTick = (this.tick + 1) % $47936294be4c1914$var$TICK_MAX;
1902
- const packetsSentSum = mss.recentPacketsSent[this.tick] - mss.recentPacketsSent[oldestTick];
1903
- const packetsRtxSum = mss.recentPacketsRtx[this.tick] - mss.recentPacketsRtx[oldestTick];
1904
- const rtxPercent = packetsSentSum === 0 ? 0 : 100 * packetsRtxSum / packetsSentSum;
1905
- const rtxPercentAllTime = 100 * mss.recentPacketsRtx[this.tick] / mss.recentPacketsSent[this.tick];
1906
- mss.averagesRtxPercent.push(rtxPercent);
1907
- const isRtxOk = Boolean(rtxPercent <= $47936294be4c1914$var$RTX_PERCENT_THRESHOLD);
1908
- if (isRtxOk !== mss.lastStateRtxOK) {
1909
- console.warn(`Transport: ${this.transport.id}\n[ssrc ${mss.ssrc} ${mss.kind || '?'}] RTX state changed to:`, isRtxOk);
1910
- this.updateTransportState({
1911
- isRtxOk: isRtxOk
1912
- });
1913
- }
1914
- mss.lastStateRtxOK = isRtxOk;
1915
- if (!isRtxOk) this.listener?.onNetworkLog(this.transport, {
1916
- rtxPercent: rtxPercent,
1917
- kind: mss.kind
1960
+ printState() {
1961
+ console.log('MediaPipe', {
1962
+ stream: this.stream.id,
1963
+ type: this.type,
1964
+ live: this.live
1965
+ });
1966
+ this.stream.getTracks().forEach((track)=>{
1967
+ (0, $ab40fd7a219a4259$export$ba898f35a9cd5eb4)(track, `linked to MediaPipe.stream ${this.stream.id}`);
1918
1968
  });
1919
- if ($47936294be4c1914$var$debugLevel['outbound-rtp'] >= 1) {
1920
- console.log(`[ssrc ${mss.ssrc} ${mss.kind || '?'}] For the last ${$47936294be4c1914$var$DURATION_MS}ms:
1921
- - packets sent: ${packetsSentSum}
1922
- - packets rtx: ${packetsRtxSum}
1923
- - rtx %: ${Math.round(100 * rtxPercent) / 100}`, `\nAll time average rtx %:`, Math.round(100 * rtxPercentAllTime) / 100);
1924
- if (!isRtxOk) console.warn(`High ${mss.kind || ''} packets rtx % detected:`, Math.round(100 * rtxPercent) / 100);
1925
- }
1926
1969
  }
1927
1970
  }
1928
1971
 
1929
1972
 
1930
- const $8c39e5124b37cb3b$export$e1228c246580bf68 = async (apiUrl, token, recordingGroup)=>{
1931
- const answer = await fetch(`${apiUrl}/public/streams/${token}/live/${recordingGroup}`, {
1932
- method: 'GET',
1933
- headers: {
1934
- 'Content-Type': 'application/json'
1935
- }
1936
- });
1937
- if (answer.ok) return answer.json();
1938
- throw new Error(` request failed ${answer.status} `);
1939
- };
1940
-
1941
1973
 
1942
- const $c31e3fb4360572af$var$log = new (0, $0f65a9eaf4a1e910$export$2e2bcd8739ae039)('StreamerClient');
1943
- $c31e3fb4360572af$var$log.info('StreamerClient', 'test');
1944
- const $c31e3fb4360572af$export$103bedf43ba882db = {
1945
- WEBRTC_FAILED: 'WRTC1',
1946
- WEBRTC_RECOVER_ERROR: 'WRTC2',
1947
- WEBRTC_BAD_STATE_ERROR: 'WRTC3',
1948
- CREATE_TRANSPORT_FAILED: 'TRANS1',
1949
- CONSUME_ERROR: 'CONS1',
1950
- SOCKET_LOST: 'SOCK1',
1951
- USER_LIMIT: 'USERLIMIT'
1952
- };
1953
- const $c31e3fb4360572af$var$SENTRY_WHITELIST_ERROR_CAUSE = 'getUserMedia error';
1954
- const $c31e3fb4360572af$export$d21ffcc5eb136bfa = {
1974
+ const $f1b448a7dd8f8e1c$var$log = new (0, $0f65a9eaf4a1e910$export$2e2bcd8739ae039)('Camera');
1975
+ const $f1b448a7dd8f8e1c$export$d21ffcc5eb136bfa = {
1955
1976
  qvga: {
1956
1977
  width: {
1957
1978
  ideal: 320
@@ -1959,6 +1980,10 @@ const $c31e3fb4360572af$export$d21ffcc5eb136bfa = {
1959
1980
  height: {
1960
1981
  ideal: 240
1961
1982
  },
1983
+ format: [
1984
+ 4,
1985
+ 3
1986
+ ],
1962
1987
  qualityIndex: 3
1963
1988
  },
1964
1989
  vga: {
@@ -1968,6 +1993,10 @@ const $c31e3fb4360572af$export$d21ffcc5eb136bfa = {
1968
1993
  height: {
1969
1994
  ideal: 480
1970
1995
  },
1996
+ format: [
1997
+ 4,
1998
+ 3
1999
+ ],
1971
2000
  qualityIndex: 2
1972
2001
  },
1973
2002
  hd: {
@@ -1977,6 +2006,10 @@ const $c31e3fb4360572af$export$d21ffcc5eb136bfa = {
1977
2006
  height: {
1978
2007
  ideal: 720
1979
2008
  },
2009
+ format: [
2010
+ 16,
2011
+ 9
2012
+ ],
1980
2013
  qualityIndex: 1
1981
2014
  },
1982
2015
  background: {
@@ -1987,8 +2020,220 @@ const $c31e3fb4360572af$export$d21ffcc5eb136bfa = {
1987
2020
  ideal: 400
1988
2021
  },
1989
2022
  qualityIndex: 2
2023
+ },
2024
+ max: {
2025
+ width: {
2026
+ ideal: 4096
2027
+ },
2028
+ height: {
2029
+ ideal: 2160
2030
+ },
2031
+ qualityIndex: 0
2032
+ }
2033
+ };
2034
+ const $f1b448a7dd8f8e1c$var$defaultMediapipeOptions = {
2035
+ background: undefined,
2036
+ fillColor: '#ffffff',
2037
+ type: 'blur',
2038
+ blurLevel: 10
2039
+ };
2040
+ class $f1b448a7dd8f8e1c$export$79f141de891a5fed {
2041
+ constructor(trackHandler){
2042
+ this.webcamZoom = {
2043
+ available: false,
2044
+ min: 0,
2045
+ max: 0
2046
+ };
2047
+ this.trackConstraint = {
2048
+ advanced: []
2049
+ };
2050
+ this.getUserMediaConstraint = {};
2051
+ this.capabilities = {};
2052
+ this.scaling = 1;
2053
+ this.mediaPipeOption = $f1b448a7dd8f8e1c$var$defaultMediapipeOptions;
2054
+ this.useVideoBackground = false;
2055
+ this.trackHandler = trackHandler;
2056
+ this.webcams = new Map();
2057
+ this.webcam = {
2058
+ device: null,
2059
+ resolution: 'hd',
2060
+ framerate: 25
2061
+ };
2062
+ }
2063
+ async updateWebcams() {
2064
+ this.webcams = new Map();
2065
+ const devices = await navigator.mediaDevices.enumerateDevices();
2066
+ for (const device of devices){
2067
+ if (device.kind !== 'videoinput') continue;
2068
+ this.webcams.set(device.deviceId, device);
2069
+ }
2070
+ if (this.webcams.size === 0) this.webcam.device = null;
2071
+ else if (!this.webcam.device) this.webcam.device = this.webcams.values().next().value || null;
2072
+ const event = new (0, $c31e3fb4360572af$export$da085ff0f511c609)('webcamsUpdate', {
2073
+ detail: {
2074
+ numberOfAvailableWebcams: this.webcams.size
2075
+ }
2076
+ });
2077
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).dispatchEvent(event);
2078
+ }
2079
+ async enable(config) {
2080
+ await this.updateWebcams();
2081
+ const optionalParam = {};
2082
+ if (config?.rotate) {
2083
+ if (this.webcam.facingMode) {
2084
+ console.log('switch by facing mod');
2085
+ this.webcam.facingMode = this.webcam.facingMode === 'user' ? 'environment' : 'user';
2086
+ optionalParam.facingMode = this.webcam.facingMode;
2087
+ } else {
2088
+ const webcams = Array.from(this.webcams.keys());
2089
+ const deviceId = this.webcam?.device?.deviceId || 'unknown';
2090
+ let newWebcamIndex = webcams.indexOf(deviceId);
2091
+ newWebcamIndex = (newWebcamIndex + 1) % webcams.length;
2092
+ const newWebcamDevice = this.webcams.get(webcams[newWebcamIndex]);
2093
+ if (!newWebcamDevice) throw new Error(`webcam device at index ${newWebcamIndex} was not found`);
2094
+ this.webcam.device = newWebcamDevice;
2095
+ optionalParam.deviceId = {
2096
+ ideal: this.webcam.device?.deviceId
2097
+ };
2098
+ }
2099
+ } else if (config?.facingMode) {
2100
+ optionalParam.facingMode = config.facingMode;
2101
+ this.webcam.facingMode = config.facingMode;
2102
+ } else {
2103
+ if (config?.device) this.webcam.device = config.device;
2104
+ optionalParam.deviceId = {
2105
+ ideal: this.webcam.device?.deviceId
2106
+ };
2107
+ }
2108
+ if (!this.webcam.device) throw new Error('no webcam devices');
2109
+ this.webcam.resolution = config?.resolution || this.webcam.resolution || 'hd';
2110
+ this.webcam.framerate = config?.frameRate || this.webcam.framerate;
2111
+ let usedResolution = $f1b448a7dd8f8e1c$export$d21ffcc5eb136bfa[config?.resolution || this.webcam.resolution];
2112
+ if (this.useVideoBackground) usedResolution = $f1b448a7dd8f8e1c$export$d21ffcc5eb136bfa.background;
2113
+ this.getUserMediaConstraint = {
2114
+ frameRate: this.webcam.framerate,
2115
+ ...optionalParam,
2116
+ ...usedResolution
2117
+ };
2118
+ await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).processMediaPermissionsAndResolveRequests({
2119
+ video: this.getUserMediaConstraint
2120
+ }).catch((error)=>{
2121
+ throw new Error(error, {
2122
+ cause: (0, $c31e3fb4360572af$export$75139ad9ea82cac9)
2123
+ });
2124
+ });
2125
+ const media = this.trackHandler.video;
2126
+ if (!media?.stream || !media.track) throw new Error('enableVideo : no stream or video track');
2127
+ const trackSettings = media.track.getSettings();
2128
+ if (trackSettings.deviceId) this.webcam.device = this.webcams.get(trackSettings.deviceId) || null;
2129
+ if (config?.facingMode) try {
2130
+ if (!trackSettings.facingMode) throw new Error('no facing mode');
2131
+ } catch {
2132
+ this.webcam.facingMode = undefined;
2133
+ }
2134
+ if (this.useVideoBackground) {
2135
+ if (this.mediaPipe) await this.mediaPipe.clean();
2136
+ this.mediaPipe = new (0, $0148b6fd862a22e8$export$2e2bcd8739ae039)(media.stream, this.mediaPipeOption);
2137
+ }
2138
+ const stream = await this.mediaPipe?.createStream() || media.stream;
2139
+ await this.updateWebcams();
2140
+ const track = stream.getVideoTracks()[0];
2141
+ this.trackConstraint.advanced = [];
2142
+ track.enabled = true;
2143
+ const capabilities = await track.getCapabilities?.() || navigator.mediaDevices.getSupportedConstraints?.();
2144
+ if (this.webcamZoom.available) this.trackConstraint.advanced.push({
2145
+ zoom: this.webcamZoom.min
2146
+ });
2147
+ if (capabilities.focusMode) this.trackConstraint.advanced.push({
2148
+ focusMode: 'continuous'
2149
+ });
2150
+ this.applyConstraints();
2151
+ media.track.enabled = true;
2152
+ this.webcamZoom = {
2153
+ available: Boolean(capabilities?.zoom),
2154
+ min: capabilities?.zoom?.min || 0,
2155
+ max: capabilities?.zoom?.max || 0
2156
+ };
2157
+ return track;
2158
+ }
2159
+ async applyConstraints() {
2160
+ await this.trackHandler.video?.track?.applyConstraints({
2161
+ ...this.getUserMediaConstraint,
2162
+ ...this.trackConstraint
2163
+ }).catch((error)=>{
2164
+ $f1b448a7dd8f8e1c$var$log.error('applyConstraint', 'applyConstraints failed', error);
2165
+ });
2166
+ }
2167
+ setVideoBackground(options) {
2168
+ this.mediaPipe?.setOptions(options);
2169
+ this.mediaPipeOption = options;
2170
+ }
2171
+ scaleVideoMediasConstraintsParameter(scale) {
2172
+ this.scaling = scale;
2173
+ let videoResolution = $f1b448a7dd8f8e1c$export$d21ffcc5eb136bfa['hd'];
2174
+ if (scale === 2) videoResolution = $f1b448a7dd8f8e1c$export$d21ffcc5eb136bfa['vga'];
2175
+ else if (scale > 2) videoResolution = $f1b448a7dd8f8e1c$export$d21ffcc5eb136bfa['qvga'];
2176
+ if (!this.webcam.resolution || $f1b448a7dd8f8e1c$export$d21ffcc5eb136bfa[this.webcam.resolution].qualityIndex >= videoResolution.qualityIndex) {
2177
+ this.getUserMediaConstraint = {
2178
+ ...this.getUserMediaConstraint,
2179
+ ...videoResolution
2180
+ };
2181
+ $f1b448a7dd8f8e1c$var$log.log('scaleVideoMediasConstraintsParameter', `scaling video by ${scale}`, videoResolution);
2182
+ this.applyConstraints();
2183
+ }
2184
+ }
2185
+ async unzoomVideo() {
2186
+ if (!this.webcamZoom.available) throw new Error('Webcam zoom is not available');
2187
+ if (!this.trackHandler.video?.track) throw new Error('No webcam track available');
2188
+ const i = this.trackConstraint.advanced.findIndex((tc)=>tc.zoom);
2189
+ if (i !== -1) this.trackConstraint.advanced[i].zoom = this.webcamZoom.min;
2190
+ else this.trackConstraint.advanced.push({
2191
+ zoom: this.webcamZoom.min
2192
+ });
2193
+ this.applyConstraints();
1990
2194
  }
2195
+ async zoomVideo() {
2196
+ if (!this.webcamZoom.available) throw new Error('Webcam zoom is not available');
2197
+ if (!this.trackHandler.video?.track) throw new Error('No webcam track available');
2198
+ const i = this.trackConstraint.advanced.findIndex((tc)=>tc.zoom);
2199
+ if (i !== -1) this.trackConstraint.advanced[i].zoom = this.webcamZoom.min * 2;
2200
+ else this.trackConstraint.advanced.push({
2201
+ zoom: this.webcamZoom.min * 2
2202
+ });
2203
+ this.applyConstraints();
2204
+ }
2205
+ getState() {
2206
+ return {
2207
+ device: this.webcam.device,
2208
+ error: this.webcam.error
2209
+ };
2210
+ }
2211
+ cleanMediapipe() {
2212
+ if (this.mediaPipe) {
2213
+ this.useVideoBackground = false;
2214
+ this.mediaPipe.clean();
2215
+ this.mediaPipe = undefined;
2216
+ }
2217
+ }
2218
+ clean() {
2219
+ this.webcam.device = null;
2220
+ this.cleanMediapipe();
2221
+ }
2222
+ }
2223
+
2224
+
2225
+ const $c31e3fb4360572af$var$log = new (0, $0f65a9eaf4a1e910$export$2e2bcd8739ae039)('StreamerClient');
2226
+ $c31e3fb4360572af$var$log.info('StreamerClient', 'test');
2227
+ const $c31e3fb4360572af$export$103bedf43ba882db = {
2228
+ WEBRTC_FAILED: 'WRTC1',
2229
+ WEBRTC_RECOVER_ERROR: 'WRTC2',
2230
+ WEBRTC_BAD_STATE_ERROR: 'WRTC3',
2231
+ CREATE_TRANSPORT_FAILED: 'TRANS1',
2232
+ CONSUME_ERROR: 'CONS1',
2233
+ SOCKET_LOST: 'SOCK1',
2234
+ USER_LIMIT: 'USERLIMIT'
1991
2235
  };
2236
+ const $c31e3fb4360572af$export$75139ad9ea82cac9 = 'getUserMedia error';
1992
2237
  const $c31e3fb4360572af$var$ONE_TRANSPORT_FOR_ALL_MEDIAS = true;
1993
2238
  const $c31e3fb4360572af$var$WEBCAM_SIMULCAST_ENCODINGS = [
1994
2239
  {
@@ -2004,23 +2249,17 @@ const $c31e3fb4360572af$var$WEBCAM_SIMULCAST_ENCODINGS = [
2004
2249
  maxBitrate: 5000000
2005
2250
  }
2006
2251
  ];
2007
- class $c31e3fb4360572af$var$SnapcallEvent extends CustomEvent {
2252
+ class $c31e3fb4360572af$export$da085ff0f511c609 extends CustomEvent {
2008
2253
  // eslint-disable-next-line @typescript-eslint/no-useless-constructor
2009
2254
  constructor(name, data){
2010
2255
  super(name, data);
2011
2256
  }
2012
2257
  }
2013
2258
  const $c31e3fb4360572af$var$StreamerEventTargetType = EventTarget;
2014
- const $c31e3fb4360572af$var$defaultMediapipeOptions = {
2015
- background: undefined,
2016
- fillColor: '#ffffff',
2017
- type: 'blur',
2018
- blurLevel: 10
2019
- };
2020
2259
  class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$StreamerEventTargetType {
2021
2260
  constructor(){
2022
- super(), this.mediasoupTransport = {}, this.mediaPipeOption = $c31e3fb4360572af$var$defaultMediapipeOptions, this.useVideoBackground = false, this.waitingRoomAccess = false, this.tracksHandler = new (0, $ab40fd7a219a4259$export$2e2bcd8739ae039)(), this.pendingDeviceRequest = {}, this.joinOptions = {}, this.devicesList = [], this.plan = undefined, this.permissions = [], this.onAudioLevel = (0, $120418cdeb6706cf$export$de363e709c412c8a)((audioLevel)=>{
2023
- const event = new $c31e3fb4360572af$var$SnapcallEvent('audioLevel', {
2261
+ super(), this.mediasoupTransport = {}, this.waitingRoomAccess = false, this.tracksHandler = new (0, $ab40fd7a219a4259$export$2e2bcd8739ae039)(), this.pendingDeviceRequest = {}, this.joinOptions = {}, this.devicesList = [], this.plan = undefined, this.permissions = [], this.onAudioLevel = (0, $120418cdeb6706cf$export$de363e709c412c8a)((audioLevel)=>{
2262
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('audioLevel', {
2024
2263
  cancelable: true,
2025
2264
  bubbles: true,
2026
2265
  detail: {
@@ -2043,19 +2282,10 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2043
2282
  }
2044
2283
  ]
2045
2284
  };
2285
+ this.camera = new (0, $f1b448a7dd8f8e1c$export$79f141de891a5fed)(this.tracksHandler);
2046
2286
  this.peers = new Map();
2047
2287
  this.consumers = new Map();
2048
- this.webcams = new Map();
2049
- this.webcam = {
2050
- device: null,
2051
- resolution: 'hd'
2052
- };
2053
2288
  this.webcamTrack = null;
2054
- this.webcamZoom = {
2055
- available: false,
2056
- min: 0,
2057
- max: 0
2058
- };
2059
2289
  this.microphone = {
2060
2290
  device: null,
2061
2291
  muted: false
@@ -2114,7 +2344,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2114
2344
  }
2115
2345
  onStartSpeak() {
2116
2346
  if (this.micProducer && !this.micProducer.paused) {
2117
- const event = new $c31e3fb4360572af$var$SnapcallEvent('localStartSpeak', {
2347
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('localStartSpeak', {
2118
2348
  cancelable: true,
2119
2349
  bubbles: true,
2120
2350
  detail: {}
@@ -2125,7 +2355,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2125
2355
  }
2126
2356
  onStopSpeak() {
2127
2357
  if (this.micProducer && !this.micProducer.paused) {
2128
- const event = new $c31e3fb4360572af$var$SnapcallEvent('localStopSpeak', {
2358
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('localStopSpeak', {
2129
2359
  detail: {}
2130
2360
  });
2131
2361
  this.dispatchEvent(event);
@@ -2133,7 +2363,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2133
2363
  }
2134
2364
  }
2135
2365
  onCriticalError(code) {
2136
- const event = new $c31e3fb4360572af$var$SnapcallEvent('criticalError', {
2366
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('criticalError', {
2137
2367
  detail: {
2138
2368
  code: code
2139
2369
  }
@@ -2170,6 +2400,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2170
2400
  const initResult = {};
2171
2401
  this.roomId = room;
2172
2402
  this.peerId = (0, $3Sbms$v4)();
2403
+ this.recordingGroup = options.recordingGroup;
2173
2404
  this.joinOptions = options;
2174
2405
  if (!this.roomId) throw new Error('Missing room ID');
2175
2406
  let url;
@@ -2211,7 +2442,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2211
2442
  url = `${this.config.streamerServer}/${instanceId}/v2/${recorderPath}?${searchParams}`;
2212
2443
  } catch (roomError) {
2213
2444
  console.error('init', roomError);
2214
- const event = new $c31e3fb4360572af$var$SnapcallEvent('invalidRoom', {
2445
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('invalidRoom', {
2215
2446
  detail: {}
2216
2447
  });
2217
2448
  this.dispatchEvent(event);
@@ -2261,7 +2492,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2261
2492
  muted: muted,
2262
2493
  producersData: []
2263
2494
  });
2264
- const event = new $c31e3fb4360572af$var$SnapcallEvent('newPeer', {
2495
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('newPeer', {
2265
2496
  detail: {
2266
2497
  peerId: id,
2267
2498
  displayName: profile.name,
@@ -2286,7 +2517,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2286
2517
  consumerId: consumer.id
2287
2518
  });
2288
2519
  });
2289
- const event = new $c31e3fb4360572af$var$SnapcallEvent('peerClosed', {
2520
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('peerClosed', {
2290
2521
  detail: {
2291
2522
  peerId: peerId
2292
2523
  }
@@ -2297,12 +2528,12 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2297
2528
  this.onConsumerClose({
2298
2529
  consumerId: consumerId
2299
2530
  });
2300
- } else if (notification.method === 'recordStopped') this.dispatchEvent(new $c31e3fb4360572af$var$SnapcallEvent('recordStopped', {
2531
+ } else if (notification.method === 'recordStopped') this.dispatchEvent(new $c31e3fb4360572af$export$da085ff0f511c609('recordStopped', {
2301
2532
  detail: notification.data
2302
2533
  }));
2303
2534
  else if (notification.method === 'displayName') {
2304
2535
  const { peerId: peerId, displayName: displayName } = notification.data;
2305
- const event = new $c31e3fb4360572af$var$SnapcallEvent('displayName', {
2536
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('displayName', {
2306
2537
  detail: {
2307
2538
  peerId: peerId,
2308
2539
  displayName: displayName,
@@ -2321,17 +2552,17 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2321
2552
  this.dispatchEvent(event);
2322
2553
  } else if (notification.method === 'requestDevice') {
2323
2554
  this.pendingDeviceRequest[notification.data.requestId] = notification.data;
2324
- const event = new $c31e3fb4360572af$var$SnapcallEvent('requestDevice', {
2555
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('requestDevice', {
2325
2556
  detail: notification.data
2326
2557
  });
2327
2558
  this.dispatchEvent(event);
2328
2559
  } else if (notification.method === 'startSpeak') {
2329
- const event = new $c31e3fb4360572af$var$SnapcallEvent('peerStartSpeak', {
2560
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('peerStartSpeak', {
2330
2561
  detail: notification.data
2331
2562
  });
2332
2563
  this.dispatchEvent(event);
2333
2564
  } else if (notification.method === 'stopSpeak') {
2334
- const event = new $c31e3fb4360572af$var$SnapcallEvent('peerStopSpeak', {
2565
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('peerStopSpeak', {
2335
2566
  detail: notification.data
2336
2567
  });
2337
2568
  this.dispatchEvent(event);
@@ -2347,7 +2578,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2347
2578
  break;
2348
2579
  }
2349
2580
  const eventName = notification.method === 'producerPaused' ? 'mediaPause' : 'mediaResume';
2350
- const event = new $c31e3fb4360572af$var$SnapcallEvent(eventName, {
2581
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609(eventName, {
2351
2582
  detail: {
2352
2583
  mediaId: id,
2353
2584
  peerId: peerId,
@@ -2358,7 +2589,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2358
2589
  this.dispatchEvent(event);
2359
2590
  } else if (notification.method === 'mute') {
2360
2591
  const { peerId: peerId, device: device } = notification.data;
2361
- const event = new $c31e3fb4360572af$var$SnapcallEvent('mediaPause', {
2592
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('mediaPause', {
2362
2593
  detail: {
2363
2594
  peerId: peerId,
2364
2595
  deviceType: device,
@@ -2368,7 +2599,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2368
2599
  this.dispatchEvent(event);
2369
2600
  } else if (notification.method === 'unmute') {
2370
2601
  const { peerId: peerId, device: device } = notification.data;
2371
- const event = new $c31e3fb4360572af$var$SnapcallEvent('mediaResume', {
2602
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('mediaResume', {
2372
2603
  detail: {
2373
2604
  peerId: peerId,
2374
2605
  deviceType: device,
@@ -2378,33 +2609,33 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2378
2609
  this.dispatchEvent(event);
2379
2610
  } else if (notification.method === 'requestAccessResult') {
2380
2611
  if (notification.data.success) this.onEnterRoom();
2381
- const event = new $c31e3fb4360572af$var$SnapcallEvent(notification.method, {
2612
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609(notification.method, {
2382
2613
  detail: notification.data
2383
2614
  });
2384
2615
  this.dispatchEvent(event);
2385
2616
  } else if (notification.method === 'cancelAccessRequest') {
2386
- const event = new $c31e3fb4360572af$var$SnapcallEvent(notification.method, {
2617
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609(notification.method, {
2387
2618
  detail: notification.data
2388
2619
  });
2389
2620
  this.dispatchEvent(event);
2390
2621
  } else if (notification.method === 'accessRequest') {
2391
- const event = new $c31e3fb4360572af$var$SnapcallEvent(notification.method, {
2622
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609(notification.method, {
2392
2623
  detail: notification.data
2393
2624
  });
2394
2625
  this.dispatchEvent(event);
2395
2626
  } else if (notification.method === 'requestDeviceResult') {
2396
- const event = new $c31e3fb4360572af$var$SnapcallEvent(notification.method, {
2627
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609(notification.method, {
2397
2628
  detail: notification.data
2398
2629
  });
2399
2630
  this.dispatchEvent(event);
2400
2631
  } else if (notification.method === 'terminateRoom') {
2401
2632
  this.release();
2402
- const event = new $c31e3fb4360572af$var$SnapcallEvent(notification.method, {
2633
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609(notification.method, {
2403
2634
  detail: notification.data
2404
2635
  });
2405
2636
  this.dispatchEvent(event);
2406
2637
  } else if (notification.method === 'videoRecordingStarted' || notification.method === 'videoRecordingStopped' || notification.method === 'videoRecordingRequested') {
2407
- const event = new $c31e3fb4360572af$var$SnapcallEvent(notification.method, {
2638
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609(notification.method, {
2408
2639
  detail: {}
2409
2640
  });
2410
2641
  this.dispatchEvent(event);
@@ -2429,7 +2660,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2429
2660
  const sortedChunks = message.chunks.sort((a, b)=>a.index - b.index);
2430
2661
  const mergedChunks = sortedChunks.reduce((originalMessage, chunk)=>originalMessage + chunk.data, '');
2431
2662
  const parsedEvent = JSON.parse(mergedChunks);
2432
- const event = new $c31e3fb4360572af$var$SnapcallEvent('customMessage', {
2663
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('customMessage', {
2433
2664
  detail: {
2434
2665
  ...notification.data,
2435
2666
  event: parsedEvent
@@ -2448,7 +2679,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2448
2679
  };
2449
2680
  if (open) onOpen(err);
2450
2681
  });
2451
- this.dispatchEvent(new $c31e3fb4360572af$var$SnapcallEvent('initialized', {
2682
+ this.dispatchEvent(new $c31e3fb4360572af$export$da085ff0f511c609('initialized', {
2452
2683
  detail: initResult
2453
2684
  }));
2454
2685
  return initResult;
@@ -2520,7 +2751,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2520
2751
  }
2521
2752
  onTransportStateChangeNetwork(transport, isOk) {
2522
2753
  $c31e3fb4360572af$var$log.warn('onTransportStateChangeNetwork', '\nid:', transport.id, '\nisOk:', isOk);
2523
- const event = new $c31e3fb4360572af$var$SnapcallEvent('networkStateChange', {
2754
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('networkStateChange', {
2524
2755
  detail: {
2525
2756
  isOk: isOk
2526
2757
  }
@@ -2551,7 +2782,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2551
2782
  apiKey: apiKey,
2552
2783
  email: email
2553
2784
  });
2554
- if (this.agentIdentity) this.dispatchEvent(new $c31e3fb4360572af$var$SnapcallEvent('agentIdentity', {
2785
+ if (this.agentIdentity) this.dispatchEvent(new $c31e3fb4360572af$export$da085ff0f511c609('agentIdentity', {
2555
2786
  detail: {
2556
2787
  success: true,
2557
2788
  email: this.agentIdentity.email,
@@ -2561,7 +2792,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2561
2792
  }));
2562
2793
  } catch (agentInfoError) {
2563
2794
  $c31e3fb4360572af$var$log.warn('setAgentIdentity', agentInfoError);
2564
- this.dispatchEvent(new $c31e3fb4360572af$var$SnapcallEvent('agentIdentity', {
2795
+ this.dispatchEvent(new $c31e3fb4360572af$export$da085ff0f511c609('agentIdentity', {
2565
2796
  detail: {
2566
2797
  success: false
2567
2798
  }
@@ -2597,7 +2828,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2597
2828
  if (!this.protoo) throw new Error('stream client not initiated');
2598
2829
  await this.protoo.request('join');
2599
2830
  await this.onEnterRoom();
2600
- if (this.agentIdentity) this.dispatchEvent(new $c31e3fb4360572af$var$SnapcallEvent('agentIdentity', {
2831
+ if (this.agentIdentity) this.dispatchEvent(new $c31e3fb4360572af$export$da085ff0f511c609('agentIdentity', {
2601
2832
  detail: {
2602
2833
  success: true,
2603
2834
  email: this.agentIdentity.email,
@@ -2622,7 +2853,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2622
2853
  peerId: peer.id
2623
2854
  }
2624
2855
  ]));
2625
- this.dispatchEvent(new $c31e3fb4360572af$var$SnapcallEvent('enterRoom', {
2856
+ this.dispatchEvent(new $c31e3fb4360572af$export$da085ff0f511c609('enterRoom', {
2626
2857
  detail: {
2627
2858
  videoRecording: videoRecording,
2628
2859
  videoRecordStarted: videoRecordStarted,
@@ -2649,7 +2880,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2649
2880
  if (this.joinOptions.apiKey) this.setAgentIdentity({
2650
2881
  apiKey: this.joinOptions.apiKey
2651
2882
  });
2652
- this.dispatchEvent(new $c31e3fb4360572af$var$SnapcallEvent('enterRoom', {
2883
+ this.dispatchEvent(new $c31e3fb4360572af$export$da085ff0f511c609('enterRoom', {
2653
2884
  detail: {
2654
2885
  videoRecording: {
2655
2886
  started: false,
@@ -2694,7 +2925,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2694
2925
  const trackSettings = track.getSettings();
2695
2926
  const device = this.devicesList.find((it)=>it.deviceId === trackSettings.deviceId);
2696
2927
  this.microphone.device = device || null;
2697
- const event = new $c31e3fb4360572af$var$SnapcallEvent('microphoneChange', {
2928
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('microphoneChange', {
2698
2929
  detail: {
2699
2930
  device: device
2700
2931
  }
@@ -2709,7 +2940,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2709
2940
  const producerId = this.micProducer?.id;
2710
2941
  this.micProducer?.close();
2711
2942
  this.micProducer = undefined;
2712
- const event = new $c31e3fb4360572af$var$SnapcallEvent('microphoneMute', {
2943
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('microphoneMute', {
2713
2944
  detail: {}
2714
2945
  });
2715
2946
  this.dispatchEvent(event);
@@ -2719,7 +2950,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2719
2950
  }
2720
2951
  async onDeviceChange() {
2721
2952
  $c31e3fb4360572af$var$log.log('onDeviceChange', 'detecting device change');
2722
- const deviceListChangeEvent = new $c31e3fb4360572af$var$SnapcallEvent('devicesListChange', {
2953
+ const deviceListChangeEvent = new $c31e3fb4360572af$export$da085ff0f511c609('devicesListChange', {
2723
2954
  detail: {}
2724
2955
  });
2725
2956
  this.dispatchEvent(deviceListChangeEvent);
@@ -2752,7 +2983,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2752
2983
  }
2753
2984
  $c31e3fb4360572af$var$log.log('onDeviceChange', 'detecting audio input change');
2754
2985
  if (!this.audioInputDefaultDevice || this.audioInputDefaultDevice.label !== defaultDevice.label) {
2755
- const event = new $c31e3fb4360572af$var$SnapcallEvent('defaultAudioDeviceChange', {
2986
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('defaultAudioDeviceChange', {
2756
2987
  detail: defaultDevice
2757
2988
  });
2758
2989
  this.audioInputDefaultDevice = defaultDevice;
@@ -2776,7 +3007,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2776
3007
  this.microphone.muted = true;
2777
3008
  this.closeMicrophoneProducer();
2778
3009
  this.microphone.error = error;
2779
- if (error.cause !== $c31e3fb4360572af$var$SENTRY_WHITELIST_ERROR_CAUSE && window.Sentry) window.Sentry.captureException(error);
3010
+ if (error.cause !== $c31e3fb4360572af$export$75139ad9ea82cac9 && window.Sentry) window.Sentry.captureException(error);
2780
3011
  throw error;
2781
3012
  });
2782
3013
  this.microphone.error = undefined;
@@ -2791,7 +3022,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2791
3022
  }
2792
3023
  }).catch((error)=>{
2793
3024
  throw new Error(error, {
2794
- cause: $c31e3fb4360572af$var$SENTRY_WHITELIST_ERROR_CAUSE
3025
+ cause: $c31e3fb4360572af$export$75139ad9ea82cac9
2795
3026
  });
2796
3027
  });
2797
3028
  if (!this.tracksHandler.audio.stream || !this.tracksHandler.audio.track) throw new Error('enableMicrophone : no stream or audio track');
@@ -2829,7 +3060,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2829
3060
  this.micProducer = micProducer;
2830
3061
  this.microphone.device = device || null;
2831
3062
  this.microphone.muted = false;
2832
- const event = new $c31e3fb4360572af$var$SnapcallEvent('microphoneEnabled', {
3063
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('microphoneEnabled', {
2833
3064
  detail: {}
2834
3065
  });
2835
3066
  this.dispatchEvent(event);
@@ -2845,7 +3076,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2845
3076
  this.protoo?.notify('mute', {
2846
3077
  device: device
2847
3078
  }).catch((err)=>console.error('failed to send mute event', err));
2848
- const event = new $c31e3fb4360572af$var$SnapcallEvent('microphoneMute', {
3079
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('microphoneMute', {
2849
3080
  detail: {}
2850
3081
  });
2851
3082
  this.dispatchEvent(event);
@@ -2862,7 +3093,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2862
3093
  this.protoo?.notify('unmute', {
2863
3094
  device: device
2864
3095
  }).catch((err)=>console.error('failed to send unmute event', err));
2865
- const event = new $c31e3fb4360572af$var$SnapcallEvent('microphoneUnmute', {
3096
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('microphoneUnmute', {
2866
3097
  detail: {}
2867
3098
  });
2868
3099
  this.dispatchEvent(event);
@@ -2884,10 +3115,6 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2884
3115
  release() {
2885
3116
  $c31e3fb4360572af$var$log.log('release');
2886
3117
  for(let key in this.mediasoupTransport)this.closeWebrtcTransport(key);
2887
- if (this.mediaPipe) {
2888
- this.mediaPipe.clean();
2889
- this.mediaPipe = undefined;
2890
- }
2891
3118
  this.audioMedia?.removeAll();
2892
3119
  this.audioMedia = undefined;
2893
3120
  this.webcamTrack?.stop();
@@ -2907,7 +3134,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2907
3134
  }
2908
3135
  endCall() {
2909
3136
  this.release();
2910
- const event = new $c31e3fb4360572af$var$SnapcallEvent('leaveRoom', {
3137
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('leaveRoom', {
2911
3138
  detail: {}
2912
3139
  });
2913
3140
  this.dispatchEvent(event);
@@ -2918,24 +3145,8 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2918
3145
  if (!this.protoo) throw new Error('stream client not initiated');
2919
3146
  this.protoo.request('terminateRoom');
2920
3147
  }
2921
- async updateWebcams() {
2922
- this.webcams = new Map();
2923
- const devices = await navigator.mediaDevices.enumerateDevices();
2924
- for (const device of devices){
2925
- if (device.kind !== 'videoinput') continue;
2926
- this.webcams.set(device.deviceId, device);
2927
- }
2928
- if (this.webcams.size === 0) this.webcam.device = null;
2929
- else if (!this.webcam.device) this.webcam.device = this.webcams.values().next().value || null;
2930
- const event = new $c31e3fb4360572af$var$SnapcallEvent('webcamsUpdate', {
2931
- detail: {
2932
- numberOfAvailableWebcams: this.webcams.size
2933
- }
2934
- });
2935
- this.dispatchEvent(event);
2936
- }
2937
3148
  isVideoZoomAvailable() {
2938
- return this.webcamZoom.available;
3149
+ return this.camera.webcamZoom.available;
2939
3150
  }
2940
3151
  resolvePendingDeviceRequest(deviceType, result, failure) {
2941
3152
  Object.keys(this.pendingDeviceRequest).forEach((key)=>{
@@ -2952,13 +3163,13 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2952
3163
  }
2953
3164
  async processMediaPermissionsAndResolveRequests(constraints) {
2954
3165
  let error;
2955
- const event = new $c31e3fb4360572af$var$SnapcallEvent('requestAccessUpdate', {
3166
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('requestAccessUpdate', {
2956
3167
  detail: {}
2957
3168
  });
2958
3169
  try {
2959
3170
  const promise = this.tracksHandler.requestMediaPermissions(constraints);
2960
3171
  this.dispatchEvent(event);
2961
- await promise;
3172
+ return promise;
2962
3173
  } catch (err) {
2963
3174
  error = err;
2964
3175
  } finally{
@@ -2998,17 +3209,8 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2998
3209
  $c31e3fb4360572af$var$log.log('restartIce', 'restartIceFailed', err);
2999
3210
  }
3000
3211
  }
3001
- scaleVideoMediasConstraintsParameter(scale) {
3002
- let videoResolution = $c31e3fb4360572af$export$d21ffcc5eb136bfa['hd'];
3003
- if (scale === 2) videoResolution = $c31e3fb4360572af$export$d21ffcc5eb136bfa['vga'];
3004
- else if (scale > 2) videoResolution = $c31e3fb4360572af$export$d21ffcc5eb136bfa['qvga'];
3005
- if (!this.webcam.resolution || $c31e3fb4360572af$export$d21ffcc5eb136bfa[this.webcam.resolution].qualityIndex >= videoResolution.qualityIndex) {
3006
- $c31e3fb4360572af$var$log.log('scaleVideoMediasConstraintsParameter', `scaling video by ${scale}`, videoResolution);
3007
- this.webcamProducer?.track?.applyConstraints(videoResolution);
3008
- }
3009
- }
3010
3212
  scaleVideoEncodingsParameter() {
3011
- if (this.useVideoBackground) return;
3213
+ if (this.camera.useVideoBackground) return;
3012
3214
  try {
3013
3215
  let videoCount = 0;
3014
3216
  this.consumers.forEach((consumer)=>{
@@ -3024,136 +3226,54 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3024
3226
  if (videoCount >= 9) scale = {
3025
3227
  scaleResolutionDownBy: 4
3026
3228
  };
3027
- if (!(0, $3Sbms$Producer).prototype.setRtpEncodingParameters) return this.scaleVideoMediasConstraintsParameter(scale.scaleResolutionDownBy);
3229
+ if (!(0, $3Sbms$Producer).prototype.setRtpEncodingParameters) return this.camera.scaleVideoMediasConstraintsParameter(scale.scaleResolutionDownBy);
3028
3230
  if (this.webcamProducer && !this.webcamProducer.closed) {
3029
3231
  $c31e3fb4360572af$var$log.log('scaleVideoEncodingsParameter', `scaling video by ${scale.scaleResolutionDownBy}`);
3030
3232
  this.webcamProducer?.setRtpEncodingParameters?.(scale).catch((err)=>{
3031
3233
  $c31e3fb4360572af$var$log.error('scaleVideoEncodingsParameter', 'scaleResolutionDownBy not supported', err);
3032
- this.scaleVideoMediasConstraintsParameter(scale.scaleResolutionDownBy);
3234
+ this.camera.scaleVideoMediasConstraintsParameter(scale.scaleResolutionDownBy);
3033
3235
  });
3034
3236
  }
3035
3237
  } catch (error) {
3036
3238
  $c31e3fb4360572af$var$log.error('scaleVideoEncodingsParameter', 'scaleVideo error', error);
3037
3239
  }
3038
3240
  }
3039
- setVideoBackground(options) {
3040
- this.mediaPipe?.setOptions(options);
3041
- this.mediaPipeOption = options;
3042
- }
3043
3241
  async initVideoBackground() {
3044
3242
  if (!this.permissions.find((permission)=>permission === 'virtual_background')) throw new Error('feature not allowed');
3045
- if (this.useVideoBackground === true) return;
3046
- this.useVideoBackground = true;
3243
+ if (this.camera.useVideoBackground === true) return;
3244
+ this.camera.useVideoBackground = true;
3047
3245
  if (!this.webcamProducer || this.webcamProducer.closed) return;
3048
3246
  await this.switchWebcam({});
3049
3247
  }
3050
3248
  async stopVideoBackground() {
3051
- if (this.useVideoBackground === false) return;
3052
- this.useVideoBackground = false;
3053
- await this.mediaPipe?.clean();
3054
- this.mediaPipe = undefined;
3249
+ if (this.camera.useVideoBackground === false) return;
3250
+ this.camera.cleanMediapipe();
3055
3251
  if (!this.webcamProducer || this.webcamProducer.closed) return;
3056
3252
  await this.switchWebcam({});
3057
3253
  }
3058
3254
  async switchWebcam({ device: device, resolution: resolution, rotate: rotate, frameRate: frameRate, facingMode: facingMode }) {
3059
- if (!this.webcam.device) throw new Error('no webcam devices');
3060
- const optionalParam = {};
3061
- if (rotate) {
3062
- if (this.webcam.facingMode) {
3063
- console.log('switch by facing mod');
3064
- this.webcam.facingMode = this.webcam.facingMode === 'user' ? 'environment' : 'user';
3065
- optionalParam.facingMode = this.webcam.facingMode;
3066
- } else {
3067
- const webcams = Array.from(this.webcams.keys());
3068
- const deviceId = this.webcam?.device?.deviceId || 'unknown';
3069
- let newWebcamIndex = webcams.indexOf(deviceId);
3070
- newWebcamIndex = (newWebcamIndex + 1) % webcams.length;
3071
- const newWebcamDevice = this.webcams.get(webcams[newWebcamIndex]);
3072
- if (!newWebcamDevice) throw new Error(`webcam device at index ${newWebcamIndex} was not found`);
3073
- this.webcam.device = newWebcamDevice;
3074
- optionalParam.deviceId = {
3075
- ideal: this.webcam.device?.deviceId
3076
- };
3077
- }
3078
- } else {
3079
- if (facingMode) {
3080
- this.webcam.facingMode = facingMode;
3081
- optionalParam.facingMode = this.webcam.facingMode;
3082
- } else if (device) {
3083
- this.webcam.device = device;
3084
- this.webcam.facingMode = undefined;
3085
- optionalParam.deviceId = {
3086
- ideal: this.webcam.device.deviceId
3087
- };
3088
- }
3089
- }
3090
- this.webcam.resolution = resolution || this.webcam.resolution || 'hd';
3091
- this.webcam.framerate = frameRate || this.webcam.framerate;
3092
- let usedResolution = $c31e3fb4360572af$export$d21ffcc5eb136bfa[resolution || this.webcam.resolution];
3093
- if (this.useVideoBackground) usedResolution = {
3094
- width: {
3095
- ideal: 560
3096
- },
3097
- height: {
3098
- ideal: 400
3099
- },
3100
- qualityIndex: 2
3101
- };
3255
+ if (!this.camera.webcam.device) throw new Error('no webcam devices');
3102
3256
  await this.webcamProducer?.replaceTrack?.({
3103
3257
  track: null
3104
3258
  }).catch((err)=>{
3105
3259
  $c31e3fb4360572af$var$log.error('switchCamera', 'clean track failed', err);
3106
3260
  });
3107
- await this.processMediaPermissionsAndResolveRequests({
3108
- video: {
3109
- ...optionalParam,
3110
- ...usedResolution
3111
- }
3261
+ const track = await this.camera.enable({
3262
+ device: device,
3263
+ resolution: resolution,
3264
+ rotate: rotate,
3265
+ frameRate: frameRate,
3266
+ facingMode: facingMode
3112
3267
  });
3113
3268
  const mediaStream = this.tracksHandler.video.stream;
3114
3269
  if (!mediaStream) throw new Error('switchWebcam : no stream');
3115
- if (this.useVideoBackground) {
3116
- if (this.mediaPipe) await this.mediaPipe.clean();
3117
- this.mediaPipe = new (0, $0148b6fd862a22e8$export$2e2bcd8739ae039)(mediaStream, this.mediaPipeOption);
3118
- }
3119
- const stream = await this.mediaPipe?.createStream() || mediaStream;
3120
3270
  const transport = await this.getTransport('video', 'send');
3121
3271
  if (!transport) throw new Error('video transport not found, cannot switch');
3122
- const track = stream.getVideoTracks()[0];
3123
3272
  this.webcamTrack = track;
3124
3273
  await this.webcamProducer?.replaceTrack?.({
3125
3274
  track: track
3126
3275
  });
3127
- const capabilities = await track.getCapabilities?.() || navigator.mediaDevices.getSupportedConstraints?.();
3128
- this.webcamZoom = {
3129
- available: Boolean(capabilities?.zoom),
3130
- min: capabilities?.zoom?.min || 0,
3131
- max: capabilities?.zoom?.max || 0
3132
- };
3133
- if (this.webcamZoom.available) try {
3134
- await track.applyConstraints({
3135
- advanced: [
3136
- {
3137
- zoom: this.webcamZoom.min
3138
- }
3139
- ]
3140
- });
3141
- } catch (error) {
3142
- console.error('Failed to set default zoom', error);
3143
- }
3144
- if (capabilities.focusMode) // https://github.com/w3c/mediacapture-image/blob/main/implementation-status.md
3145
- try {
3146
- await track.applyConstraints({
3147
- advanced: [
3148
- {
3149
- focusMode: 'continuous'
3150
- }
3151
- ]
3152
- });
3153
- } catch (error) {
3154
- console.error('Failed to set focus mode', error);
3155
- }
3156
- const event = new $c31e3fb4360572af$var$SnapcallEvent('localVideoChange', {
3276
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('localVideoChange', {
3157
3277
  detail: {
3158
3278
  camera: this.getCurrentWebcam()
3159
3279
  }
@@ -3163,95 +3283,14 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3163
3283
  async enableVideo(config) {
3164
3284
  await this._enableVideo(config).catch((error)=>{
3165
3285
  this.disableVideo();
3166
- this.webcam.error = error;
3167
- if (error.cause !== $c31e3fb4360572af$var$SENTRY_WHITELIST_ERROR_CAUSE && window.Sentry) window.Sentry.captureException(error);
3286
+ this.camera.webcam.error = error;
3287
+ if (error.cause !== $c31e3fb4360572af$export$75139ad9ea82cac9 && window.Sentry) window.Sentry.captureException(error);
3168
3288
  throw error;
3169
3289
  });
3170
- this.webcam.error = undefined;
3171
3290
  }
3172
3291
  async _enableVideo(config) {
3173
3292
  $c31e3fb4360572af$var$log.log('enableVideo', config);
3174
- await this.updateWebcams();
3175
- const optionalParam = {};
3176
- if (config?.facingMode) {
3177
- optionalParam.facingMode = config.facingMode;
3178
- this.webcam.facingMode = config.facingMode;
3179
- } else {
3180
- if (config?.device) this.webcam.device = config.device;
3181
- optionalParam.deviceId = {
3182
- ideal: this.webcam.device?.deviceId
3183
- };
3184
- }
3185
- if (!this.webcam.device) throw new Error('no webcam devices');
3186
- this.webcam.resolution = config?.resolution || this.webcam.resolution || 'hd';
3187
- this.webcam.framerate = config?.frameRate || this.webcam.framerate;
3188
- let usedResolution = $c31e3fb4360572af$export$d21ffcc5eb136bfa[config?.resolution || this.webcam.resolution];
3189
- if (this.useVideoBackground) usedResolution = $c31e3fb4360572af$export$d21ffcc5eb136bfa.background;
3190
- await this.processMediaPermissionsAndResolveRequests({
3191
- video: {
3192
- frameRate: config?.frameRate,
3193
- ...optionalParam,
3194
- ...usedResolution
3195
- }
3196
- }).catch((error)=>{
3197
- throw new Error(error, {
3198
- cause: $c31e3fb4360572af$var$SENTRY_WHITELIST_ERROR_CAUSE
3199
- });
3200
- });
3201
- if (!this.tracksHandler.video.stream || !this.tracksHandler.video.track) throw new Error('enableVideo : no stream or video track');
3202
- const trackSettings = this.tracksHandler.video.track.getSettings();
3203
- if (trackSettings.deviceId) this.webcam.device = this.webcams.get(trackSettings.deviceId) || null;
3204
- if (config?.facingMode) try {
3205
- if (!trackSettings.facingMode) throw new Error('no facing mode');
3206
- } catch {
3207
- this.webcam.facingMode = undefined;
3208
- }
3209
- if (this.useVideoBackground) {
3210
- if (this.mediaPipe) await this.mediaPipe.clean();
3211
- this.mediaPipe = new (0, $0148b6fd862a22e8$export$2e2bcd8739ae039)(this.tracksHandler.video.stream, this.mediaPipeOption);
3212
- }
3213
- const stream = await this.mediaPipe?.createStream() || this.tracksHandler.video.stream;
3214
- await this.updateWebcams();
3215
- const track = stream.getVideoTracks()[0];
3216
- track.enabled = true;
3217
- await track.applyConstraints({
3218
- frameRate: config?.frameRate,
3219
- ...optionalParam,
3220
- ...usedResolution
3221
- }).catch((error)=>{
3222
- $c31e3fb4360572af$var$log.error('enableVideo', 'applyConstraints failed', error);
3223
- });
3224
- this.tracksHandler.video.track.enabled = true;
3225
- this.webcamTrack = track;
3226
- const capabilities = await track.getCapabilities?.() || navigator.mediaDevices.getSupportedConstraints?.();
3227
- this.webcamZoom = {
3228
- available: Boolean(capabilities?.zoom),
3229
- min: capabilities?.zoom?.min || 0,
3230
- max: capabilities?.zoom?.max || 0
3231
- };
3232
- if (this.webcamZoom.available) try {
3233
- await track.applyConstraints({
3234
- advanced: [
3235
- {
3236
- zoom: this.webcamZoom.min
3237
- }
3238
- ]
3239
- });
3240
- } catch (error) {
3241
- console.error('Failed to set default zoom', error);
3242
- }
3243
- if (capabilities.focusMode) // https://github.com/w3c/mediacapture-image/blob/main/implementation-status.md
3244
- try {
3245
- await track.applyConstraints({
3246
- advanced: [
3247
- {
3248
- focusMode: 'continuous'
3249
- }
3250
- ]
3251
- });
3252
- } catch (error) {
3253
- console.error('Failed to set focus mode', error);
3254
- }
3293
+ const track = await this.camera.enable(config);
3255
3294
  const encodings = undefined;
3256
3295
  const codecOptions = {
3257
3296
  videoGoogleStartBitrate: 1000
@@ -3275,7 +3314,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3275
3314
  this.webcamProducer.on('trackended', ()=>{
3276
3315
  this.disableVideo().catch(()=>{});
3277
3316
  });
3278
- const event = new $c31e3fb4360572af$var$SnapcallEvent('localVideoAvailable', {
3317
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('localVideoAvailable', {
3279
3318
  detail: {
3280
3319
  camera: this.getCurrentWebcam()
3281
3320
  }
@@ -3287,27 +3326,11 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3287
3326
  rotate: true
3288
3327
  });
3289
3328
  }
3290
- async zoomVideo() {
3291
- if (!this.webcamZoom.available) throw new Error('Webcam zoom is not available');
3292
- if (!this.webcamTrack) throw new Error('No webcam track available');
3293
- this.webcamTrack.applyConstraints({
3294
- advanced: [
3295
- {
3296
- zoom: this.webcamZoom.min * 2
3297
- }
3298
- ]
3299
- });
3329
+ zoomVideo() {
3330
+ return this.camera.zoomVideo();
3300
3331
  }
3301
3332
  async unzoomVideo() {
3302
- if (!this.webcamZoom.available) throw new Error('Webcam zoom is not available');
3303
- if (!this.webcamTrack) throw new Error('No webcam track available');
3304
- this.webcamTrack.applyConstraints({
3305
- advanced: [
3306
- {
3307
- zoom: this.webcamZoom.min
3308
- }
3309
- ]
3310
- });
3333
+ return this.camera.unzoomVideo();
3311
3334
  }
3312
3335
  async disableVideo() {
3313
3336
  if (!this.webcamProducer) return;
@@ -3319,14 +3342,9 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3319
3342
  audio: false,
3320
3343
  video: true
3321
3344
  });
3322
- this.webcam.device = null;
3323
3345
  this.webcamProducer = null;
3324
- this.webcamTrack = null;
3325
- if (this.useVideoBackground) {
3326
- await this.mediaPipe?.clean();
3327
- this.mediaPipe = undefined;
3328
- }
3329
- const event = new $c31e3fb4360572af$var$SnapcallEvent('localVideoUnavailable', {
3346
+ this.camera.clean();
3347
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('localVideoUnavailable', {
3330
3348
  detail: {}
3331
3349
  });
3332
3350
  this.dispatchEvent(event);
@@ -3337,7 +3355,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3337
3355
  await this._enableScreenshare(options).catch((error)=>{
3338
3356
  this.disableScreenshare();
3339
3357
  this.screenshare.error = error;
3340
- if (error.cause !== $c31e3fb4360572af$var$SENTRY_WHITELIST_ERROR_CAUSE && window.Sentry) window.Sentry.captureException(error);
3358
+ if (error.cause !== $c31e3fb4360572af$export$75139ad9ea82cac9 && window.Sentry) window.Sentry.captureException(error);
3341
3359
  throw error;
3342
3360
  });
3343
3361
  this.screenshare.error = undefined;
@@ -3365,7 +3383,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3365
3383
  }
3366
3384
  })).catch((error)=>{
3367
3385
  throw new Error(error, {
3368
- cause: $c31e3fb4360572af$var$SENTRY_WHITELIST_ERROR_CAUSE
3386
+ cause: $c31e3fb4360572af$export$75139ad9ea82cac9
3369
3387
  });
3370
3388
  });
3371
3389
  if (!stream) throw new Error('enableScreenshare : no stream');
@@ -3403,7 +3421,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3403
3421
  this.screenshareVideoProducer?.on('trackended', ()=>{
3404
3422
  this.disableScreenshare().catch(()=>{});
3405
3423
  });
3406
- const event = new $c31e3fb4360572af$var$SnapcallEvent('screenshareEnabled', {
3424
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('screenshareEnabled', {
3407
3425
  detail: {}
3408
3426
  });
3409
3427
  this.dispatchEvent(event);
@@ -3424,7 +3442,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3424
3442
  });
3425
3443
  this.screenshareAudioProducer = undefined;
3426
3444
  }
3427
- const event = new $c31e3fb4360572af$var$SnapcallEvent('screenshareDisabled', {
3445
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('screenshareDisabled', {
3428
3446
  detail: {}
3429
3447
  });
3430
3448
  this.dispatchEvent(event);
@@ -3440,7 +3458,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3440
3458
  consumer.mediaSoupConsumer.close();
3441
3459
  this.consumers.delete(consumerId);
3442
3460
  this.scaleVideoEncodingsParameter();
3443
- const event = new $c31e3fb4360572af$var$SnapcallEvent('mediaStop', {
3461
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('mediaStop', {
3444
3462
  detail: {
3445
3463
  mediaId: consumerId,
3446
3464
  peerId: String(consumer.mediaSoupConsumer.appData.peerId),
@@ -3507,7 +3525,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3507
3525
  async captureVideo(videoElement) {
3508
3526
  if (this.permissions.find((permission)=>permission === 'instant_picture')) {
3509
3527
  let image;
3510
- if (videoElement) image = await (0, $15ddac3121cc3a5d$export$674c90a250a8b2c5)(videoElement);
3528
+ if (videoElement) image = await (0, $15ddac3121cc3a5d$export$674c90a250a8b2c5)(videoElement, this.camera);
3511
3529
  else if (this.webcamProducer && this.webcamProducer.track) image = await (0, $15ddac3121cc3a5d$export$4a210166cc9cb64b)(this.webcamProducer.track);
3512
3530
  else throw new Error('no video to capture');
3513
3531
  return image;
@@ -3587,7 +3605,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3587
3605
  console.error('scale error', error);
3588
3606
  }
3589
3607
  if (consumer) {
3590
- const event = new $c31e3fb4360572af$var$SnapcallEvent('mediaStart', {
3608
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('mediaStart', {
3591
3609
  detail: {
3592
3610
  peerId: peerId,
3593
3611
  mediaId: consumer.id,
@@ -3618,7 +3636,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3618
3636
  await this.setProfile({
3619
3637
  name: displayName
3620
3638
  });
3621
- const event = new $c31e3fb4360572af$var$SnapcallEvent('selfDisplayName', {
3639
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('selfDisplayName', {
3622
3640
  detail: {
3623
3641
  peerId: this.peerId,
3624
3642
  displayName: this.profile?.name,
@@ -3633,7 +3651,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3633
3651
  this.profile = {
3634
3652
  ...newProfile
3635
3653
  };
3636
- const event = new $c31e3fb4360572af$var$SnapcallEvent('selfProfileUpdate', {
3654
+ const event = new $c31e3fb4360572af$export$da085ff0f511c609('selfProfileUpdate', {
3637
3655
  detail: {
3638
3656
  peerId: this.peerId,
3639
3657
  profile: this.profile
@@ -3667,8 +3685,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3667
3685
  },
3668
3686
  camera: {
3669
3687
  enabled: cameraEnabled,
3670
- device: this.webcam.device,
3671
- error: this.webcam.error
3688
+ ...this.camera.getState()
3672
3689
  },
3673
3690
  screenshare: {
3674
3691
  enabled: screenshareEnabled,
@@ -3725,7 +3742,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3725
3742
  return Boolean(navigator.mediaDevices?.enumerateDevices);
3726
3743
  }
3727
3744
  getCurrentWebcam() {
3728
- return this.webcam;
3745
+ return this.camera.webcam;
3729
3746
  }
3730
3747
  getCurrentMicrophoneId() {
3731
3748
  return this.audioMedia?.getSetting('mic').deviceId || this.micProducer?.track?.getSettings().deviceId;
@@ -3740,12 +3757,12 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3740
3757
  return 'default';
3741
3758
  }
3742
3759
  async setWebcamResolution(resolution) {
3743
- if (this.webcam.device) await this.switchWebcam({
3760
+ if (this.camera.webcam.device) await this.switchWebcam({
3744
3761
  resolution: resolution
3745
3762
  });
3746
3763
  else {
3747
- this.webcam.resolution = resolution;
3748
- const e = new $c31e3fb4360572af$var$SnapcallEvent('localVideoChange', {
3764
+ this.camera.webcam.resolution = resolution;
3765
+ const e = new $c31e3fb4360572af$export$da085ff0f511c609('localVideoChange', {
3749
3766
  detail: {
3750
3767
  camera: this.getCurrentWebcam()
3751
3768
  }
@@ -3888,10 +3905,12 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3888
3905
  }
3889
3906
  return;
3890
3907
  }
3891
- await this.protoo?.request('startRecord', {
3908
+ const res = await this.protoo?.request('startRecord', {
3892
3909
  recordingGroup: this.recordingGroup,
3893
3910
  iceTransportState: this.micProducer?.rtpSender?.transport?.iceTransport.state
3894
3911
  });
3912
+ this.tmpFilename = undefined;
3913
+ if (res.filename) this.tmpFilename = `recorder/${res.filename}`;
3895
3914
  if (this.recordingGroup) {
3896
3915
  this.doLiveAnalysis().catch(console.log);
3897
3916
  this.liveInterval = window.setInterval(()=>{
@@ -3911,6 +3930,12 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
3911
3930
  }
3912
3931
  })).json();
3913
3932
  }
3933
+ getRecordTmpData() {
3934
+ return {
3935
+ filename: this.tmpFilename,
3936
+ recordingGroup: this.recordingGroup
3937
+ };
3938
+ }
3914
3939
  getWaitingRequests() {
3915
3940
  if (!this.protoo) throw new Error('not connected');
3916
3941
  return this.protoo?.request('waitingRequests');
@@ -4995,7 +5020,7 @@ const $3f407ccccf27f166$export$73d4dc21bbbd7287 = ()=>{
4995
5020
  mutationFn: async (background)=>{
4996
5021
  if (background === 'none') await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).stopVideoBackground();
4997
5022
  else if (background === 'blur') {
4998
- await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).setVideoBackground({
5023
+ await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).camera.setVideoBackground({
4999
5024
  blurLevel: 16,
5000
5025
  type: 'blur'
5001
5026
  });
@@ -5006,7 +5031,7 @@ const $3f407ccccf27f166$export$73d4dc21bbbd7287 = ()=>{
5006
5031
  backgroundImage.crossOrigin = 'anonymous';
5007
5032
  backgroundImage.onload = async ()=>{
5008
5033
  try {
5009
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).setVideoBackground({
5034
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).camera.setVideoBackground({
5010
5035
  background: backgroundImage,
5011
5036
  type: 'background'
5012
5037
  });
@@ -8728,13 +8753,17 @@ const $75812785bb101fee$export$2174f25d572f9f31 = ()=>{
8728
8753
 
8729
8754
 
8730
8755
  const $20431dc869bb21e0$var$generateVideoThumbnailAndGetDuration = (file)=>{
8731
- return new Promise((resolve)=>{
8756
+ return new Promise((resolve, reject)=>{
8732
8757
  const canvas = document.createElement('canvas');
8733
8758
  const video = document.createElement('video');
8734
8759
  video.autoplay = true;
8735
8760
  video.muted = true;
8736
8761
  video.currentTime = 3;
8737
8762
  video.src = URL.createObjectURL(file);
8763
+ video.onerror = (e)=>{
8764
+ console.error('video error', e);
8765
+ reject(e);
8766
+ };
8738
8767
  video.onloadeddata = ()=>{
8739
8768
  let ctx = canvas.getContext('2d');
8740
8769
  canvas.width = video.videoWidth;
@@ -8759,9 +8788,9 @@ const $20431dc869bb21e0$export$b3fd96a52c80b3af = ()=>{
8759
8788
  const onUploadClick = async (event)=>{
8760
8789
  const file = event.target.files?.[0];
8761
8790
  if (file && !isRecording) {
8762
- const type = file.type.split('/')[0];
8791
+ const [type, subtype] = file.type.split('/');
8763
8792
  const createdAt = Date.now();
8764
- const mode = type === 'image' ? 'photo' : type;
8793
+ const mode = type === 'image' ? 'photo' : type === 'application' ? subtype : type;
8765
8794
  setIncomingAsset({
8766
8795
  mode: mode,
8767
8796
  createdAt: createdAt
@@ -8774,17 +8803,17 @@ const $20431dc869bb21e0$export$b3fd96a52c80b3af = ()=>{
8774
8803
  const url = data.url;
8775
8804
  const filename = data.filename;
8776
8805
  if (type === 'video') {
8777
- const videoData = await $20431dc869bb21e0$var$generateVideoThumbnailAndGetDuration(file);
8778
- thumbnailUrl = videoData.thumbnail;
8779
- duration = videoData.duration;
8780
- }
8806
+ const videoData = await $20431dc869bb21e0$var$generateVideoThumbnailAndGetDuration(file).catch(console.error);
8807
+ thumbnailUrl = videoData?.thumbnail;
8808
+ duration = videoData?.duration;
8809
+ } else if (type === 'image') thumbnailUrl = url;
8781
8810
  if (!url || !filename) throw new Error('upload failed');
8782
8811
  addAsset({
8783
8812
  filename: filename,
8784
8813
  mode: mode,
8785
8814
  url: url,
8786
8815
  duration: duration,
8787
- thumbnailUrl: thumbnailUrl || url,
8816
+ thumbnailUrl: thumbnailUrl,
8788
8817
  createdAt: createdAt,
8789
8818
  networkIssue: false
8790
8819
  });
@@ -8798,6 +8827,7 @@ const $20431dc869bb21e0$export$b3fd96a52c80b3af = ()=>{
8798
8827
  });
8799
8828
  setIncomingAsset(null);
8800
8829
  }
8830
+ event.target.value = '';
8801
8831
  }
8802
8832
  };
8803
8833
  return /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Fragment), {
@@ -8805,7 +8835,7 @@ const $20431dc869bb21e0$export$b3fd96a52c80b3af = ()=>{
8805
8835
  /*#__PURE__*/ (0, $3Sbms$jsx)("input", {
8806
8836
  ref: fileInputRef,
8807
8837
  type: "file",
8808
- accept: "image/*,video/*,audio/*",
8838
+ accept: "image/*,.pdf,video/*,audio/*",
8809
8839
  className: "hidden",
8810
8840
  onChange: onUploadClick
8811
8841
  }),
@@ -9021,9 +9051,11 @@ const $27578d865f5df9aa$export$1885a2ec111b9681 = ({ asset: asset, index: index,
9021
9051
 
9022
9052
 
9023
9053
 
9024
- const $a5dd8f67439dd9eb$var$getStoredAssets = async ()=>{
9054
+ const $a5dd8f67439dd9eb$export$604d5bd0ad31bf4c = 'snapcall_assets';
9055
+ const $a5dd8f67439dd9eb$export$f590a969e8964902 = 'snapcall_tmp_assets';
9056
+ const $a5dd8f67439dd9eb$var$getStoredAssets = async (storageKey = $a5dd8f67439dd9eb$export$604d5bd0ad31bf4c)=>{
9025
9057
  try {
9026
- const storedAssets = JSON.parse(localStorage.getItem('snapcall_assets') || '[]');
9058
+ const storedAssets = JSON.parse(localStorage.getItem(storageKey) || '[]');
9027
9059
  const assets = await Promise.all(storedAssets.map(async (storedAsset)=>{
9028
9060
  try {
9029
9061
  let { url: url, thumbnailUrl: thumbnailUrl, error: error } = await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).readAsset(storedAsset.filename);
@@ -9034,34 +9066,57 @@ const $a5dd8f67439dd9eb$var$getStoredAssets = async ()=>{
9034
9066
  url: url,
9035
9067
  thumbnailUrl: thumbnailUrl
9036
9068
  };
9037
- } else if (error) $a5dd8f67439dd9eb$export$df987b50509121ea(storedAsset.filename);
9069
+ } else if (error) $a5dd8f67439dd9eb$export$df987b50509121ea(storedAsset.filename, storageKey);
9038
9070
  } catch (error) {
9039
- $a5dd8f67439dd9eb$export$df987b50509121ea(storedAsset.filename);
9071
+ $a5dd8f67439dd9eb$export$df987b50509121ea(storedAsset.filename, storageKey);
9040
9072
  }
9041
9073
  }));
9042
9074
  return assets.filter((asset)=>Boolean(asset?.filename));
9043
- } catch (err) {}
9075
+ } catch (err) {
9076
+ console.error('getStoredAssets', 'Error getting stored assets:', err);
9077
+ }
9044
9078
  return [];
9045
9079
  };
9046
- const $a5dd8f67439dd9eb$export$cfdbe7fcc2578443 = (asset)=>{
9080
+ const $a5dd8f67439dd9eb$export$cfdbe7fcc2578443 = (asset, key = $a5dd8f67439dd9eb$export$604d5bd0ad31bf4c)=>{
9047
9081
  try {
9048
- const storedAsset = JSON.parse(localStorage.getItem('snapcall_assets') || '[]');
9049
- storedAsset.push({
9082
+ const storedAssets = JSON.parse(localStorage.getItem(key) || '[]');
9083
+ storedAssets.push({
9050
9084
  ...asset,
9051
9085
  url: undefined,
9052
9086
  thumbnailUrl: null
9053
9087
  });
9054
- localStorage.setItem('snapcall_assets', JSON.stringify(storedAsset));
9055
- } catch (err) {}
9088
+ localStorage.setItem(key, JSON.stringify(storedAssets));
9089
+ } catch (err) {
9090
+ console.error('storeAsset', `Error storing asset in ${key}:`, err);
9091
+ }
9056
9092
  };
9057
- const $a5dd8f67439dd9eb$export$df987b50509121ea = (filename)=>{
9093
+ const $a5dd8f67439dd9eb$export$df987b50509121ea = (filename, key = $a5dd8f67439dd9eb$export$604d5bd0ad31bf4c)=>{
9058
9094
  try {
9059
- const storedAsset = JSON.parse(localStorage.getItem('snapcall_assets') || '[]');
9060
- localStorage.setItem('snapcall_assets', JSON.stringify(storedAsset.filter((asset)=>{
9095
+ const storedAssets = JSON.parse(localStorage.getItem(key) || '[]');
9096
+ localStorage.setItem(key, JSON.stringify(storedAssets.filter((asset)=>{
9061
9097
  return asset.filename !== filename;
9062
9098
  })));
9063
9099
  } catch (err) {}
9064
9100
  };
9101
+ const $a5dd8f67439dd9eb$export$1cdce9790b21db20 = (key = $a5dd8f67439dd9eb$export$604d5bd0ad31bf4c)=>{
9102
+ try {
9103
+ const storedAssets = JSON.parse(localStorage.getItem(key) || '[]');
9104
+ return storedAssets.length;
9105
+ } catch (err) {
9106
+ console.error('getStoredAssetsCount', `Error getting stored assets count in ${key}:`, err);
9107
+ }
9108
+ return 0;
9109
+ };
9110
+ const $a5dd8f67439dd9eb$export$f77b5c3e9feb6db7 = (key, storageKey = $a5dd8f67439dd9eb$export$604d5bd0ad31bf4c)=>{
9111
+ try {
9112
+ const storedAssets = JSON.parse(localStorage.getItem(storageKey) || '[]');
9113
+ if (!storedAssets) return [];
9114
+ return storedAssets.map((asset)=>asset[key]).filter((v)=>v);
9115
+ } catch (err) {
9116
+ console.error('getAssetsValuesByKey', `Error getting stored assets in ${storageKey} for key ${key}:`, err);
9117
+ }
9118
+ return [];
9119
+ };
9065
9120
  const $a5dd8f67439dd9eb$export$931d641a2a152cf = ()=>{
9066
9121
  const storedAssets = (0, $3Sbms$useQuery)({
9067
9122
  queryKey: [
@@ -9076,6 +9131,25 @@ const $a5dd8f67439dd9eb$export$931d641a2a152cf = ()=>{
9076
9131
  });
9077
9132
  return storedAssets;
9078
9133
  };
9134
+ const $a5dd8f67439dd9eb$export$685a373fa752db28 = (options)=>{
9135
+ const tmpAssetsCount = $a5dd8f67439dd9eb$export$1cdce9790b21db20($a5dd8f67439dd9eb$export$f590a969e8964902);
9136
+ const storedAssets = (0, $3Sbms$useQuery)({
9137
+ ...options,
9138
+ queryKey: [
9139
+ 'stored-tmp-assets'
9140
+ ],
9141
+ queryFn: ()=>$a5dd8f67439dd9eb$var$getStoredAssets($a5dd8f67439dd9eb$export$f590a969e8964902),
9142
+ refetchInterval: ()=>{
9143
+ if (tmpAssetsCount > 0) return 500;
9144
+ return false;
9145
+ },
9146
+ refetchOnMount: false,
9147
+ refetchOnReconnect: false,
9148
+ refetchOnWindowFocus: false,
9149
+ staleTime: Infinity
9150
+ });
9151
+ return storedAssets;
9152
+ };
9079
9153
 
9080
9154
 
9081
9155
 
@@ -9109,7 +9183,8 @@ const $e7cb1b9cf7f73f20$var$eventTypes = {
9109
9183
  screen: 'screenshare',
9110
9184
  photo: 'image',
9111
9185
  video: 'video',
9112
- audio: 'audio'
9186
+ audio: 'audio',
9187
+ pdf: 'pdf'
9113
9188
  };
9114
9189
  const $e7cb1b9cf7f73f20$export$ce05094b93c0f011 = ()=>{
9115
9190
  const reportError = (0, $b57f32aadf2afba1$export$5a5695b638d078e7)();
@@ -10051,7 +10126,7 @@ const $e17d510229c71a56$export$50c18ae22f50c0e = ()=>{
10051
10126
  (0, $3Sbms$useEffect)(()=>{
10052
10127
  const onLocalVideo = ()=>{
10053
10128
  const hasCapability = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).isVideoZoomAvailable();
10054
- const isFacingUser = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).webcam.facingMode === 'user';
10129
+ const isFacingUser = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).camera.webcam.facingMode === 'user';
10055
10130
  const zoomAvailable = hasCapability && !isFacingUser;
10056
10131
  setIsZoomAvailable(zoomAvailable);
10057
10132
  if (zoomAvailable) setZoom('1');
@@ -10121,6 +10196,7 @@ const $209863c2c7a7b6c0$export$53819c0e58f98d49 = (props)=>{
10121
10196
 
10122
10197
 
10123
10198
 
10199
+
10124
10200
  const $24e31aa1532c4049$export$f9da3144ae2525a3 = ()=>{
10125
10201
  const { streamUIContainerRef: streamUIContainerRef } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
10126
10202
  const { i18n: i18n, t: t } = (0, $3Sbms$useTranslation)();
@@ -10221,6 +10297,11 @@ const $24e31aa1532c4049$export$f9da3144ae2525a3 = ()=>{
10221
10297
  thumbnailUrl: thumbnail || undefined,
10222
10298
  createdAt: createdAt
10223
10299
  });
10300
+ if ((0, $c9e496369b59be7a$export$2f377c2162fd02b2).tmpFilename) (0, $a5dd8f67439dd9eb$export$cfdbe7fcc2578443)({
10301
+ mode: mode,
10302
+ createdAt: createdAt,
10303
+ ...(0, $c9e496369b59be7a$export$2f377c2162fd02b2).getRecordTmpData()
10304
+ }, (0, $a5dd8f67439dd9eb$export$f590a969e8964902)); // incomplete tmp asset, will be deleted on stopRecord or on asset recovery
10224
10305
  } catch (error) {
10225
10306
  reportError({
10226
10307
  title: t('notifications.somethingWentWrong'),
@@ -10341,6 +10422,10 @@ const $173e051d9a0da063$export$35dc49ae78ec5d63 = {
10341
10422
  extension: '.jpeg',
10342
10423
  thumbnailIcon: (0, $3Sbms$Camera1Icon)
10343
10424
  },
10425
+ pdf: {
10426
+ extension: '.pdf',
10427
+ thumbnailIcon: (0, $3Sbms$File2Icon)
10428
+ },
10344
10429
  video: {
10345
10430
  extension: '.mp4',
10346
10431
  thumbnailIcon: (0, $3Sbms$PlayIcon)
@@ -10352,10 +10437,15 @@ const $173e051d9a0da063$export$35dc49ae78ec5d63 = {
10352
10437
  screen: {
10353
10438
  extension: '.mp4',
10354
10439
  thumbnailIcon: (0, $3Sbms$Monitor2Icon)
10440
+ },
10441
+ other: {
10442
+ extension: '',
10443
+ thumbnailIcon: (0, $3Sbms$FileQuestion3Icon)
10355
10444
  }
10356
10445
  };
10357
10446
  const $173e051d9a0da063$export$a87fb02b17364ba7 = ({ mode: mode, thumbnailUrl: thumbnailUrl, minimal: minimal = false, onClick: onClick })=>{
10358
- const FallbackIcon = $173e051d9a0da063$export$35dc49ae78ec5d63[mode].thumbnailIcon;
10447
+ const assetInfo = $173e051d9a0da063$export$35dc49ae78ec5d63[mode] || $173e051d9a0da063$export$35dc49ae78ec5d63.other;
10448
+ const FallbackIcon = assetInfo.thumbnailIcon;
10359
10449
  const resizedThumbnailUrl = (0, $3Sbms$useMemo)(()=>{
10360
10450
  if (thumbnailUrl) try {
10361
10451
  const url = new URL(thumbnailUrl);
@@ -10371,17 +10461,17 @@ const $173e051d9a0da063$export$a87fb02b17364ba7 = ({ mode: mode, thumbnailUrl: t
10371
10461
  thumbnailUrl
10372
10462
  ]);
10373
10463
  return /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
10374
- className: (0, $3Sbms$classnames)('rounded-lg cursor-pointer shrink-0 border-2', minimal ? 'w-12 h-12 border-white/10' : 'w-[70px] h-[70px] border-gray-200'),
10464
+ className: (0, $3Sbms$classnames)('rounded-lg cursor-pointer shrink-0 border-2 border-white/10 light-theme', minimal ? 'w-12 h-12' : 'w-[70px] h-[70px]'),
10375
10465
  onClick: onClick,
10376
10466
  children: resizedThumbnailUrl ? /*#__PURE__*/ (0, $3Sbms$jsx)("img", {
10377
10467
  className: "w-full h-full rounded-md object-cover",
10378
10468
  src: resizedThumbnailUrl,
10379
10469
  alt: ""
10380
10470
  }) : /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
10381
- className: "flex items-center justify-center w-full h-full bg-gray-50 rounded-md dark-theme",
10471
+ className: "flex items-center justify-center w-full h-full bg-gray-50 rounded-md",
10382
10472
  children: /*#__PURE__*/ (0, $3Sbms$jsx)(FallbackIcon, {
10383
10473
  size: minimal ? 16 : 24,
10384
- className: "text-white"
10474
+ className: "text-gray-900"
10385
10475
  })
10386
10476
  })
10387
10477
  });
@@ -10903,7 +10993,7 @@ const $2e0820b96c3c65d5$export$d70ec5859ea7c9bc = ({ asset: asset, canRemove: ca
10903
10993
  const { removeAsset: removeAsset } = (0, $75812785bb101fee$export$2174f25d572f9f31)();
10904
10994
  const assetPreviewModalState = (0, $3Sbms$useDialogState)();
10905
10995
  const assetDeleteModalState = (0, $3Sbms$useDialogState)();
10906
- const assetInfo = (0, $173e051d9a0da063$export$35dc49ae78ec5d63)[asset.mode];
10996
+ const assetInfo = (0, $173e051d9a0da063$export$35dc49ae78ec5d63)[asset.mode] || (0, $173e051d9a0da063$export$35dc49ae78ec5d63).other;
10907
10997
  const durationSec = asset.duration ? Math.round(asset.duration / 1000) : undefined;
10908
10998
  return /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
10909
10999
  className: "flex flex-col gap-2",
@@ -10957,7 +11047,7 @@ const $2e0820b96c3c65d5$export$d70ec5859ea7c9bc = ({ asset: asset, canRemove: ca
10957
11047
  })
10958
11048
  ]
10959
11049
  }, asset.filename),
10960
- asset.mode !== 'photo' && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $64dee502cbd6331e$export$1ea93f9eface5983), {
11050
+ asset.mode !== 'photo' && asset.mode !== 'pdf' && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $64dee502cbd6331e$export$1ea93f9eface5983), {
10961
11051
  duration: durationSec,
10962
11052
  averageAudioLevel: asset.averageAudioLevel
10963
11053
  })
@@ -11044,7 +11134,7 @@ const $3ecacdd28d707ec1$export$c01bb29adf88f117 = ({ state: state })=>{
11044
11134
  sendAssets.mutate(assets);
11045
11135
  },
11046
11136
  isLoading: sendAssets.isPending,
11047
- disabled: assets.length === 0,
11137
+ disabled: assets.length === 0 || sendAssets.isPending,
11048
11138
  children: [
11049
11139
  /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Send3Icon), {
11050
11140
  size: 18,
@@ -11136,6 +11226,10 @@ const $d6943d128e6c8399$export$336a011955157f9a = ()=>{
11136
11226
  const [isStoppingRecording, setIsStoppingRecording] = (0, $3Sbms$useState)(false);
11137
11227
  const [networkIssue, setNetworkIssue] = (0, $3Sbms$useState)(false);
11138
11228
  const [incomingAsset, setIncomingAsset] = (0, $3Sbms$useState)(null);
11229
+ const storedAssets = (0, $a5dd8f67439dd9eb$export$931d641a2a152cf)();
11230
+ const storedTmpAssets = (0, $a5dd8f67439dd9eb$export$685a373fa752db28)({
11231
+ enabled: !isRecording
11232
+ });
11139
11233
  const videoRef = (0, $3Sbms$useRef)(null);
11140
11234
  const isVideoBotEnabled = Boolean(clientInitResult.flow?.steps?.[0].config?.video_bot);
11141
11235
  const videoBotState = (0, $3Sbms$useDialogState)({
@@ -11158,10 +11252,13 @@ const $d6943d128e6c8399$export$336a011955157f9a = ()=>{
11158
11252
  const geolocation = (0, $2373c427ed4d240e$export$8c959c84e890409a)({
11159
11253
  enabled: recorderOptions?.geolocation === true
11160
11254
  });
11255
+ const closeFlowModalState = flowModalState.close;
11256
+ const openVideoBotState = videoBotState.open;
11161
11257
  const addAsset = (0, $3Sbms$useCallback)((asset)=>{
11162
11258
  const newAsset = asset;
11163
11259
  if (geolocation) newAsset.geolocation = geolocation;
11164
11260
  (0, $a5dd8f67439dd9eb$export$cfdbe7fcc2578443)(newAsset);
11261
+ (0, $a5dd8f67439dd9eb$export$df987b50509121ea)(newAsset.filename, (0, $a5dd8f67439dd9eb$export$f590a969e8964902));
11165
11262
  setAssets((currentAssets)=>[
11166
11263
  ...currentAssets,
11167
11264
  newAsset
@@ -11170,7 +11267,6 @@ const $d6943d128e6c8399$export$336a011955157f9a = ()=>{
11170
11267
  }, [
11171
11268
  geolocation
11172
11269
  ]);
11173
- const storedAssets = (0, $a5dd8f67439dd9eb$export$931d641a2a152cf)();
11174
11270
  (0, $3Sbms$useEffect)(()=>{
11175
11271
  storedAssets.data?.forEach((storedAsset)=>{
11176
11272
  setAssets((currentAssets)=>[
@@ -11178,8 +11274,40 @@ const $d6943d128e6c8399$export$336a011955157f9a = ()=>{
11178
11274
  storedAsset
11179
11275
  ]);
11180
11276
  });
11277
+ if (storedAssets.data?.length) {
11278
+ closeFlowModalState();
11279
+ openVideoBotState();
11280
+ }
11281
+ }, [
11282
+ storedAssets.data,
11283
+ closeFlowModalState,
11284
+ openVideoBotState
11285
+ ]);
11286
+ (0, $3Sbms$useEffect)(()=>{
11287
+ // asset recovery
11288
+ if ((0, $a5dd8f67439dd9eb$export$1cdce9790b21db20)((0, $a5dd8f67439dd9eb$export$f590a969e8964902)) > 0) {
11289
+ closeFlowModalState();
11290
+ openVideoBotState();
11291
+ setIncomingAsset({
11292
+ mode: 'video',
11293
+ createdAt: Date.now()
11294
+ });
11295
+ }
11296
+ storedTmpAssets.data?.forEach((storedAsset)=>{
11297
+ try {
11298
+ addAsset(storedAsset);
11299
+ } catch (error) {}
11300
+ });
11301
+ }, [
11302
+ storedTmpAssets.data,
11303
+ closeFlowModalState,
11304
+ openVideoBotState,
11305
+ addAsset
11306
+ ]);
11307
+ (0, $3Sbms$useEffect)(()=>{
11308
+ if (storedTmpAssets.error) setIncomingAsset(null);
11181
11309
  }, [
11182
- storedAssets.data
11310
+ storedTmpAssets.error
11183
11311
  ]);
11184
11312
  const removeAsset = async (filename)=>{
11185
11313
  try {
@@ -12206,6 +12334,7 @@ const $5916a04ef33296ce$export$6bd92120cafe6ad8 = (options = {})=>{
12206
12334
 
12207
12335
 
12208
12336
 
12337
+
12209
12338
  const $26ed036cbc17809a$var$currentLanguage = (0, $a3e657fb86ae23f3$export$604ba5624273df44)();
12210
12339
  let $26ed036cbc17809a$var$timestampCriticalError = -1;
12211
12340
  const $26ed036cbc17809a$var$endViewStates = [
@@ -12253,6 +12382,8 @@ const $26ed036cbc17809a$var$StreamUI = ({ options: baseOptions })=>{
12253
12382
  const queryClient = (0, $3Sbms$useQueryClient)();
12254
12383
  const reportError = (0, $b57f32aadf2afba1$export$5a5695b638d078e7)();
12255
12384
  const orientation = (containerWidth || window.screen.width) > (containerHeight || window.screen.height) ? 'landscape' : 'portrait';
12385
+ const recordingGroupValues = (0, $a5dd8f67439dd9eb$export$f77b5c3e9feb6db7)('recordingGroup', (0, $a5dd8f67439dd9eb$export$f590a969e8964902));
12386
+ const recordingGroup = recordingGroupValues.length > 0 ? recordingGroupValues[recordingGroupValues.length - 1] : undefined;
12256
12387
  const onWebcamUpdate = (0, $3Sbms$useCallback)((event)=>{
12257
12388
  queryClient.invalidateQueries({
12258
12389
  queryKey: [
@@ -12564,7 +12695,8 @@ const $26ed036cbc17809a$var$StreamUI = ({ options: baseOptions })=>{
12564
12695
  apiKey: uiOptions.apiKey,
12565
12696
  email: uiOptions.email,
12566
12697
  profile: uiOptions.profile,
12567
- authKey: uiOptions.authKey
12698
+ authKey: uiOptions.authKey,
12699
+ recordingGroup: recordingGroup
12568
12700
  }).catch((err)=>console.error(err));
12569
12701
  else setStreamState('expired');
12570
12702
  };
@@ -12578,7 +12710,7 @@ const $26ed036cbc17809a$var$StreamUI = ({ options: baseOptions })=>{
12578
12710
  if (dashboardSession.isSuccess || dashboardSession.isError) {
12579
12711
  const newOptions = {
12580
12712
  ...options,
12581
- apiKey: dashboardSession.data?.apiKey || options.apiKey,
12713
+ apiKey: dashboardSession.data?.api_key || options.apiKey,
12582
12714
  controls: {
12583
12715
  ...options.controls,
12584
12716
  camera: {