@vidtreo/recorder-vue 1.15.0 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/dist/components/StandardRecorder.vue.d.ts +9 -1
- package/dist/components/StandardRecorderContent.vue.d.ts +9 -1
- package/dist/components/VidtreoRecorder.vue.d.ts +9 -1
- package/dist/components/ui/IntegrityChallengeBanner.vue.d.ts +7 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.js +1 -1
- package/dist/recorder-vue.css +1 -1
- package/dist/types/index.d.ts +8 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(){if(typeof document!=='undefined'){const style=document.createElement('style');style.textContent=`:root{--vidtreo-background:0 0% 100%;--vidtreo-foreground:0 0% 3.9%;--vidtreo-card:0 0% 100%;--vidtreo-card-foreground:0 0% 3.9%;--vidtreo-primary:0 0% 9%;--vidtreo-primary-foreground:0 0% 98%;--vidtreo-secondary:0 0% 96.1%;--vidtreo-secondary-foreground:0 0% 9%;--vidtreo-muted:0 0% 96.1%;--vidtreo-muted-foreground:0 0% 45.1%;--vidtreo-accent:0 0% 96.1%;--vidtreo-accent-foreground:0 0% 9%;--vidtreo-destructive:0 84.2% 60.2%;--vidtreo-destructive-foreground:0 0% 98%;--vidtreo-border:0 0% 89.8%;--vidtreo-input:0 0% 89.8%;--vidtreo-ring:0 0% 3.9%;--vidtreo-radius:0.5rem;--vidtreo-preview-bg:0 0% 0%;--vidtreo-z-modal-overlay:9999;--vidtreo-z-settings-panel:200;--vidtreo-z-error-overlay:100;--vidtreo-z-countdown-overlay:20;--vidtreo-z-progress-overlay:20;--vidtreo-z-controls:10}.vidtreo-preview-container{position:relative;width:100%;aspect-ratio:9 / 16;border-radius:0;overflow:visible;background:hsl(var(--vidtreo-preview-bg));display:flex;align-items:center;justify-content:center;border:none;contain:layout style;transform:translateZ(0);will-change:auto;backface-visibility:hidden;isolation:isolate}.vidtreo-preview-container::before{display:none}@media (min-width:768px){.vidtreo-preview-container{aspect-ratio:16 / 9}}.vidtreo-camera-area{width:100%;height:100%;display:none;position:relative;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text",system-ui,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;contain:layout style paint;transform:translateZ(0);backface-visibility:hidden;isolation:isolate;will-change:auto}.vidtreo-source-transition-overlay{position:absolute;inset:0;background:rgba(0,0,0,0.7);display:none;align-items:center;justify-content:center;flex-direction:column;border-radius:0;z-index:var(--vidtreo-z-error-overlay);backdrop-filter:blur(4px);transition:opacity 0.3s ease;transform:translateZ(0);contain:layout style paint;backface-visibility:hidden;will-change:opacity}.vidtreo-source-transition-overlay.vidtreo-active{display:flex;animation:vidtreo-fadeIn 0.2s ease}@keyframes vidtreo-fadeIn{from{opacity:0}to{opacity:1}}.vidtreo-transition-spinner{width:40px;height:40px;border:4px solid rgba(255,255,255,0.3);border-top-color:#667eea;border-radius:50%;animation:vidtreo-spin 0.8s linear infinite;margin-bottom:12px}@keyframes vidtreo-spin{to{transform:rotate(360deg)}}.vidtreo-transition-message{color:white;font-size:14px;font-weight:500;text-align:center}.vidtreo-camera-area.vidtreo-active{display:block}.vidtreo-preview-skeleton{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#000;border-radius:0;z-index:var(--vidtreo-z-controls);gap:1rem;transform:translateZ(0);contain:layout style paint;backface-visibility:hidden;will-change:auto}.vidtreo-skeleton-spinner{width:40px;height:40px;border:4px solid rgba(255,255,255,0.3);border-top-color:#ffffff;border-radius:50%;animation:vidtreo-spin 0.8s linear infinite}.vidtreo-skeleton-text{color:#ffffff;font-size:0.875rem;font-weight:500}.vidtreo-video-preview{width:100%;height:100%;border-radius:0;background:#000;display:block;object-fit:cover;transition:opacity 0.3s ease,transform 0.3s ease;position:absolute;inset:0;transform:translateZ(0);will-change:auto;backface-visibility:hidden}.vidtreo-video-preview-skeleton{position:absolute;inset:0;width:100%;height:100%;border-radius:0;background:#000;overflow:hidden;z-index:2;transform:translateZ(0);contain:layout style paint;backface-visibility:hidden;will-change:auto}.vidtreo-skeleton-shimmer{position:absolute;inset:0;background:linear-gradient( 90deg,hsl(var(--vidtreo-muted)) 0%,hsl(var(--vidtreo-muted) / 0.5) 50%,hsl(var(--vidtreo-muted)) 100% );background-size:200% 100%;animation:vidtreo-shimmer 1.5s ease-in-out infinite}@keyframes vidtreo-shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}.vidtreo-video-preview-skeleton.vidtreo-hidden{opacity:0;pointer-events:none;transition:opacity 0.3s ease}.vidtreo-video-preview.vidtreo-screen-share{object-fit:cover}.vidtreo-video-preview.vidtreo-transitioning{opacity:0.5;transform:scale(0.98)}.vidtreo-countdown-overlay{position:absolute;inset:0;background:rgba(0,0,0,0.95);display:none;align-items:center;justify-content:center;border-radius:0;z-index:var(--vidtreo-z-countdown-overlay);transform:translateZ(0);contain:layout style paint;backface-visibility:hidden;will-change:auto}.vidtreo-countdown-overlay.vidtreo-active{display:flex}.vidtreo-countdown-content{display:flex;flex-direction:column;align-items:center;gap:1rem}.vidtreo-countdown-number{font-size:9rem;font-weight:bold;color:#ffffff;animation:vidtreo-zoomIn 0.3s ease}@keyframes vidtreo-zoomIn{from{transform:scale(0.5);opacity:0}to{transform:scale(1);opacity:1}}.vidtreo-countdown-text{font-size:0.875rem;color:#ffffff;margin-top:1rem;font-weight:500}.vidtreo-settings-panel{position:absolute !important;bottom:4rem !important;left:50% !important;margin-left:-47%;background:rgba(0,0,0,0.4);border:none;border-radius:0.75rem;padding:0.625rem;display:none;flex-direction:column;z-index:var(--vidtreo-z-settings-panel);width:90%;overflow:hidden;contain:layout style paint;transform:translateZ(0);backface-visibility:hidden}.vidtreo-settings-panel.vidtreo-active{display:flex}.vidtreo-settings-content{width:100%;display:flex;flex-direction:column;will-change:transform;transform:translateZ(0);backface-visibility:hidden}.vidtreo-settings-content.vidtreo-slide-right{animation:vidtreo-slideRight 0.3s ease}.vidtreo-settings-content.vidtreo-slide-left{animation:vidtreo-slideLeft 0.3s ease}.vidtreo-settings-content.vidtreo-slide-none{animation:none;will-change:auto}@keyframes vidtreo-slideIn{from{transform:translateY(1rem);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes vidtreo-slideRight{from{transform:translateX(-100%);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes vidtreo-slideLeft{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}.vidtreo-settings-header{display:flex;align-items:center;gap:0.75rem;margin-bottom:1rem;background:none;border:none;color:#ffffff;cursor:pointer;padding:0;width:100%;text-align:left}.vidtreo-settings-back-icon{flex-shrink:0;color:#ffffff}.vidtreo-settings-title{font-size:0.875rem;font-weight:600;margin:0;color:#ffffff}.vidtreo-device-options-container{display:flex;flex-direction:column;gap:0.375rem}.vidtreo-device-option-nav{display:flex;align-items:center;padding:0.5rem 0.75rem;background:none;border:none;cursor:pointer;color:#ffffff;transition:background-color 0.2s ease;width:100%;gap:1rem;border-radius:0.5rem}.vidtreo-device-option-nav:hover{background:rgba(255,255,255,0.2)}.vidtreo-device-option-nav-content{display:flex;align-items:center;gap:0.75rem;flex-shrink:0}.vidtreo-device-option-nav-label{font-size:0.875rem;font-weight:500;color:#ffffff}.vidtreo-device-option-nav-value{display:flex;align-items:center;gap:0.5rem;flex:1;justify-content:flex-end;min-width:0}.vidtreo-device-option-nav-value-text{font-size:0.875rem;color:rgba(255,255,255,0.8);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;text-align:right}.vidtreo-device-option-nav-chevron{font-size:1.25rem;color:#ffffff;line-height:1}.vidtreo-device-list{display:flex;flex-direction:column;gap:0;max-height:200px;overflow-y:auto}.vidtreo-device-list::-webkit-scrollbar{width:4px}.vidtreo-device-list::-webkit-scrollbar-track{background:transparent}.vidtreo-device-list::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.2);border-radius:2px}.vidtreo-device-list::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,0.3)}.vidtreo-device-option{display:flex;align-items:center;padding:0.5rem 0.75rem;background:none;border:none;cursor:pointer;color:#ffffff;transition:background-color 0.2s ease;text-align:left;width:100%;gap:0.75rem;border-radius:0.5rem}.vidtreo-device-option:hover{background:rgba(255,255,255,0.2)}.vidtreo-device-option-check-container{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.vidtreo-device-checkmark-placeholder{width:20px;height:20px;flex-shrink:0}.vidtreo-device-checkmark{color:#ffffff;flex-shrink:0}.vidtreo-device-option-label{font-size:0.875rem;color:#ffffff;flex:1}.vidtreo-device-empty{padding:1rem 0;font-size:0.875rem;color:rgba(255,255,255,0.6);text-align:center}.vidtreo-audio-level-bars{position:absolute !important;bottom:0.75rem !important;right:0.75rem !important;display:flex;align-items:center;gap:0.125rem;height:1rem;z-index:var(--vidtreo-z-controls);transform:translateZ(0);contain:layout style paint;will-change:auto;backface-visibility:hidden}@media (min-width:768px){.vidtreo-audio-level-bars{height:1.25rem}}.vidtreo-audio-level-bar{width:0.125rem;border-radius:9999px;background:rgba(255,255,255,0.5);transition:all 0.1s ease;align-self:flex-end}.vidtreo-recording-controls{position:absolute !important;bottom:12px !important;left:50% !important;transform:translateX(-50%) translateZ(0) !important;z-index:var(--vidtreo-z-controls);contain:layout style;will-change:auto;backface-visibility:hidden}.vidtreo-recording-controls-row{display:flex;align-items:center;justify-content:center;gap:0.5rem;transform:translateZ(0);will-change:auto}.vidtreo-recording-timer-row{display:flex;align-items:center;justify-content:space-between;gap:0.5rem}.vidtreo-recording-timer-badge{position:absolute !important;top:0.75rem !important;right:0.75rem !important;display:flex;align-items:center;gap:0.375rem;background:rgba(0,0,0,0.3);border:none;padding:0.25rem 0.5rem;border-radius:9999px;box-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1),0 1px 2px -1px rgb(0 0 0 / 0.1);z-index:var(--vidtreo-z-controls);transform:translateZ(0);contain:layout style paint;will-change:auto;backface-visibility:hidden}.vidtreo-recording-dot-small{width:0.375rem;height:0.375rem;background:hsl(var(--vidtreo-destructive));border-radius:50%;animation:vidtreo-pulse 1.5s ease-in-out infinite}.vidtreo-recording-timer-text{font-size:0.75rem;font-family:monospace;font-weight:500;color:#ffffff}.vidtreo-control-buttons-row{display:flex;align-items:center;justify-content:center;gap:0.375rem;height:auto;min-height:2rem;transform:translateZ(0);will-change:auto}@media (min-width:768px){.vidtreo-control-buttons-row{min-height:2.25rem}}.vidtreo-control-button{width:2rem;height:2rem;min-height:2rem;max-height:2rem;border-radius:9999px;border:none;background:rgba(0,0,0,0.3);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color 0.2s ease;color:#ffffff;padding:0.25rem;margin:0;flex-shrink:0;box-sizing:border-box;vertical-align:top;position:relative;transform:translateZ(0);contain:layout style paint;will-change:auto;backface-visibility:hidden}.vidtreo-control-button::before{content:"";position:absolute;inset:0.25rem;border-radius:9999px;transition:background-color 0.2s ease;z-index:0}.vidtreo-control-button svg{width:22px !important;height:22px !important;color:inherit;flex-shrink:0;position:relative;z-index:1}@media (min-width:768px){.vidtreo-control-button svg{width:24px !important;height:24px !important}}@media (min-width:768px){.vidtreo-control-button{width:2.25rem;height:2.25rem;min-height:2.25rem;max-height:2.25rem}}.vidtreo-control-button:hover:not(:disabled)::before{background:rgba(255,255,255,0.2)}.vidtreo-control-button:disabled{opacity:0.5;cursor:not-allowed}.vidtreo-control-button.vidtreo-muted::before{background:rgba(0,0,0,0.3)}.vidtreo-control-button.vidtreo-muted:hover:not(:disabled)::before{background:rgba(255,255,255,0.2)}.vidtreo-record-button{height:2rem;min-height:2rem;max-height:2rem;padding:0 0.75rem;border-radius:9999px;font-weight:500;font-size:0.75rem;background:hsl(var(--vidtreo-destructive));color:hsl(var(--vidtreo-destructive-foreground));border:none;display:inline-flex;align-items:center;justify-content:center;gap:0.375rem;transition:background-color 0.2s ease,filter 0.2s ease;width:auto;margin:0;line-height:1;flex-shrink:0;box-sizing:border-box;vertical-align:top;cursor:pointer}@media (min-width:768px){.vidtreo-record-button{height:2.25rem;min-height:2.25rem;max-height:2.25rem;font-size:0.875rem}}.vidtreo-record-button:hover:not(:disabled){filter:brightness(0.85)}.vidtreo-record-button.vidtreo-stop-button-locked{opacity:0.5;cursor:not-allowed;filter:none}.vidtreo-record-button.vidtreo-stop-button-locked:hover{filter:none}#startButton.vidtreo-record-button{animation:vidtreo-record-glow-pulse 2s ease-in-out infinite}@keyframes vidtreo-record-glow-pulse{0%,100%{box-shadow:0 0 8px 2px rgba(239,68,68,0.4),0 0 16px 4px rgba(239,68,68,0.2)}50%{box-shadow:0 0 16px 4px rgba(239,68,68,0.6),0 0 32px 8px rgba(239,68,68,0.3)}}#startButton.vidtreo-record-button:hover:not(:disabled){animation-play-state:paused;box-shadow:0 0 20px 6px rgba(239,68,68,0.7),0 0 40px 10px rgba(239,68,68,0.35)}.vidtreo-rec-indicator-top{position:absolute !important;top:0.75rem !important;left:0.75rem !important;display:flex;align-items:center;gap:0.375rem;background:rgba(0,0,0,0.3);border:none;padding:0.25rem 0.5rem;border-radius:9999px;box-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1),0 1px 2px -1px rgb(0 0 0 / 0.1);transform:translateZ(0);contain:layout style paint;will-change:auto;backface-visibility:hidden}.vidtreo-rec-indicator-top span{font-size:0.75rem;font-weight:500;color:#ffffff}.vidtreo-start-camera-area{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;border:none;border-radius:0;padding:40px;text-align:center;background:#000;transition:all 0.3s ease;cursor:pointer;z-index:1;transform:translateZ(0);contain:layout style paint;backface-visibility:hidden;will-change:auto}.vidtreo-start-camera-area:hover:not(.vidtreo-loading){background:#000}.vidtreo-start-camera-area.vidtreo-loading{cursor:wait;opacity:0.7}.vidtreo-start-camera-area.vidtreo-loading .vidtreo-camera-text{color:#ffffff;opacity:0.7}.vidtreo-camera-icon{font-size:48px;margin-bottom:16px;display:flex;justify-content:center;color:#ffffff}.vidtreo-camera-text{color:#ffffff;font-weight:600;margin-bottom:8px}.vidtreo-camera-text a{color:#3b82f6;text-decoration:underline}.vidtreo-camera-text a:hover{color:#2563eb}.vidtreo-camera-hint{color:#ffffff;font-size:12px;opacity:0.8}@keyframes vidtreo-pulse{0%,100%{opacity:1}50%{opacity:0.3}}.vidtreo-progress{margin-top:20px;display:none}.vidtreo-progress.vidtreo-active{display:block}.vidtreo-progress-bar{width:100%;height:8px;background:#e0e0e0;border-radius:4px;overflow:hidden;margin-bottom:8px}.vidtreo-progress-fill{height:100%;background:linear-gradient(90deg,#667eea 0%,#764ba2 100%);width:0%;transition:width 0.3s ease}.vidtreo-progress-text{text-align:center;color:#ffffff;font-size:14px}.vidtreo-error{position:absolute;top:0.75rem;left:50%;transform:translateX(-50%);padding:1rem 1.25rem;background:#dc2626;border:none;border-radius:0.5rem;color:#ffffff;font-size:0.875rem;font-weight:500;text-align:center;z-index:var(--vidtreo-z-error-overlay);display:none;box-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1),0 2px 4px -2px rgb(0 0 0 / 0.1);max-width:90%;word-wrap:break-word}.vidtreo-error.vidtreo-active{display:block;animation:vidtreo-error-fade-in-slide-down 0.3s ease-out}@keyframes vidtreo-error-fade-in-slide-down{from{opacity:0;transform:translateX(-50%) translateY(-1rem)}to{opacity:1;transform:translateX(-50%) translateY(0)}}.vidtreo-upload-progress{margin-top:20px;display:none}.vidtreo-upload-progress.vidtreo-active{display:block}.vidtreo-preview-container .vidtreo-upload-progress{margin-top:0}.vidtreo-upload-status{margin-top:20px;padding:16px;border-radius:8px;display:none}.vidtreo-upload-status.vidtreo-active{display:block}.vidtreo-upload-status.vidtreo-success{background:#f0f9ff;border:2px solid #48bb78;color:#22543d}.vidtreo-upload-status.vidtreo-error{background:#fee;border:2px solid #fcc;color:#c33}.vidtreo-upload-status-text{font-size:14px;font-weight:500}.vidtreo-preview-error{position:relative;width:100%;aspect-ratio:9 / 16;border-radius:0;overflow:hidden;background:hsl(var(--vidtreo-preview-bg));display:flex;align-items:center;justify-content:center;border:none;contain:strict;transform:translateZ(0);will-change:auto;backface-visibility:hidden;isolation:isolate}@media (min-width:768px){.vidtreo-preview-error{aspect-ratio:16 / 9}}.vidtreo-error-content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem;text-align:center;color:#ffffff;max-width:400px}.vidtreo-error-icon{font-size:3rem;line-height:1}.vidtreo-error-title{font-size:1.25rem;font-weight:600;line-height:1.2}.vidtreo-error-message{font-size:0.875rem;line-height:1.5;opacity:0.9;word-break:break-word}.vidtreo-error-config{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid rgba(255,255,255,0.2);width:100%;text-align:left}.vidtreo-error-config-title{font-size:0.875rem;font-weight:600;margin-bottom:0.75rem;color:#ffffff}.vidtreo-error-config-item{font-size:0.8125rem;line-height:1.6;margin-bottom:0.5rem;color:rgba(255,255,255,0.85)}.vidtreo-error-config-item code{background:rgba(255,255,255,0.15);padding:0.125rem 0.375rem;border-radius:0.25rem;font-family:monospace;font-size:0.75rem;color:#ffffff}.vidtreo-error-retry{margin-top:0.5rem;padding:0.5rem 1rem;border-radius:0.375rem;background:hsl(var(--vidtreo-destructive));color:hsl(var(--vidtreo-destructive-foreground));border:none;font-size:0.875rem;font-weight:500;cursor:pointer;transition:filter 0.2s ease}.vidtreo-error-retry:hover:not(:disabled){filter:brightness(0.85)}.vidtreo-error-retry:disabled{opacity:0.5;cursor:not-allowed}.vidtreo-error-overlay{position:absolute;inset:0;background:hsl(var(--vidtreo-preview-bg));display:flex;align-items:center;justify-content:center;z-index:var(--vidtreo-z-error-overlay)}.vidtreo-native-camera-container{position:relative;width:100%;aspect-ratio:9 / 16;display:flex;align-items:center;justify-content:center;background:hsl(var(--vidtreo-preview-bg));border-radius:0;overflow:hidden}@media (min-width:768px){.vidtreo-native-camera-container{aspect-ratio:16 / 9}}.vidtreo-native-camera-container:has(.vidtreo-native-camera-preview-container){background:transparent}.vidtreo-config-loading-indicator{position:absolute;top:8px;right:8px;z-index:var(--vidtreo-z-controls)}.vidtreo-spinner-small{width:16px;height:16px;border:2px solid rgba(255,255,255,0.3);border-top-color:white;border-radius:50%;animation:spin 0.6s linear infinite}.vidtreo-native-camera-empty-state{position:relative;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:24px}.vidtreo-native-camera-buttons{display:flex;flex-direction:column;gap:12px;width:100%;max-width:300px}.vidtreo-native-camera-process-button,.vidtreo-native-camera-download-button{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);z-index:30}.vidtreo-native-camera-process-button .vidtreo-btn,.vidtreo-native-camera-download-button .vidtreo-btn{min-width:200px}.vidtreo-btn{padding:12px 24px;border-radius:var(--vidtreo-radius);font-size:1rem;font-weight:500;cursor:pointer;border:none;transition:all 0.2s}.vidtreo-btn:disabled{opacity:0.5;cursor:not-allowed}.vidtreo-btn-primary{background:hsl(var(--vidtreo-primary));color:hsl(var(--vidtreo-primary-foreground))}.vidtreo-btn-primary:hover:not(:disabled){filter:brightness(0.9)}.vidtreo-btn-secondary{background:hsl(var(--vidtreo-secondary));color:hsl(var(--vidtreo-secondary-foreground));border:1px solid hsl(var(--vidtreo-border))}.vidtreo-btn-secondary:hover:not(:disabled){background:hsl(var(--vidtreo-accent))}.vidtreo-transcoding-progress{width:100%;max-width:400px;padding:16px}.vidtreo-progress-bar{width:100%;height:8px;background:rgba(255,255,255,0.2);border-radius:4px;overflow:hidden}.vidtreo-progress-fill{height:100%;background:hsl(var(--vidtreo-primary));transition:width 0.3s ease}.vidtreo-progress-text{margin-top:8px;text-align:center;font-size:0.875rem;color:hsl(var(--vidtreo-foreground))}.vidtreo-native-camera-preview-container{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:transparent}.vidtreo-native-camera-preview-image{width:100%;height:100%;object-fit:contain;display:block}.vidtreo-progress-overlay{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(0,0,0,0.7);backdrop-filter:blur(4px);z-index:var(--vidtreo-z-progress-overlay);pointer-events:auto}.vidtreo-progress-overlay .vidtreo-transcoding-progress,.vidtreo-progress-overlay .vidtreo-upload-progress,.vidtreo-native-camera-container>.vidtreo-upload-progress{position:relative;width:90%;max-width:400px;display:flex;flex-direction:column;align-items:center;gap:12px;padding:0;background:transparent;pointer-events:auto}.vidtreo-progress-overlay .vidtreo-progress-bar{width:100%;height:8px;background:rgba(255,255,255,0.2);border-radius:4px;overflow:hidden}.vidtreo-progress-overlay .vidtreo-upload-progress-bar,.vidtreo-native-camera-container>.vidtreo-upload-progress .vidtreo-upload-progress-bar{width:100%;height:8px;background:rgba(255,255,255,0.2);border-radius:4px;overflow:hidden}.vidtreo-progress-overlay .vidtreo-progress-fill{height:100%;background:#ffffff;transition:width 0.3s ease}.vidtreo-progress-overlay .vidtreo-progress-text{margin-top:0;text-align:center;font-size:0.875rem;font-weight:500;color:#ffffff}.vidtreo-progress-overlay .vidtreo-upload-progress-text,.vidtreo-native-camera-container>.vidtreo-upload-progress .vidtreo-upload-progress-text{margin-top:0;text-align:center;font-size:0.875rem;font-weight:500;color:#ffffff}.vidtreo-progress-overlay .vidtreo-upload-progress-bar{width:100%;height:8px;background:rgba(255,255,255,0.2);border-radius:4px;overflow:hidden}.vidtreo-progress-overlay .vidtreo-upload-progress-fill,.vidtreo-native-camera-container>.vidtreo-upload-progress .vidtreo-upload-progress-fill{height:100%;background:#ffffff;transition:width 0.3s ease}.vidtreo-progress-overlay .vidtreo-progress-indeterminate{width:100%;background:linear-gradient( 90deg,transparent 0%,#ffffff 50%,transparent 100% );background-size:200% 100%;animation:vidtreo-progress-indeterminate 1.5s ease-in-out infinite}@keyframes vidtreo-progress-indeterminate{0%{background-position:200% 0}100%{background-position:-200% 0}}.vidtreo-mobile-web-recorder{width:100%;height:100%;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text",system-ui,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.vidtreo-camera-area button,.vidtreo-camera-area input,.vidtreo-camera-area select,.vidtreo-camera-area textarea,.vidtreo-mobile-web-recorder button,.vidtreo-mobile-web-recorder input,.vidtreo-mobile-web-recorder select,.vidtreo-mobile-web-recorder textarea,.vidtreo-permission-flow button{font-family:inherit}.vidtreo-mobile-landing-container{position:relative;width:100%;aspect-ratio:4 / 3;min-height:100%;max-height:100%;display:flex;align-items:center;justify-content:center;background:hsl(var(--vidtreo-preview-bg));border-radius:0;overflow:hidden}.vidtreo-mobile-landing-content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.25rem;padding:2rem;text-align:center}.vidtreo-mobile-landing-title{font-size:1.25rem;font-weight:600;color:#ffffff;margin:0;line-height:1.3}.vidtreo-mobile-landing-description{font-size:0.875rem;color:rgba(255,255,255,0.75);margin:0;max-width:280px;line-height:1.5}.vidtreo-mobile-open-camera-btn{display:inline-flex;align-items:center;gap:0.625rem;padding:0.875rem 1.75rem;font-size:1rem;font-weight:600;min-width:200px;justify-content:center;margin-top:0.5rem;border-radius:9999px;transition:all 0.2s ease;animation:vidtreo-btn-glow-pulse 2s ease-in-out infinite}@keyframes vidtreo-btn-glow-pulse{0%,100%{box-shadow:0 0 8px 2px rgba(255,255,255,0.3),0 0 16px 4px rgba(255,255,255,0.15)}50%{box-shadow:0 0 16px 4px rgba(255,255,255,0.5),0 0 32px 8px rgba(255,255,255,0.25)}}.vidtreo-mobile-open-camera-btn:hover:not(:disabled){transform:scale(1.02);animation-play-state:paused;box-shadow:0 0 20px 6px rgba(255,255,255,0.6),0 0 40px 10px rgba(255,255,255,0.3)}.vidtreo-mobile-open-camera-btn:active:not(:disabled){transform:scale(0.98)}.vidtreo-mobile-open-camera-btn:disabled{animation:none;box-shadow:none}#vidtreo-portal-root{position:fixed;top:0;left:0;width:100vw;height:100vh;height:100dvh;z-index:9999;pointer-events:none}#vidtreo-portal-root>*{pointer-events:auto}.vidtreo-mobile-modal-overlay{--vidtreo-safe-top:0px;--vidtreo-safe-bottom:0px;--vidtreo-safe-left:0px;--vidtreo-safe-right:0px;position:fixed;inset:0;top:0;left:0;width:100vw;height:100vh;height:100dvh;background:#000000;z-index:var(--vidtreo-z-modal-overlay);display:flex;flex-direction:column;animation:vidtreo-modal-fade-in 0.3s ease-out;height:-webkit-fill-available}@keyframes vidtreo-modal-fade-in{from{opacity:0}to{opacity:1}}.vidtreo-mobile-modal-header{position:absolute;top:0;left:0;right:0;padding:0.75rem;padding-top:calc(0.75rem + var(--vidtreo-safe-top,0px));display:flex;justify-content:center;z-index:var(--vidtreo-z-error-overlay);pointer-events:none}.vidtreo-mobile-modal-close-btn,.vidtreo-mobile-prompt-toggle-btn{height:2rem;padding:0 0.75rem;border-radius:9999px;border:none;background:rgba(0,0,0,0.5);color:rgba(255,255,255,0.9);display:flex;align-items:center;justify-content:center;gap:0.375rem;cursor:pointer;transition:all 0.2s ease;pointer-events:auto;backdrop-filter:blur(4px);font-size:0.75rem;font-weight:500}.vidtreo-mobile-modal-close-btn:hover:not(:disabled),.vidtreo-mobile-prompt-toggle-btn:hover:not(:disabled){background:rgba(0,0,0,0.7)}.vidtreo-mobile-modal-close-btn:disabled{opacity:0.3;cursor:not-allowed}.vidtreo-mobile-prompt-toggle-btn{position:absolute;top:calc(0.75rem + var(--vidtreo-safe-top,0px));left:calc(0.75rem + var(--vidtreo-safe-left,0px));width:2rem;padding:0;z-index:var(--vidtreo-z-controls)}.vidtreo-mobile-modal-content{flex:1;display:flex;flex-direction:column;width:100%;height:100%;position:relative;padding-top:var(--vidtreo-safe-top,0px);padding-bottom:var(--vidtreo-safe-bottom,0px);padding-left:var(--vidtreo-safe-left,0px);padding-right:var(--vidtreo-safe-right,0px)}.vidtreo-mobile-recorder-content{--vidtreo-safe-top:0px;--vidtreo-safe-bottom:0px;--vidtreo-safe-left:0px;--vidtreo-safe-right:0px;width:100%;height:100%;display:flex;flex-direction:column;position:relative}.vidtreo-mobile-recorder-content .vidtreo-preview-container{aspect-ratio:unset;height:100%;width:100%;flex:1}.vidtreo-mobile-recorder-content .vidtreo-video-preview{object-fit:cover}.vidtreo-mobile-preview{aspect-ratio:unset !important;height:100% !important;flex:1}.vidtreo-mobile-recorder-content .vidtreo-recording-controls{bottom:calc(24px + var(--vidtreo-safe-bottom,0px)) !important}.vidtreo-mobile-recorder-content .vidtreo-audio-level-bars{bottom:calc(12px + var(--vidtreo-safe-bottom,0px)) !important}.vidtreo-mobile-recorder-content .vidtreo-settings-panel{bottom:calc(7rem + var(--vidtreo-safe-bottom,0px)) !important}.vidtreo-mobile-recorder-content .vidtreo-rec-indicator-top{top:calc(0.75rem + var(--vidtreo-safe-top,0px)) !important;height:2rem;padding:0 0.75rem;contain:layout style}.vidtreo-mobile-recorder-content .vidtreo-recording-timer-badge{top:calc(0.75rem + var(--vidtreo-safe-top,0px)) !important;height:2rem;padding:0 0.75rem;contain:layout style}.vidtreo-mobile-recorder-content .vidtreo-recording-timer-text{font-size:0.875rem;white-space:nowrap;color:#ffffff;min-width:3rem;display:inline-block}.vidtreo-mobile-recorder-content .vidtreo-error{top:calc(3.5rem + var(--vidtreo-safe-top,0px)) !important}.vidtreo-mobile-recording-prompt{position:absolute;top:calc(3.5rem + var(--vidtreo-safe-top,0px));left:calc(1rem + var(--vidtreo-safe-left,0px));right:calc(1rem + var(--vidtreo-safe-right,0px));max-height:min(38vh,15rem);overflow-y:auto;z-index:var(--vidtreo-z-controls);padding:1rem 1.25rem;border-radius:1rem;background:rgba(18,18,18,0.92);color:#ffffff;box-shadow:0 0.5rem 1.5rem rgba(0,0,0,0.24);backdrop-filter:blur(8px);pointer-events:auto;text-align:left}.vidtreo-mobile-recording-prompt--above-countdown{z-index:calc(var(--vidtreo-z-countdown-overlay) + 1)}.vidtreo-mobile-recording-prompt-text{color:#ffffff;font-size:1rem;font-weight:600;line-height:1.4;overflow-wrap:anywhere}.vidtreo-visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.vidtreo-mobile-recorder-content .vidtreo-control-buttons-row{gap:0.75rem;min-height:4rem}.vidtreo-mobile-recorder-content .vidtreo-control-button{width:4rem;height:4rem;min-height:4rem;max-height:4rem}.vidtreo-mobile-recorder-content .vidtreo-control-button svg{width:1.5rem;height:1.5rem}.vidtreo-mobile-recorder-content .vidtreo-record-button{height:4rem;min-height:4rem;max-height:4rem;padding:0 1.5rem;font-size:1rem;gap:0.5rem}.vidtreo-mobile-recorder-content .vidtreo-record-button svg{width:1.5rem;height:1.5rem}.vidtreo-permission-flow{position:absolute;inset:0;background:#000;display:none;flex-direction:column;align-items:center;justify-content:center;gap:1.25rem;z-index:var(--vidtreo-z-modal-overlay);transform:translateZ(0);contain:layout style paint;backface-visibility:hidden;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text",system-ui,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.vidtreo-permission-flow.vidtreo-active{display:flex;animation:vidtreo-fadeIn 0.4s cubic-bezier(0.2,0,0,1)}.vidtreo-permission-flow-title{font-size:1.25rem;font-weight:600;color:#fff;margin:0;text-align:center;line-height:1.3}.vidtreo-permission-flow-subtitle{font-size:0.875rem;color:rgba(255,255,255,0.75);margin:0;text-align:center;line-height:1.5;letter-spacing:-0.005em;max-width:280px}.vidtreo-permission-flow-action{display:inline-flex;align-items:center;justify-content:center;gap:0.625rem;margin-top:0.5rem;padding:0.875rem 1.75rem;background:hsl(var(--vidtreo-primary));color:hsl(var(--vidtreo-primary-foreground));border:none;border-radius:9999px;font-size:1rem;font-weight:600;cursor:pointer;transition:all 0.2s ease;min-width:200px;letter-spacing:-0.01em;animation:vidtreo-btn-glow-pulse 2s ease-in-out infinite}.vidtreo-permission-flow-action:hover:not(:disabled){transform:scale(1.02);animation-play-state:paused;box-shadow:0 0 20px 6px rgba(255,255,255,0.6),0 0 40px 10px rgba(255,255,255,0.3)}.vidtreo-permission-flow-action:active:not(:disabled){transform:scale(0.98)}.vidtreo-permission-flow-action:disabled{opacity:0.5;cursor:not-allowed;animation:none;box-shadow:none}.vidtreo-permission-flow-action--requesting{opacity:0.55;cursor:wait;animation:none;box-shadow:none}@keyframes vidtreo-spinner-rotate{to{transform:rotate(360deg)}}.vidtreo-permission-flow-spinner{display:inline-block;width:1.125rem;height:1.125rem;border:2px solid rgba(255,255,255,0.3);border-top-color:hsl(var(--vidtreo-primary-foreground));border-radius:50%;animation:vidtreo-spinner-rotate 0.8s linear infinite;flex-shrink:0}.vidtreo-permission-flow-spinner--large{width:2.5rem;height:2.5rem;border-width:3px}.vidtreo-permission-flow-recovery{display:flex;flex-direction:column;align-items:center;gap:1.25rem;max-width:280px;text-align:center}.vidtreo-permission-flow-recovery-text{font-size:0.75rem;color:rgba(255,255,255,0.4);line-height:1.6;letter-spacing:-0.005em;margin:0}.vidtreo-permission-flow-retry{display:inline-flex;align-items:center;justify-content:center;gap:0.625rem;padding:0.875rem 1.75rem;background:hsl(var(--vidtreo-primary));color:hsl(var(--vidtreo-primary-foreground));border:none;border-radius:9999px;font-size:1rem;font-weight:600;cursor:pointer;transition:all 0.2s ease;min-width:200px;letter-spacing:-0.01em;animation:vidtreo-btn-glow-pulse 2s ease-in-out infinite}.vidtreo-permission-flow-retry:hover:not(:disabled){transform:scale(1.02);animation-play-state:paused;box-shadow:0 0 20px 6px rgba(255,255,255,0.6),0 0 40px 10px rgba(255,255,255,0.3)}.vidtreo-permission-flow-retry:active:not(:disabled){transform:scale(0.98)}@keyframes vidtreo-fadeOut{from{opacity:1}to{opacity:0}}.vidtreo-permission-flow.vidtreo-permission-flow--fading{animation:vidtreo-fadeOut 0.6s ease-out forwards;pointer-events:none}.vidtreo-recovery-guide{width:100%;max-width:280px;margin:0 auto;position:relative}.vidtreo-recovery-guide::after{content:"";position:absolute;bottom:0;left:0;right:0;height:60px;background:linear-gradient(to bottom,transparent 0%,#000 100%);z-index:20;pointer-events:none}.vidtreo-recovery-guide::before{content:"";position:absolute;top:0;right:0;bottom:0;width:50px;background:linear-gradient(to right,transparent 0%,#000 100%);z-index:20;pointer-events:none}.vidtreo-recovery-guide-browser{position:relative;background:#161616;border-radius:10px 0 0 0;overflow:hidden;border-top:1px solid rgba(255,255,255,0.1);border-left:1px solid rgba(255,255,255,0.1);animation:vidtreo-fadeIn 0.5s ease}.vidtreo-recovery-guide-titlebar{position:relative;display:flex;align-items:center;padding:8px 10px;background:#1e1e1e;gap:8px;border-bottom:1px solid rgba(255,255,255,0.06);z-index:3}.vidtreo-recovery-guide-dots{display:flex;gap:5px;flex-shrink:0}.vidtreo-recovery-guide-dot{width:8px;height:8px;border-radius:50%}.vidtreo-recovery-guide-dot--close{background:#ff5f57}.vidtreo-recovery-guide-dot--min{background:#febc2e}.vidtreo-recovery-guide-dot--max{background:#28c840}.vidtreo-recovery-guide-addressbar{flex:1;display:flex;align-items:center;gap:5px;background:#2a2a2a;border-radius:5px;padding:4px 8px;min-width:0}.vidtreo-recovery-guide-lock{flex-shrink:0;color:rgba(255,255,255,0.5);display:flex;align-items:center;animation:vidtreo-lock-pulse 7s ease-in-out infinite}.vidtreo-recovery-guide-lock-svg{display:block}.vidtreo-recovery-guide-url{font-size:0.65rem;color:rgba(255,255,255,0.5);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:-apple-system,BlinkMacSystemFont,system-ui,sans-serif}.vidtreo-recovery-guide-cursor{position:absolute;left:62px;top:12px;z-index:40;pointer-events:none;animation:vidtreo-cursor-move 7s ease-in-out infinite;filter:drop-shadow(0 2px 4px rgba(0,0,0,0.6))}.vidtreo-recovery-guide-cursor-svg{display:block}.vidtreo-recovery-guide-browser-bg{height:110px;background:#161616}.vidtreo-recovery-guide-popover{position:absolute;top:34px;left:12px;right:12px;background:#252525;border-radius:10px;padding:8px 12px 12px;border:1px solid rgba(255,255,255,0.1);box-shadow:0 8px 30px rgba(0,0,0,0.6),0 2px 8px rgba(0,0,0,0.4),0 0 0 1px rgba(255,255,255,0.06);z-index:30;animation:vidtreo-popover-reveal 7s ease-in-out infinite}.vidtreo-recovery-guide-popover-header{font-size:0.65rem;font-weight:600;color:rgba(255,255,255,0.85);padding-bottom:6px;font-family:-apple-system,BlinkMacSystemFont,system-ui,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}.vidtreo-recovery-guide-popover-divider{height:1px;background:rgba(255,255,255,0.08)}.vidtreo-recovery-guide-perm-row{display:flex;align-items:center;justify-content:space-between;padding:7px 0}.vidtreo-recovery-guide-perm-row + .vidtreo-recovery-guide-perm-row{border-top:1px solid rgba(255,255,255,0.06)}.vidtreo-recovery-guide-perm-group{display:flex;align-items:center;gap:8px}.vidtreo-recovery-guide-perm-icon{position:relative;width:14px;height:14px;flex-shrink:0}.vidtreo-recovery-guide-icon-off,.vidtreo-recovery-guide-icon-on{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.vidtreo-recovery-guide-icon-off{color:rgba(255,255,255,0.4);animation:vidtreo-icon-hide 7s ease-in-out infinite}.vidtreo-recovery-guide-icon-on{color:#34d399;animation:vidtreo-icon-show 7s ease-in-out infinite}.vidtreo-recovery-guide-perm-label{font-size:0.7rem;color:rgba(255,255,255,0.85);font-family:-apple-system,BlinkMacSystemFont,system-ui,sans-serif}.vidtreo-recovery-guide-switch{position:relative;width:32px;height:18px;flex-shrink:0}.vidtreo-recovery-guide-switch-track{position:absolute;inset:0;border-radius:9px;background:rgba(255,255,255,0.15);animation:vidtreo-track-on 7s ease-in-out infinite}.vidtreo-recovery-guide-switch-knob{position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,0.3);animation:vidtreo-knob-slide 7s ease-in-out infinite}.vidtreo-recovery-guide-switch--delayed{animation-delay:0.85s}@keyframes vidtreo-cursor-move{0%{transform:translate(100px,12px);opacity:0}8%{opacity:1}22%{transform:translate(0,0)}26%{transform:translate(0,0) scale(0.75)}30%{transform:translate(0,0) scale(1);opacity:1}33%{transform:translate(0,0);opacity:1}38%{transform:translate(65px,63px);opacity:1}42%{transform:translate(65px,63px) scale(0.75)}45%{transform:translate(65px,63px) scale(1);opacity:1}48%{transform:translate(65px,97px);opacity:1}52%{transform:translate(65px,97px) scale(0.75)}55%{transform:translate(65px,97px) scale(1);opacity:1}60%{opacity:0}100%{transform:translate(100px,12px);opacity:0}}@keyframes vidtreo-popover-reveal{0%,27%{opacity:0;transform:translateY(-6px) scale(0.96)}33%,82%{opacity:1;transform:translateY(0) scale(1)}88%,100%{opacity:0;transform:translateY(-6px) scale(0.96)}}@keyframes vidtreo-track-on{0%,34%{background:rgba(255,255,255,0.15)}40%,92%{background:#34d399}96%,100%{background:rgba(255,255,255,0.15)}}@keyframes vidtreo-knob-slide{0%,34%{transform:translateX(0)}40%,92%{transform:translateX(14px)}96%,100%{transform:translateX(0)}}@keyframes vidtreo-icon-hide{0%,34%{opacity:1}40%,92%{opacity:0}96%,100%{opacity:1}}@keyframes vidtreo-icon-show{0%,34%{opacity:0}40%,92%{opacity:1}96%,100%{opacity:0}}@keyframes vidtreo-lock-pulse{0%,15%{color:rgba(255,255,255,0.5)}22%,30%{color:#34d399}38%,100%{color:rgba(255,255,255,0.5)}}.vidtreo-record-button.vidtreo-record-button-disabled,.vidtreo-record-button-disabled{opacity:0.6;cursor:not-allowed;pointer-events:none;filter:grayscale(0.3)}.vidtreo-mic-connecting-indicator{display:inline-flex;align-items:center;justify-content:center;animation:vidtreo-mic-pulse 1.4s ease-in-out infinite}@keyframes vidtreo-mic-pulse{0%,100%{opacity:0.4}50%{opacity:1}}.vidtreo-audio-error-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(0,0,0,0.85);z-index:var(--vidtreo-z-error-overlay);padding:2rem 1.5rem;text-align:center;animation:vidtreo-audio-overlay-fade-in 0.3s ease-out}@supports (backdrop-filter:blur(8px)){.vidtreo-audio-error-overlay{background:rgba(0,0,0,0.75);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}}@keyframes vidtreo-audio-overlay-fade-in{from{opacity:0}to{opacity:1}}.vidtreo-audio-error-icon{width:56px;height:56px;border-radius:50%;background:rgba(239,68,68,0.15);display:flex;align-items:center;justify-content:center;margin-bottom:1rem}.vidtreo-audio-error-icon svg{width:28px;height:28px;color:#ef4444}.vidtreo-audio-error-title{font-size:1.125rem;font-weight:600;color:#ffffff;margin:0 0 0.5rem;line-height:1.4}.vidtreo-audio-error-message{font-size:0.875rem;color:rgba(255,255,255,0.7);margin:0 0 1.5rem;line-height:1.6;max-width:320px}.vidtreo-audio-error-retry{display:inline-flex;align-items:center;gap:0.5rem;padding:0.75rem 1.5rem;background:#ffffff;color:#111111;border:none;border-radius:9999px;font-size:0.875rem;font-weight:600;cursor:pointer;transition:background 0.15s ease,transform 0.1s ease;font-family:inherit}.vidtreo-audio-error-retry:hover{background:#f0f0f0}.vidtreo-audio-error-retry:active{transform:scale(0.97)}.vidtreo-audio-error-retry svg{width:16px;height:16px}.vidtreo-audio-warning-toast{position:absolute;top:1rem;left:50%;transform:translateX(-50%);z-index:var(--vidtreo-z-error-overlay);display:flex;align-items:flex-start;gap:0.625rem;max-width:min(420px,calc(100% - 2rem));padding:0.625rem 0.875rem;border-radius:12px;font-family:inherit;background:rgba(17,17,17,0.55);color:rgba(255,255,255,0.92);border:1px solid rgba(255,255,255,0.08);box-shadow:0 4px 16px rgba(0,0,0,0.25);animation:vidtreo-audio-warning-toast-fade-in 0.2s ease-out;pointer-events:auto}@supports (backdrop-filter:blur(10px)){.vidtreo-audio-warning-toast{background:rgba(17,17,17,0.45);backdrop-filter:blur(10px) saturate(140%);-webkit-backdrop-filter:blur(10px) saturate(140%)}}.vidtreo-audio-warning-toast--critical{border-color:rgba(239,68,68,0.45)}.vidtreo-audio-warning-toast--critical .vidtreo-audio-warning-toast__icon{color:#ef4444}.vidtreo-audio-warning-toast--soft{border-color:rgba(245,158,11,0.45)}.vidtreo-audio-warning-toast--soft .vidtreo-audio-warning-toast__icon{color:#f59e0b}.vidtreo-audio-warning-toast__icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;margin-top:1px}.vidtreo-audio-warning-toast__content{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 auto}.vidtreo-audio-warning-toast__title{font-size:0.8125rem;font-weight:600;line-height:1.3;color:#ffffff}.vidtreo-audio-warning-toast__message{font-size:0.75rem;font-weight:400;line-height:1.4;color:rgba(255,255,255,0.72)}.vidtreo-audio-warning-toast__dismiss{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;margin-left:0.25rem;border-radius:6px;border:none;background:transparent;color:rgba(255,255,255,0.65);cursor:pointer;transition:background 0.15s ease,color 0.15s ease;font-family:inherit}.vidtreo-audio-warning-toast__dismiss:hover{background:rgba(255,255,255,0.1);color:rgba(255,255,255,0.95)}@keyframes vidtreo-audio-warning-toast-fade-in{from{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%,0)}}.vidtreo-audio-only{--vidtreo-audio-pill-height:3.5rem;--vidtreo-audio-wave-height:1.75rem;position:relative;width:100%;height:auto;contain:none;transform:none;overflow:visible;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text",system-ui,sans-serif;color:hsl(var(--vidtreo-foreground))}@media (prefers-color-scheme:dark){.vidtreo-audio-only{--vidtreo-foreground:0 0% 98%;--vidtreo-card:0 0% 9%;--vidtreo-card-foreground:0 0% 98%;--vidtreo-secondary:0 0% 16%;--vidtreo-secondary-foreground:0 0% 98%;--vidtreo-accent:0 0% 20%;--vidtreo-muted-foreground:0 0% 64%;--vidtreo-border:0 0% 22%}}.dark .vidtreo-audio-only,.vidtreo-audio-only[data-theme="dark"]{--vidtreo-foreground:0 0% 98%;--vidtreo-card:0 0% 9%;--vidtreo-card-foreground:0 0% 98%;--vidtreo-secondary:0 0% 16%;--vidtreo-secondary-foreground:0 0% 98%;--vidtreo-accent:0 0% 20%;--vidtreo-muted-foreground:0 0% 64%;--vidtreo-border:0 0% 22%}.vidtreo-audio-only .vidtreo-audio-warning-toast{position:static;transform:none;width:fit-content;max-width:min(20rem,100%);margin:0.5rem auto 0;background:hsl(var(--vidtreo-card));color:hsl(var(--vidtreo-card-foreground));border-color:hsl(var(--vidtreo-border));box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.vidtreo-audio-only .vidtreo-audio-warning-toast__title{color:hsl(var(--vidtreo-card-foreground))}.vidtreo-audio-only .vidtreo-audio-warning-toast__message{color:hsl(var(--vidtreo-muted-foreground))}.vidtreo-mobile-recorder-content>.vidtreo-audio-only{margin:auto 0;padding:0 1rem}.vidtreo-audio-bar{position:relative;width:100%;max-width:20rem;margin:0 auto;font-size:0.875rem;line-height:1.25;box-sizing:border-box}.vidtreo-audio-bar *,.vidtreo-audio-bar *::before,.vidtreo-audio-bar *::after{box-sizing:border-box}.vidtreo-audio-bar [hidden]{display:none !important}.vidtreo-audio-bar-main{position:relative;display:flex;align-items:center;gap:0.625rem;height:var(--vidtreo-audio-pill-height);padding:0.375rem 0.625rem 0.375rem 0.375rem;background:hsl(var(--vidtreo-preview-bg));color:#ffffff;border-radius:9999px;box-shadow:0 0 0 1px hsl(var(--vidtreo-border) / 0.35)}.vidtreo-audio-bar-primary{position:relative;flex:none;display:grid;place-items:center;width:2.75rem;height:2.75rem;padding:0;border:none;border-radius:9999px;background:hsl(var(--vidtreo-destructive));color:#ffffff;font-size:1.25rem;font-weight:600;font-variant-numeric:tabular-nums;cursor:pointer;transition:transform 0.1s ease,opacity 0.2s ease}.vidtreo-audio-bar-primary:hover:not(:disabled){transform:scale(1.05)}.vidtreo-audio-bar-primary:disabled{cursor:default;opacity:0.75}.vidtreo-audio-bar-primary--start{display:inline-flex;align-items:center;gap:0.375rem;width:auto;height:2.25rem;margin-left:0.25rem;padding:0 0.875rem 0 0.625rem;font-size:0.875rem;font-weight:500;line-height:1;animation:vidtreo-record-glow-pulse 2s ease-in-out infinite}.vidtreo-audio-bar-primary--start .vidtreo-audio-icon{font-size:1.5rem}.vidtreo-audio-bar-primary--start:hover:not(:disabled){animation-play-state:paused;box-shadow:0 0 20px 6px rgba(239,68,68,0.7),0 0 40px 10px rgba(239,68,68,0.35)}.vidtreo-audio-bar-primary--start:disabled{animation:none}.vidtreo-audio-bar[data-state="recording"] .vidtreo-audio-bar-primary::after{content:"";position:absolute;inset:0;border-radius:inherit;border:2px solid hsl(var(--vidtreo-destructive));animation:vidtreo-audio-bar-pulse 1.6s ease-out infinite;pointer-events:none}.vidtreo-audio-bar-center{flex:1;min-width:0;display:flex;align-items:center}.vidtreo-audio-bar:not( [data-state="recording"],[data-state="paused"],[data-state="uploading"] ) .vidtreo-audio-bar-wave{visibility:hidden}.vidtreo-audio-bar-wave{display:flex;flex:1;align-items:center;justify-content:space-between;height:var(--vidtreo-audio-wave-height);overflow:hidden}.vidtreo-audio-bar-wave-bar{flex:none;width:4px;height:calc(max(0.14,var(--vidtreo-level,0)) * 100%);border-radius:9999px;background:rgba(255,255,255,0.6);transition:height 0.08s linear}.vidtreo-audio-bar[data-state="recording"] .vidtreo-audio-bar-wave-bar,.vidtreo-audio-bar[data-state="uploading"] .vidtreo-audio-bar-wave-bar{background:#ffffff}.vidtreo-audio-bar[data-state="paused"] .vidtreo-audio-bar-wave-bar{background:rgba(255,255,255,0.8)}.vidtreo-audio-bar[data-muted="true"] .vidtreo-audio-bar-wave-bar{background:rgba(255,255,255,0.3)}.vidtreo-audio-bar-side{flex:none;display:flex;align-items:center;gap:0.25rem}.vidtreo-audio-bar-time{min-width:2.25rem;font-size:0.75rem;font-weight:500;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;color:rgba(255,255,255,0.7)}.vidtreo-audio-bar-limit{color:rgba(255,255,255,0.45);font-weight:400}.vidtreo-audio-bar-button{position:relative;flex:none;display:grid;place-items:center;width:2.25rem;height:2.25rem;padding:0;border:none;border-radius:9999px;background:transparent;color:#ffffff;font-size:1.375rem;cursor:pointer;transition:background 0.15s ease}.vidtreo-audio-bar-button:hover:not(:disabled),.vidtreo-audio-bar-button[aria-expanded="true"]{background:rgba(255,255,255,0.14)}.vidtreo-audio-bar-button:disabled{cursor:default;opacity:0.4}.vidtreo-audio-bar[data-muted="true"] .vidtreo-audio-bar-button{color:rgba(255,255,255,0.55)}.vidtreo-audio-bar-primary:focus-visible,.vidtreo-audio-bar-button:focus-visible,.vidtreo-audio-bar-menu-item:focus-visible,.vidtreo-audio-bar-action:focus-visible{outline:2px solid hsl(var(--vidtreo-ring));outline-offset:2px}.vidtreo-audio-bar-button:focus-visible{outline-color:#ffffff}.vidtreo-audio-bar-caption{display:flex;align-items:center;justify-content:center;min-height:1.5rem;margin-top:0.5rem;font-size:0.75rem;text-align:center}.vidtreo-audio-bar-status{margin:0;overflow:hidden;font-weight:500;color:hsl(var(--vidtreo-muted-foreground));text-overflow:ellipsis;white-space:nowrap}.vidtreo-audio-bar[data-state="recording"] .vidtreo-audio-bar-status{color:hsl(var(--vidtreo-destructive))}.vidtreo-audio-bar-message{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:0.25rem 0.5rem;min-width:0;max-width:100%;font-size:0.8125rem;color:hsl(var(--vidtreo-muted-foreground))}.vidtreo-audio-bar-message[data-tone="error"]{color:hsl(var(--vidtreo-destructive))}.vidtreo-audio-bar-message[data-tone="success"] .vidtreo-audio-icon{color:hsl(142 71% 36%)}.vidtreo-audio-bar-message-text{flex:1 1 0;min-width:0;margin:0;text-align:left}.vidtreo-audio-bar-message:not(:has(.vidtreo-audio-bar-action)){flex-wrap:nowrap}.vidtreo-audio-bar-message:has(.vidtreo-audio-bar-action)::after{content:"";flex-basis:100%;height:0;order:1}.vidtreo-audio-bar-message .vidtreo-audio-bar-action{order:2}.vidtreo-audio-bar-action{flex:none;display:inline-flex;align-items:center;gap:0.375rem;height:1.75rem;padding:0 0.75rem;border:1px solid hsl(var(--vidtreo-border));border-radius:9999px;background:hsl(var(--vidtreo-secondary));color:hsl(var(--vidtreo-secondary-foreground));font-size:0.75rem;font-weight:500;cursor:pointer}.vidtreo-audio-bar-action:hover:not(:disabled){background:hsl(var(--vidtreo-accent))}.vidtreo-audio-bar-action:disabled{cursor:default;opacity:0.7}.vidtreo-audio-bar-progress{position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none}.vidtreo-audio-bar-progress-fill{position:absolute;bottom:0;left:0;display:block;height:3px;background:hsl(var(--vidtreo-destructive));transition:width 0.2s ease}.vidtreo-audio-bar-menu{position:absolute;top:calc(var(--vidtreo-audio-pill-height) + 0.375rem);right:0;z-index:var(--vidtreo-z-settings-panel);width:min(18rem,100%);max-height:16rem;padding:0.25rem;overflow-y:auto;background:hsl(var(--vidtreo-card));color:hsl(var(--vidtreo-card-foreground));border:1px solid hsl(var(--vidtreo-border));border-radius:0.875rem;box-shadow:0 10px 24px -8px rgb(0 0 0 / 0.25),0 2px 6px -2px rgb(0 0 0 / 0.15)}.vidtreo-audio-bar-menu-title{margin:0;padding:0.375rem 0.5rem 0.25rem;font-size:0.6875rem;font-weight:600;letter-spacing:0.04em;text-transform:uppercase;color:hsl(var(--vidtreo-muted-foreground))}.vidtreo-audio-bar-menu-item{display:flex;align-items:center;gap:0.5rem;width:100%;min-height:2.25rem;padding:0.375rem 0.5rem;border:none;border-radius:0.5rem;background:transparent;color:hsl(var(--vidtreo-card-foreground));font-family:inherit;font-size:0.8125rem;text-align:left;cursor:pointer}.vidtreo-audio-bar-menu-item:hover{background:hsl(var(--vidtreo-secondary))}.vidtreo-audio-bar-menu-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vidtreo-audio-bar-menu-check{flex:none;width:1rem;font-size:1rem}.vidtreo-audio-bar-menu-empty{margin:0;padding:0.5rem;font-size:0.8125rem;color:hsl(var(--vidtreo-muted-foreground))}.vidtreo-audio-icon{display:inline-block;flex:none;width:1em;height:1em;background:currentColor;-webkit-mask:var(--vidtreo-audio-icon) center / contain no-repeat;mask:var(--vidtreo-audio-icon) center / contain no-repeat}.vidtreo-audio-spinner{display:inline-block;flex:none;width:1.125rem;height:1.125rem;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:vidtreo-spin 0.8s linear infinite}@keyframes vidtreo-audio-bar-pulse{from{opacity:0.7;transform:scale(1)}to{opacity:0;transform:scale(1.35)}}@media (prefers-reduced-motion:reduce){.vidtreo-audio-bar-wave-bar,.vidtreo-audio-bar-button,.vidtreo-audio-bar-primary,.vidtreo-audio-bar-progress-fill{transition:none}.vidtreo-audio-bar-primary:hover:not(:disabled){transform:none}.vidtreo-audio-bar-primary--start{animation:none}.vidtreo-audio-bar[data-state="recording"] .vidtreo-audio-bar-primary::after{animation:none;opacity:0.4}.vidtreo-audio-spinner{animation-duration:2.4s}}.vidtreo-audio-icon--mic{--vidtreo-audio-icon:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z%22/%3E%3Cpath d=%22M19 10v2a7 7 0 0 1-14 0v-2%22/%3E%3Cline x1=%2212%22 x2=%2212%22 y1=%2219%22 y2=%2222%22/%3E%3C/svg%3E")}.vidtreo-audio-icon--mic-off{--vidtreo-audio-icon:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cline x1=%222%22 x2=%2222%22 y1=%222%22 y2=%2222%22/%3E%3Cpath d=%22M18.89 13.23A7.12 7.12 0 0 0 19 12v-2%22/%3E%3Cpath d=%22M5 10v2a7 7 0 0 0 12 5%22/%3E%3Cpath d=%22M15 9.34V5a3 3 0 0 0-5.68-1.33%22/%3E%3Cpath d=%22M9 9v3a3 3 0 0 0 5.12 2.12%22/%3E%3Cline x1=%2212%22 x2=%2212%22 y1=%2219%22 y2=%2222%22/%3E%3C/svg%3E")}.vidtreo-audio-icon--stop{--vidtreo-audio-icon:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect width=%2212%22 height=%2212%22 x=%226%22 y=%226%22 rx=%222%22 fill=%22black%22/%3E%3C/svg%3E")}.vidtreo-audio-icon--pause{--vidtreo-audio-icon:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect width=%224%22 height=%2216%22 x=%2214%22 y=%224%22 rx=%221%22/%3E%3Crect width=%224%22 height=%2216%22 x=%226%22 y=%224%22 rx=%221%22/%3E%3C/svg%3E")}.vidtreo-audio-icon--play{--vidtreo-audio-icon:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpolygon points=%226 3 20 12 6 21 6 3%22/%3E%3C/svg%3E")}.vidtreo-audio-icon--settings{--vidtreo-audio-icon:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M20 7h-9%22/%3E%3Cpath d=%22M14 17H5%22/%3E%3Ccircle cx=%2217%22 cy=%2217%22 r=%223%22/%3E%3Ccircle cx=%227%22 cy=%227%22 r=%223%22/%3E%3C/svg%3E")}.vidtreo-audio-icon--check{--vidtreo-audio-icon:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M20 6 9 17l-5-5%22/%3E%3C/svg%3E")}.vidtreo-audio-icon--alert{--vidtreo-audio-icon:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%2210%22/%3E%3Cline x1=%2212%22 x2=%2212%22 y1=%228%22 y2=%2212%22/%3E%3Cline x1=%2212%22 x2=%2212.01%22 y1=%2216%22 y2=%2216%22/%3E%3C/svg%3E")}.vidtreo-audio-icon--retry{--vidtreo-audio-icon:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8%22/%3E%3Cpath d=%22M21 3v5h-5%22/%3E%3C/svg%3E")}.vidtreo-audio-icon--record-start{--vidtreo-audio-icon:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%229%22 fill=%22black%22/%3E%3C/svg%3E")}`;document.head.appendChild(style);}})();import{CONFIG_ERROR_CREDENTIAL_CONFLICT as e,ConfigService as t,DEFAULT_TRANSCODE_CONFIG as n,ERROR_AUDIO_RECORDING_DISABLED as r,ERROR_RECORDING_MARKER_DUPLICATE_ID as i,ERROR_RECORDING_MARKER_INVALID_ID as a,ERROR_RECORDING_MARKER_INVALID_LABEL as o,ERROR_RECORDING_MARKER_LIMIT_REACHED as s,ERROR_RECORDING_MARKER_NOT_RECORDING as c,NativeCameraHandler as l,PermissionFlowOrchestrator as u,RecorderController as d,UPLOAD_ERROR_INSUFFICIENT_CREDITS as f,UPLOAD_ERROR_INSUFFICIENT_CREDITS as p,VideoUploadService as m,calculateBarColor as h,checkRecorderSupport as g,createCredentialConflictError as _,createMarkerNotRecordingError as v,createPermissionFlowOrchestratorDependencies as y,extractErrorMessage as b,getBrowserInfo as x,getDefaultConfigForFormat as S,getUploadErrorCode as C,getUploadErrorCode as w,hasCredentialConflict as T,isCredentialConflictError as E,isMobileDevice as D,isRecordingMarkerError as O,isRepeatedUploadRejection as ee,resolveDeviceError as te,transcodeVideoForNativeCamera as k}from"@vidtreo/recorder";import{Fragment as A,Teleport as j,computed as M,createBlock as N,createCommentVNode as P,createElementBlock as F,createElementVNode as I,createStaticVNode as ne,createTextVNode as L,createVNode as R,defineComponent as z,h as re,inject as B,nextTick as V,normalizeClass as H,normalizeStyle as U,onBeforeUnmount as W,onErrorCaptured as ie,onMounted as ae,openBlock as G,provide as oe,reactive as se,ref as K,renderList as q,renderSlot as ce,shallowRef as le,toDisplayString as J,toRaw as ue,toValue as Y,unref as X,watch as Z,withCtx as de}from"vue";function fe(){return typeof process<`u`&&process.env&&typeof process.env.VIDTREO_API_KEY==`string`?process.env.VIDTREO_API_KEY:null}function pe(e,t,n){return t?null:T(e,n)?_():n||e||fe()!==null?null:Error(`apiKey is required. Provide it as a prop or set VIDTREO_API_KEY environment variable.`)}function me(e,t,n){let r=pe(e,t,n);if(r)throw r;return t||n?``:e||fe()||``}function he(e,t){let n=M(()=>{let{apiKey:t,demo:n,getAccessToken:r}=e();return pe(t,n,r)});return Z(()=>n.value?.message??null,e=>{e===null||n.value===null||t(n.value)},{immediate:!0}),n}function ge(){return{mark:()=>void 0}}function _e(e){return{mark:t=>{if(!e.value)throw v();e.value.mark(t)}}}function ve(e){return{mark:t=>{if(!e.value)throw v();e.value.mark(t)}}}function ye(e){return e===!0?`audio`:`camera`}function be(e){return e===!0?`Microphone access is required. Please enable permissions in your browser settings and reload the page.`:`Camera and microphone access is required. Please enable permissions in your browser settings and reload the page.`}const xe=`https://core.vidtreo.com`,Se={en:{initializingCamera:`Initializing camera...`,grantPermissions:`Grant camera and microphone permissions when prompted`,browserUnsupported:`This browser is not supported`,browserUnsupportedDynamic:`{browser} ({version}) is not supported, please use <a href="https://www.google.com/chrome/" target="_blank" rel="noopener noreferrer">Chrome</a>`,browserUnsupportedSafari:`Safari (latest stable) is supported. If you experience issues, please use <a href="https://www.google.com/chrome/" target="_blank" rel="noopener noreferrer">Chrome</a>`,browserUnsupportedFirefox:`Firefox is not supported, please use <a href="https://www.google.com/chrome/" target="_blank" rel="noopener noreferrer">Chrome</a>`,retryCamera:`Retry Camera`,cameraInUse:`Your camera is being used by another application. Close other apps using the camera (Zoom, Teams, Discord) and try again.`,cameraNotFound:`No camera detected. Connect a camera or check your device settings.`,cameraPermissionDenied:`Camera access was denied. Allow camera access in your browser settings and try again.`,cameraTimeout:`The camera took too long to start. Close other apps using the camera and try again.`,failedToStartCamera:`Failed to start camera`,audioInUse:`Your microphone is being used by another application. Close other apps using the microphone (Zoom, Teams, Discord) and try again.`,audioNotFound:`No microphone detected. Connect a microphone or check your device settings.`,audioPermissionDenied:`Microphone access was denied. Allow microphone access in your browser settings and try again.`,audioTimeout:`The microphone took too long to start. Close other apps using the microphone and try again.`,failedToStartAudio:`Failed to start microphone`,audioErrorTitle:`Microphone unavailable`,audioErrorMessage:`We couldn't access your microphone. It may be in use by another app like Zoom, Teams, or Discord. Please close it and try again.`,audioErrorRetry:`Try again`,audioMissingTitle:`Recording has no audio`,audioMissingMessage:`We couldn't capture audio in this recording. Your microphone may have been disconnected or blocked by the browser. Check your microphone and record again.`,audioSilentTitle:`Recording is silent`,audioSilentMessage:`We didn't detect any sound during the recording. Make sure your microphone is working and not muted by your operating system, then record again.`,audioProcessingErrorTitle:`Audio processing error`,audioProcessingErrorMessage:`We couldn't process the audio in this recording. Please record again.`,audioMissingRetry:`Record again`,audioWarningNoSignalTitle:`No microphone signal`,audioWarningNoSignalMessage:`We're not detecting any sound. Check that your microphone is active.`,audioWarningLowSignalTitle:`Audio is very quiet`,audioWarningLowSignalMessage:`Move closer to the microphone or turn up the input volume.`,audioWarningSpeakingMutedTitle:`You're speaking while muted`,audioWarningSpeakingMutedMessage:`Unmute your microphone if you want your voice in the recording.`,audioWarningTrackEndedTitle:`Microphone disconnected`,audioWarningTrackEndedMessage:`The microphone was disconnected. Reconnect it before continuing.`,audioWarningNoChunksTitle:`No microphone input`,audioWarningNoChunksMessage:`We're not receiving audio from the microphone. Check browser permissions.`,audioWarningTrackMutedTitle:`Microphone muted by browser`,audioWarningTrackMutedMessage:`The browser muted your microphone. Check site settings.`,audioWarningDismiss:`Dismiss`,cameraErrorTitle:`Camera unavailable`,cameraErrorMessage:`We couldn't access your camera. It may be in use by another app. Please close it and try again.`,browserErrorTitle:`Browser not supported`,browserErrorMessage:`Your browser doesn't support video recording. Please use the latest version of Chrome for the best experience.`,recordingCodecUnsupportedTitle:`Recording format not supported`,recordingCodecUnsupportedMessage:`This device can't use the selected video format. Close other apps, update Chrome if possible, and record again.`,recordingMediaEmptyTitle:`No video was produced`,recordingMediaEmptyMessage:`The browser didn't produce a usable video. Check your camera and record again.`,recordingMediaErrorTitle:`Recording could not be finished`,recordingMediaErrorMessage:`The browser reported an error before the video was ready to upload. Record again.`,recordingServerTranscodeFallbackTitle:`Video processing failed`,recordingServerTranscodeFallbackMessage:`We couldn't prepare this video for upload on your device. Record again.`,recordingTrackEndedTitle:`Camera stopped during recording`,recordingTrackEndedMessage:`The camera feed ended before the recording finished. Check that the camera is still connected and record again.`,recordingFinalizeTimeoutTitle:`Recording took too long to finish`,recordingFinalizeTimeoutMessage:`This device may be low on memory or processing power. Close other apps or browser tabs, then record again.`,recordingStateRaceTitle:`Recording did not start correctly`,recordingStateRaceMessage:`The recording could not be finalized because it did not start cleanly. Please refresh the page and record again.`,recordingNoFramesTitle:`No video was captured`,recordingNoFramesMessage:`We couldn't receive video frames from the camera. Check your camera connection and record again.`,recordingUnsupportedTitle:`Recording not available`,recordingUnsupportedMessage:`This device or browser can't record video reliably right now. Check your connection, update Chrome if possible, or use another device.`,recordingPipelineRetry:`Record again`,genericErrorTitle:`Something went wrong`,genericErrorMessage:`An unexpected error occurred. Please try again.`,errorRetry:`Try again`,switchingDevice:`Switching device...`,recordingStartsIn:`Recording starts in...`,switchingSource:`Switching source...`,rec:`REC`,settings:`Settings`,record:`Record`,stop:`Stop`,pause:`Pause`,resume:`Resume`,mute:`Mute`,unmute:`Unmute`,switchSource:`Switch Source`,camera:`Camera`,microphone:`Microphone`,microphoneConnecting:`Connecting microphone...`,minimumRecordingTimeNotReached:`You have not met the minimum recording time yet`,uploading:`Uploading...`,finalizing:`Finalizing…`,retryingUpload:`Retrying upload...`,uploadInsufficientCredits:`This video couldn't be uploaded. Please contact the site administrator.`,uploadInsufficientCreditsTitle:`Video couldn't be uploaded`,uploadErrorClose:`Close`,finishing:`Finishing...`,userInAnotherTab:`User in another tab`,download:`Download`,nativeCameraSelectVideo:`Select Video from Gallery`,nativeCameraRecordVideo:`Record with Camera`,nativeCameraProcessing:`Processing video...`,nativeCameraConfigLoading:`Loading settings...`,nativeCameraConfigLoadError:`Failed to load settings`,nativeCameraPreviewAlt:`Video preview`,errorTitle:`Configuration Error`,errorApiKeyRequired:`An API Key or access token provider is required.`,errorGeneric:`An error occurred while initializing the recorder`,mobileOpenCamera:`Allow Access`,mobileOpenCameraTitle:`Camera & Microphone`,mobileOpenCameraDescription:`We need access to your camera and microphone to start recording`,mobileCloseCamera:`Close`,mobileHideRecordingPrompt:`Hide prompt`,mobileShowRecordingPrompt:`Show prompt`,mobilePermissionDenied:`Camera Access Denied`,mobilePermissionDeniedDescription:`Please allow camera access in your browser settings to record video.`,permissionFlowTitle:`Set Up Your Camera`,permissionFlowCameraTitle:`Camera & Microphone`,permissionFlowMicrophoneTitle:`Camera & Microphone`,permissionFlowCameraLabel:`We need access to your camera and microphone to start recording`,permissionFlowMicrophoneLabel:`We need access to your camera and microphone to start recording`,permissionFlowStatusPending:`Pending`,permissionFlowStatusGranted:`Ready`,permissionFlowStatusDenied:`Blocked`,permissionFlowStatusRequesting:`Click "Allow" in the browser popup above`,permissionFlowAllowCamera:`Allow Access`,permissionFlowAllowMicrophone:`Allow Access`,permissionFlowRetry:`Try Again`,permissionFlowRecoveryTitle:`Allow access to continue`,permissionFlowRecoveryInstructions:`Open your browser settings and allow camera and microphone access, then try again.`,permissionFlowConnecting:`Setting up...`,initializingMicrophone:`Initializing microphone...`,grantMicrophonePermission:`Grant microphone permission when prompted`,retryMicrophone:`Retry Microphone`,audioOnlyReady:`Ready to record`,audioOnlyRecording:`Recording`,audioOnlyPaused:`Paused`,audioOnlyUploading:`Uploading {progress}%`,audioOnlyUploaded:`Upload complete`,audioOnlyElapsedTime:`Elapsed time`,audioOnlyNoMicrophones:`No microphones available`,audioRecordingDisabledTitle:`Audio recording unavailable`,audioRecordingDisabled:`Audio recording is not enabled for this environment`,permissionFlowMicrophoneOnlyTitle:`Microphone`,permissionFlowMicrophoneOnlyLabel:`We need access to your microphone to start recording`,permissionFlowMicrophoneOnlyRecoveryInstructions:`Open your browser settings and allow microphone access, then try again.`,mobileOpenMicrophoneTitle:`Microphone`,mobileOpenMicrophoneDescription:`We need access to your microphone to start recording`},es:{initializingCamera:`Inicializando cámara...`,grantPermissions:`Otorga permisos de cámara y micrófono cuando se solicite`,browserUnsupported:`Este navegador no es compatible`,browserUnsupportedDynamic:`{browser} ({version}) no es compatible, por favor usa <a href="https://www.google.com/chrome/" target="_blank" rel="noopener noreferrer">Chrome</a>`,browserUnsupportedSafari:`Safari (última versión estable) es compatible. Si experimentas problemas, por favor usa <a href="https://www.google.com/chrome/" target="_blank" rel="noopener noreferrer">Chrome</a>`,browserUnsupportedFirefox:`Firefox no es compatible, por favor use <a href="https://www.google.com/chrome/" target="_blank" rel="noopener noreferrer">Chrome</a>`,retryCamera:`Reintentar Cámara`,cameraInUse:`Tu cámara está siendo usada por otra aplicación. Cierra otras apps que usen la cámara (Zoom, Teams, Discord) e intenta de nuevo.`,cameraNotFound:`No se detectó ninguna cámara. Conecta una cámara o revisa la configuración de tu dispositivo.`,cameraPermissionDenied:`Se denegó el acceso a la cámara. Permite el acceso a la cámara en la configuración de tu navegador e intenta de nuevo.`,cameraTimeout:`La cámara tardó demasiado en iniciar. Cierra otras apps que usen la cámara e intenta de nuevo.`,failedToStartCamera:`Error al iniciar la cámara`,audioInUse:`Tu micrófono está siendo usado por otra aplicación. Cierra otras apps que usen el micrófono (Zoom, Teams, Discord) e intenta de nuevo.`,audioNotFound:`No se detectó ningún micrófono. Conecta un micrófono o revisa la configuración de tu dispositivo.`,audioPermissionDenied:`Se denegó el acceso al micrófono. Permite el acceso al micrófono en la configuración de tu navegador e intenta de nuevo.`,audioTimeout:`El micrófono tardó demasiado en iniciar. Cierra otras apps que usen el micrófono e intenta de nuevo.`,failedToStartAudio:`Error al iniciar el micrófono`,audioErrorTitle:`Micrófono no disponible`,audioErrorMessage:`No pudimos acceder a tu micrófono. Puede estar en uso por otra app como Zoom, Teams o Discord. Ciérrala e inténtalo de nuevo.`,audioErrorRetry:`Intentar de nuevo`,audioMissingTitle:`La grabación no tiene audio`,audioMissingMessage:`No pudimos capturar audio en esta grabación. Es posible que el micrófono se haya desconectado o que el navegador lo haya bloqueado. Verifica tu micrófono y vuelve a grabar.`,audioSilentTitle:`La grabación quedó en silencio`,audioSilentMessage:`No detectamos sonido durante la grabación. Verifica que tu micrófono esté funcionando y no esté silenciado por el sistema, luego vuelve a grabar.`,audioProcessingErrorTitle:`Error al procesar el audio`,audioProcessingErrorMessage:`No pudimos procesar el audio de esta grabación. Por favor vuelve a grabar.`,audioMissingRetry:`Grabar de nuevo`,audioWarningNoSignalTitle:`Sin señal del micrófono`,audioWarningNoSignalMessage:`No estamos detectando sonido. Verifica que tu micrófono esté activo.`,audioWarningLowSignalTitle:`Audio muy bajo`,audioWarningLowSignalMessage:`Acércate al micrófono o sube el volumen de entrada.`,audioWarningSpeakingMutedTitle:`Estás hablando muteado`,audioWarningSpeakingMutedMessage:`Activa el micrófono si quieres que tu voz se escuche en la grabación.`,audioWarningTrackEndedTitle:`Micrófono desconectado`,audioWarningTrackEndedMessage:`Se desconectó el micrófono. Reconéctalo antes de continuar.`,audioWarningNoChunksTitle:`Sin entrada del micrófono`,audioWarningNoChunksMessage:`No estamos recibiendo audio del micrófono. Revisa los permisos del navegador.`,audioWarningTrackMutedTitle:`Micrófono silenciado por el navegador`,audioWarningTrackMutedMessage:`El navegador silenció tu micrófono. Revisa la configuración del sitio.`,audioWarningDismiss:`Cerrar`,cameraErrorTitle:`Cámara no disponible`,cameraErrorMessage:`No pudimos acceder a tu cámara. Puede estar en uso por otra app. Ciérrala e inténtalo de nuevo.`,browserErrorTitle:`Navegador no compatible`,browserErrorMessage:`Tu navegador no es compatible con la grabación de video. Por favor usa la última versión de Chrome.`,recordingCodecUnsupportedTitle:`Formato de grabación no compatible`,recordingCodecUnsupportedMessage:`Este dispositivo no puede usar el formato de video seleccionado. Cierra otras apps, actualiza Chrome si es posible y vuelve a grabar.`,recordingMediaEmptyTitle:`No se generó ningún video`,recordingMediaEmptyMessage:`El navegador no produjo un video utilizable. Verifica la cámara y vuelve a grabar.`,recordingMediaErrorTitle:`No se pudo finalizar la grabación`,recordingMediaErrorMessage:`El navegador informó un error antes de preparar el video para subirlo. Vuelve a grabar.`,recordingServerTranscodeFallbackTitle:`No se pudo procesar el video`,recordingServerTranscodeFallbackMessage:`No pudimos preparar este video para subirlo en tu dispositivo. Vuelve a grabar.`,recordingTrackEndedTitle:`La cámara se detuvo durante la grabación`,recordingTrackEndedMessage:`La señal de la cámara terminó antes de finalizar la grabación. Verifica que la cámara siga conectada y vuelve a grabar.`,recordingFinalizeTimeoutTitle:`La grabación tardó demasiado en finalizar`,recordingFinalizeTimeoutMessage:`Es posible que este dispositivo tenga poca memoria o potencia de procesamiento. Cierra otras apps o pestañas del navegador y vuelve a grabar.`,recordingStateRaceTitle:`La grabación no inició correctamente`,recordingStateRaceMessage:`No se pudo finalizar la grabación porque no inició correctamente. Actualiza la página y vuelve a grabar.`,recordingNoFramesTitle:`No se capturó video`,recordingNoFramesMessage:`No pudimos recibir fotogramas de video de la cámara. Verifica la conexión de la cámara y vuelve a grabar.`,recordingUnsupportedTitle:`Grabación no disponible`,recordingUnsupportedMessage:`Este dispositivo o navegador no puede grabar video de forma estable ahora. Revisa tu conexión, actualiza Chrome si es posible o usa otro dispositivo.`,recordingPipelineRetry:`Grabar de nuevo`,genericErrorTitle:`Algo salió mal`,genericErrorMessage:`Ocurrió un error inesperado. Por favor inténtalo de nuevo.`,errorRetry:`Intentar de nuevo`,switchingDevice:`Cambiando dispositivo...`,recordingStartsIn:`La grabación comienza en...`,switchingSource:`Cambiando fuente...`,rec:`GRAB`,settings:`Configuración`,record:`Grabar`,stop:`Detener`,pause:`Pausar`,resume:`Reanudar`,mute:`Silenciar`,unmute:`Activar sonido`,switchSource:`Cambiar Fuente`,camera:`Cámara`,microphone:`Micrófono`,microphoneConnecting:`Conectando micrófono...`,minimumRecordingTimeNotReached:`Aun no cumples el tiempo minimo de grabacion`,uploading:`Subiendo...`,finalizing:`Finalizando…`,retryingUpload:`Reintentando subida...`,uploadInsufficientCredits:`No se pudo subir el video. Contacta al administrador del sitio.`,uploadInsufficientCreditsTitle:`No se pudo subir el video`,uploadErrorClose:`Cerrar`,finishing:`Finalizando...`,userInAnotherTab:`Usuario en otra pestaña`,download:`Descargar`,nativeCameraSelectVideo:`Seleccionar Video de la Galería`,nativeCameraRecordVideo:`Grabar con Cámara`,nativeCameraProcessing:`Procesando video...`,nativeCameraConfigLoading:`Cargando configuración...`,nativeCameraConfigLoadError:`No se pudo cargar la configuración`,nativeCameraPreviewAlt:`Vista previa del video`,errorTitle:`Error de Configuración`,errorApiKeyRequired:`Se requiere una API Key o un proveedor de token de acceso.`,errorGeneric:`Ocurrió un error al inicializar la grabadora`,mobileOpenCamera:`Permitir Acceso`,mobileOpenCameraTitle:`Cámara y Micrófono`,mobileOpenCameraDescription:`Necesitamos acceso a tu cámara y micrófono para comenzar a grabar`,mobileCloseCamera:`Cerrar`,mobileHideRecordingPrompt:`Ocultar pregunta`,mobileShowRecordingPrompt:`Mostrar pregunta`,mobilePermissionDenied:`Acceso a Cámara Denegado`,mobilePermissionDeniedDescription:`Por favor permite el acceso a la cámara en la configuración de tu navegador para grabar video.`,permissionFlowTitle:`Configurar tu Cámara`,permissionFlowCameraTitle:`Cámara y Micrófono`,permissionFlowMicrophoneTitle:`Cámara y Micrófono`,permissionFlowCameraLabel:`Necesitamos acceso a tu cámara y micrófono para comenzar a grabar`,permissionFlowMicrophoneLabel:`Necesitamos acceso a tu cámara y micrófono para comenzar a grabar`,permissionFlowStatusPending:`Pendiente`,permissionFlowStatusGranted:`Listo`,permissionFlowStatusDenied:`Bloqueado`,permissionFlowStatusRequesting:`Haz clic en "Permitir" en el aviso del navegador`,permissionFlowAllowCamera:`Permitir Acceso`,permissionFlowAllowMicrophone:`Permitir Acceso`,permissionFlowRetry:`Reintentar`,permissionFlowRecoveryTitle:`Permite el acceso para continuar`,permissionFlowRecoveryInstructions:`Abre la configuración de tu navegador y permite el acceso a la cámara y micrófono, luego intenta de nuevo.`,permissionFlowConnecting:`Preparando...`,initializingMicrophone:`Iniciando micrófono...`,grantMicrophonePermission:`Concede el permiso de micrófono cuando se te solicite`,retryMicrophone:`Reintentar micrófono`,audioOnlyReady:`Listo para grabar`,audioOnlyRecording:`Grabando`,audioOnlyPaused:`En pausa`,audioOnlyUploading:`Subiendo {progress}%`,audioOnlyUploaded:`Subida completada`,audioOnlyElapsedTime:`Tiempo transcurrido`,audioOnlyNoMicrophones:`No hay micrófonos disponibles`,audioRecordingDisabledTitle:`Grabación de audio no disponible`,audioRecordingDisabled:`La grabación de audio no está habilitada para este entorno`,permissionFlowMicrophoneOnlyTitle:`Micrófono`,permissionFlowMicrophoneOnlyLabel:`Necesitamos acceso a tu micrófono para comenzar a grabar`,permissionFlowMicrophoneOnlyRecoveryInstructions:`Abre la configuración de tu navegador y permite el acceso al micrófono, luego intenta de nuevo.`,mobileOpenMicrophoneTitle:`Micrófono`,mobileOpenMicrophoneDescription:`Necesitamos acceso a tu micrófono para comenzar a grabar`}};function Ce(e=`en`,t={}){return{...Se[e]||Se.en,...t}}const we=/^https?:\/\//i;function Te(e){return e!==void 0&&Number.isFinite(e)&&e>0}function Ee(e){return e?we.test(e)?e:`https://${e}`:xe}function De(e){if(e.audioOnly===!0||e.enableTabVisibilityOverlay!==!0)return;let t=e.tabVisibilityOverlayText;return t!==void 0&&t.trim().length>0?t:Ce(e.lang||`en`,e.texts).userInAnotherTab}function Oe(e,t){let n=Te(e),r=Te(t);if(n&&r&&e!==void 0&&t!==void 0&&e>t)throw Error(`minTimeRecord cannot be greater than maxRecordingTime`)}function ke(e,t){Oe(e.minTimeRecord,e.maxRecordingTime);let n={backendUrl:Ee(e.backendUrl)};e.getAccessToken?n.getAccessToken=e.getAccessToken:n.apiKey=t,e.demo!==void 0&&(n.demo=e.demo),e.countdownDuration!==void 0&&(n.countdownDuration=e.countdownDuration),e.maxRecordingTime!==void 0&&(n.maxRecordingTime=e.maxRecordingTime),e.userMetadata&&(n.userMetadata=e.userMetadata),e.enableSourceSwitching!==void 0&&(n.enableSourceSwitching=e.enableSourceSwitching),e.enableMute!==void 0&&(n.enableMute=e.enableMute),e.enablePause!==void 0&&(n.enablePause=e.enablePause),e.enableDeviceChange!==void 0&&(n.enableDeviceChange=e.enableDeviceChange),e.enableTabVisibilityOverlay!==void 0&&(n.enableTabVisibilityOverlay=e.enableTabVisibilityOverlay),e.audioOnly===!0&&(n.enableTabVisibilityOverlay=!1);let r=De(e);return r!==void 0&&(n.tabVisibilityOverlayText=r),n}const Ae=1e3,je=/^\d+$/;function Me(e){return je.test(e)}function Ne(e){let t=e.trim();if(t.length===0)return 0;let n=t.split(`:`);if(n.length!==2&&n.length!==3)return 0;for(let e of n)if(!Me(e))return 0;if(n.length===2){let e=Number.parseInt(n[0],10),t=Number.parseInt(n[1],10);return(e*60+t)*Ae}let r=Number.parseInt(n[0],10),i=Number.parseInt(n[1],10),a=Number.parseInt(n[2],10);return((r*60+i)*60+a)*Ae}function Pe(e,t,n){return!n||e==null||Number.isFinite(e)===!1||e<=0?!1:Ne(t)<e}function Fe(){let e=Error(`Minimum recording time has not been reached yet`);return e.code=`recording.minimum-time-not-reached`,e}const Q=new Map,Ie=`vidtreo_permission_retry`,Le=new WeakMap;let Re=1;function ze(e,t,n){if(!n)return`${e}:${t}`;let r=Le.get(n);return r===void 0&&(r=Re,Re+=1,Le.set(n,r)),`provider-${r}:${t}`}function Be(){let e=x(),t=null;e.name.length>0&&(t=e.name);let n=null;return e.version.length>0&&(n=e.version),{browserName:t,browserVersion:n}}function Ve(e){return typeof e==`string`&&(e===`browser.unsupported`||e.startsWith(`camera.`)||e.startsWith(`audio.`)||e.startsWith(`recording.`))?e:null}function He(e){return e.isFinalizingRecording||e.transcodingProgress!==null?!0:e.uploadProgress!==null}function Ue(){return{recordingState:`idle`,stream:null,isMuted:!1,isPaused:!1,isFinalizingRecording:!1,isAudioReady:!1,hasAudioFailed:!1,error:null,errorCode:null,browserName:null,browserVersion:null,countdown:null,timer:``,uploadProgress:null,uploadPhase:null,uploadRetryAttempt:null,uploadErrorCode:null,transcodingProgress:null,transitionMessage:null,isInitialized:!1,recordedBlob:null,audioWarning:null,audioRecovered:!1,devices:{cameras:[],microphones:[],selectedCamera:null,selectedMic:null}}}function We(e){let t=se(Ue()),n=K(0),i=le(null),a={current:null},o={current:!1},s={current:!1},c=typeof e==`function`?e:()=>e,l={current:!1},u={current:`idle`},f={current:!1},p={current:``},m={current:null},h={current:!1},g={current:!1},_={current:!1};function y(){let e=c().getAccessToken;return e?e():Promise.reject(Error(`Access token provider is not set`))}Z(()=>t.recordingState,e=>{u.current=e}),Z(()=>t.isPaused,e=>{f.current=e}),Z(()=>t.timer,e=>{p.current=e});function x(){g.current=!1,t.isFinalizingRecording=!1}function C(){!h.current||_.current||(_.current=!0,c().onRecordingStop?.())}function T(){g.current||(g.current=!0,t.isFinalizingRecording=!0,C())}function E(e,t){c().onUploadProgress?.(e,t)}function D(e){x();let n=b(e),r=!1;if(e&&typeof e==`object`&&`name`in e&&e.name===`NotAllowedError`&&(r=!0,sessionStorage.setItem(Ie,`true`),n=be(c().audioOnly)),t.error=n,t.transcodingProgress=null,e&&typeof e==`object`&&`code`in e){let n=e,r=Ve(n.code);if(r===`browser.unsupported`){t.errorCode=`browser.unsupported`;let e=null;n.browserName&&(e=n.browserName);let r=null;if(n.browserVersion&&(r=n.browserVersion),e===null||r===null){let t=Be();e===null&&(e=t.browserName),r===null&&t.browserVersion&&(r=t.browserVersion)}t.browserName=e,t.browserVersion=r;return}r!==null&&(t.errorCode=r,t.browserName=null,t.browserVersion=null)}let i=c().onError;if(i){let t;t=r?Error(n):e instanceof Error?e:Error(n),i(t)}}function O(){return a.current?a.current.getAudioStreamForAnalysis():null}function te(e){return!(!e||e.getAudioTracks().length===0)}async function k(e){a.current&&(a.current.stopAudioLevelTracking(),await a.current.startAudioLevelTracking(e,{onLevelUpdate:(e,r)=>{n.value=e,t.isMuted=r}}))}async function A(e=5,t=50){for(let n=0;n<e;n+=1){let r=O();if(r)return r;n<e-1&&await new Promise(e=>{setTimeout(e,t)})}return O()}async function j(e,t=!1){if(!a.current)return;let n=a.current.isRecording(),r=null;n&&t?(r=O(),r||=await A()):e&&(r=e),te(r)&&r&&await k(r)}async function M(){if(!(a.current&&t.stream))return;let e=await a.current.getDeviceManager().getAvailableDevices(),n=a.current.getDeviceManager();t.devices={cameras:e.videoinput,microphones:e.audioinput,selectedCamera:n.getSelectedCameraDeviceId(),selectedMic:n.getSelectedMicDeviceId()}}Z(()=>t.stream,()=>{M(),a.current&&t.stream&&a.current.getStream()===ue(t.stream)&&(t.isMuted=a.current.getIsMuted(),t.isPaused=a.current.isPaused())});function N(e){return a.current?a.current.getRecordingMediaType(e):`video`}function P(e){let n=N(e);if(l.current)return Promise.resolve({recordingId:``,uploadUrl:``,blob:e,mediaType:n});if(l.current=!0,c().demo)return l.current=!1,t.transcodingProgress=null,t.uploadProgress=null,t.uploadRetryAttempt=null,t.recordedBlob=e,Promise.resolve({recordingId:``,uploadUrl:``,blob:e,mediaType:n});if(!a.current)return l.current=!1,Promise.reject(Error(`Controller not initialized`));t.transcodingProgress=null,t.uploadProgress=0,t.uploadPhase=null,t.uploadRetryAttempt=null,t.uploadErrorCode=null,E(0,null);let r=c().backendUrl||xe;return a.current.uploadVideo(e,c().apiKey??null,r,c().userMetadata??{},c().getAccessToken).then(()=>({recordingId:``,uploadUrl:``,blob:e,mediaType:n})).catch(e=>{throw t.uploadProgress=null,t.uploadRetryAttempt=null,t.uploadErrorCode=w(e),e}).finally(()=>{l.current=!1})}function F(e){return{onStateChange:e=>{t.recordingState=e,e===`recording`&&(h.current=!0,_.current=!1,c().onRecordingStart?.(),setTimeout(()=>{j(null,!0).catch(()=>{})},100)),e===`idle`&&(C(),h.current=!1)},onCountdownUpdate:(e,n)=>{t.recordingState=e,t.countdown=n},onTimerUpdate:e=>{t.timer=e},onError:D,onFinalizationStart:T,onRecordingComplete:e=>{t.countdown=null;let n=P(e);x(),n.catch(e=>{D(e)})},onClearUploadStatus:()=>{t.uploadProgress=l.current?0:null},onTranscodingProgress:e=>{t.transcodingProgress=e,c().onTranscodingProgress?.(e)},onAudioWarning:e=>{t.audioWarning=e,t.audioRecovered=!1},onAudioRecovered:()=>{t.audioWarning=null,t.audioRecovered=!0},onStopAudioTracking:()=>{a.current&&a.current.stopAudioLevelTracking()},onGetConfig:()=>{if(!a.current)throw Error(`Controller not initialized`);return e?Promise.resolve(S(`mp4`)):a.current.getConfig()}}}function I(){return{onProgress:e=>{t.uploadProgress=e,E(e,t.uploadPhase)},onProgressDetails:e=>{t.uploadPhase=e.phase},onSuccess:e=>{t.uploadProgress=null,t.uploadPhase=null,t.uploadRetryAttempt=null,t.uploadErrorCode=null,t.transcodingProgress=null,c().onUploadComplete?.(e)},onError:e=>{if(ee(e)){c().onUploadError?.(e);return}t.uploadProgress=null,t.uploadPhase=null,t.uploadRetryAttempt=null,t.uploadErrorCode=w(e),t.transcodingProgress=null,c().onUploadError?.(e)},onRetry:e=>{t.uploadProgress=t.uploadProgress??0,t.uploadRetryAttempt=e.attempt},onClearStatus:()=>{t.uploadRetryAttempt=null}}}function ne(){return{onStreamStart:async e=>{t.stream=e,t.error=null,t.errorCode=null,t.browserName=null,t.browserVersion=null;let n=a.current;n&&(m.current&&=(m.current(),null),t.isAudioReady=n.isAudioReady(),t.hasAudioFailed=!1,m.current=n.getStreamManager().on(`audiostatuschange`,({status:e})=>{t.isAudioReady=e===`acquired`,t.hasAudioFailed=e===`failed`})),n?.isRecording()||await j(e,!1).catch(()=>{})},onStreamStop:()=>{a.current&&a.current.stopAudioLevelTracking(),m.current&&=(m.current(),null),t.stream=null,n.value=0,t.isAudioReady=!1,t.hasAudioFailed=!1},onError:e=>{D(e)}}}function L(){return{onSourceChange:async e=>{if(a.current?.isRecording()){if(e===`camera`){let e=a.current?.getStream();if(!e||e.getAudioTracks().length===0)return;await j(e,!1).catch(()=>{});return}await j(null,!0).catch(()=>{})}},onPreviewUpdate:async e=>{let n=a.current?.isRecording();t.stream=e,n||await j(e,!1).catch(()=>{})},onError:D,onTransitionStart:e=>{t.transitionMessage=e},onTransitionEnd:()=>{t.transitionMessage=null}}}function R(){m.current&&=(m.current(),null),a.current&&(a.current.cleanup(),a.current.getStreamManager().destroy(),a.current=null,i.value=null),o.current=!1,s.current=!1}function z(e){let n=e.backendUrl||xe,r=e.apiKey??``,c=ze(r,n,e.getAccessToken);sessionStorage.getItem(Ie)===`true`&&(Q.delete(c),sessionStorage.removeItem(Ie));let l=Q.get(c);if(l)return a.current=l.controller,i.value=l.controller,l.promise.then(()=>{o.current=!0,s.current=!1,t.isInitialized=!0}).catch(e=>{D(e),o.current=!1,s.current=!1,t.isInitialized=!1,Q.delete(c)}),()=>{let e=Q.get(c);e&&e.controller===a.current&&Q.delete(c),R()};s.current=!0,a.current&&(a.current.cleanup(),a.current.getStreamManager().destroy(),a.current=null,i.value=null),o.current=!1;let u={countdownDuration:e.countdownDuration,minTimeRecord:e.minTimeRecord,maxRecordingTime:e.maxRecordingTime,userMetadata:e.userMetadata,enableSourceSwitching:e.enableSourceSwitching,enableMute:e.enableMute,enablePause:e.enablePause,enableDeviceChange:e.enableDeviceChange,enableTabVisibilityOverlay:e.enableTabVisibilityOverlay,tabVisibilityOverlayText:e.tabVisibilityOverlayText,audioOnly:e.audioOnly,lang:e.lang,texts:e.texts},f;f=e.demo?{...u,demo:!0,backendUrl:void 0}:e.getAccessToken?{...u,demo:!1,getAccessToken:y,backendUrl:n}:{...u,demo:!1,apiKey:r,backendUrl:n};let p;try{p=ke(f,e.demo?``:r)}catch(e){return D(e),s.current=!1,t.isInitialized=!1,()=>{}}let m=new d({recording:F(e.demo??!1),upload:I(),stream:ne(),sourceSwitch:L()});a.current=m,i.value=m;let h=m.initialize(p).then(()=>{o.current=!0,s.current=!1,t.isInitialized=!0});return Q.set(c,{promise:h,controller:m}),h.catch(e=>{D(e),o.current=!1,s.current=!1,t.isInitialized=!1,Q.delete(c)}),()=>{let e=Q.get(c);e&&e.controller===a.current&&Q.delete(c),R()}}if(typeof window<`u`){let e=z(c());Z(()=>c().getAccessToken!==void 0,()=>{e(),t.isInitialized=!1,e=z(c())}),W(()=>e())}async function re(e=ye(c().audioOnly)){if(!(a.current&&o.current))throw Error(`Controller not initialized`);await a.current.startStream(e===`audio`?`audio`:`camera`).catch(e=>{throw e instanceof Error&&`code`in e&&e.code===r&&(t.error=b(e),t.errorCode=r),e});let n=a.current.getStream();n&&(t.stream=n,t.error=null,t.errorCode=null,t.browserName=null,t.browserVersion=null,a.current.isRecording()||await j(n,!1).catch(()=>{})),e===`screen`&&await a.current.switchSource(`screen`)}function B(){if(!a.current)throw Error(`Controller not initialized`);return a.current}async function V(e){B().isActive()||await re(e)}async function H(e){let t=B();e!==t.getCurrentSourceType()&&await t.switchSource(e)}function U(e){return e===``||e===`default`?null:e}return{state:t,actions:{startRecording:async(e=ye(c().audioOnly))=>{let n=B();if(He({isFinalizingRecording:g.current,transcodingProgress:t.transcodingProgress,uploadProgress:t.uploadProgress}))throw Error(`Cannot start a new recording while the previous recording is still being processed`);c().demo&&(t.recordedBlob=null),t.audioWarning=null,t.audioRecovered=!1,t.uploadErrorCode=null,await V(e),await H(e),await n.startRecording()},stopRecording:async()=>{if(!a.current)throw Error(`Controller not initialized`);let e=u.current===`recording`||f.current;if(Pe(c().minTimeRecord,p.current,e))throw Fe();if(g.current)throw Error(`Recording is already being finalized`);T();try{let e=await a.current.stopRecording();return{recordingId:``,uploadUrl:``,blob:e,mediaType:N(e)}}finally{x()}},pauseRecording:()=>{a.current&&(a.current.pauseRecording(),t.isPaused=a.current.isPaused())},resumeRecording:()=>{a.current&&(a.current.resumeRecording(),t.isPaused=a.current.isPaused())},toggleMute:()=>{a.current&&(a.current.toggleMute(),t.isMuted=a.current.getIsMuted())},switchSource:async e=>{if(!a.current)throw Error(`Controller not initialized`);await a.current.switchSource(e)},changeCamera:async e=>{if(!a.current)throw Error(`Controller not initialized`);let n=U(e);a.current.setCameraDevice(n);let r=await a.current.switchVideoDevice(n);t.stream=r,t.error=null,t.errorCode=null,t.browserName=null,t.browserVersion=null,a.current.isRecording()||await j(r,!1);let i=a.current.getDeviceManager();t.devices={...t.devices,selectedCamera:i.getSelectedCameraDeviceId()}},changeMic:async e=>{if(!a.current)throw Error(`Controller not initialized`);let n=U(e);a.current.setMicDevice(n);let r=await a.current.switchAudioDevice(n);t.stream=r,t.error=null,t.errorCode=null,t.browserName=null,t.browserVersion=null,a.current.isRecording()||await j(r,!1);let i=a.current.getDeviceManager();t.devices={...t.devices,selectedMic:i.getSelectedMicDeviceId()}},startPreview:re,clearUploadError:()=>{t.uploadErrorCode=null},mark:e=>{let t=a.current;if(!t)throw v();t.mark(e)},downloadVideo:()=>{let e=t.recordedBlob;if(!e)return;let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=`recording-${Date.now()}.mp4`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)},stopPreview:()=>{if(!a.current)return;a.current.stopAudioLevelTracking();let e=a.current.getStream();if(e)for(let t of e.getTracks())t.stop();a.current.getStreamManager().stopStream(),t.stream=null,n.value=0,t.error=null,t.errorCode=null,t.browserName=null,t.browserVersion=null,t.isAudioReady=!1,t.hasAudioFailed=!1},cleanup:()=>{R(),h.current=!1,g.current=!1,_.current=!1,t.isInitialized=!1,t.isFinalizingRecording=!1,t.recordedBlob=null}},audioLevel:n,controller:i}}function Ge(e){let t=typeof e==`function`?e:()=>e,n=K(!1),r={current:!1},i={current:!1},a=We(e),{state:o,actions:s}=a,c=M(()=>{let e=o.recordingState===`recording`,t=o.recordingState===`countdown`,n=o.isFinalizingRecording,r=o.uploadProgress!==null,i=o.transcodingProgress!==null;return!(e||t||n||r||i)});function l(){n.value=!0}function u(){c.value&&(s.stopPreview(),n.value=!1,r.current=!1)}return Z([n,()=>o.isInitialized],([e,n])=>{if(e){if(!n){r.current=!1;return}r.current||(r.current=!0,s.startPreview(ye(t().audioOnly)).catch(()=>{}))}}),Z(n,(e,t,n)=>{e&&(typeof document>`u`||(document.body.style.overflow=`hidden`,n(()=>{document.body.style.overflow=``})))}),Z([n,()=>o.uploadProgress,()=>o.error,()=>o.uploadErrorCode],([e,t,a,o])=>{if(!e)return;let c=i.current,l=t!==null;i.current=l,c&&!l&&!a&&o===null&&(s.stopPreview(),n.value=!1,r.current=!1)}),W(()=>{typeof document<`u`&&(document.body.style.overflow=``)}),{...a,isModalOpen:n,canCloseModal:c,openModal:l,closeModal:u}}const Ke=Symbol(`vidtreoAudioLevel`);function qe(e,t,n,r){return{showSettingsButton:!e&&r.enableDeviceChange!==!1,showMuteButton:e&&r.enableMute!==!1,showPauseButton:e&&r.enablePause!==!1&&t===`recording`&&!n,showResumeButton:e&&r.enablePause!==!1&&n,showStopButton:e,showSwitchSourceButton:e&&r.enableSourceSwitching!==!1&&r.isMobile!==!0&&r.audioOnly!==!0}}const Je=Object.freeze({visible:!1,variant:`generic`,title:``,message:``,canRetry:!1}),Ye=new Set([`recording.audio-no-chunks`,`recording.audio-track-ended`,`recording.no-audio-track`,`recording.no-audio-frames`]),Xe=new Set([`recording.audio-silent`]),Ze=new Set([`recording.audio-zero-channels`,`recording.audio-invalid-sample-rate`]);function Qe(e,t){switch(e){case`audio.in-use`:return{title:t.audioErrorTitle,message:t.audioInUse,retryLabel:t.audioErrorRetry};case`audio.not-found`:case`audio.overconstrained`:return{title:t.audioErrorTitle,message:t.audioNotFound,retryLabel:t.audioErrorRetry};case`audio.permission-denied`:return{title:t.audioErrorTitle,message:t.audioPermissionDenied,retryLabel:t.audioErrorRetry};case`audio.timeout`:return{title:t.audioErrorTitle,message:t.audioTimeout,retryLabel:t.audioErrorRetry};default:break}return e&&Ye.has(e)?{title:t.audioMissingTitle,message:t.audioMissingMessage,retryLabel:t.audioMissingRetry}:e&&Xe.has(e)?{title:t.audioSilentTitle,message:t.audioSilentMessage,retryLabel:t.audioMissingRetry}:e&&Ze.has(e)?{title:t.audioProcessingErrorTitle,message:t.audioProcessingErrorMessage,retryLabel:t.audioMissingRetry}:{title:t.audioErrorTitle,message:t.audioErrorMessage,retryLabel:t.audioErrorRetry}}function $e(e,t){switch(e){case`camera.in-use`:return{title:t.cameraErrorTitle,message:t.cameraInUse,retryLabel:t.errorRetry};case`camera.not-found`:case`camera.overconstrained`:return{title:t.cameraErrorTitle,message:t.cameraNotFound,retryLabel:t.errorRetry};case`camera.permission-denied`:return{title:t.cameraErrorTitle,message:t.cameraPermissionDenied,retryLabel:t.errorRetry};case`camera.timeout`:return{title:t.cameraErrorTitle,message:t.cameraTimeout,retryLabel:t.errorRetry};default:return{title:t.cameraErrorTitle,message:t.cameraErrorMessage,retryLabel:t.errorRetry}}}function et(e,t){switch(e){case`recording.codec-unsupported`:return{title:t.recordingCodecUnsupportedTitle,message:t.recordingCodecUnsupportedMessage,retryLabel:t.recordingPipelineRetry};case`recording.mediarecorder-empty`:return{title:t.recordingMediaEmptyTitle,message:t.recordingMediaEmptyMessage,retryLabel:t.recordingPipelineRetry};case`recording.mediarecorder-error`:return{title:t.recordingMediaErrorTitle,message:t.recordingMediaErrorMessage,retryLabel:t.recordingPipelineRetry};case`recording.post-recording-transcode-fallback`:return{title:t.recordingServerTranscodeFallbackTitle,message:t.recordingServerTranscodeFallbackMessage,retryLabel:t.recordingPipelineRetry};case`recording.track-ended`:return{title:t.recordingTrackEndedTitle,message:t.recordingTrackEndedMessage,retryLabel:t.recordingPipelineRetry};case`recording.finalize-timeout-low-resource`:return{title:t.recordingFinalizeTimeoutTitle,message:t.recordingFinalizeTimeoutMessage,retryLabel:t.recordingPipelineRetry};case`recording.not-started-state-race`:return{title:t.recordingStateRaceTitle,message:t.recordingStateRaceMessage,retryLabel:t.recordingPipelineRetry};case`recording.no-video-frames`:return{title:t.recordingNoFramesTitle,message:t.recordingNoFramesMessage,retryLabel:t.recordingPipelineRetry};case`recording.unsupported-device`:return{title:t.recordingUnsupportedTitle,message:t.recordingUnsupportedMessage,retryLabel:t.recordingPipelineRetry};default:return{title:t.genericErrorTitle,message:t.genericErrorMessage,retryLabel:t.errorRetry}}}function tt(e,t,n,i){if(i===r)return{visible:!0,variant:`audio`,title:t.audioRecordingDisabledTitle,message:t.audioRecordingDisabled,canRetry:!1};if(!e.visible)return Je;switch(e.variant){case`audio`:{let n=Qe(i??null,t);return{visible:!0,variant:`audio`,title:n.title,message:n.message,retryLabel:e.canRetry?n.retryLabel:void 0,canRetry:e.canRetry}}case`browser`:return{visible:!0,variant:`browser`,title:t.browserErrorTitle,message:t.browserErrorMessage,canRetry:!1};case`camera`:{let n=$e(i??null,t);return{visible:!0,variant:`camera`,title:n.title,message:n.message,retryLabel:e.canRetry?n.retryLabel:void 0,canRetry:e.canRetry}}case`generic`:if(e.actionableCode){let n=et(e.actionableCode,t);return{visible:!0,variant:`generic`,title:n.title,message:n.message,retryLabel:e.canRetry?n.retryLabel:void 0,canRetry:e.canRetry}}return{visible:!0,variant:`generic`,title:t.genericErrorTitle,message:n||t.genericErrorMessage,retryLabel:t.errorRetry,canRetry:!0};default:return Je}}function nt(e){return e.trim().replace(/\s+/g,` `)}function rt(e){return e&&nt(e.text)||null}function it(e){return rt(e.prompt)?e.recordingState===`countdown`?e.prompt?.countdown?.show!==!1:e.isRecording:!1}function at(e){return e.isRecording?rt(e.prompt)!==null:!1}function ot(e,t){return t===`countdown`&&e?.countdown?.placement===`above-countdown`?`vidtreo-mobile-recording-prompt vidtreo-mobile-recording-prompt--above-countdown`:`vidtreo-mobile-recording-prompt`}function st(e,t){return e===`finalizing`?t.finalizing:t.uploading}function ct(e,t,n){return t!==null&&t>1?n.retryingUpload:st(e,n)}function lt(e,t){return e.transcodingProgress===null?e.uploadProgress===null?e.isFinalizingRecording?{label:t.finishing,progress:0}:null:{label:ct(e.uploadPhase,e.uploadRetryAttempt,t),progress:e.uploadProgress}:{label:t.finishing,progress:e.transcodingProgress}}function ut(e,t){let n=null;e.isFinalizingRecording&&e.transcodingProgress===null&&e.uploadProgress===null&&(n={label:t.finishing,progress:0});let r=null;e.transcodingProgress!==null&&(r={label:t.finishing,progress:e.transcodingProgress});let i=null;return e.uploadProgress!==null&&(i={label:ct(e.uploadPhase,e.uploadRetryAttempt,t),progress:e.uploadProgress}),{finalizing:n,transcoding:r,upload:i}}function dt(e){return e.isFinalizingRecording||e.uploadProgress!==null||e.transcodingProgress!==null}function ft(e,t){return e===p?t.uploadInsufficientCredits:null}function pt(e){return e===p}function mt(e){return e.isRecording||e.isProcessingRecording?null:e.errorCode}const ht={class:`vidtreo-mobile-recording-prompt-text`},gt={class:`vidtreo-visually-hidden`},_t={"aria-hidden":`true`,class:`vidtreo-mobile-recording-prompt-visible-text`},vt=z({__name:`MobileRecordingPrompt`,props:{className:{},isVisible:{type:Boolean},text:{}},setup(e){let t=e,n=M(()=>nt(t.text)),r=M(()=>n.value?n.value.split(` `):[]),i=K(n.value?1:0);Z(n,e=>{i.value=e?1:0}),Z([()=>t.isVisible,n,i],([e,,t],n,a)=>{if(!e||t>=r.value.length)return;let o=setTimeout(()=>{i.value=Math.min(i.value+1,r.value.length)},273);a(()=>clearTimeout(o))},{immediate:!0});let a=M(()=>r.value.slice(0,i.value).join(` `));return(t,r)=>e.isVisible&&n.value?(G(),F(`div`,{key:0,class:H(e.className)},[I(`div`,ht,[I(`span`,gt,J(n.value),1),I(`span`,_t,J(a.value),1)])],2)):P(`v-if`,!0)}});function $(e,t){return z({name:e,props:{weight:{type:String,default:`regular`},size:{type:[String,Number],default:`1em`},color:{type:String,default:`currentColor`}},setup(e){return()=>re(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 256 256`,width:e.size,height:e.size,fill:e.color},[re(`path`,{d:t[e.weight]})])}})}const yt=$(`PhArrowClockwise`,{bold:`M244,56v48a12,12,0,0,1-12,12H184a12,12,0,1,1,0-24H201.1l-19-17.38c-.13-.12-.26-.24-.38-.37A76,76,0,1,0,127,204h1a75.53,75.53,0,0,0,52.15-20.72,12,12,0,0,1,16.49,17.45A99.45,99.45,0,0,1,128,228h-1.37A100,100,0,1,1,198.51,57.06L220,76.72V56a12,12,0,0,1,24,0Z`}),bt=$(`PhArrowDown`,{bold:`M208.49,152.49l-72,72a12,12,0,0,1-17,0l-72-72a12,12,0,0,1,17-17L116,187V40a12,12,0,0,1,24,0V187l51.51-51.52a12,12,0,0,1,17,17Z`}),xt=$(`PhArrowUp`,{bold:`M208.49,120.49a12,12,0,0,1-17,0L140,69V216a12,12,0,0,1-24,0V69L64.49,120.49a12,12,0,0,1-17-17l72-72a12,12,0,0,1,17,0l72,72A12,12,0,0,1,208.49,120.49Z`}),St=$(`PhCamera`,{fill:`M208,56H180.28L166.65,35.56A8,8,0,0,0,160,32H96a8,8,0,0,0-6.65,3.56L75.71,56H48A24,24,0,0,0,24,80V192a24,24,0,0,0,24,24H208a24,24,0,0,0,24-24V80A24,24,0,0,0,208,56Zm-44,76a36,36,0,1,1-36-36A36,36,0,0,1,164,132Z`}),Ct=$(`PhCameraSlash`,{fill:`M232,80V192a24.52,24.52,0,0,1-.45,4.65,4,4,0,0,1-6.9,2L86,46.08a4,4,0,0,1-.37-4.91l3.74-5.61A8,8,0,0,1,96,32h64a8,8,0,0,1,6.66,3.56L180.28,56H208A24,24,0,0,1,232,80ZM213.92,210.62a8,8,0,1,1-11.84,10.76L197.19,216H48a24,24,0,0,1-24-24V80A24,24,0,0,1,48,56h3.73L42.08,45.38A8,8,0,1,1,53.92,34.62ZM148,161.92l-47.88-52.68A36,36,0,0,0,148,161.92Z`}),wt=$(`PhCaretLeft`,{regular:`M165.66,202.34a8,8,0,0,1-11.32,11.32l-80-80a8,8,0,0,1,0-11.32l80-80a8,8,0,0,1,11.32,11.32L91.31,128Z`}),Tt=$(`PhCheck`,{regular:`M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z`}),Et=$(`PhCircle`,{fill:`M232,128A104,104,0,1,1,128,24,104.13,104.13,0,0,1,232,128Z`}),Dt=$(`PhCloudArrowDown`,{fill:`M247.93,124.52C246.11,77.54,207.07,40,160.06,40A88.1,88.1,0,0,0,81.29,88.67h0A87.48,87.48,0,0,0,72,127.73,8.18,8.18,0,0,1,64.57,136,8,8,0,0,1,56,128a103.66,103.66,0,0,1,5.34-32.92,4,4,0,0,0-4.75-5.18A64.09,64.09,0,0,0,8,152c0,35.19,29.75,64,65,64H160A88.09,88.09,0,0,0,247.93,124.52Zm-50.27,25.14-32,32a8,8,0,0,1-11.32,0l-32-32a8,8,0,0,1,11.32-11.32L152,156.69V96a8,8,0,0,1,16,0v60.69l18.34-18.35a8,8,0,0,1,11.32,11.32Z`}),Ot=$(`PhGear`,{fill:`M216,130.16q.06-2.16,0-4.32l14.92-18.64a8,8,0,0,0,1.48-7.06,107.6,107.6,0,0,0-10.88-26.25,8,8,0,0,0-6-3.93l-23.72-2.64q-1.48-1.56-3-3L186,40.54a8,8,0,0,0-3.94-6,107.29,107.29,0,0,0-26.25-10.86,8,8,0,0,0-7.06,1.48L130.16,40Q128,40,125.84,40L107.2,25.11a8,8,0,0,0-7.06-1.48A107.6,107.6,0,0,0,73.89,34.51a8,8,0,0,0-3.93,6L67.32,64.27q-1.56,1.49-3,3L40.54,70a8,8,0,0,0-6,3.94,107.71,107.71,0,0,0-10.87,26.25,8,8,0,0,0,1.49,7.06L40,125.84Q40,128,40,130.16L25.11,148.8a8,8,0,0,0-1.48,7.06,107.6,107.6,0,0,0,10.88,26.25,8,8,0,0,0,6,3.93l23.72,2.64q1.49,1.56,3,3L70,215.46a8,8,0,0,0,3.94,6,107.71,107.71,0,0,0,26.25,10.87,8,8,0,0,0,7.06-1.49L125.84,216q2.16.06,4.32,0l18.64,14.92a8,8,0,0,0,7.06,1.48,107.21,107.21,0,0,0,26.25-10.88,8,8,0,0,0,3.93-6l2.64-23.72q1.56-1.48,3-3L215.46,186a8,8,0,0,0,6-3.94,107.71,107.71,0,0,0,10.87-26.25,8,8,0,0,0-1.49-7.06ZM128,168a40,40,0,1,1,40-40A40,40,0,0,1,128,168Z`}),kt=$(`PhMicrophone`,{fill:`M80,128V64a48,48,0,0,1,96,0v64a48,48,0,0,1-96,0Zm128,0a8,8,0,0,0-16,0,64,64,0,0,1-128,0,8,8,0,0,0-16,0,80.11,80.11,0,0,0,72,79.6V240a8,8,0,0,0,16,0V207.6A80.11,80.11,0,0,0,208,128Z`,regular:`M128,176a48.05,48.05,0,0,0,48-48V64a48,48,0,0,0-96,0v64A48.05,48.05,0,0,0,128,176ZM96,64a32,32,0,0,1,64,0v64a32,32,0,0,1-64,0Zm40,143.6V240a8,8,0,0,1-16,0V207.6A80.11,80.11,0,0,1,48,128a8,8,0,0,1,16,0,64,64,0,0,0,128,0,8,8,0,0,1,16,0A80.11,80.11,0,0,1,136,207.6Z`}),At=$(`PhMicrophoneSlash`,{fill:`M213.38,229.92a8,8,0,0,1-11.3-.54l-30.92-34A78.83,78.83,0,0,1,136,207.59V240a8,8,0,0,1-16,0V207.6A80.11,80.11,0,0,1,48,128a8,8,0,0,1,16,0,64.07,64.07,0,0,0,64,64,63.41,63.41,0,0,0,32.21-8.68l-11.1-12.2A48,48,0,0,1,80,128V95.09L42.08,53.38A8,8,0,0,1,53.92,42.62l160,176A8,8,0,0,1,213.38,229.92Zm-24.19-63.13a7.88,7.88,0,0,0,3.51.82,8,8,0,0,0,7.19-4.49A79.16,79.16,0,0,0,208,128a8,8,0,0,0-16,0,63.32,63.32,0,0,1-6.48,28.09A8,8,0,0,0,189.19,166.79Zm-27.33-29.22A8,8,0,0,0,175.74,133a49.49,49.49,0,0,0,.26-5V64A48,48,0,0,0,84,44.87a8,8,0,0,0,1.41,8.57Z`}),jt=$(`PhMonitor`,{fill:`M232,64V176a24,24,0,0,1-24,24H48a24,24,0,0,1-24-24V64A24,24,0,0,1,48,40H208A24,24,0,0,1,232,64ZM160,216H96a8,8,0,0,0,0,16h64a8,8,0,0,0,0-16Z`}),Mt=$(`PhPause`,{fill:`M216,48V208a16,16,0,0,1-16,16H160a16,16,0,0,1-16-16V48a16,16,0,0,1,16-16h40A16,16,0,0,1,216,48ZM96,32H56A16,16,0,0,0,40,48V208a16,16,0,0,0,16,16H96a16,16,0,0,0,16-16V48A16,16,0,0,0,96,32Z`}),Nt=$(`PhPlay`,{fill:`M240,128a15.74,15.74,0,0,1-7.6,13.51L88.32,229.65a16,16,0,0,1-16.2.3A15.86,15.86,0,0,1,64,216.13V39.87a15.86,15.86,0,0,1,8.12-13.82,16,16,0,0,1,16.2.3L232.4,114.49A15.74,15.74,0,0,1,240,128Z`}),Pt=$(`PhSquare`,{fill:`M224,48V208a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V48A16,16,0,0,1,48,32H208A16,16,0,0,1,224,48Z`}),Ft=$(`PhVideoCamera`,{fill:`M192,72V184a16,16,0,0,1-16,16H32a16,16,0,0,1-16-16V72A16,16,0,0,1,32,56H176A16,16,0,0,1,192,72Zm58,.25a8.23,8.23,0,0,0-6.63,1.22L209.78,95.86A4,4,0,0,0,208,99.19v57.62a4,4,0,0,0,1.78,3.33l33.78,22.52a8,8,0,0,0,8.58.19,8.33,8.33,0,0,0,3.86-7.17V80A8,8,0,0,0,250,72.25Z`,regular:`M251.77,73a8,8,0,0,0-8.21.39L208,97.05V72a16,16,0,0,0-16-16H32A16,16,0,0,0,16,72V184a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V159l35.56,23.71A8,8,0,0,0,248,184a8,8,0,0,0,8-8V80A8,8,0,0,0,251.77,73ZM192,184H32V72H192V184Zm48-22.95-32-21.33V116.28L240,95Z`}),It=$(`PhWarningCircle`,{fill:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-8,56a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm8,104a12,12,0,1,1,12-12A12,12,0,0,1,128,184Z`}),Lt=$(`PhX`,{bold:`M208.49,191.51a12,12,0,0,1-17,17L128,145,64.49,208.49a12,12,0,0,1-17-17L111,128,47.51,64.49a12,12,0,0,1,17-17L128,111l63.51-63.52a12,12,0,0,1,17,17L145,128Z`}),Rt=[`aria-label`],zt=z({__name:`MobileRecordingPromptToggle`,props:{hideLabel:{},isPromptVisible:{type:Boolean},showLabel:{}},emits:[`toggle`],setup(e,{emit:t}){let n=t;return(t,r)=>(G(),F(`button`,{"aria-label":e.isPromptVisible?e.hideLabel:e.showLabel,class:`vidtreo-mobile-prompt-toggle-btn`,type:`button`,onClick:r[0]||=e=>n(`toggle`)},[e.isPromptVisible?(G(),N(X(xt),{key:0,class:`vidtreo-mobile-prompt-toggle-icon--collapse`,size:16,weight:`bold`})):(G(),N(X(bt),{key:1,class:`vidtreo-mobile-prompt-toggle-icon--expand`,size:16,weight:`bold`}))],8,Rt))}}),Bt=[`aria-label`,`data-state`,`data-muted`],Vt={class:`vidtreo-audio-bar-main`},Ht=[`aria-label`,`disabled`,`title`],Ut={key:0,class:`vidtreo-audio-spinner`},Wt={key:2,"aria-hidden":`true`,class:`vidtreo-audio-icon vidtreo-audio-icon--stop`},Gt={class:`vidtreo-audio-bar-center`},Kt={class:`vidtreo-audio-bar-side`},qt=[`aria-label`],Jt=[`aria-label`,`aria-expanded`],Yt=[`aria-valuenow`],Xt={class:`vidtreo-audio-bar-caption`},Zt={key:0,id:`audioBarStatus`,class:`vidtreo-audio-bar-status`,role:`status`},Qt=[`data-tone`,`role`],$t={class:`vidtreo-audio-bar-message-text`},en=[`disabled`],tn={key:0,class:`vidtreo-audio-spinner`},nn=[`hidden`],rn={class:`vidtreo-audio-bar-menu-title`},an={key:0,class:`vidtreo-audio-bar-menu-empty`},on=[`aria-checked`,`onClick`],sn={class:`vidtreo-audio-bar-menu-check`},cn={key:0,class:`vidtreo-audio-icon vidtreo-audio-icon--check`,"aria-hidden":`true`},ln={class:`vidtreo-audio-bar-menu-label`},un={class:`vidtreo-audio-bar-menu-label`},dn={class:`vidtreo-audio-bar-menu-label`},fn=z({__name:`AudioBar`,props:{state:{},translations:{},isStopLocked:{type:Boolean},isRetrying:{type:Boolean},permissionStep:{},canRetryPermission:{type:Boolean},enablePause:{type:Boolean},enableMute:{type:Boolean},enableDeviceChange:{type:Boolean}},emits:[`record`,`stop`,`pause`,`resume`,`toggleMute`,`micChange`,`retry`,`closeUploadError`,`requestPermission`,`retryPermission`],setup(e,{emit:t}){let n=e,r=t,i=B(Ke,K(0)),a=K(null),o=K(null),s=K(null),c=K(null),l=K(!1),u=K(!1),d=Array(18).fill(0),f=M(()=>n.state.recordingState===`recording`||n.state.isPaused),p=M(()=>n.state.isFinalizingRecording||n.state.uploadProgress!==null||n.state.transcodingProgress!==null),m=M(()=>n.permissionStep!==null&&n.permissionStep!==`idle`&&n.permissionStep!==`ready`),h=M(()=>tt(te({errorCode:n.state.errorCode,hasAudioFailed:n.state.hasAudioFailed,error:n.state.error}),n.translations,n.state.error,n.state.errorCode)),g=M(()=>(h.value.visible||n.isRetrying)&&!f.value&&!p.value),_=M(()=>mt({errorCode:n.state.uploadErrorCode,isRecording:f.value,isProcessingRecording:p.value}));function v(){let e=n.translations;return n.permissionStep===`blocked`?{tone:`error`,icon:`alert`,text:e.permissionFlowMicrophoneOnlyRecoveryInstructions,action:n.canRetryPermission?{kind:`permission-retry`,label:e.permissionFlowRetry,icon:`retry`,isBusy:!1}:null}:{tone:`info`,icon:`mic`,text:e.permissionFlowMicrophoneOnlyLabel,action:{kind:`permission-request`,label:n.permissionStep===`checking`?e.permissionFlowStatusRequesting:e.permissionFlowAllowMicrophone,icon:`mic`,isBusy:n.permissionStep===`checking`}}}let y=M(()=>m.value?v():g.value?{tone:`error`,icon:`alert`,text:h.value.message,action:h.value.canRetry||n.isRetrying?{kind:`device-retry`,label:h.value.retryLabel??``,icon:`retry`,isBusy:n.isRetrying}:null}:_.value===null?u.value?{tone:`success`,icon:`check`,text:n.translations.audioOnlyUploaded,action:null}:null:{tone:`error`,icon:`alert`,text:n.translations.uploadInsufficientCredits,action:{kind:`upload-close`,label:n.translations.uploadErrorClose,icon:null,isBusy:!1}}),b=M(()=>n.state.isPaused?`paused`:n.state.recordingState===`recording`?`recording`:n.state.recordingState===`countdown`?`countdown`:p.value?`uploading`:m.value?`permission`:y.value!==null&&y.value.tone===`error`?`error`:y.value!==null&&y.value.tone===`success`?`done`:n.state.stream===null||!n.state.isAudioReady?`connecting`:`ready`),x=M(()=>n.state.uploadProgress===null?n.state.transcodingProgress===null?0:Math.round(n.state.transcodingProgress*100):Math.round(n.state.uploadProgress*100)),S=M(()=>{let e=n.translations;switch(b.value){case`connecting`:return n.state.stream===null?e.initializingMicrophone:e.microphoneConnecting;case`countdown`:return e.recordingStartsIn;case`recording`:return e.audioOnlyRecording;case`paused`:return e.audioOnlyPaused;case`uploading`:return C();case`permission`:return e.permissionFlowMicrophoneOnlyTitle;case`error`:return g.value?h.value.title:e.genericErrorTitle;default:return e.audioOnlyReady}});function C(){let e=n.translations;if(n.state.uploadProgress===null)return e.finishing;let t=n.state.uploadRetryAttempt;return t!==null&&t>1?e.retryingUpload:e.audioOnlyUploading.replace(`{progress}`,String(x.value))}let w=M(()=>{let e=n.translations;switch(b.value){case`connecting`:return e.microphoneConnecting;case`countdown`:return e.recordingStartsIn;case`recording`:case`paused`:return e.stop;case`uploading`:return S.value;default:return e.record}}),T=M(()=>b.value===`recording`||b.value===`paused`?n.isStopLocked:!(b.value===`ready`||b.value===`done`)),E=M(()=>[`recording`,`paused`,`uploading`].includes(b.value)),D=M(()=>b.value===`connecting`||b.value===`uploading`),O=M(()=>!(f.value||D.value)&&b.value!==`countdown`),ee=M(()=>f.value&&n.enablePause!==!1),k=M(()=>f.value&&n.enableMute!==!1),j=M(()=>f.value?ee.value||k.value:n.enableDeviceChange!==!1),N=M(()=>n.state.devices.microphones.filter(e=>e.deviceId!==``));function ne(e){return e.label||`Microphone ${e.deviceId.slice(0,8)}`}function R(e){return String(Math.round(e*100)/100)}function z(){if(!o.value)return;let e=o.value.children;for(let t=0;t<e.length;t+=1)e[t].style.setProperty(`--vidtreo-level`,R(d[t]))}function re(){if(f.value){r(`stop`);return}r(`record`)}function ie(){if(n.state.isPaused){r(`resume`);return}r(`pause`)}function oe(e){if(e===`permission-request`){r(`requestPermission`);return}if(e===`permission-retry`){r(`retryPermission`);return}if(e===`device-retry`){r(`retry`);return}r(`closeUploadError`)}function se(e){r(`micChange`,e),l.value=!1}function ce(){ie(),l.value=!1}function le(){r(`toggleMute`),l.value=!1}function ue(){return s.value?Array.from(s.value.querySelectorAll(`.vidtreo-audio-bar-menu-item`)).filter(e=>e.offsetParent!==null||e.getClientRects().length>0):[]}async function Y(){l.value=!l.value,l.value&&(await V(),ue()[0]?.focus())}function X(e){if(e.key===`Escape`&&l.value){e.stopPropagation(),l.value=!1,c.value?.focus();return}if(!l.value||e.key!==`ArrowDown`&&e.key!==`ArrowUp`)return;e.preventDefault();let t=ue();if(t.length===0)return;let n=document.activeElement;t[((n instanceof HTMLElement?t.indexOf(n):-1)+(e.key===`ArrowDown`?1:-1)+t.length)%t.length]?.focus()}function de(e){l.value&&(e.target instanceof Node&&a.value?.contains(e.target)||(l.value=!1))}return ae(()=>{document.addEventListener(`pointerdown`,de)}),W(()=>{document.removeEventListener(`pointerdown`,de)}),Z(f,e=>{e&&(l.value=!1)}),Z(f,e=>{e&&(u.value=!1)}),Z(()=>n.state.uploadProgress,(e,t)=>{t===null||e!==null||n.state.error||n.state.uploadErrorCode!==null||(u.value=!0)}),Z(u,(e,t,n)=>{if(!e)return;let r=setTimeout(()=>{u.value=!1},3e3);n(()=>clearTimeout(r))}),Z([()=>n.state.stream!==null,()=>n.state.isPaused,()=>b.value===`uploading`],([e,t,r],a,o)=>{if(typeof window>`u`)return;let s=t||r;if(!(e||s)){d.fill(0),z();return}if(s||!e)return;let c=setInterval(()=>{let e=n.state.isMuted?0:Math.min(1,Math.sqrt(i.value/100));d.shift(),d.push(e),z()},60);o(()=>clearInterval(c))},{immediate:!0}),(t,n)=>(G(),F(`div`,{id:`audioBar`,ref_key:`rootRef`,ref:a,class:`vidtreo-audio-bar`,role:`group`,"aria-label":e.translations.microphone,"data-state":b.value,"data-muted":e.state.isMuted?`true`:`false`,onKeydown:X},[I(`div`,Vt,[I(`button`,{id:`audioBarPrimary`,type:`button`,class:H([`vidtreo-audio-bar-primary`,O.value&&`vidtreo-audio-bar-primary--start`]),"aria-label":w.value,disabled:T.value,title:f.value&&e.isStopLocked?e.translations.minimumRecordingTimeNotReached:void 0,onClick:re},[D.value?(G(),F(`span`,Ut)):b.value===`countdown`?(G(),F(A,{key:1},[L(J(e.state.countdown),1)],64)):f.value?(G(),F(`span`,Wt)):(G(),F(A,{key:3},[n[1]||=I(`span`,{"aria-hidden":`true`,class:`vidtreo-audio-icon vidtreo-audio-icon--record-start`},null,-1),I(`span`,null,J(e.translations.record),1)],64))],10,Ht),I(`div`,Gt,[I(`div`,{id:`audioBarWave`,ref_key:`waveRef`,ref:o,class:`vidtreo-audio-bar-wave`,"aria-hidden":`true`},[(G(),F(A,null,q(18,e=>I(`span`,{key:e,class:`vidtreo-audio-bar-wave-bar`,style:{"--vidtreo-level":`0`}})),64))],512)]),I(`div`,Kt,[I(`span`,{id:`audioBarTime`,class:`vidtreo-audio-bar-time`,role:`timer`,"aria-live":`polite`,"aria-label":e.translations.audioOnlyElapsedTime},J(E.value&&e.state.timer||`00:00`),9,qt),j.value?(G(),F(`button`,{key:0,id:`audioBarMenuToggle`,ref_key:`toggleRef`,ref:c,type:`button`,class:`vidtreo-audio-bar-button`,"aria-label":e.translations.microphone,"aria-haspopup":`menu`,"aria-expanded":l.value?`true`:`false`,"aria-controls":`audioBarMenu`,onClick:Y},[I(`span`,{"aria-hidden":`true`,class:H([`vidtreo-audio-icon`,e.state.isMuted?`vidtreo-audio-icon--mic-off`:`vidtreo-audio-icon--mic`])},null,2)],8,Jt)):P(`v-if`,!0)]),p.value?(G(),F(`div`,{key:0,id:`audioBarProgress`,class:`vidtreo-audio-bar-progress`,role:`progressbar`,"aria-valuemin":`0`,"aria-valuemax":`100`,"aria-valuenow":x.value},[I(`span`,{class:`vidtreo-audio-bar-progress-fill`,style:U({width:`${x.value}%`})},null,4)],8,Yt)):P(`v-if`,!0)]),I(`div`,Xt,[y.value?P(`v-if`,!0):(G(),F(`p`,Zt,J(S.value),1)),y.value?(G(),F(`div`,{key:1,id:`audioBarMessage`,class:`vidtreo-audio-bar-message`,"data-tone":y.value.tone,role:y.value.tone===`error`?`alert`:`status`},[I(`span`,{class:H([`vidtreo-audio-icon`,`vidtreo-audio-icon--${y.value.icon}`]),"aria-hidden":`true`},null,2),I(`p`,$t,J(y.value.text),1),y.value.action?(G(),F(`button`,{key:0,id:`audioBarAction`,type:`button`,class:`vidtreo-audio-bar-action`,disabled:y.value.action.isBusy,onClick:n[0]||=e=>oe(y.value.action.kind)},[y.value.action.isBusy?(G(),F(`span`,tn)):y.value.action.icon?(G(),F(`span`,{key:1,class:H([`vidtreo-audio-icon`,`vidtreo-audio-icon--${y.value.action.icon}`]),"aria-hidden":`true`},null,2)):P(`v-if`,!0),L(` `+J(y.value.action.label),1)],8,en)):P(`v-if`,!0)],8,Qt)):P(`v-if`,!0)]),j.value?(G(),F(`div`,{key:0,id:`audioBarMenu`,ref_key:`menuRef`,ref:s,class:`vidtreo-audio-bar-menu`,role:`menu`,hidden:!l.value},[I(`p`,rn,J(e.translations.microphone),1),f.value?(G(),F(A,{key:1},[ee.value?(G(),F(`button`,{key:0,id:`audioBarPause`,type:`button`,class:`vidtreo-audio-bar-menu-item`,role:`menuitem`,onClick:ce},[I(`span`,{"aria-hidden":`true`,class:H([`vidtreo-audio-icon`,e.state.isPaused?`vidtreo-audio-icon--play`:`vidtreo-audio-icon--pause`])},null,2),I(`span`,un,J(e.state.isPaused?e.translations.resume:e.translations.pause),1)])):P(`v-if`,!0),k.value?(G(),F(`button`,{key:1,id:`audioBarMute`,type:`button`,class:`vidtreo-audio-bar-menu-item`,role:`menuitem`,onClick:le},[I(`span`,{"aria-hidden":`true`,class:H([`vidtreo-audio-icon`,e.state.isMuted?`vidtreo-audio-icon--mic-off`:`vidtreo-audio-icon--mic`])},null,2),I(`span`,dn,J(e.state.isMuted?e.translations.unmute:e.translations.mute),1)])):P(`v-if`,!0)],64)):(G(),F(A,{key:0},[N.value.length===0?(G(),F(`p`,an,J(e.translations.audioOnlyNoMicrophones),1)):P(`v-if`,!0),(G(!0),F(A,null,q(N.value,t=>(G(),F(`button`,{key:t.deviceId,type:`button`,class:`vidtreo-audio-bar-menu-item`,role:`menuitemradio`,"aria-checked":e.state.devices.selectedMic===t.deviceId?`true`:`false`,onClick:e=>se(t.deviceId)},[I(`span`,sn,[e.state.devices.selectedMic===t.deviceId?(G(),F(`span`,cn)):P(`v-if`,!0)]),I(`span`,ln,J(ne(t)),1)],8,on))),128))],64))],8,nn)):P(`v-if`,!0)],40,Bt))}}),pn=.7,mn=z({__name:`AudioVisualizer`,props:{isMuted:{type:Boolean}},setup(e){let t=e,n=B(Ke,K(0)),r=M(()=>{let e=0;for(let t=0;t<15;t+=1){let r=(t+1)/15*100;n.value>=r&&(e+=1)}return e}),i=M(()=>{let e=[];for(let n=0;n<15;n+=1){let i=n<r.value&&!t.isMuted,a=`15%`,o=``,s=`1`;if(i){a=`${30+n/15*70}%`;let e=n/15,t=pn+n/15*(1-pn);o=h(e),s=String(t)}e.push({id:`audio-bar-${n}`,height:a,backgroundColor:o,opacity:s})}return e});return(e,t)=>(G(!0),F(A,null,q(i.value,e=>(G(),F(`div`,{key:e.id,class:`vidtreo-audio-level-bar`,style:U({height:e.height,backgroundColor:e.backgroundColor,opacity:e.opacity})},null,4))),128))}}),hn={class:`vidtreo-audio-warning-toast__icon`},gn={class:`vidtreo-audio-warning-toast__content`},_n={class:`vidtreo-audio-warning-toast__title`},vn={class:`vidtreo-audio-warning-toast__message`},yn=[`aria-label`];function bn(e){switch(e){case`audio.track-ended`:case`audio.track-muted-by-browser`:case`audio.no-chunks`:return`critical`;case`audio.no-signal`:case`audio.low-signal`:case`audio.speaking-while-muted`:return`soft`;default:return`soft`}}function xn(e,t){switch(e){case`audio.no-signal`:return{title:t.audioWarningNoSignalTitle,message:t.audioWarningNoSignalMessage,dismissLabel:t.audioWarningDismiss};case`audio.low-signal`:return{title:t.audioWarningLowSignalTitle,message:t.audioWarningLowSignalMessage,dismissLabel:t.audioWarningDismiss};case`audio.speaking-while-muted`:return{title:t.audioWarningSpeakingMutedTitle,message:t.audioWarningSpeakingMutedMessage,dismissLabel:t.audioWarningDismiss};case`audio.track-ended`:return{title:t.audioWarningTrackEndedTitle,message:t.audioWarningTrackEndedMessage,dismissLabel:t.audioWarningDismiss};case`audio.no-chunks`:return{title:t.audioWarningNoChunksTitle,message:t.audioWarningNoChunksMessage,dismissLabel:t.audioWarningDismiss};case`audio.track-muted-by-browser`:return{title:t.audioWarningTrackMutedTitle,message:t.audioWarningTrackMutedMessage,dismissLabel:t.audioWarningDismiss};default:return{title:``,message:``,dismissLabel:t.audioWarningDismiss}}}const Sn=z({__name:`AudioWarningToast`,props:{warning:{},translations:{}},emits:[`dismiss`],setup(e,{emit:t}){let n=e,r=t,i=K(null);Z(()=>n.warning?.code,()=>{i.value=null}),Z(()=>n.warning,(e,t,n)=>{if(!e||e.code!==`audio.low-signal`||typeof window>`u`)return;let a=window.setTimeout(()=>{i.value=`audio.low-signal`,r(`dismiss`)},6e3);n(()=>{window.clearTimeout(a)})});let a=M(()=>n.warning?bn(n.warning.code):`soft`),o=M(()=>n.warning?xn(n.warning.code,n.translations):{title:``,message:``,dismissLabel:n.translations.audioWarningDismiss}),s=M(()=>a.value===`critical`||n.warning?.code===`audio.no-signal`),c=M(()=>!(!n.warning||i.value===n.warning.code));function l(e){e.preventDefault(),e.stopPropagation(),n.warning&&(i.value=n.warning.code,r(`dismiss`))}return(e,t)=>c.value?(G(),F(`output`,{key:0,"aria-live":`polite`,class:H(`vidtreo-audio-warning-toast vidtreo-audio-warning-toast--${a.value}`)},[I(`span`,hn,[a.value===`critical`?(G(),N(X(At),{key:0,size:20,weight:`fill`})):(G(),N(X(It),{key:1,size:20,weight:`fill`}))]),I(`span`,gn,[I(`span`,_n,J(o.value.title),1),I(`span`,vn,J(o.value.message),1)]),s.value?(G(),F(`button`,{key:0,"aria-label":o.value.dismissLabel,class:`vidtreo-audio-warning-toast__dismiss`,type:`button`,onClick:l},[R(X(Lt),{size:14,weight:`bold`})],8,yn)):P(`v-if`,!0)],2)):P(`v-if`,!0)}}),Cn={key:0,class:`vidtreo-audio-error-overlay`},wn={class:`vidtreo-audio-error-icon`},Tn={class:`vidtreo-audio-error-title`},En={class:`vidtreo-audio-error-message`},Dn=z({__name:`DeviceErrorOverlay`,props:{visible:{type:Boolean},variant:{},title:{},message:{},retryLabel:{}},emits:[`retry`],setup(e,{emit:t}){let n=t;function r(e){e.preventDefault(),e.stopPropagation(),n(`retry`)}return(t,n)=>e.visible?(G(),F(`div`,Cn,[I(`div`,wn,[e.variant===`audio`?(G(),N(X(At),{key:0,size:28,weight:`fill`})):e.variant===`camera`?(G(),N(X(Ct),{key:1,size:28,weight:`fill`})):(G(),N(X(It),{key:2,size:28,weight:`fill`}))]),I(`h3`,Tn,J(e.title),1),I(`p`,En,J(e.message),1),e.retryLabel?(G(),F(`button`,{key:0,class:`vidtreo-audio-error-retry`,type:`button`,onClick:r},[R(X(yt),{size:16,weight:`bold`}),L(` `+J(e.retryLabel),1)])):P(`v-if`,!0)])):P(`v-if`,!0)}}),On={class:`vidtreo-preview-container`},kn={class:`vidtreo-error-overlay`},An={class:`vidtreo-error-content`},jn={class:`vidtreo-error-icon`},Mn={class:`vidtreo-error-title`},Nn={key:0,class:`vidtreo-error-message`},Pn={key:1,class:`vidtreo-error-message`},Fn={key:2,class:`vidtreo-error-config`},In=z({__name:`ConfigurationErrorDisplay`,props:{error:{},lang:{},texts:{}},setup(e){let t=e,n=M(()=>Ce(t.lang??`en`,t.texts??{})),r=M(()=>t.error?.message.includes(`apiKey is required`)??!1);return(t,i)=>(G(),F(`div`,On,[I(`div`,kn,[I(`div`,An,[I(`div`,jn,[R(X(It),{size:48,weight:`fill`,color:`currentColor`})]),I(`div`,Mn,J(n.value.errorTitle),1),r.value?P(`v-if`,!0):(G(),F(`div`,Nn,J(e.error?.message||n.value.errorGeneric),1)),r.value?(G(),F(`div`,Pn,J(n.value.errorApiKeyRequired),1)):P(`v-if`,!0),r.value?(G(),F(`div`,Fn,[...i[0]||=[I(`div`,{class:`vidtreo-error-config-title`},`Configuration Options:`,-1),I(`div`,{class:`vidtreo-error-config-item`},[I(`code`,null,`apiKey`),L(` prop: Pass the API key as a prop to the component `)],-1),I(`div`,{class:`vidtreo-error-config-item`},[I(`code`,null,`getAccessToken`),L(` prop: Pass an async function that returns an access token `)],-1),I(`div`,{class:`vidtreo-error-config-item`},[I(`code`,null,`VIDTREO_API_KEY`),L(` environment variable: Set this in your environment `)],-1)]])):P(`v-if`,!0)])])]))}}),Ln={key:1,class:`vidtreo-preview-error`},Rn={class:`vidtreo-error-content`},zn={class:`vidtreo-error-icon`},Bn={class:`vidtreo-error-message`},Vn=z({__name:`ErrorBoundary`,props:{variant:{default:`preview`},lang:{},texts:{}},setup(e){let t=K(!1),n=K(null);ie(e=>(t.value=!0,n.value=e instanceof Error?e:Error(String(e)),!1));function r(){t.value=!1,n.value=null}return(i,a)=>t.value&&e.variant===`recorder`?(G(),N(In,{key:0,error:n.value,lang:e.lang,texts:e.texts},null,8,[`error`,`lang`,`texts`])):t.value?(G(),F(`div`,Ln,[I(`div`,Rn,[I(`div`,zn,[R(X(It),{size:48,weight:`fill`,color:`currentColor`})]),a[0]||=I(`div`,{class:`vidtreo-error-title`},`Preview Error`,-1),I(`div`,Bn,J(n.value?.message||`An error occurred while loading the preview`),1),I(`button`,{class:`vidtreo-error-retry`,type:`button`,onClick:r},` Retry `)])])):ce(i.$slots,`default`,{key:2})}}),Hn={class:`vidtreo-recording-controls`},Un={class:`vidtreo-recording-controls-row`},Wn={class:`vidtreo-control-buttons-row`},Gn=[`title`],Kn=[`disabled`,`title`],qn={key:0,class:`vidtreo-mic-connecting-indicator`,style:{"margin-right":`0.375rem`}},Jn=[`title`],Yn=[`title`],Xn=[`title`],Zn=[`aria-disabled`,`disabled`,`title`],Qn=[`title`],$n=[`title`],er={settings:`Settings`,record:`Record`,stop:`Stop`,minimumRecordingTimeNotReached:`You have not met the minimum recording time yet`,pause:`Pause`,resume:`Resume`,mute:`Mute`,unmute:`Unmute`,switchSource:`Switch Source`,download:`Download`,microphoneConnecting:`Connecting microphone...`},tr=z({__name:`RecordingControlsButtons`,props:{buttonVisibility:{},recordingState:{},isMuted:{type:Boolean},isAudioReady:{type:Boolean},isProcessingRecording:{type:Boolean},currentSourceType:{},isStopLocked:{type:Boolean},stopLockedTooltip:{},translations:{default:()=>er}},emits:[`toggleSettings`,`startRecording`,`stopRecording`,`toggleMute`,`pause`,`resume`,`switchSource`,`download`],setup(e,{emit:t}){let n=e,r=t,i=M(()=>n.isStopLocked?`vidtreo-record-button vidtreo-stop-button-locked`:`vidtreo-record-button`),a=M(()=>n.isStopLocked?n.stopLockedTooltip:``),o=M(()=>n.recordingState===`idle`&&!n.isProcessingRecording);function s(){n.isStopLocked||r(`stopRecording`)}return(t,n)=>(G(),F(`div`,Hn,[I(`div`,Un,[I(`div`,Wn,[e.buttonVisibility.showSettingsButton?(G(),F(`button`,{key:0,id:`settingsButton`,class:`vidtreo-control-button`,title:e.translations.settings,type:`button`,onClick:n[0]||=e=>r(`toggleSettings`)},[R(X(Ot),{size:20,weight:`fill`})],8,Gn)):P(`v-if`,!0),o.value?(G(),F(`button`,{key:1,id:`startButton`,class:H([`vidtreo-record-button`,!e.isAudioReady&&`vidtreo-record-button-disabled`]),disabled:!e.isAudioReady,title:e.isAudioReady?``:e.translations.microphoneConnecting,type:`button`,onClick:n[1]||=t=>e.isAudioReady&&r(`startRecording`)},[e.isAudioReady?P(`v-if`,!0):(G(),F(`span`,qn,[R(X(kt),{size:16,weight:`fill`})])),e.isAudioReady?(G(),N(X(Et),{key:1,size:24,weight:`fill`,fill:`currentColor`,style:{"margin-right":`0.375rem`}})):P(`v-if`,!0),e.isAudioReady?(G(),F(A,{key:2},[L(J(e.translations.record),1)],64)):(G(),F(A,{key:3},[L(J(e.translations.microphoneConnecting),1)],64))],10,Kn)):P(`v-if`,!0),e.buttonVisibility.showMuteButton?(G(),F(`button`,{key:2,id:`muteButton`,class:H(`vidtreo-control-button ${e.isMuted?`vidtreo-muted`:``}`),title:e.isMuted?e.translations.unmute:e.translations.mute,type:`button`,onClick:n[2]||=e=>r(`toggleMute`)},[e.isMuted?(G(),N(X(At),{key:0,size:24,weight:`fill`})):(G(),N(X(kt),{key:1,size:24,weight:`fill`}))],10,Jn)):P(`v-if`,!0),e.buttonVisibility.showPauseButton?(G(),F(`button`,{key:3,id:`pauseButton`,class:`vidtreo-control-button`,title:e.translations.pause,type:`button`,onClick:n[3]||=e=>r(`pause`)},[R(X(Mt),{size:24,weight:`fill`})],8,Yn)):P(`v-if`,!0),e.buttonVisibility.showResumeButton?(G(),F(`button`,{key:4,id:`resumeButton`,class:`vidtreo-control-button`,title:e.translations.resume,type:`button`,onClick:n[4]||=e=>r(`resume`)},[R(X(Nt),{size:24,weight:`fill`})],8,Xn)):P(`v-if`,!0),e.buttonVisibility.showStopButton?(G(),F(`button`,{key:5,id:`stopButton`,"aria-disabled":e.isStopLocked,class:H(i.value),disabled:e.isStopLocked,title:a.value,type:`button`,onClick:s},[R(X(Pt),{size:24,weight:`fill`,fill:`currentColor`,style:{"margin-right":`0.375rem`}}),L(` `+J(e.translations.stop),1)],10,Zn)):P(`v-if`,!0),e.buttonVisibility.showDownloadButton?(G(),F(`button`,{key:6,id:`downloadButton`,class:`vidtreo-control-button`,title:e.translations.download,type:`button`,onClick:n[5]||=e=>r(`download`)},[R(X(Dt),{size:24,weight:`fill`})],8,Qn)):P(`v-if`,!0),e.buttonVisibility.showSwitchSourceButton?(G(),F(`button`,{key:7,id:`switchSourceButton`,class:`vidtreo-control-button`,title:e.translations.switchSource,type:`button`,onClick:n[6]||=e=>r(`switchSource`)},[e.currentSourceType===`camera`?(G(),N(X(jt),{key:0,size:24,weight:`fill`})):(G(),N(X(St),{key:1,size:24,weight:`fill`}))],8,$n)):P(`v-if`,!0)])])]))}}),nr={id:`settingsPanel`,class:`vidtreo-settings-panel vidtreo-active`},rr={class:`vidtreo-settings-title`},ir={class:`vidtreo-device-list`},ar={key:0,class:`vidtreo-device-empty`},or=[`onClick`],sr={class:`vidtreo-device-option-check-container`},cr={key:1,class:`vidtreo-device-checkmark-placeholder`},lr={class:`vidtreo-device-option-label`},ur={class:`vidtreo-settings-title`},dr={class:`vidtreo-device-list`},fr={key:0,class:`vidtreo-device-empty`},pr=[`onClick`],mr={class:`vidtreo-device-option-check-container`},hr={key:1,class:`vidtreo-device-checkmark-placeholder`},gr={class:`vidtreo-device-option-label`},_r={key:2,class:`vidtreo-device-options-container`},vr={class:`vidtreo-device-option-nav-content`},yr={class:`vidtreo-device-option-nav-label`},br={class:`vidtreo-device-option-nav-value`},xr={class:`vidtreo-device-option-nav-value-text`},Sr={class:`vidtreo-device-option-nav-content`},Cr={class:`vidtreo-device-option-nav-label`},wr={class:`vidtreo-device-option-nav-value`},Tr={class:`vidtreo-device-option-nav-value-text`},Er={settings:`Settings`,camera:`Camera`,microphone:`Microphone`},Dr=z({__name:`SettingsPanel`,props:{devices:{},translations:{default:()=>Er},audioOnly:{type:Boolean,default:!1}},emits:[`cameraChange`,`micChange`],setup(e,{emit:t}){let n=e,r=t,i=K(`main`),a=K(`none`);function o(e){a.value=`right`,i.value=e}function s(){a.value=`left`,i.value=`main`}Z(a,(e,t,n)=>{if(e===`none`)return;let r=setTimeout(()=>{a.value=`none`},300);n(()=>{clearTimeout(r)})});let c=M(()=>n.devices.cameras.filter(e=>e.deviceId&&e.deviceId.trim()!==``)),l=M(()=>n.devices.microphones.filter(e=>e.deviceId&&e.deviceId.trim()!==``)),u=M(()=>c.value.find(e=>e.deviceId===n.devices.selectedCamera)?.label||c.value[0]?.label||n.translations.camera),d=M(()=>l.value.find(e=>e.deviceId===n.devices.selectedMic)?.label||l.value[0]?.label||n.translations.microphone);function f(e,t){r(t===`camera`?`cameraChange`:`micChange`,e),s()}return(t,n)=>(G(),F(`div`,nr,[I(`div`,{class:H(`vidtreo-settings-content vidtreo-slide-${a.value}`)},[i.value===`camera`?(G(),F(A,{key:0},[I(`button`,{class:`vidtreo-settings-header`,type:`button`,onClick:s},[R(X(wt),{class:`vidtreo-settings-back-icon`,size:20,weight:`regular`}),I(`h3`,rr,J(e.translations.camera),1)]),I(`div`,ir,[c.value.length===0?(G(),F(`div`,ar,` No hay cámaras disponibles `)):(G(!0),F(A,{key:1},q(c.value,t=>(G(),F(`button`,{key:t.deviceId,class:`vidtreo-device-option`,type:`button`,onClick:e=>f(t.deviceId,`camera`)},[I(`div`,sr,[t.deviceId===e.devices.selectedCamera?(G(),N(X(Tt),{key:0,class:`vidtreo-device-checkmark`,size:20,weight:`regular`})):(G(),F(`span`,cr))]),I(`span`,lr,J(t.label||`Camera ${t.deviceId.slice(0,8)}`),1)],8,or))),128))])],64)):i.value===`microphone`?(G(),F(A,{key:1},[I(`button`,{class:`vidtreo-settings-header`,type:`button`,onClick:s},[R(X(wt),{class:`vidtreo-settings-back-icon`,size:20,weight:`regular`}),I(`h3`,ur,J(e.translations.microphone),1)]),I(`div`,dr,[l.value.length===0?(G(),F(`div`,fr,` No hay micrófonos disponibles `)):(G(!0),F(A,{key:1},q(l.value,t=>(G(),F(`button`,{key:t.deviceId,class:`vidtreo-device-option`,type:`button`,onClick:e=>f(t.deviceId,`microphone`)},[I(`div`,mr,[t.deviceId===e.devices.selectedMic?(G(),N(X(Tt),{key:0,class:`vidtreo-device-checkmark`,size:20,weight:`regular`})):(G(),F(`span`,hr))]),I(`span`,gr,J(t.label||`Microphone ${t.deviceId.slice(0,8)}`),1)],8,pr))),128))])],64)):(G(),F(`div`,_r,[e.audioOnly?P(`v-if`,!0):(G(),F(`button`,{key:0,class:`vidtreo-device-option-nav`,type:`button`,onClick:n[0]||=e=>o(`camera`)},[I(`div`,vr,[R(X(Ft),{size:20,weight:`fill`}),I(`span`,yr,J(e.translations.camera),1)]),I(`div`,br,[I(`span`,xr,J(u.value),1),n[2]||=I(`span`,{class:`vidtreo-device-option-nav-chevron`},`›`,-1)])])),I(`button`,{class:`vidtreo-device-option-nav`,type:`button`,onClick:n[1]||=e=>o(`microphone`)},[I(`div`,Sr,[R(X(kt),{size:20,weight:`fill`}),I(`span`,Cr,J(e.translations.microphone),1)]),I(`div`,wr,[I(`span`,Tr,J(d.value),1),n[3]||=I(`span`,{class:`vidtreo-device-option-nav-chevron`},`›`,-1)])])]))],2)]))}}),Or={key:0,class:`vidtreo-audio-error-overlay vidtreo-upload-error-overlay`,role:`alertdialog`},kr={class:`vidtreo-audio-error-icon`},Ar={class:`vidtreo-audio-error-title`},jr={class:`vidtreo-audio-error-message`},Mr=z({__name:`UploadErrorOverlay`,props:{errorCode:{},translations:{}},emits:[`close`],setup(e,{emit:t}){let n=e,r=t,i=M(()=>ft(n.errorCode,n.translations));function a(e){e.preventDefault(),e.stopPropagation(),r(`close`)}return(t,n)=>i.value===null?P(`v-if`,!0):(G(),F(`div`,Or,[I(`div`,kr,[R(X(It),{size:28,weight:`fill`})]),I(`h3`,Ar,J(e.translations.uploadInsufficientCreditsTitle),1),I(`p`,jr,J(i.value),1),I(`button`,{class:`vidtreo-audio-error-retry`,type:`button`,onClick:a},[R(X(Lt),{size:16,weight:`bold`}),L(` `+J(e.translations.uploadErrorClose),1)])]))}}),Nr={},Pr=`camera`,Fr=`screen`,Ir=`recording`,Lr={key:0,class:`vidtreo-progress-overlay`},Rr={id:`uploadProgress`,class:`vidtreo-upload-progress vidtreo-active`},zr={class:`vidtreo-progress-bar`},Br={id:`uploadProgressText`,class:`vidtreo-progress-text`},Vr=z({__name:`UploadProgressOverlay`,props:{progress:{},label:{}},setup(e){let t=e,n=M(()=>t.progress===null?null:Math.round(t.progress*100));return(t,r)=>n.value===null?P(`v-if`,!0):(G(),F(`div`,Lr,[I(`div`,Rr,[I(`div`,zr,[I(`div`,{id:`uploadProgressFill`,class:`vidtreo-progress-fill`,style:U({width:`${n.value}%`})},null,4)]),I(`div`,Br,J(e.label)+` `+J(n.value)+`% `,1)])]))}}),Hr=z({__name:`VideoPreview`,props:{controller:{},stream:{},transitionMessage:{},className:{default:``}},emits:[`loadedChange`],setup(e,{emit:t}){let n=e,r=t,i=K(null),a=null,o=`camera`;function s(e){e.pause(),e.srcObject=null}function c(e,t){let n=e.srcObject;if(n===t)return!0;let r=n?.getVideoTracks()[0];return r!==void 0&&r===t.getVideoTracks()[0]}function l(e,t){let n=e.getVideoTracks();return n.length===0||n[0].readyState!==`live`||!e.active?(s(t),!1):!0}function u(e){let t=e instanceof Error?e.message:String(e);return t.includes(`interrupted`)||t.includes(`abort`)}async function d(e){if(!(e.readyState>=2&&!e.paused)){await new Promise(e=>{setTimeout(()=>e(),200)});try{await e.play()}catch{return}}}async function f(e){try{await e.play()}catch(t){u(t)&&await d(e)}}async function p(e,t,n,r){if(e.srcObject&&e.srcObject!==t&&e.pause(),e.srcObject=null,n===`screen`?e.classList.add(`vidtreo-screen-share`):e.classList.remove(`vidtreo-screen-share`),await new Promise(e=>{setTimeout(()=>e(),100)}),r())return;a=t.id,o=n,e.srcObject=t;let i=t.getVideoTracks();i.length>0&&!i[0].enabled&&(i[0].enabled=!0),await f(e)}function m(e,t){if(!t||!l(t,e))return!1;let n=t.getVideoTracks()[0];return n.enabled||=!0,c(e,t)?!0:(e.pause(),e.srcObject=t,r(`loadedChange`,!1),e.play().catch(()=>{}),!0)}function h(e,t,n,i){let a=!1;i(()=>{a=!0}),r(`loadedChange`,!1),p(e,t,n,()=>a).then(()=>{!a&&e.readyState>=2&&!e.paused&&r(`loadedChange`,!0)})}function g(e,t){let n=0,r=setInterval(()=>{n+=1,(m(e,t)||n>=10)&&clearInterval(r)},100);return()=>{clearInterval(r)}}return Z(()=>[n.controller,n.stream,i.value],([e,t],n,s)=>{let l=i.value;if(!l)return;if(!e){l.pause(),l.srcObject=null,r(`loadedChange`,!1);return}let u=t||e.getStream(),d=e.getCurrentSourceType(),f=d!==o;if((u?.id!==a||f)&&u){if(!f&&c(l,u)){a=u.id;return}h(l,u,d,s);return}m(l,u)||s(g(l,u))},{immediate:!0,flush:`post`}),Z(()=>[n.controller,n.stream,n.transitionMessage],([e,t,n])=>{let r=i.value;if(!(r&&e)||n)return;let a=t||e.getStream();a&&c(r,a)&&r.paused&&r.readyState>=2&&r.play().catch(()=>{})},{flush:`post`}),Z(i,(e,t,n)=>{if(!e)return;function i(){e&&e.readyState>=2&&!e.paused&&r(`loadedChange`,!0)}function a(){e&&e.readyState>=2&&r(`loadedChange`,!0)}function o(){r(`loadedChange`,!1)}e.addEventListener(`loadedmetadata`,i),e.addEventListener(`playing`,a),e.addEventListener(`loadstart`,o),n(()=>{e.removeEventListener(`loadedmetadata`,i),e.removeEventListener(`playing`,a),e.removeEventListener(`loadstart`,o)})},{flush:`post`}),W(()=>{let e=i.value;e&&(e.pause(),e.srcObject=null)}),(t,n)=>(G(),F(`video`,{ref_key:`videoRef`,ref:i,autoplay:``,class:H(e.className),muted:``,playsinline:``},null,2))}}),Ur=z({__name:`VideoPreviewSkeleton`,props:{className:{default:``}},setup(e){return(t,n)=>(G(),F(`div`,{class:H(`vidtreo-video-preview-skeleton ${e.className}`)},[...n[0]||=[I(`div`,{class:`vidtreo-skeleton-shimmer`},null,-1)]],2))}}),Wr={class:`vidtreo-mobile-web-recorder`},Gr={key:0,class:`vidtreo-mobile-landing-container`},Kr={class:`vidtreo-mobile-landing-content`},qr={class:`vidtreo-mobile-landing-title`},Jr={class:`vidtreo-mobile-landing-description`},Yr=[`disabled`],Xr=[`aria-label`],Zr={class:`vidtreo-mobile-modal-header`},Qr=[`disabled`],$r={class:`vidtreo-mobile-modal-content`},ei={class:`vidtreo-mobile-recorder-content`},ti={key:0,class:`vidtreo-audio-only`},ni={class:`vidtreo-preview-container vidtreo-mobile-preview`},ri={key:0,id:`startCameraArea`,class:`vidtreo-start-camera-area`},ii={key:1,id:`previewSkeleton`,class:`vidtreo-preview-skeleton`},ai={class:`vidtreo-skeleton-text`},oi={key:4,id:`countdownOverlay`,class:`vidtreo-countdown-overlay vidtreo-active`},si={class:`vidtreo-countdown-content`},ci={id:`countdownNumber`,class:`vidtreo-countdown-number`},li={class:`vidtreo-countdown-text`},ui={key:1,id:`recIndicatorTop`,class:`vidtreo-rec-indicator-top`},di={id:`recordingTimerRow`,class:`vidtreo-recording-timer-badge`},fi={id:`recordingTimer`,class:`vidtreo-recording-timer-text`},pi={id:`audioLevelBars`,class:`vidtreo-audio-level-bars`},mi={key:2,id:`sourceTransitionOverlay`,class:`vidtreo-source-transition-overlay vidtreo-active`},hi={class:`vidtreo-transition-message`},gi=z({__name:`MobileWebRecorderUIContent`,props:{config:{}},setup(e,{expose:t}){let n=e,r=M(()=>n.config.lang??`en`),i=M(()=>n.config.texts??{}),a=M(()=>Ce(r.value,i.value)),{state:o,actions:s,audioLevel:c,controller:l,isModalOpen:u,openModal:d,closeModal:f,canCloseModal:p}=Ge(()=>n.config);oe(Ke,c),t(_e(l));let m=n.config.audioOnly===!0,h=ye(m),g=M(()=>m?a.value.mobileOpenMicrophoneTitle:a.value.mobileOpenCameraTitle),_=M(()=>m?a.value.mobileOpenMicrophoneDescription:a.value.mobileOpenCameraDescription),v=K(!1),y=K(!1),b=K(!1),x=M(()=>o.errorCode===`browser.unsupported`),S=M(()=>!(o.isInitialized||x.value)),C=M(()=>o.recordingState===`recording`||o.isPaused),w=M(()=>rt(n.config.recordingPrompt)),T=M(()=>ot(n.config.recordingPrompt,o.recordingState)),E=M(()=>it({prompt:n.config.recordingPrompt,recordingState:o.recordingState,isRecording:C.value})),D=M(()=>at({isRecording:C.value,prompt:n.config.recordingPrompt})),O=K(!0);Z(w,()=>{O.value=!0});function ee(){O.value=!O.value}let k=M(()=>dt(o)),ne=M(()=>Pe(n.config.minTimeRecord,o.timer,C.value)),z=M(()=>l.value?.getCurrentSourceType()||`camera`),re=M(()=>!!n.config.demo&&!C.value&&!k.value&&o.recordingState===`idle`&&o.recordedBlob!==null),B=M(()=>({...qe(C.value,o.recordingState,o.isPaused,{...n.config,isMobile:!0}),showDownloadButton:re.value})),V=M(()=>tt(te({errorCode:o.errorCode,hasAudioFailed:o.hasAudioFailed,error:o.error}),a.value,o.error,o.errorCode)),H=M(()=>lt(o,a.value));Z(()=>o.recordingState,e=>{e===`recording`&&v.value&&(v.value=!1)});function U(){s.startRecording(h).catch(()=>{})}function ie(){ne.value||s.stopRecording().catch(()=>{})}function ae(){n.config.enableDeviceChange!==!1&&(v.value=!v.value)}function se(e){s.changeCamera(e).catch(()=>{})}function q(e){s.changeMic(e).catch(()=>{})}function ce(){let e=l.value?.getCurrentSourceType()||`camera`;s.switchSource(e===`camera`?`screen`:`camera`).catch(()=>{})}async function le(){b.value=!0,s.stopPreview(),await s.startPreview(h).catch(()=>{}).finally(()=>{b.value=!1})}function ue(){s.clearUploadError(),f()}function Y(e){e.key===`Escape`&&p.value&&f()}return Z(u,e=>{typeof document>`u`||(e?document.addEventListener(`keydown`,Y):document.removeEventListener(`keydown`,Y))}),W(()=>{typeof document<`u`&&document.removeEventListener(`keydown`,Y)}),(t,n)=>(G(),F(`div`,Wr,[X(u)?P(`v-if`,!0):(G(),F(`div`,Gr,[I(`div`,Kr,[I(`h2`,qr,J(g.value),1),I(`p`,Jr,J(_.value),1),I(`button`,{class:`vidtreo-btn vidtreo-btn-primary vidtreo-mobile-open-camera-btn`,disabled:S.value,type:`button`,onClick:n[0]||=(...e)=>X(d)&&X(d)(...e)},[m?(G(),N(X(kt),{key:0,size:24,weight:`fill`})):(G(),N(X(St),{key:1,size:24,weight:`fill`})),L(` `+J(a.value.mobileOpenCamera),1)],8,Yr)])])),X(u)?(G(),N(j,{key:1,to:`body`},[I(`div`,{"aria-label":g.value,"aria-modal":`true`,class:`vidtreo-mobile-modal-overlay`,role:`dialog`},[I(`div`,Zr,[I(`button`,{class:`vidtreo-mobile-modal-close-btn`,disabled:!X(p),type:`button`,onClick:n[1]||=(...e)=>X(f)&&X(f)(...e)},[R(X(Lt),{size:16,weight:`bold`}),L(` `+J(a.value.mobileCloseCamera),1)],8,Qr)]),I(`div`,$r,[I(`div`,ei,[m?(G(),F(`div`,ti,[R(fn,{"can-retry-permission":!1,"enable-device-change":e.config.enableDeviceChange,"enable-mute":e.config.enableMute,"enable-pause":e.config.enablePause,"is-retrying":b.value,"is-stop-locked":ne.value,"permission-step":null,state:X(o),translations:a.value,onCloseUploadError:ue,onMicChange:q,onPause:X(s).pauseRecording,onRecord:U,onResume:X(s).resumeRecording,onRetry:le,onStop:ie,onToggleMute:X(s).toggleMute},null,8,[`enable-device-change`,`enable-mute`,`enable-pause`,`is-retrying`,`is-stop-locked`,`state`,`translations`,`onPause`,`onResume`,`onToggleMute`]),C.value?(G(),N(Sn,{key:0,translations:a.value,warning:X(o).audioWarning},null,8,[`translations`,`warning`])):P(`v-if`,!0)])):(G(),N(Vn,{key:1,variant:`preview`},{default:de(()=>[I(`div`,ni,[X(o).stream||V.value.visible?P(`v-if`,!0):(G(),F(`div`,ri,[...n[3]||=[I(`span`,{class:`vidtreo-permission-flow-spinner vidtreo-permission-flow-spinner--large`},null,-1)]])),X(o).transitionMessage?(G(),F(`div`,ii,[n[4]||=I(`div`,{class:`vidtreo-skeleton-spinner`},null,-1),I(`div`,ai,J(a.value.switchingDevice),1)])):P(`v-if`,!0),X(o).stream&&!(y.value||X(o).transitionMessage)?(G(),N(Ur,{key:2})):P(`v-if`,!0),X(o).stream?(G(),N(Hr,{key:3,"class-name":`vidtreo-video-preview`,controller:X(l),stream:X(o).stream,"transition-message":X(o).transitionMessage,onLoadedChange:n[2]||=e=>y.value=e},null,8,[`controller`,`stream`,`transition-message`])):P(`v-if`,!0),X(o).recordingState===`countdown`&&X(o).countdown!==null?(G(),F(`div`,oi,[I(`div`,si,[I(`div`,ci,J(X(o).countdown),1),I(`p`,li,J(a.value.recordingStartsIn),1)])])):P(`v-if`,!0),E.value&&w.value?(G(),N(vt,{key:5,"class-name":T.value,"is-visible":O.value,text:w.value},null,8,[`class-name`,`is-visible`,`text`])):P(`v-if`,!0),C.value?(G(),F(A,{key:6},[D.value?(G(),N(zt,{key:0,"hide-label":a.value.mobileHideRecordingPrompt,"is-prompt-visible":O.value,"show-label":a.value.mobileShowRecordingPrompt,onToggle:ee},null,8,[`hide-label`,`is-prompt-visible`,`show-label`])):(G(),F(`div`,ui,[n[5]||=I(`div`,{class:`vidtreo-recording-dot-small`},null,-1),I(`span`,null,J(a.value.rec),1)])),I(`div`,di,[n[6]||=I(`div`,{class:`vidtreo-recording-dot-small`},null,-1),I(`span`,fi,J(X(o).timer||`00:00`),1)]),I(`div`,pi,[R(mn,{"is-muted":X(o).isMuted},null,8,[`is-muted`])])],64)):P(`v-if`,!0),X(o).stream?(G(),N(tr,{key:7,"button-visibility":B.value,"current-source-type":z.value,"is-audio-ready":X(o).isAudioReady,"is-processing-recording":k.value,"is-muted":X(o).isMuted,"is-stop-locked":ne.value,"recording-state":X(o).recordingState,"stop-locked-tooltip":a.value.minimumRecordingTimeNotReached,translations:{settings:a.value.settings,record:a.value.record,stop:a.value.stop,minimumRecordingTimeNotReached:a.value.minimumRecordingTimeNotReached,pause:a.value.pause,resume:a.value.resume,mute:a.value.mute,unmute:a.value.unmute,switchSource:a.value.switchSource,download:a.value.download,microphoneConnecting:a.value.microphoneConnecting},onToggleSettings:ae,onStartRecording:U,onStopRecording:ie,onToggleMute:X(s).toggleMute,onPause:X(s).pauseRecording,onResume:X(s).resumeRecording,onSwitchSource:ce,onDownload:X(s).downloadVideo},null,8,[`button-visibility`,`current-source-type`,`is-audio-ready`,`is-processing-recording`,`is-muted`,`is-stop-locked`,`recording-state`,`stop-locked-tooltip`,`translations`,`onToggleMute`,`onPause`,`onResume`,`onDownload`])):P(`v-if`,!0),R(Dn,{message:V.value.message,"retry-label":V.value.canRetry?V.value.retryLabel:void 0,title:V.value.title,variant:V.value.variant,visible:(V.value.visible||b.value)&&!C.value&&!k.value,onRetry:le},null,8,[`message`,`retry-label`,`title`,`variant`,`visible`]),C.value?(G(),N(Sn,{key:8,translations:a.value,warning:X(o).audioWarning},null,8,[`translations`,`warning`])):P(`v-if`,!0),R(Mr,{"error-code":X(mt)({errorCode:X(o).uploadErrorCode,isRecording:C.value,isProcessingRecording:k.value}),translations:a.value,onClose:ue},null,8,[`error-code`,`translations`]),R(Vr,{label:H.value?.label??a.value.uploading,progress:H.value?.progress??null},null,8,[`label`,`progress`])])]),_:1})),X(o).transitionMessage?(G(),F(`div`,mi,[n[7]||=I(`div`,{class:`vidtreo-transition-spinner`},null,-1),I(`div`,hi,J(X(o).transitionMessage),1)])):P(`v-if`,!0),!m&&X(o).stream&&v.value?(G(),N(Dr,{key:3,devices:X(o).devices,translations:{settings:a.value.settings,camera:a.value.camera,microphone:a.value.microphone},onCameraChange:se,onMicChange:q},null,8,[`devices`,`translations`])):P(`v-if`,!0)])])],8,Xr)])):P(`v-if`,!0)]))}}),_i=z({__name:`MobileWebRecorderUI`,props:{config:{}},setup(e,{expose:t}){let n=e,r=he(()=>n.config,e=>n.config.onError?.(e)),i=K(null);return t(ve(i)),(t,n)=>X(r)?(G(),N(In,{key:0,error:X(r),lang:e.config.lang,texts:e.config.texts},null,8,[`error`,`lang`,`texts`])):(G(),N(gi,{key:1,ref_key:`recorderContent`,ref:i,config:e.config},null,8,[`config`]))}});function vi(e,t){if(typeof document>`u`)return;let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}function yi(e){let r=se({file:null,transcodingProgress:null,uploadProgress:null,uploadPhase:null,uploadRetryAttempt:null,isTranscoding:!1,isConfigLoading:!0,error:null,uploadErrorCode:null,transcodedBlob:null}),i={current:null},a={current:e};function o(){r.transcodingProgress=null,r.uploadProgress=null,r.uploadPhase=null,r.uploadRetryAttempt=null,r.isTranscoding=!1}function s(e){r.uploadProgress=e,a.current.onUploadProgress?.(e,r.uploadPhase)}function c(e){r.uploadProgress=r.uploadProgress??0,r.uploadRetryAttempt=e.attempt}function u(e){r.file=null,o(),a.current.onUploadComplete?.(e)}function d(e){let t=b(e),n=e instanceof Error?e:Error(t);if(ee(e)){a.current.onUploadError?.(n);return}r.error=t,r.uploadErrorCode=w(e),o(),r.transcodedBlob=null,a.current.onError?.(n),a.current.onUploadError?.(n)}function f(){i.current?.destroy(),i.current=null}function p(e){let n=e.backendUrl||xe,o=!!(e.apiKey||e.getAccessToken),f=null;o&&!e.demo&&(f=t.getInstance({backendUrl:n,...e.getAccessToken?{getAccessToken:e.getAccessToken}:{apiKey:e.apiKey??``}}));let p=new l({apiKey:e.apiKey,getAccessToken:e.getAccessToken,backendUrl:n,maxRecordingTime:e.maxRecordingTime,maxFileSize:e.maxFileSize,userMetadata:e.userMetadata},f,new m);if(i.current=p,!o||e.demo){r.isConfigLoading=!1;return}p.startUploadQueue({onUploadProgress:s,onUploadProgressDetails:e=>{r.uploadPhase=e.phase},onUploadRetry:c,onUploadComplete:u,onUploadError:d}).catch(()=>void 0),r.isConfigLoading=!0,p.preloadConfig().then(()=>{r.isConfigLoading=!1}).catch(()=>{r.isConfigLoading=!1,r.error=Ce(a.current.lang,a.current.texts).nativeCameraConfigLoadError})}typeof window<`u`&&p(e),Z(()=>[e.apiKey,e.getAccessToken,e.backendUrl,e.demo,e.maxRecordingTime,e.maxFileSize,e.userMetadata],()=>{f(),p(a.current)},{flush:`post`}),W(f);async function h(e){if(r.error=null,!i.current)throw Error(`Handler not initialized`);try{let t=await i.current.handleFileSelection(e);return r.file=t,t}catch(e){let t=b(e),n=e instanceof Error?e:Error(t);throw r.error=t,a.current.onError?.(n),n}}async function g(e){let t=e||r.file;if(!(t&&i.current))return;let l=e=>{r.transcodingProgress=e,a.current.onTranscodingProgress?.(e)};if(r.isTranscoding=!0,r.transcodingProgress=0,r.uploadRetryAttempt=null,r.error=null,r.uploadErrorCode=null,a.current.demo){try{r.transcodedBlob=(await k(t.file,n,l)).blob,r.isTranscoding=!1,r.transcodingProgress=null}catch(e){let t=b(e);r.error=t,r.uploadErrorCode=w(e),o(),r.transcodedBlob=null,a.current.onError?.(e instanceof Error?e:Error(t))}return}try{let{blob:e,...t}=await i.current.processAndUpload(l,s,e=>{r.uploadPhase=e.phase},c);u(t)}catch(e){d(e)}}function _(){r.transcodedBlob&&vi(r.transcodedBlob,`recording-${Date.now()}.mp4`)}function v(){r.file=null,o(),r.error=null,r.uploadErrorCode=null,r.transcodedBlob=null}return{state:r,actions:{handleFileSelect:h,processAndUpload:g,downloadVideo:_,reset:v}}}const bi={class:`vidtreo-transcoding-progress`},xi={class:`vidtreo-progress-bar`},Si={class:`vidtreo-progress-text`},Ci=z({__name:`TranscodingProgress`,props:{label:{},progress:{}},setup(e){let t=e,n=M(()=>Math.round(t.progress*100));return(t,r)=>(G(),F(`div`,bi,[I(`div`,xi,[I(`div`,{class:`vidtreo-progress-fill`,style:U({width:`${n.value}%`})},null,4)]),I(`div`,Si,J(e.label)+` `+J(n.value)+`%`,1)]))}}),wi={key:0,class:`vidtreo-upload-progress`},Ti={class:`vidtreo-upload-progress-bar`},Ei={class:`vidtreo-upload-progress-text`},Di=z({__name:`UploadProgress`,props:{label:{},progress:{},visible:{type:Boolean}},setup(e){let t=e,n=M(()=>t.progress===null?0:Math.round(t.progress*100)),r=M(()=>t.visible&&t.progress!==null);return(t,i)=>r.value?(G(),F(`div`,wi,[I(`div`,Ti,[I(`div`,{class:`vidtreo-upload-progress-fill`,style:U({width:`${n.value}%`})},null,4)]),I(`div`,Ei,J(e.label)+` `+J(n.value)+`% `,1)])):P(`v-if`,!0)}}),Oi={class:`vidtreo-native-camera-container`},ki={key:0,"aria-live":`polite`,class:`vidtreo-config-loading-indicator`},Ai={class:`vidtreo-visually-hidden`},ji={key:1,class:`vidtreo-native-camera-preview-container`},Mi=[`alt`,`src`],Ni={key:0,class:`vidtreo-progress-overlay`},Pi={key:1,class:`vidtreo-progress-overlay`},Fi={key:2,class:`vidtreo-native-camera-download-button`},Ii={key:3,class:`vidtreo-native-camera-empty-state`},Li={class:`vidtreo-native-camera-buttons`},Ri=[`disabled`],zi=[`disabled`],Bi=z({__name:`NativeCameraUIContent`,props:{config:{}},setup(e){let t=e,{state:n,actions:r}=yi(t.config),i=K(null),a=M(()=>t.config.lang??`en`),o=M(()=>t.config.texts??{}),s=M(()=>Ce(a.value,o.value));function c(){let e=i.value;e&&(e.accept=`video/*`,e.removeAttribute(`capture`),e.click())}function l(){let e=i.value;e&&(e.accept=`video/*`,e.setAttribute(`capture`,`environment`),e.click())}async function u(e){let t=e.target,n=t.files?.[0];if(n){let e=await r.handleFileSelect(n);await r.processAndUpload(e)}t.value=``}let d=M(()=>ct(n.uploadPhase,n.uploadRetryAttempt,s.value)),f=M(()=>n.file!==null),p=M(()=>!(f.value||n.isTranscoding)&&n.uploadProgress===null&&!n.transcodedBlob),m=M(()=>!!t.config.demo&&n.transcodedBlob!==null&&!n.isTranscoding&&n.uploadProgress===null);return(e,t)=>(G(),F(`div`,Oi,[I(`input`,{ref_key:`fileInputRef`,ref:i,style:{display:`none`},type:`file`,onChange:u},null,544),X(n).isConfigLoading?(G(),F(`output`,ki,[t[1]||=I(`div`,{"aria-hidden":`true`,class:`vidtreo-spinner-small`},null,-1),I(`span`,Ai,J(s.value.nativeCameraConfigLoading),1)])):P(`v-if`,!0),f.value&&X(n).file!==null?(G(),F(`div`,ji,[I(`img`,{alt:s.value.nativeCameraPreviewAlt,class:`vidtreo-native-camera-preview-image`,height:480,src:X(n).file.previewUrl,width:640},null,8,Mi),X(n).isTranscoding&&X(n).transcodingProgress!==null?(G(),F(`div`,Ni,[R(Ci,{label:s.value.nativeCameraProcessing,progress:X(n).transcodingProgress},null,8,[`label`,`progress`])])):P(`v-if`,!0),X(n).uploadProgress===null?P(`v-if`,!0):(G(),F(`div`,Pi,[R(Di,{label:d.value,progress:X(n).uploadProgress,visible:!0},null,8,[`label`,`progress`])])),m.value?(G(),F(`div`,Fi,[I(`button`,{class:`vidtreo-btn vidtreo-btn-primary`,type:`button`,onClick:t[0]||=(...e)=>X(r).downloadVideo&&X(r).downloadVideo(...e)},J(s.value.download),1)])):P(`v-if`,!0)])):P(`v-if`,!0),!f.value&&X(n).uploadProgress!==null?(G(),N(Di,{key:2,label:d.value,progress:X(n).uploadProgress,visible:!0},null,8,[`label`,`progress`])):P(`v-if`,!0),p.value?(G(),F(`div`,Ii,[I(`div`,Li,[I(`button`,{class:`vidtreo-btn vidtreo-btn-primary`,disabled:X(n).isConfigLoading,type:`button`,onClick:c},J(s.value.nativeCameraSelectVideo),9,Ri),I(`button`,{class:`vidtreo-btn vidtreo-btn-secondary`,disabled:X(n).isConfigLoading,type:`button`,onClick:l},J(s.value.nativeCameraRecordVideo),9,zi)])])):P(`v-if`,!0),R(Mr,{"error-code":X(n).uploadErrorCode,translations:s.value,onClose:X(r).reset},null,8,[`error-code`,`translations`,`onClose`]),R(Dn,{message:X(n).error||s.value.genericErrorMessage,"retry-label":s.value.errorRetry,title:s.value.genericErrorTitle,variant:`generic`,visible:X(n).error!==null&&!X(pt)(X(n).uploadErrorCode),onRetry:X(r).reset},null,8,[`message`,`retry-label`,`title`,`visible`,`onRetry`])]))}}),Vi=z({__name:`NativeCameraUI`,props:{config:{}},setup(e,{expose:t}){let n=e,r=he(()=>n.config,e=>n.config.onError?.(e));return t(ge()),(t,n)=>X(r)?(G(),N(In,{key:0,error:X(r),lang:e.config.lang,texts:e.config.texts},null,8,[`error`,`lang`,`texts`])):(G(),N(Bi,{key:1,config:e.config},null,8,[`config`]))}}),Hi=`unknown`;function Ui(e){return!(e===`idle`||e===`ready`)}function Wi(e={}){let t=K(null),n=le(null),r={onComplete:e.onComplete,onChange:e.onChange};function i(){let i=!0,o=new u(y(),{callbacks:{onChange:(e,n)=>{i&&(t.value=e,r.onChange&&r.onChange(e,n))},onComplete:e=>{i&&(t.value=e,r.onComplete&&r.onComplete(e))}},language:Y(e.language),mediaType:e.mediaType});n.value=o,o.initialize().then(e=>{i&&(t.value=e)}).catch(()=>{}),a.fn=()=>{i=!1,o.destroy(),n.value===o&&(n.value=null)}}let a={fn:null};function o(){a.fn&&=(a.fn(),null)}typeof window<`u`&&i(),Z(()=>Y(e.language),()=>{o(),i()}),W(()=>{o()});let s=async()=>{let e=n.value;e&&(t.value=await e.requestCurrentStep())},c=async()=>{let e=n.value;e&&(t.value=await e.retryCurrentStep())},l=M(()=>t.value?t.value.step:`idle`),d=M(()=>Ui(l.value)),f=M(()=>t.value?t.value.isComplete:!1),p=M(()=>t.value?t.value.recoveryData:void 0);return{isActive:d,isComplete:f,currentStep:l,steps:M(()=>{let e=t.value?t.value.permissions.camera:Hi,n=t.value?t.value.permissions.microphone:Hi;return[{deviceType:`camera`,status:e},{deviceType:`microphone`,status:n}]}),recoveryData:p,requestPermission:s,retryPermission:c}}function Gi(e){return{preview:M(()=>{let t=Y(e);return{initializingCamera:t.initializingCamera,grantPermissions:t.grantPermissions,browserUnsupported:t.browserUnsupported,browserUnsupportedDynamic:t.browserUnsupportedDynamic,browserUnsupportedSafari:t.browserUnsupportedSafari,browserUnsupportedFirefox:t.browserUnsupportedFirefox,retryCamera:t.retryCamera,cameraInUse:t.cameraInUse,cameraNotFound:t.cameraNotFound,cameraPermissionDenied:t.cameraPermissionDenied,cameraTimeout:t.cameraTimeout,failedToStartCamera:t.failedToStartCamera,audioInUse:t.audioInUse,audioNotFound:t.audioNotFound,audioPermissionDenied:t.audioPermissionDenied,audioTimeout:t.audioTimeout,failedToStartAudio:t.failedToStartAudio,switchingDevice:t.switchingDevice,recordingStartsIn:t.recordingStartsIn,rec:t.rec}}),buttons:M(()=>{let t=Y(e);return{settings:t.settings,record:t.record,stop:t.stop,minimumRecordingTimeNotReached:t.minimumRecordingTimeNotReached,pause:t.pause,resume:t.resume,mute:t.mute,unmute:t.unmute,switchSource:t.switchSource,download:t.download,microphoneConnecting:t.microphoneConnecting}}),settings:M(()=>{let t=Y(e);return{settings:t.settings,camera:t.camera,microphone:t.microphone}})}}const Ki={class:`vidtreo-recovery-guide`},qi={class:`vidtreo-recovery-guide-browser`},Ji={class:`vidtreo-recovery-guide-titlebar`},Yi={class:`vidtreo-recovery-guide-addressbar`},Xi={class:`vidtreo-recovery-guide-url`},Zi={class:`vidtreo-recovery-guide-popover`},Qi={class:`vidtreo-recovery-guide-popover-header`},$i={key:0,class:`vidtreo-recovery-guide-perm-row`},ea={class:`vidtreo-recovery-guide-perm-group`},ta={class:`vidtreo-recovery-guide-perm-label`},na={class:`vidtreo-recovery-guide-perm-row`},ra={class:`vidtreo-recovery-guide-perm-group`},ia={class:`vidtreo-recovery-guide-perm-label`},aa=`vidtreo.com`,oa=z({__name:`PermissionRecoveryGuide`,props:{cameraLabel:{},microphoneLabel:{}},setup(e){let t=M(()=>{if(globalThis.window===void 0)return aa;let e=globalThis.window.location.hostname||aa;return e.length>20?`${e.slice(0,20)}...`:e});return(n,r)=>(G(),F(`div`,Ki,[I(`div`,qi,[I(`div`,Ji,[r[1]||=I(`div`,{class:`vidtreo-recovery-guide-dots`},[I(`span`,{class:`vidtreo-recovery-guide-dot vidtreo-recovery-guide-dot--close`}),I(`span`,{class:`vidtreo-recovery-guide-dot vidtreo-recovery-guide-dot--min`}),I(`span`,{class:`vidtreo-recovery-guide-dot vidtreo-recovery-guide-dot--max`})],-1),I(`div`,Yi,[r[0]||=I(`div`,{class:`vidtreo-recovery-guide-lock`},[I(`svg`,{"aria-hidden":`true`,class:`vidtreo-recovery-guide-lock-svg`,fill:`currentColor`,height:`10`,viewBox:`0 0 256 256`,width:`10`},[I(`path`,{d:`M208,80H176V56a48,48,0,0,0-96,0V80H48A16,16,0,0,0,32,96V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V96A16,16,0,0,0,208,80ZM96,56a32,32,0,0,1,64,0V80H96Z`})])],-1),I(`span`,Xi,J(t.value),1)])]),r[2]||=I(`div`,{class:`vidtreo-recovery-guide-browser-bg`},null,-1)]),r[8]||=I(`div`,{class:`vidtreo-recovery-guide-cursor`},[I(`svg`,{"aria-hidden":`true`,class:`vidtreo-recovery-guide-cursor-svg`,height:`22`,viewBox:`0 0 28 28`,width:`22`},[I(`path`,{d:`M5 2l1.5 20.5 4.5-6 3.5 7 2.5-1.2-3.5-7H20L5 2z`,fill:`#000`,stroke:`#fff`,"stroke-linejoin":`round`,"stroke-width":`1.6`})])],-1),I(`div`,Zi,[I(`div`,Qi,J(t.value),1),r[7]||=I(`div`,{class:`vidtreo-recovery-guide-popover-divider`},null,-1),e.cameraLabel?(G(),F(`div`,$i,[I(`div`,ea,[r[3]||=ne(`<div class="vidtreo-recovery-guide-perm-icon"><span class="vidtreo-recovery-guide-icon-off"><svg aria-hidden="true" fill="none" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16" viewBox="0 0 256 256" width="14"><path d="M200,72H32A8,8,0,0,0,24,80v96a8,8,0,0,0,8,8H200a8,8,0,0,0,8-8V80A8,8,0,0,0,200,72Z"></path><polyline points="208 156 248 180 248 76 208 100"></polyline><line x1="34" x2="222" y1="232" y2="24"></line></svg></span><span class="vidtreo-recovery-guide-icon-on"><svg aria-hidden="true" fill="currentColor" height="14" viewBox="0 0 256 256" width="14"><path d="M251.77,73a8,8,0,0,0-8.21.39L208,97.05V72a16,16,0,0,0-16-16H32A16,16,0,0,0,16,72V184a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V159l35.56,23.71A8,8,0,0,0,256,176V80A8,8,0,0,0,251.77,73Z"></path></svg></span></div>`,1),I(`div`,ta,J(e.cameraLabel),1)]),r[4]||=I(`div`,{class:`vidtreo-recovery-guide-switch`},[I(`div`,{class:`vidtreo-recovery-guide-switch-track`}),I(`div`,{class:`vidtreo-recovery-guide-switch-knob`})],-1)])):P(`v-if`,!0),I(`div`,na,[I(`div`,ra,[r[5]||=ne(`<div class="vidtreo-recovery-guide-perm-icon"><span class="vidtreo-recovery-guide-icon-off vidtreo-recovery-guide-switch--delayed"><svg aria-hidden="true" fill="none" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16" viewBox="0 0 256 256" width="14"><path d="M176,128a48,48,0,0,1-48,48"></path><path d="M96,163.4A48,48,0,0,1,80,128V64a48,48,0,0,1,90.64-21.47"></path><path d="M200,128a79.74,79.74,0,0,1-9.18,37.42"></path><path d="M56,128a79.6,79.6,0,0,0,21.44,54.46"></path><line x1="128" x2="128" y1="208" y2="240"></line><line x1="96" x2="160" y1="240" y2="240"></line><line x1="34" x2="222" y1="232" y2="24"></line></svg></span><span class="vidtreo-recovery-guide-icon-on vidtreo-recovery-guide-switch--delayed"><svg aria-hidden="true" fill="currentColor" height="14" viewBox="0 0 256 256" width="14"><path d="M128,176a48.05,48.05,0,0,0,48-48V64a48,48,0,0,0-96,0v64A48.05,48.05,0,0,0,128,176ZM96,64a32,32,0,0,1,64,0v64a32,32,0,0,1-64,0Zm40,143.6V232a8,8,0,0,1-16,0V207.6A80.11,80.11,0,0,1,48,128a8,8,0,0,1,16,0,64,64,0,0,0,128,0,8,8,0,0,1,16,0A80.11,80.11,0,0,1,136,207.6Z"></path></svg></span></div>`,1),I(`div`,ia,J(e.microphoneLabel),1)]),r[6]||=I(`div`,{class:`vidtreo-recovery-guide-switch`},[I(`div`,{class:`vidtreo-recovery-guide-switch-track vidtreo-recovery-guide-switch--delayed`}),I(`div`,{class:`vidtreo-recovery-guide-switch-knob vidtreo-recovery-guide-switch--delayed`})],-1)])])]))}}),sa={key:0,class:`vidtreo-permission-flow-spinner vidtreo-permission-flow-spinner--large`},ca={class:`vidtreo-permission-flow-title`},la={key:0,class:`vidtreo-permission-flow-subtitle`},ua=[`disabled`],da={key:0,class:`vidtreo-permission-flow-spinner`},fa={key:2,class:`vidtreo-permission-flow-recovery`},pa={class:`vidtreo-permission-flow-subtitle`},ma=z({__name:`PermissionFlowSteps`,props:{isActive:{type:Boolean},isFadingOut:{type:Boolean},currentStep:{},steps:{},recoveryData:{},canRetry:{type:Boolean},translations:{},audioOnly:{type:Boolean}},emits:[`requestPermission`,`retryPermission`],setup(e,{emit:t}){let n=e,r=t,i=M(()=>n.isFadingOut?`vidtreo-permission-flow vidtreo-active vidtreo-permission-flow--fading`:`vidtreo-permission-flow vidtreo-active`),a=M(()=>n.currentStep===`ready`),o=M(()=>n.currentStep===`blocked`),s=M(()=>n.currentStep===`checking`),c=M(()=>n.audioOnly||n.steps[0].status===`granted`?`microphone`:`camera`),l=M(()=>c.value===`camera`?n.translations.cameraTitle:n.translations.microphoneTitle),u=M(()=>c.value===`camera`?n.translations.cameraLabel:n.translations.microphoneLabel),d=M(()=>c.value===`camera`?n.translations.allowCamera:n.translations.allowMicrophone),f=M(()=>c.value===`camera`?n.steps[0].status:n.steps[1].status),p=M(()=>!o.value&&f.value!==`granted`&&f.value!==`denied`),m=M(()=>s.value?`vidtreo-permission-flow-action vidtreo-permission-flow-action--requesting`:`vidtreo-permission-flow-action`),h=M(()=>s.value?n.translations.statusRequesting:d.value);return(t,n)=>e.isActive?(G(),F(`div`,{key:0,class:H(i.value)},[a.value?(G(),F(`span`,sa)):(G(),F(A,{key:1},[I(`div`,ca,J(l.value),1),o.value?P(`v-if`,!0):(G(),F(`div`,la,J(u.value),1)),p.value?(G(),F(`button`,{key:1,class:H(m.value),disabled:s.value,type:`button`,onClick:n[0]||=e=>r(`requestPermission`)},[s.value?(G(),F(`span`,da)):e.audioOnly?(G(),N(X(kt),{key:1,size:24,weight:`fill`})):(G(),N(X(Ft),{key:2,size:24,weight:`fill`})),L(` `+J(h.value),1)],10,ua)):P(`v-if`,!0),o.value&&e.recoveryData?(G(),F(`div`,fa,[I(`div`,pa,J(e.translations.recoveryTitle),1),R(oa,{"camera-label":e.audioOnly?void 0:e.translations.cameraName,"microphone-label":e.translations.microphoneName},null,8,[`camera-label`,`microphone-label`])])):P(`v-if`,!0)],64))],2)):P(`v-if`,!0)}}),ha={key:0,class:`vidtreo-start-camera-area`},ga={key:1,id:`previewSkeleton`,class:`vidtreo-preview-skeleton`},_a={class:`vidtreo-skeleton-text`},va={key:3,id:`countdownOverlay`,class:`vidtreo-countdown-overlay vidtreo-active`},ya={class:`vidtreo-countdown-content`},ba={id:`countdownNumber`,class:`vidtreo-countdown-number`},xa={class:`vidtreo-countdown-text`},Sa={key:4,id:`recIndicatorTop`,class:`vidtreo-rec-indicator-top`},Ca={key:5,id:`recordingTimerRow`,class:`vidtreo-recording-timer-badge`},wa={id:`recordingTimer`,class:`vidtreo-recording-timer-text`},Ta={key:6,id:`audioLevelBars`,class:`vidtreo-audio-level-bars`},Ea=z({__name:`PreviewContent`,props:{state:{},isVideoLoaded:{type:Boolean},isRecording:{type:Boolean},isProcessingRecording:{type:Boolean},controller:{},buttonVisibility:{},currentSourceType:{},isStopLocked:{type:Boolean},stopLockedTooltip:{},translations:{},buttonTranslations:{}},emits:[`startRecording`,`stopRecording`,`switchSource`,`toggleSettings`,`toggleMute`,`pause`,`resume`,`loadedChange`,`download`],setup(e,{emit:t}){let n=e,r=t,i=M(()=>!n.state.stream),a=M(()=>n.state.transitionMessage!==null),o=M(()=>n.state.recordingState===`countdown`&&n.state.countdown!==null);function s(e){r(`loadedChange`,e)}return(t,n)=>(G(),F(A,null,[i.value?(G(),F(`div`,ha,[...n[8]||=[I(`span`,{class:`vidtreo-permission-flow-spinner vidtreo-permission-flow-spinner--large`},null,-1)]])):P(`v-if`,!0),a.value?(G(),F(`div`,ga,[n[9]||=I(`div`,{class:`vidtreo-skeleton-spinner`},null,-1),I(`div`,_a,J(e.translations.switchingDevice),1)])):P(`v-if`,!0),!e.isVideoLoaded&&e.state.stream?(G(),N(Ur,{key:2,"class-name":`vidtreo-video-skeleton`})):P(`v-if`,!0),R(Hr,{controller:e.controller,stream:e.state.stream,"transition-message":e.state.transitionMessage,"class-name":`vidtreo-video-preview`,onLoadedChange:s},null,8,[`controller`,`stream`,`transition-message`]),o.value?(G(),F(`div`,va,[I(`div`,ya,[I(`div`,ba,J(e.state.countdown),1),I(`p`,xa,J(e.translations.recordingStartsIn),1)])])):P(`v-if`,!0),e.isRecording?(G(),F(`div`,Sa,[n[10]||=I(`div`,{class:`vidtreo-recording-dot-small`},null,-1),I(`span`,null,J(e.translations.rec),1)])):P(`v-if`,!0),e.isRecording?(G(),F(`div`,Ca,[n[11]||=I(`div`,{class:`vidtreo-recording-dot-small`},null,-1),I(`span`,wa,J(e.state.timer),1)])):P(`v-if`,!0),e.isRecording?(G(),F(`div`,Ta,[R(mn,{"is-muted":e.state.isMuted},null,8,[`is-muted`])])):P(`v-if`,!0),e.state.stream?(G(),N(tr,{key:7,"button-visibility":e.buttonVisibility,"current-source-type":e.currentSourceType,"is-audio-ready":e.state.isAudioReady,"is-muted":e.state.isMuted,"is-processing-recording":e.isProcessingRecording,"is-stop-locked":e.isStopLocked,"recording-state":e.state.recordingState,"stop-locked-tooltip":e.stopLockedTooltip,translations:e.buttonTranslations,onToggleSettings:n[0]||=e=>r(`toggleSettings`),onStartRecording:n[1]||=e=>r(`startRecording`),onStopRecording:n[2]||=e=>r(`stopRecording`),onToggleMute:n[3]||=e=>r(`toggleMute`),onPause:n[4]||=e=>r(`pause`),onResume:n[5]||=e=>r(`resume`),onSwitchSource:n[6]||=e=>r(`switchSource`),onDownload:n[7]||=e=>r(`download`)},null,8,[`button-visibility`,`current-source-type`,`is-audio-ready`,`is-muted`,`is-processing-recording`,`is-stop-locked`,`recording-state`,`stop-locked-tooltip`,`translations`])):P(`v-if`,!0)],64))}}),Da={class:`vidtreo-preview-container`},Oa={key:2,id:`sourceTransitionOverlay`,class:`vidtreo-source-transition-overlay vidtreo-active`},ka={class:`vidtreo-transition-message`},Aa=z({__name:`StandardRecorderContent`,props:{recorderProps:{}},emits:[`recordingStart`,`recordingStop`,`uploadComplete`,`uploadProgress`,`uploadError`,`transcodingProgress`,`error`],setup(e,{expose:t,emit:n}){let r=e,i=n;function a(e){if(e===`en`)return`en`;if(e===`es`)return`es`}function o(e){i(`error`,e instanceof Error?e:Error(String(e)))}let s=r.recorderProps.audioOnly===!0,c=ye(s),l=K(!1),u=K(!1),d=K(!1),f=K(`hidden`),p=M(()=>r.recorderProps.lang||`en`),m=M(()=>r.recorderProps.texts||Nr),h=M(()=>Ce(p.value,m.value)),g=M(()=>{let{apiKey:e,demo:t,getAccessToken:n}=r.recorderProps;return pe(e,t,n)?``:me(e,t,n)}),_=M(()=>({apiKey:g.value,getAccessToken:r.recorderProps.getAccessToken,backendUrl:r.recorderProps.backendUrl,countdownDuration:r.recorderProps.countdownDuration,minTimeRecord:r.recorderProps.minTimeRecord,maxRecordingTime:r.recorderProps.maxRecordingTime,userMetadata:r.recorderProps.userMetadata,enableSourceSwitching:r.recorderProps.enableSourceSwitching,enableMute:r.recorderProps.enableMute,enablePause:r.recorderProps.enablePause,enableDeviceChange:r.recorderProps.enableDeviceChange,enableTabVisibilityOverlay:r.recorderProps.enableTabVisibilityOverlay,tabVisibilityOverlayText:r.recorderProps.tabVisibilityOverlayText,demo:r.recorderProps.demo,nativeCamera:r.recorderProps.nativeCamera,audioOnly:s,lang:r.recorderProps.lang,texts:r.recorderProps.texts,onUploadComplete:e=>i(`uploadComplete`,e),onUploadProgress:(e,t)=>i(`uploadProgress`,e,t),onUploadError:e=>i(`uploadError`,e),onRecordingStart:()=>i(`recordingStart`),onRecordingStop:()=>i(`recordingStop`),onTranscodingProgress:e=>i(`transcodingProgress`,e),onError:o})),{state:v,actions:y,audioLevel:b,controller:x}=We(()=>_.value);oe(Ke,b),t(_e(x));let S=Gi(h),C=Wi({language:()=>a(p.value),mediaType:s?`audio`:`video`}),w=M(()=>({title:h.value.permissionFlowTitle,cameraTitle:h.value.permissionFlowCameraTitle,microphoneTitle:s?h.value.permissionFlowMicrophoneOnlyTitle:h.value.permissionFlowMicrophoneTitle,cameraLabel:h.value.permissionFlowCameraLabel,microphoneLabel:s?h.value.permissionFlowMicrophoneOnlyLabel:h.value.permissionFlowMicrophoneLabel,statusPending:h.value.permissionFlowStatusPending,statusGranted:h.value.permissionFlowStatusGranted,statusDenied:h.value.permissionFlowStatusDenied,statusRequesting:h.value.permissionFlowStatusRequesting,allowCamera:h.value.permissionFlowAllowCamera,allowMicrophone:h.value.permissionFlowAllowMicrophone,retry:h.value.permissionFlowRetry,recoveryTitle:h.value.permissionFlowRecoveryTitle,recoveryInstructions:s?h.value.permissionFlowMicrophoneOnlyRecoveryInstructions:h.value.permissionFlowRecoveryInstructions,cameraName:h.value.camera,microphoneName:h.value.microphone,connecting:h.value.permissionFlowConnecting}));Z([()=>C.isActive.value,M(()=>s?v.stream!==null:u.value),()=>v.stream,()=>v.error],([e,t,n,r])=>{if(r){f.value=`hidden`;return}if(e){f.value=`active`,u.value=!1;return}let i=f.value;if(i!==`hidden`&&i!==`fading`){if(t){f.value=`fading`;return}if(n){f.value=`loading`;return}f.value=`loading`}},{immediate:!0}),Z(f,(e,t,n)=>{if(e!==`fading`)return;let r=setTimeout(()=>{f.value=`hidden`},600);n(()=>{clearTimeout(r)})}),Z([()=>C.isActive.value,()=>v.stream],([e,t])=>{e&&t&&y.stopPreview()}),Z([()=>v.stream,()=>v.uploadProgress,()=>v.isInitialized,()=>C.currentStep.value,()=>C.isActive.value],([e,t,n,r,i],a,s)=>{if(e||t!==null||!n||r===`idle`||i)return;let l=setTimeout(()=>{y.startPreview(c).catch(o)},100);s(()=>clearTimeout(l))},{immediate:!0}),Z(()=>v.recordingState,e=>{e===Ir&&l.value&&(l.value=!1)});let T=M(()=>v.recordingState===Ir||v.isPaused),E=M(()=>dt(v)),O=M(()=>Pe(r.recorderProps.minTimeRecord,v.timer,T.value)),ee=M(()=>x.value?.getCurrentSourceType()||Pr),k=M(()=>{let e=qe(T.value,v.recordingState,v.isPaused,{enableDeviceChange:r.recorderProps.enableDeviceChange,enableMute:r.recorderProps.enableMute,enablePause:r.recorderProps.enablePause,enableSourceSwitching:r.recorderProps.enableSourceSwitching,isMobile:D(),audioOnly:s}),t=!1;return r.recorderProps.demo&&!T.value&&!E.value&&v.recordingState===`idle`&&v.recordedBlob!==null&&(t=!0),{...e,showDownloadButton:t}}),A=M(()=>ut(v,h.value)),j=M(()=>f.value!==`hidden`),ne=M(()=>f.value===`loading`||f.value===`fading`),L=M(()=>f.value===`fading`),z=M(()=>C.currentStep.value===`checking`&&C.steps.value.find(e=>e.deviceType===`microphone`)?.status===`unknown`),re=M(()=>ne.value?`ready`:C.currentStep.value),B=M(()=>tt(te({errorCode:v.errorCode,hasAudioFailed:v.hasAudioFailed,error:v.error}),h.value,v.error,v.errorCode)),V=M(()=>(B.value.visible||d.value)&&!T.value&&!E.value);function U(){y.startRecording(c).catch(o)}function W(){O.value||y.stopRecording().catch(o)}function ie(){r.recorderProps.enableDeviceChange!==!1&&(l.value=!l.value)}function ae(e){y.changeCamera(e).catch(o)}function se(e){y.changeMic(e).catch(o)}function q(){let e=x.value?.getCurrentSourceType()||Pr,t=Pr;e===Pr&&(t=Fr),e===Fr&&(t=Pr),y.switchSource(t).catch(o)}async function ce(){d.value=!0,y.stopPreview(),await y.startPreview(c).catch(o).finally(()=>{d.value=!1})}function le(){C.requestPermission().catch(o)}function ue(){C.retryPermission().catch(o)}return(t,n)=>(G(),F(`div`,{id:`cameraArea`,class:H([`vidtreo-camera-area vidtreo-active`,{"vidtreo-audio-only":s}])},[s?(G(),N(Vn,{key:0,variant:`preview`},{default:de(()=>[R(fn,{"can-retry-permission":X(C).recoveryData.value?.canRetry??!1,"enable-device-change":e.recorderProps.enableDeviceChange,"enable-mute":e.recorderProps.enableMute,"enable-pause":e.recorderProps.enablePause,"is-retrying":d.value,"is-stop-locked":O.value,"permission-step":z.value?null:X(C).currentStep.value,state:X(v),translations:h.value,onCloseUploadError:X(y).clearUploadError,onMicChange:se,onPause:X(y).pauseRecording,onRecord:U,onRequestPermission:le,onResume:X(y).resumeRecording,onRetry:ce,onRetryPermission:ue,onStop:W,onToggleMute:X(y).toggleMute},null,8,[`can-retry-permission`,`enable-device-change`,`enable-mute`,`enable-pause`,`is-retrying`,`is-stop-locked`,`permission-step`,`state`,`translations`,`onCloseUploadError`,`onPause`,`onResume`,`onToggleMute`]),T.value?(G(),N(Sn,{key:0,translations:h.value,warning:X(v).audioWarning},null,8,[`translations`,`warning`])):P(`v-if`,!0)]),_:1})):(G(),N(Vn,{key:1,variant:`preview`},{default:de(()=>[I(`div`,Da,[R(Ea,{"button-translations":X(S).buttons.value,"button-visibility":k.value,controller:X(x),"current-source-type":ee.value,"is-recording":T.value,"is-processing-recording":E.value,"is-stop-locked":O.value,"is-video-loaded":u.value,state:X(v),"stop-locked-tooltip":X(S).buttons.value.minimumRecordingTimeNotReached,translations:X(S).preview.value,onStartRecording:U,onStopRecording:W,onSwitchSource:q,onToggleSettings:ie,onToggleMute:X(y).toggleMute,onPause:X(y).pauseRecording,onResume:X(y).resumeRecording,onLoadedChange:n[0]||=e=>u.value=e,onDownload:X(y).downloadVideo},null,8,[`button-translations`,`button-visibility`,`controller`,`current-source-type`,`is-recording`,`is-processing-recording`,`is-stop-locked`,`is-video-loaded`,`state`,`stop-locked-tooltip`,`translations`,`onToggleMute`,`onPause`,`onResume`,`onDownload`]),R(Dn,{message:B.value.message,"retry-label":B.value.canRetry?B.value.retryLabel:void 0,title:B.value.title,variant:B.value.variant,visible:V.value,onRetry:ce},null,8,[`message`,`retry-label`,`title`,`variant`,`visible`]),T.value?(G(),N(Sn,{key:0,translations:h.value,warning:X(v).audioWarning},null,8,[`translations`,`warning`])):P(`v-if`,!0),R(Mr,{"error-code":X(mt)({errorCode:X(v).uploadErrorCode,isRecording:T.value,isProcessingRecording:E.value}),translations:h.value,onClose:X(y).clearUploadError},null,8,[`error-code`,`translations`,`onClose`]),j.value?(G(),N(ma,{key:1,"can-retry":X(C).recoveryData.value?.canRetry??!1,"current-step":re.value,"is-active":!0,"is-fading-out":L.value,"recovery-data":X(C).recoveryData.value,steps:X(C).steps.value,translations:w.value,onRequestPermission:le,onRetryPermission:ue},null,8,[`can-retry`,`current-step`,`is-fading-out`,`recovery-data`,`steps`,`translations`])):P(`v-if`,!0),R(Vr,{label:A.value.finalizing?.label??h.value.finishing,progress:A.value.finalizing?.progress??null},null,8,[`label`,`progress`]),R(Vr,{label:A.value.transcoding?.label??h.value.finishing,progress:A.value.transcoding?.progress??null},null,8,[`label`,`progress`]),R(Vr,{label:A.value.upload?.label??h.value.uploading,progress:A.value.upload?.progress??null},null,8,[`label`,`progress`])])]),_:1})),X(v).transitionMessage?(G(),F(`div`,Oa,[n[1]||=I(`div`,{class:`vidtreo-transition-spinner`},null,-1),I(`div`,ka,J(X(v).transitionMessage),1)])):P(`v-if`,!0),!s&&X(v).stream&&l.value?(G(),N(Dr,{key:3,devices:X(v).devices,translations:X(S).settings.value,onCameraChange:ae,onMicChange:se},null,8,[`devices`,`translations`])):P(`v-if`,!0)],2))}}),ja=z({__name:`StandardRecorder`,props:{recorderProps:{}},emits:[`recordingStart`,`recordingStop`,`uploadComplete`,`uploadProgress`,`uploadError`,`transcodingProgress`,`error`],setup(e,{expose:t,emit:n}){let r=e,i=n,a=he(()=>r.recorderProps,e=>i(`error`,e)),o=K(null);return t(ve(o)),(t,n)=>X(a)?(G(),N(In,{key:0,error:X(a),lang:e.recorderProps.lang,texts:e.recorderProps.texts},null,8,[`error`,`lang`,`texts`])):(G(),N(Aa,{key:1,ref_key:`recorderContent`,ref:o,"recorder-props":e.recorderProps,onRecordingStart:n[0]||=e=>i(`recordingStart`),onRecordingStop:n[1]||=e=>i(`recordingStop`),onUploadComplete:n[2]||=e=>i(`uploadComplete`,e),onUploadProgress:n[3]||=(e,t)=>i(`uploadProgress`,e,t),onUploadError:n[4]||=e=>i(`uploadError`,e),onTranscodingProgress:n[5]||=e=>i(`transcodingProgress`,e),onError:n[6]||=e=>i(`error`,e)},null,8,[`recorder-props`]))}}),Ma=z({__name:`VidtreoRecorder`,props:{recorderProps:{}},emits:[`recordingStart`,`recordingStop`,`uploadComplete`,`uploadProgress`,`uploadError`,`transcodingProgress`,`error`],setup(e,{expose:t,emit:n}){let r={requiresAudio:!1,requiresWatermark:!1},i=e,a=n;function o(e,t,n){return(t===!0||e===`native`)&&n===!0?`overlay`:t===!0?`native`:e===void 0?null:e}function s(e){return e!==`native`}function c(e){return e===null?`overlay`:e}let l=he(()=>i.recorderProps,e=>a(`error`,e)),u=M(()=>l.value?``:me(i.recorderProps.apiKey,i.recorderProps.demo,i.recorderProps.getAccessToken)),d=D(),f=M(()=>o(i.recorderProps.mobileMode,i.recorderProps.nativeCamera,i.recorderProps.audioOnly)),p=M(()=>s(f.value)),m=M(()=>({apiKey:u.value,getAccessToken:i.recorderProps.getAccessToken,backendUrl:i.recorderProps.backendUrl,maxRecordingTime:i.recorderProps.maxRecordingTime,maxFileSize:i.recorderProps.maxFileSize,userMetadata:i.recorderProps.userMetadata,demo:i.recorderProps.demo,lang:i.recorderProps.lang,texts:i.recorderProps.texts,onUploadComplete:e=>a(`uploadComplete`,e),onUploadProgress:(e,t)=>a(`uploadProgress`,e,t),onUploadError:e=>a(`uploadError`,e),onTranscodingProgress:e=>a(`transcodingProgress`,e),onError:e=>a(`error`,e)})),h=M(()=>({apiKey:u.value,getAccessToken:i.recorderProps.getAccessToken,backendUrl:i.recorderProps.backendUrl,countdownDuration:i.recorderProps.countdownDuration,minTimeRecord:i.recorderProps.minTimeRecord,maxRecordingTime:i.recorderProps.maxRecordingTime,maxFileSize:i.recorderProps.maxFileSize,userMetadata:i.recorderProps.userMetadata,recordingPrompt:i.recorderProps.recordingPrompt,enableSourceSwitching:i.recorderProps.enableSourceSwitching,enableMute:i.recorderProps.enableMute,enablePause:i.recorderProps.enablePause,enableDeviceChange:i.recorderProps.enableDeviceChange,enableTabVisibilityOverlay:i.recorderProps.enableTabVisibilityOverlay,tabVisibilityOverlayText:i.recorderProps.tabVisibilityOverlayText,audioOnly:i.recorderProps.audioOnly,demo:i.recorderProps.demo,lang:i.recorderProps.lang,texts:i.recorderProps.texts,onUploadComplete:e=>a(`uploadComplete`,e),onUploadProgress:(e,t)=>a(`uploadProgress`,e,t),onUploadError:e=>a(`uploadError`,e),onRecordingStart:()=>a(`recordingStart`),onRecordingStop:()=>a(`recordingStop`),onTranscodingProgress:e=>a(`transcodingProgress`,e),onError:e=>a(`error`,e)}));Z([()=>d,p],([e,t])=>{e&&t&&g(r).catch(()=>{})},{immediate:!0});let _=M(()=>c(f.value)),v=M(()=>!d||d&&_.value===`embed`),y=M(()=>d&&_.value===`native`),b=M(()=>d&&!v.value&&!y.value),x=K(null);return t(ve(x)),(t,n)=>X(l)?(G(),N(In,{key:0,error:X(l),lang:e.recorderProps.lang,texts:e.recorderProps.texts},null,8,[`error`,`lang`,`texts`])):(G(),N(Vn,{key:1,variant:`recorder`,lang:e.recorderProps.lang,texts:e.recorderProps.texts},{default:de(()=>[v.value?(G(),N(ja,{key:0,ref_key:`activeRecorder`,ref:x,"recorder-props":e.recorderProps,onRecordingStart:n[0]||=e=>a(`recordingStart`),onRecordingStop:n[1]||=e=>a(`recordingStop`),onUploadComplete:n[2]||=e=>a(`uploadComplete`,e),onUploadProgress:n[3]||=(e,t)=>a(`uploadProgress`,e,t),onUploadError:n[4]||=e=>a(`uploadError`,e),onTranscodingProgress:n[5]||=e=>a(`transcodingProgress`,e),onError:n[6]||=e=>a(`error`,e)},null,8,[`recorder-props`])):y.value?(G(),N(Vi,{key:1,ref_key:`activeRecorder`,ref:x,config:m.value},null,8,[`config`])):b.value?(G(),N(_i,{key:2,ref_key:`activeRecorder`,ref:x,config:h.value},null,8,[`config`])):P(`v-if`,!0)]),_:1},8,[`lang`,`texts`]))}});export{e as CONFIG_ERROR_CREDENTIAL_CONFLICT,i as ERROR_RECORDING_MARKER_DUPLICATE_ID,a as ERROR_RECORDING_MARKER_INVALID_ID,o as ERROR_RECORDING_MARKER_INVALID_LABEL,s as ERROR_RECORDING_MARKER_LIMIT_REACHED,c as ERROR_RECORDING_MARKER_NOT_RECORDING,_i as MobileWebRecorderUI,Vi as NativeCameraUI,ja as StandardRecorder,f as UPLOAD_ERROR_INSUFFICIENT_CREDITS,Ma as VidtreoRecorder,Se as defaultTranslations,Ce as getTranslations,C as getUploadErrorCode,E as isCredentialConflictError,O as isRecordingMarkerError,Ge as useMobileWebRecorder,yi as useNativeCamera,Wi as usePermissionFlow,Gi as useRecorderTranslations,We as useVidtreoRecorder};
|
|
1
|
+
(function(){if(typeof document!=='undefined'){const style=document.createElement('style');style.textContent=`:root{--vidtreo-background:0 0% 100%;--vidtreo-foreground:0 0% 3.9%;--vidtreo-card:0 0% 100%;--vidtreo-card-foreground:0 0% 3.9%;--vidtreo-primary:0 0% 9%;--vidtreo-primary-foreground:0 0% 98%;--vidtreo-secondary:0 0% 96.1%;--vidtreo-secondary-foreground:0 0% 9%;--vidtreo-muted:0 0% 96.1%;--vidtreo-muted-foreground:0 0% 45.1%;--vidtreo-accent:0 0% 96.1%;--vidtreo-accent-foreground:0 0% 9%;--vidtreo-destructive:0 84.2% 60.2%;--vidtreo-destructive-foreground:0 0% 98%;--vidtreo-border:0 0% 89.8%;--vidtreo-input:0 0% 89.8%;--vidtreo-ring:0 0% 3.9%;--vidtreo-radius:0.5rem;--vidtreo-preview-bg:0 0% 0%;--vidtreo-z-modal-overlay:9999;--vidtreo-z-settings-panel:200;--vidtreo-z-error-overlay:100;--vidtreo-z-countdown-overlay:20;--vidtreo-z-progress-overlay:20;--vidtreo-z-controls:10}.vidtreo-preview-container{position:relative;width:100%;aspect-ratio:9 / 16;border-radius:0;overflow:visible;background:hsl(var(--vidtreo-preview-bg));display:flex;align-items:center;justify-content:center;border:none;contain:layout style;transform:translateZ(0);will-change:auto;backface-visibility:hidden;isolation:isolate}.vidtreo-preview-container::before{display:none}@media (min-width:768px){.vidtreo-preview-container{aspect-ratio:16 / 9}}.vidtreo-camera-area{width:100%;height:100%;display:none;position:relative;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text",system-ui,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;contain:layout style paint;transform:translateZ(0);backface-visibility:hidden;isolation:isolate;will-change:auto}.vidtreo-source-transition-overlay{position:absolute;inset:0;background:rgba(0,0,0,0.7);display:none;align-items:center;justify-content:center;flex-direction:column;border-radius:0;z-index:var(--vidtreo-z-error-overlay);backdrop-filter:blur(4px);transition:opacity 0.3s ease;transform:translateZ(0);contain:layout style paint;backface-visibility:hidden;will-change:opacity}.vidtreo-source-transition-overlay.vidtreo-active{display:flex;animation:vidtreo-fadeIn 0.2s ease}@keyframes vidtreo-fadeIn{from{opacity:0}to{opacity:1}}.vidtreo-transition-spinner{width:40px;height:40px;border:4px solid rgba(255,255,255,0.3);border-top-color:#667eea;border-radius:50%;animation:vidtreo-spin 0.8s linear infinite;margin-bottom:12px}@keyframes vidtreo-spin{to{transform:rotate(360deg)}}.vidtreo-transition-message{color:white;font-size:14px;font-weight:500;text-align:center}.vidtreo-camera-area.vidtreo-active{display:block}.vidtreo-preview-skeleton{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#000;border-radius:0;z-index:var(--vidtreo-z-controls);gap:1rem;transform:translateZ(0);contain:layout style paint;backface-visibility:hidden;will-change:auto}.vidtreo-skeleton-spinner{width:40px;height:40px;border:4px solid rgba(255,255,255,0.3);border-top-color:#ffffff;border-radius:50%;animation:vidtreo-spin 0.8s linear infinite}.vidtreo-skeleton-text{color:#ffffff;font-size:0.875rem;font-weight:500}.vidtreo-video-preview{width:100%;height:100%;border-radius:0;background:#000;display:block;object-fit:cover;transition:opacity 0.3s ease,transform 0.3s ease;position:absolute;inset:0;transform:translateZ(0);will-change:auto;backface-visibility:hidden}.vidtreo-video-preview-skeleton{position:absolute;inset:0;width:100%;height:100%;border-radius:0;background:#000;overflow:hidden;z-index:2;transform:translateZ(0);contain:layout style paint;backface-visibility:hidden;will-change:auto}.vidtreo-skeleton-shimmer{position:absolute;inset:0;background:linear-gradient( 90deg,hsl(var(--vidtreo-muted)) 0%,hsl(var(--vidtreo-muted) / 0.5) 50%,hsl(var(--vidtreo-muted)) 100% );background-size:200% 100%;animation:vidtreo-shimmer 1.5s ease-in-out infinite}@keyframes vidtreo-shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}.vidtreo-video-preview-skeleton.vidtreo-hidden{opacity:0;pointer-events:none;transition:opacity 0.3s ease}.vidtreo-video-preview.vidtreo-screen-share{object-fit:cover}.vidtreo-video-preview.vidtreo-transitioning{opacity:0.5;transform:scale(0.98)}.vidtreo-countdown-overlay{position:absolute;inset:0;background:rgba(0,0,0,0.95);display:none;align-items:center;justify-content:center;border-radius:0;z-index:var(--vidtreo-z-countdown-overlay);transform:translateZ(0);contain:layout style paint;backface-visibility:hidden;will-change:auto}.vidtreo-countdown-overlay.vidtreo-active{display:flex}.vidtreo-countdown-content{display:flex;flex-direction:column;align-items:center;gap:1rem}.vidtreo-countdown-number{font-size:9rem;font-weight:bold;color:#ffffff;animation:vidtreo-zoomIn 0.3s ease}@keyframes vidtreo-zoomIn{from{transform:scale(0.5);opacity:0}to{transform:scale(1);opacity:1}}.vidtreo-countdown-text{font-size:0.875rem;color:#ffffff;margin-top:1rem;font-weight:500}.vidtreo-settings-panel{position:absolute !important;bottom:4rem !important;left:50% !important;margin-left:-47%;background:rgba(0,0,0,0.4);border:none;border-radius:0.75rem;padding:0.625rem;display:none;flex-direction:column;z-index:var(--vidtreo-z-settings-panel);width:90%;overflow:hidden;contain:layout style paint;transform:translateZ(0);backface-visibility:hidden}.vidtreo-settings-panel.vidtreo-active{display:flex}.vidtreo-settings-content{width:100%;display:flex;flex-direction:column;will-change:transform;transform:translateZ(0);backface-visibility:hidden}.vidtreo-settings-content.vidtreo-slide-right{animation:vidtreo-slideRight 0.3s ease}.vidtreo-settings-content.vidtreo-slide-left{animation:vidtreo-slideLeft 0.3s ease}.vidtreo-settings-content.vidtreo-slide-none{animation:none;will-change:auto}@keyframes vidtreo-slideIn{from{transform:translateY(1rem);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes vidtreo-slideRight{from{transform:translateX(-100%);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes vidtreo-slideLeft{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}.vidtreo-settings-header{display:flex;align-items:center;gap:0.75rem;margin-bottom:1rem;background:none;border:none;color:#ffffff;cursor:pointer;padding:0;width:100%;text-align:left}.vidtreo-settings-back-icon{flex-shrink:0;color:#ffffff}.vidtreo-settings-title{font-size:0.875rem;font-weight:600;margin:0;color:#ffffff}.vidtreo-device-options-container{display:flex;flex-direction:column;gap:0.375rem}.vidtreo-device-option-nav{display:flex;align-items:center;padding:0.5rem 0.75rem;background:none;border:none;cursor:pointer;color:#ffffff;transition:background-color 0.2s ease;width:100%;gap:1rem;border-radius:0.5rem}.vidtreo-device-option-nav:hover{background:rgba(255,255,255,0.2)}.vidtreo-device-option-nav-content{display:flex;align-items:center;gap:0.75rem;flex-shrink:0}.vidtreo-device-option-nav-label{font-size:0.875rem;font-weight:500;color:#ffffff}.vidtreo-device-option-nav-value{display:flex;align-items:center;gap:0.5rem;flex:1;justify-content:flex-end;min-width:0}.vidtreo-device-option-nav-value-text{font-size:0.875rem;color:rgba(255,255,255,0.8);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;text-align:right}.vidtreo-device-option-nav-chevron{font-size:1.25rem;color:#ffffff;line-height:1}.vidtreo-device-list{display:flex;flex-direction:column;gap:0;max-height:200px;overflow-y:auto}.vidtreo-device-list::-webkit-scrollbar{width:4px}.vidtreo-device-list::-webkit-scrollbar-track{background:transparent}.vidtreo-device-list::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.2);border-radius:2px}.vidtreo-device-list::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,0.3)}.vidtreo-device-option{display:flex;align-items:center;padding:0.5rem 0.75rem;background:none;border:none;cursor:pointer;color:#ffffff;transition:background-color 0.2s ease;text-align:left;width:100%;gap:0.75rem;border-radius:0.5rem}.vidtreo-device-option:hover{background:rgba(255,255,255,0.2)}.vidtreo-device-option-check-container{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.vidtreo-device-checkmark-placeholder{width:20px;height:20px;flex-shrink:0}.vidtreo-device-checkmark{color:#ffffff;flex-shrink:0}.vidtreo-device-option-label{font-size:0.875rem;color:#ffffff;flex:1}.vidtreo-device-empty{padding:1rem 0;font-size:0.875rem;color:rgba(255,255,255,0.6);text-align:center}.vidtreo-audio-level-bars{position:absolute !important;bottom:0.75rem !important;right:0.75rem !important;display:flex;align-items:center;gap:0.125rem;height:1rem;z-index:var(--vidtreo-z-controls);transform:translateZ(0);contain:layout style paint;will-change:auto;backface-visibility:hidden}@media (min-width:768px){.vidtreo-audio-level-bars{height:1.25rem}}.vidtreo-audio-level-bar{width:0.125rem;border-radius:9999px;background:rgba(255,255,255,0.5);transition:all 0.1s ease;align-self:flex-end}.vidtreo-recording-controls{position:absolute !important;bottom:12px !important;left:50% !important;transform:translateX(-50%) translateZ(0) !important;z-index:var(--vidtreo-z-controls);contain:layout style;will-change:auto;backface-visibility:hidden}.vidtreo-recording-controls-row{display:flex;align-items:center;justify-content:center;gap:0.5rem;transform:translateZ(0);will-change:auto}.vidtreo-recording-timer-row{display:flex;align-items:center;justify-content:space-between;gap:0.5rem}.vidtreo-recording-timer-badge{position:absolute !important;top:0.75rem !important;right:0.75rem !important;display:flex;align-items:center;gap:0.375rem;background:rgba(0,0,0,0.3);border:none;padding:0.25rem 0.5rem;border-radius:9999px;box-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1),0 1px 2px -1px rgb(0 0 0 / 0.1);z-index:var(--vidtreo-z-controls);transform:translateZ(0);contain:layout style paint;will-change:auto;backface-visibility:hidden}.vidtreo-recording-dot-small{width:0.375rem;height:0.375rem;background:hsl(var(--vidtreo-destructive));border-radius:50%;animation:vidtreo-pulse 1.5s ease-in-out infinite}.vidtreo-recording-timer-text{font-size:0.75rem;font-family:monospace;font-weight:500;color:#ffffff}.vidtreo-control-buttons-row{display:flex;align-items:center;justify-content:center;gap:0.375rem;height:auto;min-height:2rem;transform:translateZ(0);will-change:auto}@media (min-width:768px){.vidtreo-control-buttons-row{min-height:2.25rem}}.vidtreo-control-button{width:2rem;height:2rem;min-height:2rem;max-height:2rem;border-radius:9999px;border:none;background:rgba(0,0,0,0.3);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color 0.2s ease;color:#ffffff;padding:0.25rem;margin:0;flex-shrink:0;box-sizing:border-box;vertical-align:top;position:relative;transform:translateZ(0);contain:layout style paint;will-change:auto;backface-visibility:hidden}.vidtreo-control-button::before{content:"";position:absolute;inset:0.25rem;border-radius:9999px;transition:background-color 0.2s ease;z-index:0}.vidtreo-control-button svg{width:22px !important;height:22px !important;color:inherit;flex-shrink:0;position:relative;z-index:1}@media (min-width:768px){.vidtreo-control-button svg{width:24px !important;height:24px !important}}@media (min-width:768px){.vidtreo-control-button{width:2.25rem;height:2.25rem;min-height:2.25rem;max-height:2.25rem}}.vidtreo-control-button:hover:not(:disabled)::before{background:rgba(255,255,255,0.2)}.vidtreo-control-button:disabled{opacity:0.5;cursor:not-allowed}.vidtreo-control-button.vidtreo-muted::before{background:rgba(0,0,0,0.3)}.vidtreo-control-button.vidtreo-muted:hover:not(:disabled)::before{background:rgba(255,255,255,0.2)}.vidtreo-record-button{height:2rem;min-height:2rem;max-height:2rem;padding:0 0.75rem;border-radius:9999px;font-weight:500;font-size:0.75rem;background:hsl(var(--vidtreo-destructive));color:hsl(var(--vidtreo-destructive-foreground));border:none;display:inline-flex;align-items:center;justify-content:center;gap:0.375rem;transition:background-color 0.2s ease,filter 0.2s ease;width:auto;margin:0;line-height:1;flex-shrink:0;box-sizing:border-box;vertical-align:top;cursor:pointer}@media (min-width:768px){.vidtreo-record-button{height:2.25rem;min-height:2.25rem;max-height:2.25rem;font-size:0.875rem}}.vidtreo-record-button:hover:not(:disabled){filter:brightness(0.85)}.vidtreo-record-button.vidtreo-stop-button-locked{opacity:0.5;cursor:not-allowed;filter:none}.vidtreo-record-button.vidtreo-stop-button-locked:hover{filter:none}#startButton.vidtreo-record-button{animation:vidtreo-record-glow-pulse 2s ease-in-out infinite}@keyframes vidtreo-record-glow-pulse{0%,100%{box-shadow:0 0 8px 2px rgba(239,68,68,0.4),0 0 16px 4px rgba(239,68,68,0.2)}50%{box-shadow:0 0 16px 4px rgba(239,68,68,0.6),0 0 32px 8px rgba(239,68,68,0.3)}}#startButton.vidtreo-record-button:hover:not(:disabled){animation-play-state:paused;box-shadow:0 0 20px 6px rgba(239,68,68,0.7),0 0 40px 10px rgba(239,68,68,0.35)}.vidtreo-rec-indicator-top{position:absolute !important;top:0.75rem !important;left:0.75rem !important;display:flex;align-items:center;gap:0.375rem;background:rgba(0,0,0,0.3);border:none;padding:0.25rem 0.5rem;border-radius:9999px;box-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1),0 1px 2px -1px rgb(0 0 0 / 0.1);transform:translateZ(0);contain:layout style paint;will-change:auto;backface-visibility:hidden}.vidtreo-rec-indicator-top span{font-size:0.75rem;font-weight:500;color:#ffffff}.vidtreo-start-camera-area{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;border:none;border-radius:0;padding:40px;text-align:center;background:#000;transition:all 0.3s ease;cursor:pointer;z-index:1;transform:translateZ(0);contain:layout style paint;backface-visibility:hidden;will-change:auto}.vidtreo-start-camera-area:hover:not(.vidtreo-loading){background:#000}.vidtreo-start-camera-area.vidtreo-loading{cursor:wait;opacity:0.7}.vidtreo-start-camera-area.vidtreo-loading .vidtreo-camera-text{color:#ffffff;opacity:0.7}.vidtreo-camera-icon{font-size:48px;margin-bottom:16px;display:flex;justify-content:center;color:#ffffff}.vidtreo-camera-text{color:#ffffff;font-weight:600;margin-bottom:8px}.vidtreo-camera-text a{color:#3b82f6;text-decoration:underline}.vidtreo-camera-text a:hover{color:#2563eb}.vidtreo-camera-hint{color:#ffffff;font-size:12px;opacity:0.8}@keyframes vidtreo-pulse{0%,100%{opacity:1}50%{opacity:0.3}}.vidtreo-progress{margin-top:20px;display:none}.vidtreo-progress.vidtreo-active{display:block}.vidtreo-progress-bar{width:100%;height:8px;background:#e0e0e0;border-radius:4px;overflow:hidden;margin-bottom:8px}.vidtreo-progress-fill{height:100%;background:linear-gradient(90deg,#667eea 0%,#764ba2 100%);width:0%;transition:width 0.3s ease}.vidtreo-progress-text{text-align:center;color:#ffffff;font-size:14px}.vidtreo-error{position:absolute;top:0.75rem;left:50%;transform:translateX(-50%);padding:1rem 1.25rem;background:#dc2626;border:none;border-radius:0.5rem;color:#ffffff;font-size:0.875rem;font-weight:500;text-align:center;z-index:var(--vidtreo-z-error-overlay);display:none;box-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1),0 2px 4px -2px rgb(0 0 0 / 0.1);max-width:90%;word-wrap:break-word}.vidtreo-error.vidtreo-active{display:block;animation:vidtreo-error-fade-in-slide-down 0.3s ease-out}@keyframes vidtreo-error-fade-in-slide-down{from{opacity:0;transform:translateX(-50%) translateY(-1rem)}to{opacity:1;transform:translateX(-50%) translateY(0)}}.vidtreo-upload-progress{margin-top:20px;display:none}.vidtreo-upload-progress.vidtreo-active{display:block}.vidtreo-preview-container .vidtreo-upload-progress{margin-top:0}.vidtreo-upload-status{margin-top:20px;padding:16px;border-radius:8px;display:none}.vidtreo-upload-status.vidtreo-active{display:block}.vidtreo-upload-status.vidtreo-success{background:#f0f9ff;border:2px solid #48bb78;color:#22543d}.vidtreo-upload-status.vidtreo-error{background:#fee;border:2px solid #fcc;color:#c33}.vidtreo-upload-status-text{font-size:14px;font-weight:500}.vidtreo-preview-error{position:relative;width:100%;aspect-ratio:9 / 16;border-radius:0;overflow:hidden;background:hsl(var(--vidtreo-preview-bg));display:flex;align-items:center;justify-content:center;border:none;contain:strict;transform:translateZ(0);will-change:auto;backface-visibility:hidden;isolation:isolate}@media (min-width:768px){.vidtreo-preview-error{aspect-ratio:16 / 9}}.vidtreo-error-content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem;text-align:center;color:#ffffff;max-width:400px}.vidtreo-error-icon{font-size:3rem;line-height:1}.vidtreo-error-title{font-size:1.25rem;font-weight:600;line-height:1.2}.vidtreo-error-message{font-size:0.875rem;line-height:1.5;opacity:0.9;word-break:break-word}.vidtreo-error-config{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid rgba(255,255,255,0.2);width:100%;text-align:left}.vidtreo-error-config-title{font-size:0.875rem;font-weight:600;margin-bottom:0.75rem;color:#ffffff}.vidtreo-error-config-item{font-size:0.8125rem;line-height:1.6;margin-bottom:0.5rem;color:rgba(255,255,255,0.85)}.vidtreo-error-config-item code{background:rgba(255,255,255,0.15);padding:0.125rem 0.375rem;border-radius:0.25rem;font-family:monospace;font-size:0.75rem;color:#ffffff}.vidtreo-error-retry{margin-top:0.5rem;padding:0.5rem 1rem;border-radius:0.375rem;background:hsl(var(--vidtreo-destructive));color:hsl(var(--vidtreo-destructive-foreground));border:none;font-size:0.875rem;font-weight:500;cursor:pointer;transition:filter 0.2s ease}.vidtreo-error-retry:hover:not(:disabled){filter:brightness(0.85)}.vidtreo-error-retry:disabled{opacity:0.5;cursor:not-allowed}.vidtreo-error-overlay{position:absolute;inset:0;background:hsl(var(--vidtreo-preview-bg));display:flex;align-items:center;justify-content:center;z-index:var(--vidtreo-z-error-overlay)}.vidtreo-native-camera-container{position:relative;width:100%;aspect-ratio:9 / 16;display:flex;align-items:center;justify-content:center;background:hsl(var(--vidtreo-preview-bg));border-radius:0;overflow:hidden}@media (min-width:768px){.vidtreo-native-camera-container{aspect-ratio:16 / 9}}.vidtreo-native-camera-container:has(.vidtreo-native-camera-preview-container){background:transparent}.vidtreo-config-loading-indicator{position:absolute;top:8px;right:8px;z-index:var(--vidtreo-z-controls)}.vidtreo-spinner-small{width:16px;height:16px;border:2px solid rgba(255,255,255,0.3);border-top-color:white;border-radius:50%;animation:spin 0.6s linear infinite}.vidtreo-native-camera-empty-state{position:relative;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:24px}.vidtreo-native-camera-buttons{display:flex;flex-direction:column;gap:12px;width:100%;max-width:300px}.vidtreo-native-camera-process-button,.vidtreo-native-camera-download-button{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);z-index:30}.vidtreo-native-camera-process-button .vidtreo-btn,.vidtreo-native-camera-download-button .vidtreo-btn{min-width:200px}.vidtreo-btn{padding:12px 24px;border-radius:var(--vidtreo-radius);font-size:1rem;font-weight:500;cursor:pointer;border:none;transition:all 0.2s}.vidtreo-btn:disabled{opacity:0.5;cursor:not-allowed}.vidtreo-btn-primary{background:hsl(var(--vidtreo-primary));color:hsl(var(--vidtreo-primary-foreground))}.vidtreo-btn-primary:hover:not(:disabled){filter:brightness(0.9)}.vidtreo-btn-secondary{background:hsl(var(--vidtreo-secondary));color:hsl(var(--vidtreo-secondary-foreground));border:1px solid hsl(var(--vidtreo-border))}.vidtreo-btn-secondary:hover:not(:disabled){background:hsl(var(--vidtreo-accent))}.vidtreo-transcoding-progress{width:100%;max-width:400px;padding:16px}.vidtreo-progress-bar{width:100%;height:8px;background:rgba(255,255,255,0.2);border-radius:4px;overflow:hidden}.vidtreo-progress-fill{height:100%;background:hsl(var(--vidtreo-primary));transition:width 0.3s ease}.vidtreo-progress-text{margin-top:8px;text-align:center;font-size:0.875rem;color:hsl(var(--vidtreo-foreground))}.vidtreo-native-camera-preview-container{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:transparent}.vidtreo-native-camera-preview-image{width:100%;height:100%;object-fit:contain;display:block}.vidtreo-progress-overlay{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(0,0,0,0.7);backdrop-filter:blur(4px);z-index:var(--vidtreo-z-progress-overlay);pointer-events:auto}.vidtreo-progress-overlay .vidtreo-transcoding-progress,.vidtreo-progress-overlay .vidtreo-upload-progress,.vidtreo-native-camera-container>.vidtreo-upload-progress{position:relative;width:90%;max-width:400px;display:flex;flex-direction:column;align-items:center;gap:12px;padding:0;background:transparent;pointer-events:auto}.vidtreo-progress-overlay .vidtreo-progress-bar{width:100%;height:8px;background:rgba(255,255,255,0.2);border-radius:4px;overflow:hidden}.vidtreo-progress-overlay .vidtreo-upload-progress-bar,.vidtreo-native-camera-container>.vidtreo-upload-progress .vidtreo-upload-progress-bar{width:100%;height:8px;background:rgba(255,255,255,0.2);border-radius:4px;overflow:hidden}.vidtreo-progress-overlay .vidtreo-progress-fill{height:100%;background:#ffffff;transition:width 0.3s ease}.vidtreo-progress-overlay .vidtreo-progress-text{margin-top:0;text-align:center;font-size:0.875rem;font-weight:500;color:#ffffff}.vidtreo-progress-overlay .vidtreo-upload-progress-text,.vidtreo-native-camera-container>.vidtreo-upload-progress .vidtreo-upload-progress-text{margin-top:0;text-align:center;font-size:0.875rem;font-weight:500;color:#ffffff}.vidtreo-progress-overlay .vidtreo-upload-progress-bar{width:100%;height:8px;background:rgba(255,255,255,0.2);border-radius:4px;overflow:hidden}.vidtreo-progress-overlay .vidtreo-upload-progress-fill,.vidtreo-native-camera-container>.vidtreo-upload-progress .vidtreo-upload-progress-fill{height:100%;background:#ffffff;transition:width 0.3s ease}.vidtreo-progress-overlay .vidtreo-progress-indeterminate{width:100%;background:linear-gradient( 90deg,transparent 0%,#ffffff 50%,transparent 100% );background-size:200% 100%;animation:vidtreo-progress-indeterminate 1.5s ease-in-out infinite}@keyframes vidtreo-progress-indeterminate{0%{background-position:200% 0}100%{background-position:-200% 0}}.vidtreo-mobile-web-recorder{width:100%;height:100%;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text",system-ui,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.vidtreo-camera-area button,.vidtreo-camera-area input,.vidtreo-camera-area select,.vidtreo-camera-area textarea,.vidtreo-mobile-web-recorder button,.vidtreo-mobile-web-recorder input,.vidtreo-mobile-web-recorder select,.vidtreo-mobile-web-recorder textarea,.vidtreo-permission-flow button{font-family:inherit}.vidtreo-mobile-landing-container{position:relative;width:100%;aspect-ratio:4 / 3;min-height:100%;max-height:100%;display:flex;align-items:center;justify-content:center;background:hsl(var(--vidtreo-preview-bg));border-radius:0;overflow:hidden}.vidtreo-mobile-landing-content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.25rem;padding:2rem;text-align:center}.vidtreo-mobile-landing-title{font-size:1.25rem;font-weight:600;color:#ffffff;margin:0;line-height:1.3}.vidtreo-mobile-landing-description{font-size:0.875rem;color:rgba(255,255,255,0.75);margin:0;max-width:280px;line-height:1.5}.vidtreo-mobile-open-camera-btn{display:inline-flex;align-items:center;gap:0.625rem;padding:0.875rem 1.75rem;font-size:1rem;font-weight:600;min-width:200px;justify-content:center;margin-top:0.5rem;border-radius:9999px;transition:all 0.2s ease;animation:vidtreo-btn-glow-pulse 2s ease-in-out infinite}@keyframes vidtreo-btn-glow-pulse{0%,100%{box-shadow:0 0 8px 2px rgba(255,255,255,0.3),0 0 16px 4px rgba(255,255,255,0.15)}50%{box-shadow:0 0 16px 4px rgba(255,255,255,0.5),0 0 32px 8px rgba(255,255,255,0.25)}}.vidtreo-mobile-open-camera-btn:hover:not(:disabled){transform:scale(1.02);animation-play-state:paused;box-shadow:0 0 20px 6px rgba(255,255,255,0.6),0 0 40px 10px rgba(255,255,255,0.3)}.vidtreo-mobile-open-camera-btn:active:not(:disabled){transform:scale(0.98)}.vidtreo-mobile-open-camera-btn:disabled{animation:none;box-shadow:none}#vidtreo-portal-root{position:fixed;top:0;left:0;width:100vw;height:100vh;height:100dvh;z-index:9999;pointer-events:none}#vidtreo-portal-root>*{pointer-events:auto}.vidtreo-mobile-modal-overlay{--vidtreo-safe-top:0px;--vidtreo-safe-bottom:0px;--vidtreo-safe-left:0px;--vidtreo-safe-right:0px;position:fixed;inset:0;top:0;left:0;width:100vw;height:100vh;height:100dvh;background:#000000;z-index:var(--vidtreo-z-modal-overlay);display:flex;flex-direction:column;animation:vidtreo-modal-fade-in 0.3s ease-out;height:-webkit-fill-available}@keyframes vidtreo-modal-fade-in{from{opacity:0}to{opacity:1}}.vidtreo-mobile-modal-header{position:absolute;top:0;left:0;right:0;padding:0.75rem;padding-top:calc(0.75rem + var(--vidtreo-safe-top,0px));display:flex;justify-content:center;z-index:var(--vidtreo-z-error-overlay);pointer-events:none}.vidtreo-mobile-modal-close-btn,.vidtreo-mobile-prompt-toggle-btn{height:2rem;padding:0 0.75rem;border-radius:9999px;border:none;background:rgba(0,0,0,0.5);color:rgba(255,255,255,0.9);display:flex;align-items:center;justify-content:center;gap:0.375rem;cursor:pointer;transition:all 0.2s ease;pointer-events:auto;backdrop-filter:blur(4px);font-size:0.75rem;font-weight:500}.vidtreo-mobile-modal-close-btn:hover:not(:disabled),.vidtreo-mobile-prompt-toggle-btn:hover:not(:disabled){background:rgba(0,0,0,0.7)}.vidtreo-mobile-modal-close-btn:disabled{opacity:0.3;cursor:not-allowed}.vidtreo-mobile-prompt-toggle-btn{position:absolute;top:calc(0.75rem + var(--vidtreo-safe-top,0px));left:calc(0.75rem + var(--vidtreo-safe-left,0px));width:2rem;padding:0;z-index:var(--vidtreo-z-controls)}.vidtreo-mobile-modal-content{flex:1;display:flex;flex-direction:column;width:100%;height:100%;position:relative;padding-top:var(--vidtreo-safe-top,0px);padding-bottom:var(--vidtreo-safe-bottom,0px);padding-left:var(--vidtreo-safe-left,0px);padding-right:var(--vidtreo-safe-right,0px)}.vidtreo-mobile-recorder-content{--vidtreo-safe-top:0px;--vidtreo-safe-bottom:0px;--vidtreo-safe-left:0px;--vidtreo-safe-right:0px;width:100%;height:100%;display:flex;flex-direction:column;position:relative}.vidtreo-mobile-recorder-content .vidtreo-preview-container{aspect-ratio:unset;height:100%;width:100%;flex:1}.vidtreo-mobile-recorder-content .vidtreo-video-preview{object-fit:cover}.vidtreo-mobile-preview{aspect-ratio:unset !important;height:100% !important;flex:1}.vidtreo-mobile-recorder-content .vidtreo-recording-controls{bottom:calc(24px + var(--vidtreo-safe-bottom,0px)) !important}.vidtreo-mobile-recorder-content .vidtreo-audio-level-bars{bottom:calc(12px + var(--vidtreo-safe-bottom,0px)) !important}.vidtreo-mobile-recorder-content .vidtreo-settings-panel{bottom:calc(7rem + var(--vidtreo-safe-bottom,0px)) !important}.vidtreo-mobile-recorder-content .vidtreo-rec-indicator-top{top:calc(0.75rem + var(--vidtreo-safe-top,0px)) !important;height:2rem;padding:0 0.75rem;contain:layout style}.vidtreo-mobile-recorder-content .vidtreo-recording-timer-badge{top:calc(0.75rem + var(--vidtreo-safe-top,0px)) !important;height:2rem;padding:0 0.75rem;contain:layout style}.vidtreo-mobile-recorder-content .vidtreo-recording-timer-text{font-size:0.875rem;white-space:nowrap;color:#ffffff;min-width:3rem;display:inline-block}.vidtreo-mobile-recorder-content .vidtreo-error{top:calc(3.5rem + var(--vidtreo-safe-top,0px)) !important}.vidtreo-mobile-recording-prompt{position:absolute;top:calc(3.5rem + var(--vidtreo-safe-top,0px));left:calc(1rem + var(--vidtreo-safe-left,0px));right:calc(1rem + var(--vidtreo-safe-right,0px));max-height:min(38vh,15rem);overflow-y:auto;z-index:var(--vidtreo-z-controls);padding:1rem 1.25rem;border-radius:1rem;background:rgba(18,18,18,0.92);color:#ffffff;box-shadow:0 0.5rem 1.5rem rgba(0,0,0,0.24);backdrop-filter:blur(8px);pointer-events:auto;text-align:left}.vidtreo-mobile-recording-prompt--above-countdown{z-index:calc(var(--vidtreo-z-countdown-overlay) + 1)}.vidtreo-mobile-recording-prompt-text{color:#ffffff;font-size:1rem;font-weight:600;line-height:1.4;overflow-wrap:anywhere}.vidtreo-visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.vidtreo-mobile-recorder-content .vidtreo-control-buttons-row{gap:0.75rem;min-height:4rem}.vidtreo-mobile-recorder-content .vidtreo-control-button{width:4rem;height:4rem;min-height:4rem;max-height:4rem}.vidtreo-mobile-recorder-content .vidtreo-control-button svg{width:1.5rem;height:1.5rem}.vidtreo-mobile-recorder-content .vidtreo-record-button{height:4rem;min-height:4rem;max-height:4rem;padding:0 1.5rem;font-size:1rem;gap:0.5rem}.vidtreo-mobile-recorder-content .vidtreo-record-button svg{width:1.5rem;height:1.5rem}.vidtreo-permission-flow{position:absolute;inset:0;background:#000;display:none;flex-direction:column;align-items:center;justify-content:center;gap:1.25rem;z-index:var(--vidtreo-z-modal-overlay);transform:translateZ(0);contain:layout style paint;backface-visibility:hidden;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text",system-ui,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.vidtreo-permission-flow.vidtreo-active{display:flex;animation:vidtreo-fadeIn 0.4s cubic-bezier(0.2,0,0,1)}.vidtreo-permission-flow-title{font-size:1.25rem;font-weight:600;color:#fff;margin:0;text-align:center;line-height:1.3}.vidtreo-permission-flow-subtitle{font-size:0.875rem;color:rgba(255,255,255,0.75);margin:0;text-align:center;line-height:1.5;letter-spacing:-0.005em;max-width:280px}.vidtreo-permission-flow-action{display:inline-flex;align-items:center;justify-content:center;gap:0.625rem;margin-top:0.5rem;padding:0.875rem 1.75rem;background:hsl(var(--vidtreo-primary));color:hsl(var(--vidtreo-primary-foreground));border:none;border-radius:9999px;font-size:1rem;font-weight:600;cursor:pointer;transition:all 0.2s ease;min-width:200px;letter-spacing:-0.01em;animation:vidtreo-btn-glow-pulse 2s ease-in-out infinite}.vidtreo-permission-flow-action:hover:not(:disabled){transform:scale(1.02);animation-play-state:paused;box-shadow:0 0 20px 6px rgba(255,255,255,0.6),0 0 40px 10px rgba(255,255,255,0.3)}.vidtreo-permission-flow-action:active:not(:disabled){transform:scale(0.98)}.vidtreo-permission-flow-action:disabled{opacity:0.5;cursor:not-allowed;animation:none;box-shadow:none}.vidtreo-permission-flow-action--requesting{opacity:0.55;cursor:wait;animation:none;box-shadow:none}@keyframes vidtreo-spinner-rotate{to{transform:rotate(360deg)}}.vidtreo-permission-flow-spinner{display:inline-block;width:1.125rem;height:1.125rem;border:2px solid rgba(255,255,255,0.3);border-top-color:hsl(var(--vidtreo-primary-foreground));border-radius:50%;animation:vidtreo-spinner-rotate 0.8s linear infinite;flex-shrink:0}.vidtreo-permission-flow-spinner--large{width:2.5rem;height:2.5rem;border-width:3px}.vidtreo-permission-flow-recovery{display:flex;flex-direction:column;align-items:center;gap:1.25rem;max-width:280px;text-align:center}.vidtreo-permission-flow-recovery-text{font-size:0.75rem;color:rgba(255,255,255,0.4);line-height:1.6;letter-spacing:-0.005em;margin:0}.vidtreo-permission-flow-retry{display:inline-flex;align-items:center;justify-content:center;gap:0.625rem;padding:0.875rem 1.75rem;background:hsl(var(--vidtreo-primary));color:hsl(var(--vidtreo-primary-foreground));border:none;border-radius:9999px;font-size:1rem;font-weight:600;cursor:pointer;transition:all 0.2s ease;min-width:200px;letter-spacing:-0.01em;animation:vidtreo-btn-glow-pulse 2s ease-in-out infinite}.vidtreo-permission-flow-retry:hover:not(:disabled){transform:scale(1.02);animation-play-state:paused;box-shadow:0 0 20px 6px rgba(255,255,255,0.6),0 0 40px 10px rgba(255,255,255,0.3)}.vidtreo-permission-flow-retry:active:not(:disabled){transform:scale(0.98)}@keyframes vidtreo-fadeOut{from{opacity:1}to{opacity:0}}.vidtreo-permission-flow.vidtreo-permission-flow--fading{animation:vidtreo-fadeOut 0.6s ease-out forwards;pointer-events:none}.vidtreo-recovery-guide{width:100%;max-width:280px;margin:0 auto;position:relative}.vidtreo-recovery-guide::after{content:"";position:absolute;bottom:0;left:0;right:0;height:60px;background:linear-gradient(to bottom,transparent 0%,#000 100%);z-index:20;pointer-events:none}.vidtreo-recovery-guide::before{content:"";position:absolute;top:0;right:0;bottom:0;width:50px;background:linear-gradient(to right,transparent 0%,#000 100%);z-index:20;pointer-events:none}.vidtreo-recovery-guide-browser{position:relative;background:#161616;border-radius:10px 0 0 0;overflow:hidden;border-top:1px solid rgba(255,255,255,0.1);border-left:1px solid rgba(255,255,255,0.1);animation:vidtreo-fadeIn 0.5s ease}.vidtreo-recovery-guide-titlebar{position:relative;display:flex;align-items:center;padding:8px 10px;background:#1e1e1e;gap:8px;border-bottom:1px solid rgba(255,255,255,0.06);z-index:3}.vidtreo-recovery-guide-dots{display:flex;gap:5px;flex-shrink:0}.vidtreo-recovery-guide-dot{width:8px;height:8px;border-radius:50%}.vidtreo-recovery-guide-dot--close{background:#ff5f57}.vidtreo-recovery-guide-dot--min{background:#febc2e}.vidtreo-recovery-guide-dot--max{background:#28c840}.vidtreo-recovery-guide-addressbar{flex:1;display:flex;align-items:center;gap:5px;background:#2a2a2a;border-radius:5px;padding:4px 8px;min-width:0}.vidtreo-recovery-guide-lock{flex-shrink:0;color:rgba(255,255,255,0.5);display:flex;align-items:center;animation:vidtreo-lock-pulse 7s ease-in-out infinite}.vidtreo-recovery-guide-lock-svg{display:block}.vidtreo-recovery-guide-url{font-size:0.65rem;color:rgba(255,255,255,0.5);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:-apple-system,BlinkMacSystemFont,system-ui,sans-serif}.vidtreo-recovery-guide-cursor{position:absolute;left:62px;top:12px;z-index:40;pointer-events:none;animation:vidtreo-cursor-move 7s ease-in-out infinite;filter:drop-shadow(0 2px 4px rgba(0,0,0,0.6))}.vidtreo-recovery-guide-cursor-svg{display:block}.vidtreo-recovery-guide-browser-bg{height:110px;background:#161616}.vidtreo-recovery-guide-popover{position:absolute;top:34px;left:12px;right:12px;background:#252525;border-radius:10px;padding:8px 12px 12px;border:1px solid rgba(255,255,255,0.1);box-shadow:0 8px 30px rgba(0,0,0,0.6),0 2px 8px rgba(0,0,0,0.4),0 0 0 1px rgba(255,255,255,0.06);z-index:30;animation:vidtreo-popover-reveal 7s ease-in-out infinite}.vidtreo-recovery-guide-popover-header{font-size:0.65rem;font-weight:600;color:rgba(255,255,255,0.85);padding-bottom:6px;font-family:-apple-system,BlinkMacSystemFont,system-ui,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}.vidtreo-recovery-guide-popover-divider{height:1px;background:rgba(255,255,255,0.08)}.vidtreo-recovery-guide-perm-row{display:flex;align-items:center;justify-content:space-between;padding:7px 0}.vidtreo-recovery-guide-perm-row + .vidtreo-recovery-guide-perm-row{border-top:1px solid rgba(255,255,255,0.06)}.vidtreo-recovery-guide-perm-group{display:flex;align-items:center;gap:8px}.vidtreo-recovery-guide-perm-icon{position:relative;width:14px;height:14px;flex-shrink:0}.vidtreo-recovery-guide-icon-off,.vidtreo-recovery-guide-icon-on{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.vidtreo-recovery-guide-icon-off{color:rgba(255,255,255,0.4);animation:vidtreo-icon-hide 7s ease-in-out infinite}.vidtreo-recovery-guide-icon-on{color:#34d399;animation:vidtreo-icon-show 7s ease-in-out infinite}.vidtreo-recovery-guide-perm-label{font-size:0.7rem;color:rgba(255,255,255,0.85);font-family:-apple-system,BlinkMacSystemFont,system-ui,sans-serif}.vidtreo-recovery-guide-switch{position:relative;width:32px;height:18px;flex-shrink:0}.vidtreo-recovery-guide-switch-track{position:absolute;inset:0;border-radius:9px;background:rgba(255,255,255,0.15);animation:vidtreo-track-on 7s ease-in-out infinite}.vidtreo-recovery-guide-switch-knob{position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,0.3);animation:vidtreo-knob-slide 7s ease-in-out infinite}.vidtreo-recovery-guide-switch--delayed{animation-delay:0.85s}@keyframes vidtreo-cursor-move{0%{transform:translate(100px,12px);opacity:0}8%{opacity:1}22%{transform:translate(0,0)}26%{transform:translate(0,0) scale(0.75)}30%{transform:translate(0,0) scale(1);opacity:1}33%{transform:translate(0,0);opacity:1}38%{transform:translate(65px,63px);opacity:1}42%{transform:translate(65px,63px) scale(0.75)}45%{transform:translate(65px,63px) scale(1);opacity:1}48%{transform:translate(65px,97px);opacity:1}52%{transform:translate(65px,97px) scale(0.75)}55%{transform:translate(65px,97px) scale(1);opacity:1}60%{opacity:0}100%{transform:translate(100px,12px);opacity:0}}@keyframes vidtreo-popover-reveal{0%,27%{opacity:0;transform:translateY(-6px) scale(0.96)}33%,82%{opacity:1;transform:translateY(0) scale(1)}88%,100%{opacity:0;transform:translateY(-6px) scale(0.96)}}@keyframes vidtreo-track-on{0%,34%{background:rgba(255,255,255,0.15)}40%,92%{background:#34d399}96%,100%{background:rgba(255,255,255,0.15)}}@keyframes vidtreo-knob-slide{0%,34%{transform:translateX(0)}40%,92%{transform:translateX(14px)}96%,100%{transform:translateX(0)}}@keyframes vidtreo-icon-hide{0%,34%{opacity:1}40%,92%{opacity:0}96%,100%{opacity:1}}@keyframes vidtreo-icon-show{0%,34%{opacity:0}40%,92%{opacity:1}96%,100%{opacity:0}}@keyframes vidtreo-lock-pulse{0%,15%{color:rgba(255,255,255,0.5)}22%,30%{color:#34d399}38%,100%{color:rgba(255,255,255,0.5)}}.vidtreo-record-button.vidtreo-record-button-disabled,.vidtreo-record-button-disabled{opacity:0.6;cursor:not-allowed;pointer-events:none;filter:grayscale(0.3)}.vidtreo-mic-connecting-indicator{display:inline-flex;align-items:center;justify-content:center;animation:vidtreo-mic-pulse 1.4s ease-in-out infinite}@keyframes vidtreo-mic-pulse{0%,100%{opacity:0.4}50%{opacity:1}}.vidtreo-audio-error-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(0,0,0,0.85);z-index:var(--vidtreo-z-error-overlay);padding:2rem 1.5rem;text-align:center;animation:vidtreo-audio-overlay-fade-in 0.3s ease-out}@supports (backdrop-filter:blur(8px)){.vidtreo-audio-error-overlay{background:rgba(0,0,0,0.75);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}}@keyframes vidtreo-audio-overlay-fade-in{from{opacity:0}to{opacity:1}}.vidtreo-audio-error-icon{width:56px;height:56px;border-radius:50%;background:rgba(239,68,68,0.15);display:flex;align-items:center;justify-content:center;margin-bottom:1rem}.vidtreo-audio-error-icon svg{width:28px;height:28px;color:#ef4444}.vidtreo-audio-error-title{font-size:1.125rem;font-weight:600;color:#ffffff;margin:0 0 0.5rem;line-height:1.4}.vidtreo-audio-error-message{font-size:0.875rem;color:rgba(255,255,255,0.7);margin:0 0 1.5rem;line-height:1.6;max-width:320px}.vidtreo-audio-error-retry{display:inline-flex;align-items:center;gap:0.5rem;padding:0.75rem 1.5rem;background:#ffffff;color:#111111;border:none;border-radius:9999px;font-size:0.875rem;font-weight:600;cursor:pointer;transition:background 0.15s ease,transform 0.1s ease;font-family:inherit}.vidtreo-audio-error-retry:hover{background:#f0f0f0}.vidtreo-audio-error-retry:active{transform:scale(0.97)}.vidtreo-audio-error-retry svg{width:16px;height:16px}.vidtreo-audio-warning-toast{position:absolute;top:1rem;left:50%;transform:translateX(-50%);z-index:var(--vidtreo-z-error-overlay);display:flex;align-items:flex-start;gap:0.625rem;max-width:min(420px,calc(100% - 2rem));padding:0.625rem 0.875rem;border-radius:12px;font-family:inherit;background:rgba(17,17,17,0.55);color:rgba(255,255,255,0.92);border:1px solid rgba(255,255,255,0.08);box-shadow:0 4px 16px rgba(0,0,0,0.25);animation:vidtreo-audio-warning-toast-fade-in 0.2s ease-out;pointer-events:auto}@supports (backdrop-filter:blur(10px)){.vidtreo-audio-warning-toast{background:rgba(17,17,17,0.45);backdrop-filter:blur(10px) saturate(140%);-webkit-backdrop-filter:blur(10px) saturate(140%)}}.vidtreo-audio-warning-toast--critical{border-color:rgba(239,68,68,0.45)}.vidtreo-audio-warning-toast--critical .vidtreo-audio-warning-toast__icon{color:#ef4444}.vidtreo-audio-warning-toast--soft{border-color:rgba(245,158,11,0.45)}.vidtreo-audio-warning-toast--soft .vidtreo-audio-warning-toast__icon{color:#f59e0b}.vidtreo-audio-warning-toast__icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;margin-top:1px}.vidtreo-audio-warning-toast__content{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 auto}.vidtreo-audio-warning-toast__title{font-size:0.8125rem;font-weight:600;line-height:1.3;color:#ffffff}.vidtreo-audio-warning-toast__message{font-size:0.75rem;font-weight:400;line-height:1.4;color:rgba(255,255,255,0.72)}.vidtreo-audio-warning-toast__dismiss{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;margin-left:0.25rem;border-radius:6px;border:none;background:transparent;color:rgba(255,255,255,0.65);cursor:pointer;transition:background 0.15s ease,color 0.15s ease;font-family:inherit}.vidtreo-audio-warning-toast__dismiss:hover{background:rgba(255,255,255,0.1);color:rgba(255,255,255,0.95)}@keyframes vidtreo-audio-warning-toast-fade-in{from{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%,0)}}.vidtreo-audio-only{--vidtreo-audio-pill-height:3.5rem;--vidtreo-audio-wave-height:1.75rem;position:relative;width:100%;height:auto;contain:none;transform:none;overflow:visible;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text",system-ui,sans-serif;color:hsl(var(--vidtreo-foreground))}@media (prefers-color-scheme:dark){.vidtreo-audio-only{--vidtreo-foreground:0 0% 98%;--vidtreo-card:0 0% 9%;--vidtreo-card-foreground:0 0% 98%;--vidtreo-secondary:0 0% 16%;--vidtreo-secondary-foreground:0 0% 98%;--vidtreo-accent:0 0% 20%;--vidtreo-muted-foreground:0 0% 64%;--vidtreo-border:0 0% 22%}}.dark .vidtreo-audio-only,.vidtreo-audio-only[data-theme="dark"]{--vidtreo-foreground:0 0% 98%;--vidtreo-card:0 0% 9%;--vidtreo-card-foreground:0 0% 98%;--vidtreo-secondary:0 0% 16%;--vidtreo-secondary-foreground:0 0% 98%;--vidtreo-accent:0 0% 20%;--vidtreo-muted-foreground:0 0% 64%;--vidtreo-border:0 0% 22%}.vidtreo-audio-only .vidtreo-audio-warning-toast{position:static;transform:none;width:fit-content;max-width:min(20rem,100%);margin:0.5rem auto 0;background:hsl(var(--vidtreo-card));color:hsl(var(--vidtreo-card-foreground));border-color:hsl(var(--vidtreo-border));box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.vidtreo-audio-only .vidtreo-audio-warning-toast__title{color:hsl(var(--vidtreo-card-foreground))}.vidtreo-audio-only .vidtreo-audio-warning-toast__message{color:hsl(var(--vidtreo-muted-foreground))}.vidtreo-mobile-recorder-content>.vidtreo-audio-only{margin:auto 0;padding:0 1rem}.vidtreo-audio-bar{position:relative;width:100%;max-width:20rem;margin:0 auto;font-size:0.875rem;line-height:1.25;box-sizing:border-box}.vidtreo-audio-bar *,.vidtreo-audio-bar *::before,.vidtreo-audio-bar *::after{box-sizing:border-box}.vidtreo-audio-bar [hidden]{display:none !important}.vidtreo-audio-bar-main{position:relative;display:flex;align-items:center;gap:0.625rem;height:var(--vidtreo-audio-pill-height);padding:0.375rem 0.625rem 0.375rem 0.375rem;background:hsl(var(--vidtreo-preview-bg));color:#ffffff;border-radius:9999px;box-shadow:0 0 0 1px hsl(var(--vidtreo-border) / 0.35)}.vidtreo-audio-bar-primary{position:relative;flex:none;display:grid;place-items:center;width:2.75rem;height:2.75rem;padding:0;border:none;border-radius:9999px;background:hsl(var(--vidtreo-destructive));color:#ffffff;font-size:1.25rem;font-weight:600;font-variant-numeric:tabular-nums;cursor:pointer;transition:transform 0.1s ease,opacity 0.2s ease}.vidtreo-audio-bar-primary:hover:not(:disabled){transform:scale(1.05)}.vidtreo-audio-bar-primary:disabled{cursor:default;opacity:0.75}.vidtreo-audio-bar-primary--start{display:inline-flex;align-items:center;gap:0.375rem;width:auto;height:2.25rem;margin-left:0.25rem;padding:0 0.875rem 0 0.625rem;font-size:0.875rem;font-weight:500;line-height:1;animation:vidtreo-record-glow-pulse 2s ease-in-out infinite}.vidtreo-audio-bar-primary--start .vidtreo-audio-icon{font-size:1.5rem}.vidtreo-audio-bar-primary--start:hover:not(:disabled){animation-play-state:paused;box-shadow:0 0 20px 6px rgba(239,68,68,0.7),0 0 40px 10px rgba(239,68,68,0.35)}.vidtreo-audio-bar-primary--start:disabled{animation:none}.vidtreo-audio-bar[data-state="recording"] .vidtreo-audio-bar-primary::after{content:"";position:absolute;inset:0;border-radius:inherit;border:2px solid hsl(var(--vidtreo-destructive));animation:vidtreo-audio-bar-pulse 1.6s ease-out infinite;pointer-events:none}.vidtreo-audio-bar-center{flex:1;min-width:0;display:flex;align-items:center}.vidtreo-audio-bar:not( [data-state="recording"],[data-state="paused"],[data-state="uploading"] ) .vidtreo-audio-bar-wave{visibility:hidden}.vidtreo-audio-bar-wave{display:flex;flex:1;align-items:center;justify-content:space-between;height:var(--vidtreo-audio-wave-height);overflow:hidden}.vidtreo-audio-bar-wave-bar{flex:none;width:4px;height:calc(max(0.14,var(--vidtreo-level,0)) * 100%);border-radius:9999px;background:rgba(255,255,255,0.6);transition:height 0.08s linear}.vidtreo-audio-bar[data-state="recording"] .vidtreo-audio-bar-wave-bar,.vidtreo-audio-bar[data-state="uploading"] .vidtreo-audio-bar-wave-bar{background:#ffffff}.vidtreo-audio-bar[data-state="paused"] .vidtreo-audio-bar-wave-bar{background:rgba(255,255,255,0.8)}.vidtreo-audio-bar[data-muted="true"] .vidtreo-audio-bar-wave-bar{background:rgba(255,255,255,0.3)}.vidtreo-audio-bar-side{flex:none;display:flex;align-items:center;gap:0.25rem}.vidtreo-audio-bar-time{min-width:2.25rem;font-size:0.75rem;font-weight:500;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;color:rgba(255,255,255,0.7)}.vidtreo-audio-bar-limit{color:rgba(255,255,255,0.45);font-weight:400}.vidtreo-audio-bar-button{position:relative;flex:none;display:grid;place-items:center;width:2.25rem;height:2.25rem;padding:0;border:none;border-radius:9999px;background:transparent;color:#ffffff;font-size:1.375rem;cursor:pointer;transition:background 0.15s ease}.vidtreo-audio-bar-button:hover:not(:disabled),.vidtreo-audio-bar-button[aria-expanded="true"]{background:rgba(255,255,255,0.14)}.vidtreo-audio-bar-button:disabled{cursor:default;opacity:0.4}.vidtreo-audio-bar[data-muted="true"] .vidtreo-audio-bar-button{color:rgba(255,255,255,0.55)}.vidtreo-audio-bar-primary:focus-visible,.vidtreo-audio-bar-button:focus-visible,.vidtreo-audio-bar-menu-item:focus-visible,.vidtreo-audio-bar-action:focus-visible{outline:2px solid hsl(var(--vidtreo-ring));outline-offset:2px}.vidtreo-audio-bar-button:focus-visible{outline-color:#ffffff}.vidtreo-audio-bar-caption{display:flex;align-items:center;justify-content:center;min-height:1.5rem;margin-top:0.5rem;font-size:0.75rem;text-align:center}.vidtreo-audio-bar-status{margin:0;overflow:hidden;font-weight:500;color:hsl(var(--vidtreo-muted-foreground));text-overflow:ellipsis;white-space:nowrap}.vidtreo-audio-bar[data-state="recording"] .vidtreo-audio-bar-status{color:hsl(var(--vidtreo-destructive))}.vidtreo-audio-bar-message{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:0.25rem 0.5rem;min-width:0;max-width:100%;font-size:0.8125rem;color:hsl(var(--vidtreo-muted-foreground))}.vidtreo-audio-bar-message[data-tone="error"]{color:hsl(var(--vidtreo-destructive))}.vidtreo-audio-bar-message[data-tone="success"] .vidtreo-audio-icon{color:hsl(142 71% 36%)}.vidtreo-audio-bar-message-text{flex:1 1 0;min-width:0;margin:0;text-align:left}.vidtreo-audio-bar-message:not(:has(.vidtreo-audio-bar-action)){flex-wrap:nowrap}.vidtreo-audio-bar-message:has(.vidtreo-audio-bar-action)::after{content:"";flex-basis:100%;height:0;order:1}.vidtreo-audio-bar-message .vidtreo-audio-bar-action{order:2}.vidtreo-audio-bar-action{flex:none;display:inline-flex;align-items:center;gap:0.375rem;height:1.75rem;padding:0 0.75rem;border:1px solid hsl(var(--vidtreo-border));border-radius:9999px;background:hsl(var(--vidtreo-secondary));color:hsl(var(--vidtreo-secondary-foreground));font-size:0.75rem;font-weight:500;cursor:pointer}.vidtreo-audio-bar-action:hover:not(:disabled){background:hsl(var(--vidtreo-accent))}.vidtreo-audio-bar-action:disabled{cursor:default;opacity:0.7}.vidtreo-audio-bar-progress{position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none}.vidtreo-audio-bar-progress-fill{position:absolute;bottom:0;left:0;display:block;height:3px;background:hsl(var(--vidtreo-destructive));transition:width 0.2s ease}.vidtreo-audio-bar-menu{position:absolute;top:calc(var(--vidtreo-audio-pill-height) + 0.375rem);right:0;z-index:var(--vidtreo-z-settings-panel);width:min(18rem,100%);max-height:16rem;padding:0.25rem;overflow-y:auto;background:hsl(var(--vidtreo-card));color:hsl(var(--vidtreo-card-foreground));border:1px solid hsl(var(--vidtreo-border));border-radius:0.875rem;box-shadow:0 10px 24px -8px rgb(0 0 0 / 0.25),0 2px 6px -2px rgb(0 0 0 / 0.15)}.vidtreo-audio-bar-menu-title{margin:0;padding:0.375rem 0.5rem 0.25rem;font-size:0.6875rem;font-weight:600;letter-spacing:0.04em;text-transform:uppercase;color:hsl(var(--vidtreo-muted-foreground))}.vidtreo-audio-bar-menu-item{display:flex;align-items:center;gap:0.5rem;width:100%;min-height:2.25rem;padding:0.375rem 0.5rem;border:none;border-radius:0.5rem;background:transparent;color:hsl(var(--vidtreo-card-foreground));font-family:inherit;font-size:0.8125rem;text-align:left;cursor:pointer}.vidtreo-audio-bar-menu-item:hover{background:hsl(var(--vidtreo-secondary))}.vidtreo-audio-bar-menu-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vidtreo-audio-bar-menu-check{flex:none;width:1rem;font-size:1rem}.vidtreo-audio-bar-menu-empty{margin:0;padding:0.5rem;font-size:0.8125rem;color:hsl(var(--vidtreo-muted-foreground))}.vidtreo-audio-icon{display:inline-block;flex:none;width:1em;height:1em;background:currentColor;-webkit-mask:var(--vidtreo-audio-icon) center / contain no-repeat;mask:var(--vidtreo-audio-icon) center / contain no-repeat}.vidtreo-audio-spinner{display:inline-block;flex:none;width:1.125rem;height:1.125rem;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:vidtreo-spin 0.8s linear infinite}@keyframes vidtreo-audio-bar-pulse{from{opacity:0.7;transform:scale(1)}to{opacity:0;transform:scale(1.35)}}@media (prefers-reduced-motion:reduce){.vidtreo-audio-bar-wave-bar,.vidtreo-audio-bar-button,.vidtreo-audio-bar-primary,.vidtreo-audio-bar-progress-fill{transition:none}.vidtreo-audio-bar-primary:hover:not(:disabled){transform:none}.vidtreo-audio-bar-primary--start{animation:none}.vidtreo-audio-bar[data-state="recording"] .vidtreo-audio-bar-primary::after{animation:none;opacity:0.4}.vidtreo-audio-spinner{animation-duration:2.4s}}.vidtreo-audio-icon--mic{--vidtreo-audio-icon:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z%22/%3E%3Cpath d=%22M19 10v2a7 7 0 0 1-14 0v-2%22/%3E%3Cline x1=%2212%22 x2=%2212%22 y1=%2219%22 y2=%2222%22/%3E%3C/svg%3E")}.vidtreo-audio-icon--mic-off{--vidtreo-audio-icon:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cline x1=%222%22 x2=%2222%22 y1=%222%22 y2=%2222%22/%3E%3Cpath d=%22M18.89 13.23A7.12 7.12 0 0 0 19 12v-2%22/%3E%3Cpath d=%22M5 10v2a7 7 0 0 0 12 5%22/%3E%3Cpath d=%22M15 9.34V5a3 3 0 0 0-5.68-1.33%22/%3E%3Cpath d=%22M9 9v3a3 3 0 0 0 5.12 2.12%22/%3E%3Cline x1=%2212%22 x2=%2212%22 y1=%2219%22 y2=%2222%22/%3E%3C/svg%3E")}.vidtreo-audio-icon--stop{--vidtreo-audio-icon:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect width=%2212%22 height=%2212%22 x=%226%22 y=%226%22 rx=%222%22 fill=%22black%22/%3E%3C/svg%3E")}.vidtreo-audio-icon--pause{--vidtreo-audio-icon:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect width=%224%22 height=%2216%22 x=%2214%22 y=%224%22 rx=%221%22/%3E%3Crect width=%224%22 height=%2216%22 x=%226%22 y=%224%22 rx=%221%22/%3E%3C/svg%3E")}.vidtreo-audio-icon--play{--vidtreo-audio-icon:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpolygon points=%226 3 20 12 6 21 6 3%22/%3E%3C/svg%3E")}.vidtreo-audio-icon--settings{--vidtreo-audio-icon:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M20 7h-9%22/%3E%3Cpath d=%22M14 17H5%22/%3E%3Ccircle cx=%2217%22 cy=%2217%22 r=%223%22/%3E%3Ccircle cx=%227%22 cy=%227%22 r=%223%22/%3E%3C/svg%3E")}.vidtreo-audio-icon--check{--vidtreo-audio-icon:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M20 6 9 17l-5-5%22/%3E%3C/svg%3E")}.vidtreo-audio-icon--alert{--vidtreo-audio-icon:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%2210%22/%3E%3Cline x1=%2212%22 x2=%2212%22 y1=%228%22 y2=%2212%22/%3E%3Cline x1=%2212%22 x2=%2212.01%22 y1=%2216%22 y2=%2216%22/%3E%3C/svg%3E")}.vidtreo-audio-icon--retry{--vidtreo-audio-icon:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22black%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8%22/%3E%3Cpath d=%22M21 3v5h-5%22/%3E%3C/svg%3E")}.vidtreo-audio-icon--record-start{--vidtreo-audio-icon:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%229%22 fill=%22black%22/%3E%3C/svg%3E")}.vidtreo-integrity-challenge{position:absolute;bottom:4.5rem;left:50%;transform:translateX(-50%);z-index:var(--vidtreo-z-error-overlay);display:block;max-width:min(560px,calc(100% - 2rem));padding:0.875rem 1.25rem;border-radius:12px;font-family:inherit;text-align:center;background:rgba(17,17,17,0.78);color:#ffffff;border:1px solid rgba(255,255,255,0.14);box-shadow:0 4px 16px rgba(0,0,0,0.3);animation:vidtreo-audio-warning-toast-fade-in 0.2s ease-out;pointer-events:none}.vidtreo-integrity-challenge__text{display:block;font-size:1.125rem;font-weight:600;line-height:1.35}.vidtreo-integrity-challenge__alternative{display:block;margin-top:0.375rem;font-size:0.875rem;line-height:1.35;opacity:0.85}.vidtreo-audio-only .vidtreo-integrity-challenge{position:static;transform:none;margin:0.5rem auto 0;background:hsl(var(--vidtreo-card));color:hsl(var(--vidtreo-card-foreground))}`;document.head.appendChild(style);}})();import{CONFIG_ERROR_CREDENTIAL_CONFLICT as e,ConfigService as t,DEFAULT_TRANSCODE_CONFIG as n,ERROR_AUDIO_RECORDING_DISABLED as r,ERROR_RECORDING_MARKER_DUPLICATE_ID as i,ERROR_RECORDING_MARKER_INVALID_ID as a,ERROR_RECORDING_MARKER_INVALID_LABEL as o,ERROR_RECORDING_MARKER_LIMIT_REACHED as s,ERROR_RECORDING_MARKER_NOT_RECORDING as c,NativeCameraHandler as l,PermissionFlowOrchestrator as u,RecorderController as d,UPLOAD_ERROR_INSUFFICIENT_CREDITS as f,UPLOAD_ERROR_INSUFFICIENT_CREDITS as p,VideoUploadService as m,calculateBarColor as h,checkRecorderSupport as g,createCredentialConflictError as _,createMarkerNotRecordingError as v,createPermissionFlowOrchestratorDependencies as y,extractErrorMessage as b,getBrowserInfo as x,getDefaultConfigForFormat as S,getUploadErrorCode as C,getUploadErrorCode as w,hasCredentialConflict as T,isCredentialConflictError as E,isMobileDevice as D,isRecordingMarkerError as O,isRepeatedUploadRejection as ee,resolveDeviceError as te,transcodeVideoForNativeCamera as k}from"@vidtreo/recorder";import{Fragment as A,Teleport as j,computed as M,createBlock as N,createCommentVNode as P,createElementBlock as F,createElementVNode as I,createStaticVNode as L,createTextVNode as R,createVNode as z,defineComponent as B,h as ne,inject as V,nextTick as H,normalizeClass as U,normalizeStyle as W,onBeforeUnmount as G,onErrorCaptured as re,onMounted as ie,openBlock as K,provide as ae,reactive as oe,ref as q,renderList as J,renderSlot as se,shallowRef as ce,toDisplayString as Y,toRaw as le,toValue as X,unref as Z,watch as Q,withCtx as ue}from"vue";function de(){return typeof process<`u`&&process.env&&typeof process.env.VIDTREO_API_KEY==`string`?process.env.VIDTREO_API_KEY:null}function fe(e,t,n){return t?null:T(e,n)?_():n||e||de()!==null?null:Error(`apiKey is required. Provide it as a prop or set VIDTREO_API_KEY environment variable.`)}function pe(e,t,n){let r=fe(e,t,n);if(r)throw r;return t||n?``:e||de()||``}function me(e,t){let n=M(()=>{let{apiKey:t,demo:n,getAccessToken:r}=e();return fe(t,n,r)});return Q(()=>n.value?.message??null,e=>{e===null||n.value===null||t(n.value)},{immediate:!0}),n}function he(){return{mark:()=>void 0}}function ge(e){return{mark:t=>{if(!e.value)throw v();e.value.mark(t)}}}function _e(e){return{mark:t=>{if(!e.value)throw v();e.value.mark(t)}}}function ve(e){return e===!0?`audio`:`camera`}function ye(e){return e===!0?`Microphone access is required. Please enable permissions in your browser settings and reload the page.`:`Camera and microphone access is required. Please enable permissions in your browser settings and reload the page.`}const be=`https://core.vidtreo.com`,xe={en:{initializingCamera:`Initializing camera...`,grantPermissions:`Grant camera and microphone permissions when prompted`,browserUnsupported:`This browser is not supported`,browserUnsupportedDynamic:`{browser} ({version}) is not supported, please use <a href="https://www.google.com/chrome/" target="_blank" rel="noopener noreferrer">Chrome</a>`,browserUnsupportedSafari:`Safari (latest stable) is supported. If you experience issues, please use <a href="https://www.google.com/chrome/" target="_blank" rel="noopener noreferrer">Chrome</a>`,browserUnsupportedFirefox:`Firefox is not supported, please use <a href="https://www.google.com/chrome/" target="_blank" rel="noopener noreferrer">Chrome</a>`,retryCamera:`Retry Camera`,cameraInUse:`Your camera is being used by another application. Close other apps using the camera (Zoom, Teams, Discord) and try again.`,cameraNotFound:`No camera detected. Connect a camera or check your device settings.`,cameraPermissionDenied:`Camera access was denied. Allow camera access in your browser settings and try again.`,cameraTimeout:`The camera took too long to start. Close other apps using the camera and try again.`,failedToStartCamera:`Failed to start camera`,audioInUse:`Your microphone is being used by another application. Close other apps using the microphone (Zoom, Teams, Discord) and try again.`,audioNotFound:`No microphone detected. Connect a microphone or check your device settings.`,audioPermissionDenied:`Microphone access was denied. Allow microphone access in your browser settings and try again.`,audioTimeout:`The microphone took too long to start. Close other apps using the microphone and try again.`,failedToStartAudio:`Failed to start microphone`,audioErrorTitle:`Microphone unavailable`,audioErrorMessage:`We couldn't access your microphone. It may be in use by another app like Zoom, Teams, or Discord. Please close it and try again.`,audioErrorRetry:`Try again`,audioMissingTitle:`Recording has no audio`,audioMissingMessage:`We couldn't capture audio in this recording. Your microphone may have been disconnected or blocked by the browser. Check your microphone and record again.`,audioSilentTitle:`Recording is silent`,audioSilentMessage:`We didn't detect any sound during the recording. Make sure your microphone is working and not muted by your operating system, then record again.`,audioProcessingErrorTitle:`Audio processing error`,audioProcessingErrorMessage:`We couldn't process the audio in this recording. Please record again.`,audioMissingRetry:`Record again`,audioWarningNoSignalTitle:`No microphone signal`,audioWarningNoSignalMessage:`We're not detecting any sound. Check that your microphone is active.`,audioWarningLowSignalTitle:`Audio is very quiet`,audioWarningLowSignalMessage:`Move closer to the microphone or turn up the input volume.`,audioWarningSpeakingMutedTitle:`You're speaking while muted`,audioWarningSpeakingMutedMessage:`Unmute your microphone if you want your voice in the recording.`,audioWarningTrackEndedTitle:`Microphone disconnected`,audioWarningTrackEndedMessage:`The microphone was disconnected. Reconnect it before continuing.`,audioWarningNoChunksTitle:`No microphone input`,audioWarningNoChunksMessage:`We're not receiving audio from the microphone. Check browser permissions.`,audioWarningTrackMutedTitle:`Microphone muted by browser`,audioWarningTrackMutedMessage:`The browser muted your microphone. Check site settings.`,audioWarningDismiss:`Dismiss`,cameraErrorTitle:`Camera unavailable`,cameraErrorMessage:`We couldn't access your camera. It may be in use by another app. Please close it and try again.`,browserErrorTitle:`Browser not supported`,browserErrorMessage:`Your browser doesn't support video recording. Please use the latest version of Chrome for the best experience.`,recordingCodecUnsupportedTitle:`Recording format not supported`,recordingCodecUnsupportedMessage:`This device can't use the selected video format. Close other apps, update Chrome if possible, and record again.`,recordingMediaEmptyTitle:`No video was produced`,recordingMediaEmptyMessage:`The browser didn't produce a usable video. Check your camera and record again.`,recordingMediaErrorTitle:`Recording could not be finished`,recordingMediaErrorMessage:`The browser reported an error before the video was ready to upload. Record again.`,recordingServerTranscodeFallbackTitle:`Video processing failed`,recordingServerTranscodeFallbackMessage:`We couldn't prepare this video for upload on your device. Record again.`,recordingTrackEndedTitle:`Camera stopped during recording`,recordingTrackEndedMessage:`The camera feed ended before the recording finished. Check that the camera is still connected and record again.`,recordingFinalizeTimeoutTitle:`Recording took too long to finish`,recordingFinalizeTimeoutMessage:`This device may be low on memory or processing power. Close other apps or browser tabs, then record again.`,recordingStateRaceTitle:`Recording did not start correctly`,recordingStateRaceMessage:`The recording could not be finalized because it did not start cleanly. Please refresh the page and record again.`,recordingNoFramesTitle:`No video was captured`,recordingNoFramesMessage:`We couldn't receive video frames from the camera. Check your camera connection and record again.`,recordingUnsupportedTitle:`Recording not available`,recordingUnsupportedMessage:`This device or browser can't record video reliably right now. Check your connection, update Chrome if possible, or use another device.`,recordingPipelineRetry:`Record again`,genericErrorTitle:`Something went wrong`,genericErrorMessage:`An unexpected error occurred. Please try again.`,errorRetry:`Try again`,switchingDevice:`Switching device...`,recordingStartsIn:`Recording starts in...`,switchingSource:`Switching source...`,rec:`REC`,settings:`Settings`,record:`Record`,stop:`Stop`,pause:`Pause`,resume:`Resume`,mute:`Mute`,unmute:`Unmute`,switchSource:`Switch Source`,camera:`Camera`,microphone:`Microphone`,microphoneConnecting:`Connecting microphone...`,minimumRecordingTimeNotReached:`You have not met the minimum recording time yet`,uploading:`Uploading...`,finalizing:`Finalizing…`,retryingUpload:`Retrying upload...`,uploadInsufficientCredits:`This video couldn't be uploaded. Please contact the site administrator.`,uploadInsufficientCreditsTitle:`Video couldn't be uploaded`,uploadErrorClose:`Close`,finishing:`Finishing...`,userInAnotherTab:`User in another tab`,download:`Download`,nativeCameraSelectVideo:`Select Video from Gallery`,nativeCameraRecordVideo:`Record with Camera`,nativeCameraProcessing:`Processing video...`,nativeCameraConfigLoading:`Loading settings...`,nativeCameraConfigLoadError:`Failed to load settings`,nativeCameraPreviewAlt:`Video preview`,errorTitle:`Configuration Error`,errorApiKeyRequired:`An API Key or access token provider is required.`,errorGeneric:`An error occurred while initializing the recorder`,mobileOpenCamera:`Allow Access`,mobileOpenCameraTitle:`Camera & Microphone`,mobileOpenCameraDescription:`We need access to your camera and microphone to start recording`,mobileCloseCamera:`Close`,mobileHideRecordingPrompt:`Hide prompt`,mobileShowRecordingPrompt:`Show prompt`,mobilePermissionDenied:`Camera Access Denied`,mobilePermissionDeniedDescription:`Please allow camera access in your browser settings to record video.`,permissionFlowTitle:`Set Up Your Camera`,permissionFlowCameraTitle:`Camera & Microphone`,permissionFlowMicrophoneTitle:`Camera & Microphone`,permissionFlowCameraLabel:`We need access to your camera and microphone to start recording`,permissionFlowMicrophoneLabel:`We need access to your camera and microphone to start recording`,permissionFlowStatusPending:`Pending`,permissionFlowStatusGranted:`Ready`,permissionFlowStatusDenied:`Blocked`,permissionFlowStatusRequesting:`Click "Allow" in the browser popup above`,permissionFlowAllowCamera:`Allow Access`,permissionFlowAllowMicrophone:`Allow Access`,permissionFlowRetry:`Try Again`,permissionFlowRecoveryTitle:`Allow access to continue`,permissionFlowRecoveryInstructions:`Open your browser settings and allow camera and microphone access, then try again.`,permissionFlowConnecting:`Setting up...`,initializingMicrophone:`Initializing microphone...`,grantMicrophonePermission:`Grant microphone permission when prompted`,retryMicrophone:`Retry Microphone`,audioOnlyReady:`Ready to record`,audioOnlyRecording:`Recording`,audioOnlyPaused:`Paused`,audioOnlyUploading:`Uploading {progress}%`,audioOnlyUploaded:`Upload complete`,audioOnlyElapsedTime:`Elapsed time`,audioOnlyNoMicrophones:`No microphones available`,audioRecordingDisabledTitle:`Audio recording unavailable`,audioRecordingDisabled:`Audio recording is not enabled for this environment`,permissionFlowMicrophoneOnlyTitle:`Microphone`,permissionFlowMicrophoneOnlyLabel:`We need access to your microphone to start recording`,permissionFlowMicrophoneOnlyRecoveryInstructions:`Open your browser settings and allow microphone access, then try again.`,mobileOpenMicrophoneTitle:`Microphone`,mobileOpenMicrophoneDescription:`We need access to your microphone to start recording`},es:{initializingCamera:`Inicializando cámara...`,grantPermissions:`Otorga permisos de cámara y micrófono cuando se solicite`,browserUnsupported:`Este navegador no es compatible`,browserUnsupportedDynamic:`{browser} ({version}) no es compatible, por favor usa <a href="https://www.google.com/chrome/" target="_blank" rel="noopener noreferrer">Chrome</a>`,browserUnsupportedSafari:`Safari (última versión estable) es compatible. Si experimentas problemas, por favor usa <a href="https://www.google.com/chrome/" target="_blank" rel="noopener noreferrer">Chrome</a>`,browserUnsupportedFirefox:`Firefox no es compatible, por favor use <a href="https://www.google.com/chrome/" target="_blank" rel="noopener noreferrer">Chrome</a>`,retryCamera:`Reintentar Cámara`,cameraInUse:`Tu cámara está siendo usada por otra aplicación. Cierra otras apps que usen la cámara (Zoom, Teams, Discord) e intenta de nuevo.`,cameraNotFound:`No se detectó ninguna cámara. Conecta una cámara o revisa la configuración de tu dispositivo.`,cameraPermissionDenied:`Se denegó el acceso a la cámara. Permite el acceso a la cámara en la configuración de tu navegador e intenta de nuevo.`,cameraTimeout:`La cámara tardó demasiado en iniciar. Cierra otras apps que usen la cámara e intenta de nuevo.`,failedToStartCamera:`Error al iniciar la cámara`,audioInUse:`Tu micrófono está siendo usado por otra aplicación. Cierra otras apps que usen el micrófono (Zoom, Teams, Discord) e intenta de nuevo.`,audioNotFound:`No se detectó ningún micrófono. Conecta un micrófono o revisa la configuración de tu dispositivo.`,audioPermissionDenied:`Se denegó el acceso al micrófono. Permite el acceso al micrófono en la configuración de tu navegador e intenta de nuevo.`,audioTimeout:`El micrófono tardó demasiado en iniciar. Cierra otras apps que usen el micrófono e intenta de nuevo.`,failedToStartAudio:`Error al iniciar el micrófono`,audioErrorTitle:`Micrófono no disponible`,audioErrorMessage:`No pudimos acceder a tu micrófono. Puede estar en uso por otra app como Zoom, Teams o Discord. Ciérrala e inténtalo de nuevo.`,audioErrorRetry:`Intentar de nuevo`,audioMissingTitle:`La grabación no tiene audio`,audioMissingMessage:`No pudimos capturar audio en esta grabación. Es posible que el micrófono se haya desconectado o que el navegador lo haya bloqueado. Verifica tu micrófono y vuelve a grabar.`,audioSilentTitle:`La grabación quedó en silencio`,audioSilentMessage:`No detectamos sonido durante la grabación. Verifica que tu micrófono esté funcionando y no esté silenciado por el sistema, luego vuelve a grabar.`,audioProcessingErrorTitle:`Error al procesar el audio`,audioProcessingErrorMessage:`No pudimos procesar el audio de esta grabación. Por favor vuelve a grabar.`,audioMissingRetry:`Grabar de nuevo`,audioWarningNoSignalTitle:`Sin señal del micrófono`,audioWarningNoSignalMessage:`No estamos detectando sonido. Verifica que tu micrófono esté activo.`,audioWarningLowSignalTitle:`Audio muy bajo`,audioWarningLowSignalMessage:`Acércate al micrófono o sube el volumen de entrada.`,audioWarningSpeakingMutedTitle:`Estás hablando muteado`,audioWarningSpeakingMutedMessage:`Activa el micrófono si quieres que tu voz se escuche en la grabación.`,audioWarningTrackEndedTitle:`Micrófono desconectado`,audioWarningTrackEndedMessage:`Se desconectó el micrófono. Reconéctalo antes de continuar.`,audioWarningNoChunksTitle:`Sin entrada del micrófono`,audioWarningNoChunksMessage:`No estamos recibiendo audio del micrófono. Revisa los permisos del navegador.`,audioWarningTrackMutedTitle:`Micrófono silenciado por el navegador`,audioWarningTrackMutedMessage:`El navegador silenció tu micrófono. Revisa la configuración del sitio.`,audioWarningDismiss:`Cerrar`,cameraErrorTitle:`Cámara no disponible`,cameraErrorMessage:`No pudimos acceder a tu cámara. Puede estar en uso por otra app. Ciérrala e inténtalo de nuevo.`,browserErrorTitle:`Navegador no compatible`,browserErrorMessage:`Tu navegador no es compatible con la grabación de video. Por favor usa la última versión de Chrome.`,recordingCodecUnsupportedTitle:`Formato de grabación no compatible`,recordingCodecUnsupportedMessage:`Este dispositivo no puede usar el formato de video seleccionado. Cierra otras apps, actualiza Chrome si es posible y vuelve a grabar.`,recordingMediaEmptyTitle:`No se generó ningún video`,recordingMediaEmptyMessage:`El navegador no produjo un video utilizable. Verifica la cámara y vuelve a grabar.`,recordingMediaErrorTitle:`No se pudo finalizar la grabación`,recordingMediaErrorMessage:`El navegador informó un error antes de preparar el video para subirlo. Vuelve a grabar.`,recordingServerTranscodeFallbackTitle:`No se pudo procesar el video`,recordingServerTranscodeFallbackMessage:`No pudimos preparar este video para subirlo en tu dispositivo. Vuelve a grabar.`,recordingTrackEndedTitle:`La cámara se detuvo durante la grabación`,recordingTrackEndedMessage:`La señal de la cámara terminó antes de finalizar la grabación. Verifica que la cámara siga conectada y vuelve a grabar.`,recordingFinalizeTimeoutTitle:`La grabación tardó demasiado en finalizar`,recordingFinalizeTimeoutMessage:`Es posible que este dispositivo tenga poca memoria o potencia de procesamiento. Cierra otras apps o pestañas del navegador y vuelve a grabar.`,recordingStateRaceTitle:`La grabación no inició correctamente`,recordingStateRaceMessage:`No se pudo finalizar la grabación porque no inició correctamente. Actualiza la página y vuelve a grabar.`,recordingNoFramesTitle:`No se capturó video`,recordingNoFramesMessage:`No pudimos recibir fotogramas de video de la cámara. Verifica la conexión de la cámara y vuelve a grabar.`,recordingUnsupportedTitle:`Grabación no disponible`,recordingUnsupportedMessage:`Este dispositivo o navegador no puede grabar video de forma estable ahora. Revisa tu conexión, actualiza Chrome si es posible o usa otro dispositivo.`,recordingPipelineRetry:`Grabar de nuevo`,genericErrorTitle:`Algo salió mal`,genericErrorMessage:`Ocurrió un error inesperado. Por favor inténtalo de nuevo.`,errorRetry:`Intentar de nuevo`,switchingDevice:`Cambiando dispositivo...`,recordingStartsIn:`La grabación comienza en...`,switchingSource:`Cambiando fuente...`,rec:`GRAB`,settings:`Configuración`,record:`Grabar`,stop:`Detener`,pause:`Pausar`,resume:`Reanudar`,mute:`Silenciar`,unmute:`Activar sonido`,switchSource:`Cambiar Fuente`,camera:`Cámara`,microphone:`Micrófono`,microphoneConnecting:`Conectando micrófono...`,minimumRecordingTimeNotReached:`Aun no cumples el tiempo minimo de grabacion`,uploading:`Subiendo...`,finalizing:`Finalizando…`,retryingUpload:`Reintentando subida...`,uploadInsufficientCredits:`No se pudo subir el video. Contacta al administrador del sitio.`,uploadInsufficientCreditsTitle:`No se pudo subir el video`,uploadErrorClose:`Cerrar`,finishing:`Finalizando...`,userInAnotherTab:`Usuario en otra pestaña`,download:`Descargar`,nativeCameraSelectVideo:`Seleccionar Video de la Galería`,nativeCameraRecordVideo:`Grabar con Cámara`,nativeCameraProcessing:`Procesando video...`,nativeCameraConfigLoading:`Cargando configuración...`,nativeCameraConfigLoadError:`No se pudo cargar la configuración`,nativeCameraPreviewAlt:`Vista previa del video`,errorTitle:`Error de Configuración`,errorApiKeyRequired:`Se requiere una API Key o un proveedor de token de acceso.`,errorGeneric:`Ocurrió un error al inicializar la grabadora`,mobileOpenCamera:`Permitir Acceso`,mobileOpenCameraTitle:`Cámara y Micrófono`,mobileOpenCameraDescription:`Necesitamos acceso a tu cámara y micrófono para comenzar a grabar`,mobileCloseCamera:`Cerrar`,mobileHideRecordingPrompt:`Ocultar pregunta`,mobileShowRecordingPrompt:`Mostrar pregunta`,mobilePermissionDenied:`Acceso a Cámara Denegado`,mobilePermissionDeniedDescription:`Por favor permite el acceso a la cámara en la configuración de tu navegador para grabar video.`,permissionFlowTitle:`Configurar tu Cámara`,permissionFlowCameraTitle:`Cámara y Micrófono`,permissionFlowMicrophoneTitle:`Cámara y Micrófono`,permissionFlowCameraLabel:`Necesitamos acceso a tu cámara y micrófono para comenzar a grabar`,permissionFlowMicrophoneLabel:`Necesitamos acceso a tu cámara y micrófono para comenzar a grabar`,permissionFlowStatusPending:`Pendiente`,permissionFlowStatusGranted:`Listo`,permissionFlowStatusDenied:`Bloqueado`,permissionFlowStatusRequesting:`Haz clic en "Permitir" en el aviso del navegador`,permissionFlowAllowCamera:`Permitir Acceso`,permissionFlowAllowMicrophone:`Permitir Acceso`,permissionFlowRetry:`Reintentar`,permissionFlowRecoveryTitle:`Permite el acceso para continuar`,permissionFlowRecoveryInstructions:`Abre la configuración de tu navegador y permite el acceso a la cámara y micrófono, luego intenta de nuevo.`,permissionFlowConnecting:`Preparando...`,initializingMicrophone:`Iniciando micrófono...`,grantMicrophonePermission:`Concede el permiso de micrófono cuando se te solicite`,retryMicrophone:`Reintentar micrófono`,audioOnlyReady:`Listo para grabar`,audioOnlyRecording:`Grabando`,audioOnlyPaused:`En pausa`,audioOnlyUploading:`Subiendo {progress}%`,audioOnlyUploaded:`Subida completada`,audioOnlyElapsedTime:`Tiempo transcurrido`,audioOnlyNoMicrophones:`No hay micrófonos disponibles`,audioRecordingDisabledTitle:`Grabación de audio no disponible`,audioRecordingDisabled:`La grabación de audio no está habilitada para este entorno`,permissionFlowMicrophoneOnlyTitle:`Micrófono`,permissionFlowMicrophoneOnlyLabel:`Necesitamos acceso a tu micrófono para comenzar a grabar`,permissionFlowMicrophoneOnlyRecoveryInstructions:`Abre la configuración de tu navegador y permite el acceso al micrófono, luego intenta de nuevo.`,mobileOpenMicrophoneTitle:`Micrófono`,mobileOpenMicrophoneDescription:`Necesitamos acceso a tu micrófono para comenzar a grabar`}};function Se(e=`en`,t={}){return{...xe[e]||xe.en,...t}}const Ce=/^https?:\/\//i;function we(e){return e!==void 0&&Number.isFinite(e)&&e>0}function Te(e){return e?Ce.test(e)?e:`https://${e}`:be}function Ee(e){if(e.audioOnly===!0||e.enableTabVisibilityOverlay!==!0)return;let t=e.tabVisibilityOverlayText;return t!==void 0&&t.trim().length>0?t:Se(e.lang||`en`,e.texts).userInAnotherTab}function De(e,t){let n=we(e),r=we(t);if(n&&r&&e!==void 0&&t!==void 0&&e>t)throw Error(`minTimeRecord cannot be greater than maxRecordingTime`)}function Oe(e,t){De(e.minTimeRecord,e.maxRecordingTime);let n={backendUrl:Te(e.backendUrl)};e.getAccessToken?n.getAccessToken=e.getAccessToken:n.apiKey=t,e.demo!==void 0&&(n.demo=e.demo),e.countdownDuration!==void 0&&(n.countdownDuration=e.countdownDuration),e.maxRecordingTime!==void 0&&(n.maxRecordingTime=e.maxRecordingTime),e.userMetadata&&(n.userMetadata=e.userMetadata),e.integrity!==void 0&&(n.integrity=ke(e.integrity,e.lang)),e.enableSourceSwitching!==void 0&&(n.enableSourceSwitching=e.enableSourceSwitching),e.enableMute!==void 0&&(n.enableMute=e.enableMute),e.enablePause!==void 0&&(n.enablePause=e.enablePause),e.enableDeviceChange!==void 0&&(n.enableDeviceChange=e.enableDeviceChange),e.enableTabVisibilityOverlay!==void 0&&(n.enableTabVisibilityOverlay=e.enableTabVisibilityOverlay),e.audioOnly===!0&&(n.enableTabVisibilityOverlay=!1);let r=Ee(e);return r!==void 0&&(n.tabVisibilityOverlayText=r),n}function ke(e,t){let n=e.challenges;return n===void 0||n.lang!==void 0?e:{...e,challenges:{...n,lang:t===`es`?`es`:`en`}}}const Ae=1e3,je=/^\d+$/;function Me(e){return je.test(e)}function Ne(e){let t=e.trim();if(t.length===0)return 0;let n=t.split(`:`);if(n.length!==2&&n.length!==3)return 0;for(let e of n)if(!Me(e))return 0;if(n.length===2){let e=Number.parseInt(n[0],10),t=Number.parseInt(n[1],10);return(e*60+t)*Ae}let r=Number.parseInt(n[0],10),i=Number.parseInt(n[1],10),a=Number.parseInt(n[2],10);return((r*60+i)*60+a)*Ae}function Pe(e,t,n){return!n||e==null||Number.isFinite(e)===!1||e<=0?!1:Ne(t)<e}function Fe(){let e=Error(`Minimum recording time has not been reached yet`);return e.code=`recording.minimum-time-not-reached`,e}function Ie(){let e=x(),t=null;e.name.length>0&&(t=e.name);let n=null;return e.version.length>0&&(n=e.version),{browserName:t,browserVersion:n}}function Le(e){return typeof e==`string`&&(e===`browser.unsupported`||e.startsWith(`camera.`)||e.startsWith(`audio.`)||e.startsWith(`recording.`))?e:null}function Re(e){return e.isFinalizingRecording||e.transcodingProgress!==null?!0:e.uploadProgress!==null}function ze(){return{recordingState:`idle`,stream:null,isMuted:!1,isPaused:!1,isFinalizingRecording:!1,isAudioReady:!1,hasAudioFailed:!1,error:null,errorCode:null,browserName:null,browserVersion:null,countdown:null,timer:``,uploadProgress:null,uploadPhase:null,uploadRetryAttempt:null,uploadErrorCode:null,transcodingProgress:null,transitionMessage:null,isInitialized:!1,recordedBlob:null,audioWarning:null,audioRecovered:!1,integrityChallenge:null,devices:{cameras:[],microphones:[],selectedCamera:null,selectedMic:null}}}function Be(e){let t=oe(ze()),n=q(0),i=ce(null),a={current:null},o={current:!1},s={current:!1},c=typeof e==`function`?e:()=>e,l={current:!1},u={current:`idle`},f={current:!1},p={current:``},m={current:null},h={current:!1},g={current:!1},_={current:!1};function y(){let e=c().getAccessToken;return e?e():Promise.reject(Error(`Access token provider is not set`))}Q(()=>t.recordingState,e=>{u.current=e}),Q(()=>t.isPaused,e=>{f.current=e}),Q(()=>t.timer,e=>{p.current=e});function x(){g.current=!1,t.isFinalizingRecording=!1}function C(){!h.current||_.current||(_.current=!0,c().onRecordingStop?.())}function T(){g.current||(g.current=!0,t.isFinalizingRecording=!0,C())}function E(e,t){c().onUploadProgress?.(e,t)}function D(e){x();let n=b(e),r=!1;if(e&&typeof e==`object`&&`name`in e&&e.name===`NotAllowedError`&&(r=!0,n=ye(c().audioOnly)),t.error=n,t.transcodingProgress=null,e&&typeof e==`object`&&`code`in e){let n=e,r=Le(n.code);if(r===`browser.unsupported`){t.errorCode=`browser.unsupported`;let e=null;n.browserName&&(e=n.browserName);let r=null;if(n.browserVersion&&(r=n.browserVersion),e===null||r===null){let t=Ie();e===null&&(e=t.browserName),r===null&&t.browserVersion&&(r=t.browserVersion)}t.browserName=e,t.browserVersion=r;return}r!==null&&(t.errorCode=r,t.browserName=null,t.browserVersion=null)}let i=c().onError;if(i){let t;t=r?Error(n):e instanceof Error?e:Error(n),i(t)}}function O(){return a.current?a.current.getAudioStreamForAnalysis():null}function te(e){return!(!e||e.getAudioTracks().length===0)}async function k(e){a.current&&(a.current.stopAudioLevelTracking(),await a.current.startAudioLevelTracking(e,{onLevelUpdate:(e,r)=>{n.value=e,t.isMuted=r}}))}async function A(e=5,t=50){for(let n=0;n<e;n+=1){let r=O();if(r)return r;n<e-1&&await new Promise(e=>{setTimeout(e,t)})}return O()}async function j(e,t=!1){if(!a.current)return;let n=a.current.isRecording(),r=null;n&&t?(r=O(),r||=await A()):e&&(r=e),te(r)&&r&&await k(r)}async function M(){if(!(a.current&&t.stream))return;let e=await a.current.getDeviceManager().getAvailableDevices(),n=a.current.getDeviceManager();t.devices={cameras:e.videoinput,microphones:e.audioinput,selectedCamera:n.getSelectedCameraDeviceId(),selectedMic:n.getSelectedMicDeviceId()}}Q(()=>t.stream,()=>{M(),a.current&&t.stream&&a.current.getStream()===le(t.stream)&&(t.isMuted=a.current.getIsMuted(),t.isPaused=a.current.isPaused())});function N(e){return a.current?a.current.getRecordingMediaType(e):`video`}function P(e){let n=N(e);if(l.current)return Promise.resolve({recordingId:``,uploadUrl:``,blob:e,mediaType:n});if(l.current=!0,c().demo)return l.current=!1,t.transcodingProgress=null,t.uploadProgress=null,t.uploadRetryAttempt=null,t.recordedBlob=e,Promise.resolve({recordingId:``,uploadUrl:``,blob:e,mediaType:n});if(!a.current)return l.current=!1,Promise.reject(Error(`Controller not initialized`));t.transcodingProgress=null,t.uploadProgress=0,t.uploadPhase=null,t.uploadRetryAttempt=null,t.uploadErrorCode=null,E(0,null);let r=c().backendUrl||be;return a.current.uploadVideo(e,c().apiKey??null,r,c().userMetadata??{},c().getAccessToken).then(()=>({recordingId:``,uploadUrl:``,blob:e,mediaType:n})).catch(e=>{throw t.uploadProgress=null,t.uploadRetryAttempt=null,t.uploadErrorCode=w(e),e}).finally(()=>{l.current=!1})}function F(e){return{onStateChange:e=>{t.recordingState=e,e===`recording`&&(h.current=!0,_.current=!1,c().onRecordingStart?.(),setTimeout(()=>{j(null,!0).catch(()=>{})},100)),e===`idle`&&(C(),h.current=!1)},onCountdownUpdate:(e,n)=>{t.recordingState=e,t.countdown=n},onTimerUpdate:e=>{t.timer=e},onError:D,onFinalizationStart:T,onRecordingComplete:e=>{t.countdown=null;let n=P(e);x(),n.catch(e=>{D(e)})},onClearUploadStatus:()=>{t.uploadProgress=l.current?0:null},onTranscodingProgress:e=>{t.transcodingProgress=e,c().onTranscodingProgress?.(e)},onAudioWarning:e=>{t.audioWarning=e,t.audioRecovered=!1},onAudioRecovered:()=>{t.audioWarning=null,t.audioRecovered=!0},onStopAudioTracking:()=>{a.current&&a.current.stopAudioLevelTracking()},onGetConfig:()=>{if(!a.current)throw Error(`Controller not initialized`);return e?Promise.resolve(S(`mp4`)):a.current.getConfig()}}}function I(){return{onProgress:e=>{t.uploadProgress=e,E(e,t.uploadPhase)},onProgressDetails:e=>{t.uploadPhase=e.phase},onSuccess:e=>{t.uploadProgress=null,t.uploadPhase=null,t.uploadRetryAttempt=null,t.uploadErrorCode=null,t.transcodingProgress=null,c().onUploadComplete?.(e)},onError:e=>{if(ee(e)){c().onUploadError?.(e);return}t.uploadProgress=null,t.uploadPhase=null,t.uploadRetryAttempt=null,t.uploadErrorCode=w(e),t.transcodingProgress=null,c().onUploadError?.(e)},onRetry:e=>{t.uploadProgress=t.uploadProgress??0,t.uploadRetryAttempt=e.attempt},onClearStatus:()=>{t.uploadRetryAttempt=null}}}function L(){return{onStreamStart:async e=>{t.stream=e,t.error=null,t.errorCode=null,t.browserName=null,t.browserVersion=null;let n=a.current;n&&(m.current&&=(m.current(),null),t.isAudioReady=n.isAudioReady(),t.hasAudioFailed=!1,m.current=n.getStreamManager().on(`audiostatuschange`,({status:e})=>{t.isAudioReady=e===`acquired`,t.hasAudioFailed=e===`failed`})),n?.isRecording()||await j(e,!1).catch(()=>{})},onStreamStop:()=>{a.current&&a.current.stopAudioLevelTracking(),m.current&&=(m.current(),null),t.stream=null,n.value=0,t.isAudioReady=!1,t.hasAudioFailed=!1},onError:e=>{D(e)}}}function R(){return{onSourceChange:async e=>{if(a.current?.isRecording()){if(e===`camera`){let e=a.current?.getStream();if(!e||e.getAudioTracks().length===0)return;await j(e,!1).catch(()=>{});return}await j(null,!0).catch(()=>{})}},onPreviewUpdate:async e=>{let n=a.current?.isRecording();t.stream=e,n||await j(e,!1).catch(()=>{})},onError:D,onTransitionStart:e=>{t.transitionMessage=e},onTransitionEnd:()=>{t.transitionMessage=null}}}function z(){m.current&&=(m.current(),null),a.current&&(a.current.cleanup(),a.current=null,i.value=null),o.current=!1,s.current=!1}function B(e){let n=e.backendUrl||be,r=e.apiKey??``;s.current=!0,a.current&&(a.current.cleanup(),a.current=null,i.value=null),o.current=!1;let l={countdownDuration:e.countdownDuration,minTimeRecord:e.minTimeRecord,maxRecordingTime:e.maxRecordingTime,userMetadata:e.userMetadata,enableSourceSwitching:e.enableSourceSwitching,enableMute:e.enableMute,enablePause:e.enablePause,enableDeviceChange:e.enableDeviceChange,enableTabVisibilityOverlay:e.enableTabVisibilityOverlay,tabVisibilityOverlayText:e.tabVisibilityOverlayText,audioOnly:e.audioOnly,lang:e.lang,texts:e.texts,integrity:e.integrity},u;u=e.demo?{...l,demo:!0,backendUrl:void 0}:e.getAccessToken?{...l,demo:!1,getAccessToken:y,backendUrl:n}:{...l,demo:!1,apiKey:r,backendUrl:n};let f;try{f=Oe(u,e.demo?``:r)}catch(e){return D(e),s.current=!1,t.isInitialized=!1,()=>{}}let p=new d({recording:F(e.demo??!1),upload:I(),stream:L(),sourceSwitch:R(),integrity:{onSignal:e=>{c().onIntegritySignal?.(e)},onBlocked:e=>{c().onIntegrityBlocked?.(e)},onChallenge:e=>{t.integrityChallenge=e,c().onIntegrityChallenge?.(e)},onChallengeEnd:e=>{t.integrityChallenge?.id===e&&(t.integrityChallenge=null),c().onIntegrityChallengeEnd?.(e)}}});return a.current=p,i.value=p,p.initialize(f).then(()=>{o.current=!0,s.current=!1,t.isInitialized=!0}).catch(e=>{D(e),o.current=!1,s.current=!1,t.isInitialized=!1}),z}if(typeof window<`u`){let e=B(c());Q(()=>c().getAccessToken!==void 0,()=>{e(),t.isInitialized=!1,e=B(c())}),G(()=>e())}async function ne(e=ve(c().audioOnly)){if(!(a.current&&o.current))throw Error(`Controller not initialized`);let n=a.current;await n.startStream(e===`audio`?`audio`:`camera`).catch(e=>{throw e instanceof Error&&`code`in e&&e.code===r&&(t.error=b(e),t.errorCode=r),e});let i=n.getStream();i&&(t.stream=i,t.error=null,t.errorCode=null,t.browserName=null,t.browserVersion=null,n.isRecording()||await j(i,!1).catch(()=>{}),e===`screen`&&await n.switchSource(`screen`))}function V(){if(!a.current)throw Error(`Controller not initialized`);return a.current}async function H(e){V().isActive()||await ne(e)}async function U(e){let t=V();e!==t.getCurrentSourceType()&&await t.switchSource(e)}function W(e){return e===``||e===`default`?null:e}return{state:t,actions:{startRecording:async(e=ve(c().audioOnly))=>{let n=V();if(Re({isFinalizingRecording:g.current,transcodingProgress:t.transcodingProgress,uploadProgress:t.uploadProgress}))throw Error(`Cannot start a new recording while the previous recording is still being processed`);c().demo&&(t.recordedBlob=null),t.audioWarning=null,t.audioRecovered=!1,t.integrityChallenge=null,t.uploadErrorCode=null,await H(e),await U(e),await n.startRecording()},stopRecording:async()=>{if(!a.current)throw Error(`Controller not initialized`);let e=u.current===`recording`||f.current;if(Pe(c().minTimeRecord,p.current,e))throw Fe();if(g.current)throw Error(`Recording is already being finalized`);T();try{let e=await a.current.stopRecording();return{recordingId:``,uploadUrl:``,blob:e,mediaType:N(e)}}finally{x()}},pauseRecording:()=>{a.current&&(a.current.pauseRecording(),t.isPaused=a.current.isPaused())},resumeRecording:()=>{a.current&&(a.current.resumeRecording(),t.isPaused=a.current.isPaused())},toggleMute:()=>{a.current&&(a.current.toggleMute(),t.isMuted=a.current.getIsMuted())},switchSource:async e=>{if(!a.current)throw Error(`Controller not initialized`);await a.current.switchSource(e)},changeCamera:async e=>{if(!a.current)throw Error(`Controller not initialized`);let n=W(e);a.current.setCameraDevice(n);let r=await a.current.switchVideoDevice(n);t.stream=r,t.error=null,t.errorCode=null,t.browserName=null,t.browserVersion=null,a.current.isRecording()||await j(r,!1);let i=a.current.getDeviceManager();t.devices={...t.devices,selectedCamera:i.getSelectedCameraDeviceId()}},changeMic:async e=>{if(!a.current)throw Error(`Controller not initialized`);let n=W(e);a.current.setMicDevice(n);let r=await a.current.switchAudioDevice(n);t.stream=r,t.error=null,t.errorCode=null,t.browserName=null,t.browserVersion=null,a.current.isRecording()||await j(r,!1);let i=a.current.getDeviceManager();t.devices={...t.devices,selectedMic:i.getSelectedMicDeviceId()}},startPreview:ne,clearUploadError:()=>{t.uploadErrorCode=null},mark:e=>{let t=a.current;if(!t)throw v();t.mark(e)},downloadVideo:()=>{let e=t.recordedBlob;if(!e)return;let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=`recording-${Date.now()}.mp4`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)},stopPreview:()=>{if(!a.current)return;a.current.stopAudioLevelTracking();let e=a.current.getStream();if(e)for(let t of e.getTracks())t.stop();a.current.getStreamManager().stopStream(),t.stream=null,n.value=0,t.error=null,t.errorCode=null,t.browserName=null,t.browserVersion=null,t.isAudioReady=!1,t.hasAudioFailed=!1},cleanup:()=>{z(),h.current=!1,g.current=!1,_.current=!1,t.isInitialized=!1,t.isFinalizingRecording=!1,t.recordedBlob=null}},audioLevel:n,controller:i}}function Ve(e){let t=typeof e==`function`?e:()=>e,n=q(!1),r={current:!1},i={current:!1},a=Be(e),{state:o,actions:s}=a,c=M(()=>{let e=o.recordingState===`recording`,t=o.recordingState===`countdown`,n=o.isFinalizingRecording,r=o.uploadProgress!==null,i=o.transcodingProgress!==null;return!(e||t||n||r||i)});function l(){n.value=!0}function u(){c.value&&(s.stopPreview(),n.value=!1,r.current=!1)}return Q([n,()=>o.isInitialized],([e,n])=>{if(e){if(!n){r.current=!1;return}r.current||(r.current=!0,s.startPreview(ve(t().audioOnly)).catch(()=>{}))}}),Q(n,(e,t,n)=>{e&&(typeof document>`u`||(document.body.style.overflow=`hidden`,n(()=>{document.body.style.overflow=``})))}),Q([n,()=>o.uploadProgress,()=>o.error,()=>o.uploadErrorCode],([e,t,a,o])=>{if(!e)return;let c=i.current,l=t!==null;i.current=l,c&&!l&&!a&&o===null&&(s.stopPreview(),n.value=!1,r.current=!1)}),G(()=>{typeof document<`u`&&(document.body.style.overflow=``)}),{...a,isModalOpen:n,canCloseModal:c,openModal:l,closeModal:u}}const He=Symbol(`vidtreoAudioLevel`);function Ue(e,t,n,r){return{showSettingsButton:!e&&r.enableDeviceChange!==!1,showMuteButton:e&&r.enableMute!==!1,showPauseButton:e&&r.enablePause!==!1&&t===`recording`&&!n,showResumeButton:e&&r.enablePause!==!1&&n,showStopButton:e,showSwitchSourceButton:e&&r.enableSourceSwitching!==!1&&r.isMobile!==!0&&r.audioOnly!==!0}}const We=Object.freeze({visible:!1,variant:`generic`,title:``,message:``,canRetry:!1}),Ge=new Set([`recording.audio-no-chunks`,`recording.audio-track-ended`,`recording.no-audio-track`,`recording.no-audio-frames`]),Ke=new Set([`recording.audio-silent`]),qe=new Set([`recording.audio-zero-channels`,`recording.audio-invalid-sample-rate`]);function Je(e,t){switch(e){case`audio.in-use`:return{title:t.audioErrorTitle,message:t.audioInUse,retryLabel:t.audioErrorRetry};case`audio.not-found`:case`audio.overconstrained`:return{title:t.audioErrorTitle,message:t.audioNotFound,retryLabel:t.audioErrorRetry};case`audio.permission-denied`:return{title:t.audioErrorTitle,message:t.audioPermissionDenied,retryLabel:t.audioErrorRetry};case`audio.timeout`:return{title:t.audioErrorTitle,message:t.audioTimeout,retryLabel:t.audioErrorRetry};default:break}return e&&Ge.has(e)?{title:t.audioMissingTitle,message:t.audioMissingMessage,retryLabel:t.audioMissingRetry}:e&&Ke.has(e)?{title:t.audioSilentTitle,message:t.audioSilentMessage,retryLabel:t.audioMissingRetry}:e&&qe.has(e)?{title:t.audioProcessingErrorTitle,message:t.audioProcessingErrorMessage,retryLabel:t.audioMissingRetry}:{title:t.audioErrorTitle,message:t.audioErrorMessage,retryLabel:t.audioErrorRetry}}function Ye(e,t){switch(e){case`camera.in-use`:return{title:t.cameraErrorTitle,message:t.cameraInUse,retryLabel:t.errorRetry};case`camera.not-found`:case`camera.overconstrained`:return{title:t.cameraErrorTitle,message:t.cameraNotFound,retryLabel:t.errorRetry};case`camera.permission-denied`:return{title:t.cameraErrorTitle,message:t.cameraPermissionDenied,retryLabel:t.errorRetry};case`camera.timeout`:return{title:t.cameraErrorTitle,message:t.cameraTimeout,retryLabel:t.errorRetry};default:return{title:t.cameraErrorTitle,message:t.cameraErrorMessage,retryLabel:t.errorRetry}}}function Xe(e,t){switch(e){case`recording.codec-unsupported`:return{title:t.recordingCodecUnsupportedTitle,message:t.recordingCodecUnsupportedMessage,retryLabel:t.recordingPipelineRetry};case`recording.mediarecorder-empty`:return{title:t.recordingMediaEmptyTitle,message:t.recordingMediaEmptyMessage,retryLabel:t.recordingPipelineRetry};case`recording.mediarecorder-error`:return{title:t.recordingMediaErrorTitle,message:t.recordingMediaErrorMessage,retryLabel:t.recordingPipelineRetry};case`recording.post-recording-transcode-fallback`:return{title:t.recordingServerTranscodeFallbackTitle,message:t.recordingServerTranscodeFallbackMessage,retryLabel:t.recordingPipelineRetry};case`recording.track-ended`:return{title:t.recordingTrackEndedTitle,message:t.recordingTrackEndedMessage,retryLabel:t.recordingPipelineRetry};case`recording.finalize-timeout-low-resource`:return{title:t.recordingFinalizeTimeoutTitle,message:t.recordingFinalizeTimeoutMessage,retryLabel:t.recordingPipelineRetry};case`recording.not-started-state-race`:return{title:t.recordingStateRaceTitle,message:t.recordingStateRaceMessage,retryLabel:t.recordingPipelineRetry};case`recording.no-video-frames`:return{title:t.recordingNoFramesTitle,message:t.recordingNoFramesMessage,retryLabel:t.recordingPipelineRetry};case`recording.unsupported-device`:return{title:t.recordingUnsupportedTitle,message:t.recordingUnsupportedMessage,retryLabel:t.recordingPipelineRetry};default:return{title:t.genericErrorTitle,message:t.genericErrorMessage,retryLabel:t.errorRetry}}}function Ze(e,t,n,i){if(i===r)return{visible:!0,variant:`audio`,title:t.audioRecordingDisabledTitle,message:t.audioRecordingDisabled,canRetry:!1};if(!e.visible)return We;switch(e.variant){case`audio`:{let n=Je(i??null,t);return{visible:!0,variant:`audio`,title:n.title,message:n.message,retryLabel:e.canRetry?n.retryLabel:void 0,canRetry:e.canRetry}}case`browser`:return{visible:!0,variant:`browser`,title:t.browserErrorTitle,message:t.browserErrorMessage,canRetry:!1};case`camera`:{let n=Ye(i??null,t);return{visible:!0,variant:`camera`,title:n.title,message:n.message,retryLabel:e.canRetry?n.retryLabel:void 0,canRetry:e.canRetry}}case`generic`:if(e.actionableCode){let n=Xe(e.actionableCode,t);return{visible:!0,variant:`generic`,title:n.title,message:n.message,retryLabel:e.canRetry?n.retryLabel:void 0,canRetry:e.canRetry}}return{visible:!0,variant:`generic`,title:t.genericErrorTitle,message:n||t.genericErrorMessage,retryLabel:t.errorRetry,canRetry:!0};default:return We}}function Qe(e){return e.trim().replace(/\s+/g,` `)}function $e(e){return e&&Qe(e.text)||null}function et(e){return $e(e.prompt)?e.recordingState===`countdown`?e.prompt?.countdown?.show!==!1:e.isRecording:!1}function tt(e){return e.isRecording?$e(e.prompt)!==null:!1}function nt(e,t){return t===`countdown`&&e?.countdown?.placement===`above-countdown`?`vidtreo-mobile-recording-prompt vidtreo-mobile-recording-prompt--above-countdown`:`vidtreo-mobile-recording-prompt`}function rt(e,t){return e===`finalizing`?t.finalizing:t.uploading}function it(e,t,n){return t!==null&&t>1?n.retryingUpload:rt(e,n)}function at(e,t){return e.transcodingProgress===null?e.uploadProgress===null?e.isFinalizingRecording?{label:t.finishing,progress:0}:null:{label:it(e.uploadPhase,e.uploadRetryAttempt,t),progress:e.uploadProgress}:{label:t.finishing,progress:e.transcodingProgress}}function ot(e,t){let n=null;e.isFinalizingRecording&&e.transcodingProgress===null&&e.uploadProgress===null&&(n={label:t.finishing,progress:0});let r=null;e.transcodingProgress!==null&&(r={label:t.finishing,progress:e.transcodingProgress});let i=null;return e.uploadProgress!==null&&(i={label:it(e.uploadPhase,e.uploadRetryAttempt,t),progress:e.uploadProgress}),{finalizing:n,transcoding:r,upload:i}}function st(e){return e.isFinalizingRecording||e.uploadProgress!==null||e.transcodingProgress!==null}function ct(e,t){return e===p?t.uploadInsufficientCredits:null}function lt(e){return e===p}function ut(e){return e.isRecording||e.isProcessingRecording?null:e.errorCode}const dt={class:`vidtreo-mobile-recording-prompt-text`},ft={class:`vidtreo-visually-hidden`},pt={"aria-hidden":`true`,class:`vidtreo-mobile-recording-prompt-visible-text`},mt=B({__name:`MobileRecordingPrompt`,props:{className:{},isVisible:{type:Boolean},text:{}},setup(e){let t=e,n=M(()=>Qe(t.text)),r=M(()=>n.value?n.value.split(` `):[]),i=q(n.value?1:0);Q(n,e=>{i.value=e?1:0}),Q([()=>t.isVisible,n,i],([e,,t],n,a)=>{if(!e||t>=r.value.length)return;let o=setTimeout(()=>{i.value=Math.min(i.value+1,r.value.length)},273);a(()=>clearTimeout(o))},{immediate:!0});let a=M(()=>r.value.slice(0,i.value).join(` `));return(t,r)=>e.isVisible&&n.value?(K(),F(`div`,{key:0,class:U(e.className)},[I(`div`,dt,[I(`span`,ft,Y(n.value),1),I(`span`,pt,Y(a.value),1)])],2)):P(`v-if`,!0)}});function $(e,t){return B({name:e,props:{weight:{type:String,default:`regular`},size:{type:[String,Number],default:`1em`},color:{type:String,default:`currentColor`}},setup(e){return()=>ne(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 256 256`,width:e.size,height:e.size,fill:e.color},[ne(`path`,{d:t[e.weight]})])}})}const ht=$(`PhArrowClockwise`,{bold:`M244,56v48a12,12,0,0,1-12,12H184a12,12,0,1,1,0-24H201.1l-19-17.38c-.13-.12-.26-.24-.38-.37A76,76,0,1,0,127,204h1a75.53,75.53,0,0,0,52.15-20.72,12,12,0,0,1,16.49,17.45A99.45,99.45,0,0,1,128,228h-1.37A100,100,0,1,1,198.51,57.06L220,76.72V56a12,12,0,0,1,24,0Z`}),gt=$(`PhArrowDown`,{bold:`M208.49,152.49l-72,72a12,12,0,0,1-17,0l-72-72a12,12,0,0,1,17-17L116,187V40a12,12,0,0,1,24,0V187l51.51-51.52a12,12,0,0,1,17,17Z`}),_t=$(`PhArrowUp`,{bold:`M208.49,120.49a12,12,0,0,1-17,0L140,69V216a12,12,0,0,1-24,0V69L64.49,120.49a12,12,0,0,1-17-17l72-72a12,12,0,0,1,17,0l72,72A12,12,0,0,1,208.49,120.49Z`}),vt=$(`PhCamera`,{fill:`M208,56H180.28L166.65,35.56A8,8,0,0,0,160,32H96a8,8,0,0,0-6.65,3.56L75.71,56H48A24,24,0,0,0,24,80V192a24,24,0,0,0,24,24H208a24,24,0,0,0,24-24V80A24,24,0,0,0,208,56Zm-44,76a36,36,0,1,1-36-36A36,36,0,0,1,164,132Z`}),yt=$(`PhCameraSlash`,{fill:`M232,80V192a24.52,24.52,0,0,1-.45,4.65,4,4,0,0,1-6.9,2L86,46.08a4,4,0,0,1-.37-4.91l3.74-5.61A8,8,0,0,1,96,32h64a8,8,0,0,1,6.66,3.56L180.28,56H208A24,24,0,0,1,232,80ZM213.92,210.62a8,8,0,1,1-11.84,10.76L197.19,216H48a24,24,0,0,1-24-24V80A24,24,0,0,1,48,56h3.73L42.08,45.38A8,8,0,1,1,53.92,34.62ZM148,161.92l-47.88-52.68A36,36,0,0,0,148,161.92Z`}),bt=$(`PhCaretLeft`,{regular:`M165.66,202.34a8,8,0,0,1-11.32,11.32l-80-80a8,8,0,0,1,0-11.32l80-80a8,8,0,0,1,11.32,11.32L91.31,128Z`}),xt=$(`PhCheck`,{regular:`M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z`}),St=$(`PhCircle`,{fill:`M232,128A104,104,0,1,1,128,24,104.13,104.13,0,0,1,232,128Z`}),Ct=$(`PhCloudArrowDown`,{fill:`M247.93,124.52C246.11,77.54,207.07,40,160.06,40A88.1,88.1,0,0,0,81.29,88.67h0A87.48,87.48,0,0,0,72,127.73,8.18,8.18,0,0,1,64.57,136,8,8,0,0,1,56,128a103.66,103.66,0,0,1,5.34-32.92,4,4,0,0,0-4.75-5.18A64.09,64.09,0,0,0,8,152c0,35.19,29.75,64,65,64H160A88.09,88.09,0,0,0,247.93,124.52Zm-50.27,25.14-32,32a8,8,0,0,1-11.32,0l-32-32a8,8,0,0,1,11.32-11.32L152,156.69V96a8,8,0,0,1,16,0v60.69l18.34-18.35a8,8,0,0,1,11.32,11.32Z`}),wt=$(`PhGear`,{fill:`M216,130.16q.06-2.16,0-4.32l14.92-18.64a8,8,0,0,0,1.48-7.06,107.6,107.6,0,0,0-10.88-26.25,8,8,0,0,0-6-3.93l-23.72-2.64q-1.48-1.56-3-3L186,40.54a8,8,0,0,0-3.94-6,107.29,107.29,0,0,0-26.25-10.86,8,8,0,0,0-7.06,1.48L130.16,40Q128,40,125.84,40L107.2,25.11a8,8,0,0,0-7.06-1.48A107.6,107.6,0,0,0,73.89,34.51a8,8,0,0,0-3.93,6L67.32,64.27q-1.56,1.49-3,3L40.54,70a8,8,0,0,0-6,3.94,107.71,107.71,0,0,0-10.87,26.25,8,8,0,0,0,1.49,7.06L40,125.84Q40,128,40,130.16L25.11,148.8a8,8,0,0,0-1.48,7.06,107.6,107.6,0,0,0,10.88,26.25,8,8,0,0,0,6,3.93l23.72,2.64q1.49,1.56,3,3L70,215.46a8,8,0,0,0,3.94,6,107.71,107.71,0,0,0,26.25,10.87,8,8,0,0,0,7.06-1.49L125.84,216q2.16.06,4.32,0l18.64,14.92a8,8,0,0,0,7.06,1.48,107.21,107.21,0,0,0,26.25-10.88,8,8,0,0,0,3.93-6l2.64-23.72q1.56-1.48,3-3L215.46,186a8,8,0,0,0,6-3.94,107.71,107.71,0,0,0,10.87-26.25,8,8,0,0,0-1.49-7.06ZM128,168a40,40,0,1,1,40-40A40,40,0,0,1,128,168Z`}),Tt=$(`PhMicrophone`,{fill:`M80,128V64a48,48,0,0,1,96,0v64a48,48,0,0,1-96,0Zm128,0a8,8,0,0,0-16,0,64,64,0,0,1-128,0,8,8,0,0,0-16,0,80.11,80.11,0,0,0,72,79.6V240a8,8,0,0,0,16,0V207.6A80.11,80.11,0,0,0,208,128Z`,regular:`M128,176a48.05,48.05,0,0,0,48-48V64a48,48,0,0,0-96,0v64A48.05,48.05,0,0,0,128,176ZM96,64a32,32,0,0,1,64,0v64a32,32,0,0,1-64,0Zm40,143.6V240a8,8,0,0,1-16,0V207.6A80.11,80.11,0,0,1,48,128a8,8,0,0,1,16,0,64,64,0,0,0,128,0,8,8,0,0,1,16,0A80.11,80.11,0,0,1,136,207.6Z`}),Et=$(`PhMicrophoneSlash`,{fill:`M213.38,229.92a8,8,0,0,1-11.3-.54l-30.92-34A78.83,78.83,0,0,1,136,207.59V240a8,8,0,0,1-16,0V207.6A80.11,80.11,0,0,1,48,128a8,8,0,0,1,16,0,64.07,64.07,0,0,0,64,64,63.41,63.41,0,0,0,32.21-8.68l-11.1-12.2A48,48,0,0,1,80,128V95.09L42.08,53.38A8,8,0,0,1,53.92,42.62l160,176A8,8,0,0,1,213.38,229.92Zm-24.19-63.13a7.88,7.88,0,0,0,3.51.82,8,8,0,0,0,7.19-4.49A79.16,79.16,0,0,0,208,128a8,8,0,0,0-16,0,63.32,63.32,0,0,1-6.48,28.09A8,8,0,0,0,189.19,166.79Zm-27.33-29.22A8,8,0,0,0,175.74,133a49.49,49.49,0,0,0,.26-5V64A48,48,0,0,0,84,44.87a8,8,0,0,0,1.41,8.57Z`}),Dt=$(`PhMonitor`,{fill:`M232,64V176a24,24,0,0,1-24,24H48a24,24,0,0,1-24-24V64A24,24,0,0,1,48,40H208A24,24,0,0,1,232,64ZM160,216H96a8,8,0,0,0,0,16h64a8,8,0,0,0,0-16Z`}),Ot=$(`PhPause`,{fill:`M216,48V208a16,16,0,0,1-16,16H160a16,16,0,0,1-16-16V48a16,16,0,0,1,16-16h40A16,16,0,0,1,216,48ZM96,32H56A16,16,0,0,0,40,48V208a16,16,0,0,0,16,16H96a16,16,0,0,0,16-16V48A16,16,0,0,0,96,32Z`}),kt=$(`PhPlay`,{fill:`M240,128a15.74,15.74,0,0,1-7.6,13.51L88.32,229.65a16,16,0,0,1-16.2.3A15.86,15.86,0,0,1,64,216.13V39.87a15.86,15.86,0,0,1,8.12-13.82,16,16,0,0,1,16.2.3L232.4,114.49A15.74,15.74,0,0,1,240,128Z`}),At=$(`PhSquare`,{fill:`M224,48V208a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V48A16,16,0,0,1,48,32H208A16,16,0,0,1,224,48Z`}),jt=$(`PhVideoCamera`,{fill:`M192,72V184a16,16,0,0,1-16,16H32a16,16,0,0,1-16-16V72A16,16,0,0,1,32,56H176A16,16,0,0,1,192,72Zm58,.25a8.23,8.23,0,0,0-6.63,1.22L209.78,95.86A4,4,0,0,0,208,99.19v57.62a4,4,0,0,0,1.78,3.33l33.78,22.52a8,8,0,0,0,8.58.19,8.33,8.33,0,0,0,3.86-7.17V80A8,8,0,0,0,250,72.25Z`,regular:`M251.77,73a8,8,0,0,0-8.21.39L208,97.05V72a16,16,0,0,0-16-16H32A16,16,0,0,0,16,72V184a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V159l35.56,23.71A8,8,0,0,0,248,184a8,8,0,0,0,8-8V80A8,8,0,0,0,251.77,73ZM192,184H32V72H192V184Zm48-22.95-32-21.33V116.28L240,95Z`}),Mt=$(`PhWarningCircle`,{fill:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-8,56a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm8,104a12,12,0,1,1,12-12A12,12,0,0,1,128,184Z`}),Nt=$(`PhX`,{bold:`M208.49,191.51a12,12,0,0,1-17,17L128,145,64.49,208.49a12,12,0,0,1-17-17L111,128,47.51,64.49a12,12,0,0,1,17-17L128,111l63.51-63.52a12,12,0,0,1,17,17L145,128Z`}),Pt=[`aria-label`],Ft=B({__name:`MobileRecordingPromptToggle`,props:{hideLabel:{},isPromptVisible:{type:Boolean},showLabel:{}},emits:[`toggle`],setup(e,{emit:t}){let n=t;return(t,r)=>(K(),F(`button`,{"aria-label":e.isPromptVisible?e.hideLabel:e.showLabel,class:`vidtreo-mobile-prompt-toggle-btn`,type:`button`,onClick:r[0]||=e=>n(`toggle`)},[e.isPromptVisible?(K(),N(Z(_t),{key:0,class:`vidtreo-mobile-prompt-toggle-icon--collapse`,size:16,weight:`bold`})):(K(),N(Z(gt),{key:1,class:`vidtreo-mobile-prompt-toggle-icon--expand`,size:16,weight:`bold`}))],8,Pt))}}),It=[`aria-label`,`data-state`,`data-muted`],Lt={class:`vidtreo-audio-bar-main`},Rt=[`aria-label`,`disabled`,`title`],zt={key:0,class:`vidtreo-audio-spinner`},Bt={key:2,"aria-hidden":`true`,class:`vidtreo-audio-icon vidtreo-audio-icon--stop`},Vt={class:`vidtreo-audio-bar-center`},Ht={class:`vidtreo-audio-bar-side`},Ut=[`aria-label`],Wt=[`aria-label`,`aria-expanded`],Gt=[`aria-valuenow`],Kt={class:`vidtreo-audio-bar-caption`},qt={key:0,id:`audioBarStatus`,class:`vidtreo-audio-bar-status`,role:`status`},Jt=[`data-tone`,`role`],Yt={class:`vidtreo-audio-bar-message-text`},Xt=[`disabled`],Zt={key:0,class:`vidtreo-audio-spinner`},Qt=[`hidden`],$t={class:`vidtreo-audio-bar-menu-title`},en={key:0,class:`vidtreo-audio-bar-menu-empty`},tn=[`aria-checked`,`onClick`],nn={class:`vidtreo-audio-bar-menu-check`},rn={key:0,class:`vidtreo-audio-icon vidtreo-audio-icon--check`,"aria-hidden":`true`},an={class:`vidtreo-audio-bar-menu-label`},on={class:`vidtreo-audio-bar-menu-label`},sn={class:`vidtreo-audio-bar-menu-label`},cn=B({__name:`AudioBar`,props:{state:{},translations:{},isStopLocked:{type:Boolean},isRetrying:{type:Boolean},permissionStep:{},canRetryPermission:{type:Boolean},enablePause:{type:Boolean},enableMute:{type:Boolean},enableDeviceChange:{type:Boolean}},emits:[`record`,`stop`,`pause`,`resume`,`toggleMute`,`micChange`,`retry`,`closeUploadError`,`requestPermission`,`retryPermission`],setup(e,{emit:t}){let n=e,r=t,i=V(He,q(0)),a=q(null),o=q(null),s=q(null),c=q(null),l=q(!1),u=q(!1),d=Array(18).fill(0),f=M(()=>n.state.recordingState===`recording`||n.state.isPaused),p=M(()=>n.state.isFinalizingRecording||n.state.uploadProgress!==null||n.state.transcodingProgress!==null),m=M(()=>n.permissionStep!==null&&n.permissionStep!==`idle`&&n.permissionStep!==`ready`),h=M(()=>Ze(te({errorCode:n.state.errorCode,hasAudioFailed:n.state.hasAudioFailed,error:n.state.error}),n.translations,n.state.error,n.state.errorCode)),g=M(()=>(h.value.visible||n.isRetrying)&&!f.value&&!p.value),_=M(()=>ut({errorCode:n.state.uploadErrorCode,isRecording:f.value,isProcessingRecording:p.value}));function v(){let e=n.translations;return n.permissionStep===`blocked`?{tone:`error`,icon:`alert`,text:e.permissionFlowMicrophoneOnlyRecoveryInstructions,action:n.canRetryPermission?{kind:`permission-retry`,label:e.permissionFlowRetry,icon:`retry`,isBusy:!1}:null}:{tone:`info`,icon:`mic`,text:e.permissionFlowMicrophoneOnlyLabel,action:{kind:`permission-request`,label:n.permissionStep===`checking`?e.permissionFlowStatusRequesting:e.permissionFlowAllowMicrophone,icon:`mic`,isBusy:n.permissionStep===`checking`}}}let y=M(()=>m.value?v():g.value?{tone:`error`,icon:`alert`,text:h.value.message,action:h.value.canRetry||n.isRetrying?{kind:`device-retry`,label:h.value.retryLabel??``,icon:`retry`,isBusy:n.isRetrying}:null}:_.value===null?u.value?{tone:`success`,icon:`check`,text:n.translations.audioOnlyUploaded,action:null}:null:{tone:`error`,icon:`alert`,text:n.translations.uploadInsufficientCredits,action:{kind:`upload-close`,label:n.translations.uploadErrorClose,icon:null,isBusy:!1}}),b=M(()=>n.state.isPaused?`paused`:n.state.recordingState===`recording`?`recording`:n.state.recordingState===`countdown`?`countdown`:p.value?`uploading`:m.value?`permission`:y.value!==null&&y.value.tone===`error`?`error`:y.value!==null&&y.value.tone===`success`?`done`:n.state.stream===null||!n.state.isAudioReady?`connecting`:`ready`),x=M(()=>n.state.uploadProgress===null?n.state.transcodingProgress===null?0:Math.round(n.state.transcodingProgress*100):Math.round(n.state.uploadProgress*100)),S=M(()=>{let e=n.translations;switch(b.value){case`connecting`:return n.state.stream===null?e.initializingMicrophone:e.microphoneConnecting;case`countdown`:return e.recordingStartsIn;case`recording`:return e.audioOnlyRecording;case`paused`:return e.audioOnlyPaused;case`uploading`:return C();case`permission`:return e.permissionFlowMicrophoneOnlyTitle;case`error`:return g.value?h.value.title:e.genericErrorTitle;default:return e.audioOnlyReady}});function C(){let e=n.translations;if(n.state.uploadProgress===null)return e.finishing;let t=n.state.uploadRetryAttempt;return t!==null&&t>1?e.retryingUpload:e.audioOnlyUploading.replace(`{progress}`,String(x.value))}let w=M(()=>{let e=n.translations;switch(b.value){case`connecting`:return e.microphoneConnecting;case`countdown`:return e.recordingStartsIn;case`recording`:case`paused`:return e.stop;case`uploading`:return S.value;default:return e.record}}),T=M(()=>b.value===`recording`||b.value===`paused`?n.isStopLocked:!(b.value===`ready`||b.value===`done`)),E=M(()=>[`recording`,`paused`,`uploading`].includes(b.value)),D=M(()=>b.value===`connecting`||b.value===`uploading`),O=M(()=>!(f.value||D.value)&&b.value!==`countdown`),ee=M(()=>f.value&&n.enablePause!==!1),k=M(()=>f.value&&n.enableMute!==!1),j=M(()=>f.value?ee.value||k.value:n.enableDeviceChange!==!1),N=M(()=>n.state.devices.microphones.filter(e=>e.deviceId!==``));function L(e){return e.label||`Microphone ${e.deviceId.slice(0,8)}`}function z(e){return String(Math.round(e*100)/100)}function B(){if(!o.value)return;let e=o.value.children;for(let t=0;t<e.length;t+=1)e[t].style.setProperty(`--vidtreo-level`,z(d[t]))}function ne(){if(f.value){r(`stop`);return}r(`record`)}function re(){if(n.state.isPaused){r(`resume`);return}r(`pause`)}function ae(e){if(e===`permission-request`){r(`requestPermission`);return}if(e===`permission-retry`){r(`retryPermission`);return}if(e===`device-retry`){r(`retry`);return}r(`closeUploadError`)}function oe(e){r(`micChange`,e),l.value=!1}function se(){re(),l.value=!1}function ce(){r(`toggleMute`),l.value=!1}function le(){return s.value?Array.from(s.value.querySelectorAll(`.vidtreo-audio-bar-menu-item`)).filter(e=>e.offsetParent!==null||e.getClientRects().length>0):[]}async function X(){l.value=!l.value,l.value&&(await H(),le()[0]?.focus())}function Z(e){if(e.key===`Escape`&&l.value){e.stopPropagation(),l.value=!1,c.value?.focus();return}if(!l.value||e.key!==`ArrowDown`&&e.key!==`ArrowUp`)return;e.preventDefault();let t=le();if(t.length===0)return;let n=document.activeElement;t[((n instanceof HTMLElement?t.indexOf(n):-1)+(e.key===`ArrowDown`?1:-1)+t.length)%t.length]?.focus()}function ue(e){l.value&&(e.target instanceof Node&&a.value?.contains(e.target)||(l.value=!1))}return ie(()=>{document.addEventListener(`pointerdown`,ue)}),G(()=>{document.removeEventListener(`pointerdown`,ue)}),Q(f,e=>{e&&(l.value=!1)}),Q(f,e=>{e&&(u.value=!1)}),Q(()=>n.state.uploadProgress,(e,t)=>{t===null||e!==null||n.state.error||n.state.uploadErrorCode!==null||(u.value=!0)}),Q(u,(e,t,n)=>{if(!e)return;let r=setTimeout(()=>{u.value=!1},3e3);n(()=>clearTimeout(r))}),Q([()=>n.state.stream!==null,()=>n.state.isPaused,()=>b.value===`uploading`],([e,t,r],a,o)=>{if(typeof window>`u`)return;let s=t||r;if(!(e||s)){d.fill(0),B();return}if(s||!e)return;let c=setInterval(()=>{let e=n.state.isMuted?0:Math.min(1,Math.sqrt(i.value/100));d.shift(),d.push(e),B()},60);o(()=>clearInterval(c))},{immediate:!0}),(t,n)=>(K(),F(`div`,{id:`audioBar`,ref_key:`rootRef`,ref:a,class:`vidtreo-audio-bar`,role:`group`,"aria-label":e.translations.microphone,"data-state":b.value,"data-muted":e.state.isMuted?`true`:`false`,onKeydown:Z},[I(`div`,Lt,[I(`button`,{id:`audioBarPrimary`,type:`button`,class:U([`vidtreo-audio-bar-primary`,O.value&&`vidtreo-audio-bar-primary--start`]),"aria-label":w.value,disabled:T.value,title:f.value&&e.isStopLocked?e.translations.minimumRecordingTimeNotReached:void 0,onClick:ne},[D.value?(K(),F(`span`,zt)):b.value===`countdown`?(K(),F(A,{key:1},[R(Y(e.state.countdown),1)],64)):f.value?(K(),F(`span`,Bt)):(K(),F(A,{key:3},[n[1]||=I(`span`,{"aria-hidden":`true`,class:`vidtreo-audio-icon vidtreo-audio-icon--record-start`},null,-1),I(`span`,null,Y(e.translations.record),1)],64))],10,Rt),I(`div`,Vt,[I(`div`,{id:`audioBarWave`,ref_key:`waveRef`,ref:o,class:`vidtreo-audio-bar-wave`,"aria-hidden":`true`},[(K(),F(A,null,J(18,e=>I(`span`,{key:e,class:`vidtreo-audio-bar-wave-bar`,style:{"--vidtreo-level":`0`}})),64))],512)]),I(`div`,Ht,[I(`span`,{id:`audioBarTime`,class:`vidtreo-audio-bar-time`,role:`timer`,"aria-live":`polite`,"aria-label":e.translations.audioOnlyElapsedTime},Y(E.value&&e.state.timer||`00:00`),9,Ut),j.value?(K(),F(`button`,{key:0,id:`audioBarMenuToggle`,ref_key:`toggleRef`,ref:c,type:`button`,class:`vidtreo-audio-bar-button`,"aria-label":e.translations.microphone,"aria-haspopup":`menu`,"aria-expanded":l.value?`true`:`false`,"aria-controls":`audioBarMenu`,onClick:X},[I(`span`,{"aria-hidden":`true`,class:U([`vidtreo-audio-icon`,e.state.isMuted?`vidtreo-audio-icon--mic-off`:`vidtreo-audio-icon--mic`])},null,2)],8,Wt)):P(`v-if`,!0)]),p.value?(K(),F(`div`,{key:0,id:`audioBarProgress`,class:`vidtreo-audio-bar-progress`,role:`progressbar`,"aria-valuemin":`0`,"aria-valuemax":`100`,"aria-valuenow":x.value},[I(`span`,{class:`vidtreo-audio-bar-progress-fill`,style:W({width:`${x.value}%`})},null,4)],8,Gt)):P(`v-if`,!0)]),I(`div`,Kt,[y.value?P(`v-if`,!0):(K(),F(`p`,qt,Y(S.value),1)),y.value?(K(),F(`div`,{key:1,id:`audioBarMessage`,class:`vidtreo-audio-bar-message`,"data-tone":y.value.tone,role:y.value.tone===`error`?`alert`:`status`},[I(`span`,{class:U([`vidtreo-audio-icon`,`vidtreo-audio-icon--${y.value.icon}`]),"aria-hidden":`true`},null,2),I(`p`,Yt,Y(y.value.text),1),y.value.action?(K(),F(`button`,{key:0,id:`audioBarAction`,type:`button`,class:`vidtreo-audio-bar-action`,disabled:y.value.action.isBusy,onClick:n[0]||=e=>ae(y.value.action.kind)},[y.value.action.isBusy?(K(),F(`span`,Zt)):y.value.action.icon?(K(),F(`span`,{key:1,class:U([`vidtreo-audio-icon`,`vidtreo-audio-icon--${y.value.action.icon}`]),"aria-hidden":`true`},null,2)):P(`v-if`,!0),R(` `+Y(y.value.action.label),1)],8,Xt)):P(`v-if`,!0)],8,Jt)):P(`v-if`,!0)]),j.value?(K(),F(`div`,{key:0,id:`audioBarMenu`,ref_key:`menuRef`,ref:s,class:`vidtreo-audio-bar-menu`,role:`menu`,hidden:!l.value},[I(`p`,$t,Y(e.translations.microphone),1),f.value?(K(),F(A,{key:1},[ee.value?(K(),F(`button`,{key:0,id:`audioBarPause`,type:`button`,class:`vidtreo-audio-bar-menu-item`,role:`menuitem`,onClick:se},[I(`span`,{"aria-hidden":`true`,class:U([`vidtreo-audio-icon`,e.state.isPaused?`vidtreo-audio-icon--play`:`vidtreo-audio-icon--pause`])},null,2),I(`span`,on,Y(e.state.isPaused?e.translations.resume:e.translations.pause),1)])):P(`v-if`,!0),k.value?(K(),F(`button`,{key:1,id:`audioBarMute`,type:`button`,class:`vidtreo-audio-bar-menu-item`,role:`menuitem`,onClick:ce},[I(`span`,{"aria-hidden":`true`,class:U([`vidtreo-audio-icon`,e.state.isMuted?`vidtreo-audio-icon--mic-off`:`vidtreo-audio-icon--mic`])},null,2),I(`span`,sn,Y(e.state.isMuted?e.translations.unmute:e.translations.mute),1)])):P(`v-if`,!0)],64)):(K(),F(A,{key:0},[N.value.length===0?(K(),F(`p`,en,Y(e.translations.audioOnlyNoMicrophones),1)):P(`v-if`,!0),(K(!0),F(A,null,J(N.value,t=>(K(),F(`button`,{key:t.deviceId,type:`button`,class:`vidtreo-audio-bar-menu-item`,role:`menuitemradio`,"aria-checked":e.state.devices.selectedMic===t.deviceId?`true`:`false`,onClick:e=>oe(t.deviceId)},[I(`span`,nn,[e.state.devices.selectedMic===t.deviceId?(K(),F(`span`,rn)):P(`v-if`,!0)]),I(`span`,an,Y(L(t)),1)],8,tn))),128))],64))],8,Qt)):P(`v-if`,!0)],40,It))}}),ln=.7,un=B({__name:`AudioVisualizer`,props:{isMuted:{type:Boolean}},setup(e){let t=e,n=V(He,q(0)),r=M(()=>{let e=0;for(let t=0;t<15;t+=1){let r=(t+1)/15*100;n.value>=r&&(e+=1)}return e}),i=M(()=>{let e=[];for(let n=0;n<15;n+=1){let i=n<r.value&&!t.isMuted,a=`15%`,o=``,s=`1`;if(i){a=`${30+n/15*70}%`;let e=n/15,t=ln+n/15*(1-ln);o=h(e),s=String(t)}e.push({id:`audio-bar-${n}`,height:a,backgroundColor:o,opacity:s})}return e});return(e,t)=>(K(!0),F(A,null,J(i.value,e=>(K(),F(`div`,{key:e.id,class:`vidtreo-audio-level-bar`,style:W({height:e.height,backgroundColor:e.backgroundColor,opacity:e.opacity})},null,4))),128))}}),dn={class:`vidtreo-audio-warning-toast__icon`},fn={class:`vidtreo-audio-warning-toast__content`},pn={class:`vidtreo-audio-warning-toast__title`},mn={class:`vidtreo-audio-warning-toast__message`},hn=[`aria-label`];function gn(e){switch(e){case`audio.track-ended`:case`audio.track-muted-by-browser`:case`audio.no-chunks`:return`critical`;case`audio.no-signal`:case`audio.low-signal`:case`audio.speaking-while-muted`:return`soft`;default:return`soft`}}function _n(e,t){switch(e){case`audio.no-signal`:return{title:t.audioWarningNoSignalTitle,message:t.audioWarningNoSignalMessage,dismissLabel:t.audioWarningDismiss};case`audio.low-signal`:return{title:t.audioWarningLowSignalTitle,message:t.audioWarningLowSignalMessage,dismissLabel:t.audioWarningDismiss};case`audio.speaking-while-muted`:return{title:t.audioWarningSpeakingMutedTitle,message:t.audioWarningSpeakingMutedMessage,dismissLabel:t.audioWarningDismiss};case`audio.track-ended`:return{title:t.audioWarningTrackEndedTitle,message:t.audioWarningTrackEndedMessage,dismissLabel:t.audioWarningDismiss};case`audio.no-chunks`:return{title:t.audioWarningNoChunksTitle,message:t.audioWarningNoChunksMessage,dismissLabel:t.audioWarningDismiss};case`audio.track-muted-by-browser`:return{title:t.audioWarningTrackMutedTitle,message:t.audioWarningTrackMutedMessage,dismissLabel:t.audioWarningDismiss};default:return{title:``,message:``,dismissLabel:t.audioWarningDismiss}}}const vn=B({__name:`AudioWarningToast`,props:{warning:{},translations:{}},emits:[`dismiss`],setup(e,{emit:t}){let n=e,r=t,i=q(null);Q(()=>n.warning?.code,()=>{i.value=null}),Q(()=>n.warning,(e,t,n)=>{if(!e||e.code!==`audio.low-signal`||typeof window>`u`)return;let a=window.setTimeout(()=>{i.value=`audio.low-signal`,r(`dismiss`)},6e3);n(()=>{window.clearTimeout(a)})});let a=M(()=>n.warning?gn(n.warning.code):`soft`),o=M(()=>n.warning?_n(n.warning.code,n.translations):{title:``,message:``,dismissLabel:n.translations.audioWarningDismiss}),s=M(()=>a.value===`critical`||n.warning?.code===`audio.no-signal`),c=M(()=>!(!n.warning||i.value===n.warning.code));function l(e){e.preventDefault(),e.stopPropagation(),n.warning&&(i.value=n.warning.code,r(`dismiss`))}return(e,t)=>c.value?(K(),F(`output`,{key:0,"aria-live":`polite`,class:U(`vidtreo-audio-warning-toast vidtreo-audio-warning-toast--${a.value}`)},[I(`span`,dn,[a.value===`critical`?(K(),N(Z(Et),{key:0,size:20,weight:`fill`})):(K(),N(Z(Mt),{key:1,size:20,weight:`fill`}))]),I(`span`,fn,[I(`span`,pn,Y(o.value.title),1),I(`span`,mn,Y(o.value.message),1)]),s.value?(K(),F(`button`,{key:0,"aria-label":o.value.dismissLabel,class:`vidtreo-audio-warning-toast__dismiss`,type:`button`,onClick:l},[z(Z(Nt),{size:14,weight:`bold`})],8,hn)):P(`v-if`,!0)],2)):P(`v-if`,!0)}}),yn={key:0,class:`vidtreo-audio-error-overlay`},bn={class:`vidtreo-audio-error-icon`},xn={class:`vidtreo-audio-error-title`},Sn={class:`vidtreo-audio-error-message`},Cn=B({__name:`DeviceErrorOverlay`,props:{visible:{type:Boolean},variant:{},title:{},message:{},retryLabel:{}},emits:[`retry`],setup(e,{emit:t}){let n=t;function r(e){e.preventDefault(),e.stopPropagation(),n(`retry`)}return(t,n)=>e.visible?(K(),F(`div`,yn,[I(`div`,bn,[e.variant===`audio`?(K(),N(Z(Et),{key:0,size:28,weight:`fill`})):e.variant===`camera`?(K(),N(Z(yt),{key:1,size:28,weight:`fill`})):(K(),N(Z(Mt),{key:2,size:28,weight:`fill`}))]),I(`h3`,xn,Y(e.title),1),I(`p`,Sn,Y(e.message),1),e.retryLabel?(K(),F(`button`,{key:0,class:`vidtreo-audio-error-retry`,type:`button`,onClick:r},[z(Z(ht),{size:16,weight:`bold`}),R(` `+Y(e.retryLabel),1)])):P(`v-if`,!0)])):P(`v-if`,!0)}}),wn={class:`vidtreo-preview-container`},Tn={class:`vidtreo-error-overlay`},En={class:`vidtreo-error-content`},Dn={class:`vidtreo-error-icon`},On={class:`vidtreo-error-title`},kn={key:0,class:`vidtreo-error-message`},An={key:1,class:`vidtreo-error-message`},jn={key:2,class:`vidtreo-error-config`},Mn=B({__name:`ConfigurationErrorDisplay`,props:{error:{},lang:{},texts:{}},setup(e){let t=e,n=M(()=>Se(t.lang??`en`,t.texts??{})),r=M(()=>t.error?.message.includes(`apiKey is required`)??!1);return(t,i)=>(K(),F(`div`,wn,[I(`div`,Tn,[I(`div`,En,[I(`div`,Dn,[z(Z(Mt),{size:48,weight:`fill`,color:`currentColor`})]),I(`div`,On,Y(n.value.errorTitle),1),r.value?P(`v-if`,!0):(K(),F(`div`,kn,Y(e.error?.message||n.value.errorGeneric),1)),r.value?(K(),F(`div`,An,Y(n.value.errorApiKeyRequired),1)):P(`v-if`,!0),r.value?(K(),F(`div`,jn,[...i[0]||=[I(`div`,{class:`vidtreo-error-config-title`},`Configuration Options:`,-1),I(`div`,{class:`vidtreo-error-config-item`},[I(`code`,null,`apiKey`),R(` prop: Pass the API key as a prop to the component `)],-1),I(`div`,{class:`vidtreo-error-config-item`},[I(`code`,null,`getAccessToken`),R(` prop: Pass an async function that returns an access token `)],-1),I(`div`,{class:`vidtreo-error-config-item`},[I(`code`,null,`VIDTREO_API_KEY`),R(` environment variable: Set this in your environment `)],-1)]])):P(`v-if`,!0)])])]))}}),Nn={key:1,class:`vidtreo-preview-error`},Pn={class:`vidtreo-error-content`},Fn={class:`vidtreo-error-icon`},In={class:`vidtreo-error-message`},Ln=B({__name:`ErrorBoundary`,props:{variant:{default:`preview`},lang:{},texts:{}},setup(e){let t=q(!1),n=q(null);re(e=>(t.value=!0,n.value=e instanceof Error?e:Error(String(e)),!1));function r(){t.value=!1,n.value=null}return(i,a)=>t.value&&e.variant===`recorder`?(K(),N(Mn,{key:0,error:n.value,lang:e.lang,texts:e.texts},null,8,[`error`,`lang`,`texts`])):t.value?(K(),F(`div`,Nn,[I(`div`,Pn,[I(`div`,Fn,[z(Z(Mt),{size:48,weight:`fill`,color:`currentColor`})]),a[0]||=I(`div`,{class:`vidtreo-error-title`},`Preview Error`,-1),I(`div`,In,Y(n.value?.message||`An error occurred while loading the preview`),1),I(`button`,{class:`vidtreo-error-retry`,type:`button`,onClick:r},` Retry `)])])):se(i.$slots,`default`,{key:2})}}),Rn={class:`vidtreo-recording-controls`},zn={class:`vidtreo-recording-controls-row`},Bn={class:`vidtreo-control-buttons-row`},Vn=[`title`],Hn=[`disabled`,`title`],Un={key:0,class:`vidtreo-mic-connecting-indicator`,style:{"margin-right":`0.375rem`}},Wn=[`title`],Gn=[`title`],Kn=[`title`],qn=[`aria-disabled`,`disabled`,`title`],Jn=[`title`],Yn=[`title`],Xn={settings:`Settings`,record:`Record`,stop:`Stop`,minimumRecordingTimeNotReached:`You have not met the minimum recording time yet`,pause:`Pause`,resume:`Resume`,mute:`Mute`,unmute:`Unmute`,switchSource:`Switch Source`,download:`Download`,microphoneConnecting:`Connecting microphone...`},Zn=B({__name:`RecordingControlsButtons`,props:{buttonVisibility:{},recordingState:{},isMuted:{type:Boolean},isAudioReady:{type:Boolean},isProcessingRecording:{type:Boolean},currentSourceType:{},isStopLocked:{type:Boolean},stopLockedTooltip:{},translations:{default:()=>Xn}},emits:[`toggleSettings`,`startRecording`,`stopRecording`,`toggleMute`,`pause`,`resume`,`switchSource`,`download`],setup(e,{emit:t}){let n=e,r=t,i=M(()=>n.isStopLocked?`vidtreo-record-button vidtreo-stop-button-locked`:`vidtreo-record-button`),a=M(()=>n.isStopLocked?n.stopLockedTooltip:``),o=M(()=>n.recordingState===`idle`&&!n.isProcessingRecording);function s(){n.isStopLocked||r(`stopRecording`)}return(t,n)=>(K(),F(`div`,Rn,[I(`div`,zn,[I(`div`,Bn,[e.buttonVisibility.showSettingsButton?(K(),F(`button`,{key:0,id:`settingsButton`,class:`vidtreo-control-button`,title:e.translations.settings,type:`button`,onClick:n[0]||=e=>r(`toggleSettings`)},[z(Z(wt),{size:20,weight:`fill`})],8,Vn)):P(`v-if`,!0),o.value?(K(),F(`button`,{key:1,id:`startButton`,class:U([`vidtreo-record-button`,!e.isAudioReady&&`vidtreo-record-button-disabled`]),disabled:!e.isAudioReady,title:e.isAudioReady?``:e.translations.microphoneConnecting,type:`button`,onClick:n[1]||=t=>e.isAudioReady&&r(`startRecording`)},[e.isAudioReady?P(`v-if`,!0):(K(),F(`span`,Un,[z(Z(Tt),{size:16,weight:`fill`})])),e.isAudioReady?(K(),N(Z(St),{key:1,size:24,weight:`fill`,fill:`currentColor`,style:{"margin-right":`0.375rem`}})):P(`v-if`,!0),e.isAudioReady?(K(),F(A,{key:2},[R(Y(e.translations.record),1)],64)):(K(),F(A,{key:3},[R(Y(e.translations.microphoneConnecting),1)],64))],10,Hn)):P(`v-if`,!0),e.buttonVisibility.showMuteButton?(K(),F(`button`,{key:2,id:`muteButton`,class:U(`vidtreo-control-button ${e.isMuted?`vidtreo-muted`:``}`),title:e.isMuted?e.translations.unmute:e.translations.mute,type:`button`,onClick:n[2]||=e=>r(`toggleMute`)},[e.isMuted?(K(),N(Z(Et),{key:0,size:24,weight:`fill`})):(K(),N(Z(Tt),{key:1,size:24,weight:`fill`}))],10,Wn)):P(`v-if`,!0),e.buttonVisibility.showPauseButton?(K(),F(`button`,{key:3,id:`pauseButton`,class:`vidtreo-control-button`,title:e.translations.pause,type:`button`,onClick:n[3]||=e=>r(`pause`)},[z(Z(Ot),{size:24,weight:`fill`})],8,Gn)):P(`v-if`,!0),e.buttonVisibility.showResumeButton?(K(),F(`button`,{key:4,id:`resumeButton`,class:`vidtreo-control-button`,title:e.translations.resume,type:`button`,onClick:n[4]||=e=>r(`resume`)},[z(Z(kt),{size:24,weight:`fill`})],8,Kn)):P(`v-if`,!0),e.buttonVisibility.showStopButton?(K(),F(`button`,{key:5,id:`stopButton`,"aria-disabled":e.isStopLocked,class:U(i.value),disabled:e.isStopLocked,title:a.value,type:`button`,onClick:s},[z(Z(At),{size:24,weight:`fill`,fill:`currentColor`,style:{"margin-right":`0.375rem`}}),R(` `+Y(e.translations.stop),1)],10,qn)):P(`v-if`,!0),e.buttonVisibility.showDownloadButton?(K(),F(`button`,{key:6,id:`downloadButton`,class:`vidtreo-control-button`,title:e.translations.download,type:`button`,onClick:n[5]||=e=>r(`download`)},[z(Z(Ct),{size:24,weight:`fill`})],8,Jn)):P(`v-if`,!0),e.buttonVisibility.showSwitchSourceButton?(K(),F(`button`,{key:7,id:`switchSourceButton`,class:`vidtreo-control-button`,title:e.translations.switchSource,type:`button`,onClick:n[6]||=e=>r(`switchSource`)},[e.currentSourceType===`camera`?(K(),N(Z(Dt),{key:0,size:24,weight:`fill`})):(K(),N(Z(vt),{key:1,size:24,weight:`fill`}))],8,Yn)):P(`v-if`,!0)])])]))}}),Qn={id:`settingsPanel`,class:`vidtreo-settings-panel vidtreo-active`},$n={class:`vidtreo-settings-title`},er={class:`vidtreo-device-list`},tr={key:0,class:`vidtreo-device-empty`},nr=[`onClick`],rr={class:`vidtreo-device-option-check-container`},ir={key:1,class:`vidtreo-device-checkmark-placeholder`},ar={class:`vidtreo-device-option-label`},or={class:`vidtreo-settings-title`},sr={class:`vidtreo-device-list`},cr={key:0,class:`vidtreo-device-empty`},lr=[`onClick`],ur={class:`vidtreo-device-option-check-container`},dr={key:1,class:`vidtreo-device-checkmark-placeholder`},fr={class:`vidtreo-device-option-label`},pr={key:2,class:`vidtreo-device-options-container`},mr={class:`vidtreo-device-option-nav-content`},hr={class:`vidtreo-device-option-nav-label`},gr={class:`vidtreo-device-option-nav-value`},_r={class:`vidtreo-device-option-nav-value-text`},vr={class:`vidtreo-device-option-nav-content`},yr={class:`vidtreo-device-option-nav-label`},br={class:`vidtreo-device-option-nav-value`},xr={class:`vidtreo-device-option-nav-value-text`},Sr={settings:`Settings`,camera:`Camera`,microphone:`Microphone`},Cr=B({__name:`SettingsPanel`,props:{devices:{},translations:{default:()=>Sr},audioOnly:{type:Boolean,default:!1}},emits:[`cameraChange`,`micChange`],setup(e,{emit:t}){let n=e,r=t,i=q(`main`),a=q(`none`);function o(e){a.value=`right`,i.value=e}function s(){a.value=`left`,i.value=`main`}Q(a,(e,t,n)=>{if(e===`none`)return;let r=setTimeout(()=>{a.value=`none`},300);n(()=>{clearTimeout(r)})});let c=M(()=>n.devices.cameras.filter(e=>e.deviceId&&e.deviceId.trim()!==``)),l=M(()=>n.devices.microphones.filter(e=>e.deviceId&&e.deviceId.trim()!==``)),u=M(()=>c.value.find(e=>e.deviceId===n.devices.selectedCamera)?.label||c.value[0]?.label||n.translations.camera),d=M(()=>l.value.find(e=>e.deviceId===n.devices.selectedMic)?.label||l.value[0]?.label||n.translations.microphone);function f(e,t){r(t===`camera`?`cameraChange`:`micChange`,e),s()}return(t,n)=>(K(),F(`div`,Qn,[I(`div`,{class:U(`vidtreo-settings-content vidtreo-slide-${a.value}`)},[i.value===`camera`?(K(),F(A,{key:0},[I(`button`,{class:`vidtreo-settings-header`,type:`button`,onClick:s},[z(Z(bt),{class:`vidtreo-settings-back-icon`,size:20,weight:`regular`}),I(`h3`,$n,Y(e.translations.camera),1)]),I(`div`,er,[c.value.length===0?(K(),F(`div`,tr,` No hay cámaras disponibles `)):(K(!0),F(A,{key:1},J(c.value,t=>(K(),F(`button`,{key:t.deviceId,class:`vidtreo-device-option`,type:`button`,onClick:e=>f(t.deviceId,`camera`)},[I(`div`,rr,[t.deviceId===e.devices.selectedCamera?(K(),N(Z(xt),{key:0,class:`vidtreo-device-checkmark`,size:20,weight:`regular`})):(K(),F(`span`,ir))]),I(`span`,ar,Y(t.label||`Camera ${t.deviceId.slice(0,8)}`),1)],8,nr))),128))])],64)):i.value===`microphone`?(K(),F(A,{key:1},[I(`button`,{class:`vidtreo-settings-header`,type:`button`,onClick:s},[z(Z(bt),{class:`vidtreo-settings-back-icon`,size:20,weight:`regular`}),I(`h3`,or,Y(e.translations.microphone),1)]),I(`div`,sr,[l.value.length===0?(K(),F(`div`,cr,` No hay micrófonos disponibles `)):(K(!0),F(A,{key:1},J(l.value,t=>(K(),F(`button`,{key:t.deviceId,class:`vidtreo-device-option`,type:`button`,onClick:e=>f(t.deviceId,`microphone`)},[I(`div`,ur,[t.deviceId===e.devices.selectedMic?(K(),N(Z(xt),{key:0,class:`vidtreo-device-checkmark`,size:20,weight:`regular`})):(K(),F(`span`,dr))]),I(`span`,fr,Y(t.label||`Microphone ${t.deviceId.slice(0,8)}`),1)],8,lr))),128))])],64)):(K(),F(`div`,pr,[e.audioOnly?P(`v-if`,!0):(K(),F(`button`,{key:0,class:`vidtreo-device-option-nav`,type:`button`,onClick:n[0]||=e=>o(`camera`)},[I(`div`,mr,[z(Z(jt),{size:20,weight:`fill`}),I(`span`,hr,Y(e.translations.camera),1)]),I(`div`,gr,[I(`span`,_r,Y(u.value),1),n[2]||=I(`span`,{class:`vidtreo-device-option-nav-chevron`},`›`,-1)])])),I(`button`,{class:`vidtreo-device-option-nav`,type:`button`,onClick:n[1]||=e=>o(`microphone`)},[I(`div`,vr,[z(Z(Tt),{size:20,weight:`fill`}),I(`span`,yr,Y(e.translations.microphone),1)]),I(`div`,br,[I(`span`,xr,Y(d.value),1),n[3]||=I(`span`,{class:`vidtreo-device-option-nav-chevron`},`›`,-1)])])]))],2)]))}}),wr={key:0,class:`vidtreo-audio-error-overlay vidtreo-upload-error-overlay`,role:`alertdialog`},Tr={class:`vidtreo-audio-error-icon`},Er={class:`vidtreo-audio-error-title`},Dr={class:`vidtreo-audio-error-message`},Or=B({__name:`UploadErrorOverlay`,props:{errorCode:{},translations:{}},emits:[`close`],setup(e,{emit:t}){let n=e,r=t,i=M(()=>ct(n.errorCode,n.translations));function a(e){e.preventDefault(),e.stopPropagation(),r(`close`)}return(t,n)=>i.value===null?P(`v-if`,!0):(K(),F(`div`,wr,[I(`div`,Tr,[z(Z(Mt),{size:28,weight:`fill`})]),I(`h3`,Er,Y(e.translations.uploadInsufficientCreditsTitle),1),I(`p`,Dr,Y(i.value),1),I(`button`,{class:`vidtreo-audio-error-retry`,type:`button`,onClick:a},[z(Z(Nt),{size:16,weight:`bold`}),R(` `+Y(e.translations.uploadErrorClose),1)])]))}}),kr={},Ar=`camera`,jr=`screen`,Mr=`recording`,Nr={key:0,class:`vidtreo-progress-overlay`},Pr={id:`uploadProgress`,class:`vidtreo-upload-progress vidtreo-active`},Fr={class:`vidtreo-progress-bar`},Ir={id:`uploadProgressText`,class:`vidtreo-progress-text`},Lr=B({__name:`UploadProgressOverlay`,props:{progress:{},label:{}},setup(e){let t=e,n=M(()=>t.progress===null?null:Math.round(t.progress*100));return(t,r)=>n.value===null?P(`v-if`,!0):(K(),F(`div`,Nr,[I(`div`,Pr,[I(`div`,Fr,[I(`div`,{id:`uploadProgressFill`,class:`vidtreo-progress-fill`,style:W({width:`${n.value}%`})},null,4)]),I(`div`,Ir,Y(e.label)+` `+Y(n.value)+`% `,1)])]))}}),Rr=B({__name:`VideoPreview`,props:{controller:{},stream:{},transitionMessage:{},className:{default:``}},emits:[`loadedChange`],setup(e,{emit:t}){let n=e,r=t,i=q(null),a=null,o=`camera`;function s(e){e.pause(),e.srcObject=null}function c(e,t){let n=e.srcObject;if(n===t)return!0;let r=n?.getVideoTracks()[0];return r!==void 0&&r===t.getVideoTracks()[0]}function l(e,t){let n=e.getVideoTracks();return n.length===0||n[0].readyState!==`live`||!e.active?(s(t),!1):!0}function u(e){let t=e instanceof Error?e.message:String(e);return t.includes(`interrupted`)||t.includes(`abort`)}async function d(e){if(!(e.readyState>=2&&!e.paused)){await new Promise(e=>{setTimeout(()=>e(),200)});try{await e.play()}catch{return}}}async function f(e){try{await e.play()}catch(t){u(t)&&await d(e)}}async function p(e,t,n,r){if(e.srcObject&&e.srcObject!==t&&e.pause(),e.srcObject=null,n===`screen`?e.classList.add(`vidtreo-screen-share`):e.classList.remove(`vidtreo-screen-share`),await new Promise(e=>{setTimeout(()=>e(),100)}),r())return;a=t.id,o=n,e.srcObject=t;let i=t.getVideoTracks();i.length>0&&!i[0].enabled&&(i[0].enabled=!0),await f(e)}function m(e,t){if(!t||!l(t,e))return!1;let n=t.getVideoTracks()[0];return n.enabled||=!0,c(e,t)?!0:(e.pause(),e.srcObject=t,r(`loadedChange`,!1),e.play().catch(()=>{}),!0)}function h(e,t,n,i){let a=!1;i(()=>{a=!0}),r(`loadedChange`,!1),p(e,t,n,()=>a).then(()=>{!a&&e.readyState>=2&&!e.paused&&r(`loadedChange`,!0)})}function g(e,t){let n=0,r=setInterval(()=>{n+=1,(m(e,t)||n>=10)&&clearInterval(r)},100);return()=>{clearInterval(r)}}return Q(()=>[n.controller,n.stream,i.value],([e,t],n,s)=>{let l=i.value;if(!l)return;if(!e){l.pause(),l.srcObject=null,r(`loadedChange`,!1);return}let u=t||e.getStream(),d=e.getCurrentSourceType(),f=d!==o;if((u?.id!==a||f)&&u){if(!f&&c(l,u)){a=u.id;return}h(l,u,d,s);return}m(l,u)||s(g(l,u))},{immediate:!0,flush:`post`}),Q(()=>[n.controller,n.stream,n.transitionMessage],([e,t,n])=>{let r=i.value;if(!(r&&e)||n)return;let a=t||e.getStream();a&&c(r,a)&&r.paused&&r.readyState>=2&&r.play().catch(()=>{})},{flush:`post`}),Q(i,(e,t,n)=>{if(!e)return;function i(){e&&e.readyState>=2&&!e.paused&&r(`loadedChange`,!0)}function a(){e&&e.readyState>=2&&r(`loadedChange`,!0)}function o(){r(`loadedChange`,!1)}e.addEventListener(`loadedmetadata`,i),e.addEventListener(`playing`,a),e.addEventListener(`loadstart`,o),n(()=>{e.removeEventListener(`loadedmetadata`,i),e.removeEventListener(`playing`,a),e.removeEventListener(`loadstart`,o)})},{flush:`post`}),G(()=>{let e=i.value;e&&(e.pause(),e.srcObject=null)}),(t,n)=>(K(),F(`video`,{ref_key:`videoRef`,ref:i,autoplay:``,class:U(e.className),muted:``,playsinline:``},null,2))}}),zr=B({__name:`VideoPreviewSkeleton`,props:{className:{default:``}},setup(e){return(t,n)=>(K(),F(`div`,{class:U(`vidtreo-video-preview-skeleton ${e.className}`)},[...n[0]||=[I(`div`,{class:`vidtreo-skeleton-shimmer`},null,-1)]],2))}}),Br={class:`vidtreo-mobile-web-recorder`},Vr={key:0,class:`vidtreo-mobile-landing-container`},Hr={class:`vidtreo-mobile-landing-content`},Ur={class:`vidtreo-mobile-landing-title`},Wr={class:`vidtreo-mobile-landing-description`},Gr=[`disabled`],Kr=[`aria-label`],qr={class:`vidtreo-mobile-modal-header`},Jr=[`disabled`],Yr={class:`vidtreo-mobile-modal-content`},Xr={class:`vidtreo-mobile-recorder-content`},Zr={key:0,class:`vidtreo-audio-only`},Qr={class:`vidtreo-preview-container vidtreo-mobile-preview`},$r={key:0,id:`startCameraArea`,class:`vidtreo-start-camera-area`},ei={key:1,id:`previewSkeleton`,class:`vidtreo-preview-skeleton`},ti={class:`vidtreo-skeleton-text`},ni={key:4,id:`countdownOverlay`,class:`vidtreo-countdown-overlay vidtreo-active`},ri={class:`vidtreo-countdown-content`},ii={id:`countdownNumber`,class:`vidtreo-countdown-number`},ai={class:`vidtreo-countdown-text`},oi={key:1,id:`recIndicatorTop`,class:`vidtreo-rec-indicator-top`},si={id:`recordingTimerRow`,class:`vidtreo-recording-timer-badge`},ci={id:`recordingTimer`,class:`vidtreo-recording-timer-text`},li={id:`audioLevelBars`,class:`vidtreo-audio-level-bars`},ui={key:2,id:`sourceTransitionOverlay`,class:`vidtreo-source-transition-overlay vidtreo-active`},di={class:`vidtreo-transition-message`},fi=B({__name:`MobileWebRecorderUIContent`,props:{config:{}},setup(e,{expose:t}){let n=e,r=M(()=>n.config.lang??`en`),i=M(()=>n.config.texts??{}),a=M(()=>Se(r.value,i.value)),{state:o,actions:s,audioLevel:c,controller:l,isModalOpen:u,openModal:d,closeModal:f,canCloseModal:p}=Ve(()=>n.config);ae(He,c),t(ge(l));let m=n.config.audioOnly===!0,h=ve(m),g=M(()=>m?a.value.mobileOpenMicrophoneTitle:a.value.mobileOpenCameraTitle),_=M(()=>m?a.value.mobileOpenMicrophoneDescription:a.value.mobileOpenCameraDescription),v=q(!1),y=q(!1),b=q(!1),x=M(()=>o.errorCode===`browser.unsupported`),S=M(()=>!(o.isInitialized||x.value)),C=M(()=>o.recordingState===`recording`||o.isPaused),w=M(()=>$e(n.config.recordingPrompt)),T=M(()=>nt(n.config.recordingPrompt,o.recordingState)),E=M(()=>et({prompt:n.config.recordingPrompt,recordingState:o.recordingState,isRecording:C.value})),D=M(()=>tt({isRecording:C.value,prompt:n.config.recordingPrompt})),O=q(!0);Q(w,()=>{O.value=!0});function ee(){O.value=!O.value}let k=M(()=>st(o)),L=M(()=>Pe(n.config.minTimeRecord,o.timer,C.value)),B=M(()=>l.value?.getCurrentSourceType()||`camera`),ne=M(()=>!!n.config.demo&&!C.value&&!k.value&&o.recordingState===`idle`&&o.recordedBlob!==null),V=M(()=>({...Ue(C.value,o.recordingState,o.isPaused,{...n.config,isMobile:!0}),showDownloadButton:ne.value})),H=M(()=>Ze(te({errorCode:o.errorCode,hasAudioFailed:o.hasAudioFailed,error:o.error}),a.value,o.error,o.errorCode)),U=M(()=>at(o,a.value));Q(()=>o.recordingState,e=>{e===`recording`&&v.value&&(v.value=!1)});function W(){s.startRecording(h).catch(()=>{})}function re(){L.value||s.stopRecording().catch(()=>{})}function ie(){n.config.enableDeviceChange!==!1&&(v.value=!v.value)}function oe(e){s.changeCamera(e).catch(()=>{})}function J(e){s.changeMic(e).catch(()=>{})}function se(){let e=l.value?.getCurrentSourceType()||`camera`;s.switchSource(e===`camera`?`screen`:`camera`).catch(()=>{})}async function ce(){b.value=!0,s.stopPreview(),await s.startPreview(h).catch(()=>{}).finally(()=>{b.value=!1})}function le(){s.clearUploadError(),f()}function X(e){e.key===`Escape`&&p.value&&f()}return Q(u,e=>{typeof document>`u`||(e?document.addEventListener(`keydown`,X):document.removeEventListener(`keydown`,X))}),G(()=>{typeof document<`u`&&document.removeEventListener(`keydown`,X)}),(t,n)=>(K(),F(`div`,Br,[Z(u)?P(`v-if`,!0):(K(),F(`div`,Vr,[I(`div`,Hr,[I(`h2`,Ur,Y(g.value),1),I(`p`,Wr,Y(_.value),1),I(`button`,{class:`vidtreo-btn vidtreo-btn-primary vidtreo-mobile-open-camera-btn`,disabled:S.value,type:`button`,onClick:n[0]||=(...e)=>Z(d)&&Z(d)(...e)},[m?(K(),N(Z(Tt),{key:0,size:24,weight:`fill`})):(K(),N(Z(vt),{key:1,size:24,weight:`fill`})),R(` `+Y(a.value.mobileOpenCamera),1)],8,Gr)])])),Z(u)?(K(),N(j,{key:1,to:`body`},[I(`div`,{"aria-label":g.value,"aria-modal":`true`,class:`vidtreo-mobile-modal-overlay`,role:`dialog`},[I(`div`,qr,[I(`button`,{class:`vidtreo-mobile-modal-close-btn`,disabled:!Z(p),type:`button`,onClick:n[1]||=(...e)=>Z(f)&&Z(f)(...e)},[z(Z(Nt),{size:16,weight:`bold`}),R(` `+Y(a.value.mobileCloseCamera),1)],8,Jr)]),I(`div`,Yr,[I(`div`,Xr,[m?(K(),F(`div`,Zr,[z(cn,{"can-retry-permission":!1,"enable-device-change":e.config.enableDeviceChange,"enable-mute":e.config.enableMute,"enable-pause":e.config.enablePause,"is-retrying":b.value,"is-stop-locked":L.value,"permission-step":null,state:Z(o),translations:a.value,onCloseUploadError:le,onMicChange:J,onPause:Z(s).pauseRecording,onRecord:W,onResume:Z(s).resumeRecording,onRetry:ce,onStop:re,onToggleMute:Z(s).toggleMute},null,8,[`enable-device-change`,`enable-mute`,`enable-pause`,`is-retrying`,`is-stop-locked`,`state`,`translations`,`onPause`,`onResume`,`onToggleMute`]),C.value?(K(),N(vn,{key:0,translations:a.value,warning:Z(o).audioWarning},null,8,[`translations`,`warning`])):P(`v-if`,!0)])):(K(),N(Ln,{key:1,variant:`preview`},{default:ue(()=>[I(`div`,Qr,[Z(o).stream||H.value.visible?P(`v-if`,!0):(K(),F(`div`,$r,[...n[3]||=[I(`span`,{class:`vidtreo-permission-flow-spinner vidtreo-permission-flow-spinner--large`},null,-1)]])),Z(o).transitionMessage?(K(),F(`div`,ei,[n[4]||=I(`div`,{class:`vidtreo-skeleton-spinner`},null,-1),I(`div`,ti,Y(a.value.switchingDevice),1)])):P(`v-if`,!0),Z(o).stream&&!(y.value||Z(o).transitionMessage)?(K(),N(zr,{key:2})):P(`v-if`,!0),Z(o).stream?(K(),N(Rr,{key:3,"class-name":`vidtreo-video-preview`,controller:Z(l),stream:Z(o).stream,"transition-message":Z(o).transitionMessage,onLoadedChange:n[2]||=e=>y.value=e},null,8,[`controller`,`stream`,`transition-message`])):P(`v-if`,!0),Z(o).recordingState===`countdown`&&Z(o).countdown!==null?(K(),F(`div`,ni,[I(`div`,ri,[I(`div`,ii,Y(Z(o).countdown),1),I(`p`,ai,Y(a.value.recordingStartsIn),1)])])):P(`v-if`,!0),E.value&&w.value?(K(),N(mt,{key:5,"class-name":T.value,"is-visible":O.value,text:w.value},null,8,[`class-name`,`is-visible`,`text`])):P(`v-if`,!0),C.value?(K(),F(A,{key:6},[D.value?(K(),N(Ft,{key:0,"hide-label":a.value.mobileHideRecordingPrompt,"is-prompt-visible":O.value,"show-label":a.value.mobileShowRecordingPrompt,onToggle:ee},null,8,[`hide-label`,`is-prompt-visible`,`show-label`])):(K(),F(`div`,oi,[n[5]||=I(`div`,{class:`vidtreo-recording-dot-small`},null,-1),I(`span`,null,Y(a.value.rec),1)])),I(`div`,si,[n[6]||=I(`div`,{class:`vidtreo-recording-dot-small`},null,-1),I(`span`,ci,Y(Z(o).timer||`00:00`),1)]),I(`div`,li,[z(un,{"is-muted":Z(o).isMuted},null,8,[`is-muted`])])],64)):P(`v-if`,!0),Z(o).stream?(K(),N(Zn,{key:7,"button-visibility":V.value,"current-source-type":B.value,"is-audio-ready":Z(o).isAudioReady,"is-processing-recording":k.value,"is-muted":Z(o).isMuted,"is-stop-locked":L.value,"recording-state":Z(o).recordingState,"stop-locked-tooltip":a.value.minimumRecordingTimeNotReached,translations:{settings:a.value.settings,record:a.value.record,stop:a.value.stop,minimumRecordingTimeNotReached:a.value.minimumRecordingTimeNotReached,pause:a.value.pause,resume:a.value.resume,mute:a.value.mute,unmute:a.value.unmute,switchSource:a.value.switchSource,download:a.value.download,microphoneConnecting:a.value.microphoneConnecting},onToggleSettings:ie,onStartRecording:W,onStopRecording:re,onToggleMute:Z(s).toggleMute,onPause:Z(s).pauseRecording,onResume:Z(s).resumeRecording,onSwitchSource:se,onDownload:Z(s).downloadVideo},null,8,[`button-visibility`,`current-source-type`,`is-audio-ready`,`is-processing-recording`,`is-muted`,`is-stop-locked`,`recording-state`,`stop-locked-tooltip`,`translations`,`onToggleMute`,`onPause`,`onResume`,`onDownload`])):P(`v-if`,!0),z(Cn,{message:H.value.message,"retry-label":H.value.canRetry?H.value.retryLabel:void 0,title:H.value.title,variant:H.value.variant,visible:(H.value.visible||b.value)&&!C.value&&!k.value,onRetry:ce},null,8,[`message`,`retry-label`,`title`,`variant`,`visible`]),C.value?(K(),N(vn,{key:8,translations:a.value,warning:Z(o).audioWarning},null,8,[`translations`,`warning`])):P(`v-if`,!0),z(Or,{"error-code":Z(ut)({errorCode:Z(o).uploadErrorCode,isRecording:C.value,isProcessingRecording:k.value}),translations:a.value,onClose:le},null,8,[`error-code`,`translations`]),z(Lr,{label:U.value?.label??a.value.uploading,progress:U.value?.progress??null},null,8,[`label`,`progress`])])]),_:1})),Z(o).transitionMessage?(K(),F(`div`,ui,[n[7]||=I(`div`,{class:`vidtreo-transition-spinner`},null,-1),I(`div`,di,Y(Z(o).transitionMessage),1)])):P(`v-if`,!0),!m&&Z(o).stream&&v.value?(K(),N(Cr,{key:3,devices:Z(o).devices,translations:{settings:a.value.settings,camera:a.value.camera,microphone:a.value.microphone},onCameraChange:oe,onMicChange:J},null,8,[`devices`,`translations`])):P(`v-if`,!0)])])],8,Kr)])):P(`v-if`,!0)]))}}),pi=B({__name:`MobileWebRecorderUI`,props:{config:{}},setup(e,{expose:t}){let n=e,r=me(()=>n.config,e=>n.config.onError?.(e)),i=q(null);return t(_e(i)),(t,n)=>Z(r)?(K(),N(Mn,{key:0,error:Z(r),lang:e.config.lang,texts:e.config.texts},null,8,[`error`,`lang`,`texts`])):(K(),N(fi,{key:1,ref_key:`recorderContent`,ref:i,config:e.config},null,8,[`config`]))}});function mi(e,t){if(typeof document>`u`)return;let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}function hi(e){let r=oe({file:null,transcodingProgress:null,uploadProgress:null,uploadPhase:null,uploadRetryAttempt:null,isTranscoding:!1,isConfigLoading:!0,error:null,uploadErrorCode:null,transcodedBlob:null}),i={current:null},a={current:e};function o(){r.transcodingProgress=null,r.uploadProgress=null,r.uploadPhase=null,r.uploadRetryAttempt=null,r.isTranscoding=!1}function s(e){r.uploadProgress=e,a.current.onUploadProgress?.(e,r.uploadPhase)}function c(e){r.uploadProgress=r.uploadProgress??0,r.uploadRetryAttempt=e.attempt}function u(e){r.file=null,o(),a.current.onUploadComplete?.(e)}function d(e){let t=b(e),n=e instanceof Error?e:Error(t);if(ee(e)){a.current.onUploadError?.(n);return}r.error=t,r.uploadErrorCode=w(e),o(),r.transcodedBlob=null,a.current.onError?.(n),a.current.onUploadError?.(n)}function f(){i.current?.destroy(),i.current=null}function p(e){let n=e.backendUrl||be,o=!!(e.apiKey||e.getAccessToken),f=null;o&&!e.demo&&(f=t.getInstance({backendUrl:n,...e.getAccessToken?{getAccessToken:e.getAccessToken}:{apiKey:e.apiKey??``}}));let p=new l({apiKey:e.apiKey,getAccessToken:e.getAccessToken,backendUrl:n,maxRecordingTime:e.maxRecordingTime,maxFileSize:e.maxFileSize,userMetadata:e.userMetadata},f,new m);if(i.current=p,!o||e.demo){r.isConfigLoading=!1;return}p.startUploadQueue({onUploadProgress:s,onUploadProgressDetails:e=>{r.uploadPhase=e.phase},onUploadRetry:c,onUploadComplete:u,onUploadError:d}).catch(()=>void 0),r.isConfigLoading=!0,p.preloadConfig().then(()=>{r.isConfigLoading=!1}).catch(()=>{r.isConfigLoading=!1,r.error=Se(a.current.lang,a.current.texts).nativeCameraConfigLoadError})}typeof window<`u`&&p(e),Q(()=>[e.apiKey,e.getAccessToken,e.backendUrl,e.demo,e.maxRecordingTime,e.maxFileSize,e.userMetadata],()=>{f(),p(a.current)},{flush:`post`}),G(f);async function h(e){if(r.error=null,!i.current)throw Error(`Handler not initialized`);try{let t=await i.current.handleFileSelection(e);return r.file=t,t}catch(e){let t=b(e),n=e instanceof Error?e:Error(t);throw r.error=t,a.current.onError?.(n),n}}async function g(e){let t=e||r.file;if(!(t&&i.current))return;let l=e=>{r.transcodingProgress=e,a.current.onTranscodingProgress?.(e)};if(r.isTranscoding=!0,r.transcodingProgress=0,r.uploadRetryAttempt=null,r.error=null,r.uploadErrorCode=null,a.current.demo){try{r.transcodedBlob=(await k(t.file,n,l)).blob,r.isTranscoding=!1,r.transcodingProgress=null}catch(e){let t=b(e);r.error=t,r.uploadErrorCode=w(e),o(),r.transcodedBlob=null,a.current.onError?.(e instanceof Error?e:Error(t))}return}try{let{blob:e,...t}=await i.current.processAndUpload(l,s,e=>{r.uploadPhase=e.phase},c);u(t)}catch(e){d(e)}}function _(){r.transcodedBlob&&mi(r.transcodedBlob,`recording-${Date.now()}.mp4`)}function v(){r.file=null,o(),r.error=null,r.uploadErrorCode=null,r.transcodedBlob=null}return{state:r,actions:{handleFileSelect:h,processAndUpload:g,downloadVideo:_,reset:v}}}const gi={class:`vidtreo-transcoding-progress`},_i={class:`vidtreo-progress-bar`},vi={class:`vidtreo-progress-text`},yi=B({__name:`TranscodingProgress`,props:{label:{},progress:{}},setup(e){let t=e,n=M(()=>Math.round(t.progress*100));return(t,r)=>(K(),F(`div`,gi,[I(`div`,_i,[I(`div`,{class:`vidtreo-progress-fill`,style:W({width:`${n.value}%`})},null,4)]),I(`div`,vi,Y(e.label)+` `+Y(n.value)+`%`,1)]))}}),bi={key:0,class:`vidtreo-upload-progress`},xi={class:`vidtreo-upload-progress-bar`},Si={class:`vidtreo-upload-progress-text`},Ci=B({__name:`UploadProgress`,props:{label:{},progress:{},visible:{type:Boolean}},setup(e){let t=e,n=M(()=>t.progress===null?0:Math.round(t.progress*100)),r=M(()=>t.visible&&t.progress!==null);return(t,i)=>r.value?(K(),F(`div`,bi,[I(`div`,xi,[I(`div`,{class:`vidtreo-upload-progress-fill`,style:W({width:`${n.value}%`})},null,4)]),I(`div`,Si,Y(e.label)+` `+Y(n.value)+`% `,1)])):P(`v-if`,!0)}}),wi={class:`vidtreo-native-camera-container`},Ti={key:0,"aria-live":`polite`,class:`vidtreo-config-loading-indicator`},Ei={class:`vidtreo-visually-hidden`},Di={key:1,class:`vidtreo-native-camera-preview-container`},Oi=[`alt`,`src`],ki={key:0,class:`vidtreo-progress-overlay`},Ai={key:1,class:`vidtreo-progress-overlay`},ji={key:2,class:`vidtreo-native-camera-download-button`},Mi={key:3,class:`vidtreo-native-camera-empty-state`},Ni={class:`vidtreo-native-camera-buttons`},Pi=[`disabled`],Fi=[`disabled`],Ii=B({__name:`NativeCameraUIContent`,props:{config:{}},setup(e){let t=e,{state:n,actions:r}=hi(t.config),i=q(null),a=M(()=>t.config.lang??`en`),o=M(()=>t.config.texts??{}),s=M(()=>Se(a.value,o.value));function c(){let e=i.value;e&&(e.accept=`video/*`,e.removeAttribute(`capture`),e.click())}function l(){let e=i.value;e&&(e.accept=`video/*`,e.setAttribute(`capture`,`environment`),e.click())}async function u(e){let t=e.target,n=t.files?.[0];if(n){let e=await r.handleFileSelect(n);await r.processAndUpload(e)}t.value=``}let d=M(()=>it(n.uploadPhase,n.uploadRetryAttempt,s.value)),f=M(()=>n.file!==null),p=M(()=>!(f.value||n.isTranscoding)&&n.uploadProgress===null&&!n.transcodedBlob),m=M(()=>!!t.config.demo&&n.transcodedBlob!==null&&!n.isTranscoding&&n.uploadProgress===null);return(e,t)=>(K(),F(`div`,wi,[I(`input`,{ref_key:`fileInputRef`,ref:i,style:{display:`none`},type:`file`,onChange:u},null,544),Z(n).isConfigLoading?(K(),F(`output`,Ti,[t[1]||=I(`div`,{"aria-hidden":`true`,class:`vidtreo-spinner-small`},null,-1),I(`span`,Ei,Y(s.value.nativeCameraConfigLoading),1)])):P(`v-if`,!0),f.value&&Z(n).file!==null?(K(),F(`div`,Di,[I(`img`,{alt:s.value.nativeCameraPreviewAlt,class:`vidtreo-native-camera-preview-image`,height:480,src:Z(n).file.previewUrl,width:640},null,8,Oi),Z(n).isTranscoding&&Z(n).transcodingProgress!==null?(K(),F(`div`,ki,[z(yi,{label:s.value.nativeCameraProcessing,progress:Z(n).transcodingProgress},null,8,[`label`,`progress`])])):P(`v-if`,!0),Z(n).uploadProgress===null?P(`v-if`,!0):(K(),F(`div`,Ai,[z(Ci,{label:d.value,progress:Z(n).uploadProgress,visible:!0},null,8,[`label`,`progress`])])),m.value?(K(),F(`div`,ji,[I(`button`,{class:`vidtreo-btn vidtreo-btn-primary`,type:`button`,onClick:t[0]||=(...e)=>Z(r).downloadVideo&&Z(r).downloadVideo(...e)},Y(s.value.download),1)])):P(`v-if`,!0)])):P(`v-if`,!0),!f.value&&Z(n).uploadProgress!==null?(K(),N(Ci,{key:2,label:d.value,progress:Z(n).uploadProgress,visible:!0},null,8,[`label`,`progress`])):P(`v-if`,!0),p.value?(K(),F(`div`,Mi,[I(`div`,Ni,[I(`button`,{class:`vidtreo-btn vidtreo-btn-primary`,disabled:Z(n).isConfigLoading,type:`button`,onClick:c},Y(s.value.nativeCameraSelectVideo),9,Pi),I(`button`,{class:`vidtreo-btn vidtreo-btn-secondary`,disabled:Z(n).isConfigLoading,type:`button`,onClick:l},Y(s.value.nativeCameraRecordVideo),9,Fi)])])):P(`v-if`,!0),z(Or,{"error-code":Z(n).uploadErrorCode,translations:s.value,onClose:Z(r).reset},null,8,[`error-code`,`translations`,`onClose`]),z(Cn,{message:Z(n).error||s.value.genericErrorMessage,"retry-label":s.value.errorRetry,title:s.value.genericErrorTitle,variant:`generic`,visible:Z(n).error!==null&&!Z(lt)(Z(n).uploadErrorCode),onRetry:Z(r).reset},null,8,[`message`,`retry-label`,`title`,`visible`,`onRetry`])]))}}),Li=B({__name:`NativeCameraUI`,props:{config:{}},setup(e,{expose:t}){let n=e,r=me(()=>n.config,e=>n.config.onError?.(e));return t(he()),(t,n)=>Z(r)?(K(),N(Mn,{key:0,error:Z(r),lang:e.config.lang,texts:e.config.texts},null,8,[`error`,`lang`,`texts`])):(K(),N(Ii,{key:1,config:e.config},null,8,[`config`]))}}),Ri=`unknown`;function zi(e){return!(e===`idle`||e===`ready`)}function Bi(e={}){let t=q(null),n=ce(null),r={onComplete:e.onComplete,onChange:e.onChange};function i(){let i=!0,o=new u(y(),{callbacks:{onChange:(e,n)=>{i&&(t.value=e,r.onChange&&r.onChange(e,n))},onComplete:e=>{i&&(t.value=e,r.onComplete&&r.onComplete(e))}},language:X(e.language),mediaType:e.mediaType});n.value=o,o.initialize().then(e=>{i&&(t.value=e)}).catch(()=>{}),a.fn=()=>{i=!1,o.destroy(),n.value===o&&(n.value=null)}}let a={fn:null};function o(){a.fn&&=(a.fn(),null)}typeof window<`u`&&i(),Q(()=>X(e.language),()=>{o(),i()}),G(()=>{o()});let s=async()=>{let e=n.value;e&&(t.value=await e.requestCurrentStep())},c=async()=>{let e=n.value;e&&(t.value=await e.retryCurrentStep())},l=M(()=>t.value?t.value.step:`idle`),d=M(()=>zi(l.value)),f=M(()=>t.value?t.value.isComplete:!1),p=M(()=>t.value?t.value.recoveryData:void 0);return{isActive:d,isComplete:f,currentStep:l,steps:M(()=>{let e=t.value?t.value.permissions.camera:Ri,n=t.value?t.value.permissions.microphone:Ri;return[{deviceType:`camera`,status:e},{deviceType:`microphone`,status:n}]}),recoveryData:p,requestPermission:s,retryPermission:c}}function Vi(e){return{preview:M(()=>{let t=X(e);return{initializingCamera:t.initializingCamera,grantPermissions:t.grantPermissions,browserUnsupported:t.browserUnsupported,browserUnsupportedDynamic:t.browserUnsupportedDynamic,browserUnsupportedSafari:t.browserUnsupportedSafari,browserUnsupportedFirefox:t.browserUnsupportedFirefox,retryCamera:t.retryCamera,cameraInUse:t.cameraInUse,cameraNotFound:t.cameraNotFound,cameraPermissionDenied:t.cameraPermissionDenied,cameraTimeout:t.cameraTimeout,failedToStartCamera:t.failedToStartCamera,audioInUse:t.audioInUse,audioNotFound:t.audioNotFound,audioPermissionDenied:t.audioPermissionDenied,audioTimeout:t.audioTimeout,failedToStartAudio:t.failedToStartAudio,switchingDevice:t.switchingDevice,recordingStartsIn:t.recordingStartsIn,rec:t.rec}}),buttons:M(()=>{let t=X(e);return{settings:t.settings,record:t.record,stop:t.stop,minimumRecordingTimeNotReached:t.minimumRecordingTimeNotReached,pause:t.pause,resume:t.resume,mute:t.mute,unmute:t.unmute,switchSource:t.switchSource,download:t.download,microphoneConnecting:t.microphoneConnecting}}),settings:M(()=>{let t=X(e);return{settings:t.settings,camera:t.camera,microphone:t.microphone}})}}const Hi=[`data-challenge-id`],Ui={class:`vidtreo-integrity-challenge__text`},Wi={key:0,class:`vidtreo-integrity-challenge__alternative`},Gi=B({__name:`IntegrityChallengeBanner`,props:{prompt:{}},setup(e){return(t,n)=>e.prompt?(K(),F(`output`,{key:0,"aria-live":`assertive`,class:`vidtreo-integrity-challenge`,"data-challenge-id":e.prompt.id},[I(`span`,Ui,Y(e.prompt.text),1),e.prompt.alternative?(K(),F(`span`,Wi,Y(e.prompt.alternative.text),1)):P(`v-if`,!0)],8,Hi)):P(`v-if`,!0)}}),Ki={class:`vidtreo-recovery-guide`},qi={class:`vidtreo-recovery-guide-browser`},Ji={class:`vidtreo-recovery-guide-titlebar`},Yi={class:`vidtreo-recovery-guide-addressbar`},Xi={class:`vidtreo-recovery-guide-url`},Zi={class:`vidtreo-recovery-guide-popover`},Qi={class:`vidtreo-recovery-guide-popover-header`},$i={key:0,class:`vidtreo-recovery-guide-perm-row`},ea={class:`vidtreo-recovery-guide-perm-group`},ta={class:`vidtreo-recovery-guide-perm-label`},na={class:`vidtreo-recovery-guide-perm-row`},ra={class:`vidtreo-recovery-guide-perm-group`},ia={class:`vidtreo-recovery-guide-perm-label`},aa=`vidtreo.com`,oa=B({__name:`PermissionRecoveryGuide`,props:{cameraLabel:{},microphoneLabel:{}},setup(e){let t=M(()=>{if(globalThis.window===void 0)return aa;let e=globalThis.window.location.hostname||aa;return e.length>20?`${e.slice(0,20)}...`:e});return(n,r)=>(K(),F(`div`,Ki,[I(`div`,qi,[I(`div`,Ji,[r[1]||=I(`div`,{class:`vidtreo-recovery-guide-dots`},[I(`span`,{class:`vidtreo-recovery-guide-dot vidtreo-recovery-guide-dot--close`}),I(`span`,{class:`vidtreo-recovery-guide-dot vidtreo-recovery-guide-dot--min`}),I(`span`,{class:`vidtreo-recovery-guide-dot vidtreo-recovery-guide-dot--max`})],-1),I(`div`,Yi,[r[0]||=I(`div`,{class:`vidtreo-recovery-guide-lock`},[I(`svg`,{"aria-hidden":`true`,class:`vidtreo-recovery-guide-lock-svg`,fill:`currentColor`,height:`10`,viewBox:`0 0 256 256`,width:`10`},[I(`path`,{d:`M208,80H176V56a48,48,0,0,0-96,0V80H48A16,16,0,0,0,32,96V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V96A16,16,0,0,0,208,80ZM96,56a32,32,0,0,1,64,0V80H96Z`})])],-1),I(`span`,Xi,Y(t.value),1)])]),r[2]||=I(`div`,{class:`vidtreo-recovery-guide-browser-bg`},null,-1)]),r[8]||=I(`div`,{class:`vidtreo-recovery-guide-cursor`},[I(`svg`,{"aria-hidden":`true`,class:`vidtreo-recovery-guide-cursor-svg`,height:`22`,viewBox:`0 0 28 28`,width:`22`},[I(`path`,{d:`M5 2l1.5 20.5 4.5-6 3.5 7 2.5-1.2-3.5-7H20L5 2z`,fill:`#000`,stroke:`#fff`,"stroke-linejoin":`round`,"stroke-width":`1.6`})])],-1),I(`div`,Zi,[I(`div`,Qi,Y(t.value),1),r[7]||=I(`div`,{class:`vidtreo-recovery-guide-popover-divider`},null,-1),e.cameraLabel?(K(),F(`div`,$i,[I(`div`,ea,[r[3]||=L(`<div class="vidtreo-recovery-guide-perm-icon"><span class="vidtreo-recovery-guide-icon-off"><svg aria-hidden="true" fill="none" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16" viewBox="0 0 256 256" width="14"><path d="M200,72H32A8,8,0,0,0,24,80v96a8,8,0,0,0,8,8H200a8,8,0,0,0,8-8V80A8,8,0,0,0,200,72Z"></path><polyline points="208 156 248 180 248 76 208 100"></polyline><line x1="34" x2="222" y1="232" y2="24"></line></svg></span><span class="vidtreo-recovery-guide-icon-on"><svg aria-hidden="true" fill="currentColor" height="14" viewBox="0 0 256 256" width="14"><path d="M251.77,73a8,8,0,0,0-8.21.39L208,97.05V72a16,16,0,0,0-16-16H32A16,16,0,0,0,16,72V184a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V159l35.56,23.71A8,8,0,0,0,256,176V80A8,8,0,0,0,251.77,73Z"></path></svg></span></div>`,1),I(`div`,ta,Y(e.cameraLabel),1)]),r[4]||=I(`div`,{class:`vidtreo-recovery-guide-switch`},[I(`div`,{class:`vidtreo-recovery-guide-switch-track`}),I(`div`,{class:`vidtreo-recovery-guide-switch-knob`})],-1)])):P(`v-if`,!0),I(`div`,na,[I(`div`,ra,[r[5]||=L(`<div class="vidtreo-recovery-guide-perm-icon"><span class="vidtreo-recovery-guide-icon-off vidtreo-recovery-guide-switch--delayed"><svg aria-hidden="true" fill="none" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16" viewBox="0 0 256 256" width="14"><path d="M176,128a48,48,0,0,1-48,48"></path><path d="M96,163.4A48,48,0,0,1,80,128V64a48,48,0,0,1,90.64-21.47"></path><path d="M200,128a79.74,79.74,0,0,1-9.18,37.42"></path><path d="M56,128a79.6,79.6,0,0,0,21.44,54.46"></path><line x1="128" x2="128" y1="208" y2="240"></line><line x1="96" x2="160" y1="240" y2="240"></line><line x1="34" x2="222" y1="232" y2="24"></line></svg></span><span class="vidtreo-recovery-guide-icon-on vidtreo-recovery-guide-switch--delayed"><svg aria-hidden="true" fill="currentColor" height="14" viewBox="0 0 256 256" width="14"><path d="M128,176a48.05,48.05,0,0,0,48-48V64a48,48,0,0,0-96,0v64A48.05,48.05,0,0,0,128,176ZM96,64a32,32,0,0,1,64,0v64a32,32,0,0,1-64,0Zm40,143.6V232a8,8,0,0,1-16,0V207.6A80.11,80.11,0,0,1,48,128a8,8,0,0,1,16,0,64,64,0,0,0,128,0,8,8,0,0,1,16,0A80.11,80.11,0,0,1,136,207.6Z"></path></svg></span></div>`,1),I(`div`,ia,Y(e.microphoneLabel),1)]),r[6]||=I(`div`,{class:`vidtreo-recovery-guide-switch`},[I(`div`,{class:`vidtreo-recovery-guide-switch-track vidtreo-recovery-guide-switch--delayed`}),I(`div`,{class:`vidtreo-recovery-guide-switch-knob vidtreo-recovery-guide-switch--delayed`})],-1)])])]))}}),sa={key:0,class:`vidtreo-permission-flow-spinner vidtreo-permission-flow-spinner--large`},ca={class:`vidtreo-permission-flow-title`},la={key:0,class:`vidtreo-permission-flow-subtitle`},ua=[`disabled`],da={key:0,class:`vidtreo-permission-flow-spinner`},fa={key:2,class:`vidtreo-permission-flow-recovery`},pa={class:`vidtreo-permission-flow-subtitle`},ma=B({__name:`PermissionFlowSteps`,props:{isActive:{type:Boolean},isFadingOut:{type:Boolean},currentStep:{},steps:{},recoveryData:{},canRetry:{type:Boolean},translations:{},audioOnly:{type:Boolean}},emits:[`requestPermission`,`retryPermission`],setup(e,{emit:t}){let n=e,r=t,i=M(()=>n.isFadingOut?`vidtreo-permission-flow vidtreo-active vidtreo-permission-flow--fading`:`vidtreo-permission-flow vidtreo-active`),a=M(()=>n.currentStep===`ready`),o=M(()=>n.currentStep===`blocked`),s=M(()=>n.currentStep===`checking`),c=M(()=>n.audioOnly||n.steps[0].status===`granted`?`microphone`:`camera`),l=M(()=>c.value===`camera`?n.translations.cameraTitle:n.translations.microphoneTitle),u=M(()=>c.value===`camera`?n.translations.cameraLabel:n.translations.microphoneLabel),d=M(()=>c.value===`camera`?n.translations.allowCamera:n.translations.allowMicrophone),f=M(()=>c.value===`camera`?n.steps[0].status:n.steps[1].status),p=M(()=>!o.value&&f.value!==`granted`&&f.value!==`denied`),m=M(()=>s.value?`vidtreo-permission-flow-action vidtreo-permission-flow-action--requesting`:`vidtreo-permission-flow-action`),h=M(()=>s.value?n.translations.statusRequesting:d.value);return(t,n)=>e.isActive?(K(),F(`div`,{key:0,class:U(i.value)},[a.value?(K(),F(`span`,sa)):(K(),F(A,{key:1},[I(`div`,ca,Y(l.value),1),o.value?P(`v-if`,!0):(K(),F(`div`,la,Y(u.value),1)),p.value?(K(),F(`button`,{key:1,class:U(m.value),disabled:s.value,type:`button`,onClick:n[0]||=e=>r(`requestPermission`)},[s.value?(K(),F(`span`,da)):e.audioOnly?(K(),N(Z(Tt),{key:1,size:24,weight:`fill`})):(K(),N(Z(jt),{key:2,size:24,weight:`fill`})),R(` `+Y(h.value),1)],10,ua)):P(`v-if`,!0),o.value&&e.recoveryData?(K(),F(`div`,fa,[I(`div`,pa,Y(e.translations.recoveryTitle),1),z(oa,{"camera-label":e.audioOnly?void 0:e.translations.cameraName,"microphone-label":e.translations.microphoneName},null,8,[`camera-label`,`microphone-label`])])):P(`v-if`,!0)],64))],2)):P(`v-if`,!0)}}),ha={key:0,class:`vidtreo-start-camera-area`},ga={key:1,id:`previewSkeleton`,class:`vidtreo-preview-skeleton`},_a={class:`vidtreo-skeleton-text`},va={key:3,id:`countdownOverlay`,class:`vidtreo-countdown-overlay vidtreo-active`},ya={class:`vidtreo-countdown-content`},ba={id:`countdownNumber`,class:`vidtreo-countdown-number`},xa={class:`vidtreo-countdown-text`},Sa={key:4,id:`recIndicatorTop`,class:`vidtreo-rec-indicator-top`},Ca={key:5,id:`recordingTimerRow`,class:`vidtreo-recording-timer-badge`},wa={id:`recordingTimer`,class:`vidtreo-recording-timer-text`},Ta={key:6,id:`audioLevelBars`,class:`vidtreo-audio-level-bars`},Ea=B({__name:`PreviewContent`,props:{state:{},isVideoLoaded:{type:Boolean},isRecording:{type:Boolean},isProcessingRecording:{type:Boolean},controller:{},buttonVisibility:{},currentSourceType:{},isStopLocked:{type:Boolean},stopLockedTooltip:{},translations:{},buttonTranslations:{}},emits:[`startRecording`,`stopRecording`,`switchSource`,`toggleSettings`,`toggleMute`,`pause`,`resume`,`loadedChange`,`download`],setup(e,{emit:t}){let n=e,r=t,i=M(()=>!n.state.stream),a=M(()=>n.state.transitionMessage!==null),o=M(()=>n.state.recordingState===`countdown`&&n.state.countdown!==null);function s(e){r(`loadedChange`,e)}return(t,n)=>(K(),F(A,null,[i.value?(K(),F(`div`,ha,[...n[8]||=[I(`span`,{class:`vidtreo-permission-flow-spinner vidtreo-permission-flow-spinner--large`},null,-1)]])):P(`v-if`,!0),a.value?(K(),F(`div`,ga,[n[9]||=I(`div`,{class:`vidtreo-skeleton-spinner`},null,-1),I(`div`,_a,Y(e.translations.switchingDevice),1)])):P(`v-if`,!0),!e.isVideoLoaded&&e.state.stream?(K(),N(zr,{key:2,"class-name":`vidtreo-video-skeleton`})):P(`v-if`,!0),z(Rr,{controller:e.controller,stream:e.state.stream,"transition-message":e.state.transitionMessage,"class-name":`vidtreo-video-preview`,onLoadedChange:s},null,8,[`controller`,`stream`,`transition-message`]),o.value?(K(),F(`div`,va,[I(`div`,ya,[I(`div`,ba,Y(e.state.countdown),1),I(`p`,xa,Y(e.translations.recordingStartsIn),1)])])):P(`v-if`,!0),e.isRecording?(K(),F(`div`,Sa,[n[10]||=I(`div`,{class:`vidtreo-recording-dot-small`},null,-1),I(`span`,null,Y(e.translations.rec),1)])):P(`v-if`,!0),e.isRecording?(K(),F(`div`,Ca,[n[11]||=I(`div`,{class:`vidtreo-recording-dot-small`},null,-1),I(`span`,wa,Y(e.state.timer),1)])):P(`v-if`,!0),e.isRecording?(K(),F(`div`,Ta,[z(un,{"is-muted":e.state.isMuted},null,8,[`is-muted`])])):P(`v-if`,!0),e.state.stream?(K(),N(Zn,{key:7,"button-visibility":e.buttonVisibility,"current-source-type":e.currentSourceType,"is-audio-ready":e.state.isAudioReady,"is-muted":e.state.isMuted,"is-processing-recording":e.isProcessingRecording,"is-stop-locked":e.isStopLocked,"recording-state":e.state.recordingState,"stop-locked-tooltip":e.stopLockedTooltip,translations:e.buttonTranslations,onToggleSettings:n[0]||=e=>r(`toggleSettings`),onStartRecording:n[1]||=e=>r(`startRecording`),onStopRecording:n[2]||=e=>r(`stopRecording`),onToggleMute:n[3]||=e=>r(`toggleMute`),onPause:n[4]||=e=>r(`pause`),onResume:n[5]||=e=>r(`resume`),onSwitchSource:n[6]||=e=>r(`switchSource`),onDownload:n[7]||=e=>r(`download`)},null,8,[`button-visibility`,`current-source-type`,`is-audio-ready`,`is-muted`,`is-processing-recording`,`is-stop-locked`,`recording-state`,`stop-locked-tooltip`,`translations`])):P(`v-if`,!0)],64))}}),Da={class:`vidtreo-preview-container`},Oa={key:2,id:`sourceTransitionOverlay`,class:`vidtreo-source-transition-overlay vidtreo-active`},ka={class:`vidtreo-transition-message`},Aa=B({__name:`StandardRecorderContent`,props:{recorderProps:{}},emits:[`recordingStart`,`recordingStop`,`uploadComplete`,`uploadProgress`,`uploadError`,`transcodingProgress`,`error`,`integritySignal`,`integrityBlocked`,`integrityChallenge`,`integrityChallengeEnd`],setup(e,{expose:t,emit:n}){let r=e,i=n;function a(e){if(e===`en`)return`en`;if(e===`es`)return`es`}function o(e){i(`error`,e instanceof Error?e:Error(String(e)))}let s=r.recorderProps.audioOnly===!0,c=ve(s),l=q(!1),u=q(!1),d=q(!1),f=q(`hidden`),p=M(()=>r.recorderProps.lang||`en`),m=M(()=>r.recorderProps.texts||kr),h=M(()=>Se(p.value,m.value)),g=M(()=>{let{apiKey:e,demo:t,getAccessToken:n}=r.recorderProps;return fe(e,t,n)?``:pe(e,t,n)}),_=M(()=>({apiKey:g.value,getAccessToken:r.recorderProps.getAccessToken,backendUrl:r.recorderProps.backendUrl,countdownDuration:r.recorderProps.countdownDuration,minTimeRecord:r.recorderProps.minTimeRecord,maxRecordingTime:r.recorderProps.maxRecordingTime,userMetadata:r.recorderProps.userMetadata,enableSourceSwitching:r.recorderProps.enableSourceSwitching,enableMute:r.recorderProps.enableMute,enablePause:r.recorderProps.enablePause,enableDeviceChange:r.recorderProps.enableDeviceChange,enableTabVisibilityOverlay:r.recorderProps.enableTabVisibilityOverlay,tabVisibilityOverlayText:r.recorderProps.tabVisibilityOverlayText,integrity:r.recorderProps.integrity,demo:r.recorderProps.demo,nativeCamera:r.recorderProps.nativeCamera,audioOnly:s,lang:r.recorderProps.lang,texts:r.recorderProps.texts,onUploadComplete:e=>i(`uploadComplete`,e),onUploadProgress:(e,t)=>i(`uploadProgress`,e,t),onUploadError:e=>i(`uploadError`,e),onRecordingStart:()=>i(`recordingStart`),onRecordingStop:()=>i(`recordingStop`),onTranscodingProgress:e=>i(`transcodingProgress`,e),onError:o,onIntegritySignal:e=>i(`integritySignal`,e),onIntegrityBlocked:e=>i(`integrityBlocked`,e),onIntegrityChallenge:e=>i(`integrityChallenge`,e),onIntegrityChallengeEnd:e=>i(`integrityChallengeEnd`,e)})),{state:v,actions:y,audioLevel:b,controller:x}=Be(()=>_.value);ae(He,b),t(ge(x));let S=Vi(h),C=Bi({language:()=>a(p.value),mediaType:s?`audio`:`video`}),w=M(()=>({title:h.value.permissionFlowTitle,cameraTitle:h.value.permissionFlowCameraTitle,microphoneTitle:s?h.value.permissionFlowMicrophoneOnlyTitle:h.value.permissionFlowMicrophoneTitle,cameraLabel:h.value.permissionFlowCameraLabel,microphoneLabel:s?h.value.permissionFlowMicrophoneOnlyLabel:h.value.permissionFlowMicrophoneLabel,statusPending:h.value.permissionFlowStatusPending,statusGranted:h.value.permissionFlowStatusGranted,statusDenied:h.value.permissionFlowStatusDenied,statusRequesting:h.value.permissionFlowStatusRequesting,allowCamera:h.value.permissionFlowAllowCamera,allowMicrophone:h.value.permissionFlowAllowMicrophone,retry:h.value.permissionFlowRetry,recoveryTitle:h.value.permissionFlowRecoveryTitle,recoveryInstructions:s?h.value.permissionFlowMicrophoneOnlyRecoveryInstructions:h.value.permissionFlowRecoveryInstructions,cameraName:h.value.camera,microphoneName:h.value.microphone,connecting:h.value.permissionFlowConnecting}));Q([()=>C.isActive.value,M(()=>s?v.stream!==null:u.value),()=>v.stream,()=>v.error],([e,t,n,r])=>{if(r){f.value=`hidden`;return}if(e){f.value=`active`,u.value=!1;return}let i=f.value;if(i!==`hidden`&&i!==`fading`){if(t){f.value=`fading`;return}if(n){f.value=`loading`;return}f.value=`loading`}},{immediate:!0}),Q(f,(e,t,n)=>{if(e!==`fading`)return;let r=setTimeout(()=>{f.value=`hidden`},600);n(()=>{clearTimeout(r)})}),Q([()=>C.isActive.value,()=>v.stream],([e,t])=>{e&&t&&y.stopPreview()}),Q([()=>v.stream,()=>v.uploadProgress,()=>v.isInitialized,()=>C.currentStep.value,()=>C.isActive.value],([e,t,n,r,i],a,s)=>{if(e||t!==null||!n||r===`idle`||i)return;let l=setTimeout(()=>{y.startPreview(c).catch(o)},100);s(()=>clearTimeout(l))},{immediate:!0}),Q(()=>v.recordingState,e=>{e===Mr&&l.value&&(l.value=!1)});let T=M(()=>v.recordingState===Mr||v.isPaused),E=M(()=>st(v)),O=M(()=>Pe(r.recorderProps.minTimeRecord,v.timer,T.value)),ee=M(()=>x.value?.getCurrentSourceType()||Ar),k=M(()=>{let e=Ue(T.value,v.recordingState,v.isPaused,{enableDeviceChange:r.recorderProps.enableDeviceChange,enableMute:r.recorderProps.enableMute,enablePause:r.recorderProps.enablePause,enableSourceSwitching:r.recorderProps.enableSourceSwitching,isMobile:D(),audioOnly:s}),t=!1;return r.recorderProps.demo&&!T.value&&!E.value&&v.recordingState===`idle`&&v.recordedBlob!==null&&(t=!0),{...e,showDownloadButton:t}}),A=M(()=>ot(v,h.value)),j=M(()=>f.value!==`hidden`),L=M(()=>f.value===`loading`||f.value===`fading`),R=M(()=>f.value===`fading`),B=M(()=>C.currentStep.value===`checking`&&C.steps.value.find(e=>e.deviceType===`microphone`)?.status===`unknown`),ne=M(()=>L.value?`ready`:C.currentStep.value),V=M(()=>Ze(te({errorCode:v.errorCode,hasAudioFailed:v.hasAudioFailed,error:v.error}),h.value,v.error,v.errorCode)),H=M(()=>(V.value.visible||d.value)&&!T.value&&!E.value);function W(){y.startRecording(c).catch(o)}function G(){O.value||y.stopRecording().catch(o)}function re(){r.recorderProps.enableDeviceChange!==!1&&(l.value=!l.value)}function ie(e){y.changeCamera(e).catch(o)}function oe(e){y.changeMic(e).catch(o)}function J(){let e=x.value?.getCurrentSourceType()||Ar,t=Ar;e===Ar&&(t=jr),e===jr&&(t=Ar),y.switchSource(t).catch(o)}async function se(){d.value=!0,y.stopPreview(),await y.startPreview(c).catch(o).finally(()=>{d.value=!1})}function ce(){C.requestPermission().catch(o)}function le(){C.retryPermission().catch(o)}return(t,n)=>(K(),F(`div`,{id:`cameraArea`,class:U([`vidtreo-camera-area vidtreo-active`,{"vidtreo-audio-only":s}])},[s?(K(),N(Ln,{key:0,variant:`preview`},{default:ue(()=>[z(cn,{"can-retry-permission":Z(C).recoveryData.value?.canRetry??!1,"enable-device-change":e.recorderProps.enableDeviceChange,"enable-mute":e.recorderProps.enableMute,"enable-pause":e.recorderProps.enablePause,"is-retrying":d.value,"is-stop-locked":O.value,"permission-step":B.value?null:Z(C).currentStep.value,state:Z(v),translations:h.value,onCloseUploadError:Z(y).clearUploadError,onMicChange:oe,onPause:Z(y).pauseRecording,onRecord:W,onRequestPermission:ce,onResume:Z(y).resumeRecording,onRetry:se,onRetryPermission:le,onStop:G,onToggleMute:Z(y).toggleMute},null,8,[`can-retry-permission`,`enable-device-change`,`enable-mute`,`enable-pause`,`is-retrying`,`is-stop-locked`,`permission-step`,`state`,`translations`,`onCloseUploadError`,`onPause`,`onResume`,`onToggleMute`]),T.value?(K(),N(vn,{key:0,translations:h.value,warning:Z(v).audioWarning},null,8,[`translations`,`warning`])):P(`v-if`,!0),T.value?(K(),N(Gi,{key:1,prompt:Z(v).integrityChallenge},null,8,[`prompt`])):P(`v-if`,!0)]),_:1})):(K(),N(Ln,{key:1,variant:`preview`},{default:ue(()=>[I(`div`,Da,[z(Ea,{"button-translations":Z(S).buttons.value,"button-visibility":k.value,controller:Z(x),"current-source-type":ee.value,"is-recording":T.value,"is-processing-recording":E.value,"is-stop-locked":O.value,"is-video-loaded":u.value,state:Z(v),"stop-locked-tooltip":Z(S).buttons.value.minimumRecordingTimeNotReached,translations:Z(S).preview.value,onStartRecording:W,onStopRecording:G,onSwitchSource:J,onToggleSettings:re,onToggleMute:Z(y).toggleMute,onPause:Z(y).pauseRecording,onResume:Z(y).resumeRecording,onLoadedChange:n[0]||=e=>u.value=e,onDownload:Z(y).downloadVideo},null,8,[`button-translations`,`button-visibility`,`controller`,`current-source-type`,`is-recording`,`is-processing-recording`,`is-stop-locked`,`is-video-loaded`,`state`,`stop-locked-tooltip`,`translations`,`onToggleMute`,`onPause`,`onResume`,`onDownload`]),z(Cn,{message:V.value.message,"retry-label":V.value.canRetry?V.value.retryLabel:void 0,title:V.value.title,variant:V.value.variant,visible:H.value,onRetry:se},null,8,[`message`,`retry-label`,`title`,`variant`,`visible`]),T.value?(K(),N(vn,{key:0,translations:h.value,warning:Z(v).audioWarning},null,8,[`translations`,`warning`])):P(`v-if`,!0),T.value?(K(),N(Gi,{key:1,prompt:Z(v).integrityChallenge},null,8,[`prompt`])):P(`v-if`,!0),z(Or,{"error-code":Z(ut)({errorCode:Z(v).uploadErrorCode,isRecording:T.value,isProcessingRecording:E.value}),translations:h.value,onClose:Z(y).clearUploadError},null,8,[`error-code`,`translations`,`onClose`]),j.value?(K(),N(ma,{key:2,"can-retry":Z(C).recoveryData.value?.canRetry??!1,"current-step":ne.value,"is-active":!0,"is-fading-out":R.value,"recovery-data":Z(C).recoveryData.value,steps:Z(C).steps.value,translations:w.value,onRequestPermission:ce,onRetryPermission:le},null,8,[`can-retry`,`current-step`,`is-fading-out`,`recovery-data`,`steps`,`translations`])):P(`v-if`,!0),z(Lr,{label:A.value.finalizing?.label??h.value.finishing,progress:A.value.finalizing?.progress??null},null,8,[`label`,`progress`]),z(Lr,{label:A.value.transcoding?.label??h.value.finishing,progress:A.value.transcoding?.progress??null},null,8,[`label`,`progress`]),z(Lr,{label:A.value.upload?.label??h.value.uploading,progress:A.value.upload?.progress??null},null,8,[`label`,`progress`])])]),_:1})),Z(v).transitionMessage?(K(),F(`div`,Oa,[n[1]||=I(`div`,{class:`vidtreo-transition-spinner`},null,-1),I(`div`,ka,Y(Z(v).transitionMessage),1)])):P(`v-if`,!0),!s&&Z(v).stream&&l.value?(K(),N(Cr,{key:3,devices:Z(v).devices,translations:Z(S).settings.value,onCameraChange:ie,onMicChange:oe},null,8,[`devices`,`translations`])):P(`v-if`,!0)],2))}}),ja=B({__name:`StandardRecorder`,props:{recorderProps:{}},emits:[`recordingStart`,`recordingStop`,`uploadComplete`,`uploadProgress`,`uploadError`,`transcodingProgress`,`error`,`integritySignal`,`integrityBlocked`,`integrityChallenge`,`integrityChallengeEnd`],setup(e,{expose:t,emit:n}){let r=e,i=n,a=me(()=>r.recorderProps,e=>i(`error`,e)),o=q(null);return t(_e(o)),(t,n)=>Z(a)?(K(),N(Mn,{key:0,error:Z(a),lang:e.recorderProps.lang,texts:e.recorderProps.texts},null,8,[`error`,`lang`,`texts`])):(K(),N(Aa,{key:1,ref_key:`recorderContent`,ref:o,"recorder-props":e.recorderProps,onRecordingStart:n[0]||=e=>i(`recordingStart`),onRecordingStop:n[1]||=e=>i(`recordingStop`),onUploadComplete:n[2]||=e=>i(`uploadComplete`,e),onUploadProgress:n[3]||=(e,t)=>i(`uploadProgress`,e,t),onUploadError:n[4]||=e=>i(`uploadError`,e),onTranscodingProgress:n[5]||=e=>i(`transcodingProgress`,e),onError:n[6]||=e=>i(`error`,e),onIntegritySignal:n[7]||=e=>i(`integritySignal`,e),onIntegrityBlocked:n[8]||=e=>i(`integrityBlocked`,e),onIntegrityChallenge:n[9]||=e=>i(`integrityChallenge`,e),onIntegrityChallengeEnd:n[10]||=e=>i(`integrityChallengeEnd`,e)},null,8,[`recorder-props`]))}}),Ma=B({__name:`VidtreoRecorder`,props:{recorderProps:{}},emits:[`recordingStart`,`recordingStop`,`uploadComplete`,`uploadProgress`,`uploadError`,`transcodingProgress`,`error`,`integritySignal`,`integrityBlocked`,`integrityChallenge`,`integrityChallengeEnd`],setup(e,{expose:t,emit:n}){let r={requiresAudio:!1,requiresWatermark:!1},i=e,a=n;function o(e,t,n){return(t===!0||e===`native`)&&n===!0?`overlay`:t===!0?`native`:e===void 0?null:e}function s(e){return e!==`native`}function c(e){return e===null?`overlay`:e}let l=me(()=>i.recorderProps,e=>a(`error`,e)),u=M(()=>l.value?``:pe(i.recorderProps.apiKey,i.recorderProps.demo,i.recorderProps.getAccessToken)),d=D(),f=M(()=>o(i.recorderProps.mobileMode,i.recorderProps.nativeCamera,i.recorderProps.audioOnly)),p=M(()=>s(f.value)),m=M(()=>({apiKey:u.value,getAccessToken:i.recorderProps.getAccessToken,backendUrl:i.recorderProps.backendUrl,maxRecordingTime:i.recorderProps.maxRecordingTime,maxFileSize:i.recorderProps.maxFileSize,userMetadata:i.recorderProps.userMetadata,demo:i.recorderProps.demo,lang:i.recorderProps.lang,texts:i.recorderProps.texts,onUploadComplete:e=>a(`uploadComplete`,e),onUploadProgress:(e,t)=>a(`uploadProgress`,e,t),onUploadError:e=>a(`uploadError`,e),onTranscodingProgress:e=>a(`transcodingProgress`,e),onError:e=>a(`error`,e)})),h=M(()=>({apiKey:u.value,getAccessToken:i.recorderProps.getAccessToken,backendUrl:i.recorderProps.backendUrl,countdownDuration:i.recorderProps.countdownDuration,minTimeRecord:i.recorderProps.minTimeRecord,maxRecordingTime:i.recorderProps.maxRecordingTime,maxFileSize:i.recorderProps.maxFileSize,userMetadata:i.recorderProps.userMetadata,recordingPrompt:i.recorderProps.recordingPrompt,enableSourceSwitching:i.recorderProps.enableSourceSwitching,enableMute:i.recorderProps.enableMute,enablePause:i.recorderProps.enablePause,enableDeviceChange:i.recorderProps.enableDeviceChange,enableTabVisibilityOverlay:i.recorderProps.enableTabVisibilityOverlay,tabVisibilityOverlayText:i.recorderProps.tabVisibilityOverlayText,audioOnly:i.recorderProps.audioOnly,integrity:i.recorderProps.integrity,demo:i.recorderProps.demo,lang:i.recorderProps.lang,texts:i.recorderProps.texts,onUploadComplete:e=>a(`uploadComplete`,e),onUploadProgress:(e,t)=>a(`uploadProgress`,e,t),onUploadError:e=>a(`uploadError`,e),onRecordingStart:()=>a(`recordingStart`),onRecordingStop:()=>a(`recordingStop`),onTranscodingProgress:e=>a(`transcodingProgress`,e),onError:e=>a(`error`,e),onIntegritySignal:e=>a(`integritySignal`,e),onIntegrityBlocked:e=>a(`integrityBlocked`,e),onIntegrityChallenge:e=>a(`integrityChallenge`,e),onIntegrityChallengeEnd:e=>a(`integrityChallengeEnd`,e)}));Q([()=>d,p],([e,t])=>{e&&t&&g(r).catch(()=>{})},{immediate:!0});let _=M(()=>c(f.value)),v=M(()=>!d||d&&_.value===`embed`),y=M(()=>d&&_.value===`native`),b=M(()=>d&&!v.value&&!y.value),x=q(null);return t(_e(x)),(t,n)=>Z(l)?(K(),N(Mn,{key:0,error:Z(l),lang:e.recorderProps.lang,texts:e.recorderProps.texts},null,8,[`error`,`lang`,`texts`])):(K(),N(Ln,{key:1,variant:`recorder`,lang:e.recorderProps.lang,texts:e.recorderProps.texts},{default:ue(()=>[v.value?(K(),N(ja,{key:0,ref_key:`activeRecorder`,ref:x,"recorder-props":e.recorderProps,onRecordingStart:n[0]||=e=>a(`recordingStart`),onRecordingStop:n[1]||=e=>a(`recordingStop`),onUploadComplete:n[2]||=e=>a(`uploadComplete`,e),onUploadProgress:n[3]||=(e,t)=>a(`uploadProgress`,e,t),onUploadError:n[4]||=e=>a(`uploadError`,e),onTranscodingProgress:n[5]||=e=>a(`transcodingProgress`,e),onError:n[6]||=e=>a(`error`,e),onIntegritySignal:n[7]||=e=>a(`integritySignal`,e),onIntegrityBlocked:n[8]||=e=>a(`integrityBlocked`,e),onIntegrityChallenge:n[9]||=e=>a(`integrityChallenge`,e),onIntegrityChallengeEnd:n[10]||=e=>a(`integrityChallengeEnd`,e)},null,8,[`recorder-props`])):y.value?(K(),N(Li,{key:1,ref_key:`activeRecorder`,ref:x,config:m.value},null,8,[`config`])):b.value?(K(),N(pi,{key:2,ref_key:`activeRecorder`,ref:x,config:h.value},null,8,[`config`])):P(`v-if`,!0)]),_:1},8,[`lang`,`texts`]))}});export{e as CONFIG_ERROR_CREDENTIAL_CONFLICT,i as ERROR_RECORDING_MARKER_DUPLICATE_ID,a as ERROR_RECORDING_MARKER_INVALID_ID,o as ERROR_RECORDING_MARKER_INVALID_LABEL,s as ERROR_RECORDING_MARKER_LIMIT_REACHED,c as ERROR_RECORDING_MARKER_NOT_RECORDING,pi as MobileWebRecorderUI,Li as NativeCameraUI,ja as StandardRecorder,f as UPLOAD_ERROR_INSUFFICIENT_CREDITS,Ma as VidtreoRecorder,xe as defaultTranslations,Se as getTranslations,C as getUploadErrorCode,E as isCredentialConflictError,O as isRecordingMarkerError,Ve as useMobileWebRecorder,hi as useNativeCamera,Bi as usePermissionFlow,Vi as useRecorderTranslations,Be as useVidtreoRecorder};
|