@vidtreo/recorder-vue 1.15.1 → 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/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 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.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}const ke=1e3,Ae=/^\d+$/;function je(e){return Ae.test(e)}function Me(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(!je(e))return 0;if(n.length===2){let e=Number.parseInt(n[0],10),t=Number.parseInt(n[1],10);return(e*60+t)*ke}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)*ke}function Ne(e,t,n){return!n||e==null||Number.isFinite(e)===!1||e<=0?!1:Me(t)<e}function Pe(){let e=Error(`Minimum recording time has not been reached yet`);return e.code=`recording.minimum-time-not-reached`,e}function Fe(){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 Ie(e){return typeof e==`string`&&(e===`browser.unsupported`||e.startsWith(`camera.`)||e.startsWith(`audio.`)||e.startsWith(`recording.`))?e:null}function Le(e){return e.isFinalizingRecording||e.transcodingProgress!==null?!0:e.uploadProgress!==null}function Re(){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 ze(e){let t=oe(Re()),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=Ie(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=Fe();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 c={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},l;l=e.demo?{...c,demo:!0,backendUrl:void 0}:e.getAccessToken?{...c,demo:!1,getAccessToken:y,backendUrl:n}:{...c,demo:!1,apiKey:r,backendUrl:n};let u;try{u=Oe(l,e.demo?``:r)}catch(e){return D(e),s.current=!1,t.isInitialized=!1,()=>{}}let f=new d({recording:F(e.demo??!1),upload:I(),stream:L(),sourceSwitch:R()});return a.current=f,i.value=f,f.initialize(u).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(Le({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 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(Ne(c().minTimeRecord,p.current,e))throw Pe();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 Be(e){let t=typeof e==`function`?e:()=>e,n=q(!1),r={current:!1},i={current:!1},a=ze(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 Ve=Symbol(`vidtreoAudioLevel`);function He(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 Ue=Object.freeze({visible:!1,variant:`generic`,title:``,message:``,canRetry:!1}),We=new Set([`recording.audio-no-chunks`,`recording.audio-track-ended`,`recording.no-audio-track`,`recording.no-audio-frames`]),Ge=new Set([`recording.audio-silent`]),Ke=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&&We.has(e)?{title:t.audioMissingTitle,message:t.audioMissingMessage,retryLabel:t.audioMissingRetry}:e&&Ge.has(e)?{title:t.audioSilentTitle,message:t.audioSilentMessage,retryLabel:t.audioMissingRetry}:e&&Ke.has(e)?{title:t.audioProcessingErrorTitle,message:t.audioProcessingErrorMessage,retryLabel:t.audioMissingRetry}:{title:t.audioErrorTitle,message:t.audioErrorMessage,retryLabel:t.audioErrorRetry}}function Je(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 Ye(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 Xe(e,t,n,i){if(i===r)return{visible:!0,variant:`audio`,title:t.audioRecordingDisabledTitle,message:t.audioRecordingDisabled,canRetry:!1};if(!e.visible)return Ue;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=Je(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=Ye(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 Ue}}function Ze(e){return e.trim().replace(/\s+/g,` `)}function Qe(e){return e&&Ze(e.text)||null}function $e(e){return Qe(e.prompt)?e.recordingState===`countdown`?e.prompt?.countdown?.show!==!1:e.isRecording:!1}function et(e){return e.isRecording?Qe(e.prompt)!==null:!1}function tt(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 nt(e,t){return e===`finalizing`?t.finalizing:t.uploading}function rt(e,t,n){return t!==null&&t>1?n.retryingUpload:nt(e,n)}function it(e,t){return e.transcodingProgress===null?e.uploadProgress===null?e.isFinalizingRecording?{label:t.finishing,progress:0}:null:{label:rt(e.uploadPhase,e.uploadRetryAttempt,t),progress:e.uploadProgress}:{label:t.finishing,progress:e.transcodingProgress}}function at(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:rt(e.uploadPhase,e.uploadRetryAttempt,t),progress:e.uploadProgress}),{finalizing:n,transcoding:r,upload:i}}function ot(e){return e.isFinalizingRecording||e.uploadProgress!==null||e.transcodingProgress!==null}function st(e,t){return e===p?t.uploadInsufficientCredits:null}function ct(e){return e===p}function lt(e){return e.isRecording||e.isProcessingRecording?null:e.errorCode}const ut={class:`vidtreo-mobile-recording-prompt-text`},dt={class:`vidtreo-visually-hidden`},ft={"aria-hidden":`true`,class:`vidtreo-mobile-recording-prompt-visible-text`},pt=B({__name:`MobileRecordingPrompt`,props:{className:{},isVisible:{type:Boolean},text:{}},setup(e){let t=e,n=M(()=>Ze(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`,ut,[I(`span`,dt,Y(n.value),1),I(`span`,ft,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 mt=$(`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`}),ht=$(`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`}),gt=$(`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`}),_t=$(`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`}),vt=$(`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`}),yt=$(`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`}),bt=$(`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`}),xt=$(`PhCircle`,{fill:`M232,128A104,104,0,1,1,128,24,104.13,104.13,0,0,1,232,128Z`}),St=$(`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`}),Ct=$(`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`}),wt=$(`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`}),Tt=$(`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`}),Et=$(`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`}),Dt=$(`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`}),Ot=$(`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`}),kt=$(`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`}),At=$(`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`}),jt=$(`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`}),Mt=$(`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`}),Nt=[`aria-label`],Pt=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(gt),{key:0,class:`vidtreo-mobile-prompt-toggle-icon--collapse`,size:16,weight:`bold`})):(K(),N(Z(ht),{key:1,class:`vidtreo-mobile-prompt-toggle-icon--expand`,size:16,weight:`bold`}))],8,Nt))}}),Ft=[`aria-label`,`data-state`,`data-muted`],It={class:`vidtreo-audio-bar-main`},Lt=[`aria-label`,`disabled`,`title`],Rt={key:0,class:`vidtreo-audio-spinner`},zt={key:2,"aria-hidden":`true`,class:`vidtreo-audio-icon vidtreo-audio-icon--stop`},Bt={class:`vidtreo-audio-bar-center`},Vt={class:`vidtreo-audio-bar-side`},Ht=[`aria-label`],Ut=[`aria-label`,`aria-expanded`],Wt=[`aria-valuenow`],Gt={class:`vidtreo-audio-bar-caption`},Kt={key:0,id:`audioBarStatus`,class:`vidtreo-audio-bar-status`,role:`status`},qt=[`data-tone`,`role`],Jt={class:`vidtreo-audio-bar-message-text`},Yt=[`disabled`],Xt={key:0,class:`vidtreo-audio-spinner`},Zt=[`hidden`],Qt={class:`vidtreo-audio-bar-menu-title`},$t={key:0,class:`vidtreo-audio-bar-menu-empty`},en=[`aria-checked`,`onClick`],tn={class:`vidtreo-audio-bar-menu-check`},nn={key:0,class:`vidtreo-audio-icon vidtreo-audio-icon--check`,"aria-hidden":`true`},rn={class:`vidtreo-audio-bar-menu-label`},an={class:`vidtreo-audio-bar-menu-label`},on={class:`vidtreo-audio-bar-menu-label`},sn=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(Ve,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(()=>Xe(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(()=>lt({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`,It,[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`,Rt)):b.value===`countdown`?(K(),F(A,{key:1},[R(Y(e.state.countdown),1)],64)):f.value?(K(),F(`span`,zt)):(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,Lt),I(`div`,Bt,[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`,Vt,[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,Ht),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,Ut)):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,Wt)):P(`v-if`,!0)]),I(`div`,Gt,[y.value?P(`v-if`,!0):(K(),F(`p`,Kt,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`,Jt,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`,Xt)):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,Yt)):P(`v-if`,!0)],8,qt)):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`,Qt,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`,an,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`,on,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`,$t,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`,tn,[e.state.devices.selectedMic===t.deviceId?(K(),F(`span`,nn)):P(`v-if`,!0)]),I(`span`,rn,Y(L(t)),1)],8,en))),128))],64))],8,Zt)):P(`v-if`,!0)],40,Ft))}}),cn=.7,ln=B({__name:`AudioVisualizer`,props:{isMuted:{type:Boolean}},setup(e){let t=e,n=V(Ve,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=cn+n/15*(1-cn);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))}}),un={class:`vidtreo-audio-warning-toast__icon`},dn={class:`vidtreo-audio-warning-toast__content`},fn={class:`vidtreo-audio-warning-toast__title`},pn={class:`vidtreo-audio-warning-toast__message`},mn=[`aria-label`];function hn(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 gn(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 _n=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?hn(n.warning.code):`soft`),o=M(()=>n.warning?gn(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`,un,[a.value===`critical`?(K(),N(Z(Tt),{key:0,size:20,weight:`fill`})):(K(),N(Z(jt),{key:1,size:20,weight:`fill`}))]),I(`span`,dn,[I(`span`,fn,Y(o.value.title),1),I(`span`,pn,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(Mt),{size:14,weight:`bold`})],8,mn)):P(`v-if`,!0)],2)):P(`v-if`,!0)}}),vn={key:0,class:`vidtreo-audio-error-overlay`},yn={class:`vidtreo-audio-error-icon`},bn={class:`vidtreo-audio-error-title`},xn={class:`vidtreo-audio-error-message`},Sn=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`,vn,[I(`div`,yn,[e.variant===`audio`?(K(),N(Z(Tt),{key:0,size:28,weight:`fill`})):e.variant===`camera`?(K(),N(Z(vt),{key:1,size:28,weight:`fill`})):(K(),N(Z(jt),{key:2,size:28,weight:`fill`}))]),I(`h3`,bn,Y(e.title),1),I(`p`,xn,Y(e.message),1),e.retryLabel?(K(),F(`button`,{key:0,class:`vidtreo-audio-error-retry`,type:`button`,onClick:r},[z(Z(mt),{size:16,weight:`bold`}),R(` `+Y(e.retryLabel),1)])):P(`v-if`,!0)])):P(`v-if`,!0)}}),Cn={class:`vidtreo-preview-container`},wn={class:`vidtreo-error-overlay`},Tn={class:`vidtreo-error-content`},En={class:`vidtreo-error-icon`},Dn={class:`vidtreo-error-title`},On={key:0,class:`vidtreo-error-message`},kn={key:1,class:`vidtreo-error-message`},An={key:2,class:`vidtreo-error-config`},jn=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`,Cn,[I(`div`,wn,[I(`div`,Tn,[I(`div`,En,[z(Z(jt),{size:48,weight:`fill`,color:`currentColor`})]),I(`div`,Dn,Y(n.value.errorTitle),1),r.value?P(`v-if`,!0):(K(),F(`div`,On,Y(e.error?.message||n.value.errorGeneric),1)),r.value?(K(),F(`div`,kn,Y(n.value.errorApiKeyRequired),1)):P(`v-if`,!0),r.value?(K(),F(`div`,An,[...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)])])]))}}),Mn={key:1,class:`vidtreo-preview-error`},Nn={class:`vidtreo-error-content`},Pn={class:`vidtreo-error-icon`},Fn={class:`vidtreo-error-message`},In=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(jn,{key:0,error:n.value,lang:e.lang,texts:e.texts},null,8,[`error`,`lang`,`texts`])):t.value?(K(),F(`div`,Mn,[I(`div`,Nn,[I(`div`,Pn,[z(Z(jt),{size:48,weight:`fill`,color:`currentColor`})]),a[0]||=I(`div`,{class:`vidtreo-error-title`},`Preview Error`,-1),I(`div`,Fn,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})}}),Ln={class:`vidtreo-recording-controls`},Rn={class:`vidtreo-recording-controls-row`},zn={class:`vidtreo-control-buttons-row`},Bn=[`title`],Vn=[`disabled`,`title`],Hn={key:0,class:`vidtreo-mic-connecting-indicator`,style:{"margin-right":`0.375rem`}},Un=[`title`],Wn=[`title`],Gn=[`title`],Kn=[`aria-disabled`,`disabled`,`title`],qn=[`title`],Jn=[`title`],Yn={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...`},Xn=B({__name:`RecordingControlsButtons`,props:{buttonVisibility:{},recordingState:{},isMuted:{type:Boolean},isAudioReady:{type:Boolean},isProcessingRecording:{type:Boolean},currentSourceType:{},isStopLocked:{type:Boolean},stopLockedTooltip:{},translations:{default:()=>Yn}},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`,Ln,[I(`div`,Rn,[I(`div`,zn,[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(Ct),{size:20,weight:`fill`})],8,Bn)):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`,Hn,[z(Z(wt),{size:16,weight:`fill`})])),e.isAudioReady?(K(),N(Z(xt),{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,Vn)):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(Tt),{key:0,size:24,weight:`fill`})):(K(),N(Z(wt),{key:1,size:24,weight:`fill`}))],10,Un)):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(Dt),{size:24,weight:`fill`})],8,Wn)):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(Ot),{size:24,weight:`fill`})],8,Gn)):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(kt),{size:24,weight:`fill`,fill:`currentColor`,style:{"margin-right":`0.375rem`}}),R(` `+Y(e.translations.stop),1)],10,Kn)):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(St),{size:24,weight:`fill`})],8,qn)):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(Et),{key:0,size:24,weight:`fill`})):(K(),N(Z(_t),{key:1,size:24,weight:`fill`}))],8,Jn)):P(`v-if`,!0)])])]))}}),Zn={id:`settingsPanel`,class:`vidtreo-settings-panel vidtreo-active`},Qn={class:`vidtreo-settings-title`},$n={class:`vidtreo-device-list`},er={key:0,class:`vidtreo-device-empty`},tr=[`onClick`],nr={class:`vidtreo-device-option-check-container`},rr={key:1,class:`vidtreo-device-checkmark-placeholder`},ir={class:`vidtreo-device-option-label`},ar={class:`vidtreo-settings-title`},or={class:`vidtreo-device-list`},sr={key:0,class:`vidtreo-device-empty`},cr=[`onClick`],lr={class:`vidtreo-device-option-check-container`},ur={key:1,class:`vidtreo-device-checkmark-placeholder`},dr={class:`vidtreo-device-option-label`},fr={key:2,class:`vidtreo-device-options-container`},pr={class:`vidtreo-device-option-nav-content`},mr={class:`vidtreo-device-option-nav-label`},hr={class:`vidtreo-device-option-nav-value`},gr={class:`vidtreo-device-option-nav-value-text`},_r={class:`vidtreo-device-option-nav-content`},vr={class:`vidtreo-device-option-nav-label`},yr={class:`vidtreo-device-option-nav-value`},br={class:`vidtreo-device-option-nav-value-text`},xr={settings:`Settings`,camera:`Camera`,microphone:`Microphone`},Sr=B({__name:`SettingsPanel`,props:{devices:{},translations:{default:()=>xr},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`,Zn,[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(yt),{class:`vidtreo-settings-back-icon`,size:20,weight:`regular`}),I(`h3`,Qn,Y(e.translations.camera),1)]),I(`div`,$n,[c.value.length===0?(K(),F(`div`,er,` 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`,nr,[t.deviceId===e.devices.selectedCamera?(K(),N(Z(bt),{key:0,class:`vidtreo-device-checkmark`,size:20,weight:`regular`})):(K(),F(`span`,rr))]),I(`span`,ir,Y(t.label||`Camera ${t.deviceId.slice(0,8)}`),1)],8,tr))),128))])],64)):i.value===`microphone`?(K(),F(A,{key:1},[I(`button`,{class:`vidtreo-settings-header`,type:`button`,onClick:s},[z(Z(yt),{class:`vidtreo-settings-back-icon`,size:20,weight:`regular`}),I(`h3`,ar,Y(e.translations.microphone),1)]),I(`div`,or,[l.value.length===0?(K(),F(`div`,sr,` 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`,lr,[t.deviceId===e.devices.selectedMic?(K(),N(Z(bt),{key:0,class:`vidtreo-device-checkmark`,size:20,weight:`regular`})):(K(),F(`span`,ur))]),I(`span`,dr,Y(t.label||`Microphone ${t.deviceId.slice(0,8)}`),1)],8,cr))),128))])],64)):(K(),F(`div`,fr,[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`,pr,[z(Z(At),{size:20,weight:`fill`}),I(`span`,mr,Y(e.translations.camera),1)]),I(`div`,hr,[I(`span`,gr,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`,_r,[z(Z(wt),{size:20,weight:`fill`}),I(`span`,vr,Y(e.translations.microphone),1)]),I(`div`,yr,[I(`span`,br,Y(d.value),1),n[3]||=I(`span`,{class:`vidtreo-device-option-nav-chevron`},`›`,-1)])])]))],2)]))}}),Cr={key:0,class:`vidtreo-audio-error-overlay vidtreo-upload-error-overlay`,role:`alertdialog`},wr={class:`vidtreo-audio-error-icon`},Tr={class:`vidtreo-audio-error-title`},Er={class:`vidtreo-audio-error-message`},Dr=B({__name:`UploadErrorOverlay`,props:{errorCode:{},translations:{}},emits:[`close`],setup(e,{emit:t}){let n=e,r=t,i=M(()=>st(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`,Cr,[I(`div`,wr,[z(Z(jt),{size:28,weight:`fill`})]),I(`h3`,Tr,Y(e.translations.uploadInsufficientCreditsTitle),1),I(`p`,Er,Y(i.value),1),I(`button`,{class:`vidtreo-audio-error-retry`,type:`button`,onClick:a},[z(Z(Mt),{size:16,weight:`bold`}),R(` `+Y(e.translations.uploadErrorClose),1)])]))}}),Or={},kr=`camera`,Ar=`screen`,jr=`recording`,Mr={key:0,class:`vidtreo-progress-overlay`},Nr={id:`uploadProgress`,class:`vidtreo-upload-progress vidtreo-active`},Pr={class:`vidtreo-progress-bar`},Fr={id:`uploadProgressText`,class:`vidtreo-progress-text`},Ir=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`,Mr,[I(`div`,Nr,[I(`div`,Pr,[I(`div`,{id:`uploadProgressFill`,class:`vidtreo-progress-fill`,style:W({width:`${n.value}%`})},null,4)]),I(`div`,Fr,Y(e.label)+` `+Y(n.value)+`% `,1)])]))}}),Lr=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))}}),Rr=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))}}),zr={class:`vidtreo-mobile-web-recorder`},Br={key:0,class:`vidtreo-mobile-landing-container`},Vr={class:`vidtreo-mobile-landing-content`},Hr={class:`vidtreo-mobile-landing-title`},Ur={class:`vidtreo-mobile-landing-description`},Wr=[`disabled`],Gr=[`aria-label`],Kr={class:`vidtreo-mobile-modal-header`},qr=[`disabled`],Jr={class:`vidtreo-mobile-modal-content`},Yr={class:`vidtreo-mobile-recorder-content`},Xr={key:0,class:`vidtreo-audio-only`},Zr={class:`vidtreo-preview-container vidtreo-mobile-preview`},Qr={key:0,id:`startCameraArea`,class:`vidtreo-start-camera-area`},$r={key:1,id:`previewSkeleton`,class:`vidtreo-preview-skeleton`},ei={class:`vidtreo-skeleton-text`},ti={key:4,id:`countdownOverlay`,class:`vidtreo-countdown-overlay vidtreo-active`},ni={class:`vidtreo-countdown-content`},ri={id:`countdownNumber`,class:`vidtreo-countdown-number`},ii={class:`vidtreo-countdown-text`},ai={key:1,id:`recIndicatorTop`,class:`vidtreo-rec-indicator-top`},oi={id:`recordingTimerRow`,class:`vidtreo-recording-timer-badge`},si={id:`recordingTimer`,class:`vidtreo-recording-timer-text`},ci={id:`audioLevelBars`,class:`vidtreo-audio-level-bars`},li={key:2,id:`sourceTransitionOverlay`,class:`vidtreo-source-transition-overlay vidtreo-active`},ui={class:`vidtreo-transition-message`},di=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}=Be(()=>n.config);ae(Ve,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(()=>Qe(n.config.recordingPrompt)),T=M(()=>tt(n.config.recordingPrompt,o.recordingState)),E=M(()=>$e({prompt:n.config.recordingPrompt,recordingState:o.recordingState,isRecording:C.value})),D=M(()=>et({isRecording:C.value,prompt:n.config.recordingPrompt})),O=q(!0);Q(w,()=>{O.value=!0});function ee(){O.value=!O.value}let k=M(()=>ot(o)),L=M(()=>Ne(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(()=>({...He(C.value,o.recordingState,o.isPaused,{...n.config,isMobile:!0}),showDownloadButton:ne.value})),H=M(()=>Xe(te({errorCode:o.errorCode,hasAudioFailed:o.hasAudioFailed,error:o.error}),a.value,o.error,o.errorCode)),U=M(()=>it(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`,zr,[Z(u)?P(`v-if`,!0):(K(),F(`div`,Br,[I(`div`,Vr,[I(`h2`,Hr,Y(g.value),1),I(`p`,Ur,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(wt),{key:0,size:24,weight:`fill`})):(K(),N(Z(_t),{key:1,size:24,weight:`fill`})),R(` `+Y(a.value.mobileOpenCamera),1)],8,Wr)])])),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`,Kr,[I(`button`,{class:`vidtreo-mobile-modal-close-btn`,disabled:!Z(p),type:`button`,onClick:n[1]||=(...e)=>Z(f)&&Z(f)(...e)},[z(Z(Mt),{size:16,weight:`bold`}),R(` `+Y(a.value.mobileCloseCamera),1)],8,qr)]),I(`div`,Jr,[I(`div`,Yr,[m?(K(),F(`div`,Xr,[z(sn,{"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(_n,{key:0,translations:a.value,warning:Z(o).audioWarning},null,8,[`translations`,`warning`])):P(`v-if`,!0)])):(K(),N(In,{key:1,variant:`preview`},{default:ue(()=>[I(`div`,Zr,[Z(o).stream||H.value.visible?P(`v-if`,!0):(K(),F(`div`,Qr,[...n[3]||=[I(`span`,{class:`vidtreo-permission-flow-spinner vidtreo-permission-flow-spinner--large`},null,-1)]])),Z(o).transitionMessage?(K(),F(`div`,$r,[n[4]||=I(`div`,{class:`vidtreo-skeleton-spinner`},null,-1),I(`div`,ei,Y(a.value.switchingDevice),1)])):P(`v-if`,!0),Z(o).stream&&!(y.value||Z(o).transitionMessage)?(K(),N(Rr,{key:2})):P(`v-if`,!0),Z(o).stream?(K(),N(Lr,{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`,ti,[I(`div`,ni,[I(`div`,ri,Y(Z(o).countdown),1),I(`p`,ii,Y(a.value.recordingStartsIn),1)])])):P(`v-if`,!0),E.value&&w.value?(K(),N(pt,{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(Pt,{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`,ai,[n[5]||=I(`div`,{class:`vidtreo-recording-dot-small`},null,-1),I(`span`,null,Y(a.value.rec),1)])),I(`div`,oi,[n[6]||=I(`div`,{class:`vidtreo-recording-dot-small`},null,-1),I(`span`,si,Y(Z(o).timer||`00:00`),1)]),I(`div`,ci,[z(ln,{"is-muted":Z(o).isMuted},null,8,[`is-muted`])])],64)):P(`v-if`,!0),Z(o).stream?(K(),N(Xn,{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(Sn,{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(_n,{key:8,translations:a.value,warning:Z(o).audioWarning},null,8,[`translations`,`warning`])):P(`v-if`,!0),z(Dr,{"error-code":Z(lt)({errorCode:Z(o).uploadErrorCode,isRecording:C.value,isProcessingRecording:k.value}),translations:a.value,onClose:le},null,8,[`error-code`,`translations`]),z(Ir,{label:U.value?.label??a.value.uploading,progress:U.value?.progress??null},null,8,[`label`,`progress`])])]),_:1})),Z(o).transitionMessage?(K(),F(`div`,li,[n[7]||=I(`div`,{class:`vidtreo-transition-spinner`},null,-1),I(`div`,ui,Y(Z(o).transitionMessage),1)])):P(`v-if`,!0),!m&&Z(o).stream&&v.value?(K(),N(Sr,{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,Gr)])):P(`v-if`,!0)]))}}),fi=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(jn,{key:0,error:Z(r),lang:e.config.lang,texts:e.config.texts},null,8,[`error`,`lang`,`texts`])):(K(),N(di,{key:1,ref_key:`recorderContent`,ref:i,config:e.config},null,8,[`config`]))}});function pi(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 mi(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&&pi(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 hi={class:`vidtreo-transcoding-progress`},gi={class:`vidtreo-progress-bar`},_i={class:`vidtreo-progress-text`},vi=B({__name:`TranscodingProgress`,props:{label:{},progress:{}},setup(e){let t=e,n=M(()=>Math.round(t.progress*100));return(t,r)=>(K(),F(`div`,hi,[I(`div`,gi,[I(`div`,{class:`vidtreo-progress-fill`,style:W({width:`${n.value}%`})},null,4)]),I(`div`,_i,Y(e.label)+` `+Y(n.value)+`%`,1)]))}}),yi={key:0,class:`vidtreo-upload-progress`},bi={class:`vidtreo-upload-progress-bar`},xi={class:`vidtreo-upload-progress-text`},Si=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`,yi,[I(`div`,bi,[I(`div`,{class:`vidtreo-upload-progress-fill`,style:W({width:`${n.value}%`})},null,4)]),I(`div`,xi,Y(e.label)+` `+Y(n.value)+`% `,1)])):P(`v-if`,!0)}}),Ci={class:`vidtreo-native-camera-container`},wi={key:0,"aria-live":`polite`,class:`vidtreo-config-loading-indicator`},Ti={class:`vidtreo-visually-hidden`},Ei={key:1,class:`vidtreo-native-camera-preview-container`},Di=[`alt`,`src`],Oi={key:0,class:`vidtreo-progress-overlay`},ki={key:1,class:`vidtreo-progress-overlay`},Ai={key:2,class:`vidtreo-native-camera-download-button`},ji={key:3,class:`vidtreo-native-camera-empty-state`},Mi={class:`vidtreo-native-camera-buttons`},Ni=[`disabled`],Pi=[`disabled`],Fi=B({__name:`NativeCameraUIContent`,props:{config:{}},setup(e){let t=e,{state:n,actions:r}=mi(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(()=>rt(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`,Ci,[I(`input`,{ref_key:`fileInputRef`,ref:i,style:{display:`none`},type:`file`,onChange:u},null,544),Z(n).isConfigLoading?(K(),F(`output`,wi,[t[1]||=I(`div`,{"aria-hidden":`true`,class:`vidtreo-spinner-small`},null,-1),I(`span`,Ti,Y(s.value.nativeCameraConfigLoading),1)])):P(`v-if`,!0),f.value&&Z(n).file!==null?(K(),F(`div`,Ei,[I(`img`,{alt:s.value.nativeCameraPreviewAlt,class:`vidtreo-native-camera-preview-image`,height:480,src:Z(n).file.previewUrl,width:640},null,8,Di),Z(n).isTranscoding&&Z(n).transcodingProgress!==null?(K(),F(`div`,Oi,[z(vi,{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`,ki,[z(Si,{label:d.value,progress:Z(n).uploadProgress,visible:!0},null,8,[`label`,`progress`])])),m.value?(K(),F(`div`,Ai,[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(Si,{key:2,label:d.value,progress:Z(n).uploadProgress,visible:!0},null,8,[`label`,`progress`])):P(`v-if`,!0),p.value?(K(),F(`div`,ji,[I(`div`,Mi,[I(`button`,{class:`vidtreo-btn vidtreo-btn-primary`,disabled:Z(n).isConfigLoading,type:`button`,onClick:c},Y(s.value.nativeCameraSelectVideo),9,Ni),I(`button`,{class:`vidtreo-btn vidtreo-btn-secondary`,disabled:Z(n).isConfigLoading,type:`button`,onClick:l},Y(s.value.nativeCameraRecordVideo),9,Pi)])])):P(`v-if`,!0),z(Dr,{"error-code":Z(n).uploadErrorCode,translations:s.value,onClose:Z(r).reset},null,8,[`error-code`,`translations`,`onClose`]),z(Sn,{message:Z(n).error||s.value.genericErrorMessage,"retry-label":s.value.errorRetry,title:s.value.genericErrorTitle,variant:`generic`,visible:Z(n).error!==null&&!Z(ct)(Z(n).uploadErrorCode),onRetry:Z(r).reset},null,8,[`message`,`retry-label`,`title`,`visible`,`onRetry`])]))}}),Ii=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(jn,{key:0,error:Z(r),lang:e.config.lang,texts:e.config.texts},null,8,[`error`,`lang`,`texts`])):(K(),N(Fi,{key:1,config:e.config},null,8,[`config`]))}}),Li=`unknown`;function Ri(e){return!(e===`idle`||e===`ready`)}function zi(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(()=>Ri(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:Li,n=t.value?t.value.permissions.microphone:Li;return[{deviceType:`camera`,status:e},{deviceType:`microphone`,status:n}]}),recoveryData:p,requestPermission:s,retryPermission:c}}function Bi(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 Vi={class:`vidtreo-recovery-guide`},Hi={class:`vidtreo-recovery-guide-browser`},Ui={class:`vidtreo-recovery-guide-titlebar`},Wi={class:`vidtreo-recovery-guide-addressbar`},Gi={class:`vidtreo-recovery-guide-url`},Ki={class:`vidtreo-recovery-guide-popover`},qi={class:`vidtreo-recovery-guide-popover-header`},Ji={key:0,class:`vidtreo-recovery-guide-perm-row`},Yi={class:`vidtreo-recovery-guide-perm-group`},Xi={class:`vidtreo-recovery-guide-perm-label`},Zi={class:`vidtreo-recovery-guide-perm-row`},Qi={class:`vidtreo-recovery-guide-perm-group`},$i={class:`vidtreo-recovery-guide-perm-label`},ea=`vidtreo.com`,ta=B({__name:`PermissionRecoveryGuide`,props:{cameraLabel:{},microphoneLabel:{}},setup(e){let t=M(()=>{if(globalThis.window===void 0)return ea;let e=globalThis.window.location.hostname||ea;return e.length>20?`${e.slice(0,20)}...`:e});return(n,r)=>(K(),F(`div`,Vi,[I(`div`,Hi,[I(`div`,Ui,[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`,Wi,[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`,Gi,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`,Ki,[I(`div`,qi,Y(t.value),1),r[7]||=I(`div`,{class:`vidtreo-recovery-guide-popover-divider`},null,-1),e.cameraLabel?(K(),F(`div`,Ji,[I(`div`,Yi,[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`,Xi,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`,Zi,[I(`div`,Qi,[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`,$i,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)])])]))}}),na={key:0,class:`vidtreo-permission-flow-spinner vidtreo-permission-flow-spinner--large`},ra={class:`vidtreo-permission-flow-title`},ia={key:0,class:`vidtreo-permission-flow-subtitle`},aa=[`disabled`],oa={key:0,class:`vidtreo-permission-flow-spinner`},sa={key:2,class:`vidtreo-permission-flow-recovery`},ca={class:`vidtreo-permission-flow-subtitle`},la=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`,na)):(K(),F(A,{key:1},[I(`div`,ra,Y(l.value),1),o.value?P(`v-if`,!0):(K(),F(`div`,ia,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`,oa)):e.audioOnly?(K(),N(Z(wt),{key:1,size:24,weight:`fill`})):(K(),N(Z(At),{key:2,size:24,weight:`fill`})),R(` `+Y(h.value),1)],10,aa)):P(`v-if`,!0),o.value&&e.recoveryData?(K(),F(`div`,sa,[I(`div`,ca,Y(e.translations.recoveryTitle),1),z(ta,{"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)}}),ua={key:0,class:`vidtreo-start-camera-area`},da={key:1,id:`previewSkeleton`,class:`vidtreo-preview-skeleton`},fa={class:`vidtreo-skeleton-text`},pa={key:3,id:`countdownOverlay`,class:`vidtreo-countdown-overlay vidtreo-active`},ma={class:`vidtreo-countdown-content`},ha={id:`countdownNumber`,class:`vidtreo-countdown-number`},ga={class:`vidtreo-countdown-text`},_a={key:4,id:`recIndicatorTop`,class:`vidtreo-rec-indicator-top`},va={key:5,id:`recordingTimerRow`,class:`vidtreo-recording-timer-badge`},ya={id:`recordingTimer`,class:`vidtreo-recording-timer-text`},ba={key:6,id:`audioLevelBars`,class:`vidtreo-audio-level-bars`},xa=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`,ua,[...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`,da,[n[9]||=I(`div`,{class:`vidtreo-skeleton-spinner`},null,-1),I(`div`,fa,Y(e.translations.switchingDevice),1)])):P(`v-if`,!0),!e.isVideoLoaded&&e.state.stream?(K(),N(Rr,{key:2,"class-name":`vidtreo-video-skeleton`})):P(`v-if`,!0),z(Lr,{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`,pa,[I(`div`,ma,[I(`div`,ha,Y(e.state.countdown),1),I(`p`,ga,Y(e.translations.recordingStartsIn),1)])])):P(`v-if`,!0),e.isRecording?(K(),F(`div`,_a,[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`,va,[n[11]||=I(`div`,{class:`vidtreo-recording-dot-small`},null,-1),I(`span`,ya,Y(e.state.timer),1)])):P(`v-if`,!0),e.isRecording?(K(),F(`div`,ba,[z(ln,{"is-muted":e.state.isMuted},null,8,[`is-muted`])])):P(`v-if`,!0),e.state.stream?(K(),N(Xn,{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))}}),Sa={class:`vidtreo-preview-container`},Ca={key:2,id:`sourceTransitionOverlay`,class:`vidtreo-source-transition-overlay vidtreo-active`},wa={class:`vidtreo-transition-message`},Ta=B({__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=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||Or),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,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}=ze(()=>_.value);ae(Ve,b),t(ge(x));let S=Bi(h),C=zi({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===jr&&l.value&&(l.value=!1)});let T=M(()=>v.recordingState===jr||v.isPaused),E=M(()=>ot(v)),O=M(()=>Ne(r.recorderProps.minTimeRecord,v.timer,T.value)),ee=M(()=>x.value?.getCurrentSourceType()||kr),k=M(()=>{let e=He(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(()=>at(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(()=>Xe(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()||kr,t=kr;e===kr&&(t=Ar),e===Ar&&(t=kr),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(In,{key:0,variant:`preview`},{default:ue(()=>[z(sn,{"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(_n,{key:0,translations:h.value,warning:Z(v).audioWarning},null,8,[`translations`,`warning`])):P(`v-if`,!0)]),_:1})):(K(),N(In,{key:1,variant:`preview`},{default:ue(()=>[I(`div`,Sa,[z(xa,{"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(Sn,{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(_n,{key:0,translations:h.value,warning:Z(v).audioWarning},null,8,[`translations`,`warning`])):P(`v-if`,!0),z(Dr,{"error-code":Z(lt)({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(la,{key:1,"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(Ir,{label:A.value.finalizing?.label??h.value.finishing,progress:A.value.finalizing?.progress??null},null,8,[`label`,`progress`]),z(Ir,{label:A.value.transcoding?.label??h.value.finishing,progress:A.value.transcoding?.progress??null},null,8,[`label`,`progress`]),z(Ir,{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`,Ca,[n[1]||=I(`div`,{class:`vidtreo-transition-spinner`},null,-1),I(`div`,wa,Y(Z(v).transitionMessage),1)])):P(`v-if`,!0),!s&&Z(v).stream&&l.value?(K(),N(Sr,{key:3,devices:Z(v).devices,translations:Z(S).settings.value,onCameraChange:ie,onMicChange:oe},null,8,[`devices`,`translations`])):P(`v-if`,!0)],2))}}),Ea=B({__name:`StandardRecorder`,props:{recorderProps:{}},emits:[`recordingStart`,`recordingStop`,`uploadComplete`,`uploadProgress`,`uploadError`,`transcodingProgress`,`error`],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(jn,{key:0,error:Z(a),lang:e.recorderProps.lang,texts:e.recorderProps.texts},null,8,[`error`,`lang`,`texts`])):(K(),N(Ta,{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`]))}}),Da=B({__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=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,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)}));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(jn,{key:0,error:Z(l),lang:e.recorderProps.lang,texts:e.recorderProps.texts},null,8,[`error`,`lang`,`texts`])):(K(),N(In,{key:1,variant:`recorder`,lang:e.recorderProps.lang,texts:e.recorderProps.texts},{default:ue(()=>[v.value?(K(),N(Ea,{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?(K(),N(Ii,{key:1,ref_key:`activeRecorder`,ref:x,config:m.value},null,8,[`config`])):b.value?(K(),N(fi,{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,fi as MobileWebRecorderUI,Ii as NativeCameraUI,Ea as StandardRecorder,f as UPLOAD_ERROR_INSUFFICIENT_CREDITS,Da as VidtreoRecorder,xe as defaultTranslations,Se as getTranslations,C as getUploadErrorCode,E as isCredentialConflictError,O as isRecordingMarkerError,Be as useMobileWebRecorder,mi as useNativeCamera,zi as usePermissionFlow,Bi as useRecorderTranslations,ze 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};