vidply 1.0.28 → 1.0.29

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.
Files changed (61) hide show
  1. package/dist/dev/{vidply.TranscriptManager-QSF2PWUN.js → vidply.TranscriptManager-T677KF4N.js} +4 -5
  2. package/dist/dev/{vidply.TranscriptManager-QSF2PWUN.js.map → vidply.TranscriptManager-T677KF4N.js.map} +2 -2
  3. package/dist/dev/{vidply.chunk-SRM7VNHG.js → vidply.chunk-GS2JX5RQ.js} +136 -95
  4. package/dist/dev/vidply.chunk-GS2JX5RQ.js.map +7 -0
  5. package/dist/dev/vidply.esm.js +1674 -310
  6. package/dist/dev/vidply.esm.js.map +4 -4
  7. package/dist/legacy/vidply.js +1776 -348
  8. package/dist/legacy/vidply.js.map +4 -4
  9. package/dist/legacy/vidply.min.js +1 -1
  10. package/dist/legacy/vidply.min.meta.json +92 -24
  11. package/dist/prod/vidply.TranscriptManager-WFZSW6NR.min.js +6 -0
  12. package/dist/prod/vidply.chunk-LGTJRPUL.min.js +6 -0
  13. package/dist/prod/vidply.esm.min.js +8 -8
  14. package/dist/vidply.esm.min.meta.json +92 -24
  15. package/package.json +1 -1
  16. package/src/controls/ControlBar.js +3 -7
  17. package/src/controls/TranscriptManager.js +7 -7
  18. package/src/core/AudioDescriptionManager.js +701 -0
  19. package/src/core/Player.js +4776 -4921
  20. package/src/core/SignLanguageManager.js +1134 -0
  21. package/src/utils/DOMUtils.js +153 -114
  22. package/src/utils/MenuFactory.js +374 -0
  23. package/dist/dev/vidply.TranscriptManager-GZKY44ON.js +0 -1744
  24. package/dist/dev/vidply.TranscriptManager-GZKY44ON.js.map +0 -7
  25. package/dist/dev/vidply.TranscriptManager-UTJBQC5B.js +0 -1744
  26. package/dist/dev/vidply.TranscriptManager-UTJBQC5B.js.map +0 -7
  27. package/dist/dev/vidply.chunk-5663PYKK.js +0 -1631
  28. package/dist/dev/vidply.chunk-5663PYKK.js.map +0 -7
  29. package/dist/dev/vidply.chunk-SRM7VNHG.js.map +0 -7
  30. package/dist/dev/vidply.chunk-UH5MTGKF.js +0 -1630
  31. package/dist/dev/vidply.chunk-UH5MTGKF.js.map +0 -7
  32. package/dist/dev/vidply.de-RXAJM5QE.js +0 -181
  33. package/dist/dev/vidply.de-RXAJM5QE.js.map +0 -7
  34. package/dist/dev/vidply.de-THBIMP4S.js +0 -180
  35. package/dist/dev/vidply.de-THBIMP4S.js.map +0 -7
  36. package/dist/dev/vidply.es-6VWDNNNL.js +0 -180
  37. package/dist/dev/vidply.es-6VWDNNNL.js.map +0 -7
  38. package/dist/dev/vidply.es-SADVLJTQ.js +0 -181
  39. package/dist/dev/vidply.es-SADVLJTQ.js.map +0 -7
  40. package/dist/dev/vidply.fr-V3VAYBBT.js +0 -181
  41. package/dist/dev/vidply.fr-V3VAYBBT.js.map +0 -7
  42. package/dist/dev/vidply.fr-WHTWCHWT.js +0 -180
  43. package/dist/dev/vidply.fr-WHTWCHWT.js.map +0 -7
  44. package/dist/dev/vidply.ja-BFQNPOFI.js +0 -180
  45. package/dist/dev/vidply.ja-BFQNPOFI.js.map +0 -7
  46. package/dist/dev/vidply.ja-KL2TLZGJ.js +0 -181
  47. package/dist/dev/vidply.ja-KL2TLZGJ.js.map +0 -7
  48. package/dist/prod/vidply.TranscriptManager-DZ2WZU3K.min.js +0 -6
  49. package/dist/prod/vidply.TranscriptManager-E5QHGFIR.min.js +0 -6
  50. package/dist/prod/vidply.TranscriptManager-UZ6DUFB6.min.js +0 -6
  51. package/dist/prod/vidply.chunk-5DWTMWEO.min.js +0 -6
  52. package/dist/prod/vidply.chunk-IBNYTGGM.min.js +0 -6
  53. package/dist/prod/vidply.chunk-MBUR3U5L.min.js +0 -6
  54. package/dist/prod/vidply.de-HGJBCLLE.min.js +0 -6
  55. package/dist/prod/vidply.de-SWFW4HYT.min.js +0 -6
  56. package/dist/prod/vidply.es-7BJ2DJAY.min.js +0 -6
  57. package/dist/prod/vidply.es-CZEBXCZN.min.js +0 -6
  58. package/dist/prod/vidply.fr-DPVR5DFY.min.js +0 -6
  59. package/dist/prod/vidply.fr-HFOL7MWA.min.js +0 -6
  60. package/dist/prod/vidply.ja-PEBVWKVH.min.js +0 -6
  61. package/dist/prod/vidply.ja-QTVU5C25.min.js +0 -6
@@ -3,4 +3,4 @@
3
3
  * (c) 2025 Matthias Peltzer
4
4
  * Released under GPL-2.0-or-later License
5
5
  */
6
- (()=>{var Le=Object.defineProperty;var ke=Object.getOwnPropertySymbols;var tt=Object.prototype.hasOwnProperty,it=Object.prototype.propertyIsEnumerable;var Me=(m,e,t)=>e in m?Le(m,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):m[e]=t,$=(m,e)=>{for(var t in e||(e={}))tt.call(e,t)&&Me(m,t,e[t]);if(ke)for(var t of ke(e))it.call(e,t)&&Me(m,t,e[t]);return m};var x=(m,e)=>()=>(m&&(e=m(m=0)),e);var R=(m,e)=>{for(var t in e)Le(m,t,{get:e[t],enumerable:!0})};var h,W=x(()=>{h={createElement(m,e={}){let t=document.createElement(m);return e.className&&(t.className=e.className),e.attributes&&Object.entries(e.attributes).forEach(([i,s])=>{t.setAttribute(i,s)}),e.innerHTML&&(t.innerHTML=e.innerHTML),e.textContent&&(t.textContent=e.textContent),e.style&&Object.assign(t.style,e.style),e.children&&e.children.forEach(i=>{i&&t.appendChild(i)}),t},addClass(m,e){m&&e&&m.classList.add(e)},removeClass(m,e){m&&e&&m.classList.remove(e)},toggleClass(m,e){m&&e&&m.classList.toggle(e)},hasClass(m,e){return m&&m.classList.contains(e)},show(m){m&&(m.style.display="")},hide(m){m&&(m.style.display="none")},fadeIn(m,e=300){if(!m)return;m.style.opacity="0",m.style.display="";let t=null,i=s=>{t||(t=s);let a=s-t,n=Math.min(a/e,1);m.style.opacity=n,a<e&&requestAnimationFrame(i)};requestAnimationFrame(i)},fadeOut(m,e=300){if(!m)return;let t=parseFloat(getComputedStyle(m).opacity)||1,i=null,s=a=>{i||(i=a);let n=a-i,l=Math.max(t-n/e,0);m.style.opacity=l,n<e?requestAnimationFrame(s):m.style.display="none"};requestAnimationFrame(s)},offset(m){if(!m)return{top:0,left:0};let e=m.getBoundingClientRect();return{top:e.top+window.pageYOffset,left:e.left+window.pageXOffset,width:e.width,height:e.height}},escapeHTML(m){let e=document.createElement("div");return e.textContent=m,e.innerHTML},sanitizeHTML(m){let e=document.createElement("div"),t=m.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").replace(/<iframe\b[^<]*(?:(?!<\/iframe>)<[^<]*)*<\/iframe>/gi,"").replace(/on\w+\s*=/gi,"").replace(/javascript:/gi,"");return e.innerHTML=t,e.innerHTML},createTooltip(m,e="vidply"){return this.createElement("span",{className:"".concat(e,"-tooltip"),textContent:m,attributes:{"aria-hidden":"true"}})},attachTooltip(m,e,t="vidply"){if(!m||!e)return;let i=m.querySelector(".".concat(t,"-tooltip"));i&&i.remove();let s=this.createTooltip(e,t);m.appendChild(s);let a=()=>{s.classList.add("".concat(t,"-tooltip-visible"))},n=()=>{s.classList.remove("".concat(t,"-tooltip-visible"))};m.addEventListener("mouseenter",a),m.addEventListener("mouseleave",n),m.addEventListener("focus",a),m.addEventListener("blur",n)},createButtonText(m,e="vidply"){return this.createElement("span",{className:"".concat(e,"-button-text"),textContent:m,attributes:{"aria-hidden":"true"}})}}});var Te,Ee=x(()=>{Te={player:{label:"Video Player",play:"Play",pause:"Pause",stop:"Stop",restart:"Restart from beginning",rewind:"Rewind",forward:"Forward",rewindSeconds:"Rewind {seconds} seconds",forwardSeconds:"Forward {seconds} seconds",previous:"Previous track",next:"Next track",playlist:"Toggle playlist",volume:"Volume",mute:"Mute",unmute:"Unmute",fullscreen:"Fullscreen",exitFullscreen:"Exit Fullscreen",captions:"Captions",chapters:"Chapters",quality:"Quality",captionStyling:"Caption styling",transcript:"Toggle transcript",audioDescription:"Audio description",signLanguage:"Sign language video",settings:"Settings",speed:"Playback Speed",pip:"Picture in Picture",currentTime:"Current time",duration:"Duration",progress:"Progress",seekForward:"Seek forward {seconds} seconds",seekBackward:"Seek backward {seconds} seconds",volumeUp:"Volume up",volumeDown:"Volume down",loading:"Loading...",loadingChapters:"Loading chapters...",error:"Error loading media",buffering:"Buffering...",signLanguageVideo:"Sign Language Video",closeSignLanguage:"Close sign language video",signLanguageSettings:"Sign language settings",noChapters:"No chapters available",noCaptions:"No captions available",auto:"Auto",autoQuality:"Auto (no quality selection available)",noQuality:"Quality selection not available",signLanguageDragResize:"Sign Language Video - Press D to drag with keyboard, R to resize",signLanguageDragActive:"Sign Language Video - Drag mode active. Use arrow keys to move, Escape to exit.",signLanguageResizeActive:"Sign Language Video - Resize mode active. Use left/right arrow keys to resize, Escape to exit.",enableSignDragMode:"Enable drag mode. Shortcut: D key",disableSignDragMode:"Disable drag mode. Shortcut: D key",enableSignDragModeAria:"Enable toggle keyboard drag mode with arrow keys. Shortcut: D key",disableSignDragModeAria:"Disable toggle keyboard drag mode with arrow keys. Shortcut: D key",enableSignResizeMode:"Enable resize mode. Shortcut: R key",disableSignResizeMode:"Disable resize mode. Shortcut: R key",enableSignResizeModeAria:"Enable keyboard resize mode with arrow keys. Shortcut: R key",disableSignResizeModeAria:"Disable keyboard resize mode with arrow keys. Shortcut: R key",resizeHandle:"Resize {direction} corner",moreOptions:"More options",noMoreOptions:"No additional options available"},captions:{off:"Off",select:"Select captions",fontSize:"Font Size",fontFamily:"Font Family",color:"Text Color",backgroundColor:"Background Color",opacity:"Opacity"},fontSizes:{small:"Small",normal:"Normal",large:"Large",xlarge:"X-Large"},fontFamilies:{sansSerif:"Sans-serif",serif:"Serif",monospace:"Monospace"},styleLabels:{textColor:"Text Color",background:"Background",font:"Font",fontSize:"Font Size",opacity:"Opacity"},audioDescription:{enable:"Enable audio description",disable:"Disable audio description"},signLanguage:{show:"Show sign language video",hide:"Hide sign language video"},transcript:{title:"Transcript",ariaLabel:"Video Transcript",close:"Close transcript",loading:"Loading transcript...",noTranscript:"No transcript available for this video.",settings:"Transcript settings. Press Enter to open menu, or D to enable drag mode",keyboardDragMode:"Toggle keyboard drag mode with arrow keys. Shortcut: D key",keyboardDragActive:"⌨️ Keyboard Drag Mode Active (Arrow keys to move, Shift+Arrows for large steps, D or ESC to exit)",dragResizePrompt:"Press D to drag or R to resize. Use Home to reset position, Esc to close.",dragModeEnabled:"Keyboard drag mode enabled. Use arrow keys to move, Shift+Arrow for larger steps. Press D or Esc to exit.",dragModeDisabled:"Keyboard drag mode disabled.",enableDragMode:"Enable drag mode. Shortcut: D key",disableDragMode:"Disable drag mode. Shortcut: D key",enableDragModeAria:"Enable toggle keyboard drag mode with arrow keys. Shortcut: D key",disableDragModeAria:"Disable toggle keyboard drag mode with arrow keys. Shortcut: D key",resizeWindow:"Resize Window",disableResizeWindow:"Disable Resize Mode",enableResizeMode:"Enable resize mode. Shortcut: R key",disableResizeMode:"Disable resize mode. Shortcut: R key",enableResizeModeAria:"Enable keyboard resize mode with arrow keys. Shortcut: R key",disableResizeModeAria:"Disable keyboard resize mode with arrow keys. Shortcut: R key",resizeModeHint:"Resize handles enabled. Drag edges or corners to adjust. Press Esc or R to exit.",resizeModeEnabled:"Resize mode enabled. Drag edges or corners to adjust. Press Esc or R to exit.",resizeModeDisabled:"Resize mode disabled.",positionReset:"Transcript position reset.",styleTranscript:"Open transcript style settings",closeMenu:"Close Menu",styleTitle:"Transcript Style",autoscroll:"Autoscroll",settingsMenu:"Transcript dialog settings",showTimestamps:"Show timestamps",hideTimestamps:"Hide timestamps",showTimestampsAria:"Show timestamps in transcript",hideTimestampsAria:"Hide timestamps in transcript"},settings:{title:"Settings",quality:"Quality",speed:"Speed",captions:"Captions",language:"Language",reset:"Reset to defaults",close:"Close"},speeds:{normal:"Normal"},time:{display:"Time display",durationPrefix:"Duration: ",of:"of",hour:"{count} hour",hours:"{count} hours",minute:"{count} minute",minutes:"{count} minutes",second:"{count} second",seconds:"{count} seconds"},playlist:{title:"Playlist",trackOf:"Track {current} of {total}",nowPlaying:"Now playing: Track {current} of {total}. {title}{artist}",by:" by ",untitled:"Untitled",trackUntitled:"Track {number}",currentlyPlaying:"Currently playing",notPlaying:"Not playing",pressEnterPlay:"Press Enter to play",pressEnterRestart:"Press Enter to restart",keyboardInstructions:"Playlist navigation: Use Up and Down arrow keys to move between tracks. Press Page Up or Page Down to skip 5 tracks. Press Home to go to first track, End to go to last track. Press Enter or Space to play the selected track.",endOfPlaylist:"End of playlist. {current} of {total}.",beginningOfPlaylist:"Beginning of playlist. 1 of {total}.",jumpedToLastTrack:"Jumped to last track. {current} of {total}.",jumpedToFirstTrack:"Jumped to first track. 1 of {total}.",firstTrack:"First track. 1 of {total}.",lastTrack:"Last track. {current} of {total}."}}});var Pe={};R(Pe,{de:()=>st});var st,xe=x(()=>{st={player:{label:"Videoplayer",play:"Abspielen",pause:"Pause",stop:"Stopp",restart:"Von vorne beginnen",rewind:"Zurückspulen",forward:"Vorspulen",rewindSeconds:"{seconds} Sekunden zurückspulen",forwardSeconds:"{seconds} Sekunden vorspulen",previous:"Vorheriger Titel",next:"Nächster Titel",playlist:"Wiedergabeliste umschalten",volume:"Lautstärke",mute:"Stumm",unmute:"Ton ein",fullscreen:"Vollbild",exitFullscreen:"Vollbild beenden",captions:"Untertitel",chapters:"Kapitel",quality:"Qualität",captionStyling:"Untertitel-Stil",transcript:"Transkript umschalten",audioDescription:"Audiodeskription",signLanguage:"Gebärdensprache-Video",settings:"Einstellungen",speed:"Wiedergabegeschwindigkeit",pip:"Bild-in-Bild",currentTime:"Aktuelle Zeit",duration:"Dauer",progress:"Fortschritt",seekForward:"{seconds} Sekunden vorspulen",seekBackward:"{seconds} Sekunden zurückspulen",volumeUp:"Lauter",volumeDown:"Leiser",loading:"Lädt...",loadingChapters:"Kapitel werden geladen...",error:"Fehler beim Laden",buffering:"Puffern...",signLanguageVideo:"Gebärdensprache-Video",closeSignLanguage:"Gebärdensprache-Video schließen",signLanguageSettings:"Gebärdensprache-Einstellungen",noChapters:"Keine Kapitel verfügbar",noCaptions:"Keine Untertitel verfügbar",auto:"Automatisch",autoQuality:"Automatisch (keine Qualitätsauswahl verfügbar)",noQuality:"Qualitätsauswahl nicht verfügbar",signLanguageDragResize:"Gebärdensprache-Video - Drücken Sie D zum Verschieben per Tastatur, R zum Ändern der Größe",signLanguageDragActive:"Gebärdensprache-Video - Verschiebemodus aktiv. Pfeiltasten zum Bewegen, Escape zum Beenden.",signLanguageResizeActive:"Gebärdensprache-Video - Größenänderungsmodus aktiv. Links-/Rechts-Pfeiltasten zum Ändern der Größe, Escape zum Beenden.",enableSignDragMode:"Verschiebemodus aktivieren. Tastenkombination: D-Taste",disableSignDragMode:"Verschiebemodus deaktivieren. Tastenkombination: D-Taste",enableSignDragModeAria:"Tastatur-Verschiebemodus mit Pfeiltasten aktivieren. Tastenkombination: D-Taste",disableSignDragModeAria:"Tastatur-Verschiebemodus mit Pfeiltasten deaktivieren. Tastenkombination: D-Taste",enableSignResizeMode:"Größenänderungsmodus aktivieren. Tastenkombination: R-Taste",disableSignResizeMode:"Größenänderungsmodus deaktivieren. Tastenkombination: R-Taste",enableSignResizeModeAria:"Tastatur-Größenänderungsmodus mit Pfeiltasten aktivieren. Tastenkombination: R-Taste",disableSignResizeModeAria:"Tastatur-Größenänderungsmodus mit Pfeiltasten deaktivieren. Tastenkombination: R-Taste",resizeHandle:"Größenänderung {direction}-Ecke",moreOptions:"Weitere Optionen",noMoreOptions:"Keine weiteren Optionen verfügbar"},captions:{off:"Aus",select:"Untertitel auswählen",fontSize:"Schriftgröße",fontFamily:"Schriftart",color:"Textfarbe",backgroundColor:"Hintergrundfarbe",opacity:"Deckkraft"},fontSizes:{small:"Klein",normal:"Normal",large:"Groß",xlarge:"Sehr groß"},fontFamilies:{sansSerif:"Sans-serif",serif:"Serif",monospace:"Monospace"},styleLabels:{textColor:"Textfarbe",background:"Hintergrund",font:"Schrift",fontSize:"Schriftgröße",opacity:"Deckkraft"},audioDescription:{enable:"Audiodeskription aktivieren",disable:"Audiodeskription deaktivieren"},signLanguage:{show:"Gebärdensprache-Video anzeigen",hide:"Gebärdensprache-Video ausblenden"},transcript:{title:"Transkript",ariaLabel:"Video-Transkript",close:"Transkript schließen",loading:"Transkript wird geladen...",noTranscript:"Kein Transkript für dieses Video verfügbar.",settings:"Transkript-Einstellungen. Eingabetaste zum Öffnen des Menüs drücken oder D zum Aktivieren des Verschiebemodus",keyboardDragMode:"Tastatur-Verschiebemodus mit Pfeiltasten umschalten. Tastenkombination: D-Taste",keyboardDragActive:"⌨️ Tastatur-Verschiebemodus aktiv (Pfeiltasten zum Bewegen, Umschalt+Pfeiltasten für große Schritte, D oder ESC zum Beenden)",dragResizePrompt:"Drücken Sie D zum Verschieben oder R zur Größenänderung. Home setzt die Position zurück, Esc schließt.",dragModeEnabled:"Tastatur-Verschiebemodus aktiviert. Pfeiltasten zum Bewegen, Umschalt+Pfeiltasten für größere Schritte. D oder Esc zum Beenden.",dragModeDisabled:"Tastatur-Verschiebemodus deaktiviert.",enableDragMode:"Verschiebemodus aktivieren. Tastenkombination: D-Taste",disableDragMode:"Verschiebemodus deaktivieren. Tastenkombination: D-Taste",enableDragModeAria:"Tastatur-Verschiebemodus mit Pfeiltasten aktivieren. Tastenkombination: D-Taste",disableDragModeAria:"Tastatur-Verschiebemodus mit Pfeiltasten deaktivieren. Tastenkombination: D-Taste",resizeWindow:"Fenster vergrößern/verkleinern",disableResizeWindow:"Resize-Modus deaktivieren",enableResizeMode:"Größenänderungsmodus aktivieren. Tastenkombination: R-Taste",disableResizeMode:"Größenänderungsmodus deaktivieren. Tastenkombination: R-Taste",enableResizeModeAria:"Tastatur-Größenänderungsmodus mit Pfeiltasten aktivieren. Tastenkombination: R-Taste",disableResizeModeAria:"Tastatur-Größenänderungsmodus mit Pfeiltasten deaktivieren. Tastenkombination: R-Taste",resizeModeHint:"Griffe aktiviert. Ziehen Sie Kanten oder Ecken zum Anpassen. Esc oder R zum Beenden.",resizeModeEnabled:"Resize-Modus aktiviert. Kanten oder Ecken ziehen; Esc oder R beendet.",resizeModeDisabled:"Resize-Modus deaktiviert.",positionReset:"Transkriptposition zurückgesetzt.",styleTranscript:"Transkript-Stileinstellungen öffnen",closeMenu:"Menü schließen",styleTitle:"Transkript-Stil",autoscroll:"Auto-Scroll",settingsMenu:"Transkript-Dialog-Einstellungen",showTimestamps:"Zeitstempel anzeigen",hideTimestamps:"Zeitstempel ausblenden",showTimestampsAria:"Zeitstempel im Transkript anzeigen",hideTimestampsAria:"Zeitstempel im Transkript ausblenden"},settings:{title:"Einstellungen",quality:"Qualität",speed:"Geschwindigkeit",captions:"Untertitel",language:"Sprache",reset:"Zurücksetzen",close:"Schließen"},speeds:{normal:"Normal"},time:{display:"Zeitanzeige",durationPrefix:"Dauer: ",of:"von",hour:"{count} Stunde",hours:"{count} Stunden",minute:"{count} Minute",minutes:"{count} Minuten",second:"{count} Sekunde",seconds:"{count} Sekunden"},playlist:{title:"Wiedergabeliste",trackOf:"Titel {current} von {total}",nowPlaying:"Läuft gerade: Titel {current} von {total}. {title}{artist}",by:" von ",untitled:"Ohne Titel",trackUntitled:"Titel {number}",currentlyPlaying:"Wird gerade abgespielt",notPlaying:"Nicht aktiv",pressEnterPlay:"Eingabetaste zum Abspielen",pressEnterRestart:"Eingabetaste zum Neustart",keyboardInstructions:"Wiedergabelisten-Navigation: Verwenden Sie die Pfeiltasten nach oben und unten, um zwischen Titeln zu wechseln. Drücken Sie Bild auf oder Bild ab, um 5 Titel zu überspringen. Drücken Sie Pos1, um zum ersten Titel zu springen, Ende für den letzten Titel. Drücken Sie die Eingabetaste oder Leertaste, um den ausgewählten Titel abzuspielen.",endOfPlaylist:"Ende der Wiedergabeliste. {current} von {total}.",beginningOfPlaylist:"Anfang der Wiedergabeliste. 1 von {total}.",jumpedToLastTrack:"Zum letzten Titel gesprungen. {current} von {total}.",jumpedToFirstTrack:"Zum ersten Titel gesprungen. 1 von {total}.",firstTrack:"Erster Titel. 1 von {total}.",lastTrack:"Letzter Titel. {current} von {total}."}}});var Ce={};R(Ce,{es:()=>at});var at,De=x(()=>{at={player:{label:"Reproductor de video",play:"Reproducir",pause:"Pausa",stop:"Detener",restart:"Reiniciar desde el principio",rewind:"Retroceder",forward:"Avanzar",rewindSeconds:"Retroceder {seconds} segundos",forwardSeconds:"Avanzar {seconds} segundos",previous:"Pista anterior",next:"Siguiente pista",playlist:"Alternar lista de reproducción",volume:"Volumen",mute:"Silenciar",unmute:"Activar sonido",fullscreen:"Pantalla completa",exitFullscreen:"Salir de pantalla completa",captions:"Subtítulos",chapters:"Capítulos",quality:"Calidad",captionStyling:"Estilo de subtítulos",transcript:"Alternar transcripción",audioDescription:"Audiodescripción",signLanguage:"Video en lengua de señas",settings:"Configuración",speed:"Velocidad de reproducción",pip:"Imagen en imagen",currentTime:"Tiempo actual",duration:"Duración",progress:"Progreso",seekForward:"Avanzar {seconds} segundos",seekBackward:"Retroceder {seconds} segundos",volumeUp:"Subir volumen",volumeDown:"Bajar volumen",loading:"Cargando...",loadingChapters:"Cargando capítulos...",error:"Error al cargar",buffering:"Almacenando en búfer...",signLanguageVideo:"Video en Lengua de Señas",closeSignLanguage:"Cerrar video en lengua de señas",signLanguageSettings:"Configuración de lengua de señas",noChapters:"No hay capítulos disponibles",noCaptions:"No hay subtítulos disponibles",auto:"Automático",autoQuality:"Automático (selección de calidad no disponible)",noQuality:"Selección de calidad no disponible",signLanguageDragResize:"Video en Lengua de Señas - Presione D para arrastrar con el teclado, R para cambiar el tamaño",signLanguageDragActive:"Video en Lengua de Señas - Modo de arrastre activo. Use las teclas de flecha para mover, Escape para salir.",signLanguageResizeActive:"Video en Lengua de Señas - Modo de cambio de tamaño activo. Use las teclas de flecha izquierda/derecha para cambiar el tamaño, Escape para salir.",enableSignDragMode:"Activar modo de arrastre. Atajo: tecla D",disableSignDragMode:"Desactivar modo de arrastre. Atajo: tecla D",enableSignDragModeAria:"Activar modo de arrastre con teclado usando teclas de flecha. Atajo: tecla D",disableSignDragModeAria:"Desactivar modo de arrastre con teclado usando teclas de flecha. Atajo: tecla D",enableSignResizeMode:"Activar modo de cambio de tamaño. Atajo: tecla R",disableSignResizeMode:"Desactivar modo de cambio de tamaño. Atajo: tecla R",enableSignResizeModeAria:"Activar modo de cambio de tamaño con teclado usando teclas de flecha. Atajo: tecla R",disableSignResizeModeAria:"Desactivar modo de cambio de tamaño con teclado usando teclas de flecha. Atajo: tecla R",resizeHandle:"Cambiar tamaño esquina {direction}",moreOptions:"Más opciones",noMoreOptions:"No hay opciones adicionales disponibles"},captions:{off:"Desactivado",select:"Seleccionar subtítulos",fontSize:"Tamaño de fuente",fontFamily:"Familia de fuente",color:"Color de texto",backgroundColor:"Color de fondo",opacity:"Opacidad"},fontSizes:{small:"Pequeño",normal:"Normal",large:"Grande",xlarge:"Muy grande"},fontFamilies:{sansSerif:"Sans-serif",serif:"Serif",monospace:"Monospace"},styleLabels:{textColor:"Color de texto",background:"Fondo",font:"Fuente",fontSize:"Tamaño de fuente",opacity:"Opacidad"},audioDescription:{enable:"Activar audiodescripción",disable:"Desactivar audiodescripción"},signLanguage:{show:"Mostrar video en lengua de señas",hide:"Ocultar video en lengua de señas"},transcript:{title:"Transcripción",ariaLabel:"Transcripción de video",close:"Cerrar transcripción",loading:"Cargando transcripción...",noTranscript:"No hay transcripción disponible para este video.",settings:"Configuración de transcripción. Presione Enter para abrir el menú o D para activar el modo de arrastre",keyboardDragMode:"Alternar modo de arrastre con teclado usando teclas de flecha. Atajo: tecla D",keyboardDragActive:"⌨️ Modo de Arrastre con Teclado Activo (Teclas de flecha para mover, Mayús+Flechas para pasos grandes, D o ESC para salir)",dragResizePrompt:"Pulsa D para mover o R para cambiar el tamaño. Home restablece la posición; Esc cierra.",dragModeEnabled:"Modo de arrastre con teclado activado. Usa flechas para mover, Mayús+Flechas para pasos grandes. Pulsa D o Esc para salir.",dragModeDisabled:"Modo de arrastre con teclado desactivado.",enableDragMode:"Activar modo de arrastre. Atajo: tecla D",disableDragMode:"Desactivar modo de arrastre. Atajo: tecla D",enableDragModeAria:"Activar modo de arrastre con teclado usando teclas de flecha. Atajo: tecla D",disableDragModeAria:"Desactivar modo de arrastre con teclado usando teclas de flecha. Atajo: tecla D",resizeWindow:"Cambiar tamaño de ventana",disableResizeWindow:"Desactivar modo de cambio de tamaño",enableResizeMode:"Activar modo de cambio de tamaño. Atajo: tecla R",disableResizeMode:"Desactivar modo de cambio de tamaño. Atajo: tecla R",enableResizeModeAria:"Activar modo de cambio de tamaño con teclado usando teclas de flecha. Atajo: tecla R",disableResizeModeAria:"Desactivar modo de cambio de tamaño con teclado usando teclas de flecha. Atajo: tecla R",resizeModeHint:"Controladores habilitados. Arrastra bordes o esquinas para ajustar. Pulsa Esc o R para salir.",resizeModeEnabled:"Modo de cambio de tamaño activado. Arrastra bordes o esquinas. Pulsa Esc o R para salir.",resizeModeDisabled:"Modo de cambio de tamaño desactivado.",positionReset:"Posición de la transcripción restablecida.",styleTranscript:"Abrir configuración de estilo de transcripción",closeMenu:"Cerrar menú",styleTitle:"Estilo de Transcripción",autoscroll:"Desplazamiento automático",settingsMenu:"Configuración del diálogo de transcripción",showTimestamps:"Mostrar marcas de tiempo",hideTimestamps:"Ocultar marcas de tiempo",showTimestampsAria:"Mostrar marcas de tiempo en la transcripción",hideTimestampsAria:"Ocultar marcas de tiempo en la transcripción"},settings:{title:"Configuración",quality:"Calidad",speed:"Velocidad",captions:"Subtítulos",language:"Idioma",reset:"Restablecer",close:"Cerrar"},speeds:{normal:"Normal"},time:{display:"Visualización de tiempo",durationPrefix:"Duración: ",of:"de",hour:"{count} hora",hours:"{count} horas",minute:"{count} minuto",minutes:"{count} minutos",second:"{count} segundo",seconds:"{count} segundos"},playlist:{title:"Lista de reproducción",trackOf:"Pista {current} de {total}",nowPlaying:"Reproduciendo ahora: Pista {current} de {total}. {title}{artist}",by:" por ",untitled:"Sin título",trackUntitled:"Pista {number}",currentlyPlaying:"Reproduciendo actualmente",notPlaying:"Sin reproducir",pressEnterPlay:"Pulsa Enter para reproducir",pressEnterRestart:"Pulsa Enter para reiniciar",keyboardInstructions:"Navegación de lista de reproducción: Use las teclas de flecha arriba y abajo para moverse entre pistas. Pulse Retroceder página o Avanzar página para saltar 5 pistas. Pulse Inicio para ir a la primera pista, Fin para la última pista. Pulse Intro o Espacio para reproducir la pista seleccionada.",endOfPlaylist:"Fin de la lista de reproducción. {current} de {total}.",beginningOfPlaylist:"Inicio de la lista de reproducción. 1 de {total}.",jumpedToLastTrack:"Saltó a la última pista. {current} de {total}.",jumpedToFirstTrack:"Saltó a la primera pista. 1 de {total}.",firstTrack:"Primera pista. 1 de {total}.",lastTrack:"Última pista. {current} de {total}."}}});var Ae={};R(Ae,{fr:()=>nt});var nt,ze=x(()=>{nt={player:{label:"Lecteur vidéo",play:"Lecture",pause:"Pause",stop:"Arrêt",restart:"Redémarrer du début",rewind:"Reculer",forward:"Avancer",rewindSeconds:"Reculer de {seconds} secondes",forwardSeconds:"Avancer de {seconds} secondes",previous:"Piste précédente",next:"Piste suivante",playlist:"Basculer la liste de lecture",volume:"Volume",mute:"Muet",unmute:"Activer le son",fullscreen:"Plein écran",exitFullscreen:"Quitter le plein écran",captions:"Sous-titres",chapters:"Chapitres",quality:"Qualité",captionStyling:"Style des sous-titres",transcript:"Activer/désactiver la transcription",audioDescription:"Audiodescription",signLanguage:"Vidéo en langue des signes",settings:"Paramètres",speed:"Vitesse de lecture",pip:"Image dans l'image",currentTime:"Temps actuel",duration:"Durée",progress:"Progression",seekForward:"Avancer de {seconds} secondes",seekBackward:"Reculer de {seconds} secondes",volumeUp:"Augmenter le volume",volumeDown:"Diminuer le volume",loading:"Chargement...",loadingChapters:"Chargement des chapitres...",error:"Erreur de chargement",buffering:"Mise en mémoire tampon...",signLanguageVideo:"Vidéo en Langue des Signes",closeSignLanguage:"Fermer la vidéo en langue des signes",signLanguageSettings:"Paramètres de la langue des signes",noChapters:"Aucun chapitre disponible",noCaptions:"Aucun sous-titre disponible",auto:"Automatique",autoQuality:"Automatique (sélection de qualité non disponible)",noQuality:"Sélection de qualité non disponible",signLanguageDragResize:"Vidéo en Langue des Signes - Appuyez sur D pour déplacer avec le clavier, R pour redimensionner",signLanguageDragActive:"Vidéo en Langue des Signes - Mode glissement actif. Utilisez les touches fléchées pour déplacer, Échap pour quitter.",signLanguageResizeActive:"Vidéo en Langue des Signes - Mode redimensionnement actif. Utilisez les touches fléchées gauche/droite pour redimensionner, Échap pour quitter.",enableSignDragMode:"Activer le mode glissement. Raccourci : touche D",disableSignDragMode:"Désactiver le mode glissement. Raccourci : touche D",enableSignDragModeAria:"Activer le mode glissement clavier avec les touches fléchées. Raccourci : touche D",disableSignDragModeAria:"Désactiver le mode glissement clavier avec les touches fléchées. Raccourci : touche D",enableSignResizeMode:"Activer le mode redimensionnement. Raccourci : touche R",disableSignResizeMode:"Désactiver le mode redimensionnement. Raccourci : touche R",enableSignResizeModeAria:"Activer le mode redimensionnement clavier avec les touches fléchées. Raccourci : touche R",disableSignResizeModeAria:"Désactiver le mode redimensionnement clavier avec les touches fléchées. Raccourci : touche R",resizeHandle:"Redimensionner coin {direction}",moreOptions:"Plus d'options",noMoreOptions:"Aucune option supplémentaire disponible"},captions:{off:"Désactivé",select:"Sélectionner les sous-titres",fontSize:"Taille de police",fontFamily:"Police",color:"Couleur du texte",backgroundColor:"Couleur de fond",opacity:"Opacité"},fontSizes:{small:"Petit",normal:"Normal",large:"Grand",xlarge:"Très grand"},fontFamilies:{sansSerif:"Sans-serif",serif:"Serif",monospace:"Monospace"},styleLabels:{textColor:"Couleur du texte",background:"Arrière-plan",font:"Police",fontSize:"Taille de police",opacity:"Opacité"},audioDescription:{enable:"Activer l'audiodescription",disable:"Désactiver l'audiodescription"},signLanguage:{show:"Afficher la vidéo en langue des signes",hide:"Masquer la vidéo en langue des signes"},transcript:{title:"Transcription",ariaLabel:"Transcription vidéo",close:"Fermer la transcription",loading:"Chargement de la transcription...",noTranscript:"Aucune transcription disponible pour cette vidéo.",settings:"Paramètres de transcription. Appuyez sur Entrée pour ouvrir le menu ou D pour activer le mode glissement",keyboardDragMode:"Basculer le mode glissement avec les touches fléchées. Raccourci: touche D",keyboardDragActive:"⌨️ Mode Glissement Clavier Actif (Touches fléchées pour déplacer, Maj+Fléchées pour grands pas, D ou Échap pour quitter)",dragResizePrompt:"Appuyez sur D pour déplacer ou R pour redimensionner. Home réinitialise la position, Échap ferme.",dragModeEnabled:"Mode glissement clavier activé. Utilisez les flèches pour déplacer, Maj+Flèches pour de grands pas. Appuyez sur D ou Échap pour quitter.",dragModeDisabled:"Mode glissement clavier désactivé.",enableDragMode:"Activer le mode glissement. Raccourci : touche D",disableDragMode:"Désactiver le mode glissement. Raccourci : touche D",enableDragModeAria:"Activer le mode glissement clavier avec les touches fléchées. Raccourci : touche D",disableDragModeAria:"Désactiver le mode glissement clavier avec les touches fléchées. Raccourci : touche D",resizeWindow:"Redimensionner la fenêtre",disableResizeWindow:"Désactiver le mode de redimensionnement",enableResizeMode:"Activer le mode redimensionnement. Raccourci : touche R",disableResizeMode:"Désactiver le mode redimensionnement. Raccourci : touche R",enableResizeModeAria:"Activer le mode redimensionnement clavier avec les touches fléchées. Raccourci : touche R",disableResizeModeAria:"Désactiver le mode redimensionnement clavier avec les touches fléchées. Raccourci : touche R",resizeModeHint:"Poignées activées. Faites glisser les bords ou les coins pour ajuster. Appuyez sur Échap ou R pour quitter.",resizeModeEnabled:"Mode redimensionnement activé. Faites glisser les bords ou coins. Appuyez sur Échap ou R pour quitter.",resizeModeDisabled:"Mode redimensionnement désactivé.",positionReset:"Position de la transcription réinitialisée.",styleTranscript:"Ouvrir les paramètres de style de transcription",closeMenu:"Fermer le menu",styleTitle:"Style de Transcription",autoscroll:"Défilement automatique",settingsMenu:"Paramètres de dialogue de transcription",showTimestamps:"Afficher les horodatages",hideTimestamps:"Masquer les horodatages",showTimestampsAria:"Afficher les horodatages dans la transcription",hideTimestampsAria:"Masquer les horodatages dans la transcription"},settings:{title:"Paramètres",quality:"Qualité",speed:"Vitesse",captions:"Sous-titres",language:"Langue",reset:"Réinitialiser",close:"Fermer"},speeds:{normal:"Normal"},time:{display:"Affichage du temps",durationPrefix:"Durée : ",of:"sur",hour:"{count} heure",hours:"{count} heures",minute:"{count} minute",minutes:"{count} minutes",second:"{count} seconde",seconds:"{count} secondes"},playlist:{title:"Liste de lecture",trackOf:"Piste {current} sur {total}",nowPlaying:"Lecture en cours : Piste {current} sur {total}. {title}{artist}",by:" par ",untitled:"Sans titre",trackUntitled:"Piste {number}",currentlyPlaying:"En cours de lecture",notPlaying:"Non en lecture",pressEnterPlay:"Appuyez sur Entrée pour lire",pressEnterRestart:"Appuyez sur Entrée pour recommencer",keyboardInstructions:"Navigation de la liste de lecture : Utilisez les touches fléchées haut et bas pour naviguer entre les pistes. Appuyez sur Page précédente ou Page suivante pour sauter 5 pistes. Appuyez sur Début pour aller à la première piste, Fin pour la dernière piste. Appuyez sur Entrée ou Espace pour lire la piste sélectionnée.",endOfPlaylist:"Fin de la liste de lecture. {current} sur {total}.",beginningOfPlaylist:"Début de la liste de lecture. 1 sur {total}.",jumpedToLastTrack:"Sauté à la dernière piste. {current} sur {total}.",jumpedToFirstTrack:"Sauté à la première piste. 1 sur {total}.",firstTrack:"Première piste. 1 sur {total}.",lastTrack:"Dernière piste. {current} sur {total}."}}});var Re={};R(Re,{ja:()=>rt});var rt,Be=x(()=>{rt={player:{label:"ビデオプレーヤー",play:"再生",pause:"一時停止",stop:"停止",restart:"最初から再生",rewind:"巻き戻し",forward:"早送り",rewindSeconds:"{seconds}秒戻す",forwardSeconds:"{seconds}秒進める",previous:"前のトラック",next:"次のトラック",playlist:"プレイリストの切り替え",volume:"音量",mute:"ミュート",unmute:"ミュート解除",fullscreen:"全画面表示",exitFullscreen:"全画面表示を終了",captions:"字幕",chapters:"チャプター",quality:"画質",captionStyling:"字幕スタイル",transcript:"文字起こし切り替え",audioDescription:"音声解説",signLanguage:"手話動画",settings:"設定",speed:"再生速度",pip:"ピクチャーインピクチャー",currentTime:"現在の時間",duration:"再生時間",progress:"進行状況",seekForward:"{seconds}秒進める",seekBackward:"{seconds}秒戻す",volumeUp:"音量を上げる",volumeDown:"音量を下げる",loading:"読み込み中...",loadingChapters:"チャプター読み込み中...",error:"読み込みエラー",buffering:"バッファリング中...",signLanguageVideo:"手話動画",closeSignLanguage:"手話動画を閉じる",signLanguageSettings:"手話設定",noChapters:"チャプターがありません",noCaptions:"字幕がありません",auto:"自動",autoQuality:"自動(画質選択不可)",noQuality:"画質選択不可",signLanguageDragResize:"手話動画 - キーボードでドラッグするにはDキーを、サイズ変更するにはRキーを押してください",signLanguageDragActive:"手話動画 - ドラッグモードが有効です。矢印キーで移動、Escapeで終了します。",signLanguageResizeActive:"手話動画 - サイズ変更モードが有効です。左右の矢印キーでサイズ変更、Escapeで終了します。",enableSignDragMode:"ドラッグモードを有効にする。ショートカット:Dキー",disableSignDragMode:"ドラッグモードを無効にする。ショートカット:Dキー",enableSignDragModeAria:"矢印キーでキーボードドラッグモードを有効にする。ショートカット:Dキー",disableSignDragModeAria:"矢印キーでキーボードドラッグモードを無効にする。ショートカット:Dキー",enableSignResizeMode:"サイズ変更モードを有効にする。ショートカット:Rキー",disableSignResizeMode:"サイズ変更モードを無効にする。ショートカット:Rキー",enableSignResizeModeAria:"矢印キーでキーボードサイズ変更モードを有効にする。ショートカット:Rキー",disableSignResizeModeAria:"矢印キーでキーボードサイズ変更モードを無効にする。ショートカット:Rキー",resizeHandle:"{direction}コーナーのサイズ変更",moreOptions:"その他のオプション",noMoreOptions:"追加のオプションはありません"},captions:{off:"オフ",select:"字幕を選択",fontSize:"フォントサイズ",fontFamily:"フォント",color:"テキストの色",backgroundColor:"背景色",opacity:"不透明度"},fontSizes:{small:"小",normal:"標準",large:"大",xlarge:"特大"},fontFamilies:{sansSerif:"サンセリフ",serif:"セリフ",monospace:"等幅"},styleLabels:{textColor:"テキストの色",background:"背景",font:"フォント",fontSize:"フォントサイズ",opacity:"不透明度"},audioDescription:{enable:"音声解説を有効にする",disable:"音声解説を無効にする"},signLanguage:{show:"手話動画を表示",hide:"手話動画を非表示"},transcript:{title:"文字起こし",ariaLabel:"ビデオ文字起こし",close:"文字起こしを閉じる",loading:"文字起こしを読み込み中...",noTranscript:"このビデオの文字起こしはありません。",settings:"文字起こし設定。Enterキーでメニューを開く、またはDキーでドラッグモードを有効にする",keyboardDragMode:"矢印キーでキーボードドラッグモードを切り替え。ショートカット:Dキー",keyboardDragActive:"⌨️ キーボードドラッグモード有効(矢印キーで移動、Shift+矢印キーで大きく移動、DまたはESCで終了)",dragResizePrompt:"Dキーで移動、Rキーでサイズ変更。Homeで位置をリセット、Escで閉じます。",dragModeEnabled:"キーボードドラッグモードを有効にしました。矢印キーで移動、Shift+矢印キーで大きく移動できます。終了するには D または Esc を押します。",dragModeDisabled:"キーボードドラッグモードを無効にしました。",enableDragMode:"ドラッグモードを有効にする。ショートカット:Dキー",disableDragMode:"ドラッグモードを無効にする。ショートカット:Dキー",enableDragModeAria:"矢印キーでキーボードドラッグモードを有効にする。ショートカット:Dキー",disableDragModeAria:"矢印キーでキーボードドラッグモードを無効にする。ショートカット:Dキー",resizeWindow:"ウィンドウのサイズ変更",disableResizeWindow:"サイズ変更モードを無効にする",enableResizeMode:"サイズ変更モードを有効にする。ショートカット:Rキー",disableResizeMode:"サイズ変更モードを無効にする。ショートカット:Rキー",enableResizeModeAria:"矢印キーでキーボードサイズ変更モードを有効にする。ショートカット:Rキー",disableResizeModeAria:"矢印キーでキーボードサイズ変更モードを無効にする。ショートカット:Rキー",resizeModeHint:"リサイズハンドルが有効になりました。辺や角をドラッグして調整します。Esc または R で終了します。",resizeModeEnabled:"サイズ変更モードを有効にしました。辺や角をドラッグして調整します。Esc または R で終了します。",resizeModeDisabled:"サイズ変更モードを無効にしました。",positionReset:"文字起こしの位置をリセットしました。",styleTranscript:"文字起こしスタイル設定を開く",closeMenu:"メニューを閉じる",styleTitle:"文字起こしスタイル",autoscroll:"自動スクロール",settingsMenu:"文字起こしダイアログ設定",showTimestamps:"タイムスタンプを表示",hideTimestamps:"タイムスタンプを非表示",showTimestampsAria:"文字起こしにタイムスタンプを表示",hideTimestampsAria:"文字起こしのタイムスタンプを非表示"},settings:{title:"設定",quality:"画質",speed:"速度",captions:"字幕",language:"言語",reset:"リセット",close:"閉じる"},speeds:{normal:"通常"},time:{display:"時間表示",durationPrefix:"再生時間: ",of:"/",hour:"{count}時間",hours:"{count}時間",minute:"{count}分",minutes:"{count}分",second:"{count}秒",seconds:"{count}秒"},playlist:{title:"プレイリスト",trackOf:"トラック {current}/{total}",nowPlaying:"再生中: トラック {current}/{total}. {title}{artist}",by:" - ",untitled:"タイトルなし",trackUntitled:"トラック {number}",currentlyPlaying:"再生中",notPlaying:"停止中",pressEnterPlay:"Enterキーで再生",pressEnterRestart:"Enterキーで最初から再生",keyboardInstructions:"プレイリストナビゲーション:上下の矢印キーでトラック間を移動します。Page UpまたはPage Downで5トラックをスキップします。Homeで最初のトラックへ、Endで最後のトラックへ移動します。EnterまたはSpaceで選択したトラックを再生します。",endOfPlaylist:"プレイリストの終わりです。{current}/{total}。",beginningOfPlaylist:"プレイリストの始めです。1/{total}。",jumpedToLastTrack:"最後のトラックにジャンプしました。{current}/{total}。",jumpedToFirstTrack:"最初のトラックにジャンプしました。1/{total}。",firstTrack:"最初のトラックです。1/{total}。",lastTrack:"最後のトラックです。{current}/{total}。"}}});function de(){return{en:Te}}function $e(){return He}async function Oe(m){let e=He[m];if(!e)return null;let t=await e();return t[m]||t.default||null}var He,bt,Ve=x(()=>{Ee();He={de:()=>Promise.resolve().then(()=>(xe(),Pe)),es:()=>Promise.resolve().then(()=>(De(),Ce)),fr:()=>Promise.resolve().then(()=>(ze(),Ae)),ja:()=>Promise.resolve().then(()=>(Be(),Re))};bt=de()});var ue,g,O=x(()=>{Ve();ue=class{constructor(){this.currentLanguage="en",this.translations=de(),this.loadingPromises=new Map,this.builtInLanguageLoaders=$e()}setLanguage(e){this.translations[e]?this.currentLanguage=e:(console.warn('Language "'.concat(e,'" not found, falling back to English')),this.currentLanguage="en")}getLanguage(){return this.currentLanguage}async ensureLanguage(e){let t=(e||"").toLowerCase();if(!t)return this.currentLanguage;if(this.translations[t])return t;if(this.loadingPromises.has(t))return await this.loadingPromises.get(t),this.translations[t]?t:null;if(!this.builtInLanguageLoaders[t])return null;let i=(async()=>{try{let s=await Oe(t);s&&(this.translations[t]=s)}catch(s){console.warn('Language "'.concat(t,'" failed to load:'),s)}finally{this.loadingPromises.delete(t)}})();return this.loadingPromises.set(t,i),await i,this.translations[t]?t:null}t(e,t={}){let i=e.split("."),s=this.translations[this.currentLanguage];for(let a of i)if(s&&typeof s=="object"&&a in s)s=s[a];else{s=this.translations.en;for(let n of i)if(s&&typeof s=="object"&&n in s)s=s[n];else return e;break}return typeof s=="string"&&Object.entries(t).forEach(([a,n])=>{s=s.replace(new RegExp("{".concat(a,"}"),"g"),n)}),s}addTranslation(e,t){this.translations[e]||(this.translations[e]={}),Object.assign(this.translations[e],t)}async loadLanguageFromUrl(e,t){if(this.loadingPromises.has(t))return this.loadingPromises.get(t);let i=(async()=>{try{let s=await fetch(t);if(!s.ok)throw new Error("Failed to load language file: ".concat(s.statusText));let a=s.headers.get("content-type")||"",n,l=await s.arrayBuffer(),c=new TextDecoder("utf-8").decode(l);if(a.includes("application/json")||t.endsWith(".json"))n=JSON.parse(c);else if(a.includes("text/yaml")||a.includes("application/x-yaml")||t.endsWith(".yaml")||t.endsWith(".yml"))try{n=JSON.parse(c)}catch(o){if(typeof window!="undefined"&&window.jsyaml)n=window.jsyaml.load(c);else throw console.warn("YAML parsing requires js-yaml library. Please include it or use JSON format."),new Error("YAML parsing not available. Please use JSON format or include js-yaml library.")}else n=JSON.parse(c);return this.addTranslation(e,n),n}catch(s){throw console.error("Error loading language file from ".concat(t,":"),s),s}finally{this.loadingPromises.delete(t)}})();return this.loadingPromises.set(t,i),i}async loadLanguagesFromUrls(e){let t=Object.entries(e).map(([i,s])=>this.loadLanguageFromUrl(i,s));await Promise.all(t)}},g=new ue});var C,Z=x(()=>{O();C={formatTime(m,e=!1){if(!isFinite(m)||m<0)return e?"00:00:00":"00:00";let t=Math.floor(m/3600),i=Math.floor(m%3600/60),s=Math.floor(m%60),a=n=>String(n).padStart(2,"0");return t>0||e?"".concat(a(t),":").concat(a(i),":").concat(a(s)):"".concat(a(i),":").concat(a(s))},parseTime(m){let e=m.split(":").map(t=>parseInt(t,10));return e.length===3?e[0]*3600+e[1]*60+e[2]:e.length===2?e[0]*60+e[1]:e.length===1?e[0]:0},formatDuration(m){if(!isFinite(m)||m<0)return g.t("time.seconds",{count:0});let e=Math.floor(m/3600),t=Math.floor(m%3600/60),i=Math.floor(m%60),s=[];if(e>0){let a=e===1?"time.hour":"time.hours";s.push(g.t(a,{count:e}))}if(t>0){let a=t===1?"time.minute":"time.minutes";s.push(g.t(a,{count:t}))}if(i>0||s.length===0){let a=i===1?"time.second":"time.seconds";s.push(g.t(a,{count:i}))}return s.join(", ")},formatPercentage(m,e){return e===0?0:Math.round(m/e*100)}}});function ct(m){return Fe[m]||Fe.play}function M(m,e=""){let t=document.createElement("span");return t.className="vidply-icon ".concat(e).trim(),t.innerHTML=ct(m),t.setAttribute("aria-hidden","true"),t}function We(){let m=document.createElementNS("http://www.w3.org/2000/svg","svg");m.setAttribute("class","vidply-play-overlay"),m.setAttribute("viewBox","0 0 80 80"),m.setAttribute("width","80"),m.setAttribute("height","80"),m.setAttribute("aria-hidden","true"),m.setAttribute("role","presentation"),m.style.cursor="pointer";let e=document.createElementNS("http://www.w3.org/2000/svg","defs"),t="vidply-play-shadow-".concat(Math.random().toString(36).substr(2,9)),i=document.createElementNS("http://www.w3.org/2000/svg","filter");i.setAttribute("id",t),i.setAttribute("x","-50%"),i.setAttribute("y","-50%"),i.setAttribute("width","200%"),i.setAttribute("height","200%");let s=document.createElementNS("http://www.w3.org/2000/svg","feGaussianBlur");s.setAttribute("in","SourceAlpha"),s.setAttribute("stdDeviation","3");let a=document.createElementNS("http://www.w3.org/2000/svg","feOffset");a.setAttribute("dx","0"),a.setAttribute("dy","2"),a.setAttribute("result","offsetblur");let n=document.createElementNS("http://www.w3.org/2000/svg","feComponentTransfer"),l=document.createElementNS("http://www.w3.org/2000/svg","feFuncA");l.setAttribute("type","linear"),l.setAttribute("slope","0.3"),n.appendChild(l);let c=document.createElementNS("http://www.w3.org/2000/svg","feMerge"),o=document.createElementNS("http://www.w3.org/2000/svg","feMergeNode"),r=document.createElementNS("http://www.w3.org/2000/svg","feMergeNode");r.setAttribute("in","SourceGraphic"),c.appendChild(o),c.appendChild(r),i.appendChild(s),i.appendChild(a),i.appendChild(n),i.appendChild(c),e.appendChild(i),m.appendChild(e);let d=document.createElementNS("http://www.w3.org/2000/svg","circle");d.setAttribute("cx","40"),d.setAttribute("cy","40"),d.setAttribute("r","40"),d.setAttribute("fill","rgba(255, 255, 255, 0.95)"),d.setAttribute("filter","url(#".concat(t,")")),d.setAttribute("class","vidply-play-overlay-bg"),m.appendChild(d);let u=document.createElementNS("http://www.w3.org/2000/svg","polygon");return u.setAttribute("points","32,28 32,52 54,40"),u.setAttribute("fill","#0a406e"),u.setAttribute("class","vidply-play-overlay-icon"),m.appendChild(u),m}var ot,lt,Fe,U=x(()=>{ot={play:'<path d="M8 5v14l11-7z"/>',pause:'<path d="M6 4h4v16H6V4zm8 0h4v16h-4V4z"/>',stop:'<rect x="6" y="6" width="12" height="12"/>',rewind:'<path d="M11 18V6l-8.5 6 8.5 6zm.5-6l8.5 6V6l-8.5 6z"/>',forward:'<path d="M4 18l8.5-6L4 6v12zm9-12v12l8.5-6L13 6z"/>',skipPrevious:'<path d="M6 6h2v12H6V6zm3 6l8.5 6V6L9 12z"/>',skipNext:'<path d="M16 6h2v12h-2V6zM6 6l8.5 6L6 18V6z"/>',restart:'<path d="M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z"/>',volumeHigh:'<path d="M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z"/>',volumeMedium:'<path d="M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02z"/>',volumeLow:'<path d="M7 9v6h4l5 5V4l-5 5H7z"/>',volumeMuted:'<path d="M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z"/>',fullscreen:'<path d="M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"/>',fullscreenExit:'<path d="M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"/>',settings:'<path d="M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94L14.4 2.81c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"/>',captions:'<path d="M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-8 7H9.5v-.5h-2v3h2V13H11v1c0 .55-.45 1-1 1H7c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1zm7 0h-1.5v-.5h-2v3h2V13H18v1c0 .55-.45 1-1 1h-3c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1z"/>',captionsOff:'<path d="M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-8 7H9.5v-.5h-2v3h2V13H11v1c0 .55-.45 1-1 1H7c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1zm7 0h-1.5v-.5h-2v3h2V13H18v1c0 .55-.45 1-1 1h-3c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1z"/><path d="M0 0h24v24H0z" fill="none"/>',pip:'<path d="M19 7h-8v6h8V7zm2-4H3c-1.1 0-2 .9-2 2v14c0 1.1.9 1.98 2 1.98h18c1.1 0 2-.88 2-1.98V5c0-1.1-.9-2-2-2zm0 16.01H3V4.98h18v14.03z"/>',speed:'<path d="M20.38 8.57l-1.23 1.85a8 8 0 0 1-.22 7.58H5.07A8 8 0 0 1 15.58 6.85l1.85-1.23A10 10 0 0 0 3.35 19a2 2 0 0 0 1.72 1h13.85a2 2 0 0 0 1.74-1 10 10 0 0 0-.27-10.44z"/><path d="M10.59 15.41a2 2 0 0 0 2.83 0l5.66-8.49-8.49 5.66a2 2 0 0 0 0 2.83z"/>',close:'<path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/>',check:'<path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/>',loading:'<path d="M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z"/>',error:'<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"/>',playlist:'<path d="M15 6H3v2h12V6zm0 4H3v2h12v-2zM3 16h8v-2H3v2zM17 6v8.18c-.31-.11-.65-.18-1-.18-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3V8h3V6h-5z"/>',hd:'<path d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-8 12H9.5v-2h-2v2H6V9h1.5v2.5h2V9H11v6zm7-1c0 .55-.45 1-1 1h-.75v1.5h-1.5V15H14c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v4zm-3.5-.5h2v-3h-2v3z"/>',transcript:'<path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z"/>',chapters:'<path d="M3 5h2v2H3V5zm0 4h2v2H3V9zm0 4h2v2H3v-2zm0 4h2v2H3v-2zM7 5h14v2H7V5zm0 4h14v2H7V9zm0 4h14v2H7v-2zm0 4h14v2H7v-2z"/>',audioDescription:'<rect x="2" y="5" width="20" height="14" rx="2" fill="#ffffff" stroke="#ffffff" stroke-width="2"/><text x="12" y="16" font-family="Arial, sans-serif" font-size="10" font-weight="bold" text-anchor="middle" fill="#1a1a1a">AD</text>',audioDescriptionOn:'<rect x="2" y="5" width="20" height="14" rx="2" fill="none" stroke="currentColor" stroke-width="2"/><text x="12" y="16" font-family="Arial, sans-serif" font-size="10" font-weight="bold" text-anchor="middle" fill="currentColor">AD</text>',signLanguage:'<g transform="scale(1.5)"><path d="M16 11.3c-.1-.9-4.8 1.3-5.4 1.1-2.6-1 5.8-1.3 5.1-2.9s-5.1 1.5-6 1.4C6.5 9.4 16.5 9.1 13.5 8c-1.9-.6-8.8 2.9-6.8.4.7-.6.7-1.9-.7-1.7-9.7 7.2-.7 12.2 8.8 7 0-1.3-3.5.4-4.1.4-2.6 0 5.6-2 5.4-3ZM3.9 7.8c3.2-4.2 3.7 1.2 6 .1s.2-.2.2-.3c.7-2.7 2.5-7.5-1.5-1.3-1.6 0 1.1-4 1-4.6C8.9-1 7.3 4.4 7.2 4.9c-1.6.7-.9-1.4-.7-1.5 3-6-.6-3.1-.9.4-2.5 1.8 0-2.8 0-3.5C2.8-.9 4 9.4 1.1 4.9S.1 4.6 0 5c-.4 2.7 2.6 7.2 3.9 2.8Z"/></g>',signLanguageOn:'<g transform="scale(1.5)"><path d="M16 11.3c-.1-.9-4.8 1.3-5.4 1.1-2.6-1 5.8-1.3 5.1-2.9s-5.1 1.5-6 1.4C6.5 9.4 16.5 9.1 13.5 8c-1.9-.6-8.8 2.9-6.8.4.7-.6.7-1.9-.7-1.7-9.7 7.2-.7 12.2 8.8 7 0-1.3-3.5.4-4.1.4-2.6 0 5.6-2 5.4-3ZM3.9 7.8c3.2-4.2 3.7 1.2 6 .1s.2-.2.2-.3c.7-2.7 2.5-7.5-1.5-1.3-1.6 0 1.1-4 1-4.6C8.9-1 7.3 4.4 7.2 4.9c-1.6.7-.9-1.4-.7-1.5 3-6-.6-3.1-.9.4-2.5 1.8 0-2.8 0-3.5C2.8-.9 4 9.4 1.1 4.9S.1 4.6 0 5c-.4 2.7 2.6 7.2 3.9 2.8Z"/></g>',music:'<path d="M12 3v9.28c-.47-.17-.97-.28-1.5-.28C8.01 12 6 14.01 6 16.5S8.01 21 10.5 21c2.31 0 4.2-1.75 4.45-4H15V6h4V3h-7zm-1.5 16c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"/>',moreVertical:'<path d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/>',move:'<path d="M10 9h4V6h3l-5-5-5 5h3v3zm-1 1H6V7l-5 5 5 5v-3h3v-4zm14 2l-5-5v3h-3v4h3v3l5-5zm-9 3h-4v3H7l5 5 5-5h-3v-3z"/>',resize:'<path d="M21.71 11.29l-9-9c-.39-.39-1.02-.39-1.41 0l-9 9c-.39.39-.39 1.02 0 1.41l9 9c.39.39 1.02.39 1.41 0l9-9c.39-.38.39-1.01 0-1.41zM14 14.5V12h-4v2.5L7 11l3-3.5V10h4V7.5l3 3.5-3 3.5z"/>',clock:'<path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"/><path d="M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"/>'},lt=m=>'<svg viewBox="0 0 24 24" fill="currentColor">'.concat(m,"</svg>"),Fe=Object.fromEntries(Object.entries(ot).map(([m,e])=>[m,lt(e)]))});function V(m,{delay:e=0,preventScroll:t=!0}={}){m&&requestAnimationFrame(()=>{setTimeout(()=>{m&&document.contains(m)&&m.focus({preventScroll:t})},e)})}function Ne(m,e,t={}){if(!m)return;let i=m.querySelector(e);i&&V(i,t)}var ee=x(()=>{});var N,ie=x(()=>{N=class{constructor(e="vidply"){this.namespace=e,this.storage=this.isStorageAvailable()?localStorage:null}isStorageAvailable(){try{let e="__storage_test__";return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch(e){return!1}}getKey(e){return"".concat(this.namespace,"_").concat(e)}set(e,t){if(!this.storage)return!1;try{let i=this.getKey(e);return this.storage.setItem(i,JSON.stringify(t)),!0}catch(i){return console.warn("Failed to save to localStorage:",i),!1}}get(e,t=null){if(!this.storage)return t;try{let i=this.getKey(e),s=this.storage.getItem(i);return s?JSON.parse(s):t}catch(i){return console.warn("Failed to read from localStorage:",i),t}}remove(e){if(!this.storage)return!1;try{let t=this.getKey(e);return this.storage.removeItem(t),!0}catch(t){return console.warn("Failed to remove from localStorage:",t),!1}}clear(){if(!this.storage)return!1;try{return Object.keys(this.storage).forEach(t=>{t.startsWith(this.namespace)&&this.storage.removeItem(t)}),!0}catch(e){return console.warn("Failed to clear localStorage:",e),!1}}saveTranscriptPreferences(e){return this.set("transcript_preferences",e)}getTranscriptPreferences(){return this.get("transcript_preferences",null)}saveCaptionPreferences(e){return this.set("caption_preferences",e)}getCaptionPreferences(){return this.get("caption_preferences",null)}savePlayerPreferences(e){return this.set("player_preferences",e)}getPlayerPreferences(){return this.get("player_preferences",null)}saveSignLanguagePreferences(e){return this.set("sign_language_preferences",e)}getSignLanguagePreferences(){return this.get("sign_language_preferences",null)}}});var Ie={};R(Ie,{HTML5Renderer:()=>X});var X,he=x(()=>{X=class{constructor(e){this.player=e,this.media=e.element}async init(){this.media.controls=!1,this.media.removeAttribute("controls"),this.attachEvents(),this.media.preload=this.player.options.preload,this.media.load(),this.player.container&&this.player.container.classList.remove("vidply-external-controls")}attachEvents(){this.media.addEventListener("loadedmetadata",()=>{this.player.state.duration=this.media.duration,this.player.emit("loadedmetadata")}),this.media.addEventListener("play",()=>{this.player.state.playing=!0,this.player.state.paused=!1,this.player.state.ended=!1,this.player.emit("play"),this.player.options.onPlay&&this.player.options.onPlay.call(this.player),this.player.options.pauseOthersOnPlay&&this.pauseOtherPlayers()}),this.media.addEventListener("pause",()=>{this.player.state.playing=!1,this.player.state.paused=!0,this.player.emit("pause"),this.player.options.onPause&&this.player.options.onPause.call(this.player)}),this.media.addEventListener("ended",()=>{this.player.state.playing=!1,this.player.state.paused=!0,this.player.state.ended=!0,this.player.emit("ended"),this.player.options.onEnded&&this.player.options.onEnded.call(this.player),this.player.options.loop&&(this.player.seek(0),this.player.play())}),this.media.addEventListener("timeupdate",()=>{this.player.state.currentTime=this.media.currentTime,this.player.emit("timeupdate",this.media.currentTime),this.player.options.onTimeUpdate&&this.player.options.onTimeUpdate.call(this.player,this.media.currentTime)}),this.media.addEventListener("volumechange",()=>{this.player.state.volume=this.media.volume,this.player.state.muted=this.media.muted,this.player.emit("volumechange",this.media.volume),this.player.options.onVolumeChange&&this.player.options.onVolumeChange.call(this.player,this.media.volume)}),this.media.addEventListener("seeking",()=>{this.player.state.seeking=!0,this.player.emit("seeking")}),this.media.addEventListener("seeked",()=>{this.player.state.seeking=!1,this.player.emit("seeked")}),this.media.addEventListener("waiting",()=>{this.player.state.buffering=!0,this.player.emit("waiting")}),this.media.addEventListener("canplay",()=>{this.player.state.buffering=!1,this.player.emit("canplay")}),this.media.addEventListener("progress",()=>{if(this.media.buffered.length>0){let e=this.media.buffered.end(this.media.buffered.length-1);this.player.emit("progress",e)}}),this.media.addEventListener("error",e=>{this.player.handleError(this.media.error)}),this.media.addEventListener("ratechange",()=>{this.player.state.playbackSpeed=this.media.playbackRate,this.player.emit("ratechange",this.media.playbackRate)})}pauseOtherPlayers(){document.querySelectorAll(".vidply-player").forEach(t=>{if(t!==this.player.container){let i=t.querySelector("video, audio");i&&!i.paused&&i.pause()}})}play(){let e=window.scrollX,t=window.scrollY,i=this.media.play();window.scrollTo(e,t),i!==void 0&&i.catch(s=>{if(this.player.log("Play failed:",s,"warn"),this.player.options.autoplay&&!this.player.state.muted){this.player.log("Retrying play with muted audio","info"),this.media.muted=!0;let a=window.scrollX,n=window.scrollY;this.media.play().then(()=>{window.scrollTo(a,n)}).catch(l=>{this.player.handleError(l)})}})}pause(){this.media.pause()}seek(e){this.media.currentTime=e}setVolume(e){this.media.volume=e}setMuted(e){this.media.muted=e}setPlaybackSpeed(e){this.media.playbackRate=e}getQualities(){let e=Array.from(this.media.querySelectorAll("source"));return e.length<=1?[]:e.map((t,i)=>{let s=t.getAttribute("data-quality")||t.getAttribute("label")||"",a=t.getAttribute("data-height")||this.extractHeightFromLabel(s),n=t.getAttribute("data-width")||"";return{index:i,height:a?parseInt(a):0,width:n?parseInt(n):0,src:t.src,type:t.type,name:s||(a?"".concat(a,"p"):"Quality ".concat(i+1))}}).filter(t=>t.height>0)}extractHeightFromLabel(e){let t=e.match(/(\d+)p/i);return t?parseInt(t[1]):0}switchQuality(e){let t=this.getQualities();if(e<0||e>=t.length){this.player.log("Invalid quality index","warn");return}let i=t[e],s=this.media.currentTime,a=!this.media.paused;if(this.media.currentSrc===i.src){this.player.log("Already at this quality level","info");return}this.player.log("Switching to quality: ".concat(i.name),"info"),this.media.src=i.src;let l=()=>{this.media.removeEventListener("loadedmetadata",l),this.media.currentTime=s,a&&this.media.play().catch(c=>{this.player.log("Failed to resume playback after quality switch","warn")}),this.player.emit("qualitychange",{quality:i.name,index:e})};this.media.addEventListener("loadedmetadata",l),this.media.load()}getCurrentQuality(){let e=this.getQualities(),t=this.media.currentSrc;for(let i=0;i<e.length;i++)if(e[i].src===t)return i;return 0}destroy(){this.media.removeEventListener("loadedmetadata",()=>{}),this.media.removeEventListener("play",()=>{}),this.media.removeEventListener("pause",()=>{})}}});var _,pe=x(()=>{_=class{constructor(e,t={}){this.element=e,this.options=$({dragHandle:null,resizeHandles:[],onDragStart:null,onDrag:null,onDragEnd:null,onResizeStart:null,onResize:null,onResizeEnd:null,constrainToViewport:!0,minWidth:150,minHeight:100,maintainAspectRatio:!1,keyboardDragKey:"d",keyboardResizeKey:"r",keyboardStep:5,keyboardStepLarge:10,maxWidth:null,maxHeight:null,pointerResizeIndicatorText:null,onPointerResizeToggle:null,classPrefix:"draggable",storage:null,storageKey:null},t),this.isDragging=!1,this.isResizing=!1,this.resizeDirection=null,this.dragOffsetX=0,this.dragOffsetY=0,this.positionOffsetX=0,this.positionOffsetY=0,this.initialMouseX=0,this.initialMouseY=0,this.needsPositionConversion=!1,this.resizeStartX=0,this.resizeStartY=0,this.resizeStartWidth=0,this.resizeStartHeight=0,this.resizeStartLeft=0,this.resizeStartTop=0,this.keyboardDragMode=!1,this.keyboardResizeMode=!1,this.pointerResizeMode=!1,this.manuallyPositioned=!1,this.resizeHandlesManaged=new Map,this.resizeIndicatorElement=null,this.handlers={mousedown:this.onMouseDown.bind(this),mousemove:this.onMouseMove.bind(this),mouseup:this.onMouseUp.bind(this),touchstart:this.onTouchStart.bind(this),touchmove:this.onTouchMove.bind(this),touchend:this.onTouchEnd.bind(this),keydown:this.onKeyDown.bind(this),resizeHandleMousedown:this.onResizeHandleMouseDown.bind(this)},this.init()}hasManagedResizeHandles(){return Array.from(this.resizeHandlesManaged.values()).some(Boolean)}storeOriginalHandleDisplay(e){e.dataset.originalDisplay||(e.dataset.originalDisplay=e.style.display||"")}hideResizeHandle(e){e.style.display="none",e.setAttribute("aria-hidden","true")}showResizeHandle(e){let t=e.dataset.originalDisplay!==void 0?e.dataset.originalDisplay:"";e.style.display=t,e.removeAttribute("aria-hidden")}setManagedHandlesVisible(e){!this.options.resizeHandles||this.options.resizeHandles.length===0||this.options.resizeHandles.forEach(t=>{this.resizeHandlesManaged.get(t)&&(e?this.showResizeHandle(t):this.hideResizeHandle(t))})}init(){let e=this.options.dragHandle||this.element;e.addEventListener("mousedown",this.handlers.mousedown),e.addEventListener("touchstart",this.handlers.touchstart),document.addEventListener("mousemove",this.handlers.mousemove),document.addEventListener("mouseup",this.handlers.mouseup),document.addEventListener("touchmove",this.handlers.touchmove,{passive:!1}),document.addEventListener("touchend",this.handlers.touchend),this.element.addEventListener("keydown",this.handlers.keydown),this.options.resizeHandles&&this.options.resizeHandles.length>0&&this.options.resizeHandles.forEach(t=>{t.addEventListener("mousedown",this.handlers.resizeHandleMousedown),t.addEventListener("touchstart",this.handlers.resizeHandleMousedown);let i=t.dataset.vidplyManagedResize==="true";this.resizeHandlesManaged.set(t,i),i&&(this.storeOriginalHandleDisplay(t),this.hideResizeHandle(t))})}onMouseDown(e){e.target.classList.contains("".concat(this.options.classPrefix,"-resize-handle"))||this.options.onDragStart&&!this.options.onDragStart(e)||(this.startDragging(e.clientX,e.clientY),e.preventDefault())}onTouchStart(e){if(e.target.classList.contains("".concat(this.options.classPrefix,"-resize-handle"))||this.options.onDragStart&&!this.options.onDragStart(e))return;let t=e.touches[0];this.startDragging(t.clientX,t.clientY)}onResizeHandleMouseDown(e){var a,n,l,c;e.preventDefault(),e.stopPropagation();let t=e.target;this.resizeDirection=t.getAttribute("data-direction");let i=e.clientX||((n=(a=e.touches)==null?void 0:a[0])==null?void 0:n.clientX),s=e.clientY||((c=(l=e.touches)==null?void 0:l[0])==null?void 0:c.clientY);this.startResizing(i,s)}onMouseMove(e){this.isDragging?(this.drag(e.clientX,e.clientY),e.preventDefault()):this.isResizing&&(this.resize(e.clientX,e.clientY),e.preventDefault())}onTouchMove(e){if(this.isDragging||this.isResizing){let t=e.touches[0];this.isDragging?this.drag(t.clientX,t.clientY):this.resize(t.clientX,t.clientY),e.preventDefault()}}onMouseUp(){this.isDragging?this.stopDragging():this.isResizing&&this.stopResizing()}onTouchEnd(){this.isDragging?this.stopDragging():this.isResizing&&this.stopResizing()}onKeyDown(e){if(e.key.toLowerCase()===this.options.keyboardDragKey.toLowerCase()){e.preventDefault(),this.toggleKeyboardDragMode();return}if(e.key.toLowerCase()===this.options.keyboardResizeKey.toLowerCase()){e.preventDefault(),this.hasManagedResizeHandles()?this.togglePointerResizeMode():this.toggleKeyboardResizeMode();return}if(e.key==="Escape"){if(this.pointerResizeMode){e.preventDefault(),this.disablePointerResizeMode();return}if(this.keyboardDragMode||this.keyboardResizeMode){e.preventDefault(),this.disableKeyboardDragMode(),this.disableKeyboardResizeMode();return}}["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"].includes(e.key)&&(this.keyboardDragMode?(e.preventDefault(),e.stopPropagation(),this.keyboardDrag(e.key,e.shiftKey)):this.keyboardResizeMode&&(e.preventDefault(),e.stopPropagation(),this.keyboardResize(e.key,e.shiftKey))),e.key==="Home"&&(this.keyboardDragMode||this.keyboardResizeMode)&&(e.preventDefault(),this.resetPosition())}startDragging(e,t){let i=this.element.getBoundingClientRect(),s=window.getComputedStyle(this.element),a=s.right!=="auto"||s.bottom!=="auto"||s.transform!=="none";if(this.positionOffsetX=0,this.positionOffsetY=0,a){let l,c;if(s.position==="absolute"){let u=(this.element.offsetParent||document.body).getBoundingClientRect();l=i.left-u.left,c=i.top-u.top,this.positionOffsetX=u.left,this.positionOffsetY=u.top}else if(s.position==="fixed"){let d=parseFloat(s.left),u=parseFloat(s.top),p=Number.isFinite(d),y=Number.isFinite(u);l=p?d:i.left,c=y?u:i.top,this.positionOffsetX=i.left-l,this.positionOffsetY=i.top-c}else l=i.left,c=i.top,this.positionOffsetX=i.left-l,this.positionOffsetY=i.top-c;let r=this.element.style.cssText.split(";").filter(d=>{let u=d.trim();if(!u)return!1;let p=u.indexOf(":");if(p===-1)return!1;let y=u.substring(0,p).trim(),b=u.substring(p+1).trim();return!(!b||b===""||y==="right"||y==="bottom"||y==="transform"||y==="left"||y==="top"||y==="inset"||y.startsWith("border-image"))}).join("; ");r&&(r+="; "),r+="left: ".concat(l,"px; top: ").concat(c,"px; right: auto; bottom: auto; transform: none"),this.element.style.cssText=r}let n=this.element.getBoundingClientRect();this.dragOffsetX=e-n.left,this.dragOffsetY=t-n.top,this.isDragging=!0,this.element.classList.add("".concat(this.options.classPrefix,"-dragging")),document.body.style.cursor="grabbing",document.body.style.userSelect="none"}drag(e,t){if(!this.isDragging)return;let i=e-this.dragOffsetX-this.positionOffsetX,s=t-this.dragOffsetY-this.positionOffsetY;if(this.options.constrainToViewport){let a=this.element.getBoundingClientRect(),n=document.documentElement.clientWidth,l=document.documentElement.clientHeight,c=100,o=-(a.width-c),r=-(a.height-c),d=n-c,u=l-c;i=Math.max(o,Math.min(i,d)),s=Math.max(r,Math.min(s,u))}this.element.style.left="".concat(i,"px"),this.element.style.top="".concat(s,"px"),this.options.onDrag&&this.options.onDrag({x:i,y:s})}stopDragging(){this.isDragging=!1,this.element.classList.remove("".concat(this.options.classPrefix,"-dragging")),document.body.style.cursor="",document.body.style.userSelect="",this.manuallyPositioned=!0,this.options.onDragEnd&&this.options.onDragEnd()}startResizing(e,t){this.isResizing=!0,this.resizeStartX=e,this.resizeStartY=t;let i=this.element.getBoundingClientRect();this.resizeStartWidth=i.width,this.resizeStartHeight=i.height,this.resizeStartLeft=i.left,this.resizeStartTop=i.top,this.element.classList.add("".concat(this.options.classPrefix,"-resizing")),document.body.style.userSelect="none",this.options.onResizeStart&&this.options.onResizeStart()}resize(e,t){if(!this.isResizing)return;let i=e-this.resizeStartX,s=t-this.resizeStartY,a=this.resizeStartWidth,n=this.resizeStartHeight,l=this.resizeStartLeft,c=this.resizeStartTop;if(this.resizeDirection.includes("e")&&(a=Math.max(this.options.minWidth,this.resizeStartWidth+i)),this.resizeDirection.includes("w")){let r=Math.max(this.options.minWidth,this.resizeStartWidth-i);l=this.resizeStartLeft+(this.resizeStartWidth-r),a=r}let o=typeof this.options.maxWidth=="function"?this.options.maxWidth():this.options.maxWidth;if(Number.isFinite(o)){let r=Math.min(a,o);r!==a&&this.resizeDirection.includes("w")&&(l+=a-r),a=r}if(!this.options.maintainAspectRatio){if(this.resizeDirection.includes("s")&&(n=Math.max(this.options.minHeight,this.resizeStartHeight+s)),this.resizeDirection.includes("n")){let d=Math.max(this.options.minHeight,this.resizeStartHeight-s);c=this.resizeStartTop+(this.resizeStartHeight-d),n=d}let r=typeof this.options.maxHeight=="function"?this.options.maxHeight():this.options.maxHeight;if(Number.isFinite(r)){let d=Math.min(n,r);d!==n&&this.resizeDirection.includes("n")&&(c+=n-d),n=d}}this.element.style.width="".concat(a,"px"),this.options.maintainAspectRatio?this.element.style.height="auto":this.element.style.height="".concat(n,"px"),this.resizeDirection.includes("w")&&(this.element.style.left="".concat(l,"px")),this.resizeDirection.includes("n")&&!this.options.maintainAspectRatio&&(this.element.style.top="".concat(c,"px")),this.options.onResize&&this.options.onResize({width:a,height:n,left:l,top:c})}stopResizing(){this.isResizing=!1,this.resizeDirection=null,this.element.classList.remove("".concat(this.options.classPrefix,"-resizing")),document.body.style.userSelect="",this.manuallyPositioned=!0,this.options.onResizeEnd&&this.options.onResizeEnd()}toggleKeyboardDragMode(){this.keyboardDragMode?this.disableKeyboardDragMode():this.enableKeyboardDragMode()}enableKeyboardDragMode(){this.keyboardDragMode=!0,this.keyboardResizeMode=!1,this.element.classList.add("".concat(this.options.classPrefix,"-keyboard-drag")),this.element.classList.remove("".concat(this.options.classPrefix,"-keyboard-resize")),this.focusElement()}disableKeyboardDragMode(){this.keyboardDragMode=!1,this.element.classList.remove("".concat(this.options.classPrefix,"-keyboard-drag"))}toggleKeyboardResizeMode(){this.keyboardResizeMode?this.disableKeyboardResizeMode():this.enableKeyboardResizeMode()}enableKeyboardResizeMode(){this.keyboardResizeMode=!0,this.keyboardDragMode=!1,this.element.classList.add("".concat(this.options.classPrefix,"-keyboard-resize")),this.element.classList.remove("".concat(this.options.classPrefix,"-keyboard-drag")),this.focusElement()}disableKeyboardResizeMode(){this.keyboardResizeMode=!1,this.element.classList.remove("".concat(this.options.classPrefix,"-keyboard-resize"))}enablePointerResizeMode({focus:e=!0}={}){if(!this.hasManagedResizeHandles()){this.enableKeyboardResizeMode();return}this.pointerResizeMode||(this.pointerResizeMode=!0,this.setManagedHandlesVisible(!0),this.element.classList.add("".concat(this.options.classPrefix,"-resizable")),this.enableKeyboardResizeMode(),e&&this.focusElement(),typeof this.options.onPointerResizeToggle=="function"&&this.options.onPointerResizeToggle(!0))}disablePointerResizeMode({focus:e=!1}={}){this.pointerResizeMode&&(this.pointerResizeMode=!1,this.setManagedHandlesVisible(!1),this.element.classList.remove("".concat(this.options.classPrefix,"-resizable")),this.disableKeyboardResizeMode(),e&&this.focusElement(),typeof this.options.onPointerResizeToggle=="function"&&this.options.onPointerResizeToggle(!1))}togglePointerResizeMode(){return this.pointerResizeMode?this.disablePointerResizeMode():this.enablePointerResizeMode(),this.pointerResizeMode}focusElement(){if(typeof this.element.focus=="function")try{this.element.focus({preventScroll:!0})}catch(e){this.element.focus()}}keyboardDrag(e,t){let i=t?this.options.keyboardStepLarge:this.options.keyboardStep,s=parseFloat(this.element.style.left)||0,a=parseFloat(this.element.style.top)||0;if(window.getComputedStyle(this.element).transform!=="none"){let o=this.element.getBoundingClientRect();s=o.left,a=o.top,this.element.style.transform="none",this.element.style.left="".concat(s,"px"),this.element.style.top="".concat(a,"px")}let l=s,c=a;switch(e){case"ArrowLeft":l-=i;break;case"ArrowRight":l+=i;break;case"ArrowUp":c-=i;break;case"ArrowDown":c+=i;break}this.element.style.left="".concat(l,"px"),this.element.style.top="".concat(c,"px"),this.options.onDrag&&this.options.onDrag({x:l,y:c})}keyboardResize(e,t){let i=t?this.options.keyboardStepLarge:this.options.keyboardStep,s=this.element.getBoundingClientRect(),a=s.width,n=s.height;switch(e){case"ArrowLeft":a-=i;break;case"ArrowRight":a+=i;break;case"ArrowUp":this.options.maintainAspectRatio?a+=i:n-=i;break;case"ArrowDown":this.options.maintainAspectRatio?a-=i:n+=i;break}a=Math.max(this.options.minWidth,a),n=Math.max(this.options.minHeight,n),this.element.style.width="".concat(a,"px"),this.options.maintainAspectRatio?this.element.style.height="auto":this.element.style.height="".concat(n,"px"),this.options.onResize&&this.options.onResize({width:a,height:n})}resetPosition(){this.element.style.left="50%",this.element.style.top="50%",this.element.style.transform="translate(-50%, -50%)",this.element.style.right="",this.element.style.bottom="",this.manuallyPositioned=!1,this.options.onDrag&&this.options.onDrag({centered:!0})}destroy(){let e=this.options.dragHandle||this.element;this.disablePointerResizeMode(),e.removeEventListener("mousedown",this.handlers.mousedown),e.removeEventListener("touchstart",this.handlers.touchstart),document.removeEventListener("mousemove",this.handlers.mousemove),document.removeEventListener("mouseup",this.handlers.mouseup),document.removeEventListener("touchmove",this.handlers.touchmove),document.removeEventListener("touchend",this.handlers.touchend),this.element.removeEventListener("keydown",this.handlers.keydown),this.options.resizeHandles&&this.options.resizeHandles.length>0&&this.options.resizeHandles.forEach(t=>{t.removeEventListener("mousedown",this.handlers.resizeHandleMousedown),t.removeEventListener("touchstart",this.handlers.resizeHandleMousedown)}),this.element.classList.remove("".concat(this.options.classPrefix,"-dragging"),"".concat(this.options.classPrefix,"-resizing"),"".concat(this.options.classPrefix,"-keyboard-drag"),"".concat(this.options.classPrefix,"-keyboard-resize"))}}});function B({classPrefix:m,itemClass:e,icon:t,label:i,ariaLabel:s,onClick:a,hasTextClass:n=!1}){let l=typeof i=="string"&&(i.startsWith("transcript.")||i.startsWith("player.")||i.startsWith("settings.")),c=s||l&&g.t(i)||i,o=h.createElement("button",{className:e,attributes:{type:"button","aria-label":c,tabindex:"-1"}});t&&o.appendChild(M(t));let d=typeof i=="string"&&(i.startsWith("transcript.")||i.startsWith("player.")||i.startsWith("settings."))&&g.t(i)||i,u=h.createElement("span",{textContent:d,className:n?"".concat(m,"-settings-text"):void 0,attributes:{"aria-hidden":"true"}});return o.appendChild(u),a&&o.addEventListener("click",a),o}function I(m,e,t,i){if(!m)return;let s=Array.from(m.querySelectorAll(t));if(s.length===0)return;let a=n=>{let l=s.indexOf(document.activeElement);switch(n.key){case"ArrowDown":n.preventDefault(),n.stopPropagation();let c=(l+1)%s.length;s.forEach((d,u)=>{d.setAttribute("tabindex",u===c?"0":"-1")}),s[c].focus({preventScroll:!1}),s[c].scrollIntoView({behavior:"smooth",block:"nearest"});break;case"ArrowUp":n.preventDefault(),n.stopPropagation();let o=(l-1+s.length)%s.length;s.forEach((d,u)=>{d.setAttribute("tabindex",u===o?"0":"-1")}),s[o].focus({preventScroll:!1}),s[o].scrollIntoView({behavior:"smooth",block:"nearest"});break;case"Home":n.preventDefault(),n.stopPropagation(),s.forEach((d,u)=>{d.setAttribute("tabindex",u===0?"0":"-1")}),s[0].focus({preventScroll:!1}),s[0].scrollIntoView({behavior:"smooth",block:"nearest"});break;case"End":n.preventDefault(),n.stopPropagation();let r=s.length-1;s.forEach((d,u)=>{d.setAttribute("tabindex",u===r?"0":"-1")}),s[r].focus({preventScroll:!1}),s[r].scrollIntoView({behavior:"smooth",block:"nearest"});break;case"Enter":case" ":n.preventDefault(),n.stopPropagation(),document.activeElement&&s.includes(document.activeElement)&&(document.activeElement.click(),i&&setTimeout(()=>{e&&document.contains(e)&&e.focus()},0));break;case"Escape":n.preventDefault(),n.stopPropagation(),i&&i();break}};return m.addEventListener("keydown",a,!0),a}function ge(m,e,t=0){m&&setTimeout(()=>{let i=Array.from(m.querySelectorAll(e));i.length>0&&(i.forEach((s,a)=>{s.setAttribute("tabindex",a===0?"0":"-1")}),V(i[0],{delay:0}),i[0].scrollIntoView({behavior:"smooth",block:"nearest"}))},t)}var me=x(()=>{W();U();O();ee()});function re({classPrefix:m,labelClass:e,selectClass:t,labelText:i,selectId:s,hidden:a=!1,onChange:n=null,options:l=[]}){let o=typeof i=="string"&&(i.startsWith("transcript.")||i.startsWith("player.")||i.startsWith("settings.")||i.startsWith("captions."))&&g.t(i)||i,r=h.createElement("label",{className:e,textContent:o,attributes:{for:s,style:a?"display: none;":void 0}}),d=h.createElement("select",{className:t,attributes:{id:s,style:a?"display: none;":void 0}});return l.forEach(u=>{let p=h.createElement("option",{textContent:u.text,attributes:{value:u.value,selected:u.selected?"selected":void 0}});d.appendChild(p)}),n&&d.addEventListener("change",n),{label:r,select:d}}function oe(m){m&&["mousedown","click"].forEach(e=>{m.addEventListener(e,t=>{t.stopPropagation()})})}var ye=x(()=>{W();O()});var qe={};R(qe,{TranscriptManager:()=>fe});var fe,Ue=x(()=>{W();Z();U();O();ie();ee();me();pe();ye();fe=class{constructor(e){var i,s;this.player=e,this.transcriptWindow=null,this.transcriptEntries=[],this.metadataCues=[],this.currentActiveEntry=null,this.isVisible=!1,this.storage=new N("vidply"),this.draggableResizable=null,this.settingsMenuVisible=!1,this.settingsMenu=null,this.settingsButton=null,this.settingsMenuJustOpened=!1,this.resizeOptionButton=null,this.resizeOptionText=null,this.dragOptionButton=null,this.dragOptionText=null,this.resizeModeIndicator=null,this.resizeModeIndicatorTimeout=null,this.transcriptResizeHandles=[],this.liveRegion=null,this.styleDialog=null,this.styleDialogVisible=!1,this.styleDialogJustOpened=!1,this.languageSelector=null,this.languageLabel=null,this.currentTranscriptLanguage=null,this.availableTranscriptLanguages=[],this.languageSelectorHandler=null;let t=this.storage.getTranscriptPreferences();this.autoscrollEnabled=(t==null?void 0:t.autoscroll)!==void 0?t.autoscroll:!0,this.showTimestamps=(t==null?void 0:t.showTimestamps)!==void 0?t.showTimestamps:!1,this.transcriptStyle={fontSize:(t==null?void 0:t.fontSize)||this.player.options.transcriptFontSize||"100%",fontFamily:(t==null?void 0:t.fontFamily)||this.player.options.transcriptFontFamily||"sans-serif",color:(t==null?void 0:t.color)||this.player.options.transcriptColor||"#ffffff",backgroundColor:(t==null?void 0:t.backgroundColor)||this.player.options.transcriptBackgroundColor||"#1e1e1e",opacity:(s=(i=t==null?void 0:t.opacity)!=null?i:this.player.options.transcriptOpacity)!=null?s:.98},this.handlers={timeupdate:()=>this.updateActiveEntry(),audiodescriptionenabled:()=>{this.isVisible&&this.loadTranscriptData()},audiodescriptiondisabled:()=>{this.isVisible&&this.loadTranscriptData()},resize:null,settingsClick:null,settingsKeydown:null,documentClick:null,styleDialogKeydown:null},this.timeouts=new Set,this.init()}init(){this.setupMetadataHandlingOnLoad(),this.player.on("timeupdate",this.handlers.timeupdate),this.player.on("audiodescriptionenabled",this.handlers.audiodescriptionenabled),this.player.on("audiodescriptiondisabled",this.handlers.audiodescriptiondisabled),this.player.on("fullscreenchange",()=>{this.isVisible&&(window.innerWidth<768&&this.setupDragAndDrop(),(!this.draggableResizable||!this.draggableResizable.manuallyPositioned)&&this.setManagedTimeout(()=>this.positionTranscript(),100))})}toggleTranscript(){this.isVisible?this.hideTranscript():this.showTranscript()}showTranscript(){if(this.transcriptWindow){this.transcriptWindow.style.display="flex",this.isVisible=!0,this.player.controlBar&&typeof this.player.controlBar.updateTranscriptButton=="function"&&this.player.controlBar.updateTranscriptButton(),V(this.settingsButton,{delay:150});return}this.createTranscriptWindow(),this.loadTranscriptData(),this.transcriptWindow&&(this.transcriptWindow.style.display="flex",(!this.draggableResizable||!this.draggableResizable.manuallyPositioned)&&this.setManagedTimeout(()=>this.positionTranscript(),0),V(this.settingsButton,{delay:150})),this.isVisible=!0}hideTranscript({focusButton:e=!1}={}){var t,i;if(this.transcriptWindow&&(this.transcriptWindow.style.display="none",this.isVisible=!1),this.draggableResizable&&this.draggableResizable.pointerResizeMode&&(this.draggableResizable.disablePointerResizeMode(),this.updateResizeOptionState()),this.hideResizeModeIndicator(),this.announceLive(""),this.player.controlBar&&typeof this.player.controlBar.updateTranscriptButton=="function"&&this.player.controlBar.updateTranscriptButton(),e){let s=(i=(t=this.player.controlBar)==null?void 0:t.controls)==null?void 0:i.transcript;s&&typeof s.focus=="function"&&s.focus({preventScroll:!0})}}createTranscriptWindow(){this.transcriptWindow=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-window"),attributes:{role:"dialog","aria-label":g.t("transcript.ariaLabel"),tabindex:"-1"}}),this.transcriptHeader=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-header"),attributes:{tabindex:"0"}}),this.headerLeft=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-header-left")});let e=g.t("transcript.settingsMenu");this.settingsButton=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-transcript-settings"),attributes:{type:"button","aria-label":e,"aria-expanded":"false"}}),this.settingsButton.appendChild(M("settings")),h.attachTooltip(this.settingsButton,e,this.player.options.classPrefix),this.handlers.settingsClick=p=>{p.preventDefault(),p.stopPropagation(),this.settingsMenuVisible?this.hideSettingsMenu():this.showSettingsMenu()},this.settingsButton.addEventListener("click",this.handlers.settingsClick),this.handlers.settingsKeydown=p=>{p.key==="d"||p.key==="D"?(p.preventDefault(),p.stopPropagation(),this.toggleKeyboardDragMode()):p.key==="r"||p.key==="R"?(p.preventDefault(),p.stopPropagation(),this.toggleResizeMode()):p.key==="Escape"&&this.settingsMenuVisible&&(p.preventDefault(),p.stopPropagation(),this.hideSettingsMenu())},this.settingsButton.addEventListener("keydown",this.handlers.settingsKeydown);let t=h.createElement("h3",{textContent:"".concat(g.t("transcript.title"),". ").concat(g.t("transcript.dragResizePrompt"))}),i="".concat(this.player.options.classPrefix,"-transcript-autoscroll-").concat(Date.now()),s=h.createElement("label",{className:"".concat(this.player.options.classPrefix,"-transcript-autoscroll-label"),attributes:{for:i}});this.autoscrollCheckbox=h.createElement("input",{attributes:{id:i,type:"checkbox"}}),this.autoscrollEnabled&&(this.autoscrollCheckbox.checked=!0);let a=h.createElement("span",{textContent:g.t("transcript.autoscroll"),className:"".concat(this.player.options.classPrefix,"-transcript-autoscroll-text")});s.appendChild(this.autoscrollCheckbox),s.appendChild(a),this.autoscrollCheckbox.addEventListener("change",p=>{this.autoscrollEnabled=p.target.checked,this.saveAutoscrollPreference()}),this.transcriptHeader.appendChild(t),this.headerLeft.appendChild(this.settingsButton),this.headerLeft.appendChild(s);let n="".concat(this.player.options.classPrefix,"-transcript-language-select-").concat(Date.now()),{label:l,select:c}=re({classPrefix:this.player.options.classPrefix,labelClass:"".concat(this.player.options.classPrefix,"-transcript-language-label"),selectClass:"".concat(this.player.options.classPrefix,"-transcript-language-select"),labelText:"settings.language",selectId:n,hidden:!1});this.languageLabel=l,this.languageSelector=c;let o=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-language-wrapper"),attributes:{style:"display: none;"}});o.appendChild(this.languageLabel),o.appendChild(this.languageSelector),this.languageSelectorWrapper=o,oe(o),this.headerLeft.appendChild(o);let r=g.t("transcript.close"),d=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-transcript-close"),attributes:{type:"button","aria-label":r}});d.appendChild(M("close")),h.attachTooltip(d,r,this.player.options.classPrefix),d.addEventListener("click",()=>this.hideTranscript({focusButton:!0})),this.transcriptHeader.appendChild(this.headerLeft),this.transcriptHeader.appendChild(d),this.transcriptContent=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-content")}),this.transcriptWindow.appendChild(this.transcriptHeader),this.transcriptWindow.appendChild(this.transcriptContent),this.createResizeHandles(),this.liveRegion=h.createElement("div",{className:"vidply-sr-only",attributes:{"aria-live":"polite","aria-atomic":"true"}}),this.transcriptWindow.appendChild(this.liveRegion),this.player.container.appendChild(this.transcriptWindow),this.setupDragAndDrop(),(!this.draggableResizable||!this.draggableResizable.manuallyPositioned)&&this.positionTranscript(),this.handlers.documentClick=p=>{this.settingsMenuJustOpened||this.styleDialogJustOpened||this.settingsButton&&this.settingsButton.contains(p.target)||this.settingsMenu&&this.settingsMenu.contains(p.target)||(this.settingsMenuVisible&&this.hideSettingsMenu(),this.styleDialogVisible&&this.styleDialog&&!this.styleDialog.contains(p.target)&&this.hideStyleDialog())},this.documentClickHandlerAdded=!1;let u;this.handlers.resize=()=>{u&&this.clearManagedTimeout(u),u=this.setManagedTimeout(()=>{(!this.draggableResizable||!this.draggableResizable.manuallyPositioned)&&this.positionTranscript()},100)},window.addEventListener("resize",this.handlers.resize)}createResizeHandles(){if(!this.transcriptWindow)return;let e=["n","s","e","w","ne","nw","se","sw"];this.transcriptResizeHandles=e.map(t=>{let i=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-resize-handle ").concat(this.player.options.classPrefix,"-transcript-resize-").concat(t),attributes:{"data-direction":t,"data-vidply-managed-resize":"true","aria-hidden":"true"}});return i.style.display="none",this.transcriptWindow.appendChild(i),i})}positionTranscript(){if(!this.transcriptWindow||!this.player.videoWrapper||!this.isVisible||this.draggableResizable&&this.draggableResizable.manuallyPositioned)return;let e=window.innerWidth<768,t=this.player.videoWrapper.getBoundingClientRect(),i=this.player.state.fullscreen;if(e&&!i)this.transcriptWindow.style.position="relative",this.transcriptWindow.style.left="0",this.transcriptWindow.style.right="0",this.transcriptWindow.style.bottom="auto",this.transcriptWindow.style.top="auto",this.transcriptWindow.style.width="100%",this.transcriptWindow.style.maxWidth="100%",this.transcriptWindow.style.maxHeight="400px",this.transcriptWindow.style.height="auto",this.transcriptWindow.style.borderRadius="0",this.transcriptWindow.style.transform="none",this.transcriptWindow.style.border="none",this.transcriptWindow.style.borderTop="1px solid var(--vidply-border-light)",this.transcriptWindow.style.removeProperty("border-right"),this.transcriptWindow.style.removeProperty("border-bottom"),this.transcriptWindow.style.removeProperty("border-left"),this.transcriptWindow.style.removeProperty("border-image"),this.transcriptWindow.style.removeProperty("border-image-source"),this.transcriptWindow.style.removeProperty("border-image-slice"),this.transcriptWindow.style.removeProperty("border-image-width"),this.transcriptWindow.style.removeProperty("border-image-outset"),this.transcriptWindow.style.removeProperty("border-image-repeat"),this.transcriptWindow.style.boxShadow="none",this.transcriptHeader&&(this.transcriptHeader.style.cursor="default"),this.transcriptWindow.parentNode!==this.player.container&&this.player.container.appendChild(this.transcriptWindow);else if(i){this.transcriptWindow.style.position="fixed",this.transcriptWindow.style.left="auto",this.transcriptWindow.style.right="20px",this.transcriptWindow.style.bottom="80px",this.transcriptWindow.style.top="auto",this.transcriptWindow.style.maxHeight="calc(100vh - 180px)",this.transcriptWindow.style.height="auto";let s=260,a=Math.max(s,window.innerWidth-40),n=parseFloat(this.transcriptWindow.style.width)||400,l=Math.max(s,Math.min(n,a));this.transcriptWindow.style.width="".concat(l,"px"),this.transcriptWindow.style.maxWidth="none",this.transcriptWindow.style.borderRadius="8px",this.transcriptWindow.style.border="1px solid var(--vidply-border)",this.transcriptWindow.style.removeProperty("border-top"),this.transcriptWindow.style.removeProperty("border-right"),this.transcriptWindow.style.removeProperty("border-bottom"),this.transcriptWindow.style.removeProperty("border-left"),this.transcriptWindow.style.removeProperty("border-image"),this.transcriptWindow.style.removeProperty("border-image-source"),this.transcriptWindow.style.removeProperty("border-image-slice"),this.transcriptWindow.style.removeProperty("border-image-width"),this.transcriptWindow.style.removeProperty("border-image-outset"),this.transcriptWindow.style.removeProperty("border-image-repeat"),this.transcriptHeader&&(this.transcriptHeader.style.cursor="move"),this.transcriptWindow.parentNode!==this.player.container&&this.player.container.appendChild(this.transcriptWindow)}else{let s=parseFloat(this.transcriptWindow.style.width)||400,a=20,n=260,l=this.player.container.getBoundingClientRect();window.getComputedStyle(this.player.container).position==="static"&&(this.player.container.style.position="relative");let o=t.right-l.left+a,r=window.innerWidth-t.right-a,d=Math.max(n,Math.min(s,r)),u=t.height;this.transcriptWindow.style.position="absolute",this.transcriptWindow.style.left="".concat(o,"px"),this.transcriptWindow.style.right="auto",this.transcriptWindow.style.bottom="auto",this.transcriptWindow.style.top="0",this.transcriptWindow.style.height="".concat(u,"px"),this.transcriptWindow.style.maxHeight="none",this.transcriptWindow.style.width="".concat(d,"px"),this.transcriptWindow.style.maxWidth="none",this.transcriptWindow.style.borderRadius="8px",this.transcriptWindow.style.border="1px solid var(--vidply-border)",this.transcriptWindow.style.removeProperty("border-top"),this.transcriptWindow.style.removeProperty("border-right"),this.transcriptWindow.style.removeProperty("border-bottom"),this.transcriptWindow.style.removeProperty("border-left"),this.transcriptWindow.style.removeProperty("border-image"),this.transcriptWindow.style.removeProperty("border-image-source"),this.transcriptWindow.style.removeProperty("border-image-slice"),this.transcriptWindow.style.removeProperty("border-image-width"),this.transcriptWindow.style.removeProperty("border-image-outset"),this.transcriptWindow.style.removeProperty("border-image-repeat"),this.transcriptHeader&&(this.transcriptHeader.style.cursor="move"),this.transcriptWindow.parentNode!==this.player.container&&this.player.container.appendChild(this.transcriptWindow)}}getAvailableTranscriptLanguages(){let e=this.player.textTracks,t=new Map;return e.forEach(i=>{(i.kind==="captions"||i.kind==="subtitles")&&i.language&&(t.has(i.language)||t.set(i.language,{language:i.language,label:i.label||i.language,track:i}))}),Array.from(t.values())}updateLanguageSelector(){if(this.languageSelector){if(this.availableTranscriptLanguages=this.getAvailableTranscriptLanguages(),this.languageSelector.innerHTML="",this.availableTranscriptLanguages.length<2){this.languageSelectorWrapper&&(this.languageSelectorWrapper.style.display="none");return}if(this.languageSelectorWrapper&&(this.languageSelectorWrapper.style.display="flex"),this.availableTranscriptLanguages.forEach((e,t)=>{let i=h.createElement("option",{textContent:e.label,attributes:{value:e.language,lang:e.language}});this.languageSelector.appendChild(i)}),this.currentTranscriptLanguage)this.languageSelector.value=this.currentTranscriptLanguage;else if(this.availableTranscriptLanguages.length>0){let e=this.player.textTracks.find(t=>(t.kind==="captions"||t.kind==="subtitles")&&t.mode==="showing");this.currentTranscriptLanguage=e?e.language:this.availableTranscriptLanguages[0].language,this.languageSelector.value=this.currentTranscriptLanguage}this.languageSelectorHandler&&this.languageSelector.removeEventListener("change",this.languageSelectorHandler),this.languageSelectorHandler=e=>{this.currentTranscriptLanguage=e.target.value,this.loadTranscriptData(),this.transcriptContent&&this.currentTranscriptLanguage&&this.transcriptContent.setAttribute("lang",this.currentTranscriptLanguage)},this.languageSelector.addEventListener("change",this.languageSelectorHandler)}}loadTranscriptData(){this.transcriptEntries=[],this.transcriptContent.innerHTML="";let e=this.player.textTracks,t=null;this.currentTranscriptLanguage&&(t=e.find(o=>(o.kind==="captions"||o.kind==="subtitles")&&o.language===this.currentTranscriptLanguage)),t||(t=e.find(o=>o.kind==="captions"||o.kind==="subtitles"),t&&(this.currentTranscriptLanguage=t.language));let i=null;this.currentTranscriptLanguage&&(i=e.find(o=>o.kind==="descriptions"&&o.language===this.currentTranscriptLanguage)),i||(i=e.find(o=>o.kind==="descriptions"));let s=e.find(o=>o.kind==="metadata"),a=i&&this.player.state.audioDescriptionEnabled;if(!t&&!a&&!s){this.showNoTranscriptMessage();return}let n=[t,i,s].filter(Boolean);if(n.forEach(o=>{o.mode==="disabled"&&(o.mode="hidden")}),n.some(o=>!o.cues||o.cues.length===0)){let o=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-loading"),textContent:g.t("transcript.loading")});this.transcriptContent.appendChild(o);let r=0,d=()=>{r++,r>=n.length&&this.loadTranscriptData()};n.forEach(u=>{u.addEventListener("load",d,{once:!0})}),this.setManagedTimeout(()=>{this.loadTranscriptData()},500);return}let c=[];t&&t.cues&&Array.from(t.cues).forEach(o=>{c.push({cue:o,type:"caption"})}),i&&i.cues&&this.player.state.audioDescriptionEnabled&&Array.from(i.cues).forEach(o=>{c.push({cue:o,type:"description"})}),s&&s.cues&&(this.metadataCues=Array.from(s.cues),this.setupMetadataHandling()),c.sort((o,r)=>o.cue.startTime-r.cue.startTime),c.forEach((o,r)=>{let d=this.createTranscriptEntry(o.cue,r,o.type);this.transcriptEntries.push({element:d,cue:o.cue,type:o.type,startTime:o.cue.startTime,endTime:o.cue.endTime}),this.transcriptContent.appendChild(d)}),this.applyTranscriptStyles(),this.updateTimestampVisibility(),this.transcriptContent&&this.currentTranscriptLanguage&&this.transcriptContent.setAttribute("lang",this.currentTranscriptLanguage),this.updateLanguageSelector()}setupMetadataHandlingOnLoad(){let e=()=>{let i=this.player.textTracks.find(s=>s.kind==="metadata");if(i){if(i.mode==="disabled"&&(i.mode="hidden"),this.metadataCueChangeHandler&&i.removeEventListener("cuechange",this.metadataCueChangeHandler),this.metadataCueChangeHandler=()=>{let s=Array.from(i.activeCues||[]);s.length>0&&this.player.options.debug&&console.log("[VidPly Metadata] Active cues:",s.map(a=>({start:a.startTime,end:a.endTime,text:a.text}))),s.forEach(a=>{this.handleMetadataCue(a)})},i.addEventListener("cuechange",this.metadataCueChangeHandler),this.player.options.debug){let s=i.cues?i.cues.length:0;console.log("[VidPly Metadata] Track enabled,",s,"cues available")}}else this.player.options.debug&&console.warn("[VidPly Metadata] No metadata track found")};e(),this.player.on("loadedmetadata",e)}setupMetadataHandling(){!this.metadataCues||this.metadataCues.length===0||this.player.options.debug&&console.log("[VidPly Metadata]",this.metadataCues.length,"cues stored from transcript load")}handleMetadataCue(e){let t=e.text.trim();this.player.options.debug&&console.log("[VidPly Metadata] Processing cue:",{time:e.startTime,text:t}),this.player.emit("metadata",{time:e.startTime,endTime:e.endTime,text:t,cue:e}),t.includes("PAUSE")&&(this.player.state.paused||(this.player.options.debug&&console.log("[VidPly Metadata] Pausing video at",e.startTime),this.player.pause()),this.player.emit("metadata:pause",{time:e.startTime,text:t}));let i=t.match(/FOCUS:([\w#-]+)/);if(i){let a=i[1],n=document.querySelector(a);n?(this.player.options.debug&&console.log("[VidPly Metadata] Focusing element:",a),this.setManagedTimeout(()=>{n.focus({preventScroll:!0})},10)):this.player.options.debug&&console.warn("[VidPly Metadata] Element not found:",a),this.player.emit("metadata:focus",{time:e.startTime,target:a,element:n,text:t})}let s=t.match(/#[\w-]+/g);s&&(this.player.options.debug&&console.log("[VidPly Metadata] Hashtags found:",s),this.player.emit("metadata:hashtags",{time:e.startTime,hashtags:s,text:t}))}createTranscriptEntry(e,t,i="caption"){let s=this.stripVTTFormatting(e.text),a=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-entry ").concat(this.player.options.classPrefix,"-transcript-").concat(i),attributes:{tabindex:"0","data-start":String(e.startTime),"data-end":String(e.endTime),"data-type":i}}),n=h.createElement("span",{className:"".concat(this.player.options.classPrefix,"-transcript-time"),textContent:C.formatTime(e.startTime),attributes:{"aria-hidden":"true"}}),l=h.createElement("span",{className:"".concat(this.player.options.classPrefix,"-transcript-text"),textContent:s});a.appendChild(n),a.appendChild(l);let c=()=>{this.player.seek(e.startTime),this.player.state.paused&&this.player.play()};return a.addEventListener("click",c),a.addEventListener("keydown",o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),c())}),a}stripVTTFormatting(e){return e.replace(/<[^>]+>/g,"").replace(/\n/g," ").trim()}showNoTranscriptMessage(){let e=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-empty"),textContent:g.t("transcript.noTranscript")});this.transcriptContent.appendChild(e)}updateActiveEntry(){if(!this.isVisible||this.transcriptEntries.length===0)return;let e=this.player.state.currentTime,t=this.transcriptEntries.find(i=>e>=i.startTime&&e<i.endTime);t&&t!==this.currentActiveEntry?(this.currentActiveEntry&&this.currentActiveEntry.element.classList.remove("".concat(this.player.options.classPrefix,"-transcript-entry-active")),t.element.classList.add("".concat(this.player.options.classPrefix,"-transcript-entry-active")),this.scrollToEntry(t.element),this.currentActiveEntry=t):!t&&this.currentActiveEntry&&(this.currentActiveEntry.element.classList.remove("".concat(this.player.options.classPrefix,"-transcript-entry-active")),this.currentActiveEntry=null)}scrollToEntry(e){if(!this.transcriptContent||!this.autoscrollEnabled)return;let t=this.transcriptContent.getBoundingClientRect(),i=e.getBoundingClientRect();if(i.top<t.top||i.bottom>t.bottom){let s=e.offsetTop-this.transcriptContent.clientHeight/2+e.clientHeight/2;this.transcriptContent.scrollTo({top:s,behavior:"smooth"})}}saveAutoscrollPreference(){let e=this.storage.getTranscriptPreferences()||{};e.autoscroll=this.autoscrollEnabled,this.storage.saveTranscriptPreferences(e)}setupDragAndDrop(){if(!this.transcriptHeader||!this.transcriptWindow)return;let e=window.innerWidth<768,t=this.player.state.fullscreen;if(e&&!t){this.draggableResizable&&(this.draggableResizable.destroy(),this.draggableResizable=null);return}this.draggableResizable||(this.draggableResizable=new _(this.transcriptWindow,{dragHandle:this.transcriptHeader,resizeHandles:this.transcriptResizeHandles,constrainToViewport:!0,classPrefix:"".concat(this.player.options.classPrefix,"-transcript"),keyboardDragKey:"d",keyboardResizeKey:"r",keyboardStep:10,keyboardStepLarge:50,minWidth:300,minHeight:200,maxWidth:()=>Math.max(320,window.innerWidth-40),maxHeight:()=>Math.max(200,window.innerHeight-120),pointerResizeIndicatorText:g.t("transcript.resizeModeHint"),onPointerResizeToggle:i=>{this.transcriptResizeHandles.forEach(s=>{s.style.display=i?"block":"none"}),this.onPointerResizeModeChange(i)},onDragStart:i=>{let s=[".".concat(this.player.options.classPrefix,"-transcript-close"),".".concat(this.player.options.classPrefix,"-transcript-settings"),".".concat(this.player.options.classPrefix,"-transcript-language-select"),".".concat(this.player.options.classPrefix,"-transcript-language-label"),".".concat(this.player.options.classPrefix,"-transcript-settings-menu"),".".concat(this.player.options.classPrefix,"-transcript-style-dialog")];for(let a of s)if(i.target.closest(a))return!1;return!0}}),this.customKeyHandler=i=>{let s=i.key.toLowerCase(),a=i.defaultPrevented;if(!(this.settingsMenuVisible||this.styleDialogVisible)){if(s==="home"){i.preventDefault(),i.stopPropagation(),this.draggableResizable&&(this.draggableResizable.pointerResizeMode&&this.draggableResizable.disablePointerResizeMode(),this.draggableResizable.manuallyPositioned=!1,this.positionTranscript(),this.updateResizeOptionState(),this.announceLive(g.t("transcript.positionReset")));return}if(s==="r"){if(a)return;i.preventDefault(),i.stopPropagation(),this.toggleResizeMode()&&this.transcriptWindow.focus({preventScroll:!0});return}if(s==="escape"){if(this.draggableResizable&&this.draggableResizable.pointerResizeMode){i.preventDefault(),i.stopPropagation(),this.draggableResizable.disablePointerResizeMode();return}if(this.draggableResizable&&this.draggableResizable.keyboardDragMode){i.preventDefault(),i.stopPropagation(),this.draggableResizable.disableKeyboardDragMode(),this.announceLive(g.t("transcript.dragModeDisabled"));return}i.preventDefault(),i.stopPropagation(),this.hideTranscript({focusButton:!0});return}}},this.transcriptWindow.addEventListener("keydown",this.customKeyHandler))}toggleKeyboardDragMode(){if(this.draggableResizable){let e=this.draggableResizable.keyboardDragMode;this.draggableResizable.toggleKeyboardDragMode();let t=this.draggableResizable.keyboardDragMode;!e&&t&&this.enableMoveMode(),this.updateDragOptionState(),this.settingsMenuVisible&&this.hideSettingsMenu(),this.transcriptWindow.focus({preventScroll:!0})}}toggleSettingsMenu(){this.settingsMenuVisible?this.hideSettingsMenu():this.showSettingsMenu()}showSettingsMenu(){if(this.settingsMenuJustOpened=!0,setTimeout(()=>{this.settingsMenuJustOpened=!1},350),this.documentClickHandlerAdded||setTimeout(()=>{document.addEventListener("click",this.handlers.documentClick),this.documentClickHandlerAdded=!0},300),this.settingsMenu){this.settingsMenu.style.display="block",this.settingsMenuVisible=!0,this.settingsButton&&this.settingsButton.setAttribute("aria-expanded","true"),this.attachSettingsMenuKeyboardNavigation(),this.positionSettingsMenuImmediate(),this.updateResizeOptionState(),setTimeout(()=>{let w=this.settingsMenu.querySelectorAll(".".concat(this.player.options.classPrefix,"-transcript-settings-item"));if(w.length>0){w[0].setAttribute("tabindex","0");for(let f=1;f<w.length;f++)w[f].setAttribute("tabindex","-1");w[0].focus({preventScroll:!0})}},50);return}this.settingsMenu=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-settings-menu"),attributes:{role:"menu"}});let e=B({classPrefix:this.player.options.classPrefix,itemClass:"".concat(this.player.options.classPrefix,"-transcript-settings-item"),icon:"move",label:"transcript.enableDragMode",hasTextClass:!0,onClick:()=>{this.toggleKeyboardDragMode(),this.hideSettingsMenu()}});e.setAttribute("role","switch"),e.setAttribute("aria-checked","false");let t=e.querySelector(".".concat(this.player.options.classPrefix,"-tooltip"));t&&t.remove();let i=e.querySelector(".".concat(this.player.options.classPrefix,"-button-text"));i&&i.remove(),this.dragOptionButton=e,this.dragOptionText=e.querySelector(".".concat(this.player.options.classPrefix,"-settings-text")),this.updateDragOptionState();let s=B({classPrefix:this.player.options.classPrefix,itemClass:"".concat(this.player.options.classPrefix,"-transcript-settings-item"),icon:"settings",label:"transcript.styleTranscript",onClick:w=>{w.preventDefault(),w.stopPropagation(),this.hideSettingsMenu(),setTimeout(()=>{this.showStyleDialog()},50)}}),a=s.querySelector(".".concat(this.player.options.classPrefix,"-tooltip"));a&&a.remove();let n=s.querySelector(".".concat(this.player.options.classPrefix,"-button-text"));n&&n.remove();let l=B({classPrefix:this.player.options.classPrefix,itemClass:"".concat(this.player.options.classPrefix,"-transcript-settings-item"),icon:"resize",label:"transcript.enableResizeMode",hasTextClass:!0,onClick:w=>{w.preventDefault(),w.stopPropagation(),this.toggleResizeMode({focus:!1})?(this.hideSettingsMenu({focusButton:!1}),setTimeout(()=>{this.transcriptWindow&&this.transcriptWindow.focus({preventScroll:!0})},20)):this.hideSettingsMenu({focusButton:!0})}});l.setAttribute("role","switch"),l.setAttribute("aria-checked","false");let c=l.querySelector(".".concat(this.player.options.classPrefix,"-tooltip"));c&&c.remove();let o=l.querySelector(".".concat(this.player.options.classPrefix,"-button-text"));o&&o.remove(),this.resizeOptionButton=l,this.resizeOptionText=l.querySelector(".".concat(this.player.options.classPrefix,"-settings-text")),this.updateResizeOptionState();let r=B({classPrefix:this.player.options.classPrefix,itemClass:"".concat(this.player.options.classPrefix,"-transcript-settings-item"),icon:"clock",label:"transcript.showTimestamps",hasTextClass:!0,onClick:()=>{this.toggleShowTimestamps()}});r.setAttribute("role","switch"),r.setAttribute("aria-checked",this.showTimestamps?"true":"false");let d=r.querySelector(".".concat(this.player.options.classPrefix,"-tooltip"));d&&d.remove();let u=r.querySelector(".".concat(this.player.options.classPrefix,"-button-text"));u&&u.remove(),this.showTimestampsButton=r,this.showTimestampsText=r.querySelector(".".concat(this.player.options.classPrefix,"-settings-text")),this.updateShowTimestampsState();let p=B({classPrefix:this.player.options.classPrefix,itemClass:"".concat(this.player.options.classPrefix,"-transcript-settings-item"),icon:"close",label:"transcript.closeMenu",onClick:()=>{this.hideSettingsMenu()}}),y=p.querySelector(".".concat(this.player.options.classPrefix,"-tooltip"));y&&y.remove();let b=p.querySelector(".".concat(this.player.options.classPrefix,"-button-text"));b&&b.remove(),this.settingsMenu.appendChild(e),this.settingsMenu.appendChild(l),this.settingsMenu.appendChild(s),this.settingsMenu.appendChild(r),this.settingsMenu.appendChild(p),this.settingsMenu.style.visibility="hidden",this.settingsMenu.style.display="block",this.settingsButton&&this.settingsButton.parentNode?this.settingsButton.insertAdjacentElement("afterend",this.settingsMenu):this.headerLeft?this.headerLeft.appendChild(this.settingsMenu):this.transcriptHeader?this.transcriptHeader.appendChild(this.settingsMenu):this.transcriptWindow.appendChild(this.settingsMenu),this.positionSettingsMenuImmediate(),requestAnimationFrame(()=>{this.settingsMenu&&(this.settingsMenu.style.visibility="visible")}),this.settingsMenuKeyHandler=I(this.settingsMenu,this.settingsButton,".".concat(this.player.options.classPrefix,"-transcript-settings-item"),()=>this.hideSettingsMenu({focusButton:!0})),this.settingsMenuVisible=!0,this.settingsMenu.style.display="block",this.settingsButton&&this.settingsButton.setAttribute("aria-expanded","true"),this.updateResizeOptionState(),setTimeout(()=>{let w=this.settingsMenu.querySelectorAll(".".concat(this.player.options.classPrefix,"-transcript-settings-item"));if(w.length>0){w[0].setAttribute("tabindex","0");for(let f=1;f<w.length;f++)w[f].setAttribute("tabindex","-1");w[0].focus({preventScroll:!0})}},50)}positionSettingsMenuImmediate(){if(!this.settingsMenu||!this.settingsButton)return;let e=this.settingsButton.parentElement;if(!e)return;let t=this.settingsButton.getBoundingClientRect(),i=e.getBoundingClientRect(),s=this.settingsMenu.getBoundingClientRect(),a=window.innerHeight,n=t.left-i.left,l=t.bottom-i.top,c=t.top-i.top,o=a-t.bottom,r=t.top,d=l+4;o<s.height+20&&r>o?(d=c-s.height-4,this.settingsMenu.classList.add("vidply-menu-above")):this.settingsMenu.classList.remove("vidply-menu-above"),this.settingsMenu.style.top="".concat(d,"px"),this.settingsMenu.style.left="".concat(n,"px"),this.settingsMenu.style.right="auto",this.settingsMenu.style.bottom="auto"}positionSettingsMenu(){!this.settingsMenu||!this.settingsButton||requestAnimationFrame(()=>{setTimeout(()=>{this.positionSettingsMenuImmediate()},10)})}attachSettingsMenuKeyboardNavigation(){if(!this.settingsMenu)return;this.settingsMenuKeyHandler&&this.settingsMenu.removeEventListener("keydown",this.settingsMenuKeyHandler,!0);let e=I(this.settingsMenu,this.settingsButton,".".concat(this.player.options.classPrefix,"-transcript-settings-item"),()=>this.hideSettingsMenu({focusButton:!0}));this.settingsMenuKeyHandler=e}hideSettingsMenu({focusButton:e=!0}={}){this.settingsMenu&&(this.settingsMenu.style.display="none",this.settingsMenuVisible=!1,this.settingsMenuJustOpened=!1,this.settingsMenuKeyHandler&&(this.settingsMenu.removeEventListener("keydown",this.settingsMenuKeyHandler,!0),this.settingsMenuKeyHandler=null),this.settingsButton&&(this.settingsButton.setAttribute("aria-expanded","false"),e&&this.settingsButton.focus({preventScroll:!0})))}enableMoveMode(){this.hideResizeModeIndicator(),this.transcriptWindow.classList.add("".concat(this.player.options.classPrefix,"-transcript-move-mode"));let e=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-move-tooltip"),textContent:"Drag with mouse or press D for keyboard drag mode"});this.transcriptHeader.appendChild(e),setTimeout(()=>{this.transcriptWindow.classList.remove("".concat(this.player.options.classPrefix,"-transcript-move-mode")),e.parentNode&&e.remove()},2e3)}toggleResizeMode({focus:e=!0}={}){return this.draggableResizable?this.draggableResizable.pointerResizeMode?(this.draggableResizable.disablePointerResizeMode({focus:e}),!1):(this.draggableResizable.enablePointerResizeMode({focus:e}),!0):!1}updateDragOptionState(){if(!this.dragOptionButton)return;let e=!!(this.draggableResizable&&this.draggableResizable.keyboardDragMode),t=e?g.t("transcript.disableDragMode"):g.t("transcript.enableDragMode"),i=e?g.t("transcript.disableDragModeAria"):g.t("transcript.enableDragModeAria");this.dragOptionButton.setAttribute("aria-checked",e?"true":"false"),this.dragOptionButton.setAttribute("aria-label",i),this.dragOptionText&&(this.dragOptionText.textContent=t)}updateResizeOptionState(){if(!this.resizeOptionButton)return;let e=!!(this.draggableResizable&&this.draggableResizable.pointerResizeMode),t=e?g.t("transcript.disableResizeMode"):g.t("transcript.enableResizeMode"),i=e?g.t("transcript.disableResizeModeAria"):g.t("transcript.enableResizeModeAria");this.resizeOptionButton.setAttribute("aria-checked",e?"true":"false"),this.resizeOptionButton.setAttribute("aria-label",i),this.resizeOptionText&&(this.resizeOptionText.textContent=t)}toggleShowTimestamps(){this.showTimestamps=!this.showTimestamps,this.updateShowTimestampsState(),this.updateTimestampVisibility(),this.saveTimestampsPreference()}updateShowTimestampsState(){if(!this.showTimestampsButton)return;let e=this.showTimestamps?g.t("transcript.hideTimestamps"):g.t("transcript.showTimestamps"),t=this.showTimestamps?g.t("transcript.hideTimestampsAria"):g.t("transcript.showTimestampsAria");this.showTimestampsButton.setAttribute("aria-checked",this.showTimestamps?"true":"false"),this.showTimestampsButton.setAttribute("aria-label",t),this.showTimestampsText&&(this.showTimestampsText.textContent=e)}updateTimestampVisibility(){if(!this.transcriptContent)return;this.transcriptContent.querySelectorAll(".".concat(this.player.options.classPrefix,"-transcript-time")).forEach(t=>{t.style.display=this.showTimestamps?"":"none"})}saveTimestampsPreference(){let e=this.storage.getTranscriptPreferences()||{};e.showTimestamps=this.showTimestamps,this.storage.saveTranscriptPreferences(e)}showResizeModeIndicator(){if(!this.transcriptHeader)return;this.hideResizeModeIndicator();let e=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-resize-tooltip"),textContent:g.t("transcript.resizeModeHint")||"Resize handles enabled. Drag edges or corners to adjust. Press Esc or R to exit."});this.transcriptHeader.appendChild(e),this.resizeModeIndicator=e,this.resizeModeIndicatorTimeout=this.setManagedTimeout(()=>{this.hideResizeModeIndicator()},3e3)}hideResizeModeIndicator(){this.resizeModeIndicatorTimeout&&(this.clearManagedTimeout(this.resizeModeIndicatorTimeout),this.resizeModeIndicatorTimeout=null),this.resizeModeIndicator&&this.resizeModeIndicator.parentNode&&this.resizeModeIndicator.remove(),this.resizeModeIndicator=null}onPointerResizeModeChange(e){this.updateResizeOptionState(),e?(this.showResizeModeIndicator(),this.announceLive(g.t("transcript.resizeModeEnabled"))):(this.hideResizeModeIndicator(),this.announceLive(g.t("transcript.resizeModeDisabled")))}showStyleDialog(){if(this.styleDialog){this.styleDialog.style.display="block",this.styleDialogVisible=!0,this.handlers.styleDialogKeydown&&document.addEventListener("keydown",this.handlers.styleDialogKeydown),this.styleDialogJustOpened=!0,setTimeout(()=>{this.styleDialogJustOpened=!1},350),setTimeout(()=>{let c=this.styleDialog.querySelector("select, input");c&&c.focus({preventScroll:!0})},0);return}this.styleDialog=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-style-dialog")});let e=h.createElement("h4",{textContent:g.t("transcript.styleTitle"),className:"".concat(this.player.options.classPrefix,"-transcript-style-title")});this.styleDialog.appendChild(e);let t=this.createStyleSelectControl(g.t("captions.fontSize"),"fontSize",[{label:g.t("fontSizes.small"),value:"90%"},{label:g.t("fontSizes.normal"),value:"100%"},{label:g.t("fontSizes.large"),value:"110%"},{label:g.t("fontSizes.xlarge"),value:"120%"}]);this.styleDialog.appendChild(t);let i=this.createStyleSelectControl(g.t("captions.fontFamily"),"fontFamily",[{label:g.t("fontFamilies.sansSerif"),value:"sans-serif"},{label:g.t("fontFamilies.serif"),value:"serif"},{label:g.t("fontFamilies.monospace"),value:"monospace"}]);this.styleDialog.appendChild(i);let s=this.createStyleColorControl(g.t("captions.color"),"color");this.styleDialog.appendChild(s);let a=this.createStyleColorControl(g.t("captions.backgroundColor"),"backgroundColor");this.styleDialog.appendChild(a);let n=this.createStyleOpacityControl(g.t("captions.opacity"),"opacity");this.styleDialog.appendChild(n);let l=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-transcript-style-close"),textContent:g.t("settings.close"),attributes:{type:"button"}});l.addEventListener("click",()=>this.hideStyleDialog()),this.styleDialog.appendChild(l),this.handlers.styleDialogKeydown=c=>{if(this.styleDialogVisible){if(c.key==="Escape"){c.preventDefault(),c.stopPropagation(),this.hideStyleDialog();return}if(c.key==="Tab"){let o=this.styleDialog.querySelectorAll("select, input, button"),r=o[0],d=o[o.length-1];c.shiftKey&&document.activeElement===r?(c.preventDefault(),d.focus({preventScroll:!0})):!c.shiftKey&&document.activeElement===d&&(c.preventDefault(),r.focus({preventScroll:!0}))}}},document.addEventListener("keydown",this.handlers.styleDialogKeydown),this.headerLeft?this.headerLeft.appendChild(this.styleDialog):this.transcriptHeader.appendChild(this.styleDialog),this.applyTranscriptStyles(),this.styleDialogVisible=!0,this.styleDialog.style.display="block",this.styleDialogJustOpened=!0,setTimeout(()=>{this.styleDialogJustOpened=!1},350),setTimeout(()=>{let c=this.styleDialog.querySelector("select, input");c&&c.focus({preventScroll:!0})},0)}hideStyleDialog(){this.styleDialog&&(this.styleDialog.style.display="none",this.styleDialogVisible=!1,this.handlers.styleDialogKeydown&&document.removeEventListener("keydown",this.handlers.styleDialogKeydown),this.settingsButton&&this.settingsButton.focus({preventScroll:!0}))}createStyleSelectControl(e,t,i){let s=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-style-group")}),a="".concat(this.player.options.classPrefix,"-transcript-").concat(t,"-").concat(Date.now()),n=h.createElement("label",{textContent:e,attributes:{for:a}});s.appendChild(n);let l=h.createElement("select",{className:"".concat(this.player.options.classPrefix,"-transcript-style-select"),attributes:{id:a}});return i.forEach(c=>{let o=h.createElement("option",{textContent:c.label,attributes:{value:c.value}});this.transcriptStyle[t]===c.value&&(o.selected=!0),l.appendChild(o)}),l.addEventListener("change",c=>{this.transcriptStyle[t]=c.target.value,this.applyTranscriptStyles(),this.savePreferences()}),s.appendChild(l),s}createStyleColorControl(e,t){let i=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-style-group")}),s="".concat(this.player.options.classPrefix,"-transcript-").concat(t,"-").concat(Date.now()),a=h.createElement("label",{textContent:e,attributes:{for:s}});i.appendChild(a);let n=h.createElement("input",{attributes:{id:s,type:"color",value:this.transcriptStyle[t]},className:"".concat(this.player.options.classPrefix,"-transcript-style-color")});return n.addEventListener("input",l=>{this.transcriptStyle[t]=l.target.value,this.applyTranscriptStyles(),this.savePreferences()}),i.appendChild(n),i}createStyleOpacityControl(e,t){let i=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-style-group")}),s="".concat(this.player.options.classPrefix,"-transcript-").concat(t,"-").concat(Date.now()),a=h.createElement("label",{textContent:e,attributes:{for:s}});i.appendChild(a);let n=h.createElement("span",{textContent:Math.round(this.transcriptStyle[t]*100)+"%",className:"".concat(this.player.options.classPrefix,"-transcript-style-value")}),l=h.createElement("input",{attributes:{id:s,type:"range",min:"0",max:"1",step:"0.1",value:String(this.transcriptStyle[t])},className:"".concat(this.player.options.classPrefix,"-transcript-style-range")});l.addEventListener("input",o=>{let r=parseFloat(o.target.value);this.transcriptStyle[t]=r,n.textContent=Math.round(r*100)+"%",this.applyTranscriptStyles(),this.savePreferences()});let c=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-style-range-container")});return c.appendChild(l),c.appendChild(n),i.appendChild(a),i.appendChild(c),i}savePreferences(){this.storage.saveTranscriptPreferences(this.transcriptStyle)}applyTranscriptStyles(){if(!this.transcriptWindow)return;this.transcriptWindow.style.backgroundColor=this.transcriptStyle.backgroundColor,this.transcriptWindow.style.opacity=String(this.transcriptStyle.opacity),this.transcriptContent&&(this.transcriptContent.style.fontSize=this.transcriptStyle.fontSize,this.transcriptContent.style.fontFamily=this.transcriptStyle.fontFamily,this.transcriptContent.style.color=this.transcriptStyle.color),this.transcriptWindow.querySelectorAll(".".concat(this.player.options.classPrefix,"-transcript-text")).forEach(i=>{i.style.fontSize=this.transcriptStyle.fontSize,i.style.fontFamily=this.transcriptStyle.fontFamily,i.style.color=this.transcriptStyle.color}),this.transcriptWindow.querySelectorAll(".".concat(this.player.options.classPrefix,"-transcript-time")).forEach(i=>{i.style.fontFamily=this.transcriptStyle.fontFamily})}setManagedTimeout(e,t){let i=setTimeout(()=>{this.timeouts.delete(i),e()},t);return this.timeouts.add(i),i}clearManagedTimeout(e){e&&(clearTimeout(e),this.timeouts.delete(e))}destroy(){this.hideResizeModeIndicator(),this.draggableResizable&&(this.draggableResizable.pointerResizeMode&&(this.draggableResizable.disablePointerResizeMode(),this.updateResizeOptionState()),this.draggableResizable.destroy(),this.draggableResizable=null),this.transcriptWindow&&this.customKeyHandler&&(this.transcriptWindow.removeEventListener("keydown",this.customKeyHandler),this.customKeyHandler=null),this.handlers.timeupdate&&this.player.off("timeupdate",this.handlers.timeupdate),this.handlers.audiodescriptionenabled&&this.player.off("audiodescriptionenabled",this.handlers.audiodescriptionenabled),this.handlers.audiodescriptiondisabled&&this.player.off("audiodescriptiondisabled",this.handlers.audiodescriptiondisabled),this.settingsButton&&(this.handlers.settingsClick&&this.settingsButton.removeEventListener("click",this.handlers.settingsClick),this.handlers.settingsKeydown&&this.settingsButton.removeEventListener("keydown",this.handlers.settingsKeydown)),this.handlers.styleDialogKeydown&&document.removeEventListener("keydown",this.handlers.styleDialogKeydown),this.handlers.documentClick&&document.removeEventListener("click",this.handlers.documentClick),this.handlers.resize&&window.removeEventListener("resize",this.handlers.resize),this.timeouts.forEach(e=>clearTimeout(e)),this.timeouts.clear(),this.handlers=null,this.transcriptWindow&&this.transcriptWindow.parentNode&&this.transcriptWindow.parentNode.removeChild(this.transcriptWindow),this.transcriptWindow=null,this.transcriptHeader=null,this.transcriptContent=null,this.transcriptEntries=[],this.settingsMenu=null,this.styleDialog=null,this.transcriptResizeHandles=[],this.resizeOptionButton=null,this.resizeOptionText=null,this.liveRegion=null}announceLive(e){this.liveRegion&&(this.liveRegion.textContent=e||"")}}});var Ke={};R(Ke,{YouTubeRenderer:()=>be});var be,_e=x(()=>{be=class{constructor(e){this.player=e,this.youtube=null,this.videoId=null,this.isReady=!1,this.iframe=null}async init(){let e=this.player.currentSource||this.player.element.src;if(this.videoId=this.extractVideoId(e),!this.videoId)throw new Error("Invalid YouTube URL");await this.loadYouTubeAPI(),this.createIframe(),await this.initializePlayer()}extractVideoId(e){let t=[/(?:youtube\.com\/watch\?v=|youtu\.be\/)([^&\s]+)/,/youtube\.com\/embed\/([^&\s]+)/];for(let i of t){let s=e.match(i);if(s&&s[1])return s[1]}return null}async loadYouTubeAPI(){return window.YT&&window.YT.Player?Promise.resolve():new Promise((e,t)=>{if(window.onYouTubeIframeAPIReady){let a=window.onYouTubeIframeAPIReady;window.onYouTubeIframeAPIReady=()=>{a(),e()};return}let i=document.createElement("script");i.src="https://www.youtube.com/iframe_api",window.onYouTubeIframeAPIReady=()=>{e()},i.onerror=()=>t(new Error("Failed to load YouTube API"));let s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(i,s)})}createIframe(){this.player.element.style.display="none",this.iframe=document.createElement("div"),this.iframe.id="youtube-player-".concat(Math.random().toString(36).substr(2,9)),this.iframe.style.width="100%",this.iframe.style.aspectRatio="16 / 9",this.iframe.style.maxHeight="100%",this.player.element.parentNode.insertBefore(this.iframe,this.player.element)}async initializePlayer(){return new Promise(e=>{this.youtube=new window.YT.Player(this.iframe.id,{videoId:this.videoId,width:"100%",height:"100%",playerVars:{controls:1,disablekb:0,fs:1,modestbranding:1,rel:0,showinfo:0,iv_load_policy:3,autoplay:this.player.options.autoplay?1:0,mute:this.player.options.muted?1:0,start:this.player.options.startTime||0},events:{onReady:t=>{this.isReady=!0,this.attachEvents(),this.player.container&&this.player.container.classList.add("vidply-external-controls"),e()},onStateChange:t=>this.handleStateChange(t),onError:t=>this.handleError(t)}})})}attachEvents(){this.timeUpdateInterval=setInterval(()=>{if(this.isReady&&this.youtube){let e=this.youtube.getCurrentTime(),t=this.youtube.getDuration();this.player.state.currentTime=e,this.player.state.duration=t,this.player.emit("timeupdate",e)}},250),this.youtube.getDuration&&(this.player.state.duration=this.youtube.getDuration(),this.player.emit("loadedmetadata"))}handleStateChange(e){let t=window.YT.PlayerState;switch(e.data){case t.PLAYING:this.player.state.playing=!0,this.player.state.paused=!1,this.player.state.ended=!1,this.player.state.buffering=!1,this.player.emit("play"),this.player.emit("playing"),this.player.options.onPlay&&this.player.options.onPlay.call(this.player);break;case t.PAUSED:this.player.state.playing=!1,this.player.state.paused=!0,this.player.emit("pause"),this.player.options.onPause&&this.player.options.onPause.call(this.player);break;case t.ENDED:this.player.state.playing=!1,this.player.state.paused=!0,this.player.state.ended=!0,this.player.emit("ended"),this.player.options.onEnded&&this.player.options.onEnded.call(this.player),this.player.options.loop&&(this.youtube.seekTo(0),this.youtube.playVideo());break;case t.BUFFERING:this.player.state.buffering=!0,this.player.emit("waiting");break;case t.CUED:this.player.emit("loadedmetadata");break}}handleError(e){let t={2:"Invalid video ID",5:"HTML5 player error",100:"Video not found",101:"Video not allowed to be played in embedded players",150:"Video not allowed to be played in embedded players"},i=new Error(t[e.data]||"YouTube player error");this.player.handleError(i)}play(){if(this.isReady&&this.youtube){let e=window.scrollX,t=window.scrollY;this.youtube.playVideo(),window.scrollTo(e,t)}}pause(){this.isReady&&this.youtube&&this.youtube.pauseVideo()}seek(e){this.isReady&&this.youtube&&this.youtube.seekTo(e,!0)}setVolume(e){this.isReady&&this.youtube&&(this.youtube.setVolume(e*100),this.player.state.volume=e)}setMuted(e){this.isReady&&this.youtube&&(e?this.youtube.mute():this.youtube.unMute(),this.player.state.muted=e)}setPlaybackSpeed(e){this.isReady&&this.youtube&&(this.youtube.setPlaybackRate(e),this.player.state.playbackSpeed=e)}destroy(){this.timeUpdateInterval&&clearInterval(this.timeUpdateInterval),this.youtube&&this.youtube.destroy&&this.youtube.destroy(),this.iframe&&this.iframe.parentNode&&this.iframe.parentNode.removeChild(this.iframe),this.player.element&&(this.player.element.style.display="")}}});var je={};R(je,{VimeoRenderer:()=>ve});var ve,Qe=x(()=>{ve=class{constructor(e){this.player=e,this.vimeo=null,this.videoId=null,this.isReady=!1,this.iframe=null}async init(){let e=this.player.currentSource||this.player.element.src;if(this.videoId=this.extractVideoId(e),!this.videoId)throw new Error("Invalid Vimeo URL");await this.loadVimeoAPI(),this.createIframe(),await this.initializePlayer()}extractVideoId(e){let t=[/vimeo\.com\/(\d+)/,/vimeo\.com\/video\/(\d+)/,/player\.vimeo\.com\/video\/(\d+)/];for(let i of t){let s=e.match(i);if(s&&s[1])return s[1]}return null}async loadVimeoAPI(){return window.Vimeo&&window.Vimeo.Player?Promise.resolve():new Promise((e,t)=>{let i=document.createElement("script");i.src="https://player.vimeo.com/api/player.js",i.onload=()=>e(),i.onerror=()=>t(new Error("Failed to load Vimeo API")),document.head.appendChild(i)})}createIframe(){this.player.element.style.display="none",this.iframe=document.createElement("div"),this.iframe.id="vimeo-player-".concat(Math.random().toString(36).substr(2,9)),this.iframe.style.width="100%",this.iframe.style.aspectRatio="16 / 9",this.iframe.style.maxHeight="100%",this.player.element.parentNode.insertBefore(this.iframe,this.player.element)}async initializePlayer(){let e={id:this.videoId,width:"100%",height:"100%",controls:!0,autoplay:this.player.options.autoplay,muted:this.player.options.muted,loop:this.player.options.loop,keyboard:!1};this.player.options.startTime>0&&(e.startTime=this.player.options.startTime),this.vimeo=new window.Vimeo.Player(this.iframe.id,e),await this.vimeo.ready(),this.isReady=!0;let t=this.iframe.querySelector("iframe");t&&(t.style.width="100%",t.style.height="100%",t.setAttribute("width","100%"),t.setAttribute("height","100%")),this.player.container&&this.player.container.classList.add("vidply-external-controls"),this.attachEvents();try{let i=await this.vimeo.getDuration();this.player.state.duration=i,this.player.emit("loadedmetadata")}catch(i){this.player.log("Error getting duration:",i,"warn")}}attachEvents(){this.vimeo.on("play",()=>{this.player.state.playing=!0,this.player.state.paused=!1,this.player.state.ended=!1,this.player.emit("play"),this.player.options.onPlay&&this.player.options.onPlay.call(this.player)}),this.vimeo.on("pause",()=>{this.player.state.playing=!1,this.player.state.paused=!0,this.player.emit("pause"),this.player.options.onPause&&this.player.options.onPause.call(this.player)}),this.vimeo.on("ended",()=>{this.player.state.playing=!1,this.player.state.paused=!0,this.player.state.ended=!0,this.player.emit("ended"),this.player.options.onEnded&&this.player.options.onEnded.call(this.player)}),this.vimeo.on("timeupdate",e=>{this.player.state.currentTime=e.seconds,this.player.state.duration=e.duration,this.player.emit("timeupdate",e.seconds),this.player.options.onTimeUpdate&&this.player.options.onTimeUpdate.call(this.player,e.seconds)}),this.vimeo.on("volumechange",e=>{this.player.state.volume=e.volume,this.player.emit("volumechange",e.volume)}),this.vimeo.on("bufferstart",()=>{this.player.state.buffering=!0,this.player.emit("waiting")}),this.vimeo.on("bufferend",()=>{this.player.state.buffering=!1,this.player.emit("canplay")}),this.vimeo.on("seeking",()=>{this.player.state.seeking=!0,this.player.emit("seeking")}),this.vimeo.on("seeked",()=>{this.player.state.seeking=!1,this.player.emit("seeked")}),this.vimeo.on("playbackratechange",e=>{this.player.state.playbackSpeed=e.playbackRate,this.player.emit("ratechange",e.playbackRate)}),this.vimeo.on("error",e=>{this.player.handleError(new Error("Vimeo error: ".concat(e.message)))})}play(){if(this.isReady&&this.vimeo){let e=window.scrollX,t=window.scrollY;this.vimeo.play().catch(i=>{this.player.log("Play error:",i,"warn")}),window.scrollTo(e,t)}}pause(){this.isReady&&this.vimeo&&this.vimeo.pause().catch(e=>{this.player.log("Pause error:",e,"warn")})}seek(e){this.isReady&&this.vimeo&&this.vimeo.setCurrentTime(e).catch(t=>{this.player.log("Seek error:",t,"warn")})}setVolume(e){this.isReady&&this.vimeo&&(this.vimeo.setVolume(e).catch(t=>{this.player.log("Volume error:",t,"warn")}),this.player.state.volume=e)}setMuted(e){this.isReady&&this.vimeo&&(e?this.vimeo.setVolume(0):this.vimeo.setVolume(this.player.state.volume),this.player.state.muted=e)}setPlaybackSpeed(e){this.isReady&&this.vimeo&&(this.vimeo.setPlaybackRate(e).catch(t=>{this.player.log("Playback rate error:",t,"warn")}),this.player.state.playbackSpeed=e)}destroy(){this.vimeo&&this.vimeo.destroy&&this.vimeo.destroy(),this.iframe&&this.iframe.parentNode&&this.iframe.parentNode.removeChild(this.iframe),this.player.element&&(this.player.element.style.display="")}}});var Ye={};R(Ye,{HLSRenderer:()=>we});var we,Xe=x(()=>{we=class{constructor(e){this.player=e,this.media=e.element,this.hls=null}async init(){this.canPlayNatively()?(this.player.log("Using native HLS support"),await this.initNative()):(this.player.log("Using hls.js for HLS support"),await this.initHlsJs())}canPlayNatively(){let e=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),t=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream;return!e&&!t?!1:document.createElement("video").canPlayType("application/vnd.apple.mpegurl")!==""}async initNative(){let e=(await Promise.resolve().then(()=>(he(),Ie))).HTML5Renderer,t=new e(this.player);await t.init(),Object.getOwnPropertyNames(Object.getPrototypeOf(t)).forEach(i=>{i!=="constructor"&&typeof t[i]=="function"&&(this[i]=t[i].bind(t))})}async initHlsJs(){if(this.media.controls=!1,this.media.removeAttribute("controls"),window.Hls||await this.loadHlsJs(),!window.Hls.isSupported())throw new Error("HLS is not supported in this browser");this.hls=new window.Hls({debug:this.player.options.debug,enableWorker:!0,lowLatencyMode:!1,backBufferLength:90,maxBufferLength:30,maxMaxBufferLength:600,maxBufferSize:60*1e3*1e3,maxBufferHole:.5,manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:4,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3}),this.hls.attachMedia(this.media);let e=this.player.currentSource;if(!e){let t=this.player.element.querySelector("source");t?e=t.getAttribute("src"):e=this.player.element.getAttribute("src")||this.player.element.src}if(this.player.log("Loading HLS source: ".concat(e),"log"),!e)throw new Error("No HLS source found");this.hls.loadSource(e),this.attachHlsEvents(),this.attachMediaEvents()}async loadHlsJs(){return new Promise((e,t)=>{let i=document.createElement("script");i.src="https://cdn.jsdelivr.net/npm/hls.js@latest",i.onload=()=>e(),i.onerror=()=>t(new Error("Failed to load hls.js")),document.head.appendChild(i)})}attachHlsEvents(){this.hls.on(window.Hls.Events.MANIFEST_PARSED,(e,t)=>{this.player.log("HLS manifest loaded, found "+t.levels.length+" quality levels"),this.player.emit("hlsmanifestparsed",t),this.player.container&&this.player.container.classList.remove("vidply-external-controls")}),this.hls.on(window.Hls.Events.LEVEL_SWITCHED,(e,t)=>{this.player.log("HLS level switched to "+t.level),this.player.emit("hlslevelswitched",t)}),this.hls.on(window.Hls.Events.ERROR,(e,t)=>{this.handleHlsError(t)}),this.hls.on(window.Hls.Events.FRAG_BUFFERED,()=>{this.player.state.buffering=!1})}attachMediaEvents(){this.media.addEventListener("loadedmetadata",()=>{this.player.state.duration=this.media.duration,this.player.emit("loadedmetadata")}),this.media.addEventListener("play",()=>{this.player.state.playing=!0,this.player.state.paused=!1,this.player.state.ended=!1,this.player.emit("play"),this.player.options.onPlay&&this.player.options.onPlay.call(this.player)}),this.media.addEventListener("pause",()=>{this.player.state.playing=!1,this.player.state.paused=!0,this.player.emit("pause"),this.player.options.onPause&&this.player.options.onPause.call(this.player)}),this.media.addEventListener("ended",()=>{this.player.state.playing=!1,this.player.state.paused=!0,this.player.state.ended=!0,this.player.emit("ended"),this.player.options.onEnded&&this.player.options.onEnded.call(this.player),this.player.options.loop&&(this.player.seek(0),this.player.play())}),this.media.addEventListener("timeupdate",()=>{this.player.state.currentTime=this.media.currentTime,this.player.emit("timeupdate",this.media.currentTime),this.player.options.onTimeUpdate&&this.player.options.onTimeUpdate.call(this.player,this.media.currentTime)}),this.media.addEventListener("volumechange",()=>{this.player.state.volume=this.media.volume,this.player.state.muted=this.media.muted,this.player.emit("volumechange",this.media.volume)}),this.media.addEventListener("waiting",()=>{this.player.state.buffering=!0,this.player.emit("waiting")}),this.media.addEventListener("canplay",()=>{this.player.state.buffering=!1,this.player.emit("canplay")}),this.media.addEventListener("error",()=>{this.player.handleError(this.media.error)})}handleHlsError(e){if(this.player.log("HLS Error - Type: ".concat(e.type,", Details: ").concat(e.details,", Fatal: ").concat(e.fatal),"warn"),e.response&&this.player.log("Response code: ".concat(e.response.code,", URL: ").concat(e.response.url),"warn"),e.fatal)switch(e.type){case window.Hls.ErrorTypes.NETWORK_ERROR:this.player.log("Fatal network error, trying to recover...","error"),this.player.log("Network error details: ".concat(e.details),"error"),setTimeout(()=>{this.hls.startLoad()},1e3);break;case window.Hls.ErrorTypes.MEDIA_ERROR:this.player.log("Fatal media error, trying to recover...","error"),this.hls.recoverMediaError();break;default:this.player.log("Fatal error, cannot recover","error"),this.player.handleError(new Error("HLS Error: ".concat(e.type," - ").concat(e.details))),this.hls.destroy();break}else this.player.log("Non-fatal HLS error: "+e.details,"warn")}play(){let e=window.scrollX,t=window.scrollY,i=this.media.play();window.scrollTo(e,t),i!==void 0&&i.catch(s=>{this.player.log("Play failed:",s,"warn")})}pause(){this.media.pause()}seek(e){this.media.currentTime=e}setVolume(e){this.media.volume=e}setMuted(e){this.media.muted=e}setPlaybackSpeed(e){this.media.playbackRate=e}switchQuality(e){this.hls&&(this.hls.currentLevel=e)}getQualities(){return this.hls&&this.hls.levels?this.hls.levels.map((e,t)=>({index:t,height:e.height,width:e.width,bitrate:e.bitrate,name:"".concat(e.height,"p")})):[]}getCurrentQuality(){return this.hls?this.hls.currentLevel:-1}destroy(){this.hls&&(this.hls.destroy(),this.hls=null)}}});var Ge={};R(Ge,{SoundCloudRenderer:()=>le,default:()=>dt});var le,dt,Je=x(()=>{le=class{constructor(e){this.player=e,this.widget=null,this.trackUrl=null,this.isReady=!1,this.iframe=null,this.iframeId=null}async init(){var e;if(this.trackUrl=this.player.currentSource||this.player.element.src||((e=this.player.element.querySelector("source"))==null?void 0:e.src),!this.trackUrl||!this.isValidSoundCloudUrl(this.trackUrl))throw new Error("Invalid SoundCloud URL");await this.loadSoundCloudAPI(),this.createIframe(),await this.initializeWidget()}isValidSoundCloudUrl(e){return e.includes("soundcloud.com")||e.includes("api.soundcloud.com")}isPlaylist(){return this.trackUrl&&this.trackUrl.includes("/sets/")}getEmbedUrl(){let e=encodeURIComponent(this.trackUrl),t=new URLSearchParams({url:this.trackUrl,auto_play:this.player.options.autoplay?"true":"false",hide_related:"true",show_comments:"false",show_user:"true",show_reposts:"false",show_teaser:"false",visual:"false",color:"%23007bff"});return"https://w.soundcloud.com/player/?".concat(t.toString())}async loadSoundCloudAPI(){return window.SC&&window.SC.Widget?Promise.resolve():new Promise((e,t)=>{let i=document.createElement("script");i.src="https://w.soundcloud.com/player/api.js",i.onload=()=>{setTimeout(()=>{window.SC&&window.SC.Widget?e():t(new Error("SoundCloud Widget API not available"))},100)},i.onerror=()=>t(new Error("Failed to load SoundCloud Widget API")),document.head.appendChild(i)})}createIframe(){this.player.element.style.display="none",this.player.element.removeAttribute("poster"),this.player.videoWrapper&&(this.player.videoWrapper.classList.remove("vidply-forced-poster"),this.player.videoWrapper.style.removeProperty("--vidply-poster-image")),this.iframeId="soundcloud-player-".concat(Math.random().toString(36).substr(2,9)),this.iframe=document.createElement("iframe"),this.iframe.id=this.iframeId,this.iframe.scrolling="no",this.iframe.frameBorder="no",this.iframe.allow="autoplay",this.iframe.src=this.getEmbedUrl(),this.iframe.style.width="100%",this.iframe.style.display="block",this.isPlaylist()?(this.iframe.style.aspectRatio="16 / 9",this.iframe.classList.add("vidply-soundcloud-iframe","vidply-soundcloud-playlist")):(this.iframe.style.aspectRatio="16 / 3",this.iframe.classList.add("vidply-soundcloud-iframe")),this.iframe.style.maxHeight="100%",this.player.element.parentNode.insertBefore(this.iframe,this.player.element)}async initializeWidget(){return new Promise((e,t)=>{this.iframe.addEventListener("load",()=>{try{this.widget=window.SC.Widget(this.iframe),this.widget.bind(window.SC.Widget.Events.READY,()=>{this.isReady=!0,this.attachEvents(),this.player.container&&this.player.container.classList.add("vidply-external-controls"),this.widget.getCurrentSound(i=>{i&&(this.player.state.duration=i.duration/1e3,this.player.emit("loadedmetadata"))}),e()}),this.widget.bind(window.SC.Widget.Events.ERROR,i=>{this.player.handleError(new Error("SoundCloud error: ".concat(i.message||"Unknown error")))})}catch(i){t(i)}}),setTimeout(()=>{this.isReady||t(new Error("SoundCloud widget initialization timeout"))},1e4)})}attachEvents(){if(!this.widget)return;let e=window.SC.Widget.Events;this.widget.bind(e.PLAY,()=>{this.player.state.playing=!0,this.player.state.paused=!1,this.player.state.ended=!1,this.player.emit("play"),this.player.options.onPlay&&this.player.options.onPlay.call(this.player)}),this.widget.bind(e.PAUSE,()=>{this.player.state.playing=!1,this.player.state.paused=!0,this.player.emit("pause"),this.player.options.onPause&&this.player.options.onPause.call(this.player)}),this.widget.bind(e.FINISH,()=>{this.player.state.playing=!1,this.player.state.paused=!0,this.player.state.ended=!0,this.player.emit("ended"),this.player.options.onEnded&&this.player.options.onEnded.call(this.player),this.player.options.loop&&(this.seek(0),this.play())}),this.widget.bind(e.PLAY_PROGRESS,t=>{let i=t.currentPosition/1e3;this.player.state.currentTime=i,this.player.emit("timeupdate",i),this.player.options.onTimeUpdate&&this.player.options.onTimeUpdate.call(this.player,i)}),this.widget.bind(e.SEEK,t=>{this.player.state.currentTime=t.currentPosition/1e3,this.player.emit("seeked")}),this.widget.bind(e.LOAD_PROGRESS,t=>{if(this.player.state.duration){let i=t.loadedProgress*this.player.state.duration;this.player.emit("progress",i)}})}play(){if(this.isReady&&this.widget){let e=window.scrollX,t=window.scrollY;this.widget.play(),window.scrollTo(e,t)}}pause(){this.isReady&&this.widget&&this.widget.pause()}seek(e){this.isReady&&this.widget&&(this.widget.seekTo(e*1e3),this.player.state.currentTime=e)}setVolume(e){this.isReady&&this.widget&&(this.widget.setVolume(e*100),this.player.state.volume=e)}setMuted(e){this.isReady&&this.widget&&(e?this.widget.getVolume(t=>{this._previousVolume=t,this.widget.setVolume(0)}):this.widget.setVolume(this._previousVolume||100),this.player.state.muted=e)}setPlaybackSpeed(e){this.player.log("SoundCloud does not support playback speed control","warn")}getCurrentSound(){return new Promise(e=>{this.isReady&&this.widget?this.widget.getCurrentSound(t=>{e(t)}):e(null)})}destroy(){if(this.widget){let e=window.SC.Widget.Events;try{this.widget.unbind(e.READY),this.widget.unbind(e.PLAY),this.widget.unbind(e.PAUSE),this.widget.unbind(e.FINISH),this.widget.unbind(e.PLAY_PROGRESS),this.widget.unbind(e.SEEK),this.widget.unbind(e.LOAD_PROGRESS),this.widget.unbind(e.ERROR)}catch(t){}}this.iframe&&this.iframe.parentNode&&this.iframe.parentNode.removeChild(this.iframe),this.player.element&&(this.player.element.style.display=""),this.widget=null,this.isReady=!1}},dt=le});var J=class{constructor(){this.events={}}on(e,t){return this.events[e]||(this.events[e]=[]),this.events[e].push(t),this}once(e,t){let i=(...s)=>{t(...s),this.off(e,i)};return this.on(e,i)}off(e,t){return this.events[e]?(t?this.events[e]=this.events[e].filter(i=>i!==t):delete this.events[e],this):this}emit(e,...t){return this.events[e]?(this.events[e].forEach(i=>{i(...t)}),this):this}removeAllListeners(){return this.events={},this}};W();W();Z();U();O();ee();var te=class{constructor(e){this.player=e,this.element=null,this.controls={},this.hideTimeout=null,this.isDraggingProgress=!1,this.isDraggingVolume=!1,this.openMenu=null,this.openMenuButton=null,this.init()}init(){this.createElement(),this.createControls(),this.attachEvents(),this.setupAutoHide(),this.setupOverflowDetection()}isMobile(){return window.innerWidth<768}isTouchDevice(){return"ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0}positionMenu(e,t,i=!1){let s=this.isMobile(),a=e.classList.contains("".concat(this.player.options.classPrefix,"-overflow-menu-list"));if(this.player.state.fullscreen&&e.parentElement===this.player.container){let c=()=>{let o=t.getBoundingClientRect(),r=e.getBoundingClientRect(),d=this.player.container.getBoundingClientRect(),u=window.innerHeight,p=o.left+o.width/2-d.left,y=o.top-d.top,b=o.bottom-d.top,w=o.top-d.top,f=d.bottom-o.bottom;if(w>=r.height+20||w>f?(e.style.bottom="".concat(d.height-y+8,"px"),e.style.top="auto",e.classList.remove("vidply-menu-below")):(e.style.top="".concat(b+8,"px"),e.style.bottom="auto",e.classList.add("vidply-menu-below")),a){let L=o.right-d.left;e.style.right="".concat(d.width-L,"px"),e.style.left="auto",e.style.transform="none"}else e.style.left="".concat(p,"px"),e.style.right="auto",e.style.transform="translateX(-50%)"};i?c():requestAnimationFrame(c);return}if(s){let c=e.classList.contains("".concat(this.player.options.classPrefix,"-volume-menu")),o=()=>{let r=t.parentElement;if(!r)return;let d=t.getBoundingClientRect(),u=r.getBoundingClientRect(),p=e.getBoundingClientRect(),y=window.innerWidth,b=window.innerHeight;if(c){let w=d.left+d.width/2-u.left;e.style.left="".concat(w,"px"),e.style.right="auto",e.style.transform="translateX(-50%)";return}p.right>y&&(e.style.left="auto",e.style.right="10px",e.style.transform="none"),p.left<0&&(e.style.left="10px",e.style.right="auto",e.style.transform="none"),p.top<10&&(e.style.top="10px"),p.bottom>b-10&&(e.style.bottom="10px",e.style.top="auto")};i?o():requestAnimationFrame(o);return}let l=()=>{let c=t.getBoundingClientRect(),o=e.getBoundingClientRect(),r=window.innerWidth,d=window.innerHeight,u=t.parentElement;if(!u)return;let p=u.getBoundingClientRect(),y=c.left+c.width/2-p.left,b=c.bottom-p.top,w=c.top-p.top,f=c.top,L=d-c.bottom,v=w-o.height-8,S=null;f<o.height+20&&L>f?(v=null,S=p.bottom-p.top-b+8,e.classList.add("vidply-menu-below")):e.classList.remove("vidply-menu-below");let E="auto",k="auto",T="translateX(0)";if(a)E="auto",k=0,T="translateX(0)";else{E=y-o.width/2;let D=c.left+c.width/2-o.width/2;D<10?(E=0,T="translateX(0)"):D+o.width>r-10?(E="auto",k=0,T="translateX(0)"):(E=y,T="translateX(-50%)")}v!==null?(e.style.top="".concat(v,"px"),e.style.bottom="auto"):S!==null&&(e.style.top="auto",e.style.bottom="".concat(S,"px")),E!=="auto"?(e.style.left="".concat(E,"px"),e.style.right="auto"):(e.style.left="auto",e.style.right="".concat(k,"px")),e.style.transform=T};i?l():requestAnimationFrame(()=>{setTimeout(l,10)})}insertMenuIntoDOM(e,t){e.id||(e.id="vidply-menu-".concat(Math.random().toString(36).substr(2,9))),t.setAttribute("aria-controls",e.id),t.setAttribute("aria-haspopup","true"),this.player.state.fullscreen?(this.player.container.appendChild(e),e.dataset.triggerButton=t.getAttribute("aria-label")||"button"):t.insertAdjacentElement("afterend",e)}attachMenuCloseHandler(e,t,i=!1){this.openMenu&&this.openMenu!==e&&this.openMenuButton&&(this.openMenuButton._vidplyBlurHandler&&(this.openMenuButton.removeEventListener("blur",this.openMenuButton._vidplyBlurHandler),delete this.openMenuButton._vidplyBlurHandler),this.openMenuButton._vidplyMousedownHandler&&(this.openMenuButton.removeEventListener("mousedown",this.openMenuButton._vidplyMousedownHandler),delete this.openMenuButton._vidplyMousedownHandler),this.openMenu&&document.contains(this.openMenu)?this.openMenu.remove():this.openMenu&&this.openMenu.parentNode&&this.openMenu.parentNode.removeChild(this.openMenu),this.openMenuButton&&this.openMenuButton.setAttribute("aria-expanded","false")),this.openMenu=e,this.openMenuButton=t,this.positionMenu(e,t),t&&t.setAttribute("aria-expanded","true");let s=!1,a=!0,n=()=>{s=!0,a=!1,setTimeout(()=>{s=!1,a=!0},200)};t.addEventListener("mousedown",n),t._vidplyMousedownHandler=n;let l=d=>{if(!a||s||this.openMenu!==e)return;let u=d.relatedTarget;requestAnimationFrame(()=>{setTimeout(()=>{var v;if(!a||this.openMenu!==e)return;let p=document.activeElement;if(e.contains(p))return;let y=this.player.signLanguageWrapper,b=(v=this.player.transcriptManager)==null?void 0:v.transcriptWindow;if(y&&y.contains(p)||b&&b.contains(p))return;let w=this.element.querySelectorAll("button"),f=Array.from(w).includes(p)&&p!==t,L=u&&Array.from(w).includes(u)&&u!==t;if(f||L){if(this.openMenu!==e)return;e&&document.contains(e)?e.remove():e&&e.parentNode&&e.parentNode.removeChild(e),t&&t.setAttribute("aria-expanded","false"),this.openMenu===e&&(this.openMenu=null,this.openMenuButton=null),t.removeEventListener("blur",l),t.removeEventListener("mousedown",n),delete t._vidplyBlurHandler,delete t._vidplyMousedownHandler}},10)})};t.addEventListener("blur",l),t._vidplyBlurHandler=l;let c=()=>{this.closeMenuAndReturnFocus(e,t)},o=null,r=null;setTimeout(()=>{o=d=>{i&&e.contains(d.target)||this.openMenu===e&&!e.contains(d.target)&&!t.contains(d.target)&&(c(),o&&document.removeEventListener("click",o),r&&document.removeEventListener("keydown",r))},r=d=>{d.key==="Escape"&&this.openMenu===e&&(d.preventDefault(),d.stopPropagation(),this.closeMenuAndReturnFocus(e,t,!0),o&&document.removeEventListener("click",o),r&&document.removeEventListener("keydown",r))},document.addEventListener("click",o),document.addEventListener("keydown",r)},100)}closeMenuAndReturnFocus(e,t,i=!0){e&&(document.contains(e)?e.remove():e.parentNode&&e.parentNode.removeChild(e)),t&&(t.setAttribute("aria-expanded","false"),e&&e.id&&t.removeAttribute("aria-controls"),i&&requestAnimationFrame(()=>{setTimeout(()=>{t&&document.contains(t)&&t.focus({preventScroll:!0})},0)})),this.openMenu===e&&(this.openMenu=null,this.openMenuButton=null)}closeOpenMenu(){this.openMenu&&this.openMenuButton&&(this.openMenu&&document.contains(this.openMenu)?this.openMenu.remove():this.openMenu&&this.openMenu.parentNode&&this.openMenu.parentNode.removeChild(this.openMenu),this.openMenuButton&&this.openMenuButton.setAttribute("aria-expanded","false"),this.openMenu=null,this.openMenuButton=null)}attachMenuKeyboardNavigation(e,t){let i=Array.from(e.querySelectorAll(".".concat(this.player.options.classPrefix,"-menu-item")));if(i.length===0)return;let s=a=>{let n=i.indexOf(document.activeElement);switch(a.key){case"ArrowDown":a.preventDefault(),a.stopPropagation();let l=(n+1)%i.length;i[l].focus({preventScroll:!1}),i[l].scrollIntoView({behavior:"smooth",block:"nearest"});break;case"ArrowUp":a.preventDefault(),a.stopPropagation();let c=(n-1+i.length)%i.length;i[c].focus({preventScroll:!1}),i[c].scrollIntoView({behavior:"smooth",block:"nearest"});break;case"ArrowLeft":case"ArrowRight":a.preventDefault(),a.stopPropagation();break;case"Home":a.preventDefault(),a.stopPropagation(),i[0].focus({preventScroll:!1}),i[0].scrollIntoView({behavior:"smooth",block:"nearest"});break;case"End":a.preventDefault(),a.stopPropagation(),i[i.length-1].focus({preventScroll:!1}),i[i.length-1].scrollIntoView({behavior:"smooth",block:"nearest"});break;case"Enter":case" ":a.preventDefault(),a.stopPropagation(),document.activeElement&&i.includes(document.activeElement)&&(document.activeElement.click(),V(t,{delay:0}));break;case"Escape":a.preventDefault(),a.stopPropagation(),this.closeMenuAndReturnFocus(e,t,!0);break}};e.addEventListener("keydown",s)}createElement(){this.element=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-controls"),attributes:{role:"region","aria-label":g.t("player.label")+" controls"}})}createControls(){let e=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-progress-time-wrapper")});this.player.options.progressBar&&(this.createProgressBar(),e.appendChild(this.controls.progress)),(this.player.options.currentTime||this.player.options.duration)&&e.appendChild(this.createTimeDisplay()),this.element.appendChild(e);let t=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-controls-buttons")}),i=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-controls-left")});this.player.playlistManager&&i.appendChild(this.createPreviousButton()),this.player.options.playPauseButton&&i.appendChild(this.createPlayPauseButton()),i.appendChild(this.createRestartButton()),this.player.playlistManager&&i.appendChild(this.createNextButton()),this.player.playlistManager||i.appendChild(this.createRewindButton()),this.player.playlistManager||i.appendChild(this.createForwardButton()),this.player.options.volumeControl&&(this.isTouchDevice()?i.appendChild(this.createMuteButton()):i.appendChild(this.createVolumeControl())),this.rightButtons=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-controls-right")});let s=this.hasChapterTracks(),a=this.hasCaptionTracks(),n=this.hasQualityLevels(),l=this.hasAudioDescription();if(this.player.options.chaptersButton&&s){let r=this.createChaptersButton();r.dataset.overflowPriority="3",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}if(this.player.options.captionsButton&&a){let r=this.createCaptionsButton();r.dataset.overflowPriority="1",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}if(this.player.options.captionStyleButton&&a){let r=this.createCaptionStyleButton();r.dataset.overflowPriority="3",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}if(this.player.options.speedButton){let r=this.createSpeedButton();r.dataset.overflowPriority="1",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}if(this.player.options.audioDescriptionButton&&l){let r=this.createAudioDescriptionButton();r.dataset.overflowPriority="2",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}if(this.player.options.transcriptButton&&a){let r=this.createTranscriptButton();r.dataset.overflowPriority="3",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}if(this.player.playlistManager&&this.player.options.playlistToggleButton!==!1){let r=this.createPlaylistToggleButton();r.dataset.overflowPriority="2",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}let c=this.hasSignLanguage();if(this.player.options.signLanguageButton&&c){let r=this.createSignLanguageButton();r.dataset.overflowPriority="3",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}if(this.player.options.qualityButton&&n){let r=this.createQualityButton();r.dataset.overflowPriority="2",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}if(this.player.options.pipButton&&"pictureInPictureEnabled"in document){let r=this.createPipButton();r.dataset.overflowPriority="3",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}let o=this.player.element.tagName.toLowerCase()==="audio";if(this.player.options.fullscreenButton&&!o){let r=this.createFullscreenButton();r.dataset.overflowPriority="1",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}this.overflowMenuButton=this.createOverflowMenuButton(),this.overflowMenuButton.style.display="none",this.rightButtons.appendChild(this.overflowMenuButton),t.appendChild(i),t.appendChild(this.rightButtons),this.element.appendChild(t),this.ensureButtonTooltips(t)}ensureButtonTooltips(e){e.querySelectorAll("button").forEach(i=>{if(i.querySelector(".".concat(this.player.options.classPrefix,"-tooltip"))||i.querySelector(".".concat(this.player.options.classPrefix,"-button-text"))||i.getAttribute("role")==="menuitem"||i.classList.contains("".concat(this.player.options.classPrefix,"-settings-item"))||i.classList.contains("".concat(this.player.options.classPrefix,"-menu-item"))||i.classList.contains("".concat(this.player.options.classPrefix,"-transcript-settings-item"))||i.classList.contains("".concat(this.player.options.classPrefix,"-sign-language-settings-item"))||i.classList.contains("".concat(this.player.options.classPrefix,"-popup-settings-item")))return;let s=i.getAttribute("aria-label");s&&h.attachTooltip(i,s,this.player.options.classPrefix)})}hasChapterTracks(){let e=this.player.element.textTracks;for(let t=0;t<e.length;t++)if(e[t].kind==="chapters")return!0;return!1}hasCaptionTracks(){let e=this.player.element.textTracks;for(let t=0;t<e.length;t++)if(e[t].kind==="captions"||e[t].kind==="subtitles")return!0;return!1}hasQualityLevels(){if(this.player.renderer&&this.player.renderer.getQualities){let e=this.player.renderer.getQualities();return e&&e.length>1}return!1}hasAudioDescription(){return this.player.audioDescriptionSrc&&this.player.audioDescriptionSrc.length>0?!0:Array.from(this.player.element.textTracks||[]).some(t=>t.kind==="descriptions")}hasSignLanguage(){let e=this.player.signLanguageSrc&&this.player.signLanguageSrc.length>0,t=this.player.signLanguageSources&&Object.keys(this.player.signLanguageSources).length>0;return e||t}createProgressBar(){let e=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-progress-container"),attributes:{role:"slider","aria-label":g.t("player.progress"),"aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":"0",tabindex:"0"}});this.controls.buffered=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-progress-buffered")}),this.controls.played=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-progress-played")}),this.controls.progressHandle=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-progress-handle")}),this.controls.progressTooltip=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-progress-tooltip")}),e.appendChild(this.controls.buffered),e.appendChild(this.controls.played),this.controls.played.appendChild(this.controls.progressHandle),e.appendChild(this.controls.progressTooltip),this.controls.progress=e,this.setupProgressBarEvents()}setupProgressBarEvents(){let e=this.controls.progress,t=i=>{let s=e.getBoundingClientRect(),a=s.width>0?Math.max(0,Math.min(1,(i-s.left)/s.width)):0,n=this.player.state.duration||0,l=a*n;return{percent:a,time:l}};e.addEventListener("mousedown",i=>{this.isDraggingProgress=!0;let{time:s}=t(i.clientX);this.player.seek(s)}),document.addEventListener("mousemove",i=>{if(this.isDraggingProgress){let{time:s}=t(i.clientX);this.player.seek(s)}}),document.addEventListener("mouseup",()=>{this.isDraggingProgress=!1}),e.addEventListener("mousemove",i=>{if(!this.isDraggingProgress){let{time:s}=t(i.clientX);this.controls.progressTooltip.textContent=C.formatTime(s),this.controls.progressTooltip.style.left="".concat(i.clientX-e.getBoundingClientRect().left,"px"),this.controls.progressTooltip.style.display="block"}}),e.addEventListener("mouseleave",()=>{this.controls.progressTooltip.style.display="none"}),e.addEventListener("keydown",i=>{i.key==="ArrowLeft"?(i.preventDefault(),this.player.seekBackward(5)):i.key==="ArrowRight"&&(i.preventDefault(),this.player.seekForward(5))}),e.addEventListener("touchstart",i=>{this.isDraggingProgress=!0;let s=i.touches[0],{time:a}=t(s.clientX);this.player.seek(a)}),e.addEventListener("touchmove",i=>{if(this.isDraggingProgress){i.preventDefault();let s=i.touches[0],{time:a}=t(s.clientX);this.player.seek(a)}}),e.addEventListener("touchend",()=>{this.isDraggingProgress=!1})}createPlayPauseButton(){let e=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-play-pause"),attributes:{type:"button","aria-label":g.t("player.play")}});return e.appendChild(M("play")),e.addEventListener("click",()=>{this.player.toggle()}),this.controls.playPause=e,e}createRestartButton(){let e=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-restart"),attributes:{type:"button","aria-label":g.t("player.restart")}});return e.appendChild(M("restart")),e.addEventListener("click",()=>{this.player.seek(0),this.player.play()}),e}createPreviousButton(){let e=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-previous"),attributes:{type:"button","aria-label":g.t("player.previous")}});e.appendChild(M("skipPrevious")),e.addEventListener("click",()=>{this.player.playlistManager&&this.player.playlistManager.previous()});let t=()=>{this.player.playlistManager&&(e.disabled=!this.player.playlistManager.hasPrevious()&&!this.player.playlistManager.options.loop)};return this.player.on("playlisttrackchange",t),t(),this.controls.previous=e,e}createNextButton(){let e=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-next"),attributes:{type:"button","aria-label":g.t("player.next")}});e.appendChild(M("skipNext")),e.addEventListener("click",()=>{this.player.playlistManager&&this.player.playlistManager.next()});let t=()=>{this.player.playlistManager&&(e.disabled=!this.player.playlistManager.hasNext()&&!this.player.playlistManager.options.loop)};return this.player.on("playlisttrackchange",t),t(),this.controls.next=e,e}createPlaylistToggleButton(){let e=this.player.playlistManager?"".concat(this.player.playlistManager.uniqueId,"-panel"):"vidply-playlist-panel",t=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-playlist-toggle"),attributes:{type:"button","aria-label":g.t("player.playlist"),"aria-expanded":"false","aria-pressed":"false","aria-controls":e}});return t.appendChild(M("playlist")),t.addEventListener("click",()=>{this.player.playlistManager&&this.player.playlistManager.togglePanel()}),this.controls.playlistToggle=t,t}createRewindButton(){let e=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-rewind"),attributes:{type:"button","aria-label":g.t("player.rewindSeconds",{seconds:15})}});return e.appendChild(M("rewind")),e.addEventListener("click",()=>{this.player.seekBackward(15)}),e}createForwardButton(){let e=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-forward"),attributes:{type:"button","aria-label":g.t("player.forwardSeconds",{seconds:15})}});return e.appendChild(M("forward")),e.addEventListener("click",()=>{this.player.seekForward(15)}),e}createMuteButton(){let e=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-mute"),attributes:{type:"button","aria-label":g.t("player.mute")}});return e.appendChild(M("volumeHigh")),e.addEventListener("click",()=>{this.player.toggleMute()}),this.controls.mute=e,e}createVolumeControl(){let e=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-mute"),attributes:{type:"button","aria-label":g.t("player.volume"),"aria-expanded":"false"}});return e.appendChild(M("volumeHigh")),e.addEventListener("contextmenu",t=>{t.preventDefault(),this.player.toggleMute()}),e.addEventListener("click",()=>{this.showVolumeSlider(e)}),this.controls.mute=e,e}showVolumeSlider(e){let t=document.querySelector(".".concat(this.player.options.classPrefix,"-volume-menu"));if(t){t.remove(),e.setAttribute("aria-expanded","false");return}let i=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-volume-menu ").concat(this.player.options.classPrefix,"-menu")}),s=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-volume-slider"),attributes:{role:"slider","aria-label":g.t("player.volume"),"aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":String(Math.round(this.player.state.volume*100)),tabindex:"0"}}),a=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-volume-track")}),n=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-volume-fill")}),l=this.player.state.volume*100;n.style.height="".concat(l,"%");let c=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-volume-handle")});a.appendChild(n),n.appendChild(c),s.appendChild(a),i.appendChild(s);let o=r=>{let d=a.getBoundingClientRect(),u=Math.max(0,Math.min(1,1-(r-d.top)/d.height));this.player.setVolume(u)};s.addEventListener("mousedown",r=>{r.stopPropagation(),r.preventDefault(),this.isDraggingVolume=!0,o(r.clientY)}),document.addEventListener("mousemove",r=>{this.isDraggingVolume&&o(r.clientY)}),document.addEventListener("mouseup",()=>{this.isDraggingVolume=!1}),s.addEventListener("touchstart",r=>{r.stopPropagation(),r.preventDefault(),this.isDraggingVolume=!0;let d=r.touches[0];o(d.clientY)},{passive:!1}),s.addEventListener("touchmove",r=>{if(this.isDraggingVolume){r.preventDefault();let d=r.touches[0];o(d.clientY)}},{passive:!1}),s.addEventListener("touchend",r=>{r.stopPropagation(),r.preventDefault(),this.isDraggingVolume=!1},{passive:!1}),s.addEventListener("touchcancel",()=>{this.isDraggingVolume=!1}),s.addEventListener("keydown",r=>{r.key==="ArrowUp"?(r.preventDefault(),this.player.setVolume(Math.min(1,this.player.state.volume+.1))):r.key==="ArrowDown"?(r.preventDefault(),this.player.setVolume(Math.max(0,this.player.state.volume-.1))):r.key==="Escape"&&(r.preventDefault(),r.stopPropagation(),this.closeMenuAndReturnFocus(i,e,!0))}),i.addEventListener("click",r=>{r.stopPropagation()}),i.addEventListener("touchstart",r=>{r.stopPropagation()}),i.addEventListener("touchmove",r=>{r.stopPropagation()}),i.addEventListener("touchend",r=>{r.stopPropagation()}),i.style.visibility="hidden",i.style.display="block",this.insertMenuIntoDOM(i,e),this.positionMenu(i,e,!0),requestAnimationFrame(()=>{i.style.visibility="visible"}),this.controls.volumeSlider=s,this.controls.volumeFill=n,V(s,{delay:50}),this.attachMenuCloseHandler(i,e,!0)}createTimeDisplay(){let e=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-time"),attributes:{role:"group","aria-label":g.t("time.display")}});this.controls.currentTimeDisplay=h.createElement("span",{className:"".concat(this.player.options.classPrefix,"-current-time")});let t=h.createElement("span",{textContent:"00:00",attributes:{"aria-hidden":"true"}}),i=h.createElement("span",{className:"vidply-sr-only",textContent:g.t("time.seconds",{count:0})});this.controls.currentTimeDisplay.appendChild(t),this.controls.currentTimeDisplay.appendChild(i),this.controls.currentTimeVisual=t,this.controls.currentTimeAccessible=i;let s=h.createElement("span",{textContent:" / ",attributes:{"aria-hidden":"true"}});this.controls.durationDisplay=h.createElement("span",{className:"".concat(this.player.options.classPrefix,"-duration")});let a=h.createElement("span",{textContent:"00:00",attributes:{"aria-hidden":"true"}}),n=h.createElement("span",{className:"vidply-sr-only",textContent:g.t("time.durationPrefix")+g.t("time.seconds",{count:0})});return this.controls.durationDisplay.appendChild(a),this.controls.durationDisplay.appendChild(n),this.controls.durationVisual=a,this.controls.durationAccessible=n,e.appendChild(this.controls.currentTimeDisplay),e.appendChild(s),e.appendChild(this.controls.durationDisplay),e}createChaptersButton(){let e=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-chapters"),attributes:{type:"button","aria-label":g.t("player.chapters"),"aria-expanded":"false"}});return e.appendChild(M("chapters")),e.addEventListener("click",()=>{this.showChaptersMenu(e)}),this.controls.chapters=e,e}showChaptersMenu(e){let t=document.querySelector(".".concat(this.player.options.classPrefix,"-chapters-menu"));if(t){t.remove(),e.setAttribute("aria-expanded","false"),this.openMenu===t&&(this.openMenu=null,this.openMenuButton=null);return}let i=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-chapters-menu ").concat(this.player.options.classPrefix,"-menu"),attributes:{role:"menu","aria-label":g.t("player.chapters")}}),s=Array.from(this.player.element.textTracks).filter(a=>a.kind==="chapters");if(s.length===0){let a=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:g.t("player.noChapters"),attributes:{role:"menuitem"},style:{opacity:"0.5",cursor:"default"}});i.appendChild(a)}else{let a=s[0];if(a.mode==="disabled"&&(a.mode="hidden"),!a.cues||a.cues.length===0){let n=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:g.t("player.loadingChapters"),attributes:{role:"menuitem"},style:{opacity:"0.5",cursor:"default"}});i.appendChild(n);let l=()=>{i.remove(),this.showChaptersMenu(e)};a.addEventListener("load",l,{once:!0}),setTimeout(()=>{a.cues&&a.cues.length>0&&document.contains(i)&&(i.remove(),this.showChaptersMenu(e))},500)}else{let n=a.cues;for(let l=0;l<n.length;l++){let c=n[l],o=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-menu-item"),attributes:{type:"button",role:"menuitem",tabindex:"-1"}}),r=h.createElement("span",{className:"".concat(this.player.options.classPrefix,"-chapter-time"),textContent:C.formatTime(c.startTime),attributes:{"aria-label":C.formatDuration(c.startTime)}}),d=h.createElement("span",{className:"".concat(this.player.options.classPrefix,"-chapter-title"),textContent:c.text});o.appendChild(r),o.appendChild(document.createTextNode(" ")),o.appendChild(d),o.addEventListener("click",()=>{this.player.seek(c.startTime),this.closeMenuAndReturnFocus(i,e)}),i.appendChild(o)}this.attachMenuKeyboardNavigation(i,e),setTimeout(()=>{let l=i.querySelector(".".concat(this.player.options.classPrefix,"-menu-item"));l&&l.focus({preventScroll:!0})},0)}}i.style.visibility="hidden",i.style.display="block",this.insertMenuIntoDOM(i,e),this.positionMenu(i,e,!0),requestAnimationFrame(()=>{i.style.visibility="visible"}),this.attachMenuCloseHandler(i,e)}createQualityButton(){let e=g.t("player.quality"),t=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-quality"),attributes:{type:"button","aria-label":e,"aria-expanded":"false"}});t.appendChild(M("hd")),h.attachTooltip(t,e,this.player.options.classPrefix);let i=h.createElement("span",{className:"".concat(this.player.options.classPrefix,"-quality-text"),textContent:""});return t.appendChild(i),t.addEventListener("click",()=>{this.showQualityMenu(t)}),this.controls.quality=t,this.controls.qualityText=i,setTimeout(()=>this.updateQualityIndicator(),500),t}showQualityMenu(e){let t=document.querySelector(".".concat(this.player.options.classPrefix,"-quality-menu"));if(t){t.remove(),e.setAttribute("aria-expanded","false"),this.openMenu===t&&(this.openMenu=null,this.openMenuButton=null);return}let i=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-quality-menu ").concat(this.player.options.classPrefix,"-menu"),attributes:{role:"menu","aria-label":g.t("player.quality")}});if(this.player.renderer&&this.player.renderer.getQualities){let s=this.player.renderer.getQualities(),a=this.player.renderer.getCurrentQuality?this.player.renderer.getCurrentQuality():-1,n=this.player.renderer.hls!==void 0;if(s.length===0){let l=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:g.t("player.autoQuality"),attributes:{role:"menuitem"},style:{opacity:"0.5",cursor:"default"}});i.appendChild(l)}else{let l=null;if(n){let c=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:g.t("player.auto"),attributes:{type:"button",role:"menuitem",tabindex:"-1"}});this.player.renderer.hls&&this.player.renderer.hls.currentLevel===-1&&(c.classList.add("".concat(this.player.options.classPrefix,"-menu-item-active")),c.appendChild(M("check")),l=c),c.addEventListener("click",()=>{this.player.renderer.switchQuality&&this.player.renderer.switchQuality(-1),this.closeMenuAndReturnFocus(i,e)}),i.appendChild(c)}s.forEach(c=>{let o=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:c.name||"".concat(c.height,"p"),attributes:{type:"button",role:"menuitem",tabindex:"-1"}});c.index===a&&(o.classList.add("".concat(this.player.options.classPrefix,"-menu-item-active")),o.appendChild(M("check")),l=o),o.addEventListener("click",()=>{this.player.renderer.switchQuality&&this.player.renderer.switchQuality(c.index),this.closeMenuAndReturnFocus(i,e)}),i.appendChild(o)}),this.attachMenuKeyboardNavigation(i,e),setTimeout(()=>{let c=l||i.querySelector(".".concat(this.player.options.classPrefix,"-menu-item"));c&&c.focus({preventScroll:!0})},0)}}else{let s=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:g.t("player.noQuality"),style:{opacity:"0.5",cursor:"default"}});i.appendChild(s)}i.style.visibility="hidden",i.style.display="block",this.insertMenuIntoDOM(i,e),this.positionMenu(i,e,!0),requestAnimationFrame(()=>{i.style.visibility="visible"}),this.attachMenuCloseHandler(i,e)}createCaptionStyleButton(){let e=g.t("player.captionStyling"),t=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-caption-style"),attributes:{type:"button","aria-label":e,"aria-expanded":"false"}}),i=h.createElement("span",{textContent:"Aa",style:{fontSize:"14px",fontWeight:"bold"}});return t.appendChild(i),h.attachTooltip(t,e,this.player.options.classPrefix),t.addEventListener("click",()=>{this.showCaptionStyleMenu(t)}),this.controls.captionStyle=t,t}showCaptionStyleMenu(e){let t=document.querySelector(".".concat(this.player.options.classPrefix,"-caption-style-menu"));if(t){t.remove(),e.setAttribute("aria-expanded","false"),this.openMenu===t&&(this.openMenu=null,this.openMenuButton=null);return}let i=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-caption-style-menu ").concat(this.player.options.classPrefix,"-menu ").concat(this.player.options.classPrefix,"-settings-menu"),attributes:{role:"menu","aria-label":g.t("player.captionStyling")}});if(i.addEventListener("click",o=>{o.stopPropagation()}),!this.player.captionManager||this.player.captionManager.tracks.length===0){let o=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:g.t("player.noCaptions"),attributes:{role:"menuitem"},style:{opacity:"0.5",cursor:"default",padding:"12px 16px"}});i.appendChild(o),i.style.visibility="hidden",i.style.display="block",this.insertMenuIntoDOM(i,e),this.positionMenu(i,e,!0),requestAnimationFrame(()=>{i.style.visibility="visible"}),this.attachMenuCloseHandler(i,e,!0);return}let s=this.createStyleControl(g.t("styleLabels.fontSize"),"captionsFontSize",[{label:g.t("fontSizes.small"),value:"87.5%"},{label:g.t("fontSizes.normal"),value:"100%"},{label:g.t("fontSizes.large"),value:"125%"},{label:g.t("fontSizes.xlarge"),value:"150%"}]);i.appendChild(s);let a=this.createStyleControl(g.t("styleLabels.font"),"captionsFontFamily",[{label:g.t("fontFamilies.sansSerif"),value:"sans-serif"},{label:g.t("fontFamilies.serif"),value:"serif"},{label:g.t("fontFamilies.monospace"),value:"monospace"}]);i.appendChild(a);let n=this.createColorControl(g.t("styleLabels.textColor"),"captionsColor");i.appendChild(n);let l=this.createColorControl(g.t("styleLabels.background"),"captionsBackgroundColor");i.appendChild(l);let c=this.createOpacityControl(g.t("styleLabels.opacity"),"captionsOpacity");i.appendChild(c),i.style.minWidth="220px",i.style.visibility="hidden",i.style.display="block",this.insertMenuIntoDOM(i,e),this.positionMenu(i,e,!0),requestAnimationFrame(()=>{i.style.visibility="visible"}),this.attachMenuCloseHandler(i,e,!0),Ne(i,".".concat(this.player.options.classPrefix,"-style-select"))}createStyleControl(e,t,i){let s=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-style-group")}),a="".concat(this.player.options.classPrefix,"-").concat(t,"-").concat(Date.now()),n=h.createElement("label",{textContent:e,attributes:{for:a},style:{display:"block",fontSize:"12px",marginBottom:"4px",color:"rgba(255,255,255,0.7)"}});s.appendChild(n);let l=h.createElement("select",{className:"".concat(this.player.options.classPrefix,"-style-select"),attributes:{id:a},style:{width:"100%",padding:"6px",background:"var(--vidply-white)",border:"1px solid var(--vidply-white-10)",borderRadius:"4px",color:"var(--vidply-black)",fontSize:"13px"}}),c=this.player.options[t];return i.forEach(o=>{let r=h.createElement("option",{textContent:o.label,attributes:{value:o.value}});o.value===c&&(r.selected=!0),l.appendChild(r)}),l.addEventListener("mousedown",o=>{o.stopPropagation()}),l.addEventListener("click",o=>{o.stopPropagation()}),l.addEventListener("change",o=>{o.stopPropagation(),this.player.options[t]=o.target.value,this.player.captionManager&&this.player.captionManager.setCaptionStyle(t.replace("captions","").charAt(0).toLowerCase()+t.replace("captions","").slice(1),o.target.value)}),s.appendChild(l),s}createColorControl(e,t){let i=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-style-group")}),s="".concat(this.player.options.classPrefix,"-").concat(t,"-").concat(Date.now()),a=h.createElement("label",{textContent:e,attributes:{for:s},style:{display:"block",fontSize:"12px",marginBottom:"4px",color:"rgba(255,255,255,0.7)"}});i.appendChild(a);let n=h.createElement("input",{attributes:{id:s,type:"color",value:this.player.options[t]},style:{width:"100%",height:"32px",padding:"2px",background:"rgba(255,255,255,0.1)",border:"1px solid rgba(255,255,255,0.2)",borderRadius:"4px",cursor:"pointer"}});return n.addEventListener("mousedown",l=>{l.stopPropagation()}),n.addEventListener("click",l=>{l.stopPropagation()}),n.addEventListener("change",l=>{l.stopPropagation(),this.player.options[t]=l.target.value,this.player.captionManager&&this.player.captionManager.setCaptionStyle(t.replace("captions","").charAt(0).toLowerCase()+t.replace("captions","").slice(1),l.target.value)}),i.appendChild(n),i}createOpacityControl(e,t){let i=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-style-group")}),s="".concat(this.player.options.classPrefix,"-").concat(t,"-").concat(Date.now()),a=h.createElement("div",{style:{display:"flex",justifyContent:"space-between",marginBottom:"4px"}}),n=h.createElement("label",{textContent:e,attributes:{for:s},style:{fontSize:"12px",color:"rgba(255,255,255,0.7)"}}),l=h.createElement("span",{textContent:Math.round(this.player.options[t]*100)+"%",style:{fontSize:"12px",color:"rgba(255,255,255,0.7)"}});a.appendChild(n),a.appendChild(l),i.appendChild(a);let c=h.createElement("input",{attributes:{id:s,type:"range",min:"0",max:"1",step:"0.1",value:String(this.player.options[t])},style:{width:"100%",cursor:"pointer"}});return c.addEventListener("mousedown",o=>{o.stopPropagation()}),c.addEventListener("click",o=>{o.stopPropagation()}),c.addEventListener("input",o=>{o.stopPropagation();let r=parseFloat(o.target.value);l.textContent=Math.round(r*100)+"%",this.player.options[t]=r,this.player.captionManager&&this.player.captionManager.setCaptionStyle(t.replace("captions","").charAt(0).toLowerCase()+t.replace("captions","").slice(1),r)}),i.appendChild(c),i}createSpeedButton(){let e=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-speed"),attributes:{type:"button","aria-label":g.t("player.speed"),"aria-expanded":"false"}});e.appendChild(M("speed"));let t=h.createElement("span",{className:"".concat(this.player.options.classPrefix,"-speed-text"),textContent:"1x"});return e.appendChild(t),e.addEventListener("click",()=>{this.showSpeedMenu(e)}),this.controls.speed=e,this.controls.speedText=t,e}formatSpeedLabel(e){if(e===1)return g.t("speeds.normal");let t=e.toLocaleString(g.getLanguage(),{minimumFractionDigits:0,maximumFractionDigits:2});return"".concat(t,"×")}showSpeedMenu(e){let t=document.querySelector(".".concat(this.player.options.classPrefix,"-speed-menu"));if(t){t.remove(),e.setAttribute("aria-expanded","false"),this.openMenu===t&&(this.openMenu=null,this.openMenuButton=null);return}let i=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-speed-menu ").concat(this.player.options.classPrefix,"-menu"),attributes:{role:"menu"}}),s=[.25,.5,.75,1,1.25,1.5,1.75,2],a=null;s.forEach(n=>{let l=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:this.formatSpeedLabel(n),attributes:{type:"button",role:"menuitem",tabindex:"-1"}});n===this.player.state.playbackSpeed&&(l.classList.add("".concat(this.player.options.classPrefix,"-menu-item-active")),l.appendChild(M("check")),a=l),l.addEventListener("click",()=>{this.player.setPlaybackSpeed(n),this.closeMenuAndReturnFocus(i,e)}),i.appendChild(l)}),i.style.visibility="hidden",i.style.display="block",this.insertMenuIntoDOM(i,e),this.positionMenu(i,e,!0),requestAnimationFrame(()=>{i.style.visibility="visible"}),this.attachMenuKeyboardNavigation(i,e),this.attachMenuCloseHandler(i,e),setTimeout(()=>{let n=a||i.querySelector(".".concat(this.player.options.classPrefix,"-menu-item"));n&&n.focus({preventScroll:!0})},0)}createCaptionsButton(){let e=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-captions-button"),attributes:{type:"button","aria-label":g.t("player.captions"),"aria-expanded":"false"}});return e.appendChild(M("captionsOff")),e.addEventListener("click",()=>{this.showCaptionsMenu(e)}),this.controls.captions=e,e}showCaptionsMenu(e){let t=document.querySelector(".".concat(this.player.options.classPrefix,"-captions-menu"));if(t){t.remove(),e.setAttribute("aria-expanded","false"),this.openMenu===t&&(this.openMenu=null,this.openMenuButton=null);return}let i=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-captions-menu ").concat(this.player.options.classPrefix,"-menu"),attributes:{role:"menu","aria-label":g.t("captions.select")}});if(!this.player.captionManager||this.player.captionManager.tracks.length===0){let l=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:g.t("player.noCaptions"),attributes:{role:"menuitem"},style:{opacity:"0.5",cursor:"default"}});i.appendChild(l),this.insertMenuIntoDOM(i,e),this.attachMenuCloseHandler(i,e);return}let s=null,a=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:g.t("captions.off"),attributes:{type:"button",role:"menuitem",tabindex:"-1"}});this.player.state.captionsEnabled||(a.classList.add("".concat(this.player.options.classPrefix,"-menu-item-active")),a.appendChild(M("check")),s=a),a.addEventListener("click",()=>{this.player.disableCaptions(),this.updateCaptionsButton(),this.closeMenuAndReturnFocus(i,e)}),i.appendChild(a),this.player.captionManager.getAvailableTracks().forEach(l=>{let c=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:l.label,attributes:{type:"button",role:"menuitem",lang:l.language,tabindex:"-1"}});this.player.state.captionsEnabled&&this.player.captionManager.currentTrack===this.player.captionManager.tracks[l.index]&&(c.classList.add("".concat(this.player.options.classPrefix,"-menu-item-active")),c.appendChild(M("check")),s=c),c.addEventListener("click",()=>{this.player.captionManager.switchTrack(l.index),this.updateCaptionsButton(),this.closeMenuAndReturnFocus(i,e)}),i.appendChild(c)}),this.insertMenuIntoDOM(i,e),this.attachMenuKeyboardNavigation(i,e),this.attachMenuCloseHandler(i,e),setTimeout(()=>{let l=s||i.querySelector(".".concat(this.player.options.classPrefix,"-menu-item"));l&&l.focus({preventScroll:!0})},0)}updateCaptionsButton(){if(!this.controls.captions)return;let e=this.controls.captions.querySelector(".vidply-icon"),t=this.player.state.captionsEnabled;e.innerHTML=t?M("captions").innerHTML:M("captionsOff").innerHTML}createTranscriptButton(){let e=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-transcript"),attributes:{type:"button","aria-label":g.t("player.transcript"),"aria-expanded":"false"}});return e.appendChild(M("transcript")),e.addEventListener("click",async()=>{await this.player.toggleTranscript(),this.updateTranscriptButton()}),this.controls.transcript=e,e}updateTranscriptButton(){if(!this.controls.transcript)return;let e=this.player.transcriptManager&&this.player.transcriptManager.isVisible;this.controls.transcript.setAttribute("aria-expanded",e?"true":"false")}createAudioDescriptionButton(){let e=g.t("player.audioDescription"),t=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-audio-description"),attributes:{type:"button","aria-label":e,role:"switch","aria-checked":"false"}});return t.appendChild(M("audioDescription")),h.attachTooltip(t,e,this.player.options.classPrefix),t.addEventListener("click",async()=>{await this.player.toggleAudioDescription(),this.updateAudioDescriptionButton()}),this.controls.audioDescription=t,t}updateAudioDescriptionButton(){if(!this.controls.audioDescription)return;let e=this.controls.audioDescription.querySelector(".vidply-icon"),t=this.player.state.audioDescriptionEnabled;e.innerHTML=t?M("audioDescriptionOn").innerHTML:M("audioDescription").innerHTML,this.controls.audioDescription.setAttribute("aria-checked",t?"true":"false")}createSignLanguageButton(){let e=g.t("player.signLanguage"),t=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-sign-language"),attributes:{type:"button","aria-label":e,"aria-expanded":"false"}});return t.appendChild(M("signLanguage")),h.attachTooltip(t,e,this.player.options.classPrefix),t.addEventListener("click",()=>{this.player.toggleSignLanguage(),this.updateSignLanguageButton()}),this.controls.signLanguage=t,t}updateSignLanguageButton(){if(!this.controls.signLanguage)return;let e=this.controls.signLanguage.querySelector(".vidply-icon"),t=this.player.state.signLanguageEnabled;e.innerHTML=t?M("signLanguageOn").innerHTML:M("signLanguage").innerHTML,this.controls.signLanguage.setAttribute("aria-expanded",t?"true":"false"),this.controls.signLanguage.setAttribute("aria-label",t?g.t("signLanguage.hide"):g.t("signLanguage.show"))}updateAccessibilityButtons(){let e=this.hasAudioDescription(),t=this.hasSignLanguage();if(e){if(!this.controls.audioDescription&&this.player.options.audioDescriptionButton!==!1){let i=this.createAudioDescriptionButton();i.dataset.overflowPriority="2",i.dataset.overflowPriorityMobile="3";let s=this.rightButtons.querySelector(".".concat(this.player.options.classPrefix,"-transcript")),a=this.rightButtons.querySelector(".".concat(this.player.options.classPrefix,"-playlist-toggle")),n=s||a||null;n?this.rightButtons.insertBefore(i,n):this.rightButtons.appendChild(i),this.setupOverflowMenu()}this.controls.audioDescription&&(this.controls.audioDescription.style.display="")}else this.controls.audioDescription&&(this.controls.audioDescription.style.display="none");if(t){if(!this.controls.signLanguage&&this.player.options.signLanguageButton!==!1){let i=this.createSignLanguageButton();i.dataset.overflowPriority="3",i.dataset.overflowPriorityMobile="3";let s=this.rightButtons.querySelector(".".concat(this.player.options.classPrefix,"-quality")),a=this.rightButtons.querySelector(".".concat(this.player.options.classPrefix,"-fullscreen")),n=s||a||null;n?this.rightButtons.insertBefore(i,n):this.rightButtons.appendChild(i),this.setupOverflowMenu()}this.controls.signLanguage&&(this.controls.signLanguage.style.display="")}else this.controls.signLanguage&&(this.controls.signLanguage.style.display="none")}createSettingsButton(){let e=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-settings"),attributes:{type:"button","aria-label":g.t("player.settings")}});return e.appendChild(M("settings")),e.addEventListener("click",()=>{this.player.showSettings()}),e}createPipButton(){let e=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-pip"),attributes:{type:"button","aria-label":g.t("player.pip")}});return e.appendChild(M("pip")),e.addEventListener("click",()=>{this.player.togglePiP()}),e}createFullscreenButton(){let e=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-fullscreen"),attributes:{type:"button","aria-label":g.t("player.fullscreen")}});return e.appendChild(M("fullscreen")),e.addEventListener("click",()=>{this.player.toggleFullscreen()}),this.controls.fullscreen=e,e}attachEvents(){this.player.on("play",()=>this.updatePlayPauseButton()),this.player.on("pause",()=>this.updatePlayPauseButton()),this.player.on("timeupdate",()=>this.updateProgress()),this.player.on("loadedmetadata",()=>{this.updateDuration(),this.ensureQualityButton(),this.updateQualityIndicator()}),this.player.on("volumechange",()=>this.updateVolumeDisplay()),this.player.on("progress",()=>this.updateBuffered()),this.player.on("playbackspeedchange",()=>this.updateSpeedDisplay()),this.player.on("fullscreenchange",()=>this.updateFullscreenButton()),this.player.on("captionsenabled",()=>this.updateCaptionsButton()),this.player.on("captionsdisabled",()=>this.updateCaptionsButton()),this.player.on("audiodescriptionenabled",()=>this.updateAudioDescriptionButton()),this.player.on("audiodescriptiondisabled",()=>this.updateAudioDescriptionButton()),this.player.on("signlanguageenabled",()=>this.updateSignLanguageButton()),this.player.on("signlanguagedisabled",()=>this.updateSignLanguageButton()),this.player.on("qualitychange",()=>this.updateQualityIndicator()),this.player.on("hlslevelswitched",()=>this.updateQualityIndicator()),this.player.on("hlsmanifestparsed",()=>{this.ensureQualityButton(),this.updateQualityIndicator()})}updatePlayPauseButton(){if(!this.controls.playPause)return;let e=this.controls.playPause.querySelector(".vidply-icon"),t=this.player.state.playing;e.innerHTML=t?M("pause").innerHTML:M("play").innerHTML;let i=t?g.t("player.pause"):g.t("player.play");this.controls.playPause.setAttribute("aria-label",i),h.attachTooltip(this.controls.playPause,i,this.player.options.classPrefix)}updateProgress(){if(!this.controls.played)return;let e=this.player.state.currentTime||0,t=this.player.state.duration||0,i=t>0?Math.min(100,Math.max(0,e/t*100)):0;this.controls.played.style.width="".concat(i,"%"),this.controls.progress.setAttribute("aria-valuenow",String(Math.round(i)));let s=C.formatDuration(this.player.state.currentTime),a=C.formatDuration(this.player.state.duration);if(this.controls.progress.setAttribute("aria-valuetext","".concat(Math.round(i),"%, ").concat(s," ").concat(g.t("time.of")," ").concat(a)),this.controls.currentTimeVisual){let n=this.player.state.currentTime;this.controls.currentTimeVisual.textContent=C.formatTime(n),this.controls.currentTimeAccessible&&(this.controls.currentTimeAccessible.textContent=C.formatDuration(n))}}updateDuration(){if(this.controls.durationVisual){let e=this.player.state.duration;this.controls.durationVisual.textContent=C.formatTime(e),this.controls.durationAccessible&&(this.controls.durationAccessible.textContent=g.t("time.durationPrefix")+C.formatDuration(e))}}updateVolumeDisplay(){let e=this.player.state.volume*100;if(this.controls.volumeFill&&(this.controls.volumeFill.style.height="".concat(e,"%")),this.controls.volumeSlider&&this.controls.volumeSlider.setAttribute("aria-valuenow",String(Math.round(e))),this.controls.mute){let t=this.controls.mute.querySelector(".vidply-icon");if(t){let i;this.player.state.muted||this.player.state.volume===0?i="volumeMuted":this.player.state.volume<.3?i="volumeLow":this.player.state.volume<.7?i="volumeMedium":i="volumeHigh",t.innerHTML=M(i).innerHTML;let s=this.player.state.muted?g.t("player.unmute"):g.t("player.mute");this.controls.mute.setAttribute("aria-label",s),h.attachTooltip(this.controls.mute,s,this.player.options.classPrefix)}}this.controls.volumeSlider&&this.controls.volumeSlider.setAttribute("aria-valuenow",String(Math.round(e)))}updateBuffered(){if(!this.controls.buffered||!this.player.element.buffered||this.player.element.buffered.length===0)return;let t=this.player.element.buffered.end(this.player.element.buffered.length-1)/this.player.state.duration*100;this.controls.buffered.style.width="".concat(t,"%")}updateSpeedDisplay(){this.controls.speedText&&(this.controls.speedText.textContent="".concat(this.player.state.playbackSpeed,"x"))}updateFullscreenButton(){if(!this.controls.fullscreen)return;let e=this.controls.fullscreen.querySelector(".vidply-icon"),t=this.player.state.fullscreen;e.innerHTML=t?M("fullscreenExit").innerHTML:M("fullscreen").innerHTML,this.controls.fullscreen.setAttribute("aria-label",t?g.t("player.exitFullscreen"):g.t("player.fullscreen"))}ensureQualityButton(){if(!this.player.options.qualityButton||this.controls.quality||!this.hasQualityLevels())return;let e=this.createQualityButton(),t=this.rightButtons.querySelector(".".concat(this.player.options.classPrefix,"-speed")),s=this.rightButtons.querySelector(".".concat(this.player.options.classPrefix,"-caption-style"))||t;s?this.rightButtons.insertBefore(e,s):this.rightButtons.insertBefore(e,this.rightButtons.firstChild),this.player.log("Quality button added dynamically","info")}updateQualityIndicator(){if(!this.controls.qualityText||!this.player.renderer||!this.player.renderer.getQualities)return;let e=this.player.renderer.getQualities();if(e.length===0){this.controls.qualityText.textContent="";return}let t="";if(this.player.renderer.hls&&this.player.renderer.hls.currentLevel===-1)t="Auto";else if(this.player.renderer.getCurrentQuality){let i=this.player.renderer.getCurrentQuality(),s=e.find(a=>a.index===i);s&&(t=s.height?"".concat(s.height,"p"):"")}this.controls.qualityText.textContent=t}setupAutoHide(){if(this.player.element.tagName!=="VIDEO")return;let e=()=>{if(this.element.classList.add("".concat(this.player.options.classPrefix,"-controls-visible")),this.player.container.classList.add("".concat(this.player.options.classPrefix,"-controls-visible")),this.player.state.controlsVisible=!0,clearTimeout(this.hideTimeout),this.player.state.playing){let t=this.player.state.fullscreen?this.player.options.hideControlsDelay*1.5:this.player.options.hideControlsDelay;this.hideTimeout=setTimeout(()=>{this.element.classList.remove("".concat(this.player.options.classPrefix,"-controls-visible")),this.player.container.classList.remove("".concat(this.player.options.classPrefix,"-controls-visible")),this.player.state.controlsVisible=!1},t)}};this.player.container.addEventListener("mousemove",e),this.player.container.addEventListener("touchstart",e),this.player.container.addEventListener("touchmove",e),this.player.container.addEventListener("click",e),this.player.container.addEventListener("tap",e),this.element.addEventListener("focusin",e),this.player.on("pause",()=>{e(),clearTimeout(this.hideTimeout)}),this.player.on("play",()=>{e()}),this.player.on("enterfullscreen",()=>{e(),this.player.state.fullscreen&&(clearTimeout(this.hideTimeout),this.hideTimeout=setTimeout(()=>{this.player.state.playing&&(this.element.classList.remove("".concat(this.player.options.classPrefix,"-controls-visible")),this.player.container.classList.remove("".concat(this.player.options.classPrefix,"-controls-visible")),this.player.state.controlsVisible=!1)},this.player.options.hideControlsDelay*2))}),e()}createOverflowMenuButton(){let e=g.t("player.moreOptions"),t=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-overflow-menu"),attributes:{type:"button","aria-label":e,"aria-expanded":"false"}});return t.appendChild(M("moreVertical")),h.attachTooltip(t,e,this.player.options.classPrefix),t.addEventListener("click",()=>{this.showOverflowMenu(t)}),this.controls.overflowMenu=t,t}showOverflowMenu(e){let t=document.querySelector(".".concat(this.player.options.classPrefix,"-overflow-menu-list"));if(t){t.remove(),e.setAttribute("aria-expanded","false"),this.openMenu===t&&(this.openMenu=null,this.openMenuButton=null);return}let i=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-overflow-menu-list ").concat(this.player.options.classPrefix,"-menu"),attributes:{role:"menu","aria-label":g.t("player.moreOptions")}}),s=Array.from(this.rightButtons.querySelectorAll('button[data-in-overflow="true"]'));if(s.length===0){let a=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:g.t("player.noMoreOptions"),attributes:{role:"menuitem"},style:{opacity:"0.5",cursor:"default"}});i.appendChild(a)}else s.forEach(a=>{let n=h.createElement("button",{className:"".concat(this.player.options.classPrefix,"-menu-item"),attributes:{type:"button",role:"menuitem",tabindex:"-1"}}),l=a.getAttribute("aria-label")||a.getAttribute("title")||"",c=a.querySelector(".vidply-icon");if(c){let r=c.cloneNode(!0);n.appendChild(r)}else{let r=a.querySelector("span");if(r&&r.textContent&&r.textContent.length<=3){let d=r.cloneNode(!0);d.classList.add("vidply-icon"),n.appendChild(d)}}let o=h.createElement("span",{textContent:l});n.appendChild(o),n.addEventListener("click",r=>{this._overflowMenuItemRef=n;let d=a.style.display;a.style.display="",a.style.visibility="hidden",a.click(),setTimeout(()=>{a.style.display=d,a.style.visibility="",this._overflowMenuItemRef=null},100),this.closeMenuAndReturnFocus(i,e)}),i.appendChild(n)}),this.attachMenuKeyboardNavigation(i,e),setTimeout(()=>{let a=i.querySelector(".".concat(this.player.options.classPrefix,"-menu-item"));a&&a.tagName==="BUTTON"&&a.focus({preventScroll:!0})},0);i.style.visibility="hidden",i.style.display="block",this.insertMenuIntoDOM(i,e),this.positionMenu(i,e,!0),requestAnimationFrame(()=>{i.style.visibility="visible"}),this.attachMenuCloseHandler(i,e)}setupOverflowDetection(){let e=()=>{let i=window.innerWidth>=768,s=window.innerHeight<window.innerWidth,a=this.player.state.fullscreen,n=s&&a;if(!this.rightButtons||this.rightButtons.children.length===0){this.overflowMenuButton&&(this.overflowMenuButton.style.display="none");return}let l=Array.from(this.rightButtons.children).filter(f=>!f.classList.contains("".concat(this.player.options.classPrefix,"-overflow-menu")));if(l.length===0){this.overflowMenuButton&&(this.overflowMenuButton.style.display="none");return}let c=!i&&!s;if(this.player.options.debug&&console.log("Overflow detection:",{isDesktop:i,isFullscreen:a,isLandscape:s,isLandscapeFullscreen:n,shouldUseOverflow:c,width:window.innerWidth,height:window.innerHeight}),!c){l.forEach(f=>{f.dataset.inOverflow="false",f.style.display=""}),this.overflowMenuButton&&(this.overflowMenuButton.style.display="none"),this.player.options.debug&&console.log("No overflow menu needed - all buttons visible, overflow button hidden");return}this.player.options.debug&&console.log("Mobile portrait - checking for overflow..."),l.forEach(f=>{f.style.display=""});let o=this.rightButtons.offsetWidth,d=o-50,u=0,p=l.map(f=>{let L=getComputedStyle(f),v=f.offsetWidth+parseInt(L.marginLeft||0)+parseInt(L.marginRight||0);return u+=v,{btn:f,width:v}});u+=(l.length-1)*8;let b=window.innerWidth<768,w=u>d||b||n&&!i;if(this.player.options.debug&&console.log("Overflow detection:",{containerWidth:o,availableWidth:d,totalWidth:u,needsOverflow:w,isSmallScreen:b,reason:b?"mobile screen":u>d?"not enough space":"enough space",buttonCount:l.length}),w){let f=window.innerWidth<768,L=f?"overflowPriorityMobile":"overflowPriority";this.player.options.debug&&console.log("Using ".concat(f?"mobile":"desktop"," priorities (width: ").concat(window.innerWidth,"px)"));let v=p.sort((k,T)=>{let D=parseInt(k.btn.dataset[L]||k.btn.dataset.overflowPriority||"1");return parseInt(T.btn.dataset[L]||T.btn.dataset.overflowPriority||"1")-D}),S=u,E=0;for(let{btn:k,width:T}of v){let D=parseInt(k.dataset[L]||k.dataset.overflowPriority||"1"),P=k.getAttribute("aria-label")||"unknown";if(D===1){k.dataset.inOverflow="false",k.style.display="";continue}(f?D>1:S>d)?(k.dataset.inOverflow="true",k.style.display="none",S-=T,E++,this.player.options.debug&&console.log(" → Hiding button: ".concat(P," (priority ").concat(D,", ").concat(f?"mobile":"desktop",")"))):(k.dataset.inOverflow="false",k.style.display="")}if(this.player.options.debug&&console.log("Overflow button exists?",!!this.overflowMenuButton),!this.overflowMenuButton){console.error("Overflow menu button not found!");return}E>0?(this.overflowMenuButton.style.display="",this.player.options.debug&&console.log("Showing overflow menu button -",E,"buttons moved")):(this.overflowMenuButton.style.display="none",this.player.options.debug&&console.log("Hiding overflow menu button - all buttons fit"))}else l.forEach(f=>{f.dataset.inOverflow="false",f.style.display=""}),this.overflowMenuButton.style.display="none"},t=new ResizeObserver(()=>{requestAnimationFrame(e)});t.observe(this.rightButtons),window.addEventListener("resize",()=>{requestAnimationFrame(e)}),this.player.on("fullscreenchange",()=>{setTimeout(()=>{requestAnimationFrame(e)},50)}),requestAnimationFrame(()=>{e(),setTimeout(()=>e(),100),setTimeout(()=>e(),300),setTimeout(()=>e(),500)}),document.fonts&&document.fonts.ready&&document.fonts.ready.then(()=>{requestAnimationFrame(e)}),this.overflowResizeObserver=t}show(){this.element.style.display=""}hide(){this.element.style.display="none"}destroy(){this.hideTimeout&&clearTimeout(this.hideTimeout),this.overflowResizeObserver&&this.overflowResizeObserver.disconnect(),this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)}};W();O();ie();function se(m,e=100){let t;return function(...s){let a=()=>{clearTimeout(t),m(...s)};clearTimeout(t),t=setTimeout(a,e)}}function ae(m=768){return window.innerWidth<m}function K(m,e=100){let t=!1,i=()=>{t||(t=!0,m())};requestAnimationFrame(i),setTimeout(i,e)}var Y=class{constructor(e){this.player=e,this.element=null,this.tracks=[],this.currentTrack=null,this.currentCue=null,this.storage=new N("vidply"),this.loadSavedPreferences(),this.init()}loadSavedPreferences(){let e=this.storage.getCaptionPreferences();e&&(e.fontSize&&(this.player.options.captionsFontSize=e.fontSize),e.fontFamily&&(this.player.options.captionsFontFamily=e.fontFamily),e.color&&(this.player.options.captionsColor=e.color),e.backgroundColor&&(this.player.options.captionsBackgroundColor=e.backgroundColor),e.opacity!==void 0&&(this.player.options.captionsOpacity=e.opacity))}saveCaptionPreferences(){this.storage.saveCaptionPreferences({fontSize:this.player.options.captionsFontSize,fontFamily:this.player.options.captionsFontFamily,color:this.player.options.captionsColor,backgroundColor:this.player.options.captionsBackgroundColor,opacity:this.player.options.captionsOpacity})}init(){this.createElement(),this.loadTracks(),this.attachEvents(),this.player.options.captionsDefault&&this.tracks.length>0&&!this.currentTrack&&this.enable()}createElement(){this.element=h.createElement("div",{className:"".concat(this.player.options.classPrefix,"-captions"),attributes:{role:"region","aria-label":g.t("player.captions")}}),this.updateStyles(),(this.player.videoWrapper||this.player.container).appendChild(this.element)}loadTracks(){let e=this.player.element.textTracks,t=-1;for(let i=0;i<e.length;i++){let s=e[i];if(s.kind==="subtitles"||s.kind==="captions"){let a=this.player.findTrackElement(s),n=a&&a.hasAttribute("default");this.tracks.push({track:s,language:s.language,label:s.label,kind:s.kind,index:i,isDefault:n}),s.mode==="showing"||s.mode,s.mode="hidden",n&&(t=this.tracks.length-1)}}t>=0&&requestAnimationFrame(()=>{this.enable(t)})}attachEvents(){this.player.on("timeupdate",()=>{this.updateCaptions()}),this.player.on("captionschange",()=>{this.updateStyles()}),this.debouncedPositionCaptions=se(()=>{this.positionCaptionsOnMobile()},150),window.addEventListener("resize",this.debouncedPositionCaptions),this.player.on("enterfullscreen",()=>{K(()=>this.positionCaptionsOnMobile(),100)}),this.player.on("exitfullscreen",()=>{K(()=>this.positionCaptionsOnMobile(),100)})}enable(e=0){if(this.tracks.length===0)return;this.currentTrack&&this.currentTrack.track&&(this.cueChangeHandler&&this.currentTrack.track.removeEventListener("cuechange",this.cueChangeHandler),this.currentTrack.track.mode="hidden");let t=this.tracks[e];if(t&&t.track){t.track.mode="hidden",this.currentTrack=t,this.player.state.captionsEnabled=!0,t.language&&this.element.setAttribute("lang",t.language),this.cueChangeHandler&&t.track.removeEventListener("cuechange",this.cueChangeHandler),this.cueChangeHandler=()=>{this.updateCaptions()},t.track.addEventListener("cuechange",this.cueChangeHandler);let i=()=>{if(t.track.readyState<2){let s=()=>{t.track.removeEventListener("load",s),t.track.removeEventListener("error",s),requestAnimationFrame(()=>{this.currentTrack&&this.currentTrack.track===t.track&&this.updateCaptions()})};t.track.addEventListener("load",s,{once:!0}),t.track.addEventListener("error",s,{once:!0})}else requestAnimationFrame(()=>{this.currentTrack&&this.currentTrack.track===t.track&&this.updateCaptions()})};requestAnimationFrame(()=>{this.currentTrack&&this.currentTrack.track===t.track&&i()}),this.player.emit("captionsenabled",t)}}disable(){this.currentTrack&&(this.currentTrack.track.mode="hidden",this.currentTrack=null),this.element.style.display="none",this.element.innerHTML="",this.element.removeAttribute("lang"),this.currentCue=null,this.player.state.captionsEnabled=!1,this.player.emit("captionsdisabled")}updateCaptions(){if(!this.currentTrack||!this.currentTrack.track)return;if(this.currentTrack.track.mode==="disabled"&&(this.currentTrack.track.mode="hidden"),this.currentTrack.track.mode==="showing"&&(this.currentTrack.track.mode="hidden"),!this.currentTrack.track.activeCues){this.currentTrack.track.cues&&this.currentTrack.track.cues.length>0&&this.currentCue&&(this.element.innerHTML="",this.element.style.display="none",this.currentCue=null);return}let e=this.currentTrack.track.activeCues,t=this.player.element.tagName.toLowerCase()==="audio";if(e.length>0){let i=e[0];if(this.currentCue!==i){this.currentCue=i;let s=i.text;if(s=this.parseVTTFormatting(s),t){this.element.querySelectorAll(".".concat(this.player.options.classPrefix,"-caption-cue")).forEach(c=>c.classList.remove("".concat(this.player.options.classPrefix,"-caption-active")));let n="cue-".concat(i.startTime,"-").concat(i.endTime),l=this.element.querySelector('[data-cue-id="'.concat(n,'"]'));l||(l=document.createElement("div"),l.className="".concat(this.player.options.classPrefix,"-caption-cue"),l.setAttribute("data-cue-id",n),l.innerHTML=h.sanitizeHTML(s),this.element.appendChild(l)),l.classList.add("".concat(this.player.options.classPrefix,"-caption-active")),requestAnimationFrame(()=>{l&&l.scrollIntoView({behavior:"smooth",block:"center"})})}else this.element.innerHTML=h.sanitizeHTML(s);this.element.style.display="block",this.positionCaptionsOnMobile(),this.player.emit("captionchange",i)}}else this.currentCue&&(t||(this.element.innerHTML="",this.element.style.display="none"),this.currentCue=null)}positionCaptionsOnMobile(){var s,a;if(!this.element||this.element.style.display==="none")return;let e=((s=this.player.state)==null?void 0:s.fullscreen)||!1,t=ae();if(!t&&!e){this.element.style.bottom="";return}let i=(a=this.player.controlBar)==null?void 0:a.element;i&&requestAnimationFrame(()=>{if(!this.element||this.element.style.display==="none")return;let n=i.getBoundingClientRect(),c=this.player.videoWrapper.getBoundingClientRect().bottom-n.top+16;this.element.style.bottom="".concat(c,"px"),this.player.options.debug&&console.log("[VidPly] Caption position:",{mobile:t,isFullscreen:e,controlsHeight:n.height,bottomOffset:"".concat(c,"px")})})}parseVTTFormatting(e){return e=e.replace(/<c[^>]*>(.*?)<\/c>/g,'<span class="caption-class">$1</span>'),e=e.replace(/<b>(.*?)<\/b>/g,"<strong>$1</strong>"),e=e.replace(/<i>(.*?)<\/i>/g,"<em>$1</em>"),e=e.replace(/<u>(.*?)<\/u>/g,"<u>$1</u>"),e=e.replace(/<v\s+([^>]+)>(.*?)<\/v>/g,'<span class="caption-voice" data-voice="$1">$2</span>'),e}updateStyles(){if(!this.element)return;let e=this.player.options;this.element.style.fontSize=e.captionsFontSize,this.element.style.fontFamily=e.captionsFontFamily,this.element.style.color=e.captionsColor,this.element.style.backgroundColor=this.hexToRgba(e.captionsBackgroundColor,e.captionsOpacity)}hexToRgba(e,t){let i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return i?"rgba(".concat(parseInt(i[1],16),", ").concat(parseInt(i[2],16),", ").concat(parseInt(i[3],16),", ").concat(t,")"):e}setCaptionStyle(e,t){switch(e){case"fontSize":this.player.options.captionsFontSize=t;break;case"fontFamily":this.player.options.captionsFontFamily=t;break;case"color":this.player.options.captionsColor=t;break;case"backgroundColor":this.player.options.captionsBackgroundColor=t;break;case"opacity":this.player.options.captionsOpacity=t;break}this.updateStyles(),this.saveCaptionPreferences(),this.player.emit("captionschange")}getAvailableTracks(){return this.tracks.map((e,t)=>({index:t,language:e.language,label:e.label||e.language,kind:e.kind}))}switchTrack(e){e>=0&&e<this.tracks.length&&(this.disable(),this.enable(e))}destroy(){this.disable(),this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)}};var ne=class{constructor(e){this.player=e,this.shortcuts=e.options.keyboardShortcuts,this.init()}init(){this.attachEvents()}attachEvents(){this.player.container.addEventListener("keydown",e=>{this.handleKeydown(e)},!0),this.player.container.hasAttribute("tabindex")||this.player.container.setAttribute("tabindex","0")}handleKeydown(e){if(e.target.tagName==="INPUT"||e.target.tagName==="TEXTAREA"||e.target.tagName==="SELECT")return;let t=document.activeElement;if(t&&(t.closest('.vidply-menu, [role="menu"]')||t.closest(".vidply-playlist-item-button")))return;let i=e.key,s=!1;if(i==="Escape"&&this.player.state.fullscreen){this.player.exitFullscreen(),e.preventDefault(),e.stopPropagation();return}for(let[a,n]of Object.entries(this.shortcuts))if(n.includes(i)&&(s=this.executeAction(a,e),s)){e.preventDefault(),e.stopPropagation(),this.announceAction(a);break}!s&&this.player.options.debug&&console.log("[VidPly] Unhandled key:",e.key,"code:",e.code,"shiftKey:",e.shiftKey)}executeAction(e,t){switch(e){case"play-pause":return this.player.toggle(),!0;case"volume-up":return this.player.setVolume(Math.min(1,this.player.state.volume+.1)),!0;case"volume-down":return this.player.setVolume(Math.max(0,this.player.state.volume-.1)),!0;case"seek-forward":return this.player.seekForward(),!0;case"seek-backward":return this.player.seekBackward(),!0;case"mute":return this.player.toggleMute(),!0;case"fullscreen":return this.player.toggleFullscreen(),!0;case"captions":if(this.player.captionManager&&this.player.captionManager.tracks.length>1){let i=this.player.controlBar&&this.player.controlBar.controls.captions;i?this.player.controlBar.showCaptionsMenu(i):this.player.toggleCaptions()}else this.player.toggleCaptions();return!0;case"caption-style-menu":return this.player.controlBar&&this.player.controlBar.controls.captionStyle?(this.player.controlBar.showCaptionStyleMenu(this.player.controlBar.controls.captionStyle),!0):!1;case"speed-up":return this.player.setPlaybackSpeed(Math.min(2,this.player.state.playbackSpeed+.25)),!0;case"speed-down":return this.player.setPlaybackSpeed(Math.max(.25,this.player.state.playbackSpeed-.25)),!0;case"speed-menu":return this.player.controlBar&&this.player.controlBar.controls.speed?(this.player.controlBar.showSpeedMenu(this.player.controlBar.controls.speed),!0):!1;case"quality-menu":return this.player.controlBar&&this.player.controlBar.controls.quality?(this.player.controlBar.showQualityMenu(this.player.controlBar.controls.quality),!0):!1;case"chapters-menu":return this.player.controlBar&&this.player.controlBar.controls.chapters?(this.player.controlBar.showChaptersMenu(this.player.controlBar.controls.chapters),!0):!1;case"transcript-toggle":return this.player.transcriptManager?(this.player.transcriptManager.toggleTranscript(),!0):!1;default:return!1}}announceAction(e){if(!this.player.options.screenReaderAnnouncements)return;let t="";switch(e){case"play-pause":t=this.player.state.playing?"Playing":"Paused";break;case"volume-up":t="Volume ".concat(Math.round(this.player.state.volume*100),"%");break;case"volume-down":t="Volume ".concat(Math.round(this.player.state.volume*100),"%");break;case"mute":t=this.player.state.muted?"Muted":"Unmuted";break;case"fullscreen":t=this.player.state.fullscreen?"Fullscreen":"Exit fullscreen";break;case"captions":t=this.player.state.captionsEnabled?"Captions on":"Captions off";break;case"speed-up":case"speed-down":t="Speed ".concat(this.player.state.playbackSpeed,"x");break}t&&this.announce(t)}announce(e,t="polite"){let i=document.getElementById("vidply-announcer");i||(i=document.createElement("div"),i.id="vidply-announcer",i.className="vidply-sr-only",i.setAttribute("aria-live",t),i.setAttribute("aria-atomic","true"),i.style.cssText="\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n ",document.body.appendChild(i)),i.textContent="",setTimeout(()=>{i.textContent=e},100)}updateShortcut(e,t){Array.isArray(t)&&(this.shortcuts[e]=t)}destroy(){}};he();U();O();ie();pe();me();ye();var Ze=0,j=class m extends J{constructor(e,t={}){if(super(),this.element=typeof e=="string"?document.querySelector(e):e,!this.element)throw new Error("VidPly: Element not found");if(Ze++,this.instanceId=Ze,this.element.tagName!=="VIDEO"&&this.element.tagName!=="AUDIO"){let s=t.mediaType||"video",a=document.createElement(s);Array.from(this.element.attributes).forEach(l=>{l.name!=="id"&&l.name!=="class"&&!l.name.startsWith("data-")&&a.setAttribute(l.name,l.value)}),this.element.querySelectorAll("track").forEach(l=>{a.appendChild(l.cloneNode(!0))}),this.element.innerHTML="",this.element.appendChild(a),this.element=a}this._originalElement=this.element,this.options=$({width:null,height:null,poster:null,responsive:!0,fillContainer:!1,autoplay:!1,loop:!1,muted:!1,volume:.8,playbackSpeed:1,preload:"metadata",startTime:0,playsInline:!0,controls:!0,hideControlsDelay:3e3,playPauseButton:!0,progressBar:!0,currentTime:!0,duration:!0,volumeControl:!0,muteButton:!0,chaptersButton:!0,qualityButton:!0,captionStyleButton:!0,speedButton:!0,captionsButton:!0,transcriptButton:!0,fullscreenButton:!0,pipButton:!1,seekInterval:10,seekIntervalLarge:30,captions:!0,captionsDefault:!1,captionsFontSize:"100%",captionsFontFamily:"sans-serif",captionsColor:"#FFFFFF",captionsBackgroundColor:"#000000",captionsOpacity:.8,audioDescription:!0,audioDescriptionSrc:null,audioDescriptionButton:!0,signLanguage:!0,signLanguageSrc:null,signLanguageButton:!0,signLanguagePosition:"bottom-right",transcript:!1,transcriptPosition:"external",transcriptContainer:null,keyboard:!0,keyboardShortcuts:{"play-pause":[" ","p","k"],"volume-up":["ArrowUp"],"volume-down":["ArrowDown"],"seek-forward":["ArrowRight"],"seek-backward":["ArrowLeft"],mute:["m"],fullscreen:["f"],captions:["c"],"caption-style-menu":["a"],"speed-up":[">"],"speed-down":["<"],"speed-menu":["s"],"quality-menu":["q"],"chapters-menu":["j"],"transcript-toggle":["t"]},ariaLabels:{},screenReaderAnnouncements:!0,highContrast:!1,focusHighlight:!0,metadataAlerts:{},metadataHashtags:{},language:"en",languages:["en"],debug:!1,classPrefix:"vidply",iconType:"svg",pauseOthersOnPlay:!0,onReady:null,onPlay:null,onPause:null,onEnded:null,onTimeUpdate:null,onVolumeChange:null,onError:null},t),this.options.metadataAlerts=this.options.metadataAlerts||{},this.options.metadataHashtags=this.options.metadataHashtags||{},this.storage=new N("vidply");let i=this.storage.getPlayerPreferences();i&&(i.volume!==void 0&&(this.options.volume=i.volume),i.playbackSpeed!==void 0&&(this.options.playbackSpeed=i.playbackSpeed),i.muted!==void 0&&(this.options.muted=i.muted)),this.state={ready:!1,playing:!1,paused:!0,ended:!1,buffering:!1,seeking:!1,muted:this.options.muted,volume:this.options.volume,currentTime:0,duration:0,playbackSpeed:this.options.playbackSpeed,fullscreen:!1,pip:!1,captionsEnabled:this.options.captionsDefault,currentCaption:null,controlsVisible:!0,audioDescriptionEnabled:!1,signLanguageEnabled:!1},this.originalSrc=null,this.audioDescriptionSrc=this.options.audioDescriptionSrc,this.signLanguageSrc=this.options.signLanguageSrc,this.signLanguageSources=this.options.signLanguageSources||{},this.currentSignLanguage=null,this.signLanguageVideo=null,this.audioDescriptionSourceElement=null,this.originalAudioDescriptionSource=null,this.audioDescriptionCaptionTracks=[],this._audioDescriptionDesiredState=!1,this._textTracksCache=null,this._textTracksDirty=!0,this._sourceElementsCache=null,this._sourceElementsDirty=!0,this._trackElementsCache=null,this._trackElementsDirty=!0,this.timeouts=new Set,this.container=null,this.renderer=null,this.controlBar=null,this.captionManager=null,this.keyboardManager=null,this.settingsDialog=null,this.metadataCueChangeHandler=null,this.metadataAlertHandlers=new Map,this.init()}async init(){var e;try{if(this.log("Initializing VidPly player"),this.options.languageFiles)try{await g.loadLanguagesFromUrls(this.options.languageFiles)}catch(i){console.warn("Failed to load some language files:",i)}if(this.options.languageFile&&this.options.languageFileUrl)try{await g.loadLanguageFromUrl(this.options.languageFile,this.options.languageFileUrl),this.log("Custom language file loaded for ".concat(this.options.languageFile))}catch(i){console.warn("Failed to load language file for ".concat(this.options.languageFile,":"),i)}if(!this.options.language||this.options.language==="en"){let i=this.detectHtmlLanguage();i&&(this.options.language=i,this.log("Auto-detected language from HTML: ".concat(i)))}this.options.language||(this.options.language="en"),await g.ensureLanguage(this.options.language),g.setLanguage(this.options.language),this.createContainer(),this.element.src||((e=this.element.querySelector("source"))==null?void 0:e.src)?await this.initializeRenderer():this.log("No initial source - waiting for playlist or manual load"),this.options.controls&&(this.controlBar=new te(this),this.videoWrapper.appendChild(this.controlBar.element)),this.options.captions&&(this.captionManager=new Y(this)),this.options.transcript&&await this.ensureTranscriptManager(),this.setupMetadataHandling(),this.options.keyboard&&(this.keyboardManager=new ne(this)),this.setupResponsiveHandlers(),this.options.startTime>0&&this.seek(this.options.startTime),requestAnimationFrame(()=>{this.options.muted?this.mute():this.renderer&&this.renderer.media&&this.renderer.setMuted(!1),this.options.volume!==.8?this.setVolume(this.options.volume):this.renderer&&this.renderer.media&&this.renderer.setVolume(this.options.volume)}),this.state.ready=!0,this.emit("ready"),this.options.onReady&&this.options.onReady.call(this),this.options.autoplay&&this.play(),this.log("Player initialized successfully")}catch(t){this.handleError(t)}}async ensureTranscriptManager(){if(this.transcriptManager)return this.transcriptManager;if(!this.options.transcript&&!this.options.transcriptButton)return null;let e=await Promise.resolve().then(()=>(Ue(),qe)),t=e.TranscriptManager||e.default;return t?(this.transcriptManager=new t(this),this.transcriptManager):null}async toggleTranscript(){let e=await this.ensureTranscriptManager();e&&(e.toggleTranscript(),this.controlBar&&this.controlBar.updateTranscriptButton())}detectHtmlLanguage(){let e=document.documentElement.lang||document.documentElement.getAttribute("lang");if(!e)return null;let t=e.toLowerCase().split("-")[0];return g.translations[t]||g.builtInLanguageLoaders&&g.builtInLanguageLoaders[t]?t:(this.log('Language "'.concat(e,'" not available, using English as fallback')),null)}createContainer(){let e=this.instanceId>1?"".concat(g.t("player.label")," ").concat(this.instanceId):g.t("player.label");this.container=h.createElement("div",{className:"".concat(this.options.classPrefix,"-player"),attributes:{role:"application","aria-label":e,tabindex:"0"}});let t=this.element.tagName.toLowerCase();this.container.classList.add("".concat(this.options.classPrefix,"-").concat(t)),this.options.responsive&&this.container.classList.add("".concat(this.options.classPrefix,"-responsive")),this.videoWrapper=h.createElement("div",{className:"".concat(this.options.classPrefix,"-video-wrapper")}),this.element.parentNode.insertBefore(this.container,this.element),this.element.tagName==="AUDIO"&&this.options.poster&&(this.trackArtworkElement=h.createElement("div",{className:"".concat(this.options.classPrefix,"-track-artwork"),attributes:{"aria-hidden":"true"}}),this.trackArtworkElement.style.backgroundImage="url(".concat(this.options.poster,")"),this.container.appendChild(this.trackArtworkElement)),this.container.appendChild(this.videoWrapper),this.videoWrapper.appendChild(this.element),this.element.controls=!1,this.element.removeAttribute("controls"),this.element.setAttribute("tabindex","-1"),this.element.style.width="100%",this.element.style.height="100%",this.element.tagName==="VIDEO"&&this.options.playsInline&&(this.element.setAttribute("playsinline",""),this.element.playsInline=!0),this.options.width&&(this.container.style.width=typeof this.options.width=="number"?"".concat(this.options.width,"px"):this.options.width),this.options.height&&(this.container.style.height=typeof this.options.height=="number"?"".concat(this.options.height,"px"):this.options.height),this.options.poster&&this.element.tagName==="VIDEO"&&(this.element.poster=this.resolvePosterPath(this.options.poster)),this.element.tagName==="VIDEO"&&this.createPlayButtonOverlay(),this.element.vidply=this,m.instances.push(this),this.element.style.cursor="pointer",this.element.addEventListener("click",i=>{i.target===this.element&&this.toggle()}),this.on("play",()=>{this.hidePosterOverlay()}),this.on("timeupdate",()=>{this.state.currentTime>0&&this.hidePosterOverlay()}),this.element.addEventListener("loadeddata",()=>{(this.state.playing||this.state.currentTime>0)&&this.hidePosterOverlay()},{once:!0})}createPlayButtonOverlay(){this.playButtonOverlay=We(),this.playButtonOverlay.addEventListener("click",()=>{this.toggle()}),this.videoWrapper.appendChild(this.playButtonOverlay),this.on("play",()=>{this.playButtonOverlay.style.opacity="0",this.playButtonOverlay.style.pointerEvents="none"}),this.on("pause",()=>{this.playButtonOverlay.style.opacity="1",this.playButtonOverlay.style.pointerEvents="auto",this.positionPlayOverlayOnMobile()}),this.on("ended",()=>{this.playButtonOverlay.style.opacity="1",this.playButtonOverlay.style.pointerEvents="auto",this.positionPlayOverlayOnMobile()}),this.debouncedPositionPlayOverlay=se(()=>{this.positionPlayOverlayOnMobile()},150),window.addEventListener("resize",this.debouncedPositionPlayOverlay),this.on("loadedmetadata",()=>{this.positionPlayOverlayOnMobile()}),this.on("enterfullscreen",()=>{K(()=>this.positionPlayOverlayOnMobile(),100)}),this.on("exitfullscreen",()=>{K(()=>this.positionPlayOverlayOnMobile(),100)})}positionPlayOverlayOnMobile(){if(!this.playButtonOverlay||this.element.tagName!=="VIDEO")return;if(!ae()){this.playButtonOverlay.style.top="";return}let t=this.element.getBoundingClientRect(),i=this.videoWrapper.getBoundingClientRect(),s=t.top-i.top+t.height/2;this.playButtonOverlay.style.top="".concat(s,"px")}async initializeRenderer(){var a;let e=this._pendingSource||this.element.src||((a=this.element.querySelector("source"))==null?void 0:a.src);if(!e)throw new Error("No media source found");this.currentSource=e,this._pendingSource=null;let t=this.sourceElements;for(let n of t){let l=n.getAttribute("data-desc-src"),c=n.getAttribute("data-orig-src");if(l||c){if(this.audioDescriptionSourceElement||(this.audioDescriptionSourceElement=n),c)this.originalAudioDescriptionSource||(this.originalAudioDescriptionSource=c),this.originalSrc||(this.originalSrc=c);else{let o=n.getAttribute("src");!this.originalAudioDescriptionSource&&o&&(this.originalAudioDescriptionSource=o),!this.originalSrc&&o&&(this.originalSrc=o)}l&&!this.audioDescriptionSrc&&(this.audioDescriptionSrc=l)}}this.trackElements.forEach(n=>{let l=n.getAttribute("kind"),c=n.getAttribute("data-desc-src");(l==="captions"||l==="subtitles"||l==="chapters")&&c&&(this.audioDescriptionCaptionTracks.push({trackElement:n,originalSrc:n.getAttribute("src"),describedSrc:c,originalTrackSrc:n.getAttribute("data-orig-src")||n.getAttribute("src"),explicit:!0}),this.log("Found explicit described ".concat(l," track: ").concat(n.getAttribute("src")," -> ").concat(c)))}),this.originalSrc||(this.originalSrc=e);let s=X;if(e.includes("youtube.com")||e.includes("youtu.be")){let n=await Promise.resolve().then(()=>(_e(),Ke));s=n.YouTubeRenderer||n.default}else if(e.includes("vimeo.com")){let n=await Promise.resolve().then(()=>(Qe(),je));s=n.VimeoRenderer||n.default}else if(e.includes(".m3u8")){let n=await Promise.resolve().then(()=>(Xe(),Ye));s=n.HLSRenderer||n.default}else if(e.includes("soundcloud.com")||e.includes("api.soundcloud.com")){let n=await Promise.resolve().then(()=>(Je(),Ge));s=n.SoundCloudRenderer||n.default}this.log("Using ".concat((s==null?void 0:s.name)||"HTML5Renderer"," renderer")),this.renderer=new s(this),await this.renderer.init(),this.invalidateTrackCache()}get textTracks(){return(!this._textTracksCache||this._textTracksDirty)&&(this._textTracksCache=Array.from(this.element.textTracks||[]),this._textTracksDirty=!1),this._textTracksCache}get sourceElements(){return(!this._sourceElementsCache||this._sourceElementsDirty)&&(this._sourceElementsCache=Array.from(this.element.querySelectorAll("source")),this._sourceElementsDirty=!1),this._sourceElementsCache}get trackElements(){return(!this._trackElementsCache||this._trackElementsDirty)&&(this._trackElementsCache=Array.from(this.element.querySelectorAll("track")),this._trackElementsDirty=!1),this._trackElementsCache}invalidateTrackCache(){this._textTracksDirty=!0,this._trackElementsDirty=!0,this._sourceElementsDirty=!0}findTextTrack(e,t=null){let i=this.textTracks;return t?i.find(s=>s.kind===e&&s.language===t):i.find(s=>s.kind===e)}findSourceElement(e,t=null){let i=this.sourceElements;return t?i.find(s=>s.getAttribute(e)===t):i.find(s=>s.hasAttribute(e))}findTrackElement(e){return this.trackElements.find(t=>t.track===e)}resolvePosterPath(e){if(!e||e.match(/^(https?:|\/)/))return e;try{return new URL(e,window.location.href).href}catch(t){return e}}showPosterOverlay(){if(!this.videoWrapper||this.element.tagName!=="VIDEO")return;let e=this.element.getAttribute("poster")||this.element.poster||this.options.poster;if(!e)return;let t=this.resolvePosterPath(e);this.videoWrapper.style.setProperty("--vidply-poster-image",'url("'.concat(t,'")')),this.videoWrapper.classList.add("vidply-forced-poster"),this._isAudioContent&&this.container?this.container.classList.add("vidply-audio-content"):this.container&&this.container.classList.remove("vidply-audio-content")}hidePosterOverlay(){this.videoWrapper&&(this.videoWrapper.classList.remove("vidply-forced-poster"),this.videoWrapper.style.removeProperty("--vidply-poster-image"))}setManagedTimeout(e,t){let i=setTimeout(()=>{this.timeouts.delete(i),e()},t);return this.timeouts.add(i),i}clearManagedTimeout(e){e&&(clearTimeout(e),this.timeouts.delete(e))}isExternalRendererUrl(e){return e?e.includes("youtube.com")||e.includes("youtu.be")||e.includes("vimeo.com")||e.includes("soundcloud.com")||e.includes("api.soundcloud.com")||e.includes(".m3u8"):!1}async load(e){var t;try{this.log("Loading new media:",e.src),this.renderer&&this.pause();let i=window.scrollX||window.pageXOffset,s=window.scrollY||window.pageYOffset;this.trackElements.forEach(r=>r.remove()),this.invalidateTrackCache();let n=this.isExternalRendererUrl(e.src);if(n&&(this._switchingRenderer=!0),n?(this.element.removeAttribute("src"),this.element.querySelectorAll("source").forEach(d=>d.removeAttribute("src"))):(this.element.src=e.src,e.type&&(this.element.type=e.type)),this._pendingSource=e.src,this._isAudioContent=e.type&&e.type.startsWith("audio/"),this.container&&(this._isAudioContent?this.container.classList.add("vidply-audio-content"):this.container.classList.remove("vidply-audio-content")),e.poster&&this.element.tagName==="VIDEO")if(this._isAudioContent){if(this.element.removeAttribute("poster"),this.videoWrapper){let r=this.resolvePosterPath(e.poster);this.videoWrapper.style.setProperty("--vidply-poster-image",'url("'.concat(r,'")')),this.videoWrapper.classList.add("vidply-forced-poster")}}else this.element.poster=this.resolvePosterPath(e.poster),this.videoWrapper&&(this.videoWrapper.classList.remove("vidply-forced-poster"),this.videoWrapper.style.removeProperty("--vidply-poster-image"));e.tracks&&e.tracks.length>0&&(e.tracks.forEach(r=>{let d=document.createElement("track");d.src=r.src,d.kind=r.kind||"captions",d.srclang=r.srclang||"en",d.label=r.label||r.srclang,r.default&&(d.default=!0);let u=this.element.firstChild;u&&u.nodeType===Node.ELEMENT_NODE&&u.tagName!=="TRACK"?this.element.insertBefore(d,u):this.element.appendChild(d)}),this.invalidateTrackCache());let l=this.state.signLanguageEnabled,c=this.state.audioDescriptionEnabled;this.audioDescriptionSrc=e.audioDescriptionSrc||null,this.signLanguageSrc=e.signLanguageSrc||null,this.originalSrc=e.src,c&&this.disableAudioDescription(),l&&this.disableSignLanguage();let o=this.shouldChangeRenderer(e.src);if(o&&this.renderer&&(this.renderer.destroy(),this.renderer=null),!this.renderer||o?await this.initializeRenderer():(this.renderer.media=this.element,this.element.load()),n?setTimeout(()=>{this._switchingRenderer=!1},500):this._switchingRenderer=!1,window.scrollTo(i,s),this.captionManager&&(this.captionManager.destroy(),this.captionManager=new Y(this)),this.transcriptManager){let r=this.transcriptManager.isVisible;this.transcriptManager.destroy(),this.transcriptManager=null,await this.ensureTranscriptManager(),r&&this.controlBar&&this.controlBar.hasCaptionTracks()&&((t=this.transcriptManager)==null||t.showTranscript())}this.controlBar&&this.updateControlBar(),window.scrollTo(i,s),l&&this.signLanguageSrc&&setTimeout(()=>{this.enableSignLanguage(),window.scrollTo(i,s)},150),c&&this.audioDescriptionSrc&&setTimeout(()=>{this.enableAudioDescription(),window.scrollTo(i,s)},150),this.emit("sourcechange",e),this.log("Media loaded successfully")}catch(i){this.handleError(i)}}updateControlBar(){if(!this.controlBar)return;let e=this.controlBar;e.element.innerHTML="",e.createControls(),e.attachEvents(),e.setupAutoHide(),e.setupOverflowDetection()}shouldChangeRenderer(e){if(!this.renderer)return!0;let t=e.includes("youtube.com")||e.includes("youtu.be"),i=e.includes("vimeo.com"),s=e.includes(".m3u8"),a=e.includes("soundcloud.com")||e.includes("api.soundcloud.com"),n=this.renderer.constructor.name;return!!(t&&n!=="YouTubeRenderer"||i&&n!=="VimeoRenderer"||s&&n!=="HLSRenderer"||a&&n!=="SoundCloudRenderer"||!t&&!i&&!s&&!a&&n!=="HTML5Renderer")}play(){this.renderer&&this.renderer.play()}pause(){this.renderer&&this.renderer.pause()}stop(){this.pause(),this.seek(0)}toggle(){this.state.playing?this.pause():this.play()}seek(e){this.renderer&&this.renderer.seek(e)}seekForward(e=this.options.seekInterval){this.seek(Math.min(this.state.currentTime+e,this.state.duration))}seekBackward(e=this.options.seekInterval){this.seek(Math.max(this.state.currentTime-e,0))}setVolume(e){let t=Math.max(0,Math.min(1,e));this.renderer&&this.renderer.setVolume(t),this.state.volume=t,t>0&&this.state.muted&&(this.state.muted=!1,this.renderer&&this.renderer.setMuted(!1),this.emit("volumechange")),this.savePlayerPreferences()}getVolume(){return this.state.volume}mute(){this.renderer&&this.renderer.setMuted(!0),this.state.muted=!0,this.savePlayerPreferences(),this.emit("volumechange")}unmute(){this.renderer&&this.renderer.setMuted(!1),this.state.muted=!1,this.savePlayerPreferences(),this.emit("volumechange")}toggleMute(){this.state.muted?this.unmute():this.mute()}setPlaybackSpeed(e){let t=Math.max(.25,Math.min(2,e));this.renderer&&this.renderer.setPlaybackSpeed(t),this.state.playbackSpeed=t,this.savePlayerPreferences(),this.emit("playbackspeedchange",t)}getPlaybackSpeed(){return this.state.playbackSpeed}savePlayerPreferences(){this.storage.savePlayerPreferences({volume:this.state.volume,muted:this.state.muted,playbackSpeed:this.state.playbackSpeed})}enterFullscreen(){let e=this.container,t=null;if(/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1){this._enablePseudoFullscreen();return}e.requestFullscreen?t=e.requestFullscreen():e.webkitRequestFullscreen?t=e.webkitRequestFullscreen():e.mozRequestFullScreen?t=e.mozRequestFullScreen():e.msRequestFullscreen&&(t=e.msRequestFullscreen()),t&&t.catch&&t.catch(s=>{this.log("Fullscreen API failed, using pseudo-fullscreen:",s.message),this._enablePseudoFullscreen()}),!e.requestFullscreen&&!e.webkitRequestFullscreen&&!e.mozRequestFullScreen&&!e.msRequestFullscreen?this._enablePseudoFullscreen():(this.state.fullscreen=!0,this.container.classList.add("".concat(this.options.classPrefix,"-fullscreen")),this.emit("fullscreenchange",!0))}exitFullscreen(){!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)?document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen():this._disablePseudoFullscreen(),this.state.fullscreen=!1,this.container.classList.remove("".concat(this.options.classPrefix,"-fullscreen")),this.emit("fullscreenchange",!1)}toggleFullscreen(){this.state.fullscreen?this.exitFullscreen():this.enterFullscreen()}_enablePseudoFullscreen(){var t;this.state.fullscreen=!0,this.container.classList.add("".concat(this.options.classPrefix,"-fullscreen")),this._originalScrollX=window.scrollX||window.pageXOffset,this._originalScrollY=window.scrollY||window.pageYOffset,this._originalBodyOverflow=document.body.style.overflow,this._originalBodyPosition=document.body.style.position,this._originalBodyWidth=document.body.style.width,this._originalBodyHeight=document.body.style.height,this._originalHtmlOverflow=document.documentElement.style.overflow,document.body.style.overflow="hidden",document.body.style.width="100%",document.body.style.height="100%",document.documentElement.style.overflow="hidden",this._originalViewport=(t=document.querySelector('meta[name="viewport"]'))==null?void 0:t.getAttribute("content");let e=document.querySelector('meta[name="viewport"]');e&&e.setAttribute("content","width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"),window.scrollTo(0,0),this.emit("fullscreenchange",!0),this.emit("enterfullscreen")}_disablePseudoFullscreen(){if(this._originalBodyOverflow!==void 0&&(document.body.style.overflow=this._originalBodyOverflow,delete this._originalBodyOverflow),this._originalBodyPosition!==void 0&&(document.body.style.position=this._originalBodyPosition,delete this._originalBodyPosition),this._originalBodyWidth!==void 0&&(document.body.style.width=this._originalBodyWidth,delete this._originalBodyWidth),this._originalBodyHeight!==void 0&&(document.body.style.height=this._originalBodyHeight,delete this._originalBodyHeight),this._originalHtmlOverflow!==void 0&&(document.documentElement.style.overflow=this._originalHtmlOverflow,delete this._originalHtmlOverflow),this._originalViewport!==void 0){let e=document.querySelector('meta[name="viewport"]');e&&e.setAttribute("content",this._originalViewport),delete this._originalViewport}this._originalScrollX!==void 0&&this._originalScrollY!==void 0&&(window.scrollTo(this._originalScrollX,this._originalScrollY),delete this._originalScrollX,delete this._originalScrollY),this.emit("exitfullscreen")}enterPiP(){this.element.requestPictureInPicture&&(this.element.requestPictureInPicture(),this.state.pip=!0,this.emit("pipchange",!0))}exitPiP(){document.pictureInPictureElement&&(document.exitPictureInPicture(),this.state.pip=!1,this.emit("pipchange",!1))}togglePiP(){this.state.pip?this.exitPiP():this.enterPiP()}enableCaptions(){this.captionManager&&(this.captionManager.enable(),this.state.captionsEnabled=!0)}disableCaptions(){this.captionManager&&(this.captionManager.disable(),this.state.captionsEnabled=!1)}toggleCaptions(){this.state.captionsEnabled?this.disableCaptions():this.enableCaptions()}async validateTrackExists(e){try{return(await fetch(e,{method:"HEAD",cache:"no-cache"})).ok}catch(t){return!1}}stripVTTFormatting(e){return e?e.replace(/<[^>]+>/g,"").replace(/\n/g," ").trim().toLowerCase():""}findMatchingCaptionTime(e,t){if(!e||!t||t.length===0)return null;let i=this.stripVTTFormatting(e);for(let s of t){if(s.kind!=="captions"&&s.kind!=="subtitles")continue;let a=s.track;if(!(!a||!a.cues))for(let n=0;n<a.cues.length;n++){let l=a.cues[n],c=this.stripVTTFormatting(l.text);if(c===i)return l.startTime;let o=i.split(/\s+/).filter(d=>d.length>2),r=c.split(/\s+/).filter(d=>d.length>2);if(o.length>0&&r.length>0&&o.filter(p=>r.includes(p)).length/o.length>=.8)return l.startTime}}return null}async enableAudioDescription(){let e=this.sourceElements.some(r=>r.getAttribute("data-desc-src")),t=this.audioDescriptionCaptionTracks.length>0;if(!this.audioDescriptionSrc&&!e&&!t){console.warn("VidPly: No audio description source, source elements, or tracks provided");return}let i=this.element.currentTime,s=this.state.playing,a=!s&&i===0,n=null;if(this.captionManager&&this.captionManager.currentTrack){let r=this.captionManager.currentTrack.track;if(r&&r.activeCues&&r.activeCues.length>0){let d=r.activeCues[0];n=this.stripVTTFormatting(d.text)}}let l=this.resolvePosterPath(this.element.getAttribute("poster")||this.element.poster||this.options.poster);a&&this.showPosterOverlay();let c=[];if(this.audioDescriptionSourceElement){let r=this.element.currentSrc||this.element.src,d=this.sourceElements,u=null,p=this.audioDescriptionSrc;for(let v of d){let S=v.getAttribute("src"),E=v.getAttribute("data-desc-src"),k=S?S.split("/").pop():"",T=r?r.split("/").pop():"";if(r&&(r===S||r.includes(S)||r.includes(k)||k&&T===k)){u=v,E?p=E:S&&(p=this.audioDescriptionSrc||p);break}}if(!u){u=this.audioDescriptionSourceElement;let v=u.getAttribute("data-desc-src");v&&(p=v)}if(this.audioDescriptionCaptionTracks.length>0){let v=this.audioDescriptionCaptionTracks.map(async k=>{if(k.trackElement&&k.describedSrc)if(k.explicit===!0)try{let T=await this.validateTrackExists(k.describedSrc);return{trackInfo:k,exists:T}}catch(T){return{trackInfo:k,exists:!1}}else return{trackInfo:k,exists:!1};return{trackInfo:k,exists:!1}}),S=await Promise.all(v),E=S.filter(k=>k.exists);if(E.length>0){let k=new Map;E.forEach(({trackInfo:P})=>{let z=P.trackElement.track;z?k.set(P,{wasShowing:z.mode==="showing",wasHidden:z.mode==="hidden"}):k.set(P,{wasShowing:!1,wasHidden:!1})});let T=E.map(({trackInfo:P})=>{let z=P.trackElement.getAttribute("src"),F=P.trackElement.parentNode,ce=P.trackElement.nextSibling,A={};return Array.from(P.trackElement.attributes).forEach(H=>{A[H.name]=H.value}),{trackInfo:P,oldSrc:z,parent:F,nextSibling:ce,attributes:A}});T.forEach(({trackInfo:P})=>{P.trackElement.remove()}),this.element.load(),await new Promise(P=>{setTimeout(()=>{T.forEach(({trackInfo:F,oldSrc:ce,parent:A,nextSibling:H,attributes:q})=>{c.push(F);let Q=document.createElement("track");Q.setAttribute("src",F.describedSrc),Object.keys(q).forEach(G=>{G!=="src"&&G!=="data-desc-src"&&Q.setAttribute(G,q[G])}),H&&H.parentNode?A.insertBefore(Q,H):A.appendChild(Q),F.trackElement=Q}),this.invalidateTrackCache();let z=()=>{this.setManagedTimeout(()=>{c.forEach(F=>{let A=F.trackElement.track;if(A){let H=k.get(F)||{wasShowing:!1,wasHidden:!1};A.mode="hidden";let q=()=>{H.wasShowing||H.wasHidden?A.mode="hidden":A.mode="disabled"};A.readyState>=2?q():(A.addEventListener("load",q,{once:!0}),A.addEventListener("error",q,{once:!0}))}})},300)};this.element.readyState>=1?setTimeout(z,200):(this.element.addEventListener("loadedmetadata",z,{once:!0}),setTimeout(z,2e3)),P()},100)});let D=S.length-E.length}}let y=this.sourceElements,b=[];y.forEach(v=>{let S=v.getAttribute("data-desc-src"),E=v.getAttribute("src");if(S){let k=v.getAttribute("type"),T=v.getAttribute("data-orig-src");T||(T=E),b.push({src:S,type:k,origSrc:T,descSrc:S})}else{let k=v.getAttribute("type"),T=v.getAttribute("src");b.push({src:T,type:k,origSrc:null,descSrc:null})}});let w=this.element.hasAttribute("src"),f=w?this.element.getAttribute("src"):null;w&&this.element.removeAttribute("src"),y.forEach(v=>{v.remove()}),b.forEach(v=>{let S=document.createElement("source");S.setAttribute("src",v.src),v.type&&S.setAttribute("type",v.type),v.origSrc&&S.setAttribute("data-orig-src",v.origSrc),v.descSrc&&S.setAttribute("data-desc-src",v.descSrc);let E=this.element.querySelector("track");E?this.element.insertBefore(S,E):this.element.appendChild(S)}),this._sourceElementsDirty=!0,this._sourceElementsCache=null,l&&this.element.tagName==="VIDEO"&&(this.element.poster=l),this.element.load(),await new Promise(v=>{let S=()=>{this.element.removeEventListener("loadedmetadata",S),v()};this.element.readyState>=1?v():this.element.addEventListener("loadedmetadata",S)}),await new Promise(v=>setTimeout(v,300)),(i>0||s)&&await new Promise(v=>{let S=()=>{this.element.removeEventListener("canplay",S),this.element.removeEventListener("canplaythrough",S),v()};this.element.readyState>=3?v():(this.element.addEventListener("canplay",S,{once:!0}),this.element.addEventListener("canplaythrough",S,{once:!0}),setTimeout(()=>{this.element.removeEventListener("canplay",S),this.element.removeEventListener("canplaythrough",S),v()},3e3))});let L=i;if(n&&this.captionManager&&this.captionManager.tracks.length>0){await new Promise(S=>setTimeout(S,500));let v=this.findMatchingCaptionTime(n,this.captionManager.tracks);v!==null&&(L=v,this.options.debug&&console.log("[VidPly] Syncing via caption: ".concat(i,"s -> ").concat(L,"s")))}if(L>0&&(this.seek(L),await new Promise(v=>setTimeout(v,100))),s?(await this.play(),this.setManagedTimeout(()=>{this.hidePosterOverlay()},100)):(this.pause(),a||this.hidePosterOverlay()),!this._audioDescriptionDesiredState)return;this.state.audioDescriptionEnabled=!0,this.emit("audiodescriptionenabled")}else{if(this.audioDescriptionCaptionTracks.length>0){let u=this.audioDescriptionCaptionTracks.map(async b=>{if(b.trackElement&&b.describedSrc)if(b.explicit===!0)try{let w=await this.validateTrackExists(b.describedSrc);return{trackInfo:b,exists:w}}catch(w){return{trackInfo:b,exists:!1}}else return{trackInfo:b,exists:!1};return{trackInfo:b,exists:!1}}),y=(await Promise.all(u)).filter(b=>b.exists);if(y.length>0){let b=new Map;y.forEach(({trackInfo:f})=>{let L=f.trackElement.track;L?b.set(f,{wasShowing:L.mode==="showing",wasHidden:L.mode==="hidden"}):b.set(f,{wasShowing:!1,wasHidden:!1})});let w=y.map(({trackInfo:f})=>{let L=f.trackElement.getAttribute("src"),v=f.trackElement.parentNode,S=f.trackElement.nextSibling,E={};return Array.from(f.trackElement.attributes).forEach(k=>{E[k.name]=k.value}),{trackInfo:f,oldSrc:L,parent:v,nextSibling:S,attributes:E}});w.forEach(({trackInfo:f})=>{f.trackElement.remove()}),this.element.load(),setTimeout(()=>{w.forEach(({trackInfo:L,oldSrc:v,parent:S,nextSibling:E,attributes:k})=>{c.push(L);let T=document.createElement("track");T.setAttribute("src",L.describedSrc),Object.keys(k).forEach(P=>{P!=="src"&&P!=="data-desc-src"&&T.setAttribute(P,k[P])});let D=S.firstChild;D&&D.nodeType===Node.ELEMENT_NODE&&D.tagName!=="TRACK"?S.insertBefore(T,D):E&&E.parentNode?S.insertBefore(T,E):S.appendChild(T),L.trackElement=T}),this.element.load();let f=()=>{setTimeout(()=>{c.forEach(L=>{let S=L.trackElement.track;if(S){let E=b.get(L)||{wasShowing:!1,wasHidden:!1};S.mode="hidden";let k=()=>{E.wasShowing||E.wasHidden?S.mode="hidden":S.mode="disabled"};S.readyState>=2?k():(S.addEventListener("load",k,{once:!0}),S.addEventListener("error",k,{once:!0}))}})},300)};this.element.readyState>=1?setTimeout(f,200):(this.element.addEventListener("loadedmetadata",f,{once:!0}),setTimeout(f,2e3))},100)}}let r=this.sourceElements;if(r.some(u=>u.getAttribute("data-desc-src"))){let u=[];r.forEach(p=>{let y=p.getAttribute("data-desc-src"),b=p.getAttribute("src");if(y){let w=p.getAttribute("type"),f=p.getAttribute("data-orig-src");f||(f=b),u.push({src:y,type:w,origSrc:f,descSrc:y})}else{let w=p.getAttribute("type"),f=p.getAttribute("src");u.push({src:f,type:w,origSrc:null,descSrc:null})}}),r.forEach(p=>{p.remove()}),u.forEach(p=>{let y=document.createElement("source");y.setAttribute("src",p.src),p.type&&y.setAttribute("type",p.type),p.origSrc&&y.setAttribute("data-orig-src",p.origSrc),p.descSrc&&y.setAttribute("data-desc-src",p.descSrc),this.element.appendChild(y)}),l&&this.element.tagName==="VIDEO"&&(this.element.poster=l),this.element.load(),this.invalidateTrackCache()}else l&&this.element.tagName==="VIDEO"&&(this.element.poster=l),this.element.src=this.audioDescriptionSrc}await new Promise(r=>{let d=()=>{this.element.removeEventListener("loadedmetadata",d),r()};this.element.readyState>=1?r():this.element.addEventListener("loadedmetadata",d)}),(i>0||s)&&await new Promise(r=>{let d=()=>{this.element.removeEventListener("canplay",d),this.element.removeEventListener("canplaythrough",d),r()};this.element.readyState>=3?r():(this.element.addEventListener("canplay",d,{once:!0}),this.element.addEventListener("canplaythrough",d,{once:!0}),setTimeout(()=>{this.element.removeEventListener("canplay",d),this.element.removeEventListener("canplaythrough",d),r()},3e3))}),this.element.tagName==="VIDEO"&&i===0&&!s&&this.element.readyState>=1&&(this.element.currentTime=.001,this.setManagedTimeout(()=>{this.element.currentTime=0},10));let o=i;if(n&&this.captionManager&&this.captionManager.tracks.length>0){await new Promise(d=>setTimeout(d,500));let r=this.findMatchingCaptionTime(n,this.captionManager.tracks);r!==null&&(o=r,this.options.debug&&console.log("[VidPly] Syncing via caption: ".concat(i,"s -> ").concat(o,"s")))}if(o>0&&(this.seek(o),await new Promise(r=>setTimeout(r,100))),s?(await this.play(),this.setManagedTimeout(()=>{this.hidePosterOverlay()},100)):(this.pause(),a||this.hidePosterOverlay()),c.length>0&&this.captionManager){let r=this.state.captionsEnabled,d=null;if(this.captionManager.currentTrack){let p=this.captionManager.tracks.findIndex(y=>y.track===this.captionManager.currentTrack.track);p>=0&&(d={language:this.captionManager.tracks[p].language,kind:this.captionManager.tracks[p].kind})}setTimeout(()=>{if(this.captionManager.tracks=[],this.captionManager.loadTracks(),r&&d&&this.captionManager.tracks.length>0){let p=this.captionManager.tracks.findIndex(y=>y.language===d.language&&y.kind===d.kind);if(p>=0){let y=this.captionManager.tracks[p];if(y.track.readyState>=2)this.captionManager.enable(p);else{let b=()=>{y.track.removeEventListener("load",b),y.track.removeEventListener("error",b),this.captionManager&&this.captionManager.tracks.includes(y)&&this.captionManager.enable(p)};y.track.addEventListener("load",b,{once:!0}),y.track.addEventListener("error",b,{once:!0}),y.track.mode="hidden",setTimeout(()=>{this.captionManager&&this.captionManager.tracks.includes(y)&&this.captionManager.enable(p)},1e3)}}else if(this.captionManager.tracks.length>0){let y=this.captionManager.tracks[0];if(y.track.readyState>=2)this.captionManager.enable(0);else{let b=()=>{y.track.removeEventListener("load",b),y.track.removeEventListener("error",b),this.captionManager&&this.captionManager.tracks.includes(y)&&this.captionManager.enable(0)};y.track.addEventListener("load",b,{once:!0}),y.track.addEventListener("error",b,{once:!0}),y.track.mode="hidden",setTimeout(()=>{this.captionManager&&this.captionManager.tracks.includes(y)&&this.captionManager.enable(0)},1e3)}}}},600)}if(this.transcriptManager&&this.transcriptManager.isVisible){let r=typeof c!="undefined"?c:[];if(r.length>0){let d=()=>{this.invalidateTrackCache();let p=this.textTracks,y=r.map(f=>{let L=f.trackElement,v=L.getAttribute("src"),S=L.getAttribute("srclang"),E=L.getAttribute("kind"),k=p.find(T=>L.track===T);if(k||(k=p.find(T=>{if(T.language===S&&(T.kind===E||E==="captions"&&T.kind==="subtitles")){let D=this.findTrackElement(T);if(D&&D.getAttribute("src")===v)return!0}return!1})),k){let T=this.findTrackElement(k);if(T&&T.getAttribute("src")!==v)return null}return k}).filter(Boolean);if(y.length===0){this.setManagedTimeout(()=>{this.transcriptManager&&this.transcriptManager.loadTranscriptData&&this.transcriptManager.loadTranscriptData()},1e3);return}y.forEach(f=>{f.mode==="disabled"&&(f.mode="hidden")});let b=0,w=()=>{b++,b>=y.length&&this.setManagedTimeout(()=>{if(this.transcriptManager&&this.transcriptManager.loadTranscriptData){this.invalidateTrackCache();let f=this.textTracks,L=r.map(S=>S.describedSrc);(y.some(S=>{let E=this.findTrackElement(S);return E&&L.includes(E.getAttribute("src"))})||y.length>0)&&this.transcriptManager.loadTranscriptData()}},800)};y.forEach(f=>{f.mode==="disabled"&&(f.mode="hidden");let L=this.findTrackElement(f),v=L?L.getAttribute("src"):null,S=r.find(k=>{let T=k.trackElement;return T&&(T.track===f||T.getAttribute("srclang")===f.language&&T.getAttribute("kind")===f.kind)}),E=S?S.describedSrc:null;if(E&&v&&v!==E){w();return}if(f.readyState>=2&&f.cues&&f.cues.length>0)w();else{f.mode==="disabled"&&(f.mode="hidden");let k=()=>{this.setManagedTimeout(w,300)};f.readyState>=2?this.setManagedTimeout(()=>{f.cues&&f.cues.length>0?w():f.addEventListener("load",k,{once:!0})},100):(f.addEventListener("load",k,{once:!0}),f.addEventListener("error",()=>{w()},{once:!0}))}})};this.setManagedTimeout(()=>{this.element.readyState>=1?d():(this.element.addEventListener("loadedmetadata",d,{once:!0}),this.setManagedTimeout(d,2e3))},500),setTimeout(()=>{this.transcriptManager&&this.transcriptManager.loadTranscriptData&&this.transcriptManager.loadTranscriptData()},5e3)}else setTimeout(()=>{this.transcriptManager&&this.transcriptManager.loadTranscriptData&&this.transcriptManager.loadTranscriptData()},800)}a||this.hidePosterOverlay(),this._audioDescriptionDesiredState&&(this.state.audioDescriptionEnabled=!0,this.emit("audiodescriptionenabled"))}async disableAudioDescription(){if(!this.originalSrc)return;let e=this.element.currentTime,t=this.state.playing,i=null;if(this.captionManager&&this.captionManager.currentTrack){let o=this.captionManager.currentTrack.track;if(o&&o.activeCues&&o.activeCues.length>0){let r=o.activeCues[0];i=this.stripVTTFormatting(r.text)}}let s=this.resolvePosterPath(this.element.getAttribute("poster")||this.element.poster||this.options.poster),a=[];if(this.audioDescriptionCaptionTracks.length>0){let o=this.audioDescriptionCaptionTracks.map(r=>{let d=r.trackElement;if(!d||!d.parentNode)return null;let u=d.parentNode,p=d.nextSibling,y={};return Array.from(d.attributes).forEach(b=>{y[b.name]=b.value}),{trackInfo:r,parent:u,nextSibling:p,attributes:y}}).filter(Boolean);o.forEach(({trackInfo:r})=>{r.trackElement&&r.trackElement.parentNode&&r.trackElement.remove()}),this.element.load(),await new Promise(r=>{setTimeout(()=>{o.forEach(({trackInfo:d,parent:u,nextSibling:p,attributes:y})=>{a.push(d);let b=document.createElement("track");b.setAttribute("src",d.originalTrackSrc),Object.keys(y).forEach(w=>{w!=="src"&&w!=="data-desc-src"&&b.setAttribute(w,y[w])}),d.describedSrc&&b.setAttribute("data-desc-src",d.describedSrc),p&&p.parentNode?u.insertBefore(b,p):u.appendChild(b),d.trackElement=b}),this.invalidateTrackCache(),r()},100)})}let n=this.sourceElements;if(n.some(o=>o.getAttribute("data-orig-src"))){let o=[];n.forEach(u=>{let p=u.getAttribute("data-orig-src"),y=u.getAttribute("data-desc-src");if(p){let b=u.getAttribute("type");o.push({src:p,type:b,origSrc:p,descSrc:y})}else{let b=u.getAttribute("type"),w=u.getAttribute("src");o.push({src:w,type:b,origSrc:null,descSrc:y})}});let r=this.element.hasAttribute("src"),d=r?this.element.getAttribute("src"):null;r&&this.element.removeAttribute("src"),n.forEach(u=>{u.remove()}),o.forEach(u=>{let p=document.createElement("source");p.setAttribute("src",u.src),u.type&&p.setAttribute("type",u.type),u.origSrc&&p.setAttribute("data-orig-src",u.origSrc),u.descSrc&&p.setAttribute("data-desc-src",u.descSrc);let y=this.element.querySelector("track");y?this.element.insertBefore(p,y):this.element.appendChild(p)}),this._sourceElementsDirty=!0,this._sourceElementsCache=null,s&&this.element.tagName==="VIDEO"&&(this.element.poster=s),this.element.load()}else{s&&this.element.tagName==="VIDEO"&&(this.element.poster=s);let o=this.originalAudioDescriptionSource||this.originalSrc;this.element.src=o,this.element.load()}await new Promise(o=>{let r=()=>{this.element.removeEventListener("loadedmetadata",r),o()};this.element.readyState>=1?o():this.element.addEventListener("loadedmetadata",r)}),(e>0||t)&&await new Promise(o=>{let r=()=>{this.element.removeEventListener("canplay",r),this.element.removeEventListener("canplaythrough",r),o()};this.element.readyState>=3?o():(this.element.addEventListener("canplay",r,{once:!0}),this.element.addEventListener("canplaythrough",r,{once:!0}),setTimeout(()=>{this.element.removeEventListener("canplay",r),this.element.removeEventListener("canplaythrough",r),o()},3e3))});let c=e;if(i&&this.captionManager&&this.captionManager.tracks.length>0){await new Promise(r=>setTimeout(r,500));let o=this.findMatchingCaptionTime(i,this.captionManager.tracks);o!==null&&(c=o,this.options.debug&&console.log("[VidPly] Syncing via caption: ".concat(e,"s -> ").concat(c,"s")))}if(c>0&&(this.seek(c),await new Promise(o=>setTimeout(o,100))),t?(await this.play(),this.hidePosterOverlay()):(this.pause(),!t&&c===0?this.showPosterOverlay():this.hidePosterOverlay()),a.length>0&&this.captionManager){let o=this.state.captionsEnabled,r=null;if(this.captionManager.currentTrack){let u=this.captionManager.tracks.findIndex(p=>p.track===this.captionManager.currentTrack.track);u>=0&&(r={language:this.captionManager.tracks[u].language,kind:this.captionManager.tracks[u].kind})}setTimeout(()=>{if(this.captionManager.tracks=[],this.captionManager.loadTracks(),o&&r&&this.captionManager.tracks.length>0){let u=this.captionManager.tracks.findIndex(p=>p.language===r.language&&p.kind===r.kind);if(u>=0){let p=this.captionManager.tracks[u];if(p.track.readyState>=2)this.captionManager.enable(u);else{let y=()=>{p.track.removeEventListener("load",y),p.track.removeEventListener("error",y),this.captionManager&&this.captionManager.tracks.includes(p)&&this.captionManager.enable(u)};p.track.addEventListener("load",y,{once:!0}),p.track.addEventListener("error",y,{once:!0}),p.track.mode="hidden",setTimeout(()=>{this.captionManager&&this.captionManager.tracks.includes(p)&&this.captionManager.enable(u)},1e3)}}else if(this.captionManager.tracks.length>0){let p=this.captionManager.tracks[0];if(p.track.readyState>=2)this.captionManager.enable(0);else{let y=()=>{p.track.removeEventListener("load",y),p.track.removeEventListener("error",y),this.captionManager&&this.captionManager.tracks.includes(p)&&this.captionManager.enable(0)};p.track.addEventListener("load",y,{once:!0}),p.track.addEventListener("error",y,{once:!0}),p.track.mode="hidden",setTimeout(()=>{this.captionManager&&this.captionManager.tracks.includes(p)&&this.captionManager.enable(0)},1e3)}}}},600)}this.transcriptManager&&this.transcriptManager.isVisible&&this.setManagedTimeout(()=>{this.transcriptManager&&this.transcriptManager.loadTranscriptData&&this.transcriptManager.loadTranscriptData()},500),!this._audioDescriptionDesiredState&&(this.state.audioDescriptionEnabled=!1,this.emit("audiodescriptiondisabled"))}async toggleAudioDescription(){let e=this.findTextTrack("descriptions"),t=this.audioDescriptionSrc||this.sourceElements.some(i=>i.getAttribute("data-desc-src"));if(e&&t)if(this.state.audioDescriptionEnabled)this._audioDescriptionDesiredState=!1,e.mode="hidden",await this.disableAudioDescription();else{this._audioDescriptionDesiredState=!0,await this.enableAudioDescription();let i=()=>{this.invalidateTrackCache();let s=this.findTextTrack("descriptions");s?s.mode==="disabled"?(s.mode="hidden",this.setManagedTimeout(()=>{s.mode="showing"},50)):s.mode="showing":this.element.readyState<2&&this.setManagedTimeout(i,100)};this.element.readyState>=1?this.setManagedTimeout(i,200):this.element.addEventListener("loadedmetadata",()=>{this.setManagedTimeout(i,200)},{once:!0})}else e?e.mode==="showing"?(this._audioDescriptionDesiredState=!1,e.mode="hidden",this.state.audioDescriptionEnabled=!1,this.emit("audiodescriptiondisabled")):(this._audioDescriptionDesiredState=!0,e.mode="showing",this.state.audioDescriptionEnabled=!0,this.emit("audiodescriptionenabled")):t&&(this.state.audioDescriptionEnabled?(this._audioDescriptionDesiredState=!1,await this.disableAudioDescription()):(this._audioDescriptionDesiredState=!0,await this.enableAudioDescription()))}enableSignLanguage(){var d;let e=Object.keys(this.signLanguageSources).length>0,t=!!this.signLanguageSrc;if(!e&&!t){console.warn("No sign language video source provided");return}if(this.signLanguageWrapper){this.signLanguageWrapper.style.display="block",this.state.signLanguageEnabled=!0,this.emit("signlanguageenabled"),this.setManagedTimeout(()=>{this.signLanguageSettingsButton&&document.contains(this.signLanguageSettingsButton)&&this.signLanguageSettingsButton.focus({preventScroll:!0})},150);return}let i=null,s=null;if(e){if(this.captionManager&&this.captionManager.currentTrack){let u=(d=this.captionManager.currentTrack.language)==null?void 0:d.toLowerCase().split("-")[0];u&&this.signLanguageSources[u]&&(i=u,s=this.signLanguageSources[u])}if(!i&&this.options.language){let u=this.options.language.toLowerCase().split("-")[0];this.signLanguageSources[u]&&(i=u,s=this.signLanguageSources[u])}i||(i=Object.keys(this.signLanguageSources)[0],s=this.signLanguageSources[i]),this.currentSignLanguage=i}else s=this.signLanguageSrc;this.signLanguageWrapper=document.createElement("div"),this.signLanguageWrapper.className="vidply-sign-language-wrapper",this.signLanguageWrapper.setAttribute("tabindex","0"),this.signLanguageWrapper.setAttribute("aria-label",g.t("player.signLanguageDragResize")),this.signLanguageHeader=h.createElement("div",{className:"".concat(this.options.classPrefix,"-sign-language-header"),attributes:{tabindex:"0"}});let a=h.createElement("div",{className:"".concat(this.options.classPrefix,"-sign-language-header-left")}),n=h.createElement("h3",{textContent:g.t("player.signLanguageVideo")}),l=g.t("player.signLanguageSettings");if(this.signLanguageSettingsButton=h.createElement("button",{className:"".concat(this.options.classPrefix,"-sign-language-settings"),attributes:{type:"button","aria-label":l,"aria-expanded":"false"}}),this.signLanguageSettingsButton.appendChild(M("settings")),h.attachTooltip(this.signLanguageSettingsButton,l,this.options.classPrefix),this.signLanguageSettingsHandlers={settingsClick:u=>{if(u.preventDefault(),u.stopPropagation(),this.signLanguageDocumentClickHandler){let p=this.signLanguageSettingsMenuJustOpened;this.signLanguageSettingsMenuJustOpened=!0,setTimeout(()=>{this.signLanguageSettingsMenuJustOpened=p},100)}this.signLanguageSettingsMenuVisible?this.hideSignLanguageSettingsMenu():this.showSignLanguageSettingsMenu()},settingsKeydown:u=>{u.key==="d"||u.key==="D"?(u.preventDefault(),u.stopPropagation(),this.toggleSignLanguageKeyboardDragMode()):u.key==="r"||u.key==="R"?(u.preventDefault(),u.stopPropagation(),this.toggleSignLanguageResizeMode()):u.key==="Escape"&&this.signLanguageSettingsMenuVisible&&(u.preventDefault(),u.stopPropagation(),this.hideSignLanguageSettingsMenu())}},this.signLanguageSettingsButton.addEventListener("click",this.signLanguageSettingsHandlers.settingsClick),this.signLanguageSettingsButton.addEventListener("keydown",this.signLanguageSettingsHandlers.settingsKeydown),a.appendChild(this.signLanguageSettingsButton),this.signLanguageSelector=null,e){let u="".concat(this.options.classPrefix,"-sign-language-select-").concat(Date.now()),p=Object.keys(this.signLanguageSources).map(f=>({value:f,text:this.getSignLanguageLabel(f),selected:f===i})),{label:y,select:b}=re({classPrefix:this.options.classPrefix,labelClass:"".concat(this.options.classPrefix,"-sign-language-label"),selectClass:"".concat(this.options.classPrefix,"-sign-language-select"),labelText:"settings.language",selectId:u,options:p,onChange:f=>{f.stopPropagation();let L=f.target.value;this.switchSignLanguage(L)}});this.signLanguageSelector=b;let w=h.createElement("div",{className:"".concat(this.options.classPrefix,"-sign-language-selector-wrapper")});w.appendChild(y),w.appendChild(this.signLanguageSelector),oe(w),a.appendChild(w)}a.appendChild(n);let c=g.t("player.closeSignLanguage"),o=h.createElement("button",{className:"".concat(this.options.classPrefix,"-sign-language-close"),attributes:{type:"button","aria-label":c}});o.appendChild(M("close")),h.attachTooltip(o,c,this.options.classPrefix),o.addEventListener("click",()=>{this.disableSignLanguage(),this.controlBar&&this.controlBar.controls&&this.controlBar.controls.signLanguage&&setTimeout(()=>{this.controlBar.controls.signLanguage.focus({preventScroll:!0})},0)}),this.signLanguageHeader.appendChild(a),this.signLanguageHeader.appendChild(o),this.signLanguageSettingsMenuVisible=!1,this.signLanguageSettingsMenu=null,this.signLanguageSettingsMenuJustOpened=!1,this.signLanguageResizeOptionButton=null,this.signLanguageResizeOptionText=null,this.signLanguageDragOptionButton=null,this.signLanguageDragOptionText=null,this.signLanguageDocumentClickHandler=null,this.signLanguageDocumentClickHandlerAdded=!1,this.signLanguageVideo=document.createElement("video"),this.signLanguageVideo.className="vidply-sign-language-video",this.signLanguageVideo.src=s,this.signLanguageVideo.setAttribute("aria-label",g.t("player.signLanguage")),this.signLanguageVideo.muted=!0,this.signLanguageVideo.setAttribute("playsinline",""),this.signLanguageResizeHandles=["n","s","e","w","ne","nw","se","sw"].map(u=>{let p=h.createElement("div",{className:"".concat(this.options.classPrefix,"-sign-resize-handle ").concat(this.options.classPrefix,"-sign-resize-").concat(u),attributes:{"data-direction":u,"data-vidply-managed-resize":"true","aria-hidden":"true"}});return p.style.display="none",p}),this.signLanguageWrapper.appendChild(this.signLanguageHeader),this.signLanguageWrapper.appendChild(this.signLanguageVideo),this.signLanguageResizeHandles.forEach(u=>this.signLanguageWrapper.appendChild(u));let r=this.storage.getSignLanguagePreferences();r&&r.size&&r.size.width?this.signLanguageWrapper.style.width=r.size.width:this.signLanguageWrapper.style.width="280px",this.signLanguageWrapper.style.height="auto",this.signLanguageDesiredPosition=this.options.signLanguagePosition||"bottom-right",this.container.appendChild(this.signLanguageWrapper),requestAnimationFrame(()=>{this.constrainSignLanguagePosition()}),this.signLanguageVideo.currentTime=this.state.currentTime,this.state.paused||this.signLanguageVideo.play(),this.setupSignLanguageInteraction(),this.signLanguageHandlers={play:()=>{this.signLanguageVideo&&this.signLanguageVideo.play()},pause:()=>{this.signLanguageVideo&&this.signLanguageVideo.pause()},timeupdate:()=>{this.signLanguageVideo&&Math.abs(this.signLanguageVideo.currentTime-this.state.currentTime)>.5&&(this.signLanguageVideo.currentTime=this.state.currentTime)},ratechange:()=>{this.signLanguageVideo&&(this.signLanguageVideo.playbackRate=this.state.playbackSpeed)}},this.on("play",this.signLanguageHandlers.play),this.on("pause",this.signLanguageHandlers.pause),this.on("timeupdate",this.signLanguageHandlers.timeupdate),this.on("ratechange",this.signLanguageHandlers.ratechange),e&&(this.signLanguageHandlers.captionChange=()=>{var u;if(this.captionManager&&this.captionManager.currentTrack&&this.signLanguageSelector){let p=(u=this.captionManager.currentTrack.language)==null?void 0:u.toLowerCase().split("-")[0];p&&this.signLanguageSources[p]&&this.currentSignLanguage!==p&&(this.switchSignLanguage(p),this.signLanguageSelector.value=p)}},this.on("captionsenabled",this.signLanguageHandlers.captionChange)),this.state.signLanguageEnabled=!0,this.emit("signlanguageenabled"),this.setManagedTimeout(()=>{this.signLanguageSettingsButton&&document.contains(this.signLanguageSettingsButton)&&this.signLanguageSettingsButton.focus({preventScroll:!0})},150)}disableSignLanguage(){this.signLanguageSettingsMenuVisible&&this.hideSignLanguageSettingsMenu({focusButton:!1}),this.signLanguageWrapper&&(this.signLanguageWrapper.style.display="none"),this.state.signLanguageEnabled=!1,this.emit("signlanguagedisabled")}toggleSignLanguage(){this.state.signLanguageEnabled?this.disableSignLanguage():this.enableSignLanguage()}setupSignLanguageInteraction(){if(!this.signLanguageWrapper)return;let e=window.innerWidth<768,t=this.state.fullscreen;if(e&&!t){this.signLanguageDraggable&&(this.signLanguageDraggable.destroy(),this.signLanguageDraggable=null);return}this.signLanguageDraggable||(this.signLanguageDraggable=new _(this.signLanguageWrapper,{dragHandle:this.signLanguageHeader,resizeHandles:this.signLanguageResizeHandles,constrainToViewport:!0,maintainAspectRatio:!0,minWidth:150,minHeight:100,classPrefix:"".concat(this.options.classPrefix,"-sign"),keyboardDragKey:"d",keyboardResizeKey:"r",keyboardStep:10,keyboardStepLarge:50,pointerResizeIndicatorText:g.t("player.signLanguageResizeActive"),onPointerResizeToggle:i=>{this.signLanguageResizeHandles.forEach(s=>{s.style.display=i?"block":"none"})},onDragStart:i=>!(i.target.closest(".".concat(this.options.classPrefix,"-sign-language-close"))||i.target.closest(".".concat(this.options.classPrefix,"-sign-language-settings"))||i.target.closest(".".concat(this.options.classPrefix,"-sign-language-select"))||i.target.closest(".".concat(this.options.classPrefix,"-sign-language-label"))||i.target.closest(".".concat(this.options.classPrefix,"-sign-language-settings-menu")))}),this.signLanguageCustomKeyHandler=i=>{let s=i.key.toLowerCase();if(!this.signLanguageSettingsMenuVisible){if(s==="home"){i.preventDefault(),i.stopPropagation(),this.signLanguageDraggable&&(this.signLanguageDraggable.pointerResizeMode&&this.signLanguageDraggable.disablePointerResizeMode(),this.signLanguageDraggable.manuallyPositioned=!1,this.constrainSignLanguagePosition());return}if(s==="r"){i.preventDefault(),i.stopPropagation(),this.toggleSignLanguageResizeMode()&&this.signLanguageWrapper.focus({preventScroll:!0});return}if(s==="escape"){if(i.preventDefault(),i.stopPropagation(),this.signLanguageDraggable&&this.signLanguageDraggable.pointerResizeMode){this.signLanguageDraggable.disablePointerResizeMode();return}if(this.signLanguageDraggable&&this.signLanguageDraggable.keyboardDragMode){this.signLanguageDraggable.disableKeyboardDragMode();return}this.disableSignLanguage(),this.controlBar&&this.controlBar.controls&&this.controlBar.controls.signLanguage&&setTimeout(()=>{this.controlBar.controls.signLanguage.focus({preventScroll:!0})},0);return}}},this.signLanguageWrapper.addEventListener("keydown",this.signLanguageCustomKeyHandler),this.signLanguageInteractionHandlers={draggable:this.signLanguageDraggable,headerKeyHandler:this.signLanguageHeaderKeyHandler,customKeyHandler:this.signLanguageCustomKeyHandler})}toggleSignLanguageKeyboardDragMode(){if(this.signLanguageDraggable){let e=this.signLanguageDraggable.keyboardDragMode;this.signLanguageDraggable.toggleKeyboardDragMode();let t=this.signLanguageDraggable.keyboardDragMode;!e&&t&&this.enableSignLanguageMoveMode(),this.updateSignLanguageDragOptionState()}}enableSignLanguageMoveMode(){this.signLanguageWrapper.classList.add("".concat(this.options.classPrefix,"-sign-move-mode")),this.updateSignLanguageResizeOptionState(),setTimeout(()=>{this.signLanguageWrapper.classList.remove("".concat(this.options.classPrefix,"-sign-move-mode"))},2e3)}toggleSignLanguageResizeMode({focus:e=!0}={}){return this.signLanguageDraggable?this.signLanguageDraggable.pointerResizeMode?(this.signLanguageDraggable.disablePointerResizeMode({focus:e}),this.updateSignLanguageResizeOptionState(),!1):(this.signLanguageDraggable.enablePointerResizeMode({focus:e}),this.updateSignLanguageResizeOptionState(),!0):!1}getSignLanguageLabel(e){return{en:"English",de:"Deutsch",es:"Español",fr:"Français",it:"Italiano",ja:"日本語",pt:"Português",ar:"العربية",hi:"हिन्दी"}[e]||e.toUpperCase()}switchSignLanguage(e){if(!this.signLanguageSources[e]||!this.signLanguageVideo)return;let t=this.signLanguageVideo.currentTime,i=!this.signLanguageVideo.paused;this.signLanguageVideo.src=this.signLanguageSources[e],this.currentSignLanguage=e,this.signLanguageVideo.currentTime=t,i&&this.signLanguageVideo.play().catch(()=>{}),this.emit("signlanguagelanguagechanged",e)}showSignLanguageSettingsMenu(){if(this.signLanguageSettingsMenuJustOpened=!0,setTimeout(()=>{this.signLanguageSettingsMenuJustOpened=!1},350),this.signLanguageDocumentClickHandlerAdded||(this.signLanguageDocumentClickHandler=r=>{this.signLanguageSettingsMenuJustOpened||this.signLanguageSettingsButton&&(this.signLanguageSettingsButton===r.target||this.signLanguageSettingsButton.contains(r.target))||this.signLanguageSettingsMenu&&this.signLanguageSettingsMenu.contains(r.target)||this.signLanguageSettingsMenuVisible&&this.hideSignLanguageSettingsMenu()},setTimeout(()=>{document.addEventListener("mousedown",this.signLanguageDocumentClickHandler,!0),this.signLanguageDocumentClickHandlerAdded=!0},300)),this.signLanguageSettingsMenu){this.signLanguageSettingsMenu.style.display="block",this.signLanguageSettingsMenuVisible=!0,this.signLanguageSettingsButton&&this.signLanguageSettingsButton.setAttribute("aria-expanded","true"),this.signLanguageSettingsMenuKeyHandler=I(this.signLanguageSettingsMenu,this.signLanguageSettingsButton,".".concat(this.options.classPrefix,"-sign-language-settings-item"),()=>this.hideSignLanguageSettingsMenu({focusButton:!0})),this.positionSignLanguageSettingsMenu(),this.updateSignLanguageDragOptionState(),this.updateSignLanguageResizeOptionState(),ge(this.signLanguageSettingsMenu,".".concat(this.options.classPrefix,"-sign-language-settings-item"));return}this.signLanguageSettingsMenu=h.createElement("div",{className:"".concat(this.options.classPrefix,"-sign-language-settings-menu"),attributes:{role:"menu"}});let e=B({classPrefix:this.options.classPrefix,itemClass:"".concat(this.options.classPrefix,"-sign-language-settings-item"),icon:"move",label:"player.enableSignDragMode",hasTextClass:!0,onClick:()=>{this.toggleSignLanguageKeyboardDragMode(),this.hideSignLanguageSettingsMenu()}});e.setAttribute("role","switch"),e.setAttribute("aria-checked","false");let t=e.querySelector(".".concat(this.options.classPrefix,"-tooltip"));t&&t.remove();let i=e.querySelector(".".concat(this.options.classPrefix,"-button-text"));i&&i.remove(),this.signLanguageDragOptionButton=e,this.signLanguageDragOptionText=e.querySelector(".".concat(this.options.classPrefix,"-settings-text")),this.updateSignLanguageDragOptionState();let s=B({classPrefix:this.options.classPrefix,itemClass:"".concat(this.options.classPrefix,"-sign-language-settings-item"),icon:"resize",label:"player.enableSignResizeMode",hasTextClass:!0,onClick:r=>{r.preventDefault(),r.stopPropagation(),this.toggleSignLanguageResizeMode({focus:!1})?(this.hideSignLanguageSettingsMenu({focusButton:!1}),setTimeout(()=>{this.signLanguageWrapper&&this.signLanguageWrapper.focus({preventScroll:!0})},20)):this.hideSignLanguageSettingsMenu({focusButton:!0})}});s.setAttribute("role","switch"),s.setAttribute("aria-checked","false");let a=s.querySelector(".".concat(this.options.classPrefix,"-tooltip"));a&&a.remove();let n=s.querySelector(".".concat(this.options.classPrefix,"-button-text"));n&&n.remove(),this.signLanguageResizeOptionButton=s,this.signLanguageResizeOptionText=s.querySelector(".".concat(this.options.classPrefix,"-settings-text")),this.updateSignLanguageResizeOptionState();let l=B({classPrefix:this.options.classPrefix,itemClass:"".concat(this.options.classPrefix,"-sign-language-settings-item"),icon:"close",label:"transcript.closeMenu",onClick:()=>{this.hideSignLanguageSettingsMenu()}}),c=l.querySelector(".".concat(this.options.classPrefix,"-tooltip"));c&&c.remove();let o=l.querySelector(".".concat(this.options.classPrefix,"-button-text"));o&&o.remove(),this.signLanguageSettingsMenu.appendChild(e),this.signLanguageSettingsMenu.appendChild(s),this.signLanguageSettingsMenu.appendChild(l),this.signLanguageSettingsMenu.style.visibility="hidden",this.signLanguageSettingsMenu.style.display="block",this.signLanguageSettingsButton&&this.signLanguageSettingsButton.parentNode?this.signLanguageSettingsButton.insertAdjacentElement("afterend",this.signLanguageSettingsMenu):this.signLanguageWrapper&&this.signLanguageWrapper.appendChild(this.signLanguageSettingsMenu),this.positionSignLanguageSettingsMenuImmediate(),requestAnimationFrame(()=>{this.signLanguageSettingsMenu&&(this.signLanguageSettingsMenu.style.visibility="visible")}),this.signLanguageSettingsMenuKeyHandler=I(this.signLanguageSettingsMenu,this.signLanguageSettingsButton,".".concat(this.options.classPrefix,"-sign-language-settings-item"),()=>this.hideSignLanguageSettingsMenu({focusButton:!0})),this.signLanguageSettingsMenuVisible=!0,this.signLanguageSettingsButton&&this.signLanguageSettingsButton.setAttribute("aria-expanded","true"),this.updateSignLanguageDragOptionState(),this.updateSignLanguageResizeOptionState(),ge(this.signLanguageSettingsMenu,".".concat(this.options.classPrefix,"-sign-language-settings-item"))}hideSignLanguageSettingsMenu({focusButton:e=!0}={}){this.signLanguageSettingsMenu&&(this.signLanguageSettingsMenu.style.display="none",this.signLanguageSettingsMenuVisible=!1,this.signLanguageSettingsMenuJustOpened=!1,this.signLanguageSettingsMenuKeyHandler&&(this.signLanguageSettingsMenu.removeEventListener("keydown",this.signLanguageSettingsMenuKeyHandler),this.signLanguageSettingsMenuKeyHandler=null),Array.from(this.signLanguageSettingsMenu.querySelectorAll(".".concat(this.options.classPrefix,"-sign-language-settings-item"))).forEach(i=>{i.setAttribute("tabindex","-1")}),this.signLanguageSettingsButton&&(this.signLanguageSettingsButton.setAttribute("aria-expanded","false"),e&&this.signLanguageSettingsButton.focus({preventScroll:!0})))}positionSignLanguageSettingsMenuImmediate(){if(!this.signLanguageSettingsMenu||!this.signLanguageSettingsButton)return;let e=this.signLanguageSettingsButton.getBoundingClientRect(),t=this.signLanguageSettingsMenu.getBoundingClientRect(),i=window.innerWidth,s=window.innerHeight,a=this.signLanguageSettingsButton.parentElement;if(!a)return;let n=a.getBoundingClientRect(),l=e.left+e.width/2-n.left,c=e.bottom-n.top,o=e.top-n.top,r=e.top,d=s-e.bottom,u=c+8,p=null;d<t.height+20&&r>d?(u=null,p=n.bottom-n.top-o+8,this.signLanguageSettingsMenu.classList.add("vidply-menu-above")):this.signLanguageSettingsMenu.classList.remove("vidply-menu-above");let y=l-t.width/2,b="auto",w="translateX(0)",f=e.left+e.width/2-t.width/2;f<10?(y=0,w="translateX(0)"):f+t.width>i-10?(y="auto",b=0,w="translateX(0)"):(y=l,w="translateX(-50%)"),u!==null?(this.signLanguageSettingsMenu.style.top="".concat(u,"px"),this.signLanguageSettingsMenu.style.bottom="auto"):p!==null&&(this.signLanguageSettingsMenu.style.top="auto",this.signLanguageSettingsMenu.style.bottom="".concat(p,"px")),y!=="auto"?(this.signLanguageSettingsMenu.style.left="".concat(y,"px"),this.signLanguageSettingsMenu.style.right="auto"):(this.signLanguageSettingsMenu.style.left="auto",this.signLanguageSettingsMenu.style.right="".concat(b,"px")),this.signLanguageSettingsMenu.style.transform=w}positionSignLanguageSettingsMenu(){!this.signLanguageSettingsMenu||!this.signLanguageSettingsButton||!this.signLanguageWrapper||requestAnimationFrame(()=>{setTimeout(()=>{this.positionSignLanguageSettingsMenuImmediate()},10)})}attachSignLanguageSettingsMenuKeyboardNavigation(){this.signLanguageSettingsMenu&&(this.signLanguageSettingsMenuKeyHandler&&this.signLanguageSettingsMenu.removeEventListener("keydown",this.signLanguageSettingsMenuKeyHandler),this.signLanguageSettingsMenuKeyHandler=I(this.signLanguageSettingsMenu,this.signLanguageSettingsButton,".".concat(this.options.classPrefix,"-sign-language-settings-item"),()=>this.hideSignLanguageSettingsMenu({focusButton:!0})))}updateSignLanguageDragOptionState(){if(!this.signLanguageDragOptionButton)return;let e=!!(this.signLanguageDraggable&&this.signLanguageDraggable.keyboardDragMode),t=e?g.t("player.disableSignDragMode"):g.t("player.enableSignDragMode"),i=e?g.t("player.disableSignDragModeAria"):g.t("player.enableSignDragModeAria");this.signLanguageDragOptionButton.setAttribute("aria-checked",e?"true":"false"),this.signLanguageDragOptionButton.setAttribute("aria-label",i),this.signLanguageDragOptionText&&(this.signLanguageDragOptionText.textContent=t)}updateSignLanguageResizeOptionState(){if(!this.signLanguageResizeOptionButton)return;let e=!!(this.signLanguageDraggable&&this.signLanguageDraggable.pointerResizeMode),t=e?g.t("player.disableSignResizeMode"):g.t("player.enableSignResizeMode"),i=e?g.t("player.disableSignResizeModeAria"):g.t("player.enableSignResizeModeAria");this.signLanguageResizeOptionButton.setAttribute("aria-checked",e?"true":"false"),this.signLanguageResizeOptionButton.setAttribute("aria-label",i),this.signLanguageResizeOptionText&&(this.signLanguageResizeOptionText.textContent=t)}constrainSignLanguagePosition(){if(!this.signLanguageWrapper||!this.videoWrapper||this.signLanguageDraggable&&this.signLanguageDraggable.manuallyPositioned)return;(!this.signLanguageWrapper.style.width||this.signLanguageWrapper.style.width==="")&&(this.signLanguageWrapper.style.width="280px");let e=this.videoWrapper.getBoundingClientRect(),t=this.container.getBoundingClientRect(),i=this.signLanguageWrapper.getBoundingClientRect(),s=e.left-t.left,a=e.top-t.top,n=e.width,l=e.height,c=i.width||280,o=i.height||280*9/16,r,d,u=16,p=95;switch(this.signLanguageDesiredPosition||"bottom-right"){case"bottom-right":r=s+n-c-u,d=a+l-o-p;break;case"bottom-left":r=s+u,d=a+l-o-p;break;case"top-right":r=s+n-c-u,d=a+u;break;case"top-left":r=s+u,d=a+u;break;default:r=s+n-c-u,d=a+l-o-p}r=Math.max(s,Math.min(r,s+n-c)),d=Math.max(a,Math.min(d,a+l-o-p)),this.signLanguageWrapper.style.left="".concat(r,"px"),this.signLanguageWrapper.style.top="".concat(d,"px"),this.signLanguageWrapper.style.right="auto",this.signLanguageWrapper.style.bottom="auto",this.signLanguageWrapper.classList.remove(...Array.from(this.signLanguageWrapper.classList).filter(b=>b.startsWith("vidply-sign-position-")))}saveSignLanguagePreferences(){this.signLanguageWrapper&&this.storage.saveSignLanguagePreferences({size:{width:this.signLanguageWrapper.style.width}})}cleanupSignLanguage(){this.signLanguageSettingsMenuVisible&&this.hideSignLanguageSettingsMenu({focusButton:!1}),this.signLanguageDocumentClickHandler&&this.signLanguageDocumentClickHandlerAdded&&(document.removeEventListener("mousedown",this.signLanguageDocumentClickHandler,!0),this.signLanguageDocumentClickHandlerAdded=!1,this.signLanguageDocumentClickHandler=null),this.signLanguageSettingsHandlers&&(this.signLanguageSettingsButton&&(this.signLanguageSettingsButton.removeEventListener("click",this.signLanguageSettingsHandlers.settingsClick),this.signLanguageSettingsButton.removeEventListener("keydown",this.signLanguageSettingsHandlers.settingsKeydown)),this.signLanguageSettingsHandlers=null),this.signLanguageHandlers&&(this.off("play",this.signLanguageHandlers.play),this.off("pause",this.signLanguageHandlers.pause),this.off("timeupdate",this.signLanguageHandlers.timeupdate),this.off("ratechange",this.signLanguageHandlers.ratechange),this.signLanguageHandlers.captionChange&&this.off("captionsenabled",this.signLanguageHandlers.captionChange),this.signLanguageHandlers=null),this.signLanguageInteractionHandlers&&(this.signLanguageHeader&&this.signLanguageInteractionHandlers.headerKeyHandler&&this.signLanguageHeader.removeEventListener("keydown",this.signLanguageInteractionHandlers.headerKeyHandler),this.signLanguageWrapper&&this.signLanguageInteractionHandlers.customKeyHandler&&this.signLanguageWrapper.removeEventListener("keydown",this.signLanguageInteractionHandlers.customKeyHandler)),this.signLanguageDraggable&&(this.signLanguageDraggable.pointerResizeMode&&this.signLanguageDraggable.disablePointerResizeMode(),this.signLanguageDraggable.destroy(),this.signLanguageDraggable=null),this.signLanguageInteractionHandlers=null,this.signLanguageWrapper&&this.signLanguageWrapper.parentNode&&(this.signLanguageVideo&&(this.signLanguageVideo.pause(),this.signLanguageVideo.src=""),this.signLanguageWrapper.parentNode.removeChild(this.signLanguageWrapper)),this.signLanguageWrapper=null,this.signLanguageVideo=null,this.signLanguageSettingsButton=null,this.signLanguageSettingsMenu=null}showSettings(){console.warn("[VidPly] Settings dialog has been removed. Use individual control buttons (speed, captions, etc.)")}hideSettings(){}getCurrentTime(){return this.state.currentTime}getDuration(){return this.state.duration}isPlaying(){return this.state.playing}isPaused(){return this.state.paused}isEnded(){return this.state.ended}isMuted(){return this.state.muted}isFullscreen(){return this.state.fullscreen}handleError(e){if(this._switchingRenderer){this.log("Suppressing error during renderer switch:",e,"debug");return}this.log("Error:",e,"error"),this.emit("error",e),this.options.onError&&this.options.onError.call(this,e)}log(...e){if(!this.options.debug)return;let t="log";if(e.length>0){let i=e[e.length-1];typeof i=="string"&&console[i]&&(t=i,e=e.slice(0,-1))}e.length===0&&(e=[""]),typeof console[t]=="function"?console[t]("[VidPly]",...e):console.log("[VidPly]",...e)}setupResponsiveHandlers(){if(typeof ResizeObserver!="undefined"?(this.resizeObserver=new ResizeObserver(e=>{for(let t of e){let i=t.contentRect.width;this.controlBar&&typeof this.controlBar.updateControlsForViewport=="function"&&this.controlBar.updateControlsForViewport(i),this.transcriptManager&&this.transcriptManager.isVisible&&this.transcriptManager.positionTranscript()}}),this.resizeObserver.observe(this.container)):(this.resizeHandler=()=>{let e=this.container.clientWidth;this.controlBar&&typeof this.controlBar.updateControlsForViewport=="function"&&this.controlBar.updateControlsForViewport(e),this.transcriptManager&&this.transcriptManager.isVisible&&(!this.transcriptManager.draggableResizable||!this.transcriptManager.draggableResizable.manuallyPositioned)&&this.transcriptManager.positionTranscript()},window.addEventListener("resize",this.resizeHandler)),window.matchMedia){this.orientationHandler=t=>{setTimeout(()=>{this.transcriptManager&&this.transcriptManager.isVisible&&(!this.transcriptManager.draggableResizable||!this.transcriptManager.draggableResizable.manuallyPositioned)&&this.transcriptManager.positionTranscript()},100)};let e=window.matchMedia("(orientation: portrait)");e.addEventListener?e.addEventListener("change",this.orientationHandler):e.addListener&&e.addListener(this.orientationHandler),this.orientationQuery=e}this.fullscreenChangeHandler=()=>{let e=!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement);this.state.fullscreen!==e&&(this.state.fullscreen=e,e?this.container.classList.add("".concat(this.options.classPrefix,"-fullscreen")):(this.container.classList.remove("".concat(this.options.classPrefix,"-fullscreen")),this._disablePseudoFullscreen()),this.emit("fullscreenchange",e),this.controlBar&&this.controlBar.updateFullscreenButton(),this.signLanguageWrapper&&this.signLanguageWrapper.style.display!=="none"&&(window.innerWidth<768&&this.setupSignLanguageInteraction(),this.setManagedTimeout(()=>{requestAnimationFrame(()=>{this.storage.saveSignLanguagePreferences({size:null}),this.signLanguageDesiredPosition="bottom-right",this.signLanguageWrapper.style.width=e?"400px":"280px",this.constrainSignLanguagePosition()})},500)))},document.addEventListener("fullscreenchange",this.fullscreenChangeHandler),document.addEventListener("webkitfullscreenchange",this.fullscreenChangeHandler),document.addEventListener("mozfullscreenchange",this.fullscreenChangeHandler),document.addEventListener("MSFullscreenChange",this.fullscreenChangeHandler)}destroy(){if(this.log("Destroying player"),this.renderer&&this.renderer.destroy(),this.controlBar&&this.controlBar.destroy(),this.captionManager&&this.captionManager.destroy(),this.keyboardManager&&this.keyboardManager.destroy(),this.transcriptManager&&this.transcriptManager.destroy(),this.cleanupSignLanguage(),this.playButtonOverlay&&this.playButtonOverlay.parentNode&&(this.playButtonOverlay.remove(),this.playButtonOverlay=null),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),this.resizeHandler&&(window.removeEventListener("resize",this.resizeHandler),this.resizeHandler=null),this.orientationQuery&&this.orientationHandler&&(this.orientationQuery.removeEventListener?this.orientationQuery.removeEventListener("change",this.orientationHandler):this.orientationQuery.removeListener&&this.orientationQuery.removeListener(this.orientationHandler),this.orientationQuery=null,this.orientationHandler=null),this.fullscreenChangeHandler&&(document.removeEventListener("fullscreenchange",this.fullscreenChangeHandler),document.removeEventListener("webkitfullscreenchange",this.fullscreenChangeHandler),document.removeEventListener("mozfullscreenchange",this.fullscreenChangeHandler),document.removeEventListener("MSFullscreenChange",this.fullscreenChangeHandler),this.fullscreenChangeHandler=null),this.timeouts.forEach(e=>clearTimeout(e)),this.timeouts.clear(),this.metadataCueChangeHandler){let t=this.textTracks.find(i=>i.kind==="metadata");t&&t.removeEventListener("cuechange",this.metadataCueChangeHandler),this.metadataCueChangeHandler=null}this.metadataAlertHandlers&&this.metadataAlertHandlers.size>0&&(this.metadataAlertHandlers.forEach(({button:e,handler:t})=>{e&&t&&e.removeEventListener("click",t)}),this.metadataAlertHandlers.clear()),this.container&&this.container.parentNode&&(this.container.parentNode.insertBefore(this.element,this.container),this.container.parentNode.removeChild(this.container)),this.removeAllListeners()}setupMetadataHandling(){let e=()=>{let i=this.textTracks.find(s=>s.kind==="metadata");if(i){if(i.mode==="disabled"&&(i.mode="hidden"),this.metadataCueChangeHandler&&i.removeEventListener("cuechange",this.metadataCueChangeHandler),this.metadataCueChangeHandler=()=>{let s=Array.from(i.activeCues||[]);s.length>0&&this.options.debug&&this.log("[Metadata] Active cues:",s.map(a=>({start:a.startTime,end:a.endTime,text:a.text}))),s.forEach(a=>{this.handleMetadataCue(a)})},i.addEventListener("cuechange",this.metadataCueChangeHandler),this.options.debug){let s=i.cues?i.cues.length:0;this.log("[Metadata] Track enabled,",s,"cues available")}}else this.options.debug&&this.log("[Metadata] No metadata track found")};e(),this.on("loadedmetadata",e)}normalizeMetadataSelector(e){if(!e)return null;let t=e.trim();return t?t.startsWith("#")||t.startsWith(".")||t.startsWith("[")?t:"#".concat(t):null}resolveMetadataConfig(e,t){if(!e||!t)return null;if(Object.prototype.hasOwnProperty.call(e,t))return e[t];let i=t.replace(/^#/,"");return Object.prototype.hasOwnProperty.call(e,i)?e[i]:null}cacheMetadataAlertContent(e,t={}){if(!e)return;let i=t.titleSelector||"[data-vidply-alert-title], h3, header",s=t.messageSelector||"[data-vidply-alert-message], p",a=e.querySelector(i);a&&!a.dataset.vidplyAlertTitleOriginal&&(a.dataset.vidplyAlertTitleOriginal=a.textContent.trim());let n=e.querySelector(s);n&&!n.dataset.vidplyAlertMessageOriginal&&(n.dataset.vidplyAlertMessageOriginal=n.textContent.trim())}restoreMetadataAlertContent(e,t={}){if(!e)return;let i=t.titleSelector||"[data-vidply-alert-title], h3, header",s=t.messageSelector||"[data-vidply-alert-message], p",a=e.querySelector(i);a&&a.dataset.vidplyAlertTitleOriginal&&(a.textContent=a.dataset.vidplyAlertTitleOriginal);let n=e.querySelector(s);n&&n.dataset.vidplyAlertMessageOriginal&&(n.textContent=n.dataset.vidplyAlertMessageOriginal)}focusMetadataTarget(e,t=null){var i,s;if(!(!e||e==="none")){if(e==="alert"&&t){t.focus({preventScroll:!0});return}if(e==="player"){this.container&&this.container.focus({preventScroll:!0});return}if(e==="media"){this.element.focus({preventScroll:!0});return}if(e==="playButton"){let a=(s=(i=this.controlBar)==null?void 0:i.controls)==null?void 0:s.playPause;a&&a.focus({preventScroll:!0});return}if(typeof e=="string"){let a=document.querySelector(e);a&&(a.tabIndex===-1&&!a.hasAttribute("tabindex")&&a.setAttribute("tabindex","-1"),a.focus({preventScroll:!0}))}}}handleMetadataAlert(e,t={}){var o;if(!e)return;let i=this.resolveMetadataConfig(this.options.metadataAlerts,e)||{},s=t.element||document.querySelector(e);if(!s){this.options.debug&&this.log("[Metadata] Alert element not found:",e);return}this.options.debug&&this.log("[Metadata] Handling alert",e,{reason:t.reason,config:i}),this.cacheMetadataAlertContent(s,i),s.dataset.vidplyAlertOriginalDisplay||(s.dataset.vidplyAlertOriginalDisplay=s.style.display||""),s.dataset.vidplyAlertDisplay||(s.dataset.vidplyAlertDisplay=i.display||"block");let a=t.show!==void 0?t.show:i.show!==!1;if(a){let r=i.display||s.dataset.vidplyAlertDisplay||"block";s.style.display=r,s.hidden=!1,s.removeAttribute("hidden"),s.setAttribute("aria-hidden","false"),s.setAttribute("data-vidply-alert-active","true")}i.resetContent!==!1&&t.reason==="focus"&&this.restoreMetadataAlertContent(s,i);let l=t.focus!==void 0?t.focus:(o=i.focusOnShow)!=null?o:t.reason!=="focus";a&&l&&(s.tabIndex===-1&&!s.hasAttribute("tabindex")&&s.setAttribute("tabindex","-1"),s.focus({preventScroll:!0})),a&&i.autoScroll!==!1&&t.autoScroll!==!1&&s.scrollIntoView({behavior:"smooth",block:"nearest"});let c=i.continueButton;if(c){let r=null;if(c==="self"||s.matches(c)?r=s:r=s.querySelector(c)||document.querySelector(c),r&&!this.metadataAlertHandlers.has(e)){let d=()=>{var y;if(i.hideOnContinue!==!1){let b=s.dataset.vidplyAlertOriginalDisplay||"";s.style.display=i.hideDisplay||b||"none",s.setAttribute("aria-hidden","true"),s.removeAttribute("data-vidply-alert-active")}i.resume!==!1&&this.state.paused&&this.play();let p=i.focusTarget||"playButton";this.setManagedTimeout(()=>{this.focusMetadataTarget(p,s)},(y=i.focusDelay)!=null?y:100)};r.addEventListener("click",d),this.metadataAlertHandlers.set(e,{button:r,handler:d})}}return s}handleMetadataHashtags(e){if(!Array.isArray(e)||e.length===0)return;let t=this.options.metadataHashtags;t&&e.forEach(i=>{let s=this.resolveMetadataConfig(t,i);if(!s)return;let a=this.normalizeMetadataSelector(s.alert||s.selector||s.target);if(!a)return;let n=document.querySelector(a);if(!n){this.options.debug&&this.log("[Metadata] Hashtag target not found:",a);return}if(this.options.debug&&this.log("[Metadata] Handling hashtag",i,{selector:a,config:s}),this.cacheMetadataAlertContent(n,s),s.title){let o=s.titleSelector||"[data-vidply-alert-title], h3, header",r=n.querySelector(o);r&&(r.textContent=s.title)}if(s.message){let o=s.messageSelector||"[data-vidply-alert-message], p",r=n.querySelector(o);r&&(r.textContent=s.message)}let l=s.show!==!1,c=s.focus!==void 0?s.focus:!1;this.handleMetadataAlert(a,{element:n,show:l,focus:c,autoScroll:s.autoScroll,reason:"hashtag"})})}handleMetadataCue(e){let t=e.text.trim();this.options.debug&&this.log("[Metadata] Processing cue:",{time:e.startTime,text:t}),this.emit("metadata",{time:e.startTime,endTime:e.endTime,text:t,cue:e}),t.includes("PAUSE")&&(this.state.paused||(this.options.debug&&this.log("[Metadata] Pausing video at",e.startTime),this.pause()),this.emit("metadata:pause",{time:e.startTime,text:t}));let i=t.match(/FOCUS:([\w#-]+)/);if(i){let a=i[1],n=this.normalizeMetadataSelector(a),l=n?document.querySelector(n):null;l?(this.options.debug&&this.log("[Metadata] Focusing element:",n),l.tabIndex===-1&&!l.hasAttribute("tabindex")&&l.setAttribute("tabindex","-1"),this.setManagedTimeout(()=>{l.focus({preventScroll:!0})},10)):this.options.debug&&this.log("[Metadata] Element not found:",n||a),this.emit("metadata:focus",{time:e.startTime,target:a,selector:n,element:l,text:t}),n&&this.handleMetadataAlert(n,{element:l,reason:"focus"})}let s=t.match(/#[\w-]+/g);s&&(this.options.debug&&this.log("[Metadata] Hashtags found:",s),this.emit("metadata:hashtags",{time:e.startTime,hashtags:s,text:t}),this.handleMetadataHashtags(s))}};j.instances=[];W();U();O();Z();var ut=0,Se=class{constructor(e,t={}){this.player=e,this.tracks=[],this.initialTracks=Array.isArray(t.tracks)?t.tracks:[],this.currentIndex=-1,this.instanceId=++ut,this.uniqueId="vidply-playlist-".concat(this.instanceId),this.options=$({autoAdvance:t.autoAdvance!==!1,autoPlayFirst:t.autoPlayFirst!==!1,loop:t.loop||!1,showPanel:t.showPanel!==!1,recreatePlayers:t.recreatePlayers||!1},t),this.container=null,this.playlistPanel=null,this.trackInfoElement=null,this.navigationFeedback=null,this.isPanelVisible=this.options.showPanel!==!1,this.isChangingTrack=!1,this.hostElement=t.hostElement||null,this.PlayerClass=t.PlayerClass||null,this.handleTrackEnd=this.handleTrackEnd.bind(this),this.handleTrackError=this.handleTrackError.bind(this),this.player.playlistManager=this,this.init(),this.updatePlayerControls(),this.initialTracks.length>0&&this.loadPlaylist(this.initialTracks)}getTrackMediaType(e){let t=e.src||"";return t.includes("youtube.com")||t.includes("youtu.be")?"youtube":t.includes("vimeo.com")?"vimeo":t.includes("soundcloud.com")||t.includes("api.soundcloud.com")?"soundcloud":t.includes(".m3u8")?"hls":e.type&&e.type.startsWith("audio/")?"audio":"video"}async recreatePlayerForTrack(e,t=!1){if(!this.hostElement||!this.PlayerClass)return console.warn("VidPly Playlist: Cannot recreate player - missing hostElement or PlayerClass"),!1;let i=this.getTrackMediaType(e),s=i==="audio"?"audio":"video",a=this.isPanelVisible,n=[...this.tracks],l=this.currentIndex;this.trackArtworkElement&&this.trackArtworkElement.parentNode&&this.trackArtworkElement.parentNode.removeChild(this.trackArtworkElement),this.trackInfoElement&&this.trackInfoElement.parentNode&&this.trackInfoElement.parentNode.removeChild(this.trackInfoElement),this.navigationFeedback&&this.navigationFeedback.parentNode&&this.navigationFeedback.parentNode.removeChild(this.navigationFeedback),this.playlistPanel&&this.playlistPanel.parentNode&&this.playlistPanel.parentNode.removeChild(this.playlistPanel),this.player&&(this.player.off("ended",this.handleTrackEnd),this.player.off("error",this.handleTrackError),this.player.destroy()),this.hostElement.innerHTML="";let c=document.createElement(s);c.setAttribute("preload","metadata"),s==="video"&&e.poster&&(i==="video"||i==="hls")&&c.setAttribute("poster",e.poster);let o=["youtube","vimeo","soundcloud","hls"].includes(i);if(!o){let d=document.createElement("source");d.src=e.src,e.type&&(d.type=e.type),c.appendChild(d),e.tracks&&e.tracks.length>0&&e.tracks.forEach(u=>{let p=document.createElement("track");p.src=u.src,p.kind=u.kind||"captions",p.srclang=u.srclang||"en",p.label=u.label||u.srclang,u.default&&(p.default=!0),c.appendChild(p)})}this.hostElement.appendChild(c);let r={mediaType:s,poster:e.poster,audioDescriptionSrc:e.audioDescriptionSrc||null,audioDescriptionDuration:e.audioDescriptionDuration||null,signLanguageSrc:e.signLanguageSrc||null};if(this.player=new this.PlayerClass(c,r),this.player.playlistManager=this,await new Promise(d=>{this.player.on("ready",d)}),this.player.on("ended",this.handleTrackEnd),this.player.on("error",this.handleTrackError),this.player.container){if(this.trackArtworkElement){let d=this.player.container.querySelector(".vidply-video-wrapper");d?this.player.container.insertBefore(this.trackArtworkElement,d):this.player.container.appendChild(this.trackArtworkElement)}this.trackInfoElement&&this.player.container.appendChild(this.trackInfoElement),this.navigationFeedback&&this.player.container.appendChild(this.navigationFeedback),this.playlistPanel&&this.player.container.appendChild(this.playlistPanel)}return this.container=this.player.container,this.updatePlayerControls(),this.tracks=n,this.currentIndex=l,this.updatePlaylistUI(),this.isPanelVisible=a,this.playlistPanel&&(this.playlistPanel.style.display=a?"":"none"),o?this.player.load({src:e.src,type:e.type,poster:e.poster,tracks:e.tracks||[],audioDescriptionSrc:e.audioDescriptionSrc||null,signLanguageSrc:e.signLanguageSrc||null}):this.player.load({src:e.src,type:e.type,poster:e.poster,tracks:e.tracks||[],audioDescriptionSrc:e.audioDescriptionSrc||null,signLanguageSrc:e.signLanguageSrc||null}),t&&setTimeout(()=>{this.player.play()},100),!0}init(){this.player.on("ended",this.handleTrackEnd),this.player.on("error",this.handleTrackError),this.player.on("play",this.handlePlaybackStateChange.bind(this)),this.player.on("pause",this.handlePlaybackStateChange.bind(this)),this.player.on("ended",this.handlePlaybackStateChange.bind(this)),this.player.on("fullscreenchange",this.handleFullscreenChange.bind(this)),this.player.on("audiodescriptionenabled",this.handleAudioDescriptionChange.bind(this)),this.player.on("audiodescriptiondisabled",this.handleAudioDescriptionChange.bind(this)),this.options.showPanel&&this.createUI(),this.tracks.length===0&&this.initialTracks.length===0&&this.loadPlaylistFromAttribute()}loadPlaylistFromAttribute(){if(!this.player.element||!this.player.element.parentElement){console.log("VidPly Playlist: No player element found");return}let t=this.player.element.parentElement.parentElement,i=t?t.parentElement:null;if(!i){console.log("VidPly Playlist: No original element found");return}this.loadOptionsFromAttributes(i);let s=i.getAttribute("data-playlist");if(!s){console.log("VidPly Playlist: No data-playlist attribute found");return}console.log("VidPly Playlist: Found data-playlist attribute, parsing...");try{let a=JSON.parse(s);Array.isArray(a)&&a.length>0?(console.log("VidPly Playlist: Loaded ".concat(a.length," tracks from data-playlist")),this.loadPlaylist(a)):console.warn("VidPly Playlist: data-playlist is not a valid array or is empty")}catch(a){console.error("VidPly Playlist: Failed to parse data-playlist attribute",a)}}loadOptionsFromAttributes(e){let t=e.getAttribute("data-playlist-auto-advance");t!==null&&(this.options.autoAdvance=t==="true");let i=e.getAttribute("data-playlist-auto-play-first");i!==null&&(this.options.autoPlayFirst=i==="true");let s=e.getAttribute("data-playlist-loop");s!==null&&(this.options.loop=s==="true");let a=e.getAttribute("data-playlist-show-panel");a!==null&&(this.options.showPanel=a==="true"),console.log("VidPly Playlist: Options from attributes:",this.options)}updatePlayerControls(){if(!this.player.controlBar)return;let e=this.player.controlBar;e.element.innerHTML="",e.createControls(),e.attachEvents(),e.setupAutoHide()}loadPlaylist(e){this.tracks=e,this.currentIndex=-1,this.container&&this.container.classList.add("vidply-has-playlist"),this.playlistPanel&&this.renderPlaylist(),e.length>0&&(this.options.autoPlayFirst?this.play(0):this.loadTrack(0)),this.updatePlaylistVisibilityInFullscreen()}async loadTrack(e){if(e<0||e>=this.tracks.length){console.warn("VidPly Playlist: Invalid track index",e);return}let t=this.tracks[e];if(this.isChangingTrack=!0,this.currentIndex=e,this.options.recreatePlayers&&this.hostElement&&this.PlayerClass){let i=this.player?this.player.element.tagName==="AUDIO"?"audio":"video":null,s=this.getTrackMediaType(t);if(i!==(s==="audio"||s==="soundcloud"?"audio":"video")){await this.recreatePlayerForTrack(t,!1),this.updateTrackInfo(t),this.updatePlaylistUI(),this.player.emit("playlisttrackchange",{index:e,item:t,total:this.tracks.length}),setTimeout(()=>{this.isChangingTrack=!1},150);return}}this.player.load({src:t.src,type:t.type,poster:t.poster,tracks:t.tracks||[],audioDescriptionSrc:t.audioDescriptionSrc||null,signLanguageSrc:t.signLanguageSrc||null}),this.updateTrackInfo(t),this.updatePlaylistUI(),this.player.emit("playlisttrackchange",{index:e,item:t,total:this.tracks.length}),setTimeout(()=>{this.isChangingTrack=!1},150)}async play(e,t=!1){if(e<0||e>=this.tracks.length){console.warn("VidPly Playlist: Invalid track index",e);return}let i=this.tracks[e];if(this.isChangingTrack=!0,this.currentIndex=e,this.options.recreatePlayers&&this.hostElement&&this.PlayerClass){let s=this.player?this.player.element.tagName==="AUDIO"?"audio":"video":null,a=this.getTrackMediaType(i);if(s!==(a==="audio"||a==="soundcloud"?"audio":"video")){await this.recreatePlayerForTrack(i,!0),this.updateTrackInfo(i),this.updatePlaylistUI(),this.player.emit("playlisttrackchange",{index:e,item:i,total:this.tracks.length}),setTimeout(()=>{this.isChangingTrack=!1},150);return}}this.player.load({src:i.src,type:i.type,poster:i.poster,tracks:i.tracks||[],audioDescriptionSrc:i.audioDescriptionSrc||null,signLanguageSrc:i.signLanguageSrc||null}),this.updateTrackInfo(i),this.updatePlaylistUI(),this.player.emit("playlisttrackchange",{index:e,item:i,total:this.tracks.length}),setTimeout(()=>{this.player.play(),setTimeout(()=>{this.isChangingTrack=!1},50)},100)}next(){let e=this.currentIndex+1;if(e>=this.tracks.length)if(this.options.loop)e=0;else return;this.play(e)}previous(){let e=this.currentIndex-1;if(e<0)if(this.options.loop)e=this.tracks.length-1;else return;this.play(e)}handleTrackEnd(){this.isChangingTrack||this.options.autoAdvance&&this.next()}isExternalRendererUrl(e){return e?e.includes("youtube.com")||e.includes("youtu.be")||e.includes("vimeo.com")||e.includes("soundcloud.com")||e.includes("api.soundcloud.com")||e.includes(".m3u8"):!1}handleTrackError(e){let t=this.getCurrentTrack();t&&t.src&&this.isExternalRendererUrl(t.src)||this.isChangingTrack||(console.error("VidPly Playlist: Track error",e),this.options.autoAdvance&&setTimeout(()=>{this.next()},1e3))}handlePlaybackStateChange(){this.updatePlaylistVisibilityInFullscreen()}handleFullscreenChange(){setTimeout(()=>{this.updatePlaylistVisibilityInFullscreen()},50)}handleAudioDescriptionChange(){let e=this.getCurrentTrack();e&&(this.updateTrackInfo(e),this.updatePlaylistUI(),this.updatePlaylistDurations())}updatePlaylistDurations(){if(!this.playlistPanel)return;this.playlistPanel.querySelectorAll(".vidply-playlist-item").forEach((t,i)=>{let s=this.tracks[i];if(!s)return;let a=this.getEffectiveDuration(s),n=a?C.formatTime(a):"",l=t.querySelector(".vidply-playlist-duration-badge");l&&(l.textContent=n);let c=t.querySelector(".vidply-playlist-item-duration");c&&(c.textContent=n)})}getEffectiveDuration(e){return e?this.player.state.audioDescriptionEnabled&&e.audioDescriptionDuration?e.audioDescriptionDuration:e.duration||null:null}updatePlaylistVisibilityInFullscreen(){if(!this.playlistPanel||!this.tracks.length)return;let e=this.player.state.fullscreen,t=this.player.state.playing;e?t?(this.playlistPanel.classList.remove("vidply-playlist-fullscreen-visible"),setTimeout(()=>{this.player.state.playing&&this.player.state.fullscreen&&(this.playlistPanel.style.display="none")},300)):(this.playlistPanel.classList.add("vidply-playlist-fullscreen-visible"),this.playlistPanel.style.display="block"):(this.playlistPanel.classList.remove("vidply-playlist-fullscreen-visible"),this.isPanelVisible&&this.tracks.length>0?this.playlistPanel.style.display="block":this.playlistPanel.style.display="none")}createUI(){if(this.container=this.player.container,!this.container){console.warn("VidPly Playlist: No container found");return}if(this.player.element.tagName==="AUDIO"){this.trackArtworkElement=h.createElement("div",{className:"vidply-track-artwork",attributes:{"aria-hidden":"true"}}),this.trackArtworkElement.style.display="none";let e=this.container.querySelector(".vidply-video-wrapper");e?this.container.insertBefore(this.trackArtworkElement,e):this.container.appendChild(this.trackArtworkElement)}this.trackInfoElement=h.createElement("div",{className:"vidply-track-info",attributes:{role:"status"}}),this.trackInfoElement.style.display="none",this.container.appendChild(this.trackInfoElement),this.navigationFeedback=h.createElement("div",{className:"vidply-sr-only",attributes:{role:"status","aria-live":"polite","aria-atomic":"true"}}),this.container.appendChild(this.navigationFeedback),this.playlistPanel=h.createElement("div",{className:"vidply-playlist-panel",attributes:{id:"".concat(this.uniqueId,"-panel"),role:"region","aria-label":g.t("playlist.title"),"aria-labelledby":"".concat(this.uniqueId,"-heading")}}),this.playlistPanel.style.display=(this.isPanelVisible,"none"),this.container.appendChild(this.playlistPanel)}updateTrackInfo(e){if(!this.trackInfoElement)return;let t=this.currentIndex+1,i=this.tracks.length,s=e.title||g.t("playlist.untitled"),a=e.artist||"",n=this.getEffectiveDuration(e),l=n?C.formatTime(n):"",c=n?C.formatDuration(n):"",o=a?g.t("playlist.by")+a:"",r=c?". ".concat(c):"",d=g.t("playlist.nowPlaying",{current:t,total:i,title:s,artist:o})+r,u=g.t("playlist.trackOf",{current:t,total:i}),p=l?'<span class="vidply-track-duration" aria-hidden="true">'.concat(h.escapeHTML(l),"</span>"):"",y=e.description||"";this.trackInfoElement.innerHTML='\n <span class="vidply-sr-only">'.concat(h.escapeHTML(d),'</span>\n <div class="vidply-track-header" aria-hidden="true">\n <span class="vidply-track-number">').concat(h.escapeHTML(u),"</span>\n ").concat(p,'\n </div>\n <div class="vidply-track-title" aria-hidden="true">').concat(h.escapeHTML(s),"</div>\n ").concat(a?'<div class="vidply-track-artist" aria-hidden="true">'.concat(h.escapeHTML(a),"</div>"):"","\n ").concat(y?'<div class="vidply-track-description" aria-hidden="true">'.concat(h.escapeHTML(y),"</div>"):"","\n "),this.trackInfoElement.style.display="block",this.updateTrackArtwork(e)}updateTrackArtwork(e){this.trackArtworkElement&&(e.poster?(this.trackArtworkElement.style.backgroundImage="url(".concat(e.poster,")"),this.trackArtworkElement.style.display="block"):this.trackArtworkElement.style.display="none")}renderPlaylist(){if(!this.playlistPanel)return;this.playlistPanel.innerHTML="";let e=h.createElement("h2",{className:"vidply-playlist-header",attributes:{id:"".concat(this.uniqueId,"-heading")}});e.textContent="".concat(g.t("playlist.title")," (").concat(this.tracks.length,")"),this.playlistPanel.appendChild(e);let t=h.createElement("div",{className:"vidply-sr-only",attributes:{id:"".concat(this.uniqueId,"-keyboard-instructions")}});t.textContent=g.t("playlist.keyboardInstructions"),this.playlistPanel.appendChild(t);let i=h.createElement("ul",{className:"vidply-playlist-list",attributes:{role:"listbox","aria-labelledby":"".concat(this.uniqueId,"-heading"),"aria-describedby":"".concat(this.uniqueId,"-keyboard-instructions")}});this.tracks.forEach((s,a)=>{let n=this.createPlaylistItem(s,a);i.appendChild(n)}),this.playlistPanel.appendChild(i),this.isPanelVisible&&(this.playlistPanel.style.display="block")}createPlaylistItem(e,t){let i=g.t("playlist.trackOf",{current:t+1,total:this.tracks.length}),s=e.title||g.t("playlist.trackUntitled",{number:t+1}),a=e.artist?g.t("playlist.by")+e.artist:"",n=this.getEffectiveDuration(e),l=n?C.formatTime(n):"",c=n?C.formatDuration(n):"",o=t===this.currentIndex,r="".concat(s).concat(a);c&&(r+=". ".concat(c));let d=h.createElement("li",{className:o?"vidply-playlist-item vidply-playlist-item-active":"vidply-playlist-item",attributes:{"data-playlist-index":t}}),u=h.createElement("button",{className:"vidply-playlist-item-button",attributes:{type:"button",role:"option",tabIndex:t===0?0:-1,"aria-label":r,"aria-posinset":t+1,"aria-setsize":this.tracks.length,"aria-checked":o?"true":"false"}});o&&(u.setAttribute("aria-current","true"),u.setAttribute("tabIndex","0"));let p=h.createElement("span",{className:"vidply-playlist-thumbnail-container",attributes:{"aria-hidden":"true"}}),y=h.createElement("span",{className:"vidply-playlist-thumbnail"});if(e.poster)y.style.backgroundImage="url(".concat(e.poster,")");else{let v=M("music");v.classList.add("vidply-playlist-thumbnail-icon"),y.appendChild(v)}if(p.appendChild(y),l&&e.poster){let v=h.createElement("span",{className:"vidply-playlist-duration-badge"});v.textContent=l,p.appendChild(v)}u.appendChild(p);let b=h.createElement("span",{className:"vidply-playlist-item-info",attributes:{"aria-hidden":"true"}}),w=h.createElement("span",{className:"vidply-playlist-item-title-row"}),f=h.createElement("span",{className:"vidply-playlist-item-title"});if(f.textContent=s,w.appendChild(f),l&&!e.poster){let v=h.createElement("span",{className:"vidply-playlist-item-duration"});v.textContent=l,w.appendChild(v)}if(b.appendChild(w),e.artist){let v=h.createElement("span",{className:"vidply-playlist-item-artist"});v.textContent=e.artist,b.appendChild(v)}if(e.description){let v=h.createElement("span",{className:"vidply-playlist-item-description"});v.textContent=e.description,b.appendChild(v)}u.appendChild(b);let L=M("play");return L.classList.add("vidply-playlist-item-icon"),L.setAttribute("aria-hidden","true"),u.appendChild(L),u.addEventListener("click",()=>{this.play(t,!0)}),u.addEventListener("keydown",v=>{this.handlePlaylistItemKeydown(v,t)}),d.appendChild(u),d}handlePlaylistItemKeydown(e,t){let i=Array.from(this.playlistPanel.querySelectorAll(".vidply-playlist-item-button")),s=-1,a="";switch(e.key){case"Enter":case" ":e.preventDefault(),e.stopPropagation(),this.play(t,!0);return;case"ArrowDown":e.preventDefault(),e.stopPropagation(),t<i.length-1?s=t+1:a=g.t("playlist.endOfPlaylist",{current:i.length,total:i.length});break;case"ArrowUp":e.preventDefault(),e.stopPropagation(),t>0?s=t-1:a=g.t("playlist.beginningOfPlaylist",{total:i.length});break;case"PageDown":e.preventDefault(),e.stopPropagation(),s=Math.min(t+5,i.length-1),s===i.length-1&&t!==s&&(a=g.t("playlist.jumpedToLastTrack",{current:s+1,total:i.length}));break;case"PageUp":e.preventDefault(),e.stopPropagation(),s=Math.max(t-5,0),s===0&&t!==s&&(a=g.t("playlist.jumpedToFirstTrack",{total:i.length}));break;case"Home":e.preventDefault(),e.stopPropagation(),s=0,t!==0&&(a=g.t("playlist.firstTrack",{total:i.length}));break;case"End":e.preventDefault(),e.stopPropagation(),s=i.length-1,t!==i.length-1&&(a=g.t("playlist.lastTrack",{current:i.length,total:i.length}));break}if(s!==-1&&s!==t){i[t].setAttribute("tabIndex","-1"),i[s].setAttribute("tabIndex","0"),i[s].focus({preventScroll:!1});let n=i[s].closest(".vidply-playlist-item");n&&n.scrollIntoView({behavior:"smooth",block:"nearest"})}a&&this.navigationFeedback&&(this.navigationFeedback.textContent=a,setTimeout(()=>{this.navigationFeedback&&(this.navigationFeedback.textContent="")},1e3))}updatePlaylistUI(){if(!this.playlistPanel)return;let e=this.playlistPanel.querySelectorAll(".vidply-playlist-item"),t=this.playlistPanel.querySelectorAll(".vidply-playlist-item-button");e.forEach((i,s)=>{let a=t[s];if(!a)return;let n=this.tracks[s],l=g.t("playlist.trackOf",{current:s+1,total:this.tracks.length}),c=n.title||g.t("playlist.trackUntitled",{number:s+1}),o=n.artist?g.t("playlist.by")+n.artist:"",r=this.getEffectiveDuration(n),d=r?C.formatDuration(r):"";if(s===this.currentIndex){i.classList.add("vidply-playlist-item-active"),a.setAttribute("aria-current","true"),a.setAttribute("aria-checked","true"),a.setAttribute("tabIndex","0");let u="".concat(c).concat(o);d&&(u+=". ".concat(d)),a.setAttribute("aria-label",u),i.scrollIntoView({behavior:"smooth",block:"nearest"})}else{i.classList.remove("vidply-playlist-item-active"),a.removeAttribute("aria-current"),a.setAttribute("aria-checked","false"),a.setAttribute("tabIndex","-1");let u="".concat(c).concat(o);d&&(u+=". ".concat(d)),a.setAttribute("aria-label",u)}})}getCurrentTrack(){return this.tracks[this.currentIndex]||null}getPlaylistInfo(){return{currentIndex:this.currentIndex,totalTracks:this.tracks.length,currentTrack:this.getCurrentTrack(),hasNext:this.hasNext(),hasPrevious:this.hasPrevious()}}hasNext(){return this.options.loop?!0:this.currentIndex<this.tracks.length-1}hasPrevious(){return this.options.loop?!0:this.currentIndex>0}addTrack(e){this.tracks.push(e),this.playlistPanel&&this.renderPlaylist()}removeTrack(e){e<0||e>=this.tracks.length||(this.tracks.splice(e,1),e<this.currentIndex?this.currentIndex--:e===this.currentIndex&&(this.currentIndex>=this.tracks.length&&(this.currentIndex=this.tracks.length-1),this.currentIndex>=0&&this.play(this.currentIndex)),this.playlistPanel&&this.renderPlaylist())}clear(){this.tracks=[],this.currentIndex=-1,this.playlistPanel&&(this.playlistPanel.innerHTML="",this.playlistPanel.style.display="none"),this.trackInfoElement&&(this.trackInfoElement.innerHTML="",this.trackInfoElement.style.display="none"),this.trackArtworkElement&&(this.trackArtworkElement.style.backgroundImage="",this.trackArtworkElement.style.display="none")}togglePanel(e){return this.playlistPanel?((e!==void 0?e:this.playlistPanel.style.display==="none")?(this.playlistPanel.style.display="block",this.isPanelVisible=!0,this.tracks.length>0&&setTimeout(()=>{let i=this.playlistPanel.querySelector('.vidply-playlist-item[tabindex="0"]');i&&i.focus({preventScroll:!0})},100),this.player.controlBar&&this.player.controlBar.controls.playlistToggle&&(this.player.controlBar.controls.playlistToggle.setAttribute("aria-expanded","true"),this.player.controlBar.controls.playlistToggle.setAttribute("aria-pressed","true"))):(this.playlistPanel.style.display="none",this.isPanelVisible=!1,this.player.controlBar&&this.player.controlBar.controls.playlistToggle&&(this.player.controlBar.controls.playlistToggle.setAttribute("aria-expanded","false"),this.player.controlBar.controls.playlistToggle.setAttribute("aria-pressed","false"),this.player.controlBar.controls.playlistToggle.focus({preventScroll:!0}))),this.isPanelVisible):!1}showPanel(){return this.togglePanel(!0)}hidePanel(){return this.togglePanel(!1)}destroy(){this.player.off("ended",this.handleTrackEnd),this.player.off("error",this.handleTrackError),this.trackArtworkElement&&this.trackArtworkElement.remove(),this.trackInfoElement&&this.trackInfoElement.remove(),this.playlistPanel&&this.playlistPanel.remove(),this.clear()}};function et(){document.querySelectorAll("[data-vidply]").forEach(e=>{let t=e.dataset.vidplyOptions?JSON.parse(e.dataset.vidplyOptions):{},i=ht(e.dataset),s=$($({},i),t);new j(e,s)})}function ht(m){let e={},t={signLanguageSrc:"signLanguageSrc",signLanguageButton:"signLanguageButton",signLanguagePosition:"signLanguagePosition",audioDescriptionSrc:"audioDescriptionSrc",audioDescriptionButton:"audioDescriptionButton",autoplay:"autoplay",loop:"loop",muted:"muted",controls:"controls",poster:"poster",width:"width",height:"height",language:"language",captions:"captions",captionsDefault:"captionsDefault",transcript:"transcript",transcriptButton:"transcriptButton",keyboard:"keyboard",responsive:"responsive",pipButton:"pipButton",fullscreenButton:"fullscreenButton"};Object.keys(t).forEach(s=>{let a=t[s],n=m[s];n!==void 0&&(n==="true"?e[a]=!0:n==="false"?e[a]=!1:!isNaN(n)&&n!==""?e[a]=Number(n):e[a]=n)});let i={};if(Object.keys(m).forEach(s=>{if(s.startsWith("signLanguageSrc")&&s!=="signLanguageSrc"){let a=s.match(/^signLanguageSrc([A-Z][a-z]*)$/);if(a){let n=a[1].toLowerCase();i[n]=m[s]}}}),Object.keys(i).length>0&&(e.signLanguageSources=i,m.signLanguageSrc&&!e.signLanguageSrc&&(e.signLanguageSrc=m.signLanguageSrc)),m.vidplyLanguageFiles)try{e.languageFiles=JSON.parse(m.vidplyLanguageFiles)}catch(s){console.warn("Invalid JSON in data-vidply-language-files:",s)}if(m.vidplyLanguageFile)try{let s=JSON.parse(m.vidplyLanguageFile);typeof s=="object"&&s!==null&&(e.languageFiles=s)}catch(s){m.vidplyLanguageFileCode&&m.vidplyLanguageFileUrl&&(e.languageFile=m.vidplyLanguageFileCode,e.languageFileUrl=m.vidplyLanguageFileUrl)}else m.vidplyLanguageFileCode&&m.vidplyLanguageFileUrl&&(e.languageFile=m.vidplyLanguageFileCode,e.languageFileUrl=m.vidplyLanguageFileUrl);return e}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",et):et();var Ai=j;})();
6
+ (()=>{var Ee=Object.defineProperty;var Le=Object.getOwnPropertySymbols;var st=Object.prototype.hasOwnProperty,at=Object.prototype.propertyIsEnumerable;var Te=(g,e,t)=>e in g?Ee(g,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[e]=t,O=(g,e)=>{for(var t in e||(e={}))st.call(e,t)&&Te(g,t,e[t]);if(Le)for(var t of Le(e))at.call(e,t)&&Te(g,t,e[t]);return g};var x=(g,e)=>()=>(g&&(e=g(g=0)),e);var B=(g,e)=>{for(var t in e)Ee(g,t,{get:e[t],enumerable:!0})};var u,V=x(()=>{u={createElement(g,e={}){let t=document.createElement(g);if(e.className&&(t.className=e.className),e.attributes)for(let[i,s]of Object.entries(e.attributes))t.setAttribute(i,s);if(e.innerHTML&&(t.innerHTML=e.innerHTML),e.textContent&&(t.textContent=e.textContent),e.style&&Object.assign(t.style,e.style),e.children)for(let i of e.children)i&&t.appendChild(i);return t},show(g){g!=null&&g.style&&(g.style.display="")},hide(g){g!=null&&g.style&&(g.style.display="none")},fadeIn(g,e=300,t){if(g&&(g.style.opacity="0",g.style.display="",g.style.transition="opacity ".concat(e,"ms ease"),g.offsetHeight,g.style.opacity="1",t)){let i=()=>{g.removeEventListener("transitionend",i),t()};g.addEventListener("transitionend",i,{once:!0}),setTimeout(i,e+50)}},fadeOut(g,e=300,t){if(!g)return;g.style.transition="opacity ".concat(e,"ms ease"),g.style.opacity="0";let i=()=>{g.removeEventListener("transitionend",i),g.style.display="none",t&&t()};g.addEventListener("transitionend",i,{once:!0}),setTimeout(i,e+50)},offset(g){if(!g)return{top:0,left:0,width:0,height:0};let e=g.getBoundingClientRect();return{top:e.top+window.scrollY,left:e.left+window.scrollX,width:e.width,height:e.height}},escapeHTML(g){let e={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;"};return g.replace(/[&<>"']/g,t=>e[t])},sanitizeHTML(g){let e=g.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").replace(/<iframe\b[^<]*(?:(?!<\/iframe>)<[^<]*)*<\/iframe>/gi,"").replace(/on\w+\s*=/gi,"").replace(/javascript:/gi,""),t=document.createElement("div");return t.innerHTML=e,t.innerHTML},createTooltip(g,e="vidply"){return this.createElement("span",{className:"".concat(e,"-tooltip"),textContent:g,attributes:{"aria-hidden":"true"}})},attachTooltip(g,e,t="vidply"){var l;if(!g||!e)return;(l=g.querySelector(".".concat(t,"-tooltip")))==null||l.remove();let i=this.createTooltip(e,t);g.appendChild(i);let s="".concat(t,"-tooltip-visible"),a=()=>i.classList.add(s),n=()=>i.classList.remove(s);g.addEventListener("mouseenter",a),g.addEventListener("mouseleave",n),g.addEventListener("focus",a),g.addEventListener("blur",n)},createButtonText(g,e="vidply"){return this.createElement("span",{className:"".concat(e,"-button-text"),textContent:g,attributes:{"aria-hidden":"true"}})},addClass(g,e){var t;(t=g==null?void 0:g.classList)==null||t.add(e)},removeClass(g,e){var t;(t=g==null?void 0:g.classList)==null||t.remove(e)},toggleClass(g,e){var t;(t=g==null?void 0:g.classList)==null||t.toggle(e)},hasClass(g,e){var t,i;return(i=(t=g==null?void 0:g.classList)==null?void 0:t.contains(e))!=null?i:!1}}});var Pe,xe=x(()=>{Pe={player:{label:"Video Player",play:"Play",pause:"Pause",stop:"Stop",restart:"Restart from beginning",rewind:"Rewind",forward:"Forward",rewindSeconds:"Rewind {seconds} seconds",forwardSeconds:"Forward {seconds} seconds",previous:"Previous track",next:"Next track",playlist:"Toggle playlist",volume:"Volume",mute:"Mute",unmute:"Unmute",fullscreen:"Fullscreen",exitFullscreen:"Exit Fullscreen",captions:"Captions",chapters:"Chapters",quality:"Quality",captionStyling:"Caption styling",transcript:"Toggle transcript",audioDescription:"Audio description",signLanguage:"Sign language video",settings:"Settings",speed:"Playback Speed",pip:"Picture in Picture",currentTime:"Current time",duration:"Duration",progress:"Progress",seekForward:"Seek forward {seconds} seconds",seekBackward:"Seek backward {seconds} seconds",volumeUp:"Volume up",volumeDown:"Volume down",loading:"Loading...",loadingChapters:"Loading chapters...",error:"Error loading media",buffering:"Buffering...",signLanguageVideo:"Sign Language Video",closeSignLanguage:"Close sign language video",signLanguageSettings:"Sign language settings",noChapters:"No chapters available",noCaptions:"No captions available",auto:"Auto",autoQuality:"Auto (no quality selection available)",noQuality:"Quality selection not available",signLanguageDragResize:"Sign Language Video - Press D to drag with keyboard, R to resize",signLanguageDragActive:"Sign Language Video - Drag mode active. Use arrow keys to move, Escape to exit.",signLanguageResizeActive:"Sign Language Video - Resize mode active. Use left/right arrow keys to resize, Escape to exit.",enableSignDragMode:"Enable drag mode. Shortcut: D key",disableSignDragMode:"Disable drag mode. Shortcut: D key",enableSignDragModeAria:"Enable toggle keyboard drag mode with arrow keys. Shortcut: D key",disableSignDragModeAria:"Disable toggle keyboard drag mode with arrow keys. Shortcut: D key",enableSignResizeMode:"Enable resize mode. Shortcut: R key",disableSignResizeMode:"Disable resize mode. Shortcut: R key",enableSignResizeModeAria:"Enable keyboard resize mode with arrow keys. Shortcut: R key",disableSignResizeModeAria:"Disable keyboard resize mode with arrow keys. Shortcut: R key",resizeHandle:"Resize {direction} corner",moreOptions:"More options",noMoreOptions:"No additional options available"},captions:{off:"Off",select:"Select captions",fontSize:"Font Size",fontFamily:"Font Family",color:"Text Color",backgroundColor:"Background Color",opacity:"Opacity"},fontSizes:{small:"Small",normal:"Normal",large:"Large",xlarge:"X-Large"},fontFamilies:{sansSerif:"Sans-serif",serif:"Serif",monospace:"Monospace"},styleLabels:{textColor:"Text Color",background:"Background",font:"Font",fontSize:"Font Size",opacity:"Opacity"},audioDescription:{enable:"Enable audio description",disable:"Disable audio description"},signLanguage:{show:"Show sign language video",hide:"Hide sign language video"},transcript:{title:"Transcript",ariaLabel:"Video Transcript",close:"Close transcript",loading:"Loading transcript...",noTranscript:"No transcript available for this video.",settings:"Transcript settings. Press Enter to open menu, or D to enable drag mode",keyboardDragMode:"Toggle keyboard drag mode with arrow keys. Shortcut: D key",keyboardDragActive:"⌨️ Keyboard Drag Mode Active (Arrow keys to move, Shift+Arrows for large steps, D or ESC to exit)",dragResizePrompt:"Press D to drag or R to resize. Use Home to reset position, Esc to close.",dragModeEnabled:"Keyboard drag mode enabled. Use arrow keys to move, Shift+Arrow for larger steps. Press D or Esc to exit.",dragModeDisabled:"Keyboard drag mode disabled.",enableDragMode:"Enable drag mode. Shortcut: D key",disableDragMode:"Disable drag mode. Shortcut: D key",enableDragModeAria:"Enable toggle keyboard drag mode with arrow keys. Shortcut: D key",disableDragModeAria:"Disable toggle keyboard drag mode with arrow keys. Shortcut: D key",resizeWindow:"Resize Window",disableResizeWindow:"Disable Resize Mode",enableResizeMode:"Enable resize mode. Shortcut: R key",disableResizeMode:"Disable resize mode. Shortcut: R key",enableResizeModeAria:"Enable keyboard resize mode with arrow keys. Shortcut: R key",disableResizeModeAria:"Disable keyboard resize mode with arrow keys. Shortcut: R key",resizeModeHint:"Resize handles enabled. Drag edges or corners to adjust. Press Esc or R to exit.",resizeModeEnabled:"Resize mode enabled. Drag edges or corners to adjust. Press Esc or R to exit.",resizeModeDisabled:"Resize mode disabled.",positionReset:"Transcript position reset.",styleTranscript:"Open transcript style settings",closeMenu:"Close Menu",styleTitle:"Transcript Style",autoscroll:"Autoscroll",settingsMenu:"Transcript dialog settings",showTimestamps:"Show timestamps",hideTimestamps:"Hide timestamps",showTimestampsAria:"Show timestamps in transcript",hideTimestampsAria:"Hide timestamps in transcript"},settings:{title:"Settings",quality:"Quality",speed:"Speed",captions:"Captions",language:"Language",reset:"Reset to defaults",close:"Close"},speeds:{normal:"Normal"},time:{display:"Time display",durationPrefix:"Duration: ",of:"of",hour:"{count} hour",hours:"{count} hours",minute:"{count} minute",minutes:"{count} minutes",second:"{count} second",seconds:"{count} seconds"},playlist:{title:"Playlist",trackOf:"Track {current} of {total}",nowPlaying:"Now playing: Track {current} of {total}. {title}{artist}",by:" by ",untitled:"Untitled",trackUntitled:"Track {number}",currentlyPlaying:"Currently playing",notPlaying:"Not playing",pressEnterPlay:"Press Enter to play",pressEnterRestart:"Press Enter to restart",keyboardInstructions:"Playlist navigation: Use Up and Down arrow keys to move between tracks. Press Page Up or Page Down to skip 5 tracks. Press Home to go to first track, End to go to last track. Press Enter or Space to play the selected track.",endOfPlaylist:"End of playlist. {current} of {total}.",beginningOfPlaylist:"Beginning of playlist. 1 of {total}.",jumpedToLastTrack:"Jumped to last track. {current} of {total}.",jumpedToFirstTrack:"Jumped to first track. 1 of {total}.",firstTrack:"First track. 1 of {total}.",lastTrack:"Last track. {current} of {total}."}}});var Ce={};B(Ce,{de:()=>nt});var nt,De=x(()=>{nt={player:{label:"Videoplayer",play:"Abspielen",pause:"Pause",stop:"Stopp",restart:"Von vorne beginnen",rewind:"Zurückspulen",forward:"Vorspulen",rewindSeconds:"{seconds} Sekunden zurückspulen",forwardSeconds:"{seconds} Sekunden vorspulen",previous:"Vorheriger Titel",next:"Nächster Titel",playlist:"Wiedergabeliste umschalten",volume:"Lautstärke",mute:"Stumm",unmute:"Ton ein",fullscreen:"Vollbild",exitFullscreen:"Vollbild beenden",captions:"Untertitel",chapters:"Kapitel",quality:"Qualität",captionStyling:"Untertitel-Stil",transcript:"Transkript umschalten",audioDescription:"Audiodeskription",signLanguage:"Gebärdensprache-Video",settings:"Einstellungen",speed:"Wiedergabegeschwindigkeit",pip:"Bild-in-Bild",currentTime:"Aktuelle Zeit",duration:"Dauer",progress:"Fortschritt",seekForward:"{seconds} Sekunden vorspulen",seekBackward:"{seconds} Sekunden zurückspulen",volumeUp:"Lauter",volumeDown:"Leiser",loading:"Lädt...",loadingChapters:"Kapitel werden geladen...",error:"Fehler beim Laden",buffering:"Puffern...",signLanguageVideo:"Gebärdensprache-Video",closeSignLanguage:"Gebärdensprache-Video schließen",signLanguageSettings:"Gebärdensprache-Einstellungen",noChapters:"Keine Kapitel verfügbar",noCaptions:"Keine Untertitel verfügbar",auto:"Automatisch",autoQuality:"Automatisch (keine Qualitätsauswahl verfügbar)",noQuality:"Qualitätsauswahl nicht verfügbar",signLanguageDragResize:"Gebärdensprache-Video - Drücken Sie D zum Verschieben per Tastatur, R zum Ändern der Größe",signLanguageDragActive:"Gebärdensprache-Video - Verschiebemodus aktiv. Pfeiltasten zum Bewegen, Escape zum Beenden.",signLanguageResizeActive:"Gebärdensprache-Video - Größenänderungsmodus aktiv. Links-/Rechts-Pfeiltasten zum Ändern der Größe, Escape zum Beenden.",enableSignDragMode:"Verschiebemodus aktivieren. Tastenkombination: D-Taste",disableSignDragMode:"Verschiebemodus deaktivieren. Tastenkombination: D-Taste",enableSignDragModeAria:"Tastatur-Verschiebemodus mit Pfeiltasten aktivieren. Tastenkombination: D-Taste",disableSignDragModeAria:"Tastatur-Verschiebemodus mit Pfeiltasten deaktivieren. Tastenkombination: D-Taste",enableSignResizeMode:"Größenänderungsmodus aktivieren. Tastenkombination: R-Taste",disableSignResizeMode:"Größenänderungsmodus deaktivieren. Tastenkombination: R-Taste",enableSignResizeModeAria:"Tastatur-Größenänderungsmodus mit Pfeiltasten aktivieren. Tastenkombination: R-Taste",disableSignResizeModeAria:"Tastatur-Größenänderungsmodus mit Pfeiltasten deaktivieren. Tastenkombination: R-Taste",resizeHandle:"Größenänderung {direction}-Ecke",moreOptions:"Weitere Optionen",noMoreOptions:"Keine weiteren Optionen verfügbar"},captions:{off:"Aus",select:"Untertitel auswählen",fontSize:"Schriftgröße",fontFamily:"Schriftart",color:"Textfarbe",backgroundColor:"Hintergrundfarbe",opacity:"Deckkraft"},fontSizes:{small:"Klein",normal:"Normal",large:"Groß",xlarge:"Sehr groß"},fontFamilies:{sansSerif:"Sans-serif",serif:"Serif",monospace:"Monospace"},styleLabels:{textColor:"Textfarbe",background:"Hintergrund",font:"Schrift",fontSize:"Schriftgröße",opacity:"Deckkraft"},audioDescription:{enable:"Audiodeskription aktivieren",disable:"Audiodeskription deaktivieren"},signLanguage:{show:"Gebärdensprache-Video anzeigen",hide:"Gebärdensprache-Video ausblenden"},transcript:{title:"Transkript",ariaLabel:"Video-Transkript",close:"Transkript schließen",loading:"Transkript wird geladen...",noTranscript:"Kein Transkript für dieses Video verfügbar.",settings:"Transkript-Einstellungen. Eingabetaste zum Öffnen des Menüs drücken oder D zum Aktivieren des Verschiebemodus",keyboardDragMode:"Tastatur-Verschiebemodus mit Pfeiltasten umschalten. Tastenkombination: D-Taste",keyboardDragActive:"⌨️ Tastatur-Verschiebemodus aktiv (Pfeiltasten zum Bewegen, Umschalt+Pfeiltasten für große Schritte, D oder ESC zum Beenden)",dragResizePrompt:"Drücken Sie D zum Verschieben oder R zur Größenänderung. Home setzt die Position zurück, Esc schließt.",dragModeEnabled:"Tastatur-Verschiebemodus aktiviert. Pfeiltasten zum Bewegen, Umschalt+Pfeiltasten für größere Schritte. D oder Esc zum Beenden.",dragModeDisabled:"Tastatur-Verschiebemodus deaktiviert.",enableDragMode:"Verschiebemodus aktivieren. Tastenkombination: D-Taste",disableDragMode:"Verschiebemodus deaktivieren. Tastenkombination: D-Taste",enableDragModeAria:"Tastatur-Verschiebemodus mit Pfeiltasten aktivieren. Tastenkombination: D-Taste",disableDragModeAria:"Tastatur-Verschiebemodus mit Pfeiltasten deaktivieren. Tastenkombination: D-Taste",resizeWindow:"Fenster vergrößern/verkleinern",disableResizeWindow:"Resize-Modus deaktivieren",enableResizeMode:"Größenänderungsmodus aktivieren. Tastenkombination: R-Taste",disableResizeMode:"Größenänderungsmodus deaktivieren. Tastenkombination: R-Taste",enableResizeModeAria:"Tastatur-Größenänderungsmodus mit Pfeiltasten aktivieren. Tastenkombination: R-Taste",disableResizeModeAria:"Tastatur-Größenänderungsmodus mit Pfeiltasten deaktivieren. Tastenkombination: R-Taste",resizeModeHint:"Griffe aktiviert. Ziehen Sie Kanten oder Ecken zum Anpassen. Esc oder R zum Beenden.",resizeModeEnabled:"Resize-Modus aktiviert. Kanten oder Ecken ziehen; Esc oder R beendet.",resizeModeDisabled:"Resize-Modus deaktiviert.",positionReset:"Transkriptposition zurückgesetzt.",styleTranscript:"Transkript-Stileinstellungen öffnen",closeMenu:"Menü schließen",styleTitle:"Transkript-Stil",autoscroll:"Auto-Scroll",settingsMenu:"Transkript-Dialog-Einstellungen",showTimestamps:"Zeitstempel anzeigen",hideTimestamps:"Zeitstempel ausblenden",showTimestampsAria:"Zeitstempel im Transkript anzeigen",hideTimestampsAria:"Zeitstempel im Transkript ausblenden"},settings:{title:"Einstellungen",quality:"Qualität",speed:"Geschwindigkeit",captions:"Untertitel",language:"Sprache",reset:"Zurücksetzen",close:"Schließen"},speeds:{normal:"Normal"},time:{display:"Zeitanzeige",durationPrefix:"Dauer: ",of:"von",hour:"{count} Stunde",hours:"{count} Stunden",minute:"{count} Minute",minutes:"{count} Minuten",second:"{count} Sekunde",seconds:"{count} Sekunden"},playlist:{title:"Wiedergabeliste",trackOf:"Titel {current} von {total}",nowPlaying:"Läuft gerade: Titel {current} von {total}. {title}{artist}",by:" von ",untitled:"Ohne Titel",trackUntitled:"Titel {number}",currentlyPlaying:"Wird gerade abgespielt",notPlaying:"Nicht aktiv",pressEnterPlay:"Eingabetaste zum Abspielen",pressEnterRestart:"Eingabetaste zum Neustart",keyboardInstructions:"Wiedergabelisten-Navigation: Verwenden Sie die Pfeiltasten nach oben und unten, um zwischen Titeln zu wechseln. Drücken Sie Bild auf oder Bild ab, um 5 Titel zu überspringen. Drücken Sie Pos1, um zum ersten Titel zu springen, Ende für den letzten Titel. Drücken Sie die Eingabetaste oder Leertaste, um den ausgewählten Titel abzuspielen.",endOfPlaylist:"Ende der Wiedergabeliste. {current} von {total}.",beginningOfPlaylist:"Anfang der Wiedergabeliste. 1 von {total}.",jumpedToLastTrack:"Zum letzten Titel gesprungen. {current} von {total}.",jumpedToFirstTrack:"Zum ersten Titel gesprungen. 1 von {total}.",firstTrack:"Erster Titel. 1 von {total}.",lastTrack:"Letzter Titel. {current} von {total}."}}});var Ae={};B(Ae,{es:()=>rt});var rt,ze=x(()=>{rt={player:{label:"Reproductor de video",play:"Reproducir",pause:"Pausa",stop:"Detener",restart:"Reiniciar desde el principio",rewind:"Retroceder",forward:"Avanzar",rewindSeconds:"Retroceder {seconds} segundos",forwardSeconds:"Avanzar {seconds} segundos",previous:"Pista anterior",next:"Siguiente pista",playlist:"Alternar lista de reproducción",volume:"Volumen",mute:"Silenciar",unmute:"Activar sonido",fullscreen:"Pantalla completa",exitFullscreen:"Salir de pantalla completa",captions:"Subtítulos",chapters:"Capítulos",quality:"Calidad",captionStyling:"Estilo de subtítulos",transcript:"Alternar transcripción",audioDescription:"Audiodescripción",signLanguage:"Video en lengua de señas",settings:"Configuración",speed:"Velocidad de reproducción",pip:"Imagen en imagen",currentTime:"Tiempo actual",duration:"Duración",progress:"Progreso",seekForward:"Avanzar {seconds} segundos",seekBackward:"Retroceder {seconds} segundos",volumeUp:"Subir volumen",volumeDown:"Bajar volumen",loading:"Cargando...",loadingChapters:"Cargando capítulos...",error:"Error al cargar",buffering:"Almacenando en búfer...",signLanguageVideo:"Video en Lengua de Señas",closeSignLanguage:"Cerrar video en lengua de señas",signLanguageSettings:"Configuración de lengua de señas",noChapters:"No hay capítulos disponibles",noCaptions:"No hay subtítulos disponibles",auto:"Automático",autoQuality:"Automático (selección de calidad no disponible)",noQuality:"Selección de calidad no disponible",signLanguageDragResize:"Video en Lengua de Señas - Presione D para arrastrar con el teclado, R para cambiar el tamaño",signLanguageDragActive:"Video en Lengua de Señas - Modo de arrastre activo. Use las teclas de flecha para mover, Escape para salir.",signLanguageResizeActive:"Video en Lengua de Señas - Modo de cambio de tamaño activo. Use las teclas de flecha izquierda/derecha para cambiar el tamaño, Escape para salir.",enableSignDragMode:"Activar modo de arrastre. Atajo: tecla D",disableSignDragMode:"Desactivar modo de arrastre. Atajo: tecla D",enableSignDragModeAria:"Activar modo de arrastre con teclado usando teclas de flecha. Atajo: tecla D",disableSignDragModeAria:"Desactivar modo de arrastre con teclado usando teclas de flecha. Atajo: tecla D",enableSignResizeMode:"Activar modo de cambio de tamaño. Atajo: tecla R",disableSignResizeMode:"Desactivar modo de cambio de tamaño. Atajo: tecla R",enableSignResizeModeAria:"Activar modo de cambio de tamaño con teclado usando teclas de flecha. Atajo: tecla R",disableSignResizeModeAria:"Desactivar modo de cambio de tamaño con teclado usando teclas de flecha. Atajo: tecla R",resizeHandle:"Cambiar tamaño esquina {direction}",moreOptions:"Más opciones",noMoreOptions:"No hay opciones adicionales disponibles"},captions:{off:"Desactivado",select:"Seleccionar subtítulos",fontSize:"Tamaño de fuente",fontFamily:"Familia de fuente",color:"Color de texto",backgroundColor:"Color de fondo",opacity:"Opacidad"},fontSizes:{small:"Pequeño",normal:"Normal",large:"Grande",xlarge:"Muy grande"},fontFamilies:{sansSerif:"Sans-serif",serif:"Serif",monospace:"Monospace"},styleLabels:{textColor:"Color de texto",background:"Fondo",font:"Fuente",fontSize:"Tamaño de fuente",opacity:"Opacidad"},audioDescription:{enable:"Activar audiodescripción",disable:"Desactivar audiodescripción"},signLanguage:{show:"Mostrar video en lengua de señas",hide:"Ocultar video en lengua de señas"},transcript:{title:"Transcripción",ariaLabel:"Transcripción de video",close:"Cerrar transcripción",loading:"Cargando transcripción...",noTranscript:"No hay transcripción disponible para este video.",settings:"Configuración de transcripción. Presione Enter para abrir el menú o D para activar el modo de arrastre",keyboardDragMode:"Alternar modo de arrastre con teclado usando teclas de flecha. Atajo: tecla D",keyboardDragActive:"⌨️ Modo de Arrastre con Teclado Activo (Teclas de flecha para mover, Mayús+Flechas para pasos grandes, D o ESC para salir)",dragResizePrompt:"Pulsa D para mover o R para cambiar el tamaño. Home restablece la posición; Esc cierra.",dragModeEnabled:"Modo de arrastre con teclado activado. Usa flechas para mover, Mayús+Flechas para pasos grandes. Pulsa D o Esc para salir.",dragModeDisabled:"Modo de arrastre con teclado desactivado.",enableDragMode:"Activar modo de arrastre. Atajo: tecla D",disableDragMode:"Desactivar modo de arrastre. Atajo: tecla D",enableDragModeAria:"Activar modo de arrastre con teclado usando teclas de flecha. Atajo: tecla D",disableDragModeAria:"Desactivar modo de arrastre con teclado usando teclas de flecha. Atajo: tecla D",resizeWindow:"Cambiar tamaño de ventana",disableResizeWindow:"Desactivar modo de cambio de tamaño",enableResizeMode:"Activar modo de cambio de tamaño. Atajo: tecla R",disableResizeMode:"Desactivar modo de cambio de tamaño. Atajo: tecla R",enableResizeModeAria:"Activar modo de cambio de tamaño con teclado usando teclas de flecha. Atajo: tecla R",disableResizeModeAria:"Desactivar modo de cambio de tamaño con teclado usando teclas de flecha. Atajo: tecla R",resizeModeHint:"Controladores habilitados. Arrastra bordes o esquinas para ajustar. Pulsa Esc o R para salir.",resizeModeEnabled:"Modo de cambio de tamaño activado. Arrastra bordes o esquinas. Pulsa Esc o R para salir.",resizeModeDisabled:"Modo de cambio de tamaño desactivado.",positionReset:"Posición de la transcripción restablecida.",styleTranscript:"Abrir configuración de estilo de transcripción",closeMenu:"Cerrar menú",styleTitle:"Estilo de Transcripción",autoscroll:"Desplazamiento automático",settingsMenu:"Configuración del diálogo de transcripción",showTimestamps:"Mostrar marcas de tiempo",hideTimestamps:"Ocultar marcas de tiempo",showTimestampsAria:"Mostrar marcas de tiempo en la transcripción",hideTimestampsAria:"Ocultar marcas de tiempo en la transcripción"},settings:{title:"Configuración",quality:"Calidad",speed:"Velocidad",captions:"Subtítulos",language:"Idioma",reset:"Restablecer",close:"Cerrar"},speeds:{normal:"Normal"},time:{display:"Visualización de tiempo",durationPrefix:"Duración: ",of:"de",hour:"{count} hora",hours:"{count} horas",minute:"{count} minuto",minutes:"{count} minutos",second:"{count} segundo",seconds:"{count} segundos"},playlist:{title:"Lista de reproducción",trackOf:"Pista {current} de {total}",nowPlaying:"Reproduciendo ahora: Pista {current} de {total}. {title}{artist}",by:" por ",untitled:"Sin título",trackUntitled:"Pista {number}",currentlyPlaying:"Reproduciendo actualmente",notPlaying:"Sin reproducir",pressEnterPlay:"Pulsa Enter para reproducir",pressEnterRestart:"Pulsa Enter para reiniciar",keyboardInstructions:"Navegación de lista de reproducción: Use las teclas de flecha arriba y abajo para moverse entre pistas. Pulse Retroceder página o Avanzar página para saltar 5 pistas. Pulse Inicio para ir a la primera pista, Fin para la última pista. Pulse Intro o Espacio para reproducir la pista seleccionada.",endOfPlaylist:"Fin de la lista de reproducción. {current} de {total}.",beginningOfPlaylist:"Inicio de la lista de reproducción. 1 de {total}.",jumpedToLastTrack:"Saltó a la última pista. {current} de {total}.",jumpedToFirstTrack:"Saltó a la primera pista. 1 de {total}.",firstTrack:"Primera pista. 1 de {total}.",lastTrack:"Última pista. {current} de {total}."}}});var Re={};B(Re,{fr:()=>ot});var ot,Be=x(()=>{ot={player:{label:"Lecteur vidéo",play:"Lecture",pause:"Pause",stop:"Arrêt",restart:"Redémarrer du début",rewind:"Reculer",forward:"Avancer",rewindSeconds:"Reculer de {seconds} secondes",forwardSeconds:"Avancer de {seconds} secondes",previous:"Piste précédente",next:"Piste suivante",playlist:"Basculer la liste de lecture",volume:"Volume",mute:"Muet",unmute:"Activer le son",fullscreen:"Plein écran",exitFullscreen:"Quitter le plein écran",captions:"Sous-titres",chapters:"Chapitres",quality:"Qualité",captionStyling:"Style des sous-titres",transcript:"Activer/désactiver la transcription",audioDescription:"Audiodescription",signLanguage:"Vidéo en langue des signes",settings:"Paramètres",speed:"Vitesse de lecture",pip:"Image dans l'image",currentTime:"Temps actuel",duration:"Durée",progress:"Progression",seekForward:"Avancer de {seconds} secondes",seekBackward:"Reculer de {seconds} secondes",volumeUp:"Augmenter le volume",volumeDown:"Diminuer le volume",loading:"Chargement...",loadingChapters:"Chargement des chapitres...",error:"Erreur de chargement",buffering:"Mise en mémoire tampon...",signLanguageVideo:"Vidéo en Langue des Signes",closeSignLanguage:"Fermer la vidéo en langue des signes",signLanguageSettings:"Paramètres de la langue des signes",noChapters:"Aucun chapitre disponible",noCaptions:"Aucun sous-titre disponible",auto:"Automatique",autoQuality:"Automatique (sélection de qualité non disponible)",noQuality:"Sélection de qualité non disponible",signLanguageDragResize:"Vidéo en Langue des Signes - Appuyez sur D pour déplacer avec le clavier, R pour redimensionner",signLanguageDragActive:"Vidéo en Langue des Signes - Mode glissement actif. Utilisez les touches fléchées pour déplacer, Échap pour quitter.",signLanguageResizeActive:"Vidéo en Langue des Signes - Mode redimensionnement actif. Utilisez les touches fléchées gauche/droite pour redimensionner, Échap pour quitter.",enableSignDragMode:"Activer le mode glissement. Raccourci : touche D",disableSignDragMode:"Désactiver le mode glissement. Raccourci : touche D",enableSignDragModeAria:"Activer le mode glissement clavier avec les touches fléchées. Raccourci : touche D",disableSignDragModeAria:"Désactiver le mode glissement clavier avec les touches fléchées. Raccourci : touche D",enableSignResizeMode:"Activer le mode redimensionnement. Raccourci : touche R",disableSignResizeMode:"Désactiver le mode redimensionnement. Raccourci : touche R",enableSignResizeModeAria:"Activer le mode redimensionnement clavier avec les touches fléchées. Raccourci : touche R",disableSignResizeModeAria:"Désactiver le mode redimensionnement clavier avec les touches fléchées. Raccourci : touche R",resizeHandle:"Redimensionner coin {direction}",moreOptions:"Plus d'options",noMoreOptions:"Aucune option supplémentaire disponible"},captions:{off:"Désactivé",select:"Sélectionner les sous-titres",fontSize:"Taille de police",fontFamily:"Police",color:"Couleur du texte",backgroundColor:"Couleur de fond",opacity:"Opacité"},fontSizes:{small:"Petit",normal:"Normal",large:"Grand",xlarge:"Très grand"},fontFamilies:{sansSerif:"Sans-serif",serif:"Serif",monospace:"Monospace"},styleLabels:{textColor:"Couleur du texte",background:"Arrière-plan",font:"Police",fontSize:"Taille de police",opacity:"Opacité"},audioDescription:{enable:"Activer l'audiodescription",disable:"Désactiver l'audiodescription"},signLanguage:{show:"Afficher la vidéo en langue des signes",hide:"Masquer la vidéo en langue des signes"},transcript:{title:"Transcription",ariaLabel:"Transcription vidéo",close:"Fermer la transcription",loading:"Chargement de la transcription...",noTranscript:"Aucune transcription disponible pour cette vidéo.",settings:"Paramètres de transcription. Appuyez sur Entrée pour ouvrir le menu ou D pour activer le mode glissement",keyboardDragMode:"Basculer le mode glissement avec les touches fléchées. Raccourci: touche D",keyboardDragActive:"⌨️ Mode Glissement Clavier Actif (Touches fléchées pour déplacer, Maj+Fléchées pour grands pas, D ou Échap pour quitter)",dragResizePrompt:"Appuyez sur D pour déplacer ou R pour redimensionner. Home réinitialise la position, Échap ferme.",dragModeEnabled:"Mode glissement clavier activé. Utilisez les flèches pour déplacer, Maj+Flèches pour de grands pas. Appuyez sur D ou Échap pour quitter.",dragModeDisabled:"Mode glissement clavier désactivé.",enableDragMode:"Activer le mode glissement. Raccourci : touche D",disableDragMode:"Désactiver le mode glissement. Raccourci : touche D",enableDragModeAria:"Activer le mode glissement clavier avec les touches fléchées. Raccourci : touche D",disableDragModeAria:"Désactiver le mode glissement clavier avec les touches fléchées. Raccourci : touche D",resizeWindow:"Redimensionner la fenêtre",disableResizeWindow:"Désactiver le mode de redimensionnement",enableResizeMode:"Activer le mode redimensionnement. Raccourci : touche R",disableResizeMode:"Désactiver le mode redimensionnement. Raccourci : touche R",enableResizeModeAria:"Activer le mode redimensionnement clavier avec les touches fléchées. Raccourci : touche R",disableResizeModeAria:"Désactiver le mode redimensionnement clavier avec les touches fléchées. Raccourci : touche R",resizeModeHint:"Poignées activées. Faites glisser les bords ou les coins pour ajuster. Appuyez sur Échap ou R pour quitter.",resizeModeEnabled:"Mode redimensionnement activé. Faites glisser les bords ou coins. Appuyez sur Échap ou R pour quitter.",resizeModeDisabled:"Mode redimensionnement désactivé.",positionReset:"Position de la transcription réinitialisée.",styleTranscript:"Ouvrir les paramètres de style de transcription",closeMenu:"Fermer le menu",styleTitle:"Style de Transcription",autoscroll:"Défilement automatique",settingsMenu:"Paramètres de dialogue de transcription",showTimestamps:"Afficher les horodatages",hideTimestamps:"Masquer les horodatages",showTimestampsAria:"Afficher les horodatages dans la transcription",hideTimestampsAria:"Masquer les horodatages dans la transcription"},settings:{title:"Paramètres",quality:"Qualité",speed:"Vitesse",captions:"Sous-titres",language:"Langue",reset:"Réinitialiser",close:"Fermer"},speeds:{normal:"Normal"},time:{display:"Affichage du temps",durationPrefix:"Durée : ",of:"sur",hour:"{count} heure",hours:"{count} heures",minute:"{count} minute",minutes:"{count} minutes",second:"{count} seconde",seconds:"{count} secondes"},playlist:{title:"Liste de lecture",trackOf:"Piste {current} sur {total}",nowPlaying:"Lecture en cours : Piste {current} sur {total}. {title}{artist}",by:" par ",untitled:"Sans titre",trackUntitled:"Piste {number}",currentlyPlaying:"En cours de lecture",notPlaying:"Non en lecture",pressEnterPlay:"Appuyez sur Entrée pour lire",pressEnterRestart:"Appuyez sur Entrée pour recommencer",keyboardInstructions:"Navigation de la liste de lecture : Utilisez les touches fléchées haut et bas pour naviguer entre les pistes. Appuyez sur Page précédente ou Page suivante pour sauter 5 pistes. Appuyez sur Début pour aller à la première piste, Fin pour la dernière piste. Appuyez sur Entrée ou Espace pour lire la piste sélectionnée.",endOfPlaylist:"Fin de la liste de lecture. {current} sur {total}.",beginningOfPlaylist:"Début de la liste de lecture. 1 sur {total}.",jumpedToLastTrack:"Sauté à la dernière piste. {current} sur {total}.",jumpedToFirstTrack:"Sauté à la première piste. 1 sur {total}.",firstTrack:"Première piste. 1 sur {total}.",lastTrack:"Dernière piste. {current} sur {total}."}}});var He={};B(He,{ja:()=>lt});var lt,$e=x(()=>{lt={player:{label:"ビデオプレーヤー",play:"再生",pause:"一時停止",stop:"停止",restart:"最初から再生",rewind:"巻き戻し",forward:"早送り",rewindSeconds:"{seconds}秒戻す",forwardSeconds:"{seconds}秒進める",previous:"前のトラック",next:"次のトラック",playlist:"プレイリストの切り替え",volume:"音量",mute:"ミュート",unmute:"ミュート解除",fullscreen:"全画面表示",exitFullscreen:"全画面表示を終了",captions:"字幕",chapters:"チャプター",quality:"画質",captionStyling:"字幕スタイル",transcript:"文字起こし切り替え",audioDescription:"音声解説",signLanguage:"手話動画",settings:"設定",speed:"再生速度",pip:"ピクチャーインピクチャー",currentTime:"現在の時間",duration:"再生時間",progress:"進行状況",seekForward:"{seconds}秒進める",seekBackward:"{seconds}秒戻す",volumeUp:"音量を上げる",volumeDown:"音量を下げる",loading:"読み込み中...",loadingChapters:"チャプター読み込み中...",error:"読み込みエラー",buffering:"バッファリング中...",signLanguageVideo:"手話動画",closeSignLanguage:"手話動画を閉じる",signLanguageSettings:"手話設定",noChapters:"チャプターがありません",noCaptions:"字幕がありません",auto:"自動",autoQuality:"自動(画質選択不可)",noQuality:"画質選択不可",signLanguageDragResize:"手話動画 - キーボードでドラッグするにはDキーを、サイズ変更するにはRキーを押してください",signLanguageDragActive:"手話動画 - ドラッグモードが有効です。矢印キーで移動、Escapeで終了します。",signLanguageResizeActive:"手話動画 - サイズ変更モードが有効です。左右の矢印キーでサイズ変更、Escapeで終了します。",enableSignDragMode:"ドラッグモードを有効にする。ショートカット:Dキー",disableSignDragMode:"ドラッグモードを無効にする。ショートカット:Dキー",enableSignDragModeAria:"矢印キーでキーボードドラッグモードを有効にする。ショートカット:Dキー",disableSignDragModeAria:"矢印キーでキーボードドラッグモードを無効にする。ショートカット:Dキー",enableSignResizeMode:"サイズ変更モードを有効にする。ショートカット:Rキー",disableSignResizeMode:"サイズ変更モードを無効にする。ショートカット:Rキー",enableSignResizeModeAria:"矢印キーでキーボードサイズ変更モードを有効にする。ショートカット:Rキー",disableSignResizeModeAria:"矢印キーでキーボードサイズ変更モードを無効にする。ショートカット:Rキー",resizeHandle:"{direction}コーナーのサイズ変更",moreOptions:"その他のオプション",noMoreOptions:"追加のオプションはありません"},captions:{off:"オフ",select:"字幕を選択",fontSize:"フォントサイズ",fontFamily:"フォント",color:"テキストの色",backgroundColor:"背景色",opacity:"不透明度"},fontSizes:{small:"小",normal:"標準",large:"大",xlarge:"特大"},fontFamilies:{sansSerif:"サンセリフ",serif:"セリフ",monospace:"等幅"},styleLabels:{textColor:"テキストの色",background:"背景",font:"フォント",fontSize:"フォントサイズ",opacity:"不透明度"},audioDescription:{enable:"音声解説を有効にする",disable:"音声解説を無効にする"},signLanguage:{show:"手話動画を表示",hide:"手話動画を非表示"},transcript:{title:"文字起こし",ariaLabel:"ビデオ文字起こし",close:"文字起こしを閉じる",loading:"文字起こしを読み込み中...",noTranscript:"このビデオの文字起こしはありません。",settings:"文字起こし設定。Enterキーでメニューを開く、またはDキーでドラッグモードを有効にする",keyboardDragMode:"矢印キーでキーボードドラッグモードを切り替え。ショートカット:Dキー",keyboardDragActive:"⌨️ キーボードドラッグモード有効(矢印キーで移動、Shift+矢印キーで大きく移動、DまたはESCで終了)",dragResizePrompt:"Dキーで移動、Rキーでサイズ変更。Homeで位置をリセット、Escで閉じます。",dragModeEnabled:"キーボードドラッグモードを有効にしました。矢印キーで移動、Shift+矢印キーで大きく移動できます。終了するには D または Esc を押します。",dragModeDisabled:"キーボードドラッグモードを無効にしました。",enableDragMode:"ドラッグモードを有効にする。ショートカット:Dキー",disableDragMode:"ドラッグモードを無効にする。ショートカット:Dキー",enableDragModeAria:"矢印キーでキーボードドラッグモードを有効にする。ショートカット:Dキー",disableDragModeAria:"矢印キーでキーボードドラッグモードを無効にする。ショートカット:Dキー",resizeWindow:"ウィンドウのサイズ変更",disableResizeWindow:"サイズ変更モードを無効にする",enableResizeMode:"サイズ変更モードを有効にする。ショートカット:Rキー",disableResizeMode:"サイズ変更モードを無効にする。ショートカット:Rキー",enableResizeModeAria:"矢印キーでキーボードサイズ変更モードを有効にする。ショートカット:Rキー",disableResizeModeAria:"矢印キーでキーボードサイズ変更モードを無効にする。ショートカット:Rキー",resizeModeHint:"リサイズハンドルが有効になりました。辺や角をドラッグして調整します。Esc または R で終了します。",resizeModeEnabled:"サイズ変更モードを有効にしました。辺や角をドラッグして調整します。Esc または R で終了します。",resizeModeDisabled:"サイズ変更モードを無効にしました。",positionReset:"文字起こしの位置をリセットしました。",styleTranscript:"文字起こしスタイル設定を開く",closeMenu:"メニューを閉じる",styleTitle:"文字起こしスタイル",autoscroll:"自動スクロール",settingsMenu:"文字起こしダイアログ設定",showTimestamps:"タイムスタンプを表示",hideTimestamps:"タイムスタンプを非表示",showTimestampsAria:"文字起こしにタイムスタンプを表示",hideTimestampsAria:"文字起こしのタイムスタンプを非表示"},settings:{title:"設定",quality:"画質",speed:"速度",captions:"字幕",language:"言語",reset:"リセット",close:"閉じる"},speeds:{normal:"通常"},time:{display:"時間表示",durationPrefix:"再生時間: ",of:"/",hour:"{count}時間",hours:"{count}時間",minute:"{count}分",minutes:"{count}分",second:"{count}秒",seconds:"{count}秒"},playlist:{title:"プレイリスト",trackOf:"トラック {current}/{total}",nowPlaying:"再生中: トラック {current}/{total}. {title}{artist}",by:" - ",untitled:"タイトルなし",trackUntitled:"トラック {number}",currentlyPlaying:"再生中",notPlaying:"停止中",pressEnterPlay:"Enterキーで再生",pressEnterRestart:"Enterキーで最初から再生",keyboardInstructions:"プレイリストナビゲーション:上下の矢印キーでトラック間を移動します。Page UpまたはPage Downで5トラックをスキップします。Homeで最初のトラックへ、Endで最後のトラックへ移動します。EnterまたはSpaceで選択したトラックを再生します。",endOfPlaylist:"プレイリストの終わりです。{current}/{total}。",beginningOfPlaylist:"プレイリストの始めです。1/{total}。",jumpedToLastTrack:"最後のトラックにジャンプしました。{current}/{total}。",jumpedToFirstTrack:"最初のトラックにジャンプしました。1/{total}。",firstTrack:"最初のトラックです。1/{total}。",lastTrack:"最後のトラックです。{current}/{total}。"}}});function ye(){return{en:Pe}}function Ve(){return Oe}async function Fe(g){let e=Oe[g];if(!e)return null;let t=await e();return t[g]||t.default||null}var Oe,wt,We=x(()=>{xe();Oe={de:()=>Promise.resolve().then(()=>(De(),Ce)),es:()=>Promise.resolve().then(()=>(ze(),Ae)),fr:()=>Promise.resolve().then(()=>(Be(),Re)),ja:()=>Promise.resolve().then(()=>($e(),He))};wt=ye()});var fe,m,H=x(()=>{We();fe=class{constructor(){this.currentLanguage="en",this.translations=ye(),this.loadingPromises=new Map,this.builtInLanguageLoaders=Ve()}setLanguage(e){this.translations[e]?this.currentLanguage=e:(console.warn('Language "'.concat(e,'" not found, falling back to English')),this.currentLanguage="en")}getLanguage(){return this.currentLanguage}async ensureLanguage(e){let t=(e||"").toLowerCase();if(!t)return this.currentLanguage;if(this.translations[t])return t;if(this.loadingPromises.has(t))return await this.loadingPromises.get(t),this.translations[t]?t:null;if(!this.builtInLanguageLoaders[t])return null;let i=(async()=>{try{let s=await Fe(t);s&&(this.translations[t]=s)}catch(s){console.warn('Language "'.concat(t,'" failed to load:'),s)}finally{this.loadingPromises.delete(t)}})();return this.loadingPromises.set(t,i),await i,this.translations[t]?t:null}t(e,t={}){let i=e.split("."),s=this.translations[this.currentLanguage];for(let a of i)if(s&&typeof s=="object"&&a in s)s=s[a];else{s=this.translations.en;for(let n of i)if(s&&typeof s=="object"&&n in s)s=s[n];else return e;break}return typeof s=="string"&&Object.entries(t).forEach(([a,n])=>{s=s.replace(new RegExp("{".concat(a,"}"),"g"),n)}),s}addTranslation(e,t){this.translations[e]||(this.translations[e]={}),Object.assign(this.translations[e],t)}async loadLanguageFromUrl(e,t){if(this.loadingPromises.has(t))return this.loadingPromises.get(t);let i=(async()=>{try{let s=await fetch(t);if(!s.ok)throw new Error("Failed to load language file: ".concat(s.statusText));let a=s.headers.get("content-type")||"",n,l=await s.arrayBuffer(),o=new TextDecoder("utf-8").decode(l);if(a.includes("application/json")||t.endsWith(".json"))n=JSON.parse(o);else if(a.includes("text/yaml")||a.includes("application/x-yaml")||t.endsWith(".yaml")||t.endsWith(".yml"))try{n=JSON.parse(o)}catch(c){if(typeof window!="undefined"&&window.jsyaml)n=window.jsyaml.load(o);else throw console.warn("YAML parsing requires js-yaml library. Please include it or use JSON format."),new Error("YAML parsing not available. Please use JSON format or include js-yaml library.")}else n=JSON.parse(o);return this.addTranslation(e,n),n}catch(s){throw console.error("Error loading language file from ".concat(t,":"),s),s}finally{this.loadingPromises.delete(t)}})();return this.loadingPromises.set(t,i),i}async loadLanguagesFromUrls(e){let t=Object.entries(e).map(([i,s])=>this.loadLanguageFromUrl(i,s));await Promise.all(t)}},m=new fe});var C,se=x(()=>{H();C={formatTime(g,e=!1){if(!isFinite(g)||g<0)return e?"00:00:00":"00:00";let t=Math.floor(g/3600),i=Math.floor(g%3600/60),s=Math.floor(g%60),a=n=>String(n).padStart(2,"0");return t>0||e?"".concat(a(t),":").concat(a(i),":").concat(a(s)):"".concat(a(i),":").concat(a(s))},parseTime(g){let e=g.split(":").map(t=>parseInt(t,10));return e.length===3?e[0]*3600+e[1]*60+e[2]:e.length===2?e[0]*60+e[1]:e.length===1?e[0]:0},formatDuration(g){if(!isFinite(g)||g<0)return m.t("time.seconds",{count:0});let e=Math.floor(g/3600),t=Math.floor(g%3600/60),i=Math.floor(g%60),s=[];if(e>0){let a=e===1?"time.hour":"time.hours";s.push(m.t(a,{count:e}))}if(t>0){let a=t===1?"time.minute":"time.minutes";s.push(m.t(a,{count:t}))}if(i>0||s.length===0){let a=i===1?"time.second":"time.seconds";s.push(m.t(a,{count:i}))}return s.join(", ")},formatPercentage(g,e){return e===0?0:Math.round(g/e*100)}}});function ht(g){return Ne[g]||Ne.play}function k(g,e=""){let t=document.createElement("span");return t.className="vidply-icon ".concat(e).trim(),t.innerHTML=ht(g),t.setAttribute("aria-hidden","true"),t}function Ie(){let g=document.createElementNS("http://www.w3.org/2000/svg","svg");g.setAttribute("class","vidply-play-overlay"),g.setAttribute("viewBox","0 0 80 80"),g.setAttribute("width","80"),g.setAttribute("height","80"),g.setAttribute("aria-hidden","true"),g.setAttribute("role","presentation"),g.style.cursor="pointer";let e=document.createElementNS("http://www.w3.org/2000/svg","defs"),t="vidply-play-shadow-".concat(Math.random().toString(36).substr(2,9)),i=document.createElementNS("http://www.w3.org/2000/svg","filter");i.setAttribute("id",t),i.setAttribute("x","-50%"),i.setAttribute("y","-50%"),i.setAttribute("width","200%"),i.setAttribute("height","200%");let s=document.createElementNS("http://www.w3.org/2000/svg","feGaussianBlur");s.setAttribute("in","SourceAlpha"),s.setAttribute("stdDeviation","3");let a=document.createElementNS("http://www.w3.org/2000/svg","feOffset");a.setAttribute("dx","0"),a.setAttribute("dy","2"),a.setAttribute("result","offsetblur");let n=document.createElementNS("http://www.w3.org/2000/svg","feComponentTransfer"),l=document.createElementNS("http://www.w3.org/2000/svg","feFuncA");l.setAttribute("type","linear"),l.setAttribute("slope","0.3"),n.appendChild(l);let o=document.createElementNS("http://www.w3.org/2000/svg","feMerge"),c=document.createElementNS("http://www.w3.org/2000/svg","feMergeNode"),r=document.createElementNS("http://www.w3.org/2000/svg","feMergeNode");r.setAttribute("in","SourceGraphic"),o.appendChild(c),o.appendChild(r),i.appendChild(s),i.appendChild(a),i.appendChild(n),i.appendChild(o),e.appendChild(i),g.appendChild(e);let d=document.createElementNS("http://www.w3.org/2000/svg","circle");d.setAttribute("cx","40"),d.setAttribute("cy","40"),d.setAttribute("r","40"),d.setAttribute("fill","rgba(255, 255, 255, 0.95)"),d.setAttribute("filter","url(#".concat(t,")")),d.setAttribute("class","vidply-play-overlay-bg"),g.appendChild(d);let h=document.createElementNS("http://www.w3.org/2000/svg","polygon");return h.setAttribute("points","32,28 32,52 54,40"),h.setAttribute("fill","#0a406e"),h.setAttribute("class","vidply-play-overlay-icon"),g.appendChild(h),g}var ct,dt,Ne,_=x(()=>{ct={play:'<path d="M8 5v14l11-7z"/>',pause:'<path d="M6 4h4v16H6V4zm8 0h4v16h-4V4z"/>',stop:'<rect x="6" y="6" width="12" height="12"/>',rewind:'<path d="M11 18V6l-8.5 6 8.5 6zm.5-6l8.5 6V6l-8.5 6z"/>',forward:'<path d="M4 18l8.5-6L4 6v12zm9-12v12l8.5-6L13 6z"/>',skipPrevious:'<path d="M6 6h2v12H6V6zm3 6l8.5 6V6L9 12z"/>',skipNext:'<path d="M16 6h2v12h-2V6zM6 6l8.5 6L6 18V6z"/>',restart:'<path d="M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z"/>',volumeHigh:'<path d="M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z"/>',volumeMedium:'<path d="M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02z"/>',volumeLow:'<path d="M7 9v6h4l5 5V4l-5 5H7z"/>',volumeMuted:'<path d="M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z"/>',fullscreen:'<path d="M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"/>',fullscreenExit:'<path d="M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"/>',settings:'<path d="M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94L14.4 2.81c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"/>',captions:'<path d="M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-8 7H9.5v-.5h-2v3h2V13H11v1c0 .55-.45 1-1 1H7c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1zm7 0h-1.5v-.5h-2v3h2V13H18v1c0 .55-.45 1-1 1h-3c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1z"/>',captionsOff:'<path d="M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-8 7H9.5v-.5h-2v3h2V13H11v1c0 .55-.45 1-1 1H7c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1zm7 0h-1.5v-.5h-2v3h2V13H18v1c0 .55-.45 1-1 1h-3c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1z"/><path d="M0 0h24v24H0z" fill="none"/>',pip:'<path d="M19 7h-8v6h8V7zm2-4H3c-1.1 0-2 .9-2 2v14c0 1.1.9 1.98 2 1.98h18c1.1 0 2-.88 2-1.98V5c0-1.1-.9-2-2-2zm0 16.01H3V4.98h18v14.03z"/>',speed:'<path d="M20.38 8.57l-1.23 1.85a8 8 0 0 1-.22 7.58H5.07A8 8 0 0 1 15.58 6.85l1.85-1.23A10 10 0 0 0 3.35 19a2 2 0 0 0 1.72 1h13.85a2 2 0 0 0 1.74-1 10 10 0 0 0-.27-10.44z"/><path d="M10.59 15.41a2 2 0 0 0 2.83 0l5.66-8.49-8.49 5.66a2 2 0 0 0 0 2.83z"/>',close:'<path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/>',check:'<path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/>',loading:'<path d="M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z"/>',error:'<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"/>',playlist:'<path d="M15 6H3v2h12V6zm0 4H3v2h12v-2zM3 16h8v-2H3v2zM17 6v8.18c-.31-.11-.65-.18-1-.18-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3V8h3V6h-5z"/>',hd:'<path d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-8 12H9.5v-2h-2v2H6V9h1.5v2.5h2V9H11v6zm7-1c0 .55-.45 1-1 1h-.75v1.5h-1.5V15H14c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v4zm-3.5-.5h2v-3h-2v3z"/>',transcript:'<path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z"/>',chapters:'<path d="M3 5h2v2H3V5zm0 4h2v2H3V9zm0 4h2v2H3v-2zm0 4h2v2H3v-2zM7 5h14v2H7V5zm0 4h14v2H7V9zm0 4h14v2H7v-2zm0 4h14v2H7v-2z"/>',audioDescription:'<rect x="2" y="5" width="20" height="14" rx="2" fill="#ffffff" stroke="#ffffff" stroke-width="2"/><text x="12" y="16" font-family="Arial, sans-serif" font-size="10" font-weight="bold" text-anchor="middle" fill="#1a1a1a">AD</text>',audioDescriptionOn:'<rect x="2" y="5" width="20" height="14" rx="2" fill="none" stroke="currentColor" stroke-width="2"/><text x="12" y="16" font-family="Arial, sans-serif" font-size="10" font-weight="bold" text-anchor="middle" fill="currentColor">AD</text>',signLanguage:'<g transform="scale(1.5)"><path d="M16 11.3c-.1-.9-4.8 1.3-5.4 1.1-2.6-1 5.8-1.3 5.1-2.9s-5.1 1.5-6 1.4C6.5 9.4 16.5 9.1 13.5 8c-1.9-.6-8.8 2.9-6.8.4.7-.6.7-1.9-.7-1.7-9.7 7.2-.7 12.2 8.8 7 0-1.3-3.5.4-4.1.4-2.6 0 5.6-2 5.4-3ZM3.9 7.8c3.2-4.2 3.7 1.2 6 .1s.2-.2.2-.3c.7-2.7 2.5-7.5-1.5-1.3-1.6 0 1.1-4 1-4.6C8.9-1 7.3 4.4 7.2 4.9c-1.6.7-.9-1.4-.7-1.5 3-6-.6-3.1-.9.4-2.5 1.8 0-2.8 0-3.5C2.8-.9 4 9.4 1.1 4.9S.1 4.6 0 5c-.4 2.7 2.6 7.2 3.9 2.8Z"/></g>',signLanguageOn:'<g transform="scale(1.5)"><path d="M16 11.3c-.1-.9-4.8 1.3-5.4 1.1-2.6-1 5.8-1.3 5.1-2.9s-5.1 1.5-6 1.4C6.5 9.4 16.5 9.1 13.5 8c-1.9-.6-8.8 2.9-6.8.4.7-.6.7-1.9-.7-1.7-9.7 7.2-.7 12.2 8.8 7 0-1.3-3.5.4-4.1.4-2.6 0 5.6-2 5.4-3ZM3.9 7.8c3.2-4.2 3.7 1.2 6 .1s.2-.2.2-.3c.7-2.7 2.5-7.5-1.5-1.3-1.6 0 1.1-4 1-4.6C8.9-1 7.3 4.4 7.2 4.9c-1.6.7-.9-1.4-.7-1.5 3-6-.6-3.1-.9.4-2.5 1.8 0-2.8 0-3.5C2.8-.9 4 9.4 1.1 4.9S.1 4.6 0 5c-.4 2.7 2.6 7.2 3.9 2.8Z"/></g>',music:'<path d="M12 3v9.28c-.47-.17-.97-.28-1.5-.28C8.01 12 6 14.01 6 16.5S8.01 21 10.5 21c2.31 0 4.2-1.75 4.45-4H15V6h4V3h-7zm-1.5 16c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"/>',moreVertical:'<path d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/>',move:'<path d="M10 9h4V6h3l-5-5-5 5h3v3zm-1 1H6V7l-5 5 5 5v-3h3v-4zm14 2l-5-5v3h-3v4h3v3l5-5zm-9 3h-4v3H7l5 5 5-5h-3v-3z"/>',resize:'<path d="M21.71 11.29l-9-9c-.39-.39-1.02-.39-1.41 0l-9 9c-.39.39-.39 1.02 0 1.41l9 9c.39.39 1.02.39 1.41 0l9-9c.39-.38.39-1.01 0-1.41zM14 14.5V12h-4v2.5L7 11l3-3.5V10h4V7.5l3 3.5-3 3.5z"/>',clock:'<path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"/><path d="M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"/>'},dt=g=>'<svg viewBox="0 0 24 24" fill="currentColor">'.concat(g,"</svg>"),Ne=Object.fromEntries(Object.entries(ct).map(([g,e])=>[g,dt(e)]))});function F(g,{delay:e=0,preventScroll:t=!0}={}){g&&requestAnimationFrame(()=>{setTimeout(()=>{g&&document.contains(g)&&g.focus({preventScroll:t})},e)})}function qe(g,e,t={}){if(!g)return;let i=g.querySelector(e);i&&F(i,t)}var ae=x(()=>{});var I,oe=x(()=>{I=class{constructor(e="vidply"){this.namespace=e,this.storage=this.isStorageAvailable()?localStorage:null}isStorageAvailable(){try{let e="__storage_test__";return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch(e){return!1}}getKey(e){return"".concat(this.namespace,"_").concat(e)}set(e,t){if(!this.storage)return!1;try{let i=this.getKey(e);return this.storage.setItem(i,JSON.stringify(t)),!0}catch(i){return console.warn("Failed to save to localStorage:",i),!1}}get(e,t=null){if(!this.storage)return t;try{let i=this.getKey(e),s=this.storage.getItem(i);return s?JSON.parse(s):t}catch(i){return console.warn("Failed to read from localStorage:",i),t}}remove(e){if(!this.storage)return!1;try{let t=this.getKey(e);return this.storage.removeItem(t),!0}catch(t){return console.warn("Failed to remove from localStorage:",t),!1}}clear(){if(!this.storage)return!1;try{return Object.keys(this.storage).forEach(t=>{t.startsWith(this.namespace)&&this.storage.removeItem(t)}),!0}catch(e){return console.warn("Failed to clear localStorage:",e),!1}}saveTranscriptPreferences(e){return this.set("transcript_preferences",e)}getTranscriptPreferences(){return this.get("transcript_preferences",null)}saveCaptionPreferences(e){return this.set("caption_preferences",e)}getCaptionPreferences(){return this.get("caption_preferences",null)}savePlayerPreferences(e){return this.set("player_preferences",e)}getPlayerPreferences(){return this.get("player_preferences",null)}saveSignLanguagePreferences(e){return this.set("sign_language_preferences",e)}getSignLanguagePreferences(){return this.get("sign_language_preferences",null)}}});var _e={};B(_e,{HTML5Renderer:()=>ee});var ee,be=x(()=>{ee=class{constructor(e){this.player=e,this.media=e.element}async init(){this.media.controls=!1,this.media.removeAttribute("controls"),this.attachEvents(),this.media.preload=this.player.options.preload,this.media.load(),this.player.container&&this.player.container.classList.remove("vidply-external-controls")}attachEvents(){this.media.addEventListener("loadedmetadata",()=>{this.player.state.duration=this.media.duration,this.player.emit("loadedmetadata")}),this.media.addEventListener("play",()=>{this.player.state.playing=!0,this.player.state.paused=!1,this.player.state.ended=!1,this.player.emit("play"),this.player.options.onPlay&&this.player.options.onPlay.call(this.player),this.player.options.pauseOthersOnPlay&&this.pauseOtherPlayers()}),this.media.addEventListener("pause",()=>{this.player.state.playing=!1,this.player.state.paused=!0,this.player.emit("pause"),this.player.options.onPause&&this.player.options.onPause.call(this.player)}),this.media.addEventListener("ended",()=>{this.player.state.playing=!1,this.player.state.paused=!0,this.player.state.ended=!0,this.player.emit("ended"),this.player.options.onEnded&&this.player.options.onEnded.call(this.player),this.player.options.loop&&(this.player.seek(0),this.player.play())}),this.media.addEventListener("timeupdate",()=>{this.player.state.currentTime=this.media.currentTime,this.player.emit("timeupdate",this.media.currentTime),this.player.options.onTimeUpdate&&this.player.options.onTimeUpdate.call(this.player,this.media.currentTime)}),this.media.addEventListener("volumechange",()=>{this.player.state.volume=this.media.volume,this.player.state.muted=this.media.muted,this.player.emit("volumechange",this.media.volume),this.player.options.onVolumeChange&&this.player.options.onVolumeChange.call(this.player,this.media.volume)}),this.media.addEventListener("seeking",()=>{this.player.state.seeking=!0,this.player.emit("seeking")}),this.media.addEventListener("seeked",()=>{this.player.state.seeking=!1,this.player.emit("seeked")}),this.media.addEventListener("waiting",()=>{this.player.state.buffering=!0,this.player.emit("waiting")}),this.media.addEventListener("canplay",()=>{this.player.state.buffering=!1,this.player.emit("canplay")}),this.media.addEventListener("progress",()=>{if(this.media.buffered.length>0){let e=this.media.buffered.end(this.media.buffered.length-1);this.player.emit("progress",e)}}),this.media.addEventListener("error",e=>{this.player.handleError(this.media.error)}),this.media.addEventListener("ratechange",()=>{this.player.state.playbackSpeed=this.media.playbackRate,this.player.emit("ratechange",this.media.playbackRate)})}pauseOtherPlayers(){document.querySelectorAll(".vidply-player").forEach(t=>{if(t!==this.player.container){let i=t.querySelector("video, audio");i&&!i.paused&&i.pause()}})}play(){let e=window.scrollX,t=window.scrollY,i=this.media.play();window.scrollTo(e,t),i!==void 0&&i.catch(s=>{if(this.player.log("Play failed:",s,"warn"),this.player.options.autoplay&&!this.player.state.muted){this.player.log("Retrying play with muted audio","info"),this.media.muted=!0;let a=window.scrollX,n=window.scrollY;this.media.play().then(()=>{window.scrollTo(a,n)}).catch(l=>{this.player.handleError(l)})}})}pause(){this.media.pause()}seek(e){this.media.currentTime=e}setVolume(e){this.media.volume=e}setMuted(e){this.media.muted=e}setPlaybackSpeed(e){this.media.playbackRate=e}getQualities(){let e=Array.from(this.media.querySelectorAll("source"));return e.length<=1?[]:e.map((t,i)=>{let s=t.getAttribute("data-quality")||t.getAttribute("label")||"",a=t.getAttribute("data-height")||this.extractHeightFromLabel(s),n=t.getAttribute("data-width")||"";return{index:i,height:a?parseInt(a):0,width:n?parseInt(n):0,src:t.src,type:t.type,name:s||(a?"".concat(a,"p"):"Quality ".concat(i+1))}}).filter(t=>t.height>0)}extractHeightFromLabel(e){let t=e.match(/(\d+)p/i);return t?parseInt(t[1]):0}switchQuality(e){let t=this.getQualities();if(e<0||e>=t.length){this.player.log("Invalid quality index","warn");return}let i=t[e],s=this.media.currentTime,a=!this.media.paused;if(this.media.currentSrc===i.src){this.player.log("Already at this quality level","info");return}this.player.log("Switching to quality: ".concat(i.name),"info"),this.media.src=i.src;let l=()=>{this.media.removeEventListener("loadedmetadata",l),this.media.currentTime=s,a&&this.media.play().catch(o=>{this.player.log("Failed to resume playback after quality switch","warn")}),this.player.emit("qualitychange",{quality:i.name,index:e})};this.media.addEventListener("loadedmetadata",l),this.media.load()}getCurrentQuality(){let e=this.getQualities(),t=this.media.currentSrc;for(let i=0;i<e.length;i++)if(e[i].src===t)return i;return 0}destroy(){this.media.removeEventListener("loadedmetadata",()=>{}),this.media.removeEventListener("play",()=>{}),this.media.removeEventListener("pause",()=>{})}}});var q,ce=x(()=>{q=class{constructor(e,t={}){this.element=e,this.options=O({dragHandle:null,resizeHandles:[],onDragStart:null,onDrag:null,onDragEnd:null,onResizeStart:null,onResize:null,onResizeEnd:null,constrainToViewport:!0,minWidth:150,minHeight:100,maintainAspectRatio:!1,keyboardDragKey:"d",keyboardResizeKey:"r",keyboardStep:5,keyboardStepLarge:10,maxWidth:null,maxHeight:null,pointerResizeIndicatorText:null,onPointerResizeToggle:null,classPrefix:"draggable",storage:null,storageKey:null},t),this.isDragging=!1,this.isResizing=!1,this.resizeDirection=null,this.dragOffsetX=0,this.dragOffsetY=0,this.positionOffsetX=0,this.positionOffsetY=0,this.initialMouseX=0,this.initialMouseY=0,this.needsPositionConversion=!1,this.resizeStartX=0,this.resizeStartY=0,this.resizeStartWidth=0,this.resizeStartHeight=0,this.resizeStartLeft=0,this.resizeStartTop=0,this.keyboardDragMode=!1,this.keyboardResizeMode=!1,this.pointerResizeMode=!1,this.manuallyPositioned=!1,this.resizeHandlesManaged=new Map,this.resizeIndicatorElement=null,this.handlers={mousedown:this.onMouseDown.bind(this),mousemove:this.onMouseMove.bind(this),mouseup:this.onMouseUp.bind(this),touchstart:this.onTouchStart.bind(this),touchmove:this.onTouchMove.bind(this),touchend:this.onTouchEnd.bind(this),keydown:this.onKeyDown.bind(this),resizeHandleMousedown:this.onResizeHandleMouseDown.bind(this)},this.init()}hasManagedResizeHandles(){return Array.from(this.resizeHandlesManaged.values()).some(Boolean)}storeOriginalHandleDisplay(e){e.dataset.originalDisplay||(e.dataset.originalDisplay=e.style.display||"")}hideResizeHandle(e){e.style.display="none",e.setAttribute("aria-hidden","true")}showResizeHandle(e){let t=e.dataset.originalDisplay!==void 0?e.dataset.originalDisplay:"";e.style.display=t,e.removeAttribute("aria-hidden")}setManagedHandlesVisible(e){!this.options.resizeHandles||this.options.resizeHandles.length===0||this.options.resizeHandles.forEach(t=>{this.resizeHandlesManaged.get(t)&&(e?this.showResizeHandle(t):this.hideResizeHandle(t))})}init(){let e=this.options.dragHandle||this.element;e.addEventListener("mousedown",this.handlers.mousedown),e.addEventListener("touchstart",this.handlers.touchstart),document.addEventListener("mousemove",this.handlers.mousemove),document.addEventListener("mouseup",this.handlers.mouseup),document.addEventListener("touchmove",this.handlers.touchmove,{passive:!1}),document.addEventListener("touchend",this.handlers.touchend),this.element.addEventListener("keydown",this.handlers.keydown),this.options.resizeHandles&&this.options.resizeHandles.length>0&&this.options.resizeHandles.forEach(t=>{t.addEventListener("mousedown",this.handlers.resizeHandleMousedown),t.addEventListener("touchstart",this.handlers.resizeHandleMousedown);let i=t.dataset.vidplyManagedResize==="true";this.resizeHandlesManaged.set(t,i),i&&(this.storeOriginalHandleDisplay(t),this.hideResizeHandle(t))})}onMouseDown(e){e.target.classList.contains("".concat(this.options.classPrefix,"-resize-handle"))||this.options.onDragStart&&!this.options.onDragStart(e)||(this.startDragging(e.clientX,e.clientY),e.preventDefault())}onTouchStart(e){if(e.target.classList.contains("".concat(this.options.classPrefix,"-resize-handle"))||this.options.onDragStart&&!this.options.onDragStart(e))return;let t=e.touches[0];this.startDragging(t.clientX,t.clientY)}onResizeHandleMouseDown(e){var a,n,l,o;e.preventDefault(),e.stopPropagation();let t=e.target;this.resizeDirection=t.getAttribute("data-direction");let i=e.clientX||((n=(a=e.touches)==null?void 0:a[0])==null?void 0:n.clientX),s=e.clientY||((o=(l=e.touches)==null?void 0:l[0])==null?void 0:o.clientY);this.startResizing(i,s)}onMouseMove(e){this.isDragging?(this.drag(e.clientX,e.clientY),e.preventDefault()):this.isResizing&&(this.resize(e.clientX,e.clientY),e.preventDefault())}onTouchMove(e){if(this.isDragging||this.isResizing){let t=e.touches[0];this.isDragging?this.drag(t.clientX,t.clientY):this.resize(t.clientX,t.clientY),e.preventDefault()}}onMouseUp(){this.isDragging?this.stopDragging():this.isResizing&&this.stopResizing()}onTouchEnd(){this.isDragging?this.stopDragging():this.isResizing&&this.stopResizing()}onKeyDown(e){if(e.key.toLowerCase()===this.options.keyboardDragKey.toLowerCase()){e.preventDefault(),this.toggleKeyboardDragMode();return}if(e.key.toLowerCase()===this.options.keyboardResizeKey.toLowerCase()){e.preventDefault(),this.hasManagedResizeHandles()?this.togglePointerResizeMode():this.toggleKeyboardResizeMode();return}if(e.key==="Escape"){if(this.pointerResizeMode){e.preventDefault(),this.disablePointerResizeMode();return}if(this.keyboardDragMode||this.keyboardResizeMode){e.preventDefault(),this.disableKeyboardDragMode(),this.disableKeyboardResizeMode();return}}["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"].includes(e.key)&&(this.keyboardDragMode?(e.preventDefault(),e.stopPropagation(),this.keyboardDrag(e.key,e.shiftKey)):this.keyboardResizeMode&&(e.preventDefault(),e.stopPropagation(),this.keyboardResize(e.key,e.shiftKey))),e.key==="Home"&&(this.keyboardDragMode||this.keyboardResizeMode)&&(e.preventDefault(),this.resetPosition())}startDragging(e,t){let i=this.element.getBoundingClientRect(),s=window.getComputedStyle(this.element),a=s.right!=="auto"||s.bottom!=="auto"||s.transform!=="none";if(this.positionOffsetX=0,this.positionOffsetY=0,a){let l,o;if(s.position==="absolute"){let h=(this.element.offsetParent||document.body).getBoundingClientRect();l=i.left-h.left,o=i.top-h.top,this.positionOffsetX=h.left,this.positionOffsetY=h.top}else if(s.position==="fixed"){let d=parseFloat(s.left),h=parseFloat(s.top),p=Number.isFinite(d),y=Number.isFinite(h);l=p?d:i.left,o=y?h:i.top,this.positionOffsetX=i.left-l,this.positionOffsetY=i.top-o}else l=i.left,o=i.top,this.positionOffsetX=i.left-l,this.positionOffsetY=i.top-o;let r=this.element.style.cssText.split(";").filter(d=>{let h=d.trim();if(!h)return!1;let p=h.indexOf(":");if(p===-1)return!1;let y=h.substring(0,p).trim(),b=h.substring(p+1).trim();return!(!b||b===""||y==="right"||y==="bottom"||y==="transform"||y==="left"||y==="top"||y==="inset"||y.startsWith("border-image"))}).join("; ");r&&(r+="; "),r+="left: ".concat(l,"px; top: ").concat(o,"px; right: auto; bottom: auto; transform: none"),this.element.style.cssText=r}let n=this.element.getBoundingClientRect();this.dragOffsetX=e-n.left,this.dragOffsetY=t-n.top,this.isDragging=!0,this.element.classList.add("".concat(this.options.classPrefix,"-dragging")),document.body.style.cursor="grabbing",document.body.style.userSelect="none"}drag(e,t){if(!this.isDragging)return;let i=e-this.dragOffsetX-this.positionOffsetX,s=t-this.dragOffsetY-this.positionOffsetY;if(this.options.constrainToViewport){let a=this.element.getBoundingClientRect(),n=document.documentElement.clientWidth,l=document.documentElement.clientHeight,o=100,c=-(a.width-o),r=-(a.height-o),d=n-o,h=l-o;i=Math.max(c,Math.min(i,d)),s=Math.max(r,Math.min(s,h))}this.element.style.left="".concat(i,"px"),this.element.style.top="".concat(s,"px"),this.options.onDrag&&this.options.onDrag({x:i,y:s})}stopDragging(){this.isDragging=!1,this.element.classList.remove("".concat(this.options.classPrefix,"-dragging")),document.body.style.cursor="",document.body.style.userSelect="",this.manuallyPositioned=!0,this.options.onDragEnd&&this.options.onDragEnd()}startResizing(e,t){this.isResizing=!0,this.resizeStartX=e,this.resizeStartY=t;let i=this.element.getBoundingClientRect();this.resizeStartWidth=i.width,this.resizeStartHeight=i.height,this.resizeStartLeft=i.left,this.resizeStartTop=i.top,this.element.classList.add("".concat(this.options.classPrefix,"-resizing")),document.body.style.userSelect="none",this.options.onResizeStart&&this.options.onResizeStart()}resize(e,t){if(!this.isResizing)return;let i=e-this.resizeStartX,s=t-this.resizeStartY,a=this.resizeStartWidth,n=this.resizeStartHeight,l=this.resizeStartLeft,o=this.resizeStartTop;if(this.resizeDirection.includes("e")&&(a=Math.max(this.options.minWidth,this.resizeStartWidth+i)),this.resizeDirection.includes("w")){let r=Math.max(this.options.minWidth,this.resizeStartWidth-i);l=this.resizeStartLeft+(this.resizeStartWidth-r),a=r}let c=typeof this.options.maxWidth=="function"?this.options.maxWidth():this.options.maxWidth;if(Number.isFinite(c)){let r=Math.min(a,c);r!==a&&this.resizeDirection.includes("w")&&(l+=a-r),a=r}if(!this.options.maintainAspectRatio){if(this.resizeDirection.includes("s")&&(n=Math.max(this.options.minHeight,this.resizeStartHeight+s)),this.resizeDirection.includes("n")){let d=Math.max(this.options.minHeight,this.resizeStartHeight-s);o=this.resizeStartTop+(this.resizeStartHeight-d),n=d}let r=typeof this.options.maxHeight=="function"?this.options.maxHeight():this.options.maxHeight;if(Number.isFinite(r)){let d=Math.min(n,r);d!==n&&this.resizeDirection.includes("n")&&(o+=n-d),n=d}}this.element.style.width="".concat(a,"px"),this.options.maintainAspectRatio?this.element.style.height="auto":this.element.style.height="".concat(n,"px"),this.resizeDirection.includes("w")&&(this.element.style.left="".concat(l,"px")),this.resizeDirection.includes("n")&&!this.options.maintainAspectRatio&&(this.element.style.top="".concat(o,"px")),this.options.onResize&&this.options.onResize({width:a,height:n,left:l,top:o})}stopResizing(){this.isResizing=!1,this.resizeDirection=null,this.element.classList.remove("".concat(this.options.classPrefix,"-resizing")),document.body.style.userSelect="",this.manuallyPositioned=!0,this.options.onResizeEnd&&this.options.onResizeEnd()}toggleKeyboardDragMode(){this.keyboardDragMode?this.disableKeyboardDragMode():this.enableKeyboardDragMode()}enableKeyboardDragMode(){this.keyboardDragMode=!0,this.keyboardResizeMode=!1,this.element.classList.add("".concat(this.options.classPrefix,"-keyboard-drag")),this.element.classList.remove("".concat(this.options.classPrefix,"-keyboard-resize")),this.focusElement()}disableKeyboardDragMode(){this.keyboardDragMode=!1,this.element.classList.remove("".concat(this.options.classPrefix,"-keyboard-drag"))}toggleKeyboardResizeMode(){this.keyboardResizeMode?this.disableKeyboardResizeMode():this.enableKeyboardResizeMode()}enableKeyboardResizeMode(){this.keyboardResizeMode=!0,this.keyboardDragMode=!1,this.element.classList.add("".concat(this.options.classPrefix,"-keyboard-resize")),this.element.classList.remove("".concat(this.options.classPrefix,"-keyboard-drag")),this.focusElement()}disableKeyboardResizeMode(){this.keyboardResizeMode=!1,this.element.classList.remove("".concat(this.options.classPrefix,"-keyboard-resize"))}enablePointerResizeMode({focus:e=!0}={}){if(!this.hasManagedResizeHandles()){this.enableKeyboardResizeMode();return}this.pointerResizeMode||(this.pointerResizeMode=!0,this.setManagedHandlesVisible(!0),this.element.classList.add("".concat(this.options.classPrefix,"-resizable")),this.enableKeyboardResizeMode(),e&&this.focusElement(),typeof this.options.onPointerResizeToggle=="function"&&this.options.onPointerResizeToggle(!0))}disablePointerResizeMode({focus:e=!1}={}){this.pointerResizeMode&&(this.pointerResizeMode=!1,this.setManagedHandlesVisible(!1),this.element.classList.remove("".concat(this.options.classPrefix,"-resizable")),this.disableKeyboardResizeMode(),e&&this.focusElement(),typeof this.options.onPointerResizeToggle=="function"&&this.options.onPointerResizeToggle(!1))}togglePointerResizeMode(){return this.pointerResizeMode?this.disablePointerResizeMode():this.enablePointerResizeMode(),this.pointerResizeMode}focusElement(){if(typeof this.element.focus=="function")try{this.element.focus({preventScroll:!0})}catch(e){this.element.focus()}}keyboardDrag(e,t){let i=t?this.options.keyboardStepLarge:this.options.keyboardStep,s=parseFloat(this.element.style.left)||0,a=parseFloat(this.element.style.top)||0;if(window.getComputedStyle(this.element).transform!=="none"){let c=this.element.getBoundingClientRect();s=c.left,a=c.top,this.element.style.transform="none",this.element.style.left="".concat(s,"px"),this.element.style.top="".concat(a,"px")}let l=s,o=a;switch(e){case"ArrowLeft":l-=i;break;case"ArrowRight":l+=i;break;case"ArrowUp":o-=i;break;case"ArrowDown":o+=i;break}this.element.style.left="".concat(l,"px"),this.element.style.top="".concat(o,"px"),this.options.onDrag&&this.options.onDrag({x:l,y:o})}keyboardResize(e,t){let i=t?this.options.keyboardStepLarge:this.options.keyboardStep,s=this.element.getBoundingClientRect(),a=s.width,n=s.height;switch(e){case"ArrowLeft":a-=i;break;case"ArrowRight":a+=i;break;case"ArrowUp":this.options.maintainAspectRatio?a+=i:n-=i;break;case"ArrowDown":this.options.maintainAspectRatio?a-=i:n+=i;break}a=Math.max(this.options.minWidth,a),n=Math.max(this.options.minHeight,n),this.element.style.width="".concat(a,"px"),this.options.maintainAspectRatio?this.element.style.height="auto":this.element.style.height="".concat(n,"px"),this.options.onResize&&this.options.onResize({width:a,height:n})}resetPosition(){this.element.style.left="50%",this.element.style.top="50%",this.element.style.transform="translate(-50%, -50%)",this.element.style.right="",this.element.style.bottom="",this.manuallyPositioned=!1,this.options.onDrag&&this.options.onDrag({centered:!0})}destroy(){let e=this.options.dragHandle||this.element;this.disablePointerResizeMode(),e.removeEventListener("mousedown",this.handlers.mousedown),e.removeEventListener("touchstart",this.handlers.touchstart),document.removeEventListener("mousemove",this.handlers.mousemove),document.removeEventListener("mouseup",this.handlers.mouseup),document.removeEventListener("touchmove",this.handlers.touchmove),document.removeEventListener("touchend",this.handlers.touchend),this.element.removeEventListener("keydown",this.handlers.keydown),this.options.resizeHandles&&this.options.resizeHandles.length>0&&this.options.resizeHandles.forEach(t=>{t.removeEventListener("mousedown",this.handlers.resizeHandleMousedown),t.removeEventListener("touchstart",this.handlers.resizeHandleMousedown)}),this.element.classList.remove("".concat(this.options.classPrefix,"-dragging"),"".concat(this.options.classPrefix,"-resizing"),"".concat(this.options.classPrefix,"-keyboard-drag"),"".concat(this.options.classPrefix,"-keyboard-resize"))}}});function z({classPrefix:g,itemClass:e,icon:t,label:i,ariaLabel:s,onClick:a,hasTextClass:n=!1}){let l=typeof i=="string"&&(i.startsWith("transcript.")||i.startsWith("player.")||i.startsWith("settings.")),o=s||l&&m.t(i)||i,c=u.createElement("button",{className:e,attributes:{type:"button","aria-label":o,tabindex:"-1"}});t&&c.appendChild(k(t));let d=typeof i=="string"&&(i.startsWith("transcript.")||i.startsWith("player.")||i.startsWith("settings."))&&m.t(i)||i,h=u.createElement("span",{textContent:d,className:n?"".concat(g,"-settings-text"):void 0,attributes:{"aria-hidden":"true"}});return c.appendChild(h),a&&c.addEventListener("click",a),c}function W(g,e,t,i){if(!g)return;let s=Array.from(g.querySelectorAll(t));if(s.length===0)return;let a=n=>{let l=s.indexOf(document.activeElement);switch(n.key){case"ArrowDown":n.preventDefault(),n.stopPropagation();let o=(l+1)%s.length;s.forEach((d,h)=>{d.setAttribute("tabindex",h===o?"0":"-1")}),s[o].focus({preventScroll:!1}),s[o].scrollIntoView({behavior:"smooth",block:"nearest"});break;case"ArrowUp":n.preventDefault(),n.stopPropagation();let c=(l-1+s.length)%s.length;s.forEach((d,h)=>{d.setAttribute("tabindex",h===c?"0":"-1")}),s[c].focus({preventScroll:!1}),s[c].scrollIntoView({behavior:"smooth",block:"nearest"});break;case"Home":n.preventDefault(),n.stopPropagation(),s.forEach((d,h)=>{d.setAttribute("tabindex",h===0?"0":"-1")}),s[0].focus({preventScroll:!1}),s[0].scrollIntoView({behavior:"smooth",block:"nearest"});break;case"End":n.preventDefault(),n.stopPropagation();let r=s.length-1;s.forEach((d,h)=>{d.setAttribute("tabindex",h===r?"0":"-1")}),s[r].focus({preventScroll:!1}),s[r].scrollIntoView({behavior:"smooth",block:"nearest"});break;case"Enter":case" ":n.preventDefault(),n.stopPropagation(),document.activeElement&&s.includes(document.activeElement)&&(document.activeElement.click(),i&&setTimeout(()=>{e&&document.contains(e)&&e.focus()},0));break;case"Escape":n.preventDefault(),n.stopPropagation(),i&&i();break}};return g.addEventListener("keydown",a,!0),a}function Q(g,e,t=0){g&&setTimeout(()=>{let i=Array.from(g.querySelectorAll(e));i.length>0&&(i.forEach((s,a)=>{s.setAttribute("tabindex",a===0?"0":"-1")}),F(i[0],{delay:0}),i[0].scrollIntoView({behavior:"smooth",block:"nearest"}))},t)}var de=x(()=>{V();_();H();ae()});function Y({classPrefix:g,labelClass:e,selectClass:t,labelText:i,selectId:s,hidden:a=!1,onChange:n=null,options:l=[]}){let c=typeof i=="string"&&(i.startsWith("transcript.")||i.startsWith("player.")||i.startsWith("settings.")||i.startsWith("captions."))&&m.t(i)||i,r=u.createElement("label",{className:e,textContent:c,attributes:{for:s,style:a?"display: none;":void 0}}),d=u.createElement("select",{className:t,attributes:{id:s,style:a?"display: none;":void 0}});return l.forEach(h=>{let p=u.createElement("option",{textContent:h.text,attributes:{value:h.value,selected:h.selected?"selected":void 0}});d.appendChild(p)}),n&&d.addEventListener("change",n),{label:r,select:d}}function J(g){g&&["mousedown","click"].forEach(e=>{g.addEventListener(e,t=>{t.stopPropagation()})})}var he=x(()=>{V();H()});var Ke={};B(Ke,{TranscriptManager:()=>ve});var ve,Ue=x(()=>{V();se();_();H();oe();ae();de();ce();he();ve=class{constructor(e){var i,s;this.player=e,this.transcriptWindow=null,this.transcriptEntries=[],this.metadataCues=[],this.currentActiveEntry=null,this.isVisible=!1,this.storage=new I("vidply"),this.draggableResizable=null,this.settingsMenuVisible=!1,this.settingsMenu=null,this.settingsButton=null,this.settingsMenuJustOpened=!1,this.resizeOptionButton=null,this.resizeOptionText=null,this.dragOptionButton=null,this.dragOptionText=null,this.resizeModeIndicator=null,this.resizeModeIndicatorTimeout=null,this.transcriptResizeHandles=[],this.liveRegion=null,this.styleDialog=null,this.styleDialogVisible=!1,this.styleDialogJustOpened=!1,this.languageSelector=null,this.languageLabel=null,this.currentTranscriptLanguage=null,this.availableTranscriptLanguages=[],this.languageSelectorHandler=null;let t=this.storage.getTranscriptPreferences();this.autoscrollEnabled=(t==null?void 0:t.autoscroll)!==void 0?t.autoscroll:!0,this.showTimestamps=(t==null?void 0:t.showTimestamps)!==void 0?t.showTimestamps:!1,this.transcriptStyle={fontSize:(t==null?void 0:t.fontSize)||this.player.options.transcriptFontSize||"100%",fontFamily:(t==null?void 0:t.fontFamily)||this.player.options.transcriptFontFamily||"sans-serif",color:(t==null?void 0:t.color)||this.player.options.transcriptColor||"#ffffff",backgroundColor:(t==null?void 0:t.backgroundColor)||this.player.options.transcriptBackgroundColor||"#1e1e1e",opacity:(s=(i=t==null?void 0:t.opacity)!=null?i:this.player.options.transcriptOpacity)!=null?s:.98},this.handlers={timeupdate:()=>this.updateActiveEntry(),audiodescriptionenabled:()=>{this.isVisible&&this.loadTranscriptData()},audiodescriptiondisabled:()=>{this.isVisible&&this.loadTranscriptData()},resize:null,settingsClick:null,settingsKeydown:null,documentClick:null,styleDialogKeydown:null},this.timeouts=new Set,this.init()}init(){this.setupMetadataHandlingOnLoad(),this.player.on("timeupdate",this.handlers.timeupdate),this.player.on("audiodescriptionenabled",this.handlers.audiodescriptionenabled),this.player.on("audiodescriptiondisabled",this.handlers.audiodescriptiondisabled),this.player.on("fullscreenchange",()=>{this.isVisible&&(window.innerWidth<768&&this.setupDragAndDrop(),(!this.draggableResizable||!this.draggableResizable.manuallyPositioned)&&this.setManagedTimeout(()=>this.positionTranscript(),100))})}toggleTranscript(){this.isVisible?this.hideTranscript():this.showTranscript()}showTranscript(){if(this.transcriptWindow){this.transcriptWindow.style.display="flex",this.isVisible=!0,this.player.controlBar&&typeof this.player.controlBar.updateTranscriptButton=="function"&&this.player.controlBar.updateTranscriptButton(),F(this.settingsButton,{delay:150});return}this.createTranscriptWindow(),this.loadTranscriptData(),this.transcriptWindow&&(this.transcriptWindow.style.display="flex",(!this.draggableResizable||!this.draggableResizable.manuallyPositioned)&&this.setManagedTimeout(()=>this.positionTranscript(),0),F(this.settingsButton,{delay:150})),this.isVisible=!0}hideTranscript({focusButton:e=!1}={}){var t,i;if(this.transcriptWindow&&(this.transcriptWindow.style.display="none",this.isVisible=!1),this.draggableResizable&&this.draggableResizable.pointerResizeMode&&(this.draggableResizable.disablePointerResizeMode(),this.updateResizeOptionState()),this.hideResizeModeIndicator(),this.announceLive(""),this.player.controlBar&&typeof this.player.controlBar.updateTranscriptButton=="function"&&this.player.controlBar.updateTranscriptButton(),e){let s=(i=(t=this.player.controlBar)==null?void 0:t.controls)==null?void 0:i.transcript;s&&typeof s.focus=="function"&&s.focus({preventScroll:!0})}}createTranscriptWindow(){this.transcriptWindow=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-window"),attributes:{role:"dialog","aria-label":m.t("transcript.ariaLabel"),tabindex:"-1"}}),this.transcriptHeader=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-header"),attributes:{tabindex:"0"}}),this.headerLeft=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-header-left")});let e=m.t("transcript.settingsMenu");this.settingsButton=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-transcript-settings"),attributes:{type:"button","aria-label":e,"aria-expanded":"false"}}),this.settingsButton.appendChild(k("settings")),u.attachTooltip(this.settingsButton,e,this.player.options.classPrefix),this.handlers.settingsClick=p=>{p.preventDefault(),p.stopPropagation(),this.settingsMenuVisible?this.hideSettingsMenu():this.showSettingsMenu()},this.settingsButton.addEventListener("click",this.handlers.settingsClick),this.handlers.settingsKeydown=p=>{p.key==="d"||p.key==="D"?(p.preventDefault(),p.stopPropagation(),this.toggleKeyboardDragMode()):p.key==="r"||p.key==="R"?(p.preventDefault(),p.stopPropagation(),this.toggleResizeMode()):p.key==="Escape"&&this.settingsMenuVisible&&(p.preventDefault(),p.stopPropagation(),this.hideSettingsMenu())},this.settingsButton.addEventListener("keydown",this.handlers.settingsKeydown);let t=u.createElement("h3",{textContent:"".concat(m.t("transcript.title"),". ").concat(m.t("transcript.dragResizePrompt"))}),i="".concat(this.player.options.classPrefix,"-transcript-autoscroll-").concat(Date.now()),s=u.createElement("label",{className:"".concat(this.player.options.classPrefix,"-transcript-autoscroll-label"),attributes:{for:i}});this.autoscrollCheckbox=u.createElement("input",{attributes:{id:i,type:"checkbox"}}),this.autoscrollEnabled&&(this.autoscrollCheckbox.checked=!0);let a=u.createElement("span",{textContent:m.t("transcript.autoscroll"),className:"".concat(this.player.options.classPrefix,"-transcript-autoscroll-text")});s.appendChild(this.autoscrollCheckbox),s.appendChild(a),this.autoscrollCheckbox.addEventListener("change",p=>{this.autoscrollEnabled=p.target.checked,this.saveAutoscrollPreference()}),this.transcriptHeader.appendChild(t),this.headerLeft.appendChild(this.settingsButton),this.headerLeft.appendChild(s);let n="".concat(this.player.options.classPrefix,"-transcript-language-select-").concat(Date.now()),{label:l,select:o}=Y({classPrefix:this.player.options.classPrefix,labelClass:"".concat(this.player.options.classPrefix,"-transcript-language-label"),selectClass:"".concat(this.player.options.classPrefix,"-transcript-language-select"),labelText:"settings.language",selectId:n,hidden:!1});this.languageLabel=l,this.languageSelector=o;let c=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-language-wrapper"),attributes:{style:"display: none;"}});c.appendChild(this.languageLabel),c.appendChild(this.languageSelector),this.languageSelectorWrapper=c,J(c),this.headerLeft.appendChild(c);let r=m.t("transcript.close"),d=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-transcript-close"),attributes:{type:"button","aria-label":r}});d.appendChild(k("close")),u.attachTooltip(d,r,this.player.options.classPrefix),d.addEventListener("click",()=>this.hideTranscript({focusButton:!0})),this.transcriptHeader.appendChild(this.headerLeft),this.transcriptHeader.appendChild(d),this.transcriptContent=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-content")}),this.transcriptWindow.appendChild(this.transcriptHeader),this.transcriptWindow.appendChild(this.transcriptContent),this.createResizeHandles(),this.liveRegion=u.createElement("div",{className:"vidply-sr-only",attributes:{"aria-live":"polite","aria-atomic":"true"}}),this.transcriptWindow.appendChild(this.liveRegion),this.player.container.appendChild(this.transcriptWindow),this.setupDragAndDrop(),(!this.draggableResizable||!this.draggableResizable.manuallyPositioned)&&this.positionTranscript(),this.handlers.documentClick=p=>{this.settingsMenuJustOpened||this.styleDialogJustOpened||this.settingsButton&&this.settingsButton.contains(p.target)||this.settingsMenu&&this.settingsMenu.contains(p.target)||(this.settingsMenuVisible&&this.hideSettingsMenu(),this.styleDialogVisible&&this.styleDialog&&!this.styleDialog.contains(p.target)&&this.hideStyleDialog())},this.documentClickHandlerAdded=!1;let h;this.handlers.resize=()=>{h&&this.clearManagedTimeout(h),h=this.setManagedTimeout(()=>{(!this.draggableResizable||!this.draggableResizable.manuallyPositioned)&&this.positionTranscript()},100)},window.addEventListener("resize",this.handlers.resize)}createResizeHandles(){if(!this.transcriptWindow)return;let e=["n","s","e","w","ne","nw","se","sw"];this.transcriptResizeHandles=e.map(t=>{let i=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-resize-handle ").concat(this.player.options.classPrefix,"-transcript-resize-").concat(t),attributes:{"data-direction":t,"data-vidply-managed-resize":"true","aria-hidden":"true"}});return i.style.display="none",this.transcriptWindow.appendChild(i),i})}positionTranscript(){if(!this.transcriptWindow||!this.player.videoWrapper||!this.isVisible||this.draggableResizable&&this.draggableResizable.manuallyPositioned)return;let e=window.innerWidth<768,t=this.player.videoWrapper.getBoundingClientRect(),i=this.player.state.fullscreen;if(e&&!i)this.transcriptWindow.style.position="relative",this.transcriptWindow.style.left="0",this.transcriptWindow.style.right="0",this.transcriptWindow.style.bottom="auto",this.transcriptWindow.style.top="auto",this.transcriptWindow.style.width="100%",this.transcriptWindow.style.maxWidth="100%",this.transcriptWindow.style.maxHeight="400px",this.transcriptWindow.style.height="auto",this.transcriptWindow.style.borderRadius="0",this.transcriptWindow.style.transform="none",this.transcriptWindow.style.border="none",this.transcriptWindow.style.borderTop="1px solid var(--vidply-border-light)",this.transcriptWindow.style.removeProperty("border-right"),this.transcriptWindow.style.removeProperty("border-bottom"),this.transcriptWindow.style.removeProperty("border-left"),this.transcriptWindow.style.removeProperty("border-image"),this.transcriptWindow.style.removeProperty("border-image-source"),this.transcriptWindow.style.removeProperty("border-image-slice"),this.transcriptWindow.style.removeProperty("border-image-width"),this.transcriptWindow.style.removeProperty("border-image-outset"),this.transcriptWindow.style.removeProperty("border-image-repeat"),this.transcriptWindow.style.boxShadow="none",this.transcriptHeader&&(this.transcriptHeader.style.cursor="default"),this.transcriptWindow.parentNode!==this.player.container&&this.player.container.appendChild(this.transcriptWindow);else if(i){this.transcriptWindow.style.position="fixed",this.transcriptWindow.style.left="auto",this.transcriptWindow.style.right="20px",this.transcriptWindow.style.bottom="80px",this.transcriptWindow.style.top="auto",this.transcriptWindow.style.maxHeight="calc(100vh - 180px)",this.transcriptWindow.style.height="auto";let s=260,a=Math.max(s,window.innerWidth-40),n=parseFloat(this.transcriptWindow.style.width)||400,l=Math.max(s,Math.min(n,a));this.transcriptWindow.style.width="".concat(l,"px"),this.transcriptWindow.style.maxWidth="none",this.transcriptWindow.style.borderRadius="8px",this.transcriptWindow.style.border="1px solid var(--vidply-border)",this.transcriptWindow.style.removeProperty("border-top"),this.transcriptWindow.style.removeProperty("border-right"),this.transcriptWindow.style.removeProperty("border-bottom"),this.transcriptWindow.style.removeProperty("border-left"),this.transcriptWindow.style.removeProperty("border-image"),this.transcriptWindow.style.removeProperty("border-image-source"),this.transcriptWindow.style.removeProperty("border-image-slice"),this.transcriptWindow.style.removeProperty("border-image-width"),this.transcriptWindow.style.removeProperty("border-image-outset"),this.transcriptWindow.style.removeProperty("border-image-repeat"),this.transcriptHeader&&(this.transcriptHeader.style.cursor="move"),this.transcriptWindow.parentNode!==this.player.container&&this.player.container.appendChild(this.transcriptWindow)}else{let s=parseFloat(this.transcriptWindow.style.width)||400,a=20,n=260,l=this.player.container.getBoundingClientRect();window.getComputedStyle(this.player.container).position==="static"&&(this.player.container.style.position="relative");let c=t.right-l.left+a,r=window.innerWidth-t.right-a,d=Math.max(n,Math.min(s,r)),h=t.height;this.transcriptWindow.style.position="absolute",this.transcriptWindow.style.left="".concat(c,"px"),this.transcriptWindow.style.right="auto",this.transcriptWindow.style.bottom="auto",this.transcriptWindow.style.top="0",this.transcriptWindow.style.height="".concat(h,"px"),this.transcriptWindow.style.maxHeight="none",this.transcriptWindow.style.width="".concat(d,"px"),this.transcriptWindow.style.maxWidth="none",this.transcriptWindow.style.borderRadius="8px",this.transcriptWindow.style.border="1px solid var(--vidply-border)",this.transcriptWindow.style.removeProperty("border-top"),this.transcriptWindow.style.removeProperty("border-right"),this.transcriptWindow.style.removeProperty("border-bottom"),this.transcriptWindow.style.removeProperty("border-left"),this.transcriptWindow.style.removeProperty("border-image"),this.transcriptWindow.style.removeProperty("border-image-source"),this.transcriptWindow.style.removeProperty("border-image-slice"),this.transcriptWindow.style.removeProperty("border-image-width"),this.transcriptWindow.style.removeProperty("border-image-outset"),this.transcriptWindow.style.removeProperty("border-image-repeat"),this.transcriptHeader&&(this.transcriptHeader.style.cursor="move"),this.transcriptWindow.parentNode!==this.player.container&&this.player.container.appendChild(this.transcriptWindow)}}getAvailableTranscriptLanguages(){let e=this.player.textTracks,t=new Map;return e.forEach(i=>{(i.kind==="captions"||i.kind==="subtitles")&&i.language&&(t.has(i.language)||t.set(i.language,{language:i.language,label:i.label||i.language,track:i}))}),Array.from(t.values())}updateLanguageSelector(){if(this.languageSelector){if(this.availableTranscriptLanguages=this.getAvailableTranscriptLanguages(),this.languageSelector.innerHTML="",this.availableTranscriptLanguages.length<2){this.languageSelectorWrapper&&(this.languageSelectorWrapper.style.display="none");return}if(this.languageSelectorWrapper&&(this.languageSelectorWrapper.style.display="flex"),this.availableTranscriptLanguages.forEach((e,t)=>{let i=u.createElement("option",{textContent:e.label,attributes:{value:e.language,lang:e.language}});this.languageSelector.appendChild(i)}),this.currentTranscriptLanguage)this.languageSelector.value=this.currentTranscriptLanguage;else if(this.availableTranscriptLanguages.length>0){let e=this.player.textTracks.find(t=>(t.kind==="captions"||t.kind==="subtitles")&&t.mode==="showing");this.currentTranscriptLanguage=e?e.language:this.availableTranscriptLanguages[0].language,this.languageSelector.value=this.currentTranscriptLanguage}this.languageSelectorHandler&&this.languageSelector.removeEventListener("change",this.languageSelectorHandler),this.languageSelectorHandler=e=>{this.currentTranscriptLanguage=e.target.value,this.loadTranscriptData(),this.transcriptContent&&this.currentTranscriptLanguage&&this.transcriptContent.setAttribute("lang",this.currentTranscriptLanguage)},this.languageSelector.addEventListener("change",this.languageSelectorHandler)}}loadTranscriptData(){this.transcriptEntries=[],this.transcriptContent.innerHTML="";let e=this.player.textTracks,t=null;this.currentTranscriptLanguage&&(t=e.find(o=>(o.kind==="captions"||o.kind==="subtitles")&&o.language===this.currentTranscriptLanguage)),t||(t=e.find(o=>o.kind==="captions"||o.kind==="subtitles"),t&&(this.currentTranscriptLanguage=t.language));let i=null;this.currentTranscriptLanguage&&(i=e.find(o=>o.kind==="descriptions"&&o.language===this.currentTranscriptLanguage)),i||(i=e.find(o=>o.kind==="descriptions"));let s=e.find(o=>o.kind==="metadata");if(!t&&!i&&!s){this.showNoTranscriptMessage();return}let a=[t,i,s].filter(Boolean);if(a.forEach(o=>{o.mode==="disabled"&&(o.mode="hidden")}),a.some(o=>!o.cues||o.cues.length===0)){let o=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-loading"),textContent:m.t("transcript.loading")});this.transcriptContent.appendChild(o);let c=0,r=()=>{c++,c>=a.length&&this.loadTranscriptData()};a.forEach(d=>{d.addEventListener("load",r,{once:!0})}),this.setManagedTimeout(()=>{this.loadTranscriptData()},500);return}let l=[];t&&t.cues&&Array.from(t.cues).forEach(o=>{l.push({cue:o,type:"caption"})}),i&&i.cues&&Array.from(i.cues).forEach(o=>{l.push({cue:o,type:"description"})}),s&&s.cues&&(this.metadataCues=Array.from(s.cues),this.setupMetadataHandling()),l.sort((o,c)=>o.cue.startTime-c.cue.startTime),l.forEach((o,c)=>{let r=this.createTranscriptEntry(o.cue,c,o.type);this.transcriptEntries.push({element:r,cue:o.cue,type:o.type,startTime:o.cue.startTime,endTime:o.cue.endTime}),this.transcriptContent.appendChild(r)}),this.applyTranscriptStyles(),this.updateTimestampVisibility(),this.transcriptContent&&this.currentTranscriptLanguage&&this.transcriptContent.setAttribute("lang",this.currentTranscriptLanguage),this.updateLanguageSelector()}setupMetadataHandlingOnLoad(){let e=()=>{let i=this.player.textTracks.find(s=>s.kind==="metadata");if(i){if(i.mode==="disabled"&&(i.mode="hidden"),this.metadataCueChangeHandler&&i.removeEventListener("cuechange",this.metadataCueChangeHandler),this.metadataCueChangeHandler=()=>{let s=Array.from(i.activeCues||[]);s.length>0&&this.player.options.debug&&console.log("[VidPly Metadata] Active cues:",s.map(a=>({start:a.startTime,end:a.endTime,text:a.text}))),s.forEach(a=>{this.handleMetadataCue(a)})},i.addEventListener("cuechange",this.metadataCueChangeHandler),this.player.options.debug){let s=i.cues?i.cues.length:0;console.log("[VidPly Metadata] Track enabled,",s,"cues available")}}else this.player.options.debug&&console.warn("[VidPly Metadata] No metadata track found")};e(),this.player.on("loadedmetadata",e)}setupMetadataHandling(){!this.metadataCues||this.metadataCues.length===0||this.player.options.debug&&console.log("[VidPly Metadata]",this.metadataCues.length,"cues stored from transcript load")}handleMetadataCue(e){let t=e.text.trim();this.player.options.debug&&console.log("[VidPly Metadata] Processing cue:",{time:e.startTime,text:t}),this.player.emit("metadata",{time:e.startTime,endTime:e.endTime,text:t,cue:e}),t.includes("PAUSE")&&(this.player.state.paused||(this.player.options.debug&&console.log("[VidPly Metadata] Pausing video at",e.startTime),this.player.pause()),this.player.emit("metadata:pause",{time:e.startTime,text:t}));let i=t.match(/FOCUS:([\w#-]+)/);if(i){let a=i[1],n=document.querySelector(a);n?(this.player.options.debug&&console.log("[VidPly Metadata] Focusing element:",a),this.setManagedTimeout(()=>{n.focus({preventScroll:!0})},10)):this.player.options.debug&&console.warn("[VidPly Metadata] Element not found:",a),this.player.emit("metadata:focus",{time:e.startTime,target:a,element:n,text:t})}let s=t.match(/#[\w-]+/g);s&&(this.player.options.debug&&console.log("[VidPly Metadata] Hashtags found:",s),this.player.emit("metadata:hashtags",{time:e.startTime,hashtags:s,text:t}))}createTranscriptEntry(e,t,i="caption"){let s=this.stripVTTFormatting(e.text),a=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-entry ").concat(this.player.options.classPrefix,"-transcript-").concat(i),attributes:{tabindex:"0","data-start":String(e.startTime),"data-end":String(e.endTime),"data-type":i}}),n=u.createElement("span",{className:"".concat(this.player.options.classPrefix,"-transcript-time"),textContent:C.formatTime(e.startTime),attributes:{"aria-hidden":"true"}}),l=u.createElement("span",{className:"".concat(this.player.options.classPrefix,"-transcript-text"),textContent:s});a.appendChild(n),a.appendChild(l);let o=()=>{this.player.seek(e.startTime),this.player.state.paused&&this.player.play()};return a.addEventListener("click",o),a.addEventListener("keydown",c=>{(c.key==="Enter"||c.key===" ")&&(c.preventDefault(),o())}),a}stripVTTFormatting(e){return e.replace(/<[^>]+>/g,"").replace(/\n/g," ").trim()}showNoTranscriptMessage(){let e=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-empty"),textContent:m.t("transcript.noTranscript")});this.transcriptContent.appendChild(e)}updateActiveEntry(){if(!this.isVisible||this.transcriptEntries.length===0)return;let e=this.player.state.currentTime,t=this.transcriptEntries.find(i=>e>=i.startTime&&e<i.endTime);t&&t!==this.currentActiveEntry?(this.currentActiveEntry&&this.currentActiveEntry.element.classList.remove("".concat(this.player.options.classPrefix,"-transcript-entry-active")),t.element.classList.add("".concat(this.player.options.classPrefix,"-transcript-entry-active")),this.scrollToEntry(t.element),this.currentActiveEntry=t):!t&&this.currentActiveEntry&&(this.currentActiveEntry.element.classList.remove("".concat(this.player.options.classPrefix,"-transcript-entry-active")),this.currentActiveEntry=null)}scrollToEntry(e){if(!this.transcriptContent||!this.autoscrollEnabled)return;let t=this.transcriptContent.getBoundingClientRect(),i=e.getBoundingClientRect();if(i.top<t.top||i.bottom>t.bottom){let s=e.offsetTop-this.transcriptContent.clientHeight/2+e.clientHeight/2;this.transcriptContent.scrollTo({top:s,behavior:"smooth"})}}saveAutoscrollPreference(){let e=this.storage.getTranscriptPreferences()||{};e.autoscroll=this.autoscrollEnabled,this.storage.saveTranscriptPreferences(e)}setupDragAndDrop(){if(!this.transcriptHeader||!this.transcriptWindow)return;let e=window.innerWidth<768,t=this.player.state.fullscreen;if(e&&!t){this.draggableResizable&&(this.draggableResizable.destroy(),this.draggableResizable=null);return}this.draggableResizable||(this.draggableResizable=new q(this.transcriptWindow,{dragHandle:this.transcriptHeader,resizeHandles:this.transcriptResizeHandles,constrainToViewport:!0,classPrefix:"".concat(this.player.options.classPrefix,"-transcript"),keyboardDragKey:"d",keyboardResizeKey:"r",keyboardStep:10,keyboardStepLarge:50,minWidth:300,minHeight:200,maxWidth:()=>Math.max(320,window.innerWidth-40),maxHeight:()=>Math.max(200,window.innerHeight-120),pointerResizeIndicatorText:m.t("transcript.resizeModeHint"),onPointerResizeToggle:i=>{this.transcriptResizeHandles.forEach(s=>{s.style.display=i?"block":"none"}),this.onPointerResizeModeChange(i)},onDragStart:i=>{let s=[".".concat(this.player.options.classPrefix,"-transcript-close"),".".concat(this.player.options.classPrefix,"-transcript-settings"),".".concat(this.player.options.classPrefix,"-transcript-language-select"),".".concat(this.player.options.classPrefix,"-transcript-language-label"),".".concat(this.player.options.classPrefix,"-transcript-settings-menu"),".".concat(this.player.options.classPrefix,"-transcript-style-dialog")];for(let a of s)if(i.target.closest(a))return!1;return!0}}),this.customKeyHandler=i=>{let s=i.key.toLowerCase(),a=i.defaultPrevented;if(!(this.settingsMenuVisible||this.styleDialogVisible)){if(s==="home"){i.preventDefault(),i.stopPropagation(),this.draggableResizable&&(this.draggableResizable.pointerResizeMode&&this.draggableResizable.disablePointerResizeMode(),this.draggableResizable.manuallyPositioned=!1,this.positionTranscript(),this.updateResizeOptionState(),this.announceLive(m.t("transcript.positionReset")));return}if(s==="r"){if(a)return;i.preventDefault(),i.stopPropagation(),this.toggleResizeMode()&&this.transcriptWindow.focus({preventScroll:!0});return}if(s==="escape"){if(this.draggableResizable&&this.draggableResizable.pointerResizeMode){i.preventDefault(),i.stopPropagation(),this.draggableResizable.disablePointerResizeMode();return}if(this.draggableResizable&&this.draggableResizable.keyboardDragMode){i.preventDefault(),i.stopPropagation(),this.draggableResizable.disableKeyboardDragMode(),this.announceLive(m.t("transcript.dragModeDisabled"));return}i.preventDefault(),i.stopPropagation(),this.hideTranscript({focusButton:!0});return}}},this.transcriptWindow.addEventListener("keydown",this.customKeyHandler))}toggleKeyboardDragMode(){if(this.draggableResizable){let e=this.draggableResizable.keyboardDragMode;this.draggableResizable.toggleKeyboardDragMode();let t=this.draggableResizable.keyboardDragMode;!e&&t&&this.enableMoveMode(),this.updateDragOptionState(),this.settingsMenuVisible&&this.hideSettingsMenu(),this.transcriptWindow.focus({preventScroll:!0})}}toggleSettingsMenu(){this.settingsMenuVisible?this.hideSettingsMenu():this.showSettingsMenu()}showSettingsMenu(){if(this.settingsMenuJustOpened=!0,setTimeout(()=>{this.settingsMenuJustOpened=!1},350),this.documentClickHandlerAdded||setTimeout(()=>{document.addEventListener("click",this.handlers.documentClick),this.documentClickHandlerAdded=!0},300),this.settingsMenu){this.settingsMenu.style.display="block",this.settingsMenuVisible=!0,this.settingsButton&&this.settingsButton.setAttribute("aria-expanded","true"),this.attachSettingsMenuKeyboardNavigation(),this.positionSettingsMenuImmediate(),this.updateResizeOptionState(),setTimeout(()=>{let w=this.settingsMenu.querySelectorAll(".".concat(this.player.options.classPrefix,"-transcript-settings-item"));if(w.length>0){w[0].setAttribute("tabindex","0");for(let f=1;f<w.length;f++)w[f].setAttribute("tabindex","-1");w[0].focus({preventScroll:!0})}},50);return}this.settingsMenu=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-settings-menu"),attributes:{role:"menu"}});let e=z({classPrefix:this.player.options.classPrefix,itemClass:"".concat(this.player.options.classPrefix,"-transcript-settings-item"),icon:"move",label:"transcript.enableDragMode",hasTextClass:!0,onClick:()=>{this.toggleKeyboardDragMode(),this.hideSettingsMenu()}});e.setAttribute("role","switch"),e.setAttribute("aria-checked","false");let t=e.querySelector(".".concat(this.player.options.classPrefix,"-tooltip"));t&&t.remove();let i=e.querySelector(".".concat(this.player.options.classPrefix,"-button-text"));i&&i.remove(),this.dragOptionButton=e,this.dragOptionText=e.querySelector(".".concat(this.player.options.classPrefix,"-settings-text")),this.updateDragOptionState();let s=z({classPrefix:this.player.options.classPrefix,itemClass:"".concat(this.player.options.classPrefix,"-transcript-settings-item"),icon:"settings",label:"transcript.styleTranscript",onClick:w=>{w.preventDefault(),w.stopPropagation(),this.hideSettingsMenu(),setTimeout(()=>{this.showStyleDialog()},50)}}),a=s.querySelector(".".concat(this.player.options.classPrefix,"-tooltip"));a&&a.remove();let n=s.querySelector(".".concat(this.player.options.classPrefix,"-button-text"));n&&n.remove();let l=z({classPrefix:this.player.options.classPrefix,itemClass:"".concat(this.player.options.classPrefix,"-transcript-settings-item"),icon:"resize",label:"transcript.enableResizeMode",hasTextClass:!0,onClick:w=>{w.preventDefault(),w.stopPropagation(),this.toggleResizeMode({focus:!1})?(this.hideSettingsMenu({focusButton:!1}),setTimeout(()=>{this.transcriptWindow&&this.transcriptWindow.focus({preventScroll:!0})},20)):this.hideSettingsMenu({focusButton:!0})}});l.setAttribute("role","switch"),l.setAttribute("aria-checked","false");let o=l.querySelector(".".concat(this.player.options.classPrefix,"-tooltip"));o&&o.remove();let c=l.querySelector(".".concat(this.player.options.classPrefix,"-button-text"));c&&c.remove(),this.resizeOptionButton=l,this.resizeOptionText=l.querySelector(".".concat(this.player.options.classPrefix,"-settings-text")),this.updateResizeOptionState();let r=z({classPrefix:this.player.options.classPrefix,itemClass:"".concat(this.player.options.classPrefix,"-transcript-settings-item"),icon:"clock",label:"transcript.showTimestamps",hasTextClass:!0,onClick:()=>{this.toggleShowTimestamps()}});r.setAttribute("role","switch"),r.setAttribute("aria-checked",this.showTimestamps?"true":"false");let d=r.querySelector(".".concat(this.player.options.classPrefix,"-tooltip"));d&&d.remove();let h=r.querySelector(".".concat(this.player.options.classPrefix,"-button-text"));h&&h.remove(),this.showTimestampsButton=r,this.showTimestampsText=r.querySelector(".".concat(this.player.options.classPrefix,"-settings-text")),this.updateShowTimestampsState();let p=z({classPrefix:this.player.options.classPrefix,itemClass:"".concat(this.player.options.classPrefix,"-transcript-settings-item"),icon:"close",label:"transcript.closeMenu",onClick:()=>{this.hideSettingsMenu()}}),y=p.querySelector(".".concat(this.player.options.classPrefix,"-tooltip"));y&&y.remove();let b=p.querySelector(".".concat(this.player.options.classPrefix,"-button-text"));b&&b.remove(),this.settingsMenu.appendChild(e),this.settingsMenu.appendChild(l),this.settingsMenu.appendChild(s),this.settingsMenu.appendChild(r),this.settingsMenu.appendChild(p),this.settingsMenu.style.visibility="hidden",this.settingsMenu.style.display="block",this.settingsButton&&this.settingsButton.parentNode?this.settingsButton.insertAdjacentElement("afterend",this.settingsMenu):this.headerLeft?this.headerLeft.appendChild(this.settingsMenu):this.transcriptHeader?this.transcriptHeader.appendChild(this.settingsMenu):this.transcriptWindow.appendChild(this.settingsMenu),this.positionSettingsMenuImmediate(),requestAnimationFrame(()=>{this.settingsMenu&&(this.settingsMenu.style.visibility="visible")}),this.settingsMenuKeyHandler=W(this.settingsMenu,this.settingsButton,".".concat(this.player.options.classPrefix,"-transcript-settings-item"),()=>this.hideSettingsMenu({focusButton:!0})),this.settingsMenuVisible=!0,this.settingsMenu.style.display="block",this.settingsButton&&this.settingsButton.setAttribute("aria-expanded","true"),this.updateResizeOptionState(),setTimeout(()=>{let w=this.settingsMenu.querySelectorAll(".".concat(this.player.options.classPrefix,"-transcript-settings-item"));if(w.length>0){w[0].setAttribute("tabindex","0");for(let f=1;f<w.length;f++)w[f].setAttribute("tabindex","-1");w[0].focus({preventScroll:!0})}},50)}positionSettingsMenuImmediate(){if(!this.settingsMenu||!this.settingsButton)return;let e=this.settingsButton.parentElement;if(!e)return;let t=this.settingsButton.getBoundingClientRect(),i=e.getBoundingClientRect(),s=this.settingsMenu.getBoundingClientRect(),a=window.innerHeight,n=t.left-i.left,l=t.bottom-i.top,o=t.top-i.top,c=a-t.bottom,r=t.top,d=l+4;c<s.height+20&&r>c?(d=o-s.height-4,this.settingsMenu.classList.add("vidply-menu-above")):this.settingsMenu.classList.remove("vidply-menu-above"),this.settingsMenu.style.top="".concat(d,"px"),this.settingsMenu.style.left="".concat(n,"px"),this.settingsMenu.style.right="auto",this.settingsMenu.style.bottom="auto"}positionSettingsMenu(){!this.settingsMenu||!this.settingsButton||requestAnimationFrame(()=>{setTimeout(()=>{this.positionSettingsMenuImmediate()},10)})}attachSettingsMenuKeyboardNavigation(){if(!this.settingsMenu)return;this.settingsMenuKeyHandler&&this.settingsMenu.removeEventListener("keydown",this.settingsMenuKeyHandler,!0);let e=W(this.settingsMenu,this.settingsButton,".".concat(this.player.options.classPrefix,"-transcript-settings-item"),()=>this.hideSettingsMenu({focusButton:!0}));this.settingsMenuKeyHandler=e}hideSettingsMenu({focusButton:e=!0}={}){this.settingsMenu&&(this.settingsMenu.style.display="none",this.settingsMenuVisible=!1,this.settingsMenuJustOpened=!1,this.settingsMenuKeyHandler&&(this.settingsMenu.removeEventListener("keydown",this.settingsMenuKeyHandler,!0),this.settingsMenuKeyHandler=null),this.settingsButton&&(this.settingsButton.setAttribute("aria-expanded","false"),e&&this.settingsButton.focus({preventScroll:!0})))}enableMoveMode(){this.hideResizeModeIndicator(),this.transcriptWindow.classList.add("".concat(this.player.options.classPrefix,"-transcript-move-mode"));let e=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-move-tooltip"),textContent:"Drag with mouse or press D for keyboard drag mode"});this.transcriptHeader.appendChild(e),setTimeout(()=>{this.transcriptWindow.classList.remove("".concat(this.player.options.classPrefix,"-transcript-move-mode")),e.parentNode&&e.remove()},2e3)}toggleResizeMode({focus:e=!0}={}){return this.draggableResizable?this.draggableResizable.pointerResizeMode?(this.draggableResizable.disablePointerResizeMode({focus:e}),!1):(this.draggableResizable.enablePointerResizeMode({focus:e}),!0):!1}updateDragOptionState(){if(!this.dragOptionButton)return;let e=!!(this.draggableResizable&&this.draggableResizable.keyboardDragMode),t=e?m.t("transcript.disableDragMode"):m.t("transcript.enableDragMode"),i=e?m.t("transcript.disableDragModeAria"):m.t("transcript.enableDragModeAria");this.dragOptionButton.setAttribute("aria-checked",e?"true":"false"),this.dragOptionButton.setAttribute("aria-label",i),this.dragOptionText&&(this.dragOptionText.textContent=t)}updateResizeOptionState(){if(!this.resizeOptionButton)return;let e=!!(this.draggableResizable&&this.draggableResizable.pointerResizeMode),t=e?m.t("transcript.disableResizeMode"):m.t("transcript.enableResizeMode"),i=e?m.t("transcript.disableResizeModeAria"):m.t("transcript.enableResizeModeAria");this.resizeOptionButton.setAttribute("aria-checked",e?"true":"false"),this.resizeOptionButton.setAttribute("aria-label",i),this.resizeOptionText&&(this.resizeOptionText.textContent=t)}toggleShowTimestamps(){this.showTimestamps=!this.showTimestamps,this.updateShowTimestampsState(),this.updateTimestampVisibility(),this.saveTimestampsPreference()}updateShowTimestampsState(){if(!this.showTimestampsButton)return;let e=this.showTimestamps?m.t("transcript.hideTimestamps"):m.t("transcript.showTimestamps"),t=this.showTimestamps?m.t("transcript.hideTimestampsAria"):m.t("transcript.showTimestampsAria");this.showTimestampsButton.setAttribute("aria-checked",this.showTimestamps?"true":"false"),this.showTimestampsButton.setAttribute("aria-label",t),this.showTimestampsText&&(this.showTimestampsText.textContent=e)}updateTimestampVisibility(){if(!this.transcriptContent)return;this.transcriptContent.querySelectorAll(".".concat(this.player.options.classPrefix,"-transcript-time")).forEach(t=>{t.style.display=this.showTimestamps?"":"none"})}saveTimestampsPreference(){let e=this.storage.getTranscriptPreferences()||{};e.showTimestamps=this.showTimestamps,this.storage.saveTranscriptPreferences(e)}showResizeModeIndicator(){if(!this.transcriptHeader)return;this.hideResizeModeIndicator();let e=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-resize-tooltip"),textContent:m.t("transcript.resizeModeHint")||"Resize handles enabled. Drag edges or corners to adjust. Press Esc or R to exit."});this.transcriptHeader.appendChild(e),this.resizeModeIndicator=e,this.resizeModeIndicatorTimeout=this.setManagedTimeout(()=>{this.hideResizeModeIndicator()},3e3)}hideResizeModeIndicator(){this.resizeModeIndicatorTimeout&&(this.clearManagedTimeout(this.resizeModeIndicatorTimeout),this.resizeModeIndicatorTimeout=null),this.resizeModeIndicator&&this.resizeModeIndicator.parentNode&&this.resizeModeIndicator.remove(),this.resizeModeIndicator=null}onPointerResizeModeChange(e){this.updateResizeOptionState(),e?(this.showResizeModeIndicator(),this.announceLive(m.t("transcript.resizeModeEnabled"))):(this.hideResizeModeIndicator(),this.announceLive(m.t("transcript.resizeModeDisabled")))}showStyleDialog(){if(this.styleDialog){this.styleDialog.style.display="block",this.styleDialogVisible=!0,this.handlers.styleDialogKeydown&&document.addEventListener("keydown",this.handlers.styleDialogKeydown),this.styleDialogJustOpened=!0,setTimeout(()=>{this.styleDialogJustOpened=!1},350),setTimeout(()=>{let o=this.styleDialog.querySelector("select, input");o&&o.focus({preventScroll:!0})},0);return}this.styleDialog=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-style-dialog")});let e=u.createElement("h4",{textContent:m.t("transcript.styleTitle"),className:"".concat(this.player.options.classPrefix,"-transcript-style-title")});this.styleDialog.appendChild(e);let t=this.createStyleSelectControl(m.t("captions.fontSize"),"fontSize",[{label:m.t("fontSizes.small"),value:"90%"},{label:m.t("fontSizes.normal"),value:"100%"},{label:m.t("fontSizes.large"),value:"110%"},{label:m.t("fontSizes.xlarge"),value:"120%"}]);this.styleDialog.appendChild(t);let i=this.createStyleSelectControl(m.t("captions.fontFamily"),"fontFamily",[{label:m.t("fontFamilies.sansSerif"),value:"sans-serif"},{label:m.t("fontFamilies.serif"),value:"serif"},{label:m.t("fontFamilies.monospace"),value:"monospace"}]);this.styleDialog.appendChild(i);let s=this.createStyleColorControl(m.t("captions.color"),"color");this.styleDialog.appendChild(s);let a=this.createStyleColorControl(m.t("captions.backgroundColor"),"backgroundColor");this.styleDialog.appendChild(a);let n=this.createStyleOpacityControl(m.t("captions.opacity"),"opacity");this.styleDialog.appendChild(n);let l=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-transcript-style-close"),textContent:m.t("settings.close"),attributes:{type:"button"}});l.addEventListener("click",()=>this.hideStyleDialog()),this.styleDialog.appendChild(l),this.handlers.styleDialogKeydown=o=>{if(this.styleDialogVisible){if(o.key==="Escape"){o.preventDefault(),o.stopPropagation(),this.hideStyleDialog();return}if(o.key==="Tab"){let c=this.styleDialog.querySelectorAll("select, input, button"),r=c[0],d=c[c.length-1];o.shiftKey&&document.activeElement===r?(o.preventDefault(),d.focus({preventScroll:!0})):!o.shiftKey&&document.activeElement===d&&(o.preventDefault(),r.focus({preventScroll:!0}))}}},document.addEventListener("keydown",this.handlers.styleDialogKeydown),this.headerLeft?this.headerLeft.appendChild(this.styleDialog):this.transcriptHeader.appendChild(this.styleDialog),this.applyTranscriptStyles(),this.styleDialogVisible=!0,this.styleDialog.style.display="block",this.styleDialogJustOpened=!0,setTimeout(()=>{this.styleDialogJustOpened=!1},350),setTimeout(()=>{let o=this.styleDialog.querySelector("select, input");o&&o.focus({preventScroll:!0})},0)}hideStyleDialog(){this.styleDialog&&(this.styleDialog.style.display="none",this.styleDialogVisible=!1,this.handlers.styleDialogKeydown&&document.removeEventListener("keydown",this.handlers.styleDialogKeydown),this.settingsButton&&this.settingsButton.focus({preventScroll:!0}))}createStyleSelectControl(e,t,i){let s=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-style-group")}),a="".concat(this.player.options.classPrefix,"-transcript-").concat(t,"-").concat(Date.now()),n=u.createElement("label",{textContent:e,attributes:{for:a}});s.appendChild(n);let l=u.createElement("select",{className:"".concat(this.player.options.classPrefix,"-transcript-style-select"),attributes:{id:a}});return i.forEach(o=>{let c=u.createElement("option",{textContent:o.label,attributes:{value:o.value}});this.transcriptStyle[t]===o.value&&(c.selected=!0),l.appendChild(c)}),l.addEventListener("change",o=>{this.transcriptStyle[t]=o.target.value,this.applyTranscriptStyles(),this.savePreferences()}),s.appendChild(l),s}createStyleColorControl(e,t){let i=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-style-group")}),s="".concat(this.player.options.classPrefix,"-transcript-").concat(t,"-").concat(Date.now()),a=u.createElement("label",{textContent:e,attributes:{for:s}});i.appendChild(a);let n=u.createElement("input",{attributes:{id:s,type:"color",value:this.transcriptStyle[t]},className:"".concat(this.player.options.classPrefix,"-transcript-style-color")});return n.addEventListener("input",l=>{this.transcriptStyle[t]=l.target.value,this.applyTranscriptStyles(),this.savePreferences()}),i.appendChild(n),i}createStyleOpacityControl(e,t){let i=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-style-group")}),s="".concat(this.player.options.classPrefix,"-transcript-").concat(t,"-").concat(Date.now()),a=u.createElement("label",{textContent:e,attributes:{for:s}});i.appendChild(a);let n=u.createElement("span",{textContent:Math.round(this.transcriptStyle[t]*100)+"%",className:"".concat(this.player.options.classPrefix,"-transcript-style-value")}),l=u.createElement("input",{attributes:{id:s,type:"range",min:"0",max:"1",step:"0.1",value:String(this.transcriptStyle[t])},className:"".concat(this.player.options.classPrefix,"-transcript-style-range")});l.addEventListener("input",c=>{let r=parseFloat(c.target.value);this.transcriptStyle[t]=r,n.textContent=Math.round(r*100)+"%",this.applyTranscriptStyles(),this.savePreferences()});let o=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-transcript-style-range-container")});return o.appendChild(l),o.appendChild(n),i.appendChild(a),i.appendChild(o),i}savePreferences(){this.storage.saveTranscriptPreferences(this.transcriptStyle)}applyTranscriptStyles(){if(!this.transcriptWindow)return;this.transcriptWindow.style.backgroundColor=this.transcriptStyle.backgroundColor,this.transcriptWindow.style.opacity=String(this.transcriptStyle.opacity),this.transcriptContent&&(this.transcriptContent.style.fontSize=this.transcriptStyle.fontSize,this.transcriptContent.style.fontFamily=this.transcriptStyle.fontFamily,this.transcriptContent.style.color=this.transcriptStyle.color),this.transcriptWindow.querySelectorAll(".".concat(this.player.options.classPrefix,"-transcript-text")).forEach(i=>{i.style.fontSize=this.transcriptStyle.fontSize,i.style.fontFamily=this.transcriptStyle.fontFamily,i.style.color=this.transcriptStyle.color}),this.transcriptWindow.querySelectorAll(".".concat(this.player.options.classPrefix,"-transcript-time")).forEach(i=>{i.style.fontFamily=this.transcriptStyle.fontFamily})}setManagedTimeout(e,t){let i=setTimeout(()=>{this.timeouts.delete(i),e()},t);return this.timeouts.add(i),i}clearManagedTimeout(e){e&&(clearTimeout(e),this.timeouts.delete(e))}destroy(){this.hideResizeModeIndicator(),this.draggableResizable&&(this.draggableResizable.pointerResizeMode&&(this.draggableResizable.disablePointerResizeMode(),this.updateResizeOptionState()),this.draggableResizable.destroy(),this.draggableResizable=null),this.transcriptWindow&&this.customKeyHandler&&(this.transcriptWindow.removeEventListener("keydown",this.customKeyHandler),this.customKeyHandler=null),this.handlers.timeupdate&&this.player.off("timeupdate",this.handlers.timeupdate),this.handlers.audiodescriptionenabled&&this.player.off("audiodescriptionenabled",this.handlers.audiodescriptionenabled),this.handlers.audiodescriptiondisabled&&this.player.off("audiodescriptiondisabled",this.handlers.audiodescriptiondisabled),this.settingsButton&&(this.handlers.settingsClick&&this.settingsButton.removeEventListener("click",this.handlers.settingsClick),this.handlers.settingsKeydown&&this.settingsButton.removeEventListener("keydown",this.handlers.settingsKeydown)),this.handlers.styleDialogKeydown&&document.removeEventListener("keydown",this.handlers.styleDialogKeydown),this.handlers.documentClick&&document.removeEventListener("click",this.handlers.documentClick),this.handlers.resize&&window.removeEventListener("resize",this.handlers.resize),this.timeouts.forEach(e=>clearTimeout(e)),this.timeouts.clear(),this.handlers=null,this.transcriptWindow&&this.transcriptWindow.parentNode&&this.transcriptWindow.parentNode.removeChild(this.transcriptWindow),this.transcriptWindow=null,this.transcriptHeader=null,this.transcriptContent=null,this.transcriptEntries=[],this.settingsMenu=null,this.styleDialog=null,this.transcriptResizeHandles=[],this.resizeOptionButton=null,this.resizeOptionText=null,this.liveRegion=null}announceLive(e){this.liveRegion&&(this.liveRegion.textContent=e||"")}}});var je={};B(je,{YouTubeRenderer:()=>we});var we,Xe=x(()=>{we=class{constructor(e){this.player=e,this.youtube=null,this.videoId=null,this.isReady=!1,this.iframe=null}async init(){let e=this.player.currentSource||this.player.element.src;if(this.videoId=this.extractVideoId(e),!this.videoId)throw new Error("Invalid YouTube URL");await this.loadYouTubeAPI(),this.createIframe(),await this.initializePlayer()}extractVideoId(e){let t=[/(?:youtube\.com\/watch\?v=|youtu\.be\/)([^&\s]+)/,/youtube\.com\/embed\/([^&\s]+)/];for(let i of t){let s=e.match(i);if(s&&s[1])return s[1]}return null}async loadYouTubeAPI(){return window.YT&&window.YT.Player?Promise.resolve():new Promise((e,t)=>{if(window.onYouTubeIframeAPIReady){let a=window.onYouTubeIframeAPIReady;window.onYouTubeIframeAPIReady=()=>{a(),e()};return}let i=document.createElement("script");i.src="https://www.youtube.com/iframe_api",window.onYouTubeIframeAPIReady=()=>{e()},i.onerror=()=>t(new Error("Failed to load YouTube API"));let s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(i,s)})}createIframe(){this.player.element.style.display="none",this.iframe=document.createElement("div"),this.iframe.id="youtube-player-".concat(Math.random().toString(36).substr(2,9)),this.iframe.style.width="100%",this.iframe.style.aspectRatio="16 / 9",this.iframe.style.maxHeight="100%",this.player.element.parentNode.insertBefore(this.iframe,this.player.element)}async initializePlayer(){return new Promise(e=>{this.youtube=new window.YT.Player(this.iframe.id,{videoId:this.videoId,width:"100%",height:"100%",playerVars:{controls:1,disablekb:0,fs:1,modestbranding:1,rel:0,showinfo:0,iv_load_policy:3,autoplay:this.player.options.autoplay?1:0,mute:this.player.options.muted?1:0,start:this.player.options.startTime||0},events:{onReady:t=>{this.isReady=!0,this.attachEvents(),this.player.container&&this.player.container.classList.add("vidply-external-controls"),e()},onStateChange:t=>this.handleStateChange(t),onError:t=>this.handleError(t)}})})}attachEvents(){this.timeUpdateInterval=setInterval(()=>{if(this.isReady&&this.youtube){let e=this.youtube.getCurrentTime(),t=this.youtube.getDuration();this.player.state.currentTime=e,this.player.state.duration=t,this.player.emit("timeupdate",e)}},250),this.youtube.getDuration&&(this.player.state.duration=this.youtube.getDuration(),this.player.emit("loadedmetadata"))}handleStateChange(e){let t=window.YT.PlayerState;switch(e.data){case t.PLAYING:this.player.state.playing=!0,this.player.state.paused=!1,this.player.state.ended=!1,this.player.state.buffering=!1,this.player.emit("play"),this.player.emit("playing"),this.player.options.onPlay&&this.player.options.onPlay.call(this.player);break;case t.PAUSED:this.player.state.playing=!1,this.player.state.paused=!0,this.player.emit("pause"),this.player.options.onPause&&this.player.options.onPause.call(this.player);break;case t.ENDED:this.player.state.playing=!1,this.player.state.paused=!0,this.player.state.ended=!0,this.player.emit("ended"),this.player.options.onEnded&&this.player.options.onEnded.call(this.player),this.player.options.loop&&(this.youtube.seekTo(0),this.youtube.playVideo());break;case t.BUFFERING:this.player.state.buffering=!0,this.player.emit("waiting");break;case t.CUED:this.player.emit("loadedmetadata");break}}handleError(e){let t={2:"Invalid video ID",5:"HTML5 player error",100:"Video not found",101:"Video not allowed to be played in embedded players",150:"Video not allowed to be played in embedded players"},i=new Error(t[e.data]||"YouTube player error");this.player.handleError(i)}play(){if(this.isReady&&this.youtube){let e=window.scrollX,t=window.scrollY;this.youtube.playVideo(),window.scrollTo(e,t)}}pause(){this.isReady&&this.youtube&&this.youtube.pauseVideo()}seek(e){this.isReady&&this.youtube&&this.youtube.seekTo(e,!0)}setVolume(e){this.isReady&&this.youtube&&(this.youtube.setVolume(e*100),this.player.state.volume=e)}setMuted(e){this.isReady&&this.youtube&&(e?this.youtube.mute():this.youtube.unMute(),this.player.state.muted=e)}setPlaybackSpeed(e){this.isReady&&this.youtube&&(this.youtube.setPlaybackRate(e),this.player.state.playbackSpeed=e)}destroy(){this.timeUpdateInterval&&clearInterval(this.timeUpdateInterval),this.youtube&&this.youtube.destroy&&this.youtube.destroy(),this.iframe&&this.iframe.parentNode&&this.iframe.parentNode.removeChild(this.iframe),this.player.element&&(this.player.element.style.display="")}}});var Qe={};B(Qe,{VimeoRenderer:()=>Me});var Me,Ye=x(()=>{Me=class{constructor(e){this.player=e,this.vimeo=null,this.videoId=null,this.isReady=!1,this.iframe=null}async init(){let e=this.player.currentSource||this.player.element.src;if(this.videoId=this.extractVideoId(e),!this.videoId)throw new Error("Invalid Vimeo URL");await this.loadVimeoAPI(),this.createIframe(),await this.initializePlayer()}extractVideoId(e){let t=[/vimeo\.com\/(\d+)/,/vimeo\.com\/video\/(\d+)/,/player\.vimeo\.com\/video\/(\d+)/];for(let i of t){let s=e.match(i);if(s&&s[1])return s[1]}return null}async loadVimeoAPI(){return window.Vimeo&&window.Vimeo.Player?Promise.resolve():new Promise((e,t)=>{let i=document.createElement("script");i.src="https://player.vimeo.com/api/player.js",i.onload=()=>e(),i.onerror=()=>t(new Error("Failed to load Vimeo API")),document.head.appendChild(i)})}createIframe(){this.player.element.style.display="none",this.iframe=document.createElement("div"),this.iframe.id="vimeo-player-".concat(Math.random().toString(36).substr(2,9)),this.iframe.style.width="100%",this.iframe.style.aspectRatio="16 / 9",this.iframe.style.maxHeight="100%",this.player.element.parentNode.insertBefore(this.iframe,this.player.element)}async initializePlayer(){let e={id:this.videoId,width:"100%",height:"100%",controls:!0,autoplay:this.player.options.autoplay,muted:this.player.options.muted,loop:this.player.options.loop,keyboard:!1};this.player.options.startTime>0&&(e.startTime=this.player.options.startTime),this.vimeo=new window.Vimeo.Player(this.iframe.id,e),await this.vimeo.ready(),this.isReady=!0;let t=this.iframe.querySelector("iframe");t&&(t.style.width="100%",t.style.height="100%",t.setAttribute("width","100%"),t.setAttribute("height","100%")),this.player.container&&this.player.container.classList.add("vidply-external-controls"),this.attachEvents();try{let i=await this.vimeo.getDuration();this.player.state.duration=i,this.player.emit("loadedmetadata")}catch(i){this.player.log("Error getting duration:",i,"warn")}}attachEvents(){this.vimeo.on("play",()=>{this.player.state.playing=!0,this.player.state.paused=!1,this.player.state.ended=!1,this.player.emit("play"),this.player.options.onPlay&&this.player.options.onPlay.call(this.player)}),this.vimeo.on("pause",()=>{this.player.state.playing=!1,this.player.state.paused=!0,this.player.emit("pause"),this.player.options.onPause&&this.player.options.onPause.call(this.player)}),this.vimeo.on("ended",()=>{this.player.state.playing=!1,this.player.state.paused=!0,this.player.state.ended=!0,this.player.emit("ended"),this.player.options.onEnded&&this.player.options.onEnded.call(this.player)}),this.vimeo.on("timeupdate",e=>{this.player.state.currentTime=e.seconds,this.player.state.duration=e.duration,this.player.emit("timeupdate",e.seconds),this.player.options.onTimeUpdate&&this.player.options.onTimeUpdate.call(this.player,e.seconds)}),this.vimeo.on("volumechange",e=>{this.player.state.volume=e.volume,this.player.emit("volumechange",e.volume)}),this.vimeo.on("bufferstart",()=>{this.player.state.buffering=!0,this.player.emit("waiting")}),this.vimeo.on("bufferend",()=>{this.player.state.buffering=!1,this.player.emit("canplay")}),this.vimeo.on("seeking",()=>{this.player.state.seeking=!0,this.player.emit("seeking")}),this.vimeo.on("seeked",()=>{this.player.state.seeking=!1,this.player.emit("seeked")}),this.vimeo.on("playbackratechange",e=>{this.player.state.playbackSpeed=e.playbackRate,this.player.emit("ratechange",e.playbackRate)}),this.vimeo.on("error",e=>{this.player.handleError(new Error("Vimeo error: ".concat(e.message)))})}play(){if(this.isReady&&this.vimeo){let e=window.scrollX,t=window.scrollY;this.vimeo.play().catch(i=>{this.player.log("Play error:",i,"warn")}),window.scrollTo(e,t)}}pause(){this.isReady&&this.vimeo&&this.vimeo.pause().catch(e=>{this.player.log("Pause error:",e,"warn")})}seek(e){this.isReady&&this.vimeo&&this.vimeo.setCurrentTime(e).catch(t=>{this.player.log("Seek error:",t,"warn")})}setVolume(e){this.isReady&&this.vimeo&&(this.vimeo.setVolume(e).catch(t=>{this.player.log("Volume error:",t,"warn")}),this.player.state.volume=e)}setMuted(e){this.isReady&&this.vimeo&&(e?this.vimeo.setVolume(0):this.vimeo.setVolume(this.player.state.volume),this.player.state.muted=e)}setPlaybackSpeed(e){this.isReady&&this.vimeo&&(this.vimeo.setPlaybackRate(e).catch(t=>{this.player.log("Playback rate error:",t,"warn")}),this.player.state.playbackSpeed=e)}destroy(){this.vimeo&&this.vimeo.destroy&&this.vimeo.destroy(),this.iframe&&this.iframe.parentNode&&this.iframe.parentNode.removeChild(this.iframe),this.player.element&&(this.player.element.style.display="")}}});var Je={};B(Je,{HLSRenderer:()=>Se});var Se,Ge=x(()=>{Se=class{constructor(e){this.player=e,this.media=e.element,this.hls=null}async init(){this.canPlayNatively()?(this.player.log("Using native HLS support"),await this.initNative()):(this.player.log("Using hls.js for HLS support"),await this.initHlsJs())}canPlayNatively(){let e=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),t=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream;return!e&&!t?!1:document.createElement("video").canPlayType("application/vnd.apple.mpegurl")!==""}async initNative(){let e=(await Promise.resolve().then(()=>(be(),_e))).HTML5Renderer,t=new e(this.player);await t.init(),Object.getOwnPropertyNames(Object.getPrototypeOf(t)).forEach(i=>{i!=="constructor"&&typeof t[i]=="function"&&(this[i]=t[i].bind(t))})}async initHlsJs(){if(this.media.controls=!1,this.media.removeAttribute("controls"),window.Hls||await this.loadHlsJs(),!window.Hls.isSupported())throw new Error("HLS is not supported in this browser");this.hls=new window.Hls({debug:this.player.options.debug,enableWorker:!0,lowLatencyMode:!1,backBufferLength:90,maxBufferLength:30,maxMaxBufferLength:600,maxBufferSize:60*1e3*1e3,maxBufferHole:.5,manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:4,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3}),this.hls.attachMedia(this.media);let e=this.player.currentSource;if(!e){let t=this.player.element.querySelector("source");t?e=t.getAttribute("src"):e=this.player.element.getAttribute("src")||this.player.element.src}if(this.player.log("Loading HLS source: ".concat(e),"log"),!e)throw new Error("No HLS source found");this.hls.loadSource(e),this.attachHlsEvents(),this.attachMediaEvents()}async loadHlsJs(){return new Promise((e,t)=>{let i=document.createElement("script");i.src="https://cdn.jsdelivr.net/npm/hls.js@latest",i.onload=()=>e(),i.onerror=()=>t(new Error("Failed to load hls.js")),document.head.appendChild(i)})}attachHlsEvents(){this.hls.on(window.Hls.Events.MANIFEST_PARSED,(e,t)=>{this.player.log("HLS manifest loaded, found "+t.levels.length+" quality levels"),this.player.emit("hlsmanifestparsed",t),this.player.container&&this.player.container.classList.remove("vidply-external-controls")}),this.hls.on(window.Hls.Events.LEVEL_SWITCHED,(e,t)=>{this.player.log("HLS level switched to "+t.level),this.player.emit("hlslevelswitched",t)}),this.hls.on(window.Hls.Events.ERROR,(e,t)=>{this.handleHlsError(t)}),this.hls.on(window.Hls.Events.FRAG_BUFFERED,()=>{this.player.state.buffering=!1})}attachMediaEvents(){this.media.addEventListener("loadedmetadata",()=>{this.player.state.duration=this.media.duration,this.player.emit("loadedmetadata")}),this.media.addEventListener("play",()=>{this.player.state.playing=!0,this.player.state.paused=!1,this.player.state.ended=!1,this.player.emit("play"),this.player.options.onPlay&&this.player.options.onPlay.call(this.player)}),this.media.addEventListener("pause",()=>{this.player.state.playing=!1,this.player.state.paused=!0,this.player.emit("pause"),this.player.options.onPause&&this.player.options.onPause.call(this.player)}),this.media.addEventListener("ended",()=>{this.player.state.playing=!1,this.player.state.paused=!0,this.player.state.ended=!0,this.player.emit("ended"),this.player.options.onEnded&&this.player.options.onEnded.call(this.player),this.player.options.loop&&(this.player.seek(0),this.player.play())}),this.media.addEventListener("timeupdate",()=>{this.player.state.currentTime=this.media.currentTime,this.player.emit("timeupdate",this.media.currentTime),this.player.options.onTimeUpdate&&this.player.options.onTimeUpdate.call(this.player,this.media.currentTime)}),this.media.addEventListener("volumechange",()=>{this.player.state.volume=this.media.volume,this.player.state.muted=this.media.muted,this.player.emit("volumechange",this.media.volume)}),this.media.addEventListener("waiting",()=>{this.player.state.buffering=!0,this.player.emit("waiting")}),this.media.addEventListener("canplay",()=>{this.player.state.buffering=!1,this.player.emit("canplay")}),this.media.addEventListener("error",()=>{this.player.handleError(this.media.error)})}handleHlsError(e){if(this.player.log("HLS Error - Type: ".concat(e.type,", Details: ").concat(e.details,", Fatal: ").concat(e.fatal),"warn"),e.response&&this.player.log("Response code: ".concat(e.response.code,", URL: ").concat(e.response.url),"warn"),e.fatal)switch(e.type){case window.Hls.ErrorTypes.NETWORK_ERROR:this.player.log("Fatal network error, trying to recover...","error"),this.player.log("Network error details: ".concat(e.details),"error"),setTimeout(()=>{this.hls.startLoad()},1e3);break;case window.Hls.ErrorTypes.MEDIA_ERROR:this.player.log("Fatal media error, trying to recover...","error"),this.hls.recoverMediaError();break;default:this.player.log("Fatal error, cannot recover","error"),this.player.handleError(new Error("HLS Error: ".concat(e.type," - ").concat(e.details))),this.hls.destroy();break}else this.player.log("Non-fatal HLS error: "+e.details,"warn")}play(){let e=window.scrollX,t=window.scrollY,i=this.media.play();window.scrollTo(e,t),i!==void 0&&i.catch(s=>{this.player.log("Play failed:",s,"warn")})}pause(){this.media.pause()}seek(e){this.media.currentTime=e}setVolume(e){this.media.volume=e}setMuted(e){this.media.muted=e}setPlaybackSpeed(e){this.media.playbackRate=e}switchQuality(e){this.hls&&(this.hls.currentLevel=e)}getQualities(){return this.hls&&this.hls.levels?this.hls.levels.map((e,t)=>({index:t,height:e.height,width:e.width,bitrate:e.bitrate,name:"".concat(e.height,"p")})):[]}getCurrentQuality(){return this.hls?this.hls.currentLevel:-1}destroy(){this.hls&&(this.hls.destroy(),this.hls=null)}}});var Ze={};B(Ze,{SoundCloudRenderer:()=>ge,default:()=>ut});var ge,ut,et=x(()=>{ge=class{constructor(e){this.player=e,this.widget=null,this.trackUrl=null,this.isReady=!1,this.iframe=null,this.iframeId=null}async init(){var e;if(this.trackUrl=this.player.currentSource||this.player.element.src||((e=this.player.element.querySelector("source"))==null?void 0:e.src),!this.trackUrl||!this.isValidSoundCloudUrl(this.trackUrl))throw new Error("Invalid SoundCloud URL");await this.loadSoundCloudAPI(),this.createIframe(),await this.initializeWidget()}isValidSoundCloudUrl(e){return e.includes("soundcloud.com")||e.includes("api.soundcloud.com")}isPlaylist(){return this.trackUrl&&this.trackUrl.includes("/sets/")}getEmbedUrl(){let e=encodeURIComponent(this.trackUrl),t=new URLSearchParams({url:this.trackUrl,auto_play:this.player.options.autoplay?"true":"false",hide_related:"true",show_comments:"false",show_user:"true",show_reposts:"false",show_teaser:"false",visual:"false",color:"%23007bff"});return"https://w.soundcloud.com/player/?".concat(t.toString())}async loadSoundCloudAPI(){return window.SC&&window.SC.Widget?Promise.resolve():new Promise((e,t)=>{let i=document.createElement("script");i.src="https://w.soundcloud.com/player/api.js",i.onload=()=>{setTimeout(()=>{window.SC&&window.SC.Widget?e():t(new Error("SoundCloud Widget API not available"))},100)},i.onerror=()=>t(new Error("Failed to load SoundCloud Widget API")),document.head.appendChild(i)})}createIframe(){this.player.element.style.display="none",this.player.element.removeAttribute("poster"),this.player.videoWrapper&&(this.player.videoWrapper.classList.remove("vidply-forced-poster"),this.player.videoWrapper.style.removeProperty("--vidply-poster-image")),this.iframeId="soundcloud-player-".concat(Math.random().toString(36).substr(2,9)),this.iframe=document.createElement("iframe"),this.iframe.id=this.iframeId,this.iframe.scrolling="no",this.iframe.frameBorder="no",this.iframe.allow="autoplay",this.iframe.src=this.getEmbedUrl(),this.iframe.style.width="100%",this.iframe.style.display="block",this.isPlaylist()?(this.iframe.style.aspectRatio="16 / 9",this.iframe.classList.add("vidply-soundcloud-iframe","vidply-soundcloud-playlist")):(this.iframe.style.aspectRatio="16 / 3",this.iframe.classList.add("vidply-soundcloud-iframe")),this.iframe.style.maxHeight="100%",this.player.element.parentNode.insertBefore(this.iframe,this.player.element)}async initializeWidget(){return new Promise((e,t)=>{this.iframe.addEventListener("load",()=>{try{this.widget=window.SC.Widget(this.iframe),this.widget.bind(window.SC.Widget.Events.READY,()=>{this.isReady=!0,this.attachEvents(),this.player.container&&this.player.container.classList.add("vidply-external-controls"),this.widget.getCurrentSound(i=>{i&&(this.player.state.duration=i.duration/1e3,this.player.emit("loadedmetadata"))}),e()}),this.widget.bind(window.SC.Widget.Events.ERROR,i=>{this.player.handleError(new Error("SoundCloud error: ".concat(i.message||"Unknown error")))})}catch(i){t(i)}}),setTimeout(()=>{this.isReady||t(new Error("SoundCloud widget initialization timeout"))},1e4)})}attachEvents(){if(!this.widget)return;let e=window.SC.Widget.Events;this.widget.bind(e.PLAY,()=>{this.player.state.playing=!0,this.player.state.paused=!1,this.player.state.ended=!1,this.player.emit("play"),this.player.options.onPlay&&this.player.options.onPlay.call(this.player)}),this.widget.bind(e.PAUSE,()=>{this.player.state.playing=!1,this.player.state.paused=!0,this.player.emit("pause"),this.player.options.onPause&&this.player.options.onPause.call(this.player)}),this.widget.bind(e.FINISH,()=>{this.player.state.playing=!1,this.player.state.paused=!0,this.player.state.ended=!0,this.player.emit("ended"),this.player.options.onEnded&&this.player.options.onEnded.call(this.player),this.player.options.loop&&(this.seek(0),this.play())}),this.widget.bind(e.PLAY_PROGRESS,t=>{let i=t.currentPosition/1e3;this.player.state.currentTime=i,this.player.emit("timeupdate",i),this.player.options.onTimeUpdate&&this.player.options.onTimeUpdate.call(this.player,i)}),this.widget.bind(e.SEEK,t=>{this.player.state.currentTime=t.currentPosition/1e3,this.player.emit("seeked")}),this.widget.bind(e.LOAD_PROGRESS,t=>{if(this.player.state.duration){let i=t.loadedProgress*this.player.state.duration;this.player.emit("progress",i)}})}play(){if(this.isReady&&this.widget){let e=window.scrollX,t=window.scrollY;this.widget.play(),window.scrollTo(e,t)}}pause(){this.isReady&&this.widget&&this.widget.pause()}seek(e){this.isReady&&this.widget&&(this.widget.seekTo(e*1e3),this.player.state.currentTime=e)}setVolume(e){this.isReady&&this.widget&&(this.widget.setVolume(e*100),this.player.state.volume=e)}setMuted(e){this.isReady&&this.widget&&(e?this.widget.getVolume(t=>{this._previousVolume=t,this.widget.setVolume(0)}):this.widget.setVolume(this._previousVolume||100),this.player.state.muted=e)}setPlaybackSpeed(e){this.player.log("SoundCloud does not support playback speed control","warn")}getCurrentSound(){return new Promise(e=>{this.isReady&&this.widget?this.widget.getCurrentSound(t=>{e(t)}):e(null)})}destroy(){if(this.widget){let e=window.SC.Widget.Events;try{this.widget.unbind(e.READY),this.widget.unbind(e.PLAY),this.widget.unbind(e.PAUSE),this.widget.unbind(e.FINISH),this.widget.unbind(e.PLAY_PROGRESS),this.widget.unbind(e.SEEK),this.widget.unbind(e.LOAD_PROGRESS),this.widget.unbind(e.ERROR)}catch(t){}}this.iframe&&this.iframe.parentNode&&this.iframe.parentNode.removeChild(this.iframe),this.player.element&&(this.player.element.style.display=""),this.widget=null,this.isReady=!1}},ut=ge});var ie=class{constructor(){this.events={}}on(e,t){return this.events[e]||(this.events[e]=[]),this.events[e].push(t),this}once(e,t){let i=(...s)=>{t(...s),this.off(e,i)};return this.on(e,i)}off(e,t){return this.events[e]?(t?this.events[e]=this.events[e].filter(i=>i!==t):delete this.events[e],this):this}emit(e,...t){return this.events[e]?(this.events[e].forEach(i=>{i(...t)}),this):this}removeAllListeners(){return this.events={},this}};V();V();se();_();H();ae();function ne(g,e=100){let t;return function(...s){let a=()=>{clearTimeout(t),g(...s)};clearTimeout(t),t=setTimeout(a,e)}}function j(g=768){return window.innerWidth<g}function X(g,e=100){let t=!1,i=()=>{t||(t=!0,g())};requestAnimationFrame(i),setTimeout(i,e)}var re=class{constructor(e){this.player=e,this.element=null,this.controls={},this.hideTimeout=null,this.isDraggingProgress=!1,this.isDraggingVolume=!1,this.openMenu=null,this.openMenuButton=null,this.init()}init(){this.createElement(),this.createControls(),this.attachEvents(),this.setupAutoHide(),this.setupOverflowDetection()}isTouchDevice(){return"ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0}positionMenu(e,t,i=!1){let s=j(),a=e.classList.contains("".concat(this.player.options.classPrefix,"-overflow-menu-list"));if(this.player.state.fullscreen&&e.parentElement===this.player.container){let o=()=>{let c=t.getBoundingClientRect(),r=e.getBoundingClientRect(),d=this.player.container.getBoundingClientRect(),h=window.innerHeight,p=c.left+c.width/2-d.left,y=c.top-d.top,b=c.bottom-d.top,w=c.top-d.top,f=d.bottom-c.bottom;if(w>=r.height+20||w>f?(e.style.bottom="".concat(d.height-y+8,"px"),e.style.top="auto",e.classList.remove("vidply-menu-below")):(e.style.top="".concat(b+8,"px"),e.style.bottom="auto",e.classList.add("vidply-menu-below")),a){let L=c.right-d.left;e.style.right="".concat(d.width-L,"px"),e.style.left="auto",e.style.transform="none"}else e.style.left="".concat(p,"px"),e.style.right="auto",e.style.transform="translateX(-50%)"};i?o():requestAnimationFrame(o);return}if(s){let o=e.classList.contains("".concat(this.player.options.classPrefix,"-volume-menu")),c=()=>{let r=t.parentElement;if(!r)return;let d=t.getBoundingClientRect(),h=r.getBoundingClientRect(),p=e.getBoundingClientRect(),y=window.innerWidth,b=window.innerHeight;if(o){let w=d.left+d.width/2-h.left;e.style.left="".concat(w,"px"),e.style.right="auto",e.style.transform="translateX(-50%)";return}p.right>y&&(e.style.left="auto",e.style.right="10px",e.style.transform="none"),p.left<0&&(e.style.left="10px",e.style.right="auto",e.style.transform="none"),p.top<10&&(e.style.top="10px"),p.bottom>b-10&&(e.style.bottom="10px",e.style.top="auto")};i?c():requestAnimationFrame(c);return}let l=()=>{let o=t.getBoundingClientRect(),c=e.getBoundingClientRect(),r=window.innerWidth,d=window.innerHeight,h=t.parentElement;if(!h)return;let p=h.getBoundingClientRect(),y=o.left+o.width/2-p.left,b=o.bottom-p.top,w=o.top-p.top,f=o.top,L=d-o.bottom,v=w-c.height-8,M=null;f<c.height+20&&L>f?(v=null,M=p.bottom-p.top-b+8,e.classList.add("vidply-menu-below")):e.classList.remove("vidply-menu-below");let E="auto",S="auto",T="translateX(0)";if(a)E="auto",S=0,T="translateX(0)";else{E=y-c.width/2;let D=o.left+o.width/2-c.width/2;D<10?(E=0,T="translateX(0)"):D+c.width>r-10?(E="auto",S=0,T="translateX(0)"):(E=y,T="translateX(-50%)")}v!==null?(e.style.top="".concat(v,"px"),e.style.bottom="auto"):M!==null&&(e.style.top="auto",e.style.bottom="".concat(M,"px")),E!=="auto"?(e.style.left="".concat(E,"px"),e.style.right="auto"):(e.style.left="auto",e.style.right="".concat(S,"px")),e.style.transform=T};i?l():requestAnimationFrame(()=>{setTimeout(l,10)})}insertMenuIntoDOM(e,t){e.id||(e.id="vidply-menu-".concat(Math.random().toString(36).substr(2,9))),t.setAttribute("aria-controls",e.id),t.setAttribute("aria-haspopup","true"),this.player.state.fullscreen?(this.player.container.appendChild(e),e.dataset.triggerButton=t.getAttribute("aria-label")||"button"):t.insertAdjacentElement("afterend",e)}attachMenuCloseHandler(e,t,i=!1){this.openMenu&&this.openMenu!==e&&this.openMenuButton&&(this.openMenuButton._vidplyBlurHandler&&(this.openMenuButton.removeEventListener("blur",this.openMenuButton._vidplyBlurHandler),delete this.openMenuButton._vidplyBlurHandler),this.openMenuButton._vidplyMousedownHandler&&(this.openMenuButton.removeEventListener("mousedown",this.openMenuButton._vidplyMousedownHandler),delete this.openMenuButton._vidplyMousedownHandler),this.openMenu&&document.contains(this.openMenu)?this.openMenu.remove():this.openMenu&&this.openMenu.parentNode&&this.openMenu.parentNode.removeChild(this.openMenu),this.openMenuButton&&this.openMenuButton.setAttribute("aria-expanded","false")),this.openMenu=e,this.openMenuButton=t,this.positionMenu(e,t),t&&t.setAttribute("aria-expanded","true");let s=!1,a=!0,n=()=>{s=!0,a=!1,setTimeout(()=>{s=!1,a=!0},200)};t.addEventListener("mousedown",n),t._vidplyMousedownHandler=n;let l=d=>{if(!a||s||this.openMenu!==e)return;let h=d.relatedTarget;requestAnimationFrame(()=>{setTimeout(()=>{var v;if(!a||this.openMenu!==e)return;let p=document.activeElement;if(e.contains(p))return;let y=this.player.signLanguageWrapper,b=(v=this.player.transcriptManager)==null?void 0:v.transcriptWindow;if(y&&y.contains(p)||b&&b.contains(p))return;let w=this.element.querySelectorAll("button"),f=Array.from(w).includes(p)&&p!==t,L=h&&Array.from(w).includes(h)&&h!==t;if(f||L){if(this.openMenu!==e)return;e&&document.contains(e)?e.remove():e&&e.parentNode&&e.parentNode.removeChild(e),t&&t.setAttribute("aria-expanded","false"),this.openMenu===e&&(this.openMenu=null,this.openMenuButton=null),t.removeEventListener("blur",l),t.removeEventListener("mousedown",n),delete t._vidplyBlurHandler,delete t._vidplyMousedownHandler}},10)})};t.addEventListener("blur",l),t._vidplyBlurHandler=l;let o=()=>{this.closeMenuAndReturnFocus(e,t)},c=null,r=null;setTimeout(()=>{c=d=>{i&&e.contains(d.target)||this.openMenu===e&&!e.contains(d.target)&&!t.contains(d.target)&&(o(),c&&document.removeEventListener("click",c),r&&document.removeEventListener("keydown",r))},r=d=>{d.key==="Escape"&&this.openMenu===e&&(d.preventDefault(),d.stopPropagation(),this.closeMenuAndReturnFocus(e,t,!0),c&&document.removeEventListener("click",c),r&&document.removeEventListener("keydown",r))},document.addEventListener("click",c),document.addEventListener("keydown",r)},100)}closeMenuAndReturnFocus(e,t,i=!0){e&&(document.contains(e)?e.remove():e.parentNode&&e.parentNode.removeChild(e)),t&&(t.setAttribute("aria-expanded","false"),e&&e.id&&t.removeAttribute("aria-controls"),i&&requestAnimationFrame(()=>{setTimeout(()=>{t&&document.contains(t)&&t.focus({preventScroll:!0})},0)})),this.openMenu===e&&(this.openMenu=null,this.openMenuButton=null)}closeOpenMenu(){this.openMenu&&this.openMenuButton&&(this.openMenu&&document.contains(this.openMenu)?this.openMenu.remove():this.openMenu&&this.openMenu.parentNode&&this.openMenu.parentNode.removeChild(this.openMenu),this.openMenuButton&&this.openMenuButton.setAttribute("aria-expanded","false"),this.openMenu=null,this.openMenuButton=null)}attachMenuKeyboardNavigation(e,t){let i=Array.from(e.querySelectorAll(".".concat(this.player.options.classPrefix,"-menu-item")));if(i.length===0)return;let s=a=>{let n=i.indexOf(document.activeElement);switch(a.key){case"ArrowDown":a.preventDefault(),a.stopPropagation();let l=(n+1)%i.length;i[l].focus({preventScroll:!1}),i[l].scrollIntoView({behavior:"smooth",block:"nearest"});break;case"ArrowUp":a.preventDefault(),a.stopPropagation();let o=(n-1+i.length)%i.length;i[o].focus({preventScroll:!1}),i[o].scrollIntoView({behavior:"smooth",block:"nearest"});break;case"ArrowLeft":case"ArrowRight":a.preventDefault(),a.stopPropagation();break;case"Home":a.preventDefault(),a.stopPropagation(),i[0].focus({preventScroll:!1}),i[0].scrollIntoView({behavior:"smooth",block:"nearest"});break;case"End":a.preventDefault(),a.stopPropagation(),i[i.length-1].focus({preventScroll:!1}),i[i.length-1].scrollIntoView({behavior:"smooth",block:"nearest"});break;case"Enter":case" ":a.preventDefault(),a.stopPropagation(),document.activeElement&&i.includes(document.activeElement)&&(document.activeElement.click(),F(t,{delay:0}));break;case"Escape":a.preventDefault(),a.stopPropagation(),this.closeMenuAndReturnFocus(e,t,!0);break}};e.addEventListener("keydown",s)}createElement(){this.element=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-controls"),attributes:{role:"region","aria-label":m.t("player.label")+" controls"}})}createControls(){let e=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-progress-time-wrapper")});this.player.options.progressBar&&(this.createProgressBar(),e.appendChild(this.controls.progress)),(this.player.options.currentTime||this.player.options.duration)&&e.appendChild(this.createTimeDisplay()),this.element.appendChild(e);let t=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-controls-buttons")}),i=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-controls-left")});this.player.playlistManager&&i.appendChild(this.createPreviousButton()),this.player.options.playPauseButton&&i.appendChild(this.createPlayPauseButton()),i.appendChild(this.createRestartButton()),this.player.playlistManager&&i.appendChild(this.createNextButton()),this.player.playlistManager||i.appendChild(this.createRewindButton()),this.player.playlistManager||i.appendChild(this.createForwardButton()),this.player.options.volumeControl&&(this.isTouchDevice()?i.appendChild(this.createMuteButton()):i.appendChild(this.createVolumeControl())),this.rightButtons=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-controls-right")});let s=this.hasChapterTracks(),a=this.hasCaptionTracks(),n=this.hasQualityLevels(),l=this.hasAudioDescription();if(this.player.options.chaptersButton&&s){let r=this.createChaptersButton();r.dataset.overflowPriority="3",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}if(this.player.options.captionsButton&&a){let r=this.createCaptionsButton();r.dataset.overflowPriority="1",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}if(this.player.options.captionStyleButton&&a){let r=this.createCaptionStyleButton();r.dataset.overflowPriority="3",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}if(this.player.options.speedButton){let r=this.createSpeedButton();r.dataset.overflowPriority="1",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}if(this.player.options.audioDescriptionButton&&l){let r=this.createAudioDescriptionButton();r.dataset.overflowPriority="2",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}if(this.player.options.transcriptButton&&a){let r=this.createTranscriptButton();r.dataset.overflowPriority="3",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}if(this.player.playlistManager&&this.player.options.playlistToggleButton!==!1){let r=this.createPlaylistToggleButton();r.dataset.overflowPriority="2",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}let o=this.hasSignLanguage();if(this.player.options.signLanguageButton&&o){let r=this.createSignLanguageButton();r.dataset.overflowPriority="3",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}if(this.player.options.qualityButton&&n){let r=this.createQualityButton();r.dataset.overflowPriority="2",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}if(this.player.options.pipButton&&"pictureInPictureEnabled"in document){let r=this.createPipButton();r.dataset.overflowPriority="3",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}let c=this.player.element.tagName.toLowerCase()==="audio";if(this.player.options.fullscreenButton&&!c){let r=this.createFullscreenButton();r.dataset.overflowPriority="1",r.dataset.overflowPriorityMobile="3",this.rightButtons.appendChild(r)}this.overflowMenuButton=this.createOverflowMenuButton(),this.overflowMenuButton.style.display="none",this.rightButtons.appendChild(this.overflowMenuButton),t.appendChild(i),t.appendChild(this.rightButtons),this.element.appendChild(t),this.ensureButtonTooltips(t)}ensureButtonTooltips(e){e.querySelectorAll("button").forEach(i=>{if(i.querySelector(".".concat(this.player.options.classPrefix,"-tooltip"))||i.querySelector(".".concat(this.player.options.classPrefix,"-button-text"))||i.getAttribute("role")==="menuitem"||i.classList.contains("".concat(this.player.options.classPrefix,"-settings-item"))||i.classList.contains("".concat(this.player.options.classPrefix,"-menu-item"))||i.classList.contains("".concat(this.player.options.classPrefix,"-transcript-settings-item"))||i.classList.contains("".concat(this.player.options.classPrefix,"-sign-language-settings-item"))||i.classList.contains("".concat(this.player.options.classPrefix,"-popup-settings-item")))return;let s=i.getAttribute("aria-label");s&&u.attachTooltip(i,s,this.player.options.classPrefix)})}hasChapterTracks(){let e=this.player.element.textTracks;for(let t=0;t<e.length;t++)if(e[t].kind==="chapters")return!0;return!1}hasCaptionTracks(){let e=this.player.element.textTracks;for(let t=0;t<e.length;t++)if(e[t].kind==="captions"||e[t].kind==="subtitles")return!0;return!1}hasQualityLevels(){if(this.player.renderer&&this.player.renderer.getQualities){let e=this.player.renderer.getQualities();return e&&e.length>1}return!1}hasAudioDescription(){return this.player.audioDescriptionSrc&&this.player.audioDescriptionSrc.length>0?!0:Array.from(this.player.element.textTracks||[]).some(t=>t.kind==="descriptions")}hasSignLanguage(){let e=this.player.signLanguageSrc&&this.player.signLanguageSrc.length>0,t=this.player.signLanguageSources&&Object.keys(this.player.signLanguageSources).length>0;return e||t}createProgressBar(){let e=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-progress-container"),attributes:{role:"slider","aria-label":m.t("player.progress"),"aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":"0",tabindex:"0"}});this.controls.buffered=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-progress-buffered")}),this.controls.played=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-progress-played")}),this.controls.progressHandle=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-progress-handle")}),this.controls.progressTooltip=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-progress-tooltip")}),e.appendChild(this.controls.buffered),e.appendChild(this.controls.played),this.controls.played.appendChild(this.controls.progressHandle),e.appendChild(this.controls.progressTooltip),this.controls.progress=e,this.setupProgressBarEvents()}setupProgressBarEvents(){let e=this.controls.progress,t=i=>{let s=e.getBoundingClientRect(),a=s.width>0?Math.max(0,Math.min(1,(i-s.left)/s.width)):0,n=this.player.state.duration||0,l=a*n;return{percent:a,time:l}};e.addEventListener("mousedown",i=>{this.isDraggingProgress=!0;let{time:s}=t(i.clientX);this.player.seek(s)}),document.addEventListener("mousemove",i=>{if(this.isDraggingProgress){let{time:s}=t(i.clientX);this.player.seek(s)}}),document.addEventListener("mouseup",()=>{this.isDraggingProgress=!1}),e.addEventListener("mousemove",i=>{if(!this.isDraggingProgress){let{time:s}=t(i.clientX);this.controls.progressTooltip.textContent=C.formatTime(s),this.controls.progressTooltip.style.left="".concat(i.clientX-e.getBoundingClientRect().left,"px"),this.controls.progressTooltip.style.display="block"}}),e.addEventListener("mouseleave",()=>{this.controls.progressTooltip.style.display="none"}),e.addEventListener("keydown",i=>{i.key==="ArrowLeft"?(i.preventDefault(),this.player.seekBackward(5)):i.key==="ArrowRight"&&(i.preventDefault(),this.player.seekForward(5))}),e.addEventListener("touchstart",i=>{this.isDraggingProgress=!0;let s=i.touches[0],{time:a}=t(s.clientX);this.player.seek(a)}),e.addEventListener("touchmove",i=>{if(this.isDraggingProgress){i.preventDefault();let s=i.touches[0],{time:a}=t(s.clientX);this.player.seek(a)}}),e.addEventListener("touchend",()=>{this.isDraggingProgress=!1})}createPlayPauseButton(){let e=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-play-pause"),attributes:{type:"button","aria-label":m.t("player.play")}});return e.appendChild(k("play")),e.addEventListener("click",()=>{this.player.toggle()}),this.controls.playPause=e,e}createRestartButton(){let e=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-restart"),attributes:{type:"button","aria-label":m.t("player.restart")}});return e.appendChild(k("restart")),e.addEventListener("click",()=>{this.player.seek(0),this.player.play()}),e}createPreviousButton(){let e=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-previous"),attributes:{type:"button","aria-label":m.t("player.previous")}});e.appendChild(k("skipPrevious")),e.addEventListener("click",()=>{this.player.playlistManager&&this.player.playlistManager.previous()});let t=()=>{this.player.playlistManager&&(e.disabled=!this.player.playlistManager.hasPrevious()&&!this.player.playlistManager.options.loop)};return this.player.on("playlisttrackchange",t),t(),this.controls.previous=e,e}createNextButton(){let e=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-next"),attributes:{type:"button","aria-label":m.t("player.next")}});e.appendChild(k("skipNext")),e.addEventListener("click",()=>{this.player.playlistManager&&this.player.playlistManager.next()});let t=()=>{this.player.playlistManager&&(e.disabled=!this.player.playlistManager.hasNext()&&!this.player.playlistManager.options.loop)};return this.player.on("playlisttrackchange",t),t(),this.controls.next=e,e}createPlaylistToggleButton(){let e=this.player.playlistManager?"".concat(this.player.playlistManager.uniqueId,"-panel"):"vidply-playlist-panel",t=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-playlist-toggle"),attributes:{type:"button","aria-label":m.t("player.playlist"),"aria-expanded":"false","aria-pressed":"false","aria-controls":e}});return t.appendChild(k("playlist")),t.addEventListener("click",()=>{this.player.playlistManager&&this.player.playlistManager.togglePanel()}),this.controls.playlistToggle=t,t}createRewindButton(){let e=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-rewind"),attributes:{type:"button","aria-label":m.t("player.rewindSeconds",{seconds:15})}});return e.appendChild(k("rewind")),e.addEventListener("click",()=>{this.player.seekBackward(15)}),e}createForwardButton(){let e=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-forward"),attributes:{type:"button","aria-label":m.t("player.forwardSeconds",{seconds:15})}});return e.appendChild(k("forward")),e.addEventListener("click",()=>{this.player.seekForward(15)}),e}createMuteButton(){let e=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-mute"),attributes:{type:"button","aria-label":m.t("player.mute")}});return e.appendChild(k("volumeHigh")),e.addEventListener("click",()=>{this.player.toggleMute()}),this.controls.mute=e,e}createVolumeControl(){let e=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-mute"),attributes:{type:"button","aria-label":m.t("player.volume"),"aria-expanded":"false"}});return e.appendChild(k("volumeHigh")),e.addEventListener("contextmenu",t=>{t.preventDefault(),this.player.toggleMute()}),e.addEventListener("click",()=>{this.showVolumeSlider(e)}),this.controls.mute=e,e}showVolumeSlider(e){let t=document.querySelector(".".concat(this.player.options.classPrefix,"-volume-menu"));if(t){t.remove(),e.setAttribute("aria-expanded","false");return}let i=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-volume-menu ").concat(this.player.options.classPrefix,"-menu")}),s=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-volume-slider"),attributes:{role:"slider","aria-label":m.t("player.volume"),"aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":String(Math.round(this.player.state.volume*100)),tabindex:"0"}}),a=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-volume-track")}),n=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-volume-fill")}),l=this.player.state.volume*100;n.style.height="".concat(l,"%");let o=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-volume-handle")});a.appendChild(n),n.appendChild(o),s.appendChild(a),i.appendChild(s);let c=r=>{let d=a.getBoundingClientRect(),h=Math.max(0,Math.min(1,1-(r-d.top)/d.height));this.player.setVolume(h)};s.addEventListener("mousedown",r=>{r.stopPropagation(),r.preventDefault(),this.isDraggingVolume=!0,c(r.clientY)}),document.addEventListener("mousemove",r=>{this.isDraggingVolume&&c(r.clientY)}),document.addEventListener("mouseup",()=>{this.isDraggingVolume=!1}),s.addEventListener("touchstart",r=>{r.stopPropagation(),r.preventDefault(),this.isDraggingVolume=!0;let d=r.touches[0];c(d.clientY)},{passive:!1}),s.addEventListener("touchmove",r=>{if(this.isDraggingVolume){r.preventDefault();let d=r.touches[0];c(d.clientY)}},{passive:!1}),s.addEventListener("touchend",r=>{r.stopPropagation(),r.preventDefault(),this.isDraggingVolume=!1},{passive:!1}),s.addEventListener("touchcancel",()=>{this.isDraggingVolume=!1}),s.addEventListener("keydown",r=>{r.key==="ArrowUp"?(r.preventDefault(),this.player.setVolume(Math.min(1,this.player.state.volume+.1))):r.key==="ArrowDown"?(r.preventDefault(),this.player.setVolume(Math.max(0,this.player.state.volume-.1))):r.key==="Escape"&&(r.preventDefault(),r.stopPropagation(),this.closeMenuAndReturnFocus(i,e,!0))}),i.addEventListener("click",r=>{r.stopPropagation()}),i.addEventListener("touchstart",r=>{r.stopPropagation()}),i.addEventListener("touchmove",r=>{r.stopPropagation()}),i.addEventListener("touchend",r=>{r.stopPropagation()}),i.style.visibility="hidden",i.style.display="block",this.insertMenuIntoDOM(i,e),this.positionMenu(i,e,!0),requestAnimationFrame(()=>{i.style.visibility="visible"}),this.controls.volumeSlider=s,this.controls.volumeFill=n,F(s,{delay:50}),this.attachMenuCloseHandler(i,e,!0)}createTimeDisplay(){let e=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-time"),attributes:{role:"group","aria-label":m.t("time.display")}});this.controls.currentTimeDisplay=u.createElement("span",{className:"".concat(this.player.options.classPrefix,"-current-time")});let t=u.createElement("span",{textContent:"00:00",attributes:{"aria-hidden":"true"}}),i=u.createElement("span",{className:"vidply-sr-only",textContent:m.t("time.seconds",{count:0})});this.controls.currentTimeDisplay.appendChild(t),this.controls.currentTimeDisplay.appendChild(i),this.controls.currentTimeVisual=t,this.controls.currentTimeAccessible=i;let s=u.createElement("span",{textContent:" / ",attributes:{"aria-hidden":"true"}});this.controls.durationDisplay=u.createElement("span",{className:"".concat(this.player.options.classPrefix,"-duration")});let a=u.createElement("span",{textContent:"00:00",attributes:{"aria-hidden":"true"}}),n=u.createElement("span",{className:"vidply-sr-only",textContent:m.t("time.durationPrefix")+m.t("time.seconds",{count:0})});return this.controls.durationDisplay.appendChild(a),this.controls.durationDisplay.appendChild(n),this.controls.durationVisual=a,this.controls.durationAccessible=n,e.appendChild(this.controls.currentTimeDisplay),e.appendChild(s),e.appendChild(this.controls.durationDisplay),e}createChaptersButton(){let e=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-chapters"),attributes:{type:"button","aria-label":m.t("player.chapters"),"aria-expanded":"false"}});return e.appendChild(k("chapters")),e.addEventListener("click",()=>{this.showChaptersMenu(e)}),this.controls.chapters=e,e}showChaptersMenu(e){let t=document.querySelector(".".concat(this.player.options.classPrefix,"-chapters-menu"));if(t){t.remove(),e.setAttribute("aria-expanded","false"),this.openMenu===t&&(this.openMenu=null,this.openMenuButton=null);return}let i=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-chapters-menu ").concat(this.player.options.classPrefix,"-menu"),attributes:{role:"menu","aria-label":m.t("player.chapters")}}),s=Array.from(this.player.element.textTracks).filter(a=>a.kind==="chapters");if(s.length===0){let a=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:m.t("player.noChapters"),attributes:{role:"menuitem"},style:{opacity:"0.5",cursor:"default"}});i.appendChild(a)}else{let a=s[0];if(a.mode==="disabled"&&(a.mode="hidden"),!a.cues||a.cues.length===0){let n=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:m.t("player.loadingChapters"),attributes:{role:"menuitem"},style:{opacity:"0.5",cursor:"default"}});i.appendChild(n);let l=()=>{i.remove(),this.showChaptersMenu(e)};a.addEventListener("load",l,{once:!0}),setTimeout(()=>{a.cues&&a.cues.length>0&&document.contains(i)&&(i.remove(),this.showChaptersMenu(e))},500)}else{let n=a.cues;for(let l=0;l<n.length;l++){let o=n[l],c=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-menu-item"),attributes:{type:"button",role:"menuitem",tabindex:"-1"}}),r=u.createElement("span",{className:"".concat(this.player.options.classPrefix,"-chapter-time"),textContent:C.formatTime(o.startTime),attributes:{"aria-label":C.formatDuration(o.startTime)}}),d=u.createElement("span",{className:"".concat(this.player.options.classPrefix,"-chapter-title"),textContent:o.text});c.appendChild(r),c.appendChild(document.createTextNode(" ")),c.appendChild(d),c.addEventListener("click",()=>{this.player.seek(o.startTime),this.closeMenuAndReturnFocus(i,e)}),i.appendChild(c)}this.attachMenuKeyboardNavigation(i,e),setTimeout(()=>{let l=i.querySelector(".".concat(this.player.options.classPrefix,"-menu-item"));l&&l.focus({preventScroll:!0})},0)}}i.style.visibility="hidden",i.style.display="block",this.insertMenuIntoDOM(i,e),this.positionMenu(i,e,!0),requestAnimationFrame(()=>{i.style.visibility="visible"}),this.attachMenuCloseHandler(i,e)}createQualityButton(){let e=m.t("player.quality"),t=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-quality"),attributes:{type:"button","aria-label":e,"aria-expanded":"false"}});t.appendChild(k("hd")),u.attachTooltip(t,e,this.player.options.classPrefix);let i=u.createElement("span",{className:"".concat(this.player.options.classPrefix,"-quality-text"),textContent:""});return t.appendChild(i),t.addEventListener("click",()=>{this.showQualityMenu(t)}),this.controls.quality=t,this.controls.qualityText=i,setTimeout(()=>this.updateQualityIndicator(),500),t}showQualityMenu(e){let t=document.querySelector(".".concat(this.player.options.classPrefix,"-quality-menu"));if(t){t.remove(),e.setAttribute("aria-expanded","false"),this.openMenu===t&&(this.openMenu=null,this.openMenuButton=null);return}let i=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-quality-menu ").concat(this.player.options.classPrefix,"-menu"),attributes:{role:"menu","aria-label":m.t("player.quality")}});if(this.player.renderer&&this.player.renderer.getQualities){let s=this.player.renderer.getQualities(),a=this.player.renderer.getCurrentQuality?this.player.renderer.getCurrentQuality():-1,n=this.player.renderer.hls!==void 0;if(s.length===0){let l=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:m.t("player.autoQuality"),attributes:{role:"menuitem"},style:{opacity:"0.5",cursor:"default"}});i.appendChild(l)}else{let l=null;if(n){let o=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:m.t("player.auto"),attributes:{type:"button",role:"menuitem",tabindex:"-1"}});this.player.renderer.hls&&this.player.renderer.hls.currentLevel===-1&&(o.classList.add("".concat(this.player.options.classPrefix,"-menu-item-active")),o.appendChild(k("check")),l=o),o.addEventListener("click",()=>{this.player.renderer.switchQuality&&this.player.renderer.switchQuality(-1),this.closeMenuAndReturnFocus(i,e)}),i.appendChild(o)}s.forEach(o=>{let c=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:o.name||"".concat(o.height,"p"),attributes:{type:"button",role:"menuitem",tabindex:"-1"}});o.index===a&&(c.classList.add("".concat(this.player.options.classPrefix,"-menu-item-active")),c.appendChild(k("check")),l=c),c.addEventListener("click",()=>{this.player.renderer.switchQuality&&this.player.renderer.switchQuality(o.index),this.closeMenuAndReturnFocus(i,e)}),i.appendChild(c)}),this.attachMenuKeyboardNavigation(i,e),setTimeout(()=>{let o=l||i.querySelector(".".concat(this.player.options.classPrefix,"-menu-item"));o&&o.focus({preventScroll:!0})},0)}}else{let s=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:m.t("player.noQuality"),style:{opacity:"0.5",cursor:"default"}});i.appendChild(s)}i.style.visibility="hidden",i.style.display="block",this.insertMenuIntoDOM(i,e),this.positionMenu(i,e,!0),requestAnimationFrame(()=>{i.style.visibility="visible"}),this.attachMenuCloseHandler(i,e)}createCaptionStyleButton(){let e=m.t("player.captionStyling"),t=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-caption-style"),attributes:{type:"button","aria-label":e,"aria-expanded":"false"}}),i=u.createElement("span",{textContent:"Aa",style:{fontSize:"14px",fontWeight:"bold"}});return t.appendChild(i),u.attachTooltip(t,e,this.player.options.classPrefix),t.addEventListener("click",()=>{this.showCaptionStyleMenu(t)}),this.controls.captionStyle=t,t}showCaptionStyleMenu(e){let t=document.querySelector(".".concat(this.player.options.classPrefix,"-caption-style-menu"));if(t){t.remove(),e.setAttribute("aria-expanded","false"),this.openMenu===t&&(this.openMenu=null,this.openMenuButton=null);return}let i=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-caption-style-menu ").concat(this.player.options.classPrefix,"-menu ").concat(this.player.options.classPrefix,"-settings-menu"),attributes:{role:"menu","aria-label":m.t("player.captionStyling")}});if(i.addEventListener("click",c=>{c.stopPropagation()}),!this.player.captionManager||this.player.captionManager.tracks.length===0){let c=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:m.t("player.noCaptions"),attributes:{role:"menuitem"},style:{opacity:"0.5",cursor:"default",padding:"12px 16px"}});i.appendChild(c),i.style.visibility="hidden",i.style.display="block",this.insertMenuIntoDOM(i,e),this.positionMenu(i,e,!0),requestAnimationFrame(()=>{i.style.visibility="visible"}),this.attachMenuCloseHandler(i,e,!0);return}let s=this.createStyleControl(m.t("styleLabels.fontSize"),"captionsFontSize",[{label:m.t("fontSizes.small"),value:"87.5%"},{label:m.t("fontSizes.normal"),value:"100%"},{label:m.t("fontSizes.large"),value:"125%"},{label:m.t("fontSizes.xlarge"),value:"150%"}]);i.appendChild(s);let a=this.createStyleControl(m.t("styleLabels.font"),"captionsFontFamily",[{label:m.t("fontFamilies.sansSerif"),value:"sans-serif"},{label:m.t("fontFamilies.serif"),value:"serif"},{label:m.t("fontFamilies.monospace"),value:"monospace"}]);i.appendChild(a);let n=this.createColorControl(m.t("styleLabels.textColor"),"captionsColor");i.appendChild(n);let l=this.createColorControl(m.t("styleLabels.background"),"captionsBackgroundColor");i.appendChild(l);let o=this.createOpacityControl(m.t("styleLabels.opacity"),"captionsOpacity");i.appendChild(o),i.style.minWidth="220px",i.style.visibility="hidden",i.style.display="block",this.insertMenuIntoDOM(i,e),this.positionMenu(i,e,!0),requestAnimationFrame(()=>{i.style.visibility="visible"}),this.attachMenuCloseHandler(i,e,!0),qe(i,".".concat(this.player.options.classPrefix,"-style-select"))}createStyleControl(e,t,i){let s=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-style-group")}),a="".concat(this.player.options.classPrefix,"-").concat(t,"-").concat(Date.now()),n=u.createElement("label",{textContent:e,attributes:{for:a},style:{display:"block",fontSize:"12px",marginBottom:"4px",color:"rgba(255,255,255,0.7)"}});s.appendChild(n);let l=u.createElement("select",{className:"".concat(this.player.options.classPrefix,"-style-select"),attributes:{id:a},style:{width:"100%",padding:"6px",background:"var(--vidply-white)",border:"1px solid var(--vidply-white-10)",borderRadius:"4px",color:"var(--vidply-black)",fontSize:"13px"}}),o=this.player.options[t];return i.forEach(c=>{let r=u.createElement("option",{textContent:c.label,attributes:{value:c.value}});c.value===o&&(r.selected=!0),l.appendChild(r)}),l.addEventListener("mousedown",c=>{c.stopPropagation()}),l.addEventListener("click",c=>{c.stopPropagation()}),l.addEventListener("change",c=>{c.stopPropagation(),this.player.options[t]=c.target.value,this.player.captionManager&&this.player.captionManager.setCaptionStyle(t.replace("captions","").charAt(0).toLowerCase()+t.replace("captions","").slice(1),c.target.value)}),s.appendChild(l),s}createColorControl(e,t){let i=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-style-group")}),s="".concat(this.player.options.classPrefix,"-").concat(t,"-").concat(Date.now()),a=u.createElement("label",{textContent:e,attributes:{for:s},style:{display:"block",fontSize:"12px",marginBottom:"4px",color:"rgba(255,255,255,0.7)"}});i.appendChild(a);let n=u.createElement("input",{attributes:{id:s,type:"color",value:this.player.options[t]},style:{width:"100%",height:"32px",padding:"2px",background:"rgba(255,255,255,0.1)",border:"1px solid rgba(255,255,255,0.2)",borderRadius:"4px",cursor:"pointer"}});return n.addEventListener("mousedown",l=>{l.stopPropagation()}),n.addEventListener("click",l=>{l.stopPropagation()}),n.addEventListener("change",l=>{l.stopPropagation(),this.player.options[t]=l.target.value,this.player.captionManager&&this.player.captionManager.setCaptionStyle(t.replace("captions","").charAt(0).toLowerCase()+t.replace("captions","").slice(1),l.target.value)}),i.appendChild(n),i}createOpacityControl(e,t){let i=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-style-group")}),s="".concat(this.player.options.classPrefix,"-").concat(t,"-").concat(Date.now()),a=u.createElement("div",{style:{display:"flex",justifyContent:"space-between",marginBottom:"4px"}}),n=u.createElement("label",{textContent:e,attributes:{for:s},style:{fontSize:"12px",color:"rgba(255,255,255,0.7)"}}),l=u.createElement("span",{textContent:Math.round(this.player.options[t]*100)+"%",style:{fontSize:"12px",color:"rgba(255,255,255,0.7)"}});a.appendChild(n),a.appendChild(l),i.appendChild(a);let o=u.createElement("input",{attributes:{id:s,type:"range",min:"0",max:"1",step:"0.1",value:String(this.player.options[t])},style:{width:"100%",cursor:"pointer"}});return o.addEventListener("mousedown",c=>{c.stopPropagation()}),o.addEventListener("click",c=>{c.stopPropagation()}),o.addEventListener("input",c=>{c.stopPropagation();let r=parseFloat(c.target.value);l.textContent=Math.round(r*100)+"%",this.player.options[t]=r,this.player.captionManager&&this.player.captionManager.setCaptionStyle(t.replace("captions","").charAt(0).toLowerCase()+t.replace("captions","").slice(1),r)}),i.appendChild(o),i}createSpeedButton(){let e=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-speed"),attributes:{type:"button","aria-label":m.t("player.speed"),"aria-expanded":"false"}});e.appendChild(k("speed"));let t=u.createElement("span",{className:"".concat(this.player.options.classPrefix,"-speed-text"),textContent:"1x"});return e.appendChild(t),e.addEventListener("click",()=>{this.showSpeedMenu(e)}),this.controls.speed=e,this.controls.speedText=t,e}formatSpeedLabel(e){if(e===1)return m.t("speeds.normal");let t=e.toLocaleString(m.getLanguage(),{minimumFractionDigits:0,maximumFractionDigits:2});return"".concat(t,"×")}showSpeedMenu(e){let t=document.querySelector(".".concat(this.player.options.classPrefix,"-speed-menu"));if(t){t.remove(),e.setAttribute("aria-expanded","false"),this.openMenu===t&&(this.openMenu=null,this.openMenuButton=null);return}let i=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-speed-menu ").concat(this.player.options.classPrefix,"-menu"),attributes:{role:"menu"}}),s=[.25,.5,.75,1,1.25,1.5,1.75,2],a=null;s.forEach(n=>{let l=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:this.formatSpeedLabel(n),attributes:{type:"button",role:"menuitem",tabindex:"-1"}});n===this.player.state.playbackSpeed&&(l.classList.add("".concat(this.player.options.classPrefix,"-menu-item-active")),l.appendChild(k("check")),a=l),l.addEventListener("click",()=>{this.player.setPlaybackSpeed(n),this.closeMenuAndReturnFocus(i,e)}),i.appendChild(l)}),i.style.visibility="hidden",i.style.display="block",this.insertMenuIntoDOM(i,e),this.positionMenu(i,e,!0),requestAnimationFrame(()=>{i.style.visibility="visible"}),this.attachMenuKeyboardNavigation(i,e),this.attachMenuCloseHandler(i,e),setTimeout(()=>{let n=a||i.querySelector(".".concat(this.player.options.classPrefix,"-menu-item"));n&&n.focus({preventScroll:!0})},0)}createCaptionsButton(){let e=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-captions-button"),attributes:{type:"button","aria-label":m.t("player.captions"),"aria-expanded":"false"}});return e.appendChild(k("captionsOff")),e.addEventListener("click",()=>{this.showCaptionsMenu(e)}),this.controls.captions=e,e}showCaptionsMenu(e){let t=document.querySelector(".".concat(this.player.options.classPrefix,"-captions-menu"));if(t){t.remove(),e.setAttribute("aria-expanded","false"),this.openMenu===t&&(this.openMenu=null,this.openMenuButton=null);return}let i=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-captions-menu ").concat(this.player.options.classPrefix,"-menu"),attributes:{role:"menu","aria-label":m.t("captions.select")}});if(!this.player.captionManager||this.player.captionManager.tracks.length===0){let l=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:m.t("player.noCaptions"),attributes:{role:"menuitem"},style:{opacity:"0.5",cursor:"default"}});i.appendChild(l),this.insertMenuIntoDOM(i,e),this.attachMenuCloseHandler(i,e);return}let s=null,a=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:m.t("captions.off"),attributes:{type:"button",role:"menuitem",tabindex:"-1"}});this.player.state.captionsEnabled||(a.classList.add("".concat(this.player.options.classPrefix,"-menu-item-active")),a.appendChild(k("check")),s=a),a.addEventListener("click",()=>{this.player.disableCaptions(),this.updateCaptionsButton(),this.closeMenuAndReturnFocus(i,e)}),i.appendChild(a),this.player.captionManager.getAvailableTracks().forEach(l=>{let o=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:l.label,attributes:{type:"button",role:"menuitem",lang:l.language,tabindex:"-1"}});this.player.state.captionsEnabled&&this.player.captionManager.currentTrack===this.player.captionManager.tracks[l.index]&&(o.classList.add("".concat(this.player.options.classPrefix,"-menu-item-active")),o.appendChild(k("check")),s=o),o.addEventListener("click",()=>{this.player.captionManager.switchTrack(l.index),this.updateCaptionsButton(),this.closeMenuAndReturnFocus(i,e)}),i.appendChild(o)}),this.insertMenuIntoDOM(i,e),this.attachMenuKeyboardNavigation(i,e),this.attachMenuCloseHandler(i,e),setTimeout(()=>{let l=s||i.querySelector(".".concat(this.player.options.classPrefix,"-menu-item"));l&&l.focus({preventScroll:!0})},0)}updateCaptionsButton(){if(!this.controls.captions)return;let e=this.controls.captions.querySelector(".vidply-icon"),t=this.player.state.captionsEnabled;e.innerHTML=t?k("captions").innerHTML:k("captionsOff").innerHTML}createTranscriptButton(){let e=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-transcript"),attributes:{type:"button","aria-label":m.t("player.transcript"),"aria-expanded":"false"}});return e.appendChild(k("transcript")),e.addEventListener("click",async()=>{await this.player.toggleTranscript(),this.updateTranscriptButton()}),this.controls.transcript=e,e}updateTranscriptButton(){if(!this.controls.transcript)return;let e=this.player.transcriptManager&&this.player.transcriptManager.isVisible;this.controls.transcript.setAttribute("aria-expanded",e?"true":"false")}createAudioDescriptionButton(){let e=m.t("player.audioDescription"),t=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-audio-description"),attributes:{type:"button","aria-label":e,role:"switch","aria-checked":"false"}});return t.appendChild(k("audioDescription")),u.attachTooltip(t,e,this.player.options.classPrefix),t.addEventListener("click",async()=>{await this.player.toggleAudioDescription(),this.updateAudioDescriptionButton()}),this.controls.audioDescription=t,t}updateAudioDescriptionButton(){if(!this.controls.audioDescription)return;let e=this.controls.audioDescription.querySelector(".vidply-icon"),t=this.player.state.audioDescriptionEnabled;e.innerHTML=t?k("audioDescriptionOn").innerHTML:k("audioDescription").innerHTML,this.controls.audioDescription.setAttribute("aria-checked",t?"true":"false")}createSignLanguageButton(){let e=m.t("player.signLanguage"),t=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-sign-language"),attributes:{type:"button","aria-label":e,"aria-expanded":"false"}});return t.appendChild(k("signLanguage")),u.attachTooltip(t,e,this.player.options.classPrefix),t.addEventListener("click",()=>{this.player.toggleSignLanguage(),this.updateSignLanguageButton()}),this.controls.signLanguage=t,t}updateSignLanguageButton(){if(!this.controls.signLanguage)return;let e=this.controls.signLanguage.querySelector(".vidply-icon"),t=this.player.state.signLanguageEnabled;e.innerHTML=t?k("signLanguageOn").innerHTML:k("signLanguage").innerHTML,this.controls.signLanguage.setAttribute("aria-expanded",t?"true":"false"),this.controls.signLanguage.setAttribute("aria-label",t?m.t("signLanguage.hide"):m.t("signLanguage.show"))}updateAccessibilityButtons(){let e=this.hasAudioDescription(),t=this.hasSignLanguage();if(e){if(!this.controls.audioDescription&&this.player.options.audioDescriptionButton!==!1){let i=this.createAudioDescriptionButton();i.dataset.overflowPriority="2",i.dataset.overflowPriorityMobile="3";let s=this.rightButtons.querySelector(".".concat(this.player.options.classPrefix,"-transcript")),a=this.rightButtons.querySelector(".".concat(this.player.options.classPrefix,"-playlist-toggle")),n=s||a||null;n?this.rightButtons.insertBefore(i,n):this.rightButtons.appendChild(i),this.setupOverflowMenu()}this.controls.audioDescription&&(this.controls.audioDescription.style.display="")}else this.controls.audioDescription&&(this.controls.audioDescription.style.display="none");if(t){if(!this.controls.signLanguage&&this.player.options.signLanguageButton!==!1){let i=this.createSignLanguageButton();i.dataset.overflowPriority="3",i.dataset.overflowPriorityMobile="3";let s=this.rightButtons.querySelector(".".concat(this.player.options.classPrefix,"-quality")),a=this.rightButtons.querySelector(".".concat(this.player.options.classPrefix,"-fullscreen")),n=s||a||null;n?this.rightButtons.insertBefore(i,n):this.rightButtons.appendChild(i),this.setupOverflowMenu()}this.controls.signLanguage&&(this.controls.signLanguage.style.display="")}else this.controls.signLanguage&&(this.controls.signLanguage.style.display="none")}createSettingsButton(){let e=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-settings"),attributes:{type:"button","aria-label":m.t("player.settings")}});return e.appendChild(k("settings")),e.addEventListener("click",()=>{this.player.showSettings()}),e}createPipButton(){let e=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-pip"),attributes:{type:"button","aria-label":m.t("player.pip")}});return e.appendChild(k("pip")),e.addEventListener("click",()=>{this.player.togglePiP()}),e}createFullscreenButton(){let e=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-fullscreen"),attributes:{type:"button","aria-label":m.t("player.fullscreen")}});return e.appendChild(k("fullscreen")),e.addEventListener("click",()=>{this.player.toggleFullscreen()}),this.controls.fullscreen=e,e}attachEvents(){this.player.on("play",()=>this.updatePlayPauseButton()),this.player.on("pause",()=>this.updatePlayPauseButton()),this.player.on("timeupdate",()=>this.updateProgress()),this.player.on("loadedmetadata",()=>{this.updateDuration(),this.ensureQualityButton(),this.updateQualityIndicator()}),this.player.on("volumechange",()=>this.updateVolumeDisplay()),this.player.on("progress",()=>this.updateBuffered()),this.player.on("playbackspeedchange",()=>this.updateSpeedDisplay()),this.player.on("fullscreenchange",()=>this.updateFullscreenButton()),this.player.on("captionsenabled",()=>this.updateCaptionsButton()),this.player.on("captionsdisabled",()=>this.updateCaptionsButton()),this.player.on("audiodescriptionenabled",()=>this.updateAudioDescriptionButton()),this.player.on("audiodescriptiondisabled",()=>this.updateAudioDescriptionButton()),this.player.on("signlanguageenabled",()=>this.updateSignLanguageButton()),this.player.on("signlanguagedisabled",()=>this.updateSignLanguageButton()),this.player.on("qualitychange",()=>this.updateQualityIndicator()),this.player.on("hlslevelswitched",()=>this.updateQualityIndicator()),this.player.on("hlsmanifestparsed",()=>{this.ensureQualityButton(),this.updateQualityIndicator()})}updatePlayPauseButton(){if(!this.controls.playPause)return;let e=this.controls.playPause.querySelector(".vidply-icon"),t=this.player.state.playing;e.innerHTML=t?k("pause").innerHTML:k("play").innerHTML;let i=t?m.t("player.pause"):m.t("player.play");this.controls.playPause.setAttribute("aria-label",i),u.attachTooltip(this.controls.playPause,i,this.player.options.classPrefix)}updateProgress(){if(!this.controls.played)return;let e=this.player.state.currentTime||0,t=this.player.state.duration||0,i=t>0?Math.min(100,Math.max(0,e/t*100)):0;this.controls.played.style.width="".concat(i,"%"),this.controls.progress.setAttribute("aria-valuenow",String(Math.round(i)));let s=C.formatDuration(this.player.state.currentTime),a=C.formatDuration(this.player.state.duration);if(this.controls.progress.setAttribute("aria-valuetext","".concat(Math.round(i),"%, ").concat(s," ").concat(m.t("time.of")," ").concat(a)),this.controls.currentTimeVisual){let n=this.player.state.currentTime;this.controls.currentTimeVisual.textContent=C.formatTime(n),this.controls.currentTimeAccessible&&(this.controls.currentTimeAccessible.textContent=C.formatDuration(n))}}updateDuration(){if(this.controls.durationVisual){let e=this.player.state.duration;this.controls.durationVisual.textContent=C.formatTime(e),this.controls.durationAccessible&&(this.controls.durationAccessible.textContent=m.t("time.durationPrefix")+C.formatDuration(e))}}updateVolumeDisplay(){let e=this.player.state.volume*100;if(this.controls.volumeFill&&(this.controls.volumeFill.style.height="".concat(e,"%")),this.controls.volumeSlider&&this.controls.volumeSlider.setAttribute("aria-valuenow",String(Math.round(e))),this.controls.mute){let t=this.controls.mute.querySelector(".vidply-icon");if(t){let i;this.player.state.muted||this.player.state.volume===0?i="volumeMuted":this.player.state.volume<.3?i="volumeLow":this.player.state.volume<.7?i="volumeMedium":i="volumeHigh",t.innerHTML=k(i).innerHTML;let s=this.player.state.muted?m.t("player.unmute"):m.t("player.mute");this.controls.mute.setAttribute("aria-label",s),u.attachTooltip(this.controls.mute,s,this.player.options.classPrefix)}}this.controls.volumeSlider&&this.controls.volumeSlider.setAttribute("aria-valuenow",String(Math.round(e)))}updateBuffered(){if(!this.controls.buffered||!this.player.element.buffered||this.player.element.buffered.length===0)return;let t=this.player.element.buffered.end(this.player.element.buffered.length-1)/this.player.state.duration*100;this.controls.buffered.style.width="".concat(t,"%")}updateSpeedDisplay(){this.controls.speedText&&(this.controls.speedText.textContent="".concat(this.player.state.playbackSpeed,"x"))}updateFullscreenButton(){if(!this.controls.fullscreen)return;let e=this.controls.fullscreen.querySelector(".vidply-icon"),t=this.player.state.fullscreen;e.innerHTML=t?k("fullscreenExit").innerHTML:k("fullscreen").innerHTML,this.controls.fullscreen.setAttribute("aria-label",t?m.t("player.exitFullscreen"):m.t("player.fullscreen"))}ensureQualityButton(){if(!this.player.options.qualityButton||this.controls.quality||!this.hasQualityLevels())return;let e=this.createQualityButton(),t=this.rightButtons.querySelector(".".concat(this.player.options.classPrefix,"-speed")),s=this.rightButtons.querySelector(".".concat(this.player.options.classPrefix,"-caption-style"))||t;s?this.rightButtons.insertBefore(e,s):this.rightButtons.insertBefore(e,this.rightButtons.firstChild),this.player.log("Quality button added dynamically","info")}updateQualityIndicator(){if(!this.controls.qualityText||!this.player.renderer||!this.player.renderer.getQualities)return;let e=this.player.renderer.getQualities();if(e.length===0){this.controls.qualityText.textContent="";return}let t="";if(this.player.renderer.hls&&this.player.renderer.hls.currentLevel===-1)t="Auto";else if(this.player.renderer.getCurrentQuality){let i=this.player.renderer.getCurrentQuality(),s=e.find(a=>a.index===i);s&&(t=s.height?"".concat(s.height,"p"):"")}this.controls.qualityText.textContent=t}setupAutoHide(){if(this.player.element.tagName!=="VIDEO")return;let e=()=>{if(this.element.classList.add("".concat(this.player.options.classPrefix,"-controls-visible")),this.player.container.classList.add("".concat(this.player.options.classPrefix,"-controls-visible")),this.player.state.controlsVisible=!0,clearTimeout(this.hideTimeout),this.player.state.playing){let t=this.player.state.fullscreen?this.player.options.hideControlsDelay*1.5:this.player.options.hideControlsDelay;this.hideTimeout=setTimeout(()=>{this.element.classList.remove("".concat(this.player.options.classPrefix,"-controls-visible")),this.player.container.classList.remove("".concat(this.player.options.classPrefix,"-controls-visible")),this.player.state.controlsVisible=!1},t)}};this.player.container.addEventListener("mousemove",e),this.player.container.addEventListener("touchstart",e),this.player.container.addEventListener("touchmove",e),this.player.container.addEventListener("click",e),this.player.container.addEventListener("tap",e),this.element.addEventListener("focusin",e),this.player.on("pause",()=>{e(),clearTimeout(this.hideTimeout)}),this.player.on("play",()=>{e()}),this.player.on("enterfullscreen",()=>{e(),this.player.state.fullscreen&&(clearTimeout(this.hideTimeout),this.hideTimeout=setTimeout(()=>{this.player.state.playing&&(this.element.classList.remove("".concat(this.player.options.classPrefix,"-controls-visible")),this.player.container.classList.remove("".concat(this.player.options.classPrefix,"-controls-visible")),this.player.state.controlsVisible=!1)},this.player.options.hideControlsDelay*2))}),e()}createOverflowMenuButton(){let e=m.t("player.moreOptions"),t=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-button ").concat(this.player.options.classPrefix,"-overflow-menu"),attributes:{type:"button","aria-label":e,"aria-expanded":"false"}});return t.appendChild(k("moreVertical")),u.attachTooltip(t,e,this.player.options.classPrefix),t.addEventListener("click",()=>{this.showOverflowMenu(t)}),this.controls.overflowMenu=t,t}showOverflowMenu(e){let t=document.querySelector(".".concat(this.player.options.classPrefix,"-overflow-menu-list"));if(t){t.remove(),e.setAttribute("aria-expanded","false"),this.openMenu===t&&(this.openMenu=null,this.openMenuButton=null);return}let i=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-overflow-menu-list ").concat(this.player.options.classPrefix,"-menu"),attributes:{role:"menu","aria-label":m.t("player.moreOptions")}}),s=Array.from(this.rightButtons.querySelectorAll('button[data-in-overflow="true"]'));if(s.length===0){let a=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-menu-item"),textContent:m.t("player.noMoreOptions"),attributes:{role:"menuitem"},style:{opacity:"0.5",cursor:"default"}});i.appendChild(a)}else s.forEach(a=>{let n=u.createElement("button",{className:"".concat(this.player.options.classPrefix,"-menu-item"),attributes:{type:"button",role:"menuitem",tabindex:"-1"}}),l=a.getAttribute("aria-label")||a.getAttribute("title")||"",o=a.querySelector(".vidply-icon");if(o){let r=o.cloneNode(!0);n.appendChild(r)}else{let r=a.querySelector("span");if(r&&r.textContent&&r.textContent.length<=3){let d=r.cloneNode(!0);d.classList.add("vidply-icon"),n.appendChild(d)}}let c=u.createElement("span",{textContent:l});n.appendChild(c),n.addEventListener("click",r=>{this._overflowMenuItemRef=n;let d=a.style.display;a.style.display="",a.style.visibility="hidden",a.click(),setTimeout(()=>{a.style.display=d,a.style.visibility="",this._overflowMenuItemRef=null},100),this.closeMenuAndReturnFocus(i,e)}),i.appendChild(n)}),this.attachMenuKeyboardNavigation(i,e),setTimeout(()=>{let a=i.querySelector(".".concat(this.player.options.classPrefix,"-menu-item"));a&&a.tagName==="BUTTON"&&a.focus({preventScroll:!0})},0);i.style.visibility="hidden",i.style.display="block",this.insertMenuIntoDOM(i,e),this.positionMenu(i,e,!0),requestAnimationFrame(()=>{i.style.visibility="visible"}),this.attachMenuCloseHandler(i,e)}setupOverflowDetection(){let e=()=>{let i=window.innerWidth>=768,s=window.innerHeight<window.innerWidth,a=this.player.state.fullscreen,n=s&&a;if(!this.rightButtons||this.rightButtons.children.length===0){this.overflowMenuButton&&(this.overflowMenuButton.style.display="none");return}let l=Array.from(this.rightButtons.children).filter(f=>!f.classList.contains("".concat(this.player.options.classPrefix,"-overflow-menu")));if(l.length===0){this.overflowMenuButton&&(this.overflowMenuButton.style.display="none");return}let o=!i&&!s;if(this.player.options.debug&&console.log("Overflow detection:",{isDesktop:i,isFullscreen:a,isLandscape:s,isLandscapeFullscreen:n,shouldUseOverflow:o,width:window.innerWidth,height:window.innerHeight}),!o){l.forEach(f=>{f.dataset.inOverflow="false",f.style.display=""}),this.overflowMenuButton&&(this.overflowMenuButton.style.display="none"),this.player.options.debug&&console.log("No overflow menu needed - all buttons visible, overflow button hidden");return}this.player.options.debug&&console.log("Mobile portrait - checking for overflow..."),l.forEach(f=>{f.style.display=""});let c=this.rightButtons.offsetWidth,d=c-50,h=0,p=l.map(f=>{let L=getComputedStyle(f),v=f.offsetWidth+parseInt(L.marginLeft||0)+parseInt(L.marginRight||0);return h+=v,{btn:f,width:v}});h+=(l.length-1)*8;let b=window.innerWidth<768,w=h>d||b||n&&!i;if(this.player.options.debug&&console.log("Overflow detection:",{containerWidth:c,availableWidth:d,totalWidth:h,needsOverflow:w,isSmallScreen:b,reason:b?"mobile screen":h>d?"not enough space":"enough space",buttonCount:l.length}),w){let f=window.innerWidth<768,L=f?"overflowPriorityMobile":"overflowPriority";this.player.options.debug&&console.log("Using ".concat(f?"mobile":"desktop"," priorities (width: ").concat(window.innerWidth,"px)"));let v=p.sort((S,T)=>{let D=parseInt(S.btn.dataset[L]||S.btn.dataset.overflowPriority||"1");return parseInt(T.btn.dataset[L]||T.btn.dataset.overflowPriority||"1")-D}),M=h,E=0;for(let{btn:S,width:T}of v){let D=parseInt(S.dataset[L]||S.dataset.overflowPriority||"1"),P=S.getAttribute("aria-label")||"unknown";if(D===1){S.dataset.inOverflow="false",S.style.display="";continue}(f?D>1:M>d)?(S.dataset.inOverflow="true",S.style.display="none",M-=T,E++,this.player.options.debug&&console.log(" → Hiding button: ".concat(P," (priority ").concat(D,", ").concat(f?"mobile":"desktop",")"))):(S.dataset.inOverflow="false",S.style.display="")}if(this.player.options.debug&&console.log("Overflow button exists?",!!this.overflowMenuButton),!this.overflowMenuButton){console.error("Overflow menu button not found!");return}E>0?(this.overflowMenuButton.style.display="",this.player.options.debug&&console.log("Showing overflow menu button -",E,"buttons moved")):(this.overflowMenuButton.style.display="none",this.player.options.debug&&console.log("Hiding overflow menu button - all buttons fit"))}else l.forEach(f=>{f.dataset.inOverflow="false",f.style.display=""}),this.overflowMenuButton.style.display="none"},t=new ResizeObserver(()=>{requestAnimationFrame(e)});t.observe(this.rightButtons),window.addEventListener("resize",()=>{requestAnimationFrame(e)}),this.player.on("fullscreenchange",()=>{setTimeout(()=>{requestAnimationFrame(e)},50)}),requestAnimationFrame(()=>{e(),setTimeout(()=>e(),100),setTimeout(()=>e(),300),setTimeout(()=>e(),500)}),document.fonts&&document.fonts.ready&&document.fonts.ready.then(()=>{requestAnimationFrame(e)}),this.overflowResizeObserver=t}show(){this.element.style.display=""}hide(){this.element.style.display="none"}destroy(){this.hideTimeout&&clearTimeout(this.hideTimeout),this.overflowResizeObserver&&this.overflowResizeObserver.disconnect(),this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)}};V();H();oe();var K=class{constructor(e){this.player=e,this.element=null,this.tracks=[],this.currentTrack=null,this.currentCue=null,this.storage=new I("vidply"),this.loadSavedPreferences(),this.init()}loadSavedPreferences(){let e=this.storage.getCaptionPreferences();e&&(e.fontSize&&(this.player.options.captionsFontSize=e.fontSize),e.fontFamily&&(this.player.options.captionsFontFamily=e.fontFamily),e.color&&(this.player.options.captionsColor=e.color),e.backgroundColor&&(this.player.options.captionsBackgroundColor=e.backgroundColor),e.opacity!==void 0&&(this.player.options.captionsOpacity=e.opacity))}saveCaptionPreferences(){this.storage.saveCaptionPreferences({fontSize:this.player.options.captionsFontSize,fontFamily:this.player.options.captionsFontFamily,color:this.player.options.captionsColor,backgroundColor:this.player.options.captionsBackgroundColor,opacity:this.player.options.captionsOpacity})}init(){this.createElement(),this.loadTracks(),this.attachEvents(),this.player.options.captionsDefault&&this.tracks.length>0&&!this.currentTrack&&this.enable()}createElement(){this.element=u.createElement("div",{className:"".concat(this.player.options.classPrefix,"-captions"),attributes:{role:"region","aria-label":m.t("player.captions")}}),this.updateStyles(),(this.player.videoWrapper||this.player.container).appendChild(this.element)}loadTracks(){let e=this.player.element.textTracks,t=-1;for(let i=0;i<e.length;i++){let s=e[i];if(s.kind==="subtitles"||s.kind==="captions"){let a=this.player.findTrackElement(s),n=a&&a.hasAttribute("default");this.tracks.push({track:s,language:s.language,label:s.label,kind:s.kind,index:i,isDefault:n}),s.mode==="showing"||s.mode,s.mode="hidden",n&&(t=this.tracks.length-1)}}t>=0&&requestAnimationFrame(()=>{this.enable(t)})}attachEvents(){this.player.on("timeupdate",()=>{this.updateCaptions()}),this.player.on("captionschange",()=>{this.updateStyles()}),this.debouncedPositionCaptions=ne(()=>{this.positionCaptionsOnMobile()},150),window.addEventListener("resize",this.debouncedPositionCaptions),this.player.on("enterfullscreen",()=>{X(()=>this.positionCaptionsOnMobile(),100)}),this.player.on("exitfullscreen",()=>{X(()=>this.positionCaptionsOnMobile(),100)})}enable(e=0){if(this.tracks.length===0)return;this.currentTrack&&this.currentTrack.track&&(this.cueChangeHandler&&this.currentTrack.track.removeEventListener("cuechange",this.cueChangeHandler),this.currentTrack.track.mode="hidden");let t=this.tracks[e];if(t&&t.track){t.track.mode="hidden",this.currentTrack=t,this.player.state.captionsEnabled=!0,t.language&&this.element.setAttribute("lang",t.language),this.cueChangeHandler&&t.track.removeEventListener("cuechange",this.cueChangeHandler),this.cueChangeHandler=()=>{this.updateCaptions()},t.track.addEventListener("cuechange",this.cueChangeHandler);let i=()=>{if(t.track.readyState<2){let s=()=>{t.track.removeEventListener("load",s),t.track.removeEventListener("error",s),requestAnimationFrame(()=>{this.currentTrack&&this.currentTrack.track===t.track&&this.updateCaptions()})};t.track.addEventListener("load",s,{once:!0}),t.track.addEventListener("error",s,{once:!0})}else requestAnimationFrame(()=>{this.currentTrack&&this.currentTrack.track===t.track&&this.updateCaptions()})};requestAnimationFrame(()=>{this.currentTrack&&this.currentTrack.track===t.track&&i()}),this.player.emit("captionsenabled",t)}}disable(){this.currentTrack&&(this.currentTrack.track.mode="hidden",this.currentTrack=null),this.element.style.display="none",this.element.innerHTML="",this.element.removeAttribute("lang"),this.currentCue=null,this.player.state.captionsEnabled=!1,this.player.emit("captionsdisabled")}updateCaptions(){if(!this.currentTrack||!this.currentTrack.track)return;if(this.currentTrack.track.mode==="disabled"&&(this.currentTrack.track.mode="hidden"),this.currentTrack.track.mode==="showing"&&(this.currentTrack.track.mode="hidden"),!this.currentTrack.track.activeCues){this.currentTrack.track.cues&&this.currentTrack.track.cues.length>0&&this.currentCue&&(this.element.innerHTML="",this.element.style.display="none",this.currentCue=null);return}let e=this.currentTrack.track.activeCues,t=this.player.element.tagName.toLowerCase()==="audio";if(e.length>0){let i=e[0];if(this.currentCue!==i){this.currentCue=i;let s=i.text;if(s=this.parseVTTFormatting(s),t){this.element.querySelectorAll(".".concat(this.player.options.classPrefix,"-caption-cue")).forEach(o=>o.classList.remove("".concat(this.player.options.classPrefix,"-caption-active")));let n="cue-".concat(i.startTime,"-").concat(i.endTime),l=this.element.querySelector('[data-cue-id="'.concat(n,'"]'));l||(l=document.createElement("div"),l.className="".concat(this.player.options.classPrefix,"-caption-cue"),l.setAttribute("data-cue-id",n),l.innerHTML=u.sanitizeHTML(s),this.element.appendChild(l)),l.classList.add("".concat(this.player.options.classPrefix,"-caption-active")),requestAnimationFrame(()=>{l&&l.scrollIntoView({behavior:"smooth",block:"center"})})}else this.element.innerHTML=u.sanitizeHTML(s);this.element.style.display="block",this.positionCaptionsOnMobile(),this.player.emit("captionchange",i)}}else this.currentCue&&(t||(this.element.innerHTML="",this.element.style.display="none"),this.currentCue=null)}positionCaptionsOnMobile(){var s,a;if(!this.element||this.element.style.display==="none")return;let e=((s=this.player.state)==null?void 0:s.fullscreen)||!1,t=j();if(!t&&!e){this.element.style.bottom="";return}let i=(a=this.player.controlBar)==null?void 0:a.element;i&&requestAnimationFrame(()=>{if(!this.element||this.element.style.display==="none")return;let n=i.getBoundingClientRect(),o=this.player.videoWrapper.getBoundingClientRect().bottom-n.top+16;this.element.style.bottom="".concat(o,"px"),this.player.options.debug&&console.log("[VidPly] Caption position:",{mobile:t,isFullscreen:e,controlsHeight:n.height,bottomOffset:"".concat(o,"px")})})}parseVTTFormatting(e){return e=e.replace(/<c[^>]*>(.*?)<\/c>/g,'<span class="caption-class">$1</span>'),e=e.replace(/<b>(.*?)<\/b>/g,"<strong>$1</strong>"),e=e.replace(/<i>(.*?)<\/i>/g,"<em>$1</em>"),e=e.replace(/<u>(.*?)<\/u>/g,"<u>$1</u>"),e=e.replace(/<v\s+([^>]+)>(.*?)<\/v>/g,'<span class="caption-voice" data-voice="$1">$2</span>'),e}updateStyles(){if(!this.element)return;let e=this.player.options;this.element.style.fontSize=e.captionsFontSize,this.element.style.fontFamily=e.captionsFontFamily,this.element.style.color=e.captionsColor,this.element.style.backgroundColor=this.hexToRgba(e.captionsBackgroundColor,e.captionsOpacity)}hexToRgba(e,t){let i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return i?"rgba(".concat(parseInt(i[1],16),", ").concat(parseInt(i[2],16),", ").concat(parseInt(i[3],16),", ").concat(t,")"):e}setCaptionStyle(e,t){switch(e){case"fontSize":this.player.options.captionsFontSize=t;break;case"fontFamily":this.player.options.captionsFontFamily=t;break;case"color":this.player.options.captionsColor=t;break;case"backgroundColor":this.player.options.captionsBackgroundColor=t;break;case"opacity":this.player.options.captionsOpacity=t;break}this.updateStyles(),this.saveCaptionPreferences(),this.player.emit("captionschange")}getAvailableTracks(){return this.tracks.map((e,t)=>({index:t,language:e.language,label:e.label||e.language,kind:e.kind}))}switchTrack(e){e>=0&&e<this.tracks.length&&(this.disable(),this.enable(e))}destroy(){this.disable(),this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)}};var le=class{constructor(e){this.player=e,this.shortcuts=e.options.keyboardShortcuts,this.init()}init(){this.attachEvents()}attachEvents(){this.player.container.addEventListener("keydown",e=>{this.handleKeydown(e)},!0),this.player.container.hasAttribute("tabindex")||this.player.container.setAttribute("tabindex","0")}handleKeydown(e){if(e.target.tagName==="INPUT"||e.target.tagName==="TEXTAREA"||e.target.tagName==="SELECT")return;let t=document.activeElement;if(t&&(t.closest('.vidply-menu, [role="menu"]')||t.closest(".vidply-playlist-item-button")))return;let i=e.key,s=!1;if(i==="Escape"&&this.player.state.fullscreen){this.player.exitFullscreen(),e.preventDefault(),e.stopPropagation();return}for(let[a,n]of Object.entries(this.shortcuts))if(n.includes(i)&&(s=this.executeAction(a,e),s)){e.preventDefault(),e.stopPropagation(),this.announceAction(a);break}!s&&this.player.options.debug&&console.log("[VidPly] Unhandled key:",e.key,"code:",e.code,"shiftKey:",e.shiftKey)}executeAction(e,t){switch(e){case"play-pause":return this.player.toggle(),!0;case"volume-up":return this.player.setVolume(Math.min(1,this.player.state.volume+.1)),!0;case"volume-down":return this.player.setVolume(Math.max(0,this.player.state.volume-.1)),!0;case"seek-forward":return this.player.seekForward(),!0;case"seek-backward":return this.player.seekBackward(),!0;case"mute":return this.player.toggleMute(),!0;case"fullscreen":return this.player.toggleFullscreen(),!0;case"captions":if(this.player.captionManager&&this.player.captionManager.tracks.length>1){let i=this.player.controlBar&&this.player.controlBar.controls.captions;i?this.player.controlBar.showCaptionsMenu(i):this.player.toggleCaptions()}else this.player.toggleCaptions();return!0;case"caption-style-menu":return this.player.controlBar&&this.player.controlBar.controls.captionStyle?(this.player.controlBar.showCaptionStyleMenu(this.player.controlBar.controls.captionStyle),!0):!1;case"speed-up":return this.player.setPlaybackSpeed(Math.min(2,this.player.state.playbackSpeed+.25)),!0;case"speed-down":return this.player.setPlaybackSpeed(Math.max(.25,this.player.state.playbackSpeed-.25)),!0;case"speed-menu":return this.player.controlBar&&this.player.controlBar.controls.speed?(this.player.controlBar.showSpeedMenu(this.player.controlBar.controls.speed),!0):!1;case"quality-menu":return this.player.controlBar&&this.player.controlBar.controls.quality?(this.player.controlBar.showQualityMenu(this.player.controlBar.controls.quality),!0):!1;case"chapters-menu":return this.player.controlBar&&this.player.controlBar.controls.chapters?(this.player.controlBar.showChaptersMenu(this.player.controlBar.controls.chapters),!0):!1;case"transcript-toggle":return this.player.transcriptManager?(this.player.transcriptManager.toggleTranscript(),!0):!1;default:return!1}}announceAction(e){if(!this.player.options.screenReaderAnnouncements)return;let t="";switch(e){case"play-pause":t=this.player.state.playing?"Playing":"Paused";break;case"volume-up":t="Volume ".concat(Math.round(this.player.state.volume*100),"%");break;case"volume-down":t="Volume ".concat(Math.round(this.player.state.volume*100),"%");break;case"mute":t=this.player.state.muted?"Muted":"Unmuted";break;case"fullscreen":t=this.player.state.fullscreen?"Fullscreen":"Exit fullscreen";break;case"captions":t=this.player.state.captionsEnabled?"Captions on":"Captions off";break;case"speed-up":case"speed-down":t="Speed ".concat(this.player.state.playbackSpeed,"x");break}t&&this.announce(t)}announce(e,t="polite"){let i=document.getElementById("vidply-announcer");i||(i=document.createElement("div"),i.id="vidply-announcer",i.className="vidply-sr-only",i.setAttribute("aria-live",t),i.setAttribute("aria-atomic","true"),i.style.cssText="\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n ",document.body.appendChild(i)),i.textContent="",setTimeout(()=>{i.textContent=e},100)}updateShortcut(e,t){Array.isArray(t)&&(this.shortcuts[e]=t)}destroy(){}};be();_();H();oe();ce();de();he();var ue=class{constructor(e){this.player=e,this.enabled=!1,this.desiredState=!1,this.src=e.options.audioDescriptionSrc,this.sourceElement=null,this.originalSource=null,this.captionTracks=[]}initFromSourceElements(e,t){for(let i of e){let s=i.getAttribute("data-desc-src"),a=i.getAttribute("data-orig-src");if(s||a){if(this.sourceElement||(this.sourceElement=i),a)this.originalSource||(this.originalSource=a),this.player.originalSrc||(this.player.originalSrc=a);else{let n=i.getAttribute("src");!this.originalSource&&n&&(this.originalSource=n),!this.player.originalSrc&&n&&(this.player.originalSrc=n)}s&&!this.src&&(this.src=s)}}t.forEach(i=>{let s=i.getAttribute("kind"),a=i.getAttribute("data-desc-src");(s==="captions"||s==="subtitles"||s==="chapters"||s==="descriptions")&&a&&(this.captionTracks.push({trackElement:i,originalSrc:i.getAttribute("src"),describedSrc:a,originalTrackSrc:i.getAttribute("data-orig-src")||i.getAttribute("src"),explicit:!0}),this.player.log("Found explicit described ".concat(s," track: ").concat(i.getAttribute("src")," -> ").concat(a)))})}isAvailable(){let e=this.player.sourceElements.some(t=>t.getAttribute("data-desc-src"));return!!(this.src||e||this.captionTracks.length>0)}async enable(){let e=this.player.sourceElements.some(o=>o.getAttribute("data-desc-src")),t=this.captionTracks.length>0;if(!this.src&&!e&&!t){console.warn("VidPly: No audio description source, source elements, or tracks provided");return}this.desiredState=!0;let i=this.player.state.currentTime,s=this.player.state.playing,a=this.player.element.poster||this.player.element.getAttribute("poster")||this.player.options.poster,n=i<.1&&!s,l=this._getCurrentCaptionText();this.sourceElement?await this._enableWithSourceElement(i,s,a,n,l):await this._enableWithDirectSrc(i,s,a,n)}async disable(){if(!this.player.originalSrc)return;this.desiredState=!1;let e=this.player.state.currentTime,t=this.player.state.playing,i=this.player.element.poster||this.player.element.getAttribute("poster")||this.player.options.poster,s=e<.1&&!t,a=this._getCurrentCaptionText();this.sourceElement?await this._disableWithSourceElement(e,t,i,s,a):await this._disableWithDirectSrc(e,t,i)}async toggle(){let e=this.player.findTextTrack("descriptions"),t=this.isAvailable();e&&!t?e.mode==="showing"?(e.mode="hidden",this.enabled=!1,this.player.emit("audiodescriptiondisabled")):(e.mode="showing",this.enabled=!0,this.player.emit("audiodescriptionenabled")):e&&t?this.enabled?(this.desiredState=!1,await this.disable()):(e.mode="showing",this.desiredState=!0,await this.enable()):t&&(this.enabled?(this.desiredState=!1,await this.disable()):(this.desiredState=!0,await this.enable()))}_getCurrentCaptionText(){return this.player.captionManager&&this.player.captionManager.currentTrack&&this.player.captionManager.currentCue?this.player.captionManager.currentCue.text:null}async _validateTrackExists(e){try{return(await fetch(e,{method:"HEAD"})).ok}catch(t){return!1}}async _swapCaptionTracks(e=!0){if(this.captionTracks.length===0)return[];let t=[],i=this.captionTracks.map(async n=>{if(n.trackElement&&n.describedSrc&&n.explicit===!0)try{let l=await this._validateTrackExists(e?n.describedSrc:n.originalSrc);return{trackInfo:n,exists:l}}catch(l){return{trackInfo:n,exists:!1}}return{trackInfo:n,exists:!1}}),a=(await Promise.all(i)).filter(n=>n.exists);if(a.length>0){let n=new Map;a.forEach(({trackInfo:o})=>{let c=o.trackElement.track;c?n.set(o,{wasShowing:c.mode==="showing",wasHidden:c.mode==="hidden"}):n.set(o,{wasShowing:!1,wasHidden:!1})});let l=a.map(({trackInfo:o})=>{let c={};Array.from(o.trackElement.attributes).forEach(d=>{c[d.name]=d.value});let r={trackInfo:o,oldSrc:o.trackElement.getAttribute("src"),parent:o.trackElement.parentNode,nextSibling:o.trackElement.nextSibling,attributes:c};return o.trackElement.remove(),r});this.player.element.load(),await new Promise(o=>{setTimeout(()=>{l.forEach(({trackInfo:r,parent:d,nextSibling:h,attributes:p})=>{t.push(r);let y=document.createElement("track"),b=e?r.describedSrc:r.originalSrc;y.setAttribute("src",b),Object.keys(p).forEach(f=>{f!=="src"&&f!=="data-desc-src"&&y.setAttribute(f,p[f])});let w=d||this.player.element;h&&h.parentNode?w.insertBefore(y,h):w.appendChild(y),r.trackElement=y}),this.player.invalidateTrackCache();let c=()=>{this.player.setManagedTimeout(()=>{t.forEach(r=>{let d=r.trackElement.track;if(d){let h=n.get(r)||{wasShowing:!1,wasHidden:!1};d.mode="hidden";let p=()=>{h.wasShowing||h.wasHidden?d.mode="hidden":d.mode="disabled"};d.readyState>=2?p():(d.addEventListener("load",p,{once:!0}),d.addEventListener("error",p,{once:!0}))}})},300)};this.player.element.readyState>=1?setTimeout(c,200):(this.player.element.addEventListener("loadedmetadata",c,{once:!0}),setTimeout(c,2e3)),o()},100)})}return t}_updateSourceElements(e=!0){let t=this.player.sourceElements,i=[];t.forEach(s=>{let a=s.getAttribute("data-desc-src"),n=s.getAttribute("src");if(a){let l=s.getAttribute("type"),o=s.getAttribute("data-orig-src")||n;i.push({src:e?a:o,type:l,origSrc:o,descSrc:a})}else i.push({src:s.getAttribute("src"),type:s.getAttribute("type"),origSrc:null,descSrc:null})}),this.player.element.hasAttribute("src")&&this.player.element.removeAttribute("src"),t.forEach(s=>s.remove()),i.forEach(s=>{let a=document.createElement("source");a.setAttribute("src",s.src),s.type&&a.setAttribute("type",s.type),s.origSrc&&a.setAttribute("data-orig-src",s.origSrc),s.descSrc&&a.setAttribute("data-desc-src",s.descSrc);let n=this.player.element.querySelector("track");n?this.player.element.insertBefore(a,n):this.player.element.appendChild(a)}),this.player._sourceElementsDirty=!0,this.player._sourceElementsCache=null}async _waitForMediaReady(e=!1){await new Promise(t=>{if(this.player.element.readyState>=1)t();else{let i=()=>{this.player.element.removeEventListener("loadedmetadata",i),t()};this.player.element.addEventListener("loadedmetadata",i)}}),await new Promise(t=>setTimeout(t,300)),e&&await new Promise(t=>{if(this.player.element.readyState>=3)t();else{let i=()=>{this.player.element.removeEventListener("canplay",i),this.player.element.removeEventListener("canplaythrough",i),t()};this.player.element.addEventListener("canplay",i,{once:!0}),this.player.element.addEventListener("canplaythrough",i,{once:!0}),setTimeout(()=>{this.player.element.removeEventListener("canplay",i),this.player.element.removeEventListener("canplaythrough",i),t()},3e3)}})}async _restorePlaybackState(e,t,i,s){let a=e;if(s&&this.player.captionManager&&this.player.captionManager.tracks.length>0){await new Promise(l=>setTimeout(l,500));let n=this.player.findMatchingCaptionTime(s,this.player.captionManager.tracks);n!==null&&(a=n,this.player.options.debug&&this.player.log("[VidPly] Syncing via caption: ".concat(e,"s -> ").concat(a,"s")))}a>0&&(this.player.seek(a),await new Promise(n=>setTimeout(n,100))),t?(await this.player.play(),this.player.setManagedTimeout(()=>{this.player.hidePosterOverlay()},100)):(this.player.pause(),i||this.player.hidePosterOverlay())}async _enableWithSourceElement(e,t,i,s,a){await this._swapCaptionTracks(!0),this._updateSourceElements(!0),i&&this.player.element.tagName==="VIDEO"&&(this.player.element.poster=i),this.player.element.load(),await this._waitForMediaReady(e>0||t),await this._restorePlaybackState(e,t,s,a),this.desiredState&&(this.enabled=!0,this.player.state.audioDescriptionEnabled=!0,this.player.emit("audiodescriptionenabled"),this._reloadTranscript())}async _enableWithDirectSrc(e,t,i,s){await this._swapCaptionTracks(!0),i&&this.player.element.tagName==="VIDEO"&&(this.player.element.poster=i),this.player.element.src=this.src,await this._waitForMediaReady(e>0||t),e>0&&(this.player.seek(e),await new Promise(a=>setTimeout(a,100))),t?await this.player.play():(this.player.pause(),s||this.player.hidePosterOverlay()),this.desiredState&&(this.enabled=!0,this.player.state.audioDescriptionEnabled=!0,this.player.emit("audiodescriptionenabled"),this._reloadTranscript())}async _disableWithSourceElement(e,t,i,s,a){await this._swapCaptionTracks(!1),this._updateSourceElements(!1),i&&this.player.element.tagName==="VIDEO"&&(this.player.element.poster=i),this.player.element.load(),this.player.invalidateTrackCache(),await this._waitForMediaReady(e>0||t),await this._restorePlaybackState(e,t,s,a),this.player.captionManager&&(this.player.captionManager.destroy(),this.player.captionManager=new K(this.player)),!this.desiredState&&(this.enabled=!1,this.player.state.audioDescriptionEnabled=!1,this.player.emit("audiodescriptiondisabled"),this._reloadTranscript())}async _disableWithDirectSrc(e,t,i){await this._swapCaptionTracks(!1),i&&this.player.element.tagName==="VIDEO"&&(this.player.element.poster=i);let s=this.originalSource||this.player.originalSrc;this.player.element.src=s,this.player.element.load(),await this._waitForMediaReady(e>0||t),e>0&&this.player.seek(e),t&&await this.player.play(),!this.desiredState&&(this.enabled=!1,this.player.state.audioDescriptionEnabled=!1,this.player.emit("audiodescriptiondisabled"),this._reloadTranscript())}_reloadTranscript(){this.player.transcriptManager&&this.player.transcriptManager.isVisible&&this.player.setManagedTimeout(()=>{this.player.transcriptManager&&this.player.transcriptManager.loadTranscriptData&&this.player.transcriptManager.loadTranscriptData()},800)}updateSources(e){this.src=e||null,this.enabled=!1,this.desiredState=!1,this.sourceElement=null,this.originalSource=null,this.captionTracks=[]}reinitialize(){this.player.invalidateTrackCache(),this.initFromSourceElements(this.player.sourceElements,this.player.trackElements)}destroy(){this.enabled=!1,this.desiredState=!1,this.captionTracks=[],this.sourceElement=null,this.originalSource=null}};V();_();H();ce();de();he();var pe=class{constructor(e){this.player=e,this.src=e.options.signLanguageSrc,this.sources=e.options.signLanguageSources||{},this.currentLanguage=null,this.desiredPosition=e.options.signLanguagePosition||"bottom-right",this.wrapper=null,this.header=null,this.video=null,this.selector=null,this.settingsButton=null,this.settingsMenu=null,this.resizeHandles=[],this.enabled=!1,this.settingsMenuVisible=!1,this.settingsMenuJustOpened=!1,this.documentClickHandlerAdded=!1,this.handlers=null,this.settingsHandlers=null,this.interactionHandlers=null,this.draggable=null,this.documentClickHandler=null,this.settingsMenuKeyHandler=null,this.customKeyHandler=null,this.dragOptionButton=null,this.dragOptionText=null,this.resizeOptionButton=null,this.resizeOptionText=null}isAvailable(){return Object.keys(this.sources).length>0||!!this.src}enable(){let e=Object.keys(this.sources).length>0,t=!!this.src;if(!e&&!t){console.warn("No sign language video source provided");return}if(this.wrapper){this.wrapper.style.display="block",this.enabled=!0,this.player.state.signLanguageEnabled=!0,this.player.emit("signlanguageenabled"),this.player.setManagedTimeout(()=>{this.settingsButton&&document.contains(this.settingsButton)&&this.settingsButton.focus({preventScroll:!0})},150);return}let i=null,s=null;e?(i=this._determineInitialLanguage(),s=this.sources[i],this.currentLanguage=i):s=this.src,this._createWrapper(),this._createHeader(e,i),this._createVideo(s),this._createResizeHandles(),this.wrapper.appendChild(this.header),this.wrapper.appendChild(this.video),this.resizeHandles.forEach(a=>this.wrapper.appendChild(a)),this._applyInitialSize(),this.player.container.appendChild(this.wrapper),requestAnimationFrame(()=>{this.constrainPosition()}),this.video.currentTime=this.player.state.currentTime,this.player.state.paused||this.video.play(),this._setupInteraction(),this._setupEventHandlers(e),this.enabled=!0,this.player.state.signLanguageEnabled=!0,this.player.emit("signlanguageenabled"),this.player.setManagedTimeout(()=>{this.settingsButton&&document.contains(this.settingsButton)&&this.settingsButton.focus({preventScroll:!0})},150)}disable(){this.settingsMenuVisible&&this.hideSettingsMenu({focusButton:!1}),this.wrapper&&(this.wrapper.style.display="none"),this.enabled=!1,this.player.state.signLanguageEnabled=!1,this.player.emit("signlanguagedisabled")}toggle(){this.enabled?this.disable():this.enable()}switchLanguage(e){if(!this.sources[e]||!this.video)return;let t=this.video.currentTime,i=!this.video.paused;this.video.src=this.sources[e],this.currentLanguage=e,this.video.currentTime=t,i&&this.video.play().catch(()=>{}),this.player.emit("signlanguagelanguagechanged",e)}getLanguageLabel(e){return{en:"English",de:"Deutsch",es:"Español",fr:"Français",it:"Italiano",ja:"日本語",pt:"Português",ar:"العربية",hi:"हिन्दी"}[e]||e.toUpperCase()}_determineInitialLanguage(){var e;if(this.player.captionManager&&this.player.captionManager.currentTrack){let t=(e=this.player.captionManager.currentTrack.language)==null?void 0:e.toLowerCase().split("-")[0];if(t&&this.sources[t])return t}if(this.player.options.language){let t=this.player.options.language.toLowerCase().split("-")[0];if(this.sources[t])return t}return Object.keys(this.sources)[0]}_createWrapper(){this.wrapper=document.createElement("div"),this.wrapper.className="vidply-sign-language-wrapper",this.wrapper.setAttribute("tabindex","0"),this.wrapper.setAttribute("aria-label",m.t("player.signLanguageDragResize"))}_createHeader(e,t){let i=this.player.options.classPrefix;this.header=u.createElement("div",{className:"".concat(i,"-sign-language-header"),attributes:{tabindex:"0"}});let s=u.createElement("div",{className:"".concat(i,"-sign-language-header-left")}),a=u.createElement("h3",{textContent:m.t("player.signLanguageVideo")});this._createSettingsButton(s),e&&this._createLanguageSelector(s,t),s.appendChild(a);let n=this._createCloseButton();this.header.appendChild(s),this.header.appendChild(n),this.settingsMenuVisible=!1,this.settingsMenu=null,this.settingsMenuJustOpened=!1}_createSettingsButton(e){let t=this.player.options.classPrefix,i=m.t("player.signLanguageSettings");this.settingsButton=u.createElement("button",{className:"".concat(t,"-sign-language-settings"),attributes:{type:"button","aria-label":i,"aria-expanded":"false"}}),this.settingsButton.appendChild(k("settings")),u.attachTooltip(this.settingsButton,i,t),this.settingsHandlers={click:s=>{s.preventDefault(),s.stopPropagation(),this.documentClickHandler&&(this.settingsMenuJustOpened=!0,setTimeout(()=>{this.settingsMenuJustOpened=!1},100)),this.settingsMenuVisible?this.hideSettingsMenu():this.showSettingsMenu()},keydown:s=>{s.key==="d"||s.key==="D"?(s.preventDefault(),s.stopPropagation(),this.toggleKeyboardDragMode()):s.key==="r"||s.key==="R"?(s.preventDefault(),s.stopPropagation(),this.toggleResizeMode()):s.key==="Escape"&&this.settingsMenuVisible&&(s.preventDefault(),s.stopPropagation(),this.hideSettingsMenu())}},this.settingsButton.addEventListener("click",this.settingsHandlers.click),this.settingsButton.addEventListener("keydown",this.settingsHandlers.keydown),e.appendChild(this.settingsButton)}_createLanguageSelector(e,t){let i=this.player.options.classPrefix,s="".concat(i,"-sign-language-select-").concat(Date.now()),a=Object.keys(this.sources).map(c=>({value:c,text:this.getLanguageLabel(c),selected:c===t})),{label:n,select:l}=Y({classPrefix:i,labelClass:"".concat(i,"-sign-language-label"),selectClass:"".concat(i,"-sign-language-select"),labelText:"settings.language",selectId:s,options:a,onChange:c=>{c.stopPropagation(),this.switchLanguage(c.target.value)}});this.selector=l;let o=u.createElement("div",{className:"".concat(i,"-sign-language-selector-wrapper")});o.appendChild(n),o.appendChild(this.selector),J(o),e.appendChild(o)}_createCloseButton(){let e=this.player.options.classPrefix,t=m.t("player.closeSignLanguage"),i=u.createElement("button",{className:"".concat(e,"-sign-language-close"),attributes:{type:"button","aria-label":t}});return i.appendChild(k("close")),u.attachTooltip(i,t,e),i.addEventListener("click",()=>{var s,a;this.disable(),(a=(s=this.player.controlBar)==null?void 0:s.controls)!=null&&a.signLanguage&&setTimeout(()=>{this.player.controlBar.controls.signLanguage.focus({preventScroll:!0})},0)}),i}_createVideo(e){this.video=document.createElement("video"),this.video.className="vidply-sign-language-video",this.video.src=e,this.video.setAttribute("aria-label",m.t("player.signLanguage")),this.video.muted=!0,this.video.setAttribute("playsinline","")}_createResizeHandles(){let e=this.player.options.classPrefix;this.resizeHandles=["n","s","e","w","ne","nw","se","sw"].map(t=>{let i=u.createElement("div",{className:"".concat(e,"-sign-resize-handle ").concat(e,"-sign-resize-").concat(t),attributes:{"data-direction":t,"data-vidply-managed-resize":"true","aria-hidden":"true"}});return i.style.display="none",i})}_applyInitialSize(){var t;let e=this.player.storage.getSignLanguagePreferences();(t=e==null?void 0:e.size)!=null&&t.width?this.wrapper.style.width=e.size.width:this.wrapper.style.width="280px",this.wrapper.style.height="auto"}_setupInteraction(){let e=window.innerWidth<768,t=this.player.state.fullscreen;if(e&&!t){this.draggable&&(this.draggable.destroy(),this.draggable=null);return}if(this.draggable)return;let i=this.player.options.classPrefix;this.draggable=new q(this.wrapper,{dragHandle:this.header,resizeHandles:this.resizeHandles,constrainToViewport:!0,maintainAspectRatio:!0,minWidth:150,minHeight:100,classPrefix:"".concat(i,"-sign"),keyboardDragKey:"d",keyboardResizeKey:"r",keyboardStep:10,keyboardStepLarge:50,pointerResizeIndicatorText:m.t("player.signLanguageResizeActive"),onPointerResizeToggle:s=>{this.resizeHandles.forEach(a=>{a.style.display=s?"block":"none"})},onDragStart:s=>!(s.target.closest(".".concat(i,"-sign-language-close"))||s.target.closest(".".concat(i,"-sign-language-settings"))||s.target.closest(".".concat(i,"-sign-language-select"))||s.target.closest(".".concat(i,"-sign-language-label"))||s.target.closest(".".concat(i,"-sign-language-settings-menu")))}),this._setupCustomKeyHandler(),this.interactionHandlers={draggable:this.draggable,customKeyHandler:this.customKeyHandler}}_setupCustomKeyHandler(){this.customKeyHandler=e=>{var i,s,a,n;let t=e.key.toLowerCase();if(!this.settingsMenuVisible){if(t==="home"){e.preventDefault(),e.stopPropagation(),this.draggable&&(this.draggable.pointerResizeMode&&this.draggable.disablePointerResizeMode(),this.draggable.manuallyPositioned=!1,this.constrainPosition());return}if(t==="r"){e.preventDefault(),e.stopPropagation(),this.toggleResizeMode()&&this.wrapper.focus({preventScroll:!0});return}if(t==="escape"){if(e.preventDefault(),e.stopPropagation(),(i=this.draggable)!=null&&i.pointerResizeMode){this.draggable.disablePointerResizeMode();return}if((s=this.draggable)!=null&&s.keyboardDragMode){this.draggable.disableKeyboardDragMode();return}this.disable(),(n=(a=this.player.controlBar)==null?void 0:a.controls)!=null&&n.signLanguage&&setTimeout(()=>{this.player.controlBar.controls.signLanguage.focus({preventScroll:!0})},0)}}},this.wrapper.addEventListener("keydown",this.customKeyHandler)}_setupEventHandlers(e){this.handlers={play:()=>{this.video&&this.video.play()},pause:()=>{this.video&&this.video.pause()},timeupdate:()=>{this.video&&Math.abs(this.video.currentTime-this.player.state.currentTime)>.5&&(this.video.currentTime=this.player.state.currentTime)},ratechange:()=>{this.video&&(this.video.playbackRate=this.player.state.playbackSpeed)}},this.player.on("play",this.handlers.play),this.player.on("pause",this.handlers.pause),this.player.on("timeupdate",this.handlers.timeupdate),this.player.on("ratechange",this.handlers.ratechange),e&&(this.handlers.captionChange=()=>{var t,i;if((t=this.player.captionManager)!=null&&t.currentTrack&&this.selector){let s=(i=this.player.captionManager.currentTrack.language)==null?void 0:i.toLowerCase().split("-")[0];s&&this.sources[s]&&this.currentLanguage!==s&&(this.switchLanguage(s),this.selector.value=s)}},this.player.on("captionsenabled",this.handlers.captionChange))}constrainPosition(){var b;if(!this.wrapper||!this.player.videoWrapper||(b=this.draggable)!=null&&b.manuallyPositioned)return;this.wrapper.style.width||(this.wrapper.style.width="280px");let e=this.player.videoWrapper.getBoundingClientRect(),t=this.player.container.getBoundingClientRect(),i=this.wrapper.getBoundingClientRect(),s=e.left-t.left,a=e.top-t.top,n=e.width,l=e.height,o=i.width||280,c=i.height||280*9/16,r,d,h=16,p=95;switch(this.desiredPosition||"bottom-right"){case"bottom-right":r=s+n-o-h,d=a+l-c-p;break;case"bottom-left":r=s+h,d=a+l-c-p;break;case"top-right":r=s+n-o-h,d=a+h;break;case"top-left":r=s+h,d=a+h;break;default:r=s+n-o-h,d=a+l-c-p}r=Math.max(s,Math.min(r,s+n-o)),d=Math.max(a,Math.min(d,a+l-c-p)),this.wrapper.style.left="".concat(r,"px"),this.wrapper.style.top="".concat(d,"px"),this.wrapper.style.right="auto",this.wrapper.style.bottom="auto"}showSettingsMenu(){var e;if(this.settingsMenuJustOpened=!0,setTimeout(()=>{this.settingsMenuJustOpened=!1},350),this._addDocumentClickHandler(),this.settingsMenu){this.settingsMenu.style.display="block",this.settingsMenuVisible=!0,(e=this.settingsButton)==null||e.setAttribute("aria-expanded","true"),this._attachMenuKeyboardNavigation(),this._positionSettingsMenu(),this._updateDragOptionState(),this._updateResizeOptionState(),Q(this.settingsMenu,".".concat(this.player.options.classPrefix,"-sign-language-settings-item"));return}this._createSettingsMenu()}hideSettingsMenu({focusButton:e=!0}={}){if(this.settingsMenu){this.settingsMenu.style.display="none",this.settingsMenuVisible=!1,this.settingsMenuJustOpened=!1,this.settingsMenuKeyHandler&&(this.settingsMenu.removeEventListener("keydown",this.settingsMenuKeyHandler),this.settingsMenuKeyHandler=null);let t=this.player.options.classPrefix;Array.from(this.settingsMenu.querySelectorAll(".".concat(t,"-sign-language-settings-item"))).forEach(s=>s.setAttribute("tabindex","-1")),this.settingsButton&&(this.settingsButton.setAttribute("aria-expanded","false"),e&&this.settingsButton.focus({preventScroll:!0}))}}_addDocumentClickHandler(){this.documentClickHandlerAdded||(this.documentClickHandler=e=>{this.settingsMenuJustOpened||this.settingsButton&&(this.settingsButton===e.target||this.settingsButton.contains(e.target))||this.settingsMenu&&this.settingsMenu.contains(e.target)||this.settingsMenuVisible&&this.hideSettingsMenu()},setTimeout(()=>{document.addEventListener("mousedown",this.documentClickHandler,!0),this.documentClickHandlerAdded=!0},300))}_createSettingsMenu(){var a,n;let e=this.player.options.classPrefix;this.settingsMenu=u.createElement("div",{className:"".concat(e,"-sign-language-settings-menu"),attributes:{role:"menu"}});let t=z({classPrefix:e,itemClass:"".concat(e,"-sign-language-settings-item"),icon:"move",label:"player.enableSignDragMode",hasTextClass:!0,onClick:()=>{this.toggleKeyboardDragMode(),this.hideSettingsMenu()}});t.setAttribute("role","switch"),t.setAttribute("aria-checked","false"),this._removeTooltipFromMenuItem(t),this.dragOptionButton=t,this.dragOptionText=t.querySelector(".".concat(e,"-settings-text")),this._updateDragOptionState();let i=z({classPrefix:e,itemClass:"".concat(e,"-sign-language-settings-item"),icon:"resize",label:"player.enableSignResizeMode",hasTextClass:!0,onClick:l=>{l.preventDefault(),l.stopPropagation(),this.toggleResizeMode({focus:!1})?(this.hideSettingsMenu({focusButton:!1}),setTimeout(()=>{this.wrapper&&this.wrapper.focus({preventScroll:!0})},20)):this.hideSettingsMenu({focusButton:!0})}});i.setAttribute("role","switch"),i.setAttribute("aria-checked","false"),this._removeTooltipFromMenuItem(i),this.resizeOptionButton=i,this.resizeOptionText=i.querySelector(".".concat(e,"-settings-text")),this._updateResizeOptionState();let s=z({classPrefix:e,itemClass:"".concat(e,"-sign-language-settings-item"),icon:"close",label:"transcript.closeMenu",onClick:()=>this.hideSettingsMenu()});this._removeTooltipFromMenuItem(s),this.settingsMenu.appendChild(t),this.settingsMenu.appendChild(i),this.settingsMenu.appendChild(s),this.settingsMenu.style.visibility="hidden",this.settingsMenu.style.display="block",(a=this.settingsButton)!=null&&a.parentNode?this.settingsButton.insertAdjacentElement("afterend",this.settingsMenu):this.wrapper&&this.wrapper.appendChild(this.settingsMenu),this._positionSettingsMenuImmediate(),requestAnimationFrame(()=>{this.settingsMenu&&(this.settingsMenu.style.visibility="visible")}),this._attachMenuKeyboardNavigation(),this.settingsMenuVisible=!0,(n=this.settingsButton)==null||n.setAttribute("aria-expanded","true"),this._updateDragOptionState(),this._updateResizeOptionState(),Q(this.settingsMenu,".".concat(e,"-sign-language-settings-item"))}_removeTooltipFromMenuItem(e){let t=this.player.options.classPrefix,i=e.querySelector(".".concat(t,"-tooltip"));i&&i.remove();let s=e.querySelector(".".concat(t,"-button-text"));s&&s.remove()}_attachMenuKeyboardNavigation(){this.settingsMenuKeyHandler&&this.settingsMenu.removeEventListener("keydown",this.settingsMenuKeyHandler),this.settingsMenuKeyHandler=W(this.settingsMenu,this.settingsButton,".".concat(this.player.options.classPrefix,"-sign-language-settings-item"),()=>this.hideSettingsMenu({focusButton:!0}))}_positionSettingsMenuImmediate(){if(!this.settingsMenu||!this.settingsButton)return;let e=this.settingsButton.getBoundingClientRect(),t=this.settingsMenu.getBoundingClientRect(),i=window.innerWidth,s=window.innerHeight,a=this.settingsButton.parentElement;if(!a)return;let n=a.getBoundingClientRect(),l=e.left+e.width/2-n.left,o=e.bottom-n.top,c=e.top-n.top,r=e.top,d=s-e.bottom,h=o+8,p=null;d<t.height+20&&r>d?(h=null,p=n.bottom-n.top-c+8,this.settingsMenu.classList.add("vidply-menu-above")):this.settingsMenu.classList.remove("vidply-menu-above");let y=l-t.width/2,b="auto",w="translateX(0)",f=e.left+e.width/2-t.width/2;f<10?y=0:f+t.width>i-10?(y="auto",b=0):(y=l,w="translateX(-50%)"),h!==null?(this.settingsMenu.style.top="".concat(h,"px"),this.settingsMenu.style.bottom="auto"):p!==null&&(this.settingsMenu.style.top="auto",this.settingsMenu.style.bottom="".concat(p,"px")),y!=="auto"?(this.settingsMenu.style.left="".concat(y,"px"),this.settingsMenu.style.right="auto"):(this.settingsMenu.style.left="auto",this.settingsMenu.style.right="".concat(b,"px")),this.settingsMenu.style.transform=w}_positionSettingsMenu(){requestAnimationFrame(()=>{setTimeout(()=>{this._positionSettingsMenuImmediate()},10)})}toggleKeyboardDragMode(){if(this.draggable){let e=this.draggable.keyboardDragMode;this.draggable.toggleKeyboardDragMode();let t=this.draggable.keyboardDragMode;!e&&t&&this._enableMoveMode(),this._updateDragOptionState()}}_enableMoveMode(){this.wrapper.classList.add("".concat(this.player.options.classPrefix,"-sign-move-mode")),this._updateResizeOptionState(),setTimeout(()=>{this.wrapper.classList.remove("".concat(this.player.options.classPrefix,"-sign-move-mode"))},2e3)}toggleResizeMode({focus:e=!0}={}){return this.draggable?this.draggable.pointerResizeMode?(this.draggable.disablePointerResizeMode({focus:e}),this._updateResizeOptionState(),!1):(this.draggable.enablePointerResizeMode({focus:e}),this._updateResizeOptionState(),!0):!1}_updateDragOptionState(){var s;if(!this.dragOptionButton)return;let e=!!((s=this.draggable)!=null&&s.keyboardDragMode),t=e?m.t("player.disableSignDragMode"):m.t("player.enableSignDragMode"),i=e?m.t("player.disableSignDragModeAria"):m.t("player.enableSignDragModeAria");this.dragOptionButton.setAttribute("aria-checked",e?"true":"false"),this.dragOptionButton.setAttribute("aria-label",i),this.dragOptionText&&(this.dragOptionText.textContent=t)}_updateResizeOptionState(){var s;if(!this.resizeOptionButton)return;let e=!!((s=this.draggable)!=null&&s.pointerResizeMode),t=e?m.t("player.disableSignResizeMode"):m.t("player.enableSignResizeMode"),i=e?m.t("player.disableSignResizeModeAria"):m.t("player.enableSignResizeModeAria");this.resizeOptionButton.setAttribute("aria-checked",e?"true":"false"),this.resizeOptionButton.setAttribute("aria-label",i),this.resizeOptionText&&(this.resizeOptionText.textContent=t)}savePreferences(){this.wrapper&&this.player.storage.saveSignLanguagePreferences({size:{width:this.wrapper.style.width}})}updateSources(e,t){this.src=e||null,this.sources=t||{},this.currentLanguage=null}cleanup(){var e;this.settingsMenuVisible&&this.hideSettingsMenu({focusButton:!1}),this.documentClickHandler&&this.documentClickHandlerAdded&&(document.removeEventListener("mousedown",this.documentClickHandler,!0),this.documentClickHandlerAdded=!1,this.documentClickHandler=null),this.settingsHandlers&&this.settingsButton&&(this.settingsButton.removeEventListener("click",this.settingsHandlers.click),this.settingsButton.removeEventListener("keydown",this.settingsHandlers.keydown)),this.settingsHandlers=null,this.handlers&&(this.player.off("play",this.handlers.play),this.player.off("pause",this.handlers.pause),this.player.off("timeupdate",this.handlers.timeupdate),this.player.off("ratechange",this.handlers.ratechange),this.handlers.captionChange&&this.player.off("captionsenabled",this.handlers.captionChange),this.handlers=null),this.wrapper&&this.customKeyHandler&&this.wrapper.removeEventListener("keydown",this.customKeyHandler),this.draggable&&(this.draggable.pointerResizeMode&&this.draggable.disablePointerResizeMode(),this.draggable.destroy(),this.draggable=null),this.interactionHandlers=null,(e=this.wrapper)!=null&&e.parentNode&&(this.video&&(this.video.pause(),this.video.src=""),this.wrapper.parentNode.removeChild(this.wrapper)),this.wrapper=null,this.video=null,this.settingsButton=null,this.settingsMenu=null}destroy(){this.cleanup(),this.enabled=!1}};var tt=0,G=class g extends ie{constructor(e,t={}){if(super(),this.element=typeof e=="string"?document.querySelector(e):e,!this.element)throw new Error("VidPly: Element not found");if(tt++,this.instanceId=tt,this.element.tagName!=="VIDEO"&&this.element.tagName!=="AUDIO"){let s=t.mediaType||"video",a=document.createElement(s);Array.from(this.element.attributes).forEach(l=>{l.name!=="id"&&l.name!=="class"&&!l.name.startsWith("data-")&&a.setAttribute(l.name,l.value)}),this.element.querySelectorAll("track").forEach(l=>{a.appendChild(l.cloneNode(!0))}),this.element.innerHTML="",this.element.appendChild(a),this.element=a}this._originalElement=this.element,this.options=O({width:null,height:null,poster:null,responsive:!0,fillContainer:!1,autoplay:!1,loop:!1,muted:!1,volume:.8,playbackSpeed:1,preload:"metadata",startTime:0,playsInline:!0,controls:!0,hideControlsDelay:3e3,playPauseButton:!0,progressBar:!0,currentTime:!0,duration:!0,volumeControl:!0,muteButton:!0,chaptersButton:!0,qualityButton:!0,captionStyleButton:!0,speedButton:!0,captionsButton:!0,transcriptButton:!0,fullscreenButton:!0,pipButton:!1,seekInterval:10,seekIntervalLarge:30,captions:!0,captionsDefault:!1,captionsFontSize:"100%",captionsFontFamily:"sans-serif",captionsColor:"#FFFFFF",captionsBackgroundColor:"#000000",captionsOpacity:.8,audioDescription:!0,audioDescriptionSrc:null,audioDescriptionButton:!0,signLanguage:!0,signLanguageSrc:null,signLanguageButton:!0,signLanguagePosition:"bottom-right",transcript:!1,transcriptPosition:"external",transcriptContainer:null,keyboard:!0,keyboardShortcuts:{"play-pause":[" ","p","k"],"volume-up":["ArrowUp"],"volume-down":["ArrowDown"],"seek-forward":["ArrowRight"],"seek-backward":["ArrowLeft"],mute:["m"],fullscreen:["f"],captions:["c"],"caption-style-menu":["a"],"speed-up":[">"],"speed-down":["<"],"speed-menu":["s"],"quality-menu":["q"],"chapters-menu":["j"],"transcript-toggle":["t"]},ariaLabels:{},screenReaderAnnouncements:!0,highContrast:!1,focusHighlight:!0,metadataAlerts:{},metadataHashtags:{},language:"en",languages:["en"],debug:!1,classPrefix:"vidply",iconType:"svg",pauseOthersOnPlay:!0,onReady:null,onPlay:null,onPause:null,onEnded:null,onTimeUpdate:null,onVolumeChange:null,onError:null},t),this.options.metadataAlerts=this.options.metadataAlerts||{},this.options.metadataHashtags=this.options.metadataHashtags||{},this.storage=new I("vidply");let i=this.storage.getPlayerPreferences();i&&(i.volume!==void 0&&(this.options.volume=i.volume),i.playbackSpeed!==void 0&&(this.options.playbackSpeed=i.playbackSpeed),i.muted!==void 0&&(this.options.muted=i.muted)),this.state={ready:!1,playing:!1,paused:!0,ended:!1,buffering:!1,seeking:!1,muted:this.options.muted,volume:this.options.volume,currentTime:0,duration:0,playbackSpeed:this.options.playbackSpeed,fullscreen:!1,pip:!1,captionsEnabled:this.options.captionsDefault,currentCaption:null,controlsVisible:!0,audioDescriptionEnabled:!1,signLanguageEnabled:!1},this.originalSrc=null,this.audioDescriptionSrc=this.options.audioDescriptionSrc,this.signLanguageSrc=this.options.signLanguageSrc,this.signLanguageSources=this.options.signLanguageSources||{},this.currentSignLanguage=null,this.signLanguageVideo=null,this.audioDescriptionSourceElement=null,this.originalAudioDescriptionSource=null,this.audioDescriptionCaptionTracks=[],this._audioDescriptionDesiredState=!1,this._textTracksCache=null,this._textTracksDirty=!0,this._sourceElementsCache=null,this._sourceElementsDirty=!0,this._trackElementsCache=null,this._trackElementsDirty=!0,this.timeouts=new Set,this.container=null,this.renderer=null,this.controlBar=null,this.captionManager=null,this.keyboardManager=null,this.settingsDialog=null,this.metadataCueChangeHandler=null,this.metadataAlertHandlers=new Map,this.audioDescriptionManager=new ue(this),this.signLanguageManager=new pe(this),Object.defineProperties(this,{signLanguageWrapper:{get:()=>this.signLanguageManager.wrapper,set:s=>{this.signLanguageManager.wrapper=s}},signLanguageVideo:{get:()=>this.signLanguageManager.video,set:s=>{this.signLanguageManager.video=s}},signLanguageHeader:{get:()=>this.signLanguageManager.header,set:s=>{this.signLanguageManager.header=s}},signLanguageSettingsButton:{get:()=>this.signLanguageManager.settingsButton,set:s=>{this.signLanguageManager.settingsButton=s}},signLanguageSettingsMenu:{get:()=>this.signLanguageManager.settingsMenu,set:s=>{this.signLanguageManager.settingsMenu=s}},signLanguageSettingsMenuVisible:{get:()=>this.signLanguageManager.settingsMenuVisible,set:s=>{this.signLanguageManager.settingsMenuVisible=s}},signLanguageDraggable:{get:()=>this.signLanguageManager.draggable,set:s=>{this.signLanguageManager.draggable=s}},currentSignLanguage:{get:()=>this.signLanguageManager.currentLanguage,set:s=>{this.signLanguageManager.currentLanguage=s}}}),this.init()}async init(){var e;try{if(this.log("Initializing VidPly player"),this.options.languageFiles)try{await m.loadLanguagesFromUrls(this.options.languageFiles)}catch(i){console.warn("Failed to load some language files:",i)}if(this.options.languageFile&&this.options.languageFileUrl)try{await m.loadLanguageFromUrl(this.options.languageFile,this.options.languageFileUrl),this.log("Custom language file loaded for ".concat(this.options.languageFile))}catch(i){console.warn("Failed to load language file for ".concat(this.options.languageFile,":"),i)}if(!this.options.language||this.options.language==="en"){let i=this.detectHtmlLanguage();i&&(this.options.language=i,this.log("Auto-detected language from HTML: ".concat(i)))}this.options.language||(this.options.language="en"),await m.ensureLanguage(this.options.language),m.setLanguage(this.options.language),this.createContainer(),this.element.src||((e=this.element.querySelector("source"))==null?void 0:e.src)?await this.initializeRenderer():this.log("No initial source - waiting for playlist or manual load"),this.options.controls&&(this.controlBar=new re(this),this.videoWrapper.appendChild(this.controlBar.element)),this.options.captions&&(this.captionManager=new K(this)),this.options.transcript&&await this.ensureTranscriptManager(),this.setupMetadataHandling(),this.options.keyboard&&(this.keyboardManager=new le(this)),this.setupResponsiveHandlers(),this.options.startTime>0&&this.seek(this.options.startTime),requestAnimationFrame(()=>{this.options.muted?this.mute():this.renderer&&this.renderer.media&&this.renderer.setMuted(!1),this.options.volume!==.8?this.setVolume(this.options.volume):this.renderer&&this.renderer.media&&this.renderer.setVolume(this.options.volume)}),this.state.ready=!0,this.emit("ready"),this.options.onReady&&this.options.onReady.call(this),this.options.autoplay&&this.play(),this.log("Player initialized successfully")}catch(t){this.handleError(t)}}async ensureTranscriptManager(){if(this.transcriptManager)return this.transcriptManager;if(!this.options.transcript&&!this.options.transcriptButton)return null;let e=await Promise.resolve().then(()=>(Ue(),Ke)),t=e.TranscriptManager||e.default;return t?(this.transcriptManager=new t(this),this.transcriptManager):null}async toggleTranscript(){let e=await this.ensureTranscriptManager();e&&(e.toggleTranscript(),this.controlBar&&this.controlBar.updateTranscriptButton())}detectHtmlLanguage(){let e=document.documentElement.lang||document.documentElement.getAttribute("lang");if(!e)return null;let t=e.toLowerCase().split("-")[0];return m.translations[t]||m.builtInLanguageLoaders&&m.builtInLanguageLoaders[t]?t:(this.log('Language "'.concat(e,'" not available, using English as fallback')),null)}createContainer(){let e=this.instanceId>1?"".concat(m.t("player.label")," ").concat(this.instanceId):m.t("player.label");this.container=u.createElement("div",{className:"".concat(this.options.classPrefix,"-player"),attributes:{role:"application","aria-label":e,tabindex:"0"}});let t=this.element.tagName.toLowerCase();this.container.classList.add("".concat(this.options.classPrefix,"-").concat(t)),this.options.responsive&&this.container.classList.add("".concat(this.options.classPrefix,"-responsive")),this.videoWrapper=u.createElement("div",{className:"".concat(this.options.classPrefix,"-video-wrapper")}),this.element.parentNode.insertBefore(this.container,this.element),this.element.tagName==="AUDIO"&&this.options.poster&&(this.trackArtworkElement=u.createElement("div",{className:"".concat(this.options.classPrefix,"-track-artwork"),attributes:{"aria-hidden":"true"}}),this.trackArtworkElement.style.backgroundImage="url(".concat(this.options.poster,")"),this.container.appendChild(this.trackArtworkElement)),this.container.appendChild(this.videoWrapper),this.videoWrapper.appendChild(this.element),this.element.controls=!1,this.element.removeAttribute("controls"),this.element.setAttribute("tabindex","-1"),this.element.style.width="100%",this.element.style.height="100%",this.element.tagName==="VIDEO"&&this.options.playsInline&&(this.element.setAttribute("playsinline",""),this.element.playsInline=!0),this.options.width&&(this.container.style.width=typeof this.options.width=="number"?"".concat(this.options.width,"px"):this.options.width),this.options.height&&(this.container.style.height=typeof this.options.height=="number"?"".concat(this.options.height,"px"):this.options.height),this.options.poster&&this.element.tagName==="VIDEO"&&(this.element.poster=this.resolvePosterPath(this.options.poster)),this.element.tagName==="VIDEO"&&this.createPlayButtonOverlay(),this.element.vidply=this,g.instances.push(this),this.element.style.cursor="pointer",this.element.addEventListener("click",i=>{i.target===this.element&&this.toggle()}),this.on("play",()=>{this.hidePosterOverlay()}),this.on("timeupdate",()=>{this.state.currentTime>0&&this.hidePosterOverlay()}),this.element.addEventListener("loadeddata",()=>{(this.state.playing||this.state.currentTime>0)&&this.hidePosterOverlay()},{once:!0})}createPlayButtonOverlay(){this.playButtonOverlay=Ie(),this.playButtonOverlay.addEventListener("click",()=>{this.toggle()}),this.videoWrapper.appendChild(this.playButtonOverlay),this.on("play",()=>{this.playButtonOverlay.style.opacity="0",this.playButtonOverlay.style.pointerEvents="none"}),this.on("pause",()=>{this.playButtonOverlay.style.opacity="1",this.playButtonOverlay.style.pointerEvents="auto",this.positionPlayOverlayOnMobile()}),this.on("ended",()=>{this.playButtonOverlay.style.opacity="1",this.playButtonOverlay.style.pointerEvents="auto",this.positionPlayOverlayOnMobile()}),this.debouncedPositionPlayOverlay=ne(()=>{this.positionPlayOverlayOnMobile()},150),window.addEventListener("resize",this.debouncedPositionPlayOverlay),this.on("loadedmetadata",()=>{this.positionPlayOverlayOnMobile()}),this.on("enterfullscreen",()=>{X(()=>this.positionPlayOverlayOnMobile(),100)}),this.on("exitfullscreen",()=>{X(()=>this.positionPlayOverlayOnMobile(),100)})}positionPlayOverlayOnMobile(){if(!this.playButtonOverlay||this.element.tagName!=="VIDEO")return;if(!j()){this.playButtonOverlay.style.top="";return}let t=this.element.getBoundingClientRect(),i=this.videoWrapper.getBoundingClientRect(),s=t.top-i.top+t.height/2;this.playButtonOverlay.style.top="".concat(s,"px")}async initializeRenderer(){var i;let e=this._pendingSource||this.element.src||((i=this.element.querySelector("source"))==null?void 0:i.src);if(!e)throw new Error("No media source found");this.currentSource=e,this._pendingSource=null,this.audioDescriptionManager.initFromSourceElements(this.sourceElements,this.trackElements),this.originalSrc||(this.originalSrc=e);let t=ee;if(e.includes("youtube.com")||e.includes("youtu.be")){let s=await Promise.resolve().then(()=>(Xe(),je));t=s.YouTubeRenderer||s.default}else if(e.includes("vimeo.com")){let s=await Promise.resolve().then(()=>(Ye(),Qe));t=s.VimeoRenderer||s.default}else if(e.includes(".m3u8")){let s=await Promise.resolve().then(()=>(Ge(),Je));t=s.HLSRenderer||s.default}else if(e.includes("soundcloud.com")||e.includes("api.soundcloud.com")){let s=await Promise.resolve().then(()=>(et(),Ze));t=s.SoundCloudRenderer||s.default}this.log("Using ".concat((t==null?void 0:t.name)||"HTML5Renderer"," renderer")),this.renderer=new t(this),await this.renderer.init(),this.invalidateTrackCache()}get textTracks(){return(!this._textTracksCache||this._textTracksDirty)&&(this._textTracksCache=Array.from(this.element.textTracks||[]),this._textTracksDirty=!1),this._textTracksCache}get sourceElements(){return(!this._sourceElementsCache||this._sourceElementsDirty)&&(this._sourceElementsCache=Array.from(this.element.querySelectorAll("source")),this._sourceElementsDirty=!1),this._sourceElementsCache}get trackElements(){return(!this._trackElementsCache||this._trackElementsDirty)&&(this._trackElementsCache=Array.from(this.element.querySelectorAll("track")),this._trackElementsDirty=!1),this._trackElementsCache}invalidateTrackCache(){this._textTracksDirty=!0,this._trackElementsDirty=!0,this._sourceElementsDirty=!0}findTextTrack(e,t=null){let i=this.textTracks;return t?i.find(s=>s.kind===e&&s.language===t):i.find(s=>s.kind===e)}findSourceElement(e,t=null){let i=this.sourceElements;return t?i.find(s=>s.getAttribute(e)===t):i.find(s=>s.hasAttribute(e))}findTrackElement(e){return this.trackElements.find(t=>t.track===e)}resolvePosterPath(e){if(!e||e.match(/^(https?:|\/)/))return e;try{return new URL(e,window.location.href).href}catch(t){return e}}showPosterOverlay(){if(!this.videoWrapper||this.element.tagName!=="VIDEO")return;let e=this.element.getAttribute("poster")||this.element.poster||this.options.poster;if(!e)return;let t=this.resolvePosterPath(e);this.videoWrapper.style.setProperty("--vidply-poster-image",'url("'.concat(t,'")')),this.videoWrapper.classList.add("vidply-forced-poster"),this._isAudioContent&&this.container?this.container.classList.add("vidply-audio-content"):this.container&&this.container.classList.remove("vidply-audio-content")}hidePosterOverlay(){this.videoWrapper&&(this.videoWrapper.classList.remove("vidply-forced-poster"),this.videoWrapper.style.removeProperty("--vidply-poster-image"))}setManagedTimeout(e,t){let i=setTimeout(()=>{this.timeouts.delete(i),e()},t);return this.timeouts.add(i),i}clearManagedTimeout(e){e&&(clearTimeout(e),this.timeouts.delete(e))}isExternalRendererUrl(e){return e?e.includes("youtube.com")||e.includes("youtu.be")||e.includes("vimeo.com")||e.includes("soundcloud.com")||e.includes("api.soundcloud.com")||e.includes(".m3u8"):!1}async load(e){var t;try{this.log("Loading new media:",e.src),this.renderer&&this.pause();let i=window.scrollX||window.pageXOffset,s=window.scrollY||window.pageYOffset;this.trackElements.forEach(r=>r.remove()),this.invalidateTrackCache();let n=this.isExternalRendererUrl(e.src);if(n&&(this._switchingRenderer=!0),n?(this.element.removeAttribute("src"),this.element.querySelectorAll("source").forEach(d=>d.removeAttribute("src"))):(this.element.src=e.src,e.type&&(this.element.type=e.type)),this._pendingSource=e.src,this._isAudioContent=e.type&&e.type.startsWith("audio/"),this.container&&(this._isAudioContent?this.container.classList.add("vidply-audio-content"):this.container.classList.remove("vidply-audio-content")),e.poster&&this.element.tagName==="VIDEO")if(this._isAudioContent){if(this.element.removeAttribute("poster"),this.videoWrapper){let r=this.resolvePosterPath(e.poster);this.videoWrapper.style.setProperty("--vidply-poster-image",'url("'.concat(r,'")')),this.videoWrapper.classList.add("vidply-forced-poster")}}else this.element.poster=this.resolvePosterPath(e.poster),this.videoWrapper&&(this.videoWrapper.classList.remove("vidply-forced-poster"),this.videoWrapper.style.removeProperty("--vidply-poster-image"));e.tracks&&e.tracks.length>0&&(e.tracks.forEach(r=>{let d=document.createElement("track");d.src=r.src,d.kind=r.kind||"captions",d.srclang=r.srclang||"en",d.label=r.label||r.srclang,r.default&&(d.default=!0),r.describedSrc&&d.setAttribute("data-desc-src",r.describedSrc);let h=this.element.firstChild;h&&h.nodeType===Node.ELEMENT_NODE&&h.tagName!=="TRACK"?this.element.insertBefore(d,h):this.element.appendChild(d)}),this.invalidateTrackCache());let l=this.state.signLanguageEnabled,o=this.state.audioDescriptionEnabled;this.audioDescriptionSrc=e.audioDescriptionSrc||null,this.signLanguageSrc=e.signLanguageSrc||null,this.originalSrc=e.src,this.audioDescriptionManager&&(this.audioDescriptionManager.updateSources(e.audioDescriptionSrc),this.audioDescriptionManager.reinitialize()),this.signLanguageManager&&this.signLanguageManager.updateSources(e.signLanguageSrc,e.signLanguageSources),o&&this.disableAudioDescription(),l&&this.disableSignLanguage();let c=this.shouldChangeRenderer(e.src);if(c&&this.renderer&&(this.renderer.destroy(),this.renderer=null),!this.renderer||c?await this.initializeRenderer():(this.renderer.media=this.element,this.element.load()),n?setTimeout(()=>{this._switchingRenderer=!1},500):this._switchingRenderer=!1,window.scrollTo(i,s),this.captionManager&&(this.captionManager.destroy(),this.captionManager=new K(this)),this.transcriptManager){let r=this.transcriptManager.isVisible;this.transcriptManager.destroy(),this.transcriptManager=null,await this.ensureTranscriptManager(),r&&this.controlBar&&this.controlBar.hasCaptionTracks()&&((t=this.transcriptManager)==null||t.showTranscript())}this.controlBar&&this.updateControlBar(),window.scrollTo(i,s),l&&this.signLanguageSrc&&setTimeout(()=>{this.enableSignLanguage(),window.scrollTo(i,s)},150),o&&this.audioDescriptionSrc&&setTimeout(()=>{this.enableAudioDescription(),window.scrollTo(i,s)},150),this.emit("sourcechange",e),this.log("Media loaded successfully")}catch(i){this.handleError(i)}}updateControlBar(){if(!this.controlBar)return;let e=this.controlBar;e.element.innerHTML="",e.createControls(),e.attachEvents(),e.setupAutoHide(),e.setupOverflowDetection()}shouldChangeRenderer(e){if(!this.renderer)return!0;let t=e.includes("youtube.com")||e.includes("youtu.be"),i=e.includes("vimeo.com"),s=e.includes(".m3u8"),a=e.includes("soundcloud.com")||e.includes("api.soundcloud.com"),n=this.renderer.constructor.name;return!!(t&&n!=="YouTubeRenderer"||i&&n!=="VimeoRenderer"||s&&n!=="HLSRenderer"||a&&n!=="SoundCloudRenderer"||!t&&!i&&!s&&!a&&n!=="HTML5Renderer")}play(){this.renderer&&this.renderer.play()}pause(){this.renderer&&this.renderer.pause()}stop(){this.pause(),this.seek(0)}toggle(){this.state.playing?this.pause():this.play()}seek(e){this.renderer&&this.renderer.seek(e)}seekForward(e=this.options.seekInterval){this.seek(Math.min(this.state.currentTime+e,this.state.duration))}seekBackward(e=this.options.seekInterval){this.seek(Math.max(this.state.currentTime-e,0))}setVolume(e){let t=Math.max(0,Math.min(1,e));this.renderer&&this.renderer.setVolume(t),this.state.volume=t,t>0&&this.state.muted&&(this.state.muted=!1,this.renderer&&this.renderer.setMuted(!1),this.emit("volumechange")),this.savePlayerPreferences()}getVolume(){return this.state.volume}mute(){this.renderer&&this.renderer.setMuted(!0),this.state.muted=!0,this.savePlayerPreferences(),this.emit("volumechange")}unmute(){this.renderer&&this.renderer.setMuted(!1),this.state.muted=!1,this.savePlayerPreferences(),this.emit("volumechange")}toggleMute(){this.state.muted?this.unmute():this.mute()}setPlaybackSpeed(e){let t=Math.max(.25,Math.min(2,e));this.renderer&&this.renderer.setPlaybackSpeed(t),this.state.playbackSpeed=t,this.savePlayerPreferences(),this.emit("playbackspeedchange",t)}getPlaybackSpeed(){return this.state.playbackSpeed}savePlayerPreferences(){this.storage.savePlayerPreferences({volume:this.state.volume,muted:this.state.muted,playbackSpeed:this.state.playbackSpeed})}enterFullscreen(){let e=this.container,t=null;if(/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1){this._enablePseudoFullscreen();return}e.requestFullscreen?t=e.requestFullscreen():e.webkitRequestFullscreen?t=e.webkitRequestFullscreen():e.mozRequestFullScreen?t=e.mozRequestFullScreen():e.msRequestFullscreen&&(t=e.msRequestFullscreen()),t&&t.catch&&t.catch(s=>{this.log("Fullscreen API failed, using pseudo-fullscreen:",s.message),this._enablePseudoFullscreen()}),!e.requestFullscreen&&!e.webkitRequestFullscreen&&!e.mozRequestFullScreen&&!e.msRequestFullscreen?this._enablePseudoFullscreen():(this.state.fullscreen=!0,this.container.classList.add("".concat(this.options.classPrefix,"-fullscreen")),this.emit("fullscreenchange",!0))}exitFullscreen(){!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)?document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen():this._disablePseudoFullscreen(),this.state.fullscreen=!1,this.container.classList.remove("".concat(this.options.classPrefix,"-fullscreen")),this.emit("fullscreenchange",!1)}toggleFullscreen(){this.state.fullscreen?this.exitFullscreen():this.enterFullscreen()}_enablePseudoFullscreen(){var t;this.state.fullscreen=!0,this.container.classList.add("".concat(this.options.classPrefix,"-fullscreen")),this._originalScrollX=window.scrollX||window.pageXOffset,this._originalScrollY=window.scrollY||window.pageYOffset,this._originalBodyOverflow=document.body.style.overflow,this._originalBodyPosition=document.body.style.position,this._originalBodyWidth=document.body.style.width,this._originalBodyHeight=document.body.style.height,this._originalHtmlOverflow=document.documentElement.style.overflow,document.body.style.overflow="hidden",document.body.style.width="100%",document.body.style.height="100%",document.documentElement.style.overflow="hidden",this._originalViewport=(t=document.querySelector('meta[name="viewport"]'))==null?void 0:t.getAttribute("content");let e=document.querySelector('meta[name="viewport"]');e&&e.setAttribute("content","width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"),window.scrollTo(0,0),this.emit("fullscreenchange",!0),this.emit("enterfullscreen")}_disablePseudoFullscreen(){if(this._originalBodyOverflow!==void 0&&(document.body.style.overflow=this._originalBodyOverflow,delete this._originalBodyOverflow),this._originalBodyPosition!==void 0&&(document.body.style.position=this._originalBodyPosition,delete this._originalBodyPosition),this._originalBodyWidth!==void 0&&(document.body.style.width=this._originalBodyWidth,delete this._originalBodyWidth),this._originalBodyHeight!==void 0&&(document.body.style.height=this._originalBodyHeight,delete this._originalBodyHeight),this._originalHtmlOverflow!==void 0&&(document.documentElement.style.overflow=this._originalHtmlOverflow,delete this._originalHtmlOverflow),this._originalViewport!==void 0){let e=document.querySelector('meta[name="viewport"]');e&&e.setAttribute("content",this._originalViewport),delete this._originalViewport}this._originalScrollX!==void 0&&this._originalScrollY!==void 0&&(window.scrollTo(this._originalScrollX,this._originalScrollY),delete this._originalScrollX,delete this._originalScrollY),this.emit("exitfullscreen")}enterPiP(){this.element.requestPictureInPicture&&(this.element.requestPictureInPicture(),this.state.pip=!0,this.emit("pipchange",!0))}exitPiP(){document.pictureInPictureElement&&(document.exitPictureInPicture(),this.state.pip=!1,this.emit("pipchange",!1))}togglePiP(){this.state.pip?this.exitPiP():this.enterPiP()}enableCaptions(){this.captionManager&&(this.captionManager.enable(),this.state.captionsEnabled=!0)}disableCaptions(){this.captionManager&&(this.captionManager.disable(),this.state.captionsEnabled=!1)}toggleCaptions(){this.state.captionsEnabled?this.disableCaptions():this.enableCaptions()}async validateTrackExists(e){try{return(await fetch(e,{method:"HEAD",cache:"no-cache"})).ok}catch(t){return!1}}stripVTTFormatting(e){return e?e.replace(/<[^>]+>/g,"").replace(/\n/g," ").trim().toLowerCase():""}findMatchingCaptionTime(e,t){if(!e||!t||t.length===0)return null;let i=this.stripVTTFormatting(e);for(let s of t){if(s.kind!=="captions"&&s.kind!=="subtitles")continue;let a=s.track;if(!(!a||!a.cues))for(let n=0;n<a.cues.length;n++){let l=a.cues[n],o=this.stripVTTFormatting(l.text);if(o===i)return l.startTime;let c=i.split(/\s+/).filter(d=>d.length>2),r=o.split(/\s+/).filter(d=>d.length>2);if(c.length>0&&r.length>0&&c.filter(p=>r.includes(p)).length/c.length>=.8)return l.startTime}}return null}async enableAudioDescription(){return this.audioDescriptionManager.enable()}async _legacyEnableAudioDescription(){let e=this.sourceElements.some(r=>r.getAttribute("data-desc-src")),t=this.audioDescriptionCaptionTracks.length>0;if(!this.audioDescriptionSrc&&!e&&!t){console.warn("VidPly: No audio description source, source elements, or tracks provided");return}let i=this.element.currentTime,s=this.state.playing,a=!s&&i===0,n=null;if(this.captionManager&&this.captionManager.currentTrack){let r=this.captionManager.currentTrack.track;if(r&&r.activeCues&&r.activeCues.length>0){let d=r.activeCues[0];n=this.stripVTTFormatting(d.text)}}let l=this.resolvePosterPath(this.element.getAttribute("poster")||this.element.poster||this.options.poster);a&&this.showPosterOverlay();let o=[];if(this.audioDescriptionSourceElement){let r=this.element.currentSrc||this.element.src,d=this.sourceElements,h=null,p=this.audioDescriptionSrc;for(let v of d){let M=v.getAttribute("src"),E=v.getAttribute("data-desc-src"),S=M?M.split("/").pop():"",T=r?r.split("/").pop():"";if(r&&(r===M||r.includes(M)||r.includes(S)||S&&T===S)){h=v,E?p=E:M&&(p=this.audioDescriptionSrc||p);break}}if(!h){h=this.audioDescriptionSourceElement;let v=h.getAttribute("data-desc-src");v&&(p=v)}if(this.audioDescriptionCaptionTracks.length>0){let v=this.audioDescriptionCaptionTracks.map(async S=>{if(S.trackElement&&S.describedSrc)if(S.explicit===!0)try{let T=await this.validateTrackExists(S.describedSrc);return{trackInfo:S,exists:T}}catch(T){return{trackInfo:S,exists:!1}}else return{trackInfo:S,exists:!1};return{trackInfo:S,exists:!1}}),M=await Promise.all(v),E=M.filter(S=>S.exists);if(E.length>0){let S=new Map;E.forEach(({trackInfo:P})=>{let R=P.trackElement.track;R?S.set(P,{wasShowing:R.mode==="showing",wasHidden:R.mode==="hidden"}):S.set(P,{wasShowing:!1,wasHidden:!1})});let T=E.map(({trackInfo:P})=>{let R=P.trackElement.getAttribute("src"),N=P.trackElement.parentNode,me=P.trackElement.nextSibling,A={};return Array.from(P.trackElement.attributes).forEach($=>{A[$.name]=$.value}),{trackInfo:P,oldSrc:R,parent:N,nextSibling:me,attributes:A}});T.forEach(({trackInfo:P})=>{P.trackElement.remove()}),this.element.load(),await new Promise(P=>{setTimeout(()=>{T.forEach(({trackInfo:N,oldSrc:me,parent:A,nextSibling:$,attributes:U})=>{o.push(N);let Z=document.createElement("track");Z.setAttribute("src",N.describedSrc),Object.keys(U).forEach(te=>{te!=="src"&&te!=="data-desc-src"&&Z.setAttribute(te,U[te])}),$&&$.parentNode?A.insertBefore(Z,$):A.appendChild(Z),N.trackElement=Z}),this.invalidateTrackCache();let R=()=>{this.setManagedTimeout(()=>{o.forEach(N=>{let A=N.trackElement.track;if(A){let $=S.get(N)||{wasShowing:!1,wasHidden:!1};A.mode="hidden";let U=()=>{$.wasShowing||$.wasHidden?A.mode="hidden":A.mode="disabled"};A.readyState>=2?U():(A.addEventListener("load",U,{once:!0}),A.addEventListener("error",U,{once:!0}))}})},300)};this.element.readyState>=1?setTimeout(R,200):(this.element.addEventListener("loadedmetadata",R,{once:!0}),setTimeout(R,2e3)),P()},100)});let D=M.length-E.length}}let y=this.sourceElements,b=[];y.forEach(v=>{let M=v.getAttribute("data-desc-src"),E=v.getAttribute("src");if(M){let S=v.getAttribute("type"),T=v.getAttribute("data-orig-src");T||(T=E),b.push({src:M,type:S,origSrc:T,descSrc:M})}else{let S=v.getAttribute("type"),T=v.getAttribute("src");b.push({src:T,type:S,origSrc:null,descSrc:null})}});let w=this.element.hasAttribute("src"),f=w?this.element.getAttribute("src"):null;w&&this.element.removeAttribute("src"),y.forEach(v=>{v.remove()}),b.forEach(v=>{let M=document.createElement("source");M.setAttribute("src",v.src),v.type&&M.setAttribute("type",v.type),v.origSrc&&M.setAttribute("data-orig-src",v.origSrc),v.descSrc&&M.setAttribute("data-desc-src",v.descSrc);let E=this.element.querySelector("track");E?this.element.insertBefore(M,E):this.element.appendChild(M)}),this._sourceElementsDirty=!0,this._sourceElementsCache=null,l&&this.element.tagName==="VIDEO"&&(this.element.poster=l),this.element.load(),await new Promise(v=>{let M=()=>{this.element.removeEventListener("loadedmetadata",M),v()};this.element.readyState>=1?v():this.element.addEventListener("loadedmetadata",M)}),await new Promise(v=>setTimeout(v,300)),(i>0||s)&&await new Promise(v=>{let M=()=>{this.element.removeEventListener("canplay",M),this.element.removeEventListener("canplaythrough",M),v()};this.element.readyState>=3?v():(this.element.addEventListener("canplay",M,{once:!0}),this.element.addEventListener("canplaythrough",M,{once:!0}),setTimeout(()=>{this.element.removeEventListener("canplay",M),this.element.removeEventListener("canplaythrough",M),v()},3e3))});let L=i;if(n&&this.captionManager&&this.captionManager.tracks.length>0){await new Promise(M=>setTimeout(M,500));let v=this.findMatchingCaptionTime(n,this.captionManager.tracks);v!==null&&(L=v,this.options.debug&&console.log("[VidPly] Syncing via caption: ".concat(i,"s -> ").concat(L,"s")))}if(L>0&&(this.seek(L),await new Promise(v=>setTimeout(v,100))),s?(await this.play(),this.setManagedTimeout(()=>{this.hidePosterOverlay()},100)):(this.pause(),a||this.hidePosterOverlay()),!this._audioDescriptionDesiredState)return;this.state.audioDescriptionEnabled=!0,this.emit("audiodescriptionenabled")}else{if(this.audioDescriptionCaptionTracks.length>0){let h=this.audioDescriptionCaptionTracks.map(async b=>{if(b.trackElement&&b.describedSrc)if(b.explicit===!0)try{let w=await this.validateTrackExists(b.describedSrc);return{trackInfo:b,exists:w}}catch(w){return{trackInfo:b,exists:!1}}else return{trackInfo:b,exists:!1};return{trackInfo:b,exists:!1}}),y=(await Promise.all(h)).filter(b=>b.exists);if(y.length>0){let b=new Map;y.forEach(({trackInfo:f})=>{let L=f.trackElement.track;L?b.set(f,{wasShowing:L.mode==="showing",wasHidden:L.mode==="hidden"}):b.set(f,{wasShowing:!1,wasHidden:!1})});let w=y.map(({trackInfo:f})=>{let L=f.trackElement.getAttribute("src"),v=f.trackElement.parentNode,M=f.trackElement.nextSibling,E={};return Array.from(f.trackElement.attributes).forEach(S=>{E[S.name]=S.value}),{trackInfo:f,oldSrc:L,parent:v,nextSibling:M,attributes:E}});w.forEach(({trackInfo:f})=>{f.trackElement.remove()}),this.element.load(),setTimeout(()=>{w.forEach(({trackInfo:L,oldSrc:v,parent:M,nextSibling:E,attributes:S})=>{o.push(L);let T=document.createElement("track");T.setAttribute("src",L.describedSrc),Object.keys(S).forEach(P=>{P!=="src"&&P!=="data-desc-src"&&T.setAttribute(P,S[P])});let D=M.firstChild;D&&D.nodeType===Node.ELEMENT_NODE&&D.tagName!=="TRACK"?M.insertBefore(T,D):E&&E.parentNode?M.insertBefore(T,E):M.appendChild(T),L.trackElement=T}),this.element.load();let f=()=>{setTimeout(()=>{o.forEach(L=>{let M=L.trackElement.track;if(M){let E=b.get(L)||{wasShowing:!1,wasHidden:!1};M.mode="hidden";let S=()=>{E.wasShowing||E.wasHidden?M.mode="hidden":M.mode="disabled"};M.readyState>=2?S():(M.addEventListener("load",S,{once:!0}),M.addEventListener("error",S,{once:!0}))}})},300)};this.element.readyState>=1?setTimeout(f,200):(this.element.addEventListener("loadedmetadata",f,{once:!0}),setTimeout(f,2e3))},100)}}let r=this.sourceElements;if(r.some(h=>h.getAttribute("data-desc-src"))){let h=[];r.forEach(p=>{let y=p.getAttribute("data-desc-src"),b=p.getAttribute("src");if(y){let w=p.getAttribute("type"),f=p.getAttribute("data-orig-src");f||(f=b),h.push({src:y,type:w,origSrc:f,descSrc:y})}else{let w=p.getAttribute("type"),f=p.getAttribute("src");h.push({src:f,type:w,origSrc:null,descSrc:null})}}),r.forEach(p=>{p.remove()}),h.forEach(p=>{let y=document.createElement("source");y.setAttribute("src",p.src),p.type&&y.setAttribute("type",p.type),p.origSrc&&y.setAttribute("data-orig-src",p.origSrc),p.descSrc&&y.setAttribute("data-desc-src",p.descSrc),this.element.appendChild(y)}),l&&this.element.tagName==="VIDEO"&&(this.element.poster=l),this.element.load(),this.invalidateTrackCache()}else l&&this.element.tagName==="VIDEO"&&(this.element.poster=l),this.element.src=this.audioDescriptionSrc}await new Promise(r=>{let d=()=>{this.element.removeEventListener("loadedmetadata",d),r()};this.element.readyState>=1?r():this.element.addEventListener("loadedmetadata",d)}),(i>0||s)&&await new Promise(r=>{let d=()=>{this.element.removeEventListener("canplay",d),this.element.removeEventListener("canplaythrough",d),r()};this.element.readyState>=3?r():(this.element.addEventListener("canplay",d,{once:!0}),this.element.addEventListener("canplaythrough",d,{once:!0}),setTimeout(()=>{this.element.removeEventListener("canplay",d),this.element.removeEventListener("canplaythrough",d),r()},3e3))}),this.element.tagName==="VIDEO"&&i===0&&!s&&this.element.readyState>=1&&(this.element.currentTime=.001,this.setManagedTimeout(()=>{this.element.currentTime=0},10));let c=i;if(n&&this.captionManager&&this.captionManager.tracks.length>0){await new Promise(d=>setTimeout(d,500));let r=this.findMatchingCaptionTime(n,this.captionManager.tracks);r!==null&&(c=r,this.options.debug&&console.log("[VidPly] Syncing via caption: ".concat(i,"s -> ").concat(c,"s")))}if(c>0&&(this.seek(c),await new Promise(r=>setTimeout(r,100))),s?(await this.play(),this.setManagedTimeout(()=>{this.hidePosterOverlay()},100)):(this.pause(),a||this.hidePosterOverlay()),o.length>0&&this.captionManager){let r=this.state.captionsEnabled,d=null;if(this.captionManager.currentTrack){let p=this.captionManager.tracks.findIndex(y=>y.track===this.captionManager.currentTrack.track);p>=0&&(d={language:this.captionManager.tracks[p].language,kind:this.captionManager.tracks[p].kind})}setTimeout(()=>{if(this.captionManager.tracks=[],this.captionManager.loadTracks(),r&&d&&this.captionManager.tracks.length>0){let p=this.captionManager.tracks.findIndex(y=>y.language===d.language&&y.kind===d.kind);if(p>=0){let y=this.captionManager.tracks[p];if(y.track.readyState>=2)this.captionManager.enable(p);else{let b=()=>{y.track.removeEventListener("load",b),y.track.removeEventListener("error",b),this.captionManager&&this.captionManager.tracks.includes(y)&&this.captionManager.enable(p)};y.track.addEventListener("load",b,{once:!0}),y.track.addEventListener("error",b,{once:!0}),y.track.mode="hidden",setTimeout(()=>{this.captionManager&&this.captionManager.tracks.includes(y)&&this.captionManager.enable(p)},1e3)}}else if(this.captionManager.tracks.length>0){let y=this.captionManager.tracks[0];if(y.track.readyState>=2)this.captionManager.enable(0);else{let b=()=>{y.track.removeEventListener("load",b),y.track.removeEventListener("error",b),this.captionManager&&this.captionManager.tracks.includes(y)&&this.captionManager.enable(0)};y.track.addEventListener("load",b,{once:!0}),y.track.addEventListener("error",b,{once:!0}),y.track.mode="hidden",setTimeout(()=>{this.captionManager&&this.captionManager.tracks.includes(y)&&this.captionManager.enable(0)},1e3)}}}},600)}if(this.transcriptManager&&this.transcriptManager.isVisible){let r=typeof o!="undefined"?o:[];if(r.length>0){let d=()=>{this.invalidateTrackCache();let p=this.textTracks,y=r.map(f=>{let L=f.trackElement,v=L.getAttribute("src"),M=L.getAttribute("srclang"),E=L.getAttribute("kind"),S=p.find(T=>L.track===T);if(S||(S=p.find(T=>{if(T.language===M&&(T.kind===E||E==="captions"&&T.kind==="subtitles")){let D=this.findTrackElement(T);if(D&&D.getAttribute("src")===v)return!0}return!1})),S){let T=this.findTrackElement(S);if(T&&T.getAttribute("src")!==v)return null}return S}).filter(Boolean);if(y.length===0){this.setManagedTimeout(()=>{this.transcriptManager&&this.transcriptManager.loadTranscriptData&&this.transcriptManager.loadTranscriptData()},1e3);return}y.forEach(f=>{f.mode==="disabled"&&(f.mode="hidden")});let b=0,w=()=>{b++,b>=y.length&&this.setManagedTimeout(()=>{if(this.transcriptManager&&this.transcriptManager.loadTranscriptData){this.invalidateTrackCache();let f=this.textTracks,L=r.map(M=>M.describedSrc);(y.some(M=>{let E=this.findTrackElement(M);return E&&L.includes(E.getAttribute("src"))})||y.length>0)&&this.transcriptManager.loadTranscriptData()}},800)};y.forEach(f=>{f.mode==="disabled"&&(f.mode="hidden");let L=this.findTrackElement(f),v=L?L.getAttribute("src"):null,M=r.find(S=>{let T=S.trackElement;return T&&(T.track===f||T.getAttribute("srclang")===f.language&&T.getAttribute("kind")===f.kind)}),E=M?M.describedSrc:null;if(E&&v&&v!==E){w();return}if(f.readyState>=2&&f.cues&&f.cues.length>0)w();else{f.mode==="disabled"&&(f.mode="hidden");let S=()=>{this.setManagedTimeout(w,300)};f.readyState>=2?this.setManagedTimeout(()=>{f.cues&&f.cues.length>0?w():f.addEventListener("load",S,{once:!0})},100):(f.addEventListener("load",S,{once:!0}),f.addEventListener("error",()=>{w()},{once:!0}))}})};this.setManagedTimeout(()=>{this.element.readyState>=1?d():(this.element.addEventListener("loadedmetadata",d,{once:!0}),this.setManagedTimeout(d,2e3))},500),setTimeout(()=>{this.transcriptManager&&this.transcriptManager.loadTranscriptData&&this.transcriptManager.loadTranscriptData()},5e3)}else setTimeout(()=>{this.transcriptManager&&this.transcriptManager.loadTranscriptData&&this.transcriptManager.loadTranscriptData()},800)}a||this.hidePosterOverlay(),this._audioDescriptionDesiredState&&(this.state.audioDescriptionEnabled=!0,this.emit("audiodescriptionenabled"))}async disableAudioDescription(){return this.audioDescriptionManager.disable()}async _legacyDisableAudioDescription(){if(!this.originalSrc)return;let e=this.element.currentTime,t=this.state.playing,i=null;if(this.captionManager&&this.captionManager.currentTrack){let c=this.captionManager.currentTrack.track;if(c&&c.activeCues&&c.activeCues.length>0){let r=c.activeCues[0];i=this.stripVTTFormatting(r.text)}}let s=this.resolvePosterPath(this.element.getAttribute("poster")||this.element.poster||this.options.poster),a=[];if(this.audioDescriptionCaptionTracks.length>0){let c=this.audioDescriptionCaptionTracks.map(r=>{let d=r.trackElement;if(!d||!d.parentNode)return null;let h=d.parentNode,p=d.nextSibling,y={};return Array.from(d.attributes).forEach(b=>{y[b.name]=b.value}),{trackInfo:r,parent:h,nextSibling:p,attributes:y}}).filter(Boolean);c.forEach(({trackInfo:r})=>{r.trackElement&&r.trackElement.parentNode&&r.trackElement.remove()}),this.element.load(),await new Promise(r=>{setTimeout(()=>{c.forEach(({trackInfo:d,parent:h,nextSibling:p,attributes:y})=>{a.push(d);let b=document.createElement("track");b.setAttribute("src",d.originalTrackSrc),Object.keys(y).forEach(w=>{w!=="src"&&w!=="data-desc-src"&&b.setAttribute(w,y[w])}),d.describedSrc&&b.setAttribute("data-desc-src",d.describedSrc),p&&p.parentNode?h.insertBefore(b,p):h.appendChild(b),d.trackElement=b}),this.invalidateTrackCache(),r()},100)})}let n=this.sourceElements;if(n.some(c=>c.getAttribute("data-orig-src"))){let c=[];n.forEach(h=>{let p=h.getAttribute("data-orig-src"),y=h.getAttribute("data-desc-src");if(p){let b=h.getAttribute("type");c.push({src:p,type:b,origSrc:p,descSrc:y})}else{let b=h.getAttribute("type"),w=h.getAttribute("src");c.push({src:w,type:b,origSrc:null,descSrc:y})}});let r=this.element.hasAttribute("src"),d=r?this.element.getAttribute("src"):null;r&&this.element.removeAttribute("src"),n.forEach(h=>{h.remove()}),c.forEach(h=>{let p=document.createElement("source");p.setAttribute("src",h.src),h.type&&p.setAttribute("type",h.type),h.origSrc&&p.setAttribute("data-orig-src",h.origSrc),h.descSrc&&p.setAttribute("data-desc-src",h.descSrc);let y=this.element.querySelector("track");y?this.element.insertBefore(p,y):this.element.appendChild(p)}),this._sourceElementsDirty=!0,this._sourceElementsCache=null,s&&this.element.tagName==="VIDEO"&&(this.element.poster=s),this.element.load()}else{s&&this.element.tagName==="VIDEO"&&(this.element.poster=s);let c=this.originalAudioDescriptionSource||this.originalSrc;this.element.src=c,this.element.load()}await new Promise(c=>{let r=()=>{this.element.removeEventListener("loadedmetadata",r),c()};this.element.readyState>=1?c():this.element.addEventListener("loadedmetadata",r)}),(e>0||t)&&await new Promise(c=>{let r=()=>{this.element.removeEventListener("canplay",r),this.element.removeEventListener("canplaythrough",r),c()};this.element.readyState>=3?c():(this.element.addEventListener("canplay",r,{once:!0}),this.element.addEventListener("canplaythrough",r,{once:!0}),setTimeout(()=>{this.element.removeEventListener("canplay",r),this.element.removeEventListener("canplaythrough",r),c()},3e3))});let o=e;if(i&&this.captionManager&&this.captionManager.tracks.length>0){await new Promise(r=>setTimeout(r,500));let c=this.findMatchingCaptionTime(i,this.captionManager.tracks);c!==null&&(o=c,this.options.debug&&console.log("[VidPly] Syncing via caption: ".concat(e,"s -> ").concat(o,"s")))}if(o>0&&(this.seek(o),await new Promise(c=>setTimeout(c,100))),t?(await this.play(),this.hidePosterOverlay()):(this.pause(),!t&&o===0?this.showPosterOverlay():this.hidePosterOverlay()),a.length>0&&this.captionManager){let c=this.state.captionsEnabled,r=null;if(this.captionManager.currentTrack){let h=this.captionManager.tracks.findIndex(p=>p.track===this.captionManager.currentTrack.track);h>=0&&(r={language:this.captionManager.tracks[h].language,kind:this.captionManager.tracks[h].kind})}setTimeout(()=>{if(this.captionManager.tracks=[],this.captionManager.loadTracks(),c&&r&&this.captionManager.tracks.length>0){let h=this.captionManager.tracks.findIndex(p=>p.language===r.language&&p.kind===r.kind);if(h>=0){let p=this.captionManager.tracks[h];if(p.track.readyState>=2)this.captionManager.enable(h);else{let y=()=>{p.track.removeEventListener("load",y),p.track.removeEventListener("error",y),this.captionManager&&this.captionManager.tracks.includes(p)&&this.captionManager.enable(h)};p.track.addEventListener("load",y,{once:!0}),p.track.addEventListener("error",y,{once:!0}),p.track.mode="hidden",setTimeout(()=>{this.captionManager&&this.captionManager.tracks.includes(p)&&this.captionManager.enable(h)},1e3)}}else if(this.captionManager.tracks.length>0){let p=this.captionManager.tracks[0];if(p.track.readyState>=2)this.captionManager.enable(0);else{let y=()=>{p.track.removeEventListener("load",y),p.track.removeEventListener("error",y),this.captionManager&&this.captionManager.tracks.includes(p)&&this.captionManager.enable(0)};p.track.addEventListener("load",y,{once:!0}),p.track.addEventListener("error",y,{once:!0}),p.track.mode="hidden",setTimeout(()=>{this.captionManager&&this.captionManager.tracks.includes(p)&&this.captionManager.enable(0)},1e3)}}}},600)}this.transcriptManager&&this.transcriptManager.isVisible&&this.setManagedTimeout(()=>{this.transcriptManager&&this.transcriptManager.loadTranscriptData&&this.transcriptManager.loadTranscriptData()},500),!this._audioDescriptionDesiredState&&(this.state.audioDescriptionEnabled=!1,this.emit("audiodescriptiondisabled"))}async toggleAudioDescription(){return this.audioDescriptionManager.toggle()}enableSignLanguage(){return this.signLanguageManager.enable()}_legacyEnableSignLanguage(){var d;let e=Object.keys(this.signLanguageSources).length>0,t=!!this.signLanguageSrc;if(!e&&!t){console.warn("No sign language video source provided");return}if(this.signLanguageWrapper){this.signLanguageWrapper.style.display="block",this.state.signLanguageEnabled=!0,this.emit("signlanguageenabled"),this.setManagedTimeout(()=>{this.signLanguageSettingsButton&&document.contains(this.signLanguageSettingsButton)&&this.signLanguageSettingsButton.focus({preventScroll:!0})},150);return}let i=null,s=null;if(e){if(this.captionManager&&this.captionManager.currentTrack){let h=(d=this.captionManager.currentTrack.language)==null?void 0:d.toLowerCase().split("-")[0];h&&this.signLanguageSources[h]&&(i=h,s=this.signLanguageSources[h])}if(!i&&this.options.language){let h=this.options.language.toLowerCase().split("-")[0];this.signLanguageSources[h]&&(i=h,s=this.signLanguageSources[h])}i||(i=Object.keys(this.signLanguageSources)[0],s=this.signLanguageSources[i]),this.currentSignLanguage=i}else s=this.signLanguageSrc;this.signLanguageWrapper=document.createElement("div"),this.signLanguageWrapper.className="vidply-sign-language-wrapper",this.signLanguageWrapper.setAttribute("tabindex","0"),this.signLanguageWrapper.setAttribute("aria-label",m.t("player.signLanguageDragResize")),this.signLanguageHeader=u.createElement("div",{className:"".concat(this.options.classPrefix,"-sign-language-header"),attributes:{tabindex:"0"}});let a=u.createElement("div",{className:"".concat(this.options.classPrefix,"-sign-language-header-left")}),n=u.createElement("h3",{textContent:m.t("player.signLanguageVideo")}),l=m.t("player.signLanguageSettings");if(this.signLanguageSettingsButton=u.createElement("button",{className:"".concat(this.options.classPrefix,"-sign-language-settings"),attributes:{type:"button","aria-label":l,"aria-expanded":"false"}}),this.signLanguageSettingsButton.appendChild(k("settings")),u.attachTooltip(this.signLanguageSettingsButton,l,this.options.classPrefix),this.signLanguageSettingsHandlers={settingsClick:h=>{if(h.preventDefault(),h.stopPropagation(),this.signLanguageDocumentClickHandler){let p=this.signLanguageSettingsMenuJustOpened;this.signLanguageSettingsMenuJustOpened=!0,setTimeout(()=>{this.signLanguageSettingsMenuJustOpened=p},100)}this.signLanguageSettingsMenuVisible?this.hideSignLanguageSettingsMenu():this.showSignLanguageSettingsMenu()},settingsKeydown:h=>{h.key==="d"||h.key==="D"?(h.preventDefault(),h.stopPropagation(),this.toggleSignLanguageKeyboardDragMode()):h.key==="r"||h.key==="R"?(h.preventDefault(),h.stopPropagation(),this.toggleSignLanguageResizeMode()):h.key==="Escape"&&this.signLanguageSettingsMenuVisible&&(h.preventDefault(),h.stopPropagation(),this.hideSignLanguageSettingsMenu())}},this.signLanguageSettingsButton.addEventListener("click",this.signLanguageSettingsHandlers.settingsClick),this.signLanguageSettingsButton.addEventListener("keydown",this.signLanguageSettingsHandlers.settingsKeydown),a.appendChild(this.signLanguageSettingsButton),this.signLanguageSelector=null,e){let h="".concat(this.options.classPrefix,"-sign-language-select-").concat(Date.now()),p=Object.keys(this.signLanguageSources).map(f=>({value:f,text:this.getSignLanguageLabel(f),selected:f===i})),{label:y,select:b}=Y({classPrefix:this.options.classPrefix,labelClass:"".concat(this.options.classPrefix,"-sign-language-label"),selectClass:"".concat(this.options.classPrefix,"-sign-language-select"),labelText:"settings.language",selectId:h,options:p,onChange:f=>{f.stopPropagation();let L=f.target.value;this.switchSignLanguage(L)}});this.signLanguageSelector=b;let w=u.createElement("div",{className:"".concat(this.options.classPrefix,"-sign-language-selector-wrapper")});w.appendChild(y),w.appendChild(this.signLanguageSelector),J(w),a.appendChild(w)}a.appendChild(n);let o=m.t("player.closeSignLanguage"),c=u.createElement("button",{className:"".concat(this.options.classPrefix,"-sign-language-close"),attributes:{type:"button","aria-label":o}});c.appendChild(k("close")),u.attachTooltip(c,o,this.options.classPrefix),c.addEventListener("click",()=>{this.disableSignLanguage(),this.controlBar&&this.controlBar.controls&&this.controlBar.controls.signLanguage&&setTimeout(()=>{this.controlBar.controls.signLanguage.focus({preventScroll:!0})},0)}),this.signLanguageHeader.appendChild(a),this.signLanguageHeader.appendChild(c),this.signLanguageSettingsMenuVisible=!1,this.signLanguageSettingsMenu=null,this.signLanguageSettingsMenuJustOpened=!1,this.signLanguageResizeOptionButton=null,this.signLanguageResizeOptionText=null,this.signLanguageDragOptionButton=null,this.signLanguageDragOptionText=null,this.signLanguageDocumentClickHandler=null,this.signLanguageDocumentClickHandlerAdded=!1,this.signLanguageVideo=document.createElement("video"),this.signLanguageVideo.className="vidply-sign-language-video",this.signLanguageVideo.src=s,this.signLanguageVideo.setAttribute("aria-label",m.t("player.signLanguage")),this.signLanguageVideo.muted=!0,this.signLanguageVideo.setAttribute("playsinline",""),this.signLanguageResizeHandles=["n","s","e","w","ne","nw","se","sw"].map(h=>{let p=u.createElement("div",{className:"".concat(this.options.classPrefix,"-sign-resize-handle ").concat(this.options.classPrefix,"-sign-resize-").concat(h),attributes:{"data-direction":h,"data-vidply-managed-resize":"true","aria-hidden":"true"}});return p.style.display="none",p}),this.signLanguageWrapper.appendChild(this.signLanguageHeader),this.signLanguageWrapper.appendChild(this.signLanguageVideo),this.signLanguageResizeHandles.forEach(h=>this.signLanguageWrapper.appendChild(h));let r=this.storage.getSignLanguagePreferences();r&&r.size&&r.size.width?this.signLanguageWrapper.style.width=r.size.width:this.signLanguageWrapper.style.width="280px",this.signLanguageWrapper.style.height="auto",this.signLanguageDesiredPosition=this.options.signLanguagePosition||"bottom-right",this.container.appendChild(this.signLanguageWrapper),requestAnimationFrame(()=>{this.constrainSignLanguagePosition()}),this.signLanguageVideo.currentTime=this.state.currentTime,this.state.paused||this.signLanguageVideo.play(),this.setupSignLanguageInteraction(),this.signLanguageHandlers={play:()=>{this.signLanguageVideo&&this.signLanguageVideo.play()},pause:()=>{this.signLanguageVideo&&this.signLanguageVideo.pause()},timeupdate:()=>{this.signLanguageVideo&&Math.abs(this.signLanguageVideo.currentTime-this.state.currentTime)>.5&&(this.signLanguageVideo.currentTime=this.state.currentTime)},ratechange:()=>{this.signLanguageVideo&&(this.signLanguageVideo.playbackRate=this.state.playbackSpeed)}},this.on("play",this.signLanguageHandlers.play),this.on("pause",this.signLanguageHandlers.pause),this.on("timeupdate",this.signLanguageHandlers.timeupdate),this.on("ratechange",this.signLanguageHandlers.ratechange),e&&(this.signLanguageHandlers.captionChange=()=>{var h;if(this.captionManager&&this.captionManager.currentTrack&&this.signLanguageSelector){let p=(h=this.captionManager.currentTrack.language)==null?void 0:h.toLowerCase().split("-")[0];p&&this.signLanguageSources[p]&&this.currentSignLanguage!==p&&(this.switchSignLanguage(p),this.signLanguageSelector.value=p)}},this.on("captionsenabled",this.signLanguageHandlers.captionChange)),this.state.signLanguageEnabled=!0,this.emit("signlanguageenabled"),this.setManagedTimeout(()=>{this.signLanguageSettingsButton&&document.contains(this.signLanguageSettingsButton)&&this.signLanguageSettingsButton.focus({preventScroll:!0})},150)}disableSignLanguage(){return this.signLanguageManager.disable()}toggleSignLanguage(){return this.signLanguageManager.toggle()}setupSignLanguageInteraction(){return this.signLanguageManager._setupInteraction()}_legacySetupSignLanguageInteraction(){if(!this.signLanguageWrapper)return;let e=window.innerWidth<768,t=this.state.fullscreen;if(e&&!t){this.signLanguageDraggable&&(this.signLanguageDraggable.destroy(),this.signLanguageDraggable=null);return}this.signLanguageDraggable||(this.signLanguageDraggable=new q(this.signLanguageWrapper,{dragHandle:this.signLanguageHeader,resizeHandles:this.signLanguageResizeHandles,constrainToViewport:!0,maintainAspectRatio:!0,minWidth:150,minHeight:100,classPrefix:"".concat(this.options.classPrefix,"-sign"),keyboardDragKey:"d",keyboardResizeKey:"r",keyboardStep:10,keyboardStepLarge:50,pointerResizeIndicatorText:m.t("player.signLanguageResizeActive"),onPointerResizeToggle:i=>{this.signLanguageResizeHandles.forEach(s=>{s.style.display=i?"block":"none"})},onDragStart:i=>!(i.target.closest(".".concat(this.options.classPrefix,"-sign-language-close"))||i.target.closest(".".concat(this.options.classPrefix,"-sign-language-settings"))||i.target.closest(".".concat(this.options.classPrefix,"-sign-language-select"))||i.target.closest(".".concat(this.options.classPrefix,"-sign-language-label"))||i.target.closest(".".concat(this.options.classPrefix,"-sign-language-settings-menu")))}),this.signLanguageCustomKeyHandler=i=>{let s=i.key.toLowerCase();if(!this.signLanguageSettingsMenuVisible){if(s==="home"){i.preventDefault(),i.stopPropagation(),this.signLanguageDraggable&&(this.signLanguageDraggable.pointerResizeMode&&this.signLanguageDraggable.disablePointerResizeMode(),this.signLanguageDraggable.manuallyPositioned=!1,this.constrainSignLanguagePosition());return}if(s==="r"){i.preventDefault(),i.stopPropagation(),this.toggleSignLanguageResizeMode()&&this.signLanguageWrapper.focus({preventScroll:!0});return}if(s==="escape"){if(i.preventDefault(),i.stopPropagation(),this.signLanguageDraggable&&this.signLanguageDraggable.pointerResizeMode){this.signLanguageDraggable.disablePointerResizeMode();return}if(this.signLanguageDraggable&&this.signLanguageDraggable.keyboardDragMode){this.signLanguageDraggable.disableKeyboardDragMode();return}this.disableSignLanguage(),this.controlBar&&this.controlBar.controls&&this.controlBar.controls.signLanguage&&setTimeout(()=>{this.controlBar.controls.signLanguage.focus({preventScroll:!0})},0);return}}},this.signLanguageWrapper.addEventListener("keydown",this.signLanguageCustomKeyHandler),this.signLanguageInteractionHandlers={draggable:this.signLanguageDraggable,headerKeyHandler:this.signLanguageHeaderKeyHandler,customKeyHandler:this.signLanguageCustomKeyHandler})}toggleSignLanguageKeyboardDragMode(){if(this.signLanguageDraggable){let e=this.signLanguageDraggable.keyboardDragMode;this.signLanguageDraggable.toggleKeyboardDragMode();let t=this.signLanguageDraggable.keyboardDragMode;!e&&t&&this.enableSignLanguageMoveMode(),this.updateSignLanguageDragOptionState()}}enableSignLanguageMoveMode(){this.signLanguageWrapper.classList.add("".concat(this.options.classPrefix,"-sign-move-mode")),this.updateSignLanguageResizeOptionState(),setTimeout(()=>{this.signLanguageWrapper.classList.remove("".concat(this.options.classPrefix,"-sign-move-mode"))},2e3)}toggleSignLanguageResizeMode({focus:e=!0}={}){return this.signLanguageDraggable?this.signLanguageDraggable.pointerResizeMode?(this.signLanguageDraggable.disablePointerResizeMode({focus:e}),this.updateSignLanguageResizeOptionState(),!1):(this.signLanguageDraggable.enablePointerResizeMode({focus:e}),this.updateSignLanguageResizeOptionState(),!0):!1}getSignLanguageLabel(e){return{en:"English",de:"Deutsch",es:"Español",fr:"Français",it:"Italiano",ja:"日本語",pt:"Português",ar:"العربية",hi:"हिन्दी"}[e]||e.toUpperCase()}switchSignLanguage(e){return this.signLanguageManager.switchLanguage(e)}_legacySwitchSignLanguage(e){if(!this.signLanguageSources[e]||!this.signLanguageVideo)return;let t=this.signLanguageVideo.currentTime,i=!this.signLanguageVideo.paused;this.signLanguageVideo.src=this.signLanguageSources[e],this.currentSignLanguage=e,this.signLanguageVideo.currentTime=t,i&&this.signLanguageVideo.play().catch(()=>{}),this.emit("signlanguagelanguagechanged",e)}showSignLanguageSettingsMenu(){return this.signLanguageManager.showSettingsMenu()}_legacyShowSignLanguageSettingsMenu(){if(this.signLanguageSettingsMenuJustOpened=!0,setTimeout(()=>{this.signLanguageSettingsMenuJustOpened=!1},350),this.signLanguageDocumentClickHandlerAdded||(this.signLanguageDocumentClickHandler=r=>{this.signLanguageSettingsMenuJustOpened||this.signLanguageSettingsButton&&(this.signLanguageSettingsButton===r.target||this.signLanguageSettingsButton.contains(r.target))||this.signLanguageSettingsMenu&&this.signLanguageSettingsMenu.contains(r.target)||this.signLanguageSettingsMenuVisible&&this.hideSignLanguageSettingsMenu()},setTimeout(()=>{document.addEventListener("mousedown",this.signLanguageDocumentClickHandler,!0),this.signLanguageDocumentClickHandlerAdded=!0},300)),this.signLanguageSettingsMenu){this.signLanguageSettingsMenu.style.display="block",this.signLanguageSettingsMenuVisible=!0,this.signLanguageSettingsButton&&this.signLanguageSettingsButton.setAttribute("aria-expanded","true"),this.signLanguageSettingsMenuKeyHandler=W(this.signLanguageSettingsMenu,this.signLanguageSettingsButton,".".concat(this.options.classPrefix,"-sign-language-settings-item"),()=>this.hideSignLanguageSettingsMenu({focusButton:!0})),this.positionSignLanguageSettingsMenu(),this.updateSignLanguageDragOptionState(),this.updateSignLanguageResizeOptionState(),Q(this.signLanguageSettingsMenu,".".concat(this.options.classPrefix,"-sign-language-settings-item"));return}this.signLanguageSettingsMenu=u.createElement("div",{className:"".concat(this.options.classPrefix,"-sign-language-settings-menu"),attributes:{role:"menu"}});let e=z({classPrefix:this.options.classPrefix,itemClass:"".concat(this.options.classPrefix,"-sign-language-settings-item"),icon:"move",label:"player.enableSignDragMode",hasTextClass:!0,onClick:()=>{this.toggleSignLanguageKeyboardDragMode(),this.hideSignLanguageSettingsMenu()}});e.setAttribute("role","switch"),e.setAttribute("aria-checked","false");let t=e.querySelector(".".concat(this.options.classPrefix,"-tooltip"));t&&t.remove();let i=e.querySelector(".".concat(this.options.classPrefix,"-button-text"));i&&i.remove(),this.signLanguageDragOptionButton=e,this.signLanguageDragOptionText=e.querySelector(".".concat(this.options.classPrefix,"-settings-text")),this.updateSignLanguageDragOptionState();let s=z({classPrefix:this.options.classPrefix,itemClass:"".concat(this.options.classPrefix,"-sign-language-settings-item"),icon:"resize",label:"player.enableSignResizeMode",hasTextClass:!0,onClick:r=>{r.preventDefault(),r.stopPropagation(),this.toggleSignLanguageResizeMode({focus:!1})?(this.hideSignLanguageSettingsMenu({focusButton:!1}),setTimeout(()=>{this.signLanguageWrapper&&this.signLanguageWrapper.focus({preventScroll:!0})},20)):this.hideSignLanguageSettingsMenu({focusButton:!0})}});s.setAttribute("role","switch"),s.setAttribute("aria-checked","false");let a=s.querySelector(".".concat(this.options.classPrefix,"-tooltip"));a&&a.remove();let n=s.querySelector(".".concat(this.options.classPrefix,"-button-text"));n&&n.remove(),this.signLanguageResizeOptionButton=s,this.signLanguageResizeOptionText=s.querySelector(".".concat(this.options.classPrefix,"-settings-text")),this.updateSignLanguageResizeOptionState();let l=z({classPrefix:this.options.classPrefix,itemClass:"".concat(this.options.classPrefix,"-sign-language-settings-item"),icon:"close",label:"transcript.closeMenu",onClick:()=>{this.hideSignLanguageSettingsMenu()}}),o=l.querySelector(".".concat(this.options.classPrefix,"-tooltip"));o&&o.remove();let c=l.querySelector(".".concat(this.options.classPrefix,"-button-text"));c&&c.remove(),this.signLanguageSettingsMenu.appendChild(e),this.signLanguageSettingsMenu.appendChild(s),this.signLanguageSettingsMenu.appendChild(l),this.signLanguageSettingsMenu.style.visibility="hidden",this.signLanguageSettingsMenu.style.display="block",this.signLanguageSettingsButton&&this.signLanguageSettingsButton.parentNode?this.signLanguageSettingsButton.insertAdjacentElement("afterend",this.signLanguageSettingsMenu):this.signLanguageWrapper&&this.signLanguageWrapper.appendChild(this.signLanguageSettingsMenu),this.positionSignLanguageSettingsMenuImmediate(),requestAnimationFrame(()=>{this.signLanguageSettingsMenu&&(this.signLanguageSettingsMenu.style.visibility="visible")}),this.signLanguageSettingsMenuKeyHandler=W(this.signLanguageSettingsMenu,this.signLanguageSettingsButton,".".concat(this.options.classPrefix,"-sign-language-settings-item"),()=>this.hideSignLanguageSettingsMenu({focusButton:!0})),this.signLanguageSettingsMenuVisible=!0,this.signLanguageSettingsButton&&this.signLanguageSettingsButton.setAttribute("aria-expanded","true"),this.updateSignLanguageDragOptionState(),this.updateSignLanguageResizeOptionState(),Q(this.signLanguageSettingsMenu,".".concat(this.options.classPrefix,"-sign-language-settings-item"))}hideSignLanguageSettingsMenu({focusButton:e=!0}={}){return this.signLanguageManager.hideSettingsMenu({focusButton:e})}positionSignLanguageSettingsMenuImmediate(){if(!this.signLanguageSettingsMenu||!this.signLanguageSettingsButton)return;let e=this.signLanguageSettingsButton.getBoundingClientRect(),t=this.signLanguageSettingsMenu.getBoundingClientRect(),i=window.innerWidth,s=window.innerHeight,a=this.signLanguageSettingsButton.parentElement;if(!a)return;let n=a.getBoundingClientRect(),l=e.left+e.width/2-n.left,o=e.bottom-n.top,c=e.top-n.top,r=e.top,d=s-e.bottom,h=o+8,p=null;d<t.height+20&&r>d?(h=null,p=n.bottom-n.top-c+8,this.signLanguageSettingsMenu.classList.add("vidply-menu-above")):this.signLanguageSettingsMenu.classList.remove("vidply-menu-above");let y=l-t.width/2,b="auto",w="translateX(0)",f=e.left+e.width/2-t.width/2;f<10?(y=0,w="translateX(0)"):f+t.width>i-10?(y="auto",b=0,w="translateX(0)"):(y=l,w="translateX(-50%)"),h!==null?(this.signLanguageSettingsMenu.style.top="".concat(h,"px"),this.signLanguageSettingsMenu.style.bottom="auto"):p!==null&&(this.signLanguageSettingsMenu.style.top="auto",this.signLanguageSettingsMenu.style.bottom="".concat(p,"px")),y!=="auto"?(this.signLanguageSettingsMenu.style.left="".concat(y,"px"),this.signLanguageSettingsMenu.style.right="auto"):(this.signLanguageSettingsMenu.style.left="auto",this.signLanguageSettingsMenu.style.right="".concat(b,"px")),this.signLanguageSettingsMenu.style.transform=w}positionSignLanguageSettingsMenu(){!this.signLanguageSettingsMenu||!this.signLanguageSettingsButton||!this.signLanguageWrapper||requestAnimationFrame(()=>{setTimeout(()=>{this.positionSignLanguageSettingsMenuImmediate()},10)})}attachSignLanguageSettingsMenuKeyboardNavigation(){this.signLanguageSettingsMenu&&(this.signLanguageSettingsMenuKeyHandler&&this.signLanguageSettingsMenu.removeEventListener("keydown",this.signLanguageSettingsMenuKeyHandler),this.signLanguageSettingsMenuKeyHandler=W(this.signLanguageSettingsMenu,this.signLanguageSettingsButton,".".concat(this.options.classPrefix,"-sign-language-settings-item"),()=>this.hideSignLanguageSettingsMenu({focusButton:!0})))}updateSignLanguageDragOptionState(){if(!this.signLanguageDragOptionButton)return;let e=!!(this.signLanguageDraggable&&this.signLanguageDraggable.keyboardDragMode),t=e?m.t("player.disableSignDragMode"):m.t("player.enableSignDragMode"),i=e?m.t("player.disableSignDragModeAria"):m.t("player.enableSignDragModeAria");this.signLanguageDragOptionButton.setAttribute("aria-checked",e?"true":"false"),this.signLanguageDragOptionButton.setAttribute("aria-label",i),this.signLanguageDragOptionText&&(this.signLanguageDragOptionText.textContent=t)}updateSignLanguageResizeOptionState(){if(!this.signLanguageResizeOptionButton)return;let e=!!(this.signLanguageDraggable&&this.signLanguageDraggable.pointerResizeMode),t=e?m.t("player.disableSignResizeMode"):m.t("player.enableSignResizeMode"),i=e?m.t("player.disableSignResizeModeAria"):m.t("player.enableSignResizeModeAria");this.signLanguageResizeOptionButton.setAttribute("aria-checked",e?"true":"false"),this.signLanguageResizeOptionButton.setAttribute("aria-label",i),this.signLanguageResizeOptionText&&(this.signLanguageResizeOptionText.textContent=t)}constrainSignLanguagePosition(){return this.signLanguageManager.constrainPosition()}saveSignLanguagePreferences(){return this.signLanguageManager.savePreferences()}_legacyConstrainSignLanguagePosition(){if(!this.signLanguageWrapper||!this.videoWrapper||this.signLanguageDraggable&&this.signLanguageDraggable.manuallyPositioned)return;(!this.signLanguageWrapper.style.width||this.signLanguageWrapper.style.width==="")&&(this.signLanguageWrapper.style.width="280px");let e=this.videoWrapper.getBoundingClientRect(),t=this.container.getBoundingClientRect(),i=this.signLanguageWrapper.getBoundingClientRect(),s=e.left-t.left,a=e.top-t.top,n=e.width,l=e.height,o=i.width||280,c=i.height||280*9/16,r,d,h=16,p=95;switch(this.signLanguageDesiredPosition||"bottom-right"){case"bottom-right":r=s+n-o-h,d=a+l-c-p;break;case"bottom-left":r=s+h,d=a+l-c-p;break;case"top-right":r=s+n-o-h,d=a+h;break;case"top-left":r=s+h,d=a+h;break;default:r=s+n-o-h,d=a+l-c-p}r=Math.max(s,Math.min(r,s+n-o)),d=Math.max(a,Math.min(d,a+l-c-p)),this.signLanguageWrapper.style.left="".concat(r,"px"),this.signLanguageWrapper.style.top="".concat(d,"px"),this.signLanguageWrapper.style.right="auto",this.signLanguageWrapper.style.bottom="auto",this.signLanguageWrapper.classList.remove(...Array.from(this.signLanguageWrapper.classList).filter(b=>b.startsWith("vidply-sign-position-")))}_legacySaveSignLanguagePreferences(){this.signLanguageWrapper&&this.storage.saveSignLanguagePreferences({size:{width:this.signLanguageWrapper.style.width}})}cleanupSignLanguage(){return this.signLanguageManager.cleanup()}showSettings(){console.warn("[VidPly] Settings dialog has been removed. Use individual control buttons (speed, captions, etc.)")}hideSettings(){}getCurrentTime(){return this.state.currentTime}getDuration(){return this.state.duration}isPlaying(){return this.state.playing}isPaused(){return this.state.paused}isEnded(){return this.state.ended}isMuted(){return this.state.muted}isFullscreen(){return this.state.fullscreen}handleError(e){if(this._switchingRenderer){this.log("Suppressing error during renderer switch:",e,"debug");return}this.log("Error:",e,"error"),this.emit("error",e),this.options.onError&&this.options.onError.call(this,e)}log(...e){if(!this.options.debug)return;let t="log";if(e.length>0){let i=e[e.length-1];typeof i=="string"&&console[i]&&(t=i,e=e.slice(0,-1))}e.length===0&&(e=[""]),typeof console[t]=="function"?console[t]("[VidPly]",...e):console.log("[VidPly]",...e)}setupResponsiveHandlers(){if(typeof ResizeObserver!="undefined"?(this.resizeObserver=new ResizeObserver(e=>{for(let t of e){let i=t.contentRect.width;this.controlBar&&typeof this.controlBar.updateControlsForViewport=="function"&&this.controlBar.updateControlsForViewport(i),this.transcriptManager&&this.transcriptManager.isVisible&&this.transcriptManager.positionTranscript()}}),this.resizeObserver.observe(this.container)):(this.resizeHandler=()=>{let e=this.container.clientWidth;this.controlBar&&typeof this.controlBar.updateControlsForViewport=="function"&&this.controlBar.updateControlsForViewport(e),this.transcriptManager&&this.transcriptManager.isVisible&&(!this.transcriptManager.draggableResizable||!this.transcriptManager.draggableResizable.manuallyPositioned)&&this.transcriptManager.positionTranscript()},window.addEventListener("resize",this.resizeHandler)),window.matchMedia){this.orientationHandler=t=>{setTimeout(()=>{this.transcriptManager&&this.transcriptManager.isVisible&&(!this.transcriptManager.draggableResizable||!this.transcriptManager.draggableResizable.manuallyPositioned)&&this.transcriptManager.positionTranscript()},100)};let e=window.matchMedia("(orientation: portrait)");e.addEventListener?e.addEventListener("change",this.orientationHandler):e.addListener&&e.addListener(this.orientationHandler),this.orientationQuery=e}this.fullscreenChangeHandler=()=>{let e=!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement);this.state.fullscreen!==e&&(this.state.fullscreen=e,e?this.container.classList.add("".concat(this.options.classPrefix,"-fullscreen")):(this.container.classList.remove("".concat(this.options.classPrefix,"-fullscreen")),this._disablePseudoFullscreen()),this.emit("fullscreenchange",e),this.controlBar&&this.controlBar.updateFullscreenButton(),this.signLanguageWrapper&&this.signLanguageWrapper.style.display!=="none"&&(window.innerWidth<768&&this.setupSignLanguageInteraction(),this.setManagedTimeout(()=>{requestAnimationFrame(()=>{this.storage.saveSignLanguagePreferences({size:null}),this.signLanguageDesiredPosition="bottom-right",this.signLanguageWrapper.style.width=e?"400px":"280px",this.constrainSignLanguagePosition()})},500)))},document.addEventListener("fullscreenchange",this.fullscreenChangeHandler),document.addEventListener("webkitfullscreenchange",this.fullscreenChangeHandler),document.addEventListener("mozfullscreenchange",this.fullscreenChangeHandler),document.addEventListener("MSFullscreenChange",this.fullscreenChangeHandler)}destroy(){if(this.log("Destroying player"),this.renderer&&this.renderer.destroy(),this.controlBar&&this.controlBar.destroy(),this.captionManager&&this.captionManager.destroy(),this.keyboardManager&&this.keyboardManager.destroy(),this.transcriptManager&&this.transcriptManager.destroy(),this.cleanupSignLanguage(),this.playButtonOverlay&&this.playButtonOverlay.parentNode&&(this.playButtonOverlay.remove(),this.playButtonOverlay=null),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),this.resizeHandler&&(window.removeEventListener("resize",this.resizeHandler),this.resizeHandler=null),this.orientationQuery&&this.orientationHandler&&(this.orientationQuery.removeEventListener?this.orientationQuery.removeEventListener("change",this.orientationHandler):this.orientationQuery.removeListener&&this.orientationQuery.removeListener(this.orientationHandler),this.orientationQuery=null,this.orientationHandler=null),this.fullscreenChangeHandler&&(document.removeEventListener("fullscreenchange",this.fullscreenChangeHandler),document.removeEventListener("webkitfullscreenchange",this.fullscreenChangeHandler),document.removeEventListener("mozfullscreenchange",this.fullscreenChangeHandler),document.removeEventListener("MSFullscreenChange",this.fullscreenChangeHandler),this.fullscreenChangeHandler=null),this.timeouts.forEach(e=>clearTimeout(e)),this.timeouts.clear(),this.metadataCueChangeHandler){let t=this.textTracks.find(i=>i.kind==="metadata");t&&t.removeEventListener("cuechange",this.metadataCueChangeHandler),this.metadataCueChangeHandler=null}this.metadataAlertHandlers&&this.metadataAlertHandlers.size>0&&(this.metadataAlertHandlers.forEach(({button:e,handler:t})=>{e&&t&&e.removeEventListener("click",t)}),this.metadataAlertHandlers.clear()),this.container&&this.container.parentNode&&(this.container.parentNode.insertBefore(this.element,this.container),this.container.parentNode.removeChild(this.container)),this.removeAllListeners()}setupMetadataHandling(){let e=()=>{let i=this.textTracks.find(s=>s.kind==="metadata");if(i){if(i.mode==="disabled"&&(i.mode="hidden"),this.metadataCueChangeHandler&&i.removeEventListener("cuechange",this.metadataCueChangeHandler),this.metadataCueChangeHandler=()=>{let s=Array.from(i.activeCues||[]);s.length>0&&this.options.debug&&this.log("[Metadata] Active cues:",s.map(a=>({start:a.startTime,end:a.endTime,text:a.text}))),s.forEach(a=>{this.handleMetadataCue(a)})},i.addEventListener("cuechange",this.metadataCueChangeHandler),this.options.debug){let s=i.cues?i.cues.length:0;this.log("[Metadata] Track enabled,",s,"cues available")}}else this.options.debug&&this.log("[Metadata] No metadata track found")};e(),this.on("loadedmetadata",e)}normalizeMetadataSelector(e){if(!e)return null;let t=e.trim();return t?t.startsWith("#")||t.startsWith(".")||t.startsWith("[")?t:"#".concat(t):null}resolveMetadataConfig(e,t){if(!e||!t)return null;if(Object.prototype.hasOwnProperty.call(e,t))return e[t];let i=t.replace(/^#/,"");return Object.prototype.hasOwnProperty.call(e,i)?e[i]:null}cacheMetadataAlertContent(e,t={}){if(!e)return;let i=t.titleSelector||"[data-vidply-alert-title], h3, header",s=t.messageSelector||"[data-vidply-alert-message], p",a=e.querySelector(i);a&&!a.dataset.vidplyAlertTitleOriginal&&(a.dataset.vidplyAlertTitleOriginal=a.textContent.trim());let n=e.querySelector(s);n&&!n.dataset.vidplyAlertMessageOriginal&&(n.dataset.vidplyAlertMessageOriginal=n.textContent.trim())}restoreMetadataAlertContent(e,t={}){if(!e)return;let i=t.titleSelector||"[data-vidply-alert-title], h3, header",s=t.messageSelector||"[data-vidply-alert-message], p",a=e.querySelector(i);a&&a.dataset.vidplyAlertTitleOriginal&&(a.textContent=a.dataset.vidplyAlertTitleOriginal);let n=e.querySelector(s);n&&n.dataset.vidplyAlertMessageOriginal&&(n.textContent=n.dataset.vidplyAlertMessageOriginal)}focusMetadataTarget(e,t=null){var i,s;if(!(!e||e==="none")){if(e==="alert"&&t){t.focus({preventScroll:!0});return}if(e==="player"){this.container&&this.container.focus({preventScroll:!0});return}if(e==="media"){this.element.focus({preventScroll:!0});return}if(e==="playButton"){let a=(s=(i=this.controlBar)==null?void 0:i.controls)==null?void 0:s.playPause;a&&a.focus({preventScroll:!0});return}if(typeof e=="string"){let a=document.querySelector(e);a&&(a.tabIndex===-1&&!a.hasAttribute("tabindex")&&a.setAttribute("tabindex","-1"),a.focus({preventScroll:!0}))}}}handleMetadataAlert(e,t={}){var c;if(!e)return;let i=this.resolveMetadataConfig(this.options.metadataAlerts,e)||{},s=t.element||document.querySelector(e);if(!s){this.options.debug&&this.log("[Metadata] Alert element not found:",e);return}this.options.debug&&this.log("[Metadata] Handling alert",e,{reason:t.reason,config:i}),this.cacheMetadataAlertContent(s,i),s.dataset.vidplyAlertOriginalDisplay||(s.dataset.vidplyAlertOriginalDisplay=s.style.display||""),s.dataset.vidplyAlertDisplay||(s.dataset.vidplyAlertDisplay=i.display||"block");let a=t.show!==void 0?t.show:i.show!==!1;if(a){let r=i.display||s.dataset.vidplyAlertDisplay||"block";s.style.display=r,s.hidden=!1,s.removeAttribute("hidden"),s.setAttribute("aria-hidden","false"),s.setAttribute("data-vidply-alert-active","true")}i.resetContent!==!1&&t.reason==="focus"&&this.restoreMetadataAlertContent(s,i);let l=t.focus!==void 0?t.focus:(c=i.focusOnShow)!=null?c:t.reason!=="focus";a&&l&&(s.tabIndex===-1&&!s.hasAttribute("tabindex")&&s.setAttribute("tabindex","-1"),s.focus({preventScroll:!0})),a&&i.autoScroll!==!1&&t.autoScroll!==!1&&s.scrollIntoView({behavior:"smooth",block:"nearest"});let o=i.continueButton;if(o){let r=null;if(o==="self"||s.matches(o)?r=s:r=s.querySelector(o)||document.querySelector(o),r&&!this.metadataAlertHandlers.has(e)){let d=()=>{var y;if(i.hideOnContinue!==!1){let b=s.dataset.vidplyAlertOriginalDisplay||"";s.style.display=i.hideDisplay||b||"none",s.setAttribute("aria-hidden","true"),s.removeAttribute("data-vidply-alert-active")}i.resume!==!1&&this.state.paused&&this.play();let p=i.focusTarget||"playButton";this.setManagedTimeout(()=>{this.focusMetadataTarget(p,s)},(y=i.focusDelay)!=null?y:100)};r.addEventListener("click",d),this.metadataAlertHandlers.set(e,{button:r,handler:d})}}return s}handleMetadataHashtags(e){if(!Array.isArray(e)||e.length===0)return;let t=this.options.metadataHashtags;t&&e.forEach(i=>{let s=this.resolveMetadataConfig(t,i);if(!s)return;let a=this.normalizeMetadataSelector(s.alert||s.selector||s.target);if(!a)return;let n=document.querySelector(a);if(!n){this.options.debug&&this.log("[Metadata] Hashtag target not found:",a);return}if(this.options.debug&&this.log("[Metadata] Handling hashtag",i,{selector:a,config:s}),this.cacheMetadataAlertContent(n,s),s.title){let c=s.titleSelector||"[data-vidply-alert-title], h3, header",r=n.querySelector(c);r&&(r.textContent=s.title)}if(s.message){let c=s.messageSelector||"[data-vidply-alert-message], p",r=n.querySelector(c);r&&(r.textContent=s.message)}let l=s.show!==!1,o=s.focus!==void 0?s.focus:!1;this.handleMetadataAlert(a,{element:n,show:l,focus:o,autoScroll:s.autoScroll,reason:"hashtag"})})}handleMetadataCue(e){let t=e.text.trim();this.options.debug&&this.log("[Metadata] Processing cue:",{time:e.startTime,text:t}),this.emit("metadata",{time:e.startTime,endTime:e.endTime,text:t,cue:e}),t.includes("PAUSE")&&(this.state.paused||(this.options.debug&&this.log("[Metadata] Pausing video at",e.startTime),this.pause()),this.emit("metadata:pause",{time:e.startTime,text:t}));let i=t.match(/FOCUS:([\w#-]+)/);if(i){let a=i[1],n=this.normalizeMetadataSelector(a),l=n?document.querySelector(n):null;l?(this.options.debug&&this.log("[Metadata] Focusing element:",n),l.tabIndex===-1&&!l.hasAttribute("tabindex")&&l.setAttribute("tabindex","-1"),this.setManagedTimeout(()=>{l.focus({preventScroll:!0})},10)):this.options.debug&&this.log("[Metadata] Element not found:",n||a),this.emit("metadata:focus",{time:e.startTime,target:a,selector:n,element:l,text:t}),n&&this.handleMetadataAlert(n,{element:l,reason:"focus"})}let s=t.match(/#[\w-]+/g);s&&(this.options.debug&&this.log("[Metadata] Hashtags found:",s),this.emit("metadata:hashtags",{time:e.startTime,hashtags:s,text:t}),this.handleMetadataHashtags(s))}};G.instances=[];V();_();H();se();var pt=0,ke=class{constructor(e,t={}){this.player=e,this.tracks=[],this.initialTracks=Array.isArray(t.tracks)?t.tracks:[],this.currentIndex=-1,this.instanceId=++pt,this.uniqueId="vidply-playlist-".concat(this.instanceId),this.options=O({autoAdvance:t.autoAdvance!==!1,autoPlayFirst:t.autoPlayFirst!==!1,loop:t.loop||!1,showPanel:t.showPanel!==!1,recreatePlayers:t.recreatePlayers||!1},t),this.container=null,this.playlistPanel=null,this.trackInfoElement=null,this.navigationFeedback=null,this.isPanelVisible=this.options.showPanel!==!1,this.isChangingTrack=!1,this.hostElement=t.hostElement||null,this.PlayerClass=t.PlayerClass||null,this.handleTrackEnd=this.handleTrackEnd.bind(this),this.handleTrackError=this.handleTrackError.bind(this),this.player.playlistManager=this,this.init(),this.updatePlayerControls(),this.initialTracks.length>0&&this.loadPlaylist(this.initialTracks)}getTrackMediaType(e){let t=e.src||"";return t.includes("youtube.com")||t.includes("youtu.be")?"youtube":t.includes("vimeo.com")?"vimeo":t.includes("soundcloud.com")||t.includes("api.soundcloud.com")?"soundcloud":t.includes(".m3u8")?"hls":e.type&&e.type.startsWith("audio/")?"audio":"video"}async recreatePlayerForTrack(e,t=!1){if(!this.hostElement||!this.PlayerClass)return console.warn("VidPly Playlist: Cannot recreate player - missing hostElement or PlayerClass"),!1;let i=this.getTrackMediaType(e),s=i==="audio"?"audio":"video",a=this.isPanelVisible,n=[...this.tracks],l=this.currentIndex;this.trackArtworkElement&&this.trackArtworkElement.parentNode&&this.trackArtworkElement.parentNode.removeChild(this.trackArtworkElement),this.trackInfoElement&&this.trackInfoElement.parentNode&&this.trackInfoElement.parentNode.removeChild(this.trackInfoElement),this.navigationFeedback&&this.navigationFeedback.parentNode&&this.navigationFeedback.parentNode.removeChild(this.navigationFeedback),this.playlistPanel&&this.playlistPanel.parentNode&&this.playlistPanel.parentNode.removeChild(this.playlistPanel),this.player&&(this.player.off("ended",this.handleTrackEnd),this.player.off("error",this.handleTrackError),this.player.destroy()),this.hostElement.innerHTML="";let o=document.createElement(s);o.setAttribute("preload","metadata"),s==="video"&&e.poster&&(i==="video"||i==="hls")&&o.setAttribute("poster",e.poster);let c=["youtube","vimeo","soundcloud","hls"].includes(i);if(!c){let d=document.createElement("source");d.src=e.src,e.type&&(d.type=e.type),o.appendChild(d),e.tracks&&e.tracks.length>0&&e.tracks.forEach(h=>{let p=document.createElement("track");p.src=h.src,p.kind=h.kind||"captions",p.srclang=h.srclang||"en",p.label=h.label||h.srclang,h.default&&(p.default=!0),o.appendChild(p)})}this.hostElement.appendChild(o);let r={mediaType:s,poster:e.poster,audioDescriptionSrc:e.audioDescriptionSrc||null,audioDescriptionDuration:e.audioDescriptionDuration||null,signLanguageSrc:e.signLanguageSrc||null};if(this.player=new this.PlayerClass(o,r),this.player.playlistManager=this,await new Promise(d=>{this.player.on("ready",d)}),this.player.on("ended",this.handleTrackEnd),this.player.on("error",this.handleTrackError),this.player.container){if(this.trackArtworkElement){let d=this.player.container.querySelector(".vidply-video-wrapper");d?this.player.container.insertBefore(this.trackArtworkElement,d):this.player.container.appendChild(this.trackArtworkElement)}this.trackInfoElement&&this.player.container.appendChild(this.trackInfoElement),this.navigationFeedback&&this.player.container.appendChild(this.navigationFeedback),this.playlistPanel&&this.player.container.appendChild(this.playlistPanel)}return this.container=this.player.container,this.updatePlayerControls(),this.tracks=n,this.currentIndex=l,this.updatePlaylistUI(),this.isPanelVisible=a,this.playlistPanel&&(this.playlistPanel.style.display=a?"":"none"),c?this.player.load({src:e.src,type:e.type,poster:e.poster,tracks:e.tracks||[],audioDescriptionSrc:e.audioDescriptionSrc||null,signLanguageSrc:e.signLanguageSrc||null}):this.player.load({src:e.src,type:e.type,poster:e.poster,tracks:e.tracks||[],audioDescriptionSrc:e.audioDescriptionSrc||null,signLanguageSrc:e.signLanguageSrc||null}),t&&setTimeout(()=>{this.player.play()},100),!0}init(){this.player.on("ended",this.handleTrackEnd),this.player.on("error",this.handleTrackError),this.player.on("play",this.handlePlaybackStateChange.bind(this)),this.player.on("pause",this.handlePlaybackStateChange.bind(this)),this.player.on("ended",this.handlePlaybackStateChange.bind(this)),this.player.on("fullscreenchange",this.handleFullscreenChange.bind(this)),this.player.on("audiodescriptionenabled",this.handleAudioDescriptionChange.bind(this)),this.player.on("audiodescriptiondisabled",this.handleAudioDescriptionChange.bind(this)),this.options.showPanel&&this.createUI(),this.tracks.length===0&&this.initialTracks.length===0&&this.loadPlaylistFromAttribute()}loadPlaylistFromAttribute(){if(!this.player.element||!this.player.element.parentElement){console.log("VidPly Playlist: No player element found");return}let t=this.player.element.parentElement.parentElement,i=t?t.parentElement:null;if(!i){console.log("VidPly Playlist: No original element found");return}this.loadOptionsFromAttributes(i);let s=i.getAttribute("data-playlist");if(!s){console.log("VidPly Playlist: No data-playlist attribute found");return}console.log("VidPly Playlist: Found data-playlist attribute, parsing...");try{let a=JSON.parse(s);Array.isArray(a)&&a.length>0?(console.log("VidPly Playlist: Loaded ".concat(a.length," tracks from data-playlist")),this.loadPlaylist(a)):console.warn("VidPly Playlist: data-playlist is not a valid array or is empty")}catch(a){console.error("VidPly Playlist: Failed to parse data-playlist attribute",a)}}loadOptionsFromAttributes(e){let t=e.getAttribute("data-playlist-auto-advance");t!==null&&(this.options.autoAdvance=t==="true");let i=e.getAttribute("data-playlist-auto-play-first");i!==null&&(this.options.autoPlayFirst=i==="true");let s=e.getAttribute("data-playlist-loop");s!==null&&(this.options.loop=s==="true");let a=e.getAttribute("data-playlist-show-panel");a!==null&&(this.options.showPanel=a==="true"),console.log("VidPly Playlist: Options from attributes:",this.options)}updatePlayerControls(){if(!this.player.controlBar)return;let e=this.player.controlBar;e.element.innerHTML="",e.createControls(),e.attachEvents(),e.setupAutoHide()}loadPlaylist(e){this.tracks=e,this.currentIndex=-1,this.container&&this.container.classList.add("vidply-has-playlist"),this.playlistPanel&&this.renderPlaylist(),e.length>0&&(this.options.autoPlayFirst?this.play(0):this.loadTrack(0)),this.updatePlaylistVisibilityInFullscreen()}async loadTrack(e){if(e<0||e>=this.tracks.length){console.warn("VidPly Playlist: Invalid track index",e);return}let t=this.tracks[e];if(this.isChangingTrack=!0,this.currentIndex=e,this.options.recreatePlayers&&this.hostElement&&this.PlayerClass){let i=this.player?this.player.element.tagName==="AUDIO"?"audio":"video":null,s=this.getTrackMediaType(t);if(i!==(s==="audio"||s==="soundcloud"?"audio":"video")){await this.recreatePlayerForTrack(t,!1),this.updateTrackInfo(t),this.updatePlaylistUI(),this.player.emit("playlisttrackchange",{index:e,item:t,total:this.tracks.length}),setTimeout(()=>{this.isChangingTrack=!1},150);return}}this.player.load({src:t.src,type:t.type,poster:t.poster,tracks:t.tracks||[],audioDescriptionSrc:t.audioDescriptionSrc||null,signLanguageSrc:t.signLanguageSrc||null}),this.updateTrackInfo(t),this.updatePlaylistUI(),this.player.emit("playlisttrackchange",{index:e,item:t,total:this.tracks.length}),setTimeout(()=>{this.isChangingTrack=!1},150)}async play(e,t=!1){if(e<0||e>=this.tracks.length){console.warn("VidPly Playlist: Invalid track index",e);return}let i=this.tracks[e];if(this.isChangingTrack=!0,this.currentIndex=e,this.options.recreatePlayers&&this.hostElement&&this.PlayerClass){let s=this.player?this.player.element.tagName==="AUDIO"?"audio":"video":null,a=this.getTrackMediaType(i);if(s!==(a==="audio"||a==="soundcloud"?"audio":"video")){await this.recreatePlayerForTrack(i,!0),this.updateTrackInfo(i),this.updatePlaylistUI(),this.player.emit("playlisttrackchange",{index:e,item:i,total:this.tracks.length}),setTimeout(()=>{this.isChangingTrack=!1},150);return}}this.player.load({src:i.src,type:i.type,poster:i.poster,tracks:i.tracks||[],audioDescriptionSrc:i.audioDescriptionSrc||null,signLanguageSrc:i.signLanguageSrc||null}),this.updateTrackInfo(i),this.updatePlaylistUI(),this.player.emit("playlisttrackchange",{index:e,item:i,total:this.tracks.length}),setTimeout(()=>{this.player.play(),setTimeout(()=>{this.isChangingTrack=!1},50)},100)}next(){let e=this.currentIndex+1;if(e>=this.tracks.length)if(this.options.loop)e=0;else return;this.play(e)}previous(){let e=this.currentIndex-1;if(e<0)if(this.options.loop)e=this.tracks.length-1;else return;this.play(e)}handleTrackEnd(){this.isChangingTrack||this.options.autoAdvance&&this.next()}isExternalRendererUrl(e){return e?e.includes("youtube.com")||e.includes("youtu.be")||e.includes("vimeo.com")||e.includes("soundcloud.com")||e.includes("api.soundcloud.com")||e.includes(".m3u8"):!1}handleTrackError(e){let t=this.getCurrentTrack();t&&t.src&&this.isExternalRendererUrl(t.src)||this.isChangingTrack||(console.error("VidPly Playlist: Track error",e),this.options.autoAdvance&&setTimeout(()=>{this.next()},1e3))}handlePlaybackStateChange(){this.updatePlaylistVisibilityInFullscreen()}handleFullscreenChange(){setTimeout(()=>{this.updatePlaylistVisibilityInFullscreen()},50)}handleAudioDescriptionChange(){let e=this.getCurrentTrack();e&&(this.updateTrackInfo(e),this.updatePlaylistUI(),this.updatePlaylistDurations())}updatePlaylistDurations(){if(!this.playlistPanel)return;this.playlistPanel.querySelectorAll(".vidply-playlist-item").forEach((t,i)=>{let s=this.tracks[i];if(!s)return;let a=this.getEffectiveDuration(s),n=a?C.formatTime(a):"",l=t.querySelector(".vidply-playlist-duration-badge");l&&(l.textContent=n);let o=t.querySelector(".vidply-playlist-item-duration");o&&(o.textContent=n)})}getEffectiveDuration(e){return e?this.player.state.audioDescriptionEnabled&&e.audioDescriptionDuration?e.audioDescriptionDuration:e.duration||null:null}updatePlaylistVisibilityInFullscreen(){if(!this.playlistPanel||!this.tracks.length)return;let e=this.player.state.fullscreen,t=this.player.state.playing;e?t?(this.playlistPanel.classList.remove("vidply-playlist-fullscreen-visible"),setTimeout(()=>{this.player.state.playing&&this.player.state.fullscreen&&(this.playlistPanel.style.display="none")},300)):(this.playlistPanel.classList.add("vidply-playlist-fullscreen-visible"),this.playlistPanel.style.display="block"):(this.playlistPanel.classList.remove("vidply-playlist-fullscreen-visible"),this.isPanelVisible&&this.tracks.length>0?this.playlistPanel.style.display="block":this.playlistPanel.style.display="none")}createUI(){if(this.container=this.player.container,!this.container){console.warn("VidPly Playlist: No container found");return}if(this.player.element.tagName==="AUDIO"){this.trackArtworkElement=u.createElement("div",{className:"vidply-track-artwork",attributes:{"aria-hidden":"true"}}),this.trackArtworkElement.style.display="none";let e=this.container.querySelector(".vidply-video-wrapper");e?this.container.insertBefore(this.trackArtworkElement,e):this.container.appendChild(this.trackArtworkElement)}this.trackInfoElement=u.createElement("div",{className:"vidply-track-info",attributes:{role:"status"}}),this.trackInfoElement.style.display="none",this.container.appendChild(this.trackInfoElement),this.navigationFeedback=u.createElement("div",{className:"vidply-sr-only",attributes:{role:"status","aria-live":"polite","aria-atomic":"true"}}),this.container.appendChild(this.navigationFeedback),this.playlistPanel=u.createElement("div",{className:"vidply-playlist-panel",attributes:{id:"".concat(this.uniqueId,"-panel"),role:"region","aria-label":m.t("playlist.title"),"aria-labelledby":"".concat(this.uniqueId,"-heading")}}),this.playlistPanel.style.display=(this.isPanelVisible,"none"),this.container.appendChild(this.playlistPanel)}updateTrackInfo(e){if(!this.trackInfoElement)return;let t=this.currentIndex+1,i=this.tracks.length,s=e.title||m.t("playlist.untitled"),a=e.artist||"",n=this.getEffectiveDuration(e),l=n?C.formatTime(n):"",o=n?C.formatDuration(n):"",c=a?m.t("playlist.by")+a:"",r=o?". ".concat(o):"",d=m.t("playlist.nowPlaying",{current:t,total:i,title:s,artist:c})+r,h=m.t("playlist.trackOf",{current:t,total:i}),p=l?'<span class="vidply-track-duration" aria-hidden="true">'.concat(u.escapeHTML(l),"</span>"):"",y=e.description||"";this.trackInfoElement.innerHTML='\n <span class="vidply-sr-only">'.concat(u.escapeHTML(d),'</span>\n <div class="vidply-track-header" aria-hidden="true">\n <span class="vidply-track-number">').concat(u.escapeHTML(h),"</span>\n ").concat(p,'\n </div>\n <div class="vidply-track-title" aria-hidden="true">').concat(u.escapeHTML(s),"</div>\n ").concat(a?'<div class="vidply-track-artist" aria-hidden="true">'.concat(u.escapeHTML(a),"</div>"):"","\n ").concat(y?'<div class="vidply-track-description" aria-hidden="true">'.concat(u.escapeHTML(y),"</div>"):"","\n "),this.trackInfoElement.style.display="block",this.updateTrackArtwork(e)}updateTrackArtwork(e){this.trackArtworkElement&&(e.poster?(this.trackArtworkElement.style.backgroundImage="url(".concat(e.poster,")"),this.trackArtworkElement.style.display="block"):this.trackArtworkElement.style.display="none")}renderPlaylist(){if(!this.playlistPanel)return;this.playlistPanel.innerHTML="";let e=u.createElement("h2",{className:"vidply-playlist-header",attributes:{id:"".concat(this.uniqueId,"-heading")}});e.textContent="".concat(m.t("playlist.title")," (").concat(this.tracks.length,")"),this.playlistPanel.appendChild(e);let t=u.createElement("div",{className:"vidply-sr-only",attributes:{id:"".concat(this.uniqueId,"-keyboard-instructions")}});t.textContent=m.t("playlist.keyboardInstructions"),this.playlistPanel.appendChild(t);let i=u.createElement("ul",{className:"vidply-playlist-list",attributes:{role:"listbox","aria-labelledby":"".concat(this.uniqueId,"-heading"),"aria-describedby":"".concat(this.uniqueId,"-keyboard-instructions")}});this.tracks.forEach((s,a)=>{let n=this.createPlaylistItem(s,a);i.appendChild(n)}),this.playlistPanel.appendChild(i),this.isPanelVisible&&(this.playlistPanel.style.display="block")}createPlaylistItem(e,t){let i=m.t("playlist.trackOf",{current:t+1,total:this.tracks.length}),s=e.title||m.t("playlist.trackUntitled",{number:t+1}),a=e.artist?m.t("playlist.by")+e.artist:"",n=this.getEffectiveDuration(e),l=n?C.formatTime(n):"",o=n?C.formatDuration(n):"",c=t===this.currentIndex,r="".concat(s).concat(a);o&&(r+=". ".concat(o));let d=u.createElement("li",{className:c?"vidply-playlist-item vidply-playlist-item-active":"vidply-playlist-item",attributes:{"data-playlist-index":t}}),h=u.createElement("button",{className:"vidply-playlist-item-button",attributes:{type:"button",role:"option",tabIndex:t===0?0:-1,"aria-label":r,"aria-posinset":t+1,"aria-setsize":this.tracks.length,"aria-checked":c?"true":"false"}});c&&(h.setAttribute("aria-current","true"),h.setAttribute("tabIndex","0"));let p=u.createElement("span",{className:"vidply-playlist-thumbnail-container",attributes:{"aria-hidden":"true"}}),y=u.createElement("span",{className:"vidply-playlist-thumbnail"});if(e.poster)y.style.backgroundImage="url(".concat(e.poster,")");else{let v=k("music");v.classList.add("vidply-playlist-thumbnail-icon"),y.appendChild(v)}if(p.appendChild(y),l&&e.poster){let v=u.createElement("span",{className:"vidply-playlist-duration-badge"});v.textContent=l,p.appendChild(v)}h.appendChild(p);let b=u.createElement("span",{className:"vidply-playlist-item-info",attributes:{"aria-hidden":"true"}}),w=u.createElement("span",{className:"vidply-playlist-item-title-row"}),f=u.createElement("span",{className:"vidply-playlist-item-title"});if(f.textContent=s,w.appendChild(f),l&&!e.poster){let v=u.createElement("span",{className:"vidply-playlist-item-duration"});v.textContent=l,w.appendChild(v)}if(b.appendChild(w),e.artist){let v=u.createElement("span",{className:"vidply-playlist-item-artist"});v.textContent=e.artist,b.appendChild(v)}if(e.description){let v=u.createElement("span",{className:"vidply-playlist-item-description"});v.textContent=e.description,b.appendChild(v)}h.appendChild(b);let L=k("play");return L.classList.add("vidply-playlist-item-icon"),L.setAttribute("aria-hidden","true"),h.appendChild(L),h.addEventListener("click",()=>{this.play(t,!0)}),h.addEventListener("keydown",v=>{this.handlePlaylistItemKeydown(v,t)}),d.appendChild(h),d}handlePlaylistItemKeydown(e,t){let i=Array.from(this.playlistPanel.querySelectorAll(".vidply-playlist-item-button")),s=-1,a="";switch(e.key){case"Enter":case" ":e.preventDefault(),e.stopPropagation(),this.play(t,!0);return;case"ArrowDown":e.preventDefault(),e.stopPropagation(),t<i.length-1?s=t+1:a=m.t("playlist.endOfPlaylist",{current:i.length,total:i.length});break;case"ArrowUp":e.preventDefault(),e.stopPropagation(),t>0?s=t-1:a=m.t("playlist.beginningOfPlaylist",{total:i.length});break;case"PageDown":e.preventDefault(),e.stopPropagation(),s=Math.min(t+5,i.length-1),s===i.length-1&&t!==s&&(a=m.t("playlist.jumpedToLastTrack",{current:s+1,total:i.length}));break;case"PageUp":e.preventDefault(),e.stopPropagation(),s=Math.max(t-5,0),s===0&&t!==s&&(a=m.t("playlist.jumpedToFirstTrack",{total:i.length}));break;case"Home":e.preventDefault(),e.stopPropagation(),s=0,t!==0&&(a=m.t("playlist.firstTrack",{total:i.length}));break;case"End":e.preventDefault(),e.stopPropagation(),s=i.length-1,t!==i.length-1&&(a=m.t("playlist.lastTrack",{current:i.length,total:i.length}));break}if(s!==-1&&s!==t){i[t].setAttribute("tabIndex","-1"),i[s].setAttribute("tabIndex","0"),i[s].focus({preventScroll:!1});let n=i[s].closest(".vidply-playlist-item");n&&n.scrollIntoView({behavior:"smooth",block:"nearest"})}a&&this.navigationFeedback&&(this.navigationFeedback.textContent=a,setTimeout(()=>{this.navigationFeedback&&(this.navigationFeedback.textContent="")},1e3))}updatePlaylistUI(){if(!this.playlistPanel)return;let e=this.playlistPanel.querySelectorAll(".vidply-playlist-item"),t=this.playlistPanel.querySelectorAll(".vidply-playlist-item-button");e.forEach((i,s)=>{let a=t[s];if(!a)return;let n=this.tracks[s],l=m.t("playlist.trackOf",{current:s+1,total:this.tracks.length}),o=n.title||m.t("playlist.trackUntitled",{number:s+1}),c=n.artist?m.t("playlist.by")+n.artist:"",r=this.getEffectiveDuration(n),d=r?C.formatDuration(r):"";if(s===this.currentIndex){i.classList.add("vidply-playlist-item-active"),a.setAttribute("aria-current","true"),a.setAttribute("aria-checked","true"),a.setAttribute("tabIndex","0");let h="".concat(o).concat(c);d&&(h+=". ".concat(d)),a.setAttribute("aria-label",h),i.scrollIntoView({behavior:"smooth",block:"nearest"})}else{i.classList.remove("vidply-playlist-item-active"),a.removeAttribute("aria-current"),a.setAttribute("aria-checked","false"),a.setAttribute("tabIndex","-1");let h="".concat(o).concat(c);d&&(h+=". ".concat(d)),a.setAttribute("aria-label",h)}})}getCurrentTrack(){return this.tracks[this.currentIndex]||null}getPlaylistInfo(){return{currentIndex:this.currentIndex,totalTracks:this.tracks.length,currentTrack:this.getCurrentTrack(),hasNext:this.hasNext(),hasPrevious:this.hasPrevious()}}hasNext(){return this.options.loop?!0:this.currentIndex<this.tracks.length-1}hasPrevious(){return this.options.loop?!0:this.currentIndex>0}addTrack(e){this.tracks.push(e),this.playlistPanel&&this.renderPlaylist()}removeTrack(e){e<0||e>=this.tracks.length||(this.tracks.splice(e,1),e<this.currentIndex?this.currentIndex--:e===this.currentIndex&&(this.currentIndex>=this.tracks.length&&(this.currentIndex=this.tracks.length-1),this.currentIndex>=0&&this.play(this.currentIndex)),this.playlistPanel&&this.renderPlaylist())}clear(){this.tracks=[],this.currentIndex=-1,this.playlistPanel&&(this.playlistPanel.innerHTML="",this.playlistPanel.style.display="none"),this.trackInfoElement&&(this.trackInfoElement.innerHTML="",this.trackInfoElement.style.display="none"),this.trackArtworkElement&&(this.trackArtworkElement.style.backgroundImage="",this.trackArtworkElement.style.display="none")}togglePanel(e){return this.playlistPanel?((e!==void 0?e:this.playlistPanel.style.display==="none")?(this.playlistPanel.style.display="block",this.isPanelVisible=!0,this.tracks.length>0&&setTimeout(()=>{let i=this.playlistPanel.querySelector('.vidply-playlist-item[tabindex="0"]');i&&i.focus({preventScroll:!0})},100),this.player.controlBar&&this.player.controlBar.controls.playlistToggle&&(this.player.controlBar.controls.playlistToggle.setAttribute("aria-expanded","true"),this.player.controlBar.controls.playlistToggle.setAttribute("aria-pressed","true"))):(this.playlistPanel.style.display="none",this.isPanelVisible=!1,this.player.controlBar&&this.player.controlBar.controls.playlistToggle&&(this.player.controlBar.controls.playlistToggle.setAttribute("aria-expanded","false"),this.player.controlBar.controls.playlistToggle.setAttribute("aria-pressed","false"),this.player.controlBar.controls.playlistToggle.focus({preventScroll:!0}))),this.isPanelVisible):!1}showPanel(){return this.togglePanel(!0)}hidePanel(){return this.togglePanel(!1)}destroy(){this.player.off("ended",this.handleTrackEnd),this.player.off("error",this.handleTrackError),this.trackArtworkElement&&this.trackArtworkElement.remove(),this.trackInfoElement&&this.trackInfoElement.remove(),this.playlistPanel&&this.playlistPanel.remove(),this.clear()}};function it(){document.querySelectorAll("[data-vidply]").forEach(e=>{let t=e.dataset.vidplyOptions?JSON.parse(e.dataset.vidplyOptions):{},i=gt(e.dataset),s=O(O({},i),t);new G(e,s)})}function gt(g){let e={},t={signLanguageSrc:"signLanguageSrc",signLanguageButton:"signLanguageButton",signLanguagePosition:"signLanguagePosition",audioDescriptionSrc:"audioDescriptionSrc",audioDescriptionButton:"audioDescriptionButton",autoplay:"autoplay",loop:"loop",muted:"muted",controls:"controls",poster:"poster",width:"width",height:"height",language:"language",captions:"captions",captionsDefault:"captionsDefault",transcript:"transcript",transcriptButton:"transcriptButton",keyboard:"keyboard",responsive:"responsive",pipButton:"pipButton",fullscreenButton:"fullscreenButton"};Object.keys(t).forEach(s=>{let a=t[s],n=g[s];n!==void 0&&(n==="true"?e[a]=!0:n==="false"?e[a]=!1:!isNaN(n)&&n!==""?e[a]=Number(n):e[a]=n)});let i={};if(Object.keys(g).forEach(s=>{if(s.startsWith("signLanguageSrc")&&s!=="signLanguageSrc"){let a=s.match(/^signLanguageSrc([A-Z][a-z]*)$/);if(a){let n=a[1].toLowerCase();i[n]=g[s]}}}),Object.keys(i).length>0&&(e.signLanguageSources=i,g.signLanguageSrc&&!e.signLanguageSrc&&(e.signLanguageSrc=g.signLanguageSrc)),g.vidplyLanguageFiles)try{e.languageFiles=JSON.parse(g.vidplyLanguageFiles)}catch(s){console.warn("Invalid JSON in data-vidply-language-files:",s)}if(g.vidplyLanguageFile)try{let s=JSON.parse(g.vidplyLanguageFile);typeof s=="object"&&s!==null&&(e.languageFiles=s)}catch(s){g.vidplyLanguageFileCode&&g.vidplyLanguageFileUrl&&(e.languageFile=g.vidplyLanguageFileCode,e.languageFileUrl=g.vidplyLanguageFileUrl)}else g.vidplyLanguageFileCode&&g.vidplyLanguageFileUrl&&(e.languageFile=g.vidplyLanguageFileCode,e.languageFileUrl=g.vidplyLanguageFileUrl);return e}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",it):it();var Ki=G;})();