vidply 1.2.0 → 1.2.3

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 (167) hide show
  1. package/README.md +974 -946
  2. package/dist/dev/{vidply.AudioDescriptionManager-R47Q4YR4.js → vidply.AudioDescriptionManager-JYYLK5KB.js} +275 -19
  3. package/dist/dev/vidply.AudioDescriptionManager-JYYLK5KB.js.map +7 -0
  4. package/dist/dev/{vidply.CaptionStyleMenu-7XHRBWUM.js → vidply.CaptionStyleMenu-47RCKQF5.js} +4 -4
  5. package/dist/dev/{vidply.DASHRenderer-PWEMC3BT.js → vidply.DASHRenderer-VEJ4HDHO.js} +3 -3
  6. package/dist/dev/vidply.DASHRenderer-VEJ4HDHO.js.map +7 -0
  7. package/dist/dev/{vidply.FloatingPlayerManager-PKNNNAS2.js → vidply.FloatingPlayerManager-C2UVRPZY.js} +5 -5
  8. package/dist/dev/vidply.FloatingPlayerManager-C2UVRPZY.js.map +7 -0
  9. package/dist/dev/{vidply.HLSRenderer-E7RQ74HI.js → vidply.HLSRenderer-ZVBK2TNQ.js} +4 -4
  10. package/dist/dev/vidply.HLSRenderer-ZVBK2TNQ.js.map +7 -0
  11. package/dist/dev/vidply.HTML5Renderer-HLRQUOCU.js +12 -0
  12. package/dist/dev/{vidply.SignLanguageManager-FET5FQZ7.js → vidply.SignLanguageManager-FLUCBW5H.js} +8 -8
  13. package/dist/dev/vidply.SignLanguageManager-FLUCBW5H.js.map +7 -0
  14. package/dist/dev/{vidply.SoundCloudRenderer-RVSJZODO.js → vidply.SoundCloudRenderer-MGMAJ7NK.js} +3 -3
  15. package/dist/dev/vidply.SoundCloudRenderer-MGMAJ7NK.js.map +7 -0
  16. package/dist/dev/{vidply.TranscriptManager-5GXOQCLX.js → vidply.TranscriptManager-Y2RYXHJW.js} +10 -10
  17. package/dist/dev/vidply.TranscriptManager-Y2RYXHJW.js.map +7 -0
  18. package/dist/dev/{vidply.VimeoRenderer-ER2LSBBW.js → vidply.VimeoRenderer-RQFQD7OE.js} +3 -3
  19. package/dist/dev/vidply.VimeoRenderer-RQFQD7OE.js.map +7 -0
  20. package/dist/dev/{vidply.YouTubeRenderer-NFTOWJAB.js → vidply.YouTubeRenderer-EU2BARZF.js} +3 -3
  21. package/dist/dev/vidply.YouTubeRenderer-EU2BARZF.js.map +7 -0
  22. package/dist/dev/{vidply.chunk-BNFIUL2Z.js → vidply.chunk-6LYZYI5G.js} +3 -3
  23. package/dist/dev/vidply.chunk-6LYZYI5G.js.map +7 -0
  24. package/dist/dev/{vidply.chunk-NQPURMQY.js → vidply.chunk-A4ESEOQ2.js} +6 -6
  25. package/dist/dev/vidply.chunk-A4ESEOQ2.js.map +7 -0
  26. package/dist/dev/{vidply.chunk-W25HUCHS.js → vidply.chunk-CGYIED2I.js} +2 -2
  27. package/dist/dev/vidply.chunk-CGYIED2I.js.map +7 -0
  28. package/dist/dev/{vidply.chunk-SK4V2DAU.js → vidply.chunk-HZ7UOKOU.js} +3 -3
  29. package/dist/dev/{vidply.chunk-RZWZGDV7.js → vidply.chunk-I6EDRYGJ.js} +33 -6
  30. package/dist/dev/vidply.chunk-I6EDRYGJ.js.map +7 -0
  31. package/dist/dev/{vidply.chunk-64WXMTGL.js → vidply.chunk-JKMQGLCJ.js} +5 -5
  32. package/dist/dev/vidply.chunk-JKMQGLCJ.js.map +7 -0
  33. package/dist/dev/{vidply.chunk-DZSDO3B7.js → vidply.chunk-JZNZX32Z.js} +2 -2
  34. package/dist/dev/{vidply.chunk-VMSQAZM7.js → vidply.chunk-P25MRJ6O.js} +2 -2
  35. package/dist/dev/{vidply.chunk-6RQA4ROD.js → vidply.chunk-PRFNESYA.js} +2 -2
  36. package/dist/dev/{vidply.chunk-KI7C3QVL.js → vidply.chunk-UI3RYCVF.js} +4 -3
  37. package/dist/dev/vidply.chunk-UI3RYCVF.js.map +7 -0
  38. package/dist/dev/{vidply.chunk-JJ47NO24.js → vidply.chunk-UNFGMABP.js} +2 -2
  39. package/dist/dev/vidply.chunk-UNFGMABP.js.map +7 -0
  40. package/dist/dev/{vidply.de-4YAT7FFM.js → vidply.de-VAUVSQXC.js} +29 -2
  41. package/dist/dev/vidply.de-VAUVSQXC.js.map +7 -0
  42. package/dist/dev/{vidply.es-LEWIRUBH.js → vidply.es-G65HFWO6.js} +29 -2
  43. package/dist/dev/vidply.es-G65HFWO6.js.map +7 -0
  44. package/dist/dev/vidply.esm.js +648 -35
  45. package/dist/dev/vidply.esm.js.map +3 -3
  46. package/dist/dev/{vidply.fr-Q4GV2NOE.js → vidply.fr-MJNOZELM.js} +29 -2
  47. package/dist/dev/vidply.fr-MJNOZELM.js.map +7 -0
  48. package/dist/dev/{vidply.ja-S6ITA6WU.js → vidply.ja-INMDHIYJ.js} +29 -2
  49. package/dist/dev/vidply.ja-INMDHIYJ.js.map +7 -0
  50. package/dist/legacy/vidply.js +1062 -34
  51. package/dist/legacy/vidply.js.map +3 -3
  52. package/dist/legacy/vidply.min.js +2 -2
  53. package/dist/legacy/vidply.min.meta.json +127 -55
  54. package/dist/prod/vidply.AudioDescriptionManager-EKWUNOPE.min.js +6 -0
  55. package/dist/prod/{vidply.CaptionStyleMenu-M3KVQWB5.min.js → vidply.CaptionStyleMenu-JTWSNHRQ.min.js} +2 -2
  56. package/dist/prod/{vidply.DASHRenderer-DN3S27AV.min.js → vidply.DASHRenderer-CIDAHFWM.min.js} +2 -2
  57. package/dist/prod/{vidply.FloatingPlayerManager-SKAZ4J43.min.js → vidply.FloatingPlayerManager-VZXHPCPM.min.js} +2 -2
  58. package/dist/prod/{vidply.HLSRenderer-62HH4YTK.min.js → vidply.HLSRenderer-Q6EFYKID.min.js} +2 -2
  59. package/dist/prod/vidply.HTML5Renderer-XRDJUTOO.min.js +6 -0
  60. package/dist/prod/{vidply.SignLanguageManager-V3OBTSSF.min.js → vidply.SignLanguageManager-JUOSA5AM.min.js} +2 -2
  61. package/dist/prod/{vidply.SoundCloudRenderer-CXRVZIAJ.min.js → vidply.SoundCloudRenderer-7ODD46PO.min.js} +2 -2
  62. package/dist/prod/{vidply.TranscriptManager-SYM3DFUY.min.js → vidply.TranscriptManager-4B2QKYGQ.min.js} +2 -2
  63. package/dist/prod/{vidply.VimeoRenderer-72TWRYFQ.min.js → vidply.VimeoRenderer-MR3UYLY7.min.js} +2 -2
  64. package/dist/prod/{vidply.YouTubeRenderer-UMHEV3KD.min.js → vidply.YouTubeRenderer-ITRTC7NR.min.js} +2 -2
  65. package/dist/prod/{vidply.chunk-YEENJS3Q.min.js → vidply.chunk-3EEDXU4T.min.js} +2 -2
  66. package/dist/prod/{vidply.chunk-P4UXOHWA.min.js → vidply.chunk-5HTX5QXW.min.js} +1 -1
  67. package/dist/prod/{vidply.chunk-ABPXVDLZ.min.js → vidply.chunk-6OGHHIYP.min.js} +2 -2
  68. package/dist/prod/{vidply.chunk-UK7YGOB5.min.js → vidply.chunk-GUPGMFUZ.min.js} +2 -2
  69. package/dist/prod/{vidply.chunk-WX3MVEAL.min.js → vidply.chunk-MWEBITCP.min.js} +1 -1
  70. package/dist/prod/{vidply.chunk-2TB6MUHO.min.js → vidply.chunk-PL3P3JHR.min.js} +1 -1
  71. package/dist/prod/{vidply.chunk-EKEYJWMG.min.js → vidply.chunk-QQZGV7TD.min.js} +2 -2
  72. package/dist/prod/{vidply.chunk-Z3YDSA7O.min.js → vidply.chunk-U5IRRYG5.min.js} +1 -1
  73. package/dist/prod/{vidply.chunk-TM6AXJVD.min.js → vidply.chunk-VKHV4QHA.min.js} +2 -2
  74. package/dist/prod/{vidply.chunk-P3PQBY7N.min.js → vidply.chunk-XA4M574A.min.js} +1 -1
  75. package/dist/prod/{vidply.chunk-RI3X7WHK.min.js → vidply.chunk-ZPTV4JEP.min.js} +2 -2
  76. package/dist/prod/{vidply.de-BCHXRQ53.min.js → vidply.de-UZHFCEZU.min.js} +2 -2
  77. package/dist/prod/{vidply.es-PICAKMZD.min.js → vidply.es-BOISUV2S.min.js} +2 -2
  78. package/dist/prod/vidply.esm.min.js +2 -2
  79. package/dist/prod/{vidply.fr-ZILI7CDR.min.js → vidply.fr-ICSMKPFM.min.js} +2 -2
  80. package/dist/prod/{vidply.ja-5WQ4OK4J.min.js → vidply.ja-VQ2HKGAY.min.js} +2 -2
  81. package/dist/vidply.css +5852 -5796
  82. package/dist/vidply.esm.min.meta.json +204 -149
  83. package/dist/vidply.min.css +1 -1
  84. package/package.json +11 -11
  85. package/src/controls/CaptionManager.ts +598 -598
  86. package/src/controls/ControlBar.ts +4191 -4159
  87. package/src/controls/KeyboardHelp.ts +326 -0
  88. package/src/controls/KeyboardManager.ts +387 -383
  89. package/src/controls/SettingsDialog.ts +488 -488
  90. package/src/controls/TranscriptManager.ts +2426 -2426
  91. package/src/core/AudioDescriptionManager.ts +863 -774
  92. package/src/core/DescriptionSpeechManager.ts +232 -0
  93. package/src/core/FloatingPlayerManager.ts +674 -674
  94. package/src/core/LazyInit.ts +80 -80
  95. package/src/core/MediaSessionManager.ts +341 -0
  96. package/src/core/MetadataAlertsManager.ts +514 -514
  97. package/src/core/Player.ts +2973 -2872
  98. package/src/core/PosterManager.ts +169 -169
  99. package/src/core/PseudoFullscreen.ts +179 -179
  100. package/src/core/ResponsiveManager.ts +231 -231
  101. package/src/core/ResumeManager.ts +236 -236
  102. package/src/core/SignLanguageManager.ts +1308 -1308
  103. package/src/core/ThemeManager.ts +157 -157
  104. package/src/features/PlaylistManager.ts +1838 -1827
  105. package/src/i18n/i18n.ts +223 -223
  106. package/src/i18n/languages/de.ts +244 -217
  107. package/src/i18n/languages/en.ts +245 -218
  108. package/src/i18n/languages/es.ts +241 -214
  109. package/src/i18n/languages/fr.ts +241 -214
  110. package/src/i18n/languages/ja.ts +241 -214
  111. package/src/icons/Icons.ts +168 -167
  112. package/src/index.ts +196 -193
  113. package/src/renderers/DASHRenderer.ts +1077 -1077
  114. package/src/renderers/HLSRenderer.ts +944 -944
  115. package/src/renderers/HTML5Renderer.ts +389 -389
  116. package/src/renderers/SoundCloudRenderer.ts +437 -437
  117. package/src/renderers/VimeoRenderer.ts +298 -298
  118. package/src/renderers/YouTubeRenderer.ts +290 -290
  119. package/src/styles/vidply.css +5852 -5796
  120. package/src/types/events.ts +128 -122
  121. package/src/types/globals.d.ts +313 -313
  122. package/src/types/options.ts +199 -182
  123. package/src/types/renderer.ts +58 -58
  124. package/src/utils/DOMUtils.ts +281 -281
  125. package/src/utils/DownloadInfo.ts +171 -171
  126. package/src/utils/DraggablePanel.ts +539 -539
  127. package/src/utils/DraggablePanelMenu.ts +195 -195
  128. package/src/utils/DraggableResizable.ts +997 -997
  129. package/src/utils/EventEmitter.ts +59 -59
  130. package/src/utils/FormUtils.ts +95 -95
  131. package/src/utils/MenuFactory.ts +483 -483
  132. package/src/utils/Sanitize.ts +70 -70
  133. package/src/utils/SettingsMenuFactory.ts +289 -289
  134. package/src/utils/StorageManager.ts +287 -287
  135. package/src/utils/TrackLabelUtils.ts +52 -52
  136. package/src/utils/UrlSafe.ts +69 -69
  137. package/src/utils/VideoFrameCapture.ts +114 -114
  138. package/src/utils/WindowComponents.ts +250 -250
  139. package/dist/dev/vidply.AudioDescriptionManager-R47Q4YR4.js.map +0 -7
  140. package/dist/dev/vidply.DASHRenderer-PWEMC3BT.js.map +0 -7
  141. package/dist/dev/vidply.FloatingPlayerManager-PKNNNAS2.js.map +0 -7
  142. package/dist/dev/vidply.HLSRenderer-E7RQ74HI.js.map +0 -7
  143. package/dist/dev/vidply.HTML5Renderer-BU4QJJJY.js +0 -12
  144. package/dist/dev/vidply.SignLanguageManager-FET5FQZ7.js.map +0 -7
  145. package/dist/dev/vidply.SoundCloudRenderer-RVSJZODO.js.map +0 -7
  146. package/dist/dev/vidply.TranscriptManager-5GXOQCLX.js.map +0 -7
  147. package/dist/dev/vidply.VimeoRenderer-ER2LSBBW.js.map +0 -7
  148. package/dist/dev/vidply.YouTubeRenderer-NFTOWJAB.js.map +0 -7
  149. package/dist/dev/vidply.chunk-64WXMTGL.js.map +0 -7
  150. package/dist/dev/vidply.chunk-BNFIUL2Z.js.map +0 -7
  151. package/dist/dev/vidply.chunk-JJ47NO24.js.map +0 -7
  152. package/dist/dev/vidply.chunk-KI7C3QVL.js.map +0 -7
  153. package/dist/dev/vidply.chunk-NQPURMQY.js.map +0 -7
  154. package/dist/dev/vidply.chunk-RZWZGDV7.js.map +0 -7
  155. package/dist/dev/vidply.chunk-W25HUCHS.js.map +0 -7
  156. package/dist/dev/vidply.de-4YAT7FFM.js.map +0 -7
  157. package/dist/dev/vidply.es-LEWIRUBH.js.map +0 -7
  158. package/dist/dev/vidply.fr-Q4GV2NOE.js.map +0 -7
  159. package/dist/dev/vidply.ja-S6ITA6WU.js.map +0 -7
  160. package/dist/prod/vidply.AudioDescriptionManager-RHLIJW5C.min.js +0 -6
  161. package/dist/prod/vidply.HTML5Renderer-IU5T3WEW.min.js +0 -6
  162. /package/dist/dev/{vidply.CaptionStyleMenu-7XHRBWUM.js.map → vidply.CaptionStyleMenu-47RCKQF5.js.map} +0 -0
  163. /package/dist/dev/{vidply.HTML5Renderer-BU4QJJJY.js.map → vidply.HTML5Renderer-HLRQUOCU.js.map} +0 -0
  164. /package/dist/dev/{vidply.chunk-SK4V2DAU.js.map → vidply.chunk-HZ7UOKOU.js.map} +0 -0
  165. /package/dist/dev/{vidply.chunk-DZSDO3B7.js.map → vidply.chunk-JZNZX32Z.js.map} +0 -0
  166. /package/dist/dev/{vidply.chunk-VMSQAZM7.js.map → vidply.chunk-P25MRJ6O.js.map} +0 -0
  167. /package/dist/dev/{vidply.chunk-6RQA4ROD.js.map → vidply.chunk-PRFNESYA.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * VidPly v1.2.0 - Universal, Accessible Video Player
2
+ * VidPly v1.2.3 - Universal, Accessible Video Player
3
3
  * (c) 2026 Matthias Peltzer
4
4
  * Released under GPL-2.0-or-later License
5
5
  */
6
- var e={createElement(e,t={}){const a=document.createElement(e);if(t.className&&(a.className=t.className),t.attributes)for(const[e,o]of Object.entries(t.attributes))void 0!==o&&a.setAttribute(e,o);if(t.textContent&&(a.textContent=t.textContent),t.style&&Object.assign(a.style,t.style),t.children)for(const e of t.children)e&&a.appendChild(e);return a},show(e){e?.style&&(e.style.display="")},hide(e){e?.style&&(e.style.display="none")},fadeIn(e,t=300,a){if(e&&(e.style.opacity="0",e.style.display="",e.style.transition=`opacity ${t}ms ease`,e.style.opacity="1",a)){let o=!1;const s=()=>{o||(o=!0,e.removeEventListener("transitionend",s),a())};e.addEventListener("transitionend",s,{once:!0}),setTimeout(s,t+50)}},fadeOut(e,t=300,a){if(!e)return;e.style.transition=`opacity ${t}ms ease`,e.style.opacity="0";let o=!1;const s=()=>{o||(o=!0,e.removeEventListener("transitionend",s),e.style.display="none",a&&a())};e.addEventListener("transitionend",s,{once:!0}),setTimeout(s,t+50)},offset(e){if(!e)return{top:0,left:0,width:0,height:0};const t=e.getBoundingClientRect();return{top:t.top+window.scrollY,left:t.left+window.scrollX,width:t.width,height:t.height}},escapeHTML(e){const t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;"};return e.replace(/[&<>"']/g,e=>t[e]??e)},renderVTTToDOM(e){const t=e.length>1e4?e.slice(0,1e4):e,a=document.createDocumentFragment(),o=[],s=e=>{(o[o.length-1]??a).appendChild(e)},i=/<(\/)?([a-z])(?:\.([\w.-]{1,200}))?(?:\s+([^<>]{0,500}))?>/i;let n=0;for(;n<t.length;){const e=t.slice(n),a=i.exec(e);if(!a||void 0===a.index){s(document.createTextNode(e));break}a.index>0&&s(document.createTextNode(e.slice(0,a.index)));const[,r,l,d,c]=a,g=(l||"").toLowerCase();if(r){const e=o[o.length-1];e&&e.dataset.vttTag===g&&o.pop()}else if("b"===g||"i"===g||"u"===g){const e=document.createElement("b"===g?"strong":"i"===g?"em":"u");e.dataset.vttTag=g,s(e),o.push(e)}else if("c"===g){const e=document.createElement("span");if(e.dataset.vttTag=g,e.classList.add("caption-class"),d)for(const t of d.split(".").filter(Boolean))/^[\w-]+$/.test(t)&&e.classList.add(`caption-class-${t}`);s(e),o.push(e)}else if("v"===g){const e=document.createElement("span");e.dataset.vttTag=g,e.classList.add("caption-voice"),c&&(e.dataset.voice=c.trim().slice(0,200)),s(e),o.push(e)}else s(document.createTextNode(a[0]));n+=a.index+a[0].length}return a},createTooltip(e,t="vidply"){return this.createElement("span",{className:`${t}-tooltip`,textContent:e,attributes:{"aria-hidden":"true"}})},attachTooltip(e,t,a="vidply"){if(!e||!t)return;e.querySelector(`.${a}-tooltip`)?.remove();const o=this.createTooltip(t,a);e.appendChild(o);const s=`${a}-tooltip-visible`,i=()=>o.classList.add(s),n=()=>o.classList.remove(s);e.addEventListener("mouseenter",i),e.addEventListener("mouseleave",n),e.addEventListener("focus",i),e.addEventListener("blur",n)},createButtonText(e,t="vidply"){return this.createElement("span",{className:`${t}-button-text`,textContent:e,attributes:{"aria-hidden":"true"}})},addClass(e,t){e?.classList?.add(t)},removeClass(e,t){e?.classList?.remove(t)},toggleClass(e,t){e?.classList?.toggle(t)},hasClass(e,t){return e?.classList?.contains(t)??!1}},t=Object.freeze(new Set(["__proto__","prototype","constructor"]));function a(e){return t.has(String(e))}function o(e){const t=Object.create(null);for(const[o,s]of Object.entries(e))a(o)||(t[o]=s);return t}function s(e){if(!e||"object"!=typeof e||Array.isArray(e))return e&&"object"==typeof e?e:Object.create(null);const t=Object.create(null);for(const[o,i]of Object.entries(e))a(o)||(t[o]=i&&"object"==typeof i&&!Array.isArray(i)?s(i):i);return t}var i={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",floatingPlayer:"Floating player",floatingPlayerClose:"Close floating player",floatingPlayerEnter:"Pop out video",floatingPlayerExit:"Dock video",floatingPlayerDialog:"Floating video player. Press D to drag, R to resize, Escape to close.",download:"Download",downloadWithFormat:"Download {format}",downloadWithSize:"Download ({size})",downloadWithFormatSize:"Download {format} ({size})",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",startPlaybackFirst:"Please start playback first.",startPlaybackForAudioDescription:"Please start playback first to use audio description.",startPlaybackForSignLanguage:"Please start playback first to use sign language video.",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",signDragModeHint:"Drag mode: arrow keys to move, Esc to exit",signResizeModeHint:"Resize mode: arrow keys to resize, Esc to exit",signDragModeDisabled:"Sign language drag mode disabled.",signResizeModeDisabled:"Sign language resize mode disabled.",resizeHandle:"Resize {direction} corner",moreOptions:"More options",noMoreOptions:"No additional options available",playing:"Playing",paused:"Paused",muted:"Muted",unmuted:"Unmuted",captionsOn:"Captions on",captionsOff:"Captions off",volumePercent:"Volume {percent} percent",volumePercentMuted:"Muted",speedRate:"Speed {rate}x"},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",showInMainView:"Show sign language in main video",hideInMainView:"Hide sign language from main 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.",dragModeBadge:"Drag mode: arrow keys to move, Esc to exit",resizeModeBadge:"Resize mode: drag edges or corners, Esc to exit",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",seekTo:"Seek to {time}"},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"},resume:{prompt:"Resume from {time}?",resume:"Resume",startOver:"Start Over"},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}."}},n={de:()=>import("./vidply.de-BCHXRQ53.min.js"),es:()=>import("./vidply.es-PICAKMZD.min.js"),fr:()=>import("./vidply.fr-ZILI7CDR.min.js"),ja:()=>import("./vidply.ja-5WQ4OK4J.min.js")};function r(){return{en:i}}function l(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function d(e){return s(e)}r();var c=new class{currentLanguage;translations;loadingPromises;builtInLanguageLoaders;constructor(){this.currentLanguage="en",this.translations=Object.create(null),Object.assign(this.translations,r()),this.loadingPromises=new Map,this.builtInLanguageLoaders=n}setLanguage(e){this.translations[e]?this.currentLanguage=e:(console.warn(`Language "${e}" not found, falling back to English`),this.currentLanguage="en")}getLanguage(){return this.currentLanguage}async ensureLanguage(e){const 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;const a=(async()=>{try{const e=await(async e=>{const t=n[e];if(!t)return null;const a=await t();return a[e]||a.default||null})(t);e&&(this.translations[t]=d(e))}catch(e){console.warn(`Language "${t}" failed to load:`,e)}finally{this.loadingPromises.delete(t)}})();return this.loadingPromises.set(t,a),await a,this.translations[t]?t:null}t(e,t={}){const o=e.split(".");let s=this.translations[this.currentLanguage];for(const t of o){if(!s||"object"!=typeof s||!(t in s)){s=this.translations.en;for(const t of o){if(!s||"object"!=typeof s||!(t in s))return e;s=s[t]}break}s=s[t]}if("string"==typeof s){let e=s;for(const[o,s]of Object.entries(t)){if(a(o))continue;const t=l(o);e=e.replace(new RegExp(`\\{${t}\\}`,"g"),String(s))}return e}return"string"==typeof s?s:e}addTranslation(e,t){if(a(e))return void console.warn(`[VidPly] Refusing to register language with forbidden name "${e}"`);this.translations[e]||(this.translations[e]=Object.create(null));const o=d(t);Object.assign(this.translations[e],o)}async loadLanguageFromUrl(e,t,a={}){if(this.loadingPromises.has(t))return this.loadingPromises.get(t);const o=(async()=>{const o=[];a.signal&&o.push(a.signal),"undefined"!=typeof AbortSignal&&"function"==typeof AbortSignal.timeout&&o.push(AbortSignal.timeout(a.timeoutMs??8e3));const s=0===o.length?void 0:1===o.length?o[0]:AbortSignal.any?.(o)??o[0];try{const a=await fetch(t,{signal:s});if(!a.ok)throw new Error(`Failed to load language file: ${a.statusText}`);const o=a.headers.get("content-type")||"";let i;const n=await a.arrayBuffer(),r=new TextDecoder("utf-8").decode(n);if(o.includes("application/json")||t.endsWith(".json"))i=JSON.parse(r);else if(o.includes("text/yaml")||o.includes("application/x-yaml")||t.endsWith(".yaml")||t.endsWith(".yml"))try{i=JSON.parse(r)}catch{if("undefined"==typeof window||!window.jsyaml)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.");i=window.jsyaml.load(r)}else i=JSON.parse(r);return this.addTranslation(e,i),i}catch(e){throw console.error(`Error loading language file from ${t}:`,e),e}finally{this.loadingPromises.delete(t)}})();return this.loadingPromises.set(t,o),o}async loadLanguagesFromUrls(e,t={}){const a=Object.entries(e).map(([e,a])=>this.loadLanguageFromUrl(e,a,t));await Promise.all(a)}};export{e as DOMUtils,a as isForbiddenKey,o as shallowSanitize,c as i18n};
6
+ var e={createElement(e,t={}){const a=document.createElement(e);if(t.className&&(a.className=t.className),t.attributes)for(const[e,o]of Object.entries(t.attributes))void 0!==o&&a.setAttribute(e,o);if(t.textContent&&(a.textContent=t.textContent),t.style&&Object.assign(a.style,t.style),t.children)for(const e of t.children)e&&a.appendChild(e);return a},show(e){e?.style&&(e.style.display="")},hide(e){e?.style&&(e.style.display="none")},fadeIn(e,t=300,a){if(e&&(e.style.opacity="0",e.style.display="",e.style.transition=`opacity ${t}ms ease`,e.style.opacity="1",a)){let o=!1;const s=()=>{o||(o=!0,e.removeEventListener("transitionend",s),a())};e.addEventListener("transitionend",s,{once:!0}),setTimeout(s,t+50)}},fadeOut(e,t=300,a){if(!e)return;e.style.transition=`opacity ${t}ms ease`,e.style.opacity="0";let o=!1;const s=()=>{o||(o=!0,e.removeEventListener("transitionend",s),e.style.display="none",a&&a())};e.addEventListener("transitionend",s,{once:!0}),setTimeout(s,t+50)},offset(e){if(!e)return{top:0,left:0,width:0,height:0};const t=e.getBoundingClientRect();return{top:t.top+window.scrollY,left:t.left+window.scrollX,width:t.width,height:t.height}},escapeHTML(e){const t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;"};return e.replace(/[&<>"']/g,e=>t[e]??e)},renderVTTToDOM(e){const t=e.length>1e4?e.slice(0,1e4):e,a=document.createDocumentFragment(),o=[],s=e=>{(o[o.length-1]??a).appendChild(e)},i=/<(\/)?([a-z])(?:\.([\w.-]{1,200}))?(?:\s+([^<>]{0,500}))?>/i;let r=0;for(;r<t.length;){const e=t.slice(r),a=i.exec(e);if(!a||void 0===a.index){s(document.createTextNode(e));break}a.index>0&&s(document.createTextNode(e.slice(0,a.index)));const[,n,l,d,c]=a,g=(l||"").toLowerCase();if(n){const e=o[o.length-1];e&&e.dataset.vttTag===g&&o.pop()}else if("b"===g||"i"===g||"u"===g){const e=document.createElement("b"===g?"strong":"i"===g?"em":"u");e.dataset.vttTag=g,s(e),o.push(e)}else if("c"===g){const e=document.createElement("span");if(e.dataset.vttTag=g,e.classList.add("caption-class"),d)for(const t of d.split(".").filter(Boolean))/^[\w-]+$/.test(t)&&e.classList.add(`caption-class-${t}`);s(e),o.push(e)}else if("v"===g){const e=document.createElement("span");e.dataset.vttTag=g,e.classList.add("caption-voice"),c&&(e.dataset.voice=c.trim().slice(0,200)),s(e),o.push(e)}else s(document.createTextNode(a[0]));r+=a.index+a[0].length}return a},createTooltip(e,t="vidply"){return this.createElement("span",{className:`${t}-tooltip`,textContent:e,attributes:{"aria-hidden":"true"}})},attachTooltip(e,t,a="vidply"){if(!e||!t)return;e.querySelector(`.${a}-tooltip`)?.remove();const o=this.createTooltip(t,a);e.appendChild(o);const s=`${a}-tooltip-visible`,i=()=>o.classList.add(s),r=()=>o.classList.remove(s);e.addEventListener("mouseenter",i),e.addEventListener("mouseleave",r),e.addEventListener("focus",i),e.addEventListener("blur",r)},createButtonText(e,t="vidply"){return this.createElement("span",{className:`${t}-button-text`,textContent:e,attributes:{"aria-hidden":"true"}})},addClass(e,t){e?.classList?.add(t)},removeClass(e,t){e?.classList?.remove(t)},toggleClass(e,t){e?.classList?.toggle(t)},hasClass(e,t){return e?.classList?.contains(t)??!1}},t=Object.freeze(new Set(["__proto__","prototype","constructor"]));function a(e){return t.has(String(e))}function o(e){const t=Object.create(null);for(const[o,s]of Object.entries(e))a(o)||(t[o]=s);return t}function s(e){if(!e||"object"!=typeof e||Array.isArray(e))return e&&"object"==typeof e?e:Object.create(null);const t=Object.create(null);for(const[o,i]of Object.entries(e))a(o)||(t[o]=i&&"object"==typeof i&&!Array.isArray(i)?s(i):i);return t}var i={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",floatingPlayer:"Floating player",floatingPlayerClose:"Close floating player",floatingPlayerEnter:"Pop out video",floatingPlayerExit:"Dock video",floatingPlayerDialog:"Floating video player. Press D to drag, R to resize, Escape to close.",download:"Download",downloadWithFormat:"Download {format}",downloadWithSize:"Download ({size})",downloadWithFormatSize:"Download {format} ({size})",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",startPlaybackFirst:"Please start playback first.",startPlaybackForAudioDescription:"Please start playback first to use audio description.",startPlaybackForSignLanguage:"Please start playback first to use sign language video.",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",signDragModeHint:"Drag mode: arrow keys to move, Esc to exit",signResizeModeHint:"Resize mode: arrow keys to resize, Esc to exit",signDragModeDisabled:"Sign language drag mode disabled.",signResizeModeDisabled:"Sign language resize mode disabled.",resizeHandle:"Resize {direction} corner",moreOptions:"More options",noMoreOptions:"No additional options available",playing:"Playing",paused:"Paused",muted:"Muted",unmuted:"Unmuted",captionsOn:"Captions on",captionsOff:"Captions off",volumePercent:"Volume {percent} percent",volumePercentMuted:"Muted",speedRate:"Speed {rate}x"},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",showInMainView:"Show sign language in main video",hideInMainView:"Hide sign language from main 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.",dragModeBadge:"Drag mode: arrow keys to move, Esc to exit",resizeModeBadge:"Resize mode: drag edges or corners, Esc to exit",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",seekTo:"Seek to {time}"},settings:{title:"Settings",quality:"Quality",speed:"Speed",captions:"Captions",language:"Language",reset:"Reset to defaults",close:"Close"},help:{title:"Keyboard shortcuts",button:"Keyboard shortcuts",close:"Close",or:"or",keys:{space:"Space"},actions:{"play-pause":"Play / Pause","seek-backward":"Seek backward","seek-forward":"Seek forward","volume-up":"Volume up","volume-down":"Volume down",mute:"Mute / Unmute",captions:"Toggle captions","caption-style-menu":"Caption styling","speed-down":"Decrease speed","speed-up":"Increase speed","speed-menu":"Playback speed","quality-menu":"Quality","chapters-menu":"Chapters","transcript-toggle":"Toggle transcript",fullscreen:"Toggle fullscreen",help:"Keyboard shortcuts"}},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"},resume:{prompt:"Resume from {time}?",resume:"Resume",startOver:"Start Over"},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}."}},r={de:()=>import("./vidply.de-UZHFCEZU.min.js"),es:()=>import("./vidply.es-BOISUV2S.min.js"),fr:()=>import("./vidply.fr-ICSMKPFM.min.js"),ja:()=>import("./vidply.ja-VQ2HKGAY.min.js")};function n(){return{en:i}}function l(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function d(e){return s(e)}n();var c=new class{currentLanguage;translations;loadingPromises;builtInLanguageLoaders;constructor(){this.currentLanguage="en",this.translations=Object.create(null),Object.assign(this.translations,n()),this.loadingPromises=new Map,this.builtInLanguageLoaders=r}setLanguage(e){this.translations[e]?this.currentLanguage=e:(console.warn(`Language "${e}" not found, falling back to English`),this.currentLanguage="en")}getLanguage(){return this.currentLanguage}async ensureLanguage(e){const 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;const a=(async()=>{try{const e=await(async e=>{const t=r[e];if(!t)return null;const a=await t();return a[e]||a.default||null})(t);e&&(this.translations[t]=d(e))}catch(e){console.warn(`Language "${t}" failed to load:`,e)}finally{this.loadingPromises.delete(t)}})();return this.loadingPromises.set(t,a),await a,this.translations[t]?t:null}t(e,t={}){const o=e.split(".");let s=this.translations[this.currentLanguage];for(const t of o){if(!s||"object"!=typeof s||!(t in s)){s=this.translations.en;for(const t of o){if(!s||"object"!=typeof s||!(t in s))return e;s=s[t]}break}s=s[t]}if("string"==typeof s){let e=s;for(const[o,s]of Object.entries(t)){if(a(o))continue;const t=l(o);e=e.replace(new RegExp(`\\{${t}\\}`,"g"),String(s))}return e}return"string"==typeof s?s:e}addTranslation(e,t){if(a(e))return void console.warn(`[VidPly] Refusing to register language with forbidden name "${e}"`);this.translations[e]||(this.translations[e]=Object.create(null));const o=d(t);Object.assign(this.translations[e],o)}async loadLanguageFromUrl(e,t,a={}){if(this.loadingPromises.has(t))return this.loadingPromises.get(t);const o=(async()=>{const o=[];a.signal&&o.push(a.signal),"undefined"!=typeof AbortSignal&&"function"==typeof AbortSignal.timeout&&o.push(AbortSignal.timeout(a.timeoutMs??8e3));const s=0===o.length?void 0:1===o.length?o[0]:AbortSignal.any?.(o)??o[0];try{const a=await fetch(t,{signal:s});if(!a.ok)throw new Error(`Failed to load language file: ${a.statusText}`);const o=a.headers.get("content-type")||"";let i;const r=await a.arrayBuffer(),n=new TextDecoder("utf-8").decode(r);if(o.includes("application/json")||t.endsWith(".json"))i=JSON.parse(n);else if(o.includes("text/yaml")||o.includes("application/x-yaml")||t.endsWith(".yaml")||t.endsWith(".yml"))try{i=JSON.parse(n)}catch{if("undefined"==typeof window||!window.jsyaml)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.");i=window.jsyaml.load(n)}else i=JSON.parse(n);return this.addTranslation(e,i),i}catch(e){throw console.error(`Error loading language file from ${t}:`,e),e}finally{this.loadingPromises.delete(t)}})();return this.loadingPromises.set(t,o),o}async loadLanguagesFromUrls(e,t={}){const a=Object.entries(e).map(([e,a])=>this.loadLanguageFromUrl(e,a,t));await Promise.all(a)}};export{e as DOMUtils,a as isForbiddenKey,o as shallowSanitize,c as i18n};
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * VidPly v1.2.0 - Universal, Accessible Video Player
2
+ * VidPly v1.2.3 - Universal, Accessible Video Player
3
3
  * (c) 2026 Matthias Peltzer
4
4
  * Released under GPL-2.0-or-later License
5
5
  */
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * VidPly v1.2.0 - Universal, Accessible Video Player
2
+ * VidPly v1.2.3 - Universal, Accessible Video Player
3
3
  * (c) 2026 Matthias Peltzer
4
4
  * Released under GPL-2.0-or-later License
5
5
  */
6
- import{i18n as t}from"./vidply.chunk-EKEYJWMG.min.js";var r={formatTime(t,r=!1){if(!isFinite(t)||t<0)return r?"00:00:00":"00:00";const o=Math.floor(t/3600),e=Math.floor(t%3600/60),n=Math.floor(t%60),i=t=>String(t).padStart(2,"0");return o>0||r?`${i(o)}:${i(e)}:${i(n)}`:`${i(e)}:${i(n)}`},parseTime(t){const r=t.split(":").map(t=>parseInt(t,10));return 3===r.length?3600*(r[0]??0)+60*(r[1]??0)+(r[2]??0):2===r.length?60*(r[0]??0)+(r[1]??0):1===r.length?r[0]??0:0},formatDuration(r){if(!isFinite(r)||r<0)return t.t("time.seconds",{count:0});const o=Math.floor(r/3600),e=Math.floor(r%3600/60),n=Math.floor(r%60),i=[];return o>0&&i.push(t.t(1===o?"time.hour":"time.hours",{count:o})),e>0&&i.push(t.t(1===e?"time.minute":"time.minutes",{count:e})),(n>0||0===i.length)&&i.push(t.t(1===n?"time.second":"time.seconds",{count:n})),i.join(", ")},formatPercentage(t,r){return 0===r?0:Math.round(t/r*100)}};export{r as TimeUtils};
6
+ import{i18n as t}from"./vidply.chunk-QQZGV7TD.min.js";var r={formatTime(t,r=!1){if(!isFinite(t)||t<0)return r?"00:00:00":"00:00";const o=Math.floor(t/3600),e=Math.floor(t%3600/60),n=Math.floor(t%60),i=t=>String(t).padStart(2,"0");return o>0||r?`${i(o)}:${i(e)}:${i(n)}`:`${i(e)}:${i(n)}`},parseTime(t){const r=t.split(":").map(t=>parseInt(t,10));return 3===r.length?3600*(r[0]??0)+60*(r[1]??0)+(r[2]??0):2===r.length?60*(r[0]??0)+(r[1]??0):1===r.length?r[0]??0:0},formatDuration(r){if(!isFinite(r)||r<0)return t.t("time.seconds",{count:0});const o=Math.floor(r/3600),e=Math.floor(r%3600/60),n=Math.floor(r%60),i=[];return o>0&&i.push(t.t(1===o?"time.hour":"time.hours",{count:o})),e>0&&i.push(t.t(1===e?"time.minute":"time.minutes",{count:e})),(n>0||0===i.length)&&i.push(t.t(1===n?"time.second":"time.seconds",{count:n})),i.join(", ")},formatPercentage(t,r){return 0===r?0:Math.round(t/r*100)}};export{r as TimeUtils};
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * VidPly v1.2.0 - Universal, Accessible Video Player
2
+ * VidPly v1.2.3 - Universal, Accessible Video Player
3
3
  * (c) 2026 Matthias Peltzer
4
4
  * Released under GPL-2.0-or-later License
5
5
  */
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * VidPly v1.2.0 - Universal, Accessible Video Player
2
+ * VidPly v1.2.3 - Universal, Accessible Video Player
3
3
  * (c) 2026 Matthias Peltzer
4
4
  * Released under GPL-2.0-or-later License
5
5
  */
6
- import{i18n as e,shallowSanitize as t}from"./vidply.chunk-EKEYJWMG.min.js";function r(e,t,r){return Number.isFinite(e)?e<t?t:e>r?r:e:t}function n(e){return"number"==typeof e&&Number.isFinite(e)&&e>=0}function s(e){if(!e||"object"!=typeof e)return!1;const t=e;return n(t.currentTime)&&n(t.duration)&&"number"==typeof t.percentage&&Number.isFinite(t.percentage)&&"number"==typeof t.updatedAt&&Number.isFinite(t.updatedAt)}var a=class e{namespace;storage;static MAX_WATCH_PROGRESS_ENTRIES=100;constructor(e="vidply"){this.namespace=e,this.storage=this.isStorageAvailable()?localStorage:null}isStorageAvailable(){try{if("undefined"==typeof localStorage)return!1;const e="__storage_test__";return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch{return!1}}getKey(e){return`${this.namespace}_${e}`}set(e,t){if(!this.storage)return!1;try{const r=this.getKey(e);return this.storage.setItem(r,JSON.stringify(t)),!0}catch(e){return console.warn("Failed to save to localStorage:",e),!1}}get(e,t=null,r){if(!this.storage)return t;try{const n=this.getKey(e),s=this.storage.getItem(n);if(null===s)return t;const a=JSON.parse(s);return r&&!r(a)?(console.warn(`[VidPly] Discarding malformed localStorage payload for "${e}"`),t):a}catch(e){return console.warn("Failed to read from localStorage:",e),t}}remove(e){if(!this.storage)return!1;try{const t=this.getKey(e);return this.storage.removeItem(t),!0}catch(e){return console.warn("Failed to remove from localStorage:",e),!1}}clear(){if(!this.storage)return!1;try{const e=this.storage;return Object.keys(e).forEach(t=>{t.startsWith(this.namespace)&&e.removeItem(t)}),!0}catch(e){return console.warn("Failed to clear localStorage:",e),!1}}saveTranscriptPreferences(e){return this.set("transcript_preferences",t(e))}getTranscriptPreferences(){return this.get("transcript_preferences",null,o)}saveCaptionPreferences(e){return this.set("caption_preferences",t(e))}getCaptionPreferences(){return this.get("caption_preferences",null,o)}savePlayerPreferences(e){const n=t(e);return"number"==typeof n.volume&&(n.volume=r(n.volume,0,1)),"number"==typeof n.playbackSpeed&&(n.playbackSpeed=r(n.playbackSpeed,.1,4)),this.set("player_preferences",n)}getPlayerPreferences(){const e=this.get("player_preferences",null,o);return e?("number"==typeof e.volume&&(e.volume=r(e.volume,0,1)),"number"==typeof e.playbackSpeed&&(e.playbackSpeed=r(e.playbackSpeed,.1,4)),e):null}saveSignLanguagePreferences(e){return this.set("sign_language_preferences",t(e))}getSignLanguagePreferences(){return this.get("sign_language_preferences",null,o)}saveFloatingPreferences(e){return this.set("floating_preferences",t(e))}getFloatingPreferences(){return this.get("floating_preferences",null,o)}saveWatchProgress(t,n,s){if("string"!=typeof t||!t)return!1;if(!Number.isFinite(n)||!Number.isFinite(s)||s<=0)return!1;const a=r(s,.001,86400),o=r(n,0,a),i=this.get("watch_progress",Object.create(null),c)??Object.create(null);i[t]={currentTime:o,duration:a,percentage:r(o/a*100,0,100),updatedAt:Date.now()};const l=Object.entries(i);if(l.length>e.MAX_WATCH_PROGRESS_ENTRIES){l.sort((e,t)=>e[1].updatedAt-t[1].updatedAt);const t=l.length-e.MAX_WATCH_PROGRESS_ENTRIES;for(let e=0;e<t;e++){const t=l[e];t&&delete i[t[0]]}}return this.set("watch_progress",i)}getWatchProgress(e){if(!e)return null;const t=(this.get("watch_progress",Object.create(null),c)??Object.create(null))[e];return t&&s(t)?t:null}clearWatchProgress(e){if(!e)return!1;const t=this.get("watch_progress",Object.create(null),c)??Object.create(null);return!t[e]||(delete t[e],this.set("watch_progress",t))}};function o(e){return Boolean(e)&&"object"==typeof e&&!Array.isArray(e)}function c(e){if(!o(e))return!1;for(const t of Object.values(e))if(!s(t))return!1;return!0}function i(t,r,n="player.captions"){const s=(t??"").trim(),a=(r??"").trim();if(""!==s&&!/^\d+$/.test(s)&&!/^(null|undefined)$/i.test(s))return s;if(""!==a&&!/^(null|undefined)$/i.test(a)){try{const e=new Intl.DisplayNames([a,"en"],{type:"language"}).of(a);if(e&&e.toLowerCase()!==a.toLowerCase())return e}catch{}return a.toUpperCase()}return e.t(n)}export{a as StorageManager,i as deriveTrackLabel};
6
+ import{i18n as e,shallowSanitize as t}from"./vidply.chunk-QQZGV7TD.min.js";function r(e,t,r){return Number.isFinite(e)?e<t?t:e>r?r:e:t}function n(e){return"number"==typeof e&&Number.isFinite(e)&&e>=0}function s(e){if(!e||"object"!=typeof e)return!1;const t=e;return n(t.currentTime)&&n(t.duration)&&"number"==typeof t.percentage&&Number.isFinite(t.percentage)&&"number"==typeof t.updatedAt&&Number.isFinite(t.updatedAt)}var a=class e{namespace;storage;static MAX_WATCH_PROGRESS_ENTRIES=100;constructor(e="vidply"){this.namespace=e,this.storage=this.isStorageAvailable()?localStorage:null}isStorageAvailable(){try{if("undefined"==typeof localStorage)return!1;const e="__storage_test__";return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch{return!1}}getKey(e){return`${this.namespace}_${e}`}set(e,t){if(!this.storage)return!1;try{const r=this.getKey(e);return this.storage.setItem(r,JSON.stringify(t)),!0}catch(e){return console.warn("Failed to save to localStorage:",e),!1}}get(e,t=null,r){if(!this.storage)return t;try{const n=this.getKey(e),s=this.storage.getItem(n);if(null===s)return t;const a=JSON.parse(s);return r&&!r(a)?(console.warn(`[VidPly] Discarding malformed localStorage payload for "${e}"`),t):a}catch(e){return console.warn("Failed to read from localStorage:",e),t}}remove(e){if(!this.storage)return!1;try{const t=this.getKey(e);return this.storage.removeItem(t),!0}catch(e){return console.warn("Failed to remove from localStorage:",e),!1}}clear(){if(!this.storage)return!1;try{const e=this.storage;return Object.keys(e).forEach(t=>{t.startsWith(this.namespace)&&e.removeItem(t)}),!0}catch(e){return console.warn("Failed to clear localStorage:",e),!1}}saveTranscriptPreferences(e){return this.set("transcript_preferences",t(e))}getTranscriptPreferences(){return this.get("transcript_preferences",null,o)}saveCaptionPreferences(e){return this.set("caption_preferences",t(e))}getCaptionPreferences(){return this.get("caption_preferences",null,o)}savePlayerPreferences(e){const n=t(e);return"number"==typeof n.volume&&(n.volume=r(n.volume,0,1)),"number"==typeof n.playbackSpeed&&(n.playbackSpeed=r(n.playbackSpeed,.1,4)),this.set("player_preferences",n)}getPlayerPreferences(){const e=this.get("player_preferences",null,o);return e?("number"==typeof e.volume&&(e.volume=r(e.volume,0,1)),"number"==typeof e.playbackSpeed&&(e.playbackSpeed=r(e.playbackSpeed,.1,4)),e):null}saveSignLanguagePreferences(e){return this.set("sign_language_preferences",t(e))}getSignLanguagePreferences(){return this.get("sign_language_preferences",null,o)}saveFloatingPreferences(e){return this.set("floating_preferences",t(e))}getFloatingPreferences(){return this.get("floating_preferences",null,o)}saveWatchProgress(t,n,s){if("string"!=typeof t||!t)return!1;if(!Number.isFinite(n)||!Number.isFinite(s)||s<=0)return!1;const a=r(s,.001,86400),o=r(n,0,a),i=this.get("watch_progress",Object.create(null),c)??Object.create(null);i[t]={currentTime:o,duration:a,percentage:r(o/a*100,0,100),updatedAt:Date.now()};const l=Object.entries(i);if(l.length>e.MAX_WATCH_PROGRESS_ENTRIES){l.sort((e,t)=>e[1].updatedAt-t[1].updatedAt);const t=l.length-e.MAX_WATCH_PROGRESS_ENTRIES;for(let e=0;e<t;e++){const t=l[e];t&&delete i[t[0]]}}return this.set("watch_progress",i)}getWatchProgress(e){if(!e)return null;const t=(this.get("watch_progress",Object.create(null),c)??Object.create(null))[e];return t&&s(t)?t:null}clearWatchProgress(e){if(!e)return!1;const t=this.get("watch_progress",Object.create(null),c)??Object.create(null);return!t[e]||(delete t[e],this.set("watch_progress",t))}};function o(e){return Boolean(e)&&"object"==typeof e&&!Array.isArray(e)}function c(e){if(!o(e))return!1;for(const t of Object.values(e))if(!s(t))return!1;return!0}function i(t,r,n="player.captions"){const s=(t??"").trim(),a=(r??"").trim();if(""!==s&&!/^\d+$/.test(s)&&!/^(null|undefined)$/i.test(s))return s;if(""!==a&&!/^(null|undefined)$/i.test(a)){try{const e=new Intl.DisplayNames([a,"en"],{type:"language"}).of(a);if(e&&e.toLowerCase()!==a.toLowerCase())return e}catch{}return a.toUpperCase()}return e.t(n)}export{a as StorageManager,i as deriveTrackLabel};
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * VidPly v1.2.0 - Universal, Accessible Video Player
2
+ * VidPly v1.2.3 - Universal, Accessible Video Player
3
3
  * (c) 2026 Matthias Peltzer
4
4
  * Released under GPL-2.0-or-later License
5
5
  */
6
- var e={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",floatingPlayer:"Schwebender Player",floatingPlayerClose:"Schwebenden Player schließen",floatingPlayerEnter:"Video ausklappen",floatingPlayerExit:"Video andocken",floatingPlayerDialog:"Schwebender Videoplayer. D zum Verschieben, R zum Größenändern, Escape zum Schließen.",download:"Herunterladen",downloadWithFormat:"Herunterladen {format}",downloadWithSize:"Herunterladen ({size})",downloadWithFormatSize:"Herunterladen {format} ({size})",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",startPlaybackFirst:"Bitte starten Sie die Wiedergabe zuerst.",startPlaybackForAudioDescription:"Bitte starten Sie die Wiedergabe zuerst, um die Audiodeskription zu nutzen.",startPlaybackForSignLanguage:"Bitte starten Sie die Wiedergabe zuerst, um das Gebärdensprache-Video zu nutzen.",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",signDragModeHint:"Verschiebemodus: Pfeiltasten zum Bewegen, Esc zum Beenden",signResizeModeHint:"Größenänderungsmodus: Pfeiltasten zum Ändern, Esc zum Beenden",signDragModeDisabled:"Verschiebemodus für Gebärdensprache-Video deaktiviert.",signResizeModeDisabled:"Größenänderungsmodus für Gebärdensprache-Video deaktiviert.",resizeHandle:"Größenänderung {direction}-Ecke",moreOptions:"Weitere Optionen",noMoreOptions:"Keine weiteren Optionen verfügbar",playing:"Wird abgespielt",paused:"Pausiert",muted:"Stummgeschaltet",unmuted:"Ton an",captionsOn:"Untertitel an",captionsOff:"Untertitel aus",volumePercent:"Lautstärke {percent} Prozent",volumePercentMuted:"Stummgeschaltet",speedRate:"Geschwindigkeit {rate}x"},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",showInMainView:"Gebärdensprache im Hauptvideo anzeigen",hideInMainView:"Gebärdensprache aus Hauptvideo entfernen"},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.",dragModeBadge:"Verschiebemodus: Pfeiltasten zum Bewegen, Esc zum Beenden",resizeModeBadge:"Resize-Modus: Kanten oder Ecken ziehen, Esc zum Beenden",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",seekTo:"Springe zu {time}"},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"},resume:{prompt:"Bei {time} fortsetzen?",resume:"Fortsetzen",startOver:"Von vorne"},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}."}};export{e as de};
6
+ var e={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",floatingPlayer:"Schwebender Player",floatingPlayerClose:"Schwebenden Player schließen",floatingPlayerEnter:"Video ausklappen",floatingPlayerExit:"Video andocken",floatingPlayerDialog:"Schwebender Videoplayer. D zum Verschieben, R zum Größenändern, Escape zum Schließen.",download:"Herunterladen",downloadWithFormat:"Herunterladen {format}",downloadWithSize:"Herunterladen ({size})",downloadWithFormatSize:"Herunterladen {format} ({size})",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",startPlaybackFirst:"Bitte starten Sie die Wiedergabe zuerst.",startPlaybackForAudioDescription:"Bitte starten Sie die Wiedergabe zuerst, um die Audiodeskription zu nutzen.",startPlaybackForSignLanguage:"Bitte starten Sie die Wiedergabe zuerst, um das Gebärdensprache-Video zu nutzen.",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",signDragModeHint:"Verschiebemodus: Pfeiltasten zum Bewegen, Esc zum Beenden",signResizeModeHint:"Größenänderungsmodus: Pfeiltasten zum Ändern, Esc zum Beenden",signDragModeDisabled:"Verschiebemodus für Gebärdensprache-Video deaktiviert.",signResizeModeDisabled:"Größenänderungsmodus für Gebärdensprache-Video deaktiviert.",resizeHandle:"Größenänderung {direction}-Ecke",moreOptions:"Weitere Optionen",noMoreOptions:"Keine weiteren Optionen verfügbar",playing:"Wird abgespielt",paused:"Pausiert",muted:"Stummgeschaltet",unmuted:"Ton an",captionsOn:"Untertitel an",captionsOff:"Untertitel aus",volumePercent:"Lautstärke {percent} Prozent",volumePercentMuted:"Stummgeschaltet",speedRate:"Geschwindigkeit {rate}x"},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",showInMainView:"Gebärdensprache im Hauptvideo anzeigen",hideInMainView:"Gebärdensprache aus Hauptvideo entfernen"},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.",dragModeBadge:"Verschiebemodus: Pfeiltasten zum Bewegen, Esc zum Beenden",resizeModeBadge:"Resize-Modus: Kanten oder Ecken ziehen, Esc zum Beenden",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",seekTo:"Springe zu {time}"},settings:{title:"Einstellungen",quality:"Qualität",speed:"Geschwindigkeit",captions:"Untertitel",language:"Sprache",reset:"Zurücksetzen",close:"Schließen"},help:{title:"Tastaturkürzel",button:"Tastaturkürzel",close:"Schließen",or:"oder",keys:{space:"Leertaste"},actions:{"play-pause":"Wiedergabe / Pause","seek-backward":"Zurückspulen","seek-forward":"Vorspulen","volume-up":"Lauter","volume-down":"Leiser",mute:"Stumm / Ton an",captions:"Untertitel umschalten","caption-style-menu":"Untertitel-Stil","speed-down":"Langsamer","speed-up":"Schneller","speed-menu":"Wiedergabegeschwindigkeit","quality-menu":"Qualität","chapters-menu":"Kapitel","transcript-toggle":"Transkript umschalten",fullscreen:"Vollbild umschalten",help:"Tastaturkürzel"}},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"},resume:{prompt:"Bei {time} fortsetzen?",resume:"Fortsetzen",startOver:"Von vorne"},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}."}};export{e as de};
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * VidPly v1.2.0 - Universal, Accessible Video Player
2
+ * VidPly v1.2.3 - Universal, Accessible Video Player
3
3
  * (c) 2026 Matthias Peltzer
4
4
  * Released under GPL-2.0-or-later License
5
5
  */
6
- var a={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",floatingPlayer:"Reproductor flotante",floatingPlayerClose:"Cerrar reproductor flotante",floatingPlayerEnter:"Sacar el vídeo",floatingPlayerExit:"Anclar el vídeo",floatingPlayerDialog:"Reproductor de vídeo flotante. Pulsa D para mover, R para redimensionar, Escape para cerrar.",download:"Descargar",downloadWithFormat:"Descargar {format}",downloadWithSize:"Descargar ({size})",downloadWithFormatSize:"Descargar {format} ({size})",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",signDragModeHint:"Modo de arrastre: flechas para mover, Esc para salir",signResizeModeHint:"Modo de cambio de tamaño: flechas para redimensionar, Esc para salir",signDragModeDisabled:"Modo de arrastre del video en lengua de señas desactivado.",signResizeModeDisabled:"Modo de cambio de tamaño del video en lengua de señas desactivado.",resizeHandle:"Cambiar tamaño esquina {direction}",moreOptions:"Más opciones",noMoreOptions:"No hay opciones adicionales disponibles",playing:"Reproduciendo",paused:"En pausa",muted:"Silenciado",unmuted:"Sonido activado",captionsOn:"Subtítulos activados",captionsOff:"Subtítulos desactivados",volumePercent:"Volumen {percent} por ciento",volumePercentMuted:"Silenciado",speedRate:"Velocidad {rate}x"},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",showInMainView:"Mostrar lengua de señas en video principal",hideInMainView:"Ocultar lengua de señas del video principal"},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.",dragModeBadge:"Modo mover: flechas para mover, Esc para salir",resizeModeBadge:"Modo redimensionar: arrastra bordes o esquinas, Esc para salir",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",seekTo:"Saltar a {time}"},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"},resume:{prompt:"¿Continuar desde {time}?",resume:"Continuar",startOver:"Empezar de nuevo"},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}."}};export{a as es};
6
+ var a={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",floatingPlayer:"Reproductor flotante",floatingPlayerClose:"Cerrar reproductor flotante",floatingPlayerEnter:"Sacar el vídeo",floatingPlayerExit:"Anclar el vídeo",floatingPlayerDialog:"Reproductor de vídeo flotante. Pulsa D para mover, R para redimensionar, Escape para cerrar.",download:"Descargar",downloadWithFormat:"Descargar {format}",downloadWithSize:"Descargar ({size})",downloadWithFormatSize:"Descargar {format} ({size})",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",signDragModeHint:"Modo de arrastre: flechas para mover, Esc para salir",signResizeModeHint:"Modo de cambio de tamaño: flechas para redimensionar, Esc para salir",signDragModeDisabled:"Modo de arrastre del video en lengua de señas desactivado.",signResizeModeDisabled:"Modo de cambio de tamaño del video en lengua de señas desactivado.",resizeHandle:"Cambiar tamaño esquina {direction}",moreOptions:"Más opciones",noMoreOptions:"No hay opciones adicionales disponibles",playing:"Reproduciendo",paused:"En pausa",muted:"Silenciado",unmuted:"Sonido activado",captionsOn:"Subtítulos activados",captionsOff:"Subtítulos desactivados",volumePercent:"Volumen {percent} por ciento",volumePercentMuted:"Silenciado",speedRate:"Velocidad {rate}x"},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",showInMainView:"Mostrar lengua de señas en video principal",hideInMainView:"Ocultar lengua de señas del video principal"},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.",dragModeBadge:"Modo mover: flechas para mover, Esc para salir",resizeModeBadge:"Modo redimensionar: arrastra bordes o esquinas, Esc para salir",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",seekTo:"Saltar a {time}"},settings:{title:"Configuración",quality:"Calidad",speed:"Velocidad",captions:"Subtítulos",language:"Idioma",reset:"Restablecer",close:"Cerrar"},help:{title:"Atajos de teclado",button:"Atajos de teclado",close:"Cerrar",or:"o",keys:{space:"Espacio"},actions:{"play-pause":"Reproducir / Pausar","seek-backward":"Retroceder","seek-forward":"Avanzar","volume-up":"Subir volumen","volume-down":"Bajar volumen",mute:"Silenciar / Activar sonido",captions:"Alternar subtítulos","caption-style-menu":"Estilo de subtítulos","speed-down":"Reducir velocidad","speed-up":"Aumentar velocidad","speed-menu":"Velocidad de reproducción","quality-menu":"Calidad","chapters-menu":"Capítulos","transcript-toggle":"Alternar transcripción",fullscreen:"Alternar pantalla completa",help:"Atajos de teclado"}},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"},resume:{prompt:"¿Continuar desde {time}?",resume:"Continuar",startOver:"Empezar de nuevo"},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}."}};export{a as es};